[Bug 740236] New: New interleave2 based on GstAggregator and create GstAudioAggregator from audiomixer
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Sun Nov 16 21:10:02 PST 2014
https://bugzilla.gnome.org/show_bug.cgi?id=740236
GStreamer | gst-plugins-bad | git
Summary: New interleave2 based on GstAggregator and create
GstAudioAggregator from audiomixer
Classification: Platform
Product: GStreamer
Version: git
OS/Version: Linux
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: gst-plugins-bad
AssignedTo: gstreamer-bugs at lists.freedesktop.org
ReportedBy: olivier.crete at ocrete.ca
QAContact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
First, I've split audiomixer into a GstAudioAggregator.
I've left the patches quite split up to ease review, but I would squash all of
the "split audiomixer into a baseclass" patches into one before merging.
I've then added an interleave2 element based on the "interleave" element, I did
my best to keep the same behavior/API, down to not fixing bug #708988 as I'm
not sure how to do it without breaking API. So that when GstAggregator moves
into core, we can replace "interleave" with interleave2 directly. Although the
addition of a task on the srcpad does change the behaviour a bit.
I've included an only sligthly modified version of the "interleave" unit tests,
they all pass. I've only made a gst-validate test based on Thibault's branch
which has audiomixer tests. Both still pass.
Improvements in GstAudioAggregator over the current audiomixer code:
- Put the GAP flag on buffers created solely from GAP buffers
- Drop (don't push) buffers where nothing was mixed into, ideally, we'd push a
GAP event instead, but for now we get a discont on the next buffer.
- Handle incoming streams with non-TIME segments (interleave did it, just
ignore sync)
- Handle incoming buffers with GST_CLOCK_TIME_NONE (interleave worked fine,
also ignore sync)
- Implemented latency query response (it increases the pipeline latency by up
to "blocksize" samples).
Improvements to GstAggregator:
- added a gst_aggregator_set_latency() for the sub classes' benefit.
- handle EOS in the base class, remove hack where where the subclass would tell
the base class about getting to eos by overloading the meaning of GST_FLOW_EOS.
Open questions:
- We should probably rename GstAudioAggregator and GstVideoAggregator into
GstRaw...Aggregator as they only handle raw and raw-like formats.
- The various members of GstAggregator have unclear locking rules, in
particular, it's not clear what the rules are for the "segment" member.
- I'm unhappy about how the "unresponsive" pads are handled (but I made that
argument on bug #739010 already)
- The .._set_src_pad() delaying should probably happen in the base class (which
should handle the mecanism of bufferpool and allocator negotiation), this would
make it easier for GstAudioAggregator to use a downstream GstAllocator if
possible (for example, when using shmsink).
- Handling of incoming GAP events (they're currently ignored).
git branch:
http://cgit.collabora.com/git/user/tester/gst-plugins-bad.git/log/?h=audio-aggregator
validate git branch:
http://cgit.collabora.com/git/user/tester/gst-devtools.git/log/?h=audiomixer
--
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