[Bug 756804] New: playsink: text_sink dynamic reconnection is not working

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Mon Oct 19 02:54:29 PDT 2015


https://bugzilla.gnome.org/show_bug.cgi?id=756804

            Bug ID: 756804
           Summary: playsink: text_sink dynamic reconnection is not
                    working
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: All
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-plugins-base
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: kameyameha at gmail.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

I am playing a HLS stream with subtitles. However, on bitrate change, playback
hangs.

I dumped the .dot file (see attached), and saw that text_sink pad of playsink
was not connected.

Inside gstplaysink.c, following code is there:

      if (!playsink->text_sinkpad_stream_synchronizer) {
        GValue item = { 0, };

        playsink->text_sinkpad_stream_synchronizer =
            gst_element_get_request_pad (GST_ELEMENT_CAST
            (playsink->stream_synchronizer), "sink_%u");
        it = gst_pad_iterate_internal_links
            (playsink->text_sinkpad_stream_synchronizer);
        g_assert (it);
        gst_iterator_next (it, &item);
        playsink->text_srcpad_stream_synchronizer = g_value_dup_object (&item);
        g_value_unset (&item);
        g_assert (playsink->text_srcpad_stream_synchronizer);
        gst_iterator_free (it);

        gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (playsink->text_pad),
            playsink->text_sinkpad_stream_synchronizer);
        gst_pad_link_full (playsink->text_srcpad_stream_synchronizer,
            playsink->textchain->textsinkpad, GST_PAD_LINK_CHECK_NOTHING);
      }

Now, in case of dynamic pipeline switching
playsink->text_sinkpad_stream_synchronizer will not be NULL but still below two
lines 
need to be executed for its reconnection (as is done for audio/video pads):

        gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (playsink->text_pad),
            playsink->text_sinkpad_stream_synchronizer);
        gst_pad_link_full (playsink->text_srcpad_stream_synchronizer,
            playsink->textchain->textsinkpad, GST_PAD_LINK_CHECK_NOTHING);

-- 
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