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