GNOME Bugzilla – Bug 431707
[amrnbparse] make pipeline hang
Last modified: 2007-04-22 22:41:15 UTC
When playing an amr file, decodebin creates amrnbparse and amrnbdec component. gstreamer play the file but then hang. When using the ffmpeg amr demuxer ffdemux_amr in place of amrnbparse it works fine. Command: GST_DEBUG=2 gst-launch -vm filesrc location=cat_1.amr ! decodebin ! alsasink Log: Setting pipeline to PAUSED ... /pipeline0/decodebin0/typefind.src: caps = audio/x-amr-nb-sh Pipeline is PREROLLING ... Got Message from element "pipeline0" (clock-provide): GstMessageClockProvide, clock=(GstClock)NULL, ready=(boolean)true Got Message from element "pipeline0" (clock-provide): GstMessageClockProvide, clock=(GstClock)NULL, ready=(boolean)true Got Message from element "alsasink0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "fakesink" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "typefind" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "decodebin0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "filesrc0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "pipeline0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED Got Message from element "amrnbparse0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "amrnbdec0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "amrnbdec0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "amrnbparse0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "typefind" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "filesrc0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING /pipeline0/decodebin0/amrnbparse0.src: caps = audio/AMR, rate=(int)8000, channels=(int)1 /pipeline0/decodebin0/amrnbdec0.src: caps = audio/x-raw-int, channels=(int)1, width=(int)16, depth=(int)16, endianness=(int)1234, rate=(int)8000, signed=(boolean)true /pipeline0/decodebin0/amrnbdec0.sink: caps = audio/AMR, rate=(int)8000, channels=(int)1 Got Message from element "fakesink" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PLAYING, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_READY Got Message from element "decodebin0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "fakesink" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_NULL Got Message from element "fakesink" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_NULL, pending-state=(GstState)GST_STATE_VOID_PENDING /pipeline0/alsasink0.sink: caps = audio/x-raw-int, channels=(int)1, width=(int)16, depth=(int)16, endianness=(int)1234, rate=(int)8000, signed=(boolean)true /pipeline0/decodebin0.src0: caps = audio/x-raw-int, channels=(int)1, width=(int)16, depth=(int)16, endianness=(int)1234, rate=(int)8000, signed=(boolean)true /pipeline0/decodebin0.src0.proxypad1: caps = audio/x-raw-int, channels=(int)1, width=(int)16, depth=(int)16, endianness=(int)1234, rate=(int)8000, signed=(boolean)true 0:00:00.502234000 18325 0x812b320 WARN basesink gstbasesink.c:2123:gst_base_sink_chain_unlocked:<alsasink0> warning: Internal data flow problem. 0:00:00.502268000 18325 0x812b320 WARN basesink gstbasesink.c:2123:gst_base_sink_chain_unlocked:<alsasink0> warning: Received buffer without a new-segment. Assuming timestamps start from 0. Got Message from element "alsasink0" (warning): GstMessageWarning, gerror=(GstGError)(NULL), debug=(string)"gstbasesink.c\(2123\):\ gst_base_sink_chain_unlocked\ \(\):\ /pipeline0/alsasink0:\012Received\ buffer\ without\ a\ new-segment.\ Assuming\ timestamps\ start\ from\ 0." WARNING: from element /pipeline0/alsasink0: Internal data flow problem. Additional debug info: gstbasesink.c(2123): gst_base_sink_chain_unlocked (): /pipeline0/alsasink0: Received buffer without a new-segment. Assuming timestamps start from 0. Got Message from element "alsasink0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "pipeline0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING Pipeline is PREROLLED ... Got Message from element "pipeline0" (async-done): no message details Setting pipeline to PLAYING ... Got Message from element "pipeline0" (new-clock): GstMessageNewClock, clock=(GstClock)GstAudioSinkClock New clock: GstAudioSinkClock Got Message from element "alsasink0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "amrnbdec0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "amrnbparse0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "typefind" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "decodebin0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "filesrc0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING Got Message from element "pipeline0" (state-changed): GstMessageState, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING
Created attachment 86698 [details] AMR file that hang when played with amrnbparse
Should be fixed in CVS now. Please re-open if it's not. 2007-04-22 Tim-Philipp Müller <tim at centricular dot net> * ext/amrnb/amrnbparse.c: (gst_amrnbparse_get_type), (gst_amrnbparse_class_init), (gst_amrnbparse_init), (gst_amrnbparse_pull_header), (gst_amrnbparse_loop): Fix pull mode operation some more: send newsegment event before sending data; handle EOS and fatal flow returns a bit better; don't leak buffers in some cases. Misc. minor cleanups. Fixes #431707.