GNOME Bugzilla – Bug 357215
[playbin] buffering notification not quite right yet
Last modified: 2006-09-23 10:49:46 UTC
Doing $ gst-launch-0.10 playbin uri=http://ogg.smgradio.com/vr160.ogg with core/base CVS sometimes hangs at 99% buffering. When that happens, the pipeline - prerolls - goes to playing - plays for a fraction of a second - goes to buffering - buffers until 99% - hangs not going back to playing http://people.freedesktop.org/~tpm/buffering.log.bz2 has the log (gst_bus_post additionally has the structure details).Seems like the queue fills and overruns, but no 100% message is ever posted.
Created attachment 73224 [details] buffering2.dbg.bz2 New debug log, this time with the following patch applied: Index: gstplaybasebin.c =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/gst/playback/gstplaybasebin.c,v retrieving revision 1.118 diff -u -p -r1.118 gstplaybasebin.c --- gstplaybasebin.c 21 Sep 2006 07:01:48 -0000 1.118 +++ gstplaybasebin.c 22 Sep 2006 16:38:20 -0000 @@ -766,6 +766,10 @@ gen_preroll_element (GstPlayBaseBin * pl * fire an underrun. */ g_signal_connect (G_OBJECT (preroll), "underrun", G_CALLBACK (queue_out_of_data), play_base_bin); + + /* set threshold */ + g_object_set (preroll, "min-threshold-time", + (guint64) play_base_bin->queue_threshold, NULL); } preroll_pad = gst_element_get_pad (preroll, "src");
Yeah, this will not install the running callback. This patch should work better: Index: gstplaybasebin.c =================================================================== RCS file: /cvs/gstreamer/gst-plugins-base/gst/playback/gstplaybasebin.c,v retrieving revision 1.118 diff -u -B -b -p -r1.118 gstplaybasebin.c --- gstplaybasebin.c 21 Sep 2006 07:01:48 -0000 1.118 +++ gstplaybasebin.c 22 Sep 2006 16:49:44 -0000 @@ -766,6 +766,8 @@ gen_preroll_element (GstPlayBaseBin * pl * fire an underrun. */ g_signal_connect (G_OBJECT (preroll), "underrun", G_CALLBACK (queue_out_of_data), play_base_bin); + /* configure threshold and callbacks */ + queue_out_of_data (preroll, play_base_bin); } preroll_pad = gst_element_get_pad (preroll, "src");
> Yeah, this will not install the running callback. This patch should work > better: (snip) That makes it work, thanks!