gstreamer/libs/gst/base
Rob Clark 29289ee79e basetransform fix for upstream caps-renegotiation
If initially pass-through caps are negotiated between a transform element's
sink and src pads, but then the downstream element returns different caps
on a buffer from pad_alloc(), basetransform gets stuck with proxy_alloc=TRUE
even though the upstream peer doesn't accept the caps, causing
gst_pad_peer_accept_caps() to be called on each buffer in _buffer_alloc():

    if (!gst_caps_is_equal (newcaps, caps)) {
      GST_DEBUG_OBJECT (trans, "caps are new");
      /* we have new caps, see if we can proxy downstream */
>>    if (gst_pad_peer_accept_caps (pad, newcaps)) {
        /* peer accepts the caps, return a buffer in this format */
        GST_DEBUG_OBJECT (trans, "peer accepted new caps");

which is taking ~40ms/frame.

This patch does two things.  (1) if the buffer returned from pad_alloc() has
new caps, trigger the decision whether to proxy the buffer-alloc to be
revisited, and (2) disable proxy if peer does not accept new caps.  (The first
part may not be strictly needed, but seemed like a good idea.)

Note that this issue would not arise except in case of downstream elements
who have on their template-caps, some that would be suitable for pass-through,
but at runtime pick more restrictive caps (for ex, after querying a driver for
what formats it actually supports).
2010-07-27 17:34:49 +02:00
..
.gitignore Update a bunch of gitignores to clean up my git status output 2009-01-23 16:08:40 +00:00
gstadapter.c adapter: optimize progressive masked_scan 2010-06-14 15:09:59 +02:00
gstadapter.h adapter: add extended masked_scan_uint32_peek that also provides matching value 2010-06-14 15:09:38 +02:00
gstbasesink.c basesink: Implement GstElement::get_query_types() 2010-07-16 17:26:50 +02:00
gstbasesink.h basesink: add accessors for the enable-last-buffer property. 2010-07-06 16:39:18 +02:00
gstbasesrc.c basesrc: Return values in stream time for the POSITION query 2010-07-16 17:26:54 +02:00
gstbasesrc.h docs: clarify the pull_range functions 2010-05-05 12:01:50 +02:00
gstbasetransform.c basetransform fix for upstream caps-renegotiation 2010-07-27 17:34:49 +02:00
gstbasetransform.h basetransform: add accept_caps vmethod 2010-06-14 12:45:20 +02:00
gstbitreader.c docs: fix Since: tags in docs for newly-added API 2009-10-07 23:34:44 +01:00
gstbitreader.h bitreader/bytereader: API: Add gst_(bit|byte)_reader_get_size() 2009-10-07 17:59:51 +02:00
gstbytereader-docs.h bytereader: add unchecked and inline versions of the float getters/peekers 2009-09-06 18:51:18 +01:00
gstbytereader.c docs: fix Since: tags in docs for newly-added API 2009-10-07 23:34:44 +01:00
gstbytereader.h bitreader/bytereader: API: Add gst_(bit|byte)_reader_get_size() 2009-10-07 17:59:51 +02:00
gstbytewriter.c docs: document that gst_byte_writer_put_string*() writes the terminator too 2010-05-05 16:34:47 +01:00
gstbytewriter.h docs: document that gst_byte_writer_put_string*() writes the terminator too 2010-05-05 16:34:47 +01:00
gstcollectpads.c collectpads: fix documentation glitch 2010-05-27 14:57:26 +02:00
gstcollectpads.h collectpads: Improve docs about 'data' attribute 2010-02-18 17:00:05 -03:00
gstdataqueue.c docs: add missing "Since: 0.10.26" marker for gst_data_queue_new_full() 2010-03-17 11:03:15 +00:00
gstdataqueue.h gstdataqueue: new constructor which takes callbacks. 2009-10-07 09:32:05 +02:00
gstpushsrc.c libs/gst/base/gstpushsrc.c: Add some more docs here and there. 2006-07-05 18:20:58 +00:00
gstpushsrc.h fix whitespace 2009-09-07 18:32:10 +02:00
gsttypefindhelper.c typefind: add a new method that also uses the file extension 2010-01-12 17:34:39 +01:00
gsttypefindhelper.h typefind: add a new method that also uses the file extension 2010-01-12 17:34:39 +01:00
Makefile.am libs: point gobject-introspection scanner to .la files 2010-04-03 13:41:52 +01: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...