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 357215 - [playbin] buffering notification not quite right yet
[playbin] buffering notification not quite right yet
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal normal
: 0.10.11
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2006-09-22 16:23 UTC by Tim-Philipp Müller
Modified: 2006-09-23 10:49 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
buffering2.dbg.bz2 (469.96 KB, application/x-bzip)
2006-09-22 16:40 UTC, Tim-Philipp Müller
Details

Description Tim-Philipp Müller 2006-09-22 16:23:37 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.
Comment 1 Tim-Philipp Müller 2006-09-22 16:40:34 UTC
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");
Comment 2 Wim Taymans 2006-09-22 16:51:31 UTC
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");
Comment 3 Tim-Philipp Müller 2006-09-22 18:00:58 UTC
> Yeah, this will not install the running callback. This patch should work
> better: (snip)

That makes it work, thanks!