Gst-vaapi issues

Arnaud Loonstra arnaud at sphaero.org
Mon Nov 3 02:56:25 PST 2014


Hi all,

I'm trying out some vaapi pipelines:

My machine has:
$ vainfo
libva info: VA-API version 0.36.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_36
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.36 (libva 1.4.0)
vainfo: Driver version: Intel i965 driver for Intel(R) GM45 Express 
Chipset - 1.4.0
vainfo: Supported profile and entrypoints
       VAProfileMPEG2Simple            :	VAEntrypointVLD
       VAProfileMPEG2Main              :	VAEntrypointVLD

So I'm trying a mpeg2 pipeline:
$ gst-launch-1.0 -v videotestsrc !  avenc_mpeg2video ! \
  vaapidecode ! vaapisink

This works nice...

However it should be possible to use vaapi encoding. So I thought:
$ gst-launch-1.0 -v videotestsrc ! vaapiencode_mpeg2 ! \
  vaapidecode ! vaapisink

Got context from element 'vaapidecode0': gst.vaapi.Display=context, 
display=(GstVaapiDisplay)NULL;
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = 
"video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)320\,\ 
height\=\(int\)240\,\ framerate\=\(fraction\)30/1\,\ 
interlace-mode\=\(string\)progressive\,\ 
pixel-aspect-ratio\=\(fraction\)1/1"
0:00:00.294025646 29680      0x1e4a140 ERROR                  vaapi 
gstvaapiencoder.c:857:gst_vaapi_encoder_set_rate_control: unsupported 
rate control mode (1)
0:00:00.294116930 29680      0x1e4a140 ERROR                  vaapi 
gstvaapiencoder.c:857:gst_vaapi_encoder_set_rate_control: unsupported 
rate control mode (1)
0:00:00.295280571 29680      0x1e4a140 ERROR                  vaapi 
gstvaapiencoder.c:857:gst_vaapi_encoder_set_rate_control: unsupported 
rate control mode (1)
0:00:00.295349994 29680      0x1e4a140 ERROR                  vaapi 
gstvaapiencoder.c:857:gst_vaapi_encoder_set_rate_control: unsupported 
rate control mode (1)
ERROR: from element 
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data flow 
error.
Additional debug info:
gstbasesrc.c(2932): gst_base_src_loop (): 
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
streaming task paused, reason not-negotiated (-4)
0:00:00.295463068 29680      0x1e4a140 ERROR                  vaapi 
gstvaapiencoder.c:857:gst_vaapi_encoder_set_rate_control: unsupported 
rate control mode (1)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
0:00:00.295545203 29680      0x1e4a140 ERROR                  vaapi 
gstvaapiencoder.c:857:gst_vaapi_encoder_set_rate_control: unsupported 
rate control mode (1)
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = 
"NULL"
Freeing pipeline ...


I cannot determine if my hardware supports it but I found the following 
pipeline demonstrated by intel engineers
$ gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=1800 ! \
  video/x-raw,format= I420,width=640,height=480 ! vaapipostproc ! \
  queue ! vaapiencode_mpeg2 ! mpegtsmux ! filesink location=test2.mpg

However this doesn't even want to link:
GST_PIPELINE ./grammar.y:616:gst_parse_perform_link: could not link 
v4l2src0 to vaapipostproc0

I tried setting the rate-control property of vaapiencodempeg2 to no avail...

Could this just be the fact I don't have support for hardware encoding 
or is something else wrong?

Rg,

Arnaud


More information about the gstreamer-devel mailing list