[vlc-devel] [PATCH] lib: player: add unset tracks API

Thomas Guillem thomas at gllm.fr
Fri Jan 24 20:01:54 CET 2020



On Fri, Jan 24, 2020, at 18:23, Rémi Denis-Courmont wrote:
> Hi,
> 
> I'm pretty sure multiple video tracks are supported, or were until recently, and some files require it anyway.

Yes indeed. 


> 
> Multiple audio tracks work fine (--sout-all --sout '#display'). There's just no ES out support to date.
Proper multiple aout could need a separation from device and stream on all modules (like for wasapi). Then a device could have multiple streams. The harder will be the aout API split and interface changes. 


> 
> Le 24 janvier 2020 18:20:48 GMT+02:00, Thomas Guillem <thomas at gllm.fr> a écrit :
>> The libvlc_media_player is no longer exposing the "disable" tracks. LibVLC
>> users should now explicitly call these 3 new unset functions to disable a
>> track category.
>> 
>> These new functions don't support disabling a specific track of a category.
>> This can be done in a separate commit by adding the following calls:
>> 
>> libvlc_video_add_spu()
>> libvlc_video_remove_spu()
>> 
>> Since VLC support multi tracks for SPU only (for now). include/vlc/libvlc_media_player.h | 25 +++++++++++++++++++++++++
>>  lib/audio.c                       |  8 ++++++++
>>  lib/libvlc.sym                    |  3 +++
>>  lib/video.c                       | 16 ++++++++++++++++
>>  4 files changed, 52 insertions(+)
>> 
>> diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h
>> index 7c72c9774b2..6648ba6a5ad 100644
>> --- a/include/vlc/libvlc_media_player.h
>> +++ b/include/vlc/libvlc_media_player.h
>> @@ -1575,6 +1575,14 @@ LIBVLC_API libvlc_track_description_t *
>>   */
>>  LIBVLC_API int libvlc_video_set_spu( libvlc_media_player_t *p_mi, int i_spu );
>>  
>> +/**
>> + * Unset the current subtitle
>> + *
>> + * \param p_mi the media player
>> + * \version LibVLC 4.0.0 and later
>> + */
>> +LIBVLC_API void libvlc_video_unset_spu( libvlc_media_player_t *p_mi );
>> +
>>  /**
>>   * Get the current subtitle delay. Positive values means subtitles are being
>>   * displayed later, negative values earlier.
>> @@ -1792,6 +1800,15 @@ LIBVLC_API int libvlc_video_get_track( libvlc_media_player_t *p_mi );
>>  LIBVLC_API
>>  int libvlc_video_set_track( libvlc_media_player_t *p_mi, int i_track );
>>  
>> +/**
>> + * Unset the current video track.
>> + *
>> + * \param p_mi media player
>> + * \version LibVLC 4.0.0 and later
>> + */
>> +LIBVLC_API
>> +void libvlc_video_unset_track( libvlc_media_player_t *p_mi );
>> +
>>  /**
>>   * Take a snapshot of the current video window.
>>   *
>> @@ -2213,6 +2230,14 @@ LIBVLC_API int libvlc_audio_get_track( libvlc_media_player_t *p_mi );
>>   */
>>  LIBVLC_API int libvlc_audio_set_track( libvlc_media_player_t *p_mi, int i_track );
>>  
>> +/**
>> + * Unset the current audio track.
>> + *
>> + * \param p_mi media player
>> + * \version LibVLC 4.0.0 and later
>> + */
>> +LIBVLC_API void libvlc_audio_unset_track( libvlc_media_player_t *p_mi );
>> +
>>  /**
>>   * Get current audio channel.
>>   *
>> diff --git a/lib/audio.c b/lib/audio.c
>> index aab84cd47a9..36695fe06da 100644
>> --- a/lib/audio.c
>> +++ b/lib/audio.c
>> @@ -394,6 +394,14 @@ end:
>>      return i_ret;
>>  }
>>  
>> +void libvlc_audio_unset_track(libvlc_media_player_t *p_mi)
>> +{
>> +    vlc_player_t *player = p_mi->player;
>> +    vlc_player_Lock(player);
>> +    vlc_player_UnselectTrackCategory(player, AUDIO_ES);
>> +    vlc_player_Unlock(player);
>> +}
>> +
>>  /*****************************************************************************
>>   * libvlc_audio_get_channel : Get the current audio channel
>>   *****************************************************************************/
>> diff --git a/lib/libvlc.sym b/lib/libvlc.sym
>> index d8fb0806bca..cc0535b868b 100644
>> --- a/lib/libvlc.sym
>> +++ b/lib/libvlc.sym
>> @@ -39,6 +39,7 @@ libvlc_audio_set_format
>>  libvlc_audio_set_format_callbacks
>>  libvlc_audio_set_callbacks
>>  libvlc_audio_set_volume_callback
>> +libvlc_audio_unset_track
>>  libvlc_chapter_descriptions_release
>>  libvlc_clock
>>  libvlc_dialog_dismiss
>> @@ -253,6 +254,8 @@ libvlc_video_set_teletext
>>  libvlc_video_set_track
>>  libvlc_video_take_snapshot
>>  libvlc_video_new_viewpoint
>> +libvlc_video_unset_track
>> +libvlc_video_unset_spu
>>  libvlc_video_update_viewpoint
>>  libvlc_set_exit_handler
>>  libvlc_audio_filter_list_get
>> diff --git a/lib/video.c b/lib/video.c
>> index 6f8e6d7f59a..c667a0d07ac 100644
>> --- a/lib/video.c
>> +++ b/lib/video.c
>> @@ -336,6 +336,14 @@ end:
>>      return i_ret;
>>  }
>>  
>> +void libvlc_video_unset_spu(libvlc_media_player_t *p_mi)
>> +{
>> +    vlc_player_t *player = p_mi->player;
>> +    vlc_player_Lock(player);
>> +    vlc_player_UnselectTrackCategory(player, SPU_ES);
>> +    vlc_player_Unlock(player);
>> +}
>> +
>>  int64_t libvlc_video_get_spu_delay( libvlc_media_player_t *p_mi )
>>  {
>>      vlc_player_t *player = p_mi->player;
>> @@ -507,6 +515,14 @@ end:
>>      return i_ret;
>>  }
>>  
>> +void libvlc_video_unset_track(libvlc_media_player_t *p_mi)
>> +{
>> +    vlc_player_t *player = p_mi->player;
>> +    vlc_player_Lock(player);
>> +    vlc_player_UnselectTrackCategory(player, VIDEO_ES);
>> +    vlc_player_Unlock(player);
>> +}
>> +
>>  /******************************************************************************
>>   * libvlc_video_set_deinterlace : enable/disable/auto deinterlace and filter
>>   *****************************************************************************/
> 
> -- 
> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté. 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20200124/006f9ed9/attachment-0001.html>


More information about the vlc-devel mailing list