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