Fail to vaapidecode mpegts streams starting between keyframes
Submitted by Tanner
Link to original bug (#764103)
Description
Hi,
vaapidecode element has been unable to decode previously chunked ts files from filesrc and udpsrc. It appears the vaapidecode element doesn't deal with the garbage before a keyframe and bails.
Using the following pipeline I am unable to play a udpsrc mpegts stream and receive no valid frames before end of stream from the vaapidecode element.
gst-launch-1.0 -v udpsrc uri=(makeoneupmulticast) ! tsparse ! video/x-h264 ! h264parse ! vaapidecode ! vaapisink
However, if I modify the pipeline to use avdec_h264 and x264enc to feed into the vaapidecode element, then it is able to play the stream.
gst-launch-1.0 -v udpsrc uri=(makeoneupmulticast) ! tsparse ! video/x-h264 ! h264parse ! avdec_h264 ! x264enc ! vaapidecode ! vaapisink
To test the above, produce a test ts file and confirm you can play it with vaapidecode ! vaapisink. Next, use a multifilesink to chunk it into several pieces. Play the first chunk using a single filesrc (it should play). But then try playing one of the middle chunks. This should reproduce the error. If you chunk on keyframes, then you are less likely to experience the error so I suggest chunking on buffersize.
(I am unable to add attachments due to company policy)
Version: 1.7.91