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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
use Error;
use Object;
use PluginDependencyFlags;
use ffi;
use glib::translate::*;
use glib_ffi;
use gobject_ffi;
use std;
use std::mem;
use std::ptr;
glib_wrapper! {
pub struct Plugin(Object<ffi::GstPlugin, ffi::GstPluginClass>): Object;
match fn {
get_type => || ffi::gst_plugin_get_type(),
}
}
impl Plugin {
pub fn add_dependency(&self, env_vars: &[&str], paths: &[&str], names: &[&str], flags: PluginDependencyFlags) {
unsafe {
ffi::gst_plugin_add_dependency(self.to_glib_none().0, env_vars.to_glib_none().0, paths.to_glib_none().0, names.to_glib_none().0, flags.to_glib());
}
}
pub fn add_dependency_simple<'a, 'b, 'c, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>, R: Into<Option<&'c str>>>(&self, env_vars: P, paths: Q, names: R, flags: PluginDependencyFlags) {
let env_vars = env_vars.into();
let env_vars = env_vars.to_glib_none();
let paths = paths.into();
let paths = paths.to_glib_none();
let names = names.into();
let names = names.to_glib_none();
unsafe {
ffi::gst_plugin_add_dependency_simple(self.to_glib_none().0, env_vars.0, paths.0, names.0, flags.to_glib());
}
}
pub fn get_description(&self) -> String {
unsafe {
from_glib_none(ffi::gst_plugin_get_description(self.to_glib_none().0))
}
}
pub fn get_filename(&self) -> Option<std::path::PathBuf> {
unsafe {
from_glib_none(ffi::gst_plugin_get_filename(self.to_glib_none().0))
}
}
pub fn get_license(&self) -> String {
unsafe {
from_glib_none(ffi::gst_plugin_get_license(self.to_glib_none().0))
}
}
pub fn get_origin(&self) -> String {
unsafe {
from_glib_none(ffi::gst_plugin_get_origin(self.to_glib_none().0))
}
}
pub fn get_package(&self) -> String {
unsafe {
from_glib_none(ffi::gst_plugin_get_package(self.to_glib_none().0))
}
}
pub fn get_release_date_string(&self) -> Option<String> {
unsafe {
from_glib_none(ffi::gst_plugin_get_release_date_string(self.to_glib_none().0))
}
}
pub fn get_source(&self) -> String {
unsafe {
from_glib_none(ffi::gst_plugin_get_source(self.to_glib_none().0))
}
}
pub fn get_version(&self) -> String {
unsafe {
from_glib_none(ffi::gst_plugin_get_version(self.to_glib_none().0))
}
}
pub fn is_loaded(&self) -> bool {
unsafe {
from_glib(ffi::gst_plugin_is_loaded(self.to_glib_none().0))
}
}
pub fn load(&self) -> Option<Plugin> {
unsafe {
from_glib_full(ffi::gst_plugin_load(self.to_glib_none().0))
}
}
pub fn load_by_name(name: &str) -> Option<Plugin> {
assert_initialized_main_thread!();
unsafe {
from_glib_full(ffi::gst_plugin_load_by_name(name.to_glib_none().0))
}
}
pub fn load_file<P: AsRef<std::path::Path>>(filename: P) -> Result<Plugin, Error> {
assert_initialized_main_thread!();
unsafe {
let mut error = ptr::null_mut();
let ret = ffi::gst_plugin_load_file(filename.as_ref().to_glib_none().0, &mut error);
if error.is_null() { Ok(from_glib_full(ret)) } else { Err(from_glib_full(error)) }
}
}
}
unsafe impl Send for Plugin {}
unsafe impl Sync for Plugin {}