After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 397219 - [rmdemux] captured realaudio stream with non-zero start plays as silence
[rmdemux] captured realaudio stream with non-zero start plays as silence
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-ugly
git master
Other All
: Normal normal
: 0.10.6
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2007-01-16 11:25 UTC by Sam Morris
Modified: 2007-05-16 19:08 UTC
See Also:
GNOME target: ---
GNOME version: 2.15/2.16


Attachments
clip from the captured stream (100.00 KB, application/vnd.rn-realmedia)
2007-01-16 11:26 UTC, Sam Morris
Details

Description Sam Morris 2007-01-16 11:25:10 UTC
Please describe the problem:
I captured the attached realaudio stream, but playing it back with playbin doesn't output any audio, only silence.

Mplayer takes about 16 seconds to play the whole clip, but gst-launch seems to hang indefinitely after outputting the following info to the console.

Steps to reproduce:


Actual results:
Setting pipeline to PAUSED ...
/playbin0/decodebin0/typefind.src: caps = application/vnd.rn-realmedia
Pipeline is PREROLLING ...
FOUND TAG      : found by element "rmdemux0".
           title: Radio Oxford
          artist: BBC
       copyright: (C) British Broadcasting Corporation 2006
FOUND TAG      : found by element "rmdemux0".
     audio codec: Real Audio G2 (Cook)
/playbin0/selector_audio_src0: active-pad = "sink0"
/playbin0/decodebin0/queue0.sink: caps = audio/x-pn-realaudio, raversion=(int)8, flavor=(int)5, rate=(int)44100, channels=(int)1, width=(int)16, leaf_size=(int)128, packet_size=(int)640, height=(int)16, codec_data=(buffer)010000020400002f
/playbin0/decodebin0/queue0.src: caps = audio/x-pn-realaudio, raversion=(int)8, flavor=(int)5, rate=(int)44100, channels=(int)1, width=(int)16, leaf_size=(int)128, packet_size=(int)640, height=(int)16, codec_data=(buffer)010000020400002f
/playbin0/decodebin0/ffdec_cook0.sink: caps = audio/x-pn-realaudio, raversion=(int)8, flavor=(int)5, rate=(int)44100, channels=(int)1, width=(int)16, leaf_size=(int)128, packet_size=(int)640, height=(int)16, codec_data=(buffer)010000020400002f
/playbin0/decodebin0/ffdec_cook0.src: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/selector_audio_src0.sink0: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/decodebin0.src0: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/decodebin0.src0.proxypad1: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/selector_audio_src0.src: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/preroll_audio_src0.sink: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/preroll_audio_src0.src: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin/aconv.src: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin/aconv.sink: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin.sink: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin.sink: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin.sink.proxypad3: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin/aresample.src: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin/aresample.sink: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin/volume.src: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin/volume.sink: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin/audiosink/audiosink-actual-sink-alsa.sink: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin/audiosink.sink: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin/audiosink.sink: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
/playbin0/abin/audiosink.sink.proxypad2: caps = audio/x-raw-int, rate=(int)44100, channels=(int)1, signed=(boolean)true, endianness=(int)1234, width=(int)16, depth=(int)16
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: audioclock0
[ hang ]

Expected results:


Does this happen every time?


Other information:
Comment 1 Sam Morris 2007-01-16 11:26:16 UTC
Created attachment 80382 [details]
clip from the captured stream
Comment 2 Tim-Philipp Müller 2007-01-16 11:48:00 UTC
Looks like a newsegment-event/timestamping issue:

 fakesink: GstEventNewsegment, format=(GstFormat)GST_FORMAT_TIME, start=(gint64)0, ...
 fakesink: 10240 bytes, timestamp: 8:29:54.303000000, duration: none
 fakesink: 10240 bytes, timestamp: 8:29:56.160000000, duration: none
 fakesink: 10240 bytes, timestamp: 8:29:58.015000000, duration: none

So playback should start after about eight and a half hours if you are inclined to wait for that long :)
Comment 3 Tim-Philipp Müller 2007-03-08 12:29:46 UTC
Neither the PROP nor the MDPR chunk seem to contain anything useful here (stream_start is 0, preroll is 4.6 seconds).
Comment 4 Tim-Philipp Müller 2007-05-16 19:08:50 UTC
This should work now with rmdemux from CVS. Sorry it took so long to get fixed:

 2007-05-16  Tim-Philipp Müller  <tim at centricular dot net>

        * gst/realmedia/rmdemux.c: (gst_rmdemux_init),
        (gst_rmdemux_sink_event), (gst_rmdemux_perform_seek),
        (gst_rmdemux_reset), (gst_rmdemux_chain), (gst_rmdemux_add_stream),
        (gst_rmdemux_parse_packet):
        * gst/realmedia/rmdemux.h:
          Remember first timestamp encountered in stream and re-timestamp
          stream to start from zero (fixes #397219); only send one newsegment
          event, not two; when seeking, send newsegment events from the
          streaming thread and not from the seeking thread.