vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Jul 2 22:22:01 2012 +0300| [c45103a6ddb7396f4c069089d2640abd238e42f7] | committer: Rémi Denis-Courmont
aout: store software amplification and mute separately > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c45103a6ddb7396f4c069089d2640abd238e42f7 --- src/audio_output/aout_internal.h | 3 ++- src/audio_output/common.c | 3 ++- src/audio_output/dec.c | 4 +++- src/audio_output/output.c | 11 ++++------- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/audio_output/aout_internal.h b/src/audio_output/aout_internal.h index 7f5f53a..b7994de 100644 --- a/src/audio_output/aout_internal.h +++ b/src/audio_output/aout_internal.h @@ -91,7 +91,8 @@ typedef struct struct { vlc_mutex_t lock; - float multiplier; /**< Software volume amplification multiplier */ + float amp; /**< Software volume amplification */ + bool mute; /**< Software mute */ struct audio_mixer *mixer; /**< Software volume plugin */ } volume; diff --git a/src/audio_output/common.c b/src/audio_output/common.c index 3e728eb..50c4947 100644 --- a/src/audio_output/common.c +++ b/src/audio_output/common.c @@ -62,7 +62,8 @@ audio_output_t *aout_New( vlc_object_t * p_parent ) owner->module = NULL; owner->input = NULL; vlc_mutex_init (&owner->volume.lock); - owner->volume.multiplier = 1.0; + owner->volume.amp = 1.f; + owner->volume.mute = false; owner->volume.mixer = NULL; aout->pf_play = aout_DecDeleteBuffer; diff --git a/src/audio_output/dec.c b/src/audio_output/dec.c index 0e814f4..a4fe78d 100644 --- a/src/audio_output/dec.c +++ b/src/audio_output/dec.c @@ -310,7 +310,9 @@ int aout_DecPlay (audio_output_t *p_aout, block_t *p_buffer, int i_input_rate) /* Mixer */ if (owner->volume.mixer != NULL) { - float amp = owner->volume.multiplier + float amp = 0.f; + if (!owner->volume.mute) + amp = owner->volume.amp * vlc_atomic_getf (&owner->gain.multiplier); aout_MixerRun (owner->volume.mixer, p_buffer, amp); } diff --git a/src/audio_output/output.c b/src/audio_output/output.c index 63793d2..5b6b48c 100644 --- a/src/audio_output/output.c +++ b/src/audio_output/output.c @@ -279,7 +279,8 @@ void aout_OutputDelete (audio_output_t *aout) aout->pf_flush = NULL; aout->pf_volume_set = NULL; owner->module = NULL; - owner->volume.multiplier = 1.0; + owner->volume.amp = 1.f; + owner->volume.mute = false; aout_FiltersDestroyPipeline (owner->filters, owner->nb_filters); } @@ -348,12 +349,8 @@ static int aout_VolumeSoftSet (audio_output_t *aout, float volume, bool mute) * This code is only used for the VLC software mixer. If you change this * formula, be sure to update the aout_VolumeHardInit()-based plugins also. */ - if (!mute) - volume = volume * volume * volume; - else - volume = 0.; - - owner->volume.multiplier = volume; + owner->volume.amp = volume * volume * volume; + owner->volume.mute = mute; return 0; } _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
