Commit graph

95 commits

Author SHA1 Message Date
Thiago Santos
581c4297d0 dataqueue: add gst_data_queue_push_force
Adds a variant of the _push function that doesn't check the queue limits
before adding the new item. It is useful when pushing an element to the
queue shouldn't lock the thread.

One particular scenario is when the queue is used to serialize buffers
and events that are going to be pushed from another thread. The
dataqueue should have a limit on the amount of buffers to be stored to
avoid large memory consumption, but events can be considered to have
negligible impact on memory compared to buffers. So it is useful to be
used to push items into the queue that contain events, even though the
queue is already full, it shouldn't matter inserting an item that has
no significative size.

This scenario happens on adaptive elements (dashdemux / mssdemux) as
there is a single download thread fetching buffers and putting into the
dataqueues for the streams. This same download thread can als generate
events in some situations as caps changes, eos or a internal control
events. There can be a deadlock at preroll if the first buffer fetched
is large enough to fill the dataqueue and the download thread and the
next iteration of the download thread decides to push an event to this
same dataqueue before fetching buffers to other streams, if this push
locks, the pipeline will be stuck in preroll as no more buffers will be
downloaded.
There is a somewhat common practice in dash streams to have a single
very large buffer for audio and one for video, so this will always
happen as the download thread will have to push an EOS right after
fetching the first buffer for any stream.

API: gst_data_queue_push_force

https://bugzilla.gnome.org/show_bug.cgi?id=705694
2013-08-13 12:00:48 -03:00
Olivier Crête
5920491597 adapter: Add function to return buffer composed of multiple memories
API: gst_adapter_take_fast()
2013-07-16 14:07:48 -04:00
Thiago Santos
1681a1b1e0 dataqueue: add gst_data_queue_peek
This function works just like gst_data_queue_pop, but it doesn't
remove the object from the queue.

Useful when inspecting multiple GstDataQueues to decide from which
to pop the element from.

Add: gst_data_queue_peek
2013-04-18 14:45:47 -03:00
Sebastian Dröge
b909061031 gst: Add new GstContext miniobject for sharing contexts in a pipeline 2013-03-29 16:40:21 +01:00
David Schleef
92674800ed update exports for baseparse API changes 2013-02-12 12:32:23 -08:00
Sebastian Dröge
08e0fcd7b2 value: API: Add boxed type for GThread 2012-11-12 11:40:59 +01:00
Sebastian Dröge
09982c3c13 dataqueue/queuearray: Make public API again
These are actually used outside of coreelements nowadays.
Also hide lots of internals and add padding and documentation.
2012-10-25 14:03:01 +02:00
Tim-Philipp Müller
4e373aa952 docs: add Since markers for new API and add it to docs and .def file 2012-10-04 11:24:09 +01:00
Wim Taymans
25665ff90d defs: add new baseparse function 2012-09-13 11:38:52 +02:00
Stefan Sauer
57ea490f5a collectpads: remove gst_collect_pads_add_pad_full
Rename gst_collect_pads_add_pad_full() to gst_collect_pads_add_pad() and fix all
invocations.
2012-09-12 21:04:47 +02:00
Sebastian Dröge
f24d36c380 docs: Add new basesrc/basetransform API to the docs 2012-08-14 15:46:35 +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
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
Sebastian Dröge
67f95a795a win32: Fix exported symbols list for real now 2012-07-11 13:14:57 +02:00
Sebastian Dröge
f773771b0e win32: Updated exported symbols list 2012-07-11 12:46:31 +02:00
Edward Hervey
94e0e06efa win32: Update defs file for API changes/addition 2012-07-09 20:31:45 +02:00
Sebastian Dröge
2d049b41ab win32: Update exported symbols list 2012-07-05 12:34:43 +02:00
Sebastian Dröge
dfd9b60221 toc: Make structures opaque and clean up function names and fields a bit 2012-07-05 12:29:02 +02:00
Edward Hervey
c0970867bf win32: API additions 2012-07-04 17:46:54 +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
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
Mark Nauwelaerts
e076e36840 collectpads2: rename to collectpads 2012-04-17 15:07:54 +02:00
Mark Nauwelaerts
569c48052a win32: add new collectpads2 API to .def file 2012-04-16 16:36:52 +02:00
Edward Hervey
5e554fde91 win32: Update defs file 2012-03-30 08:55:33 +02: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
f5aa6e294f defs: update 2012-02-14 10:30:40 +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
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
Tim-Philipp Müller
434b5093ba win32: add new collectpads2 function to .def file 2011-12-19 20:57:44 +00:00
Tim-Philipp Müller
b0d411d071 win32: update .def files for latest API additions 2011-12-08 00:49:17 +00: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
René Stadler
e9ac94cffb defs: update for byte_writer_put_buffer 2011-11-24 14:08:13 +01:00
Wim Taymans
9ceb77058b defs: update defs files 2011-11-22 12:46:39 +01:00
Wim Taymans
011a8d3901 defs: update for new api 2011-10-28 12:27:43 +02:00
Wim Taymans
d110c4db31 Merge branch 'master' into 0.11 2011-10-28 11:13:55 +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
5b12790c26 win32: Add new collectpads2 API 2011-10-28 09:36:12 +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
6e5b113fbd defs: update defs 2011-08-04 17:26:34 +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
Edward Hervey
805a0ee697 win32: Update for added/removed symbols 2011-06-10 13:35:25 +02:00
Stefan Kost
d0e95889c0 win32: add new api 2011-05-20 15:50:30 +03:00
Sebastian Dröge
a46c9c2a62 event: Make SEGMENT event parsing API more consistent with the others 2011-05-18 16:56:43 +02:00
Sebastian Dröge
caaf5ad528 Merge branch 'master' into 0.11 2011-04-16 16:06:02 +02:00
Tim-Philipp Müller
4116ef76c0 win32: add new baseparse API to libgstbase.def 2011-04-16 10:17:24 +01:00
Wim Taymans
6be4dbdb5a Merge branch 'master' into 0.11
Conflicts:
	android/base.mk
	android/controller.mk
	android/dataprotocol.mk
	android/elements.mk
	android/gst-inspect.mk
	android/gst-launch.mk
	android/gst-plugin-scanner.mk
	android/gst.mk
	android/indexers.mk
	android/net.mk
	win32/common/libgstbase.def
2011-04-11 10:26:54 +02:00
Tim-Philipp Müller
9d98c62f0e baseparse: rename _set_frame_props() to _set_frame_rate()
Seems like the best fit to what it does, and is shorter than
set_frame_properties() which might also have been confusing
because of GstBaseParseFrame.

https://bugzilla.gnome.org/show_bug.cgi?id=518857
2011-04-08 15:44:58 +01:00
Wim Taymans
beac9c4a95 buffer: fix remaining unit tests 2011-03-28 20:08:46 +02:00
Wim Taymans
4ee5c61a2d basesink: add property to configure a throttle-time
Add a property to configure the throttle time on a sink. The
property is not yet used.

See #638891
2011-02-10 15:21:45 +01:00
Wim Taymans
1afaa1680f adapter: add function to get a list of buffers
Add a function to retrieve a list of buffers containing the first N bytes from
the adapter. This can be done without a memcpy and should make it possible to
transfer the list to a GstBufferList later.
2010-09-17 17:35:41 +02:00