gdkpixbufoverlay breaks vaapi pipeline

Wolfgang Grandegger wg at grandegger.com
Wed May 1 09:50:58 UTC 2019


Hello,

Am 01.05.19 um 02:12 schrieb Nicolas Dufresne:
> 
> 
> Le mar. 30 avr. 2019 16 h 25, Wolfgang Grandegger <wg at grandegger.com
> <mailto:wg at grandegger.com>> a écrit :
> 
>     Hello,
> 
>     I have a wired problem with the following pipeline:
> 
>       $ gst-launch-1.0 udpsrc port=5678 buffer-size=180000000 \
>           ! image/jpeg,format=Y42B,width=1920,height=1080,framerate=50/1 \
>           ! jpegparse disable-passthrough=true
>           ! vaapijpegdec \
> 
> 
> I'm not fully certain, but I believe you might need to add vaapipostproc
> here for this use case. VA element don't produce normal memory, the
> postproc can fix that 

"vaapipostproc" without arguments does *not* help. But I just found out,
that

  "vaapipostproc format=i420 "

here does *cure* the problem! Should it not also work with 422H?

It there an easy way to find out what format an element uses?

Anyway, as mentioned below, it works fine with the "yuvj420" camera
stream and also with "clockoverlay". Therefore I think "memory" should
be ok in the first place... but maybe I have missed something?

> 
>           ! gdkpixbufoverlay location=logo.png \
>           ! vaapisink
> 
>     It works fine with the following camera stream:
> 
>       Video: mjpeg (jpeg / 0x6765706A), yuvj420p(pc,
>     bt470bg/unknown/unknown, progressive), 1920x1080
> 
>     but the element "gdkpixbufoverlay" breaks it with the stream:
> 
>       Video: mjpeg (jpeg / 0x6765706A), yuvj422p(pc,
>     bt470bg/unknown/unknown, progressive), 1920x1080
> 
>     It's 420 vs 422? Then I get the error message:
> 
>       WARN        vaapisink
>     gstvaapisink.c:1483:gst_vaapisink_show_frame_unlocked:<vaapisink0>
>     could not get surface

What could cause that warning?

>       WARN        basesrc gstbasesrc.c:3055:gst_base_src_loop:<udpsrc0>
>     error: Internal data stream error.
>       WARN        basesrc gstbasesrc.c:3055:gst_base_src_loop:<udpsrc0>
>     error: streaming stopped, reason error (-5)
>       WARN        queue
>     gstqueue.c:988:gst_queue_handle_sink_event:<queue0> error: Internal
>     data stream error.
>       WARN        queue
>     gstqueue.c:988:gst_queue_handle_sink_event:<queue0> error: streaming
>     stopped, reason error (-5)
>       ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0:
>     Internal data stream error.
>       Additional debug info:
>       gstbasesrc.c(3055): gst_base_src_loop ():
>     /GstPipeline:pipeline0/GstUDPSrc:udpsrc0:
>       streaming stopped, reason error (-5)
> 
>     In the log with GST_DEBUG=5 I find in that case:
> 
>       DEBUG         vaapi
>     gstvaapiimage.c:293:gst_vaapi_image_new_with_image: VA image
>     0x0a000000, format 422H, size 1920x1080
>       ...
>       DEBUG         vaapidisplay gstvaapidisplay.c:205:append_formats:
>     unsupported format 422H

That tells me, that 422H is not supported. Is it a hardware or software
limitation? Does it depend on the X86 graphics hardware?

> 
>     In the good case, I do not find the last line but
> 
>       DEBUG         vaapi
>     gstvaapiimage.c:293:gst_vaapi_image_new_with_image: VA image
>     0x0a000000, format IMC3, size 1920x1080
> 
>     Not sure it it's related, though. It's working fine for both streams
>     *without*
>     "gdkpixbufoverlay" or *with* "clockoverlay".
> 
>     Any idea what could go wrong? Anything else I could debug?
> 
>     TIA,
> 
>     Wolfgang

Thanks,

Wolfgang


More information about the gstreamer-devel mailing list