gstreamer/
control_binding.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use glib::{prelude::*, translate::*};
4
5use crate::{ffi, ClockTime, ControlBinding};
6
7pub trait ControlBindingExtManual: IsA<ControlBinding> + 'static {
8    fn property_name(&self) -> &glib::GStr {
9        unsafe {
10            let ptr: *mut ffi::GstControlBinding = self.as_ref().to_glib_none().0;
11            glib::GStr::from_ptr((*ptr).name)
12        }
13    }
14
15    fn property_spec(&self) -> &glib::ParamSpec {
16        unsafe {
17            let ptr: *mut ffi::GstControlBinding = self.as_ref().to_glib_none().0;
18            glib::ParamSpec::from_glib_ptr_borrow(&(*ptr).pspec)
19        }
20    }
21
22    #[doc(alias = "get_g_value_array")]
23    #[doc(alias = "gst_control_binding_get_g_value_array")]
24    fn g_value_array(
25        &self,
26        timestamp: ClockTime,
27        interval: ClockTime,
28        values: &mut [glib::Value],
29    ) -> Result<(), glib::error::BoolError> {
30        let n_values = values.len() as u32;
31        unsafe {
32            glib::result_from_gboolean!(
33                crate::ffi::gst_control_binding_get_g_value_array(
34                    self.as_ref().to_glib_none().0,
35                    timestamp.into_glib(),
36                    interval.into_glib(),
37                    n_values,
38                    values.as_mut_ptr() as *mut glib::gobject_ffi::GValue,
39                ),
40                "Failed to get value array"
41            )
42        }
43    }
44}
45
46impl<O: IsA<ControlBinding>> ControlBindingExtManual for O {}