1// Take a look at the license at the top of the repository in the LICENSE file.
23#![cfg_attr(docsrs, feature(doc_cfg))]
4#![allow(clippy::missing_safety_doc)]
5#![allow(clippy::manual_c_str_literals)]
6#![doc = include_str!("../README.md")]
78use std::sync::Once;
910pub use glib;
11pub use gst;
12pub use gstreamer_pbutils_sys as ffi;
1314static PBUTILS_INIT: Once = Once::new();
1516macro_rules! assert_initialized_main_thread {
17 () => {
18if !gst::INITIALIZED.load(std::sync::atomic::Ordering::SeqCst) {
19 gst::assert_initialized();
20 }
21crate::PBUTILS_INIT.call_once(|| {
22unsafe { crate::ffi::gst_pb_utils_init() };
23 });
24 };
25}
2627macro_rules! skip_assert_initialized {
28 () => {};
29}
3031#[allow(clippy::needless_borrow)]
32#[allow(unused_imports)]
33mod auto;
34pub use crate::auto::*;
3536#[cfg(feature = "v1_20")]
37pub mod element_properties;
38#[cfg(feature = "v1_20")]
39pub use crate::element_properties::{ElementProperties, ElementPropertiesMapItem};
4041#[cfg(feature = "serde")]
42mod flag_serde;
4344mod discoverer;
45pub use crate::discoverer::*;
4647mod discoverer_audio_info;
48mod discoverer_container_info;
49pub mod discoverer_stream_info;
50mod discoverer_subtitle_info;
51mod discoverer_video_info;
52pub mod missing_plugins;
53pub use missing_plugins::MissingPluginMessage;
5455pub mod encoding_profile;
5657pub mod functions;
58pub use crate::functions::*;
5960pub mod subclass;
6162pub mod audio_visualizer;
6364// Re-export all the traits in a prelude module, so that applications
65// can always "use gst_pbutils::prelude::*" without getting conflicts
66pub mod prelude {
67#[doc(hidden)]
68pub use gst::prelude::*;
6970pub use crate::{
71 audio_visualizer::*,
72 auto::traits::*,
73 discoverer_stream_info::DiscovererStreamInfoExtManual,
74 encoding_profile::{
75 EncodingProfileBuilder, EncodingProfileExtManual, EncodingProfileHasRestrictionGetter,
76 },
77 functions::CodecTag,
78 };
79}