[Bug 735790] New: GstGLMixer random create none-RGBA output buffer pool for GstGLFilter

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sun Aug 31 23:41:37 PDT 2014


https://bugzilla.gnome.org/show_bug.cgi?id=735790
  GStreamer | gst-plugins-bad | git

           Summary: GstGLMixer  random create none-RGBA output buffer pool
                    for GstGLFilter
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-bad
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: comicfans44 at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


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
#1  0xb77f0913 in gst_gl_mixer_sink_query (agg=0x80e2268, bpad=0x80eb7b8,
query=0xb3901e60) at ../../../ext/gl/gstglmixer.c:312
#2  0xb77a56ae in pad_query_func (pad=0x80eb7b8, parent=0x80e2268,
query=0xb3901e60) at ../../../../gst-libs/gst/base/gstaggregator.c:1231
#3  0xb7f29306 in gst_pad_query (pad=0x80eb7b8, query=0xb3901e60) at
../../gst/gstpad.c:3584
#4  0xb7f29abf in gst_pad_peer_query (pad=0x80b68a8, query=0xb3901e60) at
../../gst/gstpad.c:3715
#5  0xb785f11e in gst_base_transform_do_bufferpool (trans=0x80e6278,
outcaps=0xb3902ef0) at ../../../../libs/gst/base/gstbasetransform.c:978
#6  0xb78604c2 in gst_base_transform_setcaps (trans=0x80e6278, pad=0x80b6770,
incaps=0xb3902db8) at ../../../../libs/gst/base/gstbasetransform.c:1385
#7  0xb7861cf8 in gst_base_transform_sink_eventfunc (trans=0x80e6278,
event=0xb4303588) at ../../../../libs/gst/base/gstbasetransform.c:1889
#8  0xb7861b80 in gst_base_transform_sink_event (pad=0x80b6770,
parent=0x80e6278, event=0xb4303588)
    at ../../../../libs/gst/base/gstbasetransform.c:1848
#9  0xb7f2de68 in gst_pad_send_event_unchecked (pad=0x80b6770,
event=0xb4303588, type=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at
../../gst/gstpad.c:5141
#10 0xb7f2d0cb in gst_pad_push_event_unchecked (pad=0x80b6638,
event=0xb4303588, type=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at
../../gst/gstpad.c:4839
#11 0xb7f28ba9 in push_sticky (pad=0x80b6638, ev=0xb42ff028,
user_data=0xb42ff064) at ../../gst/gstpad.c:3443
#12 0xb7f20cdd in events_foreach (pad=0x80b6638, func=0xb7f28aa7 <push_sticky>,
user_data=0xb42ff064) at ../../gst/gstpad.c:570
#13 0xb7f28f38 in check_sticky (pad=0x80b6638, event=0xb4303588) at
../../gst/gstpad.c:3499
#14 0xb7f2d56c in gst_pad_push_event (pad=0x80b6638, event=0xb4303588) at
../../gst/gstpad.c:4958
#15 0xb78533e3 in gst_base_src_set_caps (src=0x80b4518, caps=0xb3902db8) at
../../../../libs/gst/base/gstbasesrc.c:918
#16 0xb785af9f in gst_base_src_default_negotiate (basesrc=0x80b4518) at
../../../../libs/gst/base/gstbasesrc.c:3206
#17 0xb785b23d in gst_base_src_negotiate (basesrc=0x80b4518) at
../../../../libs/gst/base/gstbasesrc.c:3246
#18 0xb785934d in gst_base_src_loop (pad=0x80b6638) at
../../../../libs/gst/base/gstbasesrc.c:2683
#19 0xb7f5ec8d in gst_task_func (task=0x80f8178) at ../../gst/gsttask.c:317
#20 0xb7f5fcd1 in default_func (tdata=0x80dada8, pool=0x805b470) at
../../gst/gsttaskpool.c:68
#21 0xb7db5425 in g_thread_pool_thread_proxy (data=0x80630f8) at
/build/buildd/glib2.0-2.40.0/./glib/gthreadpool.c:307



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.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- 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