GNOME Bugzilla – Bug 396409
Radio stations using chained oggs break rhythmbox
Last modified: 2009-10-15 17:22:36 UTC
Please describe the problem: I'm trying to listen to the stream at <http://213.186.37.76:8002/high.ogg.m3u>. It plays for a few seconds, but then stops. 'Buffering' appears in the scroll bar at the bottom of the window, but the scroll bar doesn't fill up, it stops at 99%. Double-clicking on the station (to restart playback) works and the stream plays for a few more seconds. Thereafter rhythmbox locks up and doesn't redraw its window. This lasts for 10-15 seconds. After it recovers, no internet radio stations will play. If I then try to go back to my local music library, rhythmbox fails to play each song in turn, and does it so rapidly that I can't tell it to stop! During this phase, as each file fails to play, a few messages are printed to the console: (rhythmbox:13062): GStreamer-WARNING **: Name selector_audio_src0 is not unique in bin playbin, not adding (rhythmbox:13062): GStreamer-WARNING **: Name preroll_audio_src0 is not unique in bin playbin, not adding (rhythmbox:13062): GStreamer-WARNING **: Element preroll_audio_src0 is not in bin playbin (rhythmbox:13062): GStreamer-WARNING **: Element selector_audio_src0 is not in bin playbin (rhythmbox:13062): GStreamer-WARNING **: Name selector_audio_src0 is not unique in bin playbin, not adding (rhythmbox:13062): GStreamer-WARNING **: Name preroll_audio_src0 is not unique in bin playbin, not adding (rhythmbox:13062): RhythmDB-CRITICAL **: rhythmdb_entry_get_string: assertion `entry != NULL' failed (rhythmbox:13062): RhythmDB-CRITICAL **: rhythmdb_entry_get_ulong: assertion `entry != NULL' failed (rhythmbox:13062): RhythmDB-CRITICAL **: rhythmdb_entry_set: assertion `entry != NULL' failed (rhythmbox:13062): RhythmDB-CRITICAL **: rhythmdb_entry_set: assertion `entry != NULL' failed (rhythmbox:13062): GStreamer-WARNING **: Element preroll_audio_src0 is not in bin playbin (rhythmbox:13062): GStreamer-WARNING **: Element selector_audio_src0 is not in bin playbin (rhythmbox:13062): GStreamer-WARNING **: Name selector_audio_src0 is not unique in bin playbin, not adding (rhythmbox:13062): GStreamer-WARNING **: Name preroll_audio_src0 is not unique in bin playbin, not adding (rhythmbox:13062): GStreamer-WARNING **: Element preroll_audio_src0 is not in bin playbin (rhythmbox:13062): GStreamer-WARNING **: Element selector_audio_src0 is not in bin playbin (rhythmbox:13062): GStreamer-WARNING **: Name selector_audio_src0 is not unique in bin playbin, not adding (rhythmbox:13062): GStreamer-WARNING **: Name preroll_audio_src0 is not unique in bin playbin, not adding (rhythmbox:13062): GStreamer-WARNING **: Element preroll_audio_src0 is not in bin playbin (rhythmbox:13062): GStreamer-WARNING **: Element selector_audio_src0 is not in bin playbin (rhythmbox:13062): GStreamer-WARNING **: Name selector_audio_src0 is not unique in bin playbin, not adding (rhythmbox:13062): GStreamer-WARNING **: Name preroll_audio_src0 is not unique in bin playbin, not adding etc. Steps to reproduce: Actual results: Expected results: Does this happen every time? Other information: This is quite complicated and probably requires an audio stream that is unable to stream at its regular capacity, but I often run into the buffer emptying -> lockup trap when using Rhythmbox to listen to internet radio stations. This is the first time that I've been unable to switch back to playing local libray tracks though.
Created attachment 80230 [details] debug output from rhythmbox Unfortunately when I run rhthmbox with the --debug option it doesn't seem to get past the freeze stage.
Maybe this is a GStreamer issue: $ gst-launch --tags playbin uri=http://213.186.37.76:8002/high.ogg Setting pipeline to PAUSED ... Pipeline is PREROLLING ... FOUND TAG : found by element "vorbisdec1". extended comment: ENCODER=SAM technology title: You are listening Nectarine Radio! Please visit www.scenemusic.eu encoder: AO; aoTuV b3 [20041120] (based on Xiph.Org's libVorbis) encoder version: 0 audio codec: Vorbis nominal bitrate: 99040 bitrate: 99040 Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: audioclock0 [ ... playing normally ... ] FOUND TAG : found by element "vorbisdec3". extended comment: ENCODER=SAM technology : DURATION=562129 : SONGTYPE=S : OVERLAY=no artist: Lunde title: Worm Playing Saxophone in a Desert Storm track number: 0 encoder: AO; aoTuV b3 [20041120] (based on Xiph.Org's libVorbis) encoder version: 0 audio codec: Vorbis nominal bitrate: 99040 bitrate: 99040 [ ... silence ... ] Caught interrupt -- Pausing pipeline. Pipeline paused. WARNING: Element "playbin0" warns: pipeline interrupted Element "playbin0" has gone from PLAYING to PAUSED, quitting. Execution ended after 111501757000 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... Setting pipeline to NULL ... FREEING pipeline ... Perhaps it is being confused by whatever the stream does when songs/tags change. I watched traffic to/from the host with ngrep and noticed that after a song change, data continues to be downloaded but only with one byte per packet (or at least, per lot of data that ngrep prints out), where before the song changed there were a few lines per packet.
<__tim> cortana: known oggdemux bug, probably a chained ogg So this is probably a dupe of bug #320984 as it turns out!
I can confirm this with this url http://ogg2.smgradio.com/vr32.ogg using a fresh build from svn
Well, not a dupe of that bug, but at least related to it. From its comment #20: "The problem isn't really with oggdemux AFAIK. It switches chains correctly (emit no-more-pads, add pad, remove pad). The problem has to do with whatever uses it (decodebin/playbin or user-defined pipeline)." I'll shut up and stop spamming you all now!
Chained ogg is supposedly supported in playbin2. Are there any plans to make use of this in the near future or will it wait until the API has been declared stable?
My plan was to wait until totem switches to playbin2 (shouldn't be too far away); if someone else wants to do the work before that, then we can think about API stability and whatever else. Recently I also got chained ogg playback working with the crossfading backend, but only with decodebin2, which is a separate issue as far as I understand.
*** Bug 492727 has been marked as a duplicate of this bug. ***
*** Bug 342967 has been marked as a duplicate of this bug. ***
*** Bug 374242 has been marked as a duplicate of this bug. ***
*** Bug 568428 has been marked as a duplicate of this bug. ***
Now we're using playbin2 and decodebin2 everywhere, this is fixed.
*** Bug 407634 has been marked as a duplicate of this bug. ***