gstreamer/auto/
functions.rs1use crate::{ffi, Bin, ClockTime, DebugGraphDetails, DebugLevel, Element, StackTraceFlags};
7use glib::{prelude::*, translate::*};
8
9#[doc(alias = "gst_debug_add_ring_buffer_logger")]
10pub fn debug_add_ring_buffer_logger(max_size_per_thread: u32, thread_timeout: u32) {
11 skip_assert_initialized!();
12 unsafe {
13 ffi::gst_debug_add_ring_buffer_logger(max_size_per_thread, thread_timeout);
14 }
15}
16
17#[doc(alias = "gst_debug_bin_to_dot_data")]
18pub fn debug_bin_to_dot_data(bin: &impl IsA<Bin>, details: DebugGraphDetails) -> glib::GString {
19 skip_assert_initialized!();
20 unsafe {
21 from_glib_full(ffi::gst_debug_bin_to_dot_data(
22 bin.as_ref().to_glib_none().0,
23 details.into_glib(),
24 ))
25 }
26}
27
28#[doc(alias = "gst_debug_bin_to_dot_file")]
29pub fn debug_bin_to_dot_file(
30 bin: &impl IsA<Bin>,
31 details: DebugGraphDetails,
32 file_name: impl AsRef<std::path::Path>,
33) {
34 skip_assert_initialized!();
35 unsafe {
36 ffi::gst_debug_bin_to_dot_file(
37 bin.as_ref().to_glib_none().0,
38 details.into_glib(),
39 file_name.as_ref().to_glib_none().0,
40 );
41 }
42}
43
44#[doc(alias = "gst_debug_bin_to_dot_file_with_ts")]
45pub fn debug_bin_to_dot_file_with_ts(
46 bin: &impl IsA<Bin>,
47 details: DebugGraphDetails,
48 file_name: impl AsRef<std::path::Path>,
49) {
50 skip_assert_initialized!();
51 unsafe {
52 ffi::gst_debug_bin_to_dot_file_with_ts(
53 bin.as_ref().to_glib_none().0,
54 details.into_glib(),
55 file_name.as_ref().to_glib_none().0,
56 );
57 }
58}
59
60#[doc(alias = "gst_debug_get_default_threshold")]
61pub fn debug_get_default_threshold() -> DebugLevel {
62 skip_assert_initialized!();
63 unsafe { from_glib(ffi::gst_debug_get_default_threshold()) }
64}
65
66#[doc(alias = "gst_debug_get_stack_trace")]
67pub fn debug_get_stack_trace(flags: StackTraceFlags) -> Result<glib::GString, glib::BoolError> {
68 skip_assert_initialized!();
69 unsafe {
70 Option::<_>::from_glib_full(ffi::gst_debug_get_stack_trace(flags.into_glib()))
71 .ok_or_else(|| glib::bool_error!("Failed to get stack trace"))
72 }
73}
74
75#[doc(alias = "gst_debug_is_active")]
76pub fn debug_is_active() -> bool {
77 skip_assert_initialized!();
78 unsafe { from_glib(ffi::gst_debug_is_active()) }
79}
80
81#[doc(alias = "gst_debug_is_colored")]
82pub fn debug_is_colored() -> bool {
83 skip_assert_initialized!();
84 unsafe { from_glib(ffi::gst_debug_is_colored()) }
85}
86
87#[doc(alias = "gst_debug_print_stack_trace")]
88pub fn debug_print_stack_trace() {
89 skip_assert_initialized!();
90 unsafe {
91 ffi::gst_debug_print_stack_trace();
92 }
93}
94
95#[doc(alias = "gst_debug_remove_ring_buffer_logger")]
96pub fn debug_remove_ring_buffer_logger() {
97 skip_assert_initialized!();
98 unsafe {
99 ffi::gst_debug_remove_ring_buffer_logger();
100 }
101}
102
103#[doc(alias = "gst_debug_ring_buffer_logger_get_logs")]
104pub fn debug_ring_buffer_logger_get_logs() -> Vec<glib::GString> {
105 skip_assert_initialized!();
106 unsafe { FromGlibPtrContainer::from_glib_full(ffi::gst_debug_ring_buffer_logger_get_logs()) }
107}
108
109#[doc(alias = "gst_debug_set_active")]
110pub fn debug_set_active(active: bool) {
111 skip_assert_initialized!();
112 unsafe {
113 ffi::gst_debug_set_active(active.into_glib());
114 }
115}
116
117#[doc(alias = "gst_debug_set_colored")]
118pub fn debug_set_colored(colored: bool) {
119 skip_assert_initialized!();
120 unsafe {
121 ffi::gst_debug_set_colored(colored.into_glib());
122 }
123}
124
125#[doc(alias = "gst_debug_set_default_threshold")]
126pub fn debug_set_default_threshold(level: DebugLevel) {
127 skip_assert_initialized!();
128 unsafe {
129 ffi::gst_debug_set_default_threshold(level.into_glib());
130 }
131}
132
133#[doc(alias = "gst_debug_set_threshold_for_name")]
134pub fn debug_set_threshold_for_name(name: &str, level: DebugLevel) {
135 skip_assert_initialized!();
136 unsafe {
137 ffi::gst_debug_set_threshold_for_name(name.to_glib_none().0, level.into_glib());
138 }
139}
140
141#[doc(alias = "gst_debug_set_threshold_from_string")]
142pub fn debug_set_threshold_from_string(list: &str, reset: bool) {
143 skip_assert_initialized!();
144 unsafe {
145 ffi::gst_debug_set_threshold_from_string(list.to_glib_none().0, reset.into_glib());
146 }
147}
148
149#[doc(alias = "gst_debug_unset_threshold_for_name")]
150pub fn debug_unset_threshold_for_name(name: &str) {
151 skip_assert_initialized!();
152 unsafe {
153 ffi::gst_debug_unset_threshold_for_name(name.to_glib_none().0);
154 }
155}
156
157#[doc(alias = "gst_get_main_executable_path")]
158#[doc(alias = "get_main_executable_path")]
159pub fn main_executable_path() -> Result<glib::GString, glib::BoolError> {
160 assert_initialized_main_thread!();
161 unsafe {
162 Option::<_>::from_glib_none(ffi::gst_get_main_executable_path())
163 .ok_or_else(|| glib::bool_error!("Failed to get main executable path"))
164 }
165}
166
167#[doc(alias = "gst_parse_bin_from_description")]
168pub fn parse_bin_from_description(
169 bin_description: &str,
170 ghost_unlinked_pads: bool,
171) -> Result<Bin, glib::Error> {
172 assert_initialized_main_thread!();
173 unsafe {
174 let mut error = std::ptr::null_mut();
175 let ret = ffi::gst_parse_bin_from_description(
176 bin_description.to_glib_none().0,
177 ghost_unlinked_pads.into_glib(),
178 &mut error,
179 );
180 if error.is_null() {
181 Ok(from_glib_none(ret))
182 } else {
183 Err(from_glib_full(error))
184 }
185 }
186}
187
188#[doc(alias = "gst_parse_launch")]
189pub fn parse_launch(pipeline_description: &str) -> Result<Element, glib::Error> {
190 assert_initialized_main_thread!();
191 unsafe {
192 let mut error = std::ptr::null_mut();
193 let ret = ffi::gst_parse_launch(pipeline_description.to_glib_none().0, &mut error);
194 if error.is_null() {
195 Ok(from_glib_none(ret))
196 } else {
197 Err(from_glib_full(error))
198 }
199 }
200}
201
202#[doc(alias = "gst_parse_launchv")]
203pub fn parse_launchv(argv: &[&str]) -> Result<Element, glib::Error> {
204 assert_initialized_main_thread!();
205 unsafe {
206 let mut error = std::ptr::null_mut();
207 let ret = ffi::gst_parse_launchv(argv.to_glib_none().0, &mut error);
208 if error.is_null() {
209 Ok(from_glib_none(ret))
210 } else {
211 Err(from_glib_full(error))
212 }
213 }
214}
215
216#[doc(alias = "gst_update_registry")]
217pub fn update_registry() -> Result<(), glib::error::BoolError> {
218 assert_initialized_main_thread!();
219 unsafe {
220 glib::result_from_gboolean!(ffi::gst_update_registry(), "Failed to update the registry")
221 }
222}
223
224#[doc(alias = "gst_util_get_timestamp")]
225pub fn util_get_timestamp() -> ClockTime {
226 skip_assert_initialized!();
227 unsafe { try_from_glib(ffi::gst_util_get_timestamp()).expect("mandatory glib value is None") }
228}
229
230#[doc(alias = "gst_version")]
231pub fn version() -> (u32, u32, u32, u32) {
232 skip_assert_initialized!();
233 unsafe {
234 let mut major = std::mem::MaybeUninit::uninit();
235 let mut minor = std::mem::MaybeUninit::uninit();
236 let mut micro = std::mem::MaybeUninit::uninit();
237 let mut nano = std::mem::MaybeUninit::uninit();
238 ffi::gst_version(
239 major.as_mut_ptr(),
240 minor.as_mut_ptr(),
241 micro.as_mut_ptr(),
242 nano.as_mut_ptr(),
243 );
244 (
245 major.assume_init(),
246 minor.assume_init(),
247 micro.assume_init(),
248 nano.assume_init(),
249 )
250 }
251}
252
253#[doc(alias = "gst_version_string")]
254pub fn version_string() -> glib::GString {
255 skip_assert_initialized!();
256 unsafe { from_glib_full(ffi::gst_version_string()) }
257}