[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