[vlc-devel] [PATCH 6/8] decoder: don't check picture/block date against preroll if there's no preroll
Steve Lhomme
robux4 at ycbcr.xyz
Tue Aug 27 10:29:38 CEST 2019
On 2019-08-27 10:04, Thomas Guillem wrote:
>
>
> On Tue, Aug 27, 2019, at 07:28, Steve Lhomme wrote:
>> ---
>> src/input/decoder.c | 10 ++++------
>> 1 file changed, 4 insertions(+), 6 deletions(-)
>>
>> diff --git a/src/input/decoder.c b/src/input/decoder.c
>> index b419954bab..3b225dcc1f 100644
>> --- a/src/input/decoder.c
>> +++ b/src/input/decoder.c
>> @@ -988,7 +988,6 @@ static bool DecoderPlayVideo( struct decoder_owner
>> *p_owner, picture_t *p_pictur
>> {
>> decoder_t *p_dec = &p_owner->dec;
>> vout_thread_t *p_vout = p_owner->p_vout;
>> - bool prerolled;
>>
>> if( p_picture->date == VLC_TICK_INVALID )
>> {
>> @@ -998,14 +997,14 @@ static bool DecoderPlayVideo( struct
>> decoder_owner *p_owner, picture_t *p_pictur
>> }
>>
>> vlc_mutex_lock( &p_owner->lock );
>> - if( p_owner->i_preroll_end > p_picture->date )
>
> What are you trying to fix ?
> If there is no prerol, p_owner->i_preroll_end will never be superior to p_picture->date.
Simply because the "unset" value is set in the past. It doesn't have to
be. It might as well be VLC_TICK_INVALID (0 but maybe another value in
the future).
>> + bool prerolled = p_owner->i_preroll_end != PREROLL_NONE;
>> + if( prerolled && p_owner->i_preroll_end > p_picture->date )
>> {
>> vlc_mutex_unlock( &p_owner->lock );
>> picture_Release( p_picture );
>> return false;
>> }
>>
>> - prerolled = p_owner->i_preroll_end != PREROLL_NONE;
>> p_owner->i_preroll_end = PREROLL_NONE;
>> vlc_mutex_unlock( &p_owner->lock );
>>
>> @@ -1133,7 +1132,6 @@ static void DecoderQueueThumbnail( decoder_t
>> *p_dec, picture_t *p_pic )
>> static bool DecoderPlayAudio( decoder_t *p_dec, block_t *p_audio )
>> {
>> struct decoder_owner *p_owner = dec_get_owner( p_dec );
>> - bool prerolled;
>>
>> assert( p_audio != NULL );
>>
>> @@ -1145,14 +1143,14 @@ static bool DecoderPlayAudio( decoder_t *p_dec,
>> block_t *p_audio )
>> }
>>
>> vlc_mutex_lock( &p_owner->lock );
>> - if( p_owner->i_preroll_end > p_audio->i_pts )
>> + bool prerolled = p_owner->i_preroll_end != PREROLL_NONE;
>> + if( prerolled && p_owner->i_preroll_end > p_audio->i_pts )
>> {
>> vlc_mutex_unlock( &p_owner->lock );
>> block_Release( p_audio );
>> return false;
>> }
>>
>> - prerolled = p_owner->i_preroll_end != PREROLL_NONE;
>> p_owner->i_preroll_end = PREROLL_NONE;
>> vlc_mutex_unlock( &p_owner->lock );
>>
>> --
>> 2.17.1
>>
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
> _______________________________________________
> 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