[Bug 655790] Hang when playing MPEG TS from disk with buffering

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Aug 11 05:19:58 PDT 2011


https://bugzilla.gnome.org/show_bug.cgi?id=655790
  GStreamer | gstreamer (core) | 0.10.34

--- Comment #4 from Tvrtko Ursulin <tvrtko.ursulin at onelan.co.uk> 2011-08-11 12:19:55 UTC ---
My possibly silly and misguided attempt to remove streamsynchronizer out of the
picture did not really work.

I assumed multiqueue could do the job but with default it would not play, and
when I set queueing properties to zero then it plays full speed (decode+render
speed) for a while and then it magically locks into sync. It does pass over the
spot where it hangs with streamsynchronizer, but I kind of suspect that might
not mean anything considering above described behaviour.

diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c
index b36ab1b..7afb640 100644
--- a/gst/playback/gstplaysink.c
+++ b/gst/playback/gstplaysink.c
@@ -138,7 +138,7 @@ struct _GstPlaySink

   GstPlayFlags flags;

-  GstStreamSynchronizer *stream_synchronizer;
+  GstElement *stream_synchronizer;

   /* chains */
   GstPlayAudioChain *audiochain;
@@ -461,7 +461,10 @@ gst_play_sink_init (GstPlaySink * playsink)
   playsink->flags = DEFAULT_FLAGS;

   playsink->stream_synchronizer =
-      g_object_new (GST_TYPE_STREAM_SYNCHRONIZER, NULL);
+      gst_element_factory_make ("multiqueue", NULL);
+  g_object_set (playsink->stream_synchronizer, "max-size-bytes", 0, NULL);
+  g_object_set (playsink->stream_synchronizer, "max-size-buffers", 0, NULL);
+  g_object_set (playsink->stream_synchronizer, "max-size-time", 0, NULL);
   gst_bin_add (GST_BIN_CAST (playsink),
       GST_ELEMENT_CAST (playsink->stream_synchronizer));

@@ -2201,7 +2204,7 @@ gst_play_sink_reconfigure (GstPlaySink * playsink)

       playsink->video_sinkpad_stream_synchronizer =
           gst_element_get_request_pad (GST_ELEMENT_CAST
-          (playsink->stream_synchronizer), "sink_%d");
+          (playsink->stream_synchronizer), "sink%d");
       it = gst_pad_iterate_internal_links
           (playsink->video_sinkpad_stream_synchronizer);
       g_assert (it);
@@ -2357,7 +2360,7 @@ gst_play_sink_reconfigure (GstPlaySink * playsink)

       playsink->audio_sinkpad_stream_synchronizer =
           gst_element_get_request_pad (GST_ELEMENT_CAST
-          (playsink->stream_synchronizer), "sink_%d");
+          (playsink->stream_synchronizer), "sink%d");
       it = gst_pad_iterate_internal_links
           (playsink->audio_sinkpad_stream_synchronizer);
       g_assert (it);
@@ -2474,7 +2477,7 @@ gst_play_sink_reconfigure (GstPlaySink * playsink)
       if (!playsink->text_sinkpad_stream_synchronizer) {
         playsink->text_sinkpad_stream_synchronizer =
             gst_element_get_request_pad (GST_ELEMENT_CAST
-            (playsink->stream_synchronizer), "sink_%d");
+            (playsink->stream_synchronizer), "sink%d");
         it = gst_pad_iterate_internal_links
             (playsink->text_sinkpad_stream_synchronizer);
         g_assert (it);

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list