vlc/vlc-2.2 | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Jul 27 14:00:08 2015 +0300| [0efcbbc983e167a1b7ccd8594653af1758824565] | committer: Jean-Baptiste Kempf
libvlc: expose events for the audio mute status (refs #14568) Cc: Harald Sitter <[email protected]> (cherry picked from commit 2f3c3ca8c604f50ca9ae7da4487c73a70a75d82c) Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=0efcbbc983e167a1b7ccd8594653af1758824565 --- include/vlc/libvlc_events.h | 2 ++ lib/event.c | 2 ++ lib/media_player.c | 23 +++++++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/include/vlc/libvlc_events.h b/include/vlc/libvlc_events.h index fa6b738..1102209 100644 --- a/include/vlc/libvlc_events.h +++ b/include/vlc/libvlc_events.h @@ -76,6 +76,8 @@ enum libvlc_event_e { libvlc_MediaPlayerScrambledChanged, libvlc_MediaPlayerCorked = libvlc_MediaPlayerScrambledChanged + 3 + 1, libvlc_MediaPlayerUncorked, + libvlc_MediaPlayerMuted, + libvlc_MediaPlayerUnmuted, libvlc_MediaListItemAdded=0x200, libvlc_MediaListWillAddItem, diff --git a/lib/event.c b/lib/event.c index 8ae3b8c..a17eade 100644 --- a/lib/event.c +++ b/lib/event.c @@ -283,6 +283,8 @@ static const event_name_t event_list[] = { DEF(MediaPlayerScrambledChanged) DEF(MediaPlayerCorked) DEF(MediaPlayerUncorked) + DEF(MediaPlayerMuted) + DEF(MediaPlayerUnmuted) DEF(MediaListItemAdded) DEF(MediaListWillAddItem) diff --git a/lib/media_player.c b/lib/media_player.c index 8938965..b23ac3a 100644 --- a/lib/media_player.c +++ b/lib/media_player.c @@ -62,6 +62,10 @@ corks_changed(vlc_object_t *obj, const char *name, vlc_value_t old, vlc_value_t cur, void *opaque); static int +mute_changed(vlc_object_t *obj, const char *name, vlc_value_t old, + vlc_value_t cur, void *opaque); + +static int snapshot_was_taken( vlc_object_t *p_this, char const *psz_cmd, vlc_value_t oldval, vlc_value_t newval, void *p_data ); @@ -389,6 +393,23 @@ static int corks_changed(vlc_object_t *obj, const char *name, vlc_value_t old, return VLC_SUCCESS; } +static int mute_changed(vlc_object_t *obj, const char *name, vlc_value_t old, + vlc_value_t cur, void *opaque) +{ + libvlc_media_player_t *mp = (libvlc_media_player_t *)obj; + + if (old.b_bool != cur.b_bool) + { + libvlc_event_t event; + + event.type = cur.b_bool ? libvlc_MediaPlayerMuted + : libvlc_MediaPlayerUnmuted; + libvlc_event_send(mp->p_event_manager, &event); + } + VLC_UNUSED(name); VLC_UNUSED(opaque); + return VLC_SUCCESS; +} + /************************************************************************** * Create a Media Instance object. * @@ -563,6 +584,7 @@ libvlc_media_player_new( libvlc_instance_t *instance ) register_event(mp, Uncorked); var_AddCallback(mp, "corks", corks_changed, NULL); + var_AddCallback(mp, "mute", mute_changed, NULL); /* Snapshot initialization */ register_event(mp, SnapshotTaken); @@ -614,6 +636,7 @@ static void libvlc_media_player_destroy( libvlc_media_player_t *p_mi ) "snapshot-file", snapshot_was_taken, p_mi ); /* Detach callback from the media player / input manager object */ + var_DelCallback( p_mi, "mute", mute_changed, NULL ); var_DelCallback( p_mi, "corks", corks_changed, NULL ); /* No need for lock_input() because no other threads knows us anymore */ _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
