omx - in error state at end of video (before EOS)

Enrique Ocaña González eocanha at igalia.com
Fri Dec 9 15:35:03 UTC 2016


El viernes, 9 de diciembre de 2016 13:41:18 (CET) Stuart Axon escribió:

> I'm pretty sure I'm using the one from gst-plugins-bad (I'm using gstreamer
> master, last built about 3 days ago). But not 100% sure, is there a way to
> tell ?

If you're using master, then you're using gst-plugins-bad almost for sure. 
Anyway, it doesn't really mind, as none of the two versions seem to listen to 
the FLUSH_START event.

> So maybe I could mitigate this by manually calling drain() if in the error
> state or hook into the FLUSH_START?

My suggestion would be to focus on FLUSH_START instead of reacting in the 
error state. In my experience, when "Insufficient resources" happens, it's too 
late to revert to a working state again.

So, what I would do would be to touch gst_glimage_sink_event()[1], adding a 
case for FLUSH_START. There you could do the same as the DRAIN query does[2] 
(copy-paste or refactor into a common function called from both places). Make 
sure that you don't return inside the case, so the code flow continues and 
ends up calling to the ancestor class method to process the event[3]. That 
last part is important for the right operation of the element.

> I haven't seen the error in dispmanx-gst-play, however, my player is a bit
> more complex - I update the play state (seek, or try and change file) in
> gobject timer, from data I get on the network. S++

I haven't looked in deep how dispmanx-gst-play works, so I can't give an 
opinion about why things work there. Maybe a different sink is used (one which 
doesn't hold EGL buffers for itself on flush), I don't know.

Another think I forgot: check that your Raspberry has enough graphics memory 
configured. Assuming you're using raspbian: sudo raspi-config, advanced 
options, memory split. Use some higher value such as 128.

In any case, I hope the suggestions help you to fix the issue. :-)

Cheers.


[1] https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/ext/gl/
gstglimagesink.c?id=1.10.2#n1023

[2] https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/ext/gl/
gstglimagesink.c?id=1.10.2#n1118

[3] https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/tree/ext/gl/
gstglimagesink.c?id=1.10.2#n1069



-- 
Enrique Ocaña González


More information about the gstreamer-devel mailing list