Commit graph

6684 commits

Author SHA1 Message Date
Wim Taymans
7bcc3baf64 buffer: improve gst_buffer_new_wrapped_full()
Make it possible to wrap all kinds of memory by exposing all properties to
gst_buffer_new_wrapped_full(). This makes it possible to also create writable
memory without a free function or memory with extra padding.
2012-03-20 10:20:29 +01:00
Wim Taymans
db1318ab4a pad: change the semantics of get/pull_range a little
Make it so that one can specify a buffer for get/pull_range where the downstream
element should write into. When passing NULL, upstream should allocate a buffer,
like in 0.10.
We also need to change the probes a little because before the pull probe, there
could already be a buffer passed. This then allows us to use the same PROBE
macro for before and after pulling.
While we're at the probes, make the query probe more powerful by handling the
GST_PAD_PROBE_DROP return value. Returning _DROP from a query probe will now
return TRUE upstream and will not forward the probe to the peer or handler.
Also handle _DROP for get/pull_range properly by not dispatching to the
peer/handler or by generating EOS when the probe returns DROP and no buffer.
Make filesrc handle the non-NULL buffer passed in the get_range function and
skip the allocation in that case, writing directly into the downstream provided
buffer.
Update tests because now we need to make sure to not pass a random value in the
buffer pointer to get/pull_range
2012-03-16 21:37:10 +01:00
Wim Taymans
6b90850257 event: fix docs a little, alloc_buffer is gone 2012-03-16 18:39:08 +01:00
Wim Taymans
a7e6c7d2a8 bufferpool: split bufferpool configuration
Make separate methods to control the bufferpool and the allocator used by the
bufferpool.
Make it possible to change the allocator of a pool.
2012-03-15 22:09:02 +01:00
Wim Taymans
83af60019e query: rework the ALLOCATION query
Separate the bufferpool and allocator hints in the allocation query, some
of the values don't always make sense together.
Keep the bufferpool and its configuration together.
Keep the allocator and its parameters together.
Allow for multiple bufferpool configurations in the query.
2012-03-15 20:23:59 +01:00
Wim Taymans
c8acf02f23 pad: comment and debug improvement 2012-03-15 16:50:31 +01:00
Wim Taymans
f0084ac8e9 utils: improve debug
also fix a potential memory leak
2012-03-15 16:49:33 +01:00
Wim Taymans
9a1cd17136 GstBufferPoolParams -> GstBufferPoolAcquireParams
Because those flags are not from the bufferpool but for the acquire function.
2012-03-15 14:01:44 +01: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
Wim Taymans
69e3639c96 query: fix copy function
Copy the structure too.
2012-03-15 13:42:17 +01:00
Wim Taymans
592b5bec39 memory: fix maxsize after align
when we align the data pointer, make sure to update the maxsize.
Add some more debug
2012-03-15 13:42:17 +01:00
Wim Taymans
edd2ffe4d4 memory: Add 0 padding
Change gst_allocator_alloc() so that we can also spicify flags and padding.
Add 2 new flags to mark the memory 0 prefixed/padded. This allows us to
remove some resizes in the base classes.
When allocating memory, memset prefix and padding with 0 when the flags tell
us to.
On resize, clear the zero padding flags if we can't guarantee the memory is
still 0 filled.
Update tests.
2012-03-14 21:32:22 +01:00
Wim Taymans
3d76e6011c query: also include padding in ALLOCATION query
Negotiating padding is needed on second thought so include it in the
ALLOCATION query.
Make the bufferpool take padding into account when allocating.
Make basesrc take padding into account.
Use padding and prefix when allocating in basetransform.
2012-03-14 19:47:10 +01:00
Mark Nauwelaerts
f2d81f4c3d bufferpool: free owned discarded pool config 2012-03-14 17:20:01 +01:00
Wim Taymans
e332862985 pad: implement DRAIN handling
When we forward the DRAIN query and there is nothing to forward it to, assume we
are drained.
When a basesink receives a drain query, reply with TRUE.
2012-03-14 16:27:31 +01:00
Wim Taymans
318baf4cd9 query: add new drain query
With the new serialized downstream queries we can implement a drain query that
makes an element waits until a downstream element replies to the query.
2012-03-14 16:18:02 +01:00
Wim Taymans
05cd564bea pad: make serialized queries push sticky events first
Before we can proceed with a serialized query, we need to be sure that all
sticky events were pushed.
2012-03-14 16:01:15 +01:00
Wim Taymans
fb2fc331de pad: take stream lock on serialized queries 2012-03-14 15:29:12 +01:00
Wim Taymans
cd6693fdc9 pad: enforce correct query direction 2012-03-14 15:16:56 +01:00
Wim Taymans
5a21eb36c7 query: register queries like events
Also register queries with a QueryType that allows us to check if the event is
sent in the right direction. Add a serialized query type because we will need
this for the allocation query.
Remove the QueryTypeDefinition stuff, it is not used anymore and we now use
custom queries and separate API for them.
Update defs.
2012-03-14 14:51:16 +01:00
Wim Taymans
d2d7be7b75 bin: remove old compat mode 2012-03-13 15:40:37 +01:00
Wim Taymans
bcf115a620 caps: small docs update 2012-03-13 15:40:23 +01:00
Wim Taymans
272142089e caps: remove gst_caps_union()
Remove gst_caps_union(), use gst_caps_merge(). This function was not used
anymore and it is unclear what the difference is with _merge().
2012-03-13 10:04:36 +01:00
Wim Taymans
5e719a293a caps: delay _make_writable() until needed in _normalize()
Delay _make_writable() until we actually found a list and need to update the
caps.
2012-03-12 18:34:30 +01:00
Wim Taymans
4cdddd2bb1 caps: shortcut simplify earlier
A simple caps is already simplified, no need to check for fixedness.
2012-03-12 18:25:38 +01:00
Wim Taymans
f4aa1b1011 caps: small cleanup, remove const 2012-03-12 18:22:05 +01:00
Wim Taymans
4bbc3b6f04 caps: small cleanups 2012-03-12 18:02:27 +01:00
Wim Taymans
1bc93bbf8f caps: small doc improvement 2012-03-12 16:40:38 +01:00
Wim Taymans
4feb6c3989 caps: fix some 0.11 FIXMEs 2012-03-12 12:35:07 +01:00
Wim Taymans
67931bfded caps: make _normalize take ownership of input
Make gst_caps_normalize() take ownership of the input so that it can more
intelligently decide when to copy or not.
2012-03-12 12:21:34 +01:00
Wim Taymans
8a76c3269a caps: _do_simplify() -> _simplify()
Rename _do_simplify() to _simplify(). The name was introduced as a replacement
method for a deprecated method but we can now rename it again.
Fix some docs.
2012-03-12 11:38:37 +01:00
Wim Taymans
9cdbffea94 caps: improve _do_simplify
Make gst_caps_do_simplify() take ownership of the input caps and produce a
simplified output caps. This removes the requirement of having writable input
caps and the method can make the caps writable only when needed.
2012-03-12 10:42:23 +01:00
Wim Taymans
43abf99a8a caps: avoid using in-place oprations
Rework some caps operations so they don't rely on writable caps but instead take
ownership of the input caps and do _make_writable() only when needed.
Remove some const from caps functions, it does not make much sense for
refcounted objects and does not allow us to return a refcount to the const input
caps.
Rework the base classes fixate vmethods to not operate on the caps in-place.
All this saves us around 30% of caps and structure copy and new operations.
2012-03-11 18:57:44 +01:00
Wim Taymans
89d0316895 structure: add allocation debug 2012-03-11 17:22:01 +01:00
Wim Taymans
fe5fe438d3 typefind: remove const from refcounted GstCaps
Having const on refcounted objects require us to make copies instead of simply
taking a ref, don't do that.
2012-03-10 09:25:43 +01:00
Wim Taymans
6426145fc9 registry: avoid copy when caps are fixed
Avoid doing a useless copy when the caps are fixed and simplify will not do
anything.
2012-03-10 09:15:43 +01:00
Wim Taymans
6ffba69d65 buffer: small optimizations
shortcut heavy work when buffer_resize does nothing.
Avoid an extra _ref when mapping a buffer.
Add some G_LIKELY.
2012-03-09 16:14:02 +01:00
Wim Taymans
35241f35c0 pad: also push sticky events on new event
Make a helper function check_sticky to check and push pending sticky events.
Move the handling of the result of pushing the sticky event inside the
push_event function, we need to mark the event as received when it was pushed
correctly.
Move the sticky events code outside of gst_pad_push_event_unchecked and
make it purely handle sending the event to the peer.
when pushing a sticky event, first store it on the pad. Then check and push any
pending sticky events when we get a serialized or sticky event on a srcpad. This
fixes the issue where sticky events are not pushed when an event is pushed.
2012-03-09 11:53:54 +01:00
Wim Taymans
0054e6da9e pad: store the received result from _foreach
If the foreach function changes the received state of the sticky event, make
sure we remember that.
2012-03-09 11:52:29 +01:00
Wim Taymans
a80581831e pad: add comment 2012-03-09 11:52:11 +01:00
Tim-Philipp Müller
e09fe53a22 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	common
	gst/gstpad.h
	gst/gsttask.c
	libs/gst/base/gstcollectpads2.h
2012-03-08 19:55:30 +00:00
Tim-Philipp Müller
4d2adb0249 pad, task: improve debug logging 2012-03-08 16:30:49 +00:00
Tim-Philipp Müller
c683e39429 pads, collectpads2: get rid of superfluous brackets around static rec mutex calls
Makes it possible to define those calls to something for tracing.
2012-03-08 16:27:48 +00: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
Wim Taymans
7b8263de93 pad: return ANY for a pad without template
Because gst_pad_get_pad_template_caps() returns ANY when there is no template,
the query caps function should also return ANY when there is no template (and no
pad current caps) instead of EMPTY.
2012-03-08 10:34:42 +01:00
Wim Taymans
4232b47685 pad: small cleanup 2012-03-08 10:34:41 +01:00
Wim Taymans
185b3c6a0d memory: add comment 2012-03-08 10:34:41 +01:00
Sebastian Dröge
6b4091a30d Merge branch 'master' into 0.11
Conflicts:
	libs/gst/base/gstbaseparse.c
	libs/gst/base/gstbasetransform.c
	plugins/elements/gsttee.c
2012-03-08 10:19:52 +01:00
Sebastian Dröge
c8cde669b7 gst: Fix 'comparison of unsigned enum expression >= 0 is always true' compiler warning 2012-03-06 12:16:19 +01:00
Wim Taymans
0d9f22d212 gst: include gstmeta.h 2012-03-02 17:04:05 +01:00
Wim Taymans
b3c8264a14 bufferpool: add more debug info 2012-03-02 17:03:49 +01:00
Wim Taymans
5cd35d6386 meta: add boolean to signal a region copy
Add a boolean to the metadata copy transform that signals if a only a
region is copied.
2012-03-02 12:45:23 +01:00
Wim Taymans
36b6204811 meta: transform docs
Use gst- prefix for metadata transform types.
2012-03-02 11:57:52 +01:00
Sebastian Dröge
cfe71423f0 gst: Remove gstmarshal.[ch] completely and use the generic marshaller
Fixes bug #671130.
2012-03-02 11:05:48 +01:00
Sebastian Dröge
441402f9d5 gst: Don't install gstmarshal.h
The generic, FFI based marshaller should be used instead of these
and we definitely shouldn't export the marshallers in our public API.
2012-03-02 10:51:42 +01:00
Wim Taymans
391b4309f9 meta: improve debugging
Add category for metadata debug
2012-03-01 17:41:57 +01:00
Wim Taymans
fe0d89f73b pad: improve debugging 2012-03-01 17:41:57 +01:00
Wim Taymans
faae1d9ff2 meta: add tag for memory metadata 2012-03-01 17:41:57 +01:00
Wim Taymans
b1dfe92f5c query: add method to remove allocation_meta
Also g_return_if_fail for out-of-bounds access instead of silently failing.
2012-03-01 17:41:57 +01:00
Sebastian Dröge
99a8cd1048 Merge branch 'master' into 0.11
Conflicts:
	libs/gst/base/gstcollectpads2.c
	libs/gst/check/gstconsistencychecker.c
2012-03-01 14:43:01 +01:00
Mark Nauwelaerts
70b5fc7ff0 pad: fix some debug message typos 2012-03-01 10:49:45 +01:00
Wim Taymans
e80296cf46 meta: split registration of API and implementation
Split out the registration of the metadata API and its implementation. Make a
GType for each metadata API. This allows us to store extra information with the
API type such as the tags.
Change the buffer API so that we can get the metadata using the API GType.
Change the query API so that we use the metadata API GType in the allocation
query instead of a string.
Update netaddress and unit tests
2012-02-29 17:37:09 +01:00
Wim Taymans
fc01e757cf minobject: small .h indent fix 2012-02-29 17:37:09 +01:00
Tim-Philipp Müller
ebe525be4c structure: print a g_warning() if someone tries to construct 0.10-style raw audio/video caps 2012-02-29 12:41:44 +00:00
Wim Taymans
f0105dd81f meta: add return vale to transform
Add a boolean return value so that we can see when a transform fails.
2012-02-28 16:17:47 +01:00
Wim Taymans
6e0e782025 meta: add method to check for a tag 2012-02-28 12:52:00 +01:00
Wim Taymans
166cfadb71 meta: add support to tagging the metadata
Add support for adding tags to the metadata. with some standard keys, this
should make it possible to describe what the metadata refers to. We should be
able to use this information to decide if a transformation destroys the metadata
or not.
2012-02-28 11:34:48 +01:00
Edward Hervey
823807c5f0 Suppress deprecation warnings in selected files, for g_value_array_* mostly 2012-02-27 13:43:59 +01:00
Wim Taymans
b95ceeb09b remove some useless includes in .h 2012-02-27 09:48:06 +01:00
Wim Taymans
eb84682e92 clock: make more stuff private
Expose methods to get and set the timeout because subclasses uses this.
2012-02-27 09:11:36 +01:00
Wim Taymans
8909205b85 systemclock: make more stuff private 2012-02-27 09:11:36 +01:00
Wim Taymans
10056f1833 bufferpool: make more stuff private 2012-02-27 09:11:36 +01:00
Wim Taymans
cd25c05b02 bus: make more fields private 2012-02-27 09:11:36 +01:00
Tim-Philipp Müller
1fbcc71dbd Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	NEWS
	RELEASE
	configure.ac
	docs/plugins/gstreamer-plugins.hierarchy
	docs/plugins/inspect/plugin-coreelements.xml
	libs/gst/base/gstcollectpads.c
	libs/gst/base/gstcollectpads2.c
	plugins/elements/gstfdsink.c
	win32/common/config.h
	win32/common/gstenumtypes.c
	win32/common/gstversion.h
2012-02-27 00:08:39 +00:00
Tim-Philipp Müller
031514faeb registry: fix lseek() return code handling
lseek() returns the offset if successful, and this is != 0 and
does not indicate an error. And if it does actually fail, don't
return FALSE (0) as an int, but -1. None of these things are
likely to have made a difference, ever. I don't think the offset
seek can ever actually happen, the current file position and the
current offset should always be increased in lock step, unless
there was an error in which case we'd just error out.
2012-02-24 23:49:54 +00:00
Tim-Philipp Müller
c25b8e153d registry: don't forget to clean up registry temp file in another error case
Also clean up temp file if we get an error during write() rather
than just when doing fsync() or close().
2012-02-24 23:49:54 +00:00
Wim Taymans
ed29f33ddb atomicqueue: fix race
After a writer has written to its reserved write location, it can only make the
location available for reading if all of the writers with lower locations have
finished.
2012-02-24 15:24:42 +01:00
Wim Taymans
61e8fa0dc5 atomicqueue: fix subtle race
Fix a race where the reader would see the updated the tail pointer before the
write could write the data into the queue. Fix this by having a separate reader
tail pointer that is only incremented after the writer wrote the data.
2012-02-24 12:51:24 +01:00
Wim Taymans
6b22a63f1b meta: flesh out the metadata transform
Flesh out the transform method. Add a type and extra info to the transform
function so that implementation can transform the metadata.
Remove the copy function and replace with the more generic transform.
2012-02-24 10:28:56 +01:00
David Schleef
bc186f85ed spelling fix 2012-02-23 08:48:40 -08:00
David Schleef
fb0b63d8fd poll: fix spelling of writable 2012-02-23 08:48:40 -08:00
Wim Taymans
69d56a2927 memory: add user_data to GstMapInfo
Add extra pointers to GstMapInfo so that implementations can use these to store
extra info.
2012-02-23 15:32:33 +01:00
Wim Taymans
1a8a371bce bufferpool: improve docs 2012-02-23 15:32:19 +01:00
Wim Taymans
7b0e4f27fb memory: make _new_wrapped take user_data and notify
Make it possible to configure a GDestroyNotify and user_data for
gst_memory_new_wrapped() this allows for more flexible wrapping of foreign
memory blocks.
2012-02-22 02:10:21 +01:00
Wim Taymans
c105b467fa pad: handle NULL callbacks
When we have a matching NULL callback, also consider the 'callback' marshalled,
this way blocking probes with a NULL callback actually work.
2012-02-21 16:37:11 +01:00
Wim Taymans
afba547722 segment: don't use duration in clipping
Don't use the duration in the segment for calculating clipping values.
The duration is expressed in stream time and clipping is done on unrelated
timestamp values.
This used to be interesting for elements that used the segment structure to
implement seeking because then they would use stream-time for the segment
start/stop values and the duration could be used as a fallback when the stop
position was not set. Now that the complete segment event is passed between
elements we cannot do this anymore because some elements might store the
duration and start/stop values with different time bases in the segment.
2012-02-20 14:39:26 +01:00
Wim Taymans
3eeb6e6c05 info: debug segment duration as well 2012-02-20 14:28:57 +01:00
Wim Taymans
d09073b755 memory: fix more docs 2012-02-18 01:04:18 +01:00
Edward Hervey
f730ab02a4 doc fixups 2012-02-17 15:53:58 -08: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
386562f7e4 pad: make some errors critical
When we have no chain function or when we are operating the pad in the wrong
mode, emit a critical instead of posting an error message. This is certainly a
programming error and we cannot always post a message (like when the pad has no
parent)
2012-02-18 00:03:41 +01:00
Wim Taymans
7fc783f723 info: also debug position of segment 2012-02-18 00:03:13 +01:00
Wim Taymans
592ead764c task: add more debug 2012-02-15 12:18:38 +01:00
Wim Taymans
c6a1bed1ad memory: more work on refcount and writability
Rename _is_writable() with _is_exclusive because the writability does not depend
on the amount of references to the memory object anymore.
Add accessor macros for the memory flags.
Rename the GstBuffer _peek_memory() method to _get_memory() and return a
reference to the memory now that we can do this without affecting writability
of the memory object. Make it possible to also make this function merge the
buffer memory.
Add methods to replace memory in a buffer. Make some convience macros for the
buffer memory functions.
Fix unit tests.
2012-02-13 18:04:03 +01:00
Wim Taymans
c32456224e meta: fix typos 2012-02-13 16:42:56 +01:00
Tim-Philipp Müller
7329843fe6 event: make _parse_nth_stream_config_header() and _parse_setup_data() return a boolean
As they can fail (only one of stream headers or setup data
is usually present).
2012-02-12 21:05:45 +00:00
Tim-Philipp Müller
4d937fafbb event: rename gst_event_{set,parse}_stream_config_codec_data() to _setup_data()
More generic.
2012-02-12 20:51:39 +00:00
Wim Taymans
151d7faca3 clean up object init
Make an _init method where the parent mini-object and other fields are
initialized.
Check that the passed structure doesn't already have a parent.
Use the _new_custom () constructors
2012-02-10 15:02:23 +01:00
Wim Taymans
c9a3051b37 pad: silence probe debug a litte 2012-02-10 12:05:18 +01:00