[Bug 680262] New: [0.11] decodebin: regression caused by pad blocking changes

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Jul 19 09:18:17 PDT 2012


https://bugzilla.gnome.org/show_bug.cgi?id=680262
  GStreamer | gst-plugins-base | 0.11.x

           Summary: [0.11] decodebin: regression caused by pad blocking
                    changes
    Classification: Platform
           Product: GStreamer
           Version: 0.11.x
        OS/Version: Linux
            Status: NEW
          Severity: blocker
          Priority: Normal
         Component: gst-plugins-base
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: t.i.m at zen.co.uk
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


3gp files don't preroll for me now. It's stuck in:


Starting program: /home/tpm/gst/0.11/gstreamer/tools/.libs/lt-gst-launch-1.0
file:///home/tpm/samples/private/nokia//3GP/MPEG4_VGA_15fps_AMRNB.3gp \!
decodebin \! fakesink -v
[Thread debugging using libthread_db enabled]
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQTDemux:qtdemux0.GstPad:sink:
caps = application/x-3gp, profile=(string)basic
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMultiQueue:multiqueue0.GstPad:sink_0:
caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false,
profile=(string)simple, level=(string)4a,
codec_data=(buffer)000001b004000001b24e4558545245414d494e4720434f52504f524154494f4e000001b509000001000000012000845d4c30fa114043c1463f,
width=(int)640, height=(int)480, framerate=(fraction)15/1,
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMultiQueue:multiqueue0.GstPad:sink_0:
caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false,
profile=(string)simple, level=(string)4a,
codec_data=(buffer)000001b004000001b24e4558545245414d494e4720434f52504f524154494f4e000001b509000001000000012000845d4c30fa114043c1463f,
width=(int)640, height=(int)480, framerate=(fraction)15/1,
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMultiQueue:multiqueue0.GstPad:sink_0:
caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false,
profile=(string)simple, level=(string)4a,
codec_data=(buffer)000001b004000001b24e4558545245414d494e4720434f52504f524154494f4e000001b509000001000000012000845d4c30fa114043c1463f,
width=(int)640, height=(int)480, framerate=(fraction)15/1,
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMultiQueue:multiqueue0.GstPad:sink_1:
caps = audio/AMR, codec_data=(buffer)0000001164616d724e5854520081ff0008,
rate=(int)8000, channels=(int)1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMultiQueue:multiqueue0.GstPad:src_1:
caps = audio/AMR, codec_data=(buffer)0000001164616d724e5854520081ff0008,
rate=(int)8000, channels=(int)1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstAmrnbDec:amrnbdec0.GstPad:src:
caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved,
rate=(int)8000, channels=(int)1
^C
Program received signal SIGINT, Interrupt.
0x00007ffff68baa93 in *__GI___poll (fds=<optimized out>, nfds=<optimized out>,
timeout=250) at ../sysdeps/unix/sysv/linux/poll.c:87
87    ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
(gdb) thread apply all bt

Thread 5 (Thread 0x7fffebfff700 (LWP 32499)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007ffff722242f in g_cond_wait (cond=cond at entry=0x84ebf8,
mutex=mutex at entry=0x84eb88) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthread-posix.c:746
#2  0x00007ffff7b10f35 in do_probe_callbacks (pad=pad at entry=0x84eb70,
info=info at entry=0x7fffebffe600, defaultval=defaultval at entry=GST_FLOW_OK) at
gstpad.c:3116
#3  0x00007ffff7b48630 in gst_pad_push_event_unchecked (pad=pad at entry=0x84eb70,
event=0x894520, type=type at entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at
gstpad.c:4419
#4  0x00007ffff7b48793 in push_sticky (pad=0x84eb70, ev=0x7fffebffe6f0,
user_data=0x7fffebffe760) at gstpad.c:3231
#5  0x00007ffff7b4638a in events_foreach (pad=pad at entry=0x84eb70,
func=func at entry=0x7ffff7b486d0 <push_sticky>,
user_data=user_data at entry=0x7fffebffe760) at gstpad.c:514
#6  0x00007ffff7b50a33 in check_sticky (pad=0x84eb70) at gstpad.c:3270
#7  gst_pad_push_event (pad=pad at entry=0x84eb70, event=0x894520) at
gstpad.c:4563
#8  0x00007ffff5691531 in gst_pad_set_caps (caps=0x89a5e0, pad=0x84eb70) at
/home/tpm/gst/0.11/gstreamer/gst/gstcompat.h:73
#9  gst_audio_decoder_set_output_format (dec=dec at entry=0x8a0050,
info=info at entry=0x7fffebffe820) at gstaudiodecoder.c:562
#10 0x00007ffff0152787 in gst_amrnbdec_set_format (dec=0x8a0050,
caps=<optimized out>) at amrnbdec.c:228
#11 0x00007ffff56907f5 in gst_audio_decoder_sink_setcaps (caps=0x82ded0,
dec=0x8a0050) at gstaudiodecoder.c:599
#12 gst_audio_decoder_sink_eventfunc (dec=0x8a0050, event=0x894240) at
gstaudiodecoder.c:1622
#13 0x00007ffff7b47b49 in gst_pad_send_event_unchecked (pad=pad at entry=0x84e940,
event=event at entry=0x894240,
type=type at entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:4745
#14 0x00007ffff7b482aa in gst_pad_push_event_unchecked (pad=pad at entry=0x84e710,
event=0x894240, type=type at entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at
gstpad.c:4440
#15 0x00007ffff7b48793 in push_sticky (pad=0x84e710, ev=0x7fffebffec60,
user_data=0x7fffebffecd0) at gstpad.c:3231
#16 0x00007ffff7b4638a in events_foreach (pad=pad at entry=0x84e710,
func=func at entry=0x7ffff7b486d0 <push_sticky>,
user_data=user_data at entry=0x7fffebffecd0) at gstpad.c:514
#17 0x00007ffff7b50a33 in check_sticky (pad=0x84e710) at gstpad.c:3270
#18 gst_pad_push_event (pad=0x84e710, event=event at entry=0x894240) at
gstpad.c:4563
#19 0x00007ffff48f5dca in gst_single_queue_push_one (object=0x894240,
sq=0x89a800, mq=0x846080) at gstmultiqueue.c:1080
#20 gst_multi_queue_loop (pad=<optimized out>) at gstmultiqueue.c:1303
#21 0x00007ffff7b77181 in gst_task_func (task=0x7bfc60) at gsttask.c:316
#22 0x00007ffff72095f2 in g_thread_pool_thread_proxy (data=<optimized out>) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthreadpool.c:309
#23 0x00007ffff7208df5 in g_thread_proxy (data=0x7fffec0012d0) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthread.c:801
#24 0x00007ffff6b7ab50 in start_thread (arg=<optimized out>) at
pthread_create.c:304
#25 0x00007ffff68c56dd in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#26 0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7ffff2086700 (LWP 32498)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007ffff722242f in g_cond_wait (cond=cond at entry=0x847240,
mutex=mutex at entry=0x847230) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthread-posix.c:746
#2  0x00007ffff48f2a61 in gst_data_queue_pop (queue=0x8471e0,
item=item at entry=0x7ffff2085dc8) at gstdataqueue.c:486
#3  0x00007ffff48f55ac in gst_multi_queue_loop (pad=<optimized out>) at
gstmultiqueue.c:1183
#4  0x00007ffff7b77181 in gst_task_func (task=0x7bfb40) at gsttask.c:316
#5  0x00007ffff72095f2 in g_thread_pool_thread_proxy (data=<optimized out>) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthreadpool.c:309
#6  0x00007ffff7208df5 in g_thread_proxy (data=0x834540) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthread.c:801
#7  0x00007ffff6b7ab50 in start_thread (arg=<optimized out>) at
pthread_create.c:304
#8  0x00007ffff68c56dd in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#9  0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7ffff2887700 (LWP 32497)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007ffff722242f in g_cond_wait (cond=cond at entry=0x89a988,
mutex=mutex at entry=0x8461e8) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthread-posix.c:746
#2  0x00007ffff48f653d in gst_multi_queue_sink_query (pad=<optimized out>,
parent=0x846080, query=0x7fffec001540) at gstmultiqueue.c:1614
#3  0x00007ffff7b4e956 in gst_pad_query (pad=pad at entry=0x84e4e0,
query=query at entry=0x7fffec001540) at gstpad.c:3351
#4  0x00007ffff7b4ef6d in gst_pad_peer_query (pad=0x84e2b0,
query=query at entry=0x7fffec001540) at gstpad.c:3482
#5  0x00007ffff2cc4fbd in qtdemux_do_allocation (stream=0x841790,
qtdemux=0x82e0c0) at qtdemux.c:5024
#6  gst_qtdemux_add_stream (list=0x82df20, stream=0x841790, qtdemux=0x82e0c0)
at qtdemux.c:5217
#7  qtdemux_expose_streams (qtdemux=qtdemux at entry=0x82e0c0) at qtdemux.c:7751
#8  0x00007ffff2cd17e0 in gst_qtdemux_loop_state_header (qtdemux=0x82e0c0) at
qtdemux.c:2814
#9  gst_qtdemux_loop (pad=0x7ae9c0) at qtdemux.c:3834
#10 0x00007ffff7b77181 in gst_task_func (task=0x7bf5a0) at gsttask.c:316
#11 0x00007ffff72095f2 in g_thread_pool_thread_proxy (data=<optimized out>) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthreadpool.c:309
#12 0x00007ffff7208df5 in g_thread_proxy (data=0x82d8a0) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthread.c:801
#13 0x00007ffff6b7ab50 in start_thread (arg=<optimized out>) at
pthread_create.c:304
#14 0x00007ffff68c56dd in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#15 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7ffff409e700 (LWP 32496)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007ffff722242f in g_cond_wait (cond=cond at entry=0x7bf060,
mutex=mutex at entry=0x7bf018) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthread-posix.c:746
#2  0x00007ffff7b7732b in gst_task_func (task=0x7bf000) at gsttask.c:301
#3  0x00007ffff72095f2 in g_thread_pool_thread_proxy (data=<optimized out>) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthreadpool.c:309
#4  0x00007ffff7208df5 in g_thread_proxy (data=0x7ab8f0) at
/tmp/buildd/glib2.0-2.32.3/./glib/gthread.c:801
#5  0x00007ffff6b7ab50 in start_thread (arg=<optimized out>) at
pthread_create.c:304
#6  0x00007ffff68c56dd in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7ffff7fcb700 (LWP 32493)):
---Type <return> to continue, or q <return> to quit---
#0  0x00007ffff68baa93 in *__GI___poll (fds=<optimized out>, nfds=<optimized
out>, timeout=250) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007ffff71e64d4 in g_main_context_poll (n_fds=2, fds=0x7b7730,
timeout=250, context=0x7c0350, priority=<optimized out>) at
/tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3440
#2  g_main_context_iterate (context=0x7c0350, block=block at entry=1,
dispatch=dispatch at entry=1, self=<error reading variable: Unhandled dwarf
expression opcode 0xfa>) at /tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3141
#3  0x00007ffff71e6932 in g_main_loop_run (loop=0x84df50) at
/tmp/buildd/glib2.0-2.32.3/./glib/gmain.c:3340
#4  0x00007ffff7b25795 in gst_bus_poll (bus=bus at entry=0x79f130,
events=events at entry=GST_MESSAGE_ANY,
timeout=timeout at entry=18446744073709551615) at gstbus.c:1086
#5  0x0000000000403f2f in event_loop (pipeline=0x7bc160,
blocking=blocking at entry=1, target_state=target_state at entry=GST_STATE_PAUSED) at
gst-launch.c:584
#6  0x00000000004036f0 in main (argc=6, argv=0x7fffffffc5a8) at
gst-launch.c:1067


I believe this was introduced by:

 commit c5901cebcabc966dd65f70080feec79bb26b4645
 Author: Edward Hervey <edward.hervey at collabora.co.uk>
 Date:   Wed Jul 18 15:24:00 2012 +0200

    decodebin: Block on caps event

    A caps event is also used to establish that a stream has prerolled.

    Without this, we end up allowing negotiation queries to fail, ending
    in decoders (and other elements) to not be configured right from the
    start with the most optimal settings.

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