mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2025-01-05 23:08:43 +00:00
3c610e12e5
SDPMessage, FlowCombiner and ParseContext have specific functions available to perform copying, freeing and (un)ref'ing. Calling them directly on versions where they are supported prevents us from going through GType machinery and locks that end up the same functions in the end.
45 lines
1.2 KiB
Rust
45 lines
1.2 KiB
Rust
// Take a look at the license at the top of the repository in the LICENSE file.
|
|
|
|
use glib::translate::*;
|
|
|
|
glib::wrapper! {
|
|
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
|
pub struct ParseContext(Boxed<ffi::GstParseContext>);
|
|
|
|
match fn {
|
|
copy => |ptr| {
|
|
cfg_if::cfg_if! {
|
|
if #[cfg(feature = "v1_12_1")] {
|
|
ffi::gst_parse_context_copy(ptr)
|
|
} else {
|
|
glib::gobject_ffi::g_boxed_copy(ffi::gst_parse_context_get_type(), ptr as *mut _) as *mut ffi::GstParseContext
|
|
}
|
|
}
|
|
},
|
|
free => |ptr| ffi::gst_parse_context_free(ptr),
|
|
get_type => || ffi::gst_parse_context_get_type(),
|
|
}
|
|
}
|
|
|
|
unsafe impl Send for ParseContext {}
|
|
unsafe impl Sync for ParseContext {}
|
|
|
|
impl ParseContext {
|
|
pub fn new() -> Self {
|
|
unsafe { from_glib_full(ffi::gst_parse_context_new()) }
|
|
}
|
|
|
|
pub fn get_missing_elements(&self) -> Vec<String> {
|
|
unsafe {
|
|
FromGlibPtrContainer::from_glib_full(ffi::gst_parse_context_get_missing_elements(
|
|
mut_override(self.to_glib_none().0),
|
|
))
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Default for ParseContext {
|
|
fn default() -> Self {
|
|
Self::new()
|
|
}
|
|
}
|