[vlc-devel] [PATCH 3/4] video_output: try to create a decoder device even if creating the window failed

Steve Lhomme robux4 at ycbcr.xyz
Mon Jan 13 13:35:01 CET 2020


"In some cases (nvdec, mmal, mediacodec ?) the actual size of the video 
to decode is known only after data have been processed, long after the 
device is setup to use with this API. There are hacks to try to guess 
the size early but in the end it's just a hack."

This removes the need for these hacks for those using a decoder device 
that doesn't need a window.

On 2020-01-13 13:27, Alexandre Janniaux wrote:
> Hi,
> 
> This looks dangerous if it is expected to have an enabled
> window at decoder device creation. vout_window handle
> values will basically be undefined without any way for the
> decoder device to know it. Why do you need this?
> 
> Regards,
> --
> Alexandre Janniaux
> Videolabs
> 
> On Mon, Jan 13, 2020 at 12:07:33PM +0100, Steve Lhomme wrote:
>> ---
>>   src/video_output/video_output.c | 20 +++++++++-----------
>>   1 file changed, 9 insertions(+), 11 deletions(-)
>>
>> diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
>> index 5d583dbe0ca..9540707ab2b 100644
>> --- a/src/video_output/video_output.c
>> +++ b/src/video_output/video_output.c
>> @@ -2099,20 +2099,18 @@ vlc_decoder_device *vout_GetDevice(const vout_device_configuration_t *cfg)
>>       assert(cfg->fmt != NULL);
>>       vout_thread_sys_t *sys = cfg->vout->p;
>>
>> -    if (!VoutCheckFormat(cfg->fmt))
>> -        return NULL;
>> -
>> -    video_format_t original;
>> -    VoutFixFormat(&original, cfg->fmt);
>> -
>>       vlc_mutex_lock(&sys->window_lock);
>> -    int res = EnableWindowLocked(cfg->vout, &original);
>> -    if (res == 0 && sys->dec_device == NULL)
>> +    if (VoutCheckFormat(cfg->fmt))
>> +    {
>> +        video_format_t original;
>> +        VoutFixFormat(&original, cfg->fmt);
>> +
>> +        EnableWindowLocked(cfg->vout, &original);
>> +        video_format_Clean(&original);
>> +    }
>> +    if (sys->dec_device == NULL)
>>           sys->dec_device = vlc_decoder_device_Create(&cfg->vout->obj, sys->display_cfg.window);
>>       dec_device = sys->dec_device ? vlc_decoder_device_Hold( sys->dec_device ) : NULL;
>>       vlc_mutex_unlock(&sys->window_lock);
>> -    video_format_Clean(&original);
>> -    if (res != 0)
>> -        return NULL;
>>       return dec_device;
>>   }
>> --
>> 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