[Bug 704427] New: Connecting multiple text stream -> funnel -> playsink is incredibly slow

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Jul 17 16:33:55 PDT 2013


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

           Summary: Connecting multiple text stream -> funnel -> playsink
                    is incredibly slow
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gstreamer (core)
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: self at brendanlong.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=249453)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=249453)
Pipeline used when this problem occurs

I'm kind of guessing on the component here. I think this is a bug in either
playsink or queue.

Note: You need to be on the latest version of gst-plugins-good from git for
qtdemux to expose both streams in the file I'm using as an example.

First, notice how this pipeline runs reasonably fast when streaming:

    gst-git gst-launch-1.0 uridecodebin \
       
uri=https://github.com/WebKit/webkit/raw/master/LayoutTests/media/content/counting-subtitled.m4v
name=d ! text/x-raw ! \
        funnel name=f ! s.text_sink d. ! s.video_sink playsink name=s \
        video-sink="fakesink" 'text-sink="fakesink dump=true"' d. ! \
        text/x-raw ! f.

Now download the file and play it locally and notice how it's so slow it seems
to be locked up:

    wget
https://github.com/WebKit/webkit/raw/master/LayoutTests/media/content/counting-subtitled.m4v
    gst-git gst-launch-1.0 uridecodebin \
        uri=file://$PWD/counting-subtitled.m4v name=d ! text/x-raw ! \
        funnel name=f ! s.text_sink d. ! s.video_sink playsink name=s \
        video-sink="fakesink" 'text-sink="fakesink dump=true"' d. ! \
        text/x-raw ! f.

The output is generally something like this:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
00000000 (0x7fdea001ddf0): 4f 6e 65                                         One 
New clock: GstSystemClock
00000000 (0x7fdea0018340): 54 77 6f                                         Two
# hang for a long time, sometimes print the next subtitle eventually

Running it in gdb, I spend a bunch of time in `gst_queue_chain`, looping on
`while (gst_queue_is_filled (queue))`.

The confusing thing is that there's no reason for the queue to be full, since
there's only one queue in the pipeline, and it's connected to a fakesink, which
presumably can pull data pretty quickly.

I also see similar problems with appsink, so I'm guessing this is some sort of
timing issue with queue, but that seems unlikely since queue is such an
important element.

This problem doesn't occur if we use the default input-selector
text-stream-combiner.

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