Yan Yin [Wed, 9 Oct 2013 02:23:39 +0000 (10:23 +0800)]
packaging: Initial packaging on 1.2.0 for Tizen
Change-Id: I6bf89cdea193498b52f3ed27a6f52c342f5590c9
Sebastian Dröge [Wed, 27 Aug 2014 12:03:36 +0000 (15:03 +0300)]
Release 1.4.1
Sebastian Dröge [Wed, 27 Aug 2014 11:22:21 +0000 (14:22 +0300)]
Update .po files
Tim-Philipp Müller [Thu, 21 Aug 2014 13:02:16 +0000 (14:02 +0100)]
queue: fix race when flush-stop event comes in whilst shutting down
Don't re-start the queue push task on the source pad when a
flush-stop event comes in and we're in the process of shutting
down, otherwise that task will never be stopped again.
When the element is set to READY state, the pads get de-activated.
The source pad gets deactivated before the queue's own activate_mode
function on the source pads gets called (which will stop the thread),
so checking whether the pad is active before re-starting the task on
receiving flush-stop should be fine. The problem would happen when the
flush-stop handler was called just after the queue's activate mode
function had stopped the task.
Spotted and debugged by Linus Svensson <linux.svensson@axis.com>
https://bugzilla.gnome.org/show_bug.cgi?id=734688
Thiago Santos [Thu, 14 Aug 2014 21:53:40 +0000 (18:53 -0300)]
inputselector: always proxy caps query
Otherwise it would only be proxied for the active pad which can lead
upstream to use an incompatible caps for the downstream element.
Even if a reconfigure event is sent upstream when the pad is activated, this
will save the caps reconfiguration if it is already using an acceptable caps.
Tim-Philipp Müller [Thu, 14 Aug 2014 13:37:56 +0000 (14:37 +0100)]
base: and fix build with new g-i again
Tim-Philipp Müller [Thu, 14 Aug 2014 13:25:06 +0000 (14:25 +0100)]
base: remove g-i annotation that makes older g-ir-scanner crash
Just remove one skip annotation that causes this:
** (g-ir-compiler:12458): ERROR **: Caught NULL node, parent=empty
with older g-i versions such as 1.32.1.
Sebastian Dröge [Wed, 13 Aug 2014 10:01:23 +0000 (13:01 +0300)]
multiqueue: Only handle flow returns < EOS as errors, not e.g. flushing
Sebastian Dröge [Wed, 13 Aug 2014 09:40:37 +0000 (12:40 +0300)]
bin: Use allow-none instead of nullable until we depend on a new enough GI version
Sebastian Dröge [Wed, 13 Aug 2014 09:39:47 +0000 (12:39 +0300)]
bin: gst_bin_new() can accept NULL as name
Sebastian Dröge [Wed, 13 Aug 2014 09:37:08 +0000 (12:37 +0300)]
element: Clarify docs about gst_element_get_request_pad() and remove deprecation part
This function is not really pad or slow for the common case of requesting a
pad with the name of the template. It is only slower if you to name your pads
directly instead of letting the element handle it.
Also there's no reason to deprecate it in favor of a more complicated function
for the common case.
Sebastian Dröge [Wed, 13 Aug 2014 09:20:51 +0000 (12:20 +0300)]
queue2: Post errors if we receive EOS after downstream reported an error
There will be no further data flow that would allow us to propagate the
error upstream, causing nobody at all to post an error message.
Sebastian Dröge [Wed, 13 Aug 2014 09:15:03 +0000 (12:15 +0300)]
queue: Post errors when receiving EOS after downstream returned an error
There might be no further data flow that would allow us to propagate the
error upstream, causing nobody to post an error at all.
Sebastian Dröge [Wed, 13 Aug 2014 09:10:39 +0000 (12:10 +0300)]
multiqueue: Post errors ourselves if they are received after EOS
After EOS there will be no further buffer which could propagate the
error upstream, so nothing is going to post an error message and
the pipeline just idles around.
Руслан Ижбулатов [Sun, 27 Jul 2014 03:06:16 +0000 (03:06 +0000)]
poll: Prevent false-negative from WAKE_EVENT() on W32
SetEvent() seems to not call SetLastError(0) internally, so checking last
error after calling SetEvent() may return the error from an earlier W32 API
call. Fix this by calling SetlastError(0) explicitly.
Currently WAKE_EVENT() code is cramped into a macro and doesn't look to be
entirely correct. Particularly, it does not check the return value of
SetEvent(), only the thread-local W32 error value. It is likely that SetEvent()
actually just returns non-zero value, but the code mistakenly thinks that the
call has failed, because GetLastError() seems to indicate so.
https://bugzilla.gnome.org/show_bug.cgi?id=733805
Mohammed Sameer [Wed, 30 Jul 2014 12:46:22 +0000 (15:46 +0300)]
bufferpool: Add missing error checking to default_alloc_buffer()
default_alloc_buffer() calls gst_buffer_new_allocate() but does not check for
failed allocation.
This patch makes default_alloc_buffer() return an error (GST_FLOW_ERROR) if
buffer allocation fails.
https://bugzilla.gnome.org/show_bug.cgi?id=733974
Thiago Santos [Tue, 29 Jul 2014 17:21:33 +0000 (14:21 -0300)]
multiqueue: avoid using infinite buffers limit if finite is requested
If the current max-buffers limit it infinite and a finite value is
requested, switch to the MAX (requested, current-value) to set some
limit but not below what we know that we've needed so far.
https://bugzilla.gnome.org/show_bug.cgi?id=733837
Sebastian Rasmussen [Thu, 24 Jul 2014 20:02:58 +0000 (22:02 +0200)]
parse: Unref reference to enclosing bins
Previously all reference to enclosing bins of an element were leaked
when doing delaying setting a property.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=733697
Tim-Philipp Müller [Sat, 26 Jul 2014 13:42:54 +0000 (14:42 +0100)]
gst: include atomicqueue.h again in gst.h
It's a public header of gstreamer core, so #include <gst/gst.h>
should make the API available.
Srimanta Panda [Wed, 9 Jul 2014 13:48:10 +0000 (15:48 +0200)]
funnel: Fix for racy EOS event handling
When eos events are forwarded simultaneouly from two sinkpads on
funnel, it doesnot forward the eos to sourcepad. The reason is
sticky events are stored after the event callbacks are returned.
Therefore while one is about to store the sticky events on the its
sinkpad, other sinkpad starts checking for the eos events on all other
sinkpads and assumes eos is not present yet.
https://bugzilla.gnome.org/show_bug.cgi?id=732851
Sebastian Dröge [Sat, 19 Jul 2014 14:46:41 +0000 (16:46 +0200)]
Release 1.4.0
Sebastian Dröge [Sat, 19 Jul 2014 14:21:20 +0000 (16:21 +0200)]
Update .po files
Sebastian Dröge [Sat, 19 Jul 2014 10:16:58 +0000 (12:16 +0200)]
po: Update translations
Thibault Saunier [Thu, 17 Jul 2014 13:53:53 +0000 (15:53 +0200)]
baseparse: Return FLOW_FLUSHING when pushing a frame on a pad that has been flushed
When going to READY, it is possible that we are still pusing a frame but that
our srcpad has already been set to flushing. In that case we should not
post any error on the bus but instead cleanly return FLOW_FLUSHING.
https://bugzilla.gnome.org/show_bug.cgi?id=733320
Edward Hervey [Thu, 17 Jul 2014 05:07:36 +0000 (07:07 +0200)]
typefindelement: Propagate input buffer PTS and DTS
The initial buffers (that were used for timestamping) might have PTS
and DTS set. In order to forward those properly, get the initial
PTS/DTS from the adapter and set them on the reconstructed output
buffer.
https://bugzilla.gnome.org/show_bug.cgi?id=733291
Sebastian Rasmussen [Sat, 12 Jul 2014 15:01:23 +0000 (17:01 +0200)]
debugutils: Unref pad template after use
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=733121
Thiago Santos [Mon, 14 Jul 2014 21:10:45 +0000 (18:10 -0300)]
gst: init taglist gtype to use it in gstvalue
Otherwise it will have a 0 value and GstTagList won't be found
for GstValue functions (serialization/deserialization)
https://bugzilla.gnome.org/show_bug.cgi?id=733131
Sebastian Dröge [Fri, 11 Jul 2014 08:46:01 +0000 (10:46 +0200)]
Release 1.3.91
Sebastian Dröge [Fri, 11 Jul 2014 08:41:20 +0000 (10:41 +0200)]
Update .po files
Sebastian Dröge [Fri, 11 Jul 2014 06:51:08 +0000 (08:51 +0200)]
po: Update translations
Sebastian Rasmussen [Sat, 5 Jul 2014 16:29:29 +0000 (18:29 +0200)]
docs: Fix documentation typos and inconsistencies
* GstGlobalDeviceMonitor was renamed to GstDeviceMonitor
* Expand GST_MESSAGE_DEVICE to the full enum value names
* Correct the incorrect references to the GstDeviceProvider interfaces
* Describe caps arguments for gstcheck interface
* Add missing docs for GstNetAddressMeta and its add function
* Add docs for toc helper macros
* Avoid refering to GstValueList type as done elsewhere
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732786
Sebastian Rasmussen [Sat, 5 Jul 2014 15:13:21 +0000 (17:13 +0200)]
docs: Cleanup interface references in docs
* Delete references to removed interfaces
* Add missing documentation sections
* Fix duplicate interface references for GstDevice
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732786
Sebastian Dröge [Tue, 8 Jul 2014 09:17:41 +0000 (11:17 +0200)]
docs: There is no decodebin2 anymore, don't pretend otherwise
Thiago Santos [Mon, 7 Jul 2014 19:14:32 +0000 (16:14 -0300)]
fdsrc: fix error setting when uri is invalid
Elements should always set the GError
Tim-Philipp Müller [Sun, 6 Jul 2014 11:13:04 +0000 (12:13 +0100)]
libs: gstcheck: check that mutex is locked before g_cond_wait*() is called
Sanity check to catch problems in unit test.
Tim-Philipp Müller [Sun, 6 Jul 2014 11:12:20 +0000 (12:12 +0100)]
libs: gstcheck: init and clear global mutex and cond variables
Tim-Philipp Müller [Sun, 6 Jul 2014 11:09:31 +0000 (12:09 +0100)]
tests: fix locking in gstpoll unit test
The mutex needs to be locked when g_cond_wait*() is
called.
Matthieu Bouron [Sat, 5 Jul 2014 15:24:18 +0000 (16:24 +0100)]
gst-uninstalled: add video and base library paths from -bad
https://bugzilla.gnome.org/show_bug.cgi?id=732770
Tim-Philipp Müller [Fri, 4 Jul 2014 18:40:28 +0000 (19:40 +0100)]
tools: suppress GLib warnings when gst-inspecting deprecated properties
GLib in git will spew a g_warning() when a property marked as
deprecated via param spec flags is accessed. Suppress this by
setting the appropriate environment variable.
Sebastian Dröge [Thu, 3 Jul 2014 08:11:02 +0000 (10:11 +0200)]
message: Work around g-i/pygobject/gjs bug with ~0 in enums
GST_MESSAGE_ANY was considered a long by pygobject and gjs, and thus
couldn't be used in gst_bus_poll() and similar APIs as they expect an
int-typed enum.
Just use 0xffffffff instead for now.
https://bugzilla.gnome.org/show_bug.cgi?id=732633
Tim-Philipp Müller [Wed, 2 Jul 2014 07:41:18 +0000 (08:41 +0100)]
tests: don't use post-GLib 2.32 API in bufferlist test
g_ptr_array_insert() is GLib >= 2.40
Göran Jönsson [Tue, 1 Jul 2014 10:22:56 +0000 (12:22 +0200)]
pad: Don't unlock while iterating over all sticky events for removal
Otherwise we might end up getting the event removed from elsewhere
at the same time while we're unlocked for g_object_notify().
https://bugzilla.gnome.org/show_bug.cgi?id=732556
Sebastian Dröge [Tue, 1 Jul 2014 17:17:11 +0000 (19:17 +0200)]
identity: Proxy the accept-caps query
We always work in passthrough mode so there's no point in doing
something more clever in basetransform. Also the basetransform
code leads to problems with incomplete caps and downstream
elements that use GST_PAD_FLAG_ACCEPT_INTERSECT.
https://bugzilla.gnome.org/show_bug.cgi?id=732559
Vincent Penquerc'h [Tue, 1 Jul 2014 10:21:53 +0000 (11:21 +0100)]
basesink: reset QoS on segment event
This avoids spurious warnings about slow machine when upstream
sends new segments without flushing.
Evan Nemerson [Tue, 1 Jul 2014 06:39:18 +0000 (23:39 -0700)]
introspection: Assorted minor introspection and documentation fixes
https://bugzilla.gnome.org/show_bug.cgi?id=732534
Guillaume Desmottes [Mon, 30 Jun 2014 08:59:18 +0000 (08:59 +0000)]
devicemonitor: Stop using g_clear_pointer()
We dont't want to depend on GLib 2.34 for now.
Sebastian Dröge [Sun, 29 Jun 2014 17:16:05 +0000 (19:16 +0200)]
sparsefile: Initialize memory in unit test to make valgrind happy
We were writing unitialized stack memory to the file.
Sebastian Dröge [Sat, 28 Jun 2014 08:45:18 +0000 (10:45 +0200)]
Release 1.3.90
Sebastian Dröge [Sat, 28 Jun 2014 08:41:48 +0000 (10:41 +0200)]
Update .po files
Tim-Philipp Müller [Fri, 27 Jun 2014 09:44:32 +0000 (10:44 +0100)]
devicemonitor: don't fail when started without any filters
Just show all devices then.
Tim-Philipp Müller [Fri, 27 Jun 2014 09:44:01 +0000 (10:44 +0100)]
deviceproviderfactory: handle NULL classes argument and match any
Olivier Crête [Fri, 27 Jun 2014 01:00:40 +0000 (21:00 -0400)]
device: Add unit tests
Olivier Crête [Thu, 26 Jun 2014 21:22:25 +0000 (17:22 -0400)]
devicemonitor: Improve documentation
Olivier Crête [Thu, 26 Jun 2014 21:13:12 +0000 (17:13 -0400)]
devicemonitor: Make it possible to add multiple filters
Each filter will include a GstCaps and a set of classes to match
Olivier Crête [Thu, 26 Jun 2014 20:31:51 +0000 (16:31 -0400)]
device: Add pre-conditions
Olivier Crête [Thu, 26 Jun 2014 19:08:46 +0000 (15:08 -0400)]
GstDeviceMonitor: Rename from GstGlobalDeviceMonitor
Olivier Crête [Thu, 26 Jun 2014 18:28:09 +0000 (14:28 -0400)]
DeviceProvider: Rename from DeviceMonitor
Sebastian Dröge [Thu, 26 Jun 2014 17:31:33 +0000 (19:31 +0200)]
dataqueue: Hide from bindings
Other languages have their own data structures that are more convenient to
use.
https://bugzilla.gnome.org/show_bug.cgi?id=731303
Sebastian Dröge [Thu, 26 Jun 2014 17:30:52 +0000 (19:30 +0200)]
queuearray: Hide from bindings
Other languages have their own data structures that are more convenient to use.
https://bugzilla.gnome.org/show_bug.cgi?id=731350
Philip Withnall [Wed, 28 May 2014 09:14:45 +0000 (10:14 +0100)]
miniobject: Add missing (nullable) annotations
gst_mini_object_replace() can take NULL mini-objects.
https://bugzilla.gnome.org/show_bug.cgi?id=730873
Sebastian Dröge [Thu, 26 Jun 2014 17:02:06 +0000 (19:02 +0200)]
message: Application and element messages should not have NULL structures
It does not make sense for them.
Evan Nemerson [Wed, 11 Jun 2014 23:19:01 +0000 (16:19 -0700)]
introspection: add some missing allow-none annotations to in params
https://bugzilla.gnome.org/show_bug.cgi?id=730957
Evan Nemerson [Wed, 11 Jun 2014 23:06:19 +0000 (16:06 -0700)]
introspection: add nullability annotations to out and inout params
https://bugzilla.gnome.org/show_bug.cgi?id=730957
Evan Nemerson [Wed, 11 Jun 2014 22:21:34 +0000 (15:21 -0700)]
introspection: add missing (nullable) annotations to return values
Support for (nullable) was added to G-I at the same time as nullable
return values. Previous versions of G-I will not mark return values as
nullable, even when an (allow-none) annotation is present, so it is
not necessary to add (allow-none) annotations for compatibility with
older versions of G-I.
https://bugzilla.gnome.org/show_bug.cgi?id=730957
Evan Nemerson [Thu, 12 Jun 2014 00:15:39 +0000 (17:15 -0700)]
base: assorted introspection fixes and additions
https://bugzilla.gnome.org/show_bug.cgi?id=731542
Evan Nemerson [Thu, 12 Jun 2014 00:12:20 +0000 (17:12 -0700)]
base: add (nullable) annotations to return values
https://bugzilla.gnome.org/show_bug.cgi?id=731542
Tim-Philipp Müller [Thu, 26 Jun 2014 13:08:03 +0000 (14:08 +0100)]
tests: add another buffer list test case
Tim-Philipp Müller [Thu, 26 Jun 2014 12:24:08 +0000 (13:24 +0100)]
tests: port and re-enable buffer list tests
And remove some which don't apply any more.
George Kiagiadakis [Thu, 26 Jun 2014 08:58:04 +0000 (11:58 +0300)]
tests: enhance the gstcaps test_features to also test gst_caps_set_features()
Compliments my previous patch for gst_caps_set_features, which would
previously assert and leak the old GstCapsFeatures if the caps already
had a GstCapsFeatures and you were trying to replace it with a new one.
George Kiagiadakis [Thu, 26 Jun 2014 08:16:34 +0000 (11:16 +0300)]
caps: unset the parent refcount of the old features before freeing them in gst_caps_set_features()
Otherwise gst_caps_features_free() asserts and the features structure is leaked
Thiago Santos [Mon, 16 Jun 2014 22:30:06 +0000 (19:30 -0300)]
baseparse: avoid returning _OK for _NOT_LINKED
When the parser receives non-aligned packets it can push a buffer
and get a not-linked return while still leaving some data still to
be parsed. This remaining data will not form a complete frame and
the subclass likely returns _OK and baseparse would take that
as the return, while it the element is actually not-linked.
This patch fixes this by storing the last flow-return from a push
and using that if a parsing operation doesn't result in data being
flushed or skipped.
https://bugzilla.gnome.org/show_bug.cgi?id=731474
Tim-Philipp Müller [Wed, 25 Jun 2014 10:40:57 +0000 (11:40 +0100)]
elements: fix copyright and remove gtk-doc chunk
Trivial as it may be, this code was mostly copied from
somewhere else. The gtk-doc chunk is not needed, since
it's not public API.
Olivier Crête [Tue, 3 Jun 2014 02:07:52 +0000 (22:07 -0400)]
filesrc: Ignore seek error on non-seekable files
This make it works with FIFOs.
https://bugzilla.gnome.org/show_bug.cgi?id=731176
Sebastian Dröge [Sun, 22 Jun 2014 17:36:14 +0000 (19:36 +0200)]
Back to development
Sebastian Dröge [Sun, 22 Jun 2014 16:07:42 +0000 (18:07 +0200)]
Release 1.3.3
Sebastian Dröge [Sun, 22 Jun 2014 15:15:40 +0000 (17:15 +0200)]
Update .po files
Sebastian Dröge [Sun, 22 Jun 2014 12:23:03 +0000 (14:23 +0200)]
po: Update translations
Tim-Philipp Müller [Sun, 22 Jun 2014 11:52:01 +0000 (12:52 +0100)]
tests: add unit test for gst_caps_is_any() and _is_empty()
https://bugzilla.gnome.org//show_bug.cgi?id=731704
Tim-Philipp Müller [Sun, 22 Jun 2014 11:50:42 +0000 (12:50 +0100)]
caps: gst_caps_is_any() should return TRUE or FALSE
Not some flag value instead of TRUE. Fixes code like
gst_caps_is_any() == TRUE.
https://bugzilla.gnome.org//show_bug.cgi?id=731704
Tim-Philipp Müller [Sun, 1 Jun 2014 15:56:41 +0000 (16:56 +0100)]
device: rename "klass" and get_klass() to "device-class" and _get_device_class()
There's some precedent in GstElementFactory, but a
"klass" property just seems weird.
Tim-Philipp Müller [Fri, 20 Jun 2014 17:34:44 +0000 (18:34 +0100)]
benchmarks: capsnego: add --loops command line option
And default to 50 loops.
Tim-Philipp Müller [Fri, 20 Jun 2014 16:14:52 +0000 (17:14 +0100)]
benchmark: capsnego: use GOptionContext for option parsing
Tim-Philipp Müller [Thu, 19 Jun 2014 11:10:23 +0000 (12:10 +0100)]
tests: fix compiler warnings in gstvalue tests
Calling GST_VALUE_HOLDS_*(&v) now results in a compiler
warning about value!=NULL always being false, so check
type directly in those cases.
Tim-Philipp Müller [Tue, 17 Jun 2014 21:45:57 +0000 (22:45 +0100)]
value: simplify GST_VALUE_HOLDS for our boxed and fundamental types
Boxed types can't be derived from, and we don't support
deriving from our special fundamental types (the code
checks for GType equality in most places.
Olivier Crête [Fri, 20 Jun 2014 20:55:06 +0000 (16:55 -0400)]
GstDevice: Document GstDevice and related classes
Srimanta Panda [Mon, 16 Jun 2014 11:47:55 +0000 (13:47 +0200)]
Fix funnel EOS handling and wrong unittest
When no data is coming from sinkpads and eos events
arrived at one of the sinkpad, funnel forwards the EOS
event to downstream. It forwards the EOS because lastsink pad
is NULL. Also the unit testcase of the funnel is not checking
the correct behavior as it should. The unit test case should
fail if one of the sink pad has already EOS present on it and
we are trying to push one more EOS.
https://bugzilla.gnome.org/show_bug.cgi?id=731716
Tim-Philipp Müller [Thu, 19 Jun 2014 07:09:55 +0000 (08:09 +0100)]
gstvalue: optimise checks for lists
Our fundamental types are non-derivable, so we can
just check for equality. Also avoid doing the same
check multiple times in a couple of places.
Tim-Philipp Müller [Thu, 19 Jun 2014 07:06:31 +0000 (08:06 +0100)]
gstvalue: use g_assert() in internal function for already-checked things
So these get compiled out for releases.
Tim-Philipp Müller [Thu, 19 Jun 2014 07:05:40 +0000 (08:05 +0100)]
gstvalue: add internal _can_compare_unchecked()
Tim-Philipp Müller [Thu, 19 Jun 2014 07:03:37 +0000 (08:03 +0100)]
gstvalue: add internal _list_concat() that takes ownership of input values
Avoids unnecessary copies.
Tim-Philipp Müller [Wed, 18 Jun 2014 18:06:58 +0000 (19:06 +0100)]
structure: simplify value type checks in getters
Just check for GType equality in common cases.
Sebastian Dröge [Thu, 19 Jun 2014 07:29:18 +0000 (09:29 +0200)]
value: Add a FIXME 2.0 for a fraction ranges optimization
Currently we leak the internal representation of them as two GValues that
contain a fraction. Without this we could store fraction ranges as
data[0] = (min_n << 32) | (min_d)
data[1] = (max_n << 32) | (max_d)
and wouldn't require an additional allocation per range.
Sebastian Dröge [Thu, 19 Jun 2014 07:23:56 +0000 (09:23 +0200)]
value: Make sure to cast int range values to guints before storing them
Otherwise negative values will sets all of the 64 bits due to two's
complement's definition of negative values.
Also add a test for negative int ranges.
Tim-Philipp Müller [Thu, 19 Jun 2014 06:57:11 +0000 (07:57 +0100)]
win32: update exports
Sebastian Dröge [Thu, 19 Jun 2014 07:05:18 +0000 (09:05 +0200)]
value: Store integer ranges directly in a GValue without additional allocation
Micro optimization to save some allocations. Next step to do this
with fraction ranges too.
Edward Hervey [Thu, 19 Jun 2014 06:43:02 +0000 (08:43 +0200)]
gst_private: Fix duplicate definition
Sebastian Dröge [Thu, 19 Jun 2014 06:05:03 +0000 (08:05 +0200)]
gst: Store more basic type GTypes in variables
Micro optimization to change a function call to a variable access
for all our basic types.
Sebastian Dröge [Thu, 19 Jun 2014 06:04:01 +0000 (08:04 +0200)]
value: Store our fundamental type GTypes in variables
Micro optimization to change a function call to a variable access
for all our basic types.
Edward Hervey [Tue, 17 Jun 2014 05:31:48 +0000 (07:31 +0200)]
gstvalue: Speed up gst_value_intersect/_subtract
Both gst_value_intersect and gst_value_subtract will call
gst_value_compare if one of their arguments isn't a list.
gst_value_compare will then re-do a check to see if one of
the arguments is a list (for the special case of comparing a unitary
value with a list of length 1).
The problem is that the various G_VALUE_HOLDS represent an expensive
amount of calling gst_value_compare (almost half of it) to see if
the provided arguments are list. These checks can be done without
when we know that the arguments aren't lists.
* Create a new "nolist" gst_value_compare which avoids that special
case comparision
Benchmarks:
valgrind/callgrind: average speedup in instruction calls for
gst_value_intersect and gst_value_subtract is around 56% (Makes 63%
of the calls it used to take previously)
tests/benchmarks/capsnego: With default settings (depth 4, children 3
607 elements), time taken for transition from READY to PAUSED:
Before : 00.
391519153
After : 00.
220397492
56% of the time previously used, +77% speedup
https://bugzilla.gnome.org/show_bug.cgi?id=731756
Tim-Philipp Müller [Tue, 17 Jun 2014 13:39:00 +0000 (14:39 +0100)]
tests: remove some cruft from the bufferlist test
Buffers no longer carry caps, and bufferlists don't have
groups where buffers may need to be merged into one any more.