summaryrefslogtreecommitdiff
path: root/gst/rawparse/gstrawparse.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/rawparse/gstrawparse.c')
-rw-r--r--gst/rawparse/gstrawparse.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gst/rawparse/gstrawparse.c b/gst/rawparse/gstrawparse.c
index 3d043fd49..a6468d932 100644
--- a/gst/rawparse/gstrawparse.c
+++ b/gst/rawparse/gstrawparse.c
@@ -222,6 +222,22 @@ gst_raw_parse_set_src_caps (GstRawParse * rp)
}
rp->negotiated = gst_pad_set_caps (rp->srcpad, caps);
+
+ /* if subclass inplement decide_allocation, send an allocation
+ * query, pass result to subclass and let it handle allocation if needed. */
+ if (rp_class->decide_allocation) {
+ GstQuery *query;
+
+ query = gst_query_new_allocation (caps, TRUE);
+ if (!gst_pad_peer_query (rp->srcpad, query)) {
+ /* not a problem, just debug a little */
+ GST_DEBUG_OBJECT (rp, "peer ALLOCATION query failed");
+ }
+
+ rp_class->decide_allocation (rp, query);
+ gst_query_unref (query);
+ }
+
gst_caps_unref (caps);
return rp->negotiated;