Commit graph

15754 commits

Author SHA1 Message Date
George Kiagiadakis 780c83d5c4 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
2014-06-26 11:16:34 +03:00
Thiago Santos b7516dbf7c 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
2014-06-25 12:13:07 -03:00
Tim-Philipp Müller 8f7e581106 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.
2014-06-25 11:43:04 +01:00
Olivier Crête f53a8a85a7 filesrc: Ignore seek error on non-seekable files
This make it works with FIFOs.

https://bugzilla.gnome.org/show_bug.cgi?id=731176
2014-06-23 16:32:17 -04:00
Sebastian Dröge a76f319e3b Back to development 2014-06-22 19:36:14 +02:00
Sebastian Dröge 755ca23148 Release 1.3.3 2014-06-22 18:07:42 +02:00
Sebastian Dröge f649cba75b Update .po files 2014-06-22 17:15:40 +02:00
Sebastian Dröge 6cadd9f700 po: Update translations 2014-06-22 14:23:03 +02:00
Tim-Philipp Müller 39b69d27da tests: add unit test for gst_caps_is_any() and _is_empty()
https://bugzilla.gnome.org//show_bug.cgi?id=731704
2014-06-22 12:52:01 +01:00
Tim-Philipp Müller 8e30a9462c 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
2014-06-22 12:50:42 +01:00
Tim-Philipp Müller 2092754ed1 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.
2014-06-21 01:26:46 +01:00
Tim-Philipp Müller 4620048e01 benchmarks: capsnego: add --loops command line option
And default to 50 loops.
2014-06-21 01:10:22 +01:00
Tim-Philipp Müller 4e12c4528f benchmark: capsnego: use GOptionContext for option parsing 2014-06-21 01:10:22 +01:00
Tim-Philipp Müller 4043fc3a44 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.
2014-06-21 01:10:22 +01:00
Tim-Philipp Müller 89a5b89388 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.
2014-06-21 01:10:22 +01:00
Olivier Crête 77db6bf3d6 GstDevice: Document GstDevice and related classes 2014-06-20 16:55:06 -04:00
Srimanta Panda 5b3ee70ea9 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
2014-06-19 10:19:15 -04:00
Tim-Philipp Müller bc75a166f0 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.
2014-06-19 08:40:16 +01:00
Tim-Philipp Müller d74708a820 gstvalue: use g_assert() in internal function for already-checked things
So these get compiled out for releases.
2014-06-19 08:40:15 +01:00
Tim-Philipp Müller bbefd6082f gstvalue: add internal _can_compare_unchecked() 2014-06-19 08:40:15 +01:00
Tim-Philipp Müller adcbe94aff gstvalue: add internal _list_concat() that takes ownership of input values
Avoids unnecessary copies.
2014-06-19 08:40:15 +01:00
Tim-Philipp Müller 5f6088f039 structure: simplify value type checks in getters
Just check for GType equality in common cases.
2014-06-19 08:40:15 +01:00
Sebastian Dröge 8f4b479c98 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.
2014-06-19 09:33:55 +02:00
Sebastian Dröge 9b7da39b68 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.
2014-06-19 09:33:54 +02:00
Tim-Philipp Müller 00ed93780d win32: update exports 2014-06-19 08:20:28 +01:00
Sebastian Dröge d84d01aad4 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.
2014-06-19 09:09:07 +02:00
Edward Hervey 37e8ffcc4f gst_private: Fix duplicate definition 2014-06-19 08:43:36 +02:00
Sebastian Dröge db1e4422b6 gst: Store more basic type GTypes in variables
Micro optimization to change a function call to a variable access
for all our basic types.
2014-06-19 08:06:55 +02:00
Sebastian Dröge f47a95f4cb value: Store our fundamental type GTypes in variables
Micro optimization to change a function call to a variable access
for all our basic types.
2014-06-19 08:06:55 +02:00
Edward Hervey b0b20b44e5 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
2014-06-17 16:27:07 +02:00
Tim-Philipp Müller 5c62bce85c 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.
2014-06-17 14:39:00 +01:00
Tim-Philipp Müller b314ac8291 tests: add test for gst_buffer_list_remove() 2014-06-16 20:30:32 +01:00
Tim-Philipp Müller 87fcf1e078 bufferlist: fix buffer leak in _remove() 2014-06-16 20:29:56 +01:00
Tim-Philipp Müller f6e2dee6f9 flowcombiner: fix g-i transfer annotations 2014-06-16 09:18:45 +01:00
Edward Hervey ecd8fd3511 flowcombiner: Fixed GBoxedCopyFunc
I'll just quote the most interesting man in the world:

"I don't usually push commits, but when I do I don't compile it
first"
2014-06-16 08:43:57 +02:00
Tim-Philipp Müller bd26fa7ccb devicemonitor: some docs additions and fixes 2014-06-14 16:30:49 +01:00
Tim-Philipp Müller 97fe853e42 win32: add exports for new get_type() function 2014-06-14 16:28:48 +01:00
Tim-Philipp Müller b05eeb9df4 flowcombiner: keep a ref to the pads we're using
Needed for use via the boxed type.

https://bugzilla.gnome.org/show_bug.cgi?id=731355
2014-06-14 11:32:42 +01:00
Tim-Philipp Müller 49fedb521f flowcombiner: add boxed type for bindings
https://bugzilla.gnome.org/show_bug.cgi?id=731355
2014-06-14 10:54:41 +01:00
Evan Nemerson 2a14482c62 introspection: minor annotation additions
https://bugzilla.gnome.org/show_bug.cgi?id=731541
2014-06-12 09:26:38 +01:00
Evan Nemerson ba1212f63b introspection: include gstversion.h in GIR generation
https://bugzilla.gnome.org/show_bug.cgi?id=703021
2014-06-12 08:22:20 +01:00
Nicolas Dufresne d99e621533 bytereader: Use concistant derefence method
This is minor style fix to not mix *var and var[N].
2014-06-10 10:23:13 -04:00
Sungho Bae d3b2f6e4b8 bytereader: Use pointer instead of index access
Currently the scan uses Boyer-moore method and its performance is good.
but, it can be optimized from an implementation of view.

The original scan code is implemented by byte array and index-based access.
In _scan_for_start_code(), the index is increasing from start to end and the
base address of the byte array is referred to as return value.

In the case, index-based access can be replaced by pointer access, which
improve the performance by removing index-related operations.

Its performace is enhanced by approximately 8% on arm-based embedded devices.
Although it seems trivial, it can affect the overall performance because the
_scan_for_start_code() function is very often called when H.264/H.265 video is
played.

In addition, the technique can apply for all architectures and it is good in
view of readability and maintainability.

https://bugzilla.gnome.org/show_bug.cgi?id=731442
2014-06-10 09:35:38 -04:00
Tim-Philipp Müller 12088d87bb globaldevicemonitor: prettify header 2014-06-07 10:13:56 +01:00
Tim-Philipp Müller 9c4e1d3689 tests: add unit test for queuearray expansion from 1
https://bugzilla.gnome.org/show_bug.cgi?id=731349
2014-06-07 09:46:42 +01:00
Evan Nemerson 1cd4bd64b0 queuearray: fix expanding size of queue from 1
Without we would not actually expand and access
memory beyond the allocated region for the array.

https://bugzilla.gnome.org/show_bug.cgi?id=731349
2014-06-07 09:45:39 +01:00
Evan Nemerson 75e0a3c676 dataqueue: clear up documentation of gst_data_queue_new
The gpointer argument is passed to all three callbacks, not just one.

https://bugzilla.gnome.org/show_bug.cgi?id=731302
2014-06-07 09:30:14 +01:00
Evan Nemerson 1fe6d3ad08 introspection: fix some minor annotation bugs
https://bugzilla.gnome.org/show_bug.cgi?id=730982
2014-06-06 15:15:12 -04:00
Evan Nemerson 25af4ad652 base: use correct syntax in documentation more consistently
Previously, many constants were prefixed with # or unprefixed,
some functions and macros were prefixed with # instead of suffixed
with (), etc.

https://bugzilla.gnome.org/show_bug.cgi?id=731293
2014-06-06 15:09:21 -04:00
zhouming 2793f808ee baseparse: Pass rate of input segment to output segment
https://bugzilla.gnome.org/show_bug.cgi?id=729701
2014-06-06 13:53:35 +03:00