[vlc-devel] [PATCH 5/5] libvlc: player: use vlc_player

Thomas Guillem thomas at gllm.fr
Thu May 9 18:51:09 CEST 2019



On Thu, May 9, 2019, at 18:49, Rémi Denis-Courmont wrote:
> Le torstaina 9. toukokuuta 2019, 18.56.58 EEST Romain Vimont a écrit :
> > Implement the old libvlc player API using the new vlc_player.
> > ---
> >  lib/audio.c                 |   95 +--
> >  lib/media_player.c          | 1518 +++++++++++++++--------------------
> >  lib/media_player_internal.h |   21 +-
> >  lib/video.c                 |  266 ++----
> >  4 files changed, 763 insertions(+), 1137 deletions(-)
> > 
> > diff --git a/lib/audio.c b/lib/audio.c
> > index 751584d0f1..f5e4493138 100644
> > --- a/lib/audio.c
> > +++ b/lib/audio.c
> > @@ -50,7 +50,7 @@ static audio_output_t *GetAOut( libvlc_media_player_t *mp
> > ) {
> >      assert( mp != NULL );
> > 
> > -    audio_output_t *p_aout = input_resource_HoldAout( mp->input.p_resource
> > ); +    audio_output_t *p_aout = vlc_player_aout_Hold(mp->player);
> >      if( p_aout == NULL )
> >          libvlc_printerr( "No active audio output" );
> >      return p_aout;
> > @@ -131,14 +131,6 @@ int libvlc_audio_output_set( libvlc_media_player_t *mp,
> > const char *psz_name ) var_SetString( mp, "aout", value );
> >      free( value );
> > 
> > -    /* Forget the existing audio output */
> > -    input_resource_ResetAout(mp->input.p_resource);
> > -
> > -    /* Create a new audio output */
> > -    audio_output_t *aout = input_resource_GetAout(mp->input.p_resource);
> > -    if( aout != NULL )
> > -        input_resource_PutAout(mp->input.p_resource, aout);
> > -
> >      return 0;
> >  }
> > 
> > @@ -340,16 +332,13 @@ int libvlc_audio_set_volume( libvlc_media_player_t
> > *mp, int volume )
> > ***************************************************************************
> > **/ int libvlc_audio_get_track_count( libvlc_media_player_t *p_mi )
> >  {
> > -    input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi );
> > -    int i_track_count;
> > +    vlc_player_t *player = p_mi->player;
> > +    vlc_player_Lock(player);
> > 
> > -    if( !p_input_thread )
> > -        return -1;
> > +    int ret = vlc_player_GetTrackCount(p_mi->player, AUDIO_ES);
> > 
> > -    i_track_count = var_CountChoices( p_input_thread, "audio-es" );
> > -
> > -    input_Release(p_input_thread);
> > -    return i_track_count;
> > +    vlc_player_Unlock(player);
> > +    return ret;
> >  }
> 
> Application should (still) be allowed to call this, and most* other functions 
> further down the patch, from within event callbacks. But this leads to 
> deadlock or abort depending on build type.
> 
> * Exceptions exist such _stop(), which would necessarily deadlock.

Not anymore, stop is asynchronous. Only player_release can block.

> 
> -- 
> 雷米‧德尼-库尔蒙
> http://www.remlab.net/
> 
> 
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list