Skip to main content

gstreamer_video_sys/
lib.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
7#![allow(
8    clippy::approx_constant,
9    clippy::type_complexity,
10    clippy::unreadable_literal,
11    clippy::upper_case_acronyms
12)]
13#![cfg_attr(docsrs, feature(doc_cfg))]
14
15use glib_sys as glib;
16use gobject_sys as gobject;
17use gstreamer_base_sys as gst_base;
18use gstreamer_sys as gst;
19
20#[allow(unused_imports)]
21use libc::{FILE, intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t};
22#[cfg(unix)]
23#[allow(unused_imports)]
24use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
25#[allow(unused_imports)]
26use std::ffi::{
27    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
28};
29
30#[allow(unused_imports)]
31use glib::{GType, gboolean, gconstpointer, gpointer};
32
33// Enums
34pub type GstAncillaryMetaField = c_int;
35pub const GST_ANCILLARY_META_FIELD_PROGRESSIVE: GstAncillaryMetaField = 0;
36pub const GST_ANCILLARY_META_FIELD_INTERLACED_FIRST: GstAncillaryMetaField = 16;
37pub const GST_ANCILLARY_META_FIELD_INTERLACED_SECOND: GstAncillaryMetaField = 17;
38
39pub type GstColorBalanceType = c_int;
40pub const GST_COLOR_BALANCE_HARDWARE: GstColorBalanceType = 0;
41pub const GST_COLOR_BALANCE_SOFTWARE: GstColorBalanceType = 1;
42
43pub type GstNavigationCommand = c_int;
44pub const GST_NAVIGATION_COMMAND_INVALID: GstNavigationCommand = 0;
45pub const GST_NAVIGATION_COMMAND_MENU1: GstNavigationCommand = 1;
46pub const GST_NAVIGATION_COMMAND_MENU2: GstNavigationCommand = 2;
47pub const GST_NAVIGATION_COMMAND_MENU3: GstNavigationCommand = 3;
48pub const GST_NAVIGATION_COMMAND_MENU4: GstNavigationCommand = 4;
49pub const GST_NAVIGATION_COMMAND_MENU5: GstNavigationCommand = 5;
50pub const GST_NAVIGATION_COMMAND_MENU6: GstNavigationCommand = 6;
51pub const GST_NAVIGATION_COMMAND_MENU7: GstNavigationCommand = 7;
52pub const GST_NAVIGATION_COMMAND_LEFT: GstNavigationCommand = 20;
53pub const GST_NAVIGATION_COMMAND_RIGHT: GstNavigationCommand = 21;
54pub const GST_NAVIGATION_COMMAND_UP: GstNavigationCommand = 22;
55pub const GST_NAVIGATION_COMMAND_DOWN: GstNavigationCommand = 23;
56pub const GST_NAVIGATION_COMMAND_ACTIVATE: GstNavigationCommand = 24;
57pub const GST_NAVIGATION_COMMAND_PREV_ANGLE: GstNavigationCommand = 30;
58pub const GST_NAVIGATION_COMMAND_NEXT_ANGLE: GstNavigationCommand = 31;
59
60pub type GstNavigationEventType = c_int;
61pub const GST_NAVIGATION_EVENT_INVALID: GstNavigationEventType = 0;
62pub const GST_NAVIGATION_EVENT_KEY_PRESS: GstNavigationEventType = 1;
63pub const GST_NAVIGATION_EVENT_KEY_RELEASE: GstNavigationEventType = 2;
64pub const GST_NAVIGATION_EVENT_MOUSE_BUTTON_PRESS: GstNavigationEventType = 3;
65pub const GST_NAVIGATION_EVENT_MOUSE_BUTTON_RELEASE: GstNavigationEventType = 4;
66pub const GST_NAVIGATION_EVENT_MOUSE_MOVE: GstNavigationEventType = 5;
67pub const GST_NAVIGATION_EVENT_COMMAND: GstNavigationEventType = 6;
68#[cfg(feature = "v1_18")]
69#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
70pub const GST_NAVIGATION_EVENT_MOUSE_SCROLL: GstNavigationEventType = 7;
71#[cfg(feature = "v1_22")]
72#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
73pub const GST_NAVIGATION_EVENT_TOUCH_DOWN: GstNavigationEventType = 8;
74#[cfg(feature = "v1_22")]
75#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
76pub const GST_NAVIGATION_EVENT_TOUCH_MOTION: GstNavigationEventType = 9;
77#[cfg(feature = "v1_22")]
78#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
79pub const GST_NAVIGATION_EVENT_TOUCH_UP: GstNavigationEventType = 10;
80#[cfg(feature = "v1_22")]
81#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
82pub const GST_NAVIGATION_EVENT_TOUCH_FRAME: GstNavigationEventType = 11;
83#[cfg(feature = "v1_22")]
84#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
85pub const GST_NAVIGATION_EVENT_TOUCH_CANCEL: GstNavigationEventType = 12;
86#[cfg(feature = "v1_26")]
87#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
88pub const GST_NAVIGATION_EVENT_MOUSE_DOUBLE_CLICK: GstNavigationEventType = 13;
89
90pub type GstNavigationMessageType = c_int;
91pub const GST_NAVIGATION_MESSAGE_INVALID: GstNavigationMessageType = 0;
92pub const GST_NAVIGATION_MESSAGE_MOUSE_OVER: GstNavigationMessageType = 1;
93pub const GST_NAVIGATION_MESSAGE_COMMANDS_CHANGED: GstNavigationMessageType = 2;
94pub const GST_NAVIGATION_MESSAGE_ANGLES_CHANGED: GstNavigationMessageType = 3;
95pub const GST_NAVIGATION_MESSAGE_EVENT: GstNavigationMessageType = 4;
96
97pub type GstNavigationQueryType = c_int;
98pub const GST_NAVIGATION_QUERY_INVALID: GstNavigationQueryType = 0;
99pub const GST_NAVIGATION_QUERY_COMMANDS: GstNavigationQueryType = 1;
100pub const GST_NAVIGATION_QUERY_ANGLES: GstNavigationQueryType = 2;
101
102pub type GstVideoAFDSpec = c_int;
103pub const GST_VIDEO_AFD_SPEC_DVB_ETSI: GstVideoAFDSpec = 0;
104pub const GST_VIDEO_AFD_SPEC_ATSC_A53: GstVideoAFDSpec = 1;
105pub const GST_VIDEO_AFD_SPEC_SMPTE_ST2016_1: GstVideoAFDSpec = 2;
106
107pub type GstVideoAFDValue = c_int;
108pub const GST_VIDEO_AFD_UNAVAILABLE: GstVideoAFDValue = 0;
109pub const GST_VIDEO_AFD_16_9_TOP_ALIGNED: GstVideoAFDValue = 2;
110pub const GST_VIDEO_AFD_14_9_TOP_ALIGNED: GstVideoAFDValue = 3;
111pub const GST_VIDEO_AFD_GREATER_THAN_16_9: GstVideoAFDValue = 4;
112pub const GST_VIDEO_AFD_4_3_FULL_16_9_FULL: GstVideoAFDValue = 8;
113pub const GST_VIDEO_AFD_4_3_FULL_4_3_PILLAR: GstVideoAFDValue = 9;
114pub const GST_VIDEO_AFD_16_9_LETTER_16_9_FULL: GstVideoAFDValue = 10;
115pub const GST_VIDEO_AFD_14_9_LETTER_14_9_PILLAR: GstVideoAFDValue = 11;
116pub const GST_VIDEO_AFD_4_3_FULL_14_9_CENTER: GstVideoAFDValue = 13;
117pub const GST_VIDEO_AFD_16_9_LETTER_14_9_CENTER: GstVideoAFDValue = 14;
118pub const GST_VIDEO_AFD_16_9_LETTER_4_3_CENTER: GstVideoAFDValue = 15;
119
120pub type GstVideoAlphaMode = c_int;
121pub const GST_VIDEO_ALPHA_MODE_COPY: GstVideoAlphaMode = 0;
122pub const GST_VIDEO_ALPHA_MODE_SET: GstVideoAlphaMode = 1;
123pub const GST_VIDEO_ALPHA_MODE_MULT: GstVideoAlphaMode = 2;
124
125pub type GstVideoAncillaryDID = c_int;
126pub const GST_VIDEO_ANCILLARY_DID_UNDEFINED: GstVideoAncillaryDID = 0;
127pub const GST_VIDEO_ANCILLARY_DID_DELETION: GstVideoAncillaryDID = 128;
128pub const GST_VIDEO_ANCILLARY_DID_HANC_3G_AUDIO_DATA_FIRST: GstVideoAncillaryDID = 160;
129pub const GST_VIDEO_ANCILLARY_DID_HANC_3G_AUDIO_DATA_LAST: GstVideoAncillaryDID = 167;
130pub const GST_VIDEO_ANCILLARY_DID_HANC_HDTV_AUDIO_DATA_FIRST: GstVideoAncillaryDID = 224;
131pub const GST_VIDEO_ANCILLARY_DID_HANC_HDTV_AUDIO_DATA_LAST: GstVideoAncillaryDID = 231;
132pub const GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_1_FIRST: GstVideoAncillaryDID = 236;
133pub const GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_1_LAST: GstVideoAncillaryDID = 239;
134pub const GST_VIDEO_ANCILLARY_DID_CAMERA_POSITION: GstVideoAncillaryDID = 240;
135pub const GST_VIDEO_ANCILLARY_DID_HANC_ERROR_DETECTION: GstVideoAncillaryDID = 244;
136pub const GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_2_FIRST: GstVideoAncillaryDID = 248;
137pub const GST_VIDEO_ANCILLARY_DID_HANC_SDTV_AUDIO_DATA_2_LAST: GstVideoAncillaryDID = 255;
138
139pub type GstVideoAncillaryDID16 = c_int;
140pub const GST_VIDEO_ANCILLARY_DID16_S334_EIA_708: GstVideoAncillaryDID16 = 24833;
141pub const GST_VIDEO_ANCILLARY_DID16_S334_EIA_608: GstVideoAncillaryDID16 = 24834;
142pub const GST_VIDEO_ANCILLARY_DID16_S2016_3_AFD_BAR: GstVideoAncillaryDID16 = 16645;
143
144pub type GstVideoCaptionType = c_int;
145pub const GST_VIDEO_CAPTION_TYPE_UNKNOWN: GstVideoCaptionType = 0;
146pub const GST_VIDEO_CAPTION_TYPE_CEA608_RAW: GstVideoCaptionType = 1;
147pub const GST_VIDEO_CAPTION_TYPE_CEA608_S334_1A: GstVideoCaptionType = 2;
148pub const GST_VIDEO_CAPTION_TYPE_CEA708_RAW: GstVideoCaptionType = 3;
149pub const GST_VIDEO_CAPTION_TYPE_CEA708_CDP: GstVideoCaptionType = 4;
150
151pub type GstVideoChromaMethod = c_int;
152pub const GST_VIDEO_CHROMA_METHOD_NEAREST: GstVideoChromaMethod = 0;
153pub const GST_VIDEO_CHROMA_METHOD_LINEAR: GstVideoChromaMethod = 1;
154
155pub type GstVideoChromaMode = c_int;
156pub const GST_VIDEO_CHROMA_MODE_FULL: GstVideoChromaMode = 0;
157pub const GST_VIDEO_CHROMA_MODE_UPSAMPLE_ONLY: GstVideoChromaMode = 1;
158pub const GST_VIDEO_CHROMA_MODE_DOWNSAMPLE_ONLY: GstVideoChromaMode = 2;
159pub const GST_VIDEO_CHROMA_MODE_NONE: GstVideoChromaMode = 3;
160
161pub type GstVideoColorMatrix = c_int;
162pub const GST_VIDEO_COLOR_MATRIX_UNKNOWN: GstVideoColorMatrix = 0;
163pub const GST_VIDEO_COLOR_MATRIX_RGB: GstVideoColorMatrix = 1;
164pub const GST_VIDEO_COLOR_MATRIX_FCC: GstVideoColorMatrix = 2;
165pub const GST_VIDEO_COLOR_MATRIX_BT709: GstVideoColorMatrix = 3;
166pub const GST_VIDEO_COLOR_MATRIX_BT601: GstVideoColorMatrix = 4;
167pub const GST_VIDEO_COLOR_MATRIX_SMPTE240M: GstVideoColorMatrix = 5;
168pub const GST_VIDEO_COLOR_MATRIX_BT2020: GstVideoColorMatrix = 6;
169
170pub type GstVideoColorPrimaries = c_int;
171pub const GST_VIDEO_COLOR_PRIMARIES_UNKNOWN: GstVideoColorPrimaries = 0;
172pub const GST_VIDEO_COLOR_PRIMARIES_BT709: GstVideoColorPrimaries = 1;
173pub const GST_VIDEO_COLOR_PRIMARIES_BT470M: GstVideoColorPrimaries = 2;
174pub const GST_VIDEO_COLOR_PRIMARIES_BT470BG: GstVideoColorPrimaries = 3;
175pub const GST_VIDEO_COLOR_PRIMARIES_SMPTE170M: GstVideoColorPrimaries = 4;
176pub const GST_VIDEO_COLOR_PRIMARIES_SMPTE240M: GstVideoColorPrimaries = 5;
177pub const GST_VIDEO_COLOR_PRIMARIES_FILM: GstVideoColorPrimaries = 6;
178pub const GST_VIDEO_COLOR_PRIMARIES_BT2020: GstVideoColorPrimaries = 7;
179pub const GST_VIDEO_COLOR_PRIMARIES_ADOBERGB: GstVideoColorPrimaries = 8;
180pub const GST_VIDEO_COLOR_PRIMARIES_SMPTEST428: GstVideoColorPrimaries = 9;
181pub const GST_VIDEO_COLOR_PRIMARIES_SMPTERP431: GstVideoColorPrimaries = 10;
182pub const GST_VIDEO_COLOR_PRIMARIES_SMPTEEG432: GstVideoColorPrimaries = 11;
183pub const GST_VIDEO_COLOR_PRIMARIES_EBU3213: GstVideoColorPrimaries = 12;
184
185pub type GstVideoColorRange = c_int;
186pub const GST_VIDEO_COLOR_RANGE_UNKNOWN: GstVideoColorRange = 0;
187pub const GST_VIDEO_COLOR_RANGE_0_255: GstVideoColorRange = 1;
188pub const GST_VIDEO_COLOR_RANGE_16_235: GstVideoColorRange = 2;
189
190pub type GstVideoDitherMethod = c_int;
191pub const GST_VIDEO_DITHER_NONE: GstVideoDitherMethod = 0;
192pub const GST_VIDEO_DITHER_VERTERR: GstVideoDitherMethod = 1;
193pub const GST_VIDEO_DITHER_FLOYD_STEINBERG: GstVideoDitherMethod = 2;
194pub const GST_VIDEO_DITHER_SIERRA_LITE: GstVideoDitherMethod = 3;
195pub const GST_VIDEO_DITHER_BAYER: GstVideoDitherMethod = 4;
196
197pub type GstVideoFieldOrder = c_int;
198pub const GST_VIDEO_FIELD_ORDER_UNKNOWN: GstVideoFieldOrder = 0;
199pub const GST_VIDEO_FIELD_ORDER_TOP_FIELD_FIRST: GstVideoFieldOrder = 1;
200pub const GST_VIDEO_FIELD_ORDER_BOTTOM_FIELD_FIRST: GstVideoFieldOrder = 2;
201
202pub type GstVideoFormat = c_int;
203pub const GST_VIDEO_FORMAT_UNKNOWN: GstVideoFormat = 0;
204pub const GST_VIDEO_FORMAT_ENCODED: GstVideoFormat = 1;
205pub const GST_VIDEO_FORMAT_I420: GstVideoFormat = 2;
206pub const GST_VIDEO_FORMAT_YV12: GstVideoFormat = 3;
207pub const GST_VIDEO_FORMAT_YUY2: GstVideoFormat = 4;
208pub const GST_VIDEO_FORMAT_UYVY: GstVideoFormat = 5;
209pub const GST_VIDEO_FORMAT_AYUV: GstVideoFormat = 6;
210pub const GST_VIDEO_FORMAT_RGBx: GstVideoFormat = 7;
211pub const GST_VIDEO_FORMAT_BGRx: GstVideoFormat = 8;
212pub const GST_VIDEO_FORMAT_xRGB: GstVideoFormat = 9;
213pub const GST_VIDEO_FORMAT_xBGR: GstVideoFormat = 10;
214pub const GST_VIDEO_FORMAT_RGBA: GstVideoFormat = 11;
215pub const GST_VIDEO_FORMAT_BGRA: GstVideoFormat = 12;
216pub const GST_VIDEO_FORMAT_ARGB: GstVideoFormat = 13;
217pub const GST_VIDEO_FORMAT_ABGR: GstVideoFormat = 14;
218pub const GST_VIDEO_FORMAT_RGB: GstVideoFormat = 15;
219pub const GST_VIDEO_FORMAT_BGR: GstVideoFormat = 16;
220pub const GST_VIDEO_FORMAT_Y41B: GstVideoFormat = 17;
221pub const GST_VIDEO_FORMAT_Y42B: GstVideoFormat = 18;
222pub const GST_VIDEO_FORMAT_YVYU: GstVideoFormat = 19;
223pub const GST_VIDEO_FORMAT_Y444: GstVideoFormat = 20;
224pub const GST_VIDEO_FORMAT_v210: GstVideoFormat = 21;
225pub const GST_VIDEO_FORMAT_v216: GstVideoFormat = 22;
226pub const GST_VIDEO_FORMAT_NV12: GstVideoFormat = 23;
227pub const GST_VIDEO_FORMAT_NV21: GstVideoFormat = 24;
228pub const GST_VIDEO_FORMAT_GRAY8: GstVideoFormat = 25;
229pub const GST_VIDEO_FORMAT_GRAY16_BE: GstVideoFormat = 26;
230pub const GST_VIDEO_FORMAT_GRAY16_LE: GstVideoFormat = 27;
231pub const GST_VIDEO_FORMAT_v308: GstVideoFormat = 28;
232pub const GST_VIDEO_FORMAT_RGB16: GstVideoFormat = 29;
233pub const GST_VIDEO_FORMAT_BGR16: GstVideoFormat = 30;
234pub const GST_VIDEO_FORMAT_RGB15: GstVideoFormat = 31;
235pub const GST_VIDEO_FORMAT_BGR15: GstVideoFormat = 32;
236pub const GST_VIDEO_FORMAT_UYVP: GstVideoFormat = 33;
237pub const GST_VIDEO_FORMAT_A420: GstVideoFormat = 34;
238pub const GST_VIDEO_FORMAT_RGB8P: GstVideoFormat = 35;
239pub const GST_VIDEO_FORMAT_YUV9: GstVideoFormat = 36;
240pub const GST_VIDEO_FORMAT_YVU9: GstVideoFormat = 37;
241pub const GST_VIDEO_FORMAT_IYU1: GstVideoFormat = 38;
242pub const GST_VIDEO_FORMAT_ARGB64: GstVideoFormat = 39;
243pub const GST_VIDEO_FORMAT_AYUV64: GstVideoFormat = 40;
244pub const GST_VIDEO_FORMAT_r210: GstVideoFormat = 41;
245pub const GST_VIDEO_FORMAT_I420_10BE: GstVideoFormat = 42;
246pub const GST_VIDEO_FORMAT_I420_10LE: GstVideoFormat = 43;
247pub const GST_VIDEO_FORMAT_I422_10BE: GstVideoFormat = 44;
248pub const GST_VIDEO_FORMAT_I422_10LE: GstVideoFormat = 45;
249pub const GST_VIDEO_FORMAT_Y444_10BE: GstVideoFormat = 46;
250pub const GST_VIDEO_FORMAT_Y444_10LE: GstVideoFormat = 47;
251pub const GST_VIDEO_FORMAT_GBR: GstVideoFormat = 48;
252pub const GST_VIDEO_FORMAT_GBR_10BE: GstVideoFormat = 49;
253pub const GST_VIDEO_FORMAT_GBR_10LE: GstVideoFormat = 50;
254pub const GST_VIDEO_FORMAT_NV16: GstVideoFormat = 51;
255pub const GST_VIDEO_FORMAT_NV24: GstVideoFormat = 52;
256pub const GST_VIDEO_FORMAT_NV12_64Z32: GstVideoFormat = 53;
257pub const GST_VIDEO_FORMAT_A420_10BE: GstVideoFormat = 54;
258pub const GST_VIDEO_FORMAT_A420_10LE: GstVideoFormat = 55;
259pub const GST_VIDEO_FORMAT_A422_10BE: GstVideoFormat = 56;
260pub const GST_VIDEO_FORMAT_A422_10LE: GstVideoFormat = 57;
261pub const GST_VIDEO_FORMAT_A444_10BE: GstVideoFormat = 58;
262pub const GST_VIDEO_FORMAT_A444_10LE: GstVideoFormat = 59;
263pub const GST_VIDEO_FORMAT_NV61: GstVideoFormat = 60;
264pub const GST_VIDEO_FORMAT_P010_10BE: GstVideoFormat = 61;
265pub const GST_VIDEO_FORMAT_P010_10LE: GstVideoFormat = 62;
266pub const GST_VIDEO_FORMAT_IYU2: GstVideoFormat = 63;
267pub const GST_VIDEO_FORMAT_VYUY: GstVideoFormat = 64;
268pub const GST_VIDEO_FORMAT_GBRA: GstVideoFormat = 65;
269pub const GST_VIDEO_FORMAT_GBRA_10BE: GstVideoFormat = 66;
270pub const GST_VIDEO_FORMAT_GBRA_10LE: GstVideoFormat = 67;
271pub const GST_VIDEO_FORMAT_GBR_12BE: GstVideoFormat = 68;
272pub const GST_VIDEO_FORMAT_GBR_12LE: GstVideoFormat = 69;
273pub const GST_VIDEO_FORMAT_GBRA_12BE: GstVideoFormat = 70;
274pub const GST_VIDEO_FORMAT_GBRA_12LE: GstVideoFormat = 71;
275pub const GST_VIDEO_FORMAT_I420_12BE: GstVideoFormat = 72;
276pub const GST_VIDEO_FORMAT_I420_12LE: GstVideoFormat = 73;
277pub const GST_VIDEO_FORMAT_I422_12BE: GstVideoFormat = 74;
278pub const GST_VIDEO_FORMAT_I422_12LE: GstVideoFormat = 75;
279pub const GST_VIDEO_FORMAT_Y444_12BE: GstVideoFormat = 76;
280pub const GST_VIDEO_FORMAT_Y444_12LE: GstVideoFormat = 77;
281pub const GST_VIDEO_FORMAT_GRAY10_LE32: GstVideoFormat = 78;
282pub const GST_VIDEO_FORMAT_NV12_10LE32: GstVideoFormat = 79;
283pub const GST_VIDEO_FORMAT_NV16_10LE32: GstVideoFormat = 80;
284pub const GST_VIDEO_FORMAT_NV12_10LE40: GstVideoFormat = 81;
285pub const GST_VIDEO_FORMAT_Y210: GstVideoFormat = 82;
286pub const GST_VIDEO_FORMAT_Y410: GstVideoFormat = 83;
287pub const GST_VIDEO_FORMAT_VUYA: GstVideoFormat = 84;
288pub const GST_VIDEO_FORMAT_BGR10A2_LE: GstVideoFormat = 85;
289pub const GST_VIDEO_FORMAT_RGB10A2_LE: GstVideoFormat = 86;
290pub const GST_VIDEO_FORMAT_Y444_16BE: GstVideoFormat = 87;
291pub const GST_VIDEO_FORMAT_Y444_16LE: GstVideoFormat = 88;
292pub const GST_VIDEO_FORMAT_P016_BE: GstVideoFormat = 89;
293pub const GST_VIDEO_FORMAT_P016_LE: GstVideoFormat = 90;
294pub const GST_VIDEO_FORMAT_P012_BE: GstVideoFormat = 91;
295pub const GST_VIDEO_FORMAT_P012_LE: GstVideoFormat = 92;
296pub const GST_VIDEO_FORMAT_Y212_BE: GstVideoFormat = 93;
297pub const GST_VIDEO_FORMAT_Y212_LE: GstVideoFormat = 94;
298pub const GST_VIDEO_FORMAT_Y412_BE: GstVideoFormat = 95;
299pub const GST_VIDEO_FORMAT_Y412_LE: GstVideoFormat = 96;
300#[cfg(feature = "v1_18")]
301#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
302pub const GST_VIDEO_FORMAT_NV12_4L4: GstVideoFormat = 97;
303#[cfg(feature = "v1_18")]
304#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
305pub const GST_VIDEO_FORMAT_NV12_32L32: GstVideoFormat = 98;
306#[cfg(feature = "v1_20")]
307#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
308pub const GST_VIDEO_FORMAT_RGBP: GstVideoFormat = 99;
309#[cfg(feature = "v1_20")]
310#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
311pub const GST_VIDEO_FORMAT_BGRP: GstVideoFormat = 100;
312#[cfg(feature = "v1_20")]
313#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
314pub const GST_VIDEO_FORMAT_AV12: GstVideoFormat = 101;
315#[cfg(feature = "v1_20")]
316#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
317pub const GST_VIDEO_FORMAT_ARGB64_LE: GstVideoFormat = 102;
318#[cfg(feature = "v1_20")]
319#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
320pub const GST_VIDEO_FORMAT_ARGB64_BE: GstVideoFormat = 103;
321#[cfg(feature = "v1_20")]
322#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
323pub const GST_VIDEO_FORMAT_RGBA64_LE: GstVideoFormat = 104;
324#[cfg(feature = "v1_20")]
325#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
326pub const GST_VIDEO_FORMAT_RGBA64_BE: GstVideoFormat = 105;
327#[cfg(feature = "v1_20")]
328#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
329pub const GST_VIDEO_FORMAT_BGRA64_LE: GstVideoFormat = 106;
330#[cfg(feature = "v1_20")]
331#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
332pub const GST_VIDEO_FORMAT_BGRA64_BE: GstVideoFormat = 107;
333#[cfg(feature = "v1_20")]
334#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
335pub const GST_VIDEO_FORMAT_ABGR64_LE: GstVideoFormat = 108;
336#[cfg(feature = "v1_20")]
337#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
338pub const GST_VIDEO_FORMAT_ABGR64_BE: GstVideoFormat = 109;
339#[cfg(feature = "v1_22")]
340#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
341pub const GST_VIDEO_FORMAT_NV12_16L32S: GstVideoFormat = 110;
342#[cfg(feature = "v1_22")]
343#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
344pub const GST_VIDEO_FORMAT_NV12_8L128: GstVideoFormat = 111;
345#[cfg(feature = "v1_22")]
346#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
347pub const GST_VIDEO_FORMAT_NV12_10BE_8L128: GstVideoFormat = 112;
348#[cfg(feature = "v1_24")]
349#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
350pub const GST_VIDEO_FORMAT_NV12_10LE40_4L4: GstVideoFormat = 113;
351#[cfg(feature = "v1_24")]
352#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
353pub const GST_VIDEO_FORMAT_DMA_DRM: GstVideoFormat = 114;
354#[cfg(feature = "v1_24")]
355#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
356pub const GST_VIDEO_FORMAT_MT2110T: GstVideoFormat = 115;
357#[cfg(feature = "v1_24")]
358#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
359pub const GST_VIDEO_FORMAT_MT2110R: GstVideoFormat = 116;
360#[cfg(feature = "v1_24")]
361#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
362pub const GST_VIDEO_FORMAT_A422: GstVideoFormat = 117;
363#[cfg(feature = "v1_24")]
364#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
365pub const GST_VIDEO_FORMAT_A444: GstVideoFormat = 118;
366#[cfg(feature = "v1_24")]
367#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
368pub const GST_VIDEO_FORMAT_A444_12LE: GstVideoFormat = 119;
369#[cfg(feature = "v1_24")]
370#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
371pub const GST_VIDEO_FORMAT_A444_12BE: GstVideoFormat = 120;
372#[cfg(feature = "v1_24")]
373#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
374pub const GST_VIDEO_FORMAT_A422_12LE: GstVideoFormat = 121;
375#[cfg(feature = "v1_24")]
376#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
377pub const GST_VIDEO_FORMAT_A422_12BE: GstVideoFormat = 122;
378#[cfg(feature = "v1_24")]
379#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
380pub const GST_VIDEO_FORMAT_A420_12LE: GstVideoFormat = 123;
381#[cfg(feature = "v1_24")]
382#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
383pub const GST_VIDEO_FORMAT_A420_12BE: GstVideoFormat = 124;
384#[cfg(feature = "v1_24")]
385#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
386pub const GST_VIDEO_FORMAT_A444_16LE: GstVideoFormat = 125;
387#[cfg(feature = "v1_24")]
388#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
389pub const GST_VIDEO_FORMAT_A444_16BE: GstVideoFormat = 126;
390#[cfg(feature = "v1_24")]
391#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
392pub const GST_VIDEO_FORMAT_A422_16LE: GstVideoFormat = 127;
393#[cfg(feature = "v1_24")]
394#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
395pub const GST_VIDEO_FORMAT_A422_16BE: GstVideoFormat = 128;
396#[cfg(feature = "v1_24")]
397#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
398pub const GST_VIDEO_FORMAT_A420_16LE: GstVideoFormat = 129;
399#[cfg(feature = "v1_24")]
400#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
401pub const GST_VIDEO_FORMAT_A420_16BE: GstVideoFormat = 130;
402#[cfg(feature = "v1_24")]
403#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
404pub const GST_VIDEO_FORMAT_GBR_16LE: GstVideoFormat = 131;
405#[cfg(feature = "v1_24")]
406#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
407pub const GST_VIDEO_FORMAT_GBR_16BE: GstVideoFormat = 132;
408#[cfg(feature = "v1_24")]
409#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
410pub const GST_VIDEO_FORMAT_RBGA: GstVideoFormat = 133;
411#[cfg(feature = "v1_26")]
412#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
413pub const GST_VIDEO_FORMAT_Y216_LE: GstVideoFormat = 134;
414#[cfg(feature = "v1_26")]
415#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
416pub const GST_VIDEO_FORMAT_Y216_BE: GstVideoFormat = 135;
417#[cfg(feature = "v1_26")]
418#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
419pub const GST_VIDEO_FORMAT_Y416_LE: GstVideoFormat = 136;
420#[cfg(feature = "v1_26")]
421#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
422pub const GST_VIDEO_FORMAT_Y416_BE: GstVideoFormat = 137;
423#[cfg(feature = "v1_26")]
424#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
425pub const GST_VIDEO_FORMAT_GRAY10_LE16: GstVideoFormat = 138;
426#[cfg(feature = "v1_28")]
427#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
428pub const GST_VIDEO_FORMAT_NV16_10LE40: GstVideoFormat = 139;
429#[cfg(feature = "v1_28")]
430#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
431pub const GST_VIDEO_FORMAT_BGR10x2_LE: GstVideoFormat = 140;
432#[cfg(feature = "v1_28")]
433#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
434pub const GST_VIDEO_FORMAT_RGB10x2_LE: GstVideoFormat = 141;
435#[cfg(feature = "v1_30")]
436#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
437pub const GST_VIDEO_FORMAT_AHARDWARE_BUFFER: GstVideoFormat = 142;
438
439pub type GstVideoGLTextureOrientation = c_int;
440pub const GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL: GstVideoGLTextureOrientation = 0;
441pub const GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_FLIP: GstVideoGLTextureOrientation = 1;
442pub const GST_VIDEO_GL_TEXTURE_ORIENTATION_X_FLIP_Y_NORMAL: GstVideoGLTextureOrientation = 2;
443pub const GST_VIDEO_GL_TEXTURE_ORIENTATION_X_FLIP_Y_FLIP: GstVideoGLTextureOrientation = 3;
444
445pub type GstVideoGLTextureType = c_int;
446pub const GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE: GstVideoGLTextureType = 0;
447pub const GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE_ALPHA: GstVideoGLTextureType = 1;
448pub const GST_VIDEO_GL_TEXTURE_TYPE_RGB16: GstVideoGLTextureType = 2;
449pub const GST_VIDEO_GL_TEXTURE_TYPE_RGB: GstVideoGLTextureType = 3;
450pub const GST_VIDEO_GL_TEXTURE_TYPE_RGBA: GstVideoGLTextureType = 4;
451pub const GST_VIDEO_GL_TEXTURE_TYPE_R: GstVideoGLTextureType = 5;
452pub const GST_VIDEO_GL_TEXTURE_TYPE_RG: GstVideoGLTextureType = 6;
453
454pub type GstVideoGammaMode = c_int;
455pub const GST_VIDEO_GAMMA_MODE_NONE: GstVideoGammaMode = 0;
456pub const GST_VIDEO_GAMMA_MODE_REMAP: GstVideoGammaMode = 1;
457
458pub type GstVideoHDRFormat = c_int;
459pub const GST_VIDEO_HDR_FORMAT_NONE: GstVideoHDRFormat = 0;
460pub const GST_VIDEO_HDR_FORMAT_HDR10: GstVideoHDRFormat = 1;
461pub const GST_VIDEO_HDR_FORMAT_HDR10_PLUS: GstVideoHDRFormat = 2;
462
463pub type GstVideoInterlaceMode = c_int;
464pub const GST_VIDEO_INTERLACE_MODE_PROGRESSIVE: GstVideoInterlaceMode = 0;
465pub const GST_VIDEO_INTERLACE_MODE_INTERLEAVED: GstVideoInterlaceMode = 1;
466pub const GST_VIDEO_INTERLACE_MODE_MIXED: GstVideoInterlaceMode = 2;
467pub const GST_VIDEO_INTERLACE_MODE_FIELDS: GstVideoInterlaceMode = 3;
468pub const GST_VIDEO_INTERLACE_MODE_ALTERNATE: GstVideoInterlaceMode = 4;
469
470pub type GstVideoMatrixMode = c_int;
471pub const GST_VIDEO_MATRIX_MODE_FULL: GstVideoMatrixMode = 0;
472pub const GST_VIDEO_MATRIX_MODE_INPUT_ONLY: GstVideoMatrixMode = 1;
473pub const GST_VIDEO_MATRIX_MODE_OUTPUT_ONLY: GstVideoMatrixMode = 2;
474pub const GST_VIDEO_MATRIX_MODE_NONE: GstVideoMatrixMode = 3;
475
476pub type GstVideoMultiviewFramePacking = c_int;
477pub const GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE: GstVideoMultiviewFramePacking = -1;
478pub const GST_VIDEO_MULTIVIEW_FRAME_PACKING_MONO: GstVideoMultiviewFramePacking = 0;
479pub const GST_VIDEO_MULTIVIEW_FRAME_PACKING_LEFT: GstVideoMultiviewFramePacking = 1;
480pub const GST_VIDEO_MULTIVIEW_FRAME_PACKING_RIGHT: GstVideoMultiviewFramePacking = 2;
481pub const GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE: GstVideoMultiviewFramePacking = 3;
482pub const GST_VIDEO_MULTIVIEW_FRAME_PACKING_SIDE_BY_SIDE_QUINCUNX: GstVideoMultiviewFramePacking =
483    4;
484pub const GST_VIDEO_MULTIVIEW_FRAME_PACKING_COLUMN_INTERLEAVED: GstVideoMultiviewFramePacking = 5;
485pub const GST_VIDEO_MULTIVIEW_FRAME_PACKING_ROW_INTERLEAVED: GstVideoMultiviewFramePacking = 6;
486pub const GST_VIDEO_MULTIVIEW_FRAME_PACKING_TOP_BOTTOM: GstVideoMultiviewFramePacking = 7;
487pub const GST_VIDEO_MULTIVIEW_FRAME_PACKING_CHECKERBOARD: GstVideoMultiviewFramePacking = 8;
488
489pub type GstVideoMultiviewMode = c_int;
490pub const GST_VIDEO_MULTIVIEW_MODE_NONE: GstVideoMultiviewMode = -1;
491pub const GST_VIDEO_MULTIVIEW_MODE_MONO: GstVideoMultiviewMode = 0;
492pub const GST_VIDEO_MULTIVIEW_MODE_LEFT: GstVideoMultiviewMode = 1;
493pub const GST_VIDEO_MULTIVIEW_MODE_RIGHT: GstVideoMultiviewMode = 2;
494pub const GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE: GstVideoMultiviewMode = 3;
495pub const GST_VIDEO_MULTIVIEW_MODE_SIDE_BY_SIDE_QUINCUNX: GstVideoMultiviewMode = 4;
496pub const GST_VIDEO_MULTIVIEW_MODE_COLUMN_INTERLEAVED: GstVideoMultiviewMode = 5;
497pub const GST_VIDEO_MULTIVIEW_MODE_ROW_INTERLEAVED: GstVideoMultiviewMode = 6;
498pub const GST_VIDEO_MULTIVIEW_MODE_TOP_BOTTOM: GstVideoMultiviewMode = 7;
499pub const GST_VIDEO_MULTIVIEW_MODE_CHECKERBOARD: GstVideoMultiviewMode = 8;
500pub const GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME: GstVideoMultiviewMode = 32;
501pub const GST_VIDEO_MULTIVIEW_MODE_MULTIVIEW_FRAME_BY_FRAME: GstVideoMultiviewMode = 33;
502pub const GST_VIDEO_MULTIVIEW_MODE_SEPARATED: GstVideoMultiviewMode = 34;
503
504pub type GstVideoOrientationMethod = c_int;
505pub const GST_VIDEO_ORIENTATION_IDENTITY: GstVideoOrientationMethod = 0;
506pub const GST_VIDEO_ORIENTATION_90R: GstVideoOrientationMethod = 1;
507pub const GST_VIDEO_ORIENTATION_180: GstVideoOrientationMethod = 2;
508pub const GST_VIDEO_ORIENTATION_90L: GstVideoOrientationMethod = 3;
509pub const GST_VIDEO_ORIENTATION_HORIZ: GstVideoOrientationMethod = 4;
510pub const GST_VIDEO_ORIENTATION_VERT: GstVideoOrientationMethod = 5;
511pub const GST_VIDEO_ORIENTATION_UL_LR: GstVideoOrientationMethod = 6;
512pub const GST_VIDEO_ORIENTATION_UR_LL: GstVideoOrientationMethod = 7;
513pub const GST_VIDEO_ORIENTATION_AUTO: GstVideoOrientationMethod = 8;
514pub const GST_VIDEO_ORIENTATION_CUSTOM: GstVideoOrientationMethod = 9;
515
516pub type GstVideoPrimariesMode = c_int;
517pub const GST_VIDEO_PRIMARIES_MODE_NONE: GstVideoPrimariesMode = 0;
518pub const GST_VIDEO_PRIMARIES_MODE_MERGE_ONLY: GstVideoPrimariesMode = 1;
519pub const GST_VIDEO_PRIMARIES_MODE_FAST: GstVideoPrimariesMode = 2;
520
521pub type GstVideoResamplerMethod = c_int;
522pub const GST_VIDEO_RESAMPLER_METHOD_NEAREST: GstVideoResamplerMethod = 0;
523pub const GST_VIDEO_RESAMPLER_METHOD_LINEAR: GstVideoResamplerMethod = 1;
524pub const GST_VIDEO_RESAMPLER_METHOD_CUBIC: GstVideoResamplerMethod = 2;
525pub const GST_VIDEO_RESAMPLER_METHOD_SINC: GstVideoResamplerMethod = 3;
526pub const GST_VIDEO_RESAMPLER_METHOD_LANCZOS: GstVideoResamplerMethod = 4;
527
528pub type GstVideoTileMode = c_int;
529pub const GST_VIDEO_TILE_MODE_UNKNOWN: GstVideoTileMode = 0;
530pub const GST_VIDEO_TILE_MODE_ZFLIPZ_2X2: GstVideoTileMode = 65536;
531#[cfg(feature = "v1_18")]
532#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
533pub const GST_VIDEO_TILE_MODE_LINEAR: GstVideoTileMode = 131072;
534
535pub type GstVideoTileType = c_int;
536pub const GST_VIDEO_TILE_TYPE_INDEXED: GstVideoTileType = 0;
537
538pub type GstVideoTransferFunction = c_int;
539pub const GST_VIDEO_TRANSFER_UNKNOWN: GstVideoTransferFunction = 0;
540pub const GST_VIDEO_TRANSFER_GAMMA10: GstVideoTransferFunction = 1;
541pub const GST_VIDEO_TRANSFER_GAMMA18: GstVideoTransferFunction = 2;
542pub const GST_VIDEO_TRANSFER_GAMMA20: GstVideoTransferFunction = 3;
543pub const GST_VIDEO_TRANSFER_GAMMA22: GstVideoTransferFunction = 4;
544pub const GST_VIDEO_TRANSFER_BT709: GstVideoTransferFunction = 5;
545pub const GST_VIDEO_TRANSFER_SMPTE240M: GstVideoTransferFunction = 6;
546pub const GST_VIDEO_TRANSFER_SRGB: GstVideoTransferFunction = 7;
547pub const GST_VIDEO_TRANSFER_GAMMA28: GstVideoTransferFunction = 8;
548pub const GST_VIDEO_TRANSFER_LOG100: GstVideoTransferFunction = 9;
549pub const GST_VIDEO_TRANSFER_LOG316: GstVideoTransferFunction = 10;
550pub const GST_VIDEO_TRANSFER_BT2020_12: GstVideoTransferFunction = 11;
551pub const GST_VIDEO_TRANSFER_ADOBERGB: GstVideoTransferFunction = 12;
552pub const GST_VIDEO_TRANSFER_BT2020_10: GstVideoTransferFunction = 13;
553pub const GST_VIDEO_TRANSFER_SMPTE2084: GstVideoTransferFunction = 14;
554pub const GST_VIDEO_TRANSFER_ARIB_STD_B67: GstVideoTransferFunction = 15;
555#[cfg(feature = "v1_18")]
556#[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
557pub const GST_VIDEO_TRANSFER_BT601: GstVideoTransferFunction = 16;
558
559pub type GstVideoVBIParserResult = c_int;
560pub const GST_VIDEO_VBI_PARSER_RESULT_DONE: GstVideoVBIParserResult = 0;
561pub const GST_VIDEO_VBI_PARSER_RESULT_OK: GstVideoVBIParserResult = 1;
562pub const GST_VIDEO_VBI_PARSER_RESULT_ERROR: GstVideoVBIParserResult = 2;
563
564// Constants
565pub const GST_BUFFER_POOL_OPTION_VIDEO_AFFINE_TRANSFORMATION_META: &[u8] =
566    b"GstBufferPoolOptionVideoAffineTransformation\0";
567pub const GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT: &[u8] = b"GstBufferPoolOptionVideoAlignment\0";
568pub const GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META: &[u8] =
569    b"GstBufferPoolOptionVideoGLTextureUploadMeta\0";
570pub const GST_BUFFER_POOL_OPTION_VIDEO_META: &[u8] = b"GstBufferPoolOptionVideoMeta\0";
571pub const GST_CAPS_FEATURE_FORMAT_INTERLACED: &[u8] = b"format:Interlaced\0";
572pub const GST_CAPS_FEATURE_META_GST_VIDEO_AFFINE_TRANSFORMATION_META: &[u8] =
573    b"meta:GstVideoAffineTransformation\0";
574pub const GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META: &[u8] =
575    b"meta:GstVideoGLTextureUploadMeta\0";
576pub const GST_CAPS_FEATURE_META_GST_VIDEO_META: &[u8] = b"meta:GstVideoMeta\0";
577pub const GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION: &[u8] =
578    b"meta:GstVideoOverlayComposition\0";
579pub const GST_META_TAG_VIDEO_COLORSPACE_STR: &[u8] = b"colorspace\0";
580pub const GST_META_TAG_VIDEO_ORIENTATION_STR: &[u8] = b"orientation\0";
581pub const GST_META_TAG_VIDEO_SIZE_STR: &[u8] = b"size\0";
582pub const GST_META_TAG_VIDEO_STR: &[u8] = b"video\0";
583pub const GST_VIDEO_COLORIMETRY_BT2020: &[u8] = b"bt2020\0";
584pub const GST_VIDEO_COLORIMETRY_BT2020_10: &[u8] = b"bt2020-10\0";
585pub const GST_VIDEO_COLORIMETRY_BT2100_HLG: &[u8] = b"bt2100-hlg\0";
586pub const GST_VIDEO_COLORIMETRY_BT2100_PQ: &[u8] = b"bt2100-pq\0";
587pub const GST_VIDEO_COLORIMETRY_BT601: &[u8] = b"bt601\0";
588pub const GST_VIDEO_COLORIMETRY_BT709: &[u8] = b"bt709\0";
589pub const GST_VIDEO_COLORIMETRY_SMPTE240M: &[u8] = b"smpte240m\0";
590pub const GST_VIDEO_COLORIMETRY_SRGB: &[u8] = b"sRGB\0";
591pub const GST_VIDEO_COMP_A: c_int = 3;
592pub const GST_VIDEO_COMP_B: c_int = 2;
593pub const GST_VIDEO_COMP_G: c_int = 1;
594pub const GST_VIDEO_COMP_INDEX: c_int = 0;
595pub const GST_VIDEO_COMP_PALETTE: c_int = 1;
596pub const GST_VIDEO_COMP_R: c_int = 0;
597pub const GST_VIDEO_COMP_U: c_int = 1;
598pub const GST_VIDEO_COMP_V: c_int = 2;
599pub const GST_VIDEO_COMP_Y: c_int = 0;
600pub const GST_VIDEO_CONVERTER_OPT_ALPHA_MODE: &[u8] = b"GstVideoConverter.alpha-mode\0";
601pub const GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE: &[u8] = b"GstVideoConverter.alpha-value\0";
602pub const GST_VIDEO_CONVERTER_OPT_ASYNC_TASKS: &[u8] = b"GstVideoConverter.async-tasks\0";
603pub const GST_VIDEO_CONVERTER_OPT_BORDER_ARGB: &[u8] = b"GstVideoConverter.border-argb\0";
604pub const GST_VIDEO_CONVERTER_OPT_CHROMA_MODE: &[u8] = b"GstVideoConverter.chroma-mode\0";
605pub const GST_VIDEO_CONVERTER_OPT_CHROMA_RESAMPLER_METHOD: &[u8] =
606    b"GstVideoConverter.chroma-resampler-method\0";
607pub const GST_VIDEO_CONVERTER_OPT_DEST_HEIGHT: &[u8] = b"GstVideoConverter.dest-height\0";
608pub const GST_VIDEO_CONVERTER_OPT_DEST_WIDTH: &[u8] = b"GstVideoConverter.dest-width\0";
609pub const GST_VIDEO_CONVERTER_OPT_DEST_X: &[u8] = b"GstVideoConverter.dest-x\0";
610pub const GST_VIDEO_CONVERTER_OPT_DEST_Y: &[u8] = b"GstVideoConverter.dest-y\0";
611pub const GST_VIDEO_CONVERTER_OPT_DITHER_METHOD: &[u8] = b"GstVideoConverter.dither-method\0";
612pub const GST_VIDEO_CONVERTER_OPT_DITHER_QUANTIZATION: &[u8] =
613    b"GstVideoConverter.dither-quantization\0";
614pub const GST_VIDEO_CONVERTER_OPT_FILL_BORDER: &[u8] = b"GstVideoConverter.fill-border\0";
615pub const GST_VIDEO_CONVERTER_OPT_GAMMA_MODE: &[u8] = b"GstVideoConverter.gamma-mode\0";
616pub const GST_VIDEO_CONVERTER_OPT_MATRIX_MODE: &[u8] = b"GstVideoConverter.matrix-mode\0";
617pub const GST_VIDEO_CONVERTER_OPT_PRIMARIES_MODE: &[u8] = b"GstVideoConverter.primaries-mode\0";
618pub const GST_VIDEO_CONVERTER_OPT_RESAMPLER_METHOD: &[u8] = b"GstVideoConverter.resampler-method\0";
619pub const GST_VIDEO_CONVERTER_OPT_RESAMPLER_TAPS: &[u8] = b"GstVideoConverter.resampler-taps\0";
620pub const GST_VIDEO_CONVERTER_OPT_SRC_HEIGHT: &[u8] = b"GstVideoConverter.src-height\0";
621pub const GST_VIDEO_CONVERTER_OPT_SRC_WIDTH: &[u8] = b"GstVideoConverter.src-width\0";
622pub const GST_VIDEO_CONVERTER_OPT_SRC_X: &[u8] = b"GstVideoConverter.src-x\0";
623pub const GST_VIDEO_CONVERTER_OPT_SRC_Y: &[u8] = b"GstVideoConverter.src-y\0";
624pub const GST_VIDEO_CONVERTER_OPT_THREADS: &[u8] = b"GstVideoConverter.threads\0";
625pub const GST_VIDEO_DECODER_MAX_ERRORS: c_int = -1;
626pub const GST_VIDEO_DECODER_SINK_NAME: &[u8] = b"sink\0";
627pub const GST_VIDEO_DECODER_SRC_NAME: &[u8] = b"src\0";
628pub const GST_VIDEO_ENCODER_SINK_NAME: &[u8] = b"sink\0";
629pub const GST_VIDEO_ENCODER_SRC_NAME: &[u8] = b"src\0";
630pub const GST_VIDEO_FORMAT_LAST: c_int = 143;
631pub const GST_VIDEO_FPS_RANGE: &[u8] = b"(fraction) [ 0, max ]\0";
632pub const GST_VIDEO_HDR10_PLUS_MAX_BYTES: c_int = 1024;
633pub const GST_VIDEO_HDR10_PLUS_MAX_COLS_MD_APL: c_int = 25;
634pub const GST_VIDEO_HDR10_PLUS_MAX_ROWS_TSD_APL: c_int = 25;
635pub const GST_VIDEO_HDR10_PLUS_NUM_WINDOWS: c_int = 1;
636pub const GST_VIDEO_MAX_COMPONENTS: c_int = 4;
637pub const GST_VIDEO_MAX_PLANES: c_int = 4;
638pub const GST_VIDEO_RESAMPLER_OPT_CUBIC_B: &[u8] = b"GstVideoResampler.cubic-b\0";
639pub const GST_VIDEO_RESAMPLER_OPT_CUBIC_C: &[u8] = b"GstVideoResampler.cubic-c\0";
640pub const GST_VIDEO_RESAMPLER_OPT_ENVELOPE: &[u8] = b"GstVideoResampler.envelope\0";
641pub const GST_VIDEO_RESAMPLER_OPT_MAX_TAPS: &[u8] = b"GstVideoResampler.max-taps\0";
642pub const GST_VIDEO_RESAMPLER_OPT_SHARPEN: &[u8] = b"GstVideoResampler.sharpen\0";
643pub const GST_VIDEO_RESAMPLER_OPT_SHARPNESS: &[u8] = b"GstVideoResampler.sharpness\0";
644pub const GST_VIDEO_SCALER_OPT_DITHER_METHOD: &[u8] = b"GstVideoScaler.dither-method\0";
645pub const GST_VIDEO_SIZE_RANGE: &[u8] = b"(int) [ 1, max ]\0";
646pub const GST_VIDEO_TILE_TYPE_MASK: c_int = 65535;
647pub const GST_VIDEO_TILE_TYPE_SHIFT: c_int = 16;
648pub const GST_VIDEO_TILE_X_TILES_MASK: c_int = 65535;
649pub const GST_VIDEO_TILE_Y_TILES_SHIFT: c_int = 16;
650
651// Flags
652pub type GstNavigationModifierType = c_uint;
653pub const GST_NAVIGATION_MODIFIER_NONE: GstNavigationModifierType = 0;
654pub const GST_NAVIGATION_MODIFIER_SHIFT_MASK: GstNavigationModifierType = 1;
655pub const GST_NAVIGATION_MODIFIER_LOCK_MASK: GstNavigationModifierType = 2;
656pub const GST_NAVIGATION_MODIFIER_CONTROL_MASK: GstNavigationModifierType = 4;
657pub const GST_NAVIGATION_MODIFIER_MOD1_MASK: GstNavigationModifierType = 8;
658pub const GST_NAVIGATION_MODIFIER_MOD2_MASK: GstNavigationModifierType = 16;
659pub const GST_NAVIGATION_MODIFIER_MOD3_MASK: GstNavigationModifierType = 32;
660pub const GST_NAVIGATION_MODIFIER_MOD4_MASK: GstNavigationModifierType = 64;
661pub const GST_NAVIGATION_MODIFIER_MOD5_MASK: GstNavigationModifierType = 128;
662pub const GST_NAVIGATION_MODIFIER_BUTTON1_MASK: GstNavigationModifierType = 256;
663pub const GST_NAVIGATION_MODIFIER_BUTTON2_MASK: GstNavigationModifierType = 512;
664pub const GST_NAVIGATION_MODIFIER_BUTTON3_MASK: GstNavigationModifierType = 1024;
665pub const GST_NAVIGATION_MODIFIER_BUTTON4_MASK: GstNavigationModifierType = 2048;
666pub const GST_NAVIGATION_MODIFIER_BUTTON5_MASK: GstNavigationModifierType = 4096;
667pub const GST_NAVIGATION_MODIFIER_SUPER_MASK: GstNavigationModifierType = 67108864;
668pub const GST_NAVIGATION_MODIFIER_HYPER_MASK: GstNavigationModifierType = 134217728;
669pub const GST_NAVIGATION_MODIFIER_META_MASK: GstNavigationModifierType = 268435456;
670pub const GST_NAVIGATION_MODIFIER_MASK: GstNavigationModifierType = 469770239;
671
672pub type GstVideoBufferFlags = c_uint;
673pub const GST_VIDEO_BUFFER_FLAG_INTERLACED: GstVideoBufferFlags = 1048576;
674pub const GST_VIDEO_BUFFER_FLAG_TFF: GstVideoBufferFlags = 2097152;
675pub const GST_VIDEO_BUFFER_FLAG_RFF: GstVideoBufferFlags = 4194304;
676pub const GST_VIDEO_BUFFER_FLAG_ONEFIELD: GstVideoBufferFlags = 8388608;
677pub const GST_VIDEO_BUFFER_FLAG_MULTIPLE_VIEW: GstVideoBufferFlags = 16777216;
678pub const GST_VIDEO_BUFFER_FLAG_FIRST_IN_BUNDLE: GstVideoBufferFlags = 33554432;
679pub const GST_VIDEO_BUFFER_FLAG_TOP_FIELD: GstVideoBufferFlags = 10485760;
680pub const GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD: GstVideoBufferFlags = 8388608;
681pub const GST_VIDEO_BUFFER_FLAG_MARKER: GstVideoBufferFlags = 512;
682pub const GST_VIDEO_BUFFER_FLAG_LAST: GstVideoBufferFlags = 268435456;
683
684pub type GstVideoChromaFlags = c_uint;
685pub const GST_VIDEO_CHROMA_FLAG_NONE: GstVideoChromaFlags = 0;
686pub const GST_VIDEO_CHROMA_FLAG_INTERLACED: GstVideoChromaFlags = 1;
687
688pub type GstVideoChromaSite = c_uint;
689pub const GST_VIDEO_CHROMA_SITE_UNKNOWN: GstVideoChromaSite = 0;
690pub const GST_VIDEO_CHROMA_SITE_NONE: GstVideoChromaSite = 1;
691pub const GST_VIDEO_CHROMA_SITE_H_COSITED: GstVideoChromaSite = 2;
692pub const GST_VIDEO_CHROMA_SITE_V_COSITED: GstVideoChromaSite = 4;
693pub const GST_VIDEO_CHROMA_SITE_ALT_LINE: GstVideoChromaSite = 8;
694pub const GST_VIDEO_CHROMA_SITE_COSITED: GstVideoChromaSite = 6;
695pub const GST_VIDEO_CHROMA_SITE_JPEG: GstVideoChromaSite = 1;
696pub const GST_VIDEO_CHROMA_SITE_MPEG2: GstVideoChromaSite = 2;
697pub const GST_VIDEO_CHROMA_SITE_DV: GstVideoChromaSite = 14;
698
699pub type GstVideoCodecFrameFlags = c_uint;
700pub const GST_VIDEO_CODEC_FRAME_FLAG_DECODE_ONLY: GstVideoCodecFrameFlags = 1;
701pub const GST_VIDEO_CODEC_FRAME_FLAG_SYNC_POINT: GstVideoCodecFrameFlags = 2;
702pub const GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME: GstVideoCodecFrameFlags = 4;
703pub const GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME_HEADERS: GstVideoCodecFrameFlags = 8;
704#[cfg(feature = "v1_20")]
705#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
706pub const GST_VIDEO_CODEC_FRAME_FLAG_CORRUPTED: GstVideoCodecFrameFlags = 16;
707
708pub type GstVideoDecoderRequestSyncPointFlags = c_uint;
709pub const GST_VIDEO_DECODER_REQUEST_SYNC_POINT_DISCARD_INPUT: GstVideoDecoderRequestSyncPointFlags =
710    1;
711pub const GST_VIDEO_DECODER_REQUEST_SYNC_POINT_CORRUPT_OUTPUT:
712    GstVideoDecoderRequestSyncPointFlags = 2;
713
714pub type GstVideoDitherFlags = c_uint;
715pub const GST_VIDEO_DITHER_FLAG_NONE: GstVideoDitherFlags = 0;
716pub const GST_VIDEO_DITHER_FLAG_INTERLACED: GstVideoDitherFlags = 1;
717pub const GST_VIDEO_DITHER_FLAG_QUANTIZE: GstVideoDitherFlags = 2;
718
719pub type GstVideoFlags = c_uint;
720pub const GST_VIDEO_FLAG_NONE: GstVideoFlags = 0;
721pub const GST_VIDEO_FLAG_VARIABLE_FPS: GstVideoFlags = 1;
722pub const GST_VIDEO_FLAG_PREMULTIPLIED_ALPHA: GstVideoFlags = 2;
723
724pub type GstVideoFormatFlags = c_uint;
725pub const GST_VIDEO_FORMAT_FLAG_YUV: GstVideoFormatFlags = 1;
726pub const GST_VIDEO_FORMAT_FLAG_RGB: GstVideoFormatFlags = 2;
727pub const GST_VIDEO_FORMAT_FLAG_GRAY: GstVideoFormatFlags = 4;
728pub const GST_VIDEO_FORMAT_FLAG_ALPHA: GstVideoFormatFlags = 8;
729pub const GST_VIDEO_FORMAT_FLAG_LE: GstVideoFormatFlags = 16;
730pub const GST_VIDEO_FORMAT_FLAG_PALETTE: GstVideoFormatFlags = 32;
731pub const GST_VIDEO_FORMAT_FLAG_COMPLEX: GstVideoFormatFlags = 64;
732pub const GST_VIDEO_FORMAT_FLAG_UNPACK: GstVideoFormatFlags = 128;
733pub const GST_VIDEO_FORMAT_FLAG_TILED: GstVideoFormatFlags = 256;
734#[cfg(feature = "v1_22")]
735#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
736pub const GST_VIDEO_FORMAT_FLAG_SUBTILES: GstVideoFormatFlags = 512;
737
738pub type GstVideoFrameFlags = c_uint;
739pub const GST_VIDEO_FRAME_FLAG_NONE: GstVideoFrameFlags = 0;
740pub const GST_VIDEO_FRAME_FLAG_INTERLACED: GstVideoFrameFlags = 1;
741pub const GST_VIDEO_FRAME_FLAG_TFF: GstVideoFrameFlags = 2;
742pub const GST_VIDEO_FRAME_FLAG_RFF: GstVideoFrameFlags = 4;
743pub const GST_VIDEO_FRAME_FLAG_ONEFIELD: GstVideoFrameFlags = 8;
744pub const GST_VIDEO_FRAME_FLAG_MULTIPLE_VIEW: GstVideoFrameFlags = 16;
745pub const GST_VIDEO_FRAME_FLAG_FIRST_IN_BUNDLE: GstVideoFrameFlags = 32;
746pub const GST_VIDEO_FRAME_FLAG_TOP_FIELD: GstVideoFrameFlags = 10;
747pub const GST_VIDEO_FRAME_FLAG_BOTTOM_FIELD: GstVideoFrameFlags = 8;
748
749pub type GstVideoFrameMapFlags = c_uint;
750pub const GST_VIDEO_FRAME_MAP_FLAG_NO_REF: GstVideoFrameMapFlags = 65536;
751pub const GST_VIDEO_FRAME_MAP_FLAG_LAST: GstVideoFrameMapFlags = 16777216;
752
753pub type GstVideoMultiviewFlags = c_uint;
754pub const GST_VIDEO_MULTIVIEW_FLAGS_NONE: GstVideoMultiviewFlags = 0;
755pub const GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_VIEW_FIRST: GstVideoMultiviewFlags = 1;
756pub const GST_VIDEO_MULTIVIEW_FLAGS_LEFT_FLIPPED: GstVideoMultiviewFlags = 2;
757pub const GST_VIDEO_MULTIVIEW_FLAGS_LEFT_FLOPPED: GstVideoMultiviewFlags = 4;
758pub const GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_FLIPPED: GstVideoMultiviewFlags = 8;
759pub const GST_VIDEO_MULTIVIEW_FLAGS_RIGHT_FLOPPED: GstVideoMultiviewFlags = 16;
760pub const GST_VIDEO_MULTIVIEW_FLAGS_HALF_ASPECT: GstVideoMultiviewFlags = 16384;
761pub const GST_VIDEO_MULTIVIEW_FLAGS_MIXED_MONO: GstVideoMultiviewFlags = 32768;
762
763pub type GstVideoOverlayFormatFlags = c_uint;
764pub const GST_VIDEO_OVERLAY_FORMAT_FLAG_NONE: GstVideoOverlayFormatFlags = 0;
765pub const GST_VIDEO_OVERLAY_FORMAT_FLAG_PREMULTIPLIED_ALPHA: GstVideoOverlayFormatFlags = 1;
766pub const GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA: GstVideoOverlayFormatFlags = 2;
767
768pub type GstVideoPackFlags = c_uint;
769pub const GST_VIDEO_PACK_FLAG_NONE: GstVideoPackFlags = 0;
770pub const GST_VIDEO_PACK_FLAG_TRUNCATE_RANGE: GstVideoPackFlags = 1;
771pub const GST_VIDEO_PACK_FLAG_INTERLACED: GstVideoPackFlags = 2;
772
773pub type GstVideoResamplerFlags = c_uint;
774pub const GST_VIDEO_RESAMPLER_FLAG_NONE: GstVideoResamplerFlags = 0;
775pub const GST_VIDEO_RESAMPLER_FLAG_HALF_TAPS: GstVideoResamplerFlags = 1;
776
777pub type GstVideoScalerFlags = c_uint;
778pub const GST_VIDEO_SCALER_FLAG_NONE: GstVideoScalerFlags = 0;
779pub const GST_VIDEO_SCALER_FLAG_INTERLACED: GstVideoScalerFlags = 1;
780
781pub type GstVideoTimeCodeFlags = c_uint;
782pub const GST_VIDEO_TIME_CODE_FLAGS_NONE: GstVideoTimeCodeFlags = 0;
783pub const GST_VIDEO_TIME_CODE_FLAGS_DROP_FRAME: GstVideoTimeCodeFlags = 1;
784pub const GST_VIDEO_TIME_CODE_FLAGS_INTERLACED: GstVideoTimeCodeFlags = 2;
785#[cfg(feature = "v1_30")]
786#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
787pub const GST_VIDEO_TIME_CODE_FLAGS_DISCONT: GstVideoTimeCodeFlags = 4;
788
789// Unions
790#[derive(Copy, Clone)]
791#[repr(C)]
792pub union GstVideoCodecFrame_abidata {
793    pub ABI: GstVideoCodecFrame_abidata_ABI,
794    pub padding: [gpointer; 20],
795}
796
797impl ::std::fmt::Debug for GstVideoCodecFrame_abidata {
798    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
799        f.debug_struct(&format!("GstVideoCodecFrame_abidata @ {self:p}"))
800            .field("ABI", unsafe { &self.ABI })
801            .finish()
802    }
803}
804
805#[derive(Copy, Clone)]
806#[repr(C)]
807pub union GstVideoInfo_ABI {
808    pub abi: GstVideoInfo_ABI_abi,
809    pub _gst_reserved: [gpointer; 4],
810}
811
812impl ::std::fmt::Debug for GstVideoInfo_ABI {
813    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
814        f.debug_struct(&format!("GstVideoInfo_ABI @ {self:p}"))
815            .field("abi", unsafe { &self.abi })
816            .finish()
817    }
818}
819
820// Callbacks
821pub type GstVideoAffineTransformationGetMatrix =
822    Option<unsafe extern "C" fn(*mut GstVideoAffineTransformationMeta, *mut c_float) -> gboolean>;
823pub type GstVideoConvertSampleCallback =
824    Option<unsafe extern "C" fn(*mut gst::GstSample, *mut glib::GError, gpointer)>;
825pub type GstVideoFormatPack = Option<
826    unsafe extern "C" fn(
827        *const GstVideoFormatInfo,
828        GstVideoPackFlags,
829        gpointer,
830        c_int,
831        *mut gpointer,
832        *const c_int,
833        GstVideoChromaSite,
834        c_int,
835        c_int,
836    ),
837>;
838pub type GstVideoFormatUnpack = Option<
839    unsafe extern "C" fn(
840        *const GstVideoFormatInfo,
841        GstVideoPackFlags,
842        gpointer,
843        *const gpointer,
844        *const c_int,
845        c_int,
846        c_int,
847        c_int,
848    ),
849>;
850pub type GstVideoGLTextureUpload =
851    Option<unsafe extern "C" fn(*mut GstVideoGLTextureUploadMeta, *mut c_uint) -> gboolean>;
852
853// Records
854#[derive(Copy, Clone)]
855#[repr(C)]
856pub struct GstAncillaryMeta {
857    pub meta: gst::GstMeta,
858    pub field: GstAncillaryMetaField,
859    pub c_not_y_channel: gboolean,
860    pub line: u16,
861    pub offset: u16,
862    pub DID: u16,
863    pub SDID_block_number: u16,
864    pub data_count: u16,
865    pub data: *mut u16,
866    pub checksum: u16,
867}
868
869impl ::std::fmt::Debug for GstAncillaryMeta {
870    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
871        f.debug_struct(&format!("GstAncillaryMeta @ {self:p}"))
872            .field("meta", &self.meta)
873            .field("field", &self.field)
874            .field("c_not_y_channel", &self.c_not_y_channel)
875            .field("line", &self.line)
876            .field("offset", &self.offset)
877            .field("DID", &self.DID)
878            .field("SDID_block_number", &self.SDID_block_number)
879            .field("data_count", &self.data_count)
880            .field("data", &self.data)
881            .field("checksum", &self.checksum)
882            .finish()
883    }
884}
885
886#[derive(Copy, Clone)]
887#[repr(C)]
888pub struct GstColorBalanceChannelClass {
889    pub parent: gobject::GObjectClass,
890    pub value_changed: Option<unsafe extern "C" fn(*mut GstColorBalanceChannel, c_int)>,
891    pub _gst_reserved: [gpointer; 4],
892}
893
894impl ::std::fmt::Debug for GstColorBalanceChannelClass {
895    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
896        f.debug_struct(&format!("GstColorBalanceChannelClass @ {self:p}"))
897            .field("parent", &self.parent)
898            .field("value_changed", &self.value_changed)
899            .finish()
900    }
901}
902
903#[derive(Copy, Clone)]
904#[repr(C)]
905pub struct GstColorBalanceInterface {
906    pub iface: gobject::GTypeInterface,
907    pub list_channels: Option<unsafe extern "C" fn(*mut GstColorBalance) -> *const glib::GList>,
908    pub set_value:
909        Option<unsafe extern "C" fn(*mut GstColorBalance, *mut GstColorBalanceChannel, c_int)>,
910    pub get_value:
911        Option<unsafe extern "C" fn(*mut GstColorBalance, *mut GstColorBalanceChannel) -> c_int>,
912    pub get_balance_type: Option<unsafe extern "C" fn(*mut GstColorBalance) -> GstColorBalanceType>,
913    pub value_changed:
914        Option<unsafe extern "C" fn(*mut GstColorBalance, *mut GstColorBalanceChannel, c_int)>,
915    pub _gst_reserved: [gpointer; 4],
916}
917
918impl ::std::fmt::Debug for GstColorBalanceInterface {
919    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
920        f.debug_struct(&format!("GstColorBalanceInterface @ {self:p}"))
921            .field("iface", &self.iface)
922            .field("list_channels", &self.list_channels)
923            .field("set_value", &self.set_value)
924            .field("get_value", &self.get_value)
925            .field("get_balance_type", &self.get_balance_type)
926            .field("value_changed", &self.value_changed)
927            .finish()
928    }
929}
930
931#[derive(Copy, Clone)]
932#[repr(C)]
933pub struct GstH274DigitallySignedContentInitialization {
934    pub id: u8,
935    pub hash_method_type: u8,
936    pub key_retrieval_mode_idc: u32,
937    pub use_key_register_idx_flag: u8,
938    pub key_register_idx: u32,
939    pub content_uuid_present_flag: u8,
940    pub content_uuid: [u8; 16],
941    pub num_verification_substreams: u32,
942    pub ref_substream_flag: *mut u8,
943    pub ref_substream_flag_len: size_t,
944    pub vss_implicit_association_mode_flag: u8,
945    pub signed_content_start_flag: u8,
946    pub sei_signing_flag: u8,
947    pub key_source_uri: *mut c_char,
948}
949
950impl ::std::fmt::Debug for GstH274DigitallySignedContentInitialization {
951    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
952        f.debug_struct(&format!(
953            "GstH274DigitallySignedContentInitialization @ {self:p}"
954        ))
955        .field("id", &self.id)
956        .field("hash_method_type", &self.hash_method_type)
957        .field("key_retrieval_mode_idc", &self.key_retrieval_mode_idc)
958        .field("use_key_register_idx_flag", &self.use_key_register_idx_flag)
959        .field("key_register_idx", &self.key_register_idx)
960        .field("content_uuid_present_flag", &self.content_uuid_present_flag)
961        .field("content_uuid", &self.content_uuid)
962        .field(
963            "num_verification_substreams",
964            &self.num_verification_substreams,
965        )
966        .field("ref_substream_flag", &self.ref_substream_flag)
967        .field("ref_substream_flag_len", &self.ref_substream_flag_len)
968        .field(
969            "vss_implicit_association_mode_flag",
970            &self.vss_implicit_association_mode_flag,
971        )
972        .field("signed_content_start_flag", &self.signed_content_start_flag)
973        .field("sei_signing_flag", &self.sei_signing_flag)
974        .field("key_source_uri", &self.key_source_uri)
975        .finish()
976    }
977}
978
979#[derive(Copy, Clone)]
980#[repr(C)]
981pub struct GstH274DigitallySignedContentSelection {
982    pub id: u8,
983    pub verification_substream_id: u8,
984}
985
986impl ::std::fmt::Debug for GstH274DigitallySignedContentSelection {
987    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
988        f.debug_struct(&format!(
989            "GstH274DigitallySignedContentSelection @ {self:p}"
990        ))
991        .field("id", &self.id)
992        .field("verification_substream_id", &self.verification_substream_id)
993        .finish()
994    }
995}
996
997#[derive(Copy, Clone)]
998#[repr(C)]
999pub struct GstH274DigitallySignedContentVerification {
1000    pub id: u8,
1001    pub verification_substream_id: u8,
1002    pub signature_length_in_octets_minus1: u32,
1003    pub signature: *mut u8,
1004    pub signed_content_end_flag: u8,
1005}
1006
1007impl ::std::fmt::Debug for GstH274DigitallySignedContentVerification {
1008    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1009        f.debug_struct(&format!(
1010            "GstH274DigitallySignedContentVerification @ {self:p}"
1011        ))
1012        .field("id", &self.id)
1013        .field("verification_substream_id", &self.verification_substream_id)
1014        .field(
1015            "signature_length_in_octets_minus1",
1016            &self.signature_length_in_octets_minus1,
1017        )
1018        .field("signature", &self.signature)
1019        .field("signed_content_end_flag", &self.signed_content_end_flag)
1020        .finish()
1021    }
1022}
1023
1024#[derive(Copy, Clone)]
1025#[repr(C)]
1026pub struct GstH274RegisteredUserData {
1027    pub country_code: u8,
1028    pub country_code_extension: u8,
1029    pub size: c_uint,
1030    pub data: *const u8,
1031}
1032
1033impl ::std::fmt::Debug for GstH274RegisteredUserData {
1034    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1035        f.debug_struct(&format!("GstH274RegisteredUserData @ {self:p}"))
1036            .field("country_code", &self.country_code)
1037            .field("country_code_extension", &self.country_code_extension)
1038            .field("size", &self.size)
1039            .field("data", &self.data)
1040            .finish()
1041    }
1042}
1043
1044#[derive(Copy, Clone)]
1045#[repr(C)]
1046pub struct GstH274UserDataUnregistered {
1047    pub uuid: [u8; 16],
1048    pub data: *const u8,
1049    pub size: c_uint,
1050}
1051
1052impl ::std::fmt::Debug for GstH274UserDataUnregistered {
1053    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1054        f.debug_struct(&format!("GstH274UserDataUnregistered @ {self:p}"))
1055            .field("uuid", &self.uuid)
1056            .field("data", &self.data)
1057            .field("size", &self.size)
1058            .finish()
1059    }
1060}
1061
1062#[derive(Copy, Clone)]
1063#[repr(C)]
1064pub struct GstNavigationInterface {
1065    pub iface: gobject::GTypeInterface,
1066    pub send_event: Option<unsafe extern "C" fn(*mut GstNavigation, *mut gst::GstStructure)>,
1067    pub send_event_simple: Option<unsafe extern "C" fn(*mut GstNavigation, *mut gst::GstEvent)>,
1068}
1069
1070impl ::std::fmt::Debug for GstNavigationInterface {
1071    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1072        f.debug_struct(&format!("GstNavigationInterface @ {self:p}"))
1073            .field("iface", &self.iface)
1074            .field("send_event", &self.send_event)
1075            .field("send_event_simple", &self.send_event_simple)
1076            .finish()
1077    }
1078}
1079
1080#[derive(Copy, Clone)]
1081#[repr(C)]
1082pub struct GstVideoAFDMeta {
1083    pub meta: gst::GstMeta,
1084    pub field: u8,
1085    pub spec: GstVideoAFDSpec,
1086    pub afd: GstVideoAFDValue,
1087}
1088
1089impl ::std::fmt::Debug for GstVideoAFDMeta {
1090    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1091        f.debug_struct(&format!("GstVideoAFDMeta @ {self:p}"))
1092            .field("meta", &self.meta)
1093            .field("field", &self.field)
1094            .field("spec", &self.spec)
1095            .field("afd", &self.afd)
1096            .finish()
1097    }
1098}
1099
1100#[derive(Copy, Clone)]
1101#[repr(C)]
1102pub struct GstVideoAffineTransformationMeta {
1103    pub meta: gst::GstMeta,
1104    pub matrix: [c_float; 16],
1105}
1106
1107impl ::std::fmt::Debug for GstVideoAffineTransformationMeta {
1108    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1109        f.debug_struct(&format!("GstVideoAffineTransformationMeta @ {self:p}"))
1110            .field("meta", &self.meta)
1111            .field("matrix", &self.matrix)
1112            .finish()
1113    }
1114}
1115
1116#[derive(Copy, Clone)]
1117#[repr(C)]
1118pub struct GstVideoAggregatorClass {
1119    pub parent_class: gst_base::GstAggregatorClass,
1120    pub update_caps: Option<
1121        unsafe extern "C" fn(*mut GstVideoAggregator, *mut gst::GstCaps) -> *mut gst::GstCaps,
1122    >,
1123    pub aggregate_frames: Option<
1124        unsafe extern "C" fn(
1125            *mut GstVideoAggregator,
1126            *mut *mut gst::GstBuffer,
1127        ) -> gst::GstFlowReturn,
1128    >,
1129    pub create_output_buffer: Option<
1130        unsafe extern "C" fn(
1131            *mut GstVideoAggregator,
1132            *mut *mut gst::GstBuffer,
1133        ) -> gst::GstFlowReturn,
1134    >,
1135    pub find_best_format: Option<
1136        unsafe extern "C" fn(
1137            *mut GstVideoAggregator,
1138            *mut gst::GstCaps,
1139            *mut GstVideoInfo,
1140            *mut gboolean,
1141        ),
1142    >,
1143    pub _gst_reserved: [gpointer; 20],
1144}
1145
1146impl ::std::fmt::Debug for GstVideoAggregatorClass {
1147    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1148        f.debug_struct(&format!("GstVideoAggregatorClass @ {self:p}"))
1149            .field("update_caps", &self.update_caps)
1150            .field("aggregate_frames", &self.aggregate_frames)
1151            .field("create_output_buffer", &self.create_output_buffer)
1152            .field("find_best_format", &self.find_best_format)
1153            .finish()
1154    }
1155}
1156
1157#[derive(Copy, Clone)]
1158#[repr(C)]
1159pub struct GstVideoAggregatorConvertPadClass {
1160    pub parent_class: GstVideoAggregatorPadClass,
1161    pub create_conversion_info: Option<
1162        unsafe extern "C" fn(
1163            *mut GstVideoAggregatorConvertPad,
1164            *mut GstVideoAggregator,
1165            *mut GstVideoInfo,
1166        ),
1167    >,
1168    pub _gst_reserved: [gpointer; 4],
1169}
1170
1171impl ::std::fmt::Debug for GstVideoAggregatorConvertPadClass {
1172    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1173        f.debug_struct(&format!("GstVideoAggregatorConvertPadClass @ {self:p}"))
1174            .field("parent_class", &self.parent_class)
1175            .field("create_conversion_info", &self.create_conversion_info)
1176            .finish()
1177    }
1178}
1179
1180#[repr(C)]
1181#[allow(dead_code)]
1182pub struct _GstVideoAggregatorConvertPadPrivate {
1183    _data: [u8; 0],
1184    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1185}
1186
1187pub type GstVideoAggregatorConvertPadPrivate = _GstVideoAggregatorConvertPadPrivate;
1188
1189#[derive(Copy, Clone)]
1190#[repr(C)]
1191pub struct GstVideoAggregatorPadClass {
1192    pub parent_class: gst_base::GstAggregatorPadClass,
1193    pub update_conversion_info: Option<unsafe extern "C" fn(*mut GstVideoAggregatorPad)>,
1194    pub prepare_frame: Option<
1195        unsafe extern "C" fn(
1196            *mut GstVideoAggregatorPad,
1197            *mut GstVideoAggregator,
1198            *mut gst::GstBuffer,
1199            *mut GstVideoFrame,
1200        ) -> gboolean,
1201    >,
1202    pub clean_frame: Option<
1203        unsafe extern "C" fn(
1204            *mut GstVideoAggregatorPad,
1205            *mut GstVideoAggregator,
1206            *mut GstVideoFrame,
1207        ),
1208    >,
1209    pub prepare_frame_start: Option<
1210        unsafe extern "C" fn(
1211            *mut GstVideoAggregatorPad,
1212            *mut GstVideoAggregator,
1213            *mut gst::GstBuffer,
1214            *mut GstVideoFrame,
1215        ),
1216    >,
1217    pub prepare_frame_finish: Option<
1218        unsafe extern "C" fn(
1219            *mut GstVideoAggregatorPad,
1220            *mut GstVideoAggregator,
1221            *mut GstVideoFrame,
1222        ),
1223    >,
1224    pub _gst_reserved: [gpointer; 18],
1225}
1226
1227impl ::std::fmt::Debug for GstVideoAggregatorPadClass {
1228    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1229        f.debug_struct(&format!("GstVideoAggregatorPadClass @ {self:p}"))
1230            .field("parent_class", &self.parent_class)
1231            .field("update_conversion_info", &self.update_conversion_info)
1232            .field("prepare_frame", &self.prepare_frame)
1233            .field("clean_frame", &self.clean_frame)
1234            .field("prepare_frame_start", &self.prepare_frame_start)
1235            .field("prepare_frame_finish", &self.prepare_frame_finish)
1236            .field("_gst_reserved", &self._gst_reserved)
1237            .finish()
1238    }
1239}
1240
1241#[repr(C)]
1242#[allow(dead_code)]
1243pub struct _GstVideoAggregatorPadPrivate {
1244    _data: [u8; 0],
1245    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1246}
1247
1248pub type GstVideoAggregatorPadPrivate = _GstVideoAggregatorPadPrivate;
1249
1250#[derive(Copy, Clone)]
1251#[repr(C)]
1252pub struct GstVideoAggregatorParallelConvertPadClass {
1253    pub parent_class: GstVideoAggregatorConvertPadClass,
1254    pub _gst_reserved: [gpointer; 4],
1255}
1256
1257impl ::std::fmt::Debug for GstVideoAggregatorParallelConvertPadClass {
1258    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1259        f.debug_struct(&format!(
1260            "GstVideoAggregatorParallelConvertPadClass @ {self:p}"
1261        ))
1262        .field("parent_class", &self.parent_class)
1263        .finish()
1264    }
1265}
1266
1267#[repr(C)]
1268#[allow(dead_code)]
1269pub struct _GstVideoAggregatorPrivate {
1270    _data: [u8; 0],
1271    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1272}
1273
1274pub type GstVideoAggregatorPrivate = _GstVideoAggregatorPrivate;
1275
1276#[derive(Copy, Clone)]
1277#[repr(C)]
1278pub struct GstVideoAlignment {
1279    pub padding_top: c_uint,
1280    pub padding_bottom: c_uint,
1281    pub padding_left: c_uint,
1282    pub padding_right: c_uint,
1283    pub stride_align: [c_uint; 4],
1284}
1285
1286impl ::std::fmt::Debug for GstVideoAlignment {
1287    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1288        f.debug_struct(&format!("GstVideoAlignment @ {self:p}"))
1289            .field("padding_top", &self.padding_top)
1290            .field("padding_bottom", &self.padding_bottom)
1291            .field("padding_left", &self.padding_left)
1292            .field("padding_right", &self.padding_right)
1293            .field("stride_align", &self.stride_align)
1294            .finish()
1295    }
1296}
1297
1298#[derive(Copy, Clone)]
1299#[repr(C)]
1300pub struct GstVideoAncillary {
1301    pub DID: u8,
1302    pub SDID_block_number: u8,
1303    pub data_count: u8,
1304    pub data: [u8; 256],
1305    pub _gst_reserved: [gpointer; 4],
1306}
1307
1308impl ::std::fmt::Debug for GstVideoAncillary {
1309    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1310        f.debug_struct(&format!("GstVideoAncillary @ {self:p}"))
1311            .field("DID", &self.DID)
1312            .field("SDID_block_number", &self.SDID_block_number)
1313            .field("data_count", &self.data_count)
1314            .finish()
1315    }
1316}
1317
1318#[derive(Copy, Clone)]
1319#[repr(C)]
1320pub struct GstVideoBarMeta {
1321    pub meta: gst::GstMeta,
1322    pub field: u8,
1323    pub is_letterbox: gboolean,
1324    pub bar_data1: c_uint,
1325    pub bar_data2: c_uint,
1326}
1327
1328impl ::std::fmt::Debug for GstVideoBarMeta {
1329    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1330        f.debug_struct(&format!("GstVideoBarMeta @ {self:p}"))
1331            .field("meta", &self.meta)
1332            .field("field", &self.field)
1333            .field("is_letterbox", &self.is_letterbox)
1334            .field("bar_data1", &self.bar_data1)
1335            .field("bar_data2", &self.bar_data2)
1336            .finish()
1337    }
1338}
1339
1340#[derive(Copy, Clone)]
1341#[repr(C)]
1342pub struct GstVideoBufferPoolClass {
1343    pub parent_class: gst::GstBufferPoolClass,
1344}
1345
1346impl ::std::fmt::Debug for GstVideoBufferPoolClass {
1347    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1348        f.debug_struct(&format!("GstVideoBufferPoolClass @ {self:p}"))
1349            .field("parent_class", &self.parent_class)
1350            .finish()
1351    }
1352}
1353
1354#[repr(C)]
1355#[allow(dead_code)]
1356pub struct _GstVideoBufferPoolPrivate {
1357    _data: [u8; 0],
1358    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1359}
1360
1361pub type GstVideoBufferPoolPrivate = _GstVideoBufferPoolPrivate;
1362
1363#[derive(Copy, Clone)]
1364#[repr(C)]
1365pub struct GstVideoCaptionMeta {
1366    pub meta: gst::GstMeta,
1367    pub caption_type: GstVideoCaptionType,
1368    pub data: *mut u8,
1369    pub size: size_t,
1370}
1371
1372impl ::std::fmt::Debug for GstVideoCaptionMeta {
1373    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1374        f.debug_struct(&format!("GstVideoCaptionMeta @ {self:p}"))
1375            .field("meta", &self.meta)
1376            .field("caption_type", &self.caption_type)
1377            .field("data", &self.data)
1378            .field("size", &self.size)
1379            .finish()
1380    }
1381}
1382
1383#[repr(C)]
1384#[allow(dead_code)]
1385pub struct _GstVideoChromaResample {
1386    _data: [u8; 0],
1387    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1388}
1389
1390pub type GstVideoChromaResample = _GstVideoChromaResample;
1391
1392#[derive(Copy, Clone)]
1393#[repr(C)]
1394pub struct GstVideoCodecAlphaMeta {
1395    pub meta: gst::GstMeta,
1396    pub buffer: *mut gst::GstBuffer,
1397}
1398
1399impl ::std::fmt::Debug for GstVideoCodecAlphaMeta {
1400    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1401        f.debug_struct(&format!("GstVideoCodecAlphaMeta @ {self:p}"))
1402            .field("meta", &self.meta)
1403            .field("buffer", &self.buffer)
1404            .finish()
1405    }
1406}
1407
1408#[derive(Copy, Clone)]
1409#[repr(C)]
1410pub struct GstVideoCodecFrame {
1411    pub ref_count: c_int,
1412    pub flags: u32,
1413    pub system_frame_number: u32,
1414    pub decode_frame_number: u32,
1415    pub presentation_frame_number: u32,
1416    pub dts: gst::GstClockTime,
1417    pub pts: gst::GstClockTime,
1418    pub duration: gst::GstClockTime,
1419    pub distance_from_sync: c_int,
1420    pub input_buffer: *mut gst::GstBuffer,
1421    pub output_buffer: *mut gst::GstBuffer,
1422    pub deadline: gst::GstClockTime,
1423    pub events: *mut glib::GList,
1424    pub user_data: gpointer,
1425    pub user_data_destroy_notify: glib::GDestroyNotify,
1426    pub abidata: GstVideoCodecFrame_abidata,
1427}
1428
1429impl ::std::fmt::Debug for GstVideoCodecFrame {
1430    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1431        f.debug_struct(&format!("GstVideoCodecFrame @ {self:p}"))
1432            .field("system_frame_number", &self.system_frame_number)
1433            .field("dts", &self.dts)
1434            .field("pts", &self.pts)
1435            .field("duration", &self.duration)
1436            .field("distance_from_sync", &self.distance_from_sync)
1437            .field("input_buffer", &self.input_buffer)
1438            .field("output_buffer", &self.output_buffer)
1439            .field("deadline", &self.deadline)
1440            .field("abidata", &self.abidata)
1441            .finish()
1442    }
1443}
1444
1445#[derive(Copy, Clone)]
1446#[repr(C)]
1447pub struct GstVideoCodecFrame_abidata_ABI {
1448    pub ts: gst::GstClockTime,
1449    pub ts2: gst::GstClockTime,
1450    pub num_subframes: c_uint,
1451    pub subframes_processed: c_uint,
1452}
1453
1454impl ::std::fmt::Debug for GstVideoCodecFrame_abidata_ABI {
1455    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1456        f.debug_struct(&format!("GstVideoCodecFrame_abidata_ABI @ {self:p}"))
1457            .finish()
1458    }
1459}
1460
1461#[derive(Copy, Clone)]
1462#[repr(C)]
1463pub struct GstVideoCodecState {
1464    pub ref_count: c_int,
1465    pub info: GstVideoInfo,
1466    pub caps: *mut gst::GstCaps,
1467    pub codec_data: *mut gst::GstBuffer,
1468    pub allocation_caps: *mut gst::GstCaps,
1469    pub mastering_display_info: *mut GstVideoMasteringDisplayInfo,
1470    pub content_light_level: *mut GstVideoContentLightLevel,
1471    pub padding: [gpointer; 17],
1472}
1473
1474impl ::std::fmt::Debug for GstVideoCodecState {
1475    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1476        f.debug_struct(&format!("GstVideoCodecState @ {self:p}"))
1477            .field("info", &self.info)
1478            .field("caps", &self.caps)
1479            .field("codec_data", &self.codec_data)
1480            .field("allocation_caps", &self.allocation_caps)
1481            .field("mastering_display_info", &self.mastering_display_info)
1482            .field("content_light_level", &self.content_light_level)
1483            .finish()
1484    }
1485}
1486
1487#[derive(Copy, Clone)]
1488#[repr(C)]
1489pub struct GstVideoColorPrimariesInfo {
1490    pub primaries: GstVideoColorPrimaries,
1491    pub Wx: c_double,
1492    pub Wy: c_double,
1493    pub Rx: c_double,
1494    pub Ry: c_double,
1495    pub Gx: c_double,
1496    pub Gy: c_double,
1497    pub Bx: c_double,
1498    pub By: c_double,
1499}
1500
1501impl ::std::fmt::Debug for GstVideoColorPrimariesInfo {
1502    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1503        f.debug_struct(&format!("GstVideoColorPrimariesInfo @ {self:p}"))
1504            .field("primaries", &self.primaries)
1505            .field("Wx", &self.Wx)
1506            .field("Wy", &self.Wy)
1507            .field("Rx", &self.Rx)
1508            .field("Ry", &self.Ry)
1509            .field("Gx", &self.Gx)
1510            .field("Gy", &self.Gy)
1511            .field("Bx", &self.Bx)
1512            .field("By", &self.By)
1513            .finish()
1514    }
1515}
1516
1517#[derive(Copy, Clone)]
1518#[repr(C)]
1519pub struct GstVideoColorVolumeTransformation {
1520    pub window_upper_left_corner_x: u16,
1521    pub window_upper_left_corner_y: u16,
1522    pub window_lower_right_corner_x: u16,
1523    pub window_lower_right_corner_y: u16,
1524    pub center_of_ellipse_x: u16,
1525    pub center_of_ellipse_y: u16,
1526    pub rotation_angle: u8,
1527    pub semimajor_axis_internal_ellipse: u16,
1528    pub semimajor_axis_external_ellipse: u16,
1529    pub semiminor_axis_external_ellipse: u16,
1530    pub overlap_process_option: u8,
1531    pub maxscl: [u32; 3],
1532    pub average_maxrgb: u32,
1533    pub num_distributions: u8,
1534    pub distribution_index: [u8; 16],
1535    pub distribution_values: [u32; 16],
1536    pub fraction_bright_pixels: u16,
1537    pub tone_mapping_flag: u8,
1538    pub knee_point_x: u16,
1539    pub knee_point_y: u16,
1540    pub num_bezier_curve_anchors: u8,
1541    pub bezier_curve_anchors: [u16; 16],
1542    pub color_saturation_mapping_flag: u8,
1543    pub color_saturation_weight: u8,
1544}
1545
1546impl ::std::fmt::Debug for GstVideoColorVolumeTransformation {
1547    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1548        f.debug_struct(&format!("GstVideoColorVolumeTransformation @ {self:p}"))
1549            .field(
1550                "window_upper_left_corner_x",
1551                &self.window_upper_left_corner_x,
1552            )
1553            .field(
1554                "window_upper_left_corner_y",
1555                &self.window_upper_left_corner_y,
1556            )
1557            .field(
1558                "window_lower_right_corner_x",
1559                &self.window_lower_right_corner_x,
1560            )
1561            .field(
1562                "window_lower_right_corner_y",
1563                &self.window_lower_right_corner_y,
1564            )
1565            .field("center_of_ellipse_x", &self.center_of_ellipse_x)
1566            .field("center_of_ellipse_y", &self.center_of_ellipse_y)
1567            .field("rotation_angle", &self.rotation_angle)
1568            .field(
1569                "semimajor_axis_internal_ellipse",
1570                &self.semimajor_axis_internal_ellipse,
1571            )
1572            .field(
1573                "semimajor_axis_external_ellipse",
1574                &self.semimajor_axis_external_ellipse,
1575            )
1576            .field(
1577                "semiminor_axis_external_ellipse",
1578                &self.semiminor_axis_external_ellipse,
1579            )
1580            .field("overlap_process_option", &self.overlap_process_option)
1581            .field("maxscl", &self.maxscl)
1582            .field("average_maxrgb", &self.average_maxrgb)
1583            .field("num_distributions", &self.num_distributions)
1584            .field("distribution_index", &self.distribution_index)
1585            .field("distribution_values", &self.distribution_values)
1586            .field("fraction_bright_pixels", &self.fraction_bright_pixels)
1587            .field("tone_mapping_flag", &self.tone_mapping_flag)
1588            .field("knee_point_x", &self.knee_point_x)
1589            .field("knee_point_y", &self.knee_point_y)
1590            .field("num_bezier_curve_anchors", &self.num_bezier_curve_anchors)
1591            .field("bezier_curve_anchors", &self.bezier_curve_anchors)
1592            .field(
1593                "color_saturation_mapping_flag",
1594                &self.color_saturation_mapping_flag,
1595            )
1596            .field("color_saturation_weight", &self.color_saturation_weight)
1597            .finish()
1598    }
1599}
1600
1601#[derive(Copy, Clone)]
1602#[repr(C)]
1603pub struct GstVideoColorimetry {
1604    pub range: GstVideoColorRange,
1605    pub matrix: GstVideoColorMatrix,
1606    pub transfer: GstVideoTransferFunction,
1607    pub primaries: GstVideoColorPrimaries,
1608}
1609
1610impl ::std::fmt::Debug for GstVideoColorimetry {
1611    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1612        f.debug_struct(&format!("GstVideoColorimetry @ {self:p}"))
1613            .field("range", &self.range)
1614            .field("matrix", &self.matrix)
1615            .field("transfer", &self.transfer)
1616            .field("primaries", &self.primaries)
1617            .finish()
1618    }
1619}
1620
1621#[derive(Copy, Clone)]
1622#[repr(C)]
1623pub struct GstVideoContentLightLevel {
1624    pub max_content_light_level: u16,
1625    pub max_frame_average_light_level: u16,
1626    pub _gst_reserved: [gpointer; 4],
1627}
1628
1629impl ::std::fmt::Debug for GstVideoContentLightLevel {
1630    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1631        f.debug_struct(&format!("GstVideoContentLightLevel @ {self:p}"))
1632            .field("max_content_light_level", &self.max_content_light_level)
1633            .field(
1634                "max_frame_average_light_level",
1635                &self.max_frame_average_light_level,
1636            )
1637            .finish()
1638    }
1639}
1640
1641#[repr(C)]
1642#[allow(dead_code)]
1643pub struct _GstVideoConverter {
1644    _data: [u8; 0],
1645    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1646}
1647
1648pub type GstVideoConverter = _GstVideoConverter;
1649
1650#[derive(Copy, Clone)]
1651#[repr(C)]
1652pub struct GstVideoCropMeta {
1653    pub meta: gst::GstMeta,
1654    pub x: c_uint,
1655    pub y: c_uint,
1656    pub width: c_uint,
1657    pub height: c_uint,
1658}
1659
1660impl ::std::fmt::Debug for GstVideoCropMeta {
1661    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1662        f.debug_struct(&format!("GstVideoCropMeta @ {self:p}"))
1663            .field("meta", &self.meta)
1664            .field("x", &self.x)
1665            .field("y", &self.y)
1666            .field("width", &self.width)
1667            .field("height", &self.height)
1668            .finish()
1669    }
1670}
1671
1672#[derive(Copy, Clone)]
1673#[repr(C)]
1674pub struct GstVideoDSCInitializationMeta {
1675    pub meta: gst::GstMeta,
1676    pub dsc_initialization: GstH274DigitallySignedContentInitialization,
1677}
1678
1679impl ::std::fmt::Debug for GstVideoDSCInitializationMeta {
1680    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1681        f.debug_struct(&format!("GstVideoDSCInitializationMeta @ {self:p}"))
1682            .field("meta", &self.meta)
1683            .field("dsc_initialization", &self.dsc_initialization)
1684            .finish()
1685    }
1686}
1687
1688#[derive(Copy, Clone)]
1689#[repr(C)]
1690pub struct GstVideoDSCSelectionMeta {
1691    pub meta: gst::GstMeta,
1692    pub dsc_selection: GstH274DigitallySignedContentSelection,
1693}
1694
1695impl ::std::fmt::Debug for GstVideoDSCSelectionMeta {
1696    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1697        f.debug_struct(&format!("GstVideoDSCSelectionMeta @ {self:p}"))
1698            .field("meta", &self.meta)
1699            .field("dsc_selection", &self.dsc_selection)
1700            .finish()
1701    }
1702}
1703
1704#[derive(Copy, Clone)]
1705#[repr(C)]
1706pub struct GstVideoDSCVerificationMeta {
1707    pub meta: gst::GstMeta,
1708    pub dsc_verification: GstH274DigitallySignedContentVerification,
1709}
1710
1711impl ::std::fmt::Debug for GstVideoDSCVerificationMeta {
1712    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1713        f.debug_struct(&format!("GstVideoDSCVerificationMeta @ {self:p}"))
1714            .field("meta", &self.meta)
1715            .field("dsc_verification", &self.dsc_verification)
1716            .finish()
1717    }
1718}
1719
1720#[derive(Copy, Clone)]
1721#[repr(C)]
1722pub struct GstVideoDecoderClass {
1723    pub element_class: gst::GstElementClass,
1724    pub open: Option<unsafe extern "C" fn(*mut GstVideoDecoder) -> gboolean>,
1725    pub close: Option<unsafe extern "C" fn(*mut GstVideoDecoder) -> gboolean>,
1726    pub start: Option<unsafe extern "C" fn(*mut GstVideoDecoder) -> gboolean>,
1727    pub stop: Option<unsafe extern "C" fn(*mut GstVideoDecoder) -> gboolean>,
1728    pub parse: Option<
1729        unsafe extern "C" fn(
1730            *mut GstVideoDecoder,
1731            *mut GstVideoCodecFrame,
1732            *mut gst_base::GstAdapter,
1733            gboolean,
1734        ) -> gst::GstFlowReturn,
1735    >,
1736    pub set_format:
1737        Option<unsafe extern "C" fn(*mut GstVideoDecoder, *mut GstVideoCodecState) -> gboolean>,
1738    pub reset: Option<unsafe extern "C" fn(*mut GstVideoDecoder, gboolean) -> gboolean>,
1739    pub finish: Option<unsafe extern "C" fn(*mut GstVideoDecoder) -> gst::GstFlowReturn>,
1740    pub handle_frame: Option<
1741        unsafe extern "C" fn(*mut GstVideoDecoder, *mut GstVideoCodecFrame) -> gst::GstFlowReturn,
1742    >,
1743    pub sink_event:
1744        Option<unsafe extern "C" fn(*mut GstVideoDecoder, *mut gst::GstEvent) -> gboolean>,
1745    pub src_event:
1746        Option<unsafe extern "C" fn(*mut GstVideoDecoder, *mut gst::GstEvent) -> gboolean>,
1747    pub negotiate: Option<unsafe extern "C" fn(*mut GstVideoDecoder) -> gboolean>,
1748    pub decide_allocation:
1749        Option<unsafe extern "C" fn(*mut GstVideoDecoder, *mut gst::GstQuery) -> gboolean>,
1750    pub propose_allocation:
1751        Option<unsafe extern "C" fn(*mut GstVideoDecoder, *mut gst::GstQuery) -> gboolean>,
1752    pub flush: Option<unsafe extern "C" fn(*mut GstVideoDecoder) -> gboolean>,
1753    pub sink_query:
1754        Option<unsafe extern "C" fn(*mut GstVideoDecoder, *mut gst::GstQuery) -> gboolean>,
1755    pub src_query:
1756        Option<unsafe extern "C" fn(*mut GstVideoDecoder, *mut gst::GstQuery) -> gboolean>,
1757    pub getcaps:
1758        Option<unsafe extern "C" fn(*mut GstVideoDecoder, *mut gst::GstCaps) -> *mut gst::GstCaps>,
1759    pub drain: Option<unsafe extern "C" fn(*mut GstVideoDecoder) -> gst::GstFlowReturn>,
1760    pub transform_meta: Option<
1761        unsafe extern "C" fn(
1762            *mut GstVideoDecoder,
1763            *mut GstVideoCodecFrame,
1764            *mut gst::GstMeta,
1765        ) -> gboolean,
1766    >,
1767    pub handle_missing_data: Option<
1768        unsafe extern "C" fn(
1769            *mut GstVideoDecoder,
1770            gst::GstClockTime,
1771            gst::GstClockTime,
1772        ) -> gboolean,
1773    >,
1774    pub padding: [gpointer; 13],
1775}
1776
1777impl ::std::fmt::Debug for GstVideoDecoderClass {
1778    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1779        f.debug_struct(&format!("GstVideoDecoderClass @ {self:p}"))
1780            .field("open", &self.open)
1781            .field("close", &self.close)
1782            .field("start", &self.start)
1783            .field("stop", &self.stop)
1784            .field("parse", &self.parse)
1785            .field("set_format", &self.set_format)
1786            .field("reset", &self.reset)
1787            .field("finish", &self.finish)
1788            .field("handle_frame", &self.handle_frame)
1789            .field("sink_event", &self.sink_event)
1790            .field("src_event", &self.src_event)
1791            .field("negotiate", &self.negotiate)
1792            .field("decide_allocation", &self.decide_allocation)
1793            .field("propose_allocation", &self.propose_allocation)
1794            .field("flush", &self.flush)
1795            .field("sink_query", &self.sink_query)
1796            .field("src_query", &self.src_query)
1797            .field("getcaps", &self.getcaps)
1798            .field("drain", &self.drain)
1799            .field("transform_meta", &self.transform_meta)
1800            .field("handle_missing_data", &self.handle_missing_data)
1801            .finish()
1802    }
1803}
1804
1805#[repr(C)]
1806#[allow(dead_code)]
1807pub struct _GstVideoDecoderPrivate {
1808    _data: [u8; 0],
1809    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1810}
1811
1812pub type GstVideoDecoderPrivate = _GstVideoDecoderPrivate;
1813
1814#[derive(Copy, Clone)]
1815#[repr(C)]
1816pub struct GstVideoDirectionInterface {
1817    pub iface: gobject::GTypeInterface,
1818}
1819
1820impl ::std::fmt::Debug for GstVideoDirectionInterface {
1821    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1822        f.debug_struct(&format!("GstVideoDirectionInterface @ {self:p}"))
1823            .field("iface", &self.iface)
1824            .finish()
1825    }
1826}
1827
1828#[repr(C)]
1829#[allow(dead_code)]
1830pub struct _GstVideoDither {
1831    _data: [u8; 0],
1832    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1833}
1834
1835pub type GstVideoDither = _GstVideoDither;
1836
1837#[derive(Copy, Clone)]
1838#[repr(C)]
1839pub struct GstVideoDmabufPoolClass {
1840    pub parent_class: GstVideoBufferPoolClass,
1841}
1842
1843impl ::std::fmt::Debug for GstVideoDmabufPoolClass {
1844    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1845        f.debug_struct(&format!("GstVideoDmabufPoolClass @ {self:p}"))
1846            .field("parent_class", &self.parent_class)
1847            .finish()
1848    }
1849}
1850
1851#[derive(Copy, Clone)]
1852#[repr(C)]
1853pub struct GstVideoEncoderClass {
1854    pub element_class: gst::GstElementClass,
1855    pub open: Option<unsafe extern "C" fn(*mut GstVideoEncoder) -> gboolean>,
1856    pub close: Option<unsafe extern "C" fn(*mut GstVideoEncoder) -> gboolean>,
1857    pub start: Option<unsafe extern "C" fn(*mut GstVideoEncoder) -> gboolean>,
1858    pub stop: Option<unsafe extern "C" fn(*mut GstVideoEncoder) -> gboolean>,
1859    pub set_format:
1860        Option<unsafe extern "C" fn(*mut GstVideoEncoder, *mut GstVideoCodecState) -> gboolean>,
1861    pub handle_frame: Option<
1862        unsafe extern "C" fn(*mut GstVideoEncoder, *mut GstVideoCodecFrame) -> gst::GstFlowReturn,
1863    >,
1864    pub reset: Option<unsafe extern "C" fn(*mut GstVideoEncoder, gboolean) -> gboolean>,
1865    pub finish: Option<unsafe extern "C" fn(*mut GstVideoEncoder) -> gst::GstFlowReturn>,
1866    pub pre_push: Option<
1867        unsafe extern "C" fn(*mut GstVideoEncoder, *mut GstVideoCodecFrame) -> gst::GstFlowReturn,
1868    >,
1869    pub getcaps:
1870        Option<unsafe extern "C" fn(*mut GstVideoEncoder, *mut gst::GstCaps) -> *mut gst::GstCaps>,
1871    pub sink_event:
1872        Option<unsafe extern "C" fn(*mut GstVideoEncoder, *mut gst::GstEvent) -> gboolean>,
1873    pub src_event:
1874        Option<unsafe extern "C" fn(*mut GstVideoEncoder, *mut gst::GstEvent) -> gboolean>,
1875    pub negotiate: Option<unsafe extern "C" fn(*mut GstVideoEncoder) -> gboolean>,
1876    pub decide_allocation:
1877        Option<unsafe extern "C" fn(*mut GstVideoEncoder, *mut gst::GstQuery) -> gboolean>,
1878    pub propose_allocation:
1879        Option<unsafe extern "C" fn(*mut GstVideoEncoder, *mut gst::GstQuery) -> gboolean>,
1880    pub flush: Option<unsafe extern "C" fn(*mut GstVideoEncoder) -> gboolean>,
1881    pub sink_query:
1882        Option<unsafe extern "C" fn(*mut GstVideoEncoder, *mut gst::GstQuery) -> gboolean>,
1883    pub src_query:
1884        Option<unsafe extern "C" fn(*mut GstVideoEncoder, *mut gst::GstQuery) -> gboolean>,
1885    pub transform_meta: Option<
1886        unsafe extern "C" fn(
1887            *mut GstVideoEncoder,
1888            *mut GstVideoCodecFrame,
1889            *mut gst::GstMeta,
1890        ) -> gboolean,
1891    >,
1892    pub prepare_allocator:
1893        Option<unsafe extern "C" fn(*mut GstVideoEncoder, *mut gst::GstCaps) -> gboolean>,
1894    pub _gst_reserved: [gpointer; 15],
1895}
1896
1897impl ::std::fmt::Debug for GstVideoEncoderClass {
1898    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1899        f.debug_struct(&format!("GstVideoEncoderClass @ {self:p}"))
1900            .field("open", &self.open)
1901            .field("close", &self.close)
1902            .field("start", &self.start)
1903            .field("stop", &self.stop)
1904            .field("set_format", &self.set_format)
1905            .field("handle_frame", &self.handle_frame)
1906            .field("reset", &self.reset)
1907            .field("finish", &self.finish)
1908            .field("pre_push", &self.pre_push)
1909            .field("getcaps", &self.getcaps)
1910            .field("sink_event", &self.sink_event)
1911            .field("src_event", &self.src_event)
1912            .field("negotiate", &self.negotiate)
1913            .field("decide_allocation", &self.decide_allocation)
1914            .field("propose_allocation", &self.propose_allocation)
1915            .field("flush", &self.flush)
1916            .field("sink_query", &self.sink_query)
1917            .field("src_query", &self.src_query)
1918            .field("transform_meta", &self.transform_meta)
1919            .field("prepare_allocator", &self.prepare_allocator)
1920            .finish()
1921    }
1922}
1923
1924#[repr(C)]
1925#[allow(dead_code)]
1926pub struct _GstVideoEncoderPrivate {
1927    _data: [u8; 0],
1928    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1929}
1930
1931pub type GstVideoEncoderPrivate = _GstVideoEncoderPrivate;
1932
1933#[derive(Copy, Clone)]
1934#[repr(C)]
1935pub struct GstVideoFilterClass {
1936    pub parent_class: gst_base::GstBaseTransformClass,
1937    pub set_info: Option<
1938        unsafe extern "C" fn(
1939            *mut GstVideoFilter,
1940            *mut gst::GstCaps,
1941            *mut GstVideoInfo,
1942            *mut gst::GstCaps,
1943            *mut GstVideoInfo,
1944        ) -> gboolean,
1945    >,
1946    pub transform_frame: Option<
1947        unsafe extern "C" fn(
1948            *mut GstVideoFilter,
1949            *mut GstVideoFrame,
1950            *mut GstVideoFrame,
1951        ) -> gst::GstFlowReturn,
1952    >,
1953    pub transform_frame_ip:
1954        Option<unsafe extern "C" fn(*mut GstVideoFilter, *mut GstVideoFrame) -> gst::GstFlowReturn>,
1955    pub _gst_reserved: [gpointer; 4],
1956}
1957
1958impl ::std::fmt::Debug for GstVideoFilterClass {
1959    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1960        f.debug_struct(&format!("GstVideoFilterClass @ {self:p}"))
1961            .field("parent_class", &self.parent_class)
1962            .field("set_info", &self.set_info)
1963            .field("transform_frame", &self.transform_frame)
1964            .field("transform_frame_ip", &self.transform_frame_ip)
1965            .finish()
1966    }
1967}
1968
1969#[derive(Copy, Clone)]
1970#[repr(C)]
1971pub struct GstVideoFormatInfo {
1972    pub format: GstVideoFormat,
1973    pub name: *const c_char,
1974    pub description: *const c_char,
1975    pub flags: GstVideoFormatFlags,
1976    pub bits: c_uint,
1977    pub n_components: c_uint,
1978    pub shift: [c_uint; 4],
1979    pub depth: [c_uint; 4],
1980    pub pixel_stride: [c_int; 4],
1981    pub n_planes: c_uint,
1982    pub plane: [c_uint; 4],
1983    pub poffset: [c_uint; 4],
1984    pub w_sub: [c_uint; 4],
1985    pub h_sub: [c_uint; 4],
1986    pub unpack_format: GstVideoFormat,
1987    pub unpack_func: GstVideoFormatUnpack,
1988    pub pack_lines: c_int,
1989    pub pack_func: GstVideoFormatPack,
1990    pub tile_mode: GstVideoTileMode,
1991    pub tile_ws: c_uint,
1992    pub tile_hs: c_uint,
1993    pub tile_info: [GstVideoTileInfo; 4],
1994}
1995
1996impl ::std::fmt::Debug for GstVideoFormatInfo {
1997    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1998        f.debug_struct(&format!("GstVideoFormatInfo @ {self:p}"))
1999            .field("format", &self.format)
2000            .field("name", &self.name)
2001            .field("description", &self.description)
2002            .field("flags", &self.flags)
2003            .field("bits", &self.bits)
2004            .field("n_components", &self.n_components)
2005            .field("shift", &self.shift)
2006            .field("depth", &self.depth)
2007            .field("pixel_stride", &self.pixel_stride)
2008            .field("n_planes", &self.n_planes)
2009            .field("plane", &self.plane)
2010            .field("poffset", &self.poffset)
2011            .field("w_sub", &self.w_sub)
2012            .field("h_sub", &self.h_sub)
2013            .field("unpack_format", &self.unpack_format)
2014            .field("unpack_func", &self.unpack_func)
2015            .field("pack_lines", &self.pack_lines)
2016            .field("pack_func", &self.pack_func)
2017            .field("tile_mode", &self.tile_mode)
2018            .field("tile_ws", &self.tile_ws)
2019            .field("tile_hs", &self.tile_hs)
2020            .field("tile_info", &self.tile_info)
2021            .finish()
2022    }
2023}
2024
2025#[derive(Copy, Clone)]
2026#[repr(C)]
2027pub struct GstVideoFrame {
2028    pub info: GstVideoInfo,
2029    pub flags: GstVideoFrameFlags,
2030    pub buffer: *mut gst::GstBuffer,
2031    pub meta: gpointer,
2032    pub id: c_int,
2033    pub data: [gpointer; 4],
2034    pub map: [gst::GstMapInfo; 4],
2035    pub _gst_reserved: [gpointer; 4],
2036}
2037
2038impl ::std::fmt::Debug for GstVideoFrame {
2039    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2040        f.debug_struct(&format!("GstVideoFrame @ {self:p}"))
2041            .field("info", &self.info)
2042            .field("flags", &self.flags)
2043            .field("buffer", &self.buffer)
2044            .field("meta", &self.meta)
2045            .field("id", &self.id)
2046            .field("data", &self.data)
2047            .field("map", &self.map)
2048            .finish()
2049    }
2050}
2051
2052#[derive(Copy, Clone)]
2053#[repr(C)]
2054pub struct GstVideoGLTextureUploadMeta {
2055    pub meta: gst::GstMeta,
2056    pub texture_orientation: GstVideoGLTextureOrientation,
2057    pub n_textures: c_uint,
2058    pub texture_type: [GstVideoGLTextureType; 4],
2059    pub buffer: *mut gst::GstBuffer,
2060    pub upload: GstVideoGLTextureUpload,
2061    pub user_data: gpointer,
2062    pub user_data_copy: gobject::GBoxedCopyFunc,
2063    pub user_data_free: gobject::GBoxedFreeFunc,
2064}
2065
2066impl ::std::fmt::Debug for GstVideoGLTextureUploadMeta {
2067    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2068        f.debug_struct(&format!("GstVideoGLTextureUploadMeta @ {self:p}"))
2069            .field("meta", &self.meta)
2070            .field("texture_orientation", &self.texture_orientation)
2071            .field("n_textures", &self.n_textures)
2072            .field("texture_type", &self.texture_type)
2073            .finish()
2074    }
2075}
2076
2077#[derive(Copy, Clone)]
2078#[repr(C)]
2079pub struct GstVideoHDR10Plus {
2080    pub application_identifier: u8,
2081    pub application_version: u8,
2082    pub num_windows: u8,
2083    pub processing_window: [GstVideoColorVolumeTransformation; 1],
2084    pub targeted_system_display_maximum_luminance: u32,
2085    pub targeted_system_display_actual_peak_luminance_flag: u8,
2086    pub num_rows_targeted_system_display_actual_peak_luminance: u8,
2087    pub num_cols_targeted_system_display_actual_peak_luminance: u8,
2088    pub targeted_system_display_actual_peak_luminance: [u8; 625],
2089    pub mastering_display_actual_peak_luminance_flag: u8,
2090    pub num_rows_mastering_display_actual_peak_luminance: u8,
2091    pub num_cols_mastering_display_actual_peak_luminance: u8,
2092    pub mastering_display_actual_peak_luminance: [u8; 625],
2093}
2094
2095impl ::std::fmt::Debug for GstVideoHDR10Plus {
2096    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2097        f.debug_struct(&format!("GstVideoHDR10Plus @ {self:p}"))
2098            .field("application_identifier", &self.application_identifier)
2099            .field("application_version", &self.application_version)
2100            .field("num_windows", &self.num_windows)
2101            .field("processing_window", &self.processing_window)
2102            .field(
2103                "targeted_system_display_maximum_luminance",
2104                &self.targeted_system_display_maximum_luminance,
2105            )
2106            .field(
2107                "targeted_system_display_actual_peak_luminance_flag",
2108                &self.targeted_system_display_actual_peak_luminance_flag,
2109            )
2110            .field(
2111                "num_rows_targeted_system_display_actual_peak_luminance",
2112                &self.num_rows_targeted_system_display_actual_peak_luminance,
2113            )
2114            .field(
2115                "num_cols_targeted_system_display_actual_peak_luminance",
2116                &self.num_cols_targeted_system_display_actual_peak_luminance,
2117            )
2118            .field(
2119                "mastering_display_actual_peak_luminance_flag",
2120                &self.mastering_display_actual_peak_luminance_flag,
2121            )
2122            .field(
2123                "num_rows_mastering_display_actual_peak_luminance",
2124                &self.num_rows_mastering_display_actual_peak_luminance,
2125            )
2126            .field(
2127                "num_cols_mastering_display_actual_peak_luminance",
2128                &self.num_cols_mastering_display_actual_peak_luminance,
2129            )
2130            .finish()
2131    }
2132}
2133
2134#[derive(Copy, Clone)]
2135#[repr(C)]
2136pub struct GstVideoHDRMeta {
2137    pub meta: gst::GstMeta,
2138    pub format: GstVideoHDRFormat,
2139    pub data: *mut u8,
2140    pub size: size_t,
2141}
2142
2143impl ::std::fmt::Debug for GstVideoHDRMeta {
2144    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2145        f.debug_struct(&format!("GstVideoHDRMeta @ {self:p}"))
2146            .field("meta", &self.meta)
2147            .field("format", &self.format)
2148            .field("data", &self.data)
2149            .field("size", &self.size)
2150            .finish()
2151    }
2152}
2153
2154#[derive(Copy, Clone)]
2155#[repr(C)]
2156pub struct GstVideoInfo {
2157    pub finfo: *const GstVideoFormatInfo,
2158    pub interlace_mode: GstVideoInterlaceMode,
2159    pub flags: GstVideoFlags,
2160    pub width: c_int,
2161    pub height: c_int,
2162    pub size: size_t,
2163    pub views: c_int,
2164    pub chroma_site: GstVideoChromaSite,
2165    pub colorimetry: GstVideoColorimetry,
2166    pub par_n: c_int,
2167    pub par_d: c_int,
2168    pub fps_n: c_int,
2169    pub fps_d: c_int,
2170    pub offset: [size_t; 4],
2171    pub stride: [c_int; 4],
2172    pub ABI: GstVideoInfo_ABI,
2173}
2174
2175impl ::std::fmt::Debug for GstVideoInfo {
2176    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2177        f.debug_struct(&format!("GstVideoInfo @ {self:p}"))
2178            .field("finfo", &self.finfo)
2179            .field("interlace_mode", &self.interlace_mode)
2180            .field("flags", &self.flags)
2181            .field("width", &self.width)
2182            .field("height", &self.height)
2183            .field("size", &self.size)
2184            .field("views", &self.views)
2185            .field("chroma_site", &self.chroma_site)
2186            .field("colorimetry", &self.colorimetry)
2187            .field("par_n", &self.par_n)
2188            .field("par_d", &self.par_d)
2189            .field("fps_n", &self.fps_n)
2190            .field("fps_d", &self.fps_d)
2191            .field("offset", &self.offset)
2192            .field("stride", &self.stride)
2193            .field("ABI", &self.ABI)
2194            .finish()
2195    }
2196}
2197
2198#[derive(Copy, Clone)]
2199#[repr(C)]
2200pub struct GstVideoInfoDmaDrm {
2201    pub vinfo: GstVideoInfo,
2202    pub drm_fourcc: u32,
2203    pub drm_modifier: u64,
2204    pub _gst_reserved: [u32; 20],
2205}
2206
2207impl ::std::fmt::Debug for GstVideoInfoDmaDrm {
2208    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2209        f.debug_struct(&format!("GstVideoInfoDmaDrm @ {self:p}"))
2210            .field("vinfo", &self.vinfo)
2211            .field("drm_fourcc", &self.drm_fourcc)
2212            .field("drm_modifier", &self.drm_modifier)
2213            .finish()
2214    }
2215}
2216
2217#[derive(Copy, Clone)]
2218#[repr(C)]
2219pub struct GstVideoInfo_ABI_abi {
2220    pub multiview_mode: GstVideoMultiviewMode,
2221    pub multiview_flags: GstVideoMultiviewFlags,
2222    pub field_order: GstVideoFieldOrder,
2223}
2224
2225impl ::std::fmt::Debug for GstVideoInfo_ABI_abi {
2226    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2227        f.debug_struct(&format!("GstVideoInfo_ABI_abi @ {self:p}"))
2228            .field("multiview_mode", &self.multiview_mode)
2229            .field("multiview_flags", &self.multiview_flags)
2230            .field("field_order", &self.field_order)
2231            .finish()
2232    }
2233}
2234
2235#[derive(Copy, Clone)]
2236#[repr(C)]
2237pub struct GstVideoMasteringDisplayInfo {
2238    pub display_primaries: [GstVideoMasteringDisplayInfoCoordinates; 3],
2239    pub white_point: GstVideoMasteringDisplayInfoCoordinates,
2240    pub max_display_mastering_luminance: u32,
2241    pub min_display_mastering_luminance: u32,
2242    pub _gst_reserved: [gpointer; 4],
2243}
2244
2245impl ::std::fmt::Debug for GstVideoMasteringDisplayInfo {
2246    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2247        f.debug_struct(&format!("GstVideoMasteringDisplayInfo @ {self:p}"))
2248            .field("display_primaries", &self.display_primaries)
2249            .field("white_point", &self.white_point)
2250            .field(
2251                "max_display_mastering_luminance",
2252                &self.max_display_mastering_luminance,
2253            )
2254            .field(
2255                "min_display_mastering_luminance",
2256                &self.min_display_mastering_luminance,
2257            )
2258            .finish()
2259    }
2260}
2261
2262#[derive(Copy, Clone)]
2263#[repr(C)]
2264pub struct GstVideoMasteringDisplayInfoCoordinates {
2265    pub x: u16,
2266    pub y: u16,
2267}
2268
2269impl ::std::fmt::Debug for GstVideoMasteringDisplayInfoCoordinates {
2270    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2271        f.debug_struct(&format!(
2272            "GstVideoMasteringDisplayInfoCoordinates @ {self:p}"
2273        ))
2274        .field("x", &self.x)
2275        .field("y", &self.y)
2276        .finish()
2277    }
2278}
2279
2280#[derive(Copy, Clone)]
2281#[repr(C)]
2282pub struct GstVideoMeta {
2283    pub meta: gst::GstMeta,
2284    pub buffer: *mut gst::GstBuffer,
2285    pub flags: GstVideoFrameFlags,
2286    pub format: GstVideoFormat,
2287    pub id: c_int,
2288    pub width: c_uint,
2289    pub height: c_uint,
2290    pub n_planes: c_uint,
2291    pub offset: [size_t; 4],
2292    pub stride: [c_int; 4],
2293    pub map: Option<
2294        unsafe extern "C" fn(
2295            *mut GstVideoMeta,
2296            c_uint,
2297            *mut gst::GstMapInfo,
2298            *mut gpointer,
2299            *mut c_int,
2300            gst::GstMapFlags,
2301        ) -> gboolean,
2302    >,
2303    pub unmap:
2304        Option<unsafe extern "C" fn(*mut GstVideoMeta, c_uint, *mut gst::GstMapInfo) -> gboolean>,
2305    pub alignment: GstVideoAlignment,
2306}
2307
2308impl ::std::fmt::Debug for GstVideoMeta {
2309    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2310        f.debug_struct(&format!("GstVideoMeta @ {self:p}"))
2311            .field("meta", &self.meta)
2312            .field("buffer", &self.buffer)
2313            .field("flags", &self.flags)
2314            .field("format", &self.format)
2315            .field("id", &self.id)
2316            .field("width", &self.width)
2317            .field("height", &self.height)
2318            .field("n_planes", &self.n_planes)
2319            .field("offset", &self.offset)
2320            .field("stride", &self.stride)
2321            .field("map", &self.map)
2322            .field("unmap", &self.unmap)
2323            .field("alignment", &self.alignment)
2324            .finish()
2325    }
2326}
2327
2328#[derive(Copy, Clone)]
2329#[repr(C)]
2330pub struct GstVideoMetaTransform {
2331    pub in_info: *mut GstVideoInfo,
2332    pub out_info: *mut GstVideoInfo,
2333}
2334
2335impl ::std::fmt::Debug for GstVideoMetaTransform {
2336    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2337        f.debug_struct(&format!("GstVideoMetaTransform @ {self:p}"))
2338            .field("in_info", &self.in_info)
2339            .field("out_info", &self.out_info)
2340            .finish()
2341    }
2342}
2343
2344#[derive(Copy, Clone)]
2345#[repr(C)]
2346pub struct GstVideoMetaTransformMatrix {
2347    pub in_info: *const GstVideoInfo,
2348    pub in_rectangle: GstVideoRectangle,
2349    pub out_info: *const GstVideoInfo,
2350    pub out_rectangle: GstVideoRectangle,
2351    pub matrix: [c_float; 9],
2352}
2353
2354impl ::std::fmt::Debug for GstVideoMetaTransformMatrix {
2355    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2356        f.debug_struct(&format!("GstVideoMetaTransformMatrix @ {self:p}"))
2357            .field("in_info", &self.in_info)
2358            .field("in_rectangle", &self.in_rectangle)
2359            .field("out_info", &self.out_info)
2360            .field("out_rectangle", &self.out_rectangle)
2361            .field("matrix", &self.matrix)
2362            .finish()
2363    }
2364}
2365
2366#[derive(Copy, Clone)]
2367#[repr(C)]
2368pub struct GstVideoOrientationInterface {
2369    pub iface: gobject::GTypeInterface,
2370    pub get_hflip: Option<unsafe extern "C" fn(*mut GstVideoOrientation, gboolean) -> gboolean>,
2371    pub get_vflip: Option<unsafe extern "C" fn(*mut GstVideoOrientation, gboolean) -> gboolean>,
2372    pub get_hcenter: Option<unsafe extern "C" fn(*mut GstVideoOrientation, c_int) -> gboolean>,
2373    pub get_vcenter: Option<unsafe extern "C" fn(*mut GstVideoOrientation, c_int) -> gboolean>,
2374    pub set_hflip: Option<unsafe extern "C" fn(*mut GstVideoOrientation, gboolean) -> gboolean>,
2375    pub set_vflip: Option<unsafe extern "C" fn(*mut GstVideoOrientation, gboolean) -> gboolean>,
2376    pub set_hcenter: Option<unsafe extern "C" fn(*mut GstVideoOrientation, c_int) -> gboolean>,
2377    pub set_vcenter: Option<unsafe extern "C" fn(*mut GstVideoOrientation, c_int) -> gboolean>,
2378}
2379
2380impl ::std::fmt::Debug for GstVideoOrientationInterface {
2381    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2382        f.debug_struct(&format!("GstVideoOrientationInterface @ {self:p}"))
2383            .field("iface", &self.iface)
2384            .field("get_hflip", &self.get_hflip)
2385            .field("get_vflip", &self.get_vflip)
2386            .field("get_hcenter", &self.get_hcenter)
2387            .field("get_vcenter", &self.get_vcenter)
2388            .field("set_hflip", &self.set_hflip)
2389            .field("set_vflip", &self.set_vflip)
2390            .field("set_hcenter", &self.set_hcenter)
2391            .field("set_vcenter", &self.set_vcenter)
2392            .finish()
2393    }
2394}
2395
2396#[repr(C)]
2397#[allow(dead_code)]
2398pub struct GstVideoOverlayComposition {
2399    _data: [u8; 0],
2400    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2401}
2402
2403impl ::std::fmt::Debug for GstVideoOverlayComposition {
2404    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2405        f.debug_struct(&format!("GstVideoOverlayComposition @ {self:p}"))
2406            .finish()
2407    }
2408}
2409
2410#[derive(Copy, Clone)]
2411#[repr(C)]
2412pub struct GstVideoOverlayCompositionMeta {
2413    pub meta: gst::GstMeta,
2414    pub overlay: *mut GstVideoOverlayComposition,
2415}
2416
2417impl ::std::fmt::Debug for GstVideoOverlayCompositionMeta {
2418    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2419        f.debug_struct(&format!("GstVideoOverlayCompositionMeta @ {self:p}"))
2420            .field("meta", &self.meta)
2421            .field("overlay", &self.overlay)
2422            .finish()
2423    }
2424}
2425
2426#[derive(Copy, Clone)]
2427#[repr(C)]
2428pub struct GstVideoOverlayInterface {
2429    pub iface: gobject::GTypeInterface,
2430    pub expose: Option<unsafe extern "C" fn(*mut GstVideoOverlay)>,
2431    pub handle_events: Option<unsafe extern "C" fn(*mut GstVideoOverlay, gboolean)>,
2432    pub set_render_rectangle:
2433        Option<unsafe extern "C" fn(*mut GstVideoOverlay, c_int, c_int, c_int, c_int)>,
2434    pub set_window_handle: Option<unsafe extern "C" fn(*mut GstVideoOverlay, uintptr_t)>,
2435}
2436
2437impl ::std::fmt::Debug for GstVideoOverlayInterface {
2438    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2439        f.debug_struct(&format!("GstVideoOverlayInterface @ {self:p}"))
2440            .field("iface", &self.iface)
2441            .field("expose", &self.expose)
2442            .field("handle_events", &self.handle_events)
2443            .field("set_render_rectangle", &self.set_render_rectangle)
2444            .field("set_window_handle", &self.set_window_handle)
2445            .finish()
2446    }
2447}
2448
2449#[repr(C)]
2450#[allow(dead_code)]
2451pub struct GstVideoOverlayRectangle {
2452    _data: [u8; 0],
2453    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2454}
2455
2456impl ::std::fmt::Debug for GstVideoOverlayRectangle {
2457    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2458        f.debug_struct(&format!("GstVideoOverlayRectangle @ {self:p}"))
2459            .finish()
2460    }
2461}
2462
2463#[derive(Copy, Clone)]
2464#[repr(C)]
2465pub struct GstVideoRectangle {
2466    pub x: c_int,
2467    pub y: c_int,
2468    pub w: c_int,
2469    pub h: c_int,
2470}
2471
2472impl ::std::fmt::Debug for GstVideoRectangle {
2473    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2474        f.debug_struct(&format!("GstVideoRectangle @ {self:p}"))
2475            .field("x", &self.x)
2476            .field("y", &self.y)
2477            .field("w", &self.w)
2478            .field("h", &self.h)
2479            .finish()
2480    }
2481}
2482
2483#[derive(Copy, Clone)]
2484#[repr(C)]
2485pub struct GstVideoRegionOfInterestMeta {
2486    pub meta: gst::GstMeta,
2487    pub roi_type: glib::GQuark,
2488    pub id: c_int,
2489    pub parent_id: c_int,
2490    pub x: c_uint,
2491    pub y: c_uint,
2492    pub w: c_uint,
2493    pub h: c_uint,
2494    pub params: *mut glib::GList,
2495}
2496
2497impl ::std::fmt::Debug for GstVideoRegionOfInterestMeta {
2498    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2499        f.debug_struct(&format!("GstVideoRegionOfInterestMeta @ {self:p}"))
2500            .field("meta", &self.meta)
2501            .field("roi_type", &self.roi_type)
2502            .field("id", &self.id)
2503            .field("parent_id", &self.parent_id)
2504            .field("x", &self.x)
2505            .field("y", &self.y)
2506            .field("w", &self.w)
2507            .field("h", &self.h)
2508            .field("params", &self.params)
2509            .finish()
2510    }
2511}
2512
2513#[derive(Copy, Clone)]
2514#[repr(C)]
2515pub struct GstVideoResampler {
2516    pub in_size: c_int,
2517    pub out_size: c_int,
2518    pub max_taps: c_uint,
2519    pub n_phases: c_uint,
2520    pub offset: *mut u32,
2521    pub phase: *mut u32,
2522    pub n_taps: *mut u32,
2523    pub taps: *mut c_double,
2524    pub _gst_reserved: [gpointer; 4],
2525}
2526
2527impl ::std::fmt::Debug for GstVideoResampler {
2528    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2529        f.debug_struct(&format!("GstVideoResampler @ {self:p}"))
2530            .field("in_size", &self.in_size)
2531            .field("out_size", &self.out_size)
2532            .field("max_taps", &self.max_taps)
2533            .field("n_phases", &self.n_phases)
2534            .field("offset", &self.offset)
2535            .field("phase", &self.phase)
2536            .field("n_taps", &self.n_taps)
2537            .field("taps", &self.taps)
2538            .finish()
2539    }
2540}
2541
2542#[derive(Copy, Clone)]
2543#[repr(C)]
2544pub struct GstVideoSEIUserDataUnregisteredMeta {
2545    pub meta: gst::GstMeta,
2546    pub uuid: [u8; 16],
2547    pub data: *mut u8,
2548    pub size: size_t,
2549}
2550
2551impl ::std::fmt::Debug for GstVideoSEIUserDataUnregisteredMeta {
2552    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2553        f.debug_struct(&format!("GstVideoSEIUserDataUnregisteredMeta @ {self:p}"))
2554            .field("meta", &self.meta)
2555            .field("uuid", &self.uuid)
2556            .field("data", &self.data)
2557            .field("size", &self.size)
2558            .finish()
2559    }
2560}
2561
2562#[repr(C)]
2563#[allow(dead_code)]
2564pub struct _GstVideoScaler {
2565    _data: [u8; 0],
2566    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2567}
2568
2569pub type GstVideoScaler = _GstVideoScaler;
2570
2571#[derive(Copy, Clone)]
2572#[repr(C)]
2573pub struct GstVideoSinkClass {
2574    pub parent_class: gst_base::GstBaseSinkClass,
2575    pub show_frame:
2576        Option<unsafe extern "C" fn(*mut GstVideoSink, *mut gst::GstBuffer) -> gst::GstFlowReturn>,
2577    pub set_info: Option<
2578        unsafe extern "C" fn(*mut GstVideoSink, *mut gst::GstCaps, *const GstVideoInfo) -> gboolean,
2579    >,
2580    pub _gst_reserved: [gpointer; 3],
2581}
2582
2583impl ::std::fmt::Debug for GstVideoSinkClass {
2584    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2585        f.debug_struct(&format!("GstVideoSinkClass @ {self:p}"))
2586            .field("parent_class", &self.parent_class)
2587            .field("show_frame", &self.show_frame)
2588            .field("set_info", &self.set_info)
2589            .finish()
2590    }
2591}
2592
2593#[repr(C)]
2594#[allow(dead_code)]
2595pub struct _GstVideoSinkPrivate {
2596    _data: [u8; 0],
2597    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2598}
2599
2600pub type GstVideoSinkPrivate = _GstVideoSinkPrivate;
2601
2602#[derive(Copy, Clone)]
2603#[repr(C)]
2604pub struct GstVideoTileInfo {
2605    pub width: c_uint,
2606    pub height: c_uint,
2607    pub stride: c_uint,
2608    pub size: c_uint,
2609    pub padding: [u32; 4],
2610}
2611
2612impl ::std::fmt::Debug for GstVideoTileInfo {
2613    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2614        f.debug_struct(&format!("GstVideoTileInfo @ {self:p}"))
2615            .field("width", &self.width)
2616            .field("height", &self.height)
2617            .field("stride", &self.stride)
2618            .field("size", &self.size)
2619            .finish()
2620    }
2621}
2622
2623#[derive(Copy, Clone)]
2624#[repr(C)]
2625pub struct GstVideoTimeCode {
2626    pub config: GstVideoTimeCodeConfig,
2627    pub hours: c_uint,
2628    pub minutes: c_uint,
2629    pub seconds: c_uint,
2630    pub frames: c_uint,
2631    pub field_count: c_uint,
2632}
2633
2634impl ::std::fmt::Debug for GstVideoTimeCode {
2635    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2636        f.debug_struct(&format!("GstVideoTimeCode @ {self:p}"))
2637            .field("config", &self.config)
2638            .field("hours", &self.hours)
2639            .field("minutes", &self.minutes)
2640            .field("seconds", &self.seconds)
2641            .field("frames", &self.frames)
2642            .field("field_count", &self.field_count)
2643            .finish()
2644    }
2645}
2646
2647#[derive(Copy, Clone)]
2648#[repr(C)]
2649pub struct GstVideoTimeCodeConfig {
2650    pub fps_n: c_uint,
2651    pub fps_d: c_uint,
2652    pub flags: GstVideoTimeCodeFlags,
2653    pub latest_daily_jam: *mut glib::GDateTime,
2654}
2655
2656impl ::std::fmt::Debug for GstVideoTimeCodeConfig {
2657    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2658        f.debug_struct(&format!("GstVideoTimeCodeConfig @ {self:p}"))
2659            .field("fps_n", &self.fps_n)
2660            .field("fps_d", &self.fps_d)
2661            .field("flags", &self.flags)
2662            .field("latest_daily_jam", &self.latest_daily_jam)
2663            .finish()
2664    }
2665}
2666
2667#[derive(Copy, Clone)]
2668#[repr(C)]
2669pub struct GstVideoTimeCodeInterval {
2670    pub hours: c_uint,
2671    pub minutes: c_uint,
2672    pub seconds: c_uint,
2673    pub frames: c_uint,
2674}
2675
2676impl ::std::fmt::Debug for GstVideoTimeCodeInterval {
2677    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2678        f.debug_struct(&format!("GstVideoTimeCodeInterval @ {self:p}"))
2679            .field("hours", &self.hours)
2680            .field("minutes", &self.minutes)
2681            .field("seconds", &self.seconds)
2682            .field("frames", &self.frames)
2683            .finish()
2684    }
2685}
2686
2687#[derive(Copy, Clone)]
2688#[repr(C)]
2689pub struct GstVideoTimeCodeMeta {
2690    pub meta: gst::GstMeta,
2691    pub tc: GstVideoTimeCode,
2692}
2693
2694impl ::std::fmt::Debug for GstVideoTimeCodeMeta {
2695    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2696        f.debug_struct(&format!("GstVideoTimeCodeMeta @ {self:p}"))
2697            .field("meta", &self.meta)
2698            .field("tc", &self.tc)
2699            .finish()
2700    }
2701}
2702
2703#[repr(C)]
2704#[allow(dead_code)]
2705pub struct GstVideoVBIEncoder {
2706    _data: [u8; 0],
2707    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2708}
2709
2710impl ::std::fmt::Debug for GstVideoVBIEncoder {
2711    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2712        f.debug_struct(&format!("GstVideoVBIEncoder @ {self:p}"))
2713            .finish()
2714    }
2715}
2716
2717#[repr(C)]
2718#[allow(dead_code)]
2719pub struct GstVideoVBIParser {
2720    _data: [u8; 0],
2721    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2722}
2723
2724impl ::std::fmt::Debug for GstVideoVBIParser {
2725    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2726        f.debug_struct(&format!("GstVideoVBIParser @ {self:p}"))
2727            .finish()
2728    }
2729}
2730
2731// Classes
2732#[derive(Copy, Clone)]
2733#[repr(C)]
2734pub struct GstColorBalanceChannel {
2735    pub parent: gobject::GObject,
2736    pub label: *mut c_char,
2737    pub min_value: c_int,
2738    pub max_value: c_int,
2739    pub _gst_reserved: [gpointer; 4],
2740}
2741
2742impl ::std::fmt::Debug for GstColorBalanceChannel {
2743    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2744        f.debug_struct(&format!("GstColorBalanceChannel @ {self:p}"))
2745            .field("parent", &self.parent)
2746            .field("label", &self.label)
2747            .field("min_value", &self.min_value)
2748            .field("max_value", &self.max_value)
2749            .finish()
2750    }
2751}
2752
2753#[derive(Copy, Clone)]
2754#[repr(C)]
2755pub struct GstVideoAggregator {
2756    pub aggregator: gst_base::GstAggregator,
2757    pub info: GstVideoInfo,
2758    pub priv_: *mut GstVideoAggregatorPrivate,
2759    pub _gst_reserved: [gpointer; 20],
2760}
2761
2762impl ::std::fmt::Debug for GstVideoAggregator {
2763    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2764        f.debug_struct(&format!("GstVideoAggregator @ {self:p}"))
2765            .field("aggregator", &self.aggregator)
2766            .field("info", &self.info)
2767            .finish()
2768    }
2769}
2770
2771#[derive(Copy, Clone)]
2772#[repr(C)]
2773pub struct GstVideoAggregatorConvertPad {
2774    pub parent: GstVideoAggregatorPad,
2775    pub priv_: *mut GstVideoAggregatorConvertPadPrivate,
2776    pub _gst_reserved: [gpointer; 4],
2777}
2778
2779impl ::std::fmt::Debug for GstVideoAggregatorConvertPad {
2780    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2781        f.debug_struct(&format!("GstVideoAggregatorConvertPad @ {self:p}"))
2782            .finish()
2783    }
2784}
2785
2786#[derive(Copy, Clone)]
2787#[repr(C)]
2788pub struct GstVideoAggregatorPad {
2789    pub parent: gst_base::GstAggregatorPad,
2790    pub info: GstVideoInfo,
2791    pub priv_: *mut GstVideoAggregatorPadPrivate,
2792    pub _gst_reserved: [gpointer; 4],
2793}
2794
2795impl ::std::fmt::Debug for GstVideoAggregatorPad {
2796    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2797        f.debug_struct(&format!("GstVideoAggregatorPad @ {self:p}"))
2798            .field("parent", &self.parent)
2799            .field("info", &self.info)
2800            .finish()
2801    }
2802}
2803
2804#[derive(Copy, Clone)]
2805#[repr(C)]
2806pub struct GstVideoAggregatorParallelConvertPad {
2807    pub parent_instance: GstVideoAggregatorConvertPad,
2808}
2809
2810impl ::std::fmt::Debug for GstVideoAggregatorParallelConvertPad {
2811    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2812        f.debug_struct(&format!("GstVideoAggregatorParallelConvertPad @ {self:p}"))
2813            .field("parent_instance", &self.parent_instance)
2814            .finish()
2815    }
2816}
2817
2818#[derive(Copy, Clone)]
2819#[repr(C)]
2820pub struct GstVideoBufferPool {
2821    pub bufferpool: gst::GstBufferPool,
2822    pub priv_: *mut GstVideoBufferPoolPrivate,
2823}
2824
2825impl ::std::fmt::Debug for GstVideoBufferPool {
2826    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2827        f.debug_struct(&format!("GstVideoBufferPool @ {self:p}"))
2828            .field("bufferpool", &self.bufferpool)
2829            .field("priv_", &self.priv_)
2830            .finish()
2831    }
2832}
2833
2834#[derive(Copy, Clone)]
2835#[repr(C)]
2836pub struct GstVideoDecoder {
2837    pub element: gst::GstElement,
2838    pub sinkpad: *mut gst::GstPad,
2839    pub srcpad: *mut gst::GstPad,
2840    pub stream_lock: glib::GRecMutex,
2841    pub input_segment: gst::GstSegment,
2842    pub output_segment: gst::GstSegment,
2843    pub priv_: *mut GstVideoDecoderPrivate,
2844    pub padding: [gpointer; 20],
2845}
2846
2847impl ::std::fmt::Debug for GstVideoDecoder {
2848    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2849        f.debug_struct(&format!("GstVideoDecoder @ {self:p}"))
2850            .finish()
2851    }
2852}
2853
2854#[repr(C)]
2855#[allow(dead_code)]
2856pub struct GstVideoDmabufPool {
2857    _data: [u8; 0],
2858    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2859}
2860
2861impl ::std::fmt::Debug for GstVideoDmabufPool {
2862    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2863        f.debug_struct(&format!("GstVideoDmabufPool @ {self:p}"))
2864            .finish()
2865    }
2866}
2867
2868#[derive(Copy, Clone)]
2869#[repr(C)]
2870pub struct GstVideoEncoder {
2871    pub element: gst::GstElement,
2872    pub sinkpad: *mut gst::GstPad,
2873    pub srcpad: *mut gst::GstPad,
2874    pub stream_lock: glib::GRecMutex,
2875    pub input_segment: gst::GstSegment,
2876    pub output_segment: gst::GstSegment,
2877    pub priv_: *mut GstVideoEncoderPrivate,
2878    pub padding: [gpointer; 20],
2879}
2880
2881impl ::std::fmt::Debug for GstVideoEncoder {
2882    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2883        f.debug_struct(&format!("GstVideoEncoder @ {self:p}"))
2884            .finish()
2885    }
2886}
2887
2888#[derive(Copy, Clone)]
2889#[repr(C)]
2890pub struct GstVideoFilter {
2891    pub element: gst_base::GstBaseTransform,
2892    pub negotiated: gboolean,
2893    pub in_info: GstVideoInfo,
2894    pub out_info: GstVideoInfo,
2895    pub _gst_reserved: [gpointer; 4],
2896}
2897
2898impl ::std::fmt::Debug for GstVideoFilter {
2899    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2900        f.debug_struct(&format!("GstVideoFilter @ {self:p}"))
2901            .field("element", &self.element)
2902            .field("negotiated", &self.negotiated)
2903            .field("in_info", &self.in_info)
2904            .field("out_info", &self.out_info)
2905            .finish()
2906    }
2907}
2908
2909#[repr(C)]
2910#[allow(dead_code)]
2911pub struct GstVideoMultiviewFlagsSet {
2912    _data: [u8; 0],
2913    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2914}
2915
2916impl ::std::fmt::Debug for GstVideoMultiviewFlagsSet {
2917    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2918        f.debug_struct(&format!("GstVideoMultiviewFlagsSet @ {self:p}"))
2919            .finish()
2920    }
2921}
2922
2923#[derive(Copy, Clone)]
2924#[repr(C)]
2925pub struct GstVideoSink {
2926    pub element: gst_base::GstBaseSink,
2927    pub width: c_int,
2928    pub height: c_int,
2929    pub priv_: *mut GstVideoSinkPrivate,
2930    pub _gst_reserved: [gpointer; 4],
2931}
2932
2933impl ::std::fmt::Debug for GstVideoSink {
2934    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2935        f.debug_struct(&format!("GstVideoSink @ {self:p}"))
2936            .field("element", &self.element)
2937            .field("width", &self.width)
2938            .field("height", &self.height)
2939            .finish()
2940    }
2941}
2942
2943// Interfaces
2944#[repr(C)]
2945#[allow(dead_code)]
2946pub struct GstColorBalance {
2947    _data: [u8; 0],
2948    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2949}
2950
2951impl ::std::fmt::Debug for GstColorBalance {
2952    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2953        write!(f, "GstColorBalance @ {self:p}")
2954    }
2955}
2956
2957#[repr(C)]
2958#[allow(dead_code)]
2959pub struct GstNavigation {
2960    _data: [u8; 0],
2961    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2962}
2963
2964impl ::std::fmt::Debug for GstNavigation {
2965    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2966        write!(f, "GstNavigation @ {self:p}")
2967    }
2968}
2969
2970#[repr(C)]
2971#[allow(dead_code)]
2972pub struct GstVideoDirection {
2973    _data: [u8; 0],
2974    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2975}
2976
2977impl ::std::fmt::Debug for GstVideoDirection {
2978    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2979        write!(f, "GstVideoDirection @ {self:p}")
2980    }
2981}
2982
2983#[repr(C)]
2984#[allow(dead_code)]
2985pub struct GstVideoOrientation {
2986    _data: [u8; 0],
2987    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2988}
2989
2990impl ::std::fmt::Debug for GstVideoOrientation {
2991    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2992        write!(f, "GstVideoOrientation @ {self:p}")
2993    }
2994}
2995
2996#[repr(C)]
2997#[allow(dead_code)]
2998pub struct GstVideoOverlay {
2999    _data: [u8; 0],
3000    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3001}
3002
3003impl ::std::fmt::Debug for GstVideoOverlay {
3004    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3005        write!(f, "GstVideoOverlay @ {self:p}")
3006    }
3007}
3008
3009unsafe extern "C" {
3010
3011    //=========================================================================
3012    // GstAncillaryMetaField
3013    //=========================================================================
3014    #[cfg(feature = "v1_24")]
3015    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3016    pub fn gst_ancillary_meta_field_get_type() -> GType;
3017
3018    //=========================================================================
3019    // GstColorBalanceType
3020    //=========================================================================
3021    pub fn gst_color_balance_type_get_type() -> GType;
3022
3023    //=========================================================================
3024    // GstNavigationCommand
3025    //=========================================================================
3026    pub fn gst_navigation_command_get_type() -> GType;
3027
3028    //=========================================================================
3029    // GstNavigationEventType
3030    //=========================================================================
3031    pub fn gst_navigation_event_type_get_type() -> GType;
3032
3033    //=========================================================================
3034    // GstNavigationMessageType
3035    //=========================================================================
3036    pub fn gst_navigation_message_type_get_type() -> GType;
3037
3038    //=========================================================================
3039    // GstNavigationQueryType
3040    //=========================================================================
3041    pub fn gst_navigation_query_type_get_type() -> GType;
3042
3043    //=========================================================================
3044    // GstVideoAFDSpec
3045    //=========================================================================
3046    #[cfg(feature = "v1_18")]
3047    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3048    pub fn gst_video_afd_spec_get_type() -> GType;
3049
3050    //=========================================================================
3051    // GstVideoAFDValue
3052    //=========================================================================
3053    #[cfg(feature = "v1_18")]
3054    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3055    pub fn gst_video_afd_value_get_type() -> GType;
3056
3057    //=========================================================================
3058    // GstVideoAlphaMode
3059    //=========================================================================
3060    pub fn gst_video_alpha_mode_get_type() -> GType;
3061
3062    //=========================================================================
3063    // GstVideoAncillaryDID
3064    //=========================================================================
3065    #[cfg(feature = "v1_16")]
3066    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
3067    pub fn gst_video_ancillary_did_get_type() -> GType;
3068
3069    //=========================================================================
3070    // GstVideoAncillaryDID16
3071    //=========================================================================
3072    #[cfg(feature = "v1_16")]
3073    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
3074    pub fn gst_video_ancillary_di_d16_get_type() -> GType;
3075
3076    //=========================================================================
3077    // GstVideoCaptionType
3078    //=========================================================================
3079    #[cfg(feature = "v1_16")]
3080    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
3081    pub fn gst_video_caption_type_get_type() -> GType;
3082    #[cfg(feature = "v1_16")]
3083    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
3084    pub fn gst_video_caption_type_from_caps(caps: *const gst::GstCaps) -> GstVideoCaptionType;
3085    #[cfg(feature = "v1_16")]
3086    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
3087    pub fn gst_video_caption_type_to_caps(type_: GstVideoCaptionType) -> *mut gst::GstCaps;
3088
3089    //=========================================================================
3090    // GstVideoChromaMethod
3091    //=========================================================================
3092    pub fn gst_video_chroma_method_get_type() -> GType;
3093
3094    //=========================================================================
3095    // GstVideoChromaMode
3096    //=========================================================================
3097    pub fn gst_video_chroma_mode_get_type() -> GType;
3098
3099    //=========================================================================
3100    // GstVideoColorMatrix
3101    //=========================================================================
3102    pub fn gst_video_color_matrix_get_type() -> GType;
3103    #[cfg(feature = "v1_18")]
3104    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3105    pub fn gst_video_color_matrix_from_iso(value: c_uint) -> GstVideoColorMatrix;
3106    pub fn gst_video_color_matrix_get_Kr_Kb(
3107        matrix: GstVideoColorMatrix,
3108        Kr: *mut c_double,
3109        Kb: *mut c_double,
3110    ) -> gboolean;
3111    #[cfg(feature = "v1_18")]
3112    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3113    pub fn gst_video_color_matrix_to_iso(matrix: GstVideoColorMatrix) -> c_uint;
3114
3115    //=========================================================================
3116    // GstVideoColorPrimaries
3117    //=========================================================================
3118    pub fn gst_video_color_primaries_get_type() -> GType;
3119    #[cfg(feature = "v1_18")]
3120    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3121    pub fn gst_video_color_primaries_from_iso(value: c_uint) -> GstVideoColorPrimaries;
3122    pub fn gst_video_color_primaries_get_info(
3123        primaries: GstVideoColorPrimaries,
3124    ) -> *const GstVideoColorPrimariesInfo;
3125    #[cfg(feature = "v1_22")]
3126    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
3127    pub fn gst_video_color_primaries_is_equivalent(
3128        primaries: GstVideoColorPrimaries,
3129        other: GstVideoColorPrimaries,
3130    ) -> gboolean;
3131    #[cfg(feature = "v1_18")]
3132    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3133    pub fn gst_video_color_primaries_to_iso(primaries: GstVideoColorPrimaries) -> c_uint;
3134
3135    //=========================================================================
3136    // GstVideoColorRange
3137    //=========================================================================
3138    pub fn gst_video_color_range_get_type() -> GType;
3139    pub fn gst_video_color_range_offsets(
3140        range: GstVideoColorRange,
3141        info: *const GstVideoFormatInfo,
3142        offset: *mut [c_int; 4],
3143        scale: *mut [c_int; 4],
3144    );
3145
3146    //=========================================================================
3147    // GstVideoDitherMethod
3148    //=========================================================================
3149    pub fn gst_video_dither_method_get_type() -> GType;
3150
3151    //=========================================================================
3152    // GstVideoFieldOrder
3153    //=========================================================================
3154    pub fn gst_video_field_order_get_type() -> GType;
3155    pub fn gst_video_field_order_from_string(order: *const c_char) -> GstVideoFieldOrder;
3156    pub fn gst_video_field_order_to_string(order: GstVideoFieldOrder) -> *const c_char;
3157
3158    //=========================================================================
3159    // GstVideoFormat
3160    //=========================================================================
3161    pub fn gst_video_format_get_type() -> GType;
3162    pub fn gst_video_format_from_fourcc(fourcc: u32) -> GstVideoFormat;
3163    pub fn gst_video_format_from_masks(
3164        depth: c_int,
3165        bpp: c_int,
3166        endianness: c_int,
3167        red_mask: c_uint,
3168        green_mask: c_uint,
3169        blue_mask: c_uint,
3170        alpha_mask: c_uint,
3171    ) -> GstVideoFormat;
3172    pub fn gst_video_format_from_string(format: *const c_char) -> GstVideoFormat;
3173    pub fn gst_video_format_get_info(format: GstVideoFormat) -> *const GstVideoFormatInfo;
3174    pub fn gst_video_format_get_palette(format: GstVideoFormat, size: *mut size_t)
3175    -> gconstpointer;
3176    pub fn gst_video_format_to_fourcc(format: GstVideoFormat) -> u32;
3177    pub fn gst_video_format_to_string(format: GstVideoFormat) -> *const c_char;
3178
3179    //=========================================================================
3180    // GstVideoGLTextureOrientation
3181    //=========================================================================
3182    #[cfg(feature = "v1_20")]
3183    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3184    pub fn gst_video_gl_texture_orientation_get_type() -> GType;
3185
3186    //=========================================================================
3187    // GstVideoGLTextureType
3188    //=========================================================================
3189    #[cfg(feature = "v1_20")]
3190    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3191    pub fn gst_video_gl_texture_type_get_type() -> GType;
3192
3193    //=========================================================================
3194    // GstVideoGammaMode
3195    //=========================================================================
3196    pub fn gst_video_gamma_mode_get_type() -> GType;
3197
3198    //=========================================================================
3199    // GstVideoInterlaceMode
3200    //=========================================================================
3201    pub fn gst_video_interlace_mode_get_type() -> GType;
3202    pub fn gst_video_interlace_mode_from_string(mode: *const c_char) -> GstVideoInterlaceMode;
3203    pub fn gst_video_interlace_mode_to_string(mode: GstVideoInterlaceMode) -> *const c_char;
3204
3205    //=========================================================================
3206    // GstVideoMatrixMode
3207    //=========================================================================
3208    pub fn gst_video_matrix_mode_get_type() -> GType;
3209
3210    //=========================================================================
3211    // GstVideoMultiviewFramePacking
3212    //=========================================================================
3213    pub fn gst_video_multiview_frame_packing_get_type() -> GType;
3214
3215    //=========================================================================
3216    // GstVideoMultiviewMode
3217    //=========================================================================
3218    pub fn gst_video_multiview_mode_get_type() -> GType;
3219    pub fn gst_video_multiview_mode_from_caps_string(
3220        caps_mview_mode: *const c_char,
3221    ) -> GstVideoMultiviewMode;
3222    pub fn gst_video_multiview_mode_to_caps_string(
3223        mview_mode: GstVideoMultiviewMode,
3224    ) -> *const c_char;
3225
3226    //=========================================================================
3227    // GstVideoOrientationMethod
3228    //=========================================================================
3229    pub fn gst_video_orientation_method_get_type() -> GType;
3230
3231    //=========================================================================
3232    // GstVideoPrimariesMode
3233    //=========================================================================
3234    pub fn gst_video_primaries_mode_get_type() -> GType;
3235
3236    //=========================================================================
3237    // GstVideoResamplerMethod
3238    //=========================================================================
3239    pub fn gst_video_resampler_method_get_type() -> GType;
3240
3241    //=========================================================================
3242    // GstVideoTileMode
3243    //=========================================================================
3244    pub fn gst_video_tile_mode_get_type() -> GType;
3245
3246    //=========================================================================
3247    // GstVideoTileType
3248    //=========================================================================
3249    pub fn gst_video_tile_type_get_type() -> GType;
3250
3251    //=========================================================================
3252    // GstVideoTransferFunction
3253    //=========================================================================
3254    pub fn gst_video_transfer_function_get_type() -> GType;
3255    #[cfg(feature = "v1_20")]
3256    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3257    pub fn gst_video_transfer_function_decode(
3258        func: GstVideoTransferFunction,
3259        val: c_double,
3260    ) -> c_double;
3261    #[cfg(feature = "v1_20")]
3262    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3263    pub fn gst_video_transfer_function_encode(
3264        func: GstVideoTransferFunction,
3265        val: c_double,
3266    ) -> c_double;
3267    #[cfg(feature = "v1_18")]
3268    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3269    pub fn gst_video_transfer_function_from_iso(value: c_uint) -> GstVideoTransferFunction;
3270    #[cfg(feature = "v1_18")]
3271    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3272    pub fn gst_video_transfer_function_is_equivalent(
3273        from_func: GstVideoTransferFunction,
3274        from_bpp: c_uint,
3275        to_func: GstVideoTransferFunction,
3276        to_bpp: c_uint,
3277    ) -> gboolean;
3278    #[cfg(feature = "v1_18")]
3279    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3280    pub fn gst_video_transfer_function_to_iso(func: GstVideoTransferFunction) -> c_uint;
3281
3282    //=========================================================================
3283    // GstVideoVBIParserResult
3284    //=========================================================================
3285    #[cfg(feature = "v1_16")]
3286    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
3287    pub fn gst_video_vbi_parser_result_get_type() -> GType;
3288
3289    //=========================================================================
3290    // GstNavigationModifierType
3291    //=========================================================================
3292    #[cfg(feature = "v1_22")]
3293    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
3294    pub fn gst_navigation_modifier_type_get_type() -> GType;
3295
3296    //=========================================================================
3297    // GstVideoBufferFlags
3298    //=========================================================================
3299    pub fn gst_video_buffer_flags_get_type() -> GType;
3300
3301    //=========================================================================
3302    // GstVideoChromaFlags
3303    //=========================================================================
3304    pub fn gst_video_chroma_flags_get_type() -> GType;
3305
3306    //=========================================================================
3307    // GstVideoChromaSite
3308    //=========================================================================
3309    pub fn gst_video_chroma_site_get_type() -> GType;
3310    #[cfg(feature = "v1_20")]
3311    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3312    pub fn gst_video_chroma_site_from_string(s: *const c_char) -> GstVideoChromaSite;
3313    #[cfg(feature = "v1_20")]
3314    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3315    pub fn gst_video_chroma_site_to_string(site: GstVideoChromaSite) -> *mut c_char;
3316
3317    //=========================================================================
3318    // GstVideoCodecFrameFlags
3319    //=========================================================================
3320    #[cfg(feature = "v1_20")]
3321    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3322    pub fn gst_video_codec_frame_flags_get_type() -> GType;
3323
3324    //=========================================================================
3325    // GstVideoDecoderRequestSyncPointFlags
3326    //=========================================================================
3327    #[cfg(feature = "v1_20")]
3328    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3329    pub fn gst_video_decoder_request_sync_point_flags_get_type() -> GType;
3330
3331    //=========================================================================
3332    // GstVideoDitherFlags
3333    //=========================================================================
3334    pub fn gst_video_dither_flags_get_type() -> GType;
3335
3336    //=========================================================================
3337    // GstVideoFlags
3338    //=========================================================================
3339    pub fn gst_video_flags_get_type() -> GType;
3340
3341    //=========================================================================
3342    // GstVideoFormatFlags
3343    //=========================================================================
3344    pub fn gst_video_format_flags_get_type() -> GType;
3345
3346    //=========================================================================
3347    // GstVideoFrameFlags
3348    //=========================================================================
3349    pub fn gst_video_frame_flags_get_type() -> GType;
3350
3351    //=========================================================================
3352    // GstVideoFrameMapFlags
3353    //=========================================================================
3354    pub fn gst_video_frame_map_flags_get_type() -> GType;
3355
3356    //=========================================================================
3357    // GstVideoMultiviewFlags
3358    //=========================================================================
3359    pub fn gst_video_multiview_flags_get_type() -> GType;
3360
3361    //=========================================================================
3362    // GstVideoOverlayFormatFlags
3363    //=========================================================================
3364    #[cfg(feature = "v1_16")]
3365    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
3366    pub fn gst_video_overlay_format_flags_get_type() -> GType;
3367
3368    //=========================================================================
3369    // GstVideoPackFlags
3370    //=========================================================================
3371    pub fn gst_video_pack_flags_get_type() -> GType;
3372
3373    //=========================================================================
3374    // GstVideoResamplerFlags
3375    //=========================================================================
3376    pub fn gst_video_resampler_flags_get_type() -> GType;
3377
3378    //=========================================================================
3379    // GstVideoScalerFlags
3380    //=========================================================================
3381    pub fn gst_video_scaler_flags_get_type() -> GType;
3382
3383    //=========================================================================
3384    // GstVideoTimeCodeFlags
3385    //=========================================================================
3386    #[cfg(feature = "v1_18")]
3387    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3388    pub fn gst_video_time_code_flags_get_type() -> GType;
3389
3390    //=========================================================================
3391    // GstAncillaryMeta
3392    //=========================================================================
3393    #[cfg(feature = "v1_24")]
3394    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3395    pub fn gst_ancillary_meta_get_info() -> *const gst::GstMetaInfo;
3396
3397    //=========================================================================
3398    // GstH274DigitallySignedContentInitialization
3399    //=========================================================================
3400    #[cfg(feature = "v1_30")]
3401    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3402    pub fn gst_h274_digitally_signed_content_initialization_get_type() -> GType;
3403
3404    //=========================================================================
3405    // GstH274DigitallySignedContentSelection
3406    //=========================================================================
3407    #[cfg(feature = "v1_30")]
3408    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3409    pub fn gst_h274_digitally_signed_content_selection_get_type() -> GType;
3410
3411    //=========================================================================
3412    // GstH274DigitallySignedContentVerification
3413    //=========================================================================
3414    #[cfg(feature = "v1_30")]
3415    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3416    pub fn gst_h274_digitally_signed_content_verification_get_type() -> GType;
3417
3418    //=========================================================================
3419    // GstH274RegisteredUserData
3420    //=========================================================================
3421    #[cfg(feature = "v1_30")]
3422    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3423    pub fn gst_h274_registered_user_data_get_type() -> GType;
3424
3425    //=========================================================================
3426    // GstH274UserDataUnregistered
3427    //=========================================================================
3428    #[cfg(feature = "v1_30")]
3429    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3430    pub fn gst_h274_user_data_unregistered_get_type() -> GType;
3431    #[cfg(feature = "v1_30")]
3432    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3433    pub fn gst_h274_user_data_unregistered_clear(udu: *mut GstH274UserDataUnregistered);
3434    #[cfg(feature = "v1_30")]
3435    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3436    pub fn gst_h274_user_data_unregistered_copy(
3437        dst_udu: *mut GstH274UserDataUnregistered,
3438        src_udu: *const GstH274UserDataUnregistered,
3439    );
3440
3441    //=========================================================================
3442    // GstVideoAFDMeta
3443    //=========================================================================
3444    #[cfg(feature = "v1_18")]
3445    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3446    pub fn gst_video_afd_meta_get_info() -> *const gst::GstMetaInfo;
3447
3448    //=========================================================================
3449    // GstVideoAffineTransformationMeta
3450    //=========================================================================
3451    pub fn gst_video_affine_transformation_meta_apply_matrix(
3452        meta: *mut GstVideoAffineTransformationMeta,
3453        matrix: *const [c_float; 16],
3454    );
3455    pub fn gst_video_affine_transformation_meta_get_info() -> *const gst::GstMetaInfo;
3456
3457    //=========================================================================
3458    // GstVideoAlignment
3459    //=========================================================================
3460    pub fn gst_video_alignment_reset(align: *mut GstVideoAlignment);
3461
3462    //=========================================================================
3463    // GstVideoBarMeta
3464    //=========================================================================
3465    #[cfg(feature = "v1_18")]
3466    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3467    pub fn gst_video_bar_meta_get_info() -> *const gst::GstMetaInfo;
3468
3469    //=========================================================================
3470    // GstVideoCaptionMeta
3471    //=========================================================================
3472    #[cfg(feature = "v1_16")]
3473    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
3474    pub fn gst_video_caption_meta_get_info() -> *const gst::GstMetaInfo;
3475
3476    //=========================================================================
3477    // GstVideoChromaResample
3478    //=========================================================================
3479    pub fn gst_video_chroma_resample_free(resample: *mut GstVideoChromaResample);
3480    pub fn gst_video_chroma_resample_get_info(
3481        resample: *mut GstVideoChromaResample,
3482        n_lines: *mut c_uint,
3483        offset: *mut c_int,
3484    );
3485    pub fn gst_video_chroma_resample_new(
3486        method: GstVideoChromaMethod,
3487        site: GstVideoChromaSite,
3488        flags: GstVideoChromaFlags,
3489        format: GstVideoFormat,
3490        h_factor: c_int,
3491        v_factor: c_int,
3492    ) -> *mut GstVideoChromaResample;
3493
3494    //=========================================================================
3495    // GstVideoCodecAlphaMeta
3496    //=========================================================================
3497    #[cfg(feature = "v1_20")]
3498    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3499    pub fn gst_video_codec_alpha_meta_get_info() -> *const gst::GstMetaInfo;
3500
3501    //=========================================================================
3502    // GstVideoCodecFrame
3503    //=========================================================================
3504    pub fn gst_video_codec_frame_get_type() -> GType;
3505    pub fn gst_video_codec_frame_get_user_data(frame: *mut GstVideoCodecFrame) -> gpointer;
3506    pub fn gst_video_codec_frame_ref(frame: *mut GstVideoCodecFrame) -> *mut GstVideoCodecFrame;
3507    pub fn gst_video_codec_frame_set_user_data(
3508        frame: *mut GstVideoCodecFrame,
3509        user_data: gpointer,
3510        notify: glib::GDestroyNotify,
3511    );
3512    pub fn gst_video_codec_frame_unref(frame: *mut GstVideoCodecFrame);
3513
3514    //=========================================================================
3515    // GstVideoCodecState
3516    //=========================================================================
3517    pub fn gst_video_codec_state_get_type() -> GType;
3518    pub fn gst_video_codec_state_ref(state: *mut GstVideoCodecState) -> *mut GstVideoCodecState;
3519    pub fn gst_video_codec_state_unref(state: *mut GstVideoCodecState);
3520
3521    //=========================================================================
3522    // GstVideoColorimetry
3523    //=========================================================================
3524    pub fn gst_video_colorimetry_from_string(
3525        cinfo: *mut GstVideoColorimetry,
3526        color: *const c_char,
3527    ) -> gboolean;
3528    pub fn gst_video_colorimetry_is_equal(
3529        cinfo: *const GstVideoColorimetry,
3530        other: *const GstVideoColorimetry,
3531    ) -> gboolean;
3532    #[cfg(feature = "v1_22")]
3533    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
3534    pub fn gst_video_colorimetry_is_equivalent(
3535        cinfo: *const GstVideoColorimetry,
3536        bitdepth: c_uint,
3537        other: *const GstVideoColorimetry,
3538        other_bitdepth: c_uint,
3539    ) -> gboolean;
3540    pub fn gst_video_colorimetry_matches(
3541        cinfo: *const GstVideoColorimetry,
3542        color: *const c_char,
3543    ) -> gboolean;
3544    pub fn gst_video_colorimetry_to_string(cinfo: *const GstVideoColorimetry) -> *mut c_char;
3545
3546    //=========================================================================
3547    // GstVideoContentLightLevel
3548    //=========================================================================
3549    #[cfg(feature = "v1_18")]
3550    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3551    pub fn gst_video_content_light_level_add_to_caps(
3552        linfo: *const GstVideoContentLightLevel,
3553        caps: *mut gst::GstCaps,
3554    ) -> gboolean;
3555    #[cfg(feature = "v1_18")]
3556    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3557    pub fn gst_video_content_light_level_from_caps(
3558        linfo: *mut GstVideoContentLightLevel,
3559        caps: *const gst::GstCaps,
3560    ) -> gboolean;
3561    #[cfg(feature = "v1_18")]
3562    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3563    pub fn gst_video_content_light_level_from_string(
3564        linfo: *mut GstVideoContentLightLevel,
3565        level: *const c_char,
3566    ) -> gboolean;
3567    #[cfg(feature = "v1_18")]
3568    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3569    pub fn gst_video_content_light_level_init(linfo: *mut GstVideoContentLightLevel);
3570    #[cfg(feature = "v1_20")]
3571    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3572    pub fn gst_video_content_light_level_is_equal(
3573        linfo: *const GstVideoContentLightLevel,
3574        other: *const GstVideoContentLightLevel,
3575    ) -> gboolean;
3576    #[cfg(feature = "v1_18")]
3577    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3578    pub fn gst_video_content_light_level_to_string(
3579        linfo: *const GstVideoContentLightLevel,
3580    ) -> *mut c_char;
3581
3582    //=========================================================================
3583    // GstVideoConverter
3584    //=========================================================================
3585    pub fn gst_video_converter_frame(
3586        convert: *mut GstVideoConverter,
3587        src: *const GstVideoFrame,
3588        dest: *mut GstVideoFrame,
3589    );
3590    #[cfg(feature = "v1_20")]
3591    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3592    pub fn gst_video_converter_frame_finish(convert: *mut GstVideoConverter);
3593    pub fn gst_video_converter_free(convert: *mut GstVideoConverter);
3594    pub fn gst_video_converter_get_config(
3595        convert: *mut GstVideoConverter,
3596    ) -> *const gst::GstStructure;
3597    #[cfg(feature = "v1_22")]
3598    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
3599    pub fn gst_video_converter_get_in_info(convert: *mut GstVideoConverter) -> *const GstVideoInfo;
3600    #[cfg(feature = "v1_22")]
3601    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
3602    pub fn gst_video_converter_get_out_info(convert: *mut GstVideoConverter)
3603    -> *const GstVideoInfo;
3604    pub fn gst_video_converter_set_config(
3605        convert: *mut GstVideoConverter,
3606        config: *mut gst::GstStructure,
3607    ) -> gboolean;
3608    #[cfg(feature = "v1_28")]
3609    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
3610    pub fn gst_video_converter_transform_metas(
3611        convert: *mut GstVideoConverter,
3612        src: *mut gst::GstBuffer,
3613        dest: *mut gst::GstBuffer,
3614    ) -> gboolean;
3615    pub fn gst_video_converter_new(
3616        in_info: *const GstVideoInfo,
3617        out_info: *const GstVideoInfo,
3618        config: *mut gst::GstStructure,
3619    ) -> *mut GstVideoConverter;
3620    #[cfg(feature = "v1_20")]
3621    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3622    pub fn gst_video_converter_new_with_pool(
3623        in_info: *const GstVideoInfo,
3624        out_info: *const GstVideoInfo,
3625        config: *mut gst::GstStructure,
3626        pool: *mut gst::GstTaskPool,
3627    ) -> *mut GstVideoConverter;
3628
3629    //=========================================================================
3630    // GstVideoCropMeta
3631    //=========================================================================
3632    pub fn gst_video_crop_meta_get_info() -> *const gst::GstMetaInfo;
3633
3634    //=========================================================================
3635    // GstVideoDSCInitializationMeta
3636    //=========================================================================
3637    #[cfg(feature = "v1_30")]
3638    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3639    pub fn gst_video_dsc_initialization_meta_get_info() -> *const gst::GstMetaInfo;
3640
3641    //=========================================================================
3642    // GstVideoDSCSelectionMeta
3643    //=========================================================================
3644    #[cfg(feature = "v1_30")]
3645    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3646    pub fn gst_video_dsc_selection_meta_get_info() -> *const gst::GstMetaInfo;
3647
3648    //=========================================================================
3649    // GstVideoDSCVerificationMeta
3650    //=========================================================================
3651    #[cfg(feature = "v1_30")]
3652    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3653    pub fn gst_video_dsc_verification_meta_get_info() -> *const gst::GstMetaInfo;
3654
3655    //=========================================================================
3656    // GstVideoDither
3657    //=========================================================================
3658    pub fn gst_video_dither_free(dither: *mut GstVideoDither);
3659    pub fn gst_video_dither_line(
3660        dither: *mut GstVideoDither,
3661        line: gpointer,
3662        x: c_uint,
3663        y: c_uint,
3664        width: c_uint,
3665    );
3666    pub fn gst_video_dither_new(
3667        method: GstVideoDitherMethod,
3668        flags: GstVideoDitherFlags,
3669        format: GstVideoFormat,
3670        quantizer: *mut [c_uint; 4],
3671        width: c_uint,
3672    ) -> *mut GstVideoDither;
3673
3674    //=========================================================================
3675    // GstVideoFormatInfo
3676    //=========================================================================
3677    #[cfg(feature = "v1_18")]
3678    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3679    pub fn gst_video_format_info_component(
3680        info: *const GstVideoFormatInfo,
3681        plane: c_uint,
3682        components: *mut c_int,
3683    );
3684    #[cfg(feature = "v1_22")]
3685    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
3686    pub fn gst_video_format_info_extrapolate_stride(
3687        finfo: *const GstVideoFormatInfo,
3688        plane: c_int,
3689        stride: c_int,
3690    ) -> c_int;
3691
3692    //=========================================================================
3693    // GstVideoFrame
3694    //=========================================================================
3695    pub fn gst_video_frame_copy(dest: *mut GstVideoFrame, src: *const GstVideoFrame) -> gboolean;
3696    pub fn gst_video_frame_copy_plane(
3697        dest: *mut GstVideoFrame,
3698        src: *const GstVideoFrame,
3699        plane: c_uint,
3700    ) -> gboolean;
3701    pub fn gst_video_frame_unmap(frame: *mut GstVideoFrame);
3702    pub fn gst_video_frame_map(
3703        frame: *mut GstVideoFrame,
3704        info: *const GstVideoInfo,
3705        buffer: *mut gst::GstBuffer,
3706        flags: gst::GstMapFlags,
3707    ) -> gboolean;
3708    pub fn gst_video_frame_map_id(
3709        frame: *mut GstVideoFrame,
3710        info: *const GstVideoInfo,
3711        buffer: *mut gst::GstBuffer,
3712        id: c_int,
3713        flags: gst::GstMapFlags,
3714    ) -> gboolean;
3715
3716    //=========================================================================
3717    // GstVideoGLTextureUploadMeta
3718    //=========================================================================
3719    pub fn gst_video_gl_texture_upload_meta_upload(
3720        meta: *mut GstVideoGLTextureUploadMeta,
3721        texture_id: *mut c_uint,
3722    ) -> gboolean;
3723    pub fn gst_video_gl_texture_upload_meta_get_info() -> *const gst::GstMetaInfo;
3724
3725    //=========================================================================
3726    // GstVideoHDRMeta
3727    //=========================================================================
3728    #[cfg(feature = "v1_30")]
3729    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
3730    pub fn gst_video_hdr_meta_get_info() -> *const gst::GstMetaInfo;
3731
3732    //=========================================================================
3733    // GstVideoInfo
3734    //=========================================================================
3735    pub fn gst_video_info_get_type() -> GType;
3736    pub fn gst_video_info_new() -> *mut GstVideoInfo;
3737    #[cfg(feature = "v1_20")]
3738    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
3739    pub fn gst_video_info_new_from_caps(caps: *const gst::GstCaps) -> *mut GstVideoInfo;
3740    pub fn gst_video_info_align(info: *mut GstVideoInfo, align: *mut GstVideoAlignment)
3741    -> gboolean;
3742    #[cfg(feature = "v1_18")]
3743    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3744    pub fn gst_video_info_align_full(
3745        info: *mut GstVideoInfo,
3746        align: *mut GstVideoAlignment,
3747        plane_size: *mut size_t,
3748    ) -> gboolean;
3749    pub fn gst_video_info_convert(
3750        info: *const GstVideoInfo,
3751        src_format: gst::GstFormat,
3752        src_value: i64,
3753        dest_format: gst::GstFormat,
3754        dest_value: *mut i64,
3755    ) -> gboolean;
3756    pub fn gst_video_info_copy(info: *const GstVideoInfo) -> *mut GstVideoInfo;
3757    pub fn gst_video_info_free(info: *mut GstVideoInfo);
3758    pub fn gst_video_info_is_equal(
3759        info: *const GstVideoInfo,
3760        other: *const GstVideoInfo,
3761    ) -> gboolean;
3762    pub fn gst_video_info_set_format(
3763        info: *mut GstVideoInfo,
3764        format: GstVideoFormat,
3765        width: c_uint,
3766        height: c_uint,
3767    ) -> gboolean;
3768    #[cfg(feature = "v1_16")]
3769    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
3770    pub fn gst_video_info_set_interlaced_format(
3771        info: *mut GstVideoInfo,
3772        format: GstVideoFormat,
3773        mode: GstVideoInterlaceMode,
3774        width: c_uint,
3775        height: c_uint,
3776    ) -> gboolean;
3777    pub fn gst_video_info_to_caps(info: *const GstVideoInfo) -> *mut gst::GstCaps;
3778    pub fn gst_video_info_from_caps(info: *mut GstVideoInfo, caps: *const gst::GstCaps)
3779    -> gboolean;
3780    pub fn gst_video_info_init(info: *mut GstVideoInfo);
3781
3782    //=========================================================================
3783    // GstVideoInfoDmaDrm
3784    //=========================================================================
3785    #[cfg(feature = "v1_24")]
3786    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3787    pub fn gst_video_info_dma_drm_get_type() -> GType;
3788    #[cfg(feature = "v1_24")]
3789    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3790    pub fn gst_video_info_dma_drm_new() -> *mut GstVideoInfoDmaDrm;
3791    #[cfg(feature = "v1_24")]
3792    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3793    pub fn gst_video_info_dma_drm_new_from_caps(
3794        caps: *const gst::GstCaps,
3795    ) -> *mut GstVideoInfoDmaDrm;
3796    #[cfg(feature = "v1_24")]
3797    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3798    pub fn gst_video_info_dma_drm_free(drm_info: *mut GstVideoInfoDmaDrm);
3799    #[cfg(feature = "v1_24")]
3800    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3801    pub fn gst_video_info_dma_drm_to_caps(drm_info: *const GstVideoInfoDmaDrm)
3802    -> *mut gst::GstCaps;
3803    #[cfg(feature = "v1_24")]
3804    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3805    pub fn gst_video_info_dma_drm_to_video_info(
3806        drm_info: *const GstVideoInfoDmaDrm,
3807        info: *mut GstVideoInfo,
3808    ) -> gboolean;
3809    #[cfg(feature = "v1_24")]
3810    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3811    pub fn gst_video_info_dma_drm_from_caps(
3812        drm_info: *mut GstVideoInfoDmaDrm,
3813        caps: *const gst::GstCaps,
3814    ) -> gboolean;
3815    #[cfg(feature = "v1_24")]
3816    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3817    pub fn gst_video_info_dma_drm_from_video_info(
3818        drm_info: *mut GstVideoInfoDmaDrm,
3819        info: *const GstVideoInfo,
3820        modifier: u64,
3821    ) -> gboolean;
3822    #[cfg(feature = "v1_24")]
3823    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
3824    pub fn gst_video_info_dma_drm_init(drm_info: *mut GstVideoInfoDmaDrm);
3825
3826    //=========================================================================
3827    // GstVideoMasteringDisplayInfo
3828    //=========================================================================
3829    #[cfg(feature = "v1_18")]
3830    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3831    pub fn gst_video_mastering_display_info_add_to_caps(
3832        minfo: *const GstVideoMasteringDisplayInfo,
3833        caps: *mut gst::GstCaps,
3834    ) -> gboolean;
3835    #[cfg(feature = "v1_18")]
3836    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3837    pub fn gst_video_mastering_display_info_from_caps(
3838        minfo: *mut GstVideoMasteringDisplayInfo,
3839        caps: *const gst::GstCaps,
3840    ) -> gboolean;
3841    #[cfg(feature = "v1_18")]
3842    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3843    pub fn gst_video_mastering_display_info_init(minfo: *mut GstVideoMasteringDisplayInfo);
3844    #[cfg(feature = "v1_18")]
3845    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3846    pub fn gst_video_mastering_display_info_is_equal(
3847        minfo: *const GstVideoMasteringDisplayInfo,
3848        other: *const GstVideoMasteringDisplayInfo,
3849    ) -> gboolean;
3850    #[cfg(feature = "v1_18")]
3851    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3852    pub fn gst_video_mastering_display_info_to_string(
3853        minfo: *const GstVideoMasteringDisplayInfo,
3854    ) -> *mut c_char;
3855    #[cfg(feature = "v1_18")]
3856    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3857    pub fn gst_video_mastering_display_info_from_string(
3858        minfo: *mut GstVideoMasteringDisplayInfo,
3859        mastering: *const c_char,
3860    ) -> gboolean;
3861
3862    //=========================================================================
3863    // GstVideoMeta
3864    //=========================================================================
3865    #[cfg(feature = "v1_18")]
3866    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3867    pub fn gst_video_meta_get_plane_height(
3868        meta: *mut GstVideoMeta,
3869        plane_height: *mut [c_uint; 4],
3870    ) -> gboolean;
3871    #[cfg(feature = "v1_18")]
3872    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3873    pub fn gst_video_meta_get_plane_size(
3874        meta: *mut GstVideoMeta,
3875        plane_size: *mut [size_t; 4],
3876    ) -> gboolean;
3877    pub fn gst_video_meta_map(
3878        meta: *mut GstVideoMeta,
3879        plane: c_uint,
3880        info: *mut gst::GstMapInfo,
3881        data: *mut gpointer,
3882        stride: *mut c_int,
3883        flags: gst::GstMapFlags,
3884    ) -> gboolean;
3885    #[cfg(feature = "v1_18")]
3886    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
3887    pub fn gst_video_meta_set_alignment(
3888        meta: *mut GstVideoMeta,
3889        alignment: GstVideoAlignment,
3890    ) -> gboolean;
3891    #[cfg(feature = "v1_28")]
3892    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
3893    pub fn gst_video_meta_set_alignment_full(
3894        meta: *mut GstVideoMeta,
3895        alignment: *const GstVideoAlignment,
3896    ) -> gboolean;
3897    pub fn gst_video_meta_unmap(
3898        meta: *mut GstVideoMeta,
3899        plane: c_uint,
3900        info: *mut gst::GstMapInfo,
3901    ) -> gboolean;
3902    pub fn gst_video_meta_get_info() -> *const gst::GstMetaInfo;
3903
3904    //=========================================================================
3905    // GstVideoMetaTransform
3906    //=========================================================================
3907    pub fn gst_video_meta_transform_scale_get_quark() -> glib::GQuark;
3908
3909    //=========================================================================
3910    // GstVideoMetaTransformMatrix
3911    //=========================================================================
3912    #[cfg(feature = "v1_28")]
3913    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
3914    pub fn gst_video_meta_transform_matrix_init(
3915        trans: *mut GstVideoMetaTransformMatrix,
3916        in_info: *const GstVideoInfo,
3917        in_rectangle: *const GstVideoRectangle,
3918        out_info: *const GstVideoInfo,
3919        out_rectangle: *const GstVideoRectangle,
3920    );
3921    #[cfg(feature = "v1_28")]
3922    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
3923    pub fn gst_video_meta_transform_matrix_point(
3924        transform: *const GstVideoMetaTransformMatrix,
3925        x: *mut c_int,
3926        y: *mut c_int,
3927    ) -> gboolean;
3928    #[cfg(feature = "v1_28")]
3929    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
3930    pub fn gst_video_meta_transform_matrix_point_clipped(
3931        transform: *const GstVideoMetaTransformMatrix,
3932        x: *mut c_int,
3933        y: *mut c_int,
3934    ) -> gboolean;
3935    #[cfg(feature = "v1_28")]
3936    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
3937    pub fn gst_video_meta_transform_matrix_rectangle(
3938        transform: *const GstVideoMetaTransformMatrix,
3939        rect: *mut GstVideoRectangle,
3940    ) -> gboolean;
3941    #[cfg(feature = "v1_28")]
3942    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
3943    pub fn gst_video_meta_transform_matrix_rectangle_clipped(
3944        transform: *const GstVideoMetaTransformMatrix,
3945        rect: *mut GstVideoRectangle,
3946    ) -> gboolean;
3947    #[cfg(feature = "v1_28")]
3948    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
3949    pub fn gst_video_meta_transform_matrix_get_quark() -> glib::GQuark;
3950
3951    //=========================================================================
3952    // GstVideoOverlayComposition
3953    //=========================================================================
3954    pub fn gst_video_overlay_composition_get_type() -> GType;
3955    pub fn gst_video_overlay_composition_new(
3956        rectangle: *mut GstVideoOverlayRectangle,
3957    ) -> *mut GstVideoOverlayComposition;
3958    pub fn gst_video_overlay_composition_add_rectangle(
3959        comp: *mut GstVideoOverlayComposition,
3960        rectangle: *mut GstVideoOverlayRectangle,
3961    );
3962    pub fn gst_video_overlay_composition_blend(
3963        comp: *mut GstVideoOverlayComposition,
3964        video_buf: *mut GstVideoFrame,
3965    ) -> gboolean;
3966    pub fn gst_video_overlay_composition_copy(
3967        comp: *mut GstVideoOverlayComposition,
3968    ) -> *mut GstVideoOverlayComposition;
3969    pub fn gst_video_overlay_composition_get_rectangle(
3970        comp: *mut GstVideoOverlayComposition,
3971        n: c_uint,
3972    ) -> *mut GstVideoOverlayRectangle;
3973    pub fn gst_video_overlay_composition_get_seqnum(
3974        comp: *mut GstVideoOverlayComposition,
3975    ) -> c_uint;
3976    pub fn gst_video_overlay_composition_make_writable(
3977        comp: *mut GstVideoOverlayComposition,
3978    ) -> *mut GstVideoOverlayComposition;
3979    pub fn gst_video_overlay_composition_n_rectangles(
3980        comp: *mut GstVideoOverlayComposition,
3981    ) -> c_uint;
3982
3983    //=========================================================================
3984    // GstVideoOverlayCompositionMeta
3985    //=========================================================================
3986    pub fn gst_video_overlay_composition_meta_get_info() -> *const gst::GstMetaInfo;
3987
3988    //=========================================================================
3989    // GstVideoOverlayRectangle
3990    //=========================================================================
3991    pub fn gst_video_overlay_rectangle_get_type() -> GType;
3992    pub fn gst_video_overlay_rectangle_new_raw(
3993        pixels: *mut gst::GstBuffer,
3994        render_x: c_int,
3995        render_y: c_int,
3996        render_width: c_uint,
3997        render_height: c_uint,
3998        flags: GstVideoOverlayFormatFlags,
3999    ) -> *mut GstVideoOverlayRectangle;
4000    pub fn gst_video_overlay_rectangle_copy(
4001        rectangle: *mut GstVideoOverlayRectangle,
4002    ) -> *mut GstVideoOverlayRectangle;
4003    pub fn gst_video_overlay_rectangle_get_flags(
4004        rectangle: *mut GstVideoOverlayRectangle,
4005    ) -> GstVideoOverlayFormatFlags;
4006    pub fn gst_video_overlay_rectangle_get_global_alpha(
4007        rectangle: *mut GstVideoOverlayRectangle,
4008    ) -> c_float;
4009    pub fn gst_video_overlay_rectangle_get_pixels_argb(
4010        rectangle: *mut GstVideoOverlayRectangle,
4011        flags: GstVideoOverlayFormatFlags,
4012    ) -> *mut gst::GstBuffer;
4013    pub fn gst_video_overlay_rectangle_get_pixels_ayuv(
4014        rectangle: *mut GstVideoOverlayRectangle,
4015        flags: GstVideoOverlayFormatFlags,
4016    ) -> *mut gst::GstBuffer;
4017    pub fn gst_video_overlay_rectangle_get_pixels_raw(
4018        rectangle: *mut GstVideoOverlayRectangle,
4019        flags: GstVideoOverlayFormatFlags,
4020    ) -> *mut gst::GstBuffer;
4021    pub fn gst_video_overlay_rectangle_get_pixels_unscaled_argb(
4022        rectangle: *mut GstVideoOverlayRectangle,
4023        flags: GstVideoOverlayFormatFlags,
4024    ) -> *mut gst::GstBuffer;
4025    pub fn gst_video_overlay_rectangle_get_pixels_unscaled_ayuv(
4026        rectangle: *mut GstVideoOverlayRectangle,
4027        flags: GstVideoOverlayFormatFlags,
4028    ) -> *mut gst::GstBuffer;
4029    pub fn gst_video_overlay_rectangle_get_pixels_unscaled_raw(
4030        rectangle: *mut GstVideoOverlayRectangle,
4031        flags: GstVideoOverlayFormatFlags,
4032    ) -> *mut gst::GstBuffer;
4033    pub fn gst_video_overlay_rectangle_get_render_rectangle(
4034        rectangle: *mut GstVideoOverlayRectangle,
4035        render_x: *mut c_int,
4036        render_y: *mut c_int,
4037        render_width: *mut c_uint,
4038        render_height: *mut c_uint,
4039    ) -> gboolean;
4040    pub fn gst_video_overlay_rectangle_get_seqnum(
4041        rectangle: *mut GstVideoOverlayRectangle,
4042    ) -> c_uint;
4043    pub fn gst_video_overlay_rectangle_set_global_alpha(
4044        rectangle: *mut GstVideoOverlayRectangle,
4045        global_alpha: c_float,
4046    );
4047    pub fn gst_video_overlay_rectangle_set_render_rectangle(
4048        rectangle: *mut GstVideoOverlayRectangle,
4049        render_x: c_int,
4050        render_y: c_int,
4051        render_width: c_uint,
4052        render_height: c_uint,
4053    );
4054
4055    //=========================================================================
4056    // GstVideoRegionOfInterestMeta
4057    //=========================================================================
4058    pub fn gst_video_region_of_interest_meta_add_param(
4059        meta: *mut GstVideoRegionOfInterestMeta,
4060        s: *mut gst::GstStructure,
4061    );
4062    pub fn gst_video_region_of_interest_meta_get_param(
4063        meta: *mut GstVideoRegionOfInterestMeta,
4064        name: *const c_char,
4065    ) -> *mut gst::GstStructure;
4066    pub fn gst_video_region_of_interest_meta_get_info() -> *const gst::GstMetaInfo;
4067
4068    //=========================================================================
4069    // GstVideoResampler
4070    //=========================================================================
4071    pub fn gst_video_resampler_clear(resampler: *mut GstVideoResampler);
4072    pub fn gst_video_resampler_init(
4073        resampler: *mut GstVideoResampler,
4074        method: GstVideoResamplerMethod,
4075        flags: GstVideoResamplerFlags,
4076        n_phases: c_uint,
4077        n_taps: c_uint,
4078        shift: c_double,
4079        in_size: c_uint,
4080        out_size: c_uint,
4081        options: *mut gst::GstStructure,
4082    ) -> gboolean;
4083
4084    //=========================================================================
4085    // GstVideoSEIUserDataUnregisteredMeta
4086    //=========================================================================
4087    #[cfg(feature = "v1_22")]
4088    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4089    pub fn gst_video_sei_user_data_unregistered_meta_get_info() -> *const gst::GstMetaInfo;
4090
4091    //=========================================================================
4092    // GstVideoScaler
4093    //=========================================================================
4094    pub fn gst_video_scaler_2d(
4095        hscale: *mut GstVideoScaler,
4096        vscale: *mut GstVideoScaler,
4097        format: GstVideoFormat,
4098        src: gpointer,
4099        src_stride: c_int,
4100        dest: gpointer,
4101        dest_stride: c_int,
4102        x: c_uint,
4103        y: c_uint,
4104        width: c_uint,
4105        height: c_uint,
4106    );
4107    pub fn gst_video_scaler_combine_packed_YUV(
4108        y_scale: *mut GstVideoScaler,
4109        uv_scale: *mut GstVideoScaler,
4110        in_format: GstVideoFormat,
4111        out_format: GstVideoFormat,
4112    ) -> *mut GstVideoScaler;
4113    pub fn gst_video_scaler_free(scale: *mut GstVideoScaler);
4114    pub fn gst_video_scaler_get_coeff(
4115        scale: *mut GstVideoScaler,
4116        out_offset: c_uint,
4117        in_offset: *mut c_uint,
4118        n_taps: *mut c_uint,
4119    ) -> *const c_double;
4120    pub fn gst_video_scaler_get_max_taps(scale: *mut GstVideoScaler) -> c_uint;
4121    pub fn gst_video_scaler_horizontal(
4122        scale: *mut GstVideoScaler,
4123        format: GstVideoFormat,
4124        src: gpointer,
4125        dest: gpointer,
4126        dest_offset: c_uint,
4127        width: c_uint,
4128    );
4129    pub fn gst_video_scaler_vertical(
4130        scale: *mut GstVideoScaler,
4131        format: GstVideoFormat,
4132        src_lines: *mut gpointer,
4133        dest: gpointer,
4134        dest_offset: c_uint,
4135        width: c_uint,
4136    );
4137    pub fn gst_video_scaler_new(
4138        method: GstVideoResamplerMethod,
4139        flags: GstVideoScalerFlags,
4140        n_taps: c_uint,
4141        in_size: c_uint,
4142        out_size: c_uint,
4143        options: *mut gst::GstStructure,
4144    ) -> *mut GstVideoScaler;
4145
4146    //=========================================================================
4147    // GstVideoTimeCode
4148    //=========================================================================
4149    pub fn gst_video_time_code_get_type() -> GType;
4150    pub fn gst_video_time_code_new(
4151        fps_n: c_uint,
4152        fps_d: c_uint,
4153        latest_daily_jam: *mut glib::GDateTime,
4154        flags: GstVideoTimeCodeFlags,
4155        hours: c_uint,
4156        minutes: c_uint,
4157        seconds: c_uint,
4158        frames: c_uint,
4159        field_count: c_uint,
4160    ) -> *mut GstVideoTimeCode;
4161    pub fn gst_video_time_code_new_empty() -> *mut GstVideoTimeCode;
4162    pub fn gst_video_time_code_new_from_date_time(
4163        fps_n: c_uint,
4164        fps_d: c_uint,
4165        dt: *mut glib::GDateTime,
4166        flags: GstVideoTimeCodeFlags,
4167        field_count: c_uint,
4168    ) -> *mut GstVideoTimeCode;
4169    #[cfg(feature = "v1_16")]
4170    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4171    pub fn gst_video_time_code_new_from_date_time_full(
4172        fps_n: c_uint,
4173        fps_d: c_uint,
4174        dt: *mut glib::GDateTime,
4175        flags: GstVideoTimeCodeFlags,
4176        field_count: c_uint,
4177    ) -> *mut GstVideoTimeCode;
4178    pub fn gst_video_time_code_new_from_string(tc_str: *const c_char) -> *mut GstVideoTimeCode;
4179    pub fn gst_video_time_code_add_frames(tc: *mut GstVideoTimeCode, frames: i64);
4180    pub fn gst_video_time_code_add_interval(
4181        tc: *const GstVideoTimeCode,
4182        tc_inter: *const GstVideoTimeCodeInterval,
4183    ) -> *mut GstVideoTimeCode;
4184    pub fn gst_video_time_code_clear(tc: *mut GstVideoTimeCode);
4185    pub fn gst_video_time_code_compare(
4186        tc1: *const GstVideoTimeCode,
4187        tc2: *const GstVideoTimeCode,
4188    ) -> c_int;
4189    pub fn gst_video_time_code_copy(tc: *const GstVideoTimeCode) -> *mut GstVideoTimeCode;
4190    pub fn gst_video_time_code_frames_since_daily_jam(tc: *const GstVideoTimeCode) -> u64;
4191    pub fn gst_video_time_code_free(tc: *mut GstVideoTimeCode);
4192    pub fn gst_video_time_code_increment_frame(tc: *mut GstVideoTimeCode);
4193    pub fn gst_video_time_code_init(
4194        tc: *mut GstVideoTimeCode,
4195        fps_n: c_uint,
4196        fps_d: c_uint,
4197        latest_daily_jam: *mut glib::GDateTime,
4198        flags: GstVideoTimeCodeFlags,
4199        hours: c_uint,
4200        minutes: c_uint,
4201        seconds: c_uint,
4202        frames: c_uint,
4203        field_count: c_uint,
4204    );
4205    pub fn gst_video_time_code_init_from_date_time(
4206        tc: *mut GstVideoTimeCode,
4207        fps_n: c_uint,
4208        fps_d: c_uint,
4209        dt: *mut glib::GDateTime,
4210        flags: GstVideoTimeCodeFlags,
4211        field_count: c_uint,
4212    );
4213    #[cfg(feature = "v1_16")]
4214    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4215    pub fn gst_video_time_code_init_from_date_time_full(
4216        tc: *mut GstVideoTimeCode,
4217        fps_n: c_uint,
4218        fps_d: c_uint,
4219        dt: *mut glib::GDateTime,
4220        flags: GstVideoTimeCodeFlags,
4221        field_count: c_uint,
4222    ) -> gboolean;
4223    pub fn gst_video_time_code_is_valid(tc: *const GstVideoTimeCode) -> gboolean;
4224    pub fn gst_video_time_code_nsec_since_daily_jam(tc: *const GstVideoTimeCode) -> u64;
4225    pub fn gst_video_time_code_to_date_time(tc: *const GstVideoTimeCode) -> *mut glib::GDateTime;
4226    pub fn gst_video_time_code_to_string(tc: *const GstVideoTimeCode) -> *mut c_char;
4227
4228    //=========================================================================
4229    // GstVideoTimeCodeInterval
4230    //=========================================================================
4231    pub fn gst_video_time_code_interval_get_type() -> GType;
4232    pub fn gst_video_time_code_interval_new(
4233        hours: c_uint,
4234        minutes: c_uint,
4235        seconds: c_uint,
4236        frames: c_uint,
4237    ) -> *mut GstVideoTimeCodeInterval;
4238    pub fn gst_video_time_code_interval_new_from_string(
4239        tc_inter_str: *const c_char,
4240    ) -> *mut GstVideoTimeCodeInterval;
4241    pub fn gst_video_time_code_interval_clear(tc: *mut GstVideoTimeCodeInterval);
4242    pub fn gst_video_time_code_interval_copy(
4243        tc: *const GstVideoTimeCodeInterval,
4244    ) -> *mut GstVideoTimeCodeInterval;
4245    pub fn gst_video_time_code_interval_free(tc: *mut GstVideoTimeCodeInterval);
4246    pub fn gst_video_time_code_interval_init(
4247        tc: *mut GstVideoTimeCodeInterval,
4248        hours: c_uint,
4249        minutes: c_uint,
4250        seconds: c_uint,
4251        frames: c_uint,
4252    );
4253
4254    //=========================================================================
4255    // GstVideoTimeCodeMeta
4256    //=========================================================================
4257    pub fn gst_video_time_code_meta_get_info() -> *const gst::GstMetaInfo;
4258
4259    //=========================================================================
4260    // GstVideoVBIEncoder
4261    //=========================================================================
4262    #[cfg(feature = "v1_16")]
4263    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4264    pub fn gst_video_vbi_encoder_get_type() -> GType;
4265    #[cfg(feature = "v1_16")]
4266    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4267    pub fn gst_video_vbi_encoder_new(
4268        format: GstVideoFormat,
4269        pixel_width: u32,
4270    ) -> *mut GstVideoVBIEncoder;
4271    #[cfg(feature = "v1_16")]
4272    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4273    pub fn gst_video_vbi_encoder_add_ancillary(
4274        encoder: *mut GstVideoVBIEncoder,
4275        composite: gboolean,
4276        DID: u8,
4277        SDID_block_number: u8,
4278        data: *const u8,
4279        data_count: c_uint,
4280    ) -> gboolean;
4281    #[cfg(feature = "v1_16")]
4282    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4283    pub fn gst_video_vbi_encoder_copy(
4284        encoder: *const GstVideoVBIEncoder,
4285    ) -> *mut GstVideoVBIEncoder;
4286    #[cfg(feature = "v1_16")]
4287    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4288    pub fn gst_video_vbi_encoder_free(encoder: *mut GstVideoVBIEncoder);
4289    #[cfg(feature = "v1_16")]
4290    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4291    pub fn gst_video_vbi_encoder_write_line(encoder: *mut GstVideoVBIEncoder, data: *mut u8);
4292
4293    //=========================================================================
4294    // GstVideoVBIParser
4295    //=========================================================================
4296    #[cfg(feature = "v1_16")]
4297    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4298    pub fn gst_video_vbi_parser_get_type() -> GType;
4299    #[cfg(feature = "v1_16")]
4300    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4301    pub fn gst_video_vbi_parser_new(
4302        format: GstVideoFormat,
4303        pixel_width: u32,
4304    ) -> *mut GstVideoVBIParser;
4305    #[cfg(feature = "v1_16")]
4306    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4307    pub fn gst_video_vbi_parser_add_line(parser: *mut GstVideoVBIParser, data: *const u8);
4308    #[cfg(feature = "v1_16")]
4309    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4310    pub fn gst_video_vbi_parser_copy(parser: *const GstVideoVBIParser) -> *mut GstVideoVBIParser;
4311    #[cfg(feature = "v1_16")]
4312    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4313    pub fn gst_video_vbi_parser_free(parser: *mut GstVideoVBIParser);
4314    #[cfg(feature = "v1_16")]
4315    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4316    pub fn gst_video_vbi_parser_get_ancillary(
4317        parser: *mut GstVideoVBIParser,
4318        anc: *mut GstVideoAncillary,
4319    ) -> GstVideoVBIParserResult;
4320
4321    //=========================================================================
4322    // GstColorBalanceChannel
4323    //=========================================================================
4324    pub fn gst_color_balance_channel_get_type() -> GType;
4325
4326    //=========================================================================
4327    // GstVideoAggregator
4328    //=========================================================================
4329    #[cfg(feature = "v1_16")]
4330    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4331    pub fn gst_video_aggregator_get_type() -> GType;
4332    #[cfg(feature = "v1_20")]
4333    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4334    pub fn gst_video_aggregator_get_execution_task_pool(
4335        vagg: *mut GstVideoAggregator,
4336    ) -> *mut gst::GstTaskPool;
4337
4338    //=========================================================================
4339    // GstVideoAggregatorConvertPad
4340    //=========================================================================
4341    #[cfg(feature = "v1_16")]
4342    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4343    pub fn gst_video_aggregator_convert_pad_get_type() -> GType;
4344    #[cfg(feature = "v1_16")]
4345    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4346    pub fn gst_video_aggregator_convert_pad_update_conversion_info(
4347        pad: *mut GstVideoAggregatorConvertPad,
4348    );
4349
4350    //=========================================================================
4351    // GstVideoAggregatorPad
4352    //=========================================================================
4353    #[cfg(feature = "v1_16")]
4354    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4355    pub fn gst_video_aggregator_pad_get_type() -> GType;
4356    #[cfg(feature = "v1_16")]
4357    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4358    pub fn gst_video_aggregator_pad_get_current_buffer(
4359        pad: *mut GstVideoAggregatorPad,
4360    ) -> *mut gst::GstBuffer;
4361    #[cfg(feature = "v1_16")]
4362    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4363    pub fn gst_video_aggregator_pad_get_prepared_frame(
4364        pad: *mut GstVideoAggregatorPad,
4365    ) -> *mut GstVideoFrame;
4366    #[cfg(feature = "v1_16")]
4367    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4368    pub fn gst_video_aggregator_pad_has_current_buffer(pad: *mut GstVideoAggregatorPad)
4369    -> gboolean;
4370    #[cfg(feature = "v1_16")]
4371    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4372    pub fn gst_video_aggregator_pad_set_needs_alpha(
4373        pad: *mut GstVideoAggregatorPad,
4374        needs_alpha: gboolean,
4375    );
4376
4377    //=========================================================================
4378    // GstVideoAggregatorParallelConvertPad
4379    //=========================================================================
4380    #[cfg(feature = "v1_20")]
4381    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4382    pub fn gst_video_aggregator_parallel_convert_pad_get_type() -> GType;
4383
4384    //=========================================================================
4385    // GstVideoBufferPool
4386    //=========================================================================
4387    pub fn gst_video_buffer_pool_get_type() -> GType;
4388    pub fn gst_video_buffer_pool_new() -> *mut gst::GstBufferPool;
4389
4390    //=========================================================================
4391    // GstVideoDecoder
4392    //=========================================================================
4393    pub fn gst_video_decoder_get_type() -> GType;
4394    pub fn gst_video_decoder_add_to_frame(decoder: *mut GstVideoDecoder, n_bytes: c_int);
4395    pub fn gst_video_decoder_allocate_output_buffer(
4396        decoder: *mut GstVideoDecoder,
4397    ) -> *mut gst::GstBuffer;
4398    pub fn gst_video_decoder_allocate_output_frame(
4399        decoder: *mut GstVideoDecoder,
4400        frame: *mut GstVideoCodecFrame,
4401    ) -> gst::GstFlowReturn;
4402    pub fn gst_video_decoder_allocate_output_frame_with_params(
4403        decoder: *mut GstVideoDecoder,
4404        frame: *mut GstVideoCodecFrame,
4405        params: *mut gst::GstBufferPoolAcquireParams,
4406    ) -> gst::GstFlowReturn;
4407    pub fn gst_video_decoder_drop_frame(
4408        dec: *mut GstVideoDecoder,
4409        frame: *mut GstVideoCodecFrame,
4410    ) -> gst::GstFlowReturn;
4411    #[cfg(feature = "v1_20")]
4412    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4413    pub fn gst_video_decoder_drop_subframe(
4414        dec: *mut GstVideoDecoder,
4415        frame: *mut GstVideoCodecFrame,
4416    ) -> gst::GstFlowReturn;
4417    pub fn gst_video_decoder_finish_frame(
4418        decoder: *mut GstVideoDecoder,
4419        frame: *mut GstVideoCodecFrame,
4420    ) -> gst::GstFlowReturn;
4421    #[cfg(feature = "v1_20")]
4422    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4423    pub fn gst_video_decoder_finish_subframe(
4424        decoder: *mut GstVideoDecoder,
4425        frame: *mut GstVideoCodecFrame,
4426    ) -> gst::GstFlowReturn;
4427    pub fn gst_video_decoder_get_allocator(
4428        decoder: *mut GstVideoDecoder,
4429        allocator: *mut *mut gst::GstAllocator,
4430        params: *mut gst::GstAllocationParams,
4431    );
4432    pub fn gst_video_decoder_get_buffer_pool(
4433        decoder: *mut GstVideoDecoder,
4434    ) -> *mut gst::GstBufferPool;
4435    pub fn gst_video_decoder_get_estimate_rate(dec: *mut GstVideoDecoder) -> c_int;
4436    pub fn gst_video_decoder_get_frame(
4437        decoder: *mut GstVideoDecoder,
4438        frame_number: c_int,
4439    ) -> *mut GstVideoCodecFrame;
4440    pub fn gst_video_decoder_get_frames(decoder: *mut GstVideoDecoder) -> *mut glib::GList;
4441    #[cfg(feature = "v1_20")]
4442    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4443    pub fn gst_video_decoder_get_input_subframe_index(
4444        decoder: *mut GstVideoDecoder,
4445        frame: *mut GstVideoCodecFrame,
4446    ) -> c_uint;
4447    pub fn gst_video_decoder_get_latency(
4448        decoder: *mut GstVideoDecoder,
4449        min_latency: *mut gst::GstClockTime,
4450        max_latency: *mut gst::GstClockTime,
4451    );
4452    pub fn gst_video_decoder_get_max_decode_time(
4453        decoder: *mut GstVideoDecoder,
4454        frame: *mut GstVideoCodecFrame,
4455    ) -> gst::GstClockTimeDiff;
4456    pub fn gst_video_decoder_get_max_errors(dec: *mut GstVideoDecoder) -> c_int;
4457    pub fn gst_video_decoder_get_needs_format(dec: *mut GstVideoDecoder) -> gboolean;
4458    #[cfg(feature = "v1_20")]
4459    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4460    pub fn gst_video_decoder_get_needs_sync_point(dec: *mut GstVideoDecoder) -> gboolean;
4461    pub fn gst_video_decoder_get_oldest_frame(
4462        decoder: *mut GstVideoDecoder,
4463    ) -> *mut GstVideoCodecFrame;
4464    pub fn gst_video_decoder_get_output_state(
4465        decoder: *mut GstVideoDecoder,
4466    ) -> *mut GstVideoCodecState;
4467    pub fn gst_video_decoder_get_packetized(decoder: *mut GstVideoDecoder) -> gboolean;
4468    pub fn gst_video_decoder_get_pending_frame_size(decoder: *mut GstVideoDecoder) -> size_t;
4469    #[cfg(feature = "v1_20")]
4470    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4471    pub fn gst_video_decoder_get_processed_subframe_index(
4472        decoder: *mut GstVideoDecoder,
4473        frame: *mut GstVideoCodecFrame,
4474    ) -> c_uint;
4475    pub fn gst_video_decoder_get_qos_proportion(decoder: *mut GstVideoDecoder) -> c_double;
4476    #[cfg(feature = "v1_20")]
4477    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4478    pub fn gst_video_decoder_get_subframe_mode(decoder: *mut GstVideoDecoder) -> gboolean;
4479    pub fn gst_video_decoder_have_frame(decoder: *mut GstVideoDecoder) -> gst::GstFlowReturn;
4480    #[cfg(feature = "v1_20")]
4481    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4482    pub fn gst_video_decoder_have_last_subframe(
4483        decoder: *mut GstVideoDecoder,
4484        frame: *mut GstVideoCodecFrame,
4485    ) -> gst::GstFlowReturn;
4486    pub fn gst_video_decoder_merge_tags(
4487        decoder: *mut GstVideoDecoder,
4488        tags: *const gst::GstTagList,
4489        mode: gst::GstTagMergeMode,
4490    );
4491    pub fn gst_video_decoder_negotiate(decoder: *mut GstVideoDecoder) -> gboolean;
4492    pub fn gst_video_decoder_proxy_getcaps(
4493        decoder: *mut GstVideoDecoder,
4494        caps: *mut gst::GstCaps,
4495        filter: *mut gst::GstCaps,
4496    ) -> *mut gst::GstCaps;
4497    pub fn gst_video_decoder_release_frame(
4498        dec: *mut GstVideoDecoder,
4499        frame: *mut GstVideoCodecFrame,
4500    );
4501    #[cfg(feature = "v1_20")]
4502    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4503    pub fn gst_video_decoder_request_sync_point(
4504        dec: *mut GstVideoDecoder,
4505        frame: *mut GstVideoCodecFrame,
4506        flags: GstVideoDecoderRequestSyncPointFlags,
4507    );
4508    pub fn gst_video_decoder_set_estimate_rate(dec: *mut GstVideoDecoder, enabled: gboolean);
4509    #[cfg(feature = "v1_16")]
4510    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4511    pub fn gst_video_decoder_set_interlaced_output_state(
4512        decoder: *mut GstVideoDecoder,
4513        fmt: GstVideoFormat,
4514        interlace_mode: GstVideoInterlaceMode,
4515        width: c_uint,
4516        height: c_uint,
4517        reference: *mut GstVideoCodecState,
4518    ) -> *mut GstVideoCodecState;
4519    pub fn gst_video_decoder_set_latency(
4520        decoder: *mut GstVideoDecoder,
4521        min_latency: gst::GstClockTime,
4522        max_latency: gst::GstClockTime,
4523    );
4524    pub fn gst_video_decoder_set_max_errors(dec: *mut GstVideoDecoder, num: c_int);
4525    pub fn gst_video_decoder_set_needs_format(dec: *mut GstVideoDecoder, enabled: gboolean);
4526    #[cfg(feature = "v1_20")]
4527    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4528    pub fn gst_video_decoder_set_needs_sync_point(dec: *mut GstVideoDecoder, enabled: gboolean);
4529    pub fn gst_video_decoder_set_output_state(
4530        decoder: *mut GstVideoDecoder,
4531        fmt: GstVideoFormat,
4532        width: c_uint,
4533        height: c_uint,
4534        reference: *mut GstVideoCodecState,
4535    ) -> *mut GstVideoCodecState;
4536    pub fn gst_video_decoder_set_packetized(decoder: *mut GstVideoDecoder, packetized: gboolean);
4537    #[cfg(feature = "v1_20")]
4538    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4539    pub fn gst_video_decoder_set_subframe_mode(
4540        decoder: *mut GstVideoDecoder,
4541        subframe_mode: gboolean,
4542    );
4543    pub fn gst_video_decoder_set_use_default_pad_acceptcaps(
4544        decoder: *mut GstVideoDecoder,
4545        use_: gboolean,
4546    );
4547
4548    //=========================================================================
4549    // GstVideoDmabufPool
4550    //=========================================================================
4551    #[cfg(feature = "v1_28")]
4552    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4553    pub fn gst_video_dmabuf_pool_get_type() -> GType;
4554    #[cfg(feature = "v1_28")]
4555    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4556    pub fn gst_video_dmabuf_pool_new() -> *mut gst::GstBufferPool;
4557
4558    //=========================================================================
4559    // GstVideoEncoder
4560    //=========================================================================
4561    pub fn gst_video_encoder_get_type() -> GType;
4562    pub fn gst_video_encoder_allocate_output_buffer(
4563        encoder: *mut GstVideoEncoder,
4564        size: size_t,
4565    ) -> *mut gst::GstBuffer;
4566    pub fn gst_video_encoder_allocate_output_frame(
4567        encoder: *mut GstVideoEncoder,
4568        frame: *mut GstVideoCodecFrame,
4569        size: size_t,
4570    ) -> gst::GstFlowReturn;
4571    #[cfg(feature = "v1_26")]
4572    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4573    pub fn gst_video_encoder_drop_frame(
4574        encoder: *mut GstVideoEncoder,
4575        frame: *mut GstVideoCodecFrame,
4576    );
4577    pub fn gst_video_encoder_finish_frame(
4578        encoder: *mut GstVideoEncoder,
4579        frame: *mut GstVideoCodecFrame,
4580    ) -> gst::GstFlowReturn;
4581    #[cfg(feature = "v1_18")]
4582    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4583    pub fn gst_video_encoder_finish_subframe(
4584        encoder: *mut GstVideoEncoder,
4585        frame: *mut GstVideoCodecFrame,
4586    ) -> gst::GstFlowReturn;
4587    pub fn gst_video_encoder_get_allocator(
4588        encoder: *mut GstVideoEncoder,
4589        allocator: *mut *mut gst::GstAllocator,
4590        params: *mut gst::GstAllocationParams,
4591    );
4592    pub fn gst_video_encoder_get_frame(
4593        encoder: *mut GstVideoEncoder,
4594        frame_number: c_int,
4595    ) -> *mut GstVideoCodecFrame;
4596    pub fn gst_video_encoder_get_frames(encoder: *mut GstVideoEncoder) -> *mut glib::GList;
4597    pub fn gst_video_encoder_get_latency(
4598        encoder: *mut GstVideoEncoder,
4599        min_latency: *mut gst::GstClockTime,
4600        max_latency: *mut gst::GstClockTime,
4601    );
4602    pub fn gst_video_encoder_get_max_encode_time(
4603        encoder: *mut GstVideoEncoder,
4604        frame: *mut GstVideoCodecFrame,
4605    ) -> gst::GstClockTimeDiff;
4606    #[cfg(feature = "v1_18")]
4607    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4608    pub fn gst_video_encoder_get_min_force_key_unit_interval(
4609        encoder: *mut GstVideoEncoder,
4610    ) -> gst::GstClockTime;
4611    pub fn gst_video_encoder_get_oldest_frame(
4612        encoder: *mut GstVideoEncoder,
4613    ) -> *mut GstVideoCodecFrame;
4614    pub fn gst_video_encoder_get_output_state(
4615        encoder: *mut GstVideoEncoder,
4616    ) -> *mut GstVideoCodecState;
4617    pub fn gst_video_encoder_is_qos_enabled(encoder: *mut GstVideoEncoder) -> gboolean;
4618    pub fn gst_video_encoder_merge_tags(
4619        encoder: *mut GstVideoEncoder,
4620        tags: *const gst::GstTagList,
4621        mode: gst::GstTagMergeMode,
4622    );
4623    pub fn gst_video_encoder_negotiate(encoder: *mut GstVideoEncoder) -> gboolean;
4624    pub fn gst_video_encoder_proxy_getcaps(
4625        enc: *mut GstVideoEncoder,
4626        caps: *mut gst::GstCaps,
4627        filter: *mut gst::GstCaps,
4628    ) -> *mut gst::GstCaps;
4629    #[cfg(feature = "v1_26")]
4630    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4631    pub fn gst_video_encoder_release_frame(
4632        encoder: *mut GstVideoEncoder,
4633        frame: *mut GstVideoCodecFrame,
4634    );
4635    #[cfg(feature = "v1_30")]
4636    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
4637    pub fn gst_video_encoder_set_allocator(
4638        encoder: *mut GstVideoEncoder,
4639        allocator: *mut gst::GstAllocator,
4640        params: *const gst::GstAllocationParams,
4641    );
4642    pub fn gst_video_encoder_set_headers(encoder: *mut GstVideoEncoder, headers: *mut glib::GList);
4643    pub fn gst_video_encoder_set_latency(
4644        encoder: *mut GstVideoEncoder,
4645        min_latency: gst::GstClockTime,
4646        max_latency: gst::GstClockTime,
4647    );
4648    #[cfg(feature = "v1_18")]
4649    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4650    pub fn gst_video_encoder_set_min_force_key_unit_interval(
4651        encoder: *mut GstVideoEncoder,
4652        interval: gst::GstClockTime,
4653    );
4654    pub fn gst_video_encoder_set_min_pts(encoder: *mut GstVideoEncoder, min_pts: gst::GstClockTime);
4655    pub fn gst_video_encoder_set_output_state(
4656        encoder: *mut GstVideoEncoder,
4657        caps: *mut gst::GstCaps,
4658        reference: *mut GstVideoCodecState,
4659    ) -> *mut GstVideoCodecState;
4660    pub fn gst_video_encoder_set_qos_enabled(encoder: *mut GstVideoEncoder, enabled: gboolean);
4661
4662    //=========================================================================
4663    // GstVideoFilter
4664    //=========================================================================
4665    pub fn gst_video_filter_get_type() -> GType;
4666
4667    //=========================================================================
4668    // GstVideoMultiviewFlagsSet
4669    //=========================================================================
4670    pub fn gst_video_multiview_flagset_get_type() -> GType;
4671
4672    //=========================================================================
4673    // GstVideoSink
4674    //=========================================================================
4675    pub fn gst_video_sink_get_type() -> GType;
4676    pub fn gst_video_sink_center_rect(
4677        src: GstVideoRectangle,
4678        dst: GstVideoRectangle,
4679        result: *mut GstVideoRectangle,
4680        scaling: gboolean,
4681    );
4682
4683    //=========================================================================
4684    // GstColorBalance
4685    //=========================================================================
4686    pub fn gst_color_balance_get_type() -> GType;
4687    pub fn gst_color_balance_get_balance_type(balance: *mut GstColorBalance)
4688    -> GstColorBalanceType;
4689    pub fn gst_color_balance_get_value(
4690        balance: *mut GstColorBalance,
4691        channel: *mut GstColorBalanceChannel,
4692    ) -> c_int;
4693    pub fn gst_color_balance_list_channels(balance: *mut GstColorBalance) -> *const glib::GList;
4694    pub fn gst_color_balance_set_value(
4695        balance: *mut GstColorBalance,
4696        channel: *mut GstColorBalanceChannel,
4697        value: c_int,
4698    );
4699    pub fn gst_color_balance_value_changed(
4700        balance: *mut GstColorBalance,
4701        channel: *mut GstColorBalanceChannel,
4702        value: c_int,
4703    );
4704
4705    //=========================================================================
4706    // GstNavigation
4707    //=========================================================================
4708    pub fn gst_navigation_get_type() -> GType;
4709    #[cfg(feature = "v1_22")]
4710    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4711    pub fn gst_navigation_event_get_coordinates(
4712        event: *mut gst::GstEvent,
4713        x: *mut c_double,
4714        y: *mut c_double,
4715    ) -> gboolean;
4716    pub fn gst_navigation_event_get_type(event: *mut gst::GstEvent) -> GstNavigationEventType;
4717    #[cfg(feature = "v1_22")]
4718    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4719    pub fn gst_navigation_event_new_command(command: GstNavigationCommand) -> *mut gst::GstEvent;
4720    #[cfg(feature = "v1_22")]
4721    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4722    pub fn gst_navigation_event_new_key_press(
4723        key: *const c_char,
4724        state: GstNavigationModifierType,
4725    ) -> *mut gst::GstEvent;
4726    #[cfg(feature = "v1_22")]
4727    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4728    pub fn gst_navigation_event_new_key_release(
4729        key: *const c_char,
4730        state: GstNavigationModifierType,
4731    ) -> *mut gst::GstEvent;
4732    #[cfg(feature = "v1_22")]
4733    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4734    pub fn gst_navigation_event_new_mouse_button_press(
4735        button: c_int,
4736        x: c_double,
4737        y: c_double,
4738        state: GstNavigationModifierType,
4739    ) -> *mut gst::GstEvent;
4740    #[cfg(feature = "v1_22")]
4741    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4742    pub fn gst_navigation_event_new_mouse_button_release(
4743        button: c_int,
4744        x: c_double,
4745        y: c_double,
4746        state: GstNavigationModifierType,
4747    ) -> *mut gst::GstEvent;
4748    #[cfg(feature = "v1_26")]
4749    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4750    pub fn gst_navigation_event_new_mouse_double_click(
4751        button: c_int,
4752        x: c_double,
4753        y: c_double,
4754        state: GstNavigationModifierType,
4755    ) -> *mut gst::GstEvent;
4756    #[cfg(feature = "v1_22")]
4757    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4758    pub fn gst_navigation_event_new_mouse_move(
4759        x: c_double,
4760        y: c_double,
4761        state: GstNavigationModifierType,
4762    ) -> *mut gst::GstEvent;
4763    #[cfg(feature = "v1_22")]
4764    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4765    pub fn gst_navigation_event_new_mouse_scroll(
4766        x: c_double,
4767        y: c_double,
4768        delta_x: c_double,
4769        delta_y: c_double,
4770        state: GstNavigationModifierType,
4771    ) -> *mut gst::GstEvent;
4772    #[cfg(feature = "v1_22")]
4773    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4774    pub fn gst_navigation_event_new_touch_cancel(
4775        state: GstNavigationModifierType,
4776    ) -> *mut gst::GstEvent;
4777    #[cfg(feature = "v1_22")]
4778    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4779    pub fn gst_navigation_event_new_touch_down(
4780        identifier: c_uint,
4781        x: c_double,
4782        y: c_double,
4783        pressure: c_double,
4784        state: GstNavigationModifierType,
4785    ) -> *mut gst::GstEvent;
4786    #[cfg(feature = "v1_22")]
4787    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4788    pub fn gst_navigation_event_new_touch_frame(
4789        state: GstNavigationModifierType,
4790    ) -> *mut gst::GstEvent;
4791    #[cfg(feature = "v1_22")]
4792    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4793    pub fn gst_navigation_event_new_touch_motion(
4794        identifier: c_uint,
4795        x: c_double,
4796        y: c_double,
4797        pressure: c_double,
4798        state: GstNavigationModifierType,
4799    ) -> *mut gst::GstEvent;
4800    #[cfg(feature = "v1_22")]
4801    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4802    pub fn gst_navigation_event_new_touch_up(
4803        identifier: c_uint,
4804        x: c_double,
4805        y: c_double,
4806        state: GstNavigationModifierType,
4807    ) -> *mut gst::GstEvent;
4808    pub fn gst_navigation_event_parse_command(
4809        event: *mut gst::GstEvent,
4810        command: *mut GstNavigationCommand,
4811    ) -> gboolean;
4812    pub fn gst_navigation_event_parse_key_event(
4813        event: *mut gst::GstEvent,
4814        key: *mut *const c_char,
4815    ) -> gboolean;
4816    #[cfg(feature = "v1_22")]
4817    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4818    pub fn gst_navigation_event_parse_modifier_state(
4819        event: *mut gst::GstEvent,
4820        state: *mut GstNavigationModifierType,
4821    ) -> gboolean;
4822    pub fn gst_navigation_event_parse_mouse_button_event(
4823        event: *mut gst::GstEvent,
4824        button: *mut c_int,
4825        x: *mut c_double,
4826        y: *mut c_double,
4827    ) -> gboolean;
4828    pub fn gst_navigation_event_parse_mouse_move_event(
4829        event: *mut gst::GstEvent,
4830        x: *mut c_double,
4831        y: *mut c_double,
4832    ) -> gboolean;
4833    #[cfg(feature = "v1_18")]
4834    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4835    pub fn gst_navigation_event_parse_mouse_scroll_event(
4836        event: *mut gst::GstEvent,
4837        x: *mut c_double,
4838        y: *mut c_double,
4839        delta_x: *mut c_double,
4840        delta_y: *mut c_double,
4841    ) -> gboolean;
4842    #[cfg(feature = "v1_22")]
4843    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4844    pub fn gst_navigation_event_parse_touch_event(
4845        event: *mut gst::GstEvent,
4846        identifier: *mut c_uint,
4847        x: *mut c_double,
4848        y: *mut c_double,
4849        pressure: *mut c_double,
4850    ) -> gboolean;
4851    #[cfg(feature = "v1_22")]
4852    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4853    pub fn gst_navigation_event_parse_touch_up_event(
4854        event: *mut gst::GstEvent,
4855        identifier: *mut c_uint,
4856        x: *mut c_double,
4857        y: *mut c_double,
4858    ) -> gboolean;
4859    #[cfg(feature = "v1_22")]
4860    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4861    pub fn gst_navigation_event_set_coordinates(
4862        event: *mut gst::GstEvent,
4863        x: c_double,
4864        y: c_double,
4865    ) -> gboolean;
4866    pub fn gst_navigation_message_get_type(
4867        message: *mut gst::GstMessage,
4868    ) -> GstNavigationMessageType;
4869    pub fn gst_navigation_message_new_angles_changed(
4870        src: *mut gst::GstObject,
4871        cur_angle: c_uint,
4872        n_angles: c_uint,
4873    ) -> *mut gst::GstMessage;
4874    pub fn gst_navigation_message_new_commands_changed(
4875        src: *mut gst::GstObject,
4876    ) -> *mut gst::GstMessage;
4877    pub fn gst_navigation_message_new_event(
4878        src: *mut gst::GstObject,
4879        event: *mut gst::GstEvent,
4880    ) -> *mut gst::GstMessage;
4881    pub fn gst_navigation_message_new_mouse_over(
4882        src: *mut gst::GstObject,
4883        active: gboolean,
4884    ) -> *mut gst::GstMessage;
4885    pub fn gst_navigation_message_parse_angles_changed(
4886        message: *mut gst::GstMessage,
4887        cur_angle: *mut c_uint,
4888        n_angles: *mut c_uint,
4889    ) -> gboolean;
4890    pub fn gst_navigation_message_parse_event(
4891        message: *mut gst::GstMessage,
4892        event: *mut *mut gst::GstEvent,
4893    ) -> gboolean;
4894    pub fn gst_navigation_message_parse_mouse_over(
4895        message: *mut gst::GstMessage,
4896        active: *mut gboolean,
4897    ) -> gboolean;
4898    pub fn gst_navigation_query_get_type(query: *mut gst::GstQuery) -> GstNavigationQueryType;
4899    pub fn gst_navigation_query_new_angles() -> *mut gst::GstQuery;
4900    pub fn gst_navigation_query_new_commands() -> *mut gst::GstQuery;
4901    pub fn gst_navigation_query_parse_angles(
4902        query: *mut gst::GstQuery,
4903        cur_angle: *mut c_uint,
4904        n_angles: *mut c_uint,
4905    ) -> gboolean;
4906    pub fn gst_navigation_query_parse_commands_length(
4907        query: *mut gst::GstQuery,
4908        n_cmds: *mut c_uint,
4909    ) -> gboolean;
4910    pub fn gst_navigation_query_parse_commands_nth(
4911        query: *mut gst::GstQuery,
4912        nth: c_uint,
4913        cmd: *mut GstNavigationCommand,
4914    ) -> gboolean;
4915    pub fn gst_navigation_query_set_angles(
4916        query: *mut gst::GstQuery,
4917        cur_angle: c_uint,
4918        n_angles: c_uint,
4919    );
4920    pub fn gst_navigation_query_set_commands(query: *mut gst::GstQuery, n_cmds: c_int, ...);
4921    pub fn gst_navigation_query_set_commandsv(
4922        query: *mut gst::GstQuery,
4923        n_cmds: c_int,
4924        cmds: *mut GstNavigationCommand,
4925    );
4926    pub fn gst_navigation_send_command(
4927        navigation: *mut GstNavigation,
4928        command: GstNavigationCommand,
4929    );
4930    pub fn gst_navigation_send_event(
4931        navigation: *mut GstNavigation,
4932        structure: *mut gst::GstStructure,
4933    );
4934    #[cfg(feature = "v1_22")]
4935    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4936    pub fn gst_navigation_send_event_simple(
4937        navigation: *mut GstNavigation,
4938        event: *mut gst::GstEvent,
4939    );
4940    pub fn gst_navigation_send_key_event(
4941        navigation: *mut GstNavigation,
4942        event: *const c_char,
4943        key: *const c_char,
4944    );
4945    pub fn gst_navigation_send_mouse_event(
4946        navigation: *mut GstNavigation,
4947        event: *const c_char,
4948        button: c_int,
4949        x: c_double,
4950        y: c_double,
4951    );
4952    #[cfg(feature = "v1_18")]
4953    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4954    pub fn gst_navigation_send_mouse_scroll_event(
4955        navigation: *mut GstNavigation,
4956        x: c_double,
4957        y: c_double,
4958        delta_x: c_double,
4959        delta_y: c_double,
4960    );
4961
4962    //=========================================================================
4963    // GstVideoDirection
4964    //=========================================================================
4965    pub fn gst_video_direction_get_type() -> GType;
4966
4967    //=========================================================================
4968    // GstVideoOrientation
4969    //=========================================================================
4970    pub fn gst_video_orientation_get_type() -> GType;
4971    #[cfg(feature = "v1_20")]
4972    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4973    pub fn gst_video_orientation_from_tag(
4974        taglist: *mut gst::GstTagList,
4975        method: *mut GstVideoOrientationMethod,
4976    ) -> gboolean;
4977    pub fn gst_video_orientation_get_hcenter(
4978        video_orientation: *mut GstVideoOrientation,
4979        center: *mut c_int,
4980    ) -> gboolean;
4981    pub fn gst_video_orientation_get_hflip(
4982        video_orientation: *mut GstVideoOrientation,
4983        flip: *mut gboolean,
4984    ) -> gboolean;
4985    pub fn gst_video_orientation_get_vcenter(
4986        video_orientation: *mut GstVideoOrientation,
4987        center: *mut c_int,
4988    ) -> gboolean;
4989    pub fn gst_video_orientation_get_vflip(
4990        video_orientation: *mut GstVideoOrientation,
4991        flip: *mut gboolean,
4992    ) -> gboolean;
4993    pub fn gst_video_orientation_set_hcenter(
4994        video_orientation: *mut GstVideoOrientation,
4995        center: c_int,
4996    ) -> gboolean;
4997    pub fn gst_video_orientation_set_hflip(
4998        video_orientation: *mut GstVideoOrientation,
4999        flip: gboolean,
5000    ) -> gboolean;
5001    pub fn gst_video_orientation_set_vcenter(
5002        video_orientation: *mut GstVideoOrientation,
5003        center: c_int,
5004    ) -> gboolean;
5005    pub fn gst_video_orientation_set_vflip(
5006        video_orientation: *mut GstVideoOrientation,
5007        flip: gboolean,
5008    ) -> gboolean;
5009
5010    //=========================================================================
5011    // GstVideoOverlay
5012    //=========================================================================
5013    pub fn gst_video_overlay_get_type() -> GType;
5014    pub fn gst_video_overlay_install_properties(
5015        oclass: *mut gobject::GObjectClass,
5016        last_prop_id: c_int,
5017    );
5018    pub fn gst_video_overlay_set_property(
5019        object: *mut gobject::GObject,
5020        last_prop_id: c_int,
5021        property_id: c_uint,
5022        value: *const gobject::GValue,
5023    ) -> gboolean;
5024    pub fn gst_video_overlay_expose(overlay: *mut GstVideoOverlay);
5025    pub fn gst_video_overlay_got_window_handle(overlay: *mut GstVideoOverlay, handle: uintptr_t);
5026    pub fn gst_video_overlay_handle_events(overlay: *mut GstVideoOverlay, handle_events: gboolean);
5027    pub fn gst_video_overlay_prepare_window_handle(overlay: *mut GstVideoOverlay);
5028    pub fn gst_video_overlay_set_render_rectangle(
5029        overlay: *mut GstVideoOverlay,
5030        x: c_int,
5031        y: c_int,
5032        width: c_int,
5033        height: c_int,
5034    ) -> gboolean;
5035    pub fn gst_video_overlay_set_window_handle(overlay: *mut GstVideoOverlay, handle: uintptr_t);
5036
5037    //=========================================================================
5038    // Other functions
5039    //=========================================================================
5040    pub fn gst_ancillary_meta_api_get_type() -> GType;
5041    #[cfg(feature = "v1_24")]
5042    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
5043    pub fn gst_buffer_add_ancillary_meta(buffer: *mut gst::GstBuffer) -> *mut GstAncillaryMeta;
5044    #[cfg(feature = "v1_18")]
5045    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5046    pub fn gst_buffer_add_video_afd_meta(
5047        buffer: *mut gst::GstBuffer,
5048        field: u8,
5049        spec: GstVideoAFDSpec,
5050        afd: GstVideoAFDValue,
5051    ) -> *mut GstVideoAFDMeta;
5052    pub fn gst_buffer_add_video_affine_transformation_meta(
5053        buffer: *mut gst::GstBuffer,
5054    ) -> *mut GstVideoAffineTransformationMeta;
5055    #[cfg(feature = "v1_18")]
5056    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5057    pub fn gst_buffer_add_video_bar_meta(
5058        buffer: *mut gst::GstBuffer,
5059        field: u8,
5060        is_letterbox: gboolean,
5061        bar_data1: c_uint,
5062        bar_data2: c_uint,
5063    ) -> *mut GstVideoBarMeta;
5064    #[cfg(feature = "v1_16")]
5065    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5066    pub fn gst_buffer_add_video_caption_meta(
5067        buffer: *mut gst::GstBuffer,
5068        caption_type: GstVideoCaptionType,
5069        data: *const u8,
5070        size: size_t,
5071    ) -> *mut GstVideoCaptionMeta;
5072    #[cfg(feature = "v1_20")]
5073    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5074    pub fn gst_buffer_add_video_codec_alpha_meta(
5075        buffer: *mut gst::GstBuffer,
5076        alpha_buffer: *mut gst::GstBuffer,
5077    ) -> *mut GstVideoCodecAlphaMeta;
5078    #[cfg(feature = "v1_30")]
5079    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5080    pub fn gst_buffer_add_video_dsc_initialization_meta(
5081        buffer: *mut gst::GstBuffer,
5082        dsc_initialization: *const GstH274DigitallySignedContentInitialization,
5083    ) -> *mut GstVideoDSCInitializationMeta;
5084    #[cfg(feature = "v1_30")]
5085    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5086    pub fn gst_buffer_add_video_dsc_selection_meta(
5087        buffer: *mut gst::GstBuffer,
5088        dsc_selection: *const GstH274DigitallySignedContentSelection,
5089    ) -> *mut GstVideoDSCSelectionMeta;
5090    #[cfg(feature = "v1_30")]
5091    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5092    pub fn gst_buffer_add_video_dsc_verification_meta(
5093        buffer: *mut gst::GstBuffer,
5094        dsc_verification: *const GstH274DigitallySignedContentVerification,
5095    ) -> *mut GstVideoDSCVerificationMeta;
5096    pub fn gst_buffer_add_video_gl_texture_upload_meta(
5097        buffer: *mut gst::GstBuffer,
5098        texture_orientation: GstVideoGLTextureOrientation,
5099        n_textures: c_uint,
5100        texture_type: *mut GstVideoGLTextureType,
5101        upload: GstVideoGLTextureUpload,
5102        user_data: gpointer,
5103        user_data_copy: gobject::GBoxedCopyFunc,
5104        user_data_free: gobject::GBoxedFreeFunc,
5105    ) -> *mut GstVideoGLTextureUploadMeta;
5106    #[cfg(feature = "v1_30")]
5107    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5108    pub fn gst_buffer_add_video_hdr_meta(
5109        buffer: *mut gst::GstBuffer,
5110        format: GstVideoHDRFormat,
5111        data: *const u8,
5112        size: size_t,
5113    ) -> *mut GstVideoHDRMeta;
5114    pub fn gst_buffer_add_video_meta(
5115        buffer: *mut gst::GstBuffer,
5116        flags: GstVideoFrameFlags,
5117        format: GstVideoFormat,
5118        width: c_uint,
5119        height: c_uint,
5120    ) -> *mut GstVideoMeta;
5121    pub fn gst_buffer_add_video_meta_full(
5122        buffer: *mut gst::GstBuffer,
5123        flags: GstVideoFrameFlags,
5124        format: GstVideoFormat,
5125        width: c_uint,
5126        height: c_uint,
5127        n_planes: c_uint,
5128        offset: *const [size_t; 4],
5129        stride: *const [c_int; 4],
5130    ) -> *mut GstVideoMeta;
5131    pub fn gst_buffer_add_video_overlay_composition_meta(
5132        buf: *mut gst::GstBuffer,
5133        comp: *mut GstVideoOverlayComposition,
5134    ) -> *mut GstVideoOverlayCompositionMeta;
5135    pub fn gst_buffer_add_video_region_of_interest_meta(
5136        buffer: *mut gst::GstBuffer,
5137        roi_type: *const c_char,
5138        x: c_uint,
5139        y: c_uint,
5140        w: c_uint,
5141        h: c_uint,
5142    ) -> *mut GstVideoRegionOfInterestMeta;
5143    pub fn gst_buffer_add_video_region_of_interest_meta_id(
5144        buffer: *mut gst::GstBuffer,
5145        roi_type: glib::GQuark,
5146        x: c_uint,
5147        y: c_uint,
5148        w: c_uint,
5149        h: c_uint,
5150    ) -> *mut GstVideoRegionOfInterestMeta;
5151    #[cfg(feature = "v1_22")]
5152    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
5153    pub fn gst_buffer_add_video_sei_user_data_unregistered_meta(
5154        buffer: *mut gst::GstBuffer,
5155        uuid: *mut [u8; 16],
5156        data: *mut u8,
5157        size: size_t,
5158    ) -> *mut GstVideoSEIUserDataUnregisteredMeta;
5159    pub fn gst_buffer_add_video_time_code_meta(
5160        buffer: *mut gst::GstBuffer,
5161        tc: *const GstVideoTimeCode,
5162    ) -> *mut GstVideoTimeCodeMeta;
5163    pub fn gst_buffer_add_video_time_code_meta_full(
5164        buffer: *mut gst::GstBuffer,
5165        fps_n: c_uint,
5166        fps_d: c_uint,
5167        latest_daily_jam: *mut glib::GDateTime,
5168        flags: GstVideoTimeCodeFlags,
5169        hours: c_uint,
5170        minutes: c_uint,
5171        seconds: c_uint,
5172        frames: c_uint,
5173        field_count: c_uint,
5174    ) -> *mut GstVideoTimeCodeMeta;
5175    pub fn gst_buffer_get_video_meta(buffer: *mut gst::GstBuffer) -> *mut GstVideoMeta;
5176    pub fn gst_buffer_get_video_meta_id(
5177        buffer: *mut gst::GstBuffer,
5178        id: c_int,
5179    ) -> *mut GstVideoMeta;
5180    pub fn gst_buffer_get_video_region_of_interest_meta_id(
5181        buffer: *mut gst::GstBuffer,
5182        id: c_int,
5183    ) -> *mut GstVideoRegionOfInterestMeta;
5184    pub fn gst_buffer_pool_config_get_video_alignment(
5185        config: *const gst::GstStructure,
5186        align: *mut GstVideoAlignment,
5187    ) -> gboolean;
5188    pub fn gst_buffer_pool_config_set_video_alignment(
5189        config: *mut gst::GstStructure,
5190        align: *const GstVideoAlignment,
5191    );
5192    #[cfg(feature = "v1_30")]
5193    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5194    pub fn gst_h274_dsc_initialization_clear(
5195        dsci: *mut GstH274DigitallySignedContentInitialization,
5196    );
5197    #[cfg(feature = "v1_30")]
5198    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5199    pub fn gst_h274_dsc_initialization_copy(
5200        dst_dsc_init: *mut GstH274DigitallySignedContentInitialization,
5201        src_dsc_init: *const GstH274DigitallySignedContentInitialization,
5202    );
5203    #[cfg(feature = "v1_30")]
5204    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5205    pub fn gst_h274_dsc_selection_clear(dscs: *mut GstH274DigitallySignedContentSelection);
5206    #[cfg(feature = "v1_30")]
5207    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5208    pub fn gst_h274_dsc_selection_copy(
5209        dst_dsc_sel: *mut GstH274DigitallySignedContentSelection,
5210        src_dsc_sel: *const GstH274DigitallySignedContentSelection,
5211    );
5212    #[cfg(feature = "v1_30")]
5213    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5214    pub fn gst_h274_dsc_verification_clear(dscv: *mut GstH274DigitallySignedContentVerification);
5215    #[cfg(feature = "v1_30")]
5216    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5217    pub fn gst_h274_dsc_verification_copy(
5218        dst_dsc_ver: *mut GstH274DigitallySignedContentVerification,
5219        src_dsc_ver: *const GstH274DigitallySignedContentVerification,
5220    );
5221    #[cfg(feature = "v1_30")]
5222    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5223    pub fn gst_h274_user_data_registered_clear(rud: *mut GstH274RegisteredUserData);
5224    #[cfg(feature = "v1_30")]
5225    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5226    pub fn gst_h274_user_data_registered_copy(
5227        dst_rud: *mut GstH274RegisteredUserData,
5228        src_rud: *const GstH274RegisteredUserData,
5229    );
5230    pub fn gst_is_video_overlay_prepare_window_handle_message(
5231        msg: *mut gst::GstMessage,
5232    ) -> gboolean;
5233    #[cfg(feature = "v1_18")]
5234    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5235    pub fn gst_video_afd_meta_api_get_type() -> GType;
5236    pub fn gst_video_affine_transformation_meta_api_get_type() -> GType;
5237    #[cfg(feature = "v1_18")]
5238    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5239    pub fn gst_video_bar_meta_api_get_type() -> GType;
5240    pub fn gst_video_blend(
5241        dest: *mut GstVideoFrame,
5242        src: *mut GstVideoFrame,
5243        x: c_int,
5244        y: c_int,
5245        global_alpha: c_float,
5246    ) -> gboolean;
5247    pub fn gst_video_blend_scale_linear_RGBA(
5248        src: *mut GstVideoInfo,
5249        src_buffer: *mut gst::GstBuffer,
5250        dest_height: c_int,
5251        dest_width: c_int,
5252        dest: *mut GstVideoInfo,
5253        dest_buffer: *mut *mut gst::GstBuffer,
5254    );
5255    pub fn gst_video_calculate_display_ratio(
5256        dar_n: *mut c_uint,
5257        dar_d: *mut c_uint,
5258        video_width: c_uint,
5259        video_height: c_uint,
5260        video_par_n: c_uint,
5261        video_par_d: c_uint,
5262        display_par_n: c_uint,
5263        display_par_d: c_uint,
5264    ) -> gboolean;
5265    #[cfg(feature = "v1_16")]
5266    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5267    pub fn gst_video_caption_meta_api_get_type() -> GType;
5268    #[cfg(feature = "v1_20")]
5269    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5270    pub fn gst_video_center_rect(
5271        src: *const GstVideoRectangle,
5272        dst: *const GstVideoRectangle,
5273        result: *mut GstVideoRectangle,
5274        scaling: gboolean,
5275    );
5276    pub fn gst_video_chroma_from_string(s: *const c_char) -> GstVideoChromaSite;
5277    pub fn gst_video_chroma_resample(
5278        resample: *mut GstVideoChromaResample,
5279        lines: *mut gpointer,
5280        width: c_int,
5281    );
5282    pub fn gst_video_chroma_to_string(site: GstVideoChromaSite) -> *const c_char;
5283    #[cfg(feature = "v1_20")]
5284    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5285    pub fn gst_video_codec_alpha_meta_api_get_type() -> GType;
5286    pub fn gst_video_color_transfer_decode(
5287        func: GstVideoTransferFunction,
5288        val: c_double,
5289    ) -> c_double;
5290    pub fn gst_video_color_transfer_encode(
5291        func: GstVideoTransferFunction,
5292        val: c_double,
5293    ) -> c_double;
5294    pub fn gst_video_convert_sample(
5295        sample: *mut gst::GstSample,
5296        to_caps: *const gst::GstCaps,
5297        timeout: gst::GstClockTime,
5298        error: *mut *mut glib::GError,
5299    ) -> *mut gst::GstSample;
5300    pub fn gst_video_convert_sample_async(
5301        sample: *mut gst::GstSample,
5302        to_caps: *const gst::GstCaps,
5303        timeout: gst::GstClockTime,
5304        callback: GstVideoConvertSampleCallback,
5305        user_data: gpointer,
5306        destroy_notify: glib::GDestroyNotify,
5307    );
5308    pub fn gst_video_crop_meta_api_get_type() -> GType;
5309    #[cfg(feature = "v1_26")]
5310    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5311    pub fn gst_video_dma_drm_format_from_gst_format(
5312        format: GstVideoFormat,
5313        modifier: *mut u64,
5314    ) -> u32;
5315    #[cfg(feature = "v1_26")]
5316    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5317    pub fn gst_video_dma_drm_format_to_gst_format(fourcc: u32, modifier: u64) -> GstVideoFormat;
5318    #[cfg(feature = "v1_24")]
5319    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
5320    pub fn gst_video_dma_drm_fourcc_from_format(format: GstVideoFormat) -> u32;
5321    #[cfg(feature = "v1_24")]
5322    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
5323    pub fn gst_video_dma_drm_fourcc_from_string(
5324        format_str: *const c_char,
5325        modifier: *mut u64,
5326    ) -> u32;
5327    #[cfg(feature = "v1_24")]
5328    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
5329    pub fn gst_video_dma_drm_fourcc_to_format(fourcc: u32) -> GstVideoFormat;
5330    #[cfg(feature = "v1_24")]
5331    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
5332    pub fn gst_video_dma_drm_fourcc_to_string(fourcc: u32, modifier: u64) -> *mut c_char;
5333    #[cfg(feature = "v1_30")]
5334    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5335    pub fn gst_video_dsc_initialization_meta_api_get_type() -> GType;
5336    #[cfg(feature = "v1_30")]
5337    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5338    pub fn gst_video_dsc_selection_meta_api_get_type() -> GType;
5339    #[cfg(feature = "v1_30")]
5340    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5341    pub fn gst_video_dsc_verification_meta_api_get_type() -> GType;
5342    pub fn gst_video_event_is_force_key_unit(event: *mut gst::GstEvent) -> gboolean;
5343    pub fn gst_video_event_new_downstream_force_key_unit(
5344        timestamp: gst::GstClockTime,
5345        stream_time: gst::GstClockTime,
5346        running_time: gst::GstClockTime,
5347        all_headers: gboolean,
5348        count: c_uint,
5349    ) -> *mut gst::GstEvent;
5350    pub fn gst_video_event_new_still_frame(in_still: gboolean) -> *mut gst::GstEvent;
5351    pub fn gst_video_event_new_upstream_force_key_unit(
5352        running_time: gst::GstClockTime,
5353        all_headers: gboolean,
5354        count: c_uint,
5355    ) -> *mut gst::GstEvent;
5356    pub fn gst_video_event_parse_downstream_force_key_unit(
5357        event: *mut gst::GstEvent,
5358        timestamp: *mut gst::GstClockTime,
5359        stream_time: *mut gst::GstClockTime,
5360        running_time: *mut gst::GstClockTime,
5361        all_headers: *mut gboolean,
5362        count: *mut c_uint,
5363    ) -> gboolean;
5364    pub fn gst_video_event_parse_still_frame(
5365        event: *mut gst::GstEvent,
5366        in_still: *mut gboolean,
5367    ) -> gboolean;
5368    pub fn gst_video_event_parse_upstream_force_key_unit(
5369        event: *mut gst::GstEvent,
5370        running_time: *mut gst::GstClockTime,
5371        all_headers: *mut gboolean,
5372        count: *mut c_uint,
5373    ) -> gboolean;
5374    #[cfg(feature = "v1_24")]
5375    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
5376    pub fn gst_video_formats_any(len: *mut c_uint) -> *const GstVideoFormat;
5377    #[cfg(feature = "v1_18")]
5378    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5379    pub fn gst_video_formats_raw(len: *mut c_uint) -> *const GstVideoFormat;
5380    pub fn gst_video_gl_texture_upload_meta_api_get_type() -> GType;
5381    pub fn gst_video_guess_framerate(
5382        duration: gst::GstClockTime,
5383        dest_n: *mut c_int,
5384        dest_d: *mut c_int,
5385    ) -> gboolean;
5386    #[cfg(feature = "v1_30")]
5387    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5388    pub fn gst_video_hdr_format_from_string(format: *const c_char) -> GstVideoHDRFormat;
5389    #[cfg(feature = "v1_30")]
5390    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5391    pub fn gst_video_hdr_format_to_string(format: GstVideoHDRFormat) -> *const c_char;
5392    pub fn gst_video_hdr_meta_api_get_type() -> GType;
5393    #[cfg(feature = "v1_30")]
5394    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
5395    pub fn gst_video_hdr_parse_hdr10_plus(
5396        data: *const u8,
5397        size: size_t,
5398        hdr10_plus: *mut GstVideoHDR10Plus,
5399    ) -> gboolean;
5400    #[cfg(feature = "v1_22")]
5401    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
5402    pub fn gst_video_is_common_aspect_ratio(
5403        width: c_int,
5404        height: c_int,
5405        par_n: c_int,
5406        par_d: c_int,
5407    ) -> gboolean;
5408    #[cfg(feature = "v1_24")]
5409    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
5410    pub fn gst_video_is_dma_drm_caps(caps: *const gst::GstCaps) -> gboolean;
5411    #[cfg(feature = "v1_18")]
5412    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5413    pub fn gst_video_make_raw_caps(
5414        formats: *const GstVideoFormat,
5415        len: c_uint,
5416    ) -> *mut gst::GstCaps;
5417    #[cfg(feature = "v1_18")]
5418    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5419    pub fn gst_video_make_raw_caps_with_features(
5420        formats: *const GstVideoFormat,
5421        len: c_uint,
5422        features: *mut gst::GstCapsFeatures,
5423    ) -> *mut gst::GstCaps;
5424    pub fn gst_video_meta_api_get_type() -> GType;
5425    pub fn gst_video_multiview_get_doubled_height_modes() -> *const gobject::GValue;
5426    pub fn gst_video_multiview_get_doubled_size_modes() -> *const gobject::GValue;
5427    pub fn gst_video_multiview_get_doubled_width_modes() -> *const gobject::GValue;
5428    pub fn gst_video_multiview_get_mono_modes() -> *const gobject::GValue;
5429    pub fn gst_video_multiview_get_unpacked_modes() -> *const gobject::GValue;
5430    pub fn gst_video_multiview_guess_half_aspect(
5431        mv_mode: GstVideoMultiviewMode,
5432        width: c_uint,
5433        height: c_uint,
5434        par_n: c_uint,
5435        par_d: c_uint,
5436    ) -> gboolean;
5437    pub fn gst_video_multiview_video_info_change_mode(
5438        info: *mut GstVideoInfo,
5439        out_mview_mode: GstVideoMultiviewMode,
5440        out_mview_flags: GstVideoMultiviewFlags,
5441    );
5442    pub fn gst_video_overlay_composition_meta_api_get_type() -> GType;
5443    pub fn gst_video_region_of_interest_meta_api_get_type() -> GType;
5444    #[cfg(feature = "v1_22")]
5445    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
5446    pub fn gst_video_sei_user_data_unregistered_meta_api_get_type() -> GType;
5447    #[cfg(feature = "v1_22")]
5448    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
5449    pub fn gst_video_sei_user_data_unregistered_parse_precision_time_stamp(
5450        user_data: *mut GstVideoSEIUserDataUnregisteredMeta,
5451        status: *mut u8,
5452        precision_time_stamp: *mut u64,
5453    ) -> gboolean;
5454    pub fn gst_video_tile_get_index(
5455        mode: GstVideoTileMode,
5456        x: c_int,
5457        y: c_int,
5458        x_tiles: c_int,
5459        y_tiles: c_int,
5460    ) -> c_uint;
5461    pub fn gst_video_time_code_meta_api_get_type() -> GType;
5462
5463}