[Libva] gstvaapidecode: 'play through errors?'

Ben White ben.white at vcatechnology.com
Tue Feb 9 20:09:13 CET 2016


Hi

I have a number of h.264 file which are being RTP broadcast by a VLC
server. We use this for testing RTSP clients.

I am using a GST pipeline as follows:

rtspsrc location=<rtsp....> ! rtph264depay ! vaapiparse_h264 ! vaapidecode
! autovideosink

For some of the files broadcast by the server this works fine, for others I
get the following error:

Got context from element 'vaapidecode0': gst.vaapi.Display=context,
display=(GstVaapiDisplay)NULL;
ERROR: from element
/GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstVaapiDecode:vaapidecode0:
No valid frames decoded before end of stream
Additional debug info:
gstvideodecoder.c(1256): gst_video_decoder_sink_event_default ():
/GstPipeline:pipeline0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstVaapiDecode:vaapidecode0:
no valid frames found

With a software decode (avdec_h264), this source plays fine.

If I play the stream in VLC (using libva) it also spews out some error
codes (below), but it just carries on and seems to sync up in the end and
manages to play the video:

libva info: VA-API version 0.38.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/r600_drv_video.so
libva info: Found init function __vaDriverInit_0_37
libva info: va_openDriver() returns 0
[00007f24f41522c8] avcodec decoder: Using Splitted-Desktop Systems VDPAU
backend for VA-API - 0.7.4 for hardware decoding.
[h264 @ 0x7f24f4158140] decode_slice_header error
[h264 @ 0x7f24f4158140] decode_slice_header error
[h264 @ 0x7f24f4158140] decode_slice_header error
[h264 @ 0x7f24f4158140] decode_slice_header error
[h264 @ 0x7f24f4158140] decode_slice_header error
[h264 @ 0x7f24f4158140] decode_slice_header error
[h264 @ 0x7f24f4158140] decode_slice_header error
[h264 @ 0x7f24f4158140] decode_slice_header error
[h264 @ 0x7f24f4158140] Frame num change from 141 to 0
[h264 @ 0x7f24f4158140] decode_slice_header error
[h264 @ 0x7f24f4158140] no frame!
[00007f24fc0009b8] core input error: ES_OUT_RESET_PCR called

It looks to me like the vaapidecode element gives up at the first error
whereas avdec_h264 and vlc can 'play past' the initial issues until they
get valid data.

Question: Is there a way to instruct vaapidecode to keep trying if it hits
a stream error instead of bailing immediately?

Thanks in advanced
Ben
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libva/attachments/20160209/9fd47f01/attachment.html>


More information about the Libva mailing list