Commit graph

1510 commits

Author SHA1 Message Date
Sebastian Dröge 0d22988e5c event: Update for stream-start event API changes 2012-08-06 14:00:56 +02:00
Sebastian Dröge 389ec66946 basesrc: Add default handler for URI query in GstURIHandler subclasses 2012-07-31 17:26:37 +02:00
Sebastian Dröge 826a8d643d tag: Add a scope to taglists
This specifies if a given taglist applies to the complete
medium or only this specific stream. By default a taglist
has a stream scope.

Fixes bug #677619.
2012-07-28 00:34:41 +02:00
Wim Taymans f05b0e222f Update for new seeking variable name
When seeking, the start value and type are now called start and start_type.
2012-07-27 15:24:52 +02:00
Stefan Sauer e9b62b030c collectpads: remove unimplemented api
We can always add this back if we need it. Fixes parts of #670852.
2012-07-24 21:38:35 +02:00
Mark Nauwelaerts 363293731e baseparse: also account for frame size when merely scanning for frame
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=680495
2012-07-24 13:50:03 +02:00
Mark Nauwelaerts 2decf696e7 baseparse: remove obsolete function parameter 2012-07-24 13:50:02 +02:00
Wim Taymans 5360ba56f7 basesink: handle -1 step amounts
Define a 0 and -1 step amount. They used to almost do the same thing but now, 0
cancels/stops the current step and -1 keeps on stepping until the end of the
segment.

See https://bugzilla.gnome.org/show_bug.cgi?id=679378
2012-07-18 17:49:32 +02:00
Wim Taymans 3371f391f6 basesink: fix debug string 2012-07-17 12:40:54 +02:00
Tim-Philipp Müller 49ab4d9a45 baseparse: fix seekability querying with formats with headers like FLAC
Move code that checks for upstream seekability and all that to
the right place, otherwise it will never be done for formats
that have headers such as FLAC, as handle_and_push frame will
be called the first time only after headers have been processed
(and framecount is > 0). This then makes us report that we
can't seek, which disables the seek bar in totem.
2012-07-15 12:59:44 +01:00
Tim-Philipp Müller 94f6ba9c0b base: make GstQueueArray private to coreelements for now
Keep it private until we have a reason to make it public.
2012-07-14 19:36:02 +01:00
Wim Taymans 35dbbdb50e baseparse: send seek event upstream first
First try to let upstream handle the seek event, then fail if the event is
something we don't understand.
2012-07-13 12:05:15 +02:00
Wim Taymans 4c42b6720d basesink: handle step end correctly
when we have a new step event with a -1 amount, make sure that we follow the
regular code path so that the stop_end handler is called as usual. This takes
care of flushing the buffer in case of a flushing step and also posts a step end
message.

See https://bugzilla.gnome.org/show_bug.cgi?id=679378
2012-07-11 15:35:57 +02:00
Edward Hervey 042d1ff398 baseparse: Push STREAM_START in pull-mode 2012-07-11 10:26:13 +02:00
Edward Hervey d3ffa82639 Remove 0.10-related documentation and "Since" markers 2012-07-10 12:03:27 +02:00
Tim-Philipp Müller ebcfd0ce05 basesrc: provide fallback in case a create function doesn't know about provided buffers
In 0.11 the caller may provide a buffer to be filled by the source to
pull_range/get_range/create, but it's easy to miss this new case when
porting code from 0.10. Provide fallback that copies the created data
into the provided buffer for now.

This makes oggdemux in pull-mode work with dataurisrc.
2012-07-10 09:42:15 +01:00
Wim Taymans 82eb275ef9 query: copy structure in _add_allocation_meta()
Make gst_query_add_allocation_meta() take a copy of the passed caps instead of
taking ownership. This makes it easier for the caller in most cases because it
doesn't have to make a copy and deal with NULL values.
2012-07-10 10:31:00 +02:00
Tim-Philipp Müller c51a2c1ddf basesrc, basesink, baseparse, typefind: use GST_SEGMENT_FLAG with segment flags 2012-07-09 21:51:07 +01:00
Edward Hervey e1f7c08f65 basesink: Post a STREAM_START message when we see the event 2012-07-09 20:31:45 +02:00
Stefan Sauer 46a4f2f6c0 collectpads: add STREAM_START handling
Use a flag to forward the first STREAM_START
2012-07-09 19:57:25 +02:00
Wim Taymans f362f643ac memory: Make GstAllocator a GstObject
Make GstAllocator a GstObject instead of a GstMiniObject, like bufferpool.
Make a new gstallocator.c file. Make a GstAllocator subclass for the default
allocator.
2012-07-09 16:28:22 +02:00
Wim Taymans 3f80cb272e query: use more generic structure for meta params 2012-07-06 11:49:47 +02:00
Wim Taymans 8173622844 query: add flags to allocation query
Make it possible to add API specific flags to the ALLOCATION query. This makes
it possible to also check what kinds of subfeatures of the metadata API are
supported.
2012-07-06 11:00:38 +02:00
Sebastian Dröge aa2309e54a event: Add format and position to the segment-done event 2012-07-05 13:04:31 +02:00
Sebastian Dröge 49d2ad5633 event: Implement segment-done event 2012-07-05 12:52:51 +02:00
Edward Hervey 588cdcd369 libs: New growing-only queue.
This is a queue which has the same API as GQueue, except that:
* It uses an array, instead of a doubled-linked-list
* The array can only grow.

This code is not-threadsafe. It is up to the owner to make sure the
proper locking is taken before calling this API.
2012-07-04 17:46:53 +02:00
Sebastian Dröge 2833bb73cd basesink: Post TOC messages on the bus in the sinks, similar to tags 2012-07-03 17:25:21 +02:00
Wim Taymans d7fdf75e13 basesrc: handle DTS and PTS
Use DTS and PTS of the subclass.
Calculate PTS from DTS on keyframes.
2012-06-28 09:44:06 +02:00
Wim Taymans 76e8b2ecda task: add GDestroyNotify to _new
Add a GDestroyNotify to the user_data we pass to gst_task_new()
Change gst_pad_start_task() to also take the notify
2012-06-20 10:31:49 +02:00
Evan Nemerson 2c1c1032fa base: add some missing introspection annotations 2012-06-19 18:41:04 -07:00
Wim Taymans 5e84524d72 basesink: preroll and sync on gap events 2012-06-19 16:15:36 +02:00
Wim Taymans a36d5b7335 basesink: reorganize the code a little
Move the code to get the sync times together.
2012-06-19 16:15:36 +02:00
Evan Nemerson 8f6b6b8ab5 introspection: assorted introspection and documentation fixes in base 2012-06-18 13:28:35 +02:00
Evan Nemerson 4705eb61c3 adapter: add missing element-type annotations 2012-06-18 13:18:32 +02:00
Wim Taymans 927f261b1c basesink: wait_eos() -> wait()
Rename gst_base_sink_wait_eos() to gst_base_sink_wait() to avoid confusion and
introspection problems with the ::wait_eos vmethod. Also this method can be used
to wait for other things than EOS. Update the docs a little.
2012-06-18 11:36:25 +02:00
Wim Taymans 1c60558d8c basesrc: avoid flush when starting
When we are doing the initial seek in startup, avoid doing a flush
(and unlock) because we know that the task is not started yet.
2012-06-15 14:54:48 +02:00
Wim Taymans 7b6ebd4b5b message: add the running-time to the async-done message
Add the running-time of the buffer that caused the async operation to complete
to the async-done message.
Update bin to handle the new async-done message.
2012-06-14 09:04:33 +02:00
Wim Taymans 9c8ee44f9b pipeline: use reset_time message to reset the start time
Use the new RESET_TIME message to reset the start-time of the pipeline to the
requested time.
Make basesink request a new running-time when the flush-stop message tells it to
insteasd of waiting for preroll.
2012-06-14 09:04:33 +02:00
Wim Taymans 36d034d1e4 basesrc: handle flush events on the element as well
Handle flush-start and flush-stop sent on the element as well and send them
downstream. Make sure to send a segment event after the flush stop.
2012-06-12 16:01:56 +02:00
Sebastian Dröge aee0d2a2b3 basesrc: Don't ignore the return value of gst_pad_set_caps() and call it after the vfunc 2012-06-08 15:41:17 +02:00
Sebastian Dröge ec7a0a7cf2 basesink: Use gst_pad_set_caps() instead of the manual event fiddling 2012-06-08 15:36:40 +02:00
Sebastian Dröge 183cc7e3bf basetransform: Don't return the return value of gst_pad_set_caps()
e.g. it returns FALSE if incompatible caps are set on the pad.
2012-06-08 15:33:34 +02:00
Wim Taymans 56f9d3782d basetransform: fix reconfigure
Use the pad methods to set and check the reconfigure flags
Clear the reconfigure flag before we negotiate so that we don't miss any
reconfigure events while negotiating
2012-06-07 17:59:39 +02:00
Wim Taymans 80ff9dfb3d basesrc: release the object lock sooner
Release the object lock before we get the time of the clock because that code
might take other locks.
Fix potential clock refcount error because we released the object lock but
didn't ref the clock.
2012-06-07 15:32:27 +02:00
Wim Taymans 42e755f7c3 basesrc: remove 0.11 fixme
We always require elements to have an unlock_stop vmethod.
2012-06-07 15:32:27 +02:00
Sreerenj Balachandran b4ecac2c98 gstadapter: Align the comment description with public api instead of internal one.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=677536
2012-06-06 15:44:36 +02:00
Wim Taymans c10d39a804 event: add name to sticky_multi events
The name of the event is used to store multiple sticky events of a certain type
on a pad.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=676859
2012-06-06 12:52:09 +02:00
Mark Nauwelaerts 584892bf79 baseparse: also perform state processing upon non-OK return
... since processing might still continue (if e.g. NOT_LINKED)
and then proper state (e.g. offset) needs to be maintained
(e.g. to arrange for a new frame setup).
2012-06-04 11:47:55 +02:00
Brian Cameron 461178fb59 typefind: fix prototype of helper_find_suggest
The proto for helper_find_suggest has a different argument than the actual
function in the same file has.  This causes the Sun Studio compiler to fail.

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

Conflicts:

	libs/gst/base/gsttypefindhelper.c
2012-05-24 11:10:22 +02:00
Wim Taymans 9af2c6c86b basesink: throttle-time is used 2012-05-16 13:24:23 +02:00
Wim Taymans 602bd29960 basesink: add prepare method
Add a prepare method that is called before sync happens. The purpose of this
method is to prepare the rendering of the giving buffer so that the following
render() call after sync is a quick as possible.
2012-05-16 12:08:44 +02:00
Wim Taymans d6e909994c basesrc: avoid potential deadlock
In gst_base_src_start_complete() we do a perform_seek() that will eventually
start the streaming thread which acquires the live lock and then goes to sleep
in the case of appsrc. Right after we perform seek we also try to acquire the
live lock which might then deadlock.

fix this by taking the stream lock before performing the seek. This makes sure
that the streaming thread cannot start and grab the live lock until we are done
and release the stream lock again.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=676048
2012-05-16 09:24:45 +02:00
Wim Taymans 05580beb77 docs: fix docs
GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING
2012-05-11 09:14:52 +02:00
Tim-Philipp Müller e73747a7e0 tools, base: don't poke into GstTypeFindFactory struct, use public API 2012-05-01 23:23:41 +01:00
Tim-Philipp Müller ecf74cf2db typefindfactory: add gst_type_find_factory_has_function()
Add API so people don't have to poke the struct for this.
2012-05-01 23:23:41 +01:00
Sebastian Dröge 105fa1ffde basetransform/basesrc: Do bufferpool configuration inside the default decide_allocation() implementation
This allows subclasses to override it, as is necessary for e.g. the
video-crop meta. It is now necessary that after decide_allocation()
there is always a allocator and a configured buffer pool inside the
query.
2012-05-01 13:32:41 +02:00
Wim Taymans 1b87a07d8e adapter: remove _try_to_merge_up()
It causes the timestamp to go wrong, should not cause much of a performance
increase and in the cases where it is faster, it is broken in 0.10 as well.
We should try to review this when rewriting the adapter for 0.11 memory
features.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674791
2012-05-01 10:50:32 +02:00
Wim Taymans aad3812633 adapter: make internals private
Make the adapter fields private.
2012-05-01 09:32:45 +02:00
Mark Nauwelaerts 6802189d68 collectpads: do not unref flush_start twice
Based on patch by Matej Knopp <matej.knopp@gmail.com>
2012-04-23 17:04:57 +02:00
Mark Nauwelaerts 6a48006c21 adapter: refresh skip following merge_up attempt
... as the latter might now adjust skip as well.
2012-04-23 16:57:21 +02:00
Mark Nauwelaerts e076e36840 collectpads2: rename to collectpads 2012-04-17 15:07:54 +02:00
Mark Nauwelaerts 9bcb0ea58e adapter: ensure writable head buffer before skipping part of it 2012-04-17 12:54:45 +02:00
Mark Nauwelaerts 304047b13d Merge remote-tracking branch 'origin/0.10'
Conflicts:
	libs/gst/base/gstcollectpads2.c
2012-04-17 12:29:50 +02:00
Mark Nauwelaerts 5823dd4724 collectpads2: always recording incoming segment info if no buffer_func set 2012-04-17 12:23:48 +02:00
Mark Nauwelaerts 225721f578 Merge remote-tracking branch 'origin/0.10'
Conflicts:
	libs/gst/base/gstcollectpads2.c
2012-04-16 16:29:34 +02:00
Mark Nauwelaerts cc21620823 collectpads2: provide query default and callback handling
... which presently mainly serves to answer SEEKING query negatively
to dissuade upstream encoders from doing any seeking and
"header finalization" (since the returned result of pushing a
sticky event is fairly useless nowadays).
2012-04-16 16:24:18 +02:00
Mark Nauwelaerts 994357a16a collectpads2: modify event handling using a default event handler
... that elements should "chain up" to.
2012-04-16 16:24:10 +02:00
Vincent Penquerc'h b642b87579 collectpads2: assume 0 based segment if no time segment was provided
https://bugzilla.gnome.org/show_bug.cgi?id=669305
2012-04-16 11:08:07 +02:00
Matej Knopp 4e7cf4c5c1 Remove skipped part of buffer when mapping the adapter
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674085
2012-04-14 10:25:12 +02:00
Mark Nauwelaerts dad68cb180 basesink: plug caps leak 2012-04-13 12:01:08 +02:00
Sebastian Dröge b0d89da6b6 gst: Change versioning
Remove GST_MAJORMINOR and replace it by GST_API_VERSION
Also set GST_VERSION_{MAJOR,MINOR,MICRO,NANO} explicitely
now.

All versions are at 1.0.0 now for the release soon but
API/ABI can still change until the 1.0.0 release.

Next release versions until 1.0.0 will be 0.10.9X and
these will be release candidates. GST_VERSION_* will
nonetheless stay at 1.0.0.0.
2012-04-04 14:28:55 +02:00
Edward Hervey 98e1463411 baseparse: always attempt to push if not-linked
This avoids ending up with plenty of pending data (since we'll only
 try to parse/push one frame from the incoming buffer).

Fixes increasing memory consumption when parsers aren't linked

Conflicts:

	libs/gst/base/gstbaseparse.c
2012-04-02 15:27:14 +02:00
Edward Hervey df6d0b0696 baseparse: always attempt to push if not-linked
This avoids ending up with plenty of pending data (since we'll only
 try to parse/push one frame from the incoming buffer).

Fixes increasing memory consumption when parsers aren't linked
2012-04-02 15:17:25 +02:00
Wim Taymans a3d5db491c trans: add transform_ip_on_passthrough
Add an option to control if transform_ip is called in passthrough mode or not.
for elements that don't want to look at the data in passthrough mode, this can
avoid some extra processing, mostly in subclasses.
2012-04-02 11:09:50 +02:00
Wim Taymans d89719a4b3 adapter: use buffer_wrap 2012-03-31 18:34:23 +02:00
Wim Taymans 38b96e6c8c buffer: improve the buffer memory methods
gst_buffer_take_memory -> gst_buffer_insert_memory because insert is what the
method does.
Make all methods deal with ranges so that we can replace, merge, remove and map
a certain subset of the memory in a buffer. With the new methods we can make
some code nicer and reuse more code. Being able to deal with a subset of the
buffer memory allows us to optimize more cases later (most notably RTP headers
and payload that could be in different memory objects).
Make some more convenient macros that call the more generic range methods.
2012-03-30 18:15:24 +02:00
Mark Nauwelaerts a0649dd357 typefindhelper: also unmap collected mapped buffers 2012-03-30 16:53:05 +02:00
Mark Nauwelaerts 096d36e5c5 basetransform: plug caps leak 2012-03-30 16:53:00 +02:00
Sebastian Dröge eadebb172d baseparse: Rename ::event() to ::sink_event() for consistency 2012-03-30 12:03:40 +02:00
Edward Hervey 00feec6068 basesink: lower GST_BASE_SRC_FLAG_LAST
It wouldn't leave that much room for subclass users
2012-03-30 11:49:16 +02:00
Sebastian Dröge 4bffd22394 bytewriter: Actually commit the .c file changes too 2012-03-29 18:03:35 +02:00
Sebastian Dröge d4dcb87c69 bytewriter: Add unchecked/inline variant of gst_byte_writer_put_buffer() 2012-03-29 18:01:11 +02:00
Wim Taymans 9aa9751938 review some docs 2012-03-28 18:12:23 +02:00
Wim Taymans bb876588ac buffer: unify buffer merge methods
Add gst_buffer_append() which appends the memory blocks from one buffer to
another. Remove the old inefficient _merge() and _join() methods which forced a
premature memcpy in most cases.
Remove the _is_span() and _span() methods they are not needed anymore now that
we can _append(). Merging and spanning will be delayed until mapping or maybe
not at all when the element can deal with the different memory blocks.
2012-03-28 12:51:58 +02:00
Mark Nauwelaerts 41e9ca9b17 basetransform: remove automatic and undocumented setting of always_in_place
... which controls how to (forcibly) deal with (non-)writable data and
is not necessarily related to identical caps.

In particular, it is also not so helpful anymore with a more advanced
GstVideoFilter subclass which always has a transform_ip method currently,
even though its subclass may not have a corresponding _ip method.
2012-03-22 15:24:08 +01:00
Wim Taymans 007a00cd1b Merge branch 'master' into 0.11
Conflicts:
	configure.ac
2012-03-22 10:45:06 +01:00
Wim Taymans e017498cb0 baseparse: do queries more directly
Just call our internal query function instead of going through the pad and the
query handler etc.
2012-03-20 17:11:19 +01:00
Wim Taymans f3f209c919 adapter: add some performance debug 2012-03-20 17:11:12 +01:00
Wim Taymans f9c85a53dc pad: improve docs of get/pull_range
Improve the docs of the get/pull_range functions, define the lifetime of the
buffer in case of errors and short reads.
Make sure the code does what the docs say.
2012-03-20 13:14:55 +01:00
Wim Taymans 07c9fba116 basetransform: make more stuff private 2012-03-16 22:51:14 +01:00
Wim Taymans f9c4b70a98 basetransform: small cleanups 2012-03-16 22:25:38 +01:00
Wim Taymans db1318ab4a pad: change the semantics of get/pull_range a little
Make it so that one can specify a buffer for get/pull_range where the downstream
element should write into. When passing NULL, upstream should allocate a buffer,
like in 0.10.
We also need to change the probes a little because before the pull probe, there
could already be a buffer passed. This then allows us to use the same PROBE
macro for before and after pulling.
While we're at the probes, make the query probe more powerful by handling the
GST_PAD_PROBE_DROP return value. Returning _DROP from a query probe will now
return TRUE upstream and will not forward the probe to the peer or handler.
Also handle _DROP for get/pull_range properly by not dispatching to the
peer/handler or by generating EOS when the probe returns DROP and no buffer.
Make filesrc handle the non-NULL buffer passed in the get_range function and
skip the allocation in that case, writing directly into the downstream provided
buffer.
Update tests because now we need to make sure to not pass a random value in the
buffer pointer to get/pull_range
2012-03-16 21:37:10 +01:00
Wim Taymans a7e6c7d2a8 bufferpool: split bufferpool configuration
Make separate methods to control the bufferpool and the allocator used by the
bufferpool.
Make it possible to change the allocator of a pool.
2012-03-15 22:09:02 +01:00
Wim Taymans 83af60019e query: rework the ALLOCATION query
Separate the bufferpool and allocator hints in the allocation query, some
of the values don't always make sense together.
Keep the bufferpool and its configuration together.
Keep the allocator and its parameters together.
Allow for multiple bufferpool configurations in the query.
2012-03-15 20:23:59 +01:00
Wim Taymans 85c9543841 memory: group allocation parameters in a struct
Group the extra allocation parameters in a GstAllocationParams structure to make
it easier to deal with them and so that we can extend them later if needed.
Make gst_buffer_new_allocate() take the GstAllocationParams for added
functionality.
Add boxed type for GstAllocationParams.
2012-03-15 13:42:17 +01:00
Wim Taymans edd2ffe4d4 memory: Add 0 padding
Change gst_allocator_alloc() so that we can also spicify flags and padding.
Add 2 new flags to mark the memory 0 prefixed/padded. This allows us to
remove some resizes in the base classes.
When allocating memory, memset prefix and padding with 0 when the flags tell
us to.
On resize, clear the zero padding flags if we can't guarantee the memory is
still 0 filled.
Update tests.
2012-03-14 21:32:22 +01:00
Wim Taymans 3d76e6011c query: also include padding in ALLOCATION query
Negotiating padding is needed on second thought so include it in the
ALLOCATION query.
Make the bufferpool take padding into account when allocating.
Make basesrc take padding into account.
Use padding and prefix when allocating in basetransform.
2012-03-14 19:47:10 +01:00
Wim Taymans 72ac5f5165 basesrc: take prefix into account when allocating
Take into account the prefix that we received from the allocation query and use
it to allocate and resize a larger buffer.
2012-03-14 18:45:55 +01:00
Wim Taymans e332862985 pad: implement DRAIN handling
When we forward the DRAIN query and there is nothing to forward it to, assume we
are drained.
When a basesink receives a drain query, reply with TRUE.
2012-03-14 16:27:31 +01:00
Wim Taymans d8578d5c09 adapter: add more debug 2012-03-14 12:42:00 +01:00