summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2017-12-23 16:45:18 +0100
committerTim-Philipp Müller <tim@centricular.com>2018-01-27 11:18:19 +0000
commitcd10f14726cbdc497b117e75b320c379b2403916 (patch)
tree5f2460fd7d3b5f1030d2b3408e6d54de1cbd193e
parentb5028383ab9cc96e72595d193700a177a6587891 (diff)
buffer: add gst_buffer_get_n_meta() convenience function
Counts how many metas there are for a certain api type. https://bugzilla.gnome.org/show_bug.cgi?id=791918
-rw-r--r--docs/gst/gstreamer-sections.txt1
-rw-r--r--gst/gstbuffer.c22
-rw-r--r--gst/gstbuffer.h3
-rw-r--r--win32/common/libgstreamer.def1
4 files changed, 27 insertions, 0 deletions
diff --git a/docs/gst/gstreamer-sections.txt b/docs/gst/gstreamer-sections.txt
index ad81f6b55..42c7c4c5f 100644
--- a/docs/gst/gstreamer-sections.txt
+++ b/docs/gst/gstreamer-sections.txt
@@ -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
diff --git a/gst/gstbuffer.c b/gst/gstbuffer.c
index 73c5182e4..a1eae0dbe 100644
--- a/gst/gstbuffer.c
+++ b/gst/gstbuffer.c
@@ -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
diff --git a/gst/gstbuffer.h b/gst/gstbuffer.h
index d380a9c7e..203782008 100644
--- a/gst/gstbuffer.h
+++ b/gst/gstbuffer.h
@@ -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
diff --git a/win32/common/libgstreamer.def b/win32/common/libgstreamer.def
index 06e3a8b2e..4abfeec55 100644
--- a/win32/common/libgstreamer.def
+++ b/win32/common/libgstreamer.def
@@ -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