Sebastian Dröge [Wed, 11 May 2011 13:38:09 +0000 (15:38 +0200)]
elements: Update for negotiation related API changes
The filter caps are only forwarded and returned instead
of ANY caps in the core elements because they don't do
anything caps specific.
Sebastian Dröge [Wed, 11 May 2011 13:12:04 +0000 (15:12 +0200)]
base: Improve negotiation with new getcaps() filter
Sebastian Dröge [Tue, 10 May 2011 15:56:33 +0000 (17:56 +0200)]
gst: Add a filter caps parameter to all get_caps() functions
This is used to pass the possible caps and preferences to
the pad and to allow better negotiation decisions.
Wim Taymans [Fri, 13 May 2011 16:07:24 +0000 (18:07 +0200)]
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.
Sebastian Dröge [Mon, 16 May 2011 08:25:10 +0000 (10:25 +0200)]
pad: Re-implement notify::caps
Sebastian Dröge [Fri, 13 May 2011 06:38:06 +0000 (08:38 +0200)]
meta: Fix compilation of the unit test after removal of the serialize/deserialize functions
Wim Taymans [Wed, 11 May 2011 17:10:24 +0000 (19:10 +0200)]
meta: remove (de)serialize functions
Add a GType to the metadata to identify the GstMetaInfo.
We can remove the (de)serialize functions for the metadata because we can
register GTtype transform functions between various types to implement
serialization later.
Wim Taymans [Wed, 11 May 2011 16:17:45 +0000 (18:17 +0200)]
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.
Wim Taymans [Wed, 11 May 2011 16:07:23 +0000 (18:07 +0200)]
basetransform: remove obsolete code
Remove some obsolete code.
Don't try to reconfigure when we don't have sink caps.
Sebastian Dröge [Wed, 11 May 2011 14:46:49 +0000 (16:46 +0200)]
bin: Dereference GstQuery** before passing it to GST_QUERY_TYPE_NAME
Wim Taymans [Wed, 11 May 2011 14:03:40 +0000 (16:03 +0200)]
event: update the structure when needed
When we get the structure of an event, make sure it also contains the fields
that we keep in fast variables, this way we can easily serialize and debug
the events. We would probably later simply prefer to register a transform
function to G_TYPE_STRING and G_TYPE_BYTEARRAY etc..
Wim Taymans [Wed, 11 May 2011 14:01:41 +0000 (16:01 +0200)]
caps: cleanups
We don't need to check if the type is 0, the init function is only called once
in the beginning.
Wim Taymans [Wed, 11 May 2011 10:04:43 +0000 (12:04 +0200)]
event: clean up some macros
Avoid executing a method for GST_TYPE_EVENT but instead use the type variable
directly. We can do this because we register it before anything else.
Sebastian Dröge [Wed, 11 May 2011 13:48:15 +0000 (15:48 +0200)]
bus: Fix GST_DEBUG parameters to be consistent with the format string
Sebastian Dröge [Wed, 11 May 2011 13:26:02 +0000 (15:26 +0200)]
basetransform: Implement support for pad reconfiguration again
Sebastian Dröge [Wed, 11 May 2011 13:18:56 +0000 (15:18 +0200)]
capsfilter: Fix deadlock, gst_pad_get_current_caps() already takes the pad's object lock
Wim Taymans [Wed, 11 May 2011 09:06:36 +0000 (11:06 +0200)]
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.
Wim Taymans [Tue, 10 May 2011 16:36:33 +0000 (18:36 +0200)]
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.
Wim Taymans [Tue, 10 May 2011 14:46:15 +0000 (16:46 +0200)]
porting: update porting doc
Wim Taymans [Tue, 10 May 2011 14:41:36 +0000 (16:41 +0200)]
element: use request_new_pad_full as the default
Add GstCaps to request_new_pad so that request_new_pad_full can be removed.
Fix elements.
Wim Taymans [Tue, 10 May 2011 14:23:08 +0000 (16:23 +0200)]
porting: update porting doc
Wim Taymans [Tue, 10 May 2011 13:41:54 +0000 (15:41 +0200)]
query: make sure query is writable
Make sure the Query is writable before executing the setters.
Wim Taymans [Tue, 10 May 2011 13:33:53 +0000 (15:33 +0200)]
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.
Wim Taymans [Tue, 10 May 2011 11:34:10 +0000 (13:34 +0200)]
message: hide the message structure field
Make a private structure to hold the GstStructure bits of the message.
Add some more useful macros like we have for events.
Wim Taymans [Tue, 10 May 2011 10:29:06 +0000 (12:29 +0200)]
caps: fix the macros a little
Wim Taymans [Tue, 10 May 2011 09:50:16 +0000 (11:50 +0200)]
event: Hide the GstStructure
Hide the GstStructure of the event in the implementation specific part so that
we can change it.
Add methods to check and make the event writable.
Add a new method to get a writable GstStructure of the element.
Avoid directly accising the event structure.
Wim Taymans [Mon, 9 May 2011 16:48:55 +0000 (18:48 +0200)]
event: _qos_full -> _qos
Wim Taymans [Mon, 9 May 2011 15:51:07 +0000 (17:51 +0200)]
segment: remove _full version
Rename the _full versions of the functions to the normal function names.
Wim Taymans [Mon, 9 May 2011 14:39:13 +0000 (16:39 +0200)]
segment: remove abs_rate from segment structure
Remove the abs_rate field from the segment structure, we can trivially compute
it when needed.
Wim Taymans [Mon, 9 May 2011 14:21:28 +0000 (16:21 +0200)]
caps: remove caps from buffers and pads
Remove the GstCaps from buffers and pads. We now use CAPS events to negotiate
formats between element.
Wim Taymans [Mon, 9 May 2011 13:06:20 +0000 (15:06 +0200)]
basetransform: Use CAPs event
Use the caps event to configure basetransform.
Remove force_alloc hack, we don't need this in 0.11 with new upstream
negotiation.
Avoid getting some pad caps.
Wim Taymans [Mon, 9 May 2011 13:06:07 +0000 (15:06 +0200)]
basesink: add some more debug
Edward Hervey [Sun, 8 May 2011 09:02:16 +0000 (11:02 +0200)]
win32: Add new symbols
Edward Hervey [Sun, 8 May 2011 09:01:57 +0000 (11:01 +0200)]
gstbuffer: Fix unitialized variables
Wim Taymans [Mon, 9 May 2011 08:54:10 +0000 (10:54 +0200)]
tools: avoid using pad caps
Avoid directly accessing the pad caps, use gst_pad_get_current_caps() instead.
Wim Taymans [Sun, 8 May 2011 11:14:55 +0000 (13:14 +0200)]
Merge branch 'master' into 0.11
Wim Taymans [Sun, 8 May 2011 11:07:13 +0000 (13:07 +0200)]
basesink: use CAPS event instead of setcaps function
Wim Taymans [Sun, 8 May 2011 10:46:17 +0000 (12:46 +0200)]
base: avoid using buffer caps
Comment all code using buffer caps.
Rework capsfilter code a little.
Fix some unit tests
Wim Taymans [Sun, 8 May 2011 10:43:26 +0000 (12:43 +0200)]
pad: improve caps event handling
Fix replace of caps events when linking: we need to unref the old ones.
Make sure we pass error values around.
Move backward compat code into the default handler for now.
Wim Taymans [Sun, 8 May 2011 10:38:05 +0000 (12:38 +0200)]
event: don't ref the caps
Use a different way of getting the caps from the caps event so that no
refcounting happens.
Wim Taymans [Sun, 8 May 2011 10:37:44 +0000 (12:37 +0200)]
buffer: avoid using buffer caps
Tim-Philipp Müller [Fri, 6 May 2011 22:40:58 +0000 (23:40 +0100)]
baseparse: don't post loads of empty taglists
Only post bitrate updates if there's something to post, don't
post empty taglists if nothing changed.
Wim Taymans [Fri, 6 May 2011 17:04:54 +0000 (19:04 +0200)]
pad: avoid using the old GST_PAD_CAPS
Don't use GST_PAD_CAPS but instead use the new gst_pad_get_current_caps()
method.
Avoid setting caps on buffers.
Wim Taymans [Fri, 6 May 2011 17:03:33 +0000 (19:03 +0200)]
pad: add 2 new caps methods
Add method to get the currently configured caps on the pad.
Add a method to check if caps are configured on a pad.
Wim Taymans [Fri, 6 May 2011 15:59:33 +0000 (17:59 +0200)]
pad: implement fixed caps with an object flag
Implement fixed caps with an object flag instead of a custom getcaps function.
Wim Taymans [Fri, 6 May 2011 15:30:24 +0000 (17:30 +0200)]
pad: don't use buffer caps for negotiation
Don't use the buffer caps for negotiation anymore but use the CAPS events.
Make the _set_caps method produce the CAPS event, add some backward
compatibility code to trigger the setcaps functions on src and sinkpads.
Remove all negotiation code from the chain functions.
Don't use the GST_PAD_CAPS variable anymore to store the caps but retrieve the
caps from the sticky event array.
Wim Taymans [Fri, 6 May 2011 14:14:41 +0000 (16:14 +0200)]
selector: don't unset caps
Wim Taymans [Fri, 6 May 2011 14:14:23 +0000 (16:14 +0200)]
typefind: don't unset caps
Wim Taymans [Fri, 6 May 2011 14:13:55 +0000 (16:13 +0200)]
check: let the normal code unset caps
Wim Taymans [Fri, 6 May 2011 14:11:44 +0000 (16:11 +0200)]
outputselector: handle NULL pads in some cases
Wim Taymans [Fri, 6 May 2011 14:11:18 +0000 (16:11 +0200)]
bin: let the pad clean up in activate
Wim Taymans [Fri, 6 May 2011 13:55:31 +0000 (15:55 +0200)]
element: don't mess with pad caps in activate
When deactivating a pad, let the pad decide what fields to clear.
Wim Taymans [Fri, 6 May 2011 13:51:11 +0000 (15:51 +0200)]
event: only allow fixed caps in caps event
Sebastian Dröge [Fri, 6 May 2011 11:01:24 +0000 (13:01 +0200)]
event: Improve documentation of gst_event_new_reconfigure()
Wim Taymans [Fri, 6 May 2011 10:23:01 +0000 (12:23 +0200)]
porting: update porting doc
Wim Taymans [Fri, 6 May 2011 10:19:16 +0000 (12:19 +0200)]
element: rename gst_element_lost_state_full()
Rename gst_element_lost_state_full() to gst_element_lost_state() and
remove the old method name.
Wim Taymans [Fri, 6 May 2011 10:09:00 +0000 (12:09 +0200)]
pad: clean up the .h file a bit
Wim Taymans [Fri, 6 May 2011 09:14:02 +0000 (11:14 +0200)]
pad: implement more sticky events
Remove the context again, adding an extra layer of refcounting and object
creation to manage an array is too complicated and inefficient. Use a simple
array again.
Also implement event updates when calling gst_pad_chain() and
gst_event_send_event() directly.
Stefan Kost [Fri, 6 May 2011 08:35:36 +0000 (11:35 +0300)]
info: avoid redefinition of symbols when debugging is off
The refactoring of gst_debug_add_log_function() now causes build failure when
debug-logging is turned off. Just move it to the conditional part of the header.
Wim Taymans [Fri, 6 May 2011 09:00:18 +0000 (11:00 +0200)]
event: reorder events
Reorder the sticky events so that they are in the order they should be pushed.
Wim Taymans [Thu, 5 May 2011 17:24:46 +0000 (19:24 +0200)]
pad: simplify some more
If we get a context in the chain functions we always need to do a full update of
the context on the peer pad.
Wim Taymans [Thu, 5 May 2011 16:56:41 +0000 (18:56 +0200)]
pad: improve context passing some more
Pass the context downstream when it got updated.
Have two ways of informing downstream of events, do a full context update when
the CONTEXT_PENDING flag is set and simply forward the event otherwise.
Set the CONTENT_PENDING flag when linking pads.
We don't need to old context anymore when updating the context of a pad.
Sebastian Dröge [Thu, 5 May 2011 16:21:21 +0000 (18:21 +0200)]
basetransform: Don't get the parent twice in the setcaps function
Sebastian Dröge [Thu, 5 May 2011 14:59:36 +0000 (16:59 +0200)]
pad: Fix refcount leak of the parent in the default event dispatch function
Wim Taymans [Thu, 5 May 2011 14:32:11 +0000 (16:32 +0200)]
pad: improve passing around the context
Improve passing around the context, only send the context to the peer element
when the CONTEXT_PENDING flag is set.
Sebastian Dröge [Thu, 5 May 2011 14:05:20 +0000 (16:05 +0200)]
win32: Update exports
Sebastian Dröge [Thu, 17 Mar 2011 10:52:42 +0000 (11:52 +0100)]
tests: Update for new GstIterator API
Sebastian Dröge [Thu, 17 Mar 2011 10:32:24 +0000 (11:32 +0100)]
docs/def: Add new symbols, remove old symbols
Sebastian Dröge [Thu, 17 Mar 2011 10:32:11 +0000 (11:32 +0100)]
elements: Update everything for the new GstIterator API
Sebastian Dröge [Thu, 17 Mar 2011 10:31:59 +0000 (11:31 +0100)]
gst: Update everything for the new GstIterator API
Sebastian Dröge [Wed, 16 Mar 2011 09:50:39 +0000 (10:50 +0100)]
iterator: Refactor GstIterator to be more binding friendly and have saner refcounting
Fixes bug #638987.
Johan Dahlin [Sat, 8 Jan 2011 14:27:55 +0000 (12:27 -0200)]
iterator: register as a boxed type
https://bugzilla.gnome.org/show_bug.cgi?id=638987
Johan Dahlin [Sat, 8 Jan 2011 14:14:40 +0000 (12:14 -0200)]
iterator: use GSlice
https://bugzilla.gnome.org/show_bug.cgi?id=638987
Johan Dahlin [Sat, 8 Jan 2011 14:12:41 +0000 (12:12 -0200)]
iterator: free struct in gst_iterator_free
https://bugzilla.gnome.org/show_bug.cgi?id=638987
Johan Dahlin [Sat, 8 Jan 2011 14:07:55 +0000 (12:07 -0200)]
iterator: store size in the struct
https://bugzilla.gnome.org/show_bug.cgi?id=638987
Sebastian Dröge [Thu, 5 May 2011 09:28:38 +0000 (11:28 +0200)]
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.
Sebastian Dröge [Wed, 4 May 2011 09:29:15 +0000 (11:29 +0200)]
basetransform: In getcaps() prefer the caps order and caps of downstream if possible
Sebastian Dröge [Tue, 3 May 2011 15:26:53 +0000 (17:26 +0200)]
basetransform: Prefer caps order given by the subclass of the template caps order
Sebastian Dröge [Tue, 3 May 2011 12:13:59 +0000 (14:13 +0200)]
basesrc: Use the reconfigure flag on the pad instead of the event
Sebastian Dröge [Tue, 3 May 2011 12:11:34 +0000 (14:11 +0200)]
basetransform: Use new reconfigure flag on the pads instead of the reconfigure event
Sebastian Dröge [Tue, 3 May 2011 11:42:44 +0000 (13:42 +0200)]
pad: Keep track of reconfigure events and the pad-needs-reconfiguring status
Sebastian Dröge [Tue, 3 May 2011 11:05:06 +0000 (13:05 +0200)]
event: Rename renegotiate event to reconfigure
In 0.11 this event will also do reconfiguration of buffer pools
and similar things, not just renegotiation.
Olivier Crête [Wed, 17 Mar 2010 21:24:55 +0000 (21:24 +0000)]
pad: Send renegotiate event on link
Olivier Crête [Wed, 17 Mar 2010 21:17:10 +0000 (21:17 +0000)]
pad: Drop renegotiate event if there is no getcaps function on a sink pad
If there is no custom getcaps function on a sink pad, then changes in
downstream caps will never be propagated, so there is no point in trying to
renegotiate the capabilities.
Sebastian Dröge [Tue, 26 Apr 2011 14:39:56 +0000 (16:39 +0200)]
basesrc: Only renegotiate once after receiving a renegotiate event
Also make this threadsafe.
Thiago Santos [Mon, 17 Jan 2011 17:13:46 +0000 (14:13 -0300)]
basesrc: Handle the new renegotiate event
Makes basesrc handle the new renegotiate event by using a
renegotiate flag.
Sebastian Dröge [Tue, 26 Apr 2011 14:48:05 +0000 (16:48 +0200)]
basetransform: Also call gst_base_transform_reconfigure() on renegotiate events
Thiago Santos [Mon, 17 Jan 2011 17:13:46 +0000 (14:13 -0300)]
basetransform: Handle the new renegotiate event
Let basetransform push a renegotiate event upstream
when it gets a new suggestion
Thiago Santos [Mon, 17 Jan 2011 14:51:49 +0000 (11:51 -0300)]
event: Adding new renegotiate event
Wim Taymans [Thu, 5 May 2011 11:10:42 +0000 (13:10 +0200)]
pad: pass the context around
Pass the context from srcpad to sinkpad before dataflow when something
changed.
Wim Taymans [Thu, 5 May 2011 09:17:20 +0000 (11:17 +0200)]
pad: update the context lazyly
Wim Taymans [Thu, 5 May 2011 09:16:48 +0000 (11:16 +0200)]
gst: init the GType early
Wim Taymans [Thu, 5 May 2011 09:16:23 +0000 (11:16 +0200)]
defs: update defs
Wim Taymans [Thu, 5 May 2011 08:40:14 +0000 (10:40 +0200)]
context: add foreach function
Add a function to iterate over all stored events.
Wim Taymans [Thu, 5 May 2011 08:37:19 +0000 (10:37 +0200)]
Revert "context: use context on buffers instead of caps"
This reverts commit
9ef1346b1fa0bd2bb42cd991a52ff308a728bdb6.
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.
Miguel Angel Cabrera Moya [Wed, 20 Apr 2011 20:52:36 +0000 (22:52 +0200)]
parse: don't unescape inside quotes
Escaped characters inside quoted strings are supposed to be unescaped by
deserialization functions, not by parsing functions.
https://bugzilla.gnome.org/show_bug.cgi?id=648025
Sebastian Dröge [Mon, 18 Apr 2011 12:26:33 +0000 (14:26 +0200)]
bin: Only post EOS messages after reaching the PLAYING state
Fixes bug #647756.
Sebastian Dröge [Mon, 18 Apr 2011 08:04:24 +0000 (10:04 +0200)]
pad: Remove unnecessary FIXME
Resetting the result is not necessary when resyncing because
pads that previously got the event will be skipped and we
need to consider the results of the previous pushes.
Sebastian Dröge [Mon, 18 Apr 2011 07:53:55 +0000 (09:53 +0200)]
element: If activating one pad failed error out early instead of trying to activate the next pads
If one pad fails to activate the complete activation process will fail
anyway and trying to activate the other pads only wastes time.
Sebastian Dröge [Mon, 18 Apr 2011 07:49:04 +0000 (09:49 +0200)]
bin: If activating one pad failed error out early instead of trying to activate the next pads
If one pad fails to activate the complete activation process will fail
anyway and trying to activate the other pads only wastes time.