aggregator: Queue "latency" buffers at each sink pad.
authorOlivier Crête <olivier.crete@collabora.com>
Sat, 7 Mar 2015 00:50:08 +0000 (19:50 -0500)
committerOlivier Crête <olivier.crete@collabora.com>
Thu, 30 Jul 2015 18:00:05 +0000 (14:00 -0400)
commit08df711c0cfbbf29dd4813ed94afde3fcbd1fb21
treed0550a7203022db34bb270a02ca5c815eb98feed
parent9ab4b2e94ed22794b2c8211fd819002395e00061
aggregator: Queue "latency" buffers at each sink pad.

In the case where you have a source giving the GstAggregator smaller
buffers than it uses, when it reaches a timeout, it will consume the
first buffer, then try to read another buffer for the pad. If the
previous element is not fast enough, it may get the next buffer even
though it may be queued just before. To prevent that race, the easiest
solution is to move the queue inside the GstAggregatorPad itself. It
also means that there is no need for strange code cause by increasing
the min latency without increasing the max latency proportionally.

This also means queuing the synchronized events and possibly acting
on them on the src task.

https://bugzilla.gnome.org/show_bug.cgi?id=745768
gst/audiomixer/gstaudioaggregator.c