summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2013-08-10 19:44:15 +0100
committerTim-Philipp Müller <tim@centricular.net>2013-08-10 19:44:15 +0100
commited69b2896f3fe86162cc90fd4f8d7d3ebb63fefc (patch)
tree8d5e281fb4d22b2e27ee85f394675ad43b5cbeb2 /gst
parent48734bd522bacadd9692996f3afaea8f41133538 (diff)
downloadgstreamer-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')
-rw-r--r--gst/aiff/aiffparse.c19
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;