gstreamer_pbutils/
lib.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3#![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;
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;
54
55pub mod encoding_profile;
56
57pub mod functions;
58pub use crate::functions::*;
59
60pub mod subclass;
61
62pub mod audio_visualizer;
63
64// 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)]
68    pub use gst::prelude::*;
69
70    pub 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}