Commit graph

802 commits

Author SHA1 Message Date
Wim Taymans
203dd6fbe1 memory: make guint8 * for easy usage 2012-01-25 11:54:23 +01: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
Stefan Sauer
660d9c071a controller: cleanup the control-binding construction
This is now bindings firendly as _new is just a classic c convenience and all
the work is done in a constructor. As a side effect _new never fails.
Fix the tests.
2012-01-24 21:57:44 +01:00
Vincent Penquerc'h
982ff80c38 tests: add basic tests for new stepped ranges
https://bugzilla.gnome.org/show_bug.cgi?id=665294
2012-01-24 12:11:44 +00:00
Stefan Sauer
b23977cb93 controller: allow different controlbindings
Make controlbinding an abstract baseclass. Move implementation to control-
binding-direct and add a control-binding-argb. Add an example.
2012-01-23 11:03:43 +01:00
Tim-Philipp Müller
1654b7f1d7 Use GLib's type for GError instead of our own
We introduced our own when GLib didn't want to add a GType
for GError. But now that there is one, we can use GLib's
unconditionally and remove our version.
2012-01-22 15:16:14 +00:00
Stefan Sauer
dd9f0481ea controller: improve control binding handling
Change _set_control_binding to _add_control_binding and take ownership. Add a
_remove_control_binding function.
2012-01-20 14:42:31 +01:00
Stefan Sauer
c227d51fa9 controller: remove convenience api for control sources
This is needed to support multiple kinds of control-bindings.
2012-01-20 11:31:23 +01:00
Wim Taymans
a1d7bd02e4 memory improvements
Make the memory object simply manage the data pointer and the maxsize and move
the offset and size handling to common functionality.
Use the READONLY flag to set a readonly lock.
Remove the data and size fields from the unmap method. We need an explicit
resize operation instead of using the unmap function.
Make internal helper lock and unlock functions.
Update unit test and users of the old API.
2012-01-19 12:51:41 +01:00
Wim Taymans
252327f87a Update for new gthread API 2012-01-19 09:27:04 +01:00
Wim Taymans
c96d5a330c memory: make writability check into a method
Use a method to check for writability instead of a macro so that we can change
the implementation more easily.
2012-01-16 15:57:35 +01:00
Wim Taymans
4eb0c8ae07 tests: improve memory test 2012-01-16 12:24:48 +01: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
Tim-Philipp Müller
71e89bc514 tests: ignore new memory test binary 2012-01-09 13:19:04 +00:00
Wim Taymans
80f4716a61 memory: check semantics of nested mappings
Count how many mappings are currently active and also with what access pattern.
Update the design doc with restrictions on the access patterns for nested
mappings.
Check if nested mappings obey the access mode restrictions of the design doc.
Add various unit tests to check the desired behaviour.
2012-01-06 13:10:18 +01:00
Wim Taymans
960c580ae2 memory: handle -1 size in unmap
handle -1 in unmap correctly when the offset is modified.
2012-01-06 07:02:36 +01:00
Wim Taymans
e4a58ec71e memory: improve semantics of unmap
Make an unmap call with a different data pointer than the map call update the
offset field. This allows for both offset and size adjustements in the unmap
call.
2012-01-06 06:43:08 +01:00
Wim Taymans
d483ff2db5 memory: add more checks
Add check for mapping and resizing
2012-01-05 18:15:20 +01:00
Wim Taymans
6e0024e76e memory: take offset into account
Take the offset into account whem mapping and unmapping the buffer.
2012-01-05 17:28:28 +01:00
Wim Taymans
b750dc5090 memory: clarify nested mappings, add unit test 2012-01-05 16:48:49 +01:00
Wim Taymans
8ec07bb6f7 tests: add more memory unit tests
Check for unmap with invalid size
2012-01-05 13:22:42 +01:00
Wim Taymans
8658b2fd68 tests: add unit test for GstMemory
Add a GstMemory unit test
Add some more asserts in GstMemory to catch invalid cases.
2012-01-05 13:11:05 +01:00
Sebastian Dröge
da81ada9d0 value: Add tests for the bitmask type 2012-01-05 10:24:14 +01:00
Tim-Philipp Müller
8ff3102116 registry: get rid of gst_default_registry_*() convenience macros
They're not really worth it: hardly save any typing, and aren't
great for bindings or gobject-introspection.
2012-01-02 02:32:49 +00:00
Tim-Philipp Müller
ed80a5cd4b registry: rename gst_registry_get_default() to gst_registry_get()
It's not really a default if there is only one that can't be changed.

Should we return a ref like e.g. g_volume_monitor_get() does?
2012-01-02 02:22:51 +00:00
Stefan Sauer
3a08d90ec7 controller: remove nonsense parts from test object property descriptions 2012-01-01 20:43:51 +01:00
Stefan Sauer
fcef8d8046 control-sources: turn into GstObjects
This is a preparation for chaining them.
2011-12-31 09:57:49 +01:00
Stefan Sauer
db807d9890 controller: add more tests to core controller suite
Extend the dummy control-source to allow testing the sync code path. Add test
for 1:1 and 2:1 value <-> control-source sync.
2011-12-30 17:53:23 +01:00
Stefan Sauer
b0b6bea3dc controller: add a test for bindings control sources multiple times 2011-12-30 17:53:23 +01:00
Edward Hervey
173d845cca tests: Fix leak in pad check 2011-12-28 15:30:31 +01:00
Tim-Philipp Müller
66eee8ae35 tests: can't access private registry structure members directly any longer 2011-12-27 11:35:28 +00:00
Tim-Philipp Müller
9a3e4ce5cb libs: remove gdp dataprotocol library
Made private and moved to gdp plugin in -base for
the time being, until we figure out what we do with
gdp and 0.11.
2011-12-25 23:41:50 +00:00
Stefan Sauer
15f675ccc1 controller: split and cleanup the tests
The controller object was once copied from buzztards unit tests. Change
TestMonoSource to TestObj as it is not a full fledged element. Split the tests
into a core and library test suite.
2011-12-25 21:24:57 +01:00
Stefan Sauer
3663167582 tests: don't include glib/gthread.h directly
The g_thread functions are available after including glib.h as per docs.
2011-12-06 14:46:46 +01:00
Wim Taymans
c0e3974aa7 pad: remove GST_FLOW_RESEND
It is unused and undefined.
2011-12-06 14:24:15 +01:00
Wim Taymans
d65773b5fa element: clean up element flags
Clean up the element flags
2011-11-28 16:54:55 +01:00
Wim Taymans
005dab15f6 test: fix refcount error 2011-11-28 14:07:24 +01:00
Tim-Philipp Müller
33078aaeb7 buffer: add gst_buffer_{set,get}_qdata()
Allows people/us to attach arbitrary metadata to buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=664720

API: gst_buffer_set_qdata()
API: get_buffer_get_qdata()
2011-11-25 17:42:07 +00:00
Wim Taymans
933e8b230c pad: fix blocking probe emission
If we are dealing with a blocking probe, only then check if one the
blocking flags of the hook matches.
Add some more debug.
Make the pad unit test less racy.
2011-11-25 07:11:24 +01:00
Matej Knopp
0b2ecbf6fc Add test for PAD_PROBE_TYPE_BLOCK and PAD_PROBE_TYPE_BLOCKING 2011-11-25 06:07:27 +01:00
Edward Hervey
13e7839653 tests: Check for dataflow with incompatible caps
This test currently fails, but is there to ensure we fix this issue
and keep it fixed, since it completely breaks delayed negotiation
use-cases.

This behaviour started breaking since
dd65aae9a1
2011-11-24 09:34:47 +01:00
Edward Hervey
1cc836b2f0 tests: Add comments to gstpad tests 2011-11-24 09:31:02 +01:00
Edward Hervey
bfa78eb7a1 tests: Remove "#if 0" block for behaviour that now works 2011-11-24 09:30:14 +01:00
Edward Hervey
77596b0e05 tests: Remove commented block
This behaviour is actually tested in test_push_unlinked
2011-11-24 09:28:32 +01:00
Wim Taymans
3a595d5849 tests: improve pad tests 2011-11-21 17:46:45 +01:00
Wim Taymans
612b1fbb14 pad: add parent to other functions
Add parent to chain, chain_list, getrange and event functions.
2011-11-17 12:40:45 +01:00
Wim Taymans
d805f0f034 pad: _get_caps() -> _query_caps() 2011-11-15 16:46:37 +01:00
Wim Taymans
b5c3e254b1 pad: remove getcaps and use caps query
Remove the getcaps function on the pad and use the CAPS query for
the same effect.
Add PROXY_CAPS to the pad flags. This instructs the default caps event and query
handlers to pass on the CAPS related queries and events. This simplifies a lot
of elements that passtrough caps negotiation.
Make two utility functions to proxy caps queries and aggregate the result. Needs
to use the pad forward function instead later.
Make the _query_peer_ utility functions use the gst_pad_peer_query() function to
make sure the probes are emited properly.
2011-11-15 11:20:48 +01:00
Wim Taymans
37318a8cd2 pad: remove GstPadFixateCapsFunction
The fixate caps function was not used externally and we have vmethods in the
base classes where it is needed.
Update some docs.
simplify some fixate functions in the base classes. Also pass the untruncated
caps to the vmethod.
2011-11-10 10:58:42 +01:00
René Stadler
464f55bc5b tests: pad: add tests for sticky caps handling
test_sticky_caps_flushing is currently failing.
2011-11-09 12:38:34 +01:00
Wim Taymans
a22c2716cd Merge branch 'master' into 0.11 2011-11-09 12:03:28 +01:00
Stefan Sauer
631d3e6f06 tests: add a subset test for structure 2011-11-09 11:24:26 +01:00
Wim Taymans
fb1f6bec68 pad: fix unit test 2011-11-08 13:30:18 +01:00
Wim Taymans
47eb1fe52b test: port to 0.11 2011-11-08 13:02:04 +01:00
Wim Taymans
9c0d8ca718 Merge branch 'master' into 0.11
Conflicts:
	gst/gstelement.h
	gst/gstghostpad.c
	gst/gstminiobject.c
2011-11-08 12:54:15 +01:00
René Stadler
ab8d5874b0 tests: pad: add test to verify flushing behaviour
Seems like a trivial case, but this was actually broken in 0.11 recently.
2011-11-08 12:22:21 +01:00
Wim Taymans
ba3028aeeb pad: Add GstPadProbeInfo
Make a new GstPadProbeInfo structure and pass this in the probe callback. This
allows us to add more things later and also allow the callback to replace or
modify the passed object.
2011-11-08 11:04:19 +01:00
Wim Taymans
24e596a1fb pad: rework pad probes
Make a separate cookie to detect chancges in the list of probes and keeping
track of what hooks have been invoked yet.
Remove the requirement to have probes on srcpads in push mode and sinkpads in
pull mode.
Add some more debug.
Keep track of what callbacks got executed. If no callback is called and we are a
blocking pad, let the item pass. This allows you to block pads on selected
items only.
Explicitly have an UPSTREAM and DOWNSTREAM PadProbeType. This allows you to only
block the pad on upstream or downstream items.
Add convenience macros to only block on downstream/upstream items.
2011-11-07 17:15:17 +01:00
Wim Taymans
a8cc106ba8 tests: fix tests
Since blocks are not on both directions, we need to check in the block callback
if we are not blocking on an upstream event and let it pass.
2011-11-04 18:47:10 +01:00
Wim Taymans
d169fa8728 fix request pad
Make all request pads take _%u in the template.
Fix up unit tests.
2011-11-03 17:49:45 +01:00
Wim Taymans
a1d82bec39 Merge branch 'master' into 0.11
Conflicts:
	gst/gstghostpad.c
2011-11-03 11:30:52 +01:00
Nicolas Dufresne
391568efde ghostpad: Don't cache internal proxy pad target
The internal proxy pad target is simply a cache of the internal proxy pad
peer. This patch uses the well implement GstPad peer handling to obtain the
target. This fixes issues with target not being set in both direction when
two ghostpads are linked together (empty bin).

https://bugzilla.gnome.org/show_bug.cgi?id=658517
2011-11-03 09:27:00 +01:00
Wim Taymans
6c627481b3 utils: remove _found_tags_ API
remove gst_element_found_tags() and gst_element_found_tags_for_pad(), they are
nothing more than a wrapper around gst_pad_push_event()
2011-11-02 12:06:47 +01:00
Wim Taymans
d9dc9f9d52 task: api cleanup
gst_task_create() -> gst_task_new()
2011-11-02 08:59:44 +01: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
Wim Taymans
88e12228cf bufferlist: clean up API
gst_buffer_list_len() -> gst_buffer_list_length()
gst_buffer_list_sized_new() -> gst_buffer_list_new_sized()
2011-11-02 08:59:43 +01:00
Tim-Philipp Müller
bffc9207b5 pad: rename GstProbeType and GstProbeReturn to GstPadProbe{Type,Return}
Better now than later in the cycle. These might come in handy:

sed -i -e 's/GstProbeReturn/GstPadProbeReturn/g'   `git grep GstProbeReturn  | sed -e 's/:.*//' | sort -u`
sed -i -e 's/GST_PROBE_/GST_PAD_PROBE_/g'          `git grep GST_PROBE_      | sed -e 's/:.*//' | sort -u`
sed -i -e 's/GstProbeType/GstPadProbeType/g'       `git grep GstProbeType    | sed -e 's/:.*//' | sort -u`
2011-11-01 00:15:17 +00:00
Tim-Philipp Müller
cfff518cee Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	gst/gstpluginfeature.c
2011-10-31 14:03:15 +00:00
Tim-Philipp Müller
4e7944b0b9 taglist: rename _new() to _new_empty() and new_full*() to new*() 2011-10-30 22:24:25 +00:00
Tim-Philipp Müller
19b4c9c793 pluginfeature: deprecate gst_plugin_feature_type_name_filter()
It's only used internally anyway and the helper struct
has namespace issues.

API: deprecated gst_plugin_feature_type_name_filter()
API: deprecated GstTypeNameData
2011-10-30 21:47:26 +00:00
Tim-Philipp Müller
3a4f580bb2 Merge remote-tracking branch 'origin/master' into 0.11 2011-10-30 10:00:28 +00:00
Tim-Philipp Müller
606c53fc94 taglist: add to_string and new_from_string functions
We want to make GstTagList opaque and not have people use
GstStructure API on it.

API: gst_tag_list_to_string()
API: gst_tag_list_new_from_string()
2011-10-30 09:58:16 +00:00
Tim-Philipp Müller
002446820e Merge remote-tracking branch 'origin/master' into 0.11 2011-10-30 09:31:39 +00:00
Tim-Philipp Müller
cdade325ae taglist: add gst_tag_list_is_equal()
API: gst_tag_list_is_equal()
2011-10-30 01:44:00 +01:00
Wim Taymans
6da5841d0a tests: fix segment check 2011-10-28 16:23:49 +02:00
Wim Taymans
021f09d622 tests: fix compilation 2011-10-27 17:09:51 +02:00
Wim Taymans
4a189f80a5 tests: fix compilation 2011-10-27 16:51:43 +02:00
Stefan Sauer
b6d34084f2 interfaces: clean up the use of iface and class/klass 2011-10-21 14:20:40 +02:00
René Stadler
5800757369 Revert gst_plugin_feature_get_name to const string return
Returning a newly allocated string makes no sense. It's unexpected for a
getter, and also this behaves differently in 0.10, so it would make future
merges harder.

Except for these two places here in core which were updated for the new
semantic, the return value is getting leaked all over the place.
2011-10-19 23:40:10 +02:00
Edward Hervey
b03b4c47af check: Don't leak the feature name 2011-10-17 09:51:15 +02:00
Edward Hervey
e60fa7cb48 tests: Fix more leaks 2011-10-11 13:54:45 +02:00
Wim Taymans
ea012d3dd7 pad: GST_FLOW_UNEXPECTED -> GST_FLOW_EOS 2011-10-10 11:33:51 +02:00
Wim Taymans
4f8bb4085f Merge branch 'master' into 0.11
Conflicts:
	libs/gst/base/gstbaseparse.c
2011-10-03 10:06:17 +02:00
Tim-Philipp Müller
6ce1fe1bb2 tests: add minimal test for GstAtomicQueue
Just new + free.
2011-09-30 14:50:51 +01:00
Sebastian Dröge
43538e2e75 Merge branch 'master' into 0.11
Conflicts:
	docs/design/draft-buffer2.txt
	docs/design/part-TODO.txt
	docs/design/part-block.txt
	docs/design/part-bufferlist.txt
	docs/design/part-caps.txt
	docs/design/part-element-transform.txt
	docs/design/part-events.txt
	docs/design/part-negotiation.txt
	gst/gstcaps.c
	gst/gstevent.h
	gst/gstghostpad.c
	gst/gstinterface.c
	gst/gstpad.c
	gst/gstpad.h
	gst/gstutils.c
	libs/gst/base/gstbasesink.c
	libs/gst/base/gstbasesrc.c
	libs/gst/base/gstbasetransform.c
	libs/gst/base/gsttypefindhelper.c
	plugins/elements/gstcapsfilter.c
	plugins/elements/gsttee.c
	tests/check/generic/sinks.c
	tools/gst-launch.1.in
2011-09-08 14:28:23 +02:00
Piotr Fusik
14f5518f3d docs, gst: typo fixes
https://bugzilla.gnome.org/show_bug.cgi?id=658449
2011-09-07 18:03:17 +01:00
Wim Taymans
405a5d2a92 value: remove our FOURCC GType
Remove our custom fourcc GValue.
2011-08-22 12:19:19 +02:00
Wim Taymans
a19baf77e7 buffer: improve size handling
Also handle the case where multiple empty memory blocks are in the buffer.
Add unit test for this.
2011-07-12 13:40:35 +02:00
Wim Taymans
a5ee20db3f buffer: fix _resize some more
Add more debug.
Alow resize to 0 bytes.
Do clipping correctly.
Add more unit tests. Also add a failing test: when we resize to 0 and then
try to resize back to the original size it fails because the memory was
removed.
2011-07-12 12:00:58 +02:00
Wim Taymans
8461249f22 buffer: fix negative offsets some more
Allow for negative offsets when doing memory copy and share.
Add fast path in the _get_sizes() function.
Fix resize for negative offset and expanding the buffer.
Add some unit tests.
2011-07-11 18:00:52 +02:00
Tim-Philipp Müller
3dbcb73b11 Remove GstImplementsInterface
It was a bit too clever, and didn't really work as an API,
confusing people to no end. Better implement specific methods
whether an interface is usable/available/ready on the interface
itself, or even add GError arguments, rather than try to have
per-instance interfaces.
2011-06-26 22:59:26 +01:00
Wim Taymans
54fd50bfe1 buffer: add index to _take_memory()
Add an index to gst_buffer_take_memory() so that we can also insert memory at a
certain offset. This is mostly interesting to prepend a header memory block to
the buffer.
2011-06-13 16:31:53 +02:00
Wim Taymans
bbfec45ecc event: add reset_time boolean to flush_stop event
Add a boolean to the flush_stop event to make it possible to implement flushes
that don't reset_time.
Make basesink post async_done with the reset_time property from the flush stop
event.
Fix some unit tests
2011-06-10 11:55:08 +02:00
Wim Taymans
b84fff07ea memory: Require implementation to implement _share
Require the memory implementations to implement a share operation. This allows
us to remove the fallback share implementation which uses a different allocator
implementation and complicates things too much.
Update design doc a bit.
2011-06-08 12:04:49 +02:00
Edward Hervey
ef2d593e40 check/ghostpad: Activate pads before checking for caps forwarding/setting
This is now done via in-band events, so the pads need to be active
2011-06-06 10:27:57 +02:00
Tim-Philipp Müller
a4092cd5c4 Remove everything libxml2- and loadsave-related 2011-06-04 15:22:06 +01:00
Tim-Philipp Müller
9e20c4eadc tools, tests: fix some unused-but-set-variable compiler warnings 2011-06-04 14:13:07 +01:00
Wim Taymans
7b43f02ed3 structure: fix some more 0.11 fixmes
don't allow spaces in structure names and fix unit tests.
2011-06-03 13:25:54 +02:00
Wim Taymans
272b3263aa Merge branch 'master' into 0.11
Conflicts:
	plugins/elements/gstoutputselector.c
2011-06-01 19:47:10 +02:00
Wim Taymans
3f51563319 pad: further improve probes and pad blocking
Keep track of installed number of probes to shortcut emission.
Allow NULL callbacks, this is useful for blocking probes.
Improve probe selection based on the mask, an empty mask for the data or the
scheduling flags equals that all probes match.
Add some more debug info.
Don't check the flushing flag in the probe callback handler, this needs to be
done before calling the handler.
Fix blocking probes.
Fix unit tests
2011-06-01 19:39:20 +02:00
Wim Taymans
8abc457a3b pad: implement pad block with probes 2011-06-01 19:39:16 +02:00
Wim Taymans
a5bbf7f369 utils: remove _full variants of probes
Remove the _full variants and add the destroy notify to the regular methods.
2011-06-01 19:39:11 +02:00
Edward Hervey
c5ae6eed10 check/abi: Ignore GstXML* on arm when not present 2011-06-01 15:29:20 +02:00
Wim Taymans
fce85f75ff pad: Rework pad blocking, another attempt
Make the PadBlock callback take a GstBlockType parameter to handle the different
kind of stages in the pad block. This provides for more backwards compatibility
in the pad block API.
Separate blocking and unblocking into different methods, only blocking can do a
callback, unblock is always immediately. Also removed synchronous blocking, it
can always be implemented with a callback.
2011-05-30 18:29:06 +02:00
Wim Taymans
565f492af2 Revert "pad: rework pad blocking, first part"
This reverts commit 415da89f3c.

Conflicts:

	gst/gstpad.c
2011-05-30 13:40:04 +02:00
Sebastian Dröge
58302cedfa Merge branch 'master' into 0.11 2011-05-30 07:41:13 +02:00
Sebastian Dröge
f304196148 caps: Fix subset check for equivalent lists and scalar values
For example "{ 1 }" and "1" are not strictly equal but
both are a subset of each other. Also add a unit test
for this.
2011-05-30 07:38:40 +02:00
Wim Taymans
415da89f3c pad: rework pad blocking, first part
Make pad block call the callback as soon as the pad is not in use. This makes it
possible to make sure that when the callback is called, no activity is happening
on the pad and that no activity will ever happen until the pad is unblocked
again. This makes pad blocking work when there is no dataflow or after EOS and
greatly helps dynamic pipelines.
Move the probe handling right where we wait on the pad block. The two are
related but not the same and the probe can eventually influence the pad
blocking as we'll se later.
Fix up some broken unit tests or tests that fail with the new behaviour.
2011-05-27 17:37:20 +02:00
Sebastian Dröge
30a7fd7b4d Merge branch 'master' into 0.11 2011-05-27 13:58:26 +02:00
Sebastian Dröge
d98e9acb0f caps: Optimize gst_caps_is_subset()
..and as a result gst_caps_is_equal() and others.

This now only checks if for every subset structure there is
a superset structure in the superset caps. Previously we were
subtracting one from another, creating completely new caps
and then even simplified them.

The new implemention now is about 1.27 times faster and doesn't
break the -base unit tests are anything anymore.
2011-05-27 13:38:51 +02:00
Sebastian Dröge
0cf2dfd0ba caps: Fix subset check in gst_caps_merge()
Caps A are a subset of caps B even if caps B doesn't
have all fields of caps A.

Also add a unit test for this.
2011-05-27 13:37:06 +02:00
Wim Taymans
f4f4fa5e8f pad: remove old gst_pad_set_blocked methods 2011-05-26 16:17:31 +02:00
Wim Taymans
2c221a5729 feature: use object name
Remove the name property from the plugin feature and port code to use the object
name instead.
2011-05-24 18:17:24 +02:00
Wim Taymans
31a314ac5b pad: add pending event for sticky events
Change the sticky event array so that it contains a pending and an active event.
Events on the sinkpad are copied to the pending array and after the eventfunc
returned TRUE, moved to the active event. This allows us to queue new events
like when we do per-pad offsets without removing the currently active event.
Remove the active argument from the gst_pad_get_sticky_event() method, the
pending events are not something we want to expose.
2011-05-20 11:36:25 +02:00
Wim Taymans
83389aa197 tests: caps are not stored on flushing pads
Caps are now also stored on flushing pads in the inactive state.
2011-05-19 19:07:29 +02:00
Sebastian Dröge
a46c9c2a62 event: Make SEGMENT event parsing API more consistent with the others 2011-05-18 16:56:43 +02:00
Wim Taymans
b1676b8c30 event: fix event copy
Fix parent refcount on event copy.
Fix unit test.
2011-05-18 15:43:20 +02:00
Wim Taymans
029ac4597e pad: rework sticky events a little
Update the design docs with some clear rules for how sticky events are
handled.
Reimplement the sticky tags, use a small structure to hold the event and its
current state (active or inactive).
Events on sinkpads only become active when the event function returned success
for the event.
When linking, only update events that are different.
Avoid making a copy of the event array, use the object lock to protect the event
array and release it only to call the event function. This will need to check
if something changed, later.
Disable a test in the unit test, it can't work yet.
2011-05-18 11:08:52 +02:00
Wim Taymans
8699bca39f test: reset pad caps properly 2011-05-17 18:23:22 +02:00
Wim Taymans
7b8b93ad64 tests: fix tests
Remove the tests that handle incompatible formats, we don't want that anymore.
2011-05-17 17:53:00 +02:00
Wim Taymans
189980ec56 pad: remove unref, the object is NULL 2011-05-17 16:50:53 +02:00
Sebastian Dröge
eee515e5ad tests: Update for caps/pad template related API changes 2011-05-17 13:14:16 +02:00
Sebastian Dröge
50f91c0825 Revert "event: example of how to optimize events"
This reverts commit fa28e2c5e6.

The optimization only has minimal impact on the performance and
makes everything more complex.
2011-05-17 11:45:46 +02:00
Sebastian Dröge
3d2127f865 Revert "query: allow _make_writable on query handlers"
This reverts commit cf4fbc005c.

This change did not improve the situation for bindings because
queries are usually created, then directly passed to a function
and not stored elsewhere, and the writability problem with
miniobjects usually happens with buffers or caps instead.
2011-05-17 11:21:41 +02:00
Wim Taymans
ca0069595f tests: set elements in PAUSED
Set elements in PAUSED before trying to set caps on pads.
2011-05-16 19:09:54 +02:00
Wim Taymans
d4f85a0cd9 test: fix ghostpad test
We need to have activated pads before we can pass around caps.
Don't set NULL caps on pads.
2011-05-16 19:05:23 +02:00
Sebastian Dröge
b935a814d9 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	docs/gst/gstreamer-sections.txt
	gst/gstbin.c
	gst/gstelement.c
	gst/gstelement.h
	gst/gstghostpad.c
	gst/gstminiobject.c
	gst/gstminiobject.h
	libs/gst/base/gstbasesrc.c
	libs/gst/base/gstbasetransform.c
	plugins/elements/gstinputselector.c
	tests/check/gst/gstminiobject.c
2011-05-16 16:53:04 +02:00
Sebastian Dröge
6bff1f968a tests: Update for negotiation related API changes 2011-05-16 15:33:11 +02:00
Wim Taymans
bdbc069348 Rework GstSegment handling
Improve GstSegment, rename some fields. The idea is to have the GstSegment
structure represent the timing structure of the buffers as they are generated by
the source or demuxer element.
gst_segment_set_seek() -> gst_segment_do_seek()
Rename the NEWSEGMENT event to SEGMENT.
Make parsing of the SEGMENT event into a GstSegment structure.
Pass a GstSegment structure when making a new SEGMENT event. This allows us to
pass the timing info directly to the next element. No accumulation is needed in
the receiving element, all the info is inside the element.
Remove gst_segment_set_newsegment(): This function as used to accumulate
segments received from upstream, which is now not needed anymore because the
segment event contains the complete timing information.
2011-05-16 11:37:52 +02:00
José Alburquerque
cf671d7b0a miniobject: Add weak referencing functionality
API: gst_mini_object_weak_ref()
API: gst_mini_object_weak_unref()

Add weak referencing functionality to GstMiniObject, which
allows to get notifications when an mini object is destroyed
but doesn't increase the real refcount. This is mostly
useful for bindings.

Fixes bug #609473.
2011-05-14 11:39:35 +02:00
Sebastian Dröge
a216426bb6 ghostpad: API: Expose gst_proxy_pad_get_internal()
This allows to get the internal pad of ghostpads and
proxypads without using gst_pad_iterate_internal_links()
and is much more convenient.

The internal pad of a ghostpad is the pad of the opposite direction
that is used to link to the ghostpad target.
2011-05-14 11:39:34 +02:00
Sebastian Dröge
6e57ce32e5 caps: Merge structures when intersecting instead of appending them
This prevents adding duplicates over and over again to the resulting
caps if they already describe the new intersection result.

While this changes intersection from O(n*m) to O(n^2*m), it results in
smaller caps, which in the end will decrease further processing times.

For example in an audioconvert ! audioconvert ! audioconvert pipeline,
when forwarding the downstream caps preference in basetransform
(see e26da72de25a91c3eaad9f7c8b2f53ba888a0394) this results in
16 instead of 191 caps structures.
2011-05-14 11:39:34 +02:00
Sebastian Dröge
54fd068aba meta: Fix compilation of the unit test after removal of the serialize/deserialize functions 2011-05-13 08:38:30 +02:00
Wim Taymans
fa28e2c5e6 event: example of how to optimize events
Use a structure for the QoS event by 'extending' the GstEventImpl structure.
This should avoid allocation of GstStructures and its contents.
2011-05-11 11:06:36 +02:00
Wim Taymans
cf4fbc005c query: allow _make_writable on query handlers
Pass a GstQuery ** to the query handlers so that they can make the query
writable before using a setter on it.
Port code to new API.
2011-05-10 18:36:33 +02:00
Wim Taymans
933446ec44 query: Hide GstStructure in queries
Hide the GstStructure from the query API.
Rename some methods to match the more common names in GObject libraries.
Add some more useful query API.
2011-05-10 15:33:53 +02:00
Wim Taymans
7f24a48387 event: _qos_full -> _qos 2011-05-09 18:48:55 +02:00
Wim Taymans
c07b57fc05 segment: remove _full version
Rename the _full versions of the functions to the normal function names.
2011-05-09 17:51:07 +02:00
Wim Taymans
b5456cc6f4 caps: remove caps from buffers and pads
Remove the GstCaps from buffers and pads. We now use CAPS events to negotiate
formats between element.
2011-05-09 16:21:28 +02:00
Wim Taymans
ba6b915651 base: avoid using buffer caps
Comment all code using buffer caps.
Rework capsfilter code a little.
Fix some unit tests
2011-05-08 12:46:17 +02:00
Sebastian Dröge
8ce0fea199 tests: Update for new GstIterator API 2011-05-05 15:36:04 +02:00
Sebastian Dröge
dc63e38219 caps: Merge structures when intersecting instead of appending them
This prevents adding duplicates over and over again to the resulting
caps if they already describe the new intersection result.

While this changes intersection from O(n*m) to O(n^2*m), it results in
smaller caps, which in the end will decrease further processing times.

For example in an audioconvert ! audioconvert ! audioconvert pipeline,
when forwarding the downstream caps preference in basetransform
(see e26da72de25a91c3eaad9f7c8b2f53ba888a0394) this results in
16 instead of 191 caps structures.
2011-05-05 15:22:14 +02:00
Wim Taymans
c4751ec8c1 Revert "context: use context on buffers instead of caps"
This reverts commit 9ef1346b1f.

Way to much for one commit and I'm not sure we want to get rid of the pad caps
just like that. It's nice to have the buffer and its type in onw nice bundle
without having to drag the complete context with it.
2011-05-05 13:17:08 +02:00
Sebastian Dröge
65eafd9340 Merge branch 'master' into 0.11
Conflicts:
	docs/gst/gstreamer-sections.txt
	gst/gstelementfactory.c
	gst/gstminiobject.c
2011-05-05 12:27:51 +02:00
Wim Taymans
9ef1346b1f context: use context on buffers instead of caps
Put the srcpad context on buffers instead of caps. This allows us to associate
all the relevant info contained in events with a buffer.
2011-05-04 18:59:47 +02:00
Tim-Philipp Müller
d72f559d29 tests: fix compiler warning in new miniobject test
gst/gstminiobject.c: In function ‘test_dup_null_mini_object’:
gst/gstminiobject.c:459:7: warning: assignment from incompatible pointer type
2011-05-04 15:30:41 +01:00
Thiago Santos
a750aac2dd miniobject: Fix dup_mini_object function to handle NULL gvalues
g_value_dup_object handles gvalues that contain NULL pointers,
gst_value_dup_mini_object should do the same.

https://bugzilla.gnome.org/show_bug.cgi?id=649195
2011-05-03 08:15:51 -03:00
Philippe Normand
4e36f93924 core: store presets, registry and plugins in XDG directories.
Presets and plugins moved to $XDG_DATA_HOME/gstreamer-0.11/
root directory. Registry moved to $XDG_CACHE_HOME/gstreamer-0.11/.

Fixes bug #518597.
2011-05-03 09:43:22 +02:00
Wim Taymans
070cdaab7c Merge branch 'master' into 0.11 2011-04-25 10:30:41 +02:00
Tim-Philipp Müller
0783046100 tests: clean up properly in the bin test_link_structure_change unit test
Don't forget to set the pipeline back to NULL state, which makes
valgrind happy again.
2011-04-24 11:48:21 +01:00
Tim-Philipp Müller
e029aeef9e tests: add simple pipeline-in-pipeline unit test
https://bugzilla.gnome.org/show_bug.cgi?id=648297
2011-04-21 12:33:10 +01:00
Sebastian Dröge
355dbdfa7e tests: Use G_DEFINE_TYPE instead of GST_BOILERPLATE 2011-04-19 11:45:37 +02:00
Sebastian Dröge
a70df76c53 element: Add test for inheriting metadata/pad templates 2011-04-16 15:59:40 +02:00
Sebastian Dröge
f51a23a83c Merge branch 'master' into 0.11 2011-04-16 08:59:58 +02:00
David Schleef
e9afe72710 tests: Add test for greatest common divisor 2011-04-13 10:31:03 -07:00
Tim-Philipp Müller
0e94961069 tests: fix unusued-but-assigned-variable warnings with gcc 4.6 2011-04-11 15:08:30 +01:00
Tim-Philipp Müller
8ba64e4e5d tests: disable test_many_bins unit test for now
It fails on the OSX bot (both with git and the last release), and
it doesn't really test anything useful, so may just as well disable
it for now.
2011-04-11 13:04:32 +01:00
Tim-Philipp Müller
6ca7284a54 tests: allow more time for the test_many_bins pipeline to preroll
Hopefully makes this test work on the OSX build bot and other
not-so-powerful machines.

https://bugzilla.gnome.org/show_bug.cgi?id=646624
2011-04-11 12:04:34 +01:00
Wim Taymans
6be4dbdb5a Merge branch 'master' into 0.11
Conflicts:
	android/base.mk
	android/controller.mk
	android/dataprotocol.mk
	android/elements.mk
	android/gst-inspect.mk
	android/gst-launch.mk
	android/gst-plugin-scanner.mk
	android/gst.mk
	android/indexers.mk
	android/net.mk
	win32/common/libgstbase.def
2011-04-11 10:26:54 +02:00
Edward Hervey
ba515c186b check: Ignore new gstmeta binary 2011-04-09 04:07:04 +02:00
Sebastian Dröge
b17537d14d utils: Fix uninitialized variable compiler warnings 2011-04-08 09:20:28 +02:00
Sebastian Dröge
08b98cc7e9 Merge branch 'master' into 0.11 2011-04-06 14:20:59 +02:00
Tim-Philipp Müller
6a5f8a1b2d checks: make tests_many_bins in bin unit test a bit faster
Not doing expensive checks when linking elements makes things
much faster.
2011-04-06 11:41:14 +01:00
Tim-Philipp Müller
da5d6712a2 checks: add some queues to test_many_bins unit test
To limit the number of calls in a row per thread.
2011-04-06 11:30:18 +01:00
Sebastian Dröge
ec0de993c6 value: GstDate/GDate has a abbreviation now 2011-04-06 11:45:27 +02:00
Tim-Philipp Müller
d7ff4ee6cb checks: add GstBin unit test that creates a lot of bins
Currently fails (in normal circumstances) because we create a
socket pair for each bin's bus and exhaust the number of available
file descriptors.

https://bugzilla.gnome.org/show_bug.cgi?id=646624
2011-04-05 16:30:59 +02:00
Wim Taymans
fdd6433757 Merge branch 'master' into 0.11
Conflicts:
	tests/check/gst/struct_x86_64.h
2011-03-31 17:55:22 +02:00
Wim Taymans
468ec5bc40 bufferlist: simplify bufferlists
We now have multiple memory blocks as part of the buffers and we can therefore
reduce the bufferlist to a simple array of buffers.
2011-03-31 17:51:02 +02:00
Sebastian Dröge
f42f2240d0 gstabi: Add some new structures for x86-64 2011-03-31 10:53:03 +02:00
Wim Taymans
ebb14d95b2 buffer: more API tweaks
_trim -> _resize
_create_sub -> copy_region
2011-03-30 16:47:55 +02:00
Wim Taymans
6da19ffeb2 buffer: more buffer updates 2011-03-29 11:07:36 +02:00
Wim Taymans
a12ede3fb1 Merge branch 'master' into 0.11-fdo
Conflicts:
	gst/gst.c
	libs/gst/base/gstcollectpads.c
2011-03-28 20:11:20 +02:00
Wim Taymans
beac9c4a95 buffer: fix remaining unit tests 2011-03-28 20:08:46 +02:00
Wim Taymans
f35847a094 buffer: fix unit test 2011-03-28 20:08:46 +02:00
Wim Taymans
121ab46aa6 memory: remove memory metadata again 2011-03-28 20:08:46 +02:00
Wim Taymans
38ffe30745 memory: more work on implementing buffer memory 2011-03-28 20:08:46 +02:00
Wim Taymans
1af328e785 memory: more work on porting the unit tests 2011-03-28 20:08:46 +02:00
Wim Taymans
4a9a59df08 tests: make some tests compile 2011-03-28 20:08:46 +02:00
Thiago Santos
0e1a561467 tests: caps: Tests for the new caps intersection mode
Adds test cases for the caps 'first' intersect mode
Adds another test for the 'zigzag' mode

Fixes #617045
2011-03-24 11:38:26 -03:00
Sebastian Dröge
4e16347bfa Merge branch 'master' into 0.11
Conflicts:
	gst/gstbufferlist.c
2011-03-17 10:50:43 +01:00
Jonas Holmberg
c4c06a2b88 bufferlist: Use a GQueue instead of a GList
Adding a buffer to the end of a GstBufferList is supposed to be a fast
operation, but it was not since the iterator does not advance its
nextpointer when adding buffers and GList does not have a tail pointer.
Using a GQueue to store the buffers makes it easier to add buffers to
the end of the list and this operation will now be much more efficient.

Adding an entire GList of buffers using
gst_buffer_list_iterator_add_list() will however have to iterate over
the list being added to be able to update the tail pointer in the
GQueue.
2011-03-11 14:31:14 +01:00
Wim Taymans
f0e3902a37 Merge branch 'master' into 0.11 2011-03-10 10:25:07 +01:00
Stefan Kost
7f49a9189a test: add tests for new element_factory api. 2011-03-09 15:28:06 +02:00
Stefan Kost
e66ae6681a tests: add a unit test for gst_caps_new_simple
Add a test for the crash in bug #642271.
2011-03-08 23:01:15 +02:00
Wim Taymans
fa0d993372 meta: implement transform function
Replace subbuffer and copy vmethods by a more generic transform function that
can then be parametrised by transform specific data. This should allow us to
implement make-writable and more future transform functions.
2011-03-08 17:11:23 +00:00
Wim Taymans
fd0fd97200 Merge branch 'master' into 0.11 2011-03-08 17:06:30 +00:00
Stefan Kost
7c98ae2b98 tests: add test to create a factory 2011-03-08 12:29:28 +02:00
Stefan Kost
b6e2c69134 tests: start a new test suite for element factories
Move one test from gstelement suite.
2011-03-08 12:29:28 +02:00
Wim Taymans
230c3455ac Merge branch 'master' into 0.11
Conflicts:
	gst/gstregistry.h
2011-03-02 11:08:34 +01:00
Wim Taymans
f5d1dcbd9a tests: add memory unit test 2011-02-28 09:39:44 +01:00
Wim Taymans
58060d7528 meta: separate add and get methods
Make separate api for getting and adding metadata. This allows us to pass extra
parameters to the init functions when creating metadata, which is needed for
specific API implementations.
Add beginnings of memory metadata.
2011-02-27 19:40:45 +01:00
Wim Taymans
6f4a733063 metadata: Rename to GstMeta
Rename to the shorter GstMeta
Add docs
Add api to get metadata by API
2011-02-25 13:15:25 +01:00
Wim Taymans
45645a11a1 buffermeta: fix compilation 2011-02-25 10:34:52 +01:00
Wim Taymans
023cada1f4 meta: improve test a little 2011-02-25 10:34:52 +01:00
Wim Taymans
8468dadc77 buffermeta: add beginnings of buffer metadata
Add first implementation of arbitrary buffer metadata. We use a simple linked
linked of slice allocated metadata chunks. Future implementations could use
something more performant.
Add get, remove, iterate methods to handle the metadata.
2011-02-25 10:34:47 +01:00
Stefan Kost
b3f0d98964 tests: refix the tests (missing #endif) 2011-02-24 16:20:01 +02:00
Stefan Kost
98a50e3b82 tests: add abi check data for ARM 2011-02-24 15:03:03 +02:00
Wim Taymans
6c18c9508d miniobject: more boxed type fixing
More miniobject fixing, leaks horribly somewhere..
2011-02-23 10:35:09 +01:00
Wim Taymans
0894ed2053 Merge branch 'master' into 0.11 2011-02-22 15:08:51 +01:00
Wim Taymans
238b9a57cc Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	gst/gstelement.c
	gst/gstelement.h
	gst/gstpad.c
	gst/gstutils.c
	libs/gst/base/Makefile.am
	libs/gst/check/Makefile.am
	libs/gst/controller/Makefile.am
	libs/gst/dataprotocol/Makefile.am
	libs/gst/net/Makefile.am
	win32/common/libgstreamer.def
2011-02-22 14:11:59 +01:00