Commit graph

257 commits

Author SHA1 Message Date
Edward Hervey
470f194909 gstvalue: Prevent division or modulo by zero
The step can end up being zero if the underlying value isn't a valid
range GValue.

In those cases, return FALSE.

We don't use g_return*_if_fail since it will already have been triggered
by the above-mentionned _get_step() functions.

Spotted by Coverity.
2014-04-05 11:37:53 +02:00
Haakon Sporsheim
e3388c22c2 gstvalue: Fix comparison of int/int64 range
Checking step three times seems unnecessary.
A similar bug was fixed for double range in
commit 3ea6b04c10
2014-04-05 07:03:07 +02:00
Edward Hervey
3ea6b04c10 gstvalue: Fix comparision of double range
Checking twice the lower bound is great (you never know, it might change
between the two calls by someone using emacs butterfly-mode), but it's a bit
more useful to check the higher bound are also identical.

Detected by Coverity
2013-12-10 18:01:52 -05:00
Sebastian Rasmussen
53ae1b2c9c docs: Fix typos in function/object descriptions
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=720029
2013-12-07 17:11:12 +00:00
Sebastian Rasmussen
49950e57ad docs: add missing docs, fixing doc errors
* add many missing declarations to sections
 * GstController has been removed, update docs
 * skip GstIndex when generating documentation
 * rephrase so gtkdoc doesn't imagine return value
 * add missing argument description for gst_context_new()
 * document GstOutputSelectorPadNegotiationMode and move to header-file

https://bugzilla.gnome.org/show_bug.cgi?id=719614
2013-12-03 00:11:59 +00:00
Sebastian Dröge
5286479467 value: Lists with all equal elements are equal to a single value
Otherwise caps containing f={X, X} are not compatible with f=X

https://bugzilla.gnome.org/show_bug.cgi?id=709253
2013-11-13 19:57:23 +01:00
Thiago Santos
007c0e5fe1 value: fix caps serialization when there are caps inside caps
Wrap caps strings so that it can handle serialization and deserialization
of caps inside caps. Otherwise the values from the internal caps are parsed
as if they were from the upper one

https://bugzilla.gnome.org/show_bug.cgi?id=708772
2013-09-30 16:20:48 -03:00
Sebastian Dröge
d55893fb96 value: Fix copy&paste mistakes in the bitmask function docs 2013-07-24 16:57:46 +02:00
Tim-Philipp Müller
0c513e3d97 value: handle deserialisation of nonexistant enum value more gracefully 2013-07-22 17:25:47 +01:00
Edward Hervey
2e1db58e11 gstvalue: Add _append_and_take_value() public variants
API: gst_value_array_append_and_take_value
API: gst_value_list_append_and_take_value

We were already using this internally, this makes it public for code
which frequently appends values which are expensive to copy (like
structures, arrays, caps, ...).

Avoids copies of the values for users. The passed GValue will also
be 0-memset'ed for re-use.

New users can replace this kind of code:
gst_value_*_append_value(mycontainer, &myvalue);
g_value_unset(&myvalue);

by:

gst_value_*_append_and_take_value(mycontainer, &myvalue);

https://bugzilla.gnome.org/show_bug.cgi?id=701632
2013-06-05 12:58:05 +02:00
Andre Moreira Magalhaes (andrunko)
a8300a4891 gstvalue: Add compare function for caps 2013-04-18 14:45:47 -03:00
Sebastian Dröge
7477b25df5 caps: Add new data type for handling caps features to the caps
These are meant to specify features in caps that are required
for a specific structure, for example a specific memory type
or meta.

Semantically they could be though of as an extension of the media
type name of the structures and are handled exactly like that.
2013-03-31 18:15:52 +02:00
Sebastian Dröge
fb3b53328f value: Remove set-style bitmask intersection/union/subtraction functions
Set operations on the bitmasks don't make much sense and result
in invalid caps when used as a channel-mask. They are now handled
exactly like integers.

This functionality was not used anywhere except for tests.

https://bugzilla.gnome.org/show_bug.cgi?id=691370
2013-02-13 17:07:47 +01:00
Tim 'mithro' Ansell
bd65fc0036 gstvalue: Adding offset to GstSegment serialize/deserialize.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=693587
2013-02-11 14:19:27 +01:00
Tim-Philipp Müller
172011d1f5 gstvalue: some micro-optimisations
Avoid unnecessary value copying, and unnecessary init/unset
cycles which all go through the value table. There's a bunch
of places where we copy a value and then unset it in the next
line, instead of just taking over the source value.
2012-12-22 16:38:58 +00:00
Sebastian Dröge
da0f9977f0 value: Use the GLib GType for GThread if compiling against GLib 2.35.3 or newer 2012-11-20 15:06:14 +01:00
Sebastian Dröge
08e0fcd7b2 value: API: Add boxed type for GThread 2012-11-12 11:40:59 +01:00
Tim-Philipp Müller
666c8c11c6 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 20:44:48 +00:00
Tim-Philipp Müller
507fc9cea7 value: avoid duplicates when intersecting lists
Fixes negotiation taking a ridiculous amount of
time (multiple 10s of seconds on a core2) when
there are duplicate entries in lists.

Could have a negative performance impact on other
scenarios because we now have to iterate the
dest list to avoid duplicates, but we don't
have a lot of lists any more these days, and
they tend to be small anyway. The negatives
are hopefully countered by the positive effects
of reducing the list length early on in the
process. And in any case, it's the right thing
to do.

Based on patch by Andre Moreira Magalhaes.

https://bugzilla.gnome.org/show_bug.cgi?id=684981
2012-09-29 14:35:58 +01:00
Tim-Philipp Müller
c2175db889 sample: add serialisation/deserialisation functions for GstSample
Since these things are inside taglists now, it would be good to be
able to print them and deserialise them.

https://bugzilla.gnome.org/show_bug.cgi?id=681322
2012-09-16 23:20:46 +01:00
Alban Browaeys
7bf7749c2b value: fix crash serialising a 0 flags value when there's no name for it
Fixes segfault when doing gst-launch-1.0 -v -m camerabin
(encodebin notifies a 0 value for its "flag" property).

https://bugzilla.gnome.org/show_bug.cgi?id=682958
2012-08-29 18:59:21 +01:00
Tim-Philipp Müller
718a10edda value: when serialising arrays or lists, handle types we can't serialise more gracefully
https://bugzilla.gnome.org/show_bug.cgi?id=681322
2012-08-13 00:01:16 +01:00
Tim-Philipp Müller
ffdefd7720 value: add GstTagList serialisation/deserialisation
So we can serialise/deserialise taglists inside structures,
which used to work automagically before because GstTagList
was just a typedef to GstStructure (same for the GType),
but now that it's a separate GType we need to register
explicit functions for this.

Helps with GDP stuff in pipelines/streamheader tests.
2012-07-20 09:39:53 +01:00
Edward Hervey
d3ffa82639 Remove 0.10-related documentation and "Since" markers 2012-07-10 12:03:27 +02:00
Tim-Philipp Müller
93a2b6e9b3 value: use datetime serialise/deserialise functions for datetimes
This re-uses existing code and makes sure we properly serialise
and deserialise datetimes where not all fields are set (thus
fixing some warnings when serialising such datetimes).
2012-07-07 22:46:00 +01:00
Tim-Philipp Müller
5a6be2201d datetime: fix compare function
Take into account that not all fields might be valid (though they
are valid in the GDateTime structure). But we should just return
unordered if the set fields don't match. Also, don't check
microseconds when comparing datetimes, since we don't serialise
those by default if they're available. This ensures date times are
still regarded as equal after serialising+deserialising.
2012-06-27 13:51:33 +01:00
Tim-Philipp Müller
06d96f1bda value: fix int64 - int64 range intersection on big endian systems
Works better if we use the v_int64 field of the GValue instead of v_int.
2012-06-23 21:35:33 +01:00
Tim-Philipp Müller
bc28ebf08d sample: add compare function for GstSample
Should make gst_tag_list_is_equal() work properly with image tags.

https://bugzilla.gnome.org/show_bug.cgi?id=672637
2012-06-23 16:59:10 +01:00
Tim-Philipp Müller
533ecb8840 value: fix buffer compare function 2012-06-23 16:30:03 +01:00
Wim Taymans
d342871907 segment: add rude serialization
Ass serialize and deserialize functions for GstSegment so that gdp and
gst_structure_to_string show the segment values. We convert to a GstSegment
first to make things easier..

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674100
2012-04-16 15:56:11 +02:00
Wim Taymans
ce67b0e539 docs: update more documentation 2012-03-29 13:34:50 +02:00
Wim Taymans
85c9543841 memory: group allocation parameters in a struct
Group the extra allocation parameters in a GstAllocationParams structure to make
it easier to deal with them and so that we can extend them later if needed.
Make gst_buffer_new_allocate() take the GstAllocationParams for added
functionality.
Add boxed type for GstAllocationParams.
2012-03-15 13:42:17 +01:00
Tim-Philipp Müller
3e8d6d6064 value: remove gst_value_register_{subtract,union,intersect}_func() API
There isn't really any need to provide public API for that. It's not
used anywhere in practice, and we aim to provide an API that works
for GstCaps, not some kind of generic set manipulation API based on
GValue. Making this private also makes it easier to optimise this
later. We can always put it back if someone actually needs it.
2012-03-08 11:21:37 +00:00
Edward Hervey
60be53fabf gstvalue: Remove useless assignment 2012-02-17 15:11:38 -08:00
Edward Hervey
963267643e gstvalue: Gracefully handle NULL Gvalue
Avoids unreferencing NULL pointer
2012-02-17 15:11:38 -08:00
Wim Taymans
39c5f0b28a don't do logic in g_assert... 2012-01-31 12:10:21 +01:00
Olivier Crête
e234a10c63 Use macros to register boxed types thread safely 2012-01-28 16:42:38 +00:00
Wim Taymans
a521252845 Add new GstMapInfo
Use a structure to hold info about the mapping. The application then keeps track
of this state and we can use it to unmap the memory again later.
2012-01-25 11:54:23 +01:00
Vincent Penquerc'h
fc1fab8a15 gstvalue: handle NULL dest in bitmask/bitmask intersection 2012-01-24 14:40:33 +00:00
Vincent Penquerc'h
39533f4364 gstvalue: add stepped ranges
int and int64 ranges can now have an optional step (defaulting to 1).
Members of the range are those values within the min and max bounds
which are a multiple of this step.

https://bugzilla.gnome.org/show_bug.cgi?id=665294
2012-01-24 12:11:44 +00:00
Vincent Penquerc'h
b6abb9794c gstvalue: enforce identical basic types in lists, arrays
https://bugzilla.gnome.org/show_bug.cgi?id=322587
2012-01-24 12:11:44 +00:00
Tim-Philipp Müller
c721d53773 Remove GST_TYPE_DATE, our own GDate type
Which we had to add because GLib didn't have it
back in the day. Port everything to plain old
G_TYPE_DATE, which is also a boxed type. Ideally
we'd just use GDateTime for everything, but it
doesn't support not setting some of the fields
unfortuntely (which would be very useful for
tag handling in general, if we could express
2012-01 for example).

https://bugzilla.gnome.org/show_bug.cgi?id=666351
2012-01-12 20:50:53 +00:00
Edward Hervey
77506a82b0 gstvalue: Allow NULL dest when subtracting bitmask
Happens when checking for subsets of caps
2012-01-06 15:01:24 +01:00
Sebastian Dröge
4294b88e35 value: Add 64-bit bitmask type 2012-01-05 10:24:14 +01:00
Edward Hervey
e136cc334f Merge remote-tracking branch 'origin/master' into 0.11 2011-12-29 16:49:39 +01:00
Tim-Philipp Müller
ee7f9f4228 value: micro-optimisation: avoid some unnecessary g_value_unset()
We know there's nothing to do here and can save us the function
calls and GValueTable lookups.
2011-12-26 11:27:07 +00:00
Wim Taymans
a22c2716cd Merge branch 'master' into 0.11 2011-11-09 12:03:28 +01:00
Vincent Penquerc'h
d9e5c529ba gstvalue: consider lists and ranges equal if they hold the same set
This fixes caps operations when different elements advertise some
of their caps' properties differently (eg, for audio channels, either
a range from 1 to 2, or a list of 1 and 2).

https://bugzilla.gnome.org/show_bug.cgi?id=663643
2011-11-09 11:24:55 +01:00
Wim Taymans
c9a4037805 Merge branch 'master' into 0.11
Conflicts:
	gst/gstvalue.c
2011-11-07 17:17:39 +01:00
Vincent Penquerc'h
b37d06aed8 gstvalue: quicker version of intersection when we do not need the result
https://bugzilla.gnome.org/show_bug.cgi?id=662777
2011-11-07 15:17:19 +00:00