Commit 09bea7fa authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

libvlc: expose events for the audio mute status (refs #14568)

Cc: Harald Sitter <sitter@kde.org>
parent 32bf025b
...@@ -79,6 +79,8 @@ enum libvlc_event_e { ...@@ -79,6 +79,8 @@ enum libvlc_event_e {
libvlc_MediaPlayerESSelected, libvlc_MediaPlayerESSelected,
libvlc_MediaPlayerCorked, libvlc_MediaPlayerCorked,
libvlc_MediaPlayerUncorked, libvlc_MediaPlayerUncorked,
libvlc_MediaPlayerMuted,
libvlc_MediaPlayerUnmuted,
libvlc_MediaListItemAdded=0x200, libvlc_MediaListItemAdded=0x200,
libvlc_MediaListWillAddItem, libvlc_MediaListWillAddItem,
......
...@@ -285,6 +285,8 @@ static const event_name_t event_list[] = { ...@@ -285,6 +285,8 @@ static const event_name_t event_list[] = {
DEF(MediaPlayerESSelected) DEF(MediaPlayerESSelected)
DEF(MediaPlayerCorked) DEF(MediaPlayerCorked)
DEF(MediaPlayerUncorked) DEF(MediaPlayerUncorked)
DEF(MediaPlayerMuted)
DEF(MediaPlayerUnmuted)
DEF(MediaListItemAdded) DEF(MediaListItemAdded)
DEF(MediaListWillAddItem) DEF(MediaListWillAddItem)
......
...@@ -71,6 +71,10 @@ static int ...@@ -71,6 +71,10 @@ static int
corks_changed(vlc_object_t *obj, const char *name, vlc_value_t old, corks_changed(vlc_object_t *obj, const char *name, vlc_value_t old,
vlc_value_t cur, void *opaque); 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 void static void
add_es_callbacks( input_thread_t *p_input_thread, libvlc_media_player_t *p_mi ); add_es_callbacks( input_thread_t *p_input_thread, libvlc_media_player_t *p_mi );
...@@ -483,6 +487,23 @@ static int corks_changed(vlc_object_t *obj, const char *name, vlc_value_t old, ...@@ -483,6 +487,23 @@ static int corks_changed(vlc_object_t *obj, const char *name, vlc_value_t old,
return VLC_SUCCESS; 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. * Create a Media Instance object.
* *
...@@ -660,8 +681,11 @@ libvlc_media_player_new( libvlc_instance_t *instance ) ...@@ -660,8 +681,11 @@ libvlc_media_player_new( libvlc_instance_t *instance )
register_event(mp, ESSelected); register_event(mp, ESSelected);
register_event(mp, Corked); register_event(mp, Corked);
register_event(mp, Uncorked); register_event(mp, Uncorked);
register_event(mp, Muted);
register_event(mp, Unmuted);
var_AddCallback(mp, "corks", corks_changed, NULL); var_AddCallback(mp, "corks", corks_changed, NULL);
var_AddCallback(mp, "mute", mute_changed, NULL);
/* Snapshot initialization */ /* Snapshot initialization */
register_event(mp, SnapshotTaken); register_event(mp, SnapshotTaken);
...@@ -713,6 +737,7 @@ static void libvlc_media_player_destroy( libvlc_media_player_t *p_mi ) ...@@ -713,6 +737,7 @@ static void libvlc_media_player_destroy( libvlc_media_player_t *p_mi )
"snapshot-file", snapshot_was_taken, p_mi ); "snapshot-file", snapshot_was_taken, p_mi );
/* Detach callback from the media player / input manager object */ /* 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 ); var_DelCallback( p_mi, "corks", corks_changed, NULL );
/* No need for lock_input() because no other threads knows us anymore */ /* No need for lock_input() because no other threads knows us anymore */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment