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

Alexandre Janniaux ajanni at videolabs.io
Tue Jan 14 00:35:31 CET 2020


Hi,

To be exact, the question would be: do d3d/dxva require an
enabled window or can this be made so?

Nice point, I would prefer that too.

Regards,
--
Alexandre Janniaux
Videolabs

On Mon, Jan 13, 2020 at 04:17:50PM +0100, Thomas Guillem wrote:
> Sorry I meant:
>
> Why not only requiring a disabled window from a decoder device ?
> The big question for me is: do d3d require the window to be enabled ? (because no other HW APIs need it)
>
> I know the problem, I already read it twice ;)
>
> On Mon, Jan 13, 2020, at 16:14, Steve Lhomme wrote:
> > On 2020-01-13 16:03, Thomas Guillem wrote:
> > >
> > >
> > > On Mon, Jan 13, 2020, at 15:59, Steve Lhomme wrote:
> > >>
> > >> On 2020-01-13 15:54, Thomas Guillem wrote:
> > >>>
> > >>> 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.
> > >>
> > >> Luckily that may be what this patch does. It's using
> > >> sys->display_cfg.window regarless of its state. It may be NULL or set
> > >> but not enabled.
> > >
> > > I disagree with this patch. It add one more complexity, different bugs because the decoder device was created with or without a window because the decoder probed it during Open() or when the size was known...
> > >
> > > What  not requiring the window to be enabled ?
> >
> > Because...
> >
> > >>>>
> > >>>> 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."
> >
> > ...of this...
> >
> >
> > >>>>      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
> > >>>
> > >>>
> > >>> _______________________________________________
> > >>> 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
> _______________________________________________
> 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