diff options
author | Tim-Philipp Müller <tim@centricular.com> | 2017-12-23 16:45:18 +0100 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2018-01-27 11:18:19 +0000 |
commit | cd10f14726cbdc497b117e75b320c379b2403916 (patch) | |
tree | 5f2460fd7d3b5f1030d2b3408e6d54de1cbd193e | |
parent | b5028383ab9cc96e72595d193700a177a6587891 (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.txt | 1 | ||||
-rw-r--r-- | gst/gstbuffer.c | 22 | ||||
-rw-r--r-- | gst/gstbuffer.h | 3 | ||||
-rw-r--r-- | win32/common/libgstreamer.def | 1 |
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 |