[Bug 776091] omx - in error state at end of video (before EOS)

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Fri Jan 13 12:41:35 UTC 2017


https://bugzilla.gnome.org/show_bug.cgi?id=776091

--- Comment #10 from Stuart Axon <stu.axon at gmail.com> ---
More likely a bug in my understanding of dispmanx + python ctypes or gstreamer
:)


It fixes my issue enough that I can play things gaplessly, but it unfixes
things by seeming to introduce some sort of resource leak [1] (leaking
windows?).


It makes sense to me that gstreamer may destroy windows it creates, but was
surprising that it destroyed one passed in from set_window_handle.



I'd try switching to recreating the window each time, but I'm not sure where to
do this, since prepare-window-handle only seems to fire once.


Currently, I check for a state change from READY to PAUSED and resize my window
there [2].

I tried changing this to create a new window and call set_window_handle, but
that doesn't seem to work.




[1]

First items play fine, but eventually this happens (if testing with a video it
happens much more quickly, after about the 5th):

eglCreateImageKHR:  failed to create image for buffer 0x1c target 12465 error
0x300c
0:00:25.641093891  1124   0x977c60 ERROR           glbasememory
gstglbasememory.c:94:_mem_create_gl: Failed to create GL buffer: Failed to
create EGLImage
0:00:25.641261963  1124   0x9846f0 ERROR           glbasememory
gstglbasememory.c:168:gst_gl_base_memory_init: Could not create GL buffer with
context:0x97c0c8

** (python:1124): CRITICAL **: gst_egl_image_get_image: assertion
'GST_IS_EGL_IMAGE (image)' failed
eglCreateImageKHR:  failed to create image for buffer 0x1d target 12465 error
0x300c
0:00:25.642280756  1124   0x977c60 ERROR           glbasememory
gstglbasememory.c:94:_mem_create_gl: Failed to create GL buffer: Failed to
create EGLImage
0:00:25.642371745  1124   0x9846f0 ERROR           glbasememory
gstglbasememory.c:168:gst_gl_base_memory_init: Could not create GL buffer with
context:0x97c0c8




[2] - 
    ### After gst pipeline has been created, setup state change callback

            def on_state_change(bus, msg):
                if msg.src != self.sink:
                    return

                old, new, pending = msg.parse_state_changed()

                if (old, new) == (Gst.State.READY, Gst.State.PAUSED):
                    # Code to resize window here
                    pass


            self.bus.connect('message::state-changed', on_state_change)



    ### later on, when receiving command to play new video/image:
    def play_next_location(self, next_location):
        self.pipeline.set_state(Gst.State.READY)
        self.src.set_property("location", next_location)
        self.pipeline.set_state(Gst.State.PLAYING)

-- 
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