query: add convenience API to query for scheduling mode and flags
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 11 Sep 2012 14:39:34 +0000 (16:39 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 11 Sep 2012 15:00:09 +0000 (17:00 +0200)
docs/gst/gstreamer-sections.txt
gst/gstquery.c
gst/gstquery.h
win32/common/libgstreamer.def

index e57a183..5cc4b9c 100644 (file)
@@ -2267,6 +2267,7 @@ gst_query_add_scheduling_mode
 gst_query_get_n_scheduling_modes
 gst_query_parse_nth_scheduling_mode
 gst_query_has_scheduling_mode
+gst_query_has_scheduling_mode_with_flags
 
 gst_query_new_drain
 <SUBSECTION Standard>
index d29ddab..a79114f 100644 (file)
@@ -2130,6 +2130,32 @@ gst_query_has_scheduling_mode (GstQuery * query, GstPadMode mode)
 }
 
 /**
+ * gst_query_has_scheduling_mode_with_flags:
+ * @query: a GST_QUERY_SCHEDULING type query #GstQuery
+ * @mode: the scheduling mode
+ * @flags: #GstSchedulingFlags
+ *
+ * Check if @query has scheduling mode set and @flags is set in
+ * query scheduling flags.
+ *
+ * Returns: TRUE when @mode is in the list of scheduling modes
+ *    and @flags are compatible with query flags.
+ */
+gboolean
+gst_query_has_scheduling_mode_with_flags (GstQuery * query, GstPadMode mode,
+    GstSchedulingFlags flags)
+{
+  GstSchedulingFlags sched_flags;
+
+  g_return_val_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_SCHEDULING, FALSE);
+
+  gst_query_parse_scheduling (query, &sched_flags, NULL, NULL, NULL);
+
+  return ((flags & sched_flags) != 0) &&
+      gst_query_has_scheduling_mode (query, mode);
+}
+
+/**
  * gst_query_new_accept_caps:
  * @caps: a fixed #GstCaps
  *
index 5c88f55..47fec23 100644 (file)
@@ -456,6 +456,8 @@ void            gst_query_add_scheduling_mode       (GstQuery *query, GstPadMode
 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);
+gboolean        gst_query_has_scheduling_mode_with_flags (GstQuery * query, GstPadMode mode,
+                                                    GstSchedulingFlags flags);
 
 /* accept-caps query */
 GstQuery *      gst_query_new_accept_caps          (GstCaps *caps) G_GNUC_MALLOC;
index b4ff163..b30b962 100644 (file)
@@ -859,6 +859,7 @@ EXPORTS
        gst_query_get_structure
        gst_query_get_type
        gst_query_has_scheduling_mode
+       gst_query_has_scheduling_mode_with_flags
        gst_query_new_accept_caps
        gst_query_new_allocation
        gst_query_new_buffering