/**
* gst_query_add_context_type:
- * @query: a GST_QUERY_NEED_CONTEXT type query
+ * @query: a GST_QUERY_CONTEXT type query
* @context_type: a context type
*
* Add a new context type to @query.
/**
* gst_query_get_n_context_types:
- * @query: a GST_QUERY_NEED_CONTEXT type query
+ * @query: a GST_QUERY_CONTEXT type query
*
* Retrieve the number of values currently stored in the
* context-types array of the query's structure.
/**
* gst_query_parse_nth_context_type:
- * @query: a GST_QUERY_NEED_CONTEXT type query
+ * @query: a GST_QUERY_CONTEXT type query
* @context_type: (out) (allow-none): the context type, or NULL
*
- * Parse a context type from an existing GST_QUERY_NEED_CONTEXT query
+ * Parse a context type from an existing GST_QUERY_CONTEXT query
* from @index.
*
* Returns: a #gboolean indicating if the parsing succeeded.
return TRUE;
}
+
+/**
+ * gst_query_has_context_type:
+ * @query: a GST_QUERY_CONTEXT type query
+ * @context_type: the context type
+ *
+ * Check if @query is asking for @context_type.
+ *
+ * Returns: %TRUE if @context_type is requested.
+ */
+gboolean
+gst_query_has_context_type (GstQuery * query, const gchar * context_type)
+{
+ guint i, n;
+
+ g_return_val_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_CONTEXT, FALSE);
+ g_return_val_if_fail (context_type != NULL, FALSE);
+
+ n = gst_query_get_n_context_types (query);
+ for (i = 0; i < n; i++) {
+ const gchar *tmp;
+
+ if (gst_query_parse_nth_context_type (query, i, &tmp) &&
+ strcmp (tmp, context_type) == 0)
+ return TRUE;
+ }
+
+
+ return FALSE;
+}
void gst_query_add_context_type (GstQuery * query, const gchar * context_type);
guint gst_query_get_n_context_types (GstQuery * query);
gboolean gst_query_parse_nth_context_type (GstQuery * query, guint i, const gchar ** context_type);
+gboolean gst_query_has_context_type (GstQuery * query, const gchar * context_type);
void gst_query_set_context (GstQuery *query, GstContext *context);
void gst_query_parse_context (GstQuery *query, GstContext **context);