[Bug 745768] New: aggregator: Add internal queue

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Fri Mar 6 18:22:31 PST 2015


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

            Bug ID: 745768
           Summary: aggregator: Add internal queue
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-plugins-bad
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: olivier.crete at ocrete.ca
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

If one has an GstAggregator based element (such as audiomixer), where the input
buffers are smaller than the output buffers, and one of the input pads is not
receiving data. Something like:

gst-launch-1.0 audiotestsrc is-live=1 ! queue ! audio/x-raw, rate=48000,
format=S16LE ! audiomixer name=am output-buffer-duration=100000000
latency=200000000 ! pulsesink   udpsrc ! audioparse !  queue ! audio/x-raw,
rate=48000, format=S16LE ! am.

When the timeout is reached, the mixer gets one buffers from the queue, mixes
it in, and then tries to get another, but if the queue's srcpad task was not
fast enough, it may be that there is no buffer on the GstAggregator's sinkpad
by the time the aggregate function is looped again. So the output buffer is
pushed without it, then on the next iteration, it thinks the buffer is late,
drops it, and we get silence!


That said, please don't merge this patch, as it changes the semantics of the
->clip() vfunc in GstAggregator, and I don't understand how it's meant to work
and it breaks GstVideoAggregator! What exactly is the ->clip() method meant to
do? Previously, it would only be called while there was no buffer inside the
pad, but with a queue, this is much more problematic, should it be the first
time a buffer is pulled from a pad by gst_aggregator_pad_get/steal_buffer()
instead?

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