buffer: add gst_buffer_get_n_meta() convenience function
authorTim-Philipp Müller <tim@centricular.com>
Sat, 23 Dec 2017 15:45:18 +0000 (16:45 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 27 Jan 2018 11:18:19 +0000 (11:18 +0000)
Counts how many metas there are for a certain api type.

https://bugzilla.gnome.org/show_bug.cgi?id=791918

docs/gst/gstreamer-sections.txt
gst/gstbuffer.c
gst/gstbuffer.h
win32/common/libgstreamer.def

index ad81f6b..42c7c4c 100644 (file)
@@ -253,6 +253,7 @@ gst_buffer_append
 gst_buffer_append_region
 
 gst_buffer_get_meta
+gst_buffer_get_n_meta
 gst_buffer_add_meta
 gst_buffer_remove_meta
 gst_buffer_iterate_meta
index 73c5182..a1eae0d 100644 (file)
@@ -2140,6 +2140,28 @@ gst_buffer_get_meta (GstBuffer * buffer, GType api)
 }
 
 /**
+ * gst_buffer_get_n_meta:
+ * @buffer: a #GstBuffer
+ * @api_type: the #GType of an API
+ *
+ * Returns: number of metas of type @api_type on @buffer.
+ *
+ * Since: 1.14
+ */
+guint
+gst_buffer_get_n_meta (GstBuffer * buffer, GType api_type)
+{
+  gpointer state = NULL;
+  GstMeta *meta;
+  guint n = 0;
+
+  while ((meta = gst_buffer_iterate_meta_filtered (buffer, &state, api_type)))
+    ++n;
+
+  return n;
+}
+
+/**
  * gst_buffer_add_meta:
  * @buffer: a #GstBuffer
  * @info: a #GstMetaInfo
index d380a9c..2037820 100644 (file)
@@ -613,6 +613,9 @@ GST_EXPORT
 GstMeta *       gst_buffer_get_meta             (GstBuffer *buffer, GType api);
 
 GST_EXPORT
+guint           gst_buffer_get_n_meta           (GstBuffer *buffer, GType api);
+
+GST_EXPORT
 GstMeta *       gst_buffer_add_meta             (GstBuffer *buffer, const GstMetaInfo *info,
                                                  gpointer params);
 GST_EXPORT
index 06e3a8b..4abfeec 100644 (file)
@@ -136,6 +136,7 @@ EXPORTS
        gst_buffer_get_memory
        gst_buffer_get_memory_range
        gst_buffer_get_meta
+       gst_buffer_get_n_meta
        gst_buffer_get_reference_timestamp_meta
        gst_buffer_get_size
        gst_buffer_get_sizes