aiffparse: fix CAPS query

Was causing criticals in decodebin/playbin because the caps
query done when exposing pads would return ANY caps.
This commit is contained in:
Tim-Philipp Müller 2013-08-10 19:44:15 +01:00
parent 48734bd522
commit ed69b2896f

View File

@ -1506,20 +1506,19 @@ done:
static gboolean static gboolean
gst_aiff_parse_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) gst_aiff_parse_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
{ {
gboolean res = TRUE; gboolean res = FALSE;
GstAiffParse *aiff = GST_AIFF_PARSE (parent); GstAiffParse *aiff = GST_AIFF_PARSE (parent);
/* only if we know */
if (aiff->state != AIFF_PARSE_DATA) {
return FALSE;
}
switch (GST_QUERY_TYPE (query)) { switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_DURATION: case GST_QUERY_DURATION:
{ {
gint64 duration = 0; gint64 duration = 0;
GstFormat format; GstFormat format;
/* only if we know */
if (aiff->state != AIFF_PARSE_DATA)
break;
gst_query_parse_duration (query, &format, NULL); gst_query_parse_duration (query, &format, NULL);
switch (format) { switch (format) {
@ -1542,6 +1541,10 @@ gst_aiff_parse_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
gint64 srcvalue, dstvalue; gint64 srcvalue, dstvalue;
GstFormat srcformat, dstformat; GstFormat srcformat, dstformat;
/* only if we know */
if (aiff->state != AIFF_PARSE_DATA)
break;
gst_query_parse_convert (query, &srcformat, &srcvalue, gst_query_parse_convert (query, &srcformat, &srcvalue,
&dstformat, &dstvalue); &dstformat, &dstvalue);
res = gst_aiff_parse_pad_convert (pad, srcformat, srcvalue, 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:{ case GST_QUERY_SEEKING:{
GstFormat fmt; GstFormat fmt;
/* only if we know */
if (aiff->state != AIFF_PARSE_DATA)
break;
gst_query_parse_seeking (query, &fmt, NULL, NULL, NULL); gst_query_parse_seeking (query, &fmt, NULL, NULL, NULL);
if (fmt == GST_FORMAT_TIME) { if (fmt == GST_FORMAT_TIME) {
gboolean seekable = TRUE; gboolean seekable = TRUE;