Help with gstreamer-vaapi + rockchip vpu vaapi driver

Ezequiel Garcia ezequiel at vanguardiasur.com.ar
Fri Oct 12 19:58:52 UTC 2018


Victor,

Found some time to pick up my investigation on vaapi on v4l, using
bootlin's vaapi backend.
I am using gst-build to get latest sources, and set the env variables
as you suggested.
The vaapi backend is properly detected:

# gst-inspect-1.0 vaapi
Plugin Details:
  Name                     vaapi
  Description              VA-API based elements
  Filename
/root/gst-build/build/subprojects/gstreamer-vaapi/gst/vaapi/libgstvaapi.so
  Version                  1.15.0.1
  License                  LGPL
  Source module            gstreamer-vaapi
  Binary package           gstreamer-vaapi
  Origin URL
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer

  vaapimpeg2dec: VA-API MPEG2 decoder
  vaapipostproc: VA-API video postprocessing
  vaapidecodebin: VA-API Decode Bin
  vaapisink: VA-API sink

  4 features:
  +-- 4 elements

The pipeline I  am trying now is (see full log below):

GST_DEBUG=vaapi*:4 gst-launch-1.0 filesrc
location=~/big_buck_bunny_480p_MPEG2_MP2_25fps_1800K.MPG ! mpegpsdemux
! vaapimpeg2dec ! video/x-raw,width=854,height=480 ! kmssink

Now, my question is: is it possible to connect a vaapi decoder to a
non-vaapi sink? Judging from this traces:

0:00:01.230428590 32630   0x555350 INFO             vaapidecode
gstvaapipluginbase.c:959:gst_vaapi_plugin_base_decide_allocation:<vaapidecode_mpeg2-0>
ignoring non-VAAPI pool: <kmsbufferpool1>
0:00:01.270321791 32630   0x555350 ERROR                  vaapi
gstvaapibufferproxy.c:228:gst_vaapi_buffer_proxy_new_from_object:
failed to acquire the underlying VA buffer handle
0:00:01.270796060 32630   0x555350 ERROR                default
gstvaapisurface_drm.c:54:gst_vaapi_surface_get_drm_buf_handle: failed
to allocate export buffer proxy

I think not. So, I need to add proper support for a vaapisink DRM
display, right?

Full log:

0:00:00.523691738 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: VA-API version 1.2.0
0:00:00.523944582 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: va_getDriverName() returns -1
0:00:00.524014085 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: User requested driver 'v4l2_request'
0:00:00.524069254 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: Trying to open
/usr/local/lib/dri/v4l2_request_drv_video.so
0:00:00.525787325 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: Found init function
__vaDriverInit_1_2
0:00:00.526316514 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: va_openDriver() returns 0
0:00:00.526417727 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:121:vaapi_initialize: VA-API version 1.2
0:00:00.529891496 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: VA-API version 1.2.0
0:00:00.530034794 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: va_getDriverName() returns -1
0:00:00.530087879 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: User requested driver 'v4l2_request'
0:00:00.530138798 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: Trying to open
/usr/local/lib/dri/v4l2_request_drv_video.so
0:00:00.530358432 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: Found init function
__vaDriverInit_1_2
0:00:00.530611109 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: va_openDriver() returns 0
0:00:00.530683362 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:121:vaapi_initialize: VA-API version 1.2
0:00:00.530875412 32630   0x5444a0 INFO            vaapidisplay
gstvaapidisplay.c:903:gst_vaapi_display_create:<vaapidisplaydrm1> new
display addr=0x551120
Setting pipeline to PAUSED ...
0:00:01.152873739 32630   0x5444a0 INFO             vaapidecode
gstvaapipluginbase.c:1226:gst_vaapi_plugin_base_create_gl_context:<vaapidecode_mpeg2-0>
creating a new GstGL context
libEGL warning: DRI3: xcb_connect failed
libEGL warning: DRI2: xcb_connect failed
libEGL warning: DRI2: xcb_connect failed
0:00:01.175417343 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: VA-API version 1.2.0
0:00:01.175594476 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: va_getDriverName() returns -1
0:00:01.175656395 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: User requested driver 'v4l2_request'
0:00:01.175715814 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: Trying to open
/usr/local/lib/dri/v4l2_request_drv_video.so
0:00:01.175929781 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: Found init function
__vaDriverInit_1_2
0:00:01.176429344 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: va_openDriver() returns 0
0:00:01.176532056 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:121:vaapi_initialize: VA-API version 1.2
0:00:01.176969866 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: VA-API version 1.2.0
0:00:01.177134540 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: va_getDriverName() returns -1
0:00:01.177198001 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: User requested driver 'v4l2_request'
0:00:01.177285213 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: Trying to open
/usr/local/lib/dri/v4l2_request_drv_video.so
0:00:01.177597059 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: Found init function
__vaDriverInit_1_2
0:00:01.177905780 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:94:gst_vaapi_log: va_openDriver() returns 0
0:00:01.177988617 32630   0x5444a0 INFO                   vaapi
gstvaapiutils.c:121:vaapi_initialize: VA-API version 1.2
0:00:01.178058870 32630   0x5444a0 INFO            vaapidisplay
gstvaapidisplay.c:903:gst_vaapi_display_create:<vaapidisplaydrm2> new
display addr=0x551330
0:00:01.178185042 32630   0x5444a0 INFO             vaapidecode
gstvaapipluginbase.c:55:plugin_set_display:<vaapidecode_mpeg2-0> set
display <vaapidisplaydrm2>
Pipeline is PREROLLING ...
Got context from element 'vaapidecode_mpeg2-0':
gst.gl.GLDisplay=context,
gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayEGL\)\ gldisplayegl0";
Got context from element 'vaapidecode_mpeg2-0':
gst.vaapi.Display=context,
gst.vaapi.Display=(GstVaapiDisplay)"\(GstVaapiDisplayDRM\)\
vaapidisplaydrm2";
0:00:01.187767982 32630   0x555350 INFO             vaapidecode
gstvaapidecode.c:208:gst_vaapidecode_update_sink_caps:<vaapidecode_mpeg2-0>
new sink caps = video/mpeg, mpegversion=(int)2,
systemstream=(boolean)false, parsed=(boolean)false
0:00:01.192352048 32630   0x555350 INFO             vaapidecode
gstvaapidecode.c:208:gst_vaapidecode_update_sink_caps:<vaapidecode_mpeg2-0>
new sink caps = video/mpeg, mpegversion=(int)2,
systemstream=(boolean)false, parsed=(boolean)false,
framerate=(fraction)25/1
0:00:01.192665477 32630   0x555350 INFO             vaapidecode
gstvaapidecode.c:208:gst_vaapidecode_update_sink_caps:<vaapidecode_mpeg2-0>
new sink caps = video/mpeg, mpegversion=(int)2,
systemstream=(boolean)false, parsed=(boolean)false,
framerate=(fraction)25/1, width=(int)854, height=(int)480
0:00:01.225596055 32630   0x555350 WARN             vaapidecode
gstvaapidecode.c:245:gst_vaapidecode_ensure_allowed_srcpad_caps:<vaapidecode_mpeg2-0>
failed to create raw sink caps
0:00:01.226870567 32630   0x555350 INFO             vaapidecode
gstvaapidecode.c:373:gst_vaapidecode_update_src_caps:<vaapidecode_mpeg2-0>
new src caps = video/x-raw, format=(string)NV12, width=(int)854,
height=(int)480, 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, chroma-site=(string)jpeg,
colorimetry=(string)bt601, framerate=(fraction)25/1
Redistribute latency...
0:00:01.230428590 32630   0x555350 INFO             vaapidecode
gstvaapipluginbase.c:959:gst_vaapi_plugin_base_decide_allocation:<vaapidecode_mpeg2-0>
ignoring non-VAAPI pool: <kmsbufferpool1>
0:00:01.270321791 32630   0x555350 ERROR                  vaapi
gstvaapibufferproxy.c:228:gst_vaapi_buffer_proxy_new_from_object:
failed to acquire the underlying VA buffer handle
0:00:01.270796060 32630   0x555350 ERROR                default
gstvaapisurface_drm.c:54:gst_vaapi_surface_get_drm_buf_handle: failed
to allocate export buffer proxy

** (gst-launch-1.0:32630): CRITICAL **: gst_vaapi_mini_object_unref:
assertion 'object->ref_count > 0' failed
0:00:01.271160284 32630   0x555350 ERROR       vaapivideomemory
gstvaapivideomemory.c:1047:gst_vaapi_dmabuf_memory_new: failed to
export VA surface to DMABUF
0:00:01.271354542 32630   0x555350 INFO             vaapidecode
gstvaapipluginbase.c:524:create_dmabuf_srcpad_allocator:<vaapidecode_mpeg2-0>
dmabuf allocator generates unmappable buffers
0:00:01.280201326 32630   0x555350 ERROR       vaapivideomemory
gstvaapivideomemory.c:278:map_vaapi_memory: failed to make image
current
0:00:01.280398710 32630   0x555350 ERROR                default
video-frame.c:162:gst_video_frame_map_id: failed to map video frame
plane 0

(gst-launch-1.0:32630): GStreamer-CRITICAL **:
gst_buffer_resize_range: assertion 'bufmax >= bufoffs + offset + size'
failed
0:00:01.280846937 32630   0x555350 INFO             vaapidecode
gstvaapidecode.c:673:gst_vaapidecode_push_decoded_frame:<vaapidecode_mpeg2-0>
downstream element rejected the frame (error [-5])
ERROR: from element
/GstPipeline:pipeline0/GstMpegPSDemux:mpegpsdemux0: Internal data
stream error.
Additional debug info:
../subprojects/gst-plugins-bad/gst/mpegdemux/gstmpegdemux.c(2944):
gst_ps_demux_loop ():
/GstPipeline:pipeline0/GstMpegPSDemux:mpegpsdemux0:
streaming stopped, reason error (-5)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
0:00:01.285980192 32630   0x5444a0 WARN                   vaapi
gstvaapisurface.c:90:gst_vaapi_surface_destroy: failed to destroy
surface 0x4000003
0:00:01.286143449 32630   0x5444a0 WARN                   vaapi
gstvaapisurface.c:90:gst_vaapi_surface_destroy: failed to destroy
surface 0x4000004
0:00:01.286205451 32630   0x5444a0 WARN                   vaapi
gstvaapisurface.c:90:gst_vaapi_surface_destroy: failed to destroy
surface 0x4000005
0:00:01.286276829 32630   0x5444a0 WARN                   vaapi
gstvaapisurface.c:90:gst_vaapi_surface_destroy: failed to destroy
surface 0x4000000
0:00:01.286326248 32630   0x5444a0 WARN                   vaapi
gstvaapisurface.c:90:gst_vaapi_surface_destroy: failed to destroy
surface 0x4000001
0:00:01.286369833 32630   0x5444a0 WARN                   vaapi
gstvaapisurface.c:90:gst_vaapi_surface_destroy: failed to destroy
surface 0x4000002
Freeing pipeline ...


-- 
Ezequiel GarcĂ­a, VanguardiaSur
www.vanguardiasur.com.ar


More information about the gstreamer-devel mailing list