Playback Stall on Resolution Change

Samuel Hurst samuelh at rd.bbc.co.uk
Wed Jun 8 16:13:53 UTC 2016


Hi All,


I've got a DASH pipeline on a Raspberry Pi using git latest GStreamer,
built with buildroot. I'm currently trying to track down a very awkward
issue to do with representation switching and I'd like some advice.

I'm seeing a playback stall when switching between two specific
representations, and it only shows on a Raspberry Pi. Any other device
seems to be able to change representations correctly (tested with an
amd64 Ubuntu 16.04 box and a MIPS STB platform, all built from the same
source), so I'm assuming it's something EGL/OpenMAX related that's at fault.

For the set of six representations that we have, most representation
changes will change both the resolution of the media and one or more of
the framerate, H.264 level and profile. However, switching between
representations 3 and 4 only change the resolution and not anything
else, and this seems to be the cause of the playback pause.

When the playback has stalled on screen, the logs still seem to indicate
that the playback is continuing fine, I'm seeing h264parse logging that
it's receiving data, omxh264dec still seems to be decoding it, and the
gl elements appear to still be doing things. But the picture is frozen
on screen. There are no errors or warnings printed in the logs.

The only difference between a representation change that doesn't work
and one that does is that the failure case never seems to hit
gst_omx_video_dec_set_format() with the new resolution. Presumably this
function needs to be called in order to update the chain with the new
resolution of the video, but what is supposed to do this? My current
(simplified) pipeline is below:

dashdemux ! video/quicktime ! queue ! qtdemux ! h264parse ! omxh264dec !
queue ! glupload ! glcolorconvert ! glcolorscale !
"video/x-raw(memory:GLMemory),width=1280,height=720" ! queue ! glimagesink

I would love to be able to share the stream that causes this bug to
arise, but unfortunately it only shows itself in a live stream that I
cannot share externally. So please forgive the length of this email, but
I'm trying to fit in as much detail as possible because of the above.

If anyone could give me any pointers on exactly how the change in
resolution is supposed to flow down the pipeline, that would be great.


Best Regards,
Sam

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20160608/1cdaf5c5/attachment.sig>


More information about the gstreamer-devel mailing list