From 6aa870ba6d636bc5ba2a71bf75a26917678fccd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 26 Jun 2025 18:09:40 +0300 Subject: [PATCH] analytics: Add bindings for new `TensorDataType::name()` and a `Display` impl Part-of: --- gstreamer-analytics/src/enums.rs | 33 ++++++++++++++++++++++++++++++++ gstreamer-analytics/src/lib.rs | 2 ++ 2 files changed, 35 insertions(+) create mode 100644 gstreamer-analytics/src/enums.rs diff --git a/gstreamer-analytics/src/enums.rs b/gstreamer-analytics/src/enums.rs new file mode 100644 index 000000000..2be83508e --- /dev/null +++ b/gstreamer-analytics/src/enums.rs @@ -0,0 +1,33 @@ +// Take a look at the license at the top of the repository in the LICENSE file. + +#[cfg(feature = "v1_28")] +use crate::ffi; +#[cfg(feature = "v1_28")] +use crate::TensorDataType; + +#[cfg(feature = "v1_28")] +use glib::translate::*; + +#[cfg(feature = "v1_28")] +impl TensorDataType { + #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))] + #[doc(alias = "gst_tensor_data_type_get_name")] + pub fn name<'a>(self) -> &'a glib::GStr { + unsafe { + glib::GStr::from_ptr( + ffi::gst_tensor_data_type_get_name(self.into_glib()) + .as_ref() + .expect("gst_tensor_data_type_get_name returned NULL"), + ) + } + } +} + +#[cfg(feature = "v1_28")] +#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))] +impl std::fmt::Display for TensorDataType { + #[inline] + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + f.write_str(&self.name()) + } +} diff --git a/gstreamer-analytics/src/lib.rs b/gstreamer-analytics/src/lib.rs index 7991f7973..eabc5b315 100644 --- a/gstreamer-analytics/src/lib.rs +++ b/gstreamer-analytics/src/lib.rs @@ -43,6 +43,8 @@ pub use crate::tracking::*; mod classification; pub use crate::classification::*; +mod enums; + // Re-export all the traits in a prelude module, so that applications // can always "use gst_app::prelude::*" without getting conflicts pub mod prelude {