Skip to main content

gstreamer_video_sys/
lib.rs

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