multiple vaapi pipelines

rataj28 rataj28 at gmail.com
Sun Jul 16 11:41:35 UTC 2017


Hello,

I am writing and application which creates up to 12 encoding pipelines
using vaapih264enc. It is working fine on Intel with i965 driver but it is
very unstable on AMD using mesa gallium radeonsi driver. On radeonsi I can
run up to 16 following pipelines as a separate gst-launch:

gst-launch-1.0 videotestsrc ! video/x-raw,width=1280,height=1024 !
vaapih264enc ! testsink

I am not sure if it is relevant and gst-launch can be even used like this,
but when I run it as a single gst-launch:

gst-launch-1.0  videotestsrc ! video/x-raw,width=1280,height=1024 !
vaapih264enc ! testsink \
                      videotestsrc ! video/x-raw,width=1280,height=1024 !
vaapih264enc ! testsink \
                      videotestsrc ! video/x-raw,width=1280,height=1024 !
vaapih264enc ! testsink \
                      videotestsrc ! video/x-raw,width=1280,height=1024 !
vaapih264enc ! testsink

I am able to run up to 6 pipelines with very unstable operation which is
pretty much the same as I am getting from the real app. I am using latest
mesa from git.

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'vaapiencodeh264-7': gst.vaapi.Display=context,
gst.vaapi.Display=(GstVaapiDisplay)"\(GstVaapiDisplayDRM\)\
vaapidisplaydrm1";
0:00:01.726719568  5523 0x55b8d1a88b70 ERROR       vaapivideomemory
gstvaapivideomemory.c:736:gst_video_info_update_from_surface: Cannot create
a VA derived image from surface 0x7fa638002800
0:00:01.728399262  5523 0x55b8d1a88ad0 ERROR       vaapivideomemory
gstvaapivideomemory.c:736:gst_video_info_update_from_surface: Cannot create
a VA derived image from surface 0x7fa634002940
0:00:01.728645791  5523 0x55b8d1a88a30 ERROR       vaapivideomemory
gstvaapivideomemory.c:736:gst_video_info_update_from_surface: Cannot create
a VA derived image from surface 0x7fa640001c00
0:00:01.730375640  5523 0x55b8d1a8b8f0 ERROR       vaapivideomemory
gstvaapivideomemory.c:736:gst_video_info_update_from_surface: Cannot create
a VA derived image from surface 0x7fa63c002680
0:00:01.731129406  5523 0x55b8d1a8b8a0 ERROR       vaapivideomemory
gstvaapivideomemory.c:736:gst_video_info_update_from_surface: Cannot create
a VA derived image from surface 0x7fa624001d40
0:00:01.733516403  5523 0x55b8d1a88b20 ERROR       vaapivideomemory
gstvaapivideomemory.c:736:gst_video_info_update_from_surface: Cannot create
a VA derived image from surface 0x7fa61c001e80
0:00:01.740319994  5523 0x55b8d1a8b800 ERROR       vaapivideomemory
gstvaapivideomemory.c:736:gst_video_info_update_from_surface: Cannot create
a VA derived image from surface 0x7fa62c002a80
0:00:01.743724613  5523 0x55b8d1a8b850 ERROR       vaapivideomemory
gstvaapivideomemory.c:736:gst_video_info_update_from_surface: Cannot create
a VA derived image from surface 0x7fa628001400
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Caught SIGSEGV
#0  0x00007fa66296a63d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007fa6632a5c16 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fa6632a5fa2 in g_main_loop_run ()
#3  0x00007fa663a179c1 in gst_bus_poll (bus=0x55b8d18c9a30,
#4  0x000055b8cfb76bb0 in event_loop (pipeline=0x55b8d1ab21e0, blocking=1,
#5  0x000055b8cfb75b7e in main (argc=<optimized out>, argv=<optimized out>)

Vainfo output:

libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'radeonsi'
libva info: Trying to open
/usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_0_40
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.40 (libva )
vainfo: Driver version: mesa gallium vaapi
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :    VAEntrypointVLD
      VAProfileMPEG2Main              :    VAEntrypointVLD
      VAProfileVC1Simple              :    VAEntrypointVLD
      VAProfileVC1Main                :    VAEntrypointVLD
      VAProfileVC1Advanced            :    VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:    VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:    VAEntrypointEncSlice
      VAProfileH264Main               :    VAEntrypointVLD
      VAProfileH264Main               :    VAEntrypointEncSlice
      VAProfileH264High               :    VAEntrypointVLD
      VAProfileH264High               :    VAEntrypointEncSlice
      VAProfileNone                   :    VAEntrypointVideoProc

What is the difference between running it as a single or separate processes
in relation to vaapi? Do anyone have any experience with vaapi on radeonsi?

Thanks
Tomas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170716/6152c6ad/attachment.html>


More information about the gstreamer-devel mailing list