Commit graph

1652 commits

Author SHA1 Message Date
Mark Nauwelaerts
ee6f6ff362 baseparse: arrange for properly disjoint frame flags 2012-03-07 11:25:19 +01:00
Wim Taymans
ed94dbf1d2 basetransform: delay pool activation
Delay the activation of the bufferpool until we actually need a buffer from the
pool.
2012-03-06 15:17:05 +01:00
Sebastian Dröge
ed7f480222 baseparse: Fix 'self-comparison always evaluates to true'
This was really a bug.
2012-03-06 12:28:02 +01:00
Sebastian Dröge
7c32cfd661 basetransform: Fix 'equality comparison with extraneous parentheses' compiler warning 2012-03-06 12:23:15 +01:00
Wim Taymans
247d2d08f7 basetransform: don't propose_allocation before negotiation
Answer the allocation query with FALSE when we are not negotiated yet because at
that point we have no idea if we need to proxy the allocation query or not.
2012-03-05 15:23:46 +01:00
Sebastian Dröge
495aca4905 baseparse: Fix handling of multiple newsegment events
Previously only the last would be pushed, which would cause
invalid running times downstream. This also fixes the handling
of update newsegment events.
2012-03-05 14:41:12 +01:00
Sebastian Dröge
563ba031a2 baseparse: Also flush the close_segment
Pushing this after flushing will confuse downstream.
2012-03-05 14:37:57 +01:00
Sebastian Dröge
747dfc09b2 baseparse: Remove obsolete code and move gap handling to the correct place
The segment start adjustment code in pull mode should never trigger
anymore because the bisection code earlier would have already made
sure that we're at the desired position.

Also move the gap handling some lines below after sending the currently
configured segments. Otherwise we might fill gaps in a segment that is
not configured downstream yet.
2012-03-05 14:23:17 +01:00
Sebastian Dröge
13930dad53 baseparse: Clear some more state when receiving FLUSH_STOP
Like pending serialized events and the currently cached buffer.
2012-03-05 13:12:18 +01:00
Sebastian Dröge
cd195f2143 baseparse: Only queue serialized events for sending them later 2012-03-05 13:01:14 +01:00
Wim Taymans
7eae198be2 basetransform: refine metadata filter and transform
Add a vmethod to filter metadata that should be passed upstream. By default,
don't pass anything.
Add a vmethod to transform metadata from the input buffer to the output buffer.
By default, nothing is transformed or copied.
2012-03-02 17:32:28 +01:00
Wim Taymans
3fa69e6e11 basetrans: fix comment 2012-03-02 11:08:55 +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
Wim Taymans
afb9d81be9 basetransform: improve debugging 2012-03-01 17:41:57 +01:00
Wim Taymans
bdcf1dc3cd basetransform: remove metadata tagged with the memory tag
Remove metadata that describes the particular memory of the buffer it is
attached to. We need to do this because in non-passthrough mode we will allocate
new memory for our output buffer.
2012-03-01 17:41:57 +01:00
Wim Taymans
d6a28a6e3a basetransform: improve propose_allocation
Improve the propose allocation vmethod by passing the downstream allocation
query to it. This way the vmethod implementation can use properties of the
downstream allocation to generate the upstream query result. If there is no
downstream quety, it means that the element is working in passthrough mode.
Implement a default decide_allocation.
2012-03-01 17:41:57 +01:00
Wim Taymans
4f6faa3405 basetransform: clear allocation parameters in passthrough
Clear the allocation parameters when we operate in passthrough.
2012-03-01 17:41:57 +01:00
Sebastian Dröge
a8dcb63616 libs: Fix some merge mistakes 2012-03-01 14:51:26 +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
Stefan Sauer
9fd063e404 collectpads2: add more logging 2012-02-28 20:36:59 +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
Stefan Sauer
daa5cae78b collectpads2: rescue the annotation from collectpads 2012-02-26 23:11:23 +01:00
Stefan Sauer
6045e0f58f docs: fix a typo in comment 2012-02-26 23:10:58 +01:00
Stefan Sauer
b9a6b3fc6e collectpads2: move "MT save" tags to doc body
It is not useful to have "MT safe" tags randomly in body, returns or since paragraphs.
2012-02-26 22:57:02 +01:00
Wim Taymans
beea57dca7 basetransform: fix reconfigure methods
Rename gst_base_transform_suggest to gst_base_transform_reconfigure_sink because
that is what it does. Also remove the caps and size because that is not needed.
Rename gst_base_transform_reconfigure to gst_base_transform_reconfigure_src.
Remove some old unused code in capsfilter.
2012-02-24 11:00:21 +01:00
Wim Taymans
d052c778af basetransform: remove transform lock
This is not needed anymore by the baseclass. subclasses should do their own
locking when needed.
2012-02-23 11:08:26 +01:00
Wim Taymans
c83e02d476 basetrans: cleanups
Clean up the setcaps function.
The passthrough variable is protected with the object lock.
2012-02-23 10:12:44 +01:00
Wim Taymans
f3ca3f89f7 basetransform: improve propose_allocation
Always call the propose_allocation method and provide a default implementation
that passes the query on in passthrough mode so that subclasses can also call
this. Also pass if the transform is in passthrough mode so that the
implementation can adjust its algorithm.
2012-02-22 15:26:05 +01:00
Wim Taymans
90a82c7e81 basetrans: improve fixate_caps function
Make it possible to also implement non-inplace fixate functions. Let the fixate
function make the caps writable when needed because some fixate functions might
not need to modify the caps.
2012-02-22 12:24:34 +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
810e67900b basetransform: copy metadata when using a pool
also copy the metadata when we allocated a new buffer from a pool
2012-02-20 11:46:36 +01:00
Edward Hervey
dc304041ed basesrc: Move variable and assignment to where it's needed 2012-02-17 15:11:38 -08:00
Edward Hervey
7f8be6935a basetransform: Handle return value of decide_allocation vmethod
If it fails, properly propagate the error
2012-02-17 15:11:38 -08:00
Mark Nauwelaerts
d95d2cfa1b baseparse: tweak some documentation 2012-02-15 17:12:09 +01:00
Mark Nauwelaerts
bfa4bb7150 baseparse: simplify and improve frame state handling
Use a frame flag to signal to subclass it should reset any retained
state w.r.t. frame parsing since the frame being passed is 'new',
i.e. not related to previously passed and processed data.
2012-02-15 17:11:54 +01:00
Wim Taymans
2609c7b452 baseparse: don't leak event
In the unlikely case where the subclass set the event function to NULL, don't
leak the event.
2012-02-15 13:15:55 +01:00
Wim Taymans
b6b239ceaa baseparse: make activation code more like other
Make the pad activation code look more like other activation code.
Only start the sinkpad task when we decide to activate in pull mode, when we
later add srcpad pullmode this will be needed.
2012-02-15 12:19:13 +01:00
Wim Taymans
49a7832499 baseparse: add some more debug 2012-02-15 11:11:11 +01:00
Mark Nauwelaerts
d148569cd4 baseparse: track consumed input size
... as used by subsequent input data rate estimation (and seeking).
2012-02-15 11:00:36 +01:00
Wim Taymans
63ba55865c baseparse: chain up to parent for defaults
Chain up to the parent instead of using the FALSE return value from the event
function (because it's otherwise impossible to return an error).
2012-02-15 10:13:37 +01:00
Mark Nauwelaerts
36cc9efa80 baseparse: Revert "baseparse: really provide upstream ts to subclass"
This reverts commit 2363490ef5.
2012-02-14 20:17:37 +01:00
Mark Nauwelaerts
a40b993bc3 baseparse: remove dead code and superfluous loop level 2012-02-14 19:33:50 +01:00
Mark Nauwelaerts
193e1cf16e baseparse: modify reverse playback handling
... so as to allow the push-mode case to provide data to subclass
on a buffer by buffer basis (as in regular forward case), rather
than all buffers of a fragment chucked together.

Also refactor buffer handling some more, and add some debug.
2012-02-14 19:33:46 +01:00
Mark Nauwelaerts
2363490ef5 baseparse: really provide upstream ts to subclass 2012-02-14 19:33:33 +01:00
Wim Taymans
ebf502d1c6 Merge branch 'master' into 0.11 2012-02-14 10:35:06 +01:00
Mark Nauwelaerts
b761f5479a baseparse: modify API to a _finish_frame based approach
... which aligns it with other baseclass in the wild, and should give
converter parsers a bit cleaner freedom.
2012-02-13 18:41:00 +01:00
Mark Nauwelaerts
c8ea9994aa baseparse: fix reverse playback
... especially for all-keyframe (audio) cases.
2012-02-13 18:14:02 +01:00
Wim Taymans
5fbdd763bb Merge branch 'master' into 0.11 2012-02-10 15:03:03 +01:00
Mark Nauwelaerts
954dd59fdd baseparse: bitrate mechanics should not deal with duration update
... since that is already handled by _update_duration, or should not be done
altogether if the duration is determined by non-estimated means.

Fixes #669502.
2012-02-10 14:47:00 +01:00
Wim Taymans
b30b397c46 basesink: implement faster ACCEPT_CAPS query 2012-02-10 11:24:28 +01:00
Wim Taymans
7ab1d62c24 GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING 2012-02-08 16:18:04 +01:00
Mark Nauwelaerts
a306518cee baseparse: clean up a few minor extraneous tokens 2012-02-08 15:38:28 +01:00
Mark Nauwelaerts
2aaa475a4f baseparse: remove closing segment handling 2012-02-08 15:38:07 +01:00
Wim Taymans
d6dfb07692 basetransform: improve prepare_output_buffer
Clean up the prepare_output_buffer function.
Reuse the input buffer when it is writable and when doing an
in-place but non-passthrough transform.
Move the copy-metadata function call to the prepare_output_buffer default
function. If subclasses implement a custom prepare_output_buffer, they must also
copy the metadata themselves.
Remove a useless memory copy because prepare_output_buffer already did that.
2012-02-02 13:10:27 +01:00
Wim Taymans
3075b3c529 basetransform: simplify code
We already checked passthrough a few lines above.
2012-02-02 12:30:14 +01:00
Wim Taymans
18118218b1 basesrc: fix race in startup
Mark renegotiate before starting the pushing thread.
Do also check if we are starting in the get_range function.
2012-01-31 17:41:13 +01:00
Wim Taymans
39c5f0b28a don't do logic in g_assert... 2012-01-31 12:10:21 +01:00
Wim Taymans
0bd5a78701 query: pass allocator in query
Place the allocator object in the ALLOCATION query instead of the name. This
allows us to exchange allocators that are not in the global pool of allocators.
Update elements for the new api
2012-01-30 16:13:31 +01:00
Wim Taymans
af2fc026fc memory: make the allocator refcounted
Add refcounting to the GstAllocator object.
Remove const from functions because the allocator is refcounted now.
Rename the vmethods for consistency
Expose the constructor for GstAllocator and add a destroy notify for the
user_data. This should make it possible to create allocators that are not
registered and shared globally along with the possibility to destroy them
properly.
Update defs with new symbols.
2012-01-30 13:20:36 +01:00
Olivier Crête
e234a10c63 Use macros to register boxed types thread safely 2012-01-28 16:42:38 +00:00
Sebastian Dröge
753a1125dd Merge branch 'master' into 0.11
Conflicts:
	libs/gst/base/gstcollectpads2.c
	libs/gst/base/gstcollectpads2.h
2012-01-27 15:09:35 +01:00
Sebastian Dröge
9945b2cd88 collectpads2: Move private fields from the public structs to private structs
Fixes bug #668764.
2012-01-27 15:03:46 +01:00
Wim Taymans
21455d35b1 tests: fix some more leaks 2012-01-27 12:52:01 +01:00
Wim Taymans
ae12e4f645 basetransform: avoid caps leak 2012-01-27 11:41:33 +01:00
Sebastian Dröge
34b01da26c collectpads2: Drop the stream-start and stream-config events by default 2012-01-27 10:46:02 +01:00
Sebastian Dröge
0d4081fbbb basesrc: Send the stream-start event as first event ever 2012-01-27 10:41:07 +01:00
Wim Taymans
e122bae3ad basetransform: fix typo 2012-01-26 19:28:46 +01:00
Sebastian Dröge
b6d11d844e collectpads: Remove old collectpads
Still have to rename collectpads2 to collectpads before the 1.0 release.
2012-01-26 10:48:56 +01:00
Sebastian Dröge
de576f8163 collectpads2: Don't forward CAPS event automatically 2012-01-26 10:45:45 +01:00
Sebastian Dröge
6b9280b18c collectpads2: Fix handling of the event function and document it
The event function is supposed to forward/drop the event in any case
now and takes ownership of the event.
2012-01-26 10:45:45 +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
Tim-Philipp Müller
13d91d1f6c Use recent GLib API unconditionally now that we depend on the latest GLib 2012-01-22 01:25:22 +00:00
Wim Taymans
c6ac51e729 basesrc: handle NULL from getcaps
If the getcaps functions returns NULL, return FALSE from the CAPS query.
2012-01-19 15:17:58 +01:00
Wim Taymans
acf0d50bf1 basesink: handle lists correctly 2012-01-19 15:17:33 +01:00
Wim Taymans
252327f87a Update for new gthread API 2012-01-19 09:27:04 +01:00
Sebastian Dröge
b56bef1418 basetransform: Always call ::propose_allocation vfunc
And only forward the allocation query if we're working in
passthrough mode if no ::propose_allocation is implemented.
In place buffer transformations will change the buffer
content and require explicit handling of all metas.
2012-01-18 12:07:46 +01:00
Mark Nauwelaerts
ea2f87d34e adapter: ensure automagic _unmap in some more cases 2012-01-13 14:21:27 +01:00
Vincent Penquerc'h
12757e604a adapter: automatically unmap on clearing
When _clear gets called between _map and _unmap, buffers
will be unreffed. If the adapter was mapped, memory leaks
may occur.
While calling _clear between _map and _unmap does not seem
like such a great idea, this is possible in the audio
encoder base class, as _clear may be called in _finish_frame.
Since the audio encoder relies on flushing to keep track of
timestamps, delaying flushing till after handle_frame seems
dangerous.
So, we unmap on clear, as the next unmap will do nothing.
This makes _clear safe to call between _map and _unmap,
while avoiding leaking the mapped buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=664133
2012-01-13 14:21:27 +01:00
Mark Nauwelaerts
247842eaa9 basesrc: prevent unlikely caps leak 2012-01-13 14:21:27 +01:00
Tim-Philipp Müller
66d19b65fb Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	tools/gst-inspect.c
2012-01-13 00:22:03 +00:00
Antoine Tremblay
df6de8fe0c baseparse: clear adapter in reset so baseparse is reusable
GstBaseParse was not clearing its adapter on reset causing
problems when a pipeline went for example from PLAYING to NULL
state and then back to PLAYING again. The data from the last
stream would be used in the parser.

https://bugzilla.gnome.org/show_bug.cgi?id=667444
2012-01-12 19:53:11 +00:00
Sebastian Dröge
148bf27ce3 Merge branch 'master' into 0.11 2012-01-10 13:00:07 +01:00
Havard Graff
bea0ed2fc1 basesink: don't compensate for render-delay twice
https://bugzilla.gnome.org/show_bug.cgi?id=667298
2012-01-05 18:04:22 +00:00
Wim Taymans
bc1974e962 GST_FLOW_UNEXPECTED -> GST_FLOW_EOS 2012-01-03 15:25:31 +01:00
Wim Taymans
9540014d2e baseparse: turn assert into a real error
Post a real error instead of just asserting.
2012-01-02 15:42:46 +01:00
Wim Taymans
63d95063a7 basesrc: handle latency event 2012-01-02 15:42:46 +01:00
Tim-Philipp Müller
c61b2ade7b index: rename GstAssocFlags to GstIndexAssociationFlags
Just in case we resurrect this later.
2011-12-30 18:32:59 +00:00
Tim-Philipp Müller
3f11fc0514 base: disable unused index API and make functions static
It's simply private helper API for now, until someone
fixes up GstBaseParse not to need it any more.
2011-12-30 18:32:58 +00:00
Tim-Philipp Müller
be04f3945c index: remove GstIndex and GstIndexFactory for now
There are many good use cases for GstIndex and we want
to add it back again in some form, but possibly not with
the current API, which is very powerful (maybe too powerful),
but also a bit confusing. At the very least we'd need to
make the API bindings-friendly.
2011-12-30 18:32:57 +00:00
Tim-Philipp Müller
b193d03c8a collectpads2: fix up compilation after merge 2011-12-25 12:13:57 +00:00
Tim-Philipp Müller
f6a4af20b2 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	libs/gst/base/gstbasetransform.c
	libs/gst/controller/gstinterpolationcontrolsource.c
	libs/gst/controller/gstlfocontrolsource.c
	plugins/elements/gstfilesrc.c

Dit not merge controller or basetransform changes.
2011-12-25 11:58:12 +00:00
Sebastian Dröge
2f93cee988 basetransform: If the filtered peer caps are already empty error out early 2011-12-20 14:37:09 +01:00
Mark Nauwelaerts
28e9d735bb collectpads2: add convenience clipping function
... which also converts to running time; useful for typical muxer.
2011-12-19 17:45:25 +01:00
Mark Nauwelaerts
78565da18b basetransform: do not delay sparse stream newsegment updates 2011-12-19 17:39:11 +01:00
Mark Nauwelaerts
b3886b7935 basetransform: suggestion compatible with upstream is not much of a suggestion
... in that upstream is already complying with that suggestion.

Fixes #666174.
2011-12-19 12:34:51 +01:00
Mark Nauwelaerts
eb79c0a835 collectpads2: delay collecting buffer if a pad newly set waiting
... as commented; make code correspond to it (again).
2011-12-15 16:51:49 +01:00
Matej Knopp
f4040d3f6b baseparse: Clear queued frames with other queues 2011-12-12 13:37:25 +01:00
Wim Taymans
768e28e1c4 basesrc: say we handle RECONFIGURE event
We handle the RECONFIGURE event so return TRUE from the event handler.
2011-12-10 11:08:22 +01:00
Wim Taymans
e32fa21071 basesrc: stop when negotiation fails 2011-12-09 10:01:16 +01:00
Sebastian Dröge
a6bb6d0fc3 basetransform: Fix code path to come up with possible caps if incompatible caps are provided to buffer_alloc()
Previous code could almost never work and this should be slightly
better.
2011-12-08 18:11:43 +01:00
Sebastian Dröge
57573d8705 basetransform: Fall back to upstream provided caps if suggested caps are not supported by the sinkpad 2011-12-08 18:11:43 +01:00
Sebastian Dröge
aad7225eb5 basetransform: Fall back to upstream provided caps if fixation of suggested caps failed 2011-12-08 18:11:43 +01:00
Sebastian Dröge
26a1ac0ce7 basetransform: Refactor gst_base_transform_buffer_alloc() code
Don't check if upstream provided caps are compatible with upstream
and don't try to fixate these caps. They must be fixated in any case.
2011-12-08 18:11:42 +01:00
Tim-Philipp Müller
eaa2d81474 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	gst/gstindexfactory.c
	libs/gst/base/gstbasetransform.c
	plugins/elements/gstfakesink.c
	plugins/elements/gstfakesrc.c
	plugins/elements/gstidentity.c
	plugins/elements/gstinputselector.c
	plugins/elements/gstoutputselector.c

Note: did not merge any of the basetransform changes from 0.10.
2011-12-08 00:39:10 +00:00
Vincent Penquerc'h
e7b3305f70 baseparse: do not use a byte value instead of a time value when bisecting
This fixes FLAC seeking on some FLAC files.
2011-12-07 17:57:49 +00:00
Sebastian Dröge
7fb67e9d6f basetransform: If suggested caps are not compatible with upstream try to come up with compatible caps
Fixes bug #662199.
2011-12-07 09:51:42 +01:00
Wim Taymans
ebc25e895f basesrc: add async start option
Add a method to enable async start behaviour. The subclass can then complete the
start operation from any other thread by caling gst_base_src_start_complete().
The base class can wait for the start to complete with
gst_base_src_start_wait().
2011-12-06 14:01:50 +01:00
Wim Taymans
be0e58a637 make some more macros as inline functions
Make some macros as inline functions for added type checking.
USe new gst_caps_take() in typefind
2011-12-05 10:24:34 +01:00
Tim-Philipp Müller
a1daf846f3 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	gst/gstobject.h
	libs/gst/check/gstcheck.h
	libs/gst/controller/gstcontroller.c
	plugins/elements/gstidentity.c
	tools/gst-xmlinspect.c
2011-12-04 15:38:09 +00:00
Tim-Philipp Müller
2666450864 Suppress deprecation warnings in selected files, for g_static_rec_mutex_* mostly
GStaticRecMutex is part of our API/ABI, not much we can do here in 0.10.
2011-12-04 14:38:26 +00:00
Tim-Philipp Müller
5889260d5a Work around deprecated thread API in glib master
Add private replacements for deprecated functions such as
g_mutex_new(), g_mutex_free(), g_cond_new() etc., mostly
to avoid the deprecation warnings. We can't change most of
these in 0.10 because they're part of our API and ABI.
2011-12-04 13:35:38 +00:00
Wim Taymans
543b56c78f basesink: use dts and pts for sync
First use DTS, then fall back to PTS for synchronization.
2011-12-03 07:06:11 +01:00
Wim Taymans
e1b64d971e basesink: small cleanups 2011-12-03 07:01:45 +01:00
Wim Taymans
f62c3922c2 basesink: merge preroll functions
Inline a function that is only called from one place to make things a little
easier to follow.
2011-12-03 06:45:46 +01:00
Wim Taymans
ee15bd7287 basesink: more cleanups
Don't pass around the object type, we can find that very efficiently from the
object itself now.
2011-12-03 06:29:42 +01:00
Wim Taymans
64bd0b6416 basesink: clean up method names 2011-12-02 23:13:23 +01:00
Wim Taymans
4be2edeb50 basesink: merge render_object into chain
Merge the render_object code with the chain method. It is only called from there
and there are quite a few variables that can be reused to makes things less
confusing.
2011-12-02 22:50:55 +01:00
Wim Taymans
cc8359259b basesink: remove obsolete code
Remove some more code now that the render_object ethod is only
called with buffers or bufferlsts.
2011-12-02 22:36:38 +01:00
Wim Taymans
0e38f0dad0 basesink: clean up event handling
Add new wait_eos vmethod to wait for the eos timeout before posting the EOS
message on the bus.
Add default event handler. Move the default event actions in there. Call the
event vmethod from the pad event handler. Subclasses are now supposed to chain
up to the parent event handler or unref the event and do their own thing.
Avoid passing unused parameters to functions.
2011-12-02 22:20:08 +01:00
Wim Taymans
b6335d9505 basesink: small cleanup
Avoid passing around the segment.
2011-12-02 13:35:58 +01:00
Wim Taymans
bf4e681f5e basesink: remove clip_segment
We only need one segment now that the preroll queue is gone.
2011-12-02 13:28:18 +01:00
Wim Taymans
621aef1033 basesink: more cleanups
Remove some unneeded functions, inline the code.
Remove the queue_object functions, we can proceed with the rendering
immediately.
2011-12-02 12:42:50 +01:00
Wim Taymans
68cc637e87 basesink: remove obsolete code
Remove the preroll queue and proceed directly to the rendering of objects.
2011-12-02 12:20:02 +01:00
Wim Taymans
8acc2d9dc7 basesink: last-buffer -> last-sample
Rename the last-buffer property to last-sample and make it return the new
GstSample type so that we can include caps and timing info in one nice bundle.
2011-12-01 16:46:06 +01:00
Wim Taymans
a275d2e863 basetrans: add some more debug 2011-12-01 15:35:26 +01:00
Wim Taymans
d893040aec basesrc: add some more debug 2011-12-01 15:35:02 +01:00
Wim Taymans
23bec521bf basesink: remove old property 2011-11-30 14:31:12 +01:00
Sebastian Dröge
e6d2da7cf8 basetransform: Always intersect the suggested sink caps with the peer caps
This makes sure that we get correct and complete caps. The suggested caps
could be incomplete, e.g. video/x-raw-rgb without any fields, and by
intersecting with the peer caps we get something usable.

Fixes bug #662199.
2011-11-30 14:01:22 +01:00
Wim Taymans
8356be8ae5 update for indexable change 2011-11-28 18:23:41 +01:00
Wim Taymans
d65773b5fa element: clean up element flags
Clean up the element flags
2011-11-28 16:54:55 +01:00
Matej Knopp
396c76a34e baseparse: fix broken default caps query
https://bugzilla.gnome.org/show_bug.cgi?id=664880
2011-11-26 20:03:01 +00:00
Tim-Philipp Müller
2d7f9cfe92 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	gst/gstbuffer.h
	gst/gstbufferlist.h
	gst/gstcaps.h
	gst/gstdatetime.h
	gst/gstelementfactory.h
	gst/gstevent.h
	gst/gstghostpad.h
	gst/gstindexfactory.h
	gst/gstiterator.h
	gst/gstmessage.h
	gst/gstminiobject.h
	gst/gstpipeline.h
	gst/gstquery.h
	gst/gstsegment.h
	gst/gststructure.h
	gst/gsttaglist.h
	gst/gsturi.h
	gst/gstvalue.h
	libs/gst/base/gstbitreader.h
	libs/gst/base/gstbytereader.h
	libs/gst/base/gstbytewriter.h

Note: can't use G_GNUC_MALLOC with GstCaps return
values in 0.11 because of the EMPTY+ANY singletons.
2011-11-26 19:44:23 +00:00
Tim-Philipp Müller
4d2cb74850 libs: sprinkle some G_GNUC_MALLOC
Maybe gcc can do something clever with that, or at least
warn us if we don't save the return value somewhere.
2011-11-26 18:58:38 +00:00
Sebastian Dröge
1fa356a23c Merge branch 'master' into 0.11
Conflicts:
	gst/gstpad.c
	libs/gst/base/gstbaseparse.c
2011-11-24 11:23:07 +01:00
Sebastian Dröge
aa9ba2dd4e baseparse: Return template caps instead of other side's peer caps if get_sink_caps vfunc is not implemented
Using gst_pad_proxy_get_caps() breaks backwards compatibility with old
parsers because it will propagate the other side's fields like "parsed"
and "framed" and also breaks parser/converters.

Fixes bug #664221.
2011-11-23 13:42:56 +01:00
René Stadler
e694f5e71c bytewriter: add method to write out a buffer
In 0.10, this can be done with a one-liner by using GST_BUFFER_DATA/SIZE with
put_data. A 0.11 user has to resort to gst_buffer_map, which is less convenient
and might require a memcpy internally.

API: gst_byte_writer_put_buffer()
2011-11-23 11:04:00 +01:00
Wim Taymans
b7ea5ca1e0 baseparse: also let caps events go through 2011-11-22 18:40:49 +01:00
Matej Knopp
f33b1397d3 adapter: fix return type of _map() to gconstpointer
Fixes compiler warnings on OSX:
gstadapter.h:82: warning: type qualifiers ignored on function return type
gstadapter.c:412: warning: type qualifiers ignored on function return type

const gpointer is not the same as gconstpointer or const void *.

https://bugzilla.gnome.org/show_bug.cgi?id=664491
2011-11-22 11:53:42 +00:00
Matej Knopp
6ea74a0572 Fix printf format compiler warnings on OSX/64bit
https://bugzilla.gnome.org/show_bug.cgi?id=664491
2011-11-22 00:51:06 +00:00
Wim Taymans
2f1ed65339 pad: Merge pad mode activation functions
Add the pad mode to the activate function so that we can reuse the same function
for all activation modes. This makes the core logic smaller and allows for some
elements to make their activation code easier. It would allow us to add more
scheduling modes later without having to add more activate functions.
2011-11-21 13:29:05 +01:00
Wim Taymans
770159fb1c query: improve scheduling query
Turns some boolean arguments in the scheduling query to flags, which are easier
to extend and makes the code easier to read.
Make extra methods for configuring and querying the supported scheduling modes.
This should make it easier to add new modes later.
2011-11-18 17:27:16 +01:00
Wim Taymans
39a5e26ea9 pad: add parent to activate functions 2011-11-18 13:54:29 +01:00
Wim Taymans
12d5f03453 pad: fix scheduling mode enums
GstPadActivateMode -> GstPadMode
GST_PAD_ACTIVATE_* -> GST_PAD_MODE_*
2011-11-18 12:39:55 +01:00
Wim Taymans
cb54ab7d90 typefind: fix for new getrange method signature
gst_type_find_helper_get_range_ext -> gst_type_find_helper_get_range
2011-11-17 16:15:23 +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
Stefan Sauer
009d799087 collectpads: move fields out of reserved and restore padding
Do the 0.11 ABI changes. Add extra fields for destroy_notify and drop the qdata
hack. Rename _add_pad_full to _add_pad and remove the old _add_pad.
2011-11-17 08:39:01 +01:00
Wim Taymans
09a8294d36 pad: add parent to the query function 2011-11-16 17:22:56 +01:00
Wim Taymans
54e1174060 GstPadFlags: rename flags GST_PAD_* -> GST_PAD_FLAG_* 2011-11-16 12:36:51 +01:00
Wim Taymans
e85198bc32 _query_peer_*() -> _peer_query_*() 2011-11-15 17:50:34 +01:00
Wim Taymans
2358938dbd _accept_caps() -> _query_accept_caps() 2011-11-15 17:40:19 +01:00
Wim Taymans
c55962c2d3 _peer_get_caps() -> peer_query_caps() 2011-11-15 17:11:46 +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
René Stadler
cb4ac0cf70 basetransform: fix caps unref in transform_caps filter subset check
I did not test this, but the code looked very wrong.
2011-11-12 01:55:45 +01:00
Wim Taymans
841ad590b9 .h: fix header files
Ensure correct indentation and retab
Make sure all structure have padding
2011-11-11 17:30:03 +01:00
Wim Taymans
4b216bf73a adapter: remove flush from _unmap 2011-11-10 18:18:24 +01:00
Wim Taymans
54a9c5d3f8 basesrc: implement a default get_caps function
Don't rely on the return value of a vmethod to trigger the default
implementation but make a real defaul implementation of the method that the
subclass can chain up to.
2011-11-10 16:04:55 +01:00
Edward Hervey
deb8e74cad introspection: Add --warn-all to introspection scanner
... and let's get fixing all those docs !
2011-11-10 13:54:02 +01:00
Wim Taymans
11aacfadc8 basetransform: fix vmethods
Make a default implementation of the transform_caps vmethod so that subclasses
can call into it.
Make a default implementation of transform_size.
Avoid doing something in the vmethod trampoline.
2011-11-10 13:38:58 +01:00
Wim Taymans
4760e1902a pushsrc: make alloc method a vmethod 2011-11-10 13:36:10 +01:00
Wim Taymans
41bb41616b basesink: reorder vmethod according to .h file 2011-11-10 12:33:49 +01:00
Wim Taymans
af63938333 basesink: improve comments 2011-11-10 12:33:33 +01:00
Wim Taymans
b3998146c1 basesrc: don't do things in the vmethod trampoline 2011-11-10 12:33:10 +01:00
Wim Taymans
c5ef50d4de adapter: use gpointer for return types 2011-11-10 11:42:26 +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
Wim Taymans
b7966c0c7d pad: make an ACCEPT_CAPS query
Replace the acceptcaps function with a query.
2011-11-09 17:36:00 +01:00
Wim Taymans
6ed869c9f4 element: remove more query_types 2011-11-09 17:23:37 +01:00
Wim Taymans
6cc7254166 remove query types
It was not really useful
2011-11-09 11:47:10 +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
Tim-Philipp Müller
16dcd5e958 docs: fix Since: markers for API added after 0.10.35 2011-11-08 00:32:36 +00:00
Wim Taymans
c2c9776027 Merge branch 'master' into 0.11
Conflicts:
	gst/gstbin.c
2011-11-04 19:11:19 +01:00
Sjoerd Simons
e97eeb5cd4 basetransform: Only use the cached transform on strictly equal caps
https://bugzilla.gnome.org/show_bug.cgi?id=663333
2011-11-04 17:49:55 +00:00
Tim-Philipp Müller
2a4fca230f collectpads2: use flags enum instead of guint in structure 2011-11-03 22:51:57 +00: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
f1b07c580e Merge branch 'master' into 0.11
Conflicts:
	common
	configure.ac
2011-11-02 10:29:04 +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
cf69ce1df6 adapter: simplify gst_adapter_take_list()
Use a stack-allocated GQueue to assemble our GList.
2011-11-01 14:17:21 +00:00
Tim-Philipp Müller
4f004eff38 pad: rename GstActivateMode to GstPadActivateMode
These might be useful:
sed -i -e 's/GstActivateMode/GstPadActivateMode/g' `git grep GstActivateMode | sed -e 's/:.*//' | sort -u`
sed -i -e 's/GST_ACTIVATE_/GST_PAD_ACTIVATE_/g'    `git grep GST_ACTIVATE_   | sed -e 's/:.*//' | sort -u`
2011-11-01 00:25:02 +00:00
René Stadler
de58242760 basetransform: fix crash/warning in find_transform when pad is unlinked
Looks like the revert conflict in commit a44271 was resolved incorrectly.
2011-10-31 19:27:07 +01: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
René Stadler
c7fba914a0 basetransform: fix invalid access to unreffed allocation query 2011-10-28 21:42:10 +02:00
Sebastian Dröge
5385f27594 bytewriter: Add padding 2011-10-28 13:02:26 +02:00
Sebastian Dröge
1cb711c1ae bitreader: Add padding 2011-10-28 13:02:19 +02:00
Sebastian Dröge
e3d4875af5 bytereader: Add padding 2011-10-28 13:02:10 +02:00
Wim Taymans
a495701900 adapter: use pts/dts on buffers 2011-10-28 12:26:28 +02:00
Sjoerd Simons
1aa5b76a6f basetransform: Also fush the cache when changing the upstream caps suggestion 2011-10-28 11:53:32 +02:00
Sjoerd Simons
383d637f85 basetransform: Add debug output when returning a cached transform 2011-10-28 11:50:23 +02:00
Wim Taymans
b8e1506b08 Merge branch 'master' into 0.11 2011-10-28 11:33:44 +02:00
Wim Taymans
f2102d386f coolectpads2: port to 0.11 2011-10-28 11:30:57 +02:00
Wim Taymans
d110c4db31 Merge branch 'master' into 0.11 2011-10-28 11:13:55 +02:00
Sebastian Dröge
1eb3380973 collectpads2: Fix refcount handling if a buffer was dropped due to clipping 2011-10-28 10:54:19 +02:00
Sebastian Dröge
2f100e86f6 collectpads2: Merge the clip and prepare_buffer function into one 2011-10-28 10:38:24 +02:00
Sebastian Dröge
415f3dd808 collectpads2: Merge clipping API from old collectpads 2011-10-28 10:38:24 +02:00
Tim-Philipp Müller
ab2d45283e basesink: make default query function name show up in gst-inspect 2011-10-28 09:28:14 +01:00
Mark Nauwelaerts
ce88f417b1 collectpads2: avoid hanging in case of sparse newsegment events
... in the extent that a non-waiting pad (so indicated by newsegment)
turns out to provide the best buffer, which is then forced to waiting
for book-keeping purposes, but that should only be temporary.

See bug #415754.
2011-10-28 09:39:00 +02:00
Sebastian Dröge
2a13275985 collectpads2: Use G_DEFINE_TYPE instead of GST_BOILERPLATE 2011-10-28 09:38:35 +02:00
Sebastian Dröge
6f231f89d6 base: Add collectpads2
This handles muxing of sparse/subtitle streams and has
lots of cleanup. Still missing is special support for
live streams but this can be added later without breaking
API/ABI.

Based on the version from the videomixer plugin.
https://bugzilla.gnome.org/show_bug.cgi?id=415754
2011-10-28 09:36:06 +02:00
Wim Taymans
852851edab Merge branch 'master' into 0.11
Conflicts:
	libs/gst/base/gstbasetransform.c
2011-10-27 15:27:19 +02:00
Jan Schmidt
9a5109b86e basetransform: Fix refcount leak
Don't leak peercaps and a ref to the basetransform when returning
the cached caps.
2011-10-27 23:08:14 +11:00
Edward Hervey
df6044f7eb Merging origin/master
Conflicts:
	gst/gstbin.c
	gst/gstbus.c
	gst/gstdebugutils.c
	gst/gstpad.c
	libs/gst/base/gstbaseparse.c
	libs/gst/base/gstbasesrc.c
2011-10-21 10:52:46 +02:00
Sebastian Dröge
b046ba6e3a baseparse: Fix documentation, it's pre_push_frame and not pre_push_buffer 2011-10-20 16:59:01 +02:00
Vincent Penquerc'h
168e5c0abb basetransform: cache transformed caps where appropriate
Speeds up negotiation a fair bit on a contrived pipeline
with a dozen colorspace conversions.

Hopefully clears out the cache every time it ought to.

https://bugzilla.gnome.org/show_bug.cgi?id=662291
2011-10-20 16:54:27 +02:00
Sebastian Dröge
64493d9603 basebarse: Add detect vfunc to allow subclasses to do format detection before anything else
API: GstBaseParseClass::detect()

This is called with the first buffers until the subclass has finished detection
and only afterwards the original buffers are handled as before. The vfunc allows
detection of the stream format without breaking the upstream framing.
2011-10-20 11:48:24 +02:00
Thiago Santos
4c1397d572 baseparse: add since doc to new getcaps function 2011-10-18 18:58:14 -03:00
Stefan Sauer
2e6b434730 logging: more logging and prefer human readable details over memory locations 2011-10-18 15:24:21 +02:00
Thiago Santos
e3f2d7db71 baseparse: add getcaps function
Adds a getcaps function to the sink pad to make parsers propagate
downstream caps restrictions to upstream.

The pipeline "audiotestsrc num-buffers=100 ! faac ! aacparse !
"audio/mpeg, version=(int)4, stream-format=(string)adts" ! filesink"
wouldn't work because aacparse wouldn't propagate the adts restriction
upstream to faac.

This patch adds a default getcaps to the sink pad to simply proxy
downstream caps and also adds a 'get_sink_caps' function pointer
to GstBaseParseClass for subclasses that need more refined getcaps.

https://bugzilla.gnome.org/show_bug.cgi?id=661874
2011-10-18 08:04:31 -03:00
Wim Taymans
f08b2203c8 basesrc: also update the stream time 2011-10-18 12:39:03 +02:00
Sebastian Dröge
1eb73339b9 baseparse: Fix handling of queued frames
gst_base_parse_push_frame() already frees the frame, no need to
do it another time again.
2011-10-18 10:58:57 +02:00
Wim Taymans
216a877825 baseparse: remove the memory from the tmpbuf
We use a tmpbuf to hold a temporary pointer to the adapter memory. We need to
remove that memory when we no longer need it.
2011-10-17 17:04:10 +02:00
René Stadler
4b79582925 basesrc: fix caps leak 2011-10-13 12:23:59 +02:00
Wim Taymans
cdd3c303f1 basesrc: properly adjust start time
When we do a non-flushing seek and closed the current segment,
make sure that we open the next segment from where we closed.
2011-10-12 17:17:53 +02:00
Edward Hervey
ece5909804 basetransform: Fix a caps leak and move a codeblock
The result from the block of code that was moved would only have
been used if 'peercaps' was present.
2011-10-11 13:51:54 +02:00
Thiago Santos
59319194b8 basesrc: avoid trying to alloc enormous buffer
If a class extending basesrc doesn't set blocksize, basesrc
would try to allocate a (guint)-1 sized buffer, which is enormous
and likely would fail.

Avoid it and error out.
2011-10-10 12:28:46 -03:00
Wim Taymans
ea012d3dd7 pad: GST_FLOW_UNEXPECTED -> GST_FLOW_EOS 2011-10-10 11:33:51 +02:00
Tim-Philipp Müller
434e7042d8 base: make GstDataQueue private API for multiqueue
There's no code that uses it other than multiqueue, so make it private
to multiqueue for now. That way we can also do optimisations that
require API/ABI breaks. If anyone ever wants to use it, we can still
make it public again.
2011-10-07 13:54:37 +01:00
Wim Taymans
c6f005fef1 Merge branch 'master' into 0.11 2011-10-06 17:27:47 +02:00
Mark Nauwelaerts
49bd7b40ca baseparse: send duration message when updating internal duration 2011-10-06 14:47:54 +02:00
Wim Taymans
544aa9773a Merge branch 'master' into 0.11 2011-10-04 17:39:17 +02:00
Stas Sergeev
fafbc109f1 baseparse: Return success if optional start/stop method is not provided
This allows to not implement the optional start/stop methods.
2011-10-03 11:40:36 +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
0ac0b70c15 baseparse: make estimating the position in query handler actually work
No point estimating if we don't set the result afterwards.
2011-09-30 15:25:20 +01:00
Vincent Penquerc'h
f94701261a baseparse: answer position query in stream time and try upstream first
Let the demuxer have first say as well.

https://bugzilla.gnome.org/show_bug.cgi?id=659485
2011-09-30 15:23:33 +01:00
Wim Taymans
47f77a9e24 transform: fix after merge 2011-09-28 11:28:25 +02:00
Wim Taymans
99d4a57d7c Merge branch 'master' into 0.11 2011-09-28 11:24:42 +02:00
Wim Taymans
947276484f docs: fix some more docs 2011-09-28 11:16:33 +02:00
Vincent Penquerc'h
01172b8126 basetransform: send delayed events earlier
Some elements (such as videorate) might push buffers early,
for instance in in transform_ip. We want events (and in particular
any NEWSEGMENT event) to be pushed before that.

This fixes transmageddon wedging on converting a file starting
with a non zero offset to Ogg.

https://bugzilla.gnome.org/show_bug.cgi?id=660165
2011-09-27 12:00:23 +02:00
Edward Hervey
10e7159cf8 Merge branch 'master' into 0.11
Conflicts:
	gst/gstcaps.c
	gst/gstpad.c
	libs/gst/base/gstbasesink.c
	libs/gst/base/gstbasesink.h
	libs/gst/base/gstbasetransform.c
2011-09-23 13:09:25 +02:00
Vincent Penquerc'h
56b3acb043 basetransform: delay serialized events when src caps are not set yet
https://bugzilla.gnome.org/show_bug.cgi?id=659571
2011-09-21 13:22:02 +02:00
Nicolas Dufresne
f0219b327d basesink: make it easy to override the pad query
Add a vmethod to handle the pad query.
Install a default handler for the pad query.
Use the new query function in filesink
2011-09-08 14:46:59 +02:00
Sebastian Dröge
a44271899c Revert "Revert "basetransform: Use check for subsets and not non-empty intersection to check if caps are compatible""
This reverts commit 0bc6d49c95.

Conflicts:

	libs/gst/base/gstbasetransform.c
2011-09-08 14:39:30 +02: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
Sebastian Dröge
0bc6d49c95 Revert "basetransform: Use check for subsets and not non-empty intersection to check if caps are compatible"
This reverts commit 5e5cc5e89e.

See bug #658541.
2011-09-08 13:42:52 +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
Sebastian Dröge
a121713f0c basetransform: If there's no peer we still have to transform ANY caps in getcaps()
Otherwise elements like capsfilter will return ANY caps if no
peer is present instead of the filter caps. The transform_caps()
vfunc could do transformations to the template caps that do not
result in the unmodified template caps.
2011-09-07 16:05:07 +02:00
Sebastian Dröge
5e5cc5e89e basetransform: Use check for subsets and not non-empty intersection to check if caps are compatible 2011-09-06 12:37:16 +02:00
Wim Taymans
5cf8e68944 Merge branch 'master' into 0.11
Conflicts:
	gst/gstmessage.c
	gst/gstquery.c
	gst/gstregistrychunks.c
	gst/gstsegment.c
	libs/gst/base/gstbasetransform.c
	libs/gst/base/gstbasetransform.h
	libs/gst/base/gsttypefindhelper.c
	plugins/elements/gsttypefindelement.c
2011-08-26 14:37:54 +02:00
Wim Taymans
d924c30f5b base: rename allocation vmethods
Name the allocation vmethod on srcpad decide_allocation because source pads will
have to decide what allocation parameters will be used.
Name the allocation vmethod on sinkpads propose_allocation because they will
need to configure the allocation query with a proposed values for upstream.
2011-08-26 14:18:33 +02:00
Josep Torra
306e317ae9 typefind: add GST_TYPE_FIND_NONE and use it
Fixes warning #188: enumerated type mixed with another type reported by ICC.
2011-08-26 14:11:15 +02:00
Josep Torra
81794a4248 baseparse: use the enum values for 0 and don't abuse on gboolean coincidence
Fixes warning #188: enumerated type mixed with another type reported by ICC.
2011-08-26 14:11:15 +02:00
Josep Torra
ab3c6173b3 baseparse: put the arguments of g_return_val_if_fail in the proper order 2011-08-26 14:11:15 +02:00
Sjoerd Simons
0c0dc0441f basetransform: Fix bodged previous commit 2011-08-26 13:02:34 +01:00
Sjoerd Simons
888e6a91a4 basetransform: Use GstPadDirection in the query vfunc
Wim suggested that using GstPadDirection instead of a GstPad in the
arguments to the new query vfunc would be more consistent with the other
functions.
2011-08-26 12:43:13 +01:00
Wim Taymans
5c8efa9ffe basetransform: remove some unused variables 2011-08-26 12:28:28 +02:00
Wim Taymans
b91a5ab60a basetransform: add vmethod to configure upstream bufferpool
Add a vmethod that can be implemented to influence the bufferpool that upstream
elements will use.
2011-08-26 11:44:12 +02:00
Wim Taymans
f1566e85c0 basetransform: use pad direction like other vmethods 2011-08-26 11:24:42 +02:00
Wim Taymans
31b70ea701 Merge branch 'master' into 0.11
Conflicts:
	libs/gst/base/gstbasetransform.c
	libs/gst/base/gstbasetransform.h
2011-08-26 11:09:07 +02:00
Sjoerd Simons
63a21ca8b1 BaseTransform: Add a query vfunc 2011-08-26 10:39:44 +02:00
Wim Taymans
b5ef693e88 buffer: always copy all buffer flags when asked
Don't try to be smart and copy only a subset of buffer flag
2011-08-25 16:20:21 +02:00
Wim Taymans
d8d7c62789 basesink: remove preroll-queue-len property
Remove the preroll-queue-len property and move its variables to a private
section so that we can remove them later.
2011-08-25 12:38:58 +02:00
Wim Taymans
6f295dc239 Merge branch 'master' into 0.11
Conflicts:
	gst/gstobject.c
2011-08-24 10:43:09 +02:00
Mark Nauwelaerts
c1988b7e55 basesink: ensure start_time reset upon flush 2011-08-23 18:21:38 +02:00
Wim Taymans
8170c34c94 Merge branch 'master' into 0.11
Conflicts:
	gst/gstbuffer.h
	gst/gstcaps.c
	gst/gstcaps.h
	gst/gstevent.c
2011-08-22 12:33:35 +02:00
Tim-Philipp Müller
c7f2e85d86 baseparse: don't use == in debug string
It messes up GST_DEBUG=*:5 make foo/bar.valgrind, because
our Makefile looks for '==' as marker of valgrind output.
2011-08-18 20:46:01 +01:00
Tim-Philipp Müller
7043bf9d55 baseparse: fix crash on seek from streaming thread on newsegment event
Event if it's not allowed, we can easily prevent it, so let's do
that.

https://bugzilla.gnome.org/show_bug.cgi?id=656771
2011-08-18 20:44:01 +01:00
Wim Taymans
6b876ebf82 basesrc: add default fixate function
Add a default fixate function which does gst_caps_fixate() because
gst_pad_fixate() does not do that anymore.
2011-08-17 17:16:21 +02:00
Wim Taymans
e4db8d0f55 docs: improve some docs 2011-08-17 09:25:04 +02:00
Wim Taymans
8698a8c94e buffer: rename PREROLL -> LIVE flag
Rename the GST_BUFFER_FLAG_PREROLL to GST_BUFFER_FLAG_LIVE and give the new flag
a meaning. The old PREROLL flag never had a clear meaning.
2011-08-16 17:32:20 +02:00
Josep Torra
178bdccb76 Fix and clarify debug statements
Fixes build on MacOSX

Signed-off-by: Edward Hervey <edward.hervey@collabora.co.uk>
2011-08-10 11:01:58 +02:00
Wim Taymans
10485ea803 basesrc: add alloc vmethod
Make an alloc vmethod so that subclasses can override or call the default
implementation when they want.
2011-08-04 18:00:02 +02:00
Wim Taymans
dc096f39d1 basesrc: cleanups and mark reconfigure
Don't abuse the result variable.
Mark the srcpad with a reconfigure so that negotiation happens.
2011-08-04 17:12:47 +02:00
Wim Taymans
6bae6b8253 basesrc: remove negotiation from the state change
Remove the negotiation from the state change function, it causes data transfer
and bufferpool negotiation, which is not supposed to be done. Since we have the
reconfigure state on the pad, the create function will do the negotiation as
soon as it gets in the streaming thread.
2011-08-04 16:56:42 +02:00
Wim Taymans
fd75c12631 basesrc: expose set_caps method
Expose a previously static method so that custom negotiate implementation can
call it and do the right thing.
2011-08-04 16:34:49 +02:00
Wim Taymans
21ea3fdd96 basesrc: PAUSED<->PLAY doesn't change pool state
Don't change the state of the bufferpool when going between PAUSED and PLAYING,
it will dealloc and realloc all buffers, which is clearly too invasive. We will
need to add some other way of unblocking the bufferpool.
2011-08-04 13:48:11 +02:00
Tim-Philipp Müller
913e5e310c base: update for query API changes 2011-07-28 11:24:19 +01:00
Wim Taymans
cf18fa9ce5 Merge branch 'master' into 0.11 2011-07-27 12:50:39 +02:00
Wim Taymans
83e057cdc1 basetransform: add more comments 2011-07-27 12:49:40 +02:00
Wim Taymans
c266912124 basetrans: also pass allocation query in in_place
When we are doing an in_place transform, don't do the allocation query but let
the upstream element decide.
2011-07-27 12:45:17 +01:00
Evan Nemerson
cf6b41aa78 base: add missing (out) annotation for byte reader/writer functions
https://bugzilla.gnome.org/show_bug.cgi?id=655381
2011-07-27 10:12:33 +01:00
Wim Taymans
6b0a490740 basesrc: add some more debug info 2011-07-26 14:37:51 +02:00
Wim Taymans
32841d258d basesink: make it easy to override the pad query
Add a vmethod to handle the pad query.
Install a default handler for the pad query.
Add a vmethod to setup the allocation properties.
Use the new query function in filesink
2011-07-26 12:21:38 +02:00
Wim Taymans
36de9b92a1 basesrc: improve docs 2011-07-26 12:20:55 +02:00
Wim Taymans
c887dd41f8 basesrc: use DEBUG instead of ERROR for logging
Don't use the ERROR log category because the allocation failure migh only be
bacause of a state change.
2011-07-25 12:49:24 +02:00
Wim Taymans
2ff17fb622 basetransform: fix sink event handling
Implement the sink event handling like the src event handler. Make the default
implementation parse and forward the event. This makes it possible to actually
return an error value from the event handler.
2011-07-22 21:17:42 +02:00
Wim Taymans
5dde10f0e4 basetransform: handle failures
Handle failure to activate the bufferpool.
2011-07-22 19:19:59 +02:00
Wim Taymans
8059ab109a basetrans: improve debugging. 2011-07-22 19:11:56 +02:00
Wim Taymans
85d2355125 basetrans: Remove ref in passthrough
Remove the requirement to have to return a ref to the input buffer when in
passthrough mode. This saves a few ref/unref cycles and fixes another 0.11
FIXME.
2011-07-21 17:42:08 +02:00
Wim Taymans
70d13ae70e basetransform: make new copy_metadata vmethod
Make a new copy_metadata vmethod and move the code to copy the timestamps, flags
and offsets into a default implementation. This will allow us to give the
subclasses a chance to override the copy method.
2011-07-21 17:29:13 +02:00
Wim Taymans
92aa4fede9 Merge branch 'master' into 0.11
Conflicts:
	libs/gst/base/gstbaseparse.c
	libs/gst/base/gstbasesink.c
2011-07-21 16:49:13 +02:00
Wim Taymans
2763f2bdcd basetrans: avoid intermediate method
Simply call the prepare_output_buffer method instead of calling an intermediate
function.
2011-07-21 16:39:04 +02:00
Wim Taymans
f8e75ce406 basetransform: move the metadata copy code
Move the metadata copy code to the default prepare_output_buffer implementation.
2011-07-21 16:30:07 +02:00
Wim Taymans
5253a52cb2 basetransform: move prepare_output_buffer code
Move the code for prepare_output_buffer to a default implementation. this allows
us to simplify some things and have subclasses call into the default
implementation when needed.
2011-07-21 15:49:00 +02:00
Wim Taymans
560c3d7fbc basetransform: only get size for debug 2011-07-21 15:48:25 +02:00
Wim Taymans
f1f2a2ff18 basetrans: fix comment and warn
Emit a warning in the debug log when something seems weird.
2011-07-21 14:18:30 +02:00
Wim Taymans
3bb167a1bf basetransform: only get caps for size transform
Delay getting the caps until we need to call the transform_size function.
2011-07-21 14:14:58 +02:00
Wim Taymans
e4ee356449 basetrans: remove useless variables from prepare_output_buffer
Remove the caps and size from the prepare_output_buffer function. with
bufferpools and capsnego done differently, we don't need this in most cases and
if we do, we can simply use the transform_size function and get the caps from
the srcpad.
2011-07-21 13:56:11 +02:00
Wim Taymans
d23fc81c43 basesrc: don't accidentally disable the pool
When we set a pool and it is the same as the old pool, don't disable the pool.
2011-07-15 16:04:11 +01:00
Tim-Philipp Müller
59441b36b6 baseparse: fix printf format in debug message 2011-07-14 12:45:33 +01:00
Mark Nauwelaerts
27313d05c1 basesink: unset PLAYING transition flag when transition completed 2011-07-13 11:40:26 +02:00
Mark Nauwelaerts
e3446a74e0 baseparse: eat incoming caps event
... as it is typically up to baseclass to set proper src caps.
2011-07-11 11:59:18 +02:00
Mark Nauwelaerts
c8b9275578 basesink: try harder to arrange increasing position reporting
... rather than having a momentary decreasing one while transitioning
to PLAYING.

Fixes #628021.
2011-07-11 11:14:02 +02:00
Tim-Philipp Müller
f47c3472df baseparse: fix invalid memory access in debug messages
Don't use buffers that we've given away or unrefed in debug messages.
2011-07-07 14:57:18 +01:00
Wim Taymans
c87375a813 basesrc: fix after merge 2011-07-07 11:14:34 +02:00
Wim Taymans
b171259612 Merge branch 'master' into 0.11
Conflicts:
	libs/gst/base/gstbasesrc.c
2011-07-07 11:13:19 +02:00
Tim-Philipp Müller
0a6ec83336 gst: make compiler warn about unstable API if GST_USE_UNSTABLE_API is not defined
And define it in our own build.
2011-07-05 09:46:43 +01:00
Mark Nauwelaerts
0993102834 basesrc: do not sneakily mess with current offset when updating length 2011-06-30 17:59:27 +02:00
Mark Nauwelaerts
c79f8a52af basesrc: unref allocation query when no longer needed 2011-06-28 22:18:46 +02:00
Koop Mast
c1983b9939 basetransform: remove redundant ()
See #653137
2011-06-22 17:09:52 +02:00
Koop Mast
ef1b2b0e8f baseparse: fix seekstop
See #653137
2011-06-22 17:05:27 +02:00
Wim Taymans
6da2a33b7a tags: Remove crazy tag messages
Don't mix messages and pads and tags.
Make the sink post tag messages when a tag event is received.
Since tags are sticky on pads now, they can be retrieved from there
when needed.
2011-06-22 16:16:56 +02:00
Wim Taymans
3884badea6 memory: rename GstMemoryAllocator -> GstAllocator
simplify the name of the allocator object.
2011-06-22 11:42:46 +02:00
Wim Taymans
c6a3878369 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	win32/common/config.h
	win32/common/gstversion.h
2011-06-21 17:54:38 +02:00
Wim Taymans
9c3bd65ba7 basesrc: improve debugging 2011-06-21 17:47:23 +02:00
Wim Taymans
69409f1ec8 basetransform: activate the bufferpool
always activate the bufferpool, even if we get it from the allocation
query.
2011-06-20 17:32:47 +02:00
Wim Taymans
fc5b0b09da basesrc: always activate the pool we get
Activate the pool when we get it from the allocation query.
2011-06-20 17:32:11 +02:00
Wim Taymans
3822eea7cf basetransform: inprove allocation handling
Add vmethod for subclasses to influence the pool and allocator.
Log when query fails.
Respect negotiated allocator and alignment.
2011-06-20 16:53:04 +02:00
Wim Taymans
9c67925fb7 basesrc: Improve logging
Log when things fail.
Fix a query leak.
2011-06-20 16:53:04 +02:00
Philip Jägenstedt
9f0e066102 basesink: Fix typo in documentation
Fixes #652577.
2011-06-17 01:54:31 -07:00
Wim Taymans
c4f35cb2e0 basesrc: fix refcounting problem 2011-06-15 16:56:30 +02:00
Wim Taymans
1ea2722180 Merge branch 'master' into 0.11 2011-06-13 19:10:00 +02: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
844e8aefaa basesrc: Allocator buffers from negotiated allocator
Allocate buffers from the negotiated allocator or bufferpool.
Handle the state of the bufferpool when flushing.
Add fill method to pushsrc.
2011-06-13 12:07:03 +02:00
Wim Taymans
3977991c9d basesrc: negotiate allocation
Add vmethod to configure allocation methods.
Remove some unused variables
2011-06-13 10:21:53 +02:00
Wim Taymans
6ca5d44704 bufferpool: remove postfix parameter
Remove the postfix parameter, it's not used and can be done differently.
2011-06-11 18:52:42 +02:00
Wim Taymans
94ae04f098 basesrc: use new _check_reconfigure() method 2011-06-10 17:32:48 +02:00
Wim Taymans
b27ee30a35 buffer: make new _buffer_allocate method
Make a new method to allocate a buffer + memory that takes the allocator and the
alignment as parameters. Provide a macro for the old method but prefer to use
the new method to encourage plugins to negotiate the allocator properly.
2011-06-10 13:49:23 +02:00
Tim-Philipp Müller
954bcb09c7 docs: update for gst_base_src_set_dynamic_size
Add to sections file and add Since: marker. Also update
win32 .def file.

API: gst_base_src_set_dynamic_size()
2011-06-10 12:45:37 +01:00
Wim Taymans
c35e0de65e basesrc: add fill vmethod to basesrc
Add a new fill virtual method to basesrc. The purpose of this method is to fill
a provided buffer with data.
Add a default implementation of the create method that allocates a buffer and
calls the fill method on it. This would allow the base class to implement
bufferpool and allocator negotiation on behalf of the subclasses.
Fix the blocksize property.
Make filesrc use the new fill method.
2011-06-10 13:04:23 +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
4d6e4ea9e6 Merge branch 'master' into 0.11
Conflicts:
	libs/gst/base/gstbasesrc.c
2011-06-09 12:01:02 +02:00
Mark Nauwelaerts
f8168cd75f basesrc: add dynamic size handling
This allows subclass to indicate that size reported by src may not be static
and should as such be updated regularly, rather than only when really
needed.

Particular examples are filesrc or fdsrc reading from a file that is still
growing (e.g. being downloaded).

Fixes #652037.
2011-06-08 20:16:25 +02:00
Mark Nauwelaerts
c040305b8c Revert "basesrc: Send an update NEWSEGMENT event downstream if the duration changes"
This reverts commit 934faf163c.

Original commit leads to possibly sending newsegment event downstream
in pull mode.  In push mode, quite some downstream elements
are likely to only expect newsegment event following a seek they performed
and as such may have their state messed up.
2011-06-08 20:14:16 +02:00
Wim Taymans
b5d4529fa4 basesink: inline the clip segment 2011-06-08 18:35:16 +02:00
Wim Taymans
3cb8b33935 message: move the new_base_time flag to async_done
Move the flag to indicate that a new_base_time should be distributed to the
pipeline, from the async_start to the async_done message. This would allow us to
decide when to reset the pipeline time based on other reasons than the
FLUSH_START event.

The main goal eventually is to make the FLUSH events not reset time at all but
reset the time based on the first buffer or segment that prerolls the pipeline
again.
2011-06-08 13:45:19 +02:00
Wim Taymans
a767bf2bf9 caps: use the caps event
Use the caps event instead of gst_pad_set_caps() and the setcaps function
2011-06-07 09:43:20 +02:00
Edward Hervey
69800aa307 basesink: Don't accept segments after EOS
And refactor the code slightly to avoid code duplication.

This solves a regression introduced by bdbc0693
2011-06-06 11:20:29 +02:00
Tim-Philipp Müller
4b920eb5d2 docs: update for API changes
Also remove GST_PAD_CHECKGETRANGEFUNC macro
2011-06-05 18:57:56 +01:00
Wim Taymans
3cbeb3848c baseparse: use caps event instead of setcaps 2011-06-02 19:24:26 +02:00
Edward Hervey
9b1c84d5ac basetransform: Use local priv variable instead of trans->priv 2011-05-31 18:31:53 +02:00
Edward Hervey
ceb86a586e gst: Remove obvious dead assignments 2011-05-31 18:30:30 +02:00
Wim Taymans
690c81b95d basesrc: remove deprecated clean shutdown method 2011-05-27 17:28:34 +02:00
Sebastian Dröge
26a5a877ff basesrc: Fix for SEGMENT event API changes 2011-05-27 14:02:37 +02:00
Sebastian Dröge
30a7fd7b4d Merge branch 'master' into 0.11 2011-05-27 13:58:26 +02:00
Sebastian Dröge
7295f3e2f6 basetransform: Pass the complete caps to transform_caps
Instead of passing it structure by structure. This allows
better optimized transform_caps functions and allows better
transformation decisions.

See bug #619844.
2011-05-27 11:37:24 +02:00
Sebastian Dröge
934faf163c basesrc: Send an update NEWSEGMENT event downstream if the duration changes
This allows streaming the complete file for files that have grown since
streaming started.

Fixes bug #647940.
2011-05-27 09:05:46 +02:00
Sebastian Dröge
5076688c1f pushsrc: Fix infinite recursion in pushsrc query handler 2011-05-26 14:14:13 +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
7e6d579301 scheduling: port to new scheduling query 2011-05-24 17:39:56 +02:00
Wim Taymans
7754d8d7ba transform: fixes for bufferpool handling
Don't error out when the allocation query returns success.
Do bufferpool query after we pushed the caps event downstream so that we can get
a good bufferpool suggestion.
Also proxy the bufferpool query downstream when we operate in in_place mode.
2011-05-23 18:15:00 +02:00
Wim Taymans
35cc371363 transform: reset reconfigure state
When we negotiate new caps, reset the reconfigure state.
2011-05-23 16:53:01 +02:00
Wim Taymans
1cb7523efa basetransform: WIP handle bufferpool 2011-05-23 15:38:31 +02:00
Wim Taymans
4e13568d27 basesrc: avoid calling _set_caps() on the srcpad
Avoid installing a setcaps function on the srcpad and calling the setcaps
function, we can do more efficiently with sending the event ourself and calling
our vmethod.
2011-05-21 19:06:08 +02:00
Wim Taymans
d33909302e basetransform: remove some more code
Remove some more unused code from basetransform.
Prepare for implementing bufferpools.
2011-05-20 16:01:57 +02:00
Sebastian Dröge
ce216c1406 Merge branch 'master' into 0.11 2011-05-20 13:06:57 +02:00
Sebastian Dröge
1d57e46dbd basesink: Only reinit the cached GstClockID if it is for the same clock
The clock might have changed since the clock ID was created and in
that case we have to request a new one.
2011-05-20 13:05:04 +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
ad0693f47d basetransform: relax caps check
Also run the caps transform function on ANY caps, like we used to do before.
This makes sure that capsfilter has a chance to filter ANY caps as well.
2011-05-18 16:49:28 +02:00
Wim Taymans
e39182a085 Merge branch 'master' into 0.11
Conflicts:
	gst/gstminiobject.c
	gst/gstpad.c
	gst/gstpad.h
	gst/gstplugin.h
	libs/gst/base/gstbaseparse.c
2011-05-18 13:14:57 +02:00
Mark Nauwelaerts
35567592ef baseparse: maintain frame state during frame parsing round
See #650093.
2011-05-18 09:49:35 +02:00
Mark Nauwelaerts
af5061e943 baseparse: provide latency query support 2011-05-18 09:49:22 +02:00
Mark Nauwelaerts
82a6cb39ae baseparse: make minimum frame size handling more efficient and convenient
While some formats allow subclass to determine a specific subsequent
needed frame size, others may to need to scan for markers and can only
request 'additional data' by whatever reasonable available step.

In push mode, trying to minimize additional latency leads to step size
being the next input buffer.  In pull mode, any reasonable step size
(such as already used by buffer caching) can be applied.
2011-05-18 09:49:12 +02:00