1#![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")]
7
8use std::sync::Once;
9
10pub use glib;
11pub use gst;
12pub use gstreamer_pbutils_sys as ffi;
13
14static PBUTILS_INIT: Once = Once::new();
15
16macro_rules! assert_initialized_main_thread {
17 () => {
18 if !gst::INITIALIZED.load(std::sync::atomic::Ordering::SeqCst) {
19 gst::assert_initialized();
20 }
21 crate::PBUTILS_INIT.call_once(|| {
22 unsafe { crate::ffi::gst_pb_utils_init() };
23 });
24 };
25}
26
27macro_rules! skip_assert_initialized {
28 () => {};
29}
30
31#[allow(clippy::needless_borrow)]
32#[allow(unused_imports)]
33mod auto;
34pub use crate::auto::*;
35
36#[cfg(feature = "v1_20")]
37pub mod element_properties;
38#[cfg(feature = "v1_20")]
39pub use crate::element_properties::{ElementProperties, ElementPropertiesMapItem};
40
41#[cfg(feature = "serde")]
42mod flag_serde;
43
44mod discoverer;
45pub use crate::discoverer::*;
46
47mod discoverer_audio_info;
48#[cfg(feature = "v1_30")]
49pub use crate::discoverer_audio_info::DiscovererAudioInfoBuilder;
50mod discoverer_container_info;
51#[cfg(feature = "v1_30")]
52pub use crate::discoverer_container_info::DiscovererContainerInfoBuilder;
53pub mod discoverer_stream_info;
54mod discoverer_subtitle_info;
55#[cfg(feature = "v1_30")]
56pub use crate::discoverer_subtitle_info::DiscovererSubtitleInfoBuilder;
57mod discoverer_video_info;
58#[cfg(feature = "v1_30")]
59pub use crate::discoverer_video_info::DiscovererVideoInfoBuilder;
60pub mod missing_plugins;
61pub use missing_plugins::MissingPluginMessage;
62
63pub mod encoding_profile;
64
65pub mod functions;
66pub use crate::functions::*;
67
68pub mod subclass;
69
70pub mod audio_visualizer;
71
72pub mod prelude {
75 #[doc(hidden)]
76 pub use gst::prelude::*;
77
78 pub use crate::{
79 audio_visualizer::*,
80 auto::traits::*,
81 discoverer_stream_info::DiscovererStreamInfoExtManual,
82 encoding_profile::{
83 EncodingProfileBuilder, EncodingProfileExtManual, EncodingProfileHasRestrictionGetter,
84 },
85 functions::CodecTag,
86 };
87}