<html><head></head><body>Hi,<br><br>The contemporary reality is such that the decoding DSP is a dedicated piece of fixed function hardware, either with a dedicated API or a dedicated component within a more general API (e.g. NVDEC within CUDA). Filtering and the rest is done by the (GP)GPU with programmable hardware and possibly completely separate API than decoding, e.g VK or GL.<br><br>I don't see how it can even work if video context and decoder device are the same thing. You literally can't do filtering and rendering with a decoder. There may be interdependence to take into account when creating those objects, but that does not mean they're the same thing.<br><br>And that's exactly why I don't think it's as simple and obvious as exposing the decoder to filters.<br><br><div class="gmail_quote">Le 19 septembre 2019 15:18:12 GMT+03:00, Alexandre Janniaux <ajanni@videolabs.io> a écrit :<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class="k9mail">Hi,<br><br>Wasn't the workshop only about window / decoder, and video context the<br>previous name of what become decoder_device ?<br><br>It might become confusion with Steve's video context(s) definition.<br><br>What would create the (only?) video context and what do you want the video<br>context to bring to the filter pipeline in a real world case ?<br><br>Regards,<br>--<br>Alexandre Janniaux<br>Videolabs<br><br>On Thu, Sep 19, 2019 at 03:06:20PM +0300, Rémi Denis-Courmont wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> No. The name is correct. That's thewhole point of distinguish between decoder device and video context.<br><br> The decoder device abstracts the video decoding DSP, and shields the decoder abstraction from depending on windowing systems (so that headless decoding is possible).<br><br> The video context provides abstracts the GPU for video processing purpose - filter, conversion, blend and render. The video context is guaranteed to have a window underneath it, since rendering may depend on the intended display controller.<br><br> Le 19 septembre 2019 10:19:13 GMT+03:00, Steve Lhomme <robux4@ycbcr.xyz> a écrit :<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;">On 2019-09-19 8:40, Rémi Denis-Courmont wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;">It's called "decoder device" because it's for the decoder.<br></blockquote>The name itself is not correct. As explained, it is also used by<br>filters<br>to create video context from scratch (that will output pictures<br>compatible with the "decoder device" used by the display module). We<br>could call it "output device" or even "output adapter" since it seems<br>to<br>always be tied to a display adapter.<br><br>In the case of transcoding it's actually the device used by the<br>encoder,<br>that the decoder needs to try to match.<br><br>As Alexandre reminded, it's mostly a hint for the decoder (and filters)<br><br>to match the output. So we could also call it "device hint".<br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;">And the decoder device does not have to come from a window. That's<br></blockquote>not how it's going to work for transcoding.<br><br>It doesn't have to in most cases. But for devices like VAAPI it needs<br>to<br>know the type and ID of the window so the decoder can actually be used<br>(not sure if there are encoders for VAAPI and if they can use a dummy<br>VADisplay value). See the Open() of the VAAPI decoder device [1]. No<br>window => no "decoder device". No "decoder device" => no decoder.<br><br>We actually designed the "decoder device" during the workshop because<br>of<br>that. I did not originally go that way since on Windows I never need to<br><br>know the window (and in fact I can't know the adapter from the HWND).<br><br>[1]<br><a href="https://code.videolan.org/videolan/vlc/blob/master/modules/hw/vaapi/decoder_device.c#L223">https://code.videolan.org/videolan/vlc/blob/master/modules/hw/vaapi/decoder_device.c#L223</a><br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;">Le 19 septembre 2019 09:30:30 GMT+03:00, Steve Lhomme<br></blockquote><robux4@ycbcr.xyz> a écrit :<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #fcaf3e; padding-left: 1ex;">On 2019-09-19 8:11, Steve Lhomme wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #e9b96e; padding-left: 1ex;">On 2019-09-18 18:16, Rémi Denis-Courmont wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ccc; padding-left: 1ex;">Le keskiviikkona 18. syyskuuta 2019, 17.13.18 EEST Steve Lhomme a<br></blockquote></blockquote>écrit :<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #e9b96e; padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ccc; padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ccc; padding-left: 1ex;">The decoder device ("dec-dev") should be tied to the lifecyle of<br></blockquote></blockquote></blockquote>the<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #e9b96e; padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ccc; padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ccc; padding-left: 1ex;">window.<br></blockquote>Well, no. It's tied to an enabled window, which is longer than a<br></blockquote></blockquote>vout,<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #e9b96e; padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ccc; padding-left: 1ex;">but<br>shorter than a window.<br></blockquote> I can change it to:<br> The decoder device ("dec-dev") should be tied to the lifecyle of an<br> enabled window.<br><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ccc; padding-left: 1ex;">And AFAIK, the vout should not know about the decoder or decoder<br>device at<br>all. It should use the video context only.<br></blockquote>And how do you plan to convey this decoder device instance to the<br>decoder/filters without going through the vout ?<br></blockquote>For the record, the decoder device is created with a vout_window_t,<br>because in some cases (VAAPI for example) it needs to know about<br></blockquote></blockquote>which<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #fcaf3e; padding-left: 1ex;">window is used. This vout_window_t is created and stored by the<br></blockquote></blockquote>vout.<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #fcaf3e; padding-left: 1ex;"><hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br></blockquote>--<br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez<br></blockquote>excuser ma brièveté.<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;"><hr> vlc-devel mailing list<br> To unsubscribe or modify your subscription options:<br> <a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br><br></blockquote><hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br></blockquote>--<br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.<br></blockquote><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"><hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br></blockquote><hr>vlc-devel mailing list<br>To unsubscribe or modify your subscription options:<br><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a></pre></blockquote></div><br>-- <br>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.</body></html>