mirror of
https://code.videolan.org/videolan/vlc
synced 2024-09-12 13:44:56 +02:00
aout: add --stereo-mode to replace audio-channels variable (fixes #6)
Since audio-channels was not a configuration item, renaming is a mere internal matter. This also fixes callback handling and factors code.
This commit is contained in:
parent
3647bd9a1f
commit
6012a9c9f9
@ -115,6 +115,7 @@ typedef int32_t vlc_fixed_t;
|
|||||||
#define AOUT_VAR_7_1 8
|
#define AOUT_VAR_7_1 8
|
||||||
#define AOUT_VAR_SPDIF 10
|
#define AOUT_VAR_SPDIF 10
|
||||||
|
|
||||||
|
#define AOUT_VAR_CHAN_UNSET 0 /* must be zero */
|
||||||
#define AOUT_VAR_CHAN_STEREO 1
|
#define AOUT_VAR_CHAN_STEREO 1
|
||||||
#define AOUT_VAR_CHAN_RSTEREO 2
|
#define AOUT_VAR_CHAN_RSTEREO 2
|
||||||
#define AOUT_VAR_CHAN_LEFT 3
|
#define AOUT_VAR_CHAN_LEFT 3
|
||||||
|
@ -392,7 +392,7 @@ int libvlc_audio_get_channel( libvlc_media_player_t *mp )
|
|||||||
if( !p_aout )
|
if( !p_aout )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
int val = var_GetInteger( p_aout, "audio-channels" );
|
int val = var_GetInteger( p_aout, "stereo-mode" );
|
||||||
vlc_object_release( p_aout );
|
vlc_object_release( p_aout );
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
@ -408,7 +408,7 @@ int libvlc_audio_set_channel( libvlc_media_player_t *mp, int channel )
|
|||||||
if( !p_aout )
|
if( !p_aout )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if( var_SetInteger( p_aout, "audio-channels", channel ) < 0 )
|
if( var_SetInteger( p_aout, "stereo-mode", channel ) < 0 )
|
||||||
{
|
{
|
||||||
libvlc_printerr( "Audio channel out of range" );
|
libvlc_printerr( "Audio channel out of range" );
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
@ -1710,13 +1710,9 @@ static int AudioConfig( vlc_object_t *p_this, char const *psz_cmd,
|
|||||||
return VLC_ENOOBJ;
|
return VLC_ENOOBJ;
|
||||||
|
|
||||||
if ( !strcmp( psz_cmd, "adev" ) )
|
if ( !strcmp( psz_cmd, "adev" ) )
|
||||||
{
|
|
||||||
psz_variable = "audio-device";
|
psz_variable = "audio-device";
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
psz_variable = "stereo-mode";
|
||||||
psz_variable = "audio-channels";
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get the descriptive name of the variable */
|
/* Get the descriptive name of the variable */
|
||||||
var_Change( p_aout, psz_variable, VLC_VAR_GETTEXT,
|
var_Change( p_aout, psz_variable, VLC_VAR_GETTEXT,
|
||||||
|
@ -498,7 +498,7 @@ static VLCMainMenu *_o_sharedInstance = nil;
|
|||||||
audio_output_t * p_aout = input_GetAout(p_input);
|
audio_output_t * p_aout = input_GetAout(p_input);
|
||||||
if (p_aout != NULL) {
|
if (p_aout != NULL) {
|
||||||
[self setupVarMenuItem: o_mi_channels target: (vlc_object_t *)p_aout
|
[self setupVarMenuItem: o_mi_channels target: (vlc_object_t *)p_aout
|
||||||
var: "audio-channels" selector: @selector(toggleVar:)];
|
var: "stereo-mode" selector: @selector(toggleVar:)];
|
||||||
|
|
||||||
[self setupVarMenuItem: o_mi_device target: (vlc_object_t *)p_aout
|
[self setupVarMenuItem: o_mi_device target: (vlc_object_t *)p_aout
|
||||||
var: "audio-device" selector: @selector(toggleVar:)];
|
var: "audio-device" selector: @selector(toggleVar:)];
|
||||||
|
@ -255,7 +255,7 @@ static int AudioAutoMenuBuilder( audio_output_t *p_object,
|
|||||||
QVector<const char *> &varnames )
|
QVector<const char *> &varnames )
|
||||||
{
|
{
|
||||||
PUSH_INPUTVAR( "audio-es" );
|
PUSH_INPUTVAR( "audio-es" );
|
||||||
PUSH_VAR( "audio-channels" );
|
PUSH_VAR( "stereo-mode" );
|
||||||
PUSH_VAR( "audio-device" );
|
PUSH_VAR( "audio-device" );
|
||||||
PUSH_VAR( "visual" );
|
PUSH_VAR( "visual" );
|
||||||
return VLC_SUCCESS;
|
return VLC_SUCCESS;
|
||||||
@ -596,7 +596,7 @@ QMenu *VLCMenuBar::AudioMenu( intf_thread_t *p_intf, QMenu * current )
|
|||||||
if( current->isEmpty() )
|
if( current->isEmpty() )
|
||||||
{
|
{
|
||||||
addActionWithSubmenu( current, "audio-es", qtr( "Audio &Track" ) );
|
addActionWithSubmenu( current, "audio-es", qtr( "Audio &Track" ) );
|
||||||
addActionWithSubmenu( current, "audio-channels", qtr( "Audio &Channels" ) );
|
addActionWithSubmenu( current, "stereo-mode", qtr( "&Stereo Mode" ) );
|
||||||
addActionWithSubmenu( current, "audio-device", qtr( "Audio &Device" ) );
|
addActionWithSubmenu( current, "audio-device", qtr( "Audio &Device" ) );
|
||||||
current->addSeparator();
|
current->addSeparator();
|
||||||
|
|
||||||
|
@ -569,7 +569,7 @@ commands_ordered = {
|
|||||||
{ "volup"; { func = ret_print(vlc.volume.up,"( audio volume: "," )"); args = "[X]"; help = "raise audio volume X steps" } };
|
{ "volup"; { func = ret_print(vlc.volume.up,"( audio volume: "," )"); args = "[X]"; help = "raise audio volume X steps" } };
|
||||||
{ "voldown"; { func = ret_print(vlc.volume.down,"( audio volume: "," )"); args = "[X]"; help = "lower audio volume X steps" } };
|
{ "voldown"; { func = ret_print(vlc.volume.down,"( audio volume: "," )"); args = "[X]"; help = "lower audio volume X steps" } };
|
||||||
{ "adev"; { func = skip(listvalue("aout","audio-device")); args = "[X]"; help = "set/get audio device" } };
|
{ "adev"; { func = skip(listvalue("aout","audio-device")); args = "[X]"; help = "set/get audio device" } };
|
||||||
{ "achan"; { func = skip(listvalue("aout","audio-channels")); args = "[X]"; help = "set/get audio channels" } };
|
{ "achan"; { func = skip(listvalue("aout","stereo-mode")); args = "[X]"; help = "set/get stereo audio output mode" } };
|
||||||
{ "atrack"; { func = skip(listvalue("input","audio-es")); args = "[X]"; help = "set/get audio track" } };
|
{ "atrack"; { func = skip(listvalue("input","audio-es")); args = "[X]"; help = "set/get audio track" } };
|
||||||
{ "vtrack"; { func = skip(listvalue("input","video-es")); args = "[X]"; help = "set/get video track" } };
|
{ "vtrack"; { func = skip(listvalue("input","video-es")); args = "[X]"; help = "set/get video track" } };
|
||||||
{ "vratio"; { func = skip(listvalue("vout","aspect-ratio")); args = "[X]"; help = "set/get video aspect ratio" } };
|
{ "vratio"; { func = skip(listvalue("vout","aspect-ratio")); args = "[X]"; help = "set/get video aspect ratio" } };
|
||||||
|
@ -91,7 +91,7 @@ int aout_DecNew( audio_output_t *p_aout,
|
|||||||
|
|
||||||
/* Create the audio output stream */
|
/* Create the audio output stream */
|
||||||
var_Destroy( p_aout, "audio-device" );
|
var_Destroy( p_aout, "audio-device" );
|
||||||
var_Destroy( p_aout, "audio-channels" );
|
var_Destroy( p_aout, "stereo-mode" );
|
||||||
|
|
||||||
owner->input_format = *p_format;
|
owner->input_format = *p_format;
|
||||||
vlc_atomic_set (&owner->restart, 0);
|
vlc_atomic_set (&owner->restart, 0);
|
||||||
@ -139,7 +139,7 @@ void aout_Shutdown (audio_output_t *p_aout)
|
|||||||
aout_volume_Delete (owner->volume);
|
aout_volume_Delete (owner->volume);
|
||||||
}
|
}
|
||||||
var_Destroy( p_aout, "audio-device" );
|
var_Destroy( p_aout, "audio-device" );
|
||||||
var_Destroy( p_aout, "audio-channels" );
|
var_Destroy( p_aout, "stereo-mode" );
|
||||||
|
|
||||||
aout_unlock( p_aout );
|
aout_unlock( p_aout );
|
||||||
free (input);
|
free (input);
|
||||||
|
@ -181,7 +181,7 @@ int aout_ChannelsRestart( vlc_object_t * p_this, const char * psz_variable,
|
|||||||
{
|
{
|
||||||
/* This is supposed to be a significant change and supposes
|
/* This is supposed to be a significant change and supposes
|
||||||
* rebuilding the channel choices. */
|
* rebuilding the channel choices. */
|
||||||
var_Destroy( p_aout, "audio-channels" );
|
var_Destroy( p_aout, "stereo-mode" );
|
||||||
}
|
}
|
||||||
aout_RequestRestart (p_aout);
|
aout_RequestRestart (p_aout);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -98,97 +98,70 @@ int aout_OutputNew( audio_output_t *p_aout,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( var_Type( p_aout, "audio-channels" ) ==
|
if (!var_Type (p_aout, "stereo-mode"))
|
||||||
(VLC_VAR_INTEGER | VLC_VAR_HASCHOICE) )
|
var_Create (p_aout, "stereo-mode",
|
||||||
|
VLC_VAR_INTEGER | VLC_VAR_HASCHOICE | VLC_VAR_DOINHERIT);
|
||||||
|
|
||||||
|
/* The user may have selected a different channels configuration. */
|
||||||
|
var_AddCallback (p_aout, "stereo-mode", aout_ChannelsRestart, NULL);
|
||||||
|
switch (var_GetInteger (p_aout, "stereo-mode"))
|
||||||
{
|
{
|
||||||
/* The user may have selected a different channels configuration. */
|
case AOUT_VAR_CHAN_RSTEREO:
|
||||||
switch( var_InheritInteger( p_aout, "audio-channels" ) )
|
p_aout->format.i_original_channels |= AOUT_CHAN_REVERSESTEREO;
|
||||||
|
break;
|
||||||
|
case AOUT_VAR_CHAN_STEREO:
|
||||||
|
p_aout->format.i_original_channels = AOUT_CHANS_STEREO;
|
||||||
|
break;
|
||||||
|
case AOUT_VAR_CHAN_LEFT:
|
||||||
|
p_aout->format.i_original_channels = AOUT_CHAN_LEFT;
|
||||||
|
break;
|
||||||
|
case AOUT_VAR_CHAN_RIGHT:
|
||||||
|
p_aout->format.i_original_channels = AOUT_CHAN_RIGHT;
|
||||||
|
break;
|
||||||
|
case AOUT_VAR_CHAN_DOLBYS:
|
||||||
|
p_aout->format.i_original_channels =
|
||||||
|
AOUT_CHANS_STEREO | AOUT_CHAN_DOLBYSTEREO;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
{
|
{
|
||||||
case AOUT_VAR_CHAN_RSTEREO:
|
if ((p_aout->format.i_original_channels & AOUT_CHAN_PHYSMASK)
|
||||||
p_aout->format.i_original_channels |= AOUT_CHAN_REVERSESTEREO;
|
!= AOUT_CHANS_STEREO)
|
||||||
break;
|
break;
|
||||||
case AOUT_VAR_CHAN_STEREO:
|
|
||||||
p_aout->format.i_original_channels =
|
vlc_value_t val, txt;
|
||||||
AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT;
|
val.i_int = 0;
|
||||||
break;
|
var_Change (p_aout, "stereo-mode", VLC_VAR_DELCHOICE, &val, NULL);
|
||||||
case AOUT_VAR_CHAN_LEFT:
|
txt.psz_string = _("Stereo audio mode");
|
||||||
|
var_Change (p_aout, "stereo-mode", VLC_VAR_SETTEXT, &txt, NULL);
|
||||||
|
if (p_aout->format.i_original_channels & AOUT_CHAN_DOLBYSTEREO)
|
||||||
|
{
|
||||||
|
val.i_int = AOUT_VAR_CHAN_DOLBYS;
|
||||||
|
txt.psz_string = _("Dolby Surround");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
val.i_int = AOUT_VAR_CHAN_STEREO;
|
||||||
|
txt.psz_string = _("Stereo");
|
||||||
|
}
|
||||||
|
var_Change (p_aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val, &txt);
|
||||||
|
var_Change (p_aout, "stereo-mode", VLC_VAR_SETVALUE, &val, NULL);
|
||||||
|
val.i_int = AOUT_VAR_CHAN_LEFT;
|
||||||
|
txt.psz_string = _("Left");
|
||||||
|
var_Change (p_aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val, &txt);
|
||||||
|
if (p_aout->format.i_original_channels & AOUT_CHAN_DUALMONO)
|
||||||
|
{ /* Go directly to the left channel. */
|
||||||
p_aout->format.i_original_channels = AOUT_CHAN_LEFT;
|
p_aout->format.i_original_channels = AOUT_CHAN_LEFT;
|
||||||
break;
|
var_Change (p_aout, "stereo-mode", VLC_VAR_SETVALUE, &val,
|
||||||
case AOUT_VAR_CHAN_RIGHT:
|
NULL);
|
||||||
p_aout->format.i_original_channels = AOUT_CHAN_RIGHT;
|
}
|
||||||
break;
|
val.i_int = AOUT_VAR_CHAN_RIGHT;
|
||||||
case AOUT_VAR_CHAN_DOLBYS:
|
txt.psz_string = _("Right");
|
||||||
p_aout->format.i_original_channels =
|
var_Change (p_aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val, &txt);
|
||||||
AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT | AOUT_CHAN_DOLBYSTEREO;
|
val.i_int = AOUT_VAR_CHAN_RSTEREO;
|
||||||
break;
|
txt.psz_string = _("Reverse stereo");
|
||||||
|
var_Change (p_aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val, &txt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( p_aout->format.i_physical_channels == AOUT_CHAN_CENTER
|
|
||||||
&& (p_aout->format.i_original_channels
|
|
||||||
& AOUT_CHAN_PHYSMASK) == (AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT) )
|
|
||||||
{
|
|
||||||
vlc_value_t val, text;
|
|
||||||
|
|
||||||
/* Mono - create the audio-channels variable. */
|
|
||||||
var_Create( p_aout, "audio-channels",
|
|
||||||
VLC_VAR_INTEGER | VLC_VAR_HASCHOICE );
|
|
||||||
text.psz_string = _("Audio Channels");
|
|
||||||
var_Change( p_aout, "audio-channels", VLC_VAR_SETTEXT, &text, NULL );
|
|
||||||
|
|
||||||
val.i_int = AOUT_VAR_CHAN_STEREO; text.psz_string = _("Stereo");
|
|
||||||
var_Change( p_aout, "audio-channels", VLC_VAR_ADDCHOICE, &val, &text );
|
|
||||||
val.i_int = AOUT_VAR_CHAN_LEFT; text.psz_string = _("Left");
|
|
||||||
var_Change( p_aout, "audio-channels", VLC_VAR_ADDCHOICE, &val, &text );
|
|
||||||
val.i_int = AOUT_VAR_CHAN_RIGHT; text.psz_string = _("Right");
|
|
||||||
var_Change( p_aout, "audio-channels", VLC_VAR_ADDCHOICE, &val, &text );
|
|
||||||
if ( p_aout->format.i_original_channels & AOUT_CHAN_DUALMONO )
|
|
||||||
{
|
|
||||||
/* Go directly to the left channel. */
|
|
||||||
p_aout->format.i_original_channels = AOUT_CHAN_LEFT;
|
|
||||||
var_SetInteger( p_aout, "audio-channels", AOUT_VAR_CHAN_LEFT );
|
|
||||||
}
|
|
||||||
var_AddCallback( p_aout, "audio-channels", aout_ChannelsRestart,
|
|
||||||
NULL );
|
|
||||||
}
|
|
||||||
else if ( p_aout->format.i_physical_channels ==
|
|
||||||
(AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT)
|
|
||||||
&& (p_aout->format.i_original_channels &
|
|
||||||
(AOUT_CHAN_LEFT | AOUT_CHAN_RIGHT)) )
|
|
||||||
{
|
|
||||||
vlc_value_t val, text;
|
|
||||||
|
|
||||||
/* Stereo - create the audio-channels variable. */
|
|
||||||
var_Create( p_aout, "audio-channels",
|
|
||||||
VLC_VAR_INTEGER | VLC_VAR_HASCHOICE );
|
|
||||||
text.psz_string = _("Audio Channels");
|
|
||||||
var_Change( p_aout, "audio-channels", VLC_VAR_SETTEXT, &text, NULL );
|
|
||||||
|
|
||||||
if ( p_aout->format.i_original_channels & AOUT_CHAN_DOLBYSTEREO )
|
|
||||||
{
|
|
||||||
val.i_int = AOUT_VAR_CHAN_DOLBYS;
|
|
||||||
text.psz_string = _("Dolby Surround");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
val.i_int = AOUT_VAR_CHAN_STEREO;
|
|
||||||
text.psz_string = _("Stereo");
|
|
||||||
}
|
|
||||||
var_Change( p_aout, "audio-channels", VLC_VAR_ADDCHOICE, &val, &text );
|
|
||||||
val.i_int = AOUT_VAR_CHAN_LEFT; text.psz_string = _("Left");
|
|
||||||
var_Change( p_aout, "audio-channels", VLC_VAR_ADDCHOICE, &val, &text );
|
|
||||||
val.i_int = AOUT_VAR_CHAN_RIGHT; text.psz_string = _("Right");
|
|
||||||
var_Change( p_aout, "audio-channels", VLC_VAR_ADDCHOICE, &val, &text );
|
|
||||||
val.i_int = AOUT_VAR_CHAN_RSTEREO; text.psz_string=_("Reverse stereo");
|
|
||||||
var_Change( p_aout, "audio-channels", VLC_VAR_ADDCHOICE, &val, &text );
|
|
||||||
if ( p_aout->format.i_original_channels & AOUT_CHAN_DUALMONO )
|
|
||||||
{
|
|
||||||
/* Go directly to the left channel. */
|
|
||||||
p_aout->format.i_original_channels = AOUT_CHAN_LEFT;
|
|
||||||
var_SetInteger( p_aout, "audio-channels", AOUT_VAR_CHAN_LEFT );
|
|
||||||
}
|
|
||||||
var_AddCallback( p_aout, "audio-channels", aout_ChannelsRestart,
|
|
||||||
NULL );
|
|
||||||
}
|
|
||||||
|
|
||||||
aout_FormatPrepare( &p_aout->format );
|
aout_FormatPrepare( &p_aout->format );
|
||||||
aout_FormatPrint( p_aout, "output", &p_aout->format );
|
aout_FormatPrint( p_aout, "output", &p_aout->format );
|
||||||
@ -236,6 +209,7 @@ void aout_OutputDelete (audio_output_t *aout)
|
|||||||
if (owner->module == NULL)
|
if (owner->module == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
var_DelCallback (aout, "stereo-mode", aout_ChannelsRestart, NULL);
|
||||||
module_unneed (aout, owner->module);
|
module_unneed (aout, owner->module);
|
||||||
aout->volume_set = NULL;
|
aout->volume_set = NULL;
|
||||||
aout->mute_set = NULL;
|
aout->mute_set = NULL;
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
//#define Nothing here, this is just to prevent update-po from being stupid
|
//#define Nothing here, this is just to prevent update-po from being stupid
|
||||||
#include "vlc_keys.h"
|
#include "vlc_keys.h"
|
||||||
#include "vlc_meta.h"
|
#include "vlc_meta.h"
|
||||||
|
#include <vlc_aout.h>
|
||||||
|
|
||||||
static const char *const ppsz_snap_formats[] =
|
static const char *const ppsz_snap_formats[] =
|
||||||
{ "png", "jpg", "tiff" };
|
{ "png", "jpg", "tiff" };
|
||||||
@ -202,6 +203,15 @@ static const int pi_force_dolby_values[] = { 0, 1, 2 };
|
|||||||
static const char *const ppsz_force_dolby_descriptions[] = {
|
static const char *const ppsz_force_dolby_descriptions[] = {
|
||||||
N_("Auto"), N_("On"), N_("Off") };
|
N_("Auto"), N_("On"), N_("Off") };
|
||||||
|
|
||||||
|
#define STEREO_MODE_TEXT N_("Stereo audio output mode")
|
||||||
|
static const int pi_stereo_mode_values[] = { AOUT_VAR_CHAN_UNSET,
|
||||||
|
AOUT_VAR_CHAN_STEREO, AOUT_VAR_CHAN_RSTEREO,
|
||||||
|
AOUT_VAR_CHAN_LEFT, AOUT_VAR_CHAN_RIGHT, AOUT_VAR_CHAN_DOLBYS
|
||||||
|
};
|
||||||
|
static const char *const ppsz_stereo_mode_texts[] = { N_("Unset"),
|
||||||
|
N_("Stereo"), N_("Reverse stereo"),
|
||||||
|
N_("Left"), N_("Right"), N_("Dolby Surround")
|
||||||
|
};
|
||||||
|
|
||||||
#define AUDIO_FILTER_TEXT N_("Audio filters")
|
#define AUDIO_FILTER_TEXT N_("Audio filters")
|
||||||
#define AUDIO_FILTER_LONGTEXT N_( \
|
#define AUDIO_FILTER_LONGTEXT N_( \
|
||||||
@ -1495,6 +1505,8 @@ vlc_module_begin ()
|
|||||||
add_integer( "force-dolby-surround", 0, FORCE_DOLBY_TEXT,
|
add_integer( "force-dolby-surround", 0, FORCE_DOLBY_TEXT,
|
||||||
FORCE_DOLBY_LONGTEXT, false )
|
FORCE_DOLBY_LONGTEXT, false )
|
||||||
change_integer_list( pi_force_dolby_values, ppsz_force_dolby_descriptions )
|
change_integer_list( pi_force_dolby_values, ppsz_force_dolby_descriptions )
|
||||||
|
add_integer( "stereo-mode", 0, STEREO_MODE_TEXT, STEREO_MODE_TEXT, true )
|
||||||
|
change_integer_list( pi_stereo_mode_values, ppsz_stereo_mode_texts )
|
||||||
add_integer( "audio-desync", 0, DESYNC_TEXT,
|
add_integer( "audio-desync", 0, DESYNC_TEXT,
|
||||||
DESYNC_LONGTEXT, true )
|
DESYNC_LONGTEXT, true )
|
||||||
change_safe ()
|
change_safe ()
|
||||||
|
Loading…
Reference in New Issue
Block a user