[vlc-devel] [PATCH 05/39] decoder: move the display creation in a separate function

Steve Lhomme robux4 at ycbcr.xyz
Mon Oct 7 09:43:25 CEST 2019


On 2019-10-06 20:45, Alexandre Janniaux wrote:
> Hi,
> 
> Comments inline,
> 
> On Wed, Oct 02, 2019 at 04:23:20PM +0200, Steve Lhomme wrote:
>> To create the vout and decoder device we don't need to know the DPB.
>>
>> For now the display still holds the picture pool so the display still needs the
>> DBP size.
>> ---
>>   src/input/decoder.c | 52 ++++++++++++++++++++++++++++-----------------
>>   1 file changed, 32 insertions(+), 20 deletions(-)
>>
>> diff --git a/src/input/decoder.c b/src/input/decoder.c
>> index cfa3fd237eb..c058779deb0 100644
>> --- a/src/input/decoder.c
>> +++ b/src/input/decoder.c
>> @@ -459,11 +459,10 @@ static void FixDisplayFormat(decoder_t *p_dec, video_format_t *fmt)
>>       video_format_AdjustColorSpace( fmt );
>>   }
>>
>> -static int ModuleThread_UpdateVideoFormat( decoder_t *p_dec )
>> +static int CreateVoutIfNeeded(struct decoder_owner *p_owner)
>>   {
>> -    struct decoder_owner *p_owner = dec_get_owner( p_dec );
>> +    decoder_t *p_dec = &p_owner->dec;
>>       bool need_vout = false;
>> -    bool need_format_update = false;
>>
>>       if( p_owner->p_vout == NULL )
>>       {
>> @@ -506,22 +505,6 @@ static int ModuleThread_UpdateVideoFormat( decoder_t *p_dec )
>>           need_vout = true;
>>       }
>>
>> -    if ( memcmp( &p_dec->fmt_out.video.mastering,
>> -                 &p_owner->fmt.video.mastering,
>> -                 sizeof(p_owner->fmt.video.mastering)) )
>> -    {
>> -        msg_Dbg(p_dec, "vout update: mastering data");
>> -        need_format_update = true;
>> -    }
>> -    if ( p_dec->fmt_out.video.lighting.MaxCLL !=
>> -         p_owner->fmt.video.lighting.MaxCLL ||
>> -         p_dec->fmt_out.video.lighting.MaxFALL !=
>> -         p_owner->fmt.video.lighting.MaxFALL )
>> -    {
>> -        msg_Dbg(p_dec, "vout update: lighting data");
>> -        need_format_update = true;
>> -    }
>> -
>>       if( need_vout )
>>       {
>>           vout_thread_t *p_vout;
>> @@ -591,8 +574,37 @@ static int ModuleThread_UpdateVideoFormat( decoder_t *p_dec )
>>           vlc_fifo_Lock( p_owner->p_fifo );
>>           p_owner->reset_out_state = true;
>>           vlc_fifo_Unlock( p_owner->p_fifo );
>> +
>> +        return 1; // new vout was created
>>       }
>> -    else
>> +    return 0; // vout unchanged
>> +}
>> +
>> +static int ModuleThread_UpdateVideoFormat( decoder_t *p_dec )
>> +{
>> +    struct decoder_owner *p_owner = dec_get_owner( p_dec );
>> +
>> +    int created_vout = CreateVoutIfNeeded(p_owner);
>> +    if (created_vout != 0)
>> +        return created_vout == -1 ? -1 : 0; // error or new vout was created
> 
> To be honest with myself, this is becoming a bit hard to parse
> and understand without reading both functions, as
> `0 == VLC_SUCCESS` everywhere else in the code base so it looks
> like an error checking, but that's also coming from the usual -1
> or 0 return value convention issue.
> 
> I'm not sure of what you could do though, except trying to return
> VLC_EGENERIC/VLC_SUCCESS here and convert the result back in
> decoder_UpdateVideoFormat or changing its documentation.

Again, I'm trying to make the least amount of changes to get to have 
proper push. The 0/-1 is the usual way of handling things in that file 
so I keep using that. If I'd change it I would use an enum.

>> +
>> +    bool need_format_update = false;
>> +    if ( memcmp( &p_dec->fmt_out.video.mastering,
>> +                 &p_owner->fmt.video.mastering,
>> +                 sizeof(p_owner->fmt.video.mastering)) )
>> +    {
>> +        msg_Dbg(p_dec, "vout update: mastering data");
>> +        need_format_update = true;
>> +    }
>> +    if ( p_dec->fmt_out.video.lighting.MaxCLL !=
>> +         p_owner->fmt.video.lighting.MaxCLL ||
>> +         p_dec->fmt_out.video.lighting.MaxFALL !=
>> +         p_owner->fmt.video.lighting.MaxFALL )
>> +    {
>> +        msg_Dbg(p_dec, "vout update: lighting data");
>> +        need_format_update = true;
>> +    }
>> +
>>       if ( need_format_update )
>>       {
>>           /* the format has changed but we don't need a new vout */
>> --
>> 2.17.1
>>
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
> 
> Regards,
> 
> --
> Alexandre Janniaux
> Videolabs
> _______________________________________________
> 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