gstreamer/auto/
plugin.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6use crate::{ffi, Object, PluginDependencyFlags, Structure};
7use glib::translate::*;
8
9glib::wrapper! {
10    #[doc(alias = "GstPlugin")]
11    pub struct Plugin(Object<ffi::GstPlugin, ffi::GstPluginClass>) @extends Object;
12
13    match fn {
14        type_ => || ffi::gst_plugin_get_type(),
15    }
16}
17
18impl Plugin {
19    #[doc(alias = "gst_plugin_add_dependency")]
20    pub fn add_dependency(
21        &self,
22        env_vars: &[&str],
23        paths: &[&str],
24        names: &[&str],
25        flags: PluginDependencyFlags,
26    ) {
27        unsafe {
28            ffi::gst_plugin_add_dependency(
29                self.to_glib_none().0,
30                env_vars.to_glib_none().0,
31                paths.to_glib_none().0,
32                names.to_glib_none().0,
33                flags.into_glib(),
34            );
35        }
36    }
37
38    #[doc(alias = "gst_plugin_add_dependency_simple")]
39    pub fn add_dependency_simple(
40        &self,
41        env_vars: Option<&str>,
42        paths: Option<&str>,
43        names: Option<&str>,
44        flags: PluginDependencyFlags,
45    ) {
46        unsafe {
47            ffi::gst_plugin_add_dependency_simple(
48                self.to_glib_none().0,
49                env_vars.to_glib_none().0,
50                paths.to_glib_none().0,
51                names.to_glib_none().0,
52                flags.into_glib(),
53            );
54        }
55    }
56
57    #[cfg(feature = "v1_24")]
58    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
59    #[doc(alias = "gst_plugin_add_status_error")]
60    pub fn add_status_error(&self, message: &str) {
61        unsafe {
62            ffi::gst_plugin_add_status_error(self.to_glib_none().0, message.to_glib_none().0);
63        }
64    }
65
66    #[cfg(feature = "v1_24")]
67    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
68    #[doc(alias = "gst_plugin_add_status_info")]
69    pub fn add_status_info(&self, message: &str) {
70        unsafe {
71            ffi::gst_plugin_add_status_info(self.to_glib_none().0, message.to_glib_none().0);
72        }
73    }
74
75    #[cfg(feature = "v1_24")]
76    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
77    #[doc(alias = "gst_plugin_add_status_warning")]
78    pub fn add_status_warning(&self, message: &str) {
79        unsafe {
80            ffi::gst_plugin_add_status_warning(self.to_glib_none().0, message.to_glib_none().0);
81        }
82    }
83
84    #[doc(alias = "gst_plugin_get_description")]
85    #[doc(alias = "get_description")]
86    pub fn description(&self) -> glib::GString {
87        unsafe { from_glib_none(ffi::gst_plugin_get_description(self.to_glib_none().0)) }
88    }
89
90    #[doc(alias = "gst_plugin_get_filename")]
91    #[doc(alias = "get_filename")]
92    pub fn filename(&self) -> Option<std::path::PathBuf> {
93        unsafe { from_glib_none(ffi::gst_plugin_get_filename(self.to_glib_none().0)) }
94    }
95
96    #[doc(alias = "gst_plugin_get_license")]
97    #[doc(alias = "get_license")]
98    pub fn license(&self) -> glib::GString {
99        unsafe { from_glib_none(ffi::gst_plugin_get_license(self.to_glib_none().0)) }
100    }
101
102    #[doc(alias = "gst_plugin_get_name")]
103    #[doc(alias = "get_name")]
104    pub fn plugin_name(&self) -> glib::GString {
105        unsafe { from_glib_none(ffi::gst_plugin_get_name(self.to_glib_none().0)) }
106    }
107
108    #[doc(alias = "gst_plugin_get_origin")]
109    #[doc(alias = "get_origin")]
110    pub fn origin(&self) -> glib::GString {
111        unsafe { from_glib_none(ffi::gst_plugin_get_origin(self.to_glib_none().0)) }
112    }
113
114    #[doc(alias = "gst_plugin_get_package")]
115    #[doc(alias = "get_package")]
116    pub fn package(&self) -> glib::GString {
117        unsafe { from_glib_none(ffi::gst_plugin_get_package(self.to_glib_none().0)) }
118    }
119
120    #[doc(alias = "gst_plugin_get_release_date_string")]
121    #[doc(alias = "get_release_date_string")]
122    pub fn release_date_string(&self) -> Option<glib::GString> {
123        unsafe {
124            from_glib_none(ffi::gst_plugin_get_release_date_string(
125                self.to_glib_none().0,
126            ))
127        }
128    }
129
130    #[doc(alias = "gst_plugin_get_source")]
131    #[doc(alias = "get_source")]
132    pub fn source(&self) -> glib::GString {
133        unsafe { from_glib_none(ffi::gst_plugin_get_source(self.to_glib_none().0)) }
134    }
135
136    #[cfg(feature = "v1_24")]
137    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
138    #[doc(alias = "gst_plugin_get_status_errors")]
139    #[doc(alias = "get_status_errors")]
140    pub fn status_errors(&self) -> Vec<glib::GString> {
141        unsafe {
142            FromGlibPtrContainer::from_glib_full(ffi::gst_plugin_get_status_errors(
143                self.to_glib_none().0,
144            ))
145        }
146    }
147
148    #[cfg(feature = "v1_24")]
149    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
150    #[doc(alias = "gst_plugin_get_status_infos")]
151    #[doc(alias = "get_status_infos")]
152    pub fn status_infos(&self) -> Vec<glib::GString> {
153        unsafe {
154            FromGlibPtrContainer::from_glib_full(ffi::gst_plugin_get_status_infos(
155                self.to_glib_none().0,
156            ))
157        }
158    }
159
160    #[cfg(feature = "v1_24")]
161    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
162    #[doc(alias = "gst_plugin_get_status_warnings")]
163    #[doc(alias = "get_status_warnings")]
164    pub fn status_warnings(&self) -> Vec<glib::GString> {
165        unsafe {
166            FromGlibPtrContainer::from_glib_full(ffi::gst_plugin_get_status_warnings(
167                self.to_glib_none().0,
168            ))
169        }
170    }
171
172    #[doc(alias = "gst_plugin_get_version")]
173    #[doc(alias = "get_version")]
174    pub fn version(&self) -> glib::GString {
175        unsafe { from_glib_none(ffi::gst_plugin_get_version(self.to_glib_none().0)) }
176    }
177
178    #[doc(alias = "gst_plugin_is_loaded")]
179    pub fn is_loaded(&self) -> bool {
180        unsafe { from_glib(ffi::gst_plugin_is_loaded(self.to_glib_none().0)) }
181    }
182
183    #[doc(alias = "gst_plugin_load")]
184    pub fn load(&self) -> Result<Plugin, glib::BoolError> {
185        unsafe {
186            Option::<_>::from_glib_full(ffi::gst_plugin_load(self.to_glib_none().0))
187                .ok_or_else(|| glib::bool_error!("Failed to load plugin"))
188        }
189    }
190
191    #[doc(alias = "gst_plugin_set_cache_data")]
192    pub fn set_cache_data(&self, cache_data: Structure) {
193        unsafe {
194            ffi::gst_plugin_set_cache_data(self.to_glib_none().0, cache_data.into_glib_ptr());
195        }
196    }
197
198    #[doc(alias = "gst_plugin_load_by_name")]
199    pub fn load_by_name(name: &str) -> Result<Plugin, glib::BoolError> {
200        assert_initialized_main_thread!();
201        unsafe {
202            Option::<_>::from_glib_full(ffi::gst_plugin_load_by_name(name.to_glib_none().0))
203                .ok_or_else(|| glib::bool_error!("Failed to load plugin"))
204        }
205    }
206
207    #[doc(alias = "gst_plugin_load_file")]
208    pub fn load_file(filename: impl AsRef<std::path::Path>) -> Result<Plugin, glib::Error> {
209        assert_initialized_main_thread!();
210        unsafe {
211            let mut error = std::ptr::null_mut();
212            let ret = ffi::gst_plugin_load_file(filename.as_ref().to_glib_none().0, &mut error);
213            if error.is_null() {
214                Ok(from_glib_full(ret))
215            } else {
216                Err(from_glib_full(error))
217            }
218        }
219    }
220}
221
222impl std::fmt::Display for Plugin {
223    #[inline]
224    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
225        f.write_str(&self.plugin_name())
226    }
227}
228
229unsafe impl Send for Plugin {}
230unsafe impl Sync for Plugin {}