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