[vlc-devel] [vlc-commits] aout: increase stereo-mode lifecycle
Rémi Denis-Courmont
remi at remlab.net
Fri Jul 14 02:57:31 CEST 2017
Le 13 juillet 2017 23:19:01 GMT+08:00, Thomas Guillem <git at videolan.org> a écrit :
>vlc | branch: master | Thomas Guillem <thomas at gllm.fr> | Tue Jul 11
>13:05:20 2017 +0200| [9c6117e88eab4bb2c44f3294c622c17d194164ec] |
>committer: Thomas Guillem
>
>aout: increase stereo-mode lifecycle
>
>It's not reset anymore when the aout is restarted
>
>>
>http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9c6117e88eab4bb2c44f3294c622c17d194164ec
>---
>
> src/audio_output/dec.c | 7 -----
>src/audio_output/output.c | 73
>++++++++++++++++++++++++++---------------------
> 2 files changed, 41 insertions(+), 39 deletions(-)
>
>diff --git a/src/audio_output/dec.c b/src/audio_output/dec.c
>index bceb817faf..d50a656d35 100644
>--- a/src/audio_output/dec.c
>+++ b/src/audio_output/dec.c
>@@ -69,11 +69,6 @@ int aout_DecNew( audio_output_t *p_aout,
> return -1;
> }
>
>- var_Create (p_aout, "stereo-mode", VLC_VAR_INTEGER |
>VLC_VAR_DOINHERIT);
>- vlc_value_t txt;
>- txt.psz_string = _("Stereo audio mode");
>- var_Change (p_aout, "stereo-mode", VLC_VAR_SETTEXT, &txt, NULL);
>-
> aout_owner_t *owner = aout_owner(p_aout);
>
> /* TODO: reduce lock scope depending on decoder's real need */
>@@ -108,7 +103,6 @@ error:
> aout_volume_Delete (owner->volume);
> owner->volume = NULL;
> aout_OutputUnlock (p_aout);
>- var_Destroy (p_aout, "stereo-mode");
> return -1;
> }
>
>@@ -138,7 +132,6 @@ void aout_DecDelete (audio_output_t *aout)
> aout_volume_Delete (owner->volume);
> owner->volume = NULL;
> aout_OutputUnlock (aout);
>- var_Destroy (aout, "stereo-mode");
> }
>
> static int aout_CheckReady (audio_output_t *aout)
>diff --git a/src/audio_output/output.c b/src/audio_output/output.c
>index d9ac95a78a..1092e58e0b 100644
>--- a/src/audio_output/output.c
>+++ b/src/audio_output/output.c
>@@ -320,6 +320,13 @@ audio_output_t *aout_New (vlc_object_t *parent)
> &val, &text);
> }
>
>+ /* Stereo mode */
>+ var_Create (aout, "stereo-mode", VLC_VAR_INTEGER |
>VLC_VAR_DOINHERIT);
>+ var_AddCallback (aout, "stereo-mode", StereoModeCallback, NULL);
>+ vlc_value_t txt;
>+ txt.psz_string = _("Stereo audio mode");
>+ var_Change (aout, "stereo-mode", VLC_VAR_SETTEXT, &txt, NULL);
>+
> /* Equalizer */
>var_Create (aout, "equalizer-preamp", VLC_VAR_FLOAT |
>VLC_VAR_DOINHERIT);
>var_Create (aout, "equalizer-bands", VLC_VAR_STRING |
>VLC_VAR_DOINHERIT);
>@@ -348,6 +355,7 @@ void aout_Destroy (audio_output_t *aout)
> var_DelCallback (aout, "mute", var_Copy, aout->obj.parent);
> var_SetFloat (aout, "volume", -1.f);
> var_DelCallback (aout, "volume", var_Copy, aout->obj.parent);
>+ var_DelCallback (aout, "stereo-mode", StereoModeCallback, NULL);
> vlc_object_release (aout);
> }
>
>@@ -397,8 +405,35 @@ int aout_OutputNew (audio_output_t *aout,
>audio_sample_format_t *restrict fmt)
> return -1;
> }
>
>+ /* Fill Stereo mode choices */
>+ var_Change (aout, "stereo-mode", VLC_VAR_CLEARCHOICES, NULL,
>NULL);
>+ vlc_value_t val, txt, default_val;
>+ val.i_int = 0;
>+ if (fmt->i_physical_channels == AOUT_CHANS_STEREO)
>+ {
>+ if (fmt->i_original_channels & AOUT_CHAN_DOLBYSTEREO)
>+ {
>+ default_val.i_int = val.i_int = AOUT_VAR_CHAN_DOLBYS;
>+ txt.psz_string = _("Dolby Surround");
>+ }
>+ else
>+ {
>+ default_val.i_int = val.i_int = AOUT_VAR_CHAN_STEREO;
>+ txt.psz_string = _("Stereo");
>+ }
>+ var_Change (aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val,
>&txt);
>+ val.i_int = AOUT_VAR_CHAN_LEFT;
>+ txt.psz_string = _("Left");
>+ var_Change (aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val,
>&txt);
>+ val.i_int = AOUT_VAR_CHAN_RIGHT;
>+ txt.psz_string = _("Right");
>+ var_Change (aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val,
>&txt);
>+ val.i_int = AOUT_VAR_CHAN_RSTEREO;
>+ txt.psz_string = _("Reverse stereo");
>+ var_Change (aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val,
>&txt);
>+ }
>+
> /* The user may have selected a different channels configuration. */
>- var_AddCallback (aout, "stereo-mode", StereoModeCallback, NULL);
> switch (var_GetInteger (aout, "stereo-mode"))
> {
> case AOUT_VAR_CHAN_RSTEREO:
>@@ -417,41 +452,16 @@ int aout_OutputNew (audio_output_t *aout,
>audio_sample_format_t *restrict fmt)
> fmt->i_original_channels = AOUT_CHANS_STEREO|AOUT_CHAN_DOLBYSTEREO;
> break;
> default:
>- {
>- if ((fmt->i_original_channels & AOUT_CHAN_PHYSMASK)
>- !=
>AOUT_CHANS_STEREO)
>- break;
>-
>- vlc_value_t val, txt;
>- val.i_int = 0;
>- var_Change (aout, "stereo-mode", VLC_VAR_DELCHOICE, &val,
>NULL);
>- if (fmt->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 (aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val,
>&txt);
>- var_Change (aout, "stereo-mode", VLC_VAR_SETVALUE, &val,
>NULL);
>- val.i_int = AOUT_VAR_CHAN_LEFT;
>- txt.psz_string = _("Left");
>- var_Change (aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val,
>&txt);
> if (fmt->i_original_channels & AOUT_CHAN_DUALMONO)
> { /* Go directly to the left channel. */
> fmt->i_original_channels = AOUT_CHAN_LEFT;
>+ val.i_int = AOUT_VAR_CHAN_LEFT;
> var_Change (aout, "stereo-mode", VLC_VAR_SETVALUE, &val, NULL);
> }
>- val.i_int = AOUT_VAR_CHAN_RIGHT;
>- txt.psz_string = _("Right");
>- var_Change (aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val,
>&txt);
>- val.i_int = AOUT_VAR_CHAN_RSTEREO;
>- txt.psz_string = _("Reverse stereo");
>- var_Change (aout, "stereo-mode", VLC_VAR_ADDCHOICE, &val,
>&txt);
>- }
>+ else
>+ var_Change (aout, "stereo-mode", VLC_VAR_SETVALUE,
>&default_val,
>+ NULL);
>+ break;
> }
>
> aout_FormatPrepare (fmt);
>@@ -470,7 +480,6 @@ void aout_OutputDelete (audio_output_t *aout)
> {
> aout_OutputAssertLocked (aout);
>
>- var_DelCallback (aout, "stereo-mode", StereoModeCallback, NULL);
> if (aout->stop != NULL)
> aout->stop (aout);
> }
>
>_______________________________________________
>vlc-commits mailing list
>vlc-commits at videolan.org
>https://mailman.videolan.org/listinfo/vlc-commits
This is very wrong. The setting was always meant for thr current audio track. Reverse stereo or dual-mono are indeed track properties.
--
Rémi Denis-Courmont
Typed on an inconvenient virtual keyboard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20170714/e5f72853/attachment-0001.html>
More information about the vlc-devel
mailing list