[Bug 776091] New: omx - in error state at end of video (before EOS)
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Wed Dec 14 12:16:16 UTC 2016
https://bugzilla.gnome.org/show_bug.cgi?id=776091
Bug ID: 776091
Summary: omx - in error state at end of video (before EOS)
Classification: Platform
Product: GStreamer
Version: git master
OS: Linux
Status: NEW
Severity: normal
Priority: Normal
Component: gst-plugins-bad
Assignee: gstreamer-bugs at lists.freedesktop.org
Reporter: stu.axon at gmail.com
QA Contact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Created attachment 341953
--> https://bugzilla.gnome.org/attachment.cgi?id=341953&action=edit
Deallocate texture in FLUSH_START
I've been playing a video, just before it gets to the end it freezes and I get
the output below.
For now I haven't managed to make some minimal code to reproduce it yet, so
just wondering it is known - similar to the OMX bug mentioned earier ?
https://lists.freedesktop.org/archives/gstreamer-devel/2016-December/061931.html
0:01:32.395974718 7472 0x2364200 ERROR omx
gstomx.c:1955:gst_omx_port_wait_buffers_released_unlocked:<omxh264dec-omxh264dec0>
Timeout waiting for egl_render port 221 to release all buffers
0:01:32.396736066 7472 0x2364200 WARN omxvideodec
gstomxvideodec.c:1620:gst_omx_video_dec_loop:<omxh264dec-omxh264dec0> error:
Unable to reconfigure output port
0:01:32.398866620 7472 0x224f480 ERROR omx
gstomx.c:836:gst_omx_component_set_state:<omxh264dec-omxh264dec0> Last
operation returned an error. Setting last_error manually.
0:01:32.398946516 7472 0x224f480 ERROR omx
gstomx.c:845:gst_omx_component_set_state:<omxh264dec-omxh264dec0> Error setting
egl_render state from 4 to 3: Insufficient resources (0x80001000)
0:01:32.399041984 7472 0x224f480 ERROR omx
gstomx.c:872:gst_omx_component_get_state:<omxh264dec-omxh264dec0> Component
egl_render in error state: Insufficient resources (0x80001000)
0:01:32.399663280 7472 0x224f480 ERROR omx
gstomx.c:1467:gst_omx_port_set_flushing:<omxh264dec-omxh264dec0> Component
egl_render is in error state: Insufficient resources (0x80001000)
0:01:32.400010725 7472 0x224f480 ERROR omx
gstomx.c:1467:gst_omx_port_set_flushing:<omxh264dec-omxh264dec0> Component
egl_render is in error state: Insufficient resources (0x80001000)
0:01:32.400604053 7472 0x224f480 WARN omxvideodec
gstomxvideodec.c:2146:gst_omx_video_dec_flush:<omxh264dec-omxh264dec0> Failed
to populate output port: Incorrect state operation (0x80001018)
0:01:32.402515808 7472 0x2364200 ERROR omx
gstomx.c:1257:gst_omx_port_acquire_buffer:<omxh264dec-omxh264dec0> Component
egl_render is in error state: Insufficient resources
0:01:32.403512778 7472 0x2364200 WARN omxvideodec
gstomxvideodec.c:1527:gst_omx_video_dec_loop:<omxh264dec-omxh264dec0> error:
OpenMAX component in error state None (0x00000000)
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
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Free forum by Nabble Disable Popup Ads | Edit this page
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list