diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c index 5c640d3c22..6fdfea0486 100644 --- a/libs/gst/base/gstbaseparse.c +++ b/libs/gst/base/gstbaseparse.c @@ -1145,8 +1145,17 @@ gst_base_parse_sink_query (GstPad * pad, GstObject * parent, GstQuery * query) gst_caps_unref (caps); res = TRUE; - } else - res = gst_pad_peer_query (parse->srcpad, query); + } else { + GstCaps *caps, *filter; + + gst_query_parse_caps (query, &filter); + caps = gst_caps_copy (gst_pad_get_pad_template_caps (pad)); + gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST); + gst_query_set_caps_result (query, caps); + gst_caps_unref (caps); + + res = TRUE; + } break; } default: diff --git a/plugins/elements/gstmultiqueue.c b/plugins/elements/gstmultiqueue.c index c58bd4bcd6..d93a524273 100644 --- a/plugins/elements/gstmultiqueue.c +++ b/plugins/elements/gstmultiqueue.c @@ -1730,8 +1730,6 @@ single_queue_overrun_cb (GstDataQueue * dq, GstSingleQueue * sq) "Another queue is empty, bumping single queue %d max visible to %d", sq->id, sq->max_size.visible); } - GST_MULTI_QUEUE_MUTEX_UNLOCK (mq); - goto beach; } /* check if we reached the hard time/bytes limits */ gst_data_queue_get_level (oq->queue, &ssize); @@ -1765,7 +1763,6 @@ single_queue_overrun_cb (GstDataQueue * dq, GstSingleQueue * sq) g_signal_emit (mq, gst_multi_queue_signals[SIGNAL_OVERRUN], 0); } -beach: return; }