Issue with gstreamer-vaapi

William Katsak wkatsak at gmail.com
Tue Jan 26 12:51:37 PST 2016


Hello,

I'm seeing a weird issue with gstreamer-vaapi, and wanted to ask if 
anyone else has seen it (let me know if I should post to the libva list 
instead).

I have some benchmark pipelines that I have been running for quite a 
while on Ubuntu 15.04 (Gstreamer 1.4ish) with no issues. One pipeline 
uses vaapidecode/vaapiencode_h264 to do a transcode on the original "Big 
Buck Bunny" movie (the first release, 1080p, 24fps version). On 15.04 
and Gstreamer 1.4, this pipeline worked fine:

gst-launch-1.0 filesrc location=/ramdisk/bbb_original_1080p_24fps.mov ! 
qtdemux ! vaapidecode ! vaapiencode_h264 ! video/x-h264,profile=main ! 
h264parse ! qtmux ! filesink 
location=/ramdisk/a28ea06e-c464-11e5-9085-989096d5f038.out

However, on a newly loaded 15.10 install (same hardware), I get an 
error, the main message being:

ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux0: 
GStreamer encountered a general stream error.

Looking through the output of gst-launch -v, I see that the resolution 
changes from 1920x1080 to 1920x1088 at some point in the negotiation. 
Thinking this is weird, I run avprobe on the file, and notice this:

width=1920
height=1080
coded_width=1920
coded_height=1088

Thinking that there is some weird resolution mismatch here, I add a 
vaapipostproc width=1920 height=1080 to the pipeline, and it runs fine.

What could be going on here? Why would it work before, and not now? Is 
this an issue with the movie itself, or a regression somewhere in the 
software stack?

Any advice would be appreciated.

Thanks in advance,
-Bill Katsak


FULL OUTPUT OF gst-launch -v BELOW
-------------------------------------------------------------------------
libva info: VA-API version 0.38.1
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_38
libva info: va_openDriver() returns 0
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'vaapidecode0': gst.vaapi.Display=context, 
display=(GstVaapiDisplay)NULL;
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = 
"video/x-h264\,\ stream-format\=\(string\)avc\,\ 
alignment\=\(string\)au\,\ level\=\(string\)4.1\,\ 
profile\=\(string\)main\,\ 
codec_data\=\(buffer\)014d4029ffe10016274d4029a9180f0044fcb8035010101b6c2b5ef7c04001000428de09c8\,\ 
max-input-size\=\(int\)511608\,\ width\=\(int\)1920\,\ 
height\=\(int\)1080\,\ framerate\=\(fraction\)625/26\,\ 
pixel-aspect-ratio\=\(fraction\)1/1\,\ parsed\=\(boolean\)true"
/GstPipeline:pipeline0/GstVaapiDecode:vaapidecode0.GstPad:sink: caps = 
"video/x-h264\,\ stream-format\=\(string\)avc\,\ 
alignment\=\(string\)au\,\ level\=\(string\)4.1\,\ 
profile\=\(string\)main\,\ 
codec_data\=\(buffer\)014d4029ffe10016274d4029a9180f0044fcb8035010101b6c2b5ef7c04001000428de09c8\,\ 
max-input-size\=\(int\)511608\,\ width\=\(int\)1920\,\ 
height\=\(int\)1080\,\ framerate\=\(fraction\)625/26\,\ 
pixel-aspect-ratio\=\(fraction\)1/1\,\ parsed\=\(boolean\)true"
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = 
"video/x-h264\,\ stream-format\=\(string\)avc\,\ 
alignment\=\(string\)au\,\ level\=\(string\)4.1\,\ 
profile\=\(string\)main\,\ 
codec_data\=\(buffer\)014d4029ffe10016274d4029a9180f0044fcb8035010101b6c2b5ef7c04001000428de09c8\,\ 
max-input-size\=\(int\)511608\,\ width\=\(int\)1920\,\ 
height\=\(int\)1080\,\ framerate\=\(fraction\)625/26\,\ 
pixel-aspect-ratio\=\(fraction\)1/1"
Redistribute latency...
/GstPipeline:pipeline0/GstVaapiDecode:vaapidecode0.GstPad:src: caps = 
"video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)1920\,\ 
height\=\(int\)1080\,\ interlace-mode\=\(string\)progressive\,\ 
pixel-aspect-ratio\=\(fraction\)1/1\,\ chroma-site\=\(string\)mpeg2\,\ 
colorimetry\=\(string\)bt709\,\ framerate\=\(fraction\)625/26"
/GstPipeline:pipeline0/GstVaapiEncodeH264:vaapiencodeh264-0.GstPad:sink: 
caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)1920\,\ 
height\=\(int\)1080\,\ interlace-mode\=\(string\)progressive\,\ 
pixel-aspect-ratio\=\(fraction\)1/1\,\ chroma-site\=\(string\)mpeg2\,\ 
colorimetry\=\(string\)bt709\,\ framerate\=\(fraction\)625/26"
Redistribute latency...
/GstPipeline:pipeline0/GstVaapiDecode:vaapidecode0.GstPad:src: caps = 
"video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)1920\,\ 
height\=\(int\)1088\,\ interlace-mode\=\(string\)progressive\,\ 
pixel-aspect-ratio\=\(fraction\)1/1\,\ chroma-site\=\(string\)mpeg2\,\ 
colorimetry\=\(string\)bt709\,\ framerate\=\(fraction\)625/26"
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux0: 
GStreamer encountered a general stream error.
Additional debug info:
qtdemux.c(5306): gst_qtdemux_loop (): 
/GstPipeline:pipeline0/GstQTDemux:qtdemux0:
streaming stopped, reason not-negotiated
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
/GstPipeline:pipeline0/GstVaapiEncodeH264:vaapiencodeh264-0.GstPad:sink: 
caps = "NULL"
/GstPipeline:pipeline0/GstVaapiDecode:vaapidecode0.GstPad:src: caps = "NULL"
/GstPipeline:pipeline0/GstVaapiDecode:vaapidecode0.GstPad:sink: caps = 
"NULL"
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = "NULL"
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = "NULL"
/GstPipeline:pipeline0/GstQTDemux:qtdemux0.GstPad:video_0: caps = "NULL"
Freeing pipeline ..


More information about the gstreamer-devel mailing list