VASurface in appsink using decodebin using Gstreamer 1.20.1

Victor Jaquez vjaquez at igalia.com
Thu Jul 14 16:29:27 UTC 2022


On Thu, 14 Jul 2022 at 12:17, Winand Appelhoff via gstreamer-devel wrote:
> Hello,
> 
> small followup
> 
> been toying around with this
> requesting memory:D3D11Memory, memory:VAMemory, memory:DMABuf in gst_query_set_caps_result() all work as expected
> 
> only memory:VASurface refuses to do so
> 
> basetransform: second attempt to fixate caps returned invalid (NULL) caps on pad vaapipostproc1:sink
> basetransform gstbasetransform.c:1370:gst_base_transform_setcaps:<vaapipostproc1> transform could not transform video/x-raw(memory:VASurface), format=(string)NV12, width=(int)1280, height=(int)720, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, views=(int)2, framerate=(fraction)50/1 in anything we support
> vaapipostproc gstvaapipostprocutil.c:756:_get_preferred_caps:<vaapipostproc1> No valid src caps found
> 
> which doesn't make any sense at all
> 
> anyone having any idea?

It's odd indeed. Since memory:VAMemory is produced/consumed by
gstva elements, in gst-plugins-bad, (and have no-rank by default, so
they don't autoplug); while memory:VASurface is produced/consumed by
gstreamer-vaapi elements, in, well, gstreamer-vaapi.

GstVa appeared because of the design failures in gstreamer-vaapi and
it's intended to replace, in most of cases,
gstreamer-vaapi. Nonetheless, they are, so far, uncompatible: they
cannot share VASurfacesID among them.

So the fact that you're getting both, means that you're mixing them
and that's a no-no.

If you can share your pipeline's dot file[1] it could make easier to
figure out what's going on.

1. https://gstreamer.freedesktop.org/documentation/tutorials/basic/debugging-tools.html?gi-language=c#getting-pipeline-graphs

vmjl

> 
> thanks a lot in advance
> Winand
> ________________________________
> Von: gstreamer-devel <gstreamer-devel-bounces at lists.freedesktop.org> im Auftrag von Winand Appelhoff via gstreamer-devel <gstreamer-devel at lists.freedesktop.org>
> Gesendet: Dienstag, 5. Juli 2022 11:08
> An: Discussion of the development of and with GStreamer <gstreamer-devel at lists.freedesktop.org>
> Cc: Winand Appelhoff <w.appelhoff at tv1.eu>
> Betreff: VASurface in appsink using decodebin using Gstreamer 1.20.1
> 
> Hi,
> 
> I'm having issues with the caps negotiaton trying to get VASurface buffers on an appsink since upgrading to 1.20.1 ( Ubuntu 22.04 default )
> 
> pipeline: any input -> decodebin -> appsink
> 
> requesting "memory:VASurface" in the GST_QUERY_CAPS result throws this:
> 
> 
> basetransform: second attempt to fixate caps returned invalid (NULL) caps on pad vaapipostproc0:sink
> 
> setting GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY works fine as expected
> 
> did I miss any changes since 1.18.x maybe?
> 
> 
> thanks a lot in advance
> Winand
> 
> 
> PS.:
> 
> vainfo output for completeness
> 
> vainfo: VA-API version: 1.14 (libva 2.12.0)
> vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 22.3.1 ()
> vainfo: Supported profile and entrypoints
>       VAProfileNone                   : VAEntrypointVideoProc
>       VAProfileNone                   : VAEntrypointStats
>       VAProfileMPEG2Simple            : VAEntrypointVLD
>       VAProfileMPEG2Simple            : VAEntrypointEncSlice
>       VAProfileMPEG2Main              : VAEntrypointVLD
>       VAProfileMPEG2Main              : VAEntrypointEncSlice
>       VAProfileH264Main               : VAEntrypointVLD
>       VAProfileH264Main               : VAEntrypointEncSlice
>       VAProfileH264Main               : VAEntrypointFEI
>       VAProfileH264Main               : VAEntrypointEncSliceLP
>       VAProfileH264High               : VAEntrypointVLD
>       VAProfileH264High               : VAEntrypointEncSlice
>       VAProfileH264High               : VAEntrypointFEI
>       VAProfileH264High               : VAEntrypointEncSliceLP
>       VAProfileVC1Simple              : VAEntrypointVLD
>       VAProfileVC1Main                : VAEntrypointVLD
>       VAProfileVC1Advanced            : VAEntrypointVLD
>       VAProfileJPEGBaseline           : VAEntrypointVLD
>       VAProfileJPEGBaseline           : VAEntrypointEncPicture
>       VAProfileH264ConstrainedBaseline: VAEntrypointVLD
>       VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
>       VAProfileH264ConstrainedBaseline: VAEntrypointFEI
>       VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
>       VAProfileVP8Version0_3          : VAEntrypointVLD
>       VAProfileVP8Version0_3          : VAEntrypointEncSlice
>       VAProfileHEVCMain               : VAEntrypointVLD
>       VAProfileHEVCMain               : VAEntrypointEncSlice
>       VAProfileHEVCMain               : VAEntrypointFEI
>       VAProfileHEVCMain10             : VAEntrypointVLD
>       VAProfileHEVCMain10             : VAEntrypointEncSlice
>       VAProfileVP9Profile0            : VAEntrypointVLD
>       VAProfileVP9Profile2            : VAEntrypointVLD
> 
> 
> 


More information about the gstreamer-devel mailing list