From d1cf3f372fe41cae708d57f29b50828b7e0016f9 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Mon, 3 Jul 2023 17:25:41 -0400 Subject: [PATCH] gst: Add getting for mini object type names --- gstreamer/src/event.rs | 10 ++++++++++ gstreamer/src/message.rs | 10 ++++++++++ gstreamer/src/query.rs | 9 +++++++++ 3 files changed, 29 insertions(+) diff --git a/gstreamer/src/event.rs b/gstreamer/src/event.rs index 69ac80054..7ea76906e 100644 --- a/gstreamer/src/event.rs +++ b/gstreamer/src/event.rs @@ -238,6 +238,15 @@ impl EventRef { self.structure().map_or(false, |s| s.has_name(name)) } + #[doc(alias = "gst_event_type_get_name")] + #[inline] + pub fn type_name(&self) -> &'static str { + unsafe { + let type_ = ffi::gst_event_type_get_name((*self.as_ptr()).type_); + CStr::from_ptr(type_).to_str().unwrap() + } + } + pub fn view(&self) -> EventView { unsafe { let type_ = (*self.as_ptr()).type_; @@ -2962,6 +2971,7 @@ mod tests { let flush_start_evt = FlushStart::builder() .other_fields(&[("extra-field", &true)]) .build(); + assert_eq!(flush_start_evt.type_name(), "flush-start"); match flush_start_evt.view() { EventView::FlushStart(flush_start_evt) => { assert!(flush_start_evt.structure().is_some()); diff --git a/gstreamer/src/message.rs b/gstreamer/src/message.rs index 16c2949af..05cf20a52 100644 --- a/gstreamer/src/message.rs +++ b/gstreamer/src/message.rs @@ -83,6 +83,15 @@ impl MessageRef { self.structure().map_or(false, |s| s.has_name(name)) } + #[doc(alias = "gst_message_type_get_name")] + #[inline] + pub fn type_name(&self) -> &'static str { + unsafe { + let type_ = ffi::gst_message_type_get_name((*self.as_ptr()).type_); + CStr::from_ptr(type_).to_str().unwrap() + } + } + pub fn view(&self) -> MessageView { unsafe { let type_ = (*self.as_ptr()).type_; @@ -3773,6 +3782,7 @@ mod tests { // Message without arguments let seqnum = Seqnum::next(); let eos_msg = Eos::builder().seqnum(seqnum).build(); + assert_eq!(eos_msg.type_name(), "eos"); match eos_msg.view() { MessageView::Eos(eos_msg) => { assert_eq!(eos_msg.seqnum(), seqnum); diff --git a/gstreamer/src/query.rs b/gstreamer/src/query.rs index 7e467ef73..6e4d64923 100644 --- a/gstreamer/src/query.rs +++ b/gstreamer/src/query.rs @@ -34,6 +34,15 @@ impl QueryRef { } } + #[doc(alias = "gst_query_type_get_name")] + #[inline] + pub fn type_name(&self) -> &'static str { + unsafe { + let type_ = ffi::gst_query_type_get_name((*self.as_ptr()).type_); + CStr::from_ptr(type_).to_str().unwrap() + } + } + #[doc(alias = "get_mut_structure")] #[doc(alias = "gst_query_writable_structure")] #[inline]