playbin: only add the template caps when the result is empty

Unconditionally adding the template caps when proxying the caps query will play
havoc with decoders that attempt to choose an output format based on some caps
features.  Creating a sink that does not include those caps features and a
decoder/parser/etc that preferentially chooses some specific caps feature when
available, will always return the decoder/parser/etc template caps and choose a
feature that downstream will be unable to support.

Fix by limiting the addition of the template caps to when the result is actually
empty.

https://bugzilla.gnome.org/show_bug.cgi?id=758212
This commit is contained in:
Matthew Waters 2015-11-30 10:28:55 +11:00
parent aadefefba8
commit 023af2d3b1

View file

@ -4987,7 +4987,7 @@ done:
* if a parser asks us but a decoder is required after it
* because no sink can handle the format directly.
*/
{
if (gst_caps_is_empty (result)) {
GstPad *target = gst_ghost_pad_get_target (GST_GHOST_PAD (pad));
if (target) {