[vlc-devel] [PATCH] decoder: thumbnailer: Fix unprotected access to b_first

Steve Lhomme robux4 at ycbcr.xyz
Wed Oct 2 11:06:33 CEST 2019


OK, I see b_first is modified under lock in input_DecoderStartWait() so 
it's better/easier to use the lock.

On 2019-10-02 10:23, Hugo Beauzée-Luyssen wrote:
> On Wed, Oct 2, 2019, at 8:30 AM, Rémi Denis-Courmont wrote:
>> +1
>>
>> This probably be separated better from normal decoding.
>>
>> Le 2 octobre 2019 08:53:24 GMT+03:00, Steve Lhomme <robux4 at ycbcr.xyz> a
>> écrit : Maybe an atomic bool would be more appropriate  ?
>>>
>>> On 2019-10-01 18:33, Hugo Beauzée-Luyssen wrote:
>>>>    src/input/decoder.c | 17 +++++++++++++----
>>>>    1 file changed, 13 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/src/input/decoder.c b/src/input/decoder.c
>>>> index 57c9de6a1e..bb1beca38d 100644
>>>> --- a/src/input/decoder.c
>>>> +++ b/src/input/decoder.c
>>>> @@ -1101,19 +1101,28 @@ static picture_t *thumbnailer_buffer_new( decoder_t *p_dec )
>>>>        struct decoder_owner *p_owner = dec_get_owner( p_dec );
>>>>        /* Avoid decoding more than one frame when a thumbnail was
>>>>         * already generated */
>>>> +    vlc_mutex_lock( &p_owner->lock );
>>>>        if( !p_owner->b_first )
>>>> +    {
>>>> +        vlc_mutex_unlock( &p_owner->lock );
>>>>            return NULL;
>>>> +    }
>>>> +    vlc_mutex_unlock( &p_owner->lock );
>>>>        return picture_NewFromFormat( &p_dec->fmt_out.video );
>>>>    }
>>>>    
>>>>    static void ModuleThread_QueueThumbnail( decoder_t *p_dec, picture_t *p_pic )
>>>>    {
>>>>        struct decoder_owner *p_owner = dec_get_owner( p_dec );
>>>> -    if( p_owner->b_first )
>>>> -    {
>>>> +    bool b_first;
>>>> +
>>>> +    vlc_mutex_lock( &p_owner->lock );
>>>> +    b_first = p_owner->b_first;
>>>> +    p_owner->b_first = false;
>>>> +    vlc_mutex_unlock( &p_owner->lock );
>>>> +
>>>> +    if( b_first )
>>>>            decoder_Notify(p_owner, on_thumbnail_ready, p_pic);
>>>> -        p_owner->b_first = false;
>>>> -    }
>>>>        picture_Release( p_pic );
>>>>    
>>>>    }
>>>> -- 
>>>> 2.20.1vlc-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
>>
> 
> Hi,
> 
> Do you mean not using b_first in the case of thumbnailing? I'm fine with that but I'm not sure it's worth adding yet another member in the decoder_owner structure.
> Otherwise I agree with Thomas that in other cases this variable is better of not being atomic.
> 
> Regards,
> 
> -- 
>    Hugo Beauzée-Luyssen
>    hugo at beauzee.fr
> _______________________________________________
> 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