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