Sebastian Dröge [Tue, 17 May 2011 10:10:27 +0000 (12:10 +0200)]
padtemplate: Create pad templates with floating refs
And take ownership of the floating ref in gst_element_add_pad_template()
Sebastian Dröge [Tue, 17 May 2011 10:07:03 +0000 (12:07 +0200)]
padtemplate: Improve reference handling of the template's caps
gst_pad_template_new() does not take ownership of the caps anymore.
Sebastian Dröge [Tue, 17 May 2011 09:59:00 +0000 (11:59 +0200)]
pad: Let template related functions return new references
gst_pad_template_get_caps(), gst_pad_get_pad_template_caps()
and gst_pad_get_pad_template() return a new reference of the
caps or template now and the return value needs to be
unreffed after usage.
Sebastian Dröge [Tue, 17 May 2011 09:45:46 +0000 (11:45 +0200)]
Revert "event: example of how to optimize events"
This reverts commit
fa28e2c5e6e5e172be308c0c50f44ed6f39e1a71.
The optimization only has minimal impact on the performance and
makes everything more complex.
Sebastian Dröge [Tue, 17 May 2011 09:45:42 +0000 (11:45 +0200)]
Revert "event: update the structure when needed"
This reverts commit
905100cdbe580d4d182bfd9d5ec9b368a110f464.
Sebastian Dröge [Tue, 17 May 2011 09:22:58 +0000 (11:22 +0200)]
structure: Fix compilation
Sebastian Dröge [Tue, 17 May 2011 09:20:05 +0000 (11:20 +0200)]
Revert "query: allow _make_writable on query handlers"
This reverts commit
cf4fbc005c5c530c2a509a943a05b91d6c9af3fb.
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.
Sebastian Dröge [Tue, 17 May 2011 09:19:16 +0000 (11:19 +0200)]
Revert "bin: Dereference GstQuery** before passing it to GST_QUERY_TYPE_NAME"
This reverts commit
437c92b403e0c7da9b9d4509ef4ffbd05710df2b.
Sebastian Dröge [Tue, 17 May 2011 09:19:14 +0000 (11:19 +0200)]
Revert "ghostpad: fix g_return_* with new query"
This reverts commit
877c1c28ff957ca92911eadfc785f8661d9e0127.
Sebastian Dröge [Tue, 17 May 2011 07:40:38 +0000 (09:40 +0200)]
Merge branch 'master' into 0.11
Conflicts:
win32/common/libgstreamer.def
Sebastian Dröge [Tue, 17 May 2011 07:35:54 +0000 (09:35 +0200)]
structure: Make both parameters to gst_structure_is_equal() const
Sebastian Dröge [Tue, 17 May 2011 07:33:47 +0000 (09:33 +0200)]
structure: Update Since markers to the correct version
Sebastian Dröge [Tue, 17 May 2011 07:33:04 +0000 (09:33 +0200)]
structure: Add gst_structure_intersect()
API: gst_structure_intersect()
Edward Hervey [Fri, 10 Sep 2010 16:33:34 +0000 (18:33 +0200)]
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
Edward Hervey [Fri, 10 Sep 2010 16:14:05 +0000 (18:14 +0200)]
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
Wim Taymans [Mon, 16 May 2011 17:09:54 +0000 (19:09 +0200)]
tests: set elements in PAUSED
Set elements in PAUSED before trying to set caps on pads.
Wim Taymans [Mon, 16 May 2011 17:05:23 +0000 (19:05 +0200)]
test: fix ghostpad test
We need to have activated pads before we can pass around caps.
Don't set NULL caps on pads.
Wim Taymans [Mon, 16 May 2011 17:04:35 +0000 (19:04 +0200)]
pad: avoid setting NULL caps on pads
Wim Taymans [Mon, 16 May 2011 16:48:20 +0000 (18:48 +0200)]
basetransform: fix buffer refcounting
When we fail to allocate an output buffer, set the buffer pointer to NULL or
else the calling function will try to unref it.
Remove some old comments
Wim Taymans [Mon, 16 May 2011 16:29:29 +0000 (18:29 +0200)]
capsfilter: allow NULL filters and fix refcounting
Wim Taymans [Mon, 16 May 2011 16:12:33 +0000 (18:12 +0200)]
caps: only add the structure when we could set the parent
Wim Taymans [Mon, 16 May 2011 15:53:48 +0000 (17:53 +0200)]
ghostpad: fix g_return_* with new query
Sebastian Dröge [Mon, 16 May 2011 15:24:11 +0000 (17:24 +0200)]
win32: Update list of exported symbols
Wim Taymans [Mon, 16 May 2011 14:59:20 +0000 (16:59 +0200)]
inputselector: handle more formats
Use the segment format instead of a hardcoded _TIME.
Wim Taymans [Mon, 16 May 2011 14:57:48 +0000 (16:57 +0200)]
basesink: handle more formats
Don't hardcode GST_FORMAT_TIME in places, we can work with many formats.
Sebastian Dröge [Mon, 16 May 2011 14:54:02 +0000 (16:54 +0200)]
Merge branch '0.11' of ssh://git.freedesktop.org/git/gstreamer/gstreamer into 0.11
Sebastian Dröge [Mon, 16 May 2011 14:53:04 +0000 (16:53 +0200)]
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
Wim Taymans [Mon, 16 May 2011 14:10:49 +0000 (16:10 +0200)]
update manual code examples for new _get_caps()
Sebastian Dröge [Fri, 13 May 2011 06:34:33 +0000 (08:34 +0200)]
tests: Update for negotiation related API changes
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.
Mark Nauwelaerts [Tue, 19 Apr 2011 18:05:07 +0000 (20:05 +0200)]
queue2: adjust input data rate estimation
... being aware of possible initial higher burst rate.
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
Tim-Philipp Müller [Sat, 14 May 2011 13:02:06 +0000 (14:02 +0100)]
docs: fix up some Since markers and update for new multiqueue args
Sebastian Dröge [Thu, 12 May 2011 14:48:41 +0000 (16:48 +0200)]
bin: Don't interprete pipelines without sink elements as always being in EOS state
Some tests (e.g. elements/capsfilter) have pipelines with dangling
sinkpads and without a sink element. These pipelines can never post
an EOS message (because this is only valid by a sink) and as such
should never get an EOS message posted by the bin.
Sebastian Dröge [Thu, 12 May 2011 13:51:22 +0000 (15:51 +0200)]
systemclock: Only retry writing to the socket for EAGAIN, EWOULDBLOCK and EINTR
Fixes infinite loop in some cases, bug #650002.
Sebastian Dröge [Thu, 12 May 2011 07:59:20 +0000 (09:59 +0200)]
miniobject: Add new miniobject weak ref/unref functions to the docs
Sebastian Dröge [Thu, 12 May 2011 07:55:45 +0000 (09:55 +0200)]
miniobject: Minor cleanup of last commit
José Alburquerque [Wed, 11 May 2011 17:09:19 +0000 (13:09 -0400)]
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.
Sebastian Dröge [Sat, 19 Mar 2011 09:28:49 +0000 (10:28 +0100)]
inputselector: Add sync mode that syncs inactive pads to the running time of the active pad
Fixes bug #645017.
Sebastian Dröge [Tue, 22 Mar 2011 12:19:47 +0000 (13:19 +0100)]
multiqueue: Add mode to synchronize deactivated/not-linked streams by the running time
Fixes bug #645107, #600648.
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 [Tue, 10 May 2011 14:37:44 +0000 (16:37 +0200)]
element: Add GstElement::state_changed vfunc
API: GstElement::state_changed
This is always called when the state of an element has changed and
before the corresponding state-changed message is posted on the bus.
Sebastian Dröge [Fri, 6 May 2011 14:44:29 +0000 (16:44 +0200)]
ghostpad: Add docs for all the new, public functions
Sebastian Dröge [Fri, 6 May 2011 14:15:51 +0000 (16:15 +0200)]
ghostpad: Add guards against invalid parameters to the new, public functions
Sebastian Dröge [Fri, 6 May 2011 14:00:22 +0000 (16:00 +0200)]
ghostpad: Rename ghostpad/proxypad default functions
API: gst_ghost_pad_activate_pull_default
API: gst_ghost_pad_activate_push_default
API: gst_ghost_pad_internal_activate_pull_default
API: gst_ghost_pad_internal_activate_push_default
API: gst_ghost_pad_link_default
API: gst_ghost_pad_setcaps_default
API: gst_ghost_pad_unlink_default
API: gst_proxy_pad_acceptcaps_default
API: gst_proxy_pad_bufferalloc_default
API: gst_proxy_pad_chain_default
API: gst_proxy_pad_chain_list_default
API: gst_proxy_pad_checkgetrange_default
API: gst_proxy_pad_event_default
API: gst_proxy_pad_fixatecaps_default
API: gst_proxy_pad_getcaps_default
API: gst_proxy_pad_getrange_default
API: gst_proxy_pad_iterate_internal_links_default
API: gst_proxy_pad_query_default
API: gst_proxy_pad_query_type_default
API: gst_proxy_pad_setcaps_default
Sebastian Dröge [Fri, 6 May 2011 13:50:20 +0000 (15:50 +0200)]
ghostpad: Make all the internal caps functions public
This is useful if ghostpad/proxypads should be used but
additional code should be executed, e.g. for tracking
segments in the event function.
Sebastian Dröge [Fri, 6 May 2011 13:25:04 +0000 (15:25 +0200)]
ghostpad: Only implement the iterate_internal_links function on proxypads
ghostpads inherit it from their parent class. Also make it threadsafe.
Sebastian Dröge [Fri, 6 May 2011 13:16:09 +0000 (15:16 +0200)]
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.
Sebastian Dröge [Thu, 5 May 2011 15:54:56 +0000 (17:54 +0200)]
basetransform: When trying to fixate the sink suggestion prefer its structure order
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
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 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.
Tim-Philipp Müller [Sat, 14 May 2011 08:31:33 +0000 (09:31 +0100)]
Back to development
Tim-Philipp Müller [Sat, 14 May 2011 00:00:23 +0000 (01:00 +0100)]
Release 0.10.34
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
Vincent Penquerc'h [Wed, 4 May 2011 12:31:56 +0000 (15:31 +0300)]
basesrc: do not set first buffer timestamp to 0 for live sources
Doing so avoids a large timestamp gap between first and second buffer
for live sources which take time to start up.
The first buffer now has a "live" timestamp based on the running time,
as other buffers do.
https://bugzilla.gnome.org/show_bug.cgi?id=649369
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.
Mark Nauwelaerts [Tue, 10 May 2011 09:11:15 +0000 (11:11 +0200)]
multiqueue: ensure thread safety when adding a pad
This seems to be a regression, and was causing crashes.
https://bugzilla.gnome.org/show_bug.cgi?id=649878
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.
Tim-Philipp Müller [Tue, 10 May 2011 07:55:10 +0000 (08:55 +0100)]
Release 0.10.33
Highlights:
- new parser base class: GstBaseParse
- new core element: funnel
- OSX multi-arch fixes
- new QoS type for QoS events
- new progress message API to notify applications of asynchronous operations
- countless other fixes and improvements
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