[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