gstreamer-vaapi: vaapipostproc and videomixer

Joe McDonald joe.mcdonald at vecima.com
Mon Apr 28 14:43:07 PDT 2014


Hey all,

I've been looking pretty intently for a few days now into how I can get GPU
hardware acceleration on my Atom E3845 dev board when implementing a
multiple source tiled video output and I'm running into something of a stone
wall here.  

For reference see the following bugs in the gstreamer-vaapi:
Bug 720174 <https://bugzilla.gnome.org/show_bug.cgi?id=720174>  
Bug 720311 <https://bugzilla.gnome.org/show_bug.cgi?id=720311>  

What I want to know is if anyone has gotten around the limitation of
vaapipostproc such that something like videomixer could be tied into the
pipeline in a functional manner.  

A quick example of what I'd like to do (without hw decoding):
gst-launch-1.0 -v \
    videomixer \
        sink_0::xpos=0 sink_0::ypos=0 \ 
        sink_1::xpos=640 sink_1::ypos=0 \ 
        sink_2::xpos=0 sink_2::ypos=360 \    
        sink_3::xpos=640 sink_3::ypos=360 \ name=mixer ! vaapisink \
    filesrc location=$1 ! mpegpsdemux ! mpegvideoparse ! mpeg2dec !
videoscale ! video/x-raw,width=640,height=360 ! mixer. \ 
    filesrc location=$1 ! mpegpsdemux ! mpegvideoparse ! mpeg2dec !
videoscale ! video/x-raw,width=640,height=360 ! mixer. \ 
    filesrc location=$1 ! mpegpsdemux ! mpegvideoparse ! mpeg2dec !
videoscale ! video/x-raw,width=640,height=360 ! mixer. \ 
    filesrc location=$1 ! mpegpsdemux ! mpegvideoparse ! mpeg2dec !
videoscale ! video/x-raw,width=640,height=360 ! mixer.

While this will run, the CPU utilization on this little processor goes
skyhigh.  If I replace the 'mpeg2dec' and 'videoscale' with the appropriate
'vaapidecode' and 'vaapipostproc width=640' I get nothing but nasty green
screen output on the display.  From what I've read this is due to the
misalignment of the output format from vaapipostproc
(video/x-raw(memory:VASurface)) and what videomixer expects(pure
video/x-raw). 

Some additional info.  In the 0.5.8 version of gstreamer-vaapi there is some
source code referencing the vaapidownload functions that used to exist in
previous releases (compatible with gstreamer-0.10) that would allow for the
conversion from a VASurface to something usable generally by gstreamer.  I'm
not sure if there's any way that I can implement this in an application, but
if anyone can point me in the right direction it'd be greatly appreciated.  

Thanks!
- Joe



--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/gstreamer-vaapi-vaapipostproc-and-videomixer-tp4666641.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list