Encoding DMA Buf with BGRx:0x0100000000000001 in h264 using vaapi

xaterus at gmail.com xaterus at gmail.com
Thu Nov 9 16:19:52 UTC 2023


Hello,

I apologise for the late reply. Many thanks for all the information.

> As Nicolas already asked, first we have to ask what device gives you that
format? perhaps the very same device might deliver other.

 I am using a UHD Graphics 630 as hardware. I split it via GVT-G and
 assign an instance to a virtual machine in QEMU. Then I get the DMA buf of
the framebuffer via
 mdev ( ioctl(device_fd, VFIO_DEVICE_QUERY_GFX_PLANE, &plane)). I import the
DMA buf into
 GStreamer. And the DMA buf then has BGRx:0x010000000000000001. That's why I
was surprised
 that the graphics card uses this format internally but the encoder can't
handle it.

>GstVA queries the driver and expose the supported color formats, so yes,
the va plugin should support all hardware capabilities, otherwise it's a
bug.

>You can use vadumpcaps https://github.com/fhvwy/vadumpcaps/ to check all
the pixels supported by a profile/entrypoint.

Thank you very much, I will have a look at that.


 Yours sincerely
 Michael


-----Original Message-----
From: gstreamer-devel <gstreamer-devel-bounces at lists.freedesktop.org> On
Behalf Of Victor Jaquez via gstreamer-devel
Sent: Tuesday, November 7, 2023 12:47 PM
To: Discussion of the development of and with GStreamer
<gstreamer-devel at lists.freedesktop.org>
Cc: Victor Jaquez <vjaquez at igalia.com>
Subject: Re: Encoding DMA Buf with BGRx:0x0100000000000001 in h264 using
vaapi

On Fri, 03 Nov 2023 at 15:46, xaterus--- via gstreamer-devel wrote:
> With great interest I have read this article about Gstreamer DMABuf 
> modifier negotiation in 
>
GStreamer(https://blogs.igalia.com/vjaquez/2023/08/08/dmabuf-modifier-negoti
ation-in-gstreamer/).
> 
> So I want to encode an DMA Buf with the format BGRx:0x0100000000000001 
> into a h264 video stream using the VAAPI with the GStreamer VA Plugin.
> 
> Using gst-inspect on vah264enc I can see I need to convert it to:
>       video/x-raw(memory:DMABuf)
>                   width: [ 32, 4096 ]
>                  height: [ 32, 4096 ]
>                  format: DMA_DRM
>              drm-format: NV12:0x0100000000000002
> 
> 
> So I thought about using   vapostproc to convert it. So using
> gst-inspect again I found out that: the src pad of vapostproc supports
> NV12:0x0100000000000002 (memory:DMABuf) which is great. But the sink 
> pad does not support BGRx:0x0100000000000001.
> 
> Now I ask myself, is it my hardware that does not support the 
> conversion between BGRx:0x010000000000000001 and 
> NV12:0x010000000000000002, or is it Intel VAAPI or the gstreamer va 
> plugin? Does the gstreamer va plugin support all hardware 
> capabilities?

GstVA queries the driver and expose the supported color formats, so yes, the
va plugin should support all hardware capabilities, otherwise it's a bug.

You can use vadumpcaps https://github.com/fhvwy/vadumpcaps/ to check all the
pixels supported by a profile/entrypoint.

> 
> Also is there any other method to convert a DMA Buffer with
> BGRx:0x0100000000000001 with gstreamer in h264?

As Nicolas already asked, first we have to ask what device gives you that
format? perhaps the very same device might deliver other.

> 
> Yours sincerely
> Michael
> 



More information about the gstreamer-devel mailing list