From 7daf6d96257b0b70afc155b5e2b65c2a9021ddee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 26 Jun 2025 18:40:21 +0300 Subject: [PATCH] gstreamer: Add new `meta_api_type_tags_contain_only()` Part-of: --- gstreamer/src/meta.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gstreamer/src/meta.rs b/gstreamer/src/meta.rs index 28a3b9198..def993910 100644 --- a/gstreamer/src/meta.rs +++ b/gstreamer/src/meta.rs @@ -215,6 +215,12 @@ impl<'a, T> MetaRef<'a, T> { meta_api_type_has_tag_by_quark(self.api(), tag) } + #[inline] + #[doc(alias = "gst_meta_api_type_tags_contain_only")] + pub fn tags_contain_only(&self, tags: &[&str]) -> bool { + meta_api_type_tags_contain_only(self.api(), tags) + } + #[inline] #[doc(alias = "gst_meta_api_type_get_tags")] pub fn tags<'b>(&self) -> &'b [glib::GStringPtr] { @@ -450,6 +456,12 @@ impl<'a, T, U> MetaRefMut<'a, T, U> { self.as_meta_ref().has_tag_by_quark(tag) } + #[inline] + #[doc(alias = "gst_meta_api_type_tags_contain_only")] + pub fn tags_contain_only(&self, tags: &[&str]) -> bool { + self.as_meta_ref().tags_contain_only(tags) + } + #[inline] #[doc(alias = "gst_meta_api_type_get_tags")] pub fn tags<'b>(&self) -> &'b [glib::GStringPtr] { @@ -1128,6 +1140,17 @@ pub fn meta_api_type_has_tag_by_quark(type_: glib::Type, tag: glib::Quark) -> bo } } +#[inline] +#[doc(alias = "gst_meta_api_type_tags_contain_only")] +pub fn meta_api_type_tags_contain_only(type_: glib::Type, tags: &[&str]) -> bool { + skip_assert_initialized!(); + let meta_tags = meta_api_type_get_tags(type_); + + meta_tags + .iter() + .all(|tag| tags.iter().any(|t| *t == tag.as_str())) +} + #[inline] #[doc(alias = "gst_meta_api_type_get_tags")] pub fn meta_api_type_get_tags<'b>(type_: glib::Type) -> &'b [glib::GStringPtr] {