should v4l2h264dec add "video/x-raw(memory:DMABuf)" besides "video/x-raw"?
nicolas at ndufresne.ca
Thu May 9 11:39:06 UTC 2019
Le jeudi 09 mai 2019 à 11:04 +0800, Halley Zhao a écrit :
> Hi experts:
> v4l2h264dec claims it supports "video/x-raw" format only, but it may use dmabuf format (its capture-io-mode supports rw/mmap/userptr/dmabuf/dmabuf-import). should it add "video/x-raw(memory:DMABuf)" as well.
> on nxp imx8 bsp, I found caps negotiation goes with "video/x-raw" (diskplay->shm_formats), but buffer flows with dmabuf(display->dmabuf_formats), because there is gst_wl_linux_dmabuf_construct_wl_buffer() in log.
v4l2h264dec always output DMABuf. DMABuf is user mappable memory, there
is no need to have a caps feature in general. The DMABuf caps feature
was added for specific use cases, to support implicit tiling (Intel
GFX, and that was actually a bad idea), to support protected FDs (non-
readable DMABuf, use to carry DRM content) and is open for future
support for proprietary formats (like the one exposed through DRM
modifiers). The caps feature implement is quite partial overall.
> I met issue that caps negotiation fails between v4l2h264dec and waylandsink,
> because on my platform (imx8 + customized weston), v4l2h264dec claims it support video/x-raw with NV12 format, waylandsink claims it support video/x-raw without NV12 format, plus video/x-raw(memory:DMABuf) with NV12 format.
Compositors cannot guaranty availability of HW planes. Thus, it is
important to provide a fallback mechanism (usually through the GL
renderer) and then offer the same formats for both DMABuf and SHM.
waylandsink will send DMABuf if the format is supported through the
extension even without the caps feature.
Of course, if you prefer hard failure if DMABuf isn't used, you may
want to implement DMABuf caps feature support in v4l2 plugin. Patches
are welcome, though be aware that negotiation of that feature should be
last resort (chosen last).
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
More information about the gstreamer-devel