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

Thomas Guillem thomas at gllm.fr
Mon Jan 13 15:54:16 CET 2020


On Mon, Jan 13, 2020, at 15:47, Rémi Denis-Courmont wrote:
> Hi,
> 
> Does VA require an actual window? I'd think it only requires a display, so a vout_window_t in disabled state should suffice.

Indeed, we don't have any API that require an enabled window.
VA only need:
 Display *x11dpy = XOpenDisplay(window->display.x11);
 VADisplay vadpy = *vadpyp = vaGetDisplay(x11dpy);

So, I think we could simplify everything by not requiring an enabled window. I that case, you can load the window module, and create the decoder device without a valid size.

> 
> Le 13 janvier 2020 15:56:43 GMT+02:00, Thomas Guillem <thomas at gllm.fr> a écrit :
>> 
>> On Mon, Jan 13, 2020, at 13:35, Steve Lhomme wrote:
>>> "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."
>> 
>> What to we do when we have a hw decoder that doesn't know its actual size but a window is required ? (vaapi).
>> 
>> > 
>>> 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
>>>> 
>>> 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
> 
> -- 
> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté. 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20200113/30b03db0/attachment.html>


More information about the vlc-devel mailing list