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
8pub use glib;
9pub use gst;
10pub use gst_base;
11pub use gstreamer_video_sys as ffi;
12
13macro_rules! assert_initialized_main_thread {
14 () => {
15 if !gst::INITIALIZED.load(std::sync::atomic::Ordering::SeqCst) {
16 gst::assert_initialized();
17 }
18 };
19}
20
21macro_rules! skip_assert_initialized {
22 () => {};
23}
24
25#[allow(clippy::needless_borrow)]
26#[allow(unused_imports)]
27mod auto;
28pub use crate::auto::*;
29
30mod enums;
31
32#[cfg(feature = "serde")]
33mod flag_serde;
34
35mod caps;
36pub use crate::caps::VideoCapsBuilder;
37
38mod caps_features;
39#[cfg(feature = "v1_16")]
40#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
41pub use crate::caps_features::{CAPS_FEATURE_FORMAT_INTERLACED, CAPS_FEATURES_FORMAT_INTERLACED};
42pub use crate::caps_features::{
43 CAPS_FEATURE_META_GST_VIDEO_AFFINE_TRANSFORMATION_META,
44 CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META, CAPS_FEATURE_META_GST_VIDEO_META,
45 CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION,
46 CAPS_FEATURES_META_GST_VIDEO_AFFINE_TRANSFORMATION_META,
47 CAPS_FEATURES_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META, CAPS_FEATURES_META_GST_VIDEO_META,
48 CAPS_FEATURES_META_GST_VIDEO_OVERLAY_COMPOSITION,
49};
50mod video_color_matrix;
51mod video_format;
52pub use crate::video_format::*;
53mod video_format_info;
54pub use crate::video_format_info::*;
55mod video_info;
56pub use crate::video_info::*;
57#[cfg(feature = "v1_24")]
58#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
59mod video_info_dma_drm;
60#[cfg(feature = "v1_24")]
61#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
62pub use crate::video_info_dma_drm::*;
63pub mod video_frame;
64pub use crate::video_frame::{VideoFrame, VideoFrameExt, VideoFrameRef};
65mod video_overlay;
66pub use crate::video_overlay::is_video_overlay_prepare_window_handle_message;
67
68pub mod video_event;
69pub use crate::video_event::{
70 DownstreamForceKeyUnitEvent, ForceKeyUnitEvent, NavigationEvent, StillFrameEvent,
71 UpstreamForceKeyUnitEvent,
72};
73
74pub mod video_message;
75pub use crate::video_message::{NavigationEventMessage, NavigationMessage};
76
77mod functions;
78pub use crate::functions::*;
79mod video_rectangle;
80pub use crate::video_rectangle::*;
81pub mod video_overlay_composition;
82pub use crate::video_overlay_composition::{
83 VideoOverlayComposition, VideoOverlayCompositionRef, VideoOverlayRectangle,
84 VideoOverlayRectangleRef,
85};
86pub mod video_meta;
87#[cfg(feature = "v1_16")]
88#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
89pub use crate::video_meta::VideoCaptionMeta;
90#[cfg(feature = "v1_18")]
91#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
92pub use crate::video_meta::{VideoAFDMeta, VideoBarMeta};
93pub use crate::video_meta::{
94 VideoAffineTransformationMeta, VideoCropMeta, VideoMeta, VideoOverlayCompositionMeta,
95 VideoRegionOfInterestMeta,
96};
97#[cfg(feature = "v1_30")]
98#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
99mod video_dsc;
100#[cfg(feature = "v1_30")]
101#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
102pub use crate::video_dsc::{
103 H274DigitallySignedContentInitialization, H274DigitallySignedContentSelection,
104 H274DigitallySignedContentVerification,
105};
106#[cfg(feature = "v1_30")]
107#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
108pub use crate::video_meta::{
109 VideoDSCInitializationMeta, VideoDSCSelectionMeta, VideoDSCVerificationMeta,
110};
111mod video_time_code;
112pub use crate::video_time_code::{ValidVideoTimeCode, VideoTimeCode, VideoTimeCodeMeta};
113mod video_time_code_interval;
114pub use crate::video_time_code_interval::VideoTimeCodeInterval;
115mod video_buffer_pool;
116pub use crate::video_buffer_pool::{
117 BUFFER_POOL_OPTION_VIDEO_AFFINE_TRANSFORMATION_META, BUFFER_POOL_OPTION_VIDEO_ALIGNMENT,
118 BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META, BUFFER_POOL_OPTION_VIDEO_META, VideoAlignment,
119 VideoBufferPoolConfig,
120};
121pub mod video_converter;
122pub use crate::video_converter::{VideoConverter, VideoConverterConfig};
123
124mod video_codec_frame;
125mod video_decoder;
126mod video_encoder;
127mod video_filter;
128pub use crate::video_codec_frame::VideoCodecFrame;
129pub mod video_codec_state;
130pub use crate::video_codec_state::{VideoCodecState, VideoCodecStateContext};
131mod utils;
132
133#[cfg(feature = "v1_18")]
134#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
135mod video_hdr;
136#[cfg(feature = "v1_18")]
137#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
138pub use crate::video_hdr::*;
139
140mod color_balance_channel;
141
142#[cfg(feature = "v1_16")]
143#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
144mod video_aggregator;
145#[cfg(feature = "v1_16")]
146#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
147mod video_aggregator_convert_pad;
148#[cfg(feature = "v1_16")]
149#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
150mod video_aggregator_pad;
151
152#[cfg(feature = "v1_16")]
153#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
154mod video_vbi;
155#[cfg(feature = "v1_16")]
156#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
157pub use video_vbi::*;
158
159#[cfg(feature = "v1_16")]
160#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
161mod video_vbi_encoder;
162#[cfg(feature = "v1_16")]
163#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
164pub use video_vbi_encoder::*;
165
166#[cfg(feature = "v1_16")]
167#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
168mod video_vbi_parser;
169#[cfg(feature = "v1_16")]
170#[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
171pub use video_vbi_parser::*;
172
173pub const VIDEO_ENCODER_FLOW_NEED_DATA: gst::FlowSuccess = gst::FlowSuccess::CustomSuccess;
174pub const VIDEO_DECODER_FLOW_NEED_DATA: gst::FlowSuccess = gst::FlowSuccess::CustomSuccess;
175
176pub mod prelude {
179 #[doc(hidden)]
180 pub use gst_base::prelude::*;
181
182 pub use crate::VideoFrameExt;
183 #[cfg(feature = "v1_16")]
184 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
185 pub use crate::video_aggregator::VideoAggregatorExtManual;
186 #[cfg(feature = "v1_16")]
187 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
188 pub use crate::video_aggregator_convert_pad::VideoAggregatorConvertPadExtManual;
189 #[cfg(feature = "v1_16")]
190 #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
191 pub use crate::video_aggregator_pad::VideoAggregatorPadExtManual;
192 pub use crate::{
193 auto::traits::*, video_buffer_pool::VideoBufferPoolConfig,
194 video_decoder::VideoDecoderExtManual, video_encoder::VideoEncoderExtManual,
195 video_filter::VideoFilterExtManual, video_format::VideoFormatIteratorExt,
196 video_frame::VideoBufferExt, video_overlay::VideoOverlayExtManual,
197 };
198}
199
200pub mod subclass;