2018-04-23 17:34:22 +00:00
|
|
|
// This file was generated by gir (https://github.com/gtk-rs/gir)
|
|
|
|
// from gir-files (https://github.com/gtk-rs/gir-files)
|
2017-06-25 08:26:16 +00:00
|
|
|
// DO NOT EDIT
|
|
|
|
|
2019-06-18 10:12:00 +00:00
|
|
|
use glib;
|
|
|
|
use glib::object::IsA;
|
|
|
|
use glib::translate::*;
|
|
|
|
use glib::GString;
|
|
|
|
use gst_sys;
|
|
|
|
use std;
|
|
|
|
use std::mem;
|
|
|
|
use std::ptr;
|
2017-06-25 08:26:16 +00:00
|
|
|
use Bin;
|
|
|
|
use ClockTime;
|
2017-08-17 12:31:00 +00:00
|
|
|
use DebugGraphDetails;
|
|
|
|
use DebugLevel;
|
2017-06-25 08:26:16 +00:00
|
|
|
use Element;
|
2017-10-01 13:52:15 +00:00
|
|
|
#[cfg(any(feature = "v1_12", feature = "dox"))]
|
2017-08-17 12:31:00 +00:00
|
|
|
use StackTraceFlags;
|
2017-06-25 08:26:16 +00:00
|
|
|
|
2018-03-15 08:39:12 +00:00
|
|
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
|
|
|
pub fn debug_add_ring_buffer_logger(max_size_per_thread: u32, thread_timeout: u32) {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2018-03-15 08:39:12 +00:00
|
|
|
unsafe {
|
2019-03-19 07:40:05 +00:00
|
|
|
gst_sys::gst_debug_add_ring_buffer_logger(max_size_per_thread, thread_timeout);
|
2018-03-15 08:39:12 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-12-09 16:06:12 +00:00
|
|
|
pub fn debug_bin_to_dot_data<P: IsA<Bin>>(bin: &P, details: DebugGraphDetails) -> GString {
|
2017-08-17 12:31:00 +00:00
|
|
|
skip_assert_initialized!();
|
|
|
|
unsafe {
|
2019-06-18 10:12:00 +00:00
|
|
|
from_glib_full(gst_sys::gst_debug_bin_to_dot_data(
|
|
|
|
bin.as_ref().to_glib_none().0,
|
|
|
|
details.to_glib(),
|
|
|
|
))
|
2017-08-17 12:31:00 +00:00
|
|
|
}
|
|
|
|
}
|
2017-06-25 08:26:16 +00:00
|
|
|
|
2019-06-18 10:12:00 +00:00
|
|
|
pub fn debug_bin_to_dot_file<P: IsA<Bin>, Q: AsRef<std::path::Path>>(
|
|
|
|
bin: &P,
|
|
|
|
details: DebugGraphDetails,
|
|
|
|
file_name: Q,
|
|
|
|
) {
|
2017-08-17 12:31:00 +00:00
|
|
|
skip_assert_initialized!();
|
|
|
|
unsafe {
|
2019-06-18 10:12:00 +00:00
|
|
|
gst_sys::gst_debug_bin_to_dot_file(
|
|
|
|
bin.as_ref().to_glib_none().0,
|
|
|
|
details.to_glib(),
|
|
|
|
file_name.as_ref().to_glib_none().0,
|
|
|
|
);
|
2017-08-17 12:31:00 +00:00
|
|
|
}
|
|
|
|
}
|
2017-06-25 08:26:16 +00:00
|
|
|
|
2019-06-18 10:12:00 +00:00
|
|
|
pub fn debug_bin_to_dot_file_with_ts<P: IsA<Bin>, Q: AsRef<std::path::Path>>(
|
|
|
|
bin: &P,
|
|
|
|
details: DebugGraphDetails,
|
|
|
|
file_name: Q,
|
|
|
|
) {
|
2017-08-17 12:31:00 +00:00
|
|
|
skip_assert_initialized!();
|
|
|
|
unsafe {
|
2019-06-18 10:12:00 +00:00
|
|
|
gst_sys::gst_debug_bin_to_dot_file_with_ts(
|
|
|
|
bin.as_ref().to_glib_none().0,
|
|
|
|
details.to_glib(),
|
|
|
|
file_name.as_ref().to_glib_none().0,
|
|
|
|
);
|
2017-08-17 12:31:00 +00:00
|
|
|
}
|
|
|
|
}
|
2017-06-25 08:26:16 +00:00
|
|
|
|
2017-08-17 12:31:00 +00:00
|
|
|
pub fn debug_get_default_threshold() -> DebugLevel {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2019-06-18 10:12:00 +00:00
|
|
|
unsafe { from_glib(gst_sys::gst_debug_get_default_threshold()) }
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
|
2017-10-01 13:52:15 +00:00
|
|
|
#[cfg(any(feature = "v1_12", feature = "dox"))]
|
2019-12-17 19:00:42 +00:00
|
|
|
pub fn debug_get_stack_trace(flags: StackTraceFlags) -> Result<GString, glib::BoolError> {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2019-12-17 19:00:42 +00:00
|
|
|
unsafe {
|
|
|
|
Option::<_>::from_glib_full(gst_sys::gst_debug_get_stack_trace(flags.to_glib()))
|
|
|
|
.ok_or_else(|| glib_bool_error!("Failed to get stack trace"))
|
|
|
|
}
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn debug_is_active() -> bool {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2019-06-18 10:12:00 +00:00
|
|
|
unsafe { from_glib(gst_sys::gst_debug_is_active()) }
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn debug_is_colored() -> bool {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2019-06-18 10:12:00 +00:00
|
|
|
unsafe { from_glib(gst_sys::gst_debug_is_colored()) }
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn debug_print_stack_trace() {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2017-06-25 08:26:16 +00:00
|
|
|
unsafe {
|
2019-03-19 07:40:05 +00:00
|
|
|
gst_sys::gst_debug_print_stack_trace();
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-03-15 08:39:12 +00:00
|
|
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
|
|
|
pub fn debug_remove_ring_buffer_logger() {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2018-03-15 08:39:12 +00:00
|
|
|
unsafe {
|
2019-03-19 07:40:05 +00:00
|
|
|
gst_sys::gst_debug_remove_ring_buffer_logger();
|
2018-03-15 08:39:12 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
2018-12-09 16:06:12 +00:00
|
|
|
pub fn debug_ring_buffer_logger_get_logs() -> Vec<GString> {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2018-03-15 08:39:12 +00:00
|
|
|
unsafe {
|
2019-03-19 07:40:05 +00:00
|
|
|
FromGlibPtrContainer::from_glib_full(gst_sys::gst_debug_ring_buffer_logger_get_logs())
|
2018-03-15 08:39:12 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-06-25 08:26:16 +00:00
|
|
|
pub fn debug_set_active(active: bool) {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2017-06-25 08:26:16 +00:00
|
|
|
unsafe {
|
2019-03-19 07:40:05 +00:00
|
|
|
gst_sys::gst_debug_set_active(active.to_glib());
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn debug_set_colored(colored: bool) {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2017-06-25 08:26:16 +00:00
|
|
|
unsafe {
|
2019-03-19 07:40:05 +00:00
|
|
|
gst_sys::gst_debug_set_colored(colored.to_glib());
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-08-17 12:31:00 +00:00
|
|
|
pub fn debug_set_default_threshold(level: DebugLevel) {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2017-06-25 08:26:16 +00:00
|
|
|
unsafe {
|
2019-03-19 07:40:05 +00:00
|
|
|
gst_sys::gst_debug_set_default_threshold(level.to_glib());
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-08-17 12:31:00 +00:00
|
|
|
pub fn debug_set_threshold_for_name(name: &str, level: DebugLevel) {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2017-06-25 08:26:16 +00:00
|
|
|
unsafe {
|
2019-03-19 07:40:05 +00:00
|
|
|
gst_sys::gst_debug_set_threshold_for_name(name.to_glib_none().0, level.to_glib());
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-08-17 12:31:00 +00:00
|
|
|
pub fn debug_set_threshold_from_string(list: &str, reset: bool) {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2017-06-25 08:26:16 +00:00
|
|
|
unsafe {
|
2019-03-19 07:40:05 +00:00
|
|
|
gst_sys::gst_debug_set_threshold_from_string(list.to_glib_none().0, reset.to_glib());
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-08-17 12:31:00 +00:00
|
|
|
pub fn debug_unset_threshold_for_name(name: &str) {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2017-06-25 08:26:16 +00:00
|
|
|
unsafe {
|
2019-03-19 07:40:05 +00:00
|
|
|
gst_sys::gst_debug_unset_threshold_for_name(name.to_glib_none().0);
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-03-15 08:39:12 +00:00
|
|
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
2019-12-17 19:00:42 +00:00
|
|
|
pub fn get_main_executable_path() -> Result<GString, glib::BoolError> {
|
2018-03-15 08:39:12 +00:00
|
|
|
assert_initialized_main_thread!();
|
2019-12-17 19:00:42 +00:00
|
|
|
unsafe {
|
|
|
|
Option::<_>::from_glib_none(gst_sys::gst_get_main_executable_path())
|
|
|
|
.ok_or_else(|| glib_bool_error!("Failed to get main executable path"))
|
|
|
|
}
|
2018-03-15 08:39:12 +00:00
|
|
|
}
|
|
|
|
|
2019-06-18 10:12:00 +00:00
|
|
|
pub fn parse_bin_from_description(
|
|
|
|
bin_description: &str,
|
|
|
|
ghost_unlinked_pads: bool,
|
2019-11-10 16:55:02 +00:00
|
|
|
) -> Result<Bin, glib::Error> {
|
2017-07-10 09:36:15 +00:00
|
|
|
assert_initialized_main_thread!();
|
2017-06-25 08:26:16 +00:00
|
|
|
unsafe {
|
|
|
|
let mut error = ptr::null_mut();
|
2019-06-18 10:12:00 +00:00
|
|
|
let ret = gst_sys::gst_parse_bin_from_description(
|
|
|
|
bin_description.to_glib_none().0,
|
|
|
|
ghost_unlinked_pads.to_glib(),
|
|
|
|
&mut error,
|
|
|
|
);
|
|
|
|
if error.is_null() {
|
|
|
|
Ok(from_glib_none(ret))
|
|
|
|
} else {
|
|
|
|
Err(from_glib_full(error))
|
|
|
|
}
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-11-10 16:55:02 +00:00
|
|
|
pub fn parse_launch(pipeline_description: &str) -> Result<Element, glib::Error> {
|
2017-07-10 09:36:15 +00:00
|
|
|
assert_initialized_main_thread!();
|
2017-06-25 08:26:16 +00:00
|
|
|
unsafe {
|
|
|
|
let mut error = ptr::null_mut();
|
2019-03-19 07:40:05 +00:00
|
|
|
let ret = gst_sys::gst_parse_launch(pipeline_description.to_glib_none().0, &mut error);
|
2019-06-18 10:12:00 +00:00
|
|
|
if error.is_null() {
|
|
|
|
Ok(from_glib_none(ret))
|
|
|
|
} else {
|
|
|
|
Err(from_glib_full(error))
|
|
|
|
}
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-11-10 16:55:02 +00:00
|
|
|
pub fn parse_launchv(argv: &[&str]) -> Result<Element, glib::Error> {
|
2017-07-10 09:36:15 +00:00
|
|
|
assert_initialized_main_thread!();
|
2017-06-25 08:26:16 +00:00
|
|
|
unsafe {
|
|
|
|
let mut error = ptr::null_mut();
|
2019-03-19 07:40:05 +00:00
|
|
|
let ret = gst_sys::gst_parse_launchv(argv.to_glib_none().0, &mut error);
|
2019-06-18 10:12:00 +00:00
|
|
|
if error.is_null() {
|
|
|
|
Ok(from_glib_none(ret))
|
|
|
|
} else {
|
|
|
|
Err(from_glib_full(error))
|
|
|
|
}
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-30 16:51:41 +00:00
|
|
|
//#[cfg(any(feature = "v1_18", feature = "dox"))]
|
|
|
|
//pub fn tracing_get_active_tracers() -> /*Ignored*/Vec<Tracer> {
|
|
|
|
// unsafe { TODO: call gst_sys:gst_tracing_get_active_tracers() }
|
|
|
|
//}
|
|
|
|
|
|
|
|
//pub fn tracing_register_hook<P: FnOnce() + Send + Sync + 'static>(tracer: /*Ignored*/&Tracer, detail: &str, func: P) {
|
|
|
|
// unsafe { TODO: call gst_sys:gst_tracing_register_hook() }
|
|
|
|
//}
|
|
|
|
|
2019-01-16 20:23:56 +00:00
|
|
|
pub fn update_registry() -> Result<(), glib::error::BoolError> {
|
2017-07-10 09:36:15 +00:00
|
|
|
assert_initialized_main_thread!();
|
2017-06-25 08:26:16 +00:00
|
|
|
unsafe {
|
2019-06-18 10:12:00 +00:00
|
|
|
glib_result_from_gboolean!(
|
|
|
|
gst_sys::gst_update_registry(),
|
|
|
|
"Failed to update the registry"
|
|
|
|
)
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn util_get_timestamp() -> ClockTime {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2019-06-18 10:12:00 +00:00
|
|
|
unsafe { from_glib(gst_sys::gst_util_get_timestamp()) }
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
pub fn version() -> (u32, u32, u32, u32) {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2017-06-25 08:26:16 +00:00
|
|
|
unsafe {
|
2019-07-10 08:21:28 +00:00
|
|
|
let mut major = mem::MaybeUninit::uninit();
|
|
|
|
let mut minor = mem::MaybeUninit::uninit();
|
|
|
|
let mut micro = mem::MaybeUninit::uninit();
|
|
|
|
let mut nano = mem::MaybeUninit::uninit();
|
|
|
|
gst_sys::gst_version(
|
|
|
|
major.as_mut_ptr(),
|
|
|
|
minor.as_mut_ptr(),
|
|
|
|
micro.as_mut_ptr(),
|
|
|
|
nano.as_mut_ptr(),
|
|
|
|
);
|
|
|
|
let major = major.assume_init();
|
|
|
|
let minor = minor.assume_init();
|
|
|
|
let micro = micro.assume_init();
|
|
|
|
let nano = nano.assume_init();
|
2017-06-25 08:26:16 +00:00
|
|
|
(major, minor, micro, nano)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-12-09 16:06:12 +00:00
|
|
|
pub fn version_string() -> GString {
|
2020-06-01 07:21:05 +00:00
|
|
|
skip_assert_initialized!();
|
2019-06-18 10:12:00 +00:00
|
|
|
unsafe { from_glib_full(gst_sys::gst_version_string()) }
|
2017-06-25 08:26:16 +00:00
|
|
|
}
|