Skip to main content

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;
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
72// Re-export all the traits in a prelude module, so that applications
73// can always "use gst_pbutils::prelude::*" without getting conflicts
74pub 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}