diff options
author | Tim-Philipp Müller <tim@centricular.net> | 2013-08-10 19:44:15 +0100 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2013-08-10 19:44:15 +0100 |
commit | ed69b2896f3fe86162cc90fd4f8d7d3ebb63fefc (patch) | |
tree | 8d5e281fb4d22b2e27ee85f394675ad43b5cbeb2 /gst/aiff | |
parent | 48734bd522bacadd9692996f3afaea8f41133538 (diff) | |
download | gstreamer-plugins-bad-ed69b2896f3fe86162cc90fd4f8d7d3ebb63fefc.tar.gz |
aiffparse: fix CAPS query
Was causing criticals in decodebin/playbin because the caps
query done when exposing pads would return ANY caps.
Diffstat (limited to 'gst/aiff')
-rw-r--r-- | gst/aiff/aiffparse.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/gst/aiff/aiffparse.c b/gst/aiff/aiffparse.c index bef1f5681..a19097453 100644 --- a/gst/aiff/aiffparse.c +++ b/gst/aiff/aiffparse.c @@ -1506,20 +1506,19 @@ done: static gboolean gst_aiff_parse_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) { - gboolean res = TRUE; + gboolean res = FALSE; GstAiffParse *aiff = GST_AIFF_PARSE (parent); - /* only if we know */ - if (aiff->state != AIFF_PARSE_DATA) { - return FALSE; - } - switch (GST_QUERY_TYPE (query)) { case GST_QUERY_DURATION: { gint64 duration = 0; GstFormat format; + /* only if we know */ + if (aiff->state != AIFF_PARSE_DATA) + break; + gst_query_parse_duration (query, &format, NULL); switch (format) { @@ -1542,6 +1541,10 @@ gst_aiff_parse_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) gint64 srcvalue, dstvalue; GstFormat srcformat, dstformat; + /* only if we know */ + if (aiff->state != AIFF_PARSE_DATA) + break; + gst_query_parse_convert (query, &srcformat, &srcvalue, &dstformat, &dstvalue); res = gst_aiff_parse_pad_convert (pad, srcformat, srcvalue, @@ -1553,6 +1556,10 @@ gst_aiff_parse_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) case GST_QUERY_SEEKING:{ GstFormat fmt; + /* only if we know */ + if (aiff->state != AIFF_PARSE_DATA) + break; + gst_query_parse_seeking (query, &fmt, NULL, NULL, NULL); if (fmt == GST_FORMAT_TIME) { gboolean seekable = TRUE; |