[vlc-devel] [PATCH 2/2] libvlc: add event libvlc_MediaPlayerESChanged
Rémi Denis-Courmont
remi at remlab.net
Wed Jul 16 13:43:40 CEST 2014
Le 2014-07-16 14:06, Felix Abecassis a écrit :
> ---
> include/vlc/libvlc_events.h | 6 ++++++
> lib/event.c | 1 +
> lib/media_player.c | 21 +++++++++++++++++++++
> 3 files changed, 28 insertions(+)
>
> diff --git a/include/vlc/libvlc_events.h
> b/include/vlc/libvlc_events.h
> index f268fb5..1d4f781 100644
> --- a/include/vlc/libvlc_events.h
> +++ b/include/vlc/libvlc_events.h
> @@ -74,6 +74,7 @@ enum libvlc_event_e {
> libvlc_MediaPlayerLengthChanged,
> libvlc_MediaPlayerVout,
> libvlc_MediaPlayerScrambledChanged,
> + libvlc_MediaPlayerESChanged,
>
> libvlc_MediaListItemAdded=0x200,
> libvlc_MediaListWillAddItem,
> @@ -230,6 +231,11 @@ typedef struct libvlc_event_t
> {
> libvlc_media_t * new_media;
> } media_player_media_changed;
> +
> + struct
> + {
> + libvlc_track_type_t i_type;
> + } media_player_es_changed;
That does not seem very useful. The callback would almost certainly
need to know if the ES was added, changed or removed, and since there
may be more than one ES of a given type, the unique ID.
> } u; /**< Type-dependent event description */
> } libvlc_event_t;
>
> diff --git a/lib/event.c b/lib/event.c
> index aa285f9..67c0f15 100644
> --- a/lib/event.c
> +++ b/lib/event.c
> @@ -281,6 +281,7 @@ static const event_name_t event_list[] = {
> DEF(MediaPlayerLengthChanged)
> DEF(MediaPlayerVout)
> DEF(MediaPlayerScrambledChanged)
> + DEF(MediaPlayerESChanged)
>
> DEF(MediaListItemAdded)
> DEF(MediaListWillAddItem)
> diff --git a/lib/media_player.c b/lib/media_player.c
> index b31a832..a3c5ede 100644
> --- a/lib/media_player.c
> +++ b/lib/media_player.c
> @@ -343,6 +343,26 @@ input_event_changed( vlc_object_t * p_this, char
> const * psz_cmd,
> event.u.media_player_vout.new_count = i_vout;
> libvlc_event_send( p_mi->p_event_manager, &event );
> }
> + else if( newval.i_int == INPUT_EVENT_ES )
> + {
> + event.type = libvlc_MediaPlayerESChanged;
> + switch ( var_GetInteger( p_input, "es-type" ) )
What warrants that the es-type variable wwas not overriden by another
pending ES change?
> + {
> + case VIDEO_ES:
> + event.u.media_player_es_changed.i_type =
> libvlc_track_video;
> + break;
> + case AUDIO_ES:
> + event.u.media_player_es_changed.i_type =
> libvlc_track_audio;
> + break;
> + case SPU_ES:
> + event.u.media_player_es_changed.i_type =
> libvlc_track_text;
> + break;
> + default:
> + event.u.media_player_es_changed.i_type =
> libvlc_track_unknown;
> + break;
> + }
> + libvlc_event_send( p_mi->p_event_manager, &event );
> + }
>
> return VLC_SUCCESS;
> }
> @@ -538,6 +558,7 @@ libvlc_media_player_new( libvlc_instance_t
> *instance )
>
> register_event(mp, Vout);
> register_event(mp, ScrambledChanged);
> + register_event(mp, ESChanged);
>
> /* Snapshot initialization */
> register_event(mp, SnapshotTaken);
--
Rémi Denis-Courmont
More information about the vlc-devel
mailing list