diff --git a/gstreamer/src/lib.rs b/gstreamer/src/lib.rs index a0a67ec02..4b40ea27e 100644 --- a/gstreamer/src/lib.rs +++ b/gstreamer/src/lib.rs @@ -258,6 +258,9 @@ pub use buffer_pool::*; mod pad_template; +mod param_spec; +pub use param_spec::*; + pub mod functions; pub use functions::*; diff --git a/gstreamer/src/param_spec.rs b/gstreamer/src/param_spec.rs new file mode 100644 index 000000000..4c3496950 --- /dev/null +++ b/gstreamer/src/param_spec.rs @@ -0,0 +1,59 @@ +// Copyright (C) 2018 Sebastian Dröge +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use ffi; +use glib; +use glib::translate::*; + +pub struct ParamSpec(()); + +impl ParamSpec { + #[cfg(any(feature = "v1_14", feature = "dox"))] + pub fn array( + name: &str, + nick: &str, + blurb: &str, + element_spec: &glib::ParamSpec, + flags: glib::ParamFlags, + ) -> glib::ParamSpec { + unsafe { + from_glib_full(ffi::gst_param_spec_array( + name.to_glib_none().0, + nick.to_glib_none().0, + blurb.to_glib_none().0, + element_spec.to_glib_none().0, + flags.to_glib(), + )) + } + } + + pub fn fraction( + name: &str, + nick: &str, + blurb: &str, + min: ::Fraction, + max: ::Fraction, + default: ::Fraction, + flags: glib::ParamFlags, + ) -> glib::ParamSpec { + unsafe { + from_glib_full(ffi::gst_param_spec_fraction( + name.to_glib_none().0, + nick.to_glib_none().0, + blurb.to_glib_none().0, + *min.numer(), + *min.denom(), + *max.numer(), + *max.denom(), + *default.numer(), + *default.denom(), + flags.to_glib(), + )) + } + } +}