gstreamer/libs/gst/base
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
..
.gitignore Update a bunch of gitignores to clean up my git status output 2009-01-23 16:08:40 +00:00
base.h libs: Use foo/foo.h as single-include header consistently everywhere 2012-12-12 16:44:14 +00:00
gstadapter.c adapter: Take account of the skip in gst_adapter_take_buffer_fast() 2013-07-16 15:38:11 -04:00
gstadapter.h adapter: Add function to return buffer composed of multiple memories 2013-07-16 14:07:48 -04:00
gstbaseparse.c base: Fix handling of SEGMENT query 2013-07-29 12:10:45 +02:00
gstbaseparse.h baseparse: more inter-timestamp tracking 2013-03-27 18:26:30 +01:00
gstbasesink.c base: Fix handling of SEGMENT query 2013-07-29 12:10:45 +02:00
gstbasesink.h basesink: add simple rate control 2012-11-09 17:01:23 +01:00
gstbasesrc.c base: Fix handling of SEGMENT query 2013-07-29 12:10:45 +02:00
gstbasesrc.h Fix FSF address 2012-11-03 20:44:48 +00:00
gstbasetransform.c basetransform: optimize default acceptcaps implementation 2013-06-19 15:11:57 +02:00
gstbasetransform.h Fix FSF address 2012-11-03 20:44:48 +00:00
gstbitreader-docs.h docs: align the comments correctly with the declaration in bitreader docs 2013-01-29 15:43:05 +00:00
gstbitreader.c Fix FSF address 2012-11-03 20:44:48 +00:00
gstbitreader.h Fix FSF address 2012-11-03 20:44:48 +00:00
gstbytereader-docs.h Fix FSF address 2012-11-03 20:44:48 +00:00
gstbytereader.c bytereader: Accelerate MPEG/H264 start code scanning 2013-08-10 18:54:34 -04:00
gstbytereader.h Fix FSF address 2012-11-03 20:44:48 +00:00
gstbytewriter-docs.h Fix FSF address 2012-11-03 20:44:48 +00:00
gstbytewriter.c Fix FSF address 2012-11-03 20:44:48 +00:00
gstbytewriter.h Fix FSF address 2012-11-03 20:44:48 +00:00
gstcollectpads.c Add few missing allow-none annotation 2013-07-03 14:25:07 -04:00
gstcollectpads.h Fix FSF address 2012-11-03 20:44:48 +00:00
gstdataqueue.c dataqueue: add gst_data_queue_push_force 2013-08-13 12:00:48 -03:00
gstdataqueue.h dataqueue: add gst_data_queue_push_force 2013-08-13 12:00:48 -03:00
gstindex.c Fix FSF address 2012-11-03 20:44:48 +00:00
gstindex.h Fix FSF address 2012-11-03 20:44:48 +00:00
gstmemindex.c Fix FSF address 2012-11-03 20:44:48 +00:00
gstpushsrc.c Fix FSF address 2012-11-03 20:44:48 +00:00
gstpushsrc.h Fix FSF address 2012-11-03 20:44:48 +00:00
gstqueuearray.c queuearray: make _find() find the value if no compare function is provided 2013-01-30 12:07:52 +00:00
gstqueuearray.h Fix FSF address 2012-11-03 20:44:48 +00:00
gsttypefindhelper.c typefindhelper: Avoid using buffer_get_size in tight loops 2013-07-30 06:59:44 +02:00
gsttypefindhelper.h Add few missing allow-none annotation 2013-07-03 14:25:07 -04:00
Makefile.am Use GST_*_1_0 environment variables everywhere 2013-01-15 13:47:32 +00:00
README add short/long description docs to base classes add pushsrc to the docs remove consolidated doc fragments 2005-08-03 13:30:18 +00:00

Base classes
------------

GstBaseSink
  FIXME: not much point making it operate in pull mode as a generic
  base class I guess...