Commit graph

72 commits

Author SHA1 Message Date
Jan Schmidt
f9e5178dd1 gstvalue: Add GstFlagSet type
GstFlagSet is a new type designed for negotiating sets
of boolean capabilities flags, consisting of a 32-bit
flags bitfield and 32-bit mask field. The mask field
indicates which of the flags bits an element needs to have
as specific values, and which it doesn't care about.

This allows efficient negotiation of arrays of boolean
capabilities.

The standard serialisation format is FLAGS:MASK, with
flags and mask fields expressed in hexadecimal, however
GstFlagSet has a gst_register_flagset() function, which
associates a new GstFlagSet derived type with an existing
GFlags gtype. When serializing a GstFlagSet with an
associated set of GFlags, it also serializes a human-readable
form of the flags for easier debugging.

It is possible to parse a GFlags style serialisation of a
flagset, without the hex portion on the front. ie,
+flag1/flag2/flag3+flag4, to indicate that
flag1 & flag4 must be set, and flag2/flag3 must be unset,
and any other flags are don't-care.

https://bugzilla.gnome.org/show_bug.cgi?id=746373
2015-05-25 16:23:33 +10:00
Sebastian Dröge
1f6d5d3ff5 structure/caps: Add gst_{structure,caps}_filter_and_map_in_place()
https://bugzilla.gnome.org/show_bug.cgi?id=739765
2014-12-16 18:22:46 +01:00
Evan Nemerson
e10266e3f3 docs: convert NULL, TRUE, and FALSE to %NULL, %TRUE, and %FALSE
This should help improve documentation generated for
languages other than C.

https://bugzilla.gnome.org/show_bug.cgi?id=730961
2014-05-30 00:20:27 +01:00
Sebastian Dröge
ab9fdf13a0 structure: Add getters for int64 and uint64 values 2014-02-25 15:41:45 +01:00
Sebastian Dröge
bd48ba333d structure: Add gst_structure_new_from_string()
Convenience API for bindings, gst_structure_from_string() returns
a tuple (structure, end_ptr) in bindings and is unintuitive to use
because of that.
2013-06-14 13:05:38 +02:00
Wim Taymans
ea6b05d126 structure: change argument name for docs 2013-02-05 13:44:06 +01:00
Tim-Philipp Müller
cf59bacf6d structure: re-indent header file
Tabs to spaces.
2012-11-13 20:45:48 +00: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
Matej Knopp
efdd0a2a82 win32: fix exported variables for VS 2010
https://bugzilla.gnome.org/show_bug.cgi?id=666219
2011-12-27 23:26:07 +00:00
Tim-Philipp Müller
2d7f9cfe92 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	gst/gstbuffer.h
	gst/gstbufferlist.h
	gst/gstcaps.h
	gst/gstdatetime.h
	gst/gstelementfactory.h
	gst/gstevent.h
	gst/gstghostpad.h
	gst/gstindexfactory.h
	gst/gstiterator.h
	gst/gstmessage.h
	gst/gstminiobject.h
	gst/gstpipeline.h
	gst/gstquery.h
	gst/gstsegment.h
	gst/gststructure.h
	gst/gsttaglist.h
	gst/gsturi.h
	gst/gstvalue.h
	libs/gst/base/gstbitreader.h
	libs/gst/base/gstbytereader.h
	libs/gst/base/gstbytewriter.h

Note: can't use G_GNUC_MALLOC with GstCaps return
values in 0.11 because of the EMPTY+ANY singletons.
2011-11-26 19:44:23 +00:00
Tim-Philipp Müller
c8380cb0d2 gst: sprinkle some G_GNUC_MALLOC
Maybe gcc can do something clever with that, or at least
warn us if we don't save the return value somewhere.
2011-11-26 18:57:44 +00:00
Wim Taymans
e4725d9df2 structure: cleanup API
gst_structure_empty_new() -> gst_structure_new_empty()
  gst_structure_id_empty_new() -> gst_structure_new_id_empty()
  gst_structure_id_new() -> gst_structure_new_id()
2011-11-02 08:59:44 +01:00
Tim-Philipp Müller
c00c8903ca structure: use G_GNUC_NULL_TERMINATED for gst_structure_new()
If you get a warning, use gst_structure_empty_new().

https://bugzilla.gnome.org/show_bug.cgi?id=343346
2011-10-27 13:25:08 +01:00
Johan Dahlin
22acd34c42 Add gst_structure_get_type
https://bugzilla.gnome.org/show_bug.cgi?id=657640
2011-10-19 10:20:31 +02:00
Wim Taymans
405a5d2a92 value: remove our FOURCC GType
Remove our custom fourcc GValue.
2011-08-22 12:19:19 +02:00
Wim Taymans
b1573e9865 structure: add method to fixate one field 2011-08-17 17:56:40 +02:00
Wim Taymans
bd20d2d199 structure: add function to fixate
Add a function to fixate a structure and use it for the default fixate function
in gstpad.c.
2011-08-15 14:32:17 +02:00
Wim Taymans
2d28891528 Merge branch 'master' into 0.11
Conflicts:
	gst/gstelementfactory.c
	gst/gstelementfactory.h
	gst/gstpad.h
	gst/gstpluginfeature.c
	gst/gstpluginfeature.h
2011-06-10 12:09:49 +02:00
Javier Jardón
5d25e4a204 Use "const" instead G_CONST_RETURN
G_CONST_RETURN will be deprecated soon.

https://bugzilla.gnome.org/show_bug.cgi?id=652211
2011-06-09 17:54:27 +01:00
Sebastian Dröge
30a7fd7b4d Merge branch 'master' into 0.11 2011-05-27 13:58:26 +02:00
Sebastian Dröge
da58834884 structure: Add gst_structure_is_subset()
API: gst_structure_is_subset()
2011-05-27 13:47:11 +02:00
Sebastian Dröge
e34c26b509 Merge branch 'master' into 0.11
Conflicts:
	win32/common/libgstreamer.def
2011-05-17 09:43:21 +02:00
Sebastian Dröge
b4dea3a1d3 structure: Make both parameters to gst_structure_is_equal() const 2011-05-17 09:35:54 +02:00
Sebastian Dröge
a08a17dfbd structure: Add gst_structure_intersect()
API: gst_structure_intersect()
2011-05-17 09:33:04 +02:00
Edward Hervey
64725facb5 gststructure: Add gst_structure_can_intersect API
Allows checking if two structures can intersect without having to
go through GstCaps

API: gst_structure_can_intersect

https://bugzilla.gnome.org/show_bug.cgi?id=629300
2011-05-17 09:28:06 +02:00
Edward Hervey
ae46eb3a38 gstructure: New API: gst_structure_is_equal
Allows checking equality of GstStructure without having to create
intermediary GstCaps.

API: gst_structure_is_equal

https://bugzilla.gnome.org/show_bug.cgi?id=629300
2011-05-17 09:28:00 +02:00
Wim Taymans
9597545d23 structure: more cleanups
gst_structure_get_type() -> _gst_structure_type to avoid method calls for
getting the GType that initialized at the start.
Hide some structure fields in private data so that we can change the
implementation.
Move structure equality check from caps.c to structure.c where it belongs.
2011-05-11 18:17:45 +02:00
Tim-Philipp Müller
7e5a9580ef structure: add gst_structure_{id_}take_value()
Add _set_value() variants that take ownership of the value passed
instead of making a copy of the value. This is useful for setting
values to things that aren't refcounted (e.g. GValueArrays or
strings or string arrays, etc.).

API: gst_structure_take_value()
API: gst_structure_id_take_value()

https://bugzilla.gnome.org/show_bug.cgi?id=629831
2010-09-16 19:39:58 +01:00
Thiago Santos
f2c18c6c98 gststructure: Adds datetime getter function
Adds gst_structure_get_date_time function

API: gst_structure_get_date_time

Fixes #594504
2010-07-26 11:57:52 -03:00
Sebastian Dröge
88ec06f433 structure: Use a const GstStructure * as parameter for some more gst_structure_get variants 2010-07-16 17:33:38 +02:00
Sebastian Dröge
e35fe4ef9c structure: API: Add gst_structure_fixate_field_string() 2010-05-22 10:01:44 +02:00
Sebastian Dröge
f9e3b72ff6 structure: API: Add gst_structure_id_has_field{,_typed} 2009-11-02 09:24:10 +01:00
Tim-Philipp Müller
cdd47a37e9 structure: add gst_structure_*_get*() vararg functions
Add a bunch of vararg getter convenience functions to complement
the vararg setter functions, and a basic unit test. Fixes #534208.

API: gst_structure_get()
API: gst_structure_id_get()
API: gst_structure_get_valist()
API: gst_structure_id_get_valist()
2009-06-10 09:39:12 +01:00
Tim-Philipp Müller
c8acbbfde0 structure: add gst_structure_id_new() convenience function
Add convenience wrapper for gst_structure_id_empty_new() plus
gst_structure_id_set() and use it in a few places.

API: gst_structure_id_new()
2009-05-29 19:28:10 +01:00
Wim Taymans
66fd1a0839 Add function to get uint from a structure.
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gststructure.c: (gst_structure_get_uint):
* gst/gststructure.h:
Add function to get uint from a structure.
API: gst_structure_get_uint()
2007-08-12 16:40:59 +00:00
Jan Schmidt
8ae16e5b4c gst/gststructure.*: Add API for setting values into structures without performing a quark lookup, if the appropriate ...
Original commit message from CVS:
* gst/gststructure.c: (gst_structure_id_set),
(gst_structure_id_set_valist):
* gst/gststructure.h:
Add API for setting values into structures without performing
a quark lookup, if the appropriate quark is already known.
API: gst_structure_id_set
API: gst_structure_id_set_valist
* gst/parse/grammar.y:
* gst/parse/parse.l:
Remove some dead code shown by the coverage information.
Don't throw a critical g_warning when encountering a syntax error,
just warn and let the normal error path handle it.
* plugins/elements/gstelements.c:
Bump the rank of filesink up to PRIMARY so that it is preferred over
gnomevfssink for file:// sink uri's
* tests/check/pipelines/parse-launch.c: (expected_fail_pipe),
(GST_START_TEST), (run_delayed_test),
(gst_parse_test_element_base_init),
(gst_parse_test_element_class_init), (gst_parse_test_element_init),
(gst_parse_test_element_change_state),
(gst_register_parse_element), (parse_suite):
Beef up the tests for parse syntax to check that more error cases
fail as they are supposed to. Increases the test coverage a bit.
2006-07-26 17:04:45 +00:00
Andy Wingo
65ce5ed080 gst/gstevent.h (struct _GstEvent): Only one pointer of padding.
Original commit message from CVS:
2005-11-29  Andy Wingo  <wingo@pobox.com>

* gst/gstevent.h (struct _GstEvent): Only one pointer of padding.

* gst/gststructure.h (struct _GstStructure): Only one pointer of
padding.

* gst/gstquery.h (struct _GstQuery): Only one pointer of padding.

* gst/gstpluginfeature.h: Remove a comment in PluginFeature.

* gst/gstplugin.h (struct _GstPluginClass): Add some padding.

* gst/gstobject.h: (struct _GstObject): Only one pointer of
padding; reduces object size by about 30%. We don't expect
anything else to go into gstobject.

* gst/gstminiobject.h (struct _GstMiniObject)
(struct _GstMiniObjectClass): Only one pointer of padding; the
payload is only a pointer and two ints anyway. For the class there
are only two methods as well.

* gst/gstelement.h (struct _GstElementClass): Removed
the state_changed signal callback, it is not used.
2005-11-29 18:57:59 +00:00
Jan Schmidt
cfc78f21ec API Changes.
Original commit message from CVS:
* gst/gststructure.c: (gst_structure_get_fraction),
(gst_structure_parse_value),
(gst_structure_fixate_field_nearest_fraction):
* gst/gststructure.h:
* gst/gstutils.c: (gst_util_uint64_scale_int):
* gst/gstutils.h:
* scripts/update-funcnames:
API Changes.
Rename gst_util_clock_time_scale to gst_util_uint64_scale_int
Make gst_structure_fixate_field_nearest_fraction take a numerator
and denominator argument instead of a GValue
add gst_structure_get_fraction helper function.
2005-11-23 13:22:21 +00:00
Jan Schmidt
506aa94ce2 Implement fraction ranges and extend GstFraction to support arithmetic subtraction, as well as deserialization from i...
Original commit message from CVS:
* check/gst/capslist.h:
* check/gst/gstcaps.c: (GST_START_TEST):
* check/gst/gstvalue.c: (GST_START_TEST), (gst_value_suite):
* gst/gststructure.c: (gst_structure_parse_range),
(gst_structure_fixate_field_nearest_fraction):
* gst/gststructure.h:
* gst/gstvalue.c: (gst_value_init_fraction_range),
(gst_value_free_fraction_range), (gst_value_copy_fraction_range),
(gst_value_collect_fraction_range),
(gst_value_lcopy_fraction_range), (gst_value_set_fraction_range),
(gst_value_set_fraction_range_full),
(gst_value_get_fraction_range_min),
(gst_value_get_fraction_range_max),
(gst_value_serialize_fraction_range),
(gst_value_transform_fraction_range_string),
(gst_value_compare_fraction_range),
(gst_value_deserialize_fraction_range),
(gst_value_intersect_fraction_fraction_range),
(gst_value_intersect_fraction_range_fraction_range),
(gst_value_subtract_fraction_fraction_range),
(gst_value_subtract_fraction_range_fraction),
(gst_value_subtract_fraction_range_fraction_range),
(gst_value_collect_fraction), (gst_value_fraction_multiply),
(gst_value_fraction_subtract), (gst_value_deserialize_fraction),
(gst_value_transform_string_fraction), (_gst_value_initialize):
* gst/gstvalue.h:
Implement fraction ranges and extend GstFraction to support
arithmetic subtraction, as well as deserialization from integer
strings such as "100"
Add a testsuite as for int and double range set operations
2005-11-21 23:54:59 +00:00
Andy Wingo
f641e8a9fe gst/: Add glib-compat.h.
Original commit message from CVS:
2005-11-21  Andy Wingo  <wingo@pobox.com>

* gst/gsttaglist.h:
* gst/gstcaps.h:
* gst/gststructure.h: Add glib-compat.h.
2005-11-21 19:58:23 +00:00
Andy Wingo
fd6ca0191b gst/: Sprinkle NULL_TERMINATED to taste.
Original commit message from CVS:
2005-11-21  Andy Wingo  <wingo@pobox.com>

* gst/gsttagsetter.h:
* gst/gsttaglist.h:
* gst/gststructure.h:
* gst/gstcaps.h:
* gst/gstutils.h: Sprinkle NULL_TERMINATED to taste.
2005-11-21 18:41:39 +00:00
Jan Schmidt
3e17fdcbf9 Rename gst_caps_structure_fixate_* to gst_structure_fixate_* (#322027)
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gststructure.c: (gst_structure_fixate_field_nearest_int),
(gst_structure_fixate_field_nearest_double),
(gst_structure_fixate_field_boolean):
* gst/gststructure.h:
* win32/common/libgstreamer.def:
* win32/gstreamer.def:

Rename gst_caps_structure_fixate_* to gst_structure_fixate_*
(#322027)
2005-11-21 14:28:21 +00:00
Andy Wingo
e89aaa7e30 gst/gsttaglist.*: Operates on a const
Original commit message from CVS:
2005-11-19  Andy Wingo  <wingo@pobox.com>

* gst/gsttaglist.c:
* gst/gsttaglist.h (gst_tag_list_foreach): Operates on a const
GstTagList*. Fixes #143472.

* gst/gststructure.h: Clarify what the foreach/map functions can
or can't do to their arguments.
2005-11-19 15:51:41 +00:00
Wim Taymans
dd937f3fea gst/gstbin.h: Document another field.
Original commit message from CVS:
* gst/gstbin.h:
Document another field.

* gst/gststructure.c:
* gst/gststructure.h:
Document.
2005-11-09 15:10:32 +00:00
Thomas Vander Stichele
2dd1598c56 whitespace fixes
Original commit message from CVS:
whitespace fixes
2005-10-15 15:30:24 +00:00
Johan Dahlin
d52d4b4a4d gst/gstmessage.c (gst_message_parse_state_changed): Use gst_structure_get_enum instead of gst_structure_get_int
Original commit message from CVS:
* gst/gstmessage.c (gst_message_parse_state_changed): Use
gst_structure_get_enum instead of gst_structure_get_int

* gst/gststructure.c (gst_structure_get_enum): Impl.

* gst/gststructure.h (gst_structure_get_enum): Add

* docs/gst/gstreamer-sections.txt: Ditto
2005-09-29 02:32:37 +00:00
Thomas Vander Stichele
3694e3b45c add a method to get a GstClockTime out of a structure
Original commit message from CVS:

* docs/gst/gstreamer-sections.txt:
* gst/gststructure.c: (gst_structure_get_clock_time):
* gst/gststructure.h:
add a method to get a GstClockTime out of a structure
2005-09-23 17:46:06 +00:00
Thomas Vander Stichele
f74399ea55 fix docs
Original commit message from CVS:
fix docs
2005-09-23 16:35:43 +00:00
Tim-Philipp Müller
7390d68eee Add GST_TYPE_DATE, a boxed type that wraps GDate, and the usual bunch of utility functions along with a hack that che...
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gststructure.c: (gst_structure_set_valist),
(gst_structure_get_date):
* gst/gststructure.h:
* gst/gstvalue.c: (gst_value_set_date), (gst_value_get_date),
(gst_date_copy), (gst_value_compare_date),
(gst_value_serialize_date), (gst_value_deserialize_date),
(gst_value_transform_date_string),
(gst_value_transform_string_date), (_gst_value_initialize):
* gst/gstvalue.h:
Add GST_TYPE_DATE, a boxed type that wraps GDate, and the usual
bunch of utility functions along with a hack that checks that
developers don't accidentally use G_TYPE_DATE where GST_TYPE_DATE
is required. Part of the grand scheme in #170777.
2005-09-22 15:08:02 +00:00
Thomas Vander Stichele
4b0a255e95 gst/gstbuffer.c: some debugging
Original commit message from CVS:

* gst/gstbuffer.c: (gst_buffer_new_and_alloc):
some debugging
* gst/gstcaps.h:
whitespace fixes
* gst/gstpad.c: (gst_pad_activate_push), (gst_pad_alloc_buffer):
more debugging
* gst/gststructure.c: (gst_caps_structure_fixate_field_boolean):
* gst/gststructure.h:
add a fixate function for booleans; add a FIXME that these func
names should probably be gst_structure_fixate_*
2005-08-23 11:38:28 +00:00