+GstQuery * gst_query_new_uri (void) G_GNUC_MALLOC;
+void gst_query_parse_uri (GstQuery *query, gchar **uri);
+void gst_query_set_uri (GstQuery *query, const gchar *uri);
+
+/* allocation query */
+GstQuery * gst_query_new_allocation (GstCaps *caps, gboolean need_pool) G_GNUC_MALLOC;
+void gst_query_parse_allocation (GstQuery *query, GstCaps **caps, gboolean *need_pool);
+
+/* pools */
+void gst_query_add_allocation_pool (GstQuery *query, GstBufferPool *pool,
+ guint size, guint min_buffers,
+ guint max_buffers);
+guint gst_query_get_n_allocation_pools (GstQuery *query);
+void gst_query_parse_nth_allocation_pool (GstQuery *query, guint index,
+ GstBufferPool **pool,
+ guint *size, guint *min_buffers,
+ guint *max_buffers);
+void gst_query_set_nth_allocation_pool (GstQuery *query, guint index,
+ GstBufferPool *pool,
+ guint size, guint min_buffers,
+ guint max_buffers);
+
+/* allocators */
+void gst_query_add_allocation_param (GstQuery *query, GstAllocator *allocator,
+ const GstAllocationParams *params);
+guint gst_query_get_n_allocation_params (GstQuery *query);
+void gst_query_parse_nth_allocation_param (GstQuery *query, guint index,
+ GstAllocator **allocator,
+ GstAllocationParams *params);
+void gst_query_set_nth_allocation_param (GstQuery *query, guint index,
+ GstAllocator *allocator,
+ const GstAllocationParams *params);
+
+/* metadata */
+void gst_query_add_allocation_meta (GstQuery *query, GType api);
+guint gst_query_get_n_allocation_metas (GstQuery *query);
+GType gst_query_parse_nth_allocation_meta (GstQuery *query, guint index);
+void gst_query_remove_nth_allocation_meta (GstQuery *query, guint index);
+gboolean gst_query_has_allocation_meta (GstQuery *query, GType api);
+
+
+/* scheduling query */
+/**
+ * GstSchedulingFlags:
+ * @GST_SCHEDULING_FLAG_SEEKABLE: if seeking is possible
+ * @GST_SCHEDULING_FLAG_SEQUENTIAL: if sequential access is recommended
+ *
+ * The different scheduling flags.
+ */
+typedef enum {
+ GST_SCHEDULING_FLAG_SEEKABLE = (1 << 0),
+ GST_SCHEDULING_FLAG_SEQUENTIAL = (1 << 1)
+} GstSchedulingFlags;
+
+GstQuery * gst_query_new_scheduling (void) G_GNUC_MALLOC;
+
+void gst_query_set_scheduling (GstQuery *query, GstSchedulingFlags flags,
+ gint minsize, gint maxsize, gint align);
+void gst_query_parse_scheduling (GstQuery *query, GstSchedulingFlags *flags,
+ gint *minsize, gint *maxsize, gint *align);
+
+void gst_query_add_scheduling_mode (GstQuery *query, GstPadMode mode);
+guint gst_query_get_n_scheduling_modes (GstQuery *query);
+GstPadMode gst_query_parse_nth_scheduling_mode (GstQuery *query, guint index);
+gboolean gst_query_has_scheduling_mode (GstQuery *query, GstPadMode mode);
+
+/* accept-caps query */
+GstQuery * gst_query_new_accept_caps (GstCaps *caps) G_GNUC_MALLOC;
+void gst_query_parse_accept_caps (GstQuery *query, GstCaps **caps);
+void gst_query_set_accept_caps_result (GstQuery *query, gboolean result);
+void gst_query_parse_accept_caps_result (GstQuery *query, gboolean *result);
+
+/* caps query */
+GstQuery * gst_query_new_caps (GstCaps *filter) G_GNUC_MALLOC;
+void gst_query_parse_caps (GstQuery *query, GstCaps **filter);
+
+void gst_query_set_caps_result (GstQuery *query, GstCaps *caps);
+void gst_query_parse_caps_result (GstQuery *query, GstCaps **caps);
+
+void gst_query_intersect_caps_result (GstQuery *query, GstCaps *filter,
+ GstCapsIntersectMode mode);
+/* drain query */
+GstQuery * gst_query_new_drain (void) G_GNUC_MALLOC;
+
+/* TOC query */
+GstQuery * gst_query_new_toc (void);
+void gst_query_set_toc (GstQuery *query, GstToc *toc, const gchar *extend_uid);
+void gst_query_parse_toc (GstQuery *query, GstToc **toc, gchar **extend_uid);