1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
// This file was generated by gir (https://github.com/gtk-rs/gir) // from gir-files (https://github.com/gtk-rs/gir-files) // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT use crate::ClockTime; use crate::Object; use glib::object::IsA; use glib::translate::*; use std::mem; glib::wrapper! { /// The [`crate::ControlSource`] is a base class for control value sources that could /// be used to get timestamp-value pairs. A control source essentially is a /// function over time. /// /// A [`crate::ControlSource`] is used by first getting an instance of a specific /// control-source, creating a binding for the control-source to the target property /// of the element and then adding the binding to the element. The binding will /// convert the data types and value range to fit to the bound property. /// /// For implementing a new [`crate::ControlSource`] one has to implement /// `GstControlSourceGetValue` and `GstControlSourceGetValueArray` functions. /// These are then used by [`crate::prelude::ControlSourceExt::control_source_get_value()`] and /// [`Self::control_source_get_value_array()`] to get values for specific timestamps. /// /// This is an Abstract Base Class, you cannot instantiate it. /// /// # Implements /// /// [`trait@crate::prelude::ControlSourceExt`], [`trait@crate::prelude::GstObjectExt`], [`trait@glib::object::ObjectExt`], [`trait@crate::prelude::ControlSourceExtManual`] pub struct ControlSource(Object<ffi::GstControlSource, ffi::GstControlSourceClass>) @extends Object; match fn { type_ => || ffi::gst_control_source_get_type(), } } unsafe impl Send for ControlSource {} unsafe impl Sync for ControlSource {} pub const NONE_CONTROL_SOURCE: Option<&ControlSource> = None; /// Trait containing all `ControlSource` methods. /// /// # Implementors /// /// [`struct@crate::ControlSource`] pub trait ControlSourceExt: 'static { /// Gets the value for this [`crate::ControlSource`] at a given timestamp. /// ## `timestamp` /// the time for which the value should be returned /// ## `value` /// the value /// /// # Returns /// /// [`false`] if the value couldn't be returned, [`true`] otherwise. #[doc(alias = "gst_control_source_get_value")] #[doc(alias = "control_source_get_value")] fn value(&self, timestamp: ClockTime) -> Option<f64>; } impl<O: IsA<ControlSource>> ControlSourceExt for O { fn value(&self, timestamp: ClockTime) -> Option<f64> { unsafe { let mut value = mem::MaybeUninit::uninit(); let ret = from_glib(ffi::gst_control_source_get_value( self.as_ref().to_glib_none().0, timestamp.into_glib(), value.as_mut_ptr(), )); let value = value.assume_init(); if ret { Some(value) } else { None } } } }