GNOME Bugzilla – Bug 735790
GstGLMixer random create none-RGBA output buffer pool for GstGLFilter
Last modified: 2014-10-21 02:46:21 UTC
if construct pipeline as gst-launch-1.0 videotestsrc ! glfilterblur ! glvideomixer name=mixer ! glimagesink videotestsrc ! glfiltercube ! mixer. correct result should be a rotate cube floating on background image, but sometimes the result is only the floaing cube . after checking in gst_gl_filter_texture, I found in such situation glfiltercube outbuf->glmem->tex_type is GST_VIDEO_GL_TEXTURE_RGB, not normally GST_VIDEO_GL_TEXTURE_RGBA. when checking in GstGLMixer gst_gl_mixer_propose_allocation , it should receive a caps as "video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, format=(string)RGBA, interlace-mode=(string)progressive" but sometimes it receives "video/x-raw, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)0/1, format=(string)RGB" seems this caps created a none-RGBA GstGLBufferPool, which leads the bug. backtrace shows this caps comes from gstbasetransfrom.c:1385 gst_gl_mixer_propose_allocation (mix=0x80e2268, decide_query=0xb3901e30, query=0xb3901e60) at ../../../ext/gl/gstglmixer.c:161
+ Trace 234036
seems that gst_base_transform_find_transform(gstbasetransform:1356) of GstGLFilter did not always find the correct outcaps. but if pipeline construct as videotestsrc ! glfilterblur ! glvideomixer ! glimagesink every time gst_base_transform_find_transform will find the corrent caps.
Created attachment 284980 [details] trace log of gst_base_transform_find_transform I'm not sure if this related to gst_gl_mixer_query_caps,when line 537 GST_VIDEO_INFO_FORMAT (&vagg->info) != GST_VIDEO_FORMAT_UNKNOWN) condition true,the returned caps didn't contain memory:GLMemory. attachment is the trace of gst_base_transform_find_transform when correct caps returned and incorrect caps returned , hopes it help.
This *might* be the same issue as bug #735042.
(In reply to comment #2) > This *might* be the same issue as bug #735042. after checking out lastest git version (e6212f), this problem still happens, gst_gl_mixer_propose_allocation can still receive RGB caps.
(In reply to comment #2) > This *might* be the same issue as bug #735042. seems that commit f0caf04ad6bf6f04c53424a2057ffe988ad781b9 videoaggregator: operate on caps rather than video info also fix this bug.
Thanks for testing! commit f0caf04ad6bf6f04c53424a2057ffe988ad781b9 Author: Matthew Waters <matthew@centricular.com> Date: Mon Oct 20 10:34:27 2014 +1100 videoaggregator: operate on caps rather than video info Otherwise the CapsFeatures will be lost along with the possibility of multiple output types and formats. https://bugzilla.gnome.org/show_bug.cgi?id=738129