Skip to content

Commit bd8485f

Browse files
author
Rémi Denis-Courmont
committed
libvlc: expose event for audio volume change (fixes #14568)
Cc: Harald Sitter <[email protected]>
1 parent 09bea7f commit bd8485f

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

include/vlc/libvlc_events.h

+6
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ enum libvlc_event_e {
8181
libvlc_MediaPlayerUncorked,
8282
libvlc_MediaPlayerMuted,
8383
libvlc_MediaPlayerUnmuted,
84+
libvlc_MediaPlayerAudioVolume,
8485

8586
libvlc_MediaListItemAdded=0x200,
8687
libvlc_MediaListWillAddItem,
@@ -244,6 +245,11 @@ typedef struct libvlc_event_t
244245
libvlc_track_type_t i_type;
245246
int i_id;
246247
} media_player_es_changed;
248+
249+
struct
250+
{
251+
float volume;
252+
} media_player_audio_volume;
247253
} u; /**< Type-dependent event description */
248254
} libvlc_event_t;
249255

lib/event.c

+1
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ static const event_name_t event_list[] = {
287287
DEF(MediaPlayerUncorked)
288288
DEF(MediaPlayerMuted)
289289
DEF(MediaPlayerUnmuted)
290+
DEF(MediaPlayerAudioVolume)
290291

291292
DEF(MediaListItemAdded)
292293
DEF(MediaListWillAddItem)

lib/media_player.c

+20
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ static int
7575
mute_changed(vlc_object_t *obj, const char *name, vlc_value_t old,
7676
vlc_value_t cur, void *opaque);
7777

78+
static int
79+
volume_changed(vlc_object_t *obj, const char *name, vlc_value_t old,
80+
vlc_value_t cur, void *opaque);
81+
7882
static void
7983
add_es_callbacks( input_thread_t *p_input_thread, libvlc_media_player_t *p_mi );
8084

@@ -504,6 +508,19 @@ static int mute_changed(vlc_object_t *obj, const char *name, vlc_value_t old,
504508
return VLC_SUCCESS;
505509
}
506510

511+
static int volume_changed(vlc_object_t *obj, const char *name, vlc_value_t old,
512+
vlc_value_t cur, void *opaque)
513+
{
514+
libvlc_media_player_t *mp = (libvlc_media_player_t *)obj;
515+
libvlc_event_t event;
516+
517+
event.type = libvlc_MediaPlayerAudioVolume;
518+
event.u.media_player_audio_volume.volume = cur.f_float;
519+
libvlc_event_send(mp->p_event_manager, &event);
520+
VLC_UNUSED(name); VLC_UNUSED(old); VLC_UNUSED(opaque);
521+
return VLC_SUCCESS;
522+
}
523+
507524
/**************************************************************************
508525
* Create a Media Instance object.
509526
*
@@ -683,9 +700,11 @@ libvlc_media_player_new( libvlc_instance_t *instance )
683700
register_event(mp, Uncorked);
684701
register_event(mp, Muted);
685702
register_event(mp, Unmuted);
703+
register_event(mp, AudioVolume);
686704

687705
var_AddCallback(mp, "corks", corks_changed, NULL);
688706
var_AddCallback(mp, "mute", mute_changed, NULL);
707+
var_AddCallback(mp, "volume", volume_changed, NULL);
689708

690709
/* Snapshot initialization */
691710
register_event(mp, SnapshotTaken);
@@ -737,6 +756,7 @@ static void libvlc_media_player_destroy( libvlc_media_player_t *p_mi )
737756
"snapshot-file", snapshot_was_taken, p_mi );
738757

739758
/* Detach callback from the media player / input manager object */
759+
var_DelCallback( p_mi, "volume", volume_changed, NULL );
740760
var_DelCallback( p_mi, "mute", mute_changed, NULL );
741761
var_DelCallback( p_mi, "corks", corks_changed, NULL );
742762

0 commit comments

Comments
 (0)