tagdemux: fix src query handler

We don't want to blindly forward all queries.
This commit is contained in:
Wim Taymans 2012-02-14 13:25:25 +01:00
parent d1beba8b6d
commit ee2c699016

View file

@ -1340,13 +1340,17 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
GstTagDemux *demux = GST_TAG_DEMUX (parent); GstTagDemux *demux = GST_TAG_DEMUX (parent);
GstFormat format; GstFormat format;
gint64 result; gint64 result;
gboolean res = TRUE;
if (!gst_pad_peer_query (demux->priv->sinkpad, query))
return FALSE;
switch (GST_QUERY_TYPE (query)) { switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_SCHEDULING:
res = gst_pad_peer_query (demux->priv->sinkpad, query);
break;
case GST_QUERY_POSITION: case GST_QUERY_POSITION:
{ {
if (!(res = gst_pad_peer_query (demux->priv->sinkpad, query)))
goto done;
gst_query_parse_position (query, &format, &result); gst_query_parse_position (query, &format, &result);
if (format == GST_FORMAT_BYTES) { if (format == GST_FORMAT_BYTES) {
result -= demux->priv->strip_start; result -= demux->priv->strip_start;
@ -1356,6 +1360,9 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
} }
case GST_QUERY_DURATION: case GST_QUERY_DURATION:
{ {
if (!(res = gst_pad_peer_query (demux->priv->sinkpad, query)))
goto done;
gst_query_parse_duration (query, &format, &result); gst_query_parse_duration (query, &format, &result);
if (format == GST_FORMAT_BYTES) { if (format == GST_FORMAT_BYTES) {
result -= demux->priv->strip_start + demux->priv->strip_end; result -= demux->priv->strip_start + demux->priv->strip_end;
@ -1364,10 +1371,11 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
break; break;
} }
default: default:
res = gst_pad_query_default (pad, parent, query);
break; break;
} }
done:
return TRUE; return res;
} }
static void static void