Sebastian Dröge [Wed, 24 Jun 2015 22:04:07 +0000 (00:04 +0200)]
Back to development
Sebastian Dröge [Wed, 24 Jun 2015 20:49:17 +0000 (22:49 +0200)]
Release 1.5.2
Sebastian Dröge [Wed, 24 Jun 2015 20:45:00 +0000 (22:45 +0200)]
Update .po files
Thiago Santos [Tue, 23 Jun 2015 02:37:27 +0000 (23:37 -0300)]
tests: gstutils: fix wrong description of test element
It is a fakesink with request pads, not a source
Jonas Holmberg [Wed, 24 Jun 2015 13:35:16 +0000 (15:35 +0200)]
bufferpool: Fixed compiler warning
The pool variable was unused when buidling with debug disabled.
Sebastian Dröge [Wed, 24 Jun 2015 09:13:40 +0000 (11:13 +0200)]
po: Update translations
Sebastian Dröge [Wed, 24 Jun 2015 09:12:03 +0000 (11:12 +0200)]
win32: Update .def file for new API
Hyunjun Ko [Wed, 24 Jun 2015 05:19:04 +0000 (14:19 +0900)]
basesink: need to deep-copy last buffer list in drain
https://bugzilla.gnome.org/show_bug.cgi?id=751420
Sebastian Dröge [Wed, 24 Jun 2015 08:52:02 +0000 (10:52 +0200)]
bufferlist: Warn if copying a buffer fails in gst_buffer_list_copy_deep()
Hyunjun Ko [Wed, 24 Jun 2015 05:18:47 +0000 (14:18 +0900)]
bufferlist: add new api gst_buffer_list_copy_deep
https://bugzilla.gnome.org/show_bug.cgi?id=751420
Jonas Holmberg [Tue, 23 Jun 2015 14:58:56 +0000 (16:58 +0200)]
gstcheck: Print newline in message handler
The message handler is supposed to print a newline after the message
just like the default message handler.
Song Bing [Fri, 12 Jun 2015 08:54:32 +0000 (16:54 +0800)]
inputselector: Handle different duration track selection
Support track switch from EOS track to non-EOS one.
https://bugzilla.gnome.org/show_bug.cgi?id=750761
Song Bing [Fri, 12 Jun 2015 08:52:46 +0000 (16:52 +0800)]
pad: Clear EOS flag after received STREAM_START event
Clear EOS flag after received STREAM_START event
https://bugzilla.gnome.org/show_bug.cgi?id=750761
Thiago Santos [Mon, 22 Jun 2015 17:30:49 +0000 (14:30 -0300)]
tests: gstutils: add tests for gst_element_get_compatible_pad
Adds tests for gst_element_get_compatible_pad for when it has to
request pads.
Note that these tests don't cover the case when it has to request
a pad that already exists.
https://bugzilla.gnome.org/show_bug.cgi?id=751235
Thiago Santos [Fri, 19 Jun 2015 18:46:56 +0000 (15:46 -0300)]
utils: use caps when getting a compatible pad by template
Do not ignore the caps argument when requesting a pad by template.
This is particularly harmful when the pad caps query by default
returns ANY so it will match the first template instead of the
one that actually intersects with the caps.
https://bugzilla.gnome.org/show_bug.cgi?id=751235
Jan Schmidt [Mon, 22 Jun 2015 14:14:30 +0000 (00:14 +1000)]
gstsample.h: Include gstbufferlist.h now that it uses GstBufferList
Mathieu Duponchelle [Wed, 17 Jun 2015 14:12:13 +0000 (16:12 +0200)]
concat: when releasing pad, send EOS appropriately.
Previously, concat sent an EOS if there was a next pad.
https://bugzilla.gnome.org/show_bug.cgi?id=751107
Carlos Rafael Giani [Tue, 16 Jun 2015 14:14:18 +0000 (16:14 +0200)]
concat: Add adjust-base property
This disables the segment.base adjustments, which is useful if downstream
takes care of base adjustments already (example: a combination of concat
and streamsynchronizer)
https://bugzilla.gnome.org/show_bug.cgi?id=751047
Sebastian Dröge [Mon, 22 Jun 2015 12:04:45 +0000 (14:04 +0200)]
basesink: Unset the last buffer list if we only got a buffer
Also remember any preroll buffer list.
Sebastian Dröge [Mon, 22 Jun 2015 11:33:29 +0000 (13:33 +0200)]
sample: Add new API to the docs
Hyunjun [Mon, 22 Jun 2015 11:02:55 +0000 (20:02 +0900)]
basesink: enable to get last sample including buffer list if needed
In case of a buffer list rendering, last-sample is not updated.
It needs to be updated and enable to get buffer list from last-sample.
https://bugzilla.gnome.org/show_bug.cgi?id=751026
Hyunjun [Mon, 22 Jun 2015 10:35:40 +0000 (19:35 +0900)]
sample: add gst_sample_set/get_buffer_list apis
Allowed to set/get buffer list to sample if needed
https://bugzilla.gnome.org/show_bug.cgi?id=751026
Tim-Philipp Müller [Fri, 19 Jun 2015 09:52:10 +0000 (10:52 +0100)]
test.py: remove accidentally committed file
Nicolas Dufresne [Thu, 18 Jun 2015 15:51:48 +0000 (11:51 -0400)]
doc: Unify Since mark for attribute and enum
As this show up as prose in the doc, simply make it consistent
and "arguable" nicer to read.
Nicolas Dufresne [Thu, 18 Jun 2015 15:48:50 +0000 (11:48 -0400)]
doc: Remove parenthesis around Since:
This confuse the parser, hence it does not endup in the doc and the
index properly.
Jan Schmidt [Wed, 6 May 2015 06:44:48 +0000 (16:44 +1000)]
Add GstParentBufferMeta
A core meta which helps implement the old concept
of sub-buffering in some situations, by making it
possible for a buffer to keep a ref on a different
parent buffer. The parent buffer is unreffed when
the Meta is freed.
This meta is used to ensure that a buffer whose
memory is being shared to a child buffer isn't freed
and returned to a buffer pool until the memory
is.
https://bugzilla.gnome.org/show_bug.cgi?id=750039
Nicolas Dufresne [Tue, 16 Jun 2015 22:08:24 +0000 (18:08 -0400)]
gi: Use INTROSPECTION_INIT for --add-init-section
This new define was added to common. The new init section fixed
compilation warning found in the init line that was spread across
all files.
Nicolas Dufresne [Tue, 16 Jun 2015 21:46:44 +0000 (17:46 -0400)]
Automatic update of common submodule
From
6015d26 to
f74b2df
Nicolas Dufresne [Mon, 15 Jun 2015 14:06:00 +0000 (10:06 -0400)]
clock: Fix _STIME_FORMAT macros
This macro didn't work well as it relied on the sign on the last
divided number (number of days). This value is most of the time
zero, and zero is considered positive in printf. Instead, deal with
the sign manually, and resuse the original macros for the rest. This
actually simplify the macro a lot.
Tim-Philipp Müller [Sun, 14 Jun 2015 19:48:29 +0000 (20:48 +0100)]
typefindelement: reset segment only once streaming has stopped
Fixes the occasional criticals in the discoverer unit test.
https://bugzilla.gnome.org/show_bug.cgi?id=745073
https://bugzilla.gnome.org/show_bug.cgi?id=750823
Nicolas Dufresne [Sun, 14 Jun 2015 15:23:22 +0000 (11:23 -0400)]
doc: Add more missing symbols in lib-sections.txt
These where causing broken links.
Nicolas Dufresne [Sun, 14 Jun 2015 15:22:54 +0000 (11:22 -0400)]
doc: Fix reference to unknown type GstNetAddress
Nicolas Dufresne [Sun, 14 Jun 2015 15:22:36 +0000 (11:22 -0400)]
doc: Include and fix GstControlPoint
Nicolas Dufresne [Sun, 14 Jun 2015 15:21:26 +0000 (11:21 -0400)]
doc: Add GstNetControlMessageMeta to the doc
This is being referenced elsewhere, but results in broken links.
It seems to be public API, so I think it should be in the doc.
Nicolas Dufresne [Sun, 14 Jun 2015 14:59:51 +0000 (10:59 -0400)]
doc: Document GstPushSrcClass
Nicolas Dufresne [Sun, 14 Jun 2015 14:58:18 +0000 (10:58 -0400)]
doc: Better document new GstCollectData.ABI.abi.dts
The doc generator get confused with the inline structure. So
workaround by wrapping the inner of the structure with
public/private mark, and document that GST_COLLECT_PADS_DTS macro
shall be used to access this.
Nicolas Dufresne [Sun, 14 Jun 2015 14:56:28 +0000 (10:56 -0400)]
doc: Various doc fixes for libgstreamer-base
* Fix function name in sections.txt
* Add few missing or fix miss-named
* Workaround gtk-doc being confused with non typedef
types (loose track of public/private
Nicolas Dufresne [Sun, 14 Jun 2015 14:25:52 +0000 (10:25 -0400)]
doc: More doc warning fixes
So from this point, the remaining warning for libgstreamer are about
protected member not showing in the doc. This may need some discussion
with upstream gtk-doc people.
* Remove % in from of none macro
* Fixed GST_TYPE_FAGS -> GST_TYPE_FAG_SET
* Minor wording fix
* Can't link to GstUri.port, so split the .port part
Nicolas Dufresne [Sun, 14 Jun 2015 13:17:21 +0000 (09:17 -0400)]
doc: In GstUri we meant nul-terminated, not %NULL
%NULL refers to the pointer. I've written it this way in one
word as this is what GLib uses.
Nicolas Dufresne [Sun, 14 Jun 2015 01:02:20 +0000 (21:02 -0400)]
doc: Cannot reference GST_PACKAGE_RELEASE_DATETIME
So simply remove the % sign.
Nicolas Dufresne [Sun, 14 Jun 2015 00:52:01 +0000 (20:52 -0400)]
doc: Fix typo in ref _clock_wait_for_sync()
Nicolas Dufresne [Sun, 14 Jun 2015 00:37:34 +0000 (20:37 -0400)]
doc: Fix GstUri doc typos
* Use &perctn; instead of reserved character %
* NULL take two L
Nicolas Dufresne [Sun, 14 Jun 2015 00:19:59 +0000 (20:19 -0400)]
doc: Fix Since: marks
There was few Since: mark missing their column. Also unify the way
we set the Since mark on enum value and structure members. These
sadly don't show up in the index.
Nicolas Dufresne [Sun, 14 Jun 2015 00:01:27 +0000 (20:01 -0400)]
doc: Add gst_buffer_copy_deep()
Nicolas Dufresne [Sat, 13 Jun 2015 23:47:45 +0000 (19:47 -0400)]
gi: Skip gst_consitency_checker_new
This non boxed type cannot be allocated safely.
Nicolas Dufresne [Sat, 13 Jun 2015 23:46:21 +0000 (19:46 -0400)]
doc: Add indexes of added APIs
One of the nice feature in GTK doc is that it generate indexes
of added APIs base on the since marker. Include that in our doc
while fixing the issue of duplicate ID (produce xml contains that
id it seems)
Nicolas Dufresne [Sat, 13 Jun 2015 19:10:53 +0000 (15:10 -0400)]
doc: Make ..._source_find_control_point_iter transfer none
Nicolas Dufresne [Sat, 13 Jun 2015 18:40:43 +0000 (14:40 -0400)]
doc: Silence warning about unused gstntppacket section
This API is internal.
Nicolas Dufresne [Sat, 13 Jun 2015 18:37:42 +0000 (14:37 -0400)]
Revert "doc: Add GstNtpPacket to the doc"
This reverts commit
c4eb876961aba1092c4831a8feaf48d7be1e38ae.
Oops, this is not a public API
Nicolas Dufresne [Sat, 13 Jun 2015 18:21:41 +0000 (14:21 -0400)]
doc: Add GstNtpPacket to the doc
Nicolas Dufresne [Sat, 13 Jun 2015 17:55:27 +0000 (13:55 -0400)]
doc: Remove gstindex from doc comment
Moving that to normal comment to silence the generator. GstIndex
is not in GStreamer library at the moment (removed from 0.10).
Nicolas Dufresne [Sat, 13 Jun 2015 17:48:03 +0000 (13:48 -0400)]
gi: Set collectpads function param scope
Nicolas Dufresne [Sat, 13 Jun 2015 17:42:58 +0000 (13:42 -0400)]
gi: Skip allocator of non-boxed structure
These are not usable as they are, and can easily lead to crash
or leaks. This also silence warning from the scanner. If we manage to
make this usable, we can then remove that mark, it will require
to make this type boxed.
Nicolas Dufresne [Sat, 13 Jun 2015 17:24:13 +0000 (13:24 -0400)]
doc: Give gstconfig a nice name
As all other section do have a nice came case name, it seems
more consistent.
Nicolas Dufresne [Sat, 13 Jun 2015 17:19:21 +0000 (13:19 -0400)]
doc: Add missing gst_event_new/parse_protection
Nicolas Dufresne [Sat, 13 Jun 2015 17:19:05 +0000 (13:19 -0400)]
doc: Give gstprotection section a nice title
Nicolas Dufresne [Sat, 13 Jun 2015 17:14:30 +0000 (13:14 -0400)]
doc: Remove uneeded protectionevent section
These functions are part of gstevent section already. Keep the doc,
since it's good.
Nicolas Dufresne [Sat, 13 Jun 2015 16:32:49 +0000 (12:32 -0400)]
taglist: Add missing scope to func param
This tell GI if this function is for actions (call) or is the
answer of this method being asynchronous (async). In this case
it's a call. This also silence warning from the GI scanner.
Nicolas Dufresne [Sat, 13 Jun 2015 16:27:31 +0000 (12:27 -0400)]
gstprotection: Add missing Since 1.6 mark
Nicolas Dufresne [Sat, 13 Jun 2015 16:26:13 +0000 (12:26 -0400)]
gstprection: _add_protection_meta() is transfer none
Just like gst_buffer_add_meta() this function should also be
transfer none. This also silence a gi warning about returning
a copy of a non boxed bare structure.
Nicolas Dufresne [Sat, 13 Jun 2015 16:25:19 +0000 (12:25 -0400)]
gstprotection: Add missing namespace to macro
GST_PROTECTION_SYSTEM_ID_CAPS_FIELD was missing the GST_ namespace.
Add it before its too late.
Nicolas Dufresne [Sat, 13 Jun 2015 15:55:10 +0000 (11:55 -0400)]
doc: Keep SECTION: after the ifdef
Otherwise GTK doc will see it as often as we include that files
and warn about duplicated SECTION:
Nicolas Dufresne [Sat, 13 Jun 2015 14:23:52 +0000 (10:23 -0400)]
gi: Skip mini object method that play with refcounting
It make no sense to allow using that. Any use would lead to leak
of crash. Note that GMiniObject is entirely unusable as you cannot
cast from let's say GstBuffer to GstMiniObject.
Tim-Philipp Müller [Sat, 13 Jun 2015 14:05:05 +0000 (15:05 +0100)]
libs: more doc scanner fixes
gstbasetransform.h:196: Warning: GstBase: "@submit_input_buffer" parameter unexpected at this location:
* @submit_input_buffer: Function which accepts a new input buffer and pre-processes it.
gstnetcontrolmessagemeta.c:103: Warning: GstNet: gst_buffer_add_net_control_message_meta: unknown parameter 'message' in documentation comment, should be 'addr'
Nicolas Dufresne [Sat, 13 Jun 2015 13:37:46 +0000 (09:37 -0400)]
doc: Fix annoation for GstMiniObject
Replacing reprecated "Ref Func:", "Unref Fun:" etc. comment block
with appropriate (ref-func name) etc. annotation.
Nicolas Dufresne [Sat, 13 Jun 2015 13:34:06 +0000 (09:34 -0400)]
doc: Fix unbalanced parenthesis
Nicolas Dufresne [Sat, 13 Jun 2015 13:30:24 +0000 (09:30 -0400)]
doc: Fix more typo
Nicolas Dufresne [Sat, 13 Jun 2015 13:22:41 +0000 (09:22 -0400)]
doc: Fix type in previous commit
Marker is (value .. not (alue.
Nicolas Dufresne [Sat, 13 Jun 2015 13:19:27 +0000 (09:19 -0400)]
doc: Don't use deprecated Value: and Type: comment
Instead use appropriate annotation. Annotations can be added
to the right of the constant name in a comment block.
Nicolas Dufresne [Fri, 12 Jun 2015 21:07:38 +0000 (17:07 -0400)]
collectpads: Add new macro to the doc
https://bugzilla.gnome.org/show_bug.cgi?id=740575
Nicolas Dufresne [Fri, 12 Jun 2015 21:07:26 +0000 (17:07 -0400)]
clock: Add new signed time macro to the doc
https://bugzilla.gnome.org/show_bug.cgi?id=740575
Nicolas Dufresne [Wed, 10 Jun 2015 18:17:01 +0000 (14:17 -0400)]
collectpads: Don't initially send an invalid DTS
Sending a possibly invalid DTS may confuse the muxers, which will
then think the DTS is going backward.
https://bugzilla.gnome.org/show_bug.cgi?id=740575
Nicolas Dufresne [Fri, 3 Apr 2015 21:54:50 +0000 (17:54 -0400)]
collectpads: Add negative DTS support
Make gst_collect_pads_clip_running_time() function also store the
signed DTS in the CollectData. This signed DTS value can be used by
muxers to properly handle streams where DTS can be negative initially.
https://bugzilla.gnome.org/show_bug.cgi?id=740575
Nicolas Dufresne [Fri, 12 Jun 2015 16:06:05 +0000 (12:06 -0400)]
clock: Add signed time utilities
Add utility to print signed value of time. This is useful to
trace running time values in gint64 or GstClockTimeDiff values.
Additionally, define GST_CLOCK_STIME_NONE to indicate an invalid
signed time value and validation macro. New macros are:
GST_CLOCK_STIME_NONE
GST_CLOCK_STIME_IS_VALID
GST_STIME_FORMAT
GST_STIME_ARGS
https://bugzilla.gnome.org/show_bug.cgi?id=740575
Thiago Santos [Wed, 10 Jun 2015 23:44:26 +0000 (20:44 -0300)]
message: add allow-none to gst_message_new_ function
No restriction for creating messages without a source
Tim-Philipp Müller [Fri, 12 Jun 2015 12:45:33 +0000 (13:45 +0100)]
win32: update .def file for new API
Lazar Claudiu [Wed, 27 May 2015 09:29:41 +0000 (12:29 +0300)]
controller: Added absolute direct control binding, example and test
Fixes: 740502
API: gst_direct_control_binding_new_absolute
Matthew Waters [Wed, 3 Jun 2015 14:03:16 +0000 (00:03 +1000)]
memory: provide a mem_map_full that takes the GstMapInfo
Follow up of
7130230ddb349d0ca7942abdba26b7558df055d1
Provide the memory implementation the GstMapInfo that will be used to
map/unmap the memory. This allows the memory implementation to use
some scratch space in GstMapInfo to e.g. track different map/unmap
behaviour or store extra implementation defined data about the map
in use.
https://bugzilla.gnome.org/show_bug.cgi?id=750319
Alison Chaiken [Wed, 8 Apr 2015 21:21:43 +0000 (14:21 -0700)]
docs: manual: fix name reversal in basics-pads
https://bugzilla.gnome.org/show_bug.cgi?id=747532
Tim-Philipp Müller [Thu, 11 Jun 2015 22:06:26 +0000 (23:06 +0100)]
gst_writev: define UIO_MAXIOV on iOS/OSX
Apparently it's only seton iOS/OSX if defined(KERNEL).
Jan Schmidt [Thu, 11 Jun 2015 15:15:19 +0000 (01:15 +1000)]
gst_writev: Respect UIO_MAXIOV limit for the iov array
If we receive more than UIO_MAXIOV (1024 typically) buffers
in a single writev call, fall back to consolidating them
into one output buffer or multiple write calls.
This could be made more optimal, but let's wait until it's
ever a bottleneck for someone
Sebastian Dröge [Thu, 11 Jun 2015 10:34:04 +0000 (12:34 +0200)]
pipeline: Add gst_pipeline_set_latency(), getter and GObject property
This overrides the default latency handling and configures the specified
latency instead of the minimum latency that was returned from the LATENCY
query.
https://bugzilla.gnome.org/show_bug.cgi?id=750782
Carlos Rafael Giani [Thu, 11 Jun 2015 09:37:30 +0000 (11:37 +0200)]
concat: Add active-pad property
https://bugzilla.gnome.org/show_bug.cgi?id=746949
Sebastian Dröge [Thu, 11 Jun 2015 09:05:53 +0000 (11:05 +0200)]
concat: Also reset the current start offset when receiving a FLUSH_STOP on the srcpad
Sebastian Dröge [Thu, 11 Jun 2015 09:05:38 +0000 (11:05 +0200)]
concat: Add some newlines to event handling code to make the code look a bit less dense
Carlos Rafael Giani [Thu, 11 Jun 2015 08:53:30 +0000 (10:53 +0200)]
concat: Reset segment base offset after FLUSH_STOP with reset_time = TRUE
If the reset_time value of a FLUSH_STOP event is set to TRUE, the pipeline
will have the base_time of its elements reset. This means that the concat
element's current_start_offset has to be reset to 0, since it was
calculated with the old base-time in mind.
Only FLUSH_STOP events coming from the active pad are looked at.
Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
Carlos Rafael Giani [Sat, 28 Mar 2015 15:46:32 +0000 (16:46 +0100)]
concat: Forward FLUSH_START and FLUSH_STOP events
Without this, seeking deadlocks if performed while the pipeline is paused.
Only flush events coming from the active pad are forwarded.
https://bugzilla.gnome.org/show_bug.cgi?id=745366
Stefan Sauer [Tue, 9 Jun 2015 12:28:30 +0000 (14:28 +0200)]
cruft: add the obsolete tmpl dir to cruft-dirs
Edward Hervey [Tue, 9 Jun 2015 09:30:10 +0000 (11:30 +0200)]
Automatic update of common submodule
From
d9a3353 to
6015d26
Edward Hervey [Tue, 9 Jun 2015 09:01:53 +0000 (11:01 +0200)]
filesink: Fix fsync/_commit usage
_MSC_VER will only be defined when building *on* windows and not just
*for* windows. Instead, use the G_OS_WIN32 define
Sebastian Dröge [Tue, 9 Jun 2015 08:59:42 +0000 (10:59 +0200)]
ptp: Check for the actual API we use instead of just looking for __APPLE__
Should fix the build on FreeBSD, DragonFly and other BSDs.
https://bugzilla.gnome.org/show_bug.cgi?id=750530
Sebastian Dröge [Mon, 8 Jun 2015 15:10:56 +0000 (17:10 +0200)]
netclientclock: Use the new GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC flag
https://bugzilla.gnome.org/show_bug.cgi?id=750574
Sebastian Dröge [Mon, 8 Jun 2015 15:04:55 +0000 (17:04 +0200)]
netclientclock: Make the clock a wrapper clock around an internal clock
The internal clock is only used for slaving against the remote clock, while
the user-facing GstClock can be additionally slaved to another clock if
desired. By default, if no master clock is set, this has exactly the same
behaviour as before. If a master clock is set (which was not allowed before),
the user-facing clock is reporting the remote clock as internal time and
slaves this to the master clock.
This also removes the weirdness that the internal time of the netclientclock
was always the system clock time, and not the remote clock time.
https://bugzilla.gnome.org/show_bug.cgi?id=750574
Stefan Sauer [Mon, 8 Jun 2015 21:07:40 +0000 (23:07 +0200)]
Automatic update of common submodule
From
d37af32 to
d9a3353
Tim-Philipp Müller [Mon, 8 Jun 2015 19:00:47 +0000 (20:00 +0100)]
tests: fakesink: fix string leak in unit test
Jan Schmidt [Mon, 8 Jun 2015 14:52:34 +0000 (00:52 +1000)]
filesink: Fix Windows build by using _commit instead of fsync.
Sebastian Dröge [Mon, 8 Jun 2015 10:22:56 +0000 (12:22 +0200)]
ptp: Make sure to always initialize the variables we put into the statistics structure later
CID
1304676,
1304677,
1304678,
1304679.
Sebastian Dröge [Mon, 8 Jun 2015 10:02:39 +0000 (12:02 +0200)]
ptp: Ensure that not too much is read from or written to struct ifreq.ifr_name
Jan Schmidt [Mon, 8 Jun 2015 09:33:03 +0000 (19:33 +1000)]
basetransform: Add Since markers for new vfuncs
Add Since: 1.6 markers for the new submit_input_buffer() and
generate_output() vfuncs
Jan Schmidt [Fri, 22 May 2015 15:08:29 +0000 (01:08 +1000)]
basetransform: Split input buffer processing from output generation
Allow for sub-classes which want to collate incoming buffers or
split them into multiple output buffers by separating the input
buffer submission from output buffer generation and allowing
for looping of one of the phases depending on pull or push mode
operation.
https://bugzilla.gnome.org/show_bug.cgi?id=750033