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