[Bug 757563] audiomixer: issues with seamless looping (missing support for non-flushing seeks)

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Sat Nov 4 16:30:58 UTC 2017


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

Mathieu Duponchelle <mduponchelle1 at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mduponchelle1 at gmail.com

--- Comment #10 from Mathieu Duponchelle <mduponchelle1 at gmail.com> ---
(In reply to Stefan Sauer (gstreamer, gtkdoc dev) from comment #9)
> I know. That's why it is done in
> gst_aggregator_default_sink_event(), which is called from
> gst_aggregator_do_events_and_queries(), which is called from
> gst_aggregator_aggregate_func() and thats the src-pad task.
> 

Right, this function is called from the srcpad thread with serialized events,
sorry about that (I did say I only gave a quick look :)

> That's why there is a FIXME: - I am still pondering whats the best way to do
> this. We'll basically need a GQueue for sequence numbers (guint32) on the
> aggregator and on each sink-pad.
> 1) we get a seek on src, if segmented push seq_num to aggregator queue and
> each sink-pad queue
> 2) we get a segment on a sink-pad
>    2.1) check that ev.seq_num == queue.head.seq_num
>    2.2) pop the seq_num off the pad_queue
>    2.3) if none of the sink-pad queues has the aggregator-queue.head.seq_num
> at head, do the seek and pop the seq_num from the aggregator queue, the seek
> is done
> 
> This sounds somewhat involved and not cheap.

Think you could write some unit testing? Might make it easier to figure out a
good solution for that and also the other FIXME (iteration stopped in
do_events_and_queries)

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