From: Francois Cartegnie Date: Thu, 7 Jan 2010 19:18:29 +0000 (+0100) Subject: libvlc: introduce 'Muted' as a whole state, not as volume 0 X-Git-Tag: 1.1.0-ff~1306 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=a82dc303ae8655384fdfb4b67643536355c4b604;p=vlc libvlc: introduce 'Muted' as a whole state, not as volume 0 Signed-off-by: RĂ©mi Denis-Courmont --- diff --git a/include/vlc_aout.h b/include/vlc_aout.h index cd3156440e..5025f346a6 100644 --- a/include/vlc_aout.h +++ b/include/vlc_aout.h @@ -320,6 +320,8 @@ VLC_EXPORT( int, __aout_VolumeUp, ( vlc_object_t *, int, audio_volume_t * ) ); VLC_EXPORT( int, __aout_VolumeDown, ( vlc_object_t *, int, audio_volume_t * ) ); #define aout_ToggleMute(a, b) __aout_ToggleMute(VLC_OBJECT(a), b) VLC_EXPORT( int, __aout_ToggleMute, ( vlc_object_t *, audio_volume_t * ) ); +VLC_EXPORT( int, aout_SetMute, ( vlc_object_t *, audio_volume_t *, bool ) ); +VLC_EXPORT( bool, aout_IsMuted, ( vlc_object_t * ) ); VLC_EXPORT( int, aout_FindAndRestart, ( vlc_object_t *, const char *, vlc_value_t, vlc_value_t, void * ) ); VLC_EXPORT( int, aout_ChannelsRestart, ( vlc_object_t *, const char *, vlc_value_t, vlc_value_t, void * ) ); diff --git a/src/audio_output/intf.c b/src/audio_output/intf.c index 3476ad3ce8..9dfd027751 100644 --- a/src/audio_output/intf.c +++ b/src/audio_output/intf.c @@ -132,7 +132,6 @@ int __aout_VolumeSet( vlc_object_t * p_object, audio_volume_t i_volume ) int __aout_VolumeUp( vlc_object_t * p_object, int i_nb_steps, audio_volume_t * pi_volume ) { - const int i_volume_step = config_GetInt( p_object->p_libvlc, "volume-step" ); int i_volume = config_GetInt( p_object, "volume" ) + @@ -166,12 +165,34 @@ int __aout_VolumeDown( vlc_object_t * p_object, int i_nb_steps, * function (muted => 0). *****************************************************************************/ int __aout_ToggleMute( vlc_object_t * p_object, audio_volume_t * pi_volume ) +{ + return aout_SetMute( p_object, pi_volume, !aout_IsMuted( p_object ) ); +} + +/***************************************************************************** + * aout_IsMuted : Get the output volume mute status + *****************************************************************************/ +bool aout_IsMuted( vlc_object_t * p_object ) +{ + return (bool)var_GetBool( p_object->p_libvlc, "volume-muted"); +} + +/***************************************************************************** + * aout_SetMute : Sets mute status + ***************************************************************************** + * If pi_volume != NULL, *pi_volume will contain the volume at the end of the + * function (muted => 0). + *****************************************************************************/ +int aout_SetMute( vlc_object_t * p_object, audio_volume_t * pi_volume, + bool b_mute ) { int i_result; audio_volume_t i_volume; + var_SetBool( p_object->p_libvlc, "volume-muted", (bool)b_mute ); i_volume = (audio_volume_t)config_GetInt( p_object, "volume" ); - if ( i_volume != 0 ) + + if ( b_mute ) { /* Mute */ i_result = aout_VolumeSet( p_object, AOUT_VOLUME_MIN ); @@ -188,7 +209,6 @@ int __aout_ToggleMute( vlc_object_t * p_object, audio_volume_t * pi_volume ) i_result = aout_VolumeSet( p_object, i_volume ); if ( pi_volume != NULL ) *pi_volume = i_volume; } - return i_result; } diff --git a/src/libvlc.c b/src/libvlc.c index 358a298860..ff6123336d 100644 --- a/src/libvlc.c +++ b/src/libvlc.c @@ -859,6 +859,7 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, /* Create volume callback system. (this variable must be created before all interfaces as they can use it) */ var_Create( p_libvlc, "volume-change", VLC_VAR_BOOL ); + var_Create( p_libvlc, "volume-muted", VLC_VAR_BOOL ); psz_modules = var_CreateGetNonEmptyString( p_libvlc, "extraintf" ); psz_control = var_CreateGetNonEmptyString( p_libvlc, "control" ); diff --git a/src/libvlccore.sym b/src/libvlccore.sym index 1a7a372b00..9656d1a856 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -25,6 +25,8 @@ aout_OutputNextBuffer __aout_VolumeDown __aout_VolumeGet __aout_ToggleMute +aout_IsMuted +aout_SetMute aout_VolumeNoneInit __aout_VolumeSet aout_VolumeSoftInit