0

Okey guys here is my problem for the past few weeks Iam trying to use vaapi.I have intel i5 processor (Wayland) which supports vaapi but for some strange reason I can't make it working also I run 14.10 64-bit version.

List of installed packages dpkg --get-selections | grep va:

gstreamer1.0-vaapi:amd64            install
i965-va-driver:amd64                install
i965-va-driver-dbg:amd64            install
libva-dev:amd64                     install
libva-drm1:amd64                    install
libva-egl1:amd64                    install
libva-glx1:amd64                    install
libva-intel-vaapi-driver            install
libva-tpi1:amd64                    install
libva-wayland1:amd64                install
libva-x11-1:amd64                   install
libva1:amd64                        install
libvdpau-va-gl1:amd64               install
libgstreamer-vaapi1.0-0:amd64       install
libgstreamer-vaapi1.0-dev           install
libavahi-client3:amd64              install
libavahi-client3:i386               install
libavahi-common-data:amd64          install
libavahi-common-data:i386           install
libavahi-common3:amd64              install
libavahi-common3:i386               install
libavahi-core7:amd64                install
libavahi-glib1:amd64                install
libavahi-gobject0:amd64             install

Output of vainfo:

libva info: VA-API version 0.36.0
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_35
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.36 (libva 1.4.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Haswell Desktop - 1.3.2
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD

with gstreamer simple pipeline as this one:

gst-launch-1.0 playbin video-sink=vaapisink uri=rtsp://ip_of_my_camera/

I get this as output:

New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
Got context from element 'vaapidecode0': gst.vaapi.Display=context, display=(GstVaapiDisplay)NULL;
0:00:03.405005415 27214 0x7f2560023370 ERROR                  vaapi ../../../../gst-libs/gst/vaapi/gstvaapidecoder_h264.c:1351:ensure_context: unsupported profile_idc 66
0:00:03.405029986 27214 0x7f2560023370 ERROR            vaapidecode ../../../gst/vaapi/gstvaapidecode.c:284:gst_vaapidecode_decode_frame: decode error 9
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstRTSPSrc:source/GstUDPSrc:udpsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2943): gst_base_src_loop (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstRTSPSrc:source/GstUDPSrc:udpsrc0:
streaming task paused, reason not-supported (-6)
Execution ended after 0:00:02.567426400
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

I tried playing simple mp4 after that:

gst-launch-1.0 playbin video-sink=vaapisink uri=file:///home/user/test.mp4

I get this as output:

Setting pipeline to PAUSED ...
libva info: VA-API version 0.36.0
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_35
libva info: va_openDriver() returns 0
Pipeline is PREROLLING ...
Got context from element 'vaapidecode0': gst.vaapi.Display=context, display=(GstVaapiDisplay)NULL;
0:00:00.082428099 27226 0x7fb268008c00 ERROR                  vaapi ../../../../gst-libs/gst/vaapi/gstvaapidecoder_h264.c:1351:ensure_context: unsupported profile_idc 66
0:00:00.082457191 27226 0x7fb268008c00 ERROR            vaapidecode ../../../gst/vaapi/gstvaapidecode.c:284:gst_vaapidecode_decode_frame: decode error 9
ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstQTDemux:qtdemux0: GStreamer encountered a general stream error.
Additional debug info:
qtdemux.c(4432): gst_qtdemux_loop (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstQTDemux:qtdemux0:
streaming stopped, reason not-supported
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
0

Please tell us more about your source ?

Try to dump to file, and load it using different tools like vlc , interesting info may appear

You can adapt :

location=/tmp/tmp.ts
uri="file://${location}"    
gst-launch-1.0 udpsrc port=${port} ! filesink location=$location

gst-launch-1.0 playbin uri=$uri 
#| Got EOS from element "playbin0".

gst-launch-1.0 playbin  --gst-debug-level=3  uri=$uri audio-sink=fakesink

#| 0:00:00.062872448  1532 0xb5002060 ERROR                  vaapi gstvaapidecoder_h264.c:1351:ensure_context: unsupported profile_idc 66
#| 0:00:00.062892542  1532 0xb5002060 ERROR            vaapidecode gstvaapidecode.c:284:gst_vaapidecode_decode_frame: decode error 9


gst-launch-1.0 playbin  --gst-debug-level=3  uri=$uri 
vlc $location
#| [0x7f25e0c826d8] ts demux error: MPEG-4 descriptor not found

mediainfo $location | grep Codec
#| Format/Info                              : Advanced Video Codec
#| Codec ID                                 : 27
| improve this answer | |
0

I solved this by choosing the correct version of gstreamer1.0-vaapi. You may get the file at https://www.freedesktop.org/software/vaapi/releases/gstreamer-vaapi/.

After downloading and unpacking one of those files, you can install it by running:

./configure
make
make install

When is not the correct version (error still occurs), use make uninstall to uninstall it and continue try the next version.

(You must also have fully uninstalled the version you had installed with apt/apt-get.)

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.