gstreamer_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;
17
18#[cfg(unix)]
19#[allow(unused_imports)]
20use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
21#[allow(unused_imports)]
22use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
23#[allow(unused_imports)]
24use std::ffi::{
25    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
26};
27
28#[allow(unused_imports)]
29use glib::{gboolean, gconstpointer, gpointer, GType};
30
31// Aliases
32pub type GstBufferMapInfo = GstMapInfo;
33pub type GstClockID = gpointer;
34pub type GstClockTime = u64;
35pub type GstClockTimeDiff = i64;
36pub type GstElementFactoryListType = u64;
37pub type GstMemoryMapInfo = GstMapInfo;
38
39// Enums
40pub type GstBufferingMode = c_int;
41pub const GST_BUFFERING_STREAM: GstBufferingMode = 0;
42pub const GST_BUFFERING_DOWNLOAD: GstBufferingMode = 1;
43pub const GST_BUFFERING_TIMESHIFT: GstBufferingMode = 2;
44pub const GST_BUFFERING_LIVE: GstBufferingMode = 3;
45
46pub type GstBusSyncReply = c_int;
47pub const GST_BUS_DROP: GstBusSyncReply = 0;
48pub const GST_BUS_PASS: GstBusSyncReply = 1;
49pub const GST_BUS_ASYNC: GstBusSyncReply = 2;
50
51pub type GstCapsIntersectMode = c_int;
52pub const GST_CAPS_INTERSECT_ZIG_ZAG: GstCapsIntersectMode = 0;
53pub const GST_CAPS_INTERSECT_FIRST: GstCapsIntersectMode = 1;
54
55pub type GstClockEntryType = c_int;
56pub const GST_CLOCK_ENTRY_SINGLE: GstClockEntryType = 0;
57pub const GST_CLOCK_ENTRY_PERIODIC: GstClockEntryType = 1;
58
59pub type GstClockReturn = c_int;
60pub const GST_CLOCK_OK: GstClockReturn = 0;
61pub const GST_CLOCK_EARLY: GstClockReturn = 1;
62pub const GST_CLOCK_UNSCHEDULED: GstClockReturn = 2;
63pub const GST_CLOCK_BUSY: GstClockReturn = 3;
64pub const GST_CLOCK_BADTIME: GstClockReturn = 4;
65pub const GST_CLOCK_ERROR: GstClockReturn = 5;
66pub const GST_CLOCK_UNSUPPORTED: GstClockReturn = 6;
67pub const GST_CLOCK_DONE: GstClockReturn = 7;
68
69pub type GstClockType = c_int;
70pub const GST_CLOCK_TYPE_REALTIME: GstClockType = 0;
71pub const GST_CLOCK_TYPE_MONOTONIC: GstClockType = 1;
72pub const GST_CLOCK_TYPE_OTHER: GstClockType = 2;
73pub const GST_CLOCK_TYPE_TAI: GstClockType = 3;
74
75pub type GstCoreError = c_int;
76pub const GST_CORE_ERROR_FAILED: GstCoreError = 1;
77pub const GST_CORE_ERROR_TOO_LAZY: GstCoreError = 2;
78pub const GST_CORE_ERROR_NOT_IMPLEMENTED: GstCoreError = 3;
79pub const GST_CORE_ERROR_STATE_CHANGE: GstCoreError = 4;
80pub const GST_CORE_ERROR_PAD: GstCoreError = 5;
81pub const GST_CORE_ERROR_THREAD: GstCoreError = 6;
82pub const GST_CORE_ERROR_NEGOTIATION: GstCoreError = 7;
83pub const GST_CORE_ERROR_EVENT: GstCoreError = 8;
84pub const GST_CORE_ERROR_SEEK: GstCoreError = 9;
85pub const GST_CORE_ERROR_CAPS: GstCoreError = 10;
86pub const GST_CORE_ERROR_TAG: GstCoreError = 11;
87pub const GST_CORE_ERROR_MISSING_PLUGIN: GstCoreError = 12;
88pub const GST_CORE_ERROR_CLOCK: GstCoreError = 13;
89pub const GST_CORE_ERROR_DISABLED: GstCoreError = 14;
90pub const GST_CORE_ERROR_NUM_ERRORS: GstCoreError = 15;
91
92pub type GstDebugColorMode = c_int;
93pub const GST_DEBUG_COLOR_MODE_OFF: GstDebugColorMode = 0;
94pub const GST_DEBUG_COLOR_MODE_ON: GstDebugColorMode = 1;
95pub const GST_DEBUG_COLOR_MODE_UNIX: GstDebugColorMode = 2;
96
97pub type GstDebugLevel = c_int;
98pub const GST_LEVEL_NONE: GstDebugLevel = 0;
99pub const GST_LEVEL_ERROR: GstDebugLevel = 1;
100pub const GST_LEVEL_WARNING: GstDebugLevel = 2;
101pub const GST_LEVEL_FIXME: GstDebugLevel = 3;
102pub const GST_LEVEL_INFO: GstDebugLevel = 4;
103pub const GST_LEVEL_DEBUG: GstDebugLevel = 5;
104pub const GST_LEVEL_LOG: GstDebugLevel = 6;
105pub const GST_LEVEL_TRACE: GstDebugLevel = 7;
106pub const GST_LEVEL_MEMDUMP: GstDebugLevel = 9;
107pub const GST_LEVEL_COUNT: GstDebugLevel = 10;
108
109pub type GstEventType = c_int;
110pub const GST_EVENT_UNKNOWN: GstEventType = 0;
111pub const GST_EVENT_FLUSH_START: GstEventType = 2563;
112pub const GST_EVENT_FLUSH_STOP: GstEventType = 5127;
113pub const GST_EVENT_STREAM_START: GstEventType = 10254;
114pub const GST_EVENT_CAPS: GstEventType = 12814;
115pub const GST_EVENT_SEGMENT: GstEventType = 17934;
116pub const GST_EVENT_STREAM_COLLECTION: GstEventType = 19230;
117pub const GST_EVENT_TAG: GstEventType = 20510;
118pub const GST_EVENT_BUFFERSIZE: GstEventType = 23054;
119pub const GST_EVENT_SINK_MESSAGE: GstEventType = 25630;
120pub const GST_EVENT_STREAM_GROUP_DONE: GstEventType = 26894;
121pub const GST_EVENT_EOS: GstEventType = 28174;
122pub const GST_EVENT_TOC: GstEventType = 30750;
123pub const GST_EVENT_PROTECTION: GstEventType = 33310;
124pub const GST_EVENT_SEGMENT_DONE: GstEventType = 38406;
125pub const GST_EVENT_GAP: GstEventType = 40966;
126pub const GST_EVENT_INSTANT_RATE_CHANGE: GstEventType = 46090;
127pub const GST_EVENT_QOS: GstEventType = 48641;
128pub const GST_EVENT_SEEK: GstEventType = 51201;
129pub const GST_EVENT_NAVIGATION: GstEventType = 53761;
130pub const GST_EVENT_LATENCY: GstEventType = 56321;
131pub const GST_EVENT_STEP: GstEventType = 58881;
132pub const GST_EVENT_RECONFIGURE: GstEventType = 61441;
133pub const GST_EVENT_TOC_SELECT: GstEventType = 64001;
134pub const GST_EVENT_SELECT_STREAMS: GstEventType = 66561;
135pub const GST_EVENT_INSTANT_RATE_SYNC_TIME: GstEventType = 66817;
136pub const GST_EVENT_CUSTOM_UPSTREAM: GstEventType = 69121;
137pub const GST_EVENT_CUSTOM_DOWNSTREAM: GstEventType = 71686;
138pub const GST_EVENT_CUSTOM_DOWNSTREAM_OOB: GstEventType = 74242;
139pub const GST_EVENT_CUSTOM_DOWNSTREAM_STICKY: GstEventType = 76830;
140pub const GST_EVENT_CUSTOM_BOTH: GstEventType = 79367;
141pub const GST_EVENT_CUSTOM_BOTH_OOB: GstEventType = 81923;
142
143pub type GstFlowReturn = c_int;
144pub const GST_FLOW_CUSTOM_SUCCESS_2: GstFlowReturn = 102;
145pub const GST_FLOW_CUSTOM_SUCCESS_1: GstFlowReturn = 101;
146pub const GST_FLOW_CUSTOM_SUCCESS: GstFlowReturn = 100;
147pub const GST_FLOW_OK: GstFlowReturn = 0;
148pub const GST_FLOW_NOT_LINKED: GstFlowReturn = -1;
149pub const GST_FLOW_FLUSHING: GstFlowReturn = -2;
150pub const GST_FLOW_EOS: GstFlowReturn = -3;
151pub const GST_FLOW_NOT_NEGOTIATED: GstFlowReturn = -4;
152pub const GST_FLOW_ERROR: GstFlowReturn = -5;
153pub const GST_FLOW_NOT_SUPPORTED: GstFlowReturn = -6;
154pub const GST_FLOW_CUSTOM_ERROR: GstFlowReturn = -100;
155pub const GST_FLOW_CUSTOM_ERROR_1: GstFlowReturn = -101;
156pub const GST_FLOW_CUSTOM_ERROR_2: GstFlowReturn = -102;
157
158pub type GstFormat = c_int;
159pub const GST_FORMAT_UNDEFINED: GstFormat = 0;
160pub const GST_FORMAT_DEFAULT: GstFormat = 1;
161pub const GST_FORMAT_BYTES: GstFormat = 2;
162pub const GST_FORMAT_TIME: GstFormat = 3;
163pub const GST_FORMAT_BUFFERS: GstFormat = 4;
164pub const GST_FORMAT_PERCENT: GstFormat = 5;
165
166pub type GstIteratorItem = c_int;
167pub const GST_ITERATOR_ITEM_SKIP: GstIteratorItem = 0;
168pub const GST_ITERATOR_ITEM_PASS: GstIteratorItem = 1;
169pub const GST_ITERATOR_ITEM_END: GstIteratorItem = 2;
170
171pub type GstIteratorResult = c_int;
172pub const GST_ITERATOR_DONE: GstIteratorResult = 0;
173pub const GST_ITERATOR_OK: GstIteratorResult = 1;
174pub const GST_ITERATOR_RESYNC: GstIteratorResult = 2;
175pub const GST_ITERATOR_ERROR: GstIteratorResult = 3;
176
177pub type GstLibraryError = c_int;
178pub const GST_LIBRARY_ERROR_FAILED: GstLibraryError = 1;
179pub const GST_LIBRARY_ERROR_TOO_LAZY: GstLibraryError = 2;
180pub const GST_LIBRARY_ERROR_INIT: GstLibraryError = 3;
181pub const GST_LIBRARY_ERROR_SHUTDOWN: GstLibraryError = 4;
182pub const GST_LIBRARY_ERROR_SETTINGS: GstLibraryError = 5;
183pub const GST_LIBRARY_ERROR_ENCODE: GstLibraryError = 6;
184pub const GST_LIBRARY_ERROR_NUM_ERRORS: GstLibraryError = 7;
185
186pub type GstPadDirection = c_int;
187pub const GST_PAD_UNKNOWN: GstPadDirection = 0;
188pub const GST_PAD_SRC: GstPadDirection = 1;
189pub const GST_PAD_SINK: GstPadDirection = 2;
190
191pub type GstPadLinkReturn = c_int;
192pub const GST_PAD_LINK_OK: GstPadLinkReturn = 0;
193pub const GST_PAD_LINK_WRONG_HIERARCHY: GstPadLinkReturn = -1;
194pub const GST_PAD_LINK_WAS_LINKED: GstPadLinkReturn = -2;
195pub const GST_PAD_LINK_WRONG_DIRECTION: GstPadLinkReturn = -3;
196pub const GST_PAD_LINK_NOFORMAT: GstPadLinkReturn = -4;
197pub const GST_PAD_LINK_NOSCHED: GstPadLinkReturn = -5;
198pub const GST_PAD_LINK_REFUSED: GstPadLinkReturn = -6;
199
200pub type GstPadMode = c_int;
201pub const GST_PAD_MODE_NONE: GstPadMode = 0;
202pub const GST_PAD_MODE_PUSH: GstPadMode = 1;
203pub const GST_PAD_MODE_PULL: GstPadMode = 2;
204
205pub type GstPadPresence = c_int;
206pub const GST_PAD_ALWAYS: GstPadPresence = 0;
207pub const GST_PAD_SOMETIMES: GstPadPresence = 1;
208pub const GST_PAD_REQUEST: GstPadPresence = 2;
209
210pub type GstPadProbeReturn = c_int;
211pub const GST_PAD_PROBE_DROP: GstPadProbeReturn = 0;
212pub const GST_PAD_PROBE_OK: GstPadProbeReturn = 1;
213pub const GST_PAD_PROBE_REMOVE: GstPadProbeReturn = 2;
214pub const GST_PAD_PROBE_PASS: GstPadProbeReturn = 3;
215pub const GST_PAD_PROBE_HANDLED: GstPadProbeReturn = 4;
216
217pub type GstParseError = c_int;
218pub const GST_PARSE_ERROR_SYNTAX: GstParseError = 0;
219pub const GST_PARSE_ERROR_NO_SUCH_ELEMENT: GstParseError = 1;
220pub const GST_PARSE_ERROR_NO_SUCH_PROPERTY: GstParseError = 2;
221pub const GST_PARSE_ERROR_LINK: GstParseError = 3;
222pub const GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY: GstParseError = 4;
223pub const GST_PARSE_ERROR_EMPTY_BIN: GstParseError = 5;
224pub const GST_PARSE_ERROR_EMPTY: GstParseError = 6;
225pub const GST_PARSE_ERROR_DELAYED_LINK: GstParseError = 7;
226
227pub type GstPluginError = c_int;
228pub const GST_PLUGIN_ERROR_MODULE: GstPluginError = 0;
229pub const GST_PLUGIN_ERROR_DEPENDENCIES: GstPluginError = 1;
230pub const GST_PLUGIN_ERROR_NAME_MISMATCH: GstPluginError = 2;
231
232pub type GstProgressType = c_int;
233pub const GST_PROGRESS_TYPE_START: GstProgressType = 0;
234pub const GST_PROGRESS_TYPE_CONTINUE: GstProgressType = 1;
235pub const GST_PROGRESS_TYPE_COMPLETE: GstProgressType = 2;
236pub const GST_PROGRESS_TYPE_CANCELED: GstProgressType = 3;
237pub const GST_PROGRESS_TYPE_ERROR: GstProgressType = 4;
238
239pub type GstPromiseResult = c_int;
240pub const GST_PROMISE_RESULT_PENDING: GstPromiseResult = 0;
241pub const GST_PROMISE_RESULT_INTERRUPTED: GstPromiseResult = 1;
242pub const GST_PROMISE_RESULT_REPLIED: GstPromiseResult = 2;
243pub const GST_PROMISE_RESULT_EXPIRED: GstPromiseResult = 3;
244
245pub type GstQOSType = c_int;
246pub const GST_QOS_TYPE_OVERFLOW: GstQOSType = 0;
247pub const GST_QOS_TYPE_UNDERFLOW: GstQOSType = 1;
248pub const GST_QOS_TYPE_THROTTLE: GstQOSType = 2;
249
250pub type GstQueryType = c_int;
251pub const GST_QUERY_UNKNOWN: GstQueryType = 0;
252pub const GST_QUERY_POSITION: GstQueryType = 2563;
253pub const GST_QUERY_DURATION: GstQueryType = 5123;
254pub const GST_QUERY_LATENCY: GstQueryType = 7683;
255pub const GST_QUERY_JITTER: GstQueryType = 10243;
256pub const GST_QUERY_RATE: GstQueryType = 12803;
257pub const GST_QUERY_SEEKING: GstQueryType = 15363;
258pub const GST_QUERY_SEGMENT: GstQueryType = 17923;
259pub const GST_QUERY_CONVERT: GstQueryType = 20483;
260pub const GST_QUERY_FORMATS: GstQueryType = 23043;
261pub const GST_QUERY_BUFFERING: GstQueryType = 28163;
262pub const GST_QUERY_CUSTOM: GstQueryType = 30723;
263pub const GST_QUERY_URI: GstQueryType = 33283;
264pub const GST_QUERY_ALLOCATION: GstQueryType = 35846;
265pub const GST_QUERY_SCHEDULING: GstQueryType = 38401;
266pub const GST_QUERY_ACCEPT_CAPS: GstQueryType = 40963;
267pub const GST_QUERY_CAPS: GstQueryType = 43523;
268pub const GST_QUERY_DRAIN: GstQueryType = 46086;
269pub const GST_QUERY_CONTEXT: GstQueryType = 48643;
270pub const GST_QUERY_BITRATE: GstQueryType = 51202;
271#[cfg(feature = "v1_22")]
272#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
273pub const GST_QUERY_SELECTABLE: GstQueryType = 53763;
274
275pub type GstRank = c_int;
276pub const GST_RANK_NONE: GstRank = 0;
277pub const GST_RANK_MARGINAL: GstRank = 64;
278pub const GST_RANK_SECONDARY: GstRank = 128;
279pub const GST_RANK_PRIMARY: GstRank = 256;
280
281pub type GstResourceError = c_int;
282pub const GST_RESOURCE_ERROR_FAILED: GstResourceError = 1;
283pub const GST_RESOURCE_ERROR_TOO_LAZY: GstResourceError = 2;
284pub const GST_RESOURCE_ERROR_NOT_FOUND: GstResourceError = 3;
285pub const GST_RESOURCE_ERROR_BUSY: GstResourceError = 4;
286pub const GST_RESOURCE_ERROR_OPEN_READ: GstResourceError = 5;
287pub const GST_RESOURCE_ERROR_OPEN_WRITE: GstResourceError = 6;
288pub const GST_RESOURCE_ERROR_OPEN_READ_WRITE: GstResourceError = 7;
289pub const GST_RESOURCE_ERROR_CLOSE: GstResourceError = 8;
290pub const GST_RESOURCE_ERROR_READ: GstResourceError = 9;
291pub const GST_RESOURCE_ERROR_WRITE: GstResourceError = 10;
292pub const GST_RESOURCE_ERROR_SEEK: GstResourceError = 11;
293pub const GST_RESOURCE_ERROR_SYNC: GstResourceError = 12;
294pub const GST_RESOURCE_ERROR_SETTINGS: GstResourceError = 13;
295pub const GST_RESOURCE_ERROR_NO_SPACE_LEFT: GstResourceError = 14;
296pub const GST_RESOURCE_ERROR_NOT_AUTHORIZED: GstResourceError = 15;
297pub const GST_RESOURCE_ERROR_NUM_ERRORS: GstResourceError = 16;
298
299pub type GstSearchMode = c_int;
300pub const GST_SEARCH_MODE_EXACT: GstSearchMode = 0;
301pub const GST_SEARCH_MODE_BEFORE: GstSearchMode = 1;
302pub const GST_SEARCH_MODE_AFTER: GstSearchMode = 2;
303
304pub type GstSeekType = c_int;
305pub const GST_SEEK_TYPE_NONE: GstSeekType = 0;
306pub const GST_SEEK_TYPE_SET: GstSeekType = 1;
307pub const GST_SEEK_TYPE_END: GstSeekType = 2;
308
309pub type GstState = c_int;
310pub const GST_STATE_VOID_PENDING: GstState = 0;
311pub const GST_STATE_NULL: GstState = 1;
312pub const GST_STATE_READY: GstState = 2;
313pub const GST_STATE_PAUSED: GstState = 3;
314pub const GST_STATE_PLAYING: GstState = 4;
315
316pub type GstStateChange = c_int;
317pub const GST_STATE_CHANGE_NULL_TO_READY: GstStateChange = 10;
318pub const GST_STATE_CHANGE_READY_TO_PAUSED: GstStateChange = 19;
319pub const GST_STATE_CHANGE_PAUSED_TO_PLAYING: GstStateChange = 28;
320pub const GST_STATE_CHANGE_PLAYING_TO_PAUSED: GstStateChange = 35;
321pub const GST_STATE_CHANGE_PAUSED_TO_READY: GstStateChange = 26;
322pub const GST_STATE_CHANGE_READY_TO_NULL: GstStateChange = 17;
323pub const GST_STATE_CHANGE_NULL_TO_NULL: GstStateChange = 9;
324pub const GST_STATE_CHANGE_READY_TO_READY: GstStateChange = 18;
325pub const GST_STATE_CHANGE_PAUSED_TO_PAUSED: GstStateChange = 27;
326pub const GST_STATE_CHANGE_PLAYING_TO_PLAYING: GstStateChange = 36;
327
328pub type GstStateChangeReturn = c_int;
329pub const GST_STATE_CHANGE_FAILURE: GstStateChangeReturn = 0;
330pub const GST_STATE_CHANGE_SUCCESS: GstStateChangeReturn = 1;
331pub const GST_STATE_CHANGE_ASYNC: GstStateChangeReturn = 2;
332pub const GST_STATE_CHANGE_NO_PREROLL: GstStateChangeReturn = 3;
333
334pub type GstStreamError = c_int;
335pub const GST_STREAM_ERROR_FAILED: GstStreamError = 1;
336pub const GST_STREAM_ERROR_TOO_LAZY: GstStreamError = 2;
337pub const GST_STREAM_ERROR_NOT_IMPLEMENTED: GstStreamError = 3;
338pub const GST_STREAM_ERROR_TYPE_NOT_FOUND: GstStreamError = 4;
339pub const GST_STREAM_ERROR_WRONG_TYPE: GstStreamError = 5;
340pub const GST_STREAM_ERROR_CODEC_NOT_FOUND: GstStreamError = 6;
341pub const GST_STREAM_ERROR_DECODE: GstStreamError = 7;
342pub const GST_STREAM_ERROR_ENCODE: GstStreamError = 8;
343pub const GST_STREAM_ERROR_DEMUX: GstStreamError = 9;
344pub const GST_STREAM_ERROR_MUX: GstStreamError = 10;
345pub const GST_STREAM_ERROR_FORMAT: GstStreamError = 11;
346pub const GST_STREAM_ERROR_DECRYPT: GstStreamError = 12;
347pub const GST_STREAM_ERROR_DECRYPT_NOKEY: GstStreamError = 13;
348pub const GST_STREAM_ERROR_NUM_ERRORS: GstStreamError = 14;
349
350pub type GstStreamStatusType = c_int;
351pub const GST_STREAM_STATUS_TYPE_CREATE: GstStreamStatusType = 0;
352pub const GST_STREAM_STATUS_TYPE_ENTER: GstStreamStatusType = 1;
353pub const GST_STREAM_STATUS_TYPE_LEAVE: GstStreamStatusType = 2;
354pub const GST_STREAM_STATUS_TYPE_DESTROY: GstStreamStatusType = 3;
355pub const GST_STREAM_STATUS_TYPE_START: GstStreamStatusType = 8;
356pub const GST_STREAM_STATUS_TYPE_PAUSE: GstStreamStatusType = 9;
357pub const GST_STREAM_STATUS_TYPE_STOP: GstStreamStatusType = 10;
358
359pub type GstStructureChangeType = c_int;
360pub const GST_STRUCTURE_CHANGE_TYPE_PAD_LINK: GstStructureChangeType = 0;
361pub const GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK: GstStructureChangeType = 1;
362
363pub type GstTagFlag = c_int;
364pub const GST_TAG_FLAG_UNDEFINED: GstTagFlag = 0;
365pub const GST_TAG_FLAG_META: GstTagFlag = 1;
366pub const GST_TAG_FLAG_ENCODED: GstTagFlag = 2;
367pub const GST_TAG_FLAG_DECODED: GstTagFlag = 3;
368pub const GST_TAG_FLAG_COUNT: GstTagFlag = 4;
369
370pub type GstTagMergeMode = c_int;
371pub const GST_TAG_MERGE_UNDEFINED: GstTagMergeMode = 0;
372pub const GST_TAG_MERGE_REPLACE_ALL: GstTagMergeMode = 1;
373pub const GST_TAG_MERGE_REPLACE: GstTagMergeMode = 2;
374pub const GST_TAG_MERGE_APPEND: GstTagMergeMode = 3;
375pub const GST_TAG_MERGE_PREPEND: GstTagMergeMode = 4;
376pub const GST_TAG_MERGE_KEEP: GstTagMergeMode = 5;
377pub const GST_TAG_MERGE_KEEP_ALL: GstTagMergeMode = 6;
378pub const GST_TAG_MERGE_COUNT: GstTagMergeMode = 7;
379
380pub type GstTagScope = c_int;
381pub const GST_TAG_SCOPE_STREAM: GstTagScope = 0;
382pub const GST_TAG_SCOPE_GLOBAL: GstTagScope = 1;
383
384pub type GstTaskState = c_int;
385pub const GST_TASK_STARTED: GstTaskState = 0;
386pub const GST_TASK_STOPPED: GstTaskState = 1;
387pub const GST_TASK_PAUSED: GstTaskState = 2;
388
389pub type GstTocEntryType = c_int;
390pub const GST_TOC_ENTRY_TYPE_ANGLE: GstTocEntryType = -3;
391pub const GST_TOC_ENTRY_TYPE_VERSION: GstTocEntryType = -2;
392pub const GST_TOC_ENTRY_TYPE_EDITION: GstTocEntryType = -1;
393pub const GST_TOC_ENTRY_TYPE_INVALID: GstTocEntryType = 0;
394pub const GST_TOC_ENTRY_TYPE_TITLE: GstTocEntryType = 1;
395pub const GST_TOC_ENTRY_TYPE_TRACK: GstTocEntryType = 2;
396pub const GST_TOC_ENTRY_TYPE_CHAPTER: GstTocEntryType = 3;
397
398pub type GstTocLoopType = c_int;
399pub const GST_TOC_LOOP_NONE: GstTocLoopType = 0;
400pub const GST_TOC_LOOP_FORWARD: GstTocLoopType = 1;
401pub const GST_TOC_LOOP_REVERSE: GstTocLoopType = 2;
402pub const GST_TOC_LOOP_PING_PONG: GstTocLoopType = 3;
403
404pub type GstTocScope = c_int;
405pub const GST_TOC_SCOPE_GLOBAL: GstTocScope = 1;
406pub const GST_TOC_SCOPE_CURRENT: GstTocScope = 2;
407
408pub type GstTracerValueScope = c_int;
409pub const GST_TRACER_VALUE_SCOPE_PROCESS: GstTracerValueScope = 0;
410pub const GST_TRACER_VALUE_SCOPE_THREAD: GstTracerValueScope = 1;
411pub const GST_TRACER_VALUE_SCOPE_ELEMENT: GstTracerValueScope = 2;
412pub const GST_TRACER_VALUE_SCOPE_PAD: GstTracerValueScope = 3;
413
414pub type GstTypeFindProbability = c_int;
415pub const GST_TYPE_FIND_NONE: GstTypeFindProbability = 0;
416pub const GST_TYPE_FIND_MINIMUM: GstTypeFindProbability = 1;
417pub const GST_TYPE_FIND_POSSIBLE: GstTypeFindProbability = 50;
418pub const GST_TYPE_FIND_LIKELY: GstTypeFindProbability = 80;
419pub const GST_TYPE_FIND_NEARLY_CERTAIN: GstTypeFindProbability = 99;
420pub const GST_TYPE_FIND_MAXIMUM: GstTypeFindProbability = 100;
421
422pub type GstURIError = c_int;
423pub const GST_URI_ERROR_UNSUPPORTED_PROTOCOL: GstURIError = 0;
424pub const GST_URI_ERROR_BAD_URI: GstURIError = 1;
425pub const GST_URI_ERROR_BAD_STATE: GstURIError = 2;
426pub const GST_URI_ERROR_BAD_REFERENCE: GstURIError = 3;
427
428pub type GstURIType = c_int;
429pub const GST_URI_UNKNOWN: GstURIType = 0;
430pub const GST_URI_SINK: GstURIType = 1;
431pub const GST_URI_SRC: GstURIType = 2;
432
433// Constants
434pub const GST_ALLOCATOR_SYSMEM: &[u8] = b"SystemMemory\0";
435pub const GST_BUFFER_COPY_ALL: GstBufferCopyFlags = 15;
436pub const GST_BUFFER_COPY_METADATA: GstBufferCopyFlags = 7;
437pub const GST_BUFFER_OFFSET_NONE: u64 = 18446744073709551615;
438pub const GST_CAN_INLINE: c_int = 1;
439pub const GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY: &[u8] = b"memory:SystemMemory\0";
440pub const GST_CLOCK_TIME_NONE: GstClockTime = 18446744073709551615;
441pub const GST_DEBUG_BG_MASK: c_int = 240;
442pub const GST_DEBUG_FG_MASK: c_int = 15;
443pub const GST_DEBUG_FORMAT_MASK: c_int = 65280;
444pub const GST_ELEMENT_FACTORY_KLASS_DECODER: &[u8] = b"Decoder\0";
445pub const GST_ELEMENT_FACTORY_KLASS_DECRYPTOR: &[u8] = b"Decryptor\0";
446pub const GST_ELEMENT_FACTORY_KLASS_DEMUXER: &[u8] = b"Demuxer\0";
447pub const GST_ELEMENT_FACTORY_KLASS_DEPAYLOADER: &[u8] = b"Depayloader\0";
448pub const GST_ELEMENT_FACTORY_KLASS_ENCODER: &[u8] = b"Encoder\0";
449pub const GST_ELEMENT_FACTORY_KLASS_ENCRYPTOR: &[u8] = b"Encryptor\0";
450pub const GST_ELEMENT_FACTORY_KLASS_FORMATTER: &[u8] = b"Formatter\0";
451pub const GST_ELEMENT_FACTORY_KLASS_HARDWARE: &[u8] = b"Hardware\0";
452pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_AUDIO: &[u8] = b"Audio\0";
453pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_IMAGE: &[u8] = b"Image\0";
454pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_METADATA: &[u8] = b"Metadata\0";
455pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE: &[u8] = b"Subtitle\0";
456pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_VIDEO: &[u8] = b"Video\0";
457pub const GST_ELEMENT_FACTORY_KLASS_MUXER: &[u8] = b"Muxer\0";
458pub const GST_ELEMENT_FACTORY_KLASS_PARSER: &[u8] = b"Parser\0";
459pub const GST_ELEMENT_FACTORY_KLASS_PAYLOADER: &[u8] = b"Payloader\0";
460pub const GST_ELEMENT_FACTORY_KLASS_SINK: &[u8] = b"Sink\0";
461pub const GST_ELEMENT_FACTORY_KLASS_SRC: &[u8] = b"Source\0";
462pub const GST_ELEMENT_FACTORY_TYPE_ANY: GstElementFactoryListType = 562949953421311;
463pub const GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS: GstElementFactoryListType = 3940649673949188;
464pub const GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER: GstElementFactoryListType = 1125899906842626;
465pub const GST_ELEMENT_FACTORY_TYPE_DECODABLE: GstElementFactoryListType = 1377;
466pub const GST_ELEMENT_FACTORY_TYPE_DECODER: GstElementFactoryListType = 1;
467pub const GST_ELEMENT_FACTORY_TYPE_DECRYPTOR: GstElementFactoryListType = 1024;
468pub const GST_ELEMENT_FACTORY_TYPE_DEMUXER: GstElementFactoryListType = 32;
469pub const GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER: GstElementFactoryListType = 256;
470pub const GST_ELEMENT_FACTORY_TYPE_ENCODER: GstElementFactoryListType = 2;
471pub const GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR: GstElementFactoryListType = 2048;
472pub const GST_ELEMENT_FACTORY_TYPE_FORMATTER: GstElementFactoryListType = 512;
473pub const GST_ELEMENT_FACTORY_TYPE_HARDWARE: GstElementFactoryListType = 4096;
474pub const GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS: GstElementFactoryListType = 281474976710656;
475pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY: GstElementFactoryListType = 18446462598732840960;
476pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO: GstElementFactoryListType = 1125899906842624;
477pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE: GstElementFactoryListType = 2251799813685248;
478pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA: GstElementFactoryListType = 9007199254740992;
479pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE: GstElementFactoryListType = 4503599627370496;
480pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO: GstElementFactoryListType = 562949953421312;
481pub const GST_ELEMENT_FACTORY_TYPE_MUXER: GstElementFactoryListType = 16;
482pub const GST_ELEMENT_FACTORY_TYPE_PARSER: GstElementFactoryListType = 64;
483pub const GST_ELEMENT_FACTORY_TYPE_PAYLOADER: GstElementFactoryListType = 128;
484pub const GST_ELEMENT_FACTORY_TYPE_SINK: GstElementFactoryListType = 4;
485pub const GST_ELEMENT_FACTORY_TYPE_SRC: GstElementFactoryListType = 8;
486pub const GST_ELEMENT_FACTORY_TYPE_TIMESTAMPER: GstElementFactoryListType = 8192;
487pub const GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER: GstElementFactoryListType = 2814749767106562;
488pub const GST_ELEMENT_METADATA_AUTHOR: &[u8] = b"author\0";
489pub const GST_ELEMENT_METADATA_DESCRIPTION: &[u8] = b"description\0";
490pub const GST_ELEMENT_METADATA_DOC_URI: &[u8] = b"doc-uri\0";
491pub const GST_ELEMENT_METADATA_ICON_NAME: &[u8] = b"icon-name\0";
492pub const GST_ELEMENT_METADATA_KLASS: &[u8] = b"klass\0";
493pub const GST_ELEMENT_METADATA_LONGNAME: &[u8] = b"long-name\0";
494pub const GST_EVENT_NUM_SHIFT: c_int = 8;
495pub const GST_EVENT_TYPE_BOTH: GstEventTypeFlags = 3;
496pub const GST_FLAG_SET_MASK_EXACT: c_uint = 4294967295;
497pub const GST_FORMAT_PERCENT_MAX: i64 = 1000000;
498pub const GST_FORMAT_PERCENT_SCALE: i64 = 10000;
499pub const GST_GROUP_ID_INVALID: c_int = 0;
500pub const GST_LICENSE_UNKNOWN: &[u8] = b"unknown\0";
501pub const GST_LOCK_FLAG_READWRITE: GstLockFlags = 3;
502pub const GST_MAP_READWRITE: GstMapFlags = 3;
503pub const GST_META_TAG_MEMORY_REFERENCE_STR: &[u8] = b"memory-reference\0";
504pub const GST_META_TAG_MEMORY_STR: &[u8] = b"memory\0";
505pub const GST_MSECOND: GstClockTimeDiff = 1000000;
506pub const GST_NSECOND: GstClockTimeDiff = 1;
507pub const GST_PARAM_CONDITIONALLY_AVAILABLE: c_int = 16384;
508pub const GST_PARAM_CONTROLLABLE: c_int = 512;
509pub const GST_PARAM_DOC_SHOW_DEFAULT: c_int = 8192;
510pub const GST_PARAM_MUTABLE_PAUSED: c_int = 2048;
511pub const GST_PARAM_MUTABLE_PLAYING: c_int = 4096;
512pub const GST_PARAM_MUTABLE_READY: c_int = 1024;
513pub const GST_PARAM_USER_SHIFT: c_int = 65536;
514pub const GST_PROTECTION_SYSTEM_ID_CAPS_FIELD: &[u8] = b"protection-system\0";
515pub const GST_PROTECTION_UNSPECIFIED_SYSTEM_ID: &[u8] = b"unspecified-system-id\0";
516pub const GST_QUERY_NUM_SHIFT: c_int = 8;
517pub const GST_QUERY_TYPE_BOTH: GstQueryTypeFlags = 3;
518pub const GST_SECOND: GstClockTimeDiff = 1000000000;
519pub const GST_SEGMENT_INSTANT_FLAGS: c_int = 912;
520pub const GST_SEQNUM_INVALID: c_int = 0;
521pub const GST_TAG_ALBUM: &[u8] = b"album\0";
522pub const GST_TAG_ALBUM_ARTIST: &[u8] = b"album-artist\0";
523pub const GST_TAG_ALBUM_ARTIST_SORTNAME: &[u8] = b"album-artist-sortname\0";
524pub const GST_TAG_ALBUM_GAIN: &[u8] = b"replaygain-album-gain\0";
525pub const GST_TAG_ALBUM_PEAK: &[u8] = b"replaygain-album-peak\0";
526pub const GST_TAG_ALBUM_SORTNAME: &[u8] = b"album-sortname\0";
527pub const GST_TAG_ALBUM_VOLUME_COUNT: &[u8] = b"album-disc-count\0";
528pub const GST_TAG_ALBUM_VOLUME_NUMBER: &[u8] = b"album-disc-number\0";
529pub const GST_TAG_APPLICATION_DATA: &[u8] = b"application-data\0";
530pub const GST_TAG_APPLICATION_NAME: &[u8] = b"application-name\0";
531pub const GST_TAG_ARTIST: &[u8] = b"artist\0";
532pub const GST_TAG_ARTIST_SORTNAME: &[u8] = b"artist-sortname\0";
533pub const GST_TAG_ATTACHMENT: &[u8] = b"attachment\0";
534pub const GST_TAG_AUDIO_CODEC: &[u8] = b"audio-codec\0";
535pub const GST_TAG_BEATS_PER_MINUTE: &[u8] = b"beats-per-minute\0";
536pub const GST_TAG_BITRATE: &[u8] = b"bitrate\0";
537pub const GST_TAG_CODEC: &[u8] = b"codec\0";
538pub const GST_TAG_COMMENT: &[u8] = b"comment\0";
539pub const GST_TAG_COMPOSER: &[u8] = b"composer\0";
540pub const GST_TAG_COMPOSER_SORTNAME: &[u8] = b"composer-sortname\0";
541pub const GST_TAG_CONDUCTOR: &[u8] = b"conductor\0";
542pub const GST_TAG_CONTACT: &[u8] = b"contact\0";
543pub const GST_TAG_CONTAINER_FORMAT: &[u8] = b"container-format\0";
544pub const GST_TAG_CONTAINER_SPECIFIC_TRACK_ID: &[u8] = b"container-specific-track-id\0";
545pub const GST_TAG_COPYRIGHT: &[u8] = b"copyright\0";
546pub const GST_TAG_COPYRIGHT_URI: &[u8] = b"copyright-uri\0";
547pub const GST_TAG_DATE: &[u8] = b"date\0";
548pub const GST_TAG_DATE_TIME: &[u8] = b"datetime\0";
549pub const GST_TAG_DESCRIPTION: &[u8] = b"description\0";
550pub const GST_TAG_DEVICE_MANUFACTURER: &[u8] = b"device-manufacturer\0";
551pub const GST_TAG_DEVICE_MODEL: &[u8] = b"device-model\0";
552pub const GST_TAG_DURATION: &[u8] = b"duration\0";
553pub const GST_TAG_ENCODED_BY: &[u8] = b"encoded-by\0";
554pub const GST_TAG_ENCODER: &[u8] = b"encoder\0";
555pub const GST_TAG_ENCODER_VERSION: &[u8] = b"encoder-version\0";
556pub const GST_TAG_EXTENDED_COMMENT: &[u8] = b"extended-comment\0";
557pub const GST_TAG_GENRE: &[u8] = b"genre\0";
558pub const GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION: &[u8] = b"geo-location-capture-direction\0";
559pub const GST_TAG_GEO_LOCATION_CITY: &[u8] = b"geo-location-city\0";
560pub const GST_TAG_GEO_LOCATION_COUNTRY: &[u8] = b"geo-location-country\0";
561pub const GST_TAG_GEO_LOCATION_ELEVATION: &[u8] = b"geo-location-elevation\0";
562pub const GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR: &[u8] = b"geo-location-horizontal-error\0";
563pub const GST_TAG_GEO_LOCATION_LATITUDE: &[u8] = b"geo-location-latitude\0";
564pub const GST_TAG_GEO_LOCATION_LONGITUDE: &[u8] = b"geo-location-longitude\0";
565pub const GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION: &[u8] = b"geo-location-movement-direction\0";
566pub const GST_TAG_GEO_LOCATION_MOVEMENT_SPEED: &[u8] = b"geo-location-movement-speed\0";
567pub const GST_TAG_GEO_LOCATION_NAME: &[u8] = b"geo-location-name\0";
568pub const GST_TAG_GEO_LOCATION_SUBLOCATION: &[u8] = b"geo-location-sublocation\0";
569pub const GST_TAG_GROUPING: &[u8] = b"grouping\0";
570pub const GST_TAG_HOMEPAGE: &[u8] = b"homepage\0";
571pub const GST_TAG_IMAGE: &[u8] = b"image\0";
572pub const GST_TAG_IMAGE_ORIENTATION: &[u8] = b"image-orientation\0";
573pub const GST_TAG_INTERPRETED_BY: &[u8] = b"interpreted-by\0";
574pub const GST_TAG_ISRC: &[u8] = b"isrc\0";
575pub const GST_TAG_KEYWORDS: &[u8] = b"keywords\0";
576pub const GST_TAG_LANGUAGE_CODE: &[u8] = b"language-code\0";
577pub const GST_TAG_LANGUAGE_NAME: &[u8] = b"language-name\0";
578pub const GST_TAG_LICENSE: &[u8] = b"license\0";
579pub const GST_TAG_LICENSE_URI: &[u8] = b"license-uri\0";
580pub const GST_TAG_LOCATION: &[u8] = b"location\0";
581pub const GST_TAG_LYRICS: &[u8] = b"lyrics\0";
582pub const GST_TAG_MAXIMUM_BITRATE: &[u8] = b"maximum-bitrate\0";
583pub const GST_TAG_MIDI_BASE_NOTE: &[u8] = b"midi-base-note\0";
584pub const GST_TAG_MINIMUM_BITRATE: &[u8] = b"minimum-bitrate\0";
585pub const GST_TAG_NOMINAL_BITRATE: &[u8] = b"nominal-bitrate\0";
586pub const GST_TAG_ORGANIZATION: &[u8] = b"organization\0";
587pub const GST_TAG_PERFORMER: &[u8] = b"performer\0";
588pub const GST_TAG_PREVIEW_IMAGE: &[u8] = b"preview-image\0";
589pub const GST_TAG_PRIVATE_DATA: &[u8] = b"private-data\0";
590pub const GST_TAG_PUBLISHER: &[u8] = b"publisher\0";
591pub const GST_TAG_REFERENCE_LEVEL: &[u8] = b"replaygain-reference-level\0";
592pub const GST_TAG_SERIAL: &[u8] = b"serial\0";
593pub const GST_TAG_SHOW_EPISODE_NUMBER: &[u8] = b"show-episode-number\0";
594pub const GST_TAG_SHOW_NAME: &[u8] = b"show-name\0";
595pub const GST_TAG_SHOW_SEASON_NUMBER: &[u8] = b"show-season-number\0";
596pub const GST_TAG_SHOW_SORTNAME: &[u8] = b"show-sortname\0";
597pub const GST_TAG_SUBTITLE_CODEC: &[u8] = b"subtitle-codec\0";
598pub const GST_TAG_TITLE: &[u8] = b"title\0";
599pub const GST_TAG_TITLE_SORTNAME: &[u8] = b"title-sortname\0";
600pub const GST_TAG_TRACK_COUNT: &[u8] = b"track-count\0";
601pub const GST_TAG_TRACK_GAIN: &[u8] = b"replaygain-track-gain\0";
602pub const GST_TAG_TRACK_NUMBER: &[u8] = b"track-number\0";
603pub const GST_TAG_TRACK_PEAK: &[u8] = b"replaygain-track-peak\0";
604pub const GST_TAG_USER_RATING: &[u8] = b"user-rating\0";
605pub const GST_TAG_VERSION: &[u8] = b"version\0";
606pub const GST_TAG_VIDEO_CODEC: &[u8] = b"video-codec\0";
607pub const GST_TOC_REPEAT_COUNT_INFINITE: c_int = -1;
608pub const GST_URI_NO_PORT: c_int = 0;
609pub const GST_USECOND: GstClockTimeDiff = 1000;
610pub const GST_VALUE_EQUAL: c_int = 0;
611pub const GST_VALUE_GREATER_THAN: c_int = 1;
612pub const GST_VALUE_LESS_THAN: c_int = -1;
613pub const GST_VALUE_UNORDERED: c_int = 2;
614
615// Flags
616pub type GstAllocatorFlags = c_uint;
617pub const GST_ALLOCATOR_FLAG_CUSTOM_ALLOC: GstAllocatorFlags = 16;
618#[cfg(feature = "v1_24")]
619#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
620pub const GST_ALLOCATOR_FLAG_NO_COPY: GstAllocatorFlags = 32;
621pub const GST_ALLOCATOR_FLAG_LAST: GstAllocatorFlags = 1048576;
622
623pub type GstBinFlags = c_uint;
624pub const GST_BIN_FLAG_NO_RESYNC: GstBinFlags = 16384;
625pub const GST_BIN_FLAG_STREAMS_AWARE: GstBinFlags = 32768;
626pub const GST_BIN_FLAG_LAST: GstBinFlags = 524288;
627
628pub type GstBufferCopyFlags = c_uint;
629pub const GST_BUFFER_COPY_NONE: GstBufferCopyFlags = 0;
630pub const GST_BUFFER_COPY_FLAGS: GstBufferCopyFlags = 1;
631pub const GST_BUFFER_COPY_TIMESTAMPS: GstBufferCopyFlags = 2;
632pub const GST_BUFFER_COPY_META: GstBufferCopyFlags = 4;
633pub const GST_BUFFER_COPY_MEMORY: GstBufferCopyFlags = 8;
634pub const GST_BUFFER_COPY_MERGE: GstBufferCopyFlags = 16;
635pub const GST_BUFFER_COPY_DEEP: GstBufferCopyFlags = 32;
636
637pub type GstBufferFlags = c_uint;
638pub const GST_BUFFER_FLAG_LIVE: GstBufferFlags = 16;
639pub const GST_BUFFER_FLAG_DECODE_ONLY: GstBufferFlags = 32;
640pub const GST_BUFFER_FLAG_DISCONT: GstBufferFlags = 64;
641pub const GST_BUFFER_FLAG_RESYNC: GstBufferFlags = 128;
642pub const GST_BUFFER_FLAG_CORRUPTED: GstBufferFlags = 256;
643pub const GST_BUFFER_FLAG_MARKER: GstBufferFlags = 512;
644pub const GST_BUFFER_FLAG_HEADER: GstBufferFlags = 1024;
645pub const GST_BUFFER_FLAG_GAP: GstBufferFlags = 2048;
646pub const GST_BUFFER_FLAG_DROPPABLE: GstBufferFlags = 4096;
647pub const GST_BUFFER_FLAG_DELTA_UNIT: GstBufferFlags = 8192;
648pub const GST_BUFFER_FLAG_TAG_MEMORY: GstBufferFlags = 16384;
649pub const GST_BUFFER_FLAG_SYNC_AFTER: GstBufferFlags = 32768;
650pub const GST_BUFFER_FLAG_NON_DROPPABLE: GstBufferFlags = 65536;
651pub const GST_BUFFER_FLAG_LAST: GstBufferFlags = 1048576;
652
653pub type GstBufferPoolAcquireFlags = c_uint;
654pub const GST_BUFFER_POOL_ACQUIRE_FLAG_NONE: GstBufferPoolAcquireFlags = 0;
655pub const GST_BUFFER_POOL_ACQUIRE_FLAG_KEY_UNIT: GstBufferPoolAcquireFlags = 1;
656pub const GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT: GstBufferPoolAcquireFlags = 2;
657pub const GST_BUFFER_POOL_ACQUIRE_FLAG_DISCONT: GstBufferPoolAcquireFlags = 4;
658pub const GST_BUFFER_POOL_ACQUIRE_FLAG_LAST: GstBufferPoolAcquireFlags = 65536;
659
660pub type GstBusFlags = c_uint;
661pub const GST_BUS_FLUSHING: GstBusFlags = 16;
662pub const GST_BUS_FLAG_LAST: GstBusFlags = 32;
663
664pub type GstCapsFlags = c_uint;
665pub const GST_CAPS_FLAG_ANY: GstCapsFlags = 16;
666
667pub type GstClockFlags = c_uint;
668pub const GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC: GstClockFlags = 16;
669pub const GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC: GstClockFlags = 32;
670pub const GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC: GstClockFlags = 64;
671pub const GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC: GstClockFlags = 128;
672pub const GST_CLOCK_FLAG_CAN_SET_RESOLUTION: GstClockFlags = 256;
673pub const GST_CLOCK_FLAG_CAN_SET_MASTER: GstClockFlags = 512;
674pub const GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC: GstClockFlags = 1024;
675pub const GST_CLOCK_FLAG_LAST: GstClockFlags = 4096;
676
677pub type GstDebugColorFlags = c_uint;
678pub const GST_DEBUG_FG_BLACK: GstDebugColorFlags = 0;
679pub const GST_DEBUG_FG_RED: GstDebugColorFlags = 1;
680pub const GST_DEBUG_FG_GREEN: GstDebugColorFlags = 2;
681pub const GST_DEBUG_FG_YELLOW: GstDebugColorFlags = 3;
682pub const GST_DEBUG_FG_BLUE: GstDebugColorFlags = 4;
683pub const GST_DEBUG_FG_MAGENTA: GstDebugColorFlags = 5;
684pub const GST_DEBUG_FG_CYAN: GstDebugColorFlags = 6;
685pub const GST_DEBUG_FG_WHITE: GstDebugColorFlags = 7;
686pub const GST_DEBUG_BG_BLACK: GstDebugColorFlags = 0;
687pub const GST_DEBUG_BG_RED: GstDebugColorFlags = 16;
688pub const GST_DEBUG_BG_GREEN: GstDebugColorFlags = 32;
689pub const GST_DEBUG_BG_YELLOW: GstDebugColorFlags = 48;
690pub const GST_DEBUG_BG_BLUE: GstDebugColorFlags = 64;
691pub const GST_DEBUG_BG_MAGENTA: GstDebugColorFlags = 80;
692pub const GST_DEBUG_BG_CYAN: GstDebugColorFlags = 96;
693pub const GST_DEBUG_BG_WHITE: GstDebugColorFlags = 112;
694pub const GST_DEBUG_BOLD: GstDebugColorFlags = 256;
695pub const GST_DEBUG_UNDERLINE: GstDebugColorFlags = 512;
696
697pub type GstDebugGraphDetails = c_uint;
698pub const GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE: GstDebugGraphDetails = 1;
699pub const GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS: GstDebugGraphDetails = 2;
700pub const GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS: GstDebugGraphDetails = 4;
701pub const GST_DEBUG_GRAPH_SHOW_STATES: GstDebugGraphDetails = 8;
702pub const GST_DEBUG_GRAPH_SHOW_FULL_PARAMS: GstDebugGraphDetails = 16;
703pub const GST_DEBUG_GRAPH_SHOW_ALL: GstDebugGraphDetails = 15;
704pub const GST_DEBUG_GRAPH_SHOW_VERBOSE: GstDebugGraphDetails = 4294967295;
705
706pub type GstElementFlags = c_uint;
707pub const GST_ELEMENT_FLAG_LOCKED_STATE: GstElementFlags = 16;
708pub const GST_ELEMENT_FLAG_SINK: GstElementFlags = 32;
709pub const GST_ELEMENT_FLAG_SOURCE: GstElementFlags = 64;
710pub const GST_ELEMENT_FLAG_PROVIDE_CLOCK: GstElementFlags = 128;
711pub const GST_ELEMENT_FLAG_REQUIRE_CLOCK: GstElementFlags = 256;
712pub const GST_ELEMENT_FLAG_INDEXABLE: GstElementFlags = 512;
713pub const GST_ELEMENT_FLAG_LAST: GstElementFlags = 16384;
714
715pub type GstEventTypeFlags = c_uint;
716pub const GST_EVENT_TYPE_UPSTREAM: GstEventTypeFlags = 1;
717pub const GST_EVENT_TYPE_DOWNSTREAM: GstEventTypeFlags = 2;
718pub const GST_EVENT_TYPE_SERIALIZED: GstEventTypeFlags = 4;
719pub const GST_EVENT_TYPE_STICKY: GstEventTypeFlags = 8;
720pub const GST_EVENT_TYPE_STICKY_MULTI: GstEventTypeFlags = 16;
721
722pub type GstGapFlags = c_uint;
723pub const GST_GAP_FLAG_MISSING_DATA: GstGapFlags = 1;
724
725pub type GstLockFlags = c_uint;
726pub const GST_LOCK_FLAG_READ: GstLockFlags = 1;
727pub const GST_LOCK_FLAG_WRITE: GstLockFlags = 2;
728pub const GST_LOCK_FLAG_EXCLUSIVE: GstLockFlags = 4;
729pub const GST_LOCK_FLAG_LAST: GstLockFlags = 256;
730
731pub type GstMapFlags = c_uint;
732pub const GST_MAP_READ: GstMapFlags = 1;
733pub const GST_MAP_WRITE: GstMapFlags = 2;
734pub const GST_MAP_FLAG_LAST: GstMapFlags = 65536;
735
736pub type GstMemoryFlags = c_uint;
737pub const GST_MEMORY_FLAG_READONLY: GstMemoryFlags = 2;
738pub const GST_MEMORY_FLAG_NO_SHARE: GstMemoryFlags = 16;
739pub const GST_MEMORY_FLAG_ZERO_PREFIXED: GstMemoryFlags = 32;
740pub const GST_MEMORY_FLAG_ZERO_PADDED: GstMemoryFlags = 64;
741pub const GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS: GstMemoryFlags = 128;
742pub const GST_MEMORY_FLAG_NOT_MAPPABLE: GstMemoryFlags = 256;
743pub const GST_MEMORY_FLAG_LAST: GstMemoryFlags = 1048576;
744
745pub type GstMessageType = c_uint;
746pub const GST_MESSAGE_UNKNOWN: GstMessageType = 0;
747pub const GST_MESSAGE_EOS: GstMessageType = 1;
748pub const GST_MESSAGE_ERROR: GstMessageType = 2;
749pub const GST_MESSAGE_WARNING: GstMessageType = 4;
750pub const GST_MESSAGE_INFO: GstMessageType = 8;
751pub const GST_MESSAGE_TAG: GstMessageType = 16;
752pub const GST_MESSAGE_BUFFERING: GstMessageType = 32;
753pub const GST_MESSAGE_STATE_CHANGED: GstMessageType = 64;
754pub const GST_MESSAGE_STATE_DIRTY: GstMessageType = 128;
755pub const GST_MESSAGE_STEP_DONE: GstMessageType = 256;
756pub const GST_MESSAGE_CLOCK_PROVIDE: GstMessageType = 512;
757pub const GST_MESSAGE_CLOCK_LOST: GstMessageType = 1024;
758pub const GST_MESSAGE_NEW_CLOCK: GstMessageType = 2048;
759pub const GST_MESSAGE_STRUCTURE_CHANGE: GstMessageType = 4096;
760pub const GST_MESSAGE_STREAM_STATUS: GstMessageType = 8192;
761pub const GST_MESSAGE_APPLICATION: GstMessageType = 16384;
762pub const GST_MESSAGE_ELEMENT: GstMessageType = 32768;
763pub const GST_MESSAGE_SEGMENT_START: GstMessageType = 65536;
764pub const GST_MESSAGE_SEGMENT_DONE: GstMessageType = 131072;
765pub const GST_MESSAGE_DURATION_CHANGED: GstMessageType = 262144;
766pub const GST_MESSAGE_LATENCY: GstMessageType = 524288;
767pub const GST_MESSAGE_ASYNC_START: GstMessageType = 1048576;
768pub const GST_MESSAGE_ASYNC_DONE: GstMessageType = 2097152;
769pub const GST_MESSAGE_REQUEST_STATE: GstMessageType = 4194304;
770pub const GST_MESSAGE_STEP_START: GstMessageType = 8388608;
771pub const GST_MESSAGE_QOS: GstMessageType = 16777216;
772pub const GST_MESSAGE_PROGRESS: GstMessageType = 33554432;
773pub const GST_MESSAGE_TOC: GstMessageType = 67108864;
774pub const GST_MESSAGE_RESET_TIME: GstMessageType = 134217728;
775pub const GST_MESSAGE_STREAM_START: GstMessageType = 268435456;
776pub const GST_MESSAGE_NEED_CONTEXT: GstMessageType = 536870912;
777pub const GST_MESSAGE_HAVE_CONTEXT: GstMessageType = 1073741824;
778pub const GST_MESSAGE_EXTENDED: GstMessageType = 2147483648;
779pub const GST_MESSAGE_DEVICE_ADDED: GstMessageType = 2147483649;
780pub const GST_MESSAGE_DEVICE_REMOVED: GstMessageType = 2147483650;
781pub const GST_MESSAGE_PROPERTY_NOTIFY: GstMessageType = 2147483651;
782pub const GST_MESSAGE_STREAM_COLLECTION: GstMessageType = 2147483652;
783pub const GST_MESSAGE_STREAMS_SELECTED: GstMessageType = 2147483653;
784pub const GST_MESSAGE_REDIRECT: GstMessageType = 2147483654;
785pub const GST_MESSAGE_DEVICE_CHANGED: GstMessageType = 2147483655;
786pub const GST_MESSAGE_INSTANT_RATE_REQUEST: GstMessageType = 2147483656;
787pub const GST_MESSAGE_ANY: GstMessageType = 4294967295;
788
789pub type GstMetaFlags = c_uint;
790pub const GST_META_FLAG_NONE: GstMetaFlags = 0;
791pub const GST_META_FLAG_READONLY: GstMetaFlags = 1;
792pub const GST_META_FLAG_POOLED: GstMetaFlags = 2;
793pub const GST_META_FLAG_LOCKED: GstMetaFlags = 4;
794pub const GST_META_FLAG_LAST: GstMetaFlags = 65536;
795
796pub type GstMiniObjectFlags = c_uint;
797pub const GST_MINI_OBJECT_FLAG_LOCKABLE: GstMiniObjectFlags = 1;
798pub const GST_MINI_OBJECT_FLAG_LOCK_READONLY: GstMiniObjectFlags = 2;
799pub const GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED: GstMiniObjectFlags = 4;
800pub const GST_MINI_OBJECT_FLAG_LAST: GstMiniObjectFlags = 16;
801
802pub type GstObjectFlags = c_uint;
803pub const GST_OBJECT_FLAG_MAY_BE_LEAKED: GstObjectFlags = 1;
804#[cfg(feature = "v1_24")]
805#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
806pub const GST_OBJECT_FLAG_CONSTRUCTED: GstObjectFlags = 2;
807pub const GST_OBJECT_FLAG_LAST: GstObjectFlags = 16;
808
809pub type GstPadFlags = c_uint;
810pub const GST_PAD_FLAG_BLOCKED: GstPadFlags = 16;
811pub const GST_PAD_FLAG_FLUSHING: GstPadFlags = 32;
812pub const GST_PAD_FLAG_EOS: GstPadFlags = 64;
813pub const GST_PAD_FLAG_BLOCKING: GstPadFlags = 128;
814pub const GST_PAD_FLAG_NEED_PARENT: GstPadFlags = 256;
815pub const GST_PAD_FLAG_NEED_RECONFIGURE: GstPadFlags = 512;
816pub const GST_PAD_FLAG_PENDING_EVENTS: GstPadFlags = 1024;
817pub const GST_PAD_FLAG_FIXED_CAPS: GstPadFlags = 2048;
818pub const GST_PAD_FLAG_PROXY_CAPS: GstPadFlags = 4096;
819pub const GST_PAD_FLAG_PROXY_ALLOCATION: GstPadFlags = 8192;
820pub const GST_PAD_FLAG_PROXY_SCHEDULING: GstPadFlags = 16384;
821pub const GST_PAD_FLAG_ACCEPT_INTERSECT: GstPadFlags = 32768;
822pub const GST_PAD_FLAG_ACCEPT_TEMPLATE: GstPadFlags = 65536;
823pub const GST_PAD_FLAG_LAST: GstPadFlags = 1048576;
824
825pub type GstPadLinkCheck = c_uint;
826pub const GST_PAD_LINK_CHECK_NOTHING: GstPadLinkCheck = 0;
827pub const GST_PAD_LINK_CHECK_HIERARCHY: GstPadLinkCheck = 1;
828pub const GST_PAD_LINK_CHECK_TEMPLATE_CAPS: GstPadLinkCheck = 2;
829pub const GST_PAD_LINK_CHECK_CAPS: GstPadLinkCheck = 4;
830pub const GST_PAD_LINK_CHECK_NO_RECONFIGURE: GstPadLinkCheck = 8;
831pub const GST_PAD_LINK_CHECK_DEFAULT: GstPadLinkCheck = 5;
832
833pub type GstPadProbeType = c_uint;
834pub const GST_PAD_PROBE_TYPE_INVALID: GstPadProbeType = 0;
835pub const GST_PAD_PROBE_TYPE_IDLE: GstPadProbeType = 1;
836pub const GST_PAD_PROBE_TYPE_BLOCK: GstPadProbeType = 2;
837pub const GST_PAD_PROBE_TYPE_BUFFER: GstPadProbeType = 16;
838pub const GST_PAD_PROBE_TYPE_BUFFER_LIST: GstPadProbeType = 32;
839pub const GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM: GstPadProbeType = 64;
840pub const GST_PAD_PROBE_TYPE_EVENT_UPSTREAM: GstPadProbeType = 128;
841pub const GST_PAD_PROBE_TYPE_EVENT_FLUSH: GstPadProbeType = 256;
842pub const GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM: GstPadProbeType = 512;
843pub const GST_PAD_PROBE_TYPE_QUERY_UPSTREAM: GstPadProbeType = 1024;
844pub const GST_PAD_PROBE_TYPE_PUSH: GstPadProbeType = 4096;
845pub const GST_PAD_PROBE_TYPE_PULL: GstPadProbeType = 8192;
846pub const GST_PAD_PROBE_TYPE_BLOCKING: GstPadProbeType = 3;
847pub const GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM: GstPadProbeType = 112;
848pub const GST_PAD_PROBE_TYPE_DATA_UPSTREAM: GstPadProbeType = 128;
849pub const GST_PAD_PROBE_TYPE_DATA_BOTH: GstPadProbeType = 240;
850pub const GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM: GstPadProbeType = 114;
851pub const GST_PAD_PROBE_TYPE_BLOCK_UPSTREAM: GstPadProbeType = 130;
852pub const GST_PAD_PROBE_TYPE_EVENT_BOTH: GstPadProbeType = 192;
853pub const GST_PAD_PROBE_TYPE_QUERY_BOTH: GstPadProbeType = 1536;
854pub const GST_PAD_PROBE_TYPE_ALL_BOTH: GstPadProbeType = 1776;
855pub const GST_PAD_PROBE_TYPE_SCHEDULING: GstPadProbeType = 12288;
856
857pub type GstPadTemplateFlags = c_uint;
858pub const GST_PAD_TEMPLATE_FLAG_LAST: GstPadTemplateFlags = 256;
859
860pub type GstParseFlags = c_uint;
861pub const GST_PARSE_FLAG_NONE: GstParseFlags = 0;
862pub const GST_PARSE_FLAG_FATAL_ERRORS: GstParseFlags = 1;
863pub const GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS: GstParseFlags = 2;
864pub const GST_PARSE_FLAG_PLACE_IN_BIN: GstParseFlags = 4;
865
866pub type GstPipelineFlags = c_uint;
867pub const GST_PIPELINE_FLAG_FIXED_CLOCK: GstPipelineFlags = 524288;
868pub const GST_PIPELINE_FLAG_LAST: GstPipelineFlags = 8388608;
869
870pub type GstPluginAPIFlags = c_uint;
871pub const GST_PLUGIN_API_FLAG_IGNORE_ENUM_MEMBERS: GstPluginAPIFlags = 1;
872
873pub type GstPluginDependencyFlags = c_uint;
874pub const GST_PLUGIN_DEPENDENCY_FLAG_NONE: GstPluginDependencyFlags = 0;
875pub const GST_PLUGIN_DEPENDENCY_FLAG_RECURSE: GstPluginDependencyFlags = 1;
876pub const GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY: GstPluginDependencyFlags = 2;
877pub const GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX: GstPluginDependencyFlags = 4;
878pub const GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_PREFIX: GstPluginDependencyFlags = 8;
879pub const GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_RELATIVE_TO_EXE: GstPluginDependencyFlags = 16;
880
881pub type GstPluginFlags = c_uint;
882pub const GST_PLUGIN_FLAG_CACHED: GstPluginFlags = 16;
883pub const GST_PLUGIN_FLAG_BLACKLISTED: GstPluginFlags = 32;
884
885pub type GstQueryTypeFlags = c_uint;
886pub const GST_QUERY_TYPE_UPSTREAM: GstQueryTypeFlags = 1;
887pub const GST_QUERY_TYPE_DOWNSTREAM: GstQueryTypeFlags = 2;
888pub const GST_QUERY_TYPE_SERIALIZED: GstQueryTypeFlags = 4;
889
890pub type GstSchedulingFlags = c_uint;
891pub const GST_SCHEDULING_FLAG_SEEKABLE: GstSchedulingFlags = 1;
892pub const GST_SCHEDULING_FLAG_SEQUENTIAL: GstSchedulingFlags = 2;
893pub const GST_SCHEDULING_FLAG_BANDWIDTH_LIMITED: GstSchedulingFlags = 4;
894
895pub type GstSeekFlags = c_uint;
896pub const GST_SEEK_FLAG_NONE: GstSeekFlags = 0;
897pub const GST_SEEK_FLAG_FLUSH: GstSeekFlags = 1;
898pub const GST_SEEK_FLAG_ACCURATE: GstSeekFlags = 2;
899pub const GST_SEEK_FLAG_KEY_UNIT: GstSeekFlags = 4;
900pub const GST_SEEK_FLAG_SEGMENT: GstSeekFlags = 8;
901pub const GST_SEEK_FLAG_TRICKMODE: GstSeekFlags = 16;
902pub const GST_SEEK_FLAG_SKIP: GstSeekFlags = 16;
903pub const GST_SEEK_FLAG_SNAP_BEFORE: GstSeekFlags = 32;
904pub const GST_SEEK_FLAG_SNAP_AFTER: GstSeekFlags = 64;
905pub const GST_SEEK_FLAG_SNAP_NEAREST: GstSeekFlags = 96;
906pub const GST_SEEK_FLAG_TRICKMODE_KEY_UNITS: GstSeekFlags = 128;
907pub const GST_SEEK_FLAG_TRICKMODE_NO_AUDIO: GstSeekFlags = 256;
908pub const GST_SEEK_FLAG_TRICKMODE_FORWARD_PREDICTED: GstSeekFlags = 512;
909pub const GST_SEEK_FLAG_INSTANT_RATE_CHANGE: GstSeekFlags = 1024;
910
911pub type GstSegmentFlags = c_uint;
912pub const GST_SEGMENT_FLAG_NONE: GstSegmentFlags = 0;
913pub const GST_SEGMENT_FLAG_RESET: GstSegmentFlags = 1;
914pub const GST_SEGMENT_FLAG_TRICKMODE: GstSegmentFlags = 16;
915pub const GST_SEGMENT_FLAG_SKIP: GstSegmentFlags = 16;
916pub const GST_SEGMENT_FLAG_SEGMENT: GstSegmentFlags = 8;
917pub const GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS: GstSegmentFlags = 128;
918pub const GST_SEGMENT_FLAG_TRICKMODE_FORWARD_PREDICTED: GstSegmentFlags = 512;
919pub const GST_SEGMENT_FLAG_TRICKMODE_NO_AUDIO: GstSegmentFlags = 256;
920
921pub type GstSerializeFlags = c_uint;
922pub const GST_SERIALIZE_FLAG_NONE: GstSerializeFlags = 0;
923pub const GST_SERIALIZE_FLAG_BACKWARD_COMPAT: GstSerializeFlags = 1;
924#[cfg(feature = "v1_24")]
925#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
926pub const GST_SERIALIZE_FLAG_STRICT: GstSerializeFlags = 2;
927
928pub type GstStackTraceFlags = c_uint;
929pub const GST_STACK_TRACE_SHOW_NONE: GstStackTraceFlags = 0;
930pub const GST_STACK_TRACE_SHOW_FULL: GstStackTraceFlags = 1;
931
932pub type GstStreamFlags = c_uint;
933pub const GST_STREAM_FLAG_NONE: GstStreamFlags = 0;
934pub const GST_STREAM_FLAG_SPARSE: GstStreamFlags = 1;
935pub const GST_STREAM_FLAG_SELECT: GstStreamFlags = 2;
936pub const GST_STREAM_FLAG_UNSELECT: GstStreamFlags = 4;
937
938pub type GstStreamType = c_uint;
939pub const GST_STREAM_TYPE_UNKNOWN: GstStreamType = 1;
940pub const GST_STREAM_TYPE_AUDIO: GstStreamType = 2;
941pub const GST_STREAM_TYPE_VIDEO: GstStreamType = 4;
942pub const GST_STREAM_TYPE_CONTAINER: GstStreamType = 8;
943pub const GST_STREAM_TYPE_TEXT: GstStreamType = 16;
944
945pub type GstTracerValueFlags = c_uint;
946pub const GST_TRACER_VALUE_FLAGS_NONE: GstTracerValueFlags = 0;
947pub const GST_TRACER_VALUE_FLAGS_OPTIONAL: GstTracerValueFlags = 1;
948pub const GST_TRACER_VALUE_FLAGS_AGGREGATED: GstTracerValueFlags = 2;
949
950// Unions
951#[derive(Copy, Clone)]
952#[repr(C)]
953pub union GstControlBinding_ABI {
954    pub abi: GstControlBinding_ABI_abi,
955    pub _gst_reserved: [gpointer; 4],
956}
957
958impl ::std::fmt::Debug for GstControlBinding_ABI {
959    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
960        f.debug_struct(&format!("GstControlBinding_ABI @ {self:p}"))
961            .field("abi", unsafe { &self.abi })
962            .finish()
963    }
964}
965
966#[derive(Copy, Clone)]
967#[repr(C)]
968pub union GstPadProbeInfo_ABI {
969    pub _gst_reserved: [gpointer; 4],
970    pub abi: GstPadProbeInfo_ABI_abi,
971}
972
973impl ::std::fmt::Debug for GstPadProbeInfo_ABI {
974    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
975        f.debug_struct(&format!("GstPadProbeInfo_ABI @ {self:p}"))
976            .field("_gst_reserved", unsafe { &self._gst_reserved })
977            .field("abi", unsafe { &self.abi })
978            .finish()
979    }
980}
981
982#[derive(Copy, Clone)]
983#[repr(C)]
984pub union GstPadTemplate_ABI {
985    pub _gst_reserved: [gpointer; 4],
986    pub abi: GstPadTemplate_ABI_abi,
987}
988
989impl ::std::fmt::Debug for GstPadTemplate_ABI {
990    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
991        f.debug_struct(&format!("GstPadTemplate_ABI @ {self:p}"))
992            .field("_gst_reserved", unsafe { &self._gst_reserved })
993            .field("abi", unsafe { &self.abi })
994            .finish()
995    }
996}
997
998#[derive(Copy, Clone)]
999#[repr(C)]
1000pub union GstPad_ABI {
1001    pub _gst_reserved: [gpointer; 4],
1002    pub abi: GstPad_ABI_abi,
1003}
1004
1005impl ::std::fmt::Debug for GstPad_ABI {
1006    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1007        f.debug_struct(&format!("GstPad_ABI @ {self:p}"))
1008            .field("_gst_reserved", unsafe { &self._gst_reserved })
1009            .field("abi", unsafe { &self.abi })
1010            .finish()
1011    }
1012}
1013
1014// Callbacks
1015pub type GstAllocationMetaParamsAggregator = Option<
1016    unsafe extern "C" fn(
1017        *mut *mut GstStructure,
1018        *const GstStructure,
1019        *const GstStructure,
1020    ) -> gboolean,
1021>;
1022pub type GstBufferForeachMetaFunc =
1023    Option<unsafe extern "C" fn(*mut GstBuffer, *mut *mut GstMeta, gpointer) -> gboolean>;
1024pub type GstBufferListFunc =
1025    Option<unsafe extern "C" fn(*mut *mut GstBuffer, c_uint, gpointer) -> gboolean>;
1026pub type GstBusFunc =
1027    Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage, gpointer) -> gboolean>;
1028pub type GstBusSyncHandler =
1029    Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage, gpointer) -> GstBusSyncReply>;
1030pub type GstCapsFilterMapFunc =
1031    Option<unsafe extern "C" fn(*mut GstCapsFeatures, *mut GstStructure, gpointer) -> gboolean>;
1032pub type GstCapsForeachFunc =
1033    Option<unsafe extern "C" fn(*mut GstCapsFeatures, *mut GstStructure, gpointer) -> gboolean>;
1034pub type GstCapsMapFunc =
1035    Option<unsafe extern "C" fn(*mut GstCapsFeatures, *mut GstStructure, gpointer) -> gboolean>;
1036pub type GstClockCallback =
1037    Option<unsafe extern "C" fn(*mut GstClock, GstClockTime, GstClockID, gpointer) -> gboolean>;
1038pub type GstControlBindingConvert =
1039    Option<unsafe extern "C" fn(*mut GstControlBinding, c_double, *mut gobject::GValue)>;
1040pub type GstControlSourceGetValue =
1041    Option<unsafe extern "C" fn(*mut GstControlSource, GstClockTime, *mut c_double) -> gboolean>;
1042pub type GstControlSourceGetValueArray = Option<
1043    unsafe extern "C" fn(
1044        *mut GstControlSource,
1045        GstClockTime,
1046        GstClockTime,
1047        c_uint,
1048        *mut c_double,
1049    ) -> gboolean,
1050>;
1051pub type GstCustomMetaTransformFunction = Option<
1052    unsafe extern "C" fn(
1053        *mut GstBuffer,
1054        *mut GstCustomMeta,
1055        *mut GstBuffer,
1056        glib::GQuark,
1057        gpointer,
1058        gpointer,
1059    ) -> gboolean,
1060>;
1061pub type GstDebugFuncPtr = Option<unsafe extern "C" fn()>;
1062pub type GstElementCallAsyncFunc = Option<unsafe extern "C" fn(*mut GstElement, gpointer)>;
1063pub type GstElementForeachPadFunc =
1064    Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad, gpointer) -> gboolean>;
1065pub type GstIteratorCopyFunction =
1066    Option<unsafe extern "C" fn(*const GstIterator, *mut GstIterator)>;
1067pub type GstIteratorFoldFunction = Option<
1068    unsafe extern "C" fn(*const gobject::GValue, *mut gobject::GValue, gpointer) -> gboolean,
1069>;
1070pub type GstIteratorForeachFunction =
1071    Option<unsafe extern "C" fn(*const gobject::GValue, gpointer)>;
1072pub type GstIteratorFreeFunction = Option<unsafe extern "C" fn(*mut GstIterator)>;
1073pub type GstIteratorItemFunction =
1074    Option<unsafe extern "C" fn(*mut GstIterator, *const gobject::GValue) -> GstIteratorItem>;
1075pub type GstIteratorNextFunction =
1076    Option<unsafe extern "C" fn(*mut GstIterator, *mut gobject::GValue) -> GstIteratorResult>;
1077pub type GstIteratorResyncFunction = Option<unsafe extern "C" fn(*mut GstIterator)>;
1078pub type GstLogFunction = Option<
1079    unsafe extern "C" fn(
1080        *mut GstDebugCategory,
1081        GstDebugLevel,
1082        *const c_char,
1083        *const c_char,
1084        c_int,
1085        *mut gobject::GObject,
1086        *mut GstDebugMessage,
1087        gpointer,
1088    ),
1089>;
1090pub type GstMemoryCopyFunction =
1091    Option<unsafe extern "C" fn(*mut GstMemory, ssize_t, ssize_t) -> *mut GstMemory>;
1092pub type GstMemoryIsSpanFunction =
1093    Option<unsafe extern "C" fn(*mut GstMemory, *mut GstMemory, *mut size_t) -> gboolean>;
1094pub type GstMemoryMapFullFunction =
1095    Option<unsafe extern "C" fn(*mut GstMemory, *mut GstMapInfo, size_t) -> gpointer>;
1096pub type GstMemoryMapFunction =
1097    Option<unsafe extern "C" fn(*mut GstMemory, size_t, GstMapFlags) -> gpointer>;
1098pub type GstMemoryShareFunction =
1099    Option<unsafe extern "C" fn(*mut GstMemory, ssize_t, ssize_t) -> *mut GstMemory>;
1100pub type GstMemoryUnmapFullFunction = Option<unsafe extern "C" fn(*mut GstMemory, *mut GstMapInfo)>;
1101pub type GstMemoryUnmapFunction = Option<unsafe extern "C" fn(*mut GstMemory)>;
1102pub type GstMetaClearFunction = Option<unsafe extern "C" fn(*mut GstBuffer, *mut GstMeta)>;
1103pub type GstMetaDeserializeFunction = Option<
1104    unsafe extern "C" fn(*const GstMetaInfo, *mut GstBuffer, *const u8, size_t, u8) -> *mut GstMeta,
1105>;
1106pub type GstMetaFreeFunction = Option<unsafe extern "C" fn(*mut GstMeta, *mut GstBuffer)>;
1107pub type GstMetaInitFunction =
1108    Option<unsafe extern "C" fn(*mut GstMeta, gpointer, *mut GstBuffer) -> gboolean>;
1109pub type GstMetaSerializeFunction =
1110    Option<unsafe extern "C" fn(*const GstMeta, *mut GstByteArrayInterface, *mut u8) -> gboolean>;
1111pub type GstMetaTransformFunction = Option<
1112    unsafe extern "C" fn(
1113        *mut GstBuffer,
1114        *mut GstMeta,
1115        *mut GstBuffer,
1116        glib::GQuark,
1117        gpointer,
1118    ) -> gboolean,
1119>;
1120pub type GstMiniObjectCopyFunction =
1121    Option<unsafe extern "C" fn(*const GstMiniObject) -> *mut GstMiniObject>;
1122pub type GstMiniObjectDisposeFunction =
1123    Option<unsafe extern "C" fn(*mut GstMiniObject) -> gboolean>;
1124pub type GstMiniObjectFreeFunction = Option<unsafe extern "C" fn(*mut GstMiniObject)>;
1125pub type GstMiniObjectNotify = Option<unsafe extern "C" fn(gpointer, *mut GstMiniObject)>;
1126pub type GstPadActivateFunction =
1127    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject) -> gboolean>;
1128pub type GstPadActivateModeFunction =
1129    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, GstPadMode, gboolean) -> gboolean>;
1130pub type GstPadChainFunction =
1131    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstBuffer) -> GstFlowReturn>;
1132pub type GstPadChainListFunction =
1133    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstBufferList) -> GstFlowReturn>;
1134pub type GstPadEventFullFunction =
1135    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstEvent) -> GstFlowReturn>;
1136pub type GstPadEventFunction =
1137    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstEvent) -> gboolean>;
1138pub type GstPadForwardFunction = Option<unsafe extern "C" fn(*mut GstPad, gpointer) -> gboolean>;
1139pub type GstPadGetRangeFunction = Option<
1140    unsafe extern "C" fn(
1141        *mut GstPad,
1142        *mut GstObject,
1143        u64,
1144        c_uint,
1145        *mut *mut GstBuffer,
1146    ) -> GstFlowReturn,
1147>;
1148pub type GstPadIterIntLinkFunction =
1149    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject) -> *mut GstIterator>;
1150pub type GstPadLinkFunction =
1151    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstPad) -> GstPadLinkReturn>;
1152pub type GstPadProbeCallback =
1153    Option<unsafe extern "C" fn(*mut GstPad, *mut GstPadProbeInfo, gpointer) -> GstPadProbeReturn>;
1154pub type GstPadQueryFunction =
1155    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstQuery) -> gboolean>;
1156pub type GstPadStickyEventsForeachFunction =
1157    Option<unsafe extern "C" fn(*mut GstPad, *mut *mut GstEvent, gpointer) -> gboolean>;
1158pub type GstPadUnlinkFunction = Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject)>;
1159pub type GstPluginFeatureFilter =
1160    Option<unsafe extern "C" fn(*mut GstPluginFeature, gpointer) -> gboolean>;
1161pub type GstPluginFilter = Option<unsafe extern "C" fn(*mut GstPlugin, gpointer) -> gboolean>;
1162pub type GstPluginInitFullFunc = Option<unsafe extern "C" fn(*mut GstPlugin, gpointer) -> gboolean>;
1163pub type GstPluginInitFunc = Option<unsafe extern "C" fn(*mut GstPlugin) -> gboolean>;
1164pub type GstPromiseChangeFunc = Option<unsafe extern "C" fn(*mut GstPromise, gpointer)>;
1165pub type GstStructureFilterMapFunc =
1166    Option<unsafe extern "C" fn(glib::GQuark, *mut gobject::GValue, gpointer) -> gboolean>;
1167pub type GstStructureFilterMapIdStrFunc =
1168    Option<unsafe extern "C" fn(*const GstIdStr, *mut gobject::GValue, gpointer) -> gboolean>;
1169pub type GstStructureForeachFunc =
1170    Option<unsafe extern "C" fn(glib::GQuark, *const gobject::GValue, gpointer) -> gboolean>;
1171pub type GstStructureForeachIdStrFunc =
1172    Option<unsafe extern "C" fn(*const GstIdStr, *const gobject::GValue, gpointer) -> gboolean>;
1173pub type GstStructureMapFunc =
1174    Option<unsafe extern "C" fn(glib::GQuark, *mut gobject::GValue, gpointer) -> gboolean>;
1175pub type GstStructureMapIdStrFunc =
1176    Option<unsafe extern "C" fn(*const GstIdStr, *mut gobject::GValue, gpointer) -> gboolean>;
1177pub type GstTagForeachFunc =
1178    Option<unsafe extern "C" fn(*const GstTagList, *const c_char, gpointer)>;
1179pub type GstTagMergeFunc =
1180    Option<unsafe extern "C" fn(*mut gobject::GValue, *const gobject::GValue)>;
1181pub type GstTaskFunction = Option<unsafe extern "C" fn(gpointer)>;
1182pub type GstTaskPoolFunction = Option<unsafe extern "C" fn(*mut c_void)>;
1183pub type GstTaskThreadFunc =
1184    Option<unsafe extern "C" fn(*mut GstTask, *mut glib::GThread, gpointer)>;
1185pub type GstTypeFindFunction = Option<unsafe extern "C" fn(*mut GstTypeFind, gpointer)>;
1186pub type GstValueCompareFunc =
1187    Option<unsafe extern "C" fn(*const gobject::GValue, *const gobject::GValue) -> c_int>;
1188pub type GstValueDeserializeFunc =
1189    Option<unsafe extern "C" fn(*mut gobject::GValue, *const c_char) -> gboolean>;
1190pub type GstValueDeserializeWithPSpecFunc = Option<
1191    unsafe extern "C" fn(*mut gobject::GValue, *const c_char, *mut gobject::GParamSpec) -> gboolean,
1192>;
1193pub type GstValueSerializeFunc =
1194    Option<unsafe extern "C" fn(*const gobject::GValue) -> *mut c_char>;
1195
1196// Records
1197#[derive(Copy, Clone)]
1198#[repr(C)]
1199pub struct GstAllocationParams {
1200    pub flags: GstMemoryFlags,
1201    pub align: size_t,
1202    pub prefix: size_t,
1203    pub padding: size_t,
1204    pub _gst_reserved: [gpointer; 4],
1205}
1206
1207impl ::std::fmt::Debug for GstAllocationParams {
1208    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1209        f.debug_struct(&format!("GstAllocationParams @ {self:p}"))
1210            .field("flags", &self.flags)
1211            .field("align", &self.align)
1212            .field("prefix", &self.prefix)
1213            .field("padding", &self.padding)
1214            .finish()
1215    }
1216}
1217
1218#[derive(Copy, Clone)]
1219#[repr(C)]
1220pub struct GstAllocatorClass {
1221    pub object_class: GstObjectClass,
1222    pub alloc: Option<
1223        unsafe extern "C" fn(*mut GstAllocator, size_t, *mut GstAllocationParams) -> *mut GstMemory,
1224    >,
1225    pub free: Option<unsafe extern "C" fn(*mut GstAllocator, *mut GstMemory)>,
1226    pub _gst_reserved: [gpointer; 4],
1227}
1228
1229impl ::std::fmt::Debug for GstAllocatorClass {
1230    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1231        f.debug_struct(&format!("GstAllocatorClass @ {self:p}"))
1232            .field("object_class", &self.object_class)
1233            .field("alloc", &self.alloc)
1234            .field("free", &self.free)
1235            .finish()
1236    }
1237}
1238
1239#[repr(C)]
1240#[allow(dead_code)]
1241pub struct _GstAllocatorPrivate {
1242    _data: [u8; 0],
1243    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1244}
1245
1246pub type GstAllocatorPrivate = _GstAllocatorPrivate;
1247
1248#[repr(C)]
1249#[allow(dead_code)]
1250pub struct GstAtomicQueue {
1251    _data: [u8; 0],
1252    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1253}
1254
1255impl ::std::fmt::Debug for GstAtomicQueue {
1256    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1257        f.debug_struct(&format!("GstAtomicQueue @ {self:p}"))
1258            .finish()
1259    }
1260}
1261
1262#[derive(Copy, Clone)]
1263#[repr(C)]
1264pub struct GstBinClass {
1265    pub parent_class: GstElementClass,
1266    pub pool: *mut glib::GThreadPool,
1267    pub element_added: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement)>,
1268    pub element_removed: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement)>,
1269    pub add_element: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement) -> gboolean>,
1270    pub remove_element: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement) -> gboolean>,
1271    pub handle_message: Option<unsafe extern "C" fn(*mut GstBin, *mut GstMessage)>,
1272    pub do_latency: Option<unsafe extern "C" fn(*mut GstBin) -> gboolean>,
1273    pub deep_element_added: Option<unsafe extern "C" fn(*mut GstBin, *mut GstBin, *mut GstElement)>,
1274    pub deep_element_removed:
1275        Option<unsafe extern "C" fn(*mut GstBin, *mut GstBin, *mut GstElement)>,
1276    pub _gst_reserved: [gpointer; 2],
1277}
1278
1279impl ::std::fmt::Debug for GstBinClass {
1280    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1281        f.debug_struct(&format!("GstBinClass @ {self:p}"))
1282            .field("parent_class", &self.parent_class)
1283            .field("element_added", &self.element_added)
1284            .field("element_removed", &self.element_removed)
1285            .field("add_element", &self.add_element)
1286            .field("remove_element", &self.remove_element)
1287            .field("handle_message", &self.handle_message)
1288            .field("do_latency", &self.do_latency)
1289            .field("deep_element_added", &self.deep_element_added)
1290            .field("deep_element_removed", &self.deep_element_removed)
1291            .finish()
1292    }
1293}
1294
1295#[repr(C)]
1296#[allow(dead_code)]
1297pub struct _GstBinPrivate {
1298    _data: [u8; 0],
1299    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1300}
1301
1302pub type GstBinPrivate = _GstBinPrivate;
1303
1304#[derive(Copy, Clone)]
1305#[repr(C)]
1306pub struct GstBuffer {
1307    pub mini_object: GstMiniObject,
1308    pub pool: *mut GstBufferPool,
1309    pub pts: GstClockTime,
1310    pub dts: GstClockTime,
1311    pub duration: GstClockTime,
1312    pub offset: u64,
1313    pub offset_end: u64,
1314}
1315
1316impl ::std::fmt::Debug for GstBuffer {
1317    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1318        f.debug_struct(&format!("GstBuffer @ {self:p}"))
1319            .field("mini_object", &self.mini_object)
1320            .field("pool", &self.pool)
1321            .field("pts", &self.pts)
1322            .field("dts", &self.dts)
1323            .field("duration", &self.duration)
1324            .field("offset", &self.offset)
1325            .field("offset_end", &self.offset_end)
1326            .finish()
1327    }
1328}
1329
1330#[repr(C)]
1331#[allow(dead_code)]
1332pub struct GstBufferList {
1333    _data: [u8; 0],
1334    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1335}
1336
1337impl ::std::fmt::Debug for GstBufferList {
1338    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1339        f.debug_struct(&format!("GstBufferList @ {self:p}"))
1340            .finish()
1341    }
1342}
1343
1344#[derive(Copy, Clone)]
1345#[repr(C)]
1346pub struct GstBufferPoolAcquireParams {
1347    pub format: GstFormat,
1348    pub start: i64,
1349    pub stop: i64,
1350    pub flags: GstBufferPoolAcquireFlags,
1351    pub _gst_reserved: [gpointer; 4],
1352}
1353
1354impl ::std::fmt::Debug for GstBufferPoolAcquireParams {
1355    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1356        f.debug_struct(&format!("GstBufferPoolAcquireParams @ {self:p}"))
1357            .field("format", &self.format)
1358            .field("start", &self.start)
1359            .field("stop", &self.stop)
1360            .field("flags", &self.flags)
1361            .finish()
1362    }
1363}
1364
1365#[derive(Copy, Clone)]
1366#[repr(C)]
1367pub struct GstBufferPoolClass {
1368    pub object_class: GstObjectClass,
1369    pub get_options: Option<unsafe extern "C" fn(*mut GstBufferPool) -> *mut *const c_char>,
1370    pub set_config: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstStructure) -> gboolean>,
1371    pub start: Option<unsafe extern "C" fn(*mut GstBufferPool) -> gboolean>,
1372    pub stop: Option<unsafe extern "C" fn(*mut GstBufferPool) -> gboolean>,
1373    pub acquire_buffer: Option<
1374        unsafe extern "C" fn(
1375            *mut GstBufferPool,
1376            *mut *mut GstBuffer,
1377            *mut GstBufferPoolAcquireParams,
1378        ) -> GstFlowReturn,
1379    >,
1380    pub alloc_buffer: Option<
1381        unsafe extern "C" fn(
1382            *mut GstBufferPool,
1383            *mut *mut GstBuffer,
1384            *mut GstBufferPoolAcquireParams,
1385        ) -> GstFlowReturn,
1386    >,
1387    pub reset_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1388    pub release_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1389    pub free_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1390    pub flush_start: Option<unsafe extern "C" fn(*mut GstBufferPool)>,
1391    pub flush_stop: Option<unsafe extern "C" fn(*mut GstBufferPool)>,
1392    pub _gst_reserved: [gpointer; 2],
1393}
1394
1395impl ::std::fmt::Debug for GstBufferPoolClass {
1396    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1397        f.debug_struct(&format!("GstBufferPoolClass @ {self:p}"))
1398            .field("object_class", &self.object_class)
1399            .field("get_options", &self.get_options)
1400            .field("set_config", &self.set_config)
1401            .field("start", &self.start)
1402            .field("stop", &self.stop)
1403            .field("acquire_buffer", &self.acquire_buffer)
1404            .field("alloc_buffer", &self.alloc_buffer)
1405            .field("reset_buffer", &self.reset_buffer)
1406            .field("release_buffer", &self.release_buffer)
1407            .field("free_buffer", &self.free_buffer)
1408            .field("flush_start", &self.flush_start)
1409            .field("flush_stop", &self.flush_stop)
1410            .finish()
1411    }
1412}
1413
1414#[repr(C)]
1415#[allow(dead_code)]
1416pub struct _GstBufferPoolPrivate {
1417    _data: [u8; 0],
1418    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1419}
1420
1421pub type GstBufferPoolPrivate = _GstBufferPoolPrivate;
1422
1423#[derive(Copy, Clone)]
1424#[repr(C)]
1425pub struct GstBusClass {
1426    pub parent_class: GstObjectClass,
1427    pub message: Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage)>,
1428    pub sync_message: Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage)>,
1429    pub _gst_reserved: [gpointer; 4],
1430}
1431
1432impl ::std::fmt::Debug for GstBusClass {
1433    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1434        f.debug_struct(&format!("GstBusClass @ {self:p}"))
1435            .field("parent_class", &self.parent_class)
1436            .field("message", &self.message)
1437            .field("sync_message", &self.sync_message)
1438            .finish()
1439    }
1440}
1441
1442#[repr(C)]
1443#[allow(dead_code)]
1444pub struct _GstBusPrivate {
1445    _data: [u8; 0],
1446    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1447}
1448
1449pub type GstBusPrivate = _GstBusPrivate;
1450
1451#[derive(Copy, Clone)]
1452#[repr(C)]
1453pub struct GstByteArrayInterface {
1454    pub data: *mut u8,
1455    pub len: size_t,
1456    pub resize: Option<unsafe extern "C" fn(*mut GstByteArrayInterface, size_t) -> gboolean>,
1457    pub _gst_reserved: [gpointer; 4],
1458}
1459
1460impl ::std::fmt::Debug for GstByteArrayInterface {
1461    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1462        f.debug_struct(&format!("GstByteArrayInterface @ {self:p}"))
1463            .field("data", &self.data)
1464            .field("len", &self.len)
1465            .field("resize", &self.resize)
1466            .finish()
1467    }
1468}
1469
1470#[derive(Copy, Clone)]
1471#[repr(C)]
1472pub struct GstCaps {
1473    pub mini_object: GstMiniObject,
1474}
1475
1476impl ::std::fmt::Debug for GstCaps {
1477    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1478        f.debug_struct(&format!("GstCaps @ {self:p}"))
1479            .field("mini_object", &self.mini_object)
1480            .finish()
1481    }
1482}
1483
1484#[repr(C)]
1485#[allow(dead_code)]
1486pub struct GstCapsFeatures {
1487    _data: [u8; 0],
1488    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1489}
1490
1491impl ::std::fmt::Debug for GstCapsFeatures {
1492    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1493        f.debug_struct(&format!("GstCapsFeatures @ {self:p}"))
1494            .finish()
1495    }
1496}
1497
1498#[derive(Copy, Clone)]
1499#[repr(C)]
1500pub struct GstChildProxyInterface {
1501    pub parent: gobject::GTypeInterface,
1502    pub get_child_by_name:
1503        Option<unsafe extern "C" fn(*mut GstChildProxy, *const c_char) -> *mut gobject::GObject>,
1504    pub get_child_by_index:
1505        Option<unsafe extern "C" fn(*mut GstChildProxy, c_uint) -> *mut gobject::GObject>,
1506    pub get_children_count: Option<unsafe extern "C" fn(*mut GstChildProxy) -> c_uint>,
1507    pub child_added:
1508        Option<unsafe extern "C" fn(*mut GstChildProxy, *mut gobject::GObject, *const c_char)>,
1509    pub child_removed:
1510        Option<unsafe extern "C" fn(*mut GstChildProxy, *mut gobject::GObject, *const c_char)>,
1511    pub _gst_reserved: [gpointer; 4],
1512}
1513
1514impl ::std::fmt::Debug for GstChildProxyInterface {
1515    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1516        f.debug_struct(&format!("GstChildProxyInterface @ {self:p}"))
1517            .field("parent", &self.parent)
1518            .field("get_child_by_name", &self.get_child_by_name)
1519            .field("get_child_by_index", &self.get_child_by_index)
1520            .field("get_children_count", &self.get_children_count)
1521            .field("child_added", &self.child_added)
1522            .field("child_removed", &self.child_removed)
1523            .finish()
1524    }
1525}
1526
1527#[derive(Copy, Clone)]
1528#[repr(C)]
1529pub struct GstClockClass {
1530    pub parent_class: GstObjectClass,
1531    pub change_resolution:
1532        Option<unsafe extern "C" fn(*mut GstClock, GstClockTime, GstClockTime) -> GstClockTime>,
1533    pub get_resolution: Option<unsafe extern "C" fn(*mut GstClock) -> GstClockTime>,
1534    pub get_internal_time: Option<unsafe extern "C" fn(*mut GstClock) -> GstClockTime>,
1535    pub wait: Option<
1536        unsafe extern "C" fn(
1537            *mut GstClock,
1538            *mut GstClockEntry,
1539            *mut GstClockTimeDiff,
1540        ) -> GstClockReturn,
1541    >,
1542    pub wait_async:
1543        Option<unsafe extern "C" fn(*mut GstClock, *mut GstClockEntry) -> GstClockReturn>,
1544    pub unschedule: Option<unsafe extern "C" fn(*mut GstClock, *mut GstClockEntry)>,
1545    pub _gst_reserved: [gpointer; 4],
1546}
1547
1548impl ::std::fmt::Debug for GstClockClass {
1549    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1550        f.debug_struct(&format!("GstClockClass @ {self:p}"))
1551            .field("parent_class", &self.parent_class)
1552            .field("change_resolution", &self.change_resolution)
1553            .field("get_resolution", &self.get_resolution)
1554            .field("get_internal_time", &self.get_internal_time)
1555            .field("wait", &self.wait)
1556            .field("wait_async", &self.wait_async)
1557            .field("unschedule", &self.unschedule)
1558            .finish()
1559    }
1560}
1561
1562#[derive(Copy, Clone)]
1563#[repr(C)]
1564pub struct GstClockEntry {
1565    pub refcount: c_int,
1566    pub clock: *mut GstClock,
1567    pub type_: GstClockEntryType,
1568    pub time: GstClockTime,
1569    pub interval: GstClockTime,
1570    pub status: GstClockReturn,
1571    pub func: GstClockCallback,
1572    pub user_data: gpointer,
1573    pub destroy_data: glib::GDestroyNotify,
1574    pub unscheduled: gboolean,
1575    pub woken_up: gboolean,
1576    pub _gst_reserved: [gpointer; 4],
1577}
1578
1579impl ::std::fmt::Debug for GstClockEntry {
1580    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1581        f.debug_struct(&format!("GstClockEntry @ {self:p}"))
1582            .field("refcount", &self.refcount)
1583            .finish()
1584    }
1585}
1586
1587#[repr(C)]
1588#[allow(dead_code)]
1589pub struct _GstClockPrivate {
1590    _data: [u8; 0],
1591    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1592}
1593
1594pub type GstClockPrivate = _GstClockPrivate;
1595
1596#[repr(C)]
1597#[allow(dead_code)]
1598pub struct GstContext {
1599    _data: [u8; 0],
1600    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1601}
1602
1603impl ::std::fmt::Debug for GstContext {
1604    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1605        f.debug_struct(&format!("GstContext @ {self:p}")).finish()
1606    }
1607}
1608
1609#[derive(Copy, Clone)]
1610#[repr(C)]
1611pub struct GstControlBindingClass {
1612    pub parent_class: GstObjectClass,
1613    pub sync_values: Option<
1614        unsafe extern "C" fn(
1615            *mut GstControlBinding,
1616            *mut GstObject,
1617            GstClockTime,
1618            GstClockTime,
1619        ) -> gboolean,
1620    >,
1621    pub get_value:
1622        Option<unsafe extern "C" fn(*mut GstControlBinding, GstClockTime) -> *mut gobject::GValue>,
1623    pub get_value_array: Option<
1624        unsafe extern "C" fn(
1625            *mut GstControlBinding,
1626            GstClockTime,
1627            GstClockTime,
1628            c_uint,
1629            gpointer,
1630        ) -> gboolean,
1631    >,
1632    pub get_g_value_array: Option<
1633        unsafe extern "C" fn(
1634            *mut GstControlBinding,
1635            GstClockTime,
1636            GstClockTime,
1637            c_uint,
1638            *mut gobject::GValue,
1639        ) -> gboolean,
1640    >,
1641    pub _gst_reserved: [gpointer; 4],
1642}
1643
1644impl ::std::fmt::Debug for GstControlBindingClass {
1645    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1646        f.debug_struct(&format!("GstControlBindingClass @ {self:p}"))
1647            .field("parent_class", &self.parent_class)
1648            .field("sync_values", &self.sync_values)
1649            .field("get_value", &self.get_value)
1650            .field("get_value_array", &self.get_value_array)
1651            .field("get_g_value_array", &self.get_g_value_array)
1652            .finish()
1653    }
1654}
1655
1656#[repr(C)]
1657#[allow(dead_code)]
1658pub struct _GstControlBindingPrivate {
1659    _data: [u8; 0],
1660    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1661}
1662
1663pub type GstControlBindingPrivate = _GstControlBindingPrivate;
1664
1665#[derive(Copy, Clone)]
1666#[repr(C)]
1667pub struct GstControlBinding_ABI_abi {
1668    pub priv_: *mut GstControlBindingPrivate,
1669}
1670
1671impl ::std::fmt::Debug for GstControlBinding_ABI_abi {
1672    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1673        f.debug_struct(&format!("GstControlBinding_ABI_abi @ {self:p}"))
1674            .finish()
1675    }
1676}
1677
1678#[derive(Copy, Clone)]
1679#[repr(C)]
1680pub struct GstControlSourceClass {
1681    pub parent_class: GstObjectClass,
1682    pub _gst_reserved: [gpointer; 4],
1683}
1684
1685impl ::std::fmt::Debug for GstControlSourceClass {
1686    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1687        f.debug_struct(&format!("GstControlSourceClass @ {self:p}"))
1688            .field("parent_class", &self.parent_class)
1689            .finish()
1690    }
1691}
1692
1693#[derive(Copy, Clone)]
1694#[repr(C)]
1695pub struct GstCustomMeta {
1696    pub meta: GstMeta,
1697    pub structure: *mut GstStructure,
1698}
1699
1700impl ::std::fmt::Debug for GstCustomMeta {
1701    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1702        f.debug_struct(&format!("GstCustomMeta @ {self:p}"))
1703            .field("meta", &self.meta)
1704            .field("structure", &self.structure)
1705            .finish()
1706    }
1707}
1708
1709#[repr(C)]
1710#[allow(dead_code)]
1711pub struct GstDateTime {
1712    _data: [u8; 0],
1713    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1714}
1715
1716impl ::std::fmt::Debug for GstDateTime {
1717    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1718        f.debug_struct(&format!("GstDateTime @ {self:p}")).finish()
1719    }
1720}
1721
1722#[derive(Copy, Clone)]
1723#[repr(C)]
1724pub struct GstDebugCategory {
1725    pub threshold: c_int,
1726    pub color: c_uint,
1727    pub name: *const c_char,
1728    pub description: *const c_char,
1729}
1730
1731impl ::std::fmt::Debug for GstDebugCategory {
1732    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1733        f.debug_struct(&format!("GstDebugCategory @ {self:p}"))
1734            .finish()
1735    }
1736}
1737
1738#[repr(C)]
1739#[allow(dead_code)]
1740pub struct _GstDebugMessage {
1741    _data: [u8; 0],
1742    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1743}
1744
1745pub type GstDebugMessage = _GstDebugMessage;
1746
1747#[derive(Copy, Clone)]
1748#[repr(C)]
1749pub struct GstDeviceClass {
1750    pub parent_class: GstObjectClass,
1751    pub create_element:
1752        Option<unsafe extern "C" fn(*mut GstDevice, *const c_char) -> *mut GstElement>,
1753    pub reconfigure_element:
1754        Option<unsafe extern "C" fn(*mut GstDevice, *mut GstElement) -> gboolean>,
1755    pub _gst_reserved: [gpointer; 4],
1756}
1757
1758impl ::std::fmt::Debug for GstDeviceClass {
1759    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1760        f.debug_struct(&format!("GstDeviceClass @ {self:p}"))
1761            .field("parent_class", &self.parent_class)
1762            .field("create_element", &self.create_element)
1763            .field("reconfigure_element", &self.reconfigure_element)
1764            .finish()
1765    }
1766}
1767
1768#[derive(Copy, Clone)]
1769#[repr(C)]
1770pub struct GstDeviceMonitorClass {
1771    pub parent_class: GstObjectClass,
1772    pub _gst_reserved: [gpointer; 4],
1773}
1774
1775impl ::std::fmt::Debug for GstDeviceMonitorClass {
1776    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1777        f.debug_struct(&format!("GstDeviceMonitorClass @ {self:p}"))
1778            .field("parent_class", &self.parent_class)
1779            .finish()
1780    }
1781}
1782
1783#[repr(C)]
1784#[allow(dead_code)]
1785pub struct _GstDeviceMonitorPrivate {
1786    _data: [u8; 0],
1787    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1788}
1789
1790pub type GstDeviceMonitorPrivate = _GstDeviceMonitorPrivate;
1791
1792#[repr(C)]
1793#[allow(dead_code)]
1794pub struct _GstDevicePrivate {
1795    _data: [u8; 0],
1796    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1797}
1798
1799pub type GstDevicePrivate = _GstDevicePrivate;
1800
1801#[derive(Copy, Clone)]
1802#[repr(C)]
1803pub struct GstDeviceProviderClass {
1804    pub parent_class: GstObjectClass,
1805    pub factory: *mut GstDeviceProviderFactory,
1806    pub probe: Option<unsafe extern "C" fn(*mut GstDeviceProvider) -> *mut glib::GList>,
1807    pub start: Option<unsafe extern "C" fn(*mut GstDeviceProvider) -> gboolean>,
1808    pub stop: Option<unsafe extern "C" fn(*mut GstDeviceProvider)>,
1809    pub metadata: gpointer,
1810    pub _gst_reserved: [gpointer; 4],
1811}
1812
1813impl ::std::fmt::Debug for GstDeviceProviderClass {
1814    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1815        f.debug_struct(&format!("GstDeviceProviderClass @ {self:p}"))
1816            .field("parent_class", &self.parent_class)
1817            .field("factory", &self.factory)
1818            .field("probe", &self.probe)
1819            .field("start", &self.start)
1820            .field("stop", &self.stop)
1821            .finish()
1822    }
1823}
1824
1825#[repr(C)]
1826#[allow(dead_code)]
1827pub struct _GstDeviceProviderFactoryClass {
1828    _data: [u8; 0],
1829    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1830}
1831
1832pub type GstDeviceProviderFactoryClass = _GstDeviceProviderFactoryClass;
1833
1834#[repr(C)]
1835#[allow(dead_code)]
1836pub struct _GstDeviceProviderPrivate {
1837    _data: [u8; 0],
1838    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1839}
1840
1841pub type GstDeviceProviderPrivate = _GstDeviceProviderPrivate;
1842
1843#[repr(C)]
1844#[allow(dead_code)]
1845pub struct _GstDynamicTypeFactoryClass {
1846    _data: [u8; 0],
1847    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1848}
1849
1850pub type GstDynamicTypeFactoryClass = _GstDynamicTypeFactoryClass;
1851
1852#[derive(Copy, Clone)]
1853#[repr(C)]
1854pub struct GstElementClass {
1855    pub parent_class: GstObjectClass,
1856    pub metadata: gpointer,
1857    pub elementfactory: *mut GstElementFactory,
1858    pub padtemplates: *mut glib::GList,
1859    pub numpadtemplates: c_int,
1860    pub pad_templ_cookie: u32,
1861    pub pad_added: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1862    pub pad_removed: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1863    pub no_more_pads: Option<unsafe extern "C" fn(*mut GstElement)>,
1864    pub request_new_pad: Option<
1865        unsafe extern "C" fn(
1866            *mut GstElement,
1867            *mut GstPadTemplate,
1868            *const c_char,
1869            *const GstCaps,
1870        ) -> *mut GstPad,
1871    >,
1872    pub release_pad: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1873    pub get_state: Option<
1874        unsafe extern "C" fn(
1875            *mut GstElement,
1876            *mut GstState,
1877            *mut GstState,
1878            GstClockTime,
1879        ) -> GstStateChangeReturn,
1880    >,
1881    pub set_state: Option<unsafe extern "C" fn(*mut GstElement, GstState) -> GstStateChangeReturn>,
1882    pub change_state:
1883        Option<unsafe extern "C" fn(*mut GstElement, GstStateChange) -> GstStateChangeReturn>,
1884    pub state_changed: Option<unsafe extern "C" fn(*mut GstElement, GstState, GstState, GstState)>,
1885    pub set_bus: Option<unsafe extern "C" fn(*mut GstElement, *mut GstBus)>,
1886    pub provide_clock: Option<unsafe extern "C" fn(*mut GstElement) -> *mut GstClock>,
1887    pub set_clock: Option<unsafe extern "C" fn(*mut GstElement, *mut GstClock) -> gboolean>,
1888    pub send_event: Option<unsafe extern "C" fn(*mut GstElement, *mut GstEvent) -> gboolean>,
1889    pub query: Option<unsafe extern "C" fn(*mut GstElement, *mut GstQuery) -> gboolean>,
1890    pub post_message: Option<unsafe extern "C" fn(*mut GstElement, *mut GstMessage) -> gboolean>,
1891    pub set_context: Option<unsafe extern "C" fn(*mut GstElement, *mut GstContext)>,
1892    pub _gst_reserved: [gpointer; 18],
1893}
1894
1895impl ::std::fmt::Debug for GstElementClass {
1896    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1897        f.debug_struct(&format!("GstElementClass @ {self:p}"))
1898            .field("parent_class", &self.parent_class)
1899            .field("metadata", &self.metadata)
1900            .field("elementfactory", &self.elementfactory)
1901            .field("padtemplates", &self.padtemplates)
1902            .field("numpadtemplates", &self.numpadtemplates)
1903            .field("pad_templ_cookie", &self.pad_templ_cookie)
1904            .field("pad_added", &self.pad_added)
1905            .field("pad_removed", &self.pad_removed)
1906            .field("no_more_pads", &self.no_more_pads)
1907            .field("request_new_pad", &self.request_new_pad)
1908            .field("release_pad", &self.release_pad)
1909            .field("get_state", &self.get_state)
1910            .field("set_state", &self.set_state)
1911            .field("change_state", &self.change_state)
1912            .field("state_changed", &self.state_changed)
1913            .field("set_bus", &self.set_bus)
1914            .field("provide_clock", &self.provide_clock)
1915            .field("set_clock", &self.set_clock)
1916            .field("send_event", &self.send_event)
1917            .field("query", &self.query)
1918            .field("post_message", &self.post_message)
1919            .field("set_context", &self.set_context)
1920            .finish()
1921    }
1922}
1923
1924#[repr(C)]
1925#[allow(dead_code)]
1926pub struct _GstElementFactoryClass {
1927    _data: [u8; 0],
1928    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1929}
1930
1931pub type GstElementFactoryClass = _GstElementFactoryClass;
1932
1933#[derive(Copy, Clone)]
1934#[repr(C)]
1935pub struct GstEvent {
1936    pub mini_object: GstMiniObject,
1937    pub type_: GstEventType,
1938    pub timestamp: u64,
1939    pub seqnum: u32,
1940}
1941
1942impl ::std::fmt::Debug for GstEvent {
1943    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1944        f.debug_struct(&format!("GstEvent @ {self:p}"))
1945            .field("mini_object", &self.mini_object)
1946            .field("type_", &self.type_)
1947            .field("timestamp", &self.timestamp)
1948            .field("seqnum", &self.seqnum)
1949            .finish()
1950    }
1951}
1952
1953#[derive(Copy, Clone)]
1954#[repr(C)]
1955pub struct GstFormatDefinition {
1956    pub value: GstFormat,
1957    pub nick: *const c_char,
1958    pub description: *const c_char,
1959    pub quark: glib::GQuark,
1960}
1961
1962impl ::std::fmt::Debug for GstFormatDefinition {
1963    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1964        f.debug_struct(&format!("GstFormatDefinition @ {self:p}"))
1965            .field("value", &self.value)
1966            .field("nick", &self.nick)
1967            .field("description", &self.description)
1968            .field("quark", &self.quark)
1969            .finish()
1970    }
1971}
1972
1973#[derive(Copy, Clone)]
1974#[repr(C)]
1975pub struct GstGhostPadClass {
1976    pub parent_class: GstProxyPadClass,
1977    pub _gst_reserved: [gpointer; 4],
1978}
1979
1980impl ::std::fmt::Debug for GstGhostPadClass {
1981    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1982        f.debug_struct(&format!("GstGhostPadClass @ {self:p}"))
1983            .field("parent_class", &self.parent_class)
1984            .finish()
1985    }
1986}
1987
1988#[repr(C)]
1989#[allow(dead_code)]
1990pub struct _GstGhostPadPrivate {
1991    _data: [u8; 0],
1992    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1993}
1994
1995pub type GstGhostPadPrivate = _GstGhostPadPrivate;
1996
1997#[derive(Copy, Clone)]
1998#[repr(C)]
1999pub struct GstIdStr {
2000    pub pointer: gpointer,
2001    pub padding: [u8; 8],
2002}
2003
2004impl ::std::fmt::Debug for GstIdStr {
2005    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2006        f.debug_struct(&format!("GstIdStr @ {self:p}")).finish()
2007    }
2008}
2009
2010#[derive(Copy, Clone)]
2011#[repr(C)]
2012pub struct GstIterator {
2013    pub copy: GstIteratorCopyFunction,
2014    pub next: GstIteratorNextFunction,
2015    pub item: GstIteratorItemFunction,
2016    pub resync: GstIteratorResyncFunction,
2017    pub free: GstIteratorFreeFunction,
2018    pub pushed: *mut GstIterator,
2019    pub type_: GType,
2020    pub lock: *mut glib::GMutex,
2021    pub cookie: u32,
2022    pub master_cookie: *mut u32,
2023    pub size: c_uint,
2024    pub _gst_reserved: [gpointer; 4],
2025}
2026
2027impl ::std::fmt::Debug for GstIterator {
2028    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2029        f.debug_struct(&format!("GstIterator @ {self:p}"))
2030            .field("copy", &self.copy)
2031            .field("next", &self.next)
2032            .field("item", &self.item)
2033            .field("resync", &self.resync)
2034            .field("free", &self.free)
2035            .field("pushed", &self.pushed)
2036            .field("type_", &self.type_)
2037            .field("lock", &self.lock)
2038            .field("cookie", &self.cookie)
2039            .field("master_cookie", &self.master_cookie)
2040            .field("size", &self.size)
2041            .finish()
2042    }
2043}
2044
2045#[derive(Copy, Clone)]
2046#[repr(C)]
2047pub struct GstMapInfo {
2048    pub memory: *mut GstMemory,
2049    pub flags: GstMapFlags,
2050    pub data: *mut u8,
2051    pub size: size_t,
2052    pub maxsize: size_t,
2053    pub user_data: [gpointer; 4],
2054    pub _gst_reserved: [gpointer; 4],
2055}
2056
2057impl ::std::fmt::Debug for GstMapInfo {
2058    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2059        f.debug_struct(&format!("GstMapInfo @ {self:p}"))
2060            .field("memory", &self.memory)
2061            .field("flags", &self.flags)
2062            .field("data", &self.data)
2063            .field("size", &self.size)
2064            .field("maxsize", &self.maxsize)
2065            .field("user_data", &self.user_data)
2066            .finish()
2067    }
2068}
2069
2070#[derive(Copy, Clone)]
2071#[repr(C)]
2072pub struct GstMemory {
2073    pub mini_object: GstMiniObject,
2074    pub allocator: *mut GstAllocator,
2075    pub parent: *mut GstMemory,
2076    pub maxsize: size_t,
2077    pub align: size_t,
2078    pub offset: size_t,
2079    pub size: size_t,
2080}
2081
2082impl ::std::fmt::Debug for GstMemory {
2083    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2084        f.debug_struct(&format!("GstMemory @ {self:p}"))
2085            .field("mini_object", &self.mini_object)
2086            .field("allocator", &self.allocator)
2087            .field("parent", &self.parent)
2088            .field("maxsize", &self.maxsize)
2089            .field("align", &self.align)
2090            .field("offset", &self.offset)
2091            .field("size", &self.size)
2092            .finish()
2093    }
2094}
2095
2096#[derive(Copy, Clone)]
2097#[repr(C)]
2098pub struct GstMessage {
2099    pub mini_object: GstMiniObject,
2100    pub type_: GstMessageType,
2101    pub timestamp: u64,
2102    pub src: *mut GstObject,
2103    pub seqnum: u32,
2104    pub lock: glib::GMutex,
2105    pub cond: glib::GCond,
2106}
2107
2108impl ::std::fmt::Debug for GstMessage {
2109    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2110        f.debug_struct(&format!("GstMessage @ {self:p}"))
2111            .field("mini_object", &self.mini_object)
2112            .field("type_", &self.type_)
2113            .field("timestamp", &self.timestamp)
2114            .field("src", &self.src)
2115            .field("seqnum", &self.seqnum)
2116            .finish()
2117    }
2118}
2119
2120#[derive(Copy, Clone)]
2121#[repr(C)]
2122pub struct GstMeta {
2123    pub flags: GstMetaFlags,
2124    pub info: *const GstMetaInfo,
2125}
2126
2127impl ::std::fmt::Debug for GstMeta {
2128    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2129        f.debug_struct(&format!("GstMeta @ {self:p}"))
2130            .field("flags", &self.flags)
2131            .field("info", &self.info)
2132            .finish()
2133    }
2134}
2135
2136#[derive(Copy, Clone)]
2137#[repr(C)]
2138pub struct GstMetaInfo {
2139    pub api: GType,
2140    pub type_: GType,
2141    pub size: size_t,
2142    pub init_func: GstMetaInitFunction,
2143    pub free_func: GstMetaFreeFunction,
2144    pub transform_func: GstMetaTransformFunction,
2145    pub serialize_func: GstMetaSerializeFunction,
2146    pub deserialize_func: GstMetaDeserializeFunction,
2147    pub clear_func: GstMetaClearFunction,
2148}
2149
2150impl ::std::fmt::Debug for GstMetaInfo {
2151    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2152        f.debug_struct(&format!("GstMetaInfo @ {self:p}"))
2153            .field("api", &self.api)
2154            .field("type_", &self.type_)
2155            .field("size", &self.size)
2156            .field("init_func", &self.init_func)
2157            .field("free_func", &self.free_func)
2158            .field("transform_func", &self.transform_func)
2159            .field("serialize_func", &self.serialize_func)
2160            .field("deserialize_func", &self.deserialize_func)
2161            .field("clear_func", &self.clear_func)
2162            .finish()
2163    }
2164}
2165
2166#[derive(Copy, Clone)]
2167#[repr(C)]
2168pub struct GstMetaTransformCopy {
2169    pub region: gboolean,
2170    pub offset: size_t,
2171    pub size: size_t,
2172}
2173
2174impl ::std::fmt::Debug for GstMetaTransformCopy {
2175    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2176        f.debug_struct(&format!("GstMetaTransformCopy @ {self:p}"))
2177            .field("region", &self.region)
2178            .field("offset", &self.offset)
2179            .field("size", &self.size)
2180            .finish()
2181    }
2182}
2183
2184#[derive(Copy, Clone)]
2185#[repr(C)]
2186pub struct GstMiniObject {
2187    pub type_: GType,
2188    pub refcount: c_int,
2189    pub lockstate: c_int,
2190    pub flags: c_uint,
2191    pub copy: GstMiniObjectCopyFunction,
2192    pub dispose: GstMiniObjectDisposeFunction,
2193    pub free: GstMiniObjectFreeFunction,
2194    pub priv_uint: c_uint,
2195    pub priv_pointer: gpointer,
2196}
2197
2198impl ::std::fmt::Debug for GstMiniObject {
2199    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2200        f.debug_struct(&format!("GstMiniObject @ {self:p}"))
2201            .field("type_", &self.type_)
2202            .field("refcount", &self.refcount)
2203            .field("lockstate", &self.lockstate)
2204            .field("flags", &self.flags)
2205            .field("copy", &self.copy)
2206            .field("dispose", &self.dispose)
2207            .field("free", &self.free)
2208            .finish()
2209    }
2210}
2211
2212#[derive(Copy, Clone)]
2213#[repr(C)]
2214pub struct GstObjectClass {
2215    pub parent_class: gobject::GInitiallyUnownedClass,
2216    pub path_string_separator: *const c_char,
2217    pub deep_notify:
2218        Option<unsafe extern "C" fn(*mut GstObject, *mut GstObject, *mut gobject::GParamSpec)>,
2219    pub _gst_reserved: [gpointer; 4],
2220}
2221
2222impl ::std::fmt::Debug for GstObjectClass {
2223    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2224        f.debug_struct(&format!("GstObjectClass @ {self:p}"))
2225            .field("parent_class", &self.parent_class)
2226            .field("path_string_separator", &self.path_string_separator)
2227            .field("deep_notify", &self.deep_notify)
2228            .finish()
2229    }
2230}
2231
2232#[derive(Copy, Clone)]
2233#[repr(C)]
2234pub struct GstPadClass {
2235    pub parent_class: GstObjectClass,
2236    pub linked: Option<unsafe extern "C" fn(*mut GstPad, *mut GstPad)>,
2237    pub unlinked: Option<unsafe extern "C" fn(*mut GstPad, *mut GstPad)>,
2238    pub _gst_reserved: [gpointer; 4],
2239}
2240
2241impl ::std::fmt::Debug for GstPadClass {
2242    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2243        f.debug_struct(&format!("GstPadClass @ {self:p}"))
2244            .field("parent_class", &self.parent_class)
2245            .field("linked", &self.linked)
2246            .field("unlinked", &self.unlinked)
2247            .finish()
2248    }
2249}
2250
2251#[repr(C)]
2252#[allow(dead_code)]
2253pub struct _GstPadPrivate {
2254    _data: [u8; 0],
2255    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2256}
2257
2258pub type GstPadPrivate = _GstPadPrivate;
2259
2260#[derive(Copy, Clone)]
2261#[repr(C)]
2262pub struct GstPadProbeInfo {
2263    pub type_: GstPadProbeType,
2264    pub id: c_ulong,
2265    pub data: gpointer,
2266    pub offset: u64,
2267    pub size: c_uint,
2268    pub ABI: GstPadProbeInfo_ABI,
2269}
2270
2271impl ::std::fmt::Debug for GstPadProbeInfo {
2272    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2273        f.debug_struct(&format!("GstPadProbeInfo @ {self:p}"))
2274            .field("type_", &self.type_)
2275            .field("id", &self.id)
2276            .field("data", &self.data)
2277            .field("offset", &self.offset)
2278            .field("size", &self.size)
2279            .field("ABI", &self.ABI)
2280            .finish()
2281    }
2282}
2283
2284#[derive(Copy, Clone)]
2285#[repr(C)]
2286pub struct GstPadProbeInfo_ABI_abi {
2287    pub flow_ret: GstFlowReturn,
2288}
2289
2290impl ::std::fmt::Debug for GstPadProbeInfo_ABI_abi {
2291    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2292        f.debug_struct(&format!("GstPadProbeInfo_ABI_abi @ {self:p}"))
2293            .field("flow_ret", &self.flow_ret)
2294            .finish()
2295    }
2296}
2297
2298#[derive(Copy, Clone)]
2299#[repr(C)]
2300pub struct GstPadTemplateClass {
2301    pub parent_class: GstObjectClass,
2302    pub pad_created: Option<unsafe extern "C" fn(*mut GstPadTemplate, *mut GstPad)>,
2303    pub _gst_reserved: [gpointer; 4],
2304}
2305
2306impl ::std::fmt::Debug for GstPadTemplateClass {
2307    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2308        f.debug_struct(&format!("GstPadTemplateClass @ {self:p}"))
2309            .field("parent_class", &self.parent_class)
2310            .field("pad_created", &self.pad_created)
2311            .finish()
2312    }
2313}
2314
2315#[derive(Copy, Clone)]
2316#[repr(C)]
2317pub struct GstPadTemplate_ABI_abi {
2318    pub gtype: GType,
2319    pub documentation_caps: *mut GstCaps,
2320}
2321
2322impl ::std::fmt::Debug for GstPadTemplate_ABI_abi {
2323    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2324        f.debug_struct(&format!("GstPadTemplate_ABI_abi @ {self:p}"))
2325            .field("gtype", &self.gtype)
2326            .field("documentation_caps", &self.documentation_caps)
2327            .finish()
2328    }
2329}
2330
2331#[derive(Copy, Clone)]
2332#[repr(C)]
2333pub struct GstPad_ABI_abi {
2334    pub last_flowret: GstFlowReturn,
2335    pub eventfullfunc: GstPadEventFullFunction,
2336}
2337
2338impl ::std::fmt::Debug for GstPad_ABI_abi {
2339    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2340        f.debug_struct(&format!("GstPad_ABI_abi @ {self:p}"))
2341            .field("last_flowret", &self.last_flowret)
2342            .field("eventfullfunc", &self.eventfullfunc)
2343            .finish()
2344    }
2345}
2346
2347#[derive(Copy, Clone)]
2348#[repr(C)]
2349pub struct GstParamSpecArray {
2350    pub parent_instance: gobject::GParamSpec,
2351    pub element_spec: *mut gobject::GParamSpec,
2352}
2353
2354impl ::std::fmt::Debug for GstParamSpecArray {
2355    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2356        f.debug_struct(&format!("GstParamSpecArray @ {self:p}"))
2357            .field("parent_instance", &self.parent_instance)
2358            .field("element_spec", &self.element_spec)
2359            .finish()
2360    }
2361}
2362
2363#[derive(Copy, Clone)]
2364#[repr(C)]
2365pub struct GstParamSpecFraction {
2366    pub parent_instance: gobject::GParamSpec,
2367    pub min_num: c_int,
2368    pub min_den: c_int,
2369    pub max_num: c_int,
2370    pub max_den: c_int,
2371    pub def_num: c_int,
2372    pub def_den: c_int,
2373}
2374
2375impl ::std::fmt::Debug for GstParamSpecFraction {
2376    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2377        f.debug_struct(&format!("GstParamSpecFraction @ {self:p}"))
2378            .field("parent_instance", &self.parent_instance)
2379            .field("min_num", &self.min_num)
2380            .field("min_den", &self.min_den)
2381            .field("max_num", &self.max_num)
2382            .field("max_den", &self.max_den)
2383            .field("def_num", &self.def_num)
2384            .field("def_den", &self.def_den)
2385            .finish()
2386    }
2387}
2388
2389#[derive(Copy, Clone)]
2390#[repr(C)]
2391pub struct GstParentBufferMeta {
2392    pub parent: GstMeta,
2393    pub buffer: *mut GstBuffer,
2394}
2395
2396impl ::std::fmt::Debug for GstParentBufferMeta {
2397    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2398        f.debug_struct(&format!("GstParentBufferMeta @ {self:p}"))
2399            .field("parent", &self.parent)
2400            .field("buffer", &self.buffer)
2401            .finish()
2402    }
2403}
2404
2405#[repr(C)]
2406#[allow(dead_code)]
2407pub struct GstParseContext {
2408    _data: [u8; 0],
2409    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2410}
2411
2412impl ::std::fmt::Debug for GstParseContext {
2413    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2414        f.debug_struct(&format!("GstParseContext @ {self:p}"))
2415            .finish()
2416    }
2417}
2418
2419#[derive(Copy, Clone)]
2420#[repr(C)]
2421pub struct GstPipelineClass {
2422    pub parent_class: GstBinClass,
2423    pub _gst_reserved: [gpointer; 4],
2424}
2425
2426impl ::std::fmt::Debug for GstPipelineClass {
2427    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2428        f.debug_struct(&format!("GstPipelineClass @ {self:p}"))
2429            .field("parent_class", &self.parent_class)
2430            .finish()
2431    }
2432}
2433
2434#[repr(C)]
2435#[allow(dead_code)]
2436pub struct _GstPipelinePrivate {
2437    _data: [u8; 0],
2438    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2439}
2440
2441pub type GstPipelinePrivate = _GstPipelinePrivate;
2442
2443#[repr(C)]
2444#[allow(dead_code)]
2445pub struct _GstPluginClass {
2446    _data: [u8; 0],
2447    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2448}
2449
2450pub type GstPluginClass = _GstPluginClass;
2451
2452#[derive(Copy, Clone)]
2453#[repr(C)]
2454pub struct GstPluginDesc {
2455    pub major_version: c_int,
2456    pub minor_version: c_int,
2457    pub name: *const c_char,
2458    pub description: *const c_char,
2459    pub plugin_init: GstPluginInitFunc,
2460    pub version: *const c_char,
2461    pub license: *const c_char,
2462    pub source: *const c_char,
2463    pub package: *const c_char,
2464    pub origin: *const c_char,
2465    pub release_datetime: *const c_char,
2466    pub _gst_reserved: [gpointer; 4],
2467}
2468
2469impl ::std::fmt::Debug for GstPluginDesc {
2470    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2471        f.debug_struct(&format!("GstPluginDesc @ {self:p}"))
2472            .field("major_version", &self.major_version)
2473            .field("minor_version", &self.minor_version)
2474            .field("name", &self.name)
2475            .field("description", &self.description)
2476            .field("plugin_init", &self.plugin_init)
2477            .field("version", &self.version)
2478            .field("license", &self.license)
2479            .field("source", &self.source)
2480            .field("package", &self.package)
2481            .field("origin", &self.origin)
2482            .field("release_datetime", &self.release_datetime)
2483            .finish()
2484    }
2485}
2486
2487#[repr(C)]
2488#[allow(dead_code)]
2489pub struct _GstPluginFeatureClass {
2490    _data: [u8; 0],
2491    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2492}
2493
2494pub type GstPluginFeatureClass = _GstPluginFeatureClass;
2495
2496#[repr(C)]
2497#[allow(dead_code)]
2498pub struct _GstPoll {
2499    _data: [u8; 0],
2500    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2501}
2502
2503pub type GstPoll = _GstPoll;
2504
2505#[derive(Copy, Clone)]
2506#[repr(C)]
2507pub struct GstPollFD {
2508    pub fd: c_int,
2509    pub idx: c_int,
2510}
2511
2512impl ::std::fmt::Debug for GstPollFD {
2513    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2514        f.debug_struct(&format!("GstPollFD @ {self:p}"))
2515            .field("fd", &self.fd)
2516            .finish()
2517    }
2518}
2519
2520#[derive(Copy, Clone)]
2521#[repr(C)]
2522pub struct GstPresetInterface {
2523    pub parent: gobject::GTypeInterface,
2524    pub get_preset_names: Option<unsafe extern "C" fn(*mut GstPreset) -> *mut *mut c_char>,
2525    pub get_property_names: Option<unsafe extern "C" fn(*mut GstPreset) -> *mut *mut c_char>,
2526    pub load_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2527    pub save_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2528    pub rename_preset:
2529        Option<unsafe extern "C" fn(*mut GstPreset, *const c_char, *const c_char) -> gboolean>,
2530    pub delete_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2531    pub set_meta: Option<
2532        unsafe extern "C" fn(
2533            *mut GstPreset,
2534            *const c_char,
2535            *const c_char,
2536            *mut *mut c_char,
2537        ) -> gboolean,
2538    >,
2539    pub get_meta: Option<
2540        unsafe extern "C" fn(
2541            *mut GstPreset,
2542            *const c_char,
2543            *const c_char,
2544            *mut *mut c_char,
2545        ) -> gboolean,
2546    >,
2547    pub _gst_reserved: [gpointer; 4],
2548}
2549
2550impl ::std::fmt::Debug for GstPresetInterface {
2551    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2552        f.debug_struct(&format!("GstPresetInterface @ {self:p}"))
2553            .field("parent", &self.parent)
2554            .field("get_preset_names", &self.get_preset_names)
2555            .field("get_property_names", &self.get_property_names)
2556            .field("load_preset", &self.load_preset)
2557            .field("save_preset", &self.save_preset)
2558            .field("rename_preset", &self.rename_preset)
2559            .field("delete_preset", &self.delete_preset)
2560            .field("set_meta", &self.set_meta)
2561            .field("get_meta", &self.get_meta)
2562            .finish()
2563    }
2564}
2565
2566#[derive(Copy, Clone)]
2567#[repr(C)]
2568pub struct GstPromise {
2569    pub parent: GstMiniObject,
2570}
2571
2572impl ::std::fmt::Debug for GstPromise {
2573    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2574        f.debug_struct(&format!("GstPromise @ {self:p}"))
2575            .field("parent", &self.parent)
2576            .finish()
2577    }
2578}
2579
2580#[derive(Copy, Clone)]
2581#[repr(C)]
2582pub struct GstProtectionMeta {
2583    pub meta: GstMeta,
2584    pub info: *mut GstStructure,
2585}
2586
2587impl ::std::fmt::Debug for GstProtectionMeta {
2588    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2589        f.debug_struct(&format!("GstProtectionMeta @ {self:p}"))
2590            .field("meta", &self.meta)
2591            .field("info", &self.info)
2592            .finish()
2593    }
2594}
2595
2596#[derive(Copy, Clone)]
2597#[repr(C)]
2598pub struct GstProxyPadClass {
2599    pub parent_class: GstPadClass,
2600    pub _gst_reserved: [gpointer; 1],
2601}
2602
2603impl ::std::fmt::Debug for GstProxyPadClass {
2604    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2605        f.debug_struct(&format!("GstProxyPadClass @ {self:p}"))
2606            .field("parent_class", &self.parent_class)
2607            .finish()
2608    }
2609}
2610
2611#[repr(C)]
2612#[allow(dead_code)]
2613pub struct _GstProxyPadPrivate {
2614    _data: [u8; 0],
2615    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2616}
2617
2618pub type GstProxyPadPrivate = _GstProxyPadPrivate;
2619
2620#[derive(Copy, Clone)]
2621#[repr(C)]
2622pub struct GstQuery {
2623    pub mini_object: GstMiniObject,
2624    pub type_: GstQueryType,
2625}
2626
2627impl ::std::fmt::Debug for GstQuery {
2628    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2629        f.debug_struct(&format!("GstQuery @ {self:p}"))
2630            .field("mini_object", &self.mini_object)
2631            .field("type_", &self.type_)
2632            .finish()
2633    }
2634}
2635
2636#[derive(Copy, Clone)]
2637#[repr(C)]
2638pub struct GstReferenceTimestampMeta {
2639    pub parent: GstMeta,
2640    pub reference: *mut GstCaps,
2641    pub timestamp: GstClockTime,
2642    pub duration: GstClockTime,
2643}
2644
2645impl ::std::fmt::Debug for GstReferenceTimestampMeta {
2646    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2647        f.debug_struct(&format!("GstReferenceTimestampMeta @ {self:p}"))
2648            .field("parent", &self.parent)
2649            .field("reference", &self.reference)
2650            .field("timestamp", &self.timestamp)
2651            .field("duration", &self.duration)
2652            .finish()
2653    }
2654}
2655
2656#[derive(Copy, Clone)]
2657#[repr(C)]
2658pub struct GstRegistryClass {
2659    pub parent_class: GstObjectClass,
2660}
2661
2662impl ::std::fmt::Debug for GstRegistryClass {
2663    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2664        f.debug_struct(&format!("GstRegistryClass @ {self:p}"))
2665            .field("parent_class", &self.parent_class)
2666            .finish()
2667    }
2668}
2669
2670#[repr(C)]
2671#[allow(dead_code)]
2672pub struct _GstRegistryPrivate {
2673    _data: [u8; 0],
2674    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2675}
2676
2677pub type GstRegistryPrivate = _GstRegistryPrivate;
2678
2679#[repr(C)]
2680#[allow(dead_code)]
2681pub struct GstSample {
2682    _data: [u8; 0],
2683    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2684}
2685
2686impl ::std::fmt::Debug for GstSample {
2687    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2688        f.debug_struct(&format!("GstSample @ {self:p}")).finish()
2689    }
2690}
2691
2692#[derive(Copy, Clone)]
2693#[repr(C)]
2694pub struct GstSegment {
2695    pub flags: GstSegmentFlags,
2696    pub rate: c_double,
2697    pub applied_rate: c_double,
2698    pub format: GstFormat,
2699    pub base: u64,
2700    pub offset: u64,
2701    pub start: u64,
2702    pub stop: u64,
2703    pub time: u64,
2704    pub position: u64,
2705    pub duration: u64,
2706    pub _gst_reserved: [gpointer; 4],
2707}
2708
2709impl ::std::fmt::Debug for GstSegment {
2710    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2711        f.debug_struct(&format!("GstSegment @ {self:p}"))
2712            .field("flags", &self.flags)
2713            .field("rate", &self.rate)
2714            .field("applied_rate", &self.applied_rate)
2715            .field("format", &self.format)
2716            .field("base", &self.base)
2717            .field("offset", &self.offset)
2718            .field("start", &self.start)
2719            .field("stop", &self.stop)
2720            .field("time", &self.time)
2721            .field("position", &self.position)
2722            .field("duration", &self.duration)
2723            .finish()
2724    }
2725}
2726
2727#[derive(Copy, Clone)]
2728#[repr(C)]
2729pub struct GstSharedTaskPoolClass {
2730    pub parent_class: GstTaskPoolClass,
2731    pub _gst_reserved: [gpointer; 4],
2732}
2733
2734impl ::std::fmt::Debug for GstSharedTaskPoolClass {
2735    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2736        f.debug_struct(&format!("GstSharedTaskPoolClass @ {self:p}"))
2737            .field("parent_class", &self.parent_class)
2738            .finish()
2739    }
2740}
2741
2742#[repr(C)]
2743#[allow(dead_code)]
2744pub struct _GstSharedTaskPoolPrivate {
2745    _data: [u8; 0],
2746    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2747}
2748
2749pub type GstSharedTaskPoolPrivate = _GstSharedTaskPoolPrivate;
2750
2751#[derive(Copy, Clone)]
2752#[repr(C)]
2753pub struct GstStaticCaps {
2754    pub caps: *mut GstCaps,
2755    pub string: *const c_char,
2756    pub _gst_reserved: [gpointer; 4],
2757}
2758
2759impl ::std::fmt::Debug for GstStaticCaps {
2760    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2761        f.debug_struct(&format!("GstStaticCaps @ {self:p}"))
2762            .field("caps", &self.caps)
2763            .field("string", &self.string)
2764            .finish()
2765    }
2766}
2767
2768#[derive(Copy, Clone)]
2769#[repr(C)]
2770pub struct GstStaticPadTemplate {
2771    pub name_template: *const c_char,
2772    pub direction: GstPadDirection,
2773    pub presence: GstPadPresence,
2774    pub static_caps: GstStaticCaps,
2775}
2776
2777impl ::std::fmt::Debug for GstStaticPadTemplate {
2778    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2779        f.debug_struct(&format!("GstStaticPadTemplate @ {self:p}"))
2780            .field("name_template", &self.name_template)
2781            .field("direction", &self.direction)
2782            .field("presence", &self.presence)
2783            .field("static_caps", &self.static_caps)
2784            .finish()
2785    }
2786}
2787
2788#[derive(Copy, Clone)]
2789#[repr(C)]
2790pub struct GstStreamClass {
2791    pub parent_class: GstObjectClass,
2792    pub _gst_reserved: [gpointer; 4],
2793}
2794
2795impl ::std::fmt::Debug for GstStreamClass {
2796    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2797        f.debug_struct(&format!("GstStreamClass @ {self:p}"))
2798            .field("parent_class", &self.parent_class)
2799            .finish()
2800    }
2801}
2802
2803#[derive(Copy, Clone)]
2804#[repr(C)]
2805pub struct GstStreamCollectionClass {
2806    pub parent_class: GstObjectClass,
2807    pub stream_notify: Option<
2808        unsafe extern "C" fn(*mut GstStreamCollection, *mut GstStream, *mut gobject::GParamSpec),
2809    >,
2810    pub _gst_reserved: [gpointer; 4],
2811}
2812
2813impl ::std::fmt::Debug for GstStreamCollectionClass {
2814    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2815        f.debug_struct(&format!("GstStreamCollectionClass @ {self:p}"))
2816            .field("parent_class", &self.parent_class)
2817            .field("stream_notify", &self.stream_notify)
2818            .finish()
2819    }
2820}
2821
2822#[repr(C)]
2823#[allow(dead_code)]
2824pub struct _GstStreamCollectionPrivate {
2825    _data: [u8; 0],
2826    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2827}
2828
2829pub type GstStreamCollectionPrivate = _GstStreamCollectionPrivate;
2830
2831#[repr(C)]
2832#[allow(dead_code)]
2833pub struct _GstStreamPrivate {
2834    _data: [u8; 0],
2835    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2836}
2837
2838pub type GstStreamPrivate = _GstStreamPrivate;
2839
2840#[derive(Copy, Clone)]
2841#[repr(C)]
2842pub struct GstStructure {
2843    pub type_: GType,
2844    pub name: glib::GQuark,
2845}
2846
2847impl ::std::fmt::Debug for GstStructure {
2848    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2849        f.debug_struct(&format!("GstStructure @ {self:p}"))
2850            .field("type_", &self.type_)
2851            .finish()
2852    }
2853}
2854
2855#[derive(Copy, Clone)]
2856#[repr(C)]
2857pub struct GstSystemClockClass {
2858    pub parent_class: GstClockClass,
2859    pub _gst_reserved: [gpointer; 4],
2860}
2861
2862impl ::std::fmt::Debug for GstSystemClockClass {
2863    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2864        f.debug_struct(&format!("GstSystemClockClass @ {self:p}"))
2865            .field("parent_class", &self.parent_class)
2866            .finish()
2867    }
2868}
2869
2870#[repr(C)]
2871#[allow(dead_code)]
2872pub struct _GstSystemClockPrivate {
2873    _data: [u8; 0],
2874    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2875}
2876
2877pub type GstSystemClockPrivate = _GstSystemClockPrivate;
2878
2879#[derive(Copy, Clone)]
2880#[repr(C)]
2881pub struct GstTagList {
2882    pub mini_object: GstMiniObject,
2883}
2884
2885impl ::std::fmt::Debug for GstTagList {
2886    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2887        f.debug_struct(&format!("GstTagList @ {self:p}"))
2888            .field("mini_object", &self.mini_object)
2889            .finish()
2890    }
2891}
2892
2893#[derive(Copy, Clone)]
2894#[repr(C)]
2895pub struct GstTagSetterInterface {
2896    pub g_iface: gobject::GTypeInterface,
2897}
2898
2899impl ::std::fmt::Debug for GstTagSetterInterface {
2900    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2901        f.debug_struct(&format!("GstTagSetterInterface @ {self:p}"))
2902            .field("g_iface", &self.g_iface)
2903            .finish()
2904    }
2905}
2906
2907#[derive(Copy, Clone)]
2908#[repr(C)]
2909pub struct GstTaskClass {
2910    pub parent_class: GstObjectClass,
2911    pub pool: *mut GstTaskPool,
2912    pub _gst_reserved: [gpointer; 4],
2913}
2914
2915impl ::std::fmt::Debug for GstTaskClass {
2916    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2917        f.debug_struct(&format!("GstTaskClass @ {self:p}"))
2918            .field("parent_class", &self.parent_class)
2919            .finish()
2920    }
2921}
2922
2923#[derive(Copy, Clone)]
2924#[repr(C)]
2925pub struct GstTaskPoolClass {
2926    pub parent_class: GstObjectClass,
2927    pub prepare: Option<unsafe extern "C" fn(*mut GstTaskPool, *mut *mut glib::GError)>,
2928    pub cleanup: Option<unsafe extern "C" fn(*mut GstTaskPool)>,
2929    pub push: Option<
2930        unsafe extern "C" fn(
2931            *mut GstTaskPool,
2932            GstTaskPoolFunction,
2933            gpointer,
2934            *mut *mut glib::GError,
2935        ) -> gpointer,
2936    >,
2937    pub join: Option<unsafe extern "C" fn(*mut GstTaskPool, gpointer)>,
2938    pub dispose_handle: Option<unsafe extern "C" fn(*mut GstTaskPool, gpointer)>,
2939    pub _gst_reserved: [gpointer; 3],
2940}
2941
2942impl ::std::fmt::Debug for GstTaskPoolClass {
2943    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2944        f.debug_struct(&format!("GstTaskPoolClass @ {self:p}"))
2945            .field("parent_class", &self.parent_class)
2946            .field("prepare", &self.prepare)
2947            .field("cleanup", &self.cleanup)
2948            .field("push", &self.push)
2949            .field("join", &self.join)
2950            .field("dispose_handle", &self.dispose_handle)
2951            .finish()
2952    }
2953}
2954
2955#[repr(C)]
2956#[allow(dead_code)]
2957pub struct _GstTaskPrivate {
2958    _data: [u8; 0],
2959    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2960}
2961
2962pub type GstTaskPrivate = _GstTaskPrivate;
2963
2964#[derive(Copy, Clone)]
2965#[repr(C)]
2966pub struct GstTimedValue {
2967    pub timestamp: GstClockTime,
2968    pub value: c_double,
2969}
2970
2971impl ::std::fmt::Debug for GstTimedValue {
2972    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2973        f.debug_struct(&format!("GstTimedValue @ {self:p}"))
2974            .field("timestamp", &self.timestamp)
2975            .field("value", &self.value)
2976            .finish()
2977    }
2978}
2979
2980#[repr(C)]
2981#[allow(dead_code)]
2982pub struct GstToc {
2983    _data: [u8; 0],
2984    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2985}
2986
2987impl ::std::fmt::Debug for GstToc {
2988    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2989        f.debug_struct(&format!("GstToc @ {self:p}")).finish()
2990    }
2991}
2992
2993#[repr(C)]
2994#[allow(dead_code)]
2995pub struct GstTocEntry {
2996    _data: [u8; 0],
2997    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2998}
2999
3000impl ::std::fmt::Debug for GstTocEntry {
3001    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3002        f.debug_struct(&format!("GstTocEntry @ {self:p}")).finish()
3003    }
3004}
3005
3006#[derive(Copy, Clone)]
3007#[repr(C)]
3008pub struct GstTocSetterInterface {
3009    pub g_iface: gobject::GTypeInterface,
3010}
3011
3012impl ::std::fmt::Debug for GstTocSetterInterface {
3013    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3014        f.debug_struct(&format!("GstTocSetterInterface @ {self:p}"))
3015            .field("g_iface", &self.g_iface)
3016            .finish()
3017    }
3018}
3019
3020#[derive(Copy, Clone)]
3021#[repr(C)]
3022pub struct GstTracerClass {
3023    pub parent_class: GstObjectClass,
3024    pub _gst_reserved: [gpointer; 4],
3025}
3026
3027impl ::std::fmt::Debug for GstTracerClass {
3028    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3029        f.debug_struct(&format!("GstTracerClass @ {self:p}"))
3030            .field("parent_class", &self.parent_class)
3031            .finish()
3032    }
3033}
3034
3035#[repr(C)]
3036#[allow(dead_code)]
3037pub struct _GstTracerFactoryClass {
3038    _data: [u8; 0],
3039    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3040}
3041
3042pub type GstTracerFactoryClass = _GstTracerFactoryClass;
3043
3044#[repr(C)]
3045#[allow(dead_code)]
3046pub struct _GstTracerPrivate {
3047    _data: [u8; 0],
3048    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3049}
3050
3051pub type GstTracerPrivate = _GstTracerPrivate;
3052
3053#[repr(C)]
3054#[allow(dead_code)]
3055pub struct _GstTracerRecordClass {
3056    _data: [u8; 0],
3057    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3058}
3059
3060pub type GstTracerRecordClass = _GstTracerRecordClass;
3061
3062#[derive(Copy, Clone)]
3063#[repr(C)]
3064pub struct GstTypeFind {
3065    pub peek: Option<unsafe extern "C" fn(gpointer, i64, c_uint) -> *const u8>,
3066    pub suggest: Option<unsafe extern "C" fn(gpointer, c_uint, *mut GstCaps)>,
3067    pub data: gpointer,
3068    pub get_length: Option<unsafe extern "C" fn(gpointer) -> u64>,
3069    pub _gst_reserved: [gpointer; 4],
3070}
3071
3072impl ::std::fmt::Debug for GstTypeFind {
3073    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3074        f.debug_struct(&format!("GstTypeFind @ {self:p}"))
3075            .field("peek", &self.peek)
3076            .field("suggest", &self.suggest)
3077            .field("data", &self.data)
3078            .field("get_length", &self.get_length)
3079            .finish()
3080    }
3081}
3082
3083#[repr(C)]
3084#[allow(dead_code)]
3085pub struct _GstTypeFindFactoryClass {
3086    _data: [u8; 0],
3087    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3088}
3089
3090pub type GstTypeFindFactoryClass = _GstTypeFindFactoryClass;
3091
3092#[derive(Copy, Clone)]
3093#[repr(C)]
3094pub struct GstURIHandlerInterface {
3095    pub parent: gobject::GTypeInterface,
3096    pub get_type: Option<unsafe extern "C" fn(GType) -> GstURIType>,
3097    pub get_protocols: Option<unsafe extern "C" fn(GType) -> *const *const c_char>,
3098    pub get_uri: Option<unsafe extern "C" fn(*mut GstURIHandler) -> *mut c_char>,
3099    pub set_uri: Option<
3100        unsafe extern "C" fn(*mut GstURIHandler, *const c_char, *mut *mut glib::GError) -> gboolean,
3101    >,
3102}
3103
3104impl ::std::fmt::Debug for GstURIHandlerInterface {
3105    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3106        f.debug_struct(&format!("GstURIHandlerInterface @ {self:p}"))
3107            .field("parent", &self.parent)
3108            .field("get_type", &self.get_type)
3109            .field("get_protocols", &self.get_protocols)
3110            .field("get_uri", &self.get_uri)
3111            .field("set_uri", &self.set_uri)
3112            .finish()
3113    }
3114}
3115
3116#[repr(C)]
3117#[allow(dead_code)]
3118pub struct GstUri {
3119    _data: [u8; 0],
3120    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3121}
3122
3123impl ::std::fmt::Debug for GstUri {
3124    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3125        f.debug_struct(&format!("GstUri @ {self:p}")).finish()
3126    }
3127}
3128
3129#[derive(Copy, Clone)]
3130#[repr(C)]
3131pub struct GstValueTable {
3132    pub type_: GType,
3133    pub compare: GstValueCompareFunc,
3134    pub serialize: GstValueSerializeFunc,
3135    pub deserialize: GstValueDeserializeFunc,
3136    pub deserialize_with_pspec: GstValueDeserializeWithPSpecFunc,
3137    pub _gst_reserved: [gpointer; 3],
3138}
3139
3140impl ::std::fmt::Debug for GstValueTable {
3141    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3142        f.debug_struct(&format!("GstValueTable @ {self:p}"))
3143            .field("type_", &self.type_)
3144            .field("compare", &self.compare)
3145            .field("serialize", &self.serialize)
3146            .field("deserialize", &self.deserialize)
3147            .field("deserialize_with_pspec", &self.deserialize_with_pspec)
3148            .finish()
3149    }
3150}
3151
3152#[repr(C)]
3153#[allow(dead_code)]
3154pub struct _GstVecDeque {
3155    _data: [u8; 0],
3156    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3157}
3158
3159pub type GstVecDeque = _GstVecDeque;
3160
3161// Classes
3162#[derive(Copy, Clone)]
3163#[repr(C)]
3164pub struct GstAllocator {
3165    pub object: GstObject,
3166    pub mem_type: *const c_char,
3167    pub mem_map: GstMemoryMapFunction,
3168    pub mem_unmap: GstMemoryUnmapFunction,
3169    pub mem_copy: GstMemoryCopyFunction,
3170    pub mem_share: GstMemoryShareFunction,
3171    pub mem_is_span: GstMemoryIsSpanFunction,
3172    pub mem_map_full: GstMemoryMapFullFunction,
3173    pub mem_unmap_full: GstMemoryUnmapFullFunction,
3174    pub _gst_reserved: [gpointer; 2],
3175    pub priv_: *mut GstAllocatorPrivate,
3176}
3177
3178impl ::std::fmt::Debug for GstAllocator {
3179    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3180        f.debug_struct(&format!("GstAllocator @ {self:p}"))
3181            .field("object", &self.object)
3182            .field("mem_type", &self.mem_type)
3183            .field("mem_map", &self.mem_map)
3184            .field("mem_unmap", &self.mem_unmap)
3185            .field("mem_copy", &self.mem_copy)
3186            .field("mem_share", &self.mem_share)
3187            .field("mem_is_span", &self.mem_is_span)
3188            .field("mem_map_full", &self.mem_map_full)
3189            .field("mem_unmap_full", &self.mem_unmap_full)
3190            .finish()
3191    }
3192}
3193
3194#[derive(Copy, Clone)]
3195#[repr(C)]
3196pub struct GstBin {
3197    pub element: GstElement,
3198    pub numchildren: c_int,
3199    pub children: *mut glib::GList,
3200    pub children_cookie: u32,
3201    pub child_bus: *mut GstBus,
3202    pub messages: *mut glib::GList,
3203    pub polling: gboolean,
3204    pub state_dirty: gboolean,
3205    pub clock_dirty: gboolean,
3206    pub provided_clock: *mut GstClock,
3207    pub clock_provider: *mut GstElement,
3208    pub priv_: *mut GstBinPrivate,
3209    pub _gst_reserved: [gpointer; 4],
3210}
3211
3212impl ::std::fmt::Debug for GstBin {
3213    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3214        f.debug_struct(&format!("GstBin @ {self:p}"))
3215            .field("element", &self.element)
3216            .field("numchildren", &self.numchildren)
3217            .field("children", &self.children)
3218            .field("children_cookie", &self.children_cookie)
3219            .field("child_bus", &self.child_bus)
3220            .field("messages", &self.messages)
3221            .field("polling", &self.polling)
3222            .field("state_dirty", &self.state_dirty)
3223            .field("clock_dirty", &self.clock_dirty)
3224            .field("provided_clock", &self.provided_clock)
3225            .field("clock_provider", &self.clock_provider)
3226            .finish()
3227    }
3228}
3229
3230#[repr(C)]
3231#[allow(dead_code)]
3232pub struct GstBitmask {
3233    _data: [u8; 0],
3234    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3235}
3236
3237impl ::std::fmt::Debug for GstBitmask {
3238    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3239        f.debug_struct(&format!("GstBitmask @ {self:p}")).finish()
3240    }
3241}
3242
3243#[derive(Copy, Clone)]
3244#[repr(C)]
3245pub struct GstBufferPool {
3246    pub object: GstObject,
3247    pub flushing: c_int,
3248    pub priv_: *mut GstBufferPoolPrivate,
3249    pub _gst_reserved: [gpointer; 4],
3250}
3251
3252impl ::std::fmt::Debug for GstBufferPool {
3253    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3254        f.debug_struct(&format!("GstBufferPool @ {self:p}"))
3255            .field("object", &self.object)
3256            .field("flushing", &self.flushing)
3257            .finish()
3258    }
3259}
3260
3261#[derive(Copy, Clone)]
3262#[repr(C)]
3263pub struct GstBus {
3264    pub object: GstObject,
3265    pub priv_: *mut GstBusPrivate,
3266    pub _gst_reserved: [gpointer; 4],
3267}
3268
3269impl ::std::fmt::Debug for GstBus {
3270    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3271        f.debug_struct(&format!("GstBus @ {self:p}"))
3272            .field("object", &self.object)
3273            .finish()
3274    }
3275}
3276
3277#[derive(Copy, Clone)]
3278#[repr(C)]
3279pub struct GstClock {
3280    pub object: GstObject,
3281    pub priv_: *mut GstClockPrivate,
3282    pub _gst_reserved: [gpointer; 4],
3283}
3284
3285impl ::std::fmt::Debug for GstClock {
3286    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3287        f.debug_struct(&format!("GstClock @ {self:p}"))
3288            .field("object", &self.object)
3289            .finish()
3290    }
3291}
3292
3293#[derive(Copy, Clone)]
3294#[repr(C)]
3295pub struct GstControlBinding {
3296    pub parent: GstObject,
3297    pub name: *mut c_char,
3298    pub pspec: *mut gobject::GParamSpec,
3299    pub object: *mut GstObject,
3300    pub disabled: gboolean,
3301    pub ABI: GstControlBinding_ABI,
3302}
3303
3304impl ::std::fmt::Debug for GstControlBinding {
3305    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3306        f.debug_struct(&format!("GstControlBinding @ {self:p}"))
3307            .field("parent", &self.parent)
3308            .field("name", &self.name)
3309            .field("pspec", &self.pspec)
3310            .field("ABI", &self.ABI)
3311            .finish()
3312    }
3313}
3314
3315#[derive(Copy, Clone)]
3316#[repr(C)]
3317pub struct GstControlSource {
3318    pub parent: GstObject,
3319    pub get_value: GstControlSourceGetValue,
3320    pub get_value_array: GstControlSourceGetValueArray,
3321    pub _gst_reserved: [gpointer; 4],
3322}
3323
3324impl ::std::fmt::Debug for GstControlSource {
3325    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3326        f.debug_struct(&format!("GstControlSource @ {self:p}"))
3327            .field("parent", &self.parent)
3328            .field("get_value", &self.get_value)
3329            .field("get_value_array", &self.get_value_array)
3330            .finish()
3331    }
3332}
3333
3334#[derive(Copy, Clone)]
3335#[repr(C)]
3336pub struct GstDevice {
3337    pub parent: GstObject,
3338    pub priv_: *mut GstDevicePrivate,
3339    pub _gst_reserved: [gpointer; 4],
3340}
3341
3342impl ::std::fmt::Debug for GstDevice {
3343    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3344        f.debug_struct(&format!("GstDevice @ {self:p}"))
3345            .field("parent", &self.parent)
3346            .finish()
3347    }
3348}
3349
3350#[derive(Copy, Clone)]
3351#[repr(C)]
3352pub struct GstDeviceMonitor {
3353    pub parent: GstObject,
3354    pub priv_: *mut GstDeviceMonitorPrivate,
3355    pub _gst_reserved: [gpointer; 4],
3356}
3357
3358impl ::std::fmt::Debug for GstDeviceMonitor {
3359    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3360        f.debug_struct(&format!("GstDeviceMonitor @ {self:p}"))
3361            .field("parent", &self.parent)
3362            .finish()
3363    }
3364}
3365
3366#[derive(Copy, Clone)]
3367#[repr(C)]
3368pub struct GstDeviceProvider {
3369    pub parent: GstObject,
3370    pub devices: *mut glib::GList,
3371    pub priv_: *mut GstDeviceProviderPrivate,
3372    pub _gst_reserved: [gpointer; 4],
3373}
3374
3375impl ::std::fmt::Debug for GstDeviceProvider {
3376    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3377        f.debug_struct(&format!("GstDeviceProvider @ {self:p}"))
3378            .field("parent", &self.parent)
3379            .field("devices", &self.devices)
3380            .finish()
3381    }
3382}
3383
3384#[repr(C)]
3385#[allow(dead_code)]
3386pub struct GstDeviceProviderFactory {
3387    _data: [u8; 0],
3388    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3389}
3390
3391impl ::std::fmt::Debug for GstDeviceProviderFactory {
3392    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3393        f.debug_struct(&format!("GstDeviceProviderFactory @ {self:p}"))
3394            .finish()
3395    }
3396}
3397
3398#[repr(C)]
3399#[allow(dead_code)]
3400pub struct GstDoubleRange {
3401    _data: [u8; 0],
3402    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3403}
3404
3405impl ::std::fmt::Debug for GstDoubleRange {
3406    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3407        f.debug_struct(&format!("GstDoubleRange @ {self:p}"))
3408            .finish()
3409    }
3410}
3411
3412#[repr(C)]
3413#[allow(dead_code)]
3414pub struct GstDynamicTypeFactory {
3415    _data: [u8; 0],
3416    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3417}
3418
3419impl ::std::fmt::Debug for GstDynamicTypeFactory {
3420    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3421        f.debug_struct(&format!("GstDynamicTypeFactory @ {self:p}"))
3422            .finish()
3423    }
3424}
3425
3426#[derive(Copy, Clone)]
3427#[repr(C)]
3428pub struct GstElement {
3429    pub object: GstObject,
3430    pub state_lock: glib::GRecMutex,
3431    pub state_cond: glib::GCond,
3432    pub state_cookie: u32,
3433    pub target_state: GstState,
3434    pub current_state: GstState,
3435    pub next_state: GstState,
3436    pub pending_state: GstState,
3437    pub last_return: GstStateChangeReturn,
3438    pub bus: *mut GstBus,
3439    pub clock: *mut GstClock,
3440    pub base_time: GstClockTimeDiff,
3441    pub start_time: GstClockTime,
3442    pub numpads: u16,
3443    pub pads: *mut glib::GList,
3444    pub numsrcpads: u16,
3445    pub srcpads: *mut glib::GList,
3446    pub numsinkpads: u16,
3447    pub sinkpads: *mut glib::GList,
3448    pub pads_cookie: u32,
3449    pub contexts: *mut glib::GList,
3450    pub _gst_reserved: [gpointer; 3],
3451}
3452
3453impl ::std::fmt::Debug for GstElement {
3454    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3455        f.debug_struct(&format!("GstElement @ {self:p}"))
3456            .field("object", &self.object)
3457            .field("state_lock", &self.state_lock)
3458            .field("state_cond", &self.state_cond)
3459            .field("state_cookie", &self.state_cookie)
3460            .field("target_state", &self.target_state)
3461            .field("current_state", &self.current_state)
3462            .field("next_state", &self.next_state)
3463            .field("pending_state", &self.pending_state)
3464            .field("last_return", &self.last_return)
3465            .field("bus", &self.bus)
3466            .field("clock", &self.clock)
3467            .field("base_time", &self.base_time)
3468            .field("start_time", &self.start_time)
3469            .field("numpads", &self.numpads)
3470            .field("pads", &self.pads)
3471            .field("numsrcpads", &self.numsrcpads)
3472            .field("srcpads", &self.srcpads)
3473            .field("numsinkpads", &self.numsinkpads)
3474            .field("sinkpads", &self.sinkpads)
3475            .field("pads_cookie", &self.pads_cookie)
3476            .field("contexts", &self.contexts)
3477            .finish()
3478    }
3479}
3480
3481#[repr(C)]
3482#[allow(dead_code)]
3483pub struct GstElementFactory {
3484    _data: [u8; 0],
3485    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3486}
3487
3488impl ::std::fmt::Debug for GstElementFactory {
3489    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3490        f.debug_struct(&format!("GstElementFactory @ {self:p}"))
3491            .finish()
3492    }
3493}
3494
3495#[repr(C)]
3496#[allow(dead_code)]
3497pub struct GstFlagSet {
3498    _data: [u8; 0],
3499    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3500}
3501
3502impl ::std::fmt::Debug for GstFlagSet {
3503    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3504        f.debug_struct(&format!("GstFlagSet @ {self:p}")).finish()
3505    }
3506}
3507
3508#[repr(C)]
3509#[allow(dead_code)]
3510pub struct GstFraction {
3511    _data: [u8; 0],
3512    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3513}
3514
3515impl ::std::fmt::Debug for GstFraction {
3516    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3517        f.debug_struct(&format!("GstFraction @ {self:p}")).finish()
3518    }
3519}
3520
3521#[repr(C)]
3522#[allow(dead_code)]
3523pub struct GstFractionRange {
3524    _data: [u8; 0],
3525    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3526}
3527
3528impl ::std::fmt::Debug for GstFractionRange {
3529    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3530        f.debug_struct(&format!("GstFractionRange @ {self:p}"))
3531            .finish()
3532    }
3533}
3534
3535#[derive(Copy, Clone)]
3536#[repr(C)]
3537pub struct GstGhostPad {
3538    pub pad: GstProxyPad,
3539    pub priv_: *mut GstGhostPadPrivate,
3540}
3541
3542impl ::std::fmt::Debug for GstGhostPad {
3543    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3544        f.debug_struct(&format!("GstGhostPad @ {self:p}"))
3545            .field("pad", &self.pad)
3546            .finish()
3547    }
3548}
3549
3550#[repr(C)]
3551#[allow(dead_code)]
3552pub struct GstInt64Range {
3553    _data: [u8; 0],
3554    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3555}
3556
3557impl ::std::fmt::Debug for GstInt64Range {
3558    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3559        f.debug_struct(&format!("GstInt64Range @ {self:p}"))
3560            .finish()
3561    }
3562}
3563
3564#[repr(C)]
3565#[allow(dead_code)]
3566pub struct GstIntRange {
3567    _data: [u8; 0],
3568    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3569}
3570
3571impl ::std::fmt::Debug for GstIntRange {
3572    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3573        f.debug_struct(&format!("GstIntRange @ {self:p}")).finish()
3574    }
3575}
3576
3577#[derive(Copy, Clone)]
3578#[repr(C)]
3579pub struct GstObject {
3580    pub object: gobject::GInitiallyUnowned,
3581    pub lock: glib::GMutex,
3582    pub name: *mut c_char,
3583    pub parent: *mut GstObject,
3584    pub flags: u32,
3585    pub control_bindings: *mut glib::GList,
3586    pub control_rate: u64,
3587    pub last_sync: u64,
3588    pub _gst_reserved: gpointer,
3589}
3590
3591impl ::std::fmt::Debug for GstObject {
3592    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3593        f.debug_struct(&format!("GstObject @ {self:p}"))
3594            .field("object", &self.object)
3595            .field("lock", &self.lock)
3596            .field("name", &self.name)
3597            .field("parent", &self.parent)
3598            .field("flags", &self.flags)
3599            .finish()
3600    }
3601}
3602
3603#[derive(Copy, Clone)]
3604#[repr(C)]
3605pub struct GstPad {
3606    pub object: GstObject,
3607    pub element_private: gpointer,
3608    pub padtemplate: *mut GstPadTemplate,
3609    pub direction: GstPadDirection,
3610    pub stream_rec_lock: glib::GRecMutex,
3611    pub task: *mut GstTask,
3612    pub block_cond: glib::GCond,
3613    pub probes: glib::GHookList,
3614    pub mode: GstPadMode,
3615    pub activatefunc: GstPadActivateFunction,
3616    pub activatedata: gpointer,
3617    pub activatenotify: glib::GDestroyNotify,
3618    pub activatemodefunc: GstPadActivateModeFunction,
3619    pub activatemodedata: gpointer,
3620    pub activatemodenotify: glib::GDestroyNotify,
3621    pub peer: *mut GstPad,
3622    pub linkfunc: GstPadLinkFunction,
3623    pub linkdata: gpointer,
3624    pub linknotify: glib::GDestroyNotify,
3625    pub unlinkfunc: GstPadUnlinkFunction,
3626    pub unlinkdata: gpointer,
3627    pub unlinknotify: glib::GDestroyNotify,
3628    pub chainfunc: GstPadChainFunction,
3629    pub chaindata: gpointer,
3630    pub chainnotify: glib::GDestroyNotify,
3631    pub chainlistfunc: GstPadChainListFunction,
3632    pub chainlistdata: gpointer,
3633    pub chainlistnotify: glib::GDestroyNotify,
3634    pub getrangefunc: GstPadGetRangeFunction,
3635    pub getrangedata: gpointer,
3636    pub getrangenotify: glib::GDestroyNotify,
3637    pub eventfunc: GstPadEventFunction,
3638    pub eventdata: gpointer,
3639    pub eventnotify: glib::GDestroyNotify,
3640    pub offset: i64,
3641    pub queryfunc: GstPadQueryFunction,
3642    pub querydata: gpointer,
3643    pub querynotify: glib::GDestroyNotify,
3644    pub iterintlinkfunc: GstPadIterIntLinkFunction,
3645    pub iterintlinkdata: gpointer,
3646    pub iterintlinknotify: glib::GDestroyNotify,
3647    pub num_probes: c_int,
3648    pub num_blocked: c_int,
3649    pub priv_: *mut GstPadPrivate,
3650    pub ABI: GstPad_ABI,
3651}
3652
3653impl ::std::fmt::Debug for GstPad {
3654    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3655        f.debug_struct(&format!("GstPad @ {self:p}"))
3656            .field("object", &self.object)
3657            .field("element_private", &self.element_private)
3658            .field("padtemplate", &self.padtemplate)
3659            .field("direction", &self.direction)
3660            .field("ABI", &self.ABI)
3661            .finish()
3662    }
3663}
3664
3665#[derive(Copy, Clone)]
3666#[repr(C)]
3667pub struct GstPadTemplate {
3668    pub object: GstObject,
3669    pub name_template: *mut c_char,
3670    pub direction: GstPadDirection,
3671    pub presence: GstPadPresence,
3672    pub caps: *mut GstCaps,
3673    pub ABI: GstPadTemplate_ABI,
3674}
3675
3676impl ::std::fmt::Debug for GstPadTemplate {
3677    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3678        f.debug_struct(&format!("GstPadTemplate @ {self:p}"))
3679            .field("object", &self.object)
3680            .field("name_template", &self.name_template)
3681            .field("direction", &self.direction)
3682            .field("presence", &self.presence)
3683            .field("caps", &self.caps)
3684            .field("ABI", &self.ABI)
3685            .finish()
3686    }
3687}
3688
3689#[repr(C)]
3690#[allow(dead_code)]
3691pub struct GstParamArray {
3692    _data: [u8; 0],
3693    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3694}
3695
3696impl ::std::fmt::Debug for GstParamArray {
3697    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3698        f.debug_struct(&format!("GstParamArray @ {self:p}"))
3699            .finish()
3700    }
3701}
3702
3703#[repr(C)]
3704#[allow(dead_code)]
3705pub struct GstParamFraction {
3706    _data: [u8; 0],
3707    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3708}
3709
3710impl ::std::fmt::Debug for GstParamFraction {
3711    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3712        f.debug_struct(&format!("GstParamFraction @ {self:p}"))
3713            .finish()
3714    }
3715}
3716
3717#[derive(Copy, Clone)]
3718#[repr(C)]
3719pub struct GstPipeline {
3720    pub bin: GstBin,
3721    pub fixed_clock: *mut GstClock,
3722    pub stream_time: GstClockTime,
3723    pub delay: GstClockTime,
3724    pub priv_: *mut GstPipelinePrivate,
3725    pub _gst_reserved: [gpointer; 4],
3726}
3727
3728impl ::std::fmt::Debug for GstPipeline {
3729    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3730        f.debug_struct(&format!("GstPipeline @ {self:p}"))
3731            .field("bin", &self.bin)
3732            .field("fixed_clock", &self.fixed_clock)
3733            .field("stream_time", &self.stream_time)
3734            .field("delay", &self.delay)
3735            .finish()
3736    }
3737}
3738
3739#[repr(C)]
3740#[allow(dead_code)]
3741pub struct GstPlugin {
3742    _data: [u8; 0],
3743    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3744}
3745
3746impl ::std::fmt::Debug for GstPlugin {
3747    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3748        f.debug_struct(&format!("GstPlugin @ {self:p}")).finish()
3749    }
3750}
3751
3752#[repr(C)]
3753#[allow(dead_code)]
3754pub struct GstPluginFeature {
3755    _data: [u8; 0],
3756    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3757}
3758
3759impl ::std::fmt::Debug for GstPluginFeature {
3760    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3761        f.debug_struct(&format!("GstPluginFeature @ {self:p}"))
3762            .finish()
3763    }
3764}
3765
3766#[derive(Copy, Clone)]
3767#[repr(C)]
3768pub struct GstProxyPad {
3769    pub pad: GstPad,
3770    pub priv_: *mut GstProxyPadPrivate,
3771}
3772
3773impl ::std::fmt::Debug for GstProxyPad {
3774    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3775        f.debug_struct(&format!("GstProxyPad @ {self:p}"))
3776            .field("pad", &self.pad)
3777            .finish()
3778    }
3779}
3780
3781#[derive(Copy, Clone)]
3782#[repr(C)]
3783pub struct GstRegistry {
3784    pub object: GstObject,
3785    pub priv_: *mut GstRegistryPrivate,
3786}
3787
3788impl ::std::fmt::Debug for GstRegistry {
3789    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3790        f.debug_struct(&format!("GstRegistry @ {self:p}"))
3791            .field("object", &self.object)
3792            .finish()
3793    }
3794}
3795
3796#[derive(Copy, Clone)]
3797#[repr(C)]
3798pub struct GstSharedTaskPool {
3799    pub parent: GstTaskPool,
3800    pub priv_: *mut GstSharedTaskPoolPrivate,
3801    pub _gst_reserved: [gpointer; 4],
3802}
3803
3804impl ::std::fmt::Debug for GstSharedTaskPool {
3805    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3806        f.debug_struct(&format!("GstSharedTaskPool @ {self:p}"))
3807            .field("parent", &self.parent)
3808            .finish()
3809    }
3810}
3811
3812#[derive(Copy, Clone)]
3813#[repr(C)]
3814pub struct GstStream {
3815    pub object: GstObject,
3816    pub stream_id: *const c_char,
3817    pub priv_: *mut GstStreamPrivate,
3818    pub _gst_reserved: [gpointer; 4],
3819}
3820
3821impl ::std::fmt::Debug for GstStream {
3822    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3823        f.debug_struct(&format!("GstStream @ {self:p}"))
3824            .field("stream_id", &self.stream_id)
3825            .finish()
3826    }
3827}
3828
3829#[derive(Copy, Clone)]
3830#[repr(C)]
3831pub struct GstStreamCollection {
3832    pub object: GstObject,
3833    pub upstream_id: *mut c_char,
3834    pub priv_: *mut GstStreamCollectionPrivate,
3835    pub _gst_reserved: [gpointer; 4],
3836}
3837
3838impl ::std::fmt::Debug for GstStreamCollection {
3839    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3840        f.debug_struct(&format!("GstStreamCollection @ {self:p}"))
3841            .finish()
3842    }
3843}
3844
3845#[derive(Copy, Clone)]
3846#[repr(C)]
3847pub struct GstSystemClock {
3848    pub clock: GstClock,
3849    pub priv_: *mut GstSystemClockPrivate,
3850    pub _gst_reserved: [gpointer; 4],
3851}
3852
3853impl ::std::fmt::Debug for GstSystemClock {
3854    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3855        f.debug_struct(&format!("GstSystemClock @ {self:p}"))
3856            .field("clock", &self.clock)
3857            .finish()
3858    }
3859}
3860
3861#[derive(Copy, Clone)]
3862#[repr(C)]
3863pub struct GstTask {
3864    pub object: GstObject,
3865    pub state: GstTaskState,
3866    pub cond: glib::GCond,
3867    pub lock: *mut glib::GRecMutex,
3868    pub func: GstTaskFunction,
3869    pub user_data: gpointer,
3870    pub notify: glib::GDestroyNotify,
3871    pub running: gboolean,
3872    pub thread: *mut glib::GThread,
3873    pub priv_: *mut GstTaskPrivate,
3874    pub _gst_reserved: [gpointer; 4],
3875}
3876
3877impl ::std::fmt::Debug for GstTask {
3878    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3879        f.debug_struct(&format!("GstTask @ {self:p}"))
3880            .field("object", &self.object)
3881            .field("state", &self.state)
3882            .field("cond", &self.cond)
3883            .field("lock", &self.lock)
3884            .field("func", &self.func)
3885            .field("user_data", &self.user_data)
3886            .field("notify", &self.notify)
3887            .field("running", &self.running)
3888            .finish()
3889    }
3890}
3891
3892#[derive(Copy, Clone)]
3893#[repr(C)]
3894pub struct GstTaskPool {
3895    pub object: GstObject,
3896    pub pool: *mut glib::GThreadPool,
3897    pub _gst_reserved: [gpointer; 4],
3898}
3899
3900impl ::std::fmt::Debug for GstTaskPool {
3901    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3902        f.debug_struct(&format!("GstTaskPool @ {self:p}"))
3903            .field("object", &self.object)
3904            .finish()
3905    }
3906}
3907
3908#[derive(Copy, Clone)]
3909#[repr(C)]
3910pub struct GstTracer {
3911    pub parent: GstObject,
3912    pub priv_: *mut GstTracerPrivate,
3913    pub _gst_reserved: [gpointer; 4],
3914}
3915
3916impl ::std::fmt::Debug for GstTracer {
3917    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3918        f.debug_struct(&format!("GstTracer @ {self:p}"))
3919            .field("parent", &self.parent)
3920            .finish()
3921    }
3922}
3923
3924#[repr(C)]
3925#[allow(dead_code)]
3926pub struct GstTracerFactory {
3927    _data: [u8; 0],
3928    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3929}
3930
3931impl ::std::fmt::Debug for GstTracerFactory {
3932    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3933        f.debug_struct(&format!("GstTracerFactory @ {self:p}"))
3934            .finish()
3935    }
3936}
3937
3938#[repr(C)]
3939#[allow(dead_code)]
3940pub struct GstTracerRecord {
3941    _data: [u8; 0],
3942    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3943}
3944
3945impl ::std::fmt::Debug for GstTracerRecord {
3946    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3947        f.debug_struct(&format!("GstTracerRecord @ {self:p}"))
3948            .finish()
3949    }
3950}
3951
3952#[repr(C)]
3953#[allow(dead_code)]
3954pub struct GstTypeFindFactory {
3955    _data: [u8; 0],
3956    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3957}
3958
3959impl ::std::fmt::Debug for GstTypeFindFactory {
3960    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3961        f.debug_struct(&format!("GstTypeFindFactory @ {self:p}"))
3962            .finish()
3963    }
3964}
3965
3966#[repr(C)]
3967#[allow(dead_code)]
3968pub struct GstValueArray {
3969    _data: [u8; 0],
3970    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3971}
3972
3973impl ::std::fmt::Debug for GstValueArray {
3974    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3975        f.debug_struct(&format!("GstValueArray @ {self:p}"))
3976            .finish()
3977    }
3978}
3979
3980#[repr(C)]
3981#[allow(dead_code)]
3982pub struct GstValueList {
3983    _data: [u8; 0],
3984    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3985}
3986
3987impl ::std::fmt::Debug for GstValueList {
3988    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3989        f.debug_struct(&format!("GstValueList @ {self:p}")).finish()
3990    }
3991}
3992
3993// Interfaces
3994#[repr(C)]
3995#[allow(dead_code)]
3996pub struct GstChildProxy {
3997    _data: [u8; 0],
3998    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3999}
4000
4001impl ::std::fmt::Debug for GstChildProxy {
4002    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4003        write!(f, "GstChildProxy @ {self:p}")
4004    }
4005}
4006
4007#[repr(C)]
4008#[allow(dead_code)]
4009pub struct GstPreset {
4010    _data: [u8; 0],
4011    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4012}
4013
4014impl ::std::fmt::Debug for GstPreset {
4015    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4016        write!(f, "GstPreset @ {self:p}")
4017    }
4018}
4019
4020#[repr(C)]
4021#[allow(dead_code)]
4022pub struct GstTagSetter {
4023    _data: [u8; 0],
4024    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4025}
4026
4027impl ::std::fmt::Debug for GstTagSetter {
4028    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4029        write!(f, "GstTagSetter @ {self:p}")
4030    }
4031}
4032
4033#[repr(C)]
4034#[allow(dead_code)]
4035pub struct GstTocSetter {
4036    _data: [u8; 0],
4037    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4038}
4039
4040impl ::std::fmt::Debug for GstTocSetter {
4041    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4042        write!(f, "GstTocSetter @ {self:p}")
4043    }
4044}
4045
4046#[repr(C)]
4047#[allow(dead_code)]
4048pub struct GstURIHandler {
4049    _data: [u8; 0],
4050    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4051}
4052
4053impl ::std::fmt::Debug for GstURIHandler {
4054    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4055        write!(f, "GstURIHandler @ {self:p}")
4056    }
4057}
4058
4059extern "C" {
4060
4061    //=========================================================================
4062    // GstBufferingMode
4063    //=========================================================================
4064    pub fn gst_buffering_mode_get_type() -> GType;
4065
4066    //=========================================================================
4067    // GstBusSyncReply
4068    //=========================================================================
4069    pub fn gst_bus_sync_reply_get_type() -> GType;
4070
4071    //=========================================================================
4072    // GstCapsIntersectMode
4073    //=========================================================================
4074    pub fn gst_caps_intersect_mode_get_type() -> GType;
4075
4076    //=========================================================================
4077    // GstClockEntryType
4078    //=========================================================================
4079    pub fn gst_clock_entry_type_get_type() -> GType;
4080
4081    //=========================================================================
4082    // GstClockReturn
4083    //=========================================================================
4084    pub fn gst_clock_return_get_type() -> GType;
4085
4086    //=========================================================================
4087    // GstClockType
4088    //=========================================================================
4089    pub fn gst_clock_type_get_type() -> GType;
4090
4091    //=========================================================================
4092    // GstCoreError
4093    //=========================================================================
4094    pub fn gst_core_error_get_type() -> GType;
4095    pub fn gst_core_error_quark() -> glib::GQuark;
4096
4097    //=========================================================================
4098    // GstDebugColorMode
4099    //=========================================================================
4100    pub fn gst_debug_color_mode_get_type() -> GType;
4101
4102    //=========================================================================
4103    // GstDebugLevel
4104    //=========================================================================
4105    pub fn gst_debug_level_get_type() -> GType;
4106    pub fn gst_debug_level_get_name(level: GstDebugLevel) -> *const c_char;
4107
4108    //=========================================================================
4109    // GstEventType
4110    //=========================================================================
4111    pub fn gst_event_type_get_type() -> GType;
4112    pub fn gst_event_type_get_flags(type_: GstEventType) -> GstEventTypeFlags;
4113    pub fn gst_event_type_get_name(type_: GstEventType) -> *const c_char;
4114    pub fn gst_event_type_to_quark(type_: GstEventType) -> glib::GQuark;
4115    #[cfg(feature = "v1_22")]
4116    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4117    pub fn gst_event_type_to_sticky_ordering(type_: GstEventType) -> c_uint;
4118
4119    //=========================================================================
4120    // GstFlowReturn
4121    //=========================================================================
4122    pub fn gst_flow_return_get_type() -> GType;
4123
4124    //=========================================================================
4125    // GstFormat
4126    //=========================================================================
4127    pub fn gst_format_get_type() -> GType;
4128    pub fn gst_format_get_by_nick(nick: *const c_char) -> GstFormat;
4129    pub fn gst_format_get_details(format: GstFormat) -> *const GstFormatDefinition;
4130    pub fn gst_format_get_name(format: GstFormat) -> *const c_char;
4131    pub fn gst_format_iterate_definitions() -> *mut GstIterator;
4132    pub fn gst_format_register(nick: *const c_char, description: *const c_char) -> GstFormat;
4133    pub fn gst_format_to_quark(format: GstFormat) -> glib::GQuark;
4134
4135    //=========================================================================
4136    // GstIteratorItem
4137    //=========================================================================
4138    pub fn gst_iterator_item_get_type() -> GType;
4139
4140    //=========================================================================
4141    // GstIteratorResult
4142    //=========================================================================
4143    pub fn gst_iterator_result_get_type() -> GType;
4144
4145    //=========================================================================
4146    // GstLibraryError
4147    //=========================================================================
4148    pub fn gst_library_error_get_type() -> GType;
4149    pub fn gst_library_error_quark() -> glib::GQuark;
4150
4151    //=========================================================================
4152    // GstPadDirection
4153    //=========================================================================
4154    pub fn gst_pad_direction_get_type() -> GType;
4155
4156    //=========================================================================
4157    // GstPadLinkReturn
4158    //=========================================================================
4159    pub fn gst_pad_link_return_get_type() -> GType;
4160
4161    //=========================================================================
4162    // GstPadMode
4163    //=========================================================================
4164    pub fn gst_pad_mode_get_type() -> GType;
4165    pub fn gst_pad_mode_get_name(mode: GstPadMode) -> *const c_char;
4166
4167    //=========================================================================
4168    // GstPadPresence
4169    //=========================================================================
4170    pub fn gst_pad_presence_get_type() -> GType;
4171
4172    //=========================================================================
4173    // GstPadProbeReturn
4174    //=========================================================================
4175    pub fn gst_pad_probe_return_get_type() -> GType;
4176
4177    //=========================================================================
4178    // GstParseError
4179    //=========================================================================
4180    pub fn gst_parse_error_get_type() -> GType;
4181    pub fn gst_parse_error_quark() -> glib::GQuark;
4182
4183    //=========================================================================
4184    // GstPluginError
4185    //=========================================================================
4186    pub fn gst_plugin_error_get_type() -> GType;
4187    pub fn gst_plugin_error_quark() -> glib::GQuark;
4188
4189    //=========================================================================
4190    // GstProgressType
4191    //=========================================================================
4192    pub fn gst_progress_type_get_type() -> GType;
4193
4194    //=========================================================================
4195    // GstPromiseResult
4196    //=========================================================================
4197    pub fn gst_promise_result_get_type() -> GType;
4198
4199    //=========================================================================
4200    // GstQOSType
4201    //=========================================================================
4202    pub fn gst_qos_type_get_type() -> GType;
4203
4204    //=========================================================================
4205    // GstQueryType
4206    //=========================================================================
4207    pub fn gst_query_type_get_type() -> GType;
4208    pub fn gst_query_type_get_flags(type_: GstQueryType) -> GstQueryTypeFlags;
4209    pub fn gst_query_type_get_name(type_: GstQueryType) -> *const c_char;
4210    pub fn gst_query_type_to_quark(type_: GstQueryType) -> glib::GQuark;
4211
4212    //=========================================================================
4213    // GstRank
4214    //=========================================================================
4215    pub fn gst_rank_get_type() -> GType;
4216
4217    //=========================================================================
4218    // GstResourceError
4219    //=========================================================================
4220    pub fn gst_resource_error_get_type() -> GType;
4221    pub fn gst_resource_error_quark() -> glib::GQuark;
4222
4223    //=========================================================================
4224    // GstSearchMode
4225    //=========================================================================
4226    pub fn gst_search_mode_get_type() -> GType;
4227
4228    //=========================================================================
4229    // GstSeekType
4230    //=========================================================================
4231    pub fn gst_seek_type_get_type() -> GType;
4232
4233    //=========================================================================
4234    // GstState
4235    //=========================================================================
4236    pub fn gst_state_get_type() -> GType;
4237
4238    //=========================================================================
4239    // GstStateChange
4240    //=========================================================================
4241    pub fn gst_state_change_get_type() -> GType;
4242    pub fn gst_state_change_get_name(transition: GstStateChange) -> *const c_char;
4243
4244    //=========================================================================
4245    // GstStateChangeReturn
4246    //=========================================================================
4247    pub fn gst_state_change_return_get_type() -> GType;
4248
4249    //=========================================================================
4250    // GstStreamError
4251    //=========================================================================
4252    pub fn gst_stream_error_get_type() -> GType;
4253    pub fn gst_stream_error_quark() -> glib::GQuark;
4254
4255    //=========================================================================
4256    // GstStreamStatusType
4257    //=========================================================================
4258    pub fn gst_stream_status_type_get_type() -> GType;
4259
4260    //=========================================================================
4261    // GstStructureChangeType
4262    //=========================================================================
4263    pub fn gst_structure_change_type_get_type() -> GType;
4264
4265    //=========================================================================
4266    // GstTagFlag
4267    //=========================================================================
4268    pub fn gst_tag_flag_get_type() -> GType;
4269
4270    //=========================================================================
4271    // GstTagMergeMode
4272    //=========================================================================
4273    pub fn gst_tag_merge_mode_get_type() -> GType;
4274
4275    //=========================================================================
4276    // GstTagScope
4277    //=========================================================================
4278    pub fn gst_tag_scope_get_type() -> GType;
4279
4280    //=========================================================================
4281    // GstTaskState
4282    //=========================================================================
4283    pub fn gst_task_state_get_type() -> GType;
4284
4285    //=========================================================================
4286    // GstTocEntryType
4287    //=========================================================================
4288    pub fn gst_toc_entry_type_get_type() -> GType;
4289    pub fn gst_toc_entry_type_get_nick(type_: GstTocEntryType) -> *const c_char;
4290
4291    //=========================================================================
4292    // GstTocLoopType
4293    //=========================================================================
4294    pub fn gst_toc_loop_type_get_type() -> GType;
4295
4296    //=========================================================================
4297    // GstTocScope
4298    //=========================================================================
4299    pub fn gst_toc_scope_get_type() -> GType;
4300
4301    //=========================================================================
4302    // GstTracerValueScope
4303    //=========================================================================
4304    pub fn gst_tracer_value_scope_get_type() -> GType;
4305
4306    //=========================================================================
4307    // GstTypeFindProbability
4308    //=========================================================================
4309    pub fn gst_type_find_probability_get_type() -> GType;
4310
4311    //=========================================================================
4312    // GstURIError
4313    //=========================================================================
4314    pub fn gst_uri_error_get_type() -> GType;
4315    pub fn gst_uri_error_quark() -> glib::GQuark;
4316
4317    //=========================================================================
4318    // GstURIType
4319    //=========================================================================
4320    pub fn gst_uri_type_get_type() -> GType;
4321
4322    //=========================================================================
4323    // GstAllocatorFlags
4324    //=========================================================================
4325    pub fn gst_allocator_flags_get_type() -> GType;
4326
4327    //=========================================================================
4328    // GstBinFlags
4329    //=========================================================================
4330    pub fn gst_bin_flags_get_type() -> GType;
4331
4332    //=========================================================================
4333    // GstBufferCopyFlags
4334    //=========================================================================
4335    pub fn gst_buffer_copy_flags_get_type() -> GType;
4336
4337    //=========================================================================
4338    // GstBufferFlags
4339    //=========================================================================
4340    pub fn gst_buffer_flags_get_type() -> GType;
4341
4342    //=========================================================================
4343    // GstBufferPoolAcquireFlags
4344    //=========================================================================
4345    pub fn gst_buffer_pool_acquire_flags_get_type() -> GType;
4346
4347    //=========================================================================
4348    // GstBusFlags
4349    //=========================================================================
4350    pub fn gst_bus_flags_get_type() -> GType;
4351
4352    //=========================================================================
4353    // GstCapsFlags
4354    //=========================================================================
4355    pub fn gst_caps_flags_get_type() -> GType;
4356
4357    //=========================================================================
4358    // GstClockFlags
4359    //=========================================================================
4360    pub fn gst_clock_flags_get_type() -> GType;
4361
4362    //=========================================================================
4363    // GstDebugColorFlags
4364    //=========================================================================
4365    pub fn gst_debug_color_flags_get_type() -> GType;
4366
4367    //=========================================================================
4368    // GstDebugGraphDetails
4369    //=========================================================================
4370    pub fn gst_debug_graph_details_get_type() -> GType;
4371
4372    //=========================================================================
4373    // GstElementFlags
4374    //=========================================================================
4375    pub fn gst_element_flags_get_type() -> GType;
4376
4377    //=========================================================================
4378    // GstEventTypeFlags
4379    //=========================================================================
4380    pub fn gst_event_type_flags_get_type() -> GType;
4381
4382    //=========================================================================
4383    // GstGapFlags
4384    //=========================================================================
4385    #[cfg(feature = "v1_20")]
4386    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4387    pub fn gst_gap_flags_get_type() -> GType;
4388
4389    //=========================================================================
4390    // GstLockFlags
4391    //=========================================================================
4392    pub fn gst_lock_flags_get_type() -> GType;
4393
4394    //=========================================================================
4395    // GstMapFlags
4396    //=========================================================================
4397    pub fn gst_map_flags_get_type() -> GType;
4398
4399    //=========================================================================
4400    // GstMemoryFlags
4401    //=========================================================================
4402    pub fn gst_memory_flags_get_type() -> GType;
4403
4404    //=========================================================================
4405    // GstMessageType
4406    //=========================================================================
4407    pub fn gst_message_type_get_type() -> GType;
4408    pub fn gst_message_type_get_name(type_: GstMessageType) -> *const c_char;
4409    pub fn gst_message_type_to_quark(type_: GstMessageType) -> glib::GQuark;
4410
4411    //=========================================================================
4412    // GstMetaFlags
4413    //=========================================================================
4414    pub fn gst_meta_flags_get_type() -> GType;
4415
4416    //=========================================================================
4417    // GstMiniObjectFlags
4418    //=========================================================================
4419    pub fn gst_mini_object_flags_get_type() -> GType;
4420
4421    //=========================================================================
4422    // GstObjectFlags
4423    //=========================================================================
4424    pub fn gst_object_flags_get_type() -> GType;
4425
4426    //=========================================================================
4427    // GstPadFlags
4428    //=========================================================================
4429    pub fn gst_pad_flags_get_type() -> GType;
4430
4431    //=========================================================================
4432    // GstPadLinkCheck
4433    //=========================================================================
4434    pub fn gst_pad_link_check_get_type() -> GType;
4435
4436    //=========================================================================
4437    // GstPadProbeType
4438    //=========================================================================
4439    pub fn gst_pad_probe_type_get_type() -> GType;
4440
4441    //=========================================================================
4442    // GstPadTemplateFlags
4443    //=========================================================================
4444    pub fn gst_pad_template_flags_get_type() -> GType;
4445
4446    //=========================================================================
4447    // GstParseFlags
4448    //=========================================================================
4449    pub fn gst_parse_flags_get_type() -> GType;
4450
4451    //=========================================================================
4452    // GstPipelineFlags
4453    //=========================================================================
4454    pub fn gst_pipeline_flags_get_type() -> GType;
4455
4456    //=========================================================================
4457    // GstPluginAPIFlags
4458    //=========================================================================
4459    #[cfg(feature = "v1_18")]
4460    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4461    pub fn gst_plugin_api_flags_get_type() -> GType;
4462
4463    //=========================================================================
4464    // GstPluginDependencyFlags
4465    //=========================================================================
4466    pub fn gst_plugin_dependency_flags_get_type() -> GType;
4467
4468    //=========================================================================
4469    // GstPluginFlags
4470    //=========================================================================
4471    pub fn gst_plugin_flags_get_type() -> GType;
4472
4473    //=========================================================================
4474    // GstQueryTypeFlags
4475    //=========================================================================
4476    pub fn gst_query_type_flags_get_type() -> GType;
4477
4478    //=========================================================================
4479    // GstSchedulingFlags
4480    //=========================================================================
4481    pub fn gst_scheduling_flags_get_type() -> GType;
4482
4483    //=========================================================================
4484    // GstSeekFlags
4485    //=========================================================================
4486    pub fn gst_seek_flags_get_type() -> GType;
4487
4488    //=========================================================================
4489    // GstSegmentFlags
4490    //=========================================================================
4491    pub fn gst_segment_flags_get_type() -> GType;
4492
4493    //=========================================================================
4494    // GstSerializeFlags
4495    //=========================================================================
4496    #[cfg(feature = "v1_20")]
4497    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4498    pub fn gst_serialize_flags_get_type() -> GType;
4499
4500    //=========================================================================
4501    // GstStackTraceFlags
4502    //=========================================================================
4503    pub fn gst_stack_trace_flags_get_type() -> GType;
4504
4505    //=========================================================================
4506    // GstStreamFlags
4507    //=========================================================================
4508    pub fn gst_stream_flags_get_type() -> GType;
4509
4510    //=========================================================================
4511    // GstStreamType
4512    //=========================================================================
4513    pub fn gst_stream_type_get_type() -> GType;
4514    pub fn gst_stream_type_get_name(stype: GstStreamType) -> *const c_char;
4515
4516    //=========================================================================
4517    // GstTracerValueFlags
4518    //=========================================================================
4519    pub fn gst_tracer_value_flags_get_type() -> GType;
4520
4521    //=========================================================================
4522    // GstAllocationParams
4523    //=========================================================================
4524    pub fn gst_allocation_params_get_type() -> GType;
4525    #[cfg(feature = "v1_20")]
4526    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4527    pub fn gst_allocation_params_new() -> *mut GstAllocationParams;
4528    pub fn gst_allocation_params_copy(
4529        params: *const GstAllocationParams,
4530    ) -> *mut GstAllocationParams;
4531    pub fn gst_allocation_params_free(params: *mut GstAllocationParams);
4532    pub fn gst_allocation_params_init(params: *mut GstAllocationParams);
4533
4534    //=========================================================================
4535    // GstAtomicQueue
4536    //=========================================================================
4537    pub fn gst_atomic_queue_get_type() -> GType;
4538    pub fn gst_atomic_queue_new(initial_size: c_uint) -> *mut GstAtomicQueue;
4539    pub fn gst_atomic_queue_length(queue: *mut GstAtomicQueue) -> c_uint;
4540    pub fn gst_atomic_queue_peek(queue: *mut GstAtomicQueue) -> gpointer;
4541    pub fn gst_atomic_queue_pop(queue: *mut GstAtomicQueue) -> gpointer;
4542    pub fn gst_atomic_queue_push(queue: *mut GstAtomicQueue, data: gpointer);
4543    pub fn gst_atomic_queue_ref(queue: *mut GstAtomicQueue);
4544    pub fn gst_atomic_queue_unref(queue: *mut GstAtomicQueue);
4545
4546    //=========================================================================
4547    // GstBuffer
4548    //=========================================================================
4549    pub fn gst_buffer_get_type() -> GType;
4550    pub fn gst_buffer_new() -> *mut GstBuffer;
4551    pub fn gst_buffer_new_allocate(
4552        allocator: *mut GstAllocator,
4553        size: size_t,
4554        params: *mut GstAllocationParams,
4555    ) -> *mut GstBuffer;
4556    #[cfg(feature = "v1_20")]
4557    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4558    pub fn gst_buffer_new_memdup(data: gconstpointer, size: size_t) -> *mut GstBuffer;
4559    pub fn gst_buffer_new_wrapped(data: gpointer, size: size_t) -> *mut GstBuffer;
4560    #[cfg(feature = "v1_16")]
4561    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4562    pub fn gst_buffer_new_wrapped_bytes(bytes: *mut glib::GBytes) -> *mut GstBuffer;
4563    pub fn gst_buffer_new_wrapped_full(
4564        flags: GstMemoryFlags,
4565        data: gpointer,
4566        maxsize: size_t,
4567        offset: size_t,
4568        size: size_t,
4569        user_data: gpointer,
4570        notify: glib::GDestroyNotify,
4571    ) -> *mut GstBuffer;
4572    #[cfg(feature = "v1_20")]
4573    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4574    pub fn gst_buffer_add_custom_meta(
4575        buffer: *mut GstBuffer,
4576        name: *const c_char,
4577    ) -> *mut GstCustomMeta;
4578    pub fn gst_buffer_add_meta(
4579        buffer: *mut GstBuffer,
4580        info: *const GstMetaInfo,
4581        params: gpointer,
4582    ) -> *mut GstMeta;
4583    pub fn gst_buffer_add_parent_buffer_meta(
4584        buffer: *mut GstBuffer,
4585        ref_: *mut GstBuffer,
4586    ) -> *mut GstParentBufferMeta;
4587    pub fn gst_buffer_add_protection_meta(
4588        buffer: *mut GstBuffer,
4589        info: *mut GstStructure,
4590    ) -> *mut GstProtectionMeta;
4591    pub fn gst_buffer_add_reference_timestamp_meta(
4592        buffer: *mut GstBuffer,
4593        reference: *mut GstCaps,
4594        timestamp: GstClockTime,
4595        duration: GstClockTime,
4596    ) -> *mut GstReferenceTimestampMeta;
4597    pub fn gst_buffer_append(buf1: *mut GstBuffer, buf2: *mut GstBuffer) -> *mut GstBuffer;
4598    pub fn gst_buffer_append_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4599    pub fn gst_buffer_append_region(
4600        buf1: *mut GstBuffer,
4601        buf2: *mut GstBuffer,
4602        offset: ssize_t,
4603        size: ssize_t,
4604    ) -> *mut GstBuffer;
4605    #[cfg(feature = "v1_18_3")]
4606    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4607    pub fn gst_buffer_copy(buf: *const GstBuffer) -> *mut GstBuffer;
4608    pub fn gst_buffer_copy_deep(buf: *const GstBuffer) -> *mut GstBuffer;
4609    pub fn gst_buffer_copy_into(
4610        dest: *mut GstBuffer,
4611        src: *mut GstBuffer,
4612        flags: GstBufferCopyFlags,
4613        offset: size_t,
4614        size: size_t,
4615    ) -> gboolean;
4616    pub fn gst_buffer_copy_region(
4617        parent: *mut GstBuffer,
4618        flags: GstBufferCopyFlags,
4619        offset: size_t,
4620        size: size_t,
4621    ) -> *mut GstBuffer;
4622    pub fn gst_buffer_extract(
4623        buffer: *mut GstBuffer,
4624        offset: size_t,
4625        dest: gpointer,
4626        size: size_t,
4627    ) -> size_t;
4628    pub fn gst_buffer_extract_dup(
4629        buffer: *mut GstBuffer,
4630        offset: size_t,
4631        size: size_t,
4632        dest: *mut u8,
4633        dest_size: *mut size_t,
4634    );
4635    pub fn gst_buffer_fill(
4636        buffer: *mut GstBuffer,
4637        offset: size_t,
4638        src: gconstpointer,
4639        size: size_t,
4640    ) -> size_t;
4641    pub fn gst_buffer_find_memory(
4642        buffer: *mut GstBuffer,
4643        offset: size_t,
4644        size: size_t,
4645        idx: *mut c_uint,
4646        length: *mut c_uint,
4647        skip: *mut size_t,
4648    ) -> gboolean;
4649    pub fn gst_buffer_foreach_meta(
4650        buffer: *mut GstBuffer,
4651        func: GstBufferForeachMetaFunc,
4652        user_data: gpointer,
4653    ) -> gboolean;
4654    pub fn gst_buffer_get_all_memory(buffer: *mut GstBuffer) -> *mut GstMemory;
4655    #[cfg(feature = "v1_20")]
4656    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4657    pub fn gst_buffer_get_custom_meta(
4658        buffer: *mut GstBuffer,
4659        name: *const c_char,
4660    ) -> *mut GstCustomMeta;
4661    pub fn gst_buffer_get_flags(buffer: *mut GstBuffer) -> GstBufferFlags;
4662    pub fn gst_buffer_get_memory(buffer: *mut GstBuffer, idx: c_uint) -> *mut GstMemory;
4663    pub fn gst_buffer_get_memory_range(
4664        buffer: *mut GstBuffer,
4665        idx: c_uint,
4666        length: c_int,
4667    ) -> *mut GstMemory;
4668    pub fn gst_buffer_get_meta(buffer: *mut GstBuffer, api: GType) -> *mut GstMeta;
4669    pub fn gst_buffer_get_n_meta(buffer: *mut GstBuffer, api_type: GType) -> c_uint;
4670    pub fn gst_buffer_get_reference_timestamp_meta(
4671        buffer: *mut GstBuffer,
4672        reference: *mut GstCaps,
4673    ) -> *mut GstReferenceTimestampMeta;
4674    pub fn gst_buffer_get_size(buffer: *mut GstBuffer) -> size_t;
4675    pub fn gst_buffer_get_sizes(
4676        buffer: *mut GstBuffer,
4677        offset: *mut size_t,
4678        maxsize: *mut size_t,
4679    ) -> size_t;
4680    pub fn gst_buffer_get_sizes_range(
4681        buffer: *mut GstBuffer,
4682        idx: c_uint,
4683        length: c_int,
4684        offset: *mut size_t,
4685        maxsize: *mut size_t,
4686    ) -> size_t;
4687    pub fn gst_buffer_has_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4688    pub fn gst_buffer_insert_memory(buffer: *mut GstBuffer, idx: c_int, mem: *mut GstMemory);
4689    pub fn gst_buffer_is_all_memory_writable(buffer: *mut GstBuffer) -> gboolean;
4690    pub fn gst_buffer_is_memory_range_writable(
4691        buffer: *mut GstBuffer,
4692        idx: c_uint,
4693        length: c_int,
4694    ) -> gboolean;
4695    pub fn gst_buffer_iterate_meta(buffer: *mut GstBuffer, state: *mut gpointer) -> *mut GstMeta;
4696    pub fn gst_buffer_iterate_meta_filtered(
4697        buffer: *mut GstBuffer,
4698        state: *mut gpointer,
4699        meta_api_type: GType,
4700    ) -> *mut GstMeta;
4701    pub fn gst_buffer_map(
4702        buffer: *mut GstBuffer,
4703        info: *mut GstMapInfo,
4704        flags: GstMapFlags,
4705    ) -> gboolean;
4706    pub fn gst_buffer_map_range(
4707        buffer: *mut GstBuffer,
4708        idx: c_uint,
4709        length: c_int,
4710        info: *mut GstMapInfo,
4711        flags: GstMapFlags,
4712    ) -> gboolean;
4713    pub fn gst_buffer_memcmp(
4714        buffer: *mut GstBuffer,
4715        offset: size_t,
4716        mem: gconstpointer,
4717        size: size_t,
4718    ) -> c_int;
4719    pub fn gst_buffer_memset(
4720        buffer: *mut GstBuffer,
4721        offset: size_t,
4722        val: u8,
4723        size: size_t,
4724    ) -> size_t;
4725    pub fn gst_buffer_n_memory(buffer: *mut GstBuffer) -> c_uint;
4726    pub fn gst_buffer_peek_memory(buffer: *mut GstBuffer, idx: c_uint) -> *mut GstMemory;
4727    pub fn gst_buffer_prepend_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4728    #[cfg(feature = "v1_18_3")]
4729    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4730    pub fn gst_buffer_ref(buf: *mut GstBuffer) -> *mut GstBuffer;
4731    pub fn gst_buffer_remove_all_memory(buffer: *mut GstBuffer);
4732    pub fn gst_buffer_remove_memory(buffer: *mut GstBuffer, idx: c_uint);
4733    pub fn gst_buffer_remove_memory_range(buffer: *mut GstBuffer, idx: c_uint, length: c_int);
4734    pub fn gst_buffer_remove_meta(buffer: *mut GstBuffer, meta: *mut GstMeta) -> gboolean;
4735    pub fn gst_buffer_replace_all_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4736    pub fn gst_buffer_replace_memory(buffer: *mut GstBuffer, idx: c_uint, mem: *mut GstMemory);
4737    pub fn gst_buffer_replace_memory_range(
4738        buffer: *mut GstBuffer,
4739        idx: c_uint,
4740        length: c_int,
4741        mem: *mut GstMemory,
4742    );
4743    pub fn gst_buffer_resize(buffer: *mut GstBuffer, offset: ssize_t, size: ssize_t);
4744    pub fn gst_buffer_resize_range(
4745        buffer: *mut GstBuffer,
4746        idx: c_uint,
4747        length: c_int,
4748        offset: ssize_t,
4749        size: ssize_t,
4750    ) -> gboolean;
4751    pub fn gst_buffer_set_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4752    pub fn gst_buffer_set_size(buffer: *mut GstBuffer, size: ssize_t);
4753    pub fn gst_buffer_unmap(buffer: *mut GstBuffer, info: *mut GstMapInfo);
4754    #[cfg(feature = "v1_18_3")]
4755    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4756    pub fn gst_buffer_unref(buf: *mut GstBuffer);
4757    pub fn gst_buffer_unset_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4758    pub fn gst_buffer_get_max_memory() -> c_uint;
4759    #[cfg(feature = "v1_18_3")]
4760    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4761    pub fn gst_buffer_replace(obuf: *mut *mut GstBuffer, nbuf: *mut GstBuffer) -> gboolean;
4762
4763    //=========================================================================
4764    // GstBufferList
4765    //=========================================================================
4766    pub fn gst_buffer_list_get_type() -> GType;
4767    pub fn gst_buffer_list_new() -> *mut GstBufferList;
4768    pub fn gst_buffer_list_new_sized(size: c_uint) -> *mut GstBufferList;
4769    pub fn gst_buffer_list_calculate_size(list: *mut GstBufferList) -> size_t;
4770    #[cfg(feature = "v1_18_3")]
4771    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4772    pub fn gst_buffer_list_copy(list: *const GstBufferList) -> *mut GstBufferList;
4773    pub fn gst_buffer_list_copy_deep(list: *const GstBufferList) -> *mut GstBufferList;
4774    pub fn gst_buffer_list_foreach(
4775        list: *mut GstBufferList,
4776        func: GstBufferListFunc,
4777        user_data: gpointer,
4778    ) -> gboolean;
4779    pub fn gst_buffer_list_get(list: *mut GstBufferList, idx: c_uint) -> *mut GstBuffer;
4780    pub fn gst_buffer_list_get_writable(list: *mut GstBufferList, idx: c_uint) -> *mut GstBuffer;
4781    pub fn gst_buffer_list_insert(list: *mut GstBufferList, idx: c_int, buffer: *mut GstBuffer);
4782    pub fn gst_buffer_list_length(list: *mut GstBufferList) -> c_uint;
4783    #[cfg(feature = "v1_18_3")]
4784    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4785    pub fn gst_buffer_list_ref(list: *mut GstBufferList) -> *mut GstBufferList;
4786    pub fn gst_buffer_list_remove(list: *mut GstBufferList, idx: c_uint, length: c_uint);
4787    #[cfg(feature = "v1_18_3")]
4788    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4789    pub fn gst_buffer_list_unref(list: *mut GstBufferList);
4790    #[cfg(feature = "v1_18_3")]
4791    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4792    pub fn gst_buffer_list_replace(
4793        old_list: *mut *mut GstBufferList,
4794        new_list: *mut GstBufferList,
4795    ) -> gboolean;
4796    #[cfg(feature = "v1_18_3")]
4797    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4798    pub fn gst_buffer_list_take(
4799        old_list: *mut *mut GstBufferList,
4800        new_list: *mut GstBufferList,
4801    ) -> gboolean;
4802
4803    //=========================================================================
4804    // GstCaps
4805    //=========================================================================
4806    pub fn gst_caps_get_type() -> GType;
4807    pub fn gst_caps_new_any() -> *mut GstCaps;
4808    pub fn gst_caps_new_empty() -> *mut GstCaps;
4809    pub fn gst_caps_new_empty_simple(media_type: *const c_char) -> *mut GstCaps;
4810    pub fn gst_caps_new_full(struct1: *mut GstStructure, ...) -> *mut GstCaps;
4811    //pub fn gst_caps_new_full_valist(structure: *mut GstStructure, var_args: /*Unimplemented*/va_list) -> *mut GstCaps;
4812    #[cfg(feature = "v1_26")]
4813    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4814    pub fn gst_caps_new_id_str_empty_simple(media_type: *const GstIdStr) -> *mut GstCaps;
4815    #[cfg(feature = "v1_26")]
4816    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4817    pub fn gst_caps_new_id_str_simple(
4818        media_type: *const GstIdStr,
4819        fieldname: *const GstIdStr,
4820        ...
4821    ) -> *mut GstCaps;
4822    pub fn gst_caps_new_simple(
4823        media_type: *const c_char,
4824        fieldname: *const c_char,
4825        ...
4826    ) -> *mut GstCaps;
4827    #[cfg(feature = "v1_26")]
4828    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4829    pub fn gst_caps_new_static_str_empty_simple(media_type: *const c_char) -> *mut GstCaps;
4830    #[cfg(feature = "v1_26")]
4831    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4832    pub fn gst_caps_new_static_str_simple(
4833        media_type: *const c_char,
4834        fieldname: *const c_char,
4835        ...
4836    ) -> *mut GstCaps;
4837    pub fn gst_caps_append(caps1: *mut GstCaps, caps2: *mut GstCaps);
4838    pub fn gst_caps_append_structure(caps: *mut GstCaps, structure: *mut GstStructure);
4839    pub fn gst_caps_append_structure_full(
4840        caps: *mut GstCaps,
4841        structure: *mut GstStructure,
4842        features: *mut GstCapsFeatures,
4843    );
4844    pub fn gst_caps_can_intersect(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4845    #[cfg(feature = "v1_16")]
4846    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4847    pub fn gst_caps_copy(caps: *const GstCaps) -> *mut GstCaps;
4848    #[cfg(feature = "v1_16")]
4849    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4850    pub fn gst_caps_copy_nth(caps: *const GstCaps, nth: c_uint) -> *mut GstCaps;
4851    pub fn gst_caps_filter_and_map_in_place(
4852        caps: *mut GstCaps,
4853        func: GstCapsFilterMapFunc,
4854        user_data: gpointer,
4855    );
4856    pub fn gst_caps_fixate(caps: *mut GstCaps) -> *mut GstCaps;
4857    pub fn gst_caps_foreach(
4858        caps: *const GstCaps,
4859        func: GstCapsForeachFunc,
4860        user_data: gpointer,
4861    ) -> gboolean;
4862    pub fn gst_caps_get_features(caps: *const GstCaps, index: c_uint) -> *mut GstCapsFeatures;
4863    pub fn gst_caps_get_size(caps: *const GstCaps) -> c_uint;
4864    pub fn gst_caps_get_structure(caps: *const GstCaps, index: c_uint) -> *mut GstStructure;
4865    #[cfg(feature = "v1_26")]
4866    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4867    pub fn gst_caps_id_str_set_simple(caps: *mut GstCaps, field: *const GstIdStr, ...);
4868    //#[cfg(feature = "v1_26")]
4869    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4870    //pub fn gst_caps_id_str_set_simple_valist(caps: *mut GstCaps, field: *const GstIdStr, varargs: /*Unimplemented*/va_list);
4871    #[cfg(feature = "v1_26")]
4872    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4873    pub fn gst_caps_id_str_set_value(
4874        caps: *mut GstCaps,
4875        field: *const GstIdStr,
4876        value: *const gobject::GValue,
4877    );
4878    pub fn gst_caps_intersect(caps1: *mut GstCaps, caps2: *mut GstCaps) -> *mut GstCaps;
4879    pub fn gst_caps_intersect_full(
4880        caps1: *mut GstCaps,
4881        caps2: *mut GstCaps,
4882        mode: GstCapsIntersectMode,
4883    ) -> *mut GstCaps;
4884    pub fn gst_caps_is_always_compatible(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4885    pub fn gst_caps_is_any(caps: *const GstCaps) -> gboolean;
4886    pub fn gst_caps_is_empty(caps: *const GstCaps) -> gboolean;
4887    pub fn gst_caps_is_equal(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4888    pub fn gst_caps_is_equal_fixed(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4889    pub fn gst_caps_is_fixed(caps: *const GstCaps) -> gboolean;
4890    pub fn gst_caps_is_strictly_equal(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4891    pub fn gst_caps_is_subset(subset: *const GstCaps, superset: *const GstCaps) -> gboolean;
4892    pub fn gst_caps_is_subset_structure(
4893        caps: *const GstCaps,
4894        structure: *const GstStructure,
4895    ) -> gboolean;
4896    pub fn gst_caps_is_subset_structure_full(
4897        caps: *const GstCaps,
4898        structure: *const GstStructure,
4899        features: *const GstCapsFeatures,
4900    ) -> gboolean;
4901    pub fn gst_caps_map_in_place(
4902        caps: *mut GstCaps,
4903        func: GstCapsMapFunc,
4904        user_data: gpointer,
4905    ) -> gboolean;
4906    pub fn gst_caps_merge(caps1: *mut GstCaps, caps2: *mut GstCaps) -> *mut GstCaps;
4907    pub fn gst_caps_merge_structure(
4908        caps: *mut GstCaps,
4909        structure: *mut GstStructure,
4910    ) -> *mut GstCaps;
4911    pub fn gst_caps_merge_structure_full(
4912        caps: *mut GstCaps,
4913        structure: *mut GstStructure,
4914        features: *mut GstCapsFeatures,
4915    ) -> *mut GstCaps;
4916    pub fn gst_caps_normalize(caps: *mut GstCaps) -> *mut GstCaps;
4917    #[cfg(feature = "v1_18_3")]
4918    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4919    pub fn gst_caps_ref(caps: *mut GstCaps) -> *mut GstCaps;
4920    pub fn gst_caps_remove_structure(caps: *mut GstCaps, idx: c_uint);
4921    #[cfg(feature = "v1_20")]
4922    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4923    pub fn gst_caps_serialize(caps: *const GstCaps, flags: GstSerializeFlags) -> *mut c_char;
4924    pub fn gst_caps_set_features(caps: *mut GstCaps, index: c_uint, features: *mut GstCapsFeatures);
4925    #[cfg(feature = "v1_16")]
4926    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4927    pub fn gst_caps_set_features_simple(caps: *mut GstCaps, features: *mut GstCapsFeatures);
4928    pub fn gst_caps_set_simple(caps: *mut GstCaps, field: *const c_char, ...);
4929    #[cfg(feature = "v1_26")]
4930    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4931    pub fn gst_caps_set_simple_static_str(caps: *mut GstCaps, field: *const c_char, ...);
4932    //#[cfg(feature = "v1_26")]
4933    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4934    //pub fn gst_caps_set_simple_static_str_valist(caps: *mut GstCaps, field: *const c_char, varargs: /*Unimplemented*/va_list);
4935    //pub fn gst_caps_set_simple_valist(caps: *mut GstCaps, field: *const c_char, varargs: /*Unimplemented*/va_list);
4936    pub fn gst_caps_set_value(
4937        caps: *mut GstCaps,
4938        field: *const c_char,
4939        value: *const gobject::GValue,
4940    );
4941    #[cfg(feature = "v1_26")]
4942    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4943    pub fn gst_caps_set_value_static_str(
4944        caps: *mut GstCaps,
4945        field: *const c_char,
4946        value: *const gobject::GValue,
4947    );
4948    pub fn gst_caps_simplify(caps: *mut GstCaps) -> *mut GstCaps;
4949    pub fn gst_caps_steal_structure(caps: *mut GstCaps, index: c_uint) -> *mut GstStructure;
4950    pub fn gst_caps_subtract(minuend: *mut GstCaps, subtrahend: *mut GstCaps) -> *mut GstCaps;
4951    pub fn gst_caps_to_string(caps: *const GstCaps) -> *mut c_char;
4952    pub fn gst_caps_truncate(caps: *mut GstCaps) -> *mut GstCaps;
4953    #[cfg(feature = "v1_18_3")]
4954    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4955    pub fn gst_caps_unref(caps: *mut GstCaps);
4956    pub fn gst_caps_from_string(string: *const c_char) -> *mut GstCaps;
4957    #[cfg(feature = "v1_18_3")]
4958    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4959    pub fn gst_caps_replace(old_caps: *mut *mut GstCaps, new_caps: *mut GstCaps) -> gboolean;
4960    #[cfg(feature = "v1_18_3")]
4961    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4962    pub fn gst_caps_take(old_caps: *mut *mut GstCaps, new_caps: *mut GstCaps) -> gboolean;
4963
4964    //=========================================================================
4965    // GstCapsFeatures
4966    //=========================================================================
4967    pub fn gst_caps_features_get_type() -> GType;
4968    pub fn gst_caps_features_new(feature1: *const c_char, ...) -> *mut GstCapsFeatures;
4969    pub fn gst_caps_features_new_any() -> *mut GstCapsFeatures;
4970    pub fn gst_caps_features_new_empty() -> *mut GstCapsFeatures;
4971    pub fn gst_caps_features_new_id(feature1: glib::GQuark, ...) -> *mut GstCapsFeatures;
4972    #[cfg(feature = "v1_26")]
4973    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4974    pub fn gst_caps_features_new_id_str(feature1: *const GstIdStr, ...) -> *mut GstCapsFeatures;
4975    //#[cfg(feature = "v1_26")]
4976    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4977    //pub fn gst_caps_features_new_id_str_valist(feature1: *const GstIdStr, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
4978    //pub fn gst_caps_features_new_id_valist(feature1: glib::GQuark, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
4979    #[cfg(feature = "v1_20")]
4980    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4981    pub fn gst_caps_features_new_single(feature: *const c_char) -> *mut GstCapsFeatures;
4982    #[cfg(feature = "v1_26")]
4983    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4984    pub fn gst_caps_features_new_single_static_str(feature: *const c_char) -> *mut GstCapsFeatures;
4985    #[cfg(feature = "v1_26")]
4986    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4987    pub fn gst_caps_features_new_static_str(feature1: *const c_char, ...) -> *mut GstCapsFeatures;
4988    //#[cfg(feature = "v1_26")]
4989    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4990    //pub fn gst_caps_features_new_static_str_valist(feature1: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
4991    //pub fn gst_caps_features_new_valist(feature1: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
4992    pub fn gst_caps_features_add(features: *mut GstCapsFeatures, feature: *const c_char);
4993    pub fn gst_caps_features_add_id(features: *mut GstCapsFeatures, feature: glib::GQuark);
4994    #[cfg(feature = "v1_26")]
4995    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4996    pub fn gst_caps_features_add_id_str(features: *mut GstCapsFeatures, feature: *const GstIdStr);
4997    #[cfg(feature = "v1_26")]
4998    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4999    pub fn gst_caps_features_add_static_str(features: *mut GstCapsFeatures, feature: *const c_char);
5000    pub fn gst_caps_features_contains(
5001        features: *const GstCapsFeatures,
5002        feature: *const c_char,
5003    ) -> gboolean;
5004    pub fn gst_caps_features_contains_id(
5005        features: *const GstCapsFeatures,
5006        feature: glib::GQuark,
5007    ) -> gboolean;
5008    #[cfg(feature = "v1_26")]
5009    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5010    pub fn gst_caps_features_contains_id_str(
5011        features: *const GstCapsFeatures,
5012        feature: *const GstIdStr,
5013    ) -> gboolean;
5014    pub fn gst_caps_features_copy(features: *const GstCapsFeatures) -> *mut GstCapsFeatures;
5015    pub fn gst_caps_features_free(features: *mut GstCapsFeatures);
5016    pub fn gst_caps_features_get_nth(features: *const GstCapsFeatures, i: c_uint) -> *const c_char;
5017    pub fn gst_caps_features_get_nth_id(
5018        features: *const GstCapsFeatures,
5019        i: c_uint,
5020    ) -> glib::GQuark;
5021    #[cfg(feature = "v1_26")]
5022    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5023    pub fn gst_caps_features_get_nth_id_str(
5024        features: *const GstCapsFeatures,
5025        i: c_uint,
5026    ) -> *const GstIdStr;
5027    pub fn gst_caps_features_get_size(features: *const GstCapsFeatures) -> c_uint;
5028    pub fn gst_caps_features_is_any(features: *const GstCapsFeatures) -> gboolean;
5029    pub fn gst_caps_features_is_equal(
5030        features1: *const GstCapsFeatures,
5031        features2: *const GstCapsFeatures,
5032    ) -> gboolean;
5033    pub fn gst_caps_features_remove(features: *mut GstCapsFeatures, feature: *const c_char);
5034    pub fn gst_caps_features_remove_id(features: *mut GstCapsFeatures, feature: glib::GQuark);
5035    #[cfg(feature = "v1_26")]
5036    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5037    pub fn gst_caps_features_remove_id_str(
5038        features: *mut GstCapsFeatures,
5039        feature: *const GstIdStr,
5040    );
5041    pub fn gst_caps_features_set_parent_refcount(
5042        features: *mut GstCapsFeatures,
5043        refcount: *mut c_int,
5044    ) -> gboolean;
5045    pub fn gst_caps_features_to_string(features: *const GstCapsFeatures) -> *mut c_char;
5046    pub fn gst_caps_features_from_string(features: *const c_char) -> *mut GstCapsFeatures;
5047
5048    //=========================================================================
5049    // GstContext
5050    //=========================================================================
5051    pub fn gst_context_get_type() -> GType;
5052    pub fn gst_context_new(context_type: *const c_char, persistent: gboolean) -> *mut GstContext;
5053    #[cfg(feature = "v1_18_3")]
5054    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5055    pub fn gst_context_copy(context: *const GstContext) -> *mut GstContext;
5056    pub fn gst_context_get_context_type(context: *const GstContext) -> *const c_char;
5057    pub fn gst_context_get_structure(context: *const GstContext) -> *const GstStructure;
5058    pub fn gst_context_has_context_type(
5059        context: *const GstContext,
5060        context_type: *const c_char,
5061    ) -> gboolean;
5062    pub fn gst_context_is_persistent(context: *const GstContext) -> gboolean;
5063    #[cfg(feature = "v1_18_3")]
5064    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5065    pub fn gst_context_ref(context: *mut GstContext) -> *mut GstContext;
5066    #[cfg(feature = "v1_18_3")]
5067    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5068    pub fn gst_context_unref(context: *mut GstContext);
5069    pub fn gst_context_writable_structure(context: *mut GstContext) -> *mut GstStructure;
5070    #[cfg(feature = "v1_18_3")]
5071    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5072    pub fn gst_context_replace(
5073        old_context: *mut *mut GstContext,
5074        new_context: *mut GstContext,
5075    ) -> gboolean;
5076
5077    //=========================================================================
5078    // GstCustomMeta
5079    //=========================================================================
5080    #[cfg(feature = "v1_20")]
5081    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5082    pub fn gst_custom_meta_get_structure(meta: *mut GstCustomMeta) -> *mut GstStructure;
5083    #[cfg(feature = "v1_20")]
5084    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5085    pub fn gst_custom_meta_has_name(meta: *mut GstCustomMeta, name: *const c_char) -> gboolean;
5086
5087    //=========================================================================
5088    // GstDateTime
5089    //=========================================================================
5090    pub fn gst_date_time_get_type() -> GType;
5091    pub fn gst_date_time_new(
5092        tzoffset: c_float,
5093        year: c_int,
5094        month: c_int,
5095        day: c_int,
5096        hour: c_int,
5097        minute: c_int,
5098        seconds: c_double,
5099    ) -> *mut GstDateTime;
5100    pub fn gst_date_time_new_from_g_date_time(dt: *mut glib::GDateTime) -> *mut GstDateTime;
5101    pub fn gst_date_time_new_from_iso8601_string(string: *const c_char) -> *mut GstDateTime;
5102    pub fn gst_date_time_new_from_unix_epoch_local_time(secs: i64) -> *mut GstDateTime;
5103    #[cfg(feature = "v1_18")]
5104    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5105    pub fn gst_date_time_new_from_unix_epoch_local_time_usecs(usecs: i64) -> *mut GstDateTime;
5106    pub fn gst_date_time_new_from_unix_epoch_utc(secs: i64) -> *mut GstDateTime;
5107    #[cfg(feature = "v1_18")]
5108    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5109    pub fn gst_date_time_new_from_unix_epoch_utc_usecs(usecs: i64) -> *mut GstDateTime;
5110    pub fn gst_date_time_new_local_time(
5111        year: c_int,
5112        month: c_int,
5113        day: c_int,
5114        hour: c_int,
5115        minute: c_int,
5116        seconds: c_double,
5117    ) -> *mut GstDateTime;
5118    pub fn gst_date_time_new_now_local_time() -> *mut GstDateTime;
5119    pub fn gst_date_time_new_now_utc() -> *mut GstDateTime;
5120    pub fn gst_date_time_new_y(year: c_int) -> *mut GstDateTime;
5121    pub fn gst_date_time_new_ym(year: c_int, month: c_int) -> *mut GstDateTime;
5122    pub fn gst_date_time_new_ymd(year: c_int, month: c_int, day: c_int) -> *mut GstDateTime;
5123    pub fn gst_date_time_get_day(datetime: *const GstDateTime) -> c_int;
5124    pub fn gst_date_time_get_hour(datetime: *const GstDateTime) -> c_int;
5125    pub fn gst_date_time_get_microsecond(datetime: *const GstDateTime) -> c_int;
5126    pub fn gst_date_time_get_minute(datetime: *const GstDateTime) -> c_int;
5127    pub fn gst_date_time_get_month(datetime: *const GstDateTime) -> c_int;
5128    pub fn gst_date_time_get_second(datetime: *const GstDateTime) -> c_int;
5129    pub fn gst_date_time_get_time_zone_offset(datetime: *const GstDateTime) -> c_float;
5130    pub fn gst_date_time_get_year(datetime: *const GstDateTime) -> c_int;
5131    pub fn gst_date_time_has_day(datetime: *const GstDateTime) -> gboolean;
5132    pub fn gst_date_time_has_month(datetime: *const GstDateTime) -> gboolean;
5133    pub fn gst_date_time_has_second(datetime: *const GstDateTime) -> gboolean;
5134    pub fn gst_date_time_has_time(datetime: *const GstDateTime) -> gboolean;
5135    pub fn gst_date_time_has_year(datetime: *const GstDateTime) -> gboolean;
5136    pub fn gst_date_time_ref(datetime: *mut GstDateTime) -> *mut GstDateTime;
5137    pub fn gst_date_time_to_g_date_time(datetime: *mut GstDateTime) -> *mut glib::GDateTime;
5138    pub fn gst_date_time_to_iso8601_string(datetime: *mut GstDateTime) -> *mut c_char;
5139    pub fn gst_date_time_unref(datetime: *mut GstDateTime);
5140
5141    //=========================================================================
5142    // GstDebugCategory
5143    //=========================================================================
5144    pub fn gst_debug_category_free(category: *mut GstDebugCategory);
5145    pub fn gst_debug_category_get_color(category: *mut GstDebugCategory) -> c_uint;
5146    pub fn gst_debug_category_get_description(category: *mut GstDebugCategory) -> *const c_char;
5147    pub fn gst_debug_category_get_name(category: *mut GstDebugCategory) -> *const c_char;
5148    pub fn gst_debug_category_get_threshold(category: *mut GstDebugCategory) -> GstDebugLevel;
5149    pub fn gst_debug_category_reset_threshold(category: *mut GstDebugCategory);
5150    pub fn gst_debug_category_set_threshold(category: *mut GstDebugCategory, level: GstDebugLevel);
5151
5152    //=========================================================================
5153    // GstDebugMessage
5154    //=========================================================================
5155    pub fn gst_debug_message_get(message: *mut GstDebugMessage) -> *const c_char;
5156    #[cfg(feature = "v1_22")]
5157    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
5158    pub fn gst_debug_message_get_id(message: *mut GstDebugMessage) -> *const c_char;
5159
5160    //=========================================================================
5161    // GstDeviceProviderClass
5162    //=========================================================================
5163    pub fn gst_device_provider_class_add_metadata(
5164        klass: *mut GstDeviceProviderClass,
5165        key: *const c_char,
5166        value: *const c_char,
5167    );
5168    pub fn gst_device_provider_class_add_static_metadata(
5169        klass: *mut GstDeviceProviderClass,
5170        key: *const c_char,
5171        value: *const c_char,
5172    );
5173    pub fn gst_device_provider_class_get_metadata(
5174        klass: *mut GstDeviceProviderClass,
5175        key: *const c_char,
5176    ) -> *const c_char;
5177    pub fn gst_device_provider_class_set_metadata(
5178        klass: *mut GstDeviceProviderClass,
5179        longname: *const c_char,
5180        classification: *const c_char,
5181        description: *const c_char,
5182        author: *const c_char,
5183    );
5184    pub fn gst_device_provider_class_set_static_metadata(
5185        klass: *mut GstDeviceProviderClass,
5186        longname: *const c_char,
5187        classification: *const c_char,
5188        description: *const c_char,
5189        author: *const c_char,
5190    );
5191
5192    //=========================================================================
5193    // GstElementClass
5194    //=========================================================================
5195    pub fn gst_element_class_add_metadata(
5196        klass: *mut GstElementClass,
5197        key: *const c_char,
5198        value: *const c_char,
5199    );
5200    pub fn gst_element_class_add_pad_template(
5201        klass: *mut GstElementClass,
5202        templ: *mut GstPadTemplate,
5203    );
5204    pub fn gst_element_class_add_static_metadata(
5205        klass: *mut GstElementClass,
5206        key: *const c_char,
5207        value: *const c_char,
5208    );
5209    pub fn gst_element_class_add_static_pad_template(
5210        klass: *mut GstElementClass,
5211        static_templ: *mut GstStaticPadTemplate,
5212    );
5213    pub fn gst_element_class_add_static_pad_template_with_gtype(
5214        klass: *mut GstElementClass,
5215        static_templ: *mut GstStaticPadTemplate,
5216        pad_type: GType,
5217    );
5218    pub fn gst_element_class_get_metadata(
5219        klass: *mut GstElementClass,
5220        key: *const c_char,
5221    ) -> *const c_char;
5222    pub fn gst_element_class_get_pad_template(
5223        element_class: *mut GstElementClass,
5224        name: *const c_char,
5225    ) -> *mut GstPadTemplate;
5226    pub fn gst_element_class_get_pad_template_list(
5227        element_class: *mut GstElementClass,
5228    ) -> *mut glib::GList;
5229    pub fn gst_element_class_set_metadata(
5230        klass: *mut GstElementClass,
5231        longname: *const c_char,
5232        classification: *const c_char,
5233        description: *const c_char,
5234        author: *const c_char,
5235    );
5236    pub fn gst_element_class_set_static_metadata(
5237        klass: *mut GstElementClass,
5238        longname: *const c_char,
5239        classification: *const c_char,
5240        description: *const c_char,
5241        author: *const c_char,
5242    );
5243
5244    //=========================================================================
5245    // GstEvent
5246    //=========================================================================
5247    pub fn gst_event_get_type() -> GType;
5248    pub fn gst_event_new_buffer_size(
5249        format: GstFormat,
5250        minsize: i64,
5251        maxsize: i64,
5252        async_: gboolean,
5253    ) -> *mut GstEvent;
5254    pub fn gst_event_new_caps(caps: *mut GstCaps) -> *mut GstEvent;
5255    pub fn gst_event_new_custom(type_: GstEventType, structure: *mut GstStructure)
5256        -> *mut GstEvent;
5257    pub fn gst_event_new_eos() -> *mut GstEvent;
5258    pub fn gst_event_new_flush_start() -> *mut GstEvent;
5259    pub fn gst_event_new_flush_stop(reset_time: gboolean) -> *mut GstEvent;
5260    pub fn gst_event_new_gap(timestamp: GstClockTime, duration: GstClockTime) -> *mut GstEvent;
5261    #[cfg(feature = "v1_18")]
5262    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5263    pub fn gst_event_new_instant_rate_change(
5264        rate_multiplier: c_double,
5265        new_flags: GstSegmentFlags,
5266    ) -> *mut GstEvent;
5267    #[cfg(feature = "v1_18")]
5268    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5269    pub fn gst_event_new_instant_rate_sync_time(
5270        rate_multiplier: c_double,
5271        running_time: GstClockTime,
5272        upstream_running_time: GstClockTime,
5273    ) -> *mut GstEvent;
5274    pub fn gst_event_new_latency(latency: GstClockTime) -> *mut GstEvent;
5275    pub fn gst_event_new_navigation(structure: *mut GstStructure) -> *mut GstEvent;
5276    pub fn gst_event_new_protection(
5277        system_id: *const c_char,
5278        data: *mut GstBuffer,
5279        origin: *const c_char,
5280    ) -> *mut GstEvent;
5281    pub fn gst_event_new_qos(
5282        type_: GstQOSType,
5283        proportion: c_double,
5284        diff: GstClockTimeDiff,
5285        timestamp: GstClockTime,
5286    ) -> *mut GstEvent;
5287    pub fn gst_event_new_reconfigure() -> *mut GstEvent;
5288    pub fn gst_event_new_seek(
5289        rate: c_double,
5290        format: GstFormat,
5291        flags: GstSeekFlags,
5292        start_type: GstSeekType,
5293        start: i64,
5294        stop_type: GstSeekType,
5295        stop: i64,
5296    ) -> *mut GstEvent;
5297    pub fn gst_event_new_segment(segment: *const GstSegment) -> *mut GstEvent;
5298    pub fn gst_event_new_segment_done(format: GstFormat, position: i64) -> *mut GstEvent;
5299    pub fn gst_event_new_select_streams(streams: *mut glib::GList) -> *mut GstEvent;
5300    pub fn gst_event_new_sink_message(name: *const c_char, msg: *mut GstMessage) -> *mut GstEvent;
5301    pub fn gst_event_new_step(
5302        format: GstFormat,
5303        amount: u64,
5304        rate: c_double,
5305        flush: gboolean,
5306        intermediate: gboolean,
5307    ) -> *mut GstEvent;
5308    pub fn gst_event_new_stream_collection(collection: *mut GstStreamCollection) -> *mut GstEvent;
5309    pub fn gst_event_new_stream_group_done(group_id: c_uint) -> *mut GstEvent;
5310    pub fn gst_event_new_stream_start(stream_id: *const c_char) -> *mut GstEvent;
5311    pub fn gst_event_new_tag(taglist: *mut GstTagList) -> *mut GstEvent;
5312    pub fn gst_event_new_toc(toc: *mut GstToc, updated: gboolean) -> *mut GstEvent;
5313    pub fn gst_event_new_toc_select(uid: *const c_char) -> *mut GstEvent;
5314    #[cfg(feature = "v1_18_3")]
5315    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5316    pub fn gst_event_copy(event: *const GstEvent) -> *mut GstEvent;
5317    pub fn gst_event_copy_segment(event: *mut GstEvent, segment: *mut GstSegment);
5318    pub fn gst_event_get_running_time_offset(event: *mut GstEvent) -> i64;
5319    pub fn gst_event_get_seqnum(event: *mut GstEvent) -> u32;
5320    pub fn gst_event_get_structure(event: *mut GstEvent) -> *const GstStructure;
5321    pub fn gst_event_has_name(event: *mut GstEvent, name: *const c_char) -> gboolean;
5322    #[cfg(feature = "v1_18")]
5323    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5324    pub fn gst_event_has_name_id(event: *mut GstEvent, name: glib::GQuark) -> gboolean;
5325    pub fn gst_event_parse_buffer_size(
5326        event: *mut GstEvent,
5327        format: *mut GstFormat,
5328        minsize: *mut i64,
5329        maxsize: *mut i64,
5330        async_: *mut gboolean,
5331    );
5332    pub fn gst_event_parse_caps(event: *mut GstEvent, caps: *mut *mut GstCaps);
5333    pub fn gst_event_parse_flush_stop(event: *mut GstEvent, reset_time: *mut gboolean);
5334    pub fn gst_event_parse_gap(
5335        event: *mut GstEvent,
5336        timestamp: *mut GstClockTime,
5337        duration: *mut GstClockTime,
5338    );
5339    #[cfg(feature = "v1_20")]
5340    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5341    pub fn gst_event_parse_gap_flags(event: *mut GstEvent, flags: *mut GstGapFlags);
5342    pub fn gst_event_parse_group_id(event: *mut GstEvent, group_id: *mut c_uint) -> gboolean;
5343    #[cfg(feature = "v1_18")]
5344    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5345    pub fn gst_event_parse_instant_rate_change(
5346        event: *mut GstEvent,
5347        rate_multiplier: *mut c_double,
5348        new_flags: *mut GstSegmentFlags,
5349    );
5350    #[cfg(feature = "v1_18")]
5351    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5352    pub fn gst_event_parse_instant_rate_sync_time(
5353        event: *mut GstEvent,
5354        rate_multiplier: *mut c_double,
5355        running_time: *mut GstClockTime,
5356        upstream_running_time: *mut GstClockTime,
5357    );
5358    pub fn gst_event_parse_latency(event: *mut GstEvent, latency: *mut GstClockTime);
5359    pub fn gst_event_parse_protection(
5360        event: *mut GstEvent,
5361        system_id: *mut *const c_char,
5362        data: *mut *mut GstBuffer,
5363        origin: *mut *const c_char,
5364    );
5365    pub fn gst_event_parse_qos(
5366        event: *mut GstEvent,
5367        type_: *mut GstQOSType,
5368        proportion: *mut c_double,
5369        diff: *mut GstClockTimeDiff,
5370        timestamp: *mut GstClockTime,
5371    );
5372    pub fn gst_event_parse_seek(
5373        event: *mut GstEvent,
5374        rate: *mut c_double,
5375        format: *mut GstFormat,
5376        flags: *mut GstSeekFlags,
5377        start_type: *mut GstSeekType,
5378        start: *mut i64,
5379        stop_type: *mut GstSeekType,
5380        stop: *mut i64,
5381    );
5382    #[cfg(feature = "v1_16")]
5383    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5384    pub fn gst_event_parse_seek_trickmode_interval(
5385        event: *mut GstEvent,
5386        interval: *mut GstClockTime,
5387    );
5388    pub fn gst_event_parse_segment(event: *mut GstEvent, segment: *mut *const GstSegment);
5389    pub fn gst_event_parse_segment_done(
5390        event: *mut GstEvent,
5391        format: *mut GstFormat,
5392        position: *mut i64,
5393    );
5394    pub fn gst_event_parse_select_streams(event: *mut GstEvent, streams: *mut *mut glib::GList);
5395    pub fn gst_event_parse_sink_message(event: *mut GstEvent, msg: *mut *mut GstMessage);
5396    pub fn gst_event_parse_step(
5397        event: *mut GstEvent,
5398        format: *mut GstFormat,
5399        amount: *mut u64,
5400        rate: *mut c_double,
5401        flush: *mut gboolean,
5402        intermediate: *mut gboolean,
5403    );
5404    pub fn gst_event_parse_stream(event: *mut GstEvent, stream: *mut *mut GstStream);
5405    pub fn gst_event_parse_stream_collection(
5406        event: *mut GstEvent,
5407        collection: *mut *mut GstStreamCollection,
5408    );
5409    pub fn gst_event_parse_stream_flags(event: *mut GstEvent, flags: *mut GstStreamFlags);
5410    pub fn gst_event_parse_stream_group_done(event: *mut GstEvent, group_id: *mut c_uint);
5411    pub fn gst_event_parse_stream_start(event: *mut GstEvent, stream_id: *mut *const c_char);
5412    pub fn gst_event_parse_tag(event: *mut GstEvent, taglist: *mut *mut GstTagList);
5413    pub fn gst_event_parse_toc(event: *mut GstEvent, toc: *mut *mut GstToc, updated: *mut gboolean);
5414    pub fn gst_event_parse_toc_select(event: *mut GstEvent, uid: *mut *mut c_char);
5415    #[cfg(feature = "v1_18_3")]
5416    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5417    pub fn gst_event_ref(event: *mut GstEvent) -> *mut GstEvent;
5418    #[cfg(feature = "v1_20")]
5419    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5420    pub fn gst_event_set_gap_flags(event: *mut GstEvent, flags: GstGapFlags);
5421    pub fn gst_event_set_group_id(event: *mut GstEvent, group_id: c_uint);
5422    pub fn gst_event_set_running_time_offset(event: *mut GstEvent, offset: i64);
5423    #[cfg(feature = "v1_16")]
5424    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5425    pub fn gst_event_set_seek_trickmode_interval(event: *mut GstEvent, interval: GstClockTime);
5426    pub fn gst_event_set_seqnum(event: *mut GstEvent, seqnum: u32);
5427    pub fn gst_event_set_stream(event: *mut GstEvent, stream: *mut GstStream);
5428    pub fn gst_event_set_stream_flags(event: *mut GstEvent, flags: GstStreamFlags);
5429    #[cfg(feature = "v1_18_3")]
5430    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5431    pub fn gst_event_unref(event: *mut GstEvent);
5432    pub fn gst_event_writable_structure(event: *mut GstEvent) -> *mut GstStructure;
5433    #[cfg(feature = "v1_18_3")]
5434    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5435    pub fn gst_event_replace(old_event: *mut *mut GstEvent, new_event: *mut GstEvent) -> gboolean;
5436    #[cfg(feature = "v1_18_3")]
5437    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5438    pub fn gst_event_steal(old_event: *mut *mut GstEvent) -> *mut GstEvent;
5439    #[cfg(feature = "v1_18_3")]
5440    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5441    pub fn gst_event_take(old_event: *mut *mut GstEvent, new_event: *mut GstEvent) -> gboolean;
5442
5443    //=========================================================================
5444    // GstIdStr
5445    //=========================================================================
5446    #[cfg(feature = "v1_26")]
5447    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5448    pub fn gst_id_str_get_type() -> GType;
5449    #[cfg(feature = "v1_26")]
5450    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5451    pub fn gst_id_str_new() -> *mut GstIdStr;
5452    #[cfg(feature = "v1_26")]
5453    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5454    pub fn gst_id_str_as_str(s: *const GstIdStr) -> *const c_char;
5455    #[cfg(feature = "v1_26")]
5456    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5457    pub fn gst_id_str_clear(s: *mut GstIdStr);
5458    #[cfg(feature = "v1_26")]
5459    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5460    pub fn gst_id_str_copy(s: *const GstIdStr) -> *mut GstIdStr;
5461    #[cfg(feature = "v1_26")]
5462    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5463    pub fn gst_id_str_copy_into(d: *mut GstIdStr, s: *const GstIdStr);
5464    #[cfg(feature = "v1_26")]
5465    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5466    pub fn gst_id_str_free(s: *mut GstIdStr);
5467    #[cfg(feature = "v1_26")]
5468    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5469    pub fn gst_id_str_get_len(s: *const GstIdStr) -> size_t;
5470    #[cfg(feature = "v1_26")]
5471    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5472    pub fn gst_id_str_init(s: *mut GstIdStr);
5473    #[cfg(feature = "v1_26")]
5474    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5475    pub fn gst_id_str_is_equal(s1: *const GstIdStr, s2: *const GstIdStr) -> gboolean;
5476    #[cfg(feature = "v1_26")]
5477    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5478    pub fn gst_id_str_is_equal_to_str(s1: *const GstIdStr, s2: *const c_char) -> gboolean;
5479    #[cfg(feature = "v1_26")]
5480    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5481    pub fn gst_id_str_is_equal_to_str_with_len(
5482        s1: *const GstIdStr,
5483        s2: *const c_char,
5484        len: size_t,
5485    ) -> gboolean;
5486    #[cfg(feature = "v1_26")]
5487    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5488    pub fn gst_id_str_move(d: *mut GstIdStr, s: *mut GstIdStr);
5489    #[cfg(feature = "v1_26")]
5490    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5491    pub fn gst_id_str_set(s: *mut GstIdStr, value: *const c_char);
5492    #[cfg(feature = "v1_26")]
5493    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5494    pub fn gst_id_str_set_static_str(s: *mut GstIdStr, value: *const c_char);
5495    #[cfg(feature = "v1_26")]
5496    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5497    pub fn gst_id_str_set_static_str_with_len(s: *mut GstIdStr, value: *const c_char, len: size_t);
5498    #[cfg(feature = "v1_26")]
5499    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5500    pub fn gst_id_str_set_with_len(s: *mut GstIdStr, value: *const c_char, len: size_t);
5501
5502    //=========================================================================
5503    // GstIterator
5504    //=========================================================================
5505    pub fn gst_iterator_get_type() -> GType;
5506    pub fn gst_iterator_new(
5507        size: c_uint,
5508        type_: GType,
5509        lock: *mut glib::GMutex,
5510        master_cookie: *mut u32,
5511        copy: GstIteratorCopyFunction,
5512        next: GstIteratorNextFunction,
5513        item: GstIteratorItemFunction,
5514        resync: GstIteratorResyncFunction,
5515        free: GstIteratorFreeFunction,
5516    ) -> *mut GstIterator;
5517    pub fn gst_iterator_new_list(
5518        type_: GType,
5519        lock: *mut glib::GMutex,
5520        master_cookie: *mut u32,
5521        list: *mut *mut glib::GList,
5522        owner: *mut gobject::GObject,
5523        item: GstIteratorItemFunction,
5524    ) -> *mut GstIterator;
5525    pub fn gst_iterator_new_single(
5526        type_: GType,
5527        object: *const gobject::GValue,
5528    ) -> *mut GstIterator;
5529    pub fn gst_iterator_copy(it: *const GstIterator) -> *mut GstIterator;
5530    pub fn gst_iterator_filter(
5531        it: *mut GstIterator,
5532        func: glib::GCompareFunc,
5533        user_data: *const gobject::GValue,
5534    ) -> *mut GstIterator;
5535    pub fn gst_iterator_find_custom(
5536        it: *mut GstIterator,
5537        func: glib::GCompareFunc,
5538        elem: *mut gobject::GValue,
5539        user_data: gpointer,
5540    ) -> gboolean;
5541    pub fn gst_iterator_fold(
5542        it: *mut GstIterator,
5543        func: GstIteratorFoldFunction,
5544        ret: *mut gobject::GValue,
5545        user_data: gpointer,
5546    ) -> GstIteratorResult;
5547    pub fn gst_iterator_foreach(
5548        it: *mut GstIterator,
5549        func: GstIteratorForeachFunction,
5550        user_data: gpointer,
5551    ) -> GstIteratorResult;
5552    pub fn gst_iterator_free(it: *mut GstIterator);
5553    pub fn gst_iterator_next(it: *mut GstIterator, elem: *mut gobject::GValue)
5554        -> GstIteratorResult;
5555    pub fn gst_iterator_push(it: *mut GstIterator, other: *mut GstIterator);
5556    pub fn gst_iterator_resync(it: *mut GstIterator);
5557
5558    //=========================================================================
5559    // GstMemory
5560    //=========================================================================
5561    pub fn gst_memory_get_type() -> GType;
5562    pub fn gst_memory_new_wrapped(
5563        flags: GstMemoryFlags,
5564        data: gpointer,
5565        maxsize: size_t,
5566        offset: size_t,
5567        size: size_t,
5568        user_data: gpointer,
5569        notify: glib::GDestroyNotify,
5570    ) -> *mut GstMemory;
5571    pub fn gst_memory_copy(mem: *mut GstMemory, offset: ssize_t, size: ssize_t) -> *mut GstMemory;
5572    pub fn gst_memory_get_sizes(
5573        mem: *mut GstMemory,
5574        offset: *mut size_t,
5575        maxsize: *mut size_t,
5576    ) -> size_t;
5577    pub fn gst_memory_init(
5578        mem: *mut GstMemory,
5579        flags: GstMemoryFlags,
5580        allocator: *mut GstAllocator,
5581        parent: *mut GstMemory,
5582        maxsize: size_t,
5583        align: size_t,
5584        offset: size_t,
5585        size: size_t,
5586    );
5587    pub fn gst_memory_is_span(
5588        mem1: *mut GstMemory,
5589        mem2: *mut GstMemory,
5590        offset: *mut size_t,
5591    ) -> gboolean;
5592    pub fn gst_memory_is_type(mem: *mut GstMemory, mem_type: *const c_char) -> gboolean;
5593    pub fn gst_memory_make_mapped(
5594        mem: *mut GstMemory,
5595        info: *mut GstMapInfo,
5596        flags: GstMapFlags,
5597    ) -> *mut GstMemory;
5598    pub fn gst_memory_map(
5599        mem: *mut GstMemory,
5600        info: *mut GstMapInfo,
5601        flags: GstMapFlags,
5602    ) -> gboolean;
5603    #[cfg(feature = "v1_18_3")]
5604    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5605    pub fn gst_memory_ref(memory: *mut GstMemory) -> *mut GstMemory;
5606    pub fn gst_memory_resize(mem: *mut GstMemory, offset: ssize_t, size: size_t);
5607    pub fn gst_memory_share(mem: *mut GstMemory, offset: ssize_t, size: ssize_t) -> *mut GstMemory;
5608    pub fn gst_memory_unmap(mem: *mut GstMemory, info: *mut GstMapInfo);
5609    #[cfg(feature = "v1_18_3")]
5610    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5611    pub fn gst_memory_unref(memory: *mut GstMemory);
5612
5613    //=========================================================================
5614    // GstMessage
5615    //=========================================================================
5616    pub fn gst_message_get_type() -> GType;
5617    pub fn gst_message_new_application(
5618        src: *mut GstObject,
5619        structure: *mut GstStructure,
5620    ) -> *mut GstMessage;
5621    pub fn gst_message_new_async_done(
5622        src: *mut GstObject,
5623        running_time: GstClockTime,
5624    ) -> *mut GstMessage;
5625    pub fn gst_message_new_async_start(src: *mut GstObject) -> *mut GstMessage;
5626    pub fn gst_message_new_buffering(src: *mut GstObject, percent: c_int) -> *mut GstMessage;
5627    pub fn gst_message_new_clock_lost(src: *mut GstObject, clock: *mut GstClock)
5628        -> *mut GstMessage;
5629    pub fn gst_message_new_clock_provide(
5630        src: *mut GstObject,
5631        clock: *mut GstClock,
5632        ready: gboolean,
5633    ) -> *mut GstMessage;
5634    pub fn gst_message_new_custom(
5635        type_: GstMessageType,
5636        src: *mut GstObject,
5637        structure: *mut GstStructure,
5638    ) -> *mut GstMessage;
5639    pub fn gst_message_new_device_added(
5640        src: *mut GstObject,
5641        device: *mut GstDevice,
5642    ) -> *mut GstMessage;
5643    #[cfg(feature = "v1_16")]
5644    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5645    pub fn gst_message_new_device_changed(
5646        src: *mut GstObject,
5647        device: *mut GstDevice,
5648        changed_device: *mut GstDevice,
5649    ) -> *mut GstMessage;
5650    pub fn gst_message_new_device_removed(
5651        src: *mut GstObject,
5652        device: *mut GstDevice,
5653    ) -> *mut GstMessage;
5654    pub fn gst_message_new_duration_changed(src: *mut GstObject) -> *mut GstMessage;
5655    pub fn gst_message_new_element(
5656        src: *mut GstObject,
5657        structure: *mut GstStructure,
5658    ) -> *mut GstMessage;
5659    pub fn gst_message_new_eos(src: *mut GstObject) -> *mut GstMessage;
5660    pub fn gst_message_new_error(
5661        src: *mut GstObject,
5662        error: *mut glib::GError,
5663        debug: *const c_char,
5664    ) -> *mut GstMessage;
5665    pub fn gst_message_new_error_with_details(
5666        src: *mut GstObject,
5667        error: *mut glib::GError,
5668        debug: *const c_char,
5669        details: *mut GstStructure,
5670    ) -> *mut GstMessage;
5671    pub fn gst_message_new_have_context(
5672        src: *mut GstObject,
5673        context: *mut GstContext,
5674    ) -> *mut GstMessage;
5675    pub fn gst_message_new_info(
5676        src: *mut GstObject,
5677        error: *mut glib::GError,
5678        debug: *const c_char,
5679    ) -> *mut GstMessage;
5680    pub fn gst_message_new_info_with_details(
5681        src: *mut GstObject,
5682        error: *mut glib::GError,
5683        debug: *const c_char,
5684        details: *mut GstStructure,
5685    ) -> *mut GstMessage;
5686    #[cfg(feature = "v1_18")]
5687    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5688    pub fn gst_message_new_instant_rate_request(
5689        src: *mut GstObject,
5690        rate_multiplier: c_double,
5691    ) -> *mut GstMessage;
5692    pub fn gst_message_new_latency(src: *mut GstObject) -> *mut GstMessage;
5693    pub fn gst_message_new_need_context(
5694        src: *mut GstObject,
5695        context_type: *const c_char,
5696    ) -> *mut GstMessage;
5697    pub fn gst_message_new_new_clock(src: *mut GstObject, clock: *mut GstClock) -> *mut GstMessage;
5698    pub fn gst_message_new_progress(
5699        src: *mut GstObject,
5700        type_: GstProgressType,
5701        code: *const c_char,
5702        text: *const c_char,
5703    ) -> *mut GstMessage;
5704    pub fn gst_message_new_property_notify(
5705        src: *mut GstObject,
5706        property_name: *const c_char,
5707        val: *mut gobject::GValue,
5708    ) -> *mut GstMessage;
5709    pub fn gst_message_new_qos(
5710        src: *mut GstObject,
5711        live: gboolean,
5712        running_time: u64,
5713        stream_time: u64,
5714        timestamp: u64,
5715        duration: u64,
5716    ) -> *mut GstMessage;
5717    pub fn gst_message_new_redirect(
5718        src: *mut GstObject,
5719        location: *const c_char,
5720        tag_list: *mut GstTagList,
5721        entry_struct: *const GstStructure,
5722    ) -> *mut GstMessage;
5723    pub fn gst_message_new_request_state(src: *mut GstObject, state: GstState) -> *mut GstMessage;
5724    pub fn gst_message_new_reset_time(
5725        src: *mut GstObject,
5726        running_time: GstClockTime,
5727    ) -> *mut GstMessage;
5728    pub fn gst_message_new_segment_done(
5729        src: *mut GstObject,
5730        format: GstFormat,
5731        position: i64,
5732    ) -> *mut GstMessage;
5733    pub fn gst_message_new_segment_start(
5734        src: *mut GstObject,
5735        format: GstFormat,
5736        position: i64,
5737    ) -> *mut GstMessage;
5738    pub fn gst_message_new_state_changed(
5739        src: *mut GstObject,
5740        oldstate: GstState,
5741        newstate: GstState,
5742        pending: GstState,
5743    ) -> *mut GstMessage;
5744    pub fn gst_message_new_state_dirty(src: *mut GstObject) -> *mut GstMessage;
5745    pub fn gst_message_new_step_done(
5746        src: *mut GstObject,
5747        format: GstFormat,
5748        amount: u64,
5749        rate: c_double,
5750        flush: gboolean,
5751        intermediate: gboolean,
5752        duration: u64,
5753        eos: gboolean,
5754    ) -> *mut GstMessage;
5755    pub fn gst_message_new_step_start(
5756        src: *mut GstObject,
5757        active: gboolean,
5758        format: GstFormat,
5759        amount: u64,
5760        rate: c_double,
5761        flush: gboolean,
5762        intermediate: gboolean,
5763    ) -> *mut GstMessage;
5764    pub fn gst_message_new_stream_collection(
5765        src: *mut GstObject,
5766        collection: *mut GstStreamCollection,
5767    ) -> *mut GstMessage;
5768    pub fn gst_message_new_stream_start(src: *mut GstObject) -> *mut GstMessage;
5769    pub fn gst_message_new_stream_status(
5770        src: *mut GstObject,
5771        type_: GstStreamStatusType,
5772        owner: *mut GstElement,
5773    ) -> *mut GstMessage;
5774    pub fn gst_message_new_streams_selected(
5775        src: *mut GstObject,
5776        collection: *mut GstStreamCollection,
5777    ) -> *mut GstMessage;
5778    pub fn gst_message_new_structure_change(
5779        src: *mut GstObject,
5780        type_: GstStructureChangeType,
5781        owner: *mut GstElement,
5782        busy: gboolean,
5783    ) -> *mut GstMessage;
5784    pub fn gst_message_new_tag(src: *mut GstObject, tag_list: *mut GstTagList) -> *mut GstMessage;
5785    pub fn gst_message_new_toc(
5786        src: *mut GstObject,
5787        toc: *mut GstToc,
5788        updated: gboolean,
5789    ) -> *mut GstMessage;
5790    pub fn gst_message_new_warning(
5791        src: *mut GstObject,
5792        error: *mut glib::GError,
5793        debug: *const c_char,
5794    ) -> *mut GstMessage;
5795    pub fn gst_message_new_warning_with_details(
5796        src: *mut GstObject,
5797        error: *mut glib::GError,
5798        debug: *const c_char,
5799        details: *mut GstStructure,
5800    ) -> *mut GstMessage;
5801    pub fn gst_message_add_redirect_entry(
5802        message: *mut GstMessage,
5803        location: *const c_char,
5804        tag_list: *mut GstTagList,
5805        entry_struct: *const GstStructure,
5806    );
5807    #[cfg(feature = "v1_18_3")]
5808    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5809    pub fn gst_message_copy(msg: *const GstMessage) -> *mut GstMessage;
5810    #[cfg(feature = "v1_26")]
5811    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5812    pub fn gst_message_get_details(message: *mut GstMessage) -> *const GstStructure;
5813    pub fn gst_message_get_num_redirect_entries(message: *mut GstMessage) -> size_t;
5814    pub fn gst_message_get_seqnum(message: *mut GstMessage) -> u32;
5815    pub fn gst_message_get_stream_status_object(message: *mut GstMessage)
5816        -> *const gobject::GValue;
5817    pub fn gst_message_get_structure(message: *mut GstMessage) -> *const GstStructure;
5818    pub fn gst_message_has_name(message: *mut GstMessage, name: *const c_char) -> gboolean;
5819    pub fn gst_message_parse_async_done(message: *mut GstMessage, running_time: *mut GstClockTime);
5820    pub fn gst_message_parse_buffering(message: *mut GstMessage, percent: *mut c_int);
5821    pub fn gst_message_parse_buffering_stats(
5822        message: *mut GstMessage,
5823        mode: *mut GstBufferingMode,
5824        avg_in: *mut c_int,
5825        avg_out: *mut c_int,
5826        buffering_left: *mut i64,
5827    );
5828    pub fn gst_message_parse_clock_lost(message: *mut GstMessage, clock: *mut *mut GstClock);
5829    pub fn gst_message_parse_clock_provide(
5830        message: *mut GstMessage,
5831        clock: *mut *mut GstClock,
5832        ready: *mut gboolean,
5833    );
5834    pub fn gst_message_parse_context_type(
5835        message: *mut GstMessage,
5836        context_type: *mut *const c_char,
5837    ) -> gboolean;
5838    pub fn gst_message_parse_device_added(message: *mut GstMessage, device: *mut *mut GstDevice);
5839    #[cfg(feature = "v1_16")]
5840    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5841    pub fn gst_message_parse_device_changed(
5842        message: *mut GstMessage,
5843        device: *mut *mut GstDevice,
5844        changed_device: *mut *mut GstDevice,
5845    );
5846    pub fn gst_message_parse_device_removed(message: *mut GstMessage, device: *mut *mut GstDevice);
5847    pub fn gst_message_parse_error(
5848        message: *mut GstMessage,
5849        gerror: *mut *mut glib::GError,
5850        debug: *mut *mut c_char,
5851    );
5852    pub fn gst_message_parse_error_details(
5853        message: *mut GstMessage,
5854        structure: *mut *const GstStructure,
5855    );
5856    #[cfg(feature = "v1_26")]
5857    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5858    pub fn gst_message_parse_error_writable_details(
5859        message: *mut GstMessage,
5860        structure: *mut *mut GstStructure,
5861    );
5862    pub fn gst_message_parse_group_id(message: *mut GstMessage, group_id: *mut c_uint) -> gboolean;
5863    pub fn gst_message_parse_have_context(message: *mut GstMessage, context: *mut *mut GstContext);
5864    pub fn gst_message_parse_info(
5865        message: *mut GstMessage,
5866        gerror: *mut *mut glib::GError,
5867        debug: *mut *mut c_char,
5868    );
5869    pub fn gst_message_parse_info_details(
5870        message: *mut GstMessage,
5871        structure: *mut *const GstStructure,
5872    );
5873    #[cfg(feature = "v1_26")]
5874    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5875    pub fn gst_message_parse_info_writable_details(
5876        message: *mut GstMessage,
5877        structure: *mut *mut GstStructure,
5878    );
5879    #[cfg(feature = "v1_18")]
5880    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5881    pub fn gst_message_parse_instant_rate_request(
5882        message: *mut GstMessage,
5883        rate_multiplier: *mut c_double,
5884    );
5885    pub fn gst_message_parse_new_clock(message: *mut GstMessage, clock: *mut *mut GstClock);
5886    pub fn gst_message_parse_progress(
5887        message: *mut GstMessage,
5888        type_: *mut GstProgressType,
5889        code: *mut *mut c_char,
5890        text: *mut *mut c_char,
5891    );
5892    pub fn gst_message_parse_property_notify(
5893        message: *mut GstMessage,
5894        object: *mut *mut GstObject,
5895        property_name: *mut *const c_char,
5896        property_value: *mut *const gobject::GValue,
5897    );
5898    pub fn gst_message_parse_qos(
5899        message: *mut GstMessage,
5900        live: *mut gboolean,
5901        running_time: *mut u64,
5902        stream_time: *mut u64,
5903        timestamp: *mut u64,
5904        duration: *mut u64,
5905    );
5906    pub fn gst_message_parse_qos_stats(
5907        message: *mut GstMessage,
5908        format: *mut GstFormat,
5909        processed: *mut u64,
5910        dropped: *mut u64,
5911    );
5912    pub fn gst_message_parse_qos_values(
5913        message: *mut GstMessage,
5914        jitter: *mut i64,
5915        proportion: *mut c_double,
5916        quality: *mut c_int,
5917    );
5918    pub fn gst_message_parse_redirect_entry(
5919        message: *mut GstMessage,
5920        entry_index: size_t,
5921        location: *mut *const c_char,
5922        tag_list: *mut *mut GstTagList,
5923        entry_struct: *mut *const GstStructure,
5924    );
5925    pub fn gst_message_parse_request_state(message: *mut GstMessage, state: *mut GstState);
5926    pub fn gst_message_parse_reset_time(message: *mut GstMessage, running_time: *mut GstClockTime);
5927    pub fn gst_message_parse_segment_done(
5928        message: *mut GstMessage,
5929        format: *mut GstFormat,
5930        position: *mut i64,
5931    );
5932    pub fn gst_message_parse_segment_start(
5933        message: *mut GstMessage,
5934        format: *mut GstFormat,
5935        position: *mut i64,
5936    );
5937    pub fn gst_message_parse_state_changed(
5938        message: *mut GstMessage,
5939        oldstate: *mut GstState,
5940        newstate: *mut GstState,
5941        pending: *mut GstState,
5942    );
5943    pub fn gst_message_parse_step_done(
5944        message: *mut GstMessage,
5945        format: *mut GstFormat,
5946        amount: *mut u64,
5947        rate: *mut c_double,
5948        flush: *mut gboolean,
5949        intermediate: *mut gboolean,
5950        duration: *mut u64,
5951        eos: *mut gboolean,
5952    );
5953    pub fn gst_message_parse_step_start(
5954        message: *mut GstMessage,
5955        active: *mut gboolean,
5956        format: *mut GstFormat,
5957        amount: *mut u64,
5958        rate: *mut c_double,
5959        flush: *mut gboolean,
5960        intermediate: *mut gboolean,
5961    );
5962    pub fn gst_message_parse_stream_collection(
5963        message: *mut GstMessage,
5964        collection: *mut *mut GstStreamCollection,
5965    );
5966    pub fn gst_message_parse_stream_status(
5967        message: *mut GstMessage,
5968        type_: *mut GstStreamStatusType,
5969        owner: *mut *mut GstElement,
5970    );
5971    pub fn gst_message_parse_streams_selected(
5972        message: *mut GstMessage,
5973        collection: *mut *mut GstStreamCollection,
5974    );
5975    pub fn gst_message_parse_structure_change(
5976        message: *mut GstMessage,
5977        type_: *mut GstStructureChangeType,
5978        owner: *mut *mut GstElement,
5979        busy: *mut gboolean,
5980    );
5981    pub fn gst_message_parse_tag(message: *mut GstMessage, tag_list: *mut *mut GstTagList);
5982    pub fn gst_message_parse_toc(
5983        message: *mut GstMessage,
5984        toc: *mut *mut GstToc,
5985        updated: *mut gboolean,
5986    );
5987    pub fn gst_message_parse_warning(
5988        message: *mut GstMessage,
5989        gerror: *mut *mut glib::GError,
5990        debug: *mut *mut c_char,
5991    );
5992    pub fn gst_message_parse_warning_details(
5993        message: *mut GstMessage,
5994        structure: *mut *const GstStructure,
5995    );
5996    #[cfg(feature = "v1_26")]
5997    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5998    pub fn gst_message_parse_warning_writable_details(
5999        message: *mut GstMessage,
6000        structure: *mut *mut GstStructure,
6001    );
6002    #[cfg(feature = "v1_18_3")]
6003    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6004    pub fn gst_message_ref(msg: *mut GstMessage) -> *mut GstMessage;
6005    pub fn gst_message_set_buffering_stats(
6006        message: *mut GstMessage,
6007        mode: GstBufferingMode,
6008        avg_in: c_int,
6009        avg_out: c_int,
6010        buffering_left: i64,
6011    );
6012    #[cfg(feature = "v1_26")]
6013    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6014    pub fn gst_message_set_details(message: *mut GstMessage, details: *mut GstStructure);
6015    pub fn gst_message_set_group_id(message: *mut GstMessage, group_id: c_uint);
6016    pub fn gst_message_set_qos_stats(
6017        message: *mut GstMessage,
6018        format: GstFormat,
6019        processed: u64,
6020        dropped: u64,
6021    );
6022    pub fn gst_message_set_qos_values(
6023        message: *mut GstMessage,
6024        jitter: i64,
6025        proportion: c_double,
6026        quality: c_int,
6027    );
6028    pub fn gst_message_set_seqnum(message: *mut GstMessage, seqnum: u32);
6029    pub fn gst_message_set_stream_status_object(
6030        message: *mut GstMessage,
6031        object: *const gobject::GValue,
6032    );
6033    pub fn gst_message_streams_selected_add(message: *mut GstMessage, stream: *mut GstStream);
6034    pub fn gst_message_streams_selected_get_size(message: *mut GstMessage) -> c_uint;
6035    pub fn gst_message_streams_selected_get_stream(
6036        message: *mut GstMessage,
6037        idx: c_uint,
6038    ) -> *mut GstStream;
6039    #[cfg(feature = "v1_18_3")]
6040    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6041    pub fn gst_message_unref(msg: *mut GstMessage);
6042    #[cfg(feature = "v1_26")]
6043    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6044    pub fn gst_message_writable_details(message: *mut GstMessage) -> *mut GstStructure;
6045    pub fn gst_message_writable_structure(message: *mut GstMessage) -> *mut GstStructure;
6046    #[cfg(feature = "v1_18_3")]
6047    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6048    pub fn gst_message_replace(
6049        old_message: *mut *mut GstMessage,
6050        new_message: *mut GstMessage,
6051    ) -> gboolean;
6052    #[cfg(feature = "v1_18_3")]
6053    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6054    pub fn gst_message_take(
6055        old_message: *mut *mut GstMessage,
6056        new_message: *mut GstMessage,
6057    ) -> gboolean;
6058
6059    //=========================================================================
6060    // GstMeta
6061    //=========================================================================
6062    #[cfg(feature = "v1_16")]
6063    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6064    pub fn gst_meta_compare_seqnum(meta1: *const GstMeta, meta2: *const GstMeta) -> c_int;
6065    #[cfg(feature = "v1_16")]
6066    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6067    pub fn gst_meta_get_seqnum(meta: *const GstMeta) -> u64;
6068    #[cfg(feature = "v1_24")]
6069    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6070    pub fn gst_meta_serialize(meta: *const GstMeta, data: *mut GstByteArrayInterface) -> gboolean;
6071    #[cfg(feature = "v1_24")]
6072    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6073    pub fn gst_meta_serialize_simple(meta: *const GstMeta, data: *mut glib::GByteArray)
6074        -> gboolean;
6075    #[cfg(feature = "v1_26")]
6076    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6077    pub fn gst_meta_api_type_aggregate_params(
6078        api: GType,
6079        aggregated_params: *mut *mut GstStructure,
6080        params0: *const GstStructure,
6081        params1: *const GstStructure,
6082    ) -> gboolean;
6083    pub fn gst_meta_api_type_get_tags(api: GType) -> *const *const c_char;
6084    pub fn gst_meta_api_type_has_tag(api: GType, tag: glib::GQuark) -> gboolean;
6085    pub fn gst_meta_api_type_register(api: *const c_char, tags: *mut *const c_char) -> GType;
6086    #[cfg(feature = "v1_26")]
6087    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6088    pub fn gst_meta_api_type_set_params_aggregator(
6089        api: GType,
6090        aggregator: GstAllocationMetaParamsAggregator,
6091    );
6092    #[cfg(feature = "v1_24")]
6093    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6094    pub fn gst_meta_deserialize(
6095        buffer: *mut GstBuffer,
6096        data: *const u8,
6097        size: size_t,
6098        consumed: *mut u32,
6099    ) -> *mut GstMeta;
6100    pub fn gst_meta_get_info(impl_: *const c_char) -> *const GstMetaInfo;
6101    pub fn gst_meta_register(
6102        api: GType,
6103        impl_: *const c_char,
6104        size: size_t,
6105        init_func: GstMetaInitFunction,
6106        free_func: GstMetaFreeFunction,
6107        transform_func: GstMetaTransformFunction,
6108    ) -> *const GstMetaInfo;
6109    #[cfg(feature = "v1_20")]
6110    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6111    pub fn gst_meta_register_custom(
6112        name: *const c_char,
6113        tags: *mut *const c_char,
6114        transform_func: GstCustomMetaTransformFunction,
6115        user_data: gpointer,
6116        destroy_data: glib::GDestroyNotify,
6117    ) -> *const GstMetaInfo;
6118    #[cfg(feature = "v1_24")]
6119    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6120    pub fn gst_meta_register_custom_simple(name: *const c_char) -> *const GstMetaInfo;
6121
6122    //=========================================================================
6123    // GstMetaInfo
6124    //=========================================================================
6125    #[cfg(feature = "v1_20")]
6126    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6127    pub fn gst_meta_info_is_custom(info: *const GstMetaInfo) -> gboolean;
6128    #[cfg(feature = "v1_24")]
6129    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6130    pub fn gst_meta_info_register(info: *mut GstMetaInfo) -> *const GstMetaInfo;
6131    #[cfg(feature = "v1_24")]
6132    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6133    pub fn gst_meta_info_new(api: GType, impl_: *const c_char, size: size_t) -> *mut GstMetaInfo;
6134
6135    //=========================================================================
6136    // GstMiniObject
6137    //=========================================================================
6138    #[cfg(feature = "v1_20")]
6139    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6140    pub fn gst_mini_object_get_type() -> GType;
6141    #[cfg(feature = "v1_16")]
6142    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6143    pub fn gst_mini_object_add_parent(object: *mut GstMiniObject, parent: *mut GstMiniObject);
6144    pub fn gst_mini_object_copy(mini_object: *const GstMiniObject) -> *mut GstMiniObject;
6145    pub fn gst_mini_object_get_qdata(object: *mut GstMiniObject, quark: glib::GQuark) -> gpointer;
6146    pub fn gst_mini_object_init(
6147        mini_object: *mut GstMiniObject,
6148        flags: c_uint,
6149        type_: GType,
6150        copy_func: GstMiniObjectCopyFunction,
6151        dispose_func: GstMiniObjectDisposeFunction,
6152        free_func: GstMiniObjectFreeFunction,
6153    );
6154    pub fn gst_mini_object_is_writable(mini_object: *const GstMiniObject) -> gboolean;
6155    pub fn gst_mini_object_lock(object: *mut GstMiniObject, flags: GstLockFlags) -> gboolean;
6156    pub fn gst_mini_object_make_writable(mini_object: *mut GstMiniObject) -> *mut GstMiniObject;
6157    pub fn gst_mini_object_ref(mini_object: *mut GstMiniObject) -> *mut GstMiniObject;
6158    #[cfg(feature = "v1_16")]
6159    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6160    pub fn gst_mini_object_remove_parent(object: *mut GstMiniObject, parent: *mut GstMiniObject);
6161    pub fn gst_mini_object_set_qdata(
6162        object: *mut GstMiniObject,
6163        quark: glib::GQuark,
6164        data: gpointer,
6165        destroy: glib::GDestroyNotify,
6166    );
6167    pub fn gst_mini_object_steal_qdata(object: *mut GstMiniObject, quark: glib::GQuark)
6168        -> gpointer;
6169    pub fn gst_mini_object_unlock(object: *mut GstMiniObject, flags: GstLockFlags);
6170    pub fn gst_mini_object_unref(mini_object: *mut GstMiniObject);
6171    pub fn gst_mini_object_weak_ref(
6172        object: *mut GstMiniObject,
6173        notify: GstMiniObjectNotify,
6174        data: gpointer,
6175    );
6176    pub fn gst_mini_object_weak_unref(
6177        object: *mut GstMiniObject,
6178        notify: GstMiniObjectNotify,
6179        data: gpointer,
6180    );
6181    pub fn gst_mini_object_replace(
6182        olddata: *mut *mut GstMiniObject,
6183        newdata: *mut GstMiniObject,
6184    ) -> gboolean;
6185    pub fn gst_mini_object_steal(olddata: *mut *mut GstMiniObject) -> *mut GstMiniObject;
6186    pub fn gst_mini_object_take(
6187        olddata: *mut *mut GstMiniObject,
6188        newdata: *mut GstMiniObject,
6189    ) -> gboolean;
6190
6191    //=========================================================================
6192    // GstPadProbeInfo
6193    //=========================================================================
6194    pub fn gst_pad_probe_info_get_buffer(info: *mut GstPadProbeInfo) -> *mut GstBuffer;
6195    pub fn gst_pad_probe_info_get_buffer_list(info: *mut GstPadProbeInfo) -> *mut GstBufferList;
6196    pub fn gst_pad_probe_info_get_event(info: *mut GstPadProbeInfo) -> *mut GstEvent;
6197    pub fn gst_pad_probe_info_get_query(info: *mut GstPadProbeInfo) -> *mut GstQuery;
6198
6199    //=========================================================================
6200    // GstParentBufferMeta
6201    //=========================================================================
6202    pub fn gst_parent_buffer_meta_get_info() -> *const GstMetaInfo;
6203
6204    //=========================================================================
6205    // GstParseContext
6206    //=========================================================================
6207    pub fn gst_parse_context_get_type() -> GType;
6208    pub fn gst_parse_context_new() -> *mut GstParseContext;
6209    pub fn gst_parse_context_copy(context: *const GstParseContext) -> *mut GstParseContext;
6210    pub fn gst_parse_context_free(context: *mut GstParseContext);
6211    pub fn gst_parse_context_get_missing_elements(
6212        context: *mut GstParseContext,
6213    ) -> *mut *mut c_char;
6214
6215    //=========================================================================
6216    // GstPoll
6217    //=========================================================================
6218    pub fn gst_poll_add_fd(set: *mut GstPoll, fd: *mut GstPollFD) -> gboolean;
6219    pub fn gst_poll_fd_can_read(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6220    pub fn gst_poll_fd_can_write(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6221    #[cfg(feature = "v1_16")]
6222    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6223    pub fn gst_poll_fd_ctl_pri(set: *mut GstPoll, fd: *mut GstPollFD, active: gboolean)
6224        -> gboolean;
6225    pub fn gst_poll_fd_ctl_read(
6226        set: *mut GstPoll,
6227        fd: *mut GstPollFD,
6228        active: gboolean,
6229    ) -> gboolean;
6230    pub fn gst_poll_fd_ctl_write(
6231        set: *mut GstPoll,
6232        fd: *mut GstPollFD,
6233        active: gboolean,
6234    ) -> gboolean;
6235    pub fn gst_poll_fd_has_closed(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6236    pub fn gst_poll_fd_has_error(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6237    #[cfg(feature = "v1_16")]
6238    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6239    pub fn gst_poll_fd_has_pri(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6240    pub fn gst_poll_fd_ignored(set: *mut GstPoll, fd: *mut GstPollFD);
6241    pub fn gst_poll_free(set: *mut GstPoll);
6242    pub fn gst_poll_get_read_gpollfd(set: *mut GstPoll, fd: *mut glib::GPollFD);
6243    pub fn gst_poll_read_control(set: *mut GstPoll) -> gboolean;
6244    pub fn gst_poll_remove_fd(set: *mut GstPoll, fd: *mut GstPollFD) -> gboolean;
6245    pub fn gst_poll_restart(set: *mut GstPoll);
6246    pub fn gst_poll_set_controllable(set: *mut GstPoll, controllable: gboolean) -> gboolean;
6247    pub fn gst_poll_set_flushing(set: *mut GstPoll, flushing: gboolean);
6248    pub fn gst_poll_wait(set: *mut GstPoll, timeout: GstClockTime) -> c_int;
6249    pub fn gst_poll_write_control(set: *mut GstPoll) -> gboolean;
6250    pub fn gst_poll_new(controllable: gboolean) -> *mut GstPoll;
6251    pub fn gst_poll_new_timer() -> *mut GstPoll;
6252
6253    //=========================================================================
6254    // GstPollFD
6255    //=========================================================================
6256    pub fn gst_poll_fd_init(fd: *mut GstPollFD);
6257
6258    //=========================================================================
6259    // GstPromise
6260    //=========================================================================
6261    pub fn gst_promise_get_type() -> GType;
6262    pub fn gst_promise_new() -> *mut GstPromise;
6263    pub fn gst_promise_new_with_change_func(
6264        func: GstPromiseChangeFunc,
6265        user_data: gpointer,
6266        notify: glib::GDestroyNotify,
6267    ) -> *mut GstPromise;
6268    pub fn gst_promise_expire(promise: *mut GstPromise);
6269    pub fn gst_promise_get_reply(promise: *mut GstPromise) -> *const GstStructure;
6270    pub fn gst_promise_interrupt(promise: *mut GstPromise);
6271    #[cfg(feature = "v1_18_3")]
6272    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6273    pub fn gst_promise_ref(promise: *mut GstPromise) -> *mut GstPromise;
6274    pub fn gst_promise_reply(promise: *mut GstPromise, s: *mut GstStructure);
6275    #[cfg(feature = "v1_18_3")]
6276    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6277    pub fn gst_promise_unref(promise: *mut GstPromise);
6278    pub fn gst_promise_wait(promise: *mut GstPromise) -> GstPromiseResult;
6279
6280    //=========================================================================
6281    // GstProtectionMeta
6282    //=========================================================================
6283    pub fn gst_protection_meta_get_info() -> *const GstMetaInfo;
6284
6285    //=========================================================================
6286    // GstQuery
6287    //=========================================================================
6288    pub fn gst_query_get_type() -> GType;
6289    pub fn gst_query_new_accept_caps(caps: *mut GstCaps) -> *mut GstQuery;
6290    pub fn gst_query_new_allocation(caps: *mut GstCaps, need_pool: gboolean) -> *mut GstQuery;
6291    #[cfg(feature = "v1_16")]
6292    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6293    pub fn gst_query_new_bitrate() -> *mut GstQuery;
6294    pub fn gst_query_new_buffering(format: GstFormat) -> *mut GstQuery;
6295    pub fn gst_query_new_caps(filter: *mut GstCaps) -> *mut GstQuery;
6296    pub fn gst_query_new_context(context_type: *const c_char) -> *mut GstQuery;
6297    pub fn gst_query_new_convert(
6298        src_format: GstFormat,
6299        value: i64,
6300        dest_format: GstFormat,
6301    ) -> *mut GstQuery;
6302    pub fn gst_query_new_custom(type_: GstQueryType, structure: *mut GstStructure)
6303        -> *mut GstQuery;
6304    pub fn gst_query_new_drain() -> *mut GstQuery;
6305    pub fn gst_query_new_duration(format: GstFormat) -> *mut GstQuery;
6306    pub fn gst_query_new_formats() -> *mut GstQuery;
6307    pub fn gst_query_new_latency() -> *mut GstQuery;
6308    pub fn gst_query_new_position(format: GstFormat) -> *mut GstQuery;
6309    pub fn gst_query_new_scheduling() -> *mut GstQuery;
6310    pub fn gst_query_new_seeking(format: GstFormat) -> *mut GstQuery;
6311    pub fn gst_query_new_segment(format: GstFormat) -> *mut GstQuery;
6312    #[cfg(feature = "v1_22")]
6313    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6314    pub fn gst_query_new_selectable() -> *mut GstQuery;
6315    pub fn gst_query_new_uri() -> *mut GstQuery;
6316    pub fn gst_query_add_allocation_meta(
6317        query: *mut GstQuery,
6318        api: GType,
6319        params: *const GstStructure,
6320    );
6321    pub fn gst_query_add_allocation_param(
6322        query: *mut GstQuery,
6323        allocator: *mut GstAllocator,
6324        params: *const GstAllocationParams,
6325    );
6326    pub fn gst_query_add_allocation_pool(
6327        query: *mut GstQuery,
6328        pool: *mut GstBufferPool,
6329        size: c_uint,
6330        min_buffers: c_uint,
6331        max_buffers: c_uint,
6332    );
6333    pub fn gst_query_add_buffering_range(query: *mut GstQuery, start: i64, stop: i64) -> gboolean;
6334    pub fn gst_query_add_scheduling_mode(query: *mut GstQuery, mode: GstPadMode);
6335    #[cfg(feature = "v1_18_3")]
6336    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6337    pub fn gst_query_copy(q: *const GstQuery) -> *mut GstQuery;
6338    pub fn gst_query_find_allocation_meta(
6339        query: *mut GstQuery,
6340        api: GType,
6341        index: *mut c_uint,
6342    ) -> gboolean;
6343    pub fn gst_query_get_n_allocation_metas(query: *mut GstQuery) -> c_uint;
6344    pub fn gst_query_get_n_allocation_params(query: *mut GstQuery) -> c_uint;
6345    pub fn gst_query_get_n_allocation_pools(query: *mut GstQuery) -> c_uint;
6346    pub fn gst_query_get_n_buffering_ranges(query: *mut GstQuery) -> c_uint;
6347    pub fn gst_query_get_n_scheduling_modes(query: *mut GstQuery) -> c_uint;
6348    pub fn gst_query_get_structure(query: *mut GstQuery) -> *const GstStructure;
6349    pub fn gst_query_has_scheduling_mode(query: *mut GstQuery, mode: GstPadMode) -> gboolean;
6350    pub fn gst_query_has_scheduling_mode_with_flags(
6351        query: *mut GstQuery,
6352        mode: GstPadMode,
6353        flags: GstSchedulingFlags,
6354    ) -> gboolean;
6355    pub fn gst_query_parse_accept_caps(query: *mut GstQuery, caps: *mut *mut GstCaps);
6356    pub fn gst_query_parse_accept_caps_result(query: *mut GstQuery, result: *mut gboolean);
6357    pub fn gst_query_parse_allocation(
6358        query: *mut GstQuery,
6359        caps: *mut *mut GstCaps,
6360        need_pool: *mut gboolean,
6361    );
6362    #[cfg(feature = "v1_16")]
6363    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6364    pub fn gst_query_parse_bitrate(query: *mut GstQuery, nominal_bitrate: *mut c_uint);
6365    pub fn gst_query_parse_buffering_percent(
6366        query: *mut GstQuery,
6367        busy: *mut gboolean,
6368        percent: *mut c_int,
6369    );
6370    pub fn gst_query_parse_buffering_range(
6371        query: *mut GstQuery,
6372        format: *mut GstFormat,
6373        start: *mut i64,
6374        stop: *mut i64,
6375        estimated_total: *mut i64,
6376    );
6377    pub fn gst_query_parse_buffering_stats(
6378        query: *mut GstQuery,
6379        mode: *mut GstBufferingMode,
6380        avg_in: *mut c_int,
6381        avg_out: *mut c_int,
6382        buffering_left: *mut i64,
6383    );
6384    pub fn gst_query_parse_caps(query: *mut GstQuery, filter: *mut *mut GstCaps);
6385    pub fn gst_query_parse_caps_result(query: *mut GstQuery, caps: *mut *mut GstCaps);
6386    pub fn gst_query_parse_context(query: *mut GstQuery, context: *mut *mut GstContext);
6387    pub fn gst_query_parse_context_type(
6388        query: *mut GstQuery,
6389        context_type: *mut *const c_char,
6390    ) -> gboolean;
6391    pub fn gst_query_parse_convert(
6392        query: *mut GstQuery,
6393        src_format: *mut GstFormat,
6394        src_value: *mut i64,
6395        dest_format: *mut GstFormat,
6396        dest_value: *mut i64,
6397    );
6398    pub fn gst_query_parse_duration(
6399        query: *mut GstQuery,
6400        format: *mut GstFormat,
6401        duration: *mut i64,
6402    );
6403    pub fn gst_query_parse_latency(
6404        query: *mut GstQuery,
6405        live: *mut gboolean,
6406        min_latency: *mut GstClockTime,
6407        max_latency: *mut GstClockTime,
6408    );
6409    pub fn gst_query_parse_n_formats(query: *mut GstQuery, n_formats: *mut c_uint);
6410    pub fn gst_query_parse_nth_allocation_meta(
6411        query: *mut GstQuery,
6412        index: c_uint,
6413        params: *mut *const GstStructure,
6414    ) -> GType;
6415    pub fn gst_query_parse_nth_allocation_param(
6416        query: *mut GstQuery,
6417        index: c_uint,
6418        allocator: *mut *mut GstAllocator,
6419        params: *mut GstAllocationParams,
6420    );
6421    pub fn gst_query_parse_nth_allocation_pool(
6422        query: *mut GstQuery,
6423        index: c_uint,
6424        pool: *mut *mut GstBufferPool,
6425        size: *mut c_uint,
6426        min_buffers: *mut c_uint,
6427        max_buffers: *mut c_uint,
6428    );
6429    pub fn gst_query_parse_nth_buffering_range(
6430        query: *mut GstQuery,
6431        index: c_uint,
6432        start: *mut i64,
6433        stop: *mut i64,
6434    ) -> gboolean;
6435    pub fn gst_query_parse_nth_format(query: *mut GstQuery, nth: c_uint, format: *mut GstFormat);
6436    pub fn gst_query_parse_nth_scheduling_mode(query: *mut GstQuery, index: c_uint) -> GstPadMode;
6437    pub fn gst_query_parse_position(query: *mut GstQuery, format: *mut GstFormat, cur: *mut i64);
6438    pub fn gst_query_parse_scheduling(
6439        query: *mut GstQuery,
6440        flags: *mut GstSchedulingFlags,
6441        minsize: *mut c_int,
6442        maxsize: *mut c_int,
6443        align: *mut c_int,
6444    );
6445    pub fn gst_query_parse_seeking(
6446        query: *mut GstQuery,
6447        format: *mut GstFormat,
6448        seekable: *mut gboolean,
6449        segment_start: *mut i64,
6450        segment_end: *mut i64,
6451    );
6452    pub fn gst_query_parse_segment(
6453        query: *mut GstQuery,
6454        rate: *mut c_double,
6455        format: *mut GstFormat,
6456        start_value: *mut i64,
6457        stop_value: *mut i64,
6458    );
6459    #[cfg(feature = "v1_22")]
6460    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6461    pub fn gst_query_parse_selectable(query: *mut GstQuery, selectable: *mut gboolean);
6462    pub fn gst_query_parse_uri(query: *mut GstQuery, uri: *mut *mut c_char);
6463    pub fn gst_query_parse_uri_redirection(query: *mut GstQuery, uri: *mut *mut c_char);
6464    pub fn gst_query_parse_uri_redirection_permanent(
6465        query: *mut GstQuery,
6466        permanent: *mut gboolean,
6467    );
6468    #[cfg(feature = "v1_18_3")]
6469    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6470    pub fn gst_query_ref(q: *mut GstQuery) -> *mut GstQuery;
6471    pub fn gst_query_remove_nth_allocation_meta(query: *mut GstQuery, index: c_uint);
6472    pub fn gst_query_remove_nth_allocation_param(query: *mut GstQuery, index: c_uint);
6473    pub fn gst_query_remove_nth_allocation_pool(query: *mut GstQuery, index: c_uint);
6474    pub fn gst_query_set_accept_caps_result(query: *mut GstQuery, result: gboolean);
6475    #[cfg(feature = "v1_16")]
6476    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6477    pub fn gst_query_set_bitrate(query: *mut GstQuery, nominal_bitrate: c_uint);
6478    pub fn gst_query_set_buffering_percent(query: *mut GstQuery, busy: gboolean, percent: c_int);
6479    pub fn gst_query_set_buffering_range(
6480        query: *mut GstQuery,
6481        format: GstFormat,
6482        start: i64,
6483        stop: i64,
6484        estimated_total: i64,
6485    );
6486    pub fn gst_query_set_buffering_stats(
6487        query: *mut GstQuery,
6488        mode: GstBufferingMode,
6489        avg_in: c_int,
6490        avg_out: c_int,
6491        buffering_left: i64,
6492    );
6493    pub fn gst_query_set_caps_result(query: *mut GstQuery, caps: *mut GstCaps);
6494    pub fn gst_query_set_context(query: *mut GstQuery, context: *mut GstContext);
6495    pub fn gst_query_set_convert(
6496        query: *mut GstQuery,
6497        src_format: GstFormat,
6498        src_value: i64,
6499        dest_format: GstFormat,
6500        dest_value: i64,
6501    );
6502    pub fn gst_query_set_duration(query: *mut GstQuery, format: GstFormat, duration: i64);
6503    pub fn gst_query_set_formats(query: *mut GstQuery, n_formats: c_int, ...);
6504    pub fn gst_query_set_formatsv(
6505        query: *mut GstQuery,
6506        n_formats: c_int,
6507        formats: *const GstFormat,
6508    );
6509    pub fn gst_query_set_latency(
6510        query: *mut GstQuery,
6511        live: gboolean,
6512        min_latency: GstClockTime,
6513        max_latency: GstClockTime,
6514    );
6515    pub fn gst_query_set_nth_allocation_param(
6516        query: *mut GstQuery,
6517        index: c_uint,
6518        allocator: *mut GstAllocator,
6519        params: *const GstAllocationParams,
6520    );
6521    pub fn gst_query_set_nth_allocation_pool(
6522        query: *mut GstQuery,
6523        index: c_uint,
6524        pool: *mut GstBufferPool,
6525        size: c_uint,
6526        min_buffers: c_uint,
6527        max_buffers: c_uint,
6528    );
6529    pub fn gst_query_set_position(query: *mut GstQuery, format: GstFormat, cur: i64);
6530    pub fn gst_query_set_scheduling(
6531        query: *mut GstQuery,
6532        flags: GstSchedulingFlags,
6533        minsize: c_int,
6534        maxsize: c_int,
6535        align: c_int,
6536    );
6537    pub fn gst_query_set_seeking(
6538        query: *mut GstQuery,
6539        format: GstFormat,
6540        seekable: gboolean,
6541        segment_start: i64,
6542        segment_end: i64,
6543    );
6544    pub fn gst_query_set_segment(
6545        query: *mut GstQuery,
6546        rate: c_double,
6547        format: GstFormat,
6548        start_value: i64,
6549        stop_value: i64,
6550    );
6551    #[cfg(feature = "v1_22")]
6552    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6553    pub fn gst_query_set_selectable(query: *mut GstQuery, selectable: gboolean);
6554    pub fn gst_query_set_uri(query: *mut GstQuery, uri: *const c_char);
6555    pub fn gst_query_set_uri_redirection(query: *mut GstQuery, uri: *const c_char);
6556    pub fn gst_query_set_uri_redirection_permanent(query: *mut GstQuery, permanent: gboolean);
6557    #[cfg(feature = "v1_18_3")]
6558    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6559    pub fn gst_query_unref(q: *mut GstQuery);
6560    pub fn gst_query_writable_structure(query: *mut GstQuery) -> *mut GstStructure;
6561    #[cfg(feature = "v1_18_3")]
6562    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6563    pub fn gst_query_replace(old_query: *mut *mut GstQuery, new_query: *mut GstQuery) -> gboolean;
6564    #[cfg(feature = "v1_18_3")]
6565    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6566    pub fn gst_query_take(old_query: *mut *mut GstQuery, new_query: *mut GstQuery) -> gboolean;
6567
6568    //=========================================================================
6569    // GstReferenceTimestampMeta
6570    //=========================================================================
6571    pub fn gst_reference_timestamp_meta_get_info() -> *const GstMetaInfo;
6572
6573    //=========================================================================
6574    // GstSample
6575    //=========================================================================
6576    pub fn gst_sample_get_type() -> GType;
6577    pub fn gst_sample_new(
6578        buffer: *mut GstBuffer,
6579        caps: *mut GstCaps,
6580        segment: *const GstSegment,
6581        info: *mut GstStructure,
6582    ) -> *mut GstSample;
6583    #[cfg(feature = "v1_18_3")]
6584    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6585    pub fn gst_sample_copy(sample: *const GstSample) -> *mut GstSample;
6586    pub fn gst_sample_get_buffer(sample: *mut GstSample) -> *mut GstBuffer;
6587    pub fn gst_sample_get_buffer_list(sample: *mut GstSample) -> *mut GstBufferList;
6588    pub fn gst_sample_get_caps(sample: *mut GstSample) -> *mut GstCaps;
6589    pub fn gst_sample_get_info(sample: *mut GstSample) -> *const GstStructure;
6590    pub fn gst_sample_get_segment(sample: *mut GstSample) -> *mut GstSegment;
6591    #[cfg(feature = "v1_18_3")]
6592    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6593    pub fn gst_sample_ref(sample: *mut GstSample) -> *mut GstSample;
6594    #[cfg(feature = "v1_16")]
6595    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6596    pub fn gst_sample_set_buffer(sample: *mut GstSample, buffer: *mut GstBuffer);
6597    pub fn gst_sample_set_buffer_list(sample: *mut GstSample, buffer_list: *mut GstBufferList);
6598    #[cfg(feature = "v1_16")]
6599    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6600    pub fn gst_sample_set_caps(sample: *mut GstSample, caps: *mut GstCaps);
6601    #[cfg(feature = "v1_16")]
6602    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6603    pub fn gst_sample_set_info(sample: *mut GstSample, info: *mut GstStructure) -> gboolean;
6604    #[cfg(feature = "v1_16")]
6605    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6606    pub fn gst_sample_set_segment(sample: *mut GstSample, segment: *const GstSegment);
6607    #[cfg(feature = "v1_18_3")]
6608    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6609    pub fn gst_sample_unref(sample: *mut GstSample);
6610
6611    //=========================================================================
6612    // GstSegment
6613    //=========================================================================
6614    pub fn gst_segment_get_type() -> GType;
6615    pub fn gst_segment_new() -> *mut GstSegment;
6616    pub fn gst_segment_clip(
6617        segment: *const GstSegment,
6618        format: GstFormat,
6619        start: u64,
6620        stop: u64,
6621        clip_start: *mut u64,
6622        clip_stop: *mut u64,
6623    ) -> gboolean;
6624    pub fn gst_segment_copy(segment: *const GstSegment) -> *mut GstSegment;
6625    pub fn gst_segment_copy_into(src: *const GstSegment, dest: *mut GstSegment);
6626    pub fn gst_segment_do_seek(
6627        segment: *mut GstSegment,
6628        rate: c_double,
6629        format: GstFormat,
6630        flags: GstSeekFlags,
6631        start_type: GstSeekType,
6632        start: u64,
6633        stop_type: GstSeekType,
6634        stop: u64,
6635        update: *mut gboolean,
6636    ) -> gboolean;
6637    pub fn gst_segment_free(segment: *mut GstSegment);
6638    pub fn gst_segment_init(segment: *mut GstSegment, format: GstFormat);
6639    pub fn gst_segment_is_equal(s0: *const GstSegment, s1: *const GstSegment) -> gboolean;
6640    pub fn gst_segment_offset_running_time(
6641        segment: *mut GstSegment,
6642        format: GstFormat,
6643        offset: i64,
6644    ) -> gboolean;
6645    pub fn gst_segment_position_from_running_time(
6646        segment: *const GstSegment,
6647        format: GstFormat,
6648        running_time: u64,
6649    ) -> u64;
6650    pub fn gst_segment_position_from_running_time_full(
6651        segment: *const GstSegment,
6652        format: GstFormat,
6653        running_time: u64,
6654        position: *mut u64,
6655    ) -> c_int;
6656    pub fn gst_segment_position_from_stream_time(
6657        segment: *const GstSegment,
6658        format: GstFormat,
6659        stream_time: u64,
6660    ) -> u64;
6661    pub fn gst_segment_position_from_stream_time_full(
6662        segment: *const GstSegment,
6663        format: GstFormat,
6664        stream_time: u64,
6665        position: *mut u64,
6666    ) -> c_int;
6667    pub fn gst_segment_set_running_time(
6668        segment: *mut GstSegment,
6669        format: GstFormat,
6670        running_time: u64,
6671    ) -> gboolean;
6672    pub fn gst_segment_to_position(
6673        segment: *const GstSegment,
6674        format: GstFormat,
6675        running_time: u64,
6676    ) -> u64;
6677    pub fn gst_segment_to_running_time(
6678        segment: *const GstSegment,
6679        format: GstFormat,
6680        position: u64,
6681    ) -> u64;
6682    pub fn gst_segment_to_running_time_full(
6683        segment: *const GstSegment,
6684        format: GstFormat,
6685        position: u64,
6686        running_time: *mut u64,
6687    ) -> c_int;
6688    pub fn gst_segment_to_stream_time(
6689        segment: *const GstSegment,
6690        format: GstFormat,
6691        position: u64,
6692    ) -> u64;
6693    pub fn gst_segment_to_stream_time_full(
6694        segment: *const GstSegment,
6695        format: GstFormat,
6696        position: u64,
6697        stream_time: *mut u64,
6698    ) -> c_int;
6699
6700    //=========================================================================
6701    // GstStaticCaps
6702    //=========================================================================
6703    pub fn gst_static_caps_get_type() -> GType;
6704    pub fn gst_static_caps_cleanup(static_caps: *mut GstStaticCaps);
6705    pub fn gst_static_caps_get(static_caps: *mut GstStaticCaps) -> *mut GstCaps;
6706
6707    //=========================================================================
6708    // GstStaticPadTemplate
6709    //=========================================================================
6710    pub fn gst_static_pad_template_get_type() -> GType;
6711    pub fn gst_static_pad_template_get(
6712        pad_template: *mut GstStaticPadTemplate,
6713    ) -> *mut GstPadTemplate;
6714    pub fn gst_static_pad_template_get_caps(templ: *mut GstStaticPadTemplate) -> *mut GstCaps;
6715
6716    //=========================================================================
6717    // GstStructure
6718    //=========================================================================
6719    pub fn gst_structure_get_type() -> GType;
6720    pub fn gst_structure_from_string(
6721        string: *const c_char,
6722        end: *mut *mut c_char,
6723    ) -> *mut GstStructure;
6724    pub fn gst_structure_new(
6725        name: *const c_char,
6726        firstfield: *const c_char,
6727        ...
6728    ) -> *mut GstStructure;
6729    pub fn gst_structure_new_empty(name: *const c_char) -> *mut GstStructure;
6730    pub fn gst_structure_new_from_string(string: *const c_char) -> *mut GstStructure;
6731    pub fn gst_structure_new_id(
6732        name_quark: glib::GQuark,
6733        field_quark: glib::GQuark,
6734        ...
6735    ) -> *mut GstStructure;
6736    pub fn gst_structure_new_id_empty(quark: glib::GQuark) -> *mut GstStructure;
6737    #[cfg(feature = "v1_26")]
6738    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6739    pub fn gst_structure_new_id_str(
6740        name: *const GstIdStr,
6741        fieldname: *const GstIdStr,
6742        ...
6743    ) -> *mut GstStructure;
6744    #[cfg(feature = "v1_26")]
6745    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6746    pub fn gst_structure_new_id_str_empty(name: *const GstIdStr) -> *mut GstStructure;
6747    //#[cfg(feature = "v1_26")]
6748    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6749    //pub fn gst_structure_new_id_str_valist(name: *const GstIdStr, firstfield: *const GstIdStr, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
6750    #[cfg(feature = "v1_26")]
6751    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6752    pub fn gst_structure_new_static_str(
6753        name: *const c_char,
6754        firstfield: *const c_char,
6755        ...
6756    ) -> *mut GstStructure;
6757    #[cfg(feature = "v1_26")]
6758    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6759    pub fn gst_structure_new_static_str_empty(name: *const c_char) -> *mut GstStructure;
6760    //#[cfg(feature = "v1_26")]
6761    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6762    //pub fn gst_structure_new_static_str_valist(name: *const c_char, firstfield: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
6763    //pub fn gst_structure_new_valist(name: *const c_char, firstfield: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
6764    pub fn gst_structure_can_intersect(
6765        struct1: *const GstStructure,
6766        struct2: *const GstStructure,
6767    ) -> gboolean;
6768    pub fn gst_structure_copy(structure: *const GstStructure) -> *mut GstStructure;
6769    pub fn gst_structure_filter_and_map_in_place(
6770        structure: *mut GstStructure,
6771        func: GstStructureFilterMapFunc,
6772        user_data: gpointer,
6773    );
6774    #[cfg(feature = "v1_26")]
6775    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6776    pub fn gst_structure_filter_and_map_in_place_id_str(
6777        structure: *mut GstStructure,
6778        func: GstStructureFilterMapIdStrFunc,
6779        user_data: gpointer,
6780    );
6781    pub fn gst_structure_fixate(structure: *mut GstStructure);
6782    pub fn gst_structure_fixate_field(
6783        structure: *mut GstStructure,
6784        field_name: *const c_char,
6785    ) -> gboolean;
6786    pub fn gst_structure_fixate_field_boolean(
6787        structure: *mut GstStructure,
6788        field_name: *const c_char,
6789        target: gboolean,
6790    ) -> gboolean;
6791    pub fn gst_structure_fixate_field_nearest_double(
6792        structure: *mut GstStructure,
6793        field_name: *const c_char,
6794        target: c_double,
6795    ) -> gboolean;
6796    pub fn gst_structure_fixate_field_nearest_fraction(
6797        structure: *mut GstStructure,
6798        field_name: *const c_char,
6799        target_numerator: c_int,
6800        target_denominator: c_int,
6801    ) -> gboolean;
6802    pub fn gst_structure_fixate_field_nearest_int(
6803        structure: *mut GstStructure,
6804        field_name: *const c_char,
6805        target: c_int,
6806    ) -> gboolean;
6807    pub fn gst_structure_fixate_field_string(
6808        structure: *mut GstStructure,
6809        field_name: *const c_char,
6810        target: *const c_char,
6811    ) -> gboolean;
6812    pub fn gst_structure_foreach(
6813        structure: *const GstStructure,
6814        func: GstStructureForeachFunc,
6815        user_data: gpointer,
6816    ) -> gboolean;
6817    #[cfg(feature = "v1_26")]
6818    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6819    pub fn gst_structure_foreach_id_str(
6820        structure: *const GstStructure,
6821        func: GstStructureForeachIdStrFunc,
6822        user_data: gpointer,
6823    ) -> gboolean;
6824    pub fn gst_structure_free(structure: *mut GstStructure);
6825    pub fn gst_structure_get(
6826        structure: *const GstStructure,
6827        first_fieldname: *const c_char,
6828        ...
6829    ) -> gboolean;
6830    pub fn gst_structure_get_array(
6831        structure: *mut GstStructure,
6832        fieldname: *const c_char,
6833        array: *mut *mut gobject::GValueArray,
6834    ) -> gboolean;
6835    pub fn gst_structure_get_boolean(
6836        structure: *const GstStructure,
6837        fieldname: *const c_char,
6838        value: *mut gboolean,
6839    ) -> gboolean;
6840    pub fn gst_structure_get_clock_time(
6841        structure: *const GstStructure,
6842        fieldname: *const c_char,
6843        value: *mut GstClockTime,
6844    ) -> gboolean;
6845    pub fn gst_structure_get_date(
6846        structure: *const GstStructure,
6847        fieldname: *const c_char,
6848        value: *mut *mut glib::GDate,
6849    ) -> gboolean;
6850    pub fn gst_structure_get_date_time(
6851        structure: *const GstStructure,
6852        fieldname: *const c_char,
6853        value: *mut *mut GstDateTime,
6854    ) -> gboolean;
6855    pub fn gst_structure_get_double(
6856        structure: *const GstStructure,
6857        fieldname: *const c_char,
6858        value: *mut c_double,
6859    ) -> gboolean;
6860    pub fn gst_structure_get_enum(
6861        structure: *const GstStructure,
6862        fieldname: *const c_char,
6863        enumtype: GType,
6864        value: *mut c_int,
6865    ) -> gboolean;
6866    pub fn gst_structure_get_field_type(
6867        structure: *const GstStructure,
6868        fieldname: *const c_char,
6869    ) -> GType;
6870    #[cfg(feature = "v1_22")]
6871    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6872    pub fn gst_structure_get_flags(
6873        structure: *const GstStructure,
6874        fieldname: *const c_char,
6875        flags_type: GType,
6876        value: *mut c_uint,
6877    ) -> gboolean;
6878    pub fn gst_structure_get_flagset(
6879        structure: *const GstStructure,
6880        fieldname: *const c_char,
6881        value_flags: *mut c_uint,
6882        value_mask: *mut c_uint,
6883    ) -> gboolean;
6884    pub fn gst_structure_get_fraction(
6885        structure: *const GstStructure,
6886        fieldname: *const c_char,
6887        value_numerator: *mut c_int,
6888        value_denominator: *mut c_int,
6889    ) -> gboolean;
6890    pub fn gst_structure_get_int(
6891        structure: *const GstStructure,
6892        fieldname: *const c_char,
6893        value: *mut c_int,
6894    ) -> gboolean;
6895    pub fn gst_structure_get_int64(
6896        structure: *const GstStructure,
6897        fieldname: *const c_char,
6898        value: *mut i64,
6899    ) -> gboolean;
6900    pub fn gst_structure_get_list(
6901        structure: *mut GstStructure,
6902        fieldname: *const c_char,
6903        array: *mut *mut gobject::GValueArray,
6904    ) -> gboolean;
6905    pub fn gst_structure_get_name(structure: *const GstStructure) -> *const c_char;
6906    pub fn gst_structure_get_name_id(structure: *const GstStructure) -> glib::GQuark;
6907    #[cfg(feature = "v1_26")]
6908    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6909    pub fn gst_structure_get_name_id_str(structure: *const GstStructure) -> *const GstIdStr;
6910    pub fn gst_structure_get_string(
6911        structure: *const GstStructure,
6912        fieldname: *const c_char,
6913    ) -> *const c_char;
6914    pub fn gst_structure_get_uint(
6915        structure: *const GstStructure,
6916        fieldname: *const c_char,
6917        value: *mut c_uint,
6918    ) -> gboolean;
6919    pub fn gst_structure_get_uint64(
6920        structure: *const GstStructure,
6921        fieldname: *const c_char,
6922        value: *mut u64,
6923    ) -> gboolean;
6924    //pub fn gst_structure_get_valist(structure: *const GstStructure, first_fieldname: *const c_char, args: /*Unimplemented*/va_list) -> gboolean;
6925    pub fn gst_structure_get_value(
6926        structure: *const GstStructure,
6927        fieldname: *const c_char,
6928    ) -> *const gobject::GValue;
6929    pub fn gst_structure_has_field(
6930        structure: *const GstStructure,
6931        fieldname: *const c_char,
6932    ) -> gboolean;
6933    pub fn gst_structure_has_field_typed(
6934        structure: *const GstStructure,
6935        fieldname: *const c_char,
6936        type_: GType,
6937    ) -> gboolean;
6938    pub fn gst_structure_has_name(structure: *const GstStructure, name: *const c_char) -> gboolean;
6939    pub fn gst_structure_id_get(
6940        structure: *const GstStructure,
6941        first_field_id: glib::GQuark,
6942        ...
6943    ) -> gboolean;
6944    //pub fn gst_structure_id_get_valist(structure: *const GstStructure, first_field_id: glib::GQuark, args: /*Unimplemented*/va_list) -> gboolean;
6945    pub fn gst_structure_id_get_value(
6946        structure: *const GstStructure,
6947        field: glib::GQuark,
6948    ) -> *const gobject::GValue;
6949    pub fn gst_structure_id_has_field(
6950        structure: *const GstStructure,
6951        field: glib::GQuark,
6952    ) -> gboolean;
6953    pub fn gst_structure_id_has_field_typed(
6954        structure: *const GstStructure,
6955        field: glib::GQuark,
6956        type_: GType,
6957    ) -> gboolean;
6958    pub fn gst_structure_id_set(structure: *mut GstStructure, fieldname: glib::GQuark, ...);
6959    //pub fn gst_structure_id_set_valist(structure: *mut GstStructure, fieldname: glib::GQuark, varargs: /*Unimplemented*/va_list);
6960    pub fn gst_structure_id_set_value(
6961        structure: *mut GstStructure,
6962        field: glib::GQuark,
6963        value: *const gobject::GValue,
6964    );
6965    #[cfg(feature = "v1_26")]
6966    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6967    pub fn gst_structure_id_str_get(
6968        structure: *const GstStructure,
6969        first_fieldname: *const GstIdStr,
6970        ...
6971    ) -> gboolean;
6972    #[cfg(feature = "v1_26")]
6973    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6974    pub fn gst_structure_id_str_get_field_type(
6975        structure: *const GstStructure,
6976        fieldname: *const GstIdStr,
6977    ) -> GType;
6978    //#[cfg(feature = "v1_26")]
6979    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6980    //pub fn gst_structure_id_str_get_valist(structure: *const GstStructure, first_fieldname: *const GstIdStr, args: /*Unimplemented*/va_list) -> gboolean;
6981    #[cfg(feature = "v1_26")]
6982    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6983    pub fn gst_structure_id_str_get_value(
6984        structure: *const GstStructure,
6985        fieldname: *const GstIdStr,
6986    ) -> *const gobject::GValue;
6987    #[cfg(feature = "v1_26")]
6988    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6989    pub fn gst_structure_id_str_has_field(
6990        structure: *const GstStructure,
6991        fieldname: *const GstIdStr,
6992    ) -> gboolean;
6993    #[cfg(feature = "v1_26")]
6994    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6995    pub fn gst_structure_id_str_has_field_typed(
6996        structure: *const GstStructure,
6997        fieldname: *const GstIdStr,
6998        type_: GType,
6999    ) -> gboolean;
7000    #[cfg(feature = "v1_26")]
7001    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7002    pub fn gst_structure_id_str_nth_field_name(
7003        structure: *const GstStructure,
7004        index: c_uint,
7005    ) -> *const GstIdStr;
7006    #[cfg(feature = "v1_26")]
7007    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7008    pub fn gst_structure_id_str_remove_field(
7009        structure: *mut GstStructure,
7010        fieldname: *const GstIdStr,
7011    );
7012    #[cfg(feature = "v1_26")]
7013    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7014    pub fn gst_structure_id_str_remove_fields(
7015        structure: *mut GstStructure,
7016        fieldname: *const GstIdStr,
7017        ...
7018    );
7019    //#[cfg(feature = "v1_26")]
7020    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7021    //pub fn gst_structure_id_str_remove_fields_valist(structure: *mut GstStructure, fieldname: *const GstIdStr, varargs: /*Unimplemented*/va_list);
7022    #[cfg(feature = "v1_26")]
7023    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7024    pub fn gst_structure_id_str_set(structure: *mut GstStructure, fieldname: *const GstIdStr, ...);
7025    //#[cfg(feature = "v1_26")]
7026    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7027    //pub fn gst_structure_id_str_set_valist(structure: *mut GstStructure, fieldname: *const GstIdStr, varargs: /*Unimplemented*/va_list);
7028    #[cfg(feature = "v1_26")]
7029    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7030    pub fn gst_structure_id_str_set_value(
7031        structure: *mut GstStructure,
7032        fieldname: *const GstIdStr,
7033        value: *const gobject::GValue,
7034    );
7035    #[cfg(feature = "v1_26")]
7036    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7037    pub fn gst_structure_id_str_take_value(
7038        structure: *mut GstStructure,
7039        fieldname: *const GstIdStr,
7040        value: *mut gobject::GValue,
7041    );
7042    pub fn gst_structure_id_take_value(
7043        structure: *mut GstStructure,
7044        field: glib::GQuark,
7045        value: *mut gobject::GValue,
7046    );
7047    pub fn gst_structure_intersect(
7048        struct1: *const GstStructure,
7049        struct2: *const GstStructure,
7050    ) -> *mut GstStructure;
7051    pub fn gst_structure_is_equal(
7052        structure1: *const GstStructure,
7053        structure2: *const GstStructure,
7054    ) -> gboolean;
7055    pub fn gst_structure_is_subset(
7056        subset: *const GstStructure,
7057        superset: *const GstStructure,
7058    ) -> gboolean;
7059    pub fn gst_structure_map_in_place(
7060        structure: *mut GstStructure,
7061        func: GstStructureMapFunc,
7062        user_data: gpointer,
7063    ) -> gboolean;
7064    #[cfg(feature = "v1_26")]
7065    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7066    pub fn gst_structure_map_in_place_id_str(
7067        structure: *mut GstStructure,
7068        func: GstStructureMapIdStrFunc,
7069        user_data: gpointer,
7070    ) -> gboolean;
7071    pub fn gst_structure_n_fields(structure: *const GstStructure) -> c_int;
7072    pub fn gst_structure_nth_field_name(
7073        structure: *const GstStructure,
7074        index: c_uint,
7075    ) -> *const c_char;
7076    pub fn gst_structure_remove_all_fields(structure: *mut GstStructure);
7077    pub fn gst_structure_remove_field(structure: *mut GstStructure, fieldname: *const c_char);
7078    pub fn gst_structure_remove_fields(structure: *mut GstStructure, fieldname: *const c_char, ...);
7079    //pub fn gst_structure_remove_fields_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7080    #[cfg(feature = "v1_20")]
7081    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
7082    pub fn gst_structure_serialize(
7083        structure: *const GstStructure,
7084        flags: GstSerializeFlags,
7085    ) -> *mut c_char;
7086    #[cfg(feature = "v1_24")]
7087    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7088    pub fn gst_structure_serialize_full(
7089        structure: *const GstStructure,
7090        flags: GstSerializeFlags,
7091    ) -> *mut c_char;
7092    pub fn gst_structure_set(structure: *mut GstStructure, fieldname: *const c_char, ...);
7093    pub fn gst_structure_set_array(
7094        structure: *mut GstStructure,
7095        fieldname: *const c_char,
7096        array: *const gobject::GValueArray,
7097    );
7098    pub fn gst_structure_set_list(
7099        structure: *mut GstStructure,
7100        fieldname: *const c_char,
7101        array: *const gobject::GValueArray,
7102    );
7103    pub fn gst_structure_set_name(structure: *mut GstStructure, name: *const c_char);
7104    #[cfg(feature = "v1_26")]
7105    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7106    pub fn gst_structure_set_name_id_str(structure: *mut GstStructure, name: *const GstIdStr);
7107    #[cfg(feature = "v1_26")]
7108    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7109    pub fn gst_structure_set_name_static_str(structure: *mut GstStructure, name: *const c_char);
7110    pub fn gst_structure_set_parent_refcount(
7111        structure: *mut GstStructure,
7112        refcount: *mut c_int,
7113    ) -> gboolean;
7114    #[cfg(feature = "v1_26")]
7115    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7116    pub fn gst_structure_set_static_str(
7117        structure: *mut GstStructure,
7118        fieldname: *const c_char,
7119        ...
7120    );
7121    //#[cfg(feature = "v1_26")]
7122    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7123    //pub fn gst_structure_set_static_str_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7124    //pub fn gst_structure_set_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7125    pub fn gst_structure_set_value(
7126        structure: *mut GstStructure,
7127        fieldname: *const c_char,
7128        value: *const gobject::GValue,
7129    );
7130    #[cfg(feature = "v1_26")]
7131    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7132    pub fn gst_structure_set_value_static_str(
7133        structure: *mut GstStructure,
7134        fieldname: *const c_char,
7135        value: *const gobject::GValue,
7136    );
7137    pub fn gst_structure_take_value(
7138        structure: *mut GstStructure,
7139        fieldname: *const c_char,
7140        value: *mut gobject::GValue,
7141    );
7142    #[cfg(feature = "v1_26")]
7143    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7144    pub fn gst_structure_take_value_static_str(
7145        structure: *mut GstStructure,
7146        fieldname: *const c_char,
7147        value: *mut gobject::GValue,
7148    );
7149    pub fn gst_structure_to_string(structure: *const GstStructure) -> *mut c_char;
7150    #[cfg(feature = "v1_18")]
7151    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7152    pub fn gst_structure_take(
7153        oldstr_ptr: *mut *mut GstStructure,
7154        newstr: *mut GstStructure,
7155    ) -> gboolean;
7156
7157    //=========================================================================
7158    // GstTagList
7159    //=========================================================================
7160    pub fn gst_tag_list_get_type() -> GType;
7161    pub fn gst_tag_list_new(tag: *const c_char, ...) -> *mut GstTagList;
7162    pub fn gst_tag_list_new_empty() -> *mut GstTagList;
7163    pub fn gst_tag_list_new_from_string(str: *const c_char) -> *mut GstTagList;
7164    //pub fn gst_tag_list_new_valist(var_args: /*Unimplemented*/va_list) -> *mut GstTagList;
7165    pub fn gst_tag_list_add(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, ...);
7166    //pub fn gst_tag_list_add_valist(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
7167    //pub fn gst_tag_list_add_valist_values(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
7168    pub fn gst_tag_list_add_value(
7169        list: *mut GstTagList,
7170        mode: GstTagMergeMode,
7171        tag: *const c_char,
7172        value: *const gobject::GValue,
7173    );
7174    pub fn gst_tag_list_add_values(
7175        list: *mut GstTagList,
7176        mode: GstTagMergeMode,
7177        tag: *const c_char,
7178        ...
7179    );
7180    #[cfg(feature = "v1_18_3")]
7181    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7182    pub fn gst_tag_list_copy(taglist: *const GstTagList) -> *mut GstTagList;
7183    pub fn gst_tag_list_foreach(
7184        list: *const GstTagList,
7185        func: GstTagForeachFunc,
7186        user_data: gpointer,
7187    );
7188    pub fn gst_tag_list_get_boolean(
7189        list: *const GstTagList,
7190        tag: *const c_char,
7191        value: *mut gboolean,
7192    ) -> gboolean;
7193    pub fn gst_tag_list_get_boolean_index(
7194        list: *const GstTagList,
7195        tag: *const c_char,
7196        index: c_uint,
7197        value: *mut gboolean,
7198    ) -> gboolean;
7199    pub fn gst_tag_list_get_date(
7200        list: *const GstTagList,
7201        tag: *const c_char,
7202        value: *mut *mut glib::GDate,
7203    ) -> gboolean;
7204    pub fn gst_tag_list_get_date_index(
7205        list: *const GstTagList,
7206        tag: *const c_char,
7207        index: c_uint,
7208        value: *mut *mut glib::GDate,
7209    ) -> gboolean;
7210    pub fn gst_tag_list_get_date_time(
7211        list: *const GstTagList,
7212        tag: *const c_char,
7213        value: *mut *mut GstDateTime,
7214    ) -> gboolean;
7215    pub fn gst_tag_list_get_date_time_index(
7216        list: *const GstTagList,
7217        tag: *const c_char,
7218        index: c_uint,
7219        value: *mut *mut GstDateTime,
7220    ) -> gboolean;
7221    pub fn gst_tag_list_get_double(
7222        list: *const GstTagList,
7223        tag: *const c_char,
7224        value: *mut c_double,
7225    ) -> gboolean;
7226    pub fn gst_tag_list_get_double_index(
7227        list: *const GstTagList,
7228        tag: *const c_char,
7229        index: c_uint,
7230        value: *mut c_double,
7231    ) -> gboolean;
7232    pub fn gst_tag_list_get_float(
7233        list: *const GstTagList,
7234        tag: *const c_char,
7235        value: *mut c_float,
7236    ) -> gboolean;
7237    pub fn gst_tag_list_get_float_index(
7238        list: *const GstTagList,
7239        tag: *const c_char,
7240        index: c_uint,
7241        value: *mut c_float,
7242    ) -> gboolean;
7243    pub fn gst_tag_list_get_int(
7244        list: *const GstTagList,
7245        tag: *const c_char,
7246        value: *mut c_int,
7247    ) -> gboolean;
7248    pub fn gst_tag_list_get_int64(
7249        list: *const GstTagList,
7250        tag: *const c_char,
7251        value: *mut i64,
7252    ) -> gboolean;
7253    pub fn gst_tag_list_get_int64_index(
7254        list: *const GstTagList,
7255        tag: *const c_char,
7256        index: c_uint,
7257        value: *mut i64,
7258    ) -> gboolean;
7259    pub fn gst_tag_list_get_int_index(
7260        list: *const GstTagList,
7261        tag: *const c_char,
7262        index: c_uint,
7263        value: *mut c_int,
7264    ) -> gboolean;
7265    pub fn gst_tag_list_get_pointer(
7266        list: *const GstTagList,
7267        tag: *const c_char,
7268        value: *mut gpointer,
7269    ) -> gboolean;
7270    pub fn gst_tag_list_get_pointer_index(
7271        list: *const GstTagList,
7272        tag: *const c_char,
7273        index: c_uint,
7274        value: *mut gpointer,
7275    ) -> gboolean;
7276    pub fn gst_tag_list_get_sample(
7277        list: *const GstTagList,
7278        tag: *const c_char,
7279        sample: *mut *mut GstSample,
7280    ) -> gboolean;
7281    pub fn gst_tag_list_get_sample_index(
7282        list: *const GstTagList,
7283        tag: *const c_char,
7284        index: c_uint,
7285        sample: *mut *mut GstSample,
7286    ) -> gboolean;
7287    pub fn gst_tag_list_get_scope(list: *const GstTagList) -> GstTagScope;
7288    pub fn gst_tag_list_get_string(
7289        list: *const GstTagList,
7290        tag: *const c_char,
7291        value: *mut *mut c_char,
7292    ) -> gboolean;
7293    pub fn gst_tag_list_get_string_index(
7294        list: *const GstTagList,
7295        tag: *const c_char,
7296        index: c_uint,
7297        value: *mut *mut c_char,
7298    ) -> gboolean;
7299    pub fn gst_tag_list_get_tag_size(list: *const GstTagList, tag: *const c_char) -> c_uint;
7300    pub fn gst_tag_list_get_uint(
7301        list: *const GstTagList,
7302        tag: *const c_char,
7303        value: *mut c_uint,
7304    ) -> gboolean;
7305    pub fn gst_tag_list_get_uint64(
7306        list: *const GstTagList,
7307        tag: *const c_char,
7308        value: *mut u64,
7309    ) -> gboolean;
7310    pub fn gst_tag_list_get_uint64_index(
7311        list: *const GstTagList,
7312        tag: *const c_char,
7313        index: c_uint,
7314        value: *mut u64,
7315    ) -> gboolean;
7316    pub fn gst_tag_list_get_uint_index(
7317        list: *const GstTagList,
7318        tag: *const c_char,
7319        index: c_uint,
7320        value: *mut c_uint,
7321    ) -> gboolean;
7322    pub fn gst_tag_list_get_value_index(
7323        list: *const GstTagList,
7324        tag: *const c_char,
7325        index: c_uint,
7326    ) -> *const gobject::GValue;
7327    pub fn gst_tag_list_insert(
7328        into: *mut GstTagList,
7329        from: *const GstTagList,
7330        mode: GstTagMergeMode,
7331    );
7332    pub fn gst_tag_list_is_empty(list: *const GstTagList) -> gboolean;
7333    pub fn gst_tag_list_is_equal(list1: *const GstTagList, list2: *const GstTagList) -> gboolean;
7334    pub fn gst_tag_list_merge(
7335        list1: *const GstTagList,
7336        list2: *const GstTagList,
7337        mode: GstTagMergeMode,
7338    ) -> *mut GstTagList;
7339    pub fn gst_tag_list_n_tags(list: *const GstTagList) -> c_int;
7340    pub fn gst_tag_list_nth_tag_name(list: *const GstTagList, index: c_uint) -> *const c_char;
7341    pub fn gst_tag_list_peek_string_index(
7342        list: *const GstTagList,
7343        tag: *const c_char,
7344        index: c_uint,
7345        value: *mut *const c_char,
7346    ) -> gboolean;
7347    #[cfg(feature = "v1_18_3")]
7348    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7349    pub fn gst_tag_list_ref(taglist: *mut GstTagList) -> *mut GstTagList;
7350    pub fn gst_tag_list_remove_tag(list: *mut GstTagList, tag: *const c_char);
7351    pub fn gst_tag_list_set_scope(list: *mut GstTagList, scope: GstTagScope);
7352    pub fn gst_tag_list_to_string(list: *const GstTagList) -> *mut c_char;
7353    #[cfg(feature = "v1_18_3")]
7354    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7355    pub fn gst_tag_list_unref(taglist: *mut GstTagList);
7356    pub fn gst_tag_list_copy_value(
7357        dest: *mut gobject::GValue,
7358        list: *const GstTagList,
7359        tag: *const c_char,
7360    ) -> gboolean;
7361    #[cfg(feature = "v1_18_3")]
7362    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7363    pub fn gst_tag_list_replace(
7364        old_taglist: *mut *mut GstTagList,
7365        new_taglist: *mut GstTagList,
7366    ) -> gboolean;
7367    #[cfg(feature = "v1_18_3")]
7368    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7369    pub fn gst_tag_list_take(
7370        old_taglist: *mut *mut GstTagList,
7371        new_taglist: *mut GstTagList,
7372    ) -> gboolean;
7373
7374    //=========================================================================
7375    // GstToc
7376    //=========================================================================
7377    pub fn gst_toc_get_type() -> GType;
7378    pub fn gst_toc_new(scope: GstTocScope) -> *mut GstToc;
7379    pub fn gst_toc_append_entry(toc: *mut GstToc, entry: *mut GstTocEntry);
7380    pub fn gst_toc_dump(toc: *mut GstToc);
7381    pub fn gst_toc_find_entry(toc: *const GstToc, uid: *const c_char) -> *mut GstTocEntry;
7382    pub fn gst_toc_get_entries(toc: *const GstToc) -> *mut glib::GList;
7383    pub fn gst_toc_get_scope(toc: *const GstToc) -> GstTocScope;
7384    pub fn gst_toc_get_tags(toc: *const GstToc) -> *mut GstTagList;
7385    pub fn gst_toc_merge_tags(toc: *mut GstToc, tags: *mut GstTagList, mode: GstTagMergeMode);
7386    pub fn gst_toc_set_tags(toc: *mut GstToc, tags: *mut GstTagList);
7387
7388    //=========================================================================
7389    // GstTocEntry
7390    //=========================================================================
7391    pub fn gst_toc_entry_get_type() -> GType;
7392    pub fn gst_toc_entry_new(type_: GstTocEntryType, uid: *const c_char) -> *mut GstTocEntry;
7393    pub fn gst_toc_entry_append_sub_entry(entry: *mut GstTocEntry, subentry: *mut GstTocEntry);
7394    pub fn gst_toc_entry_get_entry_type(entry: *const GstTocEntry) -> GstTocEntryType;
7395    pub fn gst_toc_entry_get_loop(
7396        entry: *const GstTocEntry,
7397        loop_type: *mut GstTocLoopType,
7398        repeat_count: *mut c_int,
7399    ) -> gboolean;
7400    pub fn gst_toc_entry_get_parent(entry: *mut GstTocEntry) -> *mut GstTocEntry;
7401    pub fn gst_toc_entry_get_start_stop_times(
7402        entry: *const GstTocEntry,
7403        start: *mut i64,
7404        stop: *mut i64,
7405    ) -> gboolean;
7406    pub fn gst_toc_entry_get_sub_entries(entry: *const GstTocEntry) -> *mut glib::GList;
7407    pub fn gst_toc_entry_get_tags(entry: *const GstTocEntry) -> *mut GstTagList;
7408    pub fn gst_toc_entry_get_toc(entry: *mut GstTocEntry) -> *mut GstToc;
7409    pub fn gst_toc_entry_get_uid(entry: *const GstTocEntry) -> *const c_char;
7410    pub fn gst_toc_entry_is_alternative(entry: *const GstTocEntry) -> gboolean;
7411    pub fn gst_toc_entry_is_sequence(entry: *const GstTocEntry) -> gboolean;
7412    pub fn gst_toc_entry_merge_tags(
7413        entry: *mut GstTocEntry,
7414        tags: *mut GstTagList,
7415        mode: GstTagMergeMode,
7416    );
7417    pub fn gst_toc_entry_set_loop(
7418        entry: *mut GstTocEntry,
7419        loop_type: GstTocLoopType,
7420        repeat_count: c_int,
7421    );
7422    pub fn gst_toc_entry_set_start_stop_times(entry: *mut GstTocEntry, start: i64, stop: i64);
7423    pub fn gst_toc_entry_set_tags(entry: *mut GstTocEntry, tags: *mut GstTagList);
7424
7425    //=========================================================================
7426    // GstTracerClass
7427    //=========================================================================
7428    #[cfg(feature = "v1_26")]
7429    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7430    pub fn gst_tracer_class_set_use_structure_params(
7431        tracer_class: *mut GstTracerClass,
7432        use_structure_params: gboolean,
7433    );
7434    #[cfg(feature = "v1_26")]
7435    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7436    pub fn gst_tracer_class_uses_structure_params(tracer_class: *mut GstTracerClass) -> gboolean;
7437
7438    //=========================================================================
7439    // GstTypeFind
7440    //=========================================================================
7441    pub fn gst_type_find_get_type() -> GType;
7442    pub fn gst_type_find_get_length(find: *mut GstTypeFind) -> u64;
7443    pub fn gst_type_find_peek(find: *mut GstTypeFind, offset: i64, size: c_uint) -> *const u8;
7444    pub fn gst_type_find_suggest(find: *mut GstTypeFind, probability: c_uint, caps: *mut GstCaps);
7445    #[cfg(feature = "v1_20")]
7446    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
7447    pub fn gst_type_find_suggest_empty_simple(
7448        find: *mut GstTypeFind,
7449        probability: c_uint,
7450        media_type: *const c_char,
7451    );
7452    pub fn gst_type_find_suggest_simple(
7453        find: *mut GstTypeFind,
7454        probability: c_uint,
7455        media_type: *const c_char,
7456        fieldname: *const c_char,
7457        ...
7458    );
7459    pub fn gst_type_find_register(
7460        plugin: *mut GstPlugin,
7461        name: *const c_char,
7462        rank: c_uint,
7463        func: GstTypeFindFunction,
7464        extensions: *const c_char,
7465        possible_caps: *mut GstCaps,
7466        data: gpointer,
7467        data_notify: glib::GDestroyNotify,
7468    ) -> gboolean;
7469
7470    //=========================================================================
7471    // GstUri
7472    //=========================================================================
7473    pub fn gst_uri_get_type() -> GType;
7474    pub fn gst_uri_new(
7475        scheme: *const c_char,
7476        userinfo: *const c_char,
7477        host: *const c_char,
7478        port: c_uint,
7479        path: *const c_char,
7480        query: *const c_char,
7481        fragment: *const c_char,
7482    ) -> *mut GstUri;
7483    pub fn gst_uri_append_path(uri: *mut GstUri, relative_path: *const c_char) -> gboolean;
7484    pub fn gst_uri_append_path_segment(uri: *mut GstUri, path_segment: *const c_char) -> gboolean;
7485    #[cfg(feature = "v1_18_3")]
7486    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7487    pub fn gst_uri_copy(uri: *const GstUri) -> *mut GstUri;
7488    pub fn gst_uri_equal(first: *const GstUri, second: *const GstUri) -> gboolean;
7489    pub fn gst_uri_from_string_with_base(base: *mut GstUri, uri: *const c_char) -> *mut GstUri;
7490    pub fn gst_uri_get_fragment(uri: *const GstUri) -> *const c_char;
7491    pub fn gst_uri_get_host(uri: *const GstUri) -> *const c_char;
7492    pub fn gst_uri_get_media_fragment_table(uri: *const GstUri) -> *mut glib::GHashTable;
7493    pub fn gst_uri_get_path(uri: *const GstUri) -> *mut c_char;
7494    pub fn gst_uri_get_path_segments(uri: *const GstUri) -> *mut glib::GList;
7495    pub fn gst_uri_get_path_string(uri: *const GstUri) -> *mut c_char;
7496    pub fn gst_uri_get_port(uri: *const GstUri) -> c_uint;
7497    pub fn gst_uri_get_query_keys(uri: *const GstUri) -> *mut glib::GList;
7498    pub fn gst_uri_get_query_string(uri: *const GstUri) -> *mut c_char;
7499    #[cfg(feature = "v1_24")]
7500    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7501    pub fn gst_uri_get_query_string_ordered(
7502        uri: *const GstUri,
7503        keys: *const glib::GList,
7504    ) -> *mut c_char;
7505    pub fn gst_uri_get_query_table(uri: *const GstUri) -> *mut glib::GHashTable;
7506    pub fn gst_uri_get_query_value(uri: *const GstUri, query_key: *const c_char) -> *const c_char;
7507    pub fn gst_uri_get_scheme(uri: *const GstUri) -> *const c_char;
7508    pub fn gst_uri_get_userinfo(uri: *const GstUri) -> *const c_char;
7509    pub fn gst_uri_is_normalized(uri: *const GstUri) -> gboolean;
7510    pub fn gst_uri_is_writable(uri: *const GstUri) -> gboolean;
7511    pub fn gst_uri_join(base_uri: *mut GstUri, ref_uri: *mut GstUri) -> *mut GstUri;
7512    pub fn gst_uri_make_writable(uri: *mut GstUri) -> *mut GstUri;
7513    pub fn gst_uri_new_with_base(
7514        base: *mut GstUri,
7515        scheme: *const c_char,
7516        userinfo: *const c_char,
7517        host: *const c_char,
7518        port: c_uint,
7519        path: *const c_char,
7520        query: *const c_char,
7521        fragment: *const c_char,
7522    ) -> *mut GstUri;
7523    pub fn gst_uri_normalize(uri: *mut GstUri) -> gboolean;
7524    pub fn gst_uri_query_has_key(uri: *const GstUri, query_key: *const c_char) -> gboolean;
7525    #[cfg(feature = "v1_18_3")]
7526    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7527    pub fn gst_uri_ref(uri: *mut GstUri) -> *mut GstUri;
7528    pub fn gst_uri_remove_query_key(uri: *mut GstUri, query_key: *const c_char) -> gboolean;
7529    pub fn gst_uri_set_fragment(uri: *mut GstUri, fragment: *const c_char) -> gboolean;
7530    pub fn gst_uri_set_host(uri: *mut GstUri, host: *const c_char) -> gboolean;
7531    pub fn gst_uri_set_path(uri: *mut GstUri, path: *const c_char) -> gboolean;
7532    pub fn gst_uri_set_path_segments(uri: *mut GstUri, path_segments: *mut glib::GList)
7533        -> gboolean;
7534    pub fn gst_uri_set_path_string(uri: *mut GstUri, path: *const c_char) -> gboolean;
7535    pub fn gst_uri_set_port(uri: *mut GstUri, port: c_uint) -> gboolean;
7536    pub fn gst_uri_set_query_string(uri: *mut GstUri, query: *const c_char) -> gboolean;
7537    pub fn gst_uri_set_query_table(
7538        uri: *mut GstUri,
7539        query_table: *mut glib::GHashTable,
7540    ) -> gboolean;
7541    pub fn gst_uri_set_query_value(
7542        uri: *mut GstUri,
7543        query_key: *const c_char,
7544        query_value: *const c_char,
7545    ) -> gboolean;
7546    pub fn gst_uri_set_scheme(uri: *mut GstUri, scheme: *const c_char) -> gboolean;
7547    pub fn gst_uri_set_userinfo(uri: *mut GstUri, userinfo: *const c_char) -> gboolean;
7548    pub fn gst_uri_to_string(uri: *const GstUri) -> *mut c_char;
7549    #[cfg(feature = "v1_24")]
7550    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7551    pub fn gst_uri_to_string_with_keys(uri: *const GstUri, keys: *const glib::GList)
7552        -> *mut c_char;
7553    #[cfg(feature = "v1_18_3")]
7554    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7555    pub fn gst_uri_unref(uri: *mut GstUri);
7556    pub fn gst_uri_construct(protocol: *const c_char, location: *const c_char) -> *mut c_char;
7557    pub fn gst_uri_from_string(uri: *const c_char) -> *mut GstUri;
7558    #[cfg(feature = "v1_18")]
7559    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7560    pub fn gst_uri_from_string_escaped(uri: *const c_char) -> *mut GstUri;
7561    pub fn gst_uri_get_location(uri: *const c_char) -> *mut c_char;
7562    pub fn gst_uri_get_protocol(uri: *const c_char) -> *mut c_char;
7563    pub fn gst_uri_has_protocol(uri: *const c_char, protocol: *const c_char) -> gboolean;
7564    pub fn gst_uri_is_valid(uri: *const c_char) -> gboolean;
7565    pub fn gst_uri_join_strings(base_uri: *const c_char, ref_uri: *const c_char) -> *mut c_char;
7566    pub fn gst_uri_protocol_is_supported(type_: GstURIType, protocol: *const c_char) -> gboolean;
7567    pub fn gst_uri_protocol_is_valid(protocol: *const c_char) -> gboolean;
7568
7569    //=========================================================================
7570    // GstVecDeque
7571    //=========================================================================
7572    #[cfg(feature = "v1_26")]
7573    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7574    pub fn gst_vec_deque_clear(array: *mut GstVecDeque);
7575    #[cfg(feature = "v1_26")]
7576    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7577    pub fn gst_vec_deque_drop_element(array: *mut GstVecDeque, idx: size_t) -> gpointer;
7578    #[cfg(feature = "v1_26")]
7579    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7580    pub fn gst_vec_deque_drop_struct(
7581        array: *mut GstVecDeque,
7582        idx: size_t,
7583        p_struct: gpointer,
7584    ) -> gboolean;
7585    #[cfg(feature = "v1_26")]
7586    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7587    pub fn gst_vec_deque_find(
7588        array: *mut GstVecDeque,
7589        func: glib::GCompareFunc,
7590        data: gpointer,
7591    ) -> size_t;
7592    #[cfg(feature = "v1_26")]
7593    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7594    pub fn gst_vec_deque_free(array: *mut GstVecDeque);
7595    #[cfg(feature = "v1_26")]
7596    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7597    pub fn gst_vec_deque_get_length(array: *mut GstVecDeque) -> size_t;
7598    #[cfg(feature = "v1_26")]
7599    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7600    pub fn gst_vec_deque_is_empty(array: *mut GstVecDeque) -> gboolean;
7601    #[cfg(feature = "v1_26")]
7602    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7603    pub fn gst_vec_deque_peek_head(array: *mut GstVecDeque) -> gpointer;
7604    #[cfg(feature = "v1_26")]
7605    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7606    pub fn gst_vec_deque_peek_head_struct(array: *mut GstVecDeque) -> gpointer;
7607    #[cfg(feature = "v1_26")]
7608    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7609    pub fn gst_vec_deque_peek_nth(array: *mut GstVecDeque, idx: size_t) -> gpointer;
7610    #[cfg(feature = "v1_26")]
7611    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7612    pub fn gst_vec_deque_peek_nth_struct(array: *mut GstVecDeque, idx: size_t) -> gpointer;
7613    #[cfg(feature = "v1_26")]
7614    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7615    pub fn gst_vec_deque_peek_tail(array: *mut GstVecDeque) -> gpointer;
7616    #[cfg(feature = "v1_26")]
7617    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7618    pub fn gst_vec_deque_peek_tail_struct(array: *mut GstVecDeque) -> gpointer;
7619    #[cfg(feature = "v1_26")]
7620    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7621    pub fn gst_vec_deque_pop_head(array: *mut GstVecDeque) -> gpointer;
7622    #[cfg(feature = "v1_26")]
7623    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7624    pub fn gst_vec_deque_pop_head_struct(array: *mut GstVecDeque) -> gpointer;
7625    #[cfg(feature = "v1_26")]
7626    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7627    pub fn gst_vec_deque_pop_tail(array: *mut GstVecDeque) -> gpointer;
7628    #[cfg(feature = "v1_26")]
7629    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7630    pub fn gst_vec_deque_pop_tail_struct(array: *mut GstVecDeque) -> gpointer;
7631    #[cfg(feature = "v1_26")]
7632    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7633    pub fn gst_vec_deque_push_sorted(
7634        array: *mut GstVecDeque,
7635        data: gpointer,
7636        func: glib::GCompareDataFunc,
7637        user_data: gpointer,
7638    );
7639    #[cfg(feature = "v1_26")]
7640    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7641    pub fn gst_vec_deque_push_sorted_struct(
7642        array: *mut GstVecDeque,
7643        p_struct: gpointer,
7644        func: glib::GCompareDataFunc,
7645        user_data: gpointer,
7646    );
7647    #[cfg(feature = "v1_26")]
7648    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7649    pub fn gst_vec_deque_push_tail(array: *mut GstVecDeque, data: gpointer);
7650    #[cfg(feature = "v1_26")]
7651    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7652    pub fn gst_vec_deque_push_tail_struct(array: *mut GstVecDeque, p_struct: gpointer);
7653    #[cfg(feature = "v1_26")]
7654    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7655    pub fn gst_vec_deque_set_clear_func(array: *mut GstVecDeque, clear_func: glib::GDestroyNotify);
7656    #[cfg(feature = "v1_26")]
7657    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7658    pub fn gst_vec_deque_sort(
7659        array: *mut GstVecDeque,
7660        compare_func: glib::GCompareDataFunc,
7661        user_data: gpointer,
7662    );
7663    #[cfg(feature = "v1_26")]
7664    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7665    pub fn gst_vec_deque_new(initial_size: size_t) -> *mut GstVecDeque;
7666    #[cfg(feature = "v1_26")]
7667    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7668    pub fn gst_vec_deque_new_for_struct(
7669        struct_size: size_t,
7670        initial_size: size_t,
7671    ) -> *mut GstVecDeque;
7672
7673    //=========================================================================
7674    // GstAllocator
7675    //=========================================================================
7676    pub fn gst_allocator_get_type() -> GType;
7677    pub fn gst_allocator_find(name: *const c_char) -> *mut GstAllocator;
7678    pub fn gst_allocator_register(name: *const c_char, allocator: *mut GstAllocator);
7679    pub fn gst_allocator_alloc(
7680        allocator: *mut GstAllocator,
7681        size: size_t,
7682        params: *mut GstAllocationParams,
7683    ) -> *mut GstMemory;
7684    pub fn gst_allocator_free(allocator: *mut GstAllocator, memory: *mut GstMemory);
7685    pub fn gst_allocator_set_default(allocator: *mut GstAllocator);
7686
7687    //=========================================================================
7688    // GstBin
7689    //=========================================================================
7690    pub fn gst_bin_get_type() -> GType;
7691    pub fn gst_bin_new(name: *const c_char) -> *mut GstElement;
7692    pub fn gst_bin_add(bin: *mut GstBin, element: *mut GstElement) -> gboolean;
7693    pub fn gst_bin_add_many(bin: *mut GstBin, element_1: *mut GstElement, ...);
7694    pub fn gst_bin_find_unlinked_pad(bin: *mut GstBin, direction: GstPadDirection) -> *mut GstPad;
7695    pub fn gst_bin_get_by_interface(bin: *mut GstBin, iface: GType) -> *mut GstElement;
7696    pub fn gst_bin_get_by_name(bin: *mut GstBin, name: *const c_char) -> *mut GstElement;
7697    pub fn gst_bin_get_by_name_recurse_up(bin: *mut GstBin, name: *const c_char)
7698        -> *mut GstElement;
7699    pub fn gst_bin_get_suppressed_flags(bin: *mut GstBin) -> GstElementFlags;
7700    #[cfg(feature = "v1_18")]
7701    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7702    pub fn gst_bin_iterate_all_by_element_factory_name(
7703        bin: *mut GstBin,
7704        factory_name: *const c_char,
7705    ) -> *mut GstIterator;
7706    pub fn gst_bin_iterate_all_by_interface(bin: *mut GstBin, iface: GType) -> *mut GstIterator;
7707    pub fn gst_bin_iterate_elements(bin: *mut GstBin) -> *mut GstIterator;
7708    pub fn gst_bin_iterate_recurse(bin: *mut GstBin) -> *mut GstIterator;
7709    pub fn gst_bin_iterate_sinks(bin: *mut GstBin) -> *mut GstIterator;
7710    pub fn gst_bin_iterate_sorted(bin: *mut GstBin) -> *mut GstIterator;
7711    pub fn gst_bin_iterate_sources(bin: *mut GstBin) -> *mut GstIterator;
7712    pub fn gst_bin_recalculate_latency(bin: *mut GstBin) -> gboolean;
7713    pub fn gst_bin_remove(bin: *mut GstBin, element: *mut GstElement) -> gboolean;
7714    pub fn gst_bin_remove_many(bin: *mut GstBin, element_1: *mut GstElement, ...);
7715    pub fn gst_bin_set_suppressed_flags(bin: *mut GstBin, flags: GstElementFlags);
7716    pub fn gst_bin_sync_children_states(bin: *mut GstBin) -> gboolean;
7717
7718    //=========================================================================
7719    // GstBitmask
7720    //=========================================================================
7721    pub fn gst_bitmask_get_type() -> GType;
7722
7723    //=========================================================================
7724    // GstBufferPool
7725    //=========================================================================
7726    pub fn gst_buffer_pool_get_type() -> GType;
7727    pub fn gst_buffer_pool_new() -> *mut GstBufferPool;
7728    pub fn gst_buffer_pool_config_add_option(config: *mut GstStructure, option: *const c_char);
7729    pub fn gst_buffer_pool_config_get_allocator(
7730        config: *mut GstStructure,
7731        allocator: *mut *mut GstAllocator,
7732        params: *mut GstAllocationParams,
7733    ) -> gboolean;
7734    pub fn gst_buffer_pool_config_get_option(
7735        config: *mut GstStructure,
7736        index: c_uint,
7737    ) -> *const c_char;
7738    pub fn gst_buffer_pool_config_get_params(
7739        config: *mut GstStructure,
7740        caps: *mut *mut GstCaps,
7741        size: *mut c_uint,
7742        min_buffers: *mut c_uint,
7743        max_buffers: *mut c_uint,
7744    ) -> gboolean;
7745    pub fn gst_buffer_pool_config_has_option(
7746        config: *mut GstStructure,
7747        option: *const c_char,
7748    ) -> gboolean;
7749    pub fn gst_buffer_pool_config_n_options(config: *mut GstStructure) -> c_uint;
7750    pub fn gst_buffer_pool_config_set_allocator(
7751        config: *mut GstStructure,
7752        allocator: *mut GstAllocator,
7753        params: *const GstAllocationParams,
7754    );
7755    pub fn gst_buffer_pool_config_set_params(
7756        config: *mut GstStructure,
7757        caps: *mut GstCaps,
7758        size: c_uint,
7759        min_buffers: c_uint,
7760        max_buffers: c_uint,
7761    );
7762    pub fn gst_buffer_pool_config_validate_params(
7763        config: *mut GstStructure,
7764        caps: *mut GstCaps,
7765        size: c_uint,
7766        min_buffers: c_uint,
7767        max_buffers: c_uint,
7768    ) -> gboolean;
7769    pub fn gst_buffer_pool_acquire_buffer(
7770        pool: *mut GstBufferPool,
7771        buffer: *mut *mut GstBuffer,
7772        params: *mut GstBufferPoolAcquireParams,
7773    ) -> GstFlowReturn;
7774    pub fn gst_buffer_pool_get_config(pool: *mut GstBufferPool) -> *mut GstStructure;
7775    pub fn gst_buffer_pool_get_options(pool: *mut GstBufferPool) -> *mut *const c_char;
7776    pub fn gst_buffer_pool_has_option(pool: *mut GstBufferPool, option: *const c_char) -> gboolean;
7777    pub fn gst_buffer_pool_is_active(pool: *mut GstBufferPool) -> gboolean;
7778    pub fn gst_buffer_pool_release_buffer(pool: *mut GstBufferPool, buffer: *mut GstBuffer);
7779    pub fn gst_buffer_pool_set_active(pool: *mut GstBufferPool, active: gboolean) -> gboolean;
7780    pub fn gst_buffer_pool_set_config(
7781        pool: *mut GstBufferPool,
7782        config: *mut GstStructure,
7783    ) -> gboolean;
7784    pub fn gst_buffer_pool_set_flushing(pool: *mut GstBufferPool, flushing: gboolean);
7785
7786    //=========================================================================
7787    // GstBus
7788    //=========================================================================
7789    pub fn gst_bus_get_type() -> GType;
7790    pub fn gst_bus_new() -> *mut GstBus;
7791    pub fn gst_bus_add_signal_watch(bus: *mut GstBus);
7792    pub fn gst_bus_add_signal_watch_full(bus: *mut GstBus, priority: c_int);
7793    pub fn gst_bus_add_watch(bus: *mut GstBus, func: GstBusFunc, user_data: gpointer) -> c_uint;
7794    pub fn gst_bus_add_watch_full(
7795        bus: *mut GstBus,
7796        priority: c_int,
7797        func: GstBusFunc,
7798        user_data: gpointer,
7799        notify: glib::GDestroyNotify,
7800    ) -> c_uint;
7801    pub fn gst_bus_async_signal_func(
7802        bus: *mut GstBus,
7803        message: *mut GstMessage,
7804        data: gpointer,
7805    ) -> gboolean;
7806    pub fn gst_bus_create_watch(bus: *mut GstBus) -> *mut glib::GSource;
7807    pub fn gst_bus_disable_sync_message_emission(bus: *mut GstBus);
7808    pub fn gst_bus_enable_sync_message_emission(bus: *mut GstBus);
7809    pub fn gst_bus_get_pollfd(bus: *mut GstBus, fd: *mut glib::GPollFD);
7810    pub fn gst_bus_have_pending(bus: *mut GstBus) -> gboolean;
7811    pub fn gst_bus_peek(bus: *mut GstBus) -> *mut GstMessage;
7812    pub fn gst_bus_poll(
7813        bus: *mut GstBus,
7814        events: GstMessageType,
7815        timeout: GstClockTime,
7816    ) -> *mut GstMessage;
7817    pub fn gst_bus_pop(bus: *mut GstBus) -> *mut GstMessage;
7818    pub fn gst_bus_pop_filtered(bus: *mut GstBus, types: GstMessageType) -> *mut GstMessage;
7819    pub fn gst_bus_post(bus: *mut GstBus, message: *mut GstMessage) -> gboolean;
7820    pub fn gst_bus_remove_signal_watch(bus: *mut GstBus);
7821    pub fn gst_bus_remove_watch(bus: *mut GstBus) -> gboolean;
7822    pub fn gst_bus_set_flushing(bus: *mut GstBus, flushing: gboolean);
7823    pub fn gst_bus_set_sync_handler(
7824        bus: *mut GstBus,
7825        func: GstBusSyncHandler,
7826        user_data: gpointer,
7827        notify: glib::GDestroyNotify,
7828    );
7829    pub fn gst_bus_sync_signal_handler(
7830        bus: *mut GstBus,
7831        message: *mut GstMessage,
7832        data: gpointer,
7833    ) -> GstBusSyncReply;
7834    pub fn gst_bus_timed_pop(bus: *mut GstBus, timeout: GstClockTime) -> *mut GstMessage;
7835    pub fn gst_bus_timed_pop_filtered(
7836        bus: *mut GstBus,
7837        timeout: GstClockTime,
7838        types: GstMessageType,
7839    ) -> *mut GstMessage;
7840
7841    //=========================================================================
7842    // GstClock
7843    //=========================================================================
7844    pub fn gst_clock_get_type() -> GType;
7845    pub fn gst_clock_id_compare_func(id1: gconstpointer, id2: gconstpointer) -> c_int;
7846    #[cfg(feature = "v1_16")]
7847    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
7848    pub fn gst_clock_id_get_clock(id: GstClockID) -> *mut GstClock;
7849    pub fn gst_clock_id_get_time(id: GstClockID) -> GstClockTime;
7850    pub fn gst_clock_id_ref(id: GstClockID) -> GstClockID;
7851    pub fn gst_clock_id_unref(id: GstClockID);
7852    pub fn gst_clock_id_unschedule(id: GstClockID);
7853    #[cfg(feature = "v1_16")]
7854    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
7855    pub fn gst_clock_id_uses_clock(id: GstClockID, clock: *mut GstClock) -> gboolean;
7856    pub fn gst_clock_id_wait(id: GstClockID, jitter: *mut GstClockTimeDiff) -> GstClockReturn;
7857    pub fn gst_clock_id_wait_async(
7858        id: GstClockID,
7859        func: GstClockCallback,
7860        user_data: gpointer,
7861        destroy_data: glib::GDestroyNotify,
7862    ) -> GstClockReturn;
7863    pub fn gst_clock_add_observation(
7864        clock: *mut GstClock,
7865        observation_internal: GstClockTime,
7866        observation_external: GstClockTime,
7867        r_squared: *mut c_double,
7868    ) -> gboolean;
7869    pub fn gst_clock_add_observation_unapplied(
7870        clock: *mut GstClock,
7871        observation_internal: GstClockTime,
7872        observation_external: GstClockTime,
7873        r_squared: *mut c_double,
7874        internal: *mut GstClockTime,
7875        external: *mut GstClockTime,
7876        rate_num: *mut GstClockTime,
7877        rate_denom: *mut GstClockTime,
7878    ) -> gboolean;
7879    pub fn gst_clock_adjust_unlocked(clock: *mut GstClock, internal: GstClockTime) -> GstClockTime;
7880    pub fn gst_clock_adjust_with_calibration(
7881        clock: *mut GstClock,
7882        internal_target: GstClockTime,
7883        cinternal: GstClockTime,
7884        cexternal: GstClockTime,
7885        cnum: GstClockTime,
7886        cdenom: GstClockTime,
7887    ) -> GstClockTime;
7888    pub fn gst_clock_get_calibration(
7889        clock: *mut GstClock,
7890        internal: *mut GstClockTime,
7891        external: *mut GstClockTime,
7892        rate_num: *mut GstClockTime,
7893        rate_denom: *mut GstClockTime,
7894    );
7895    pub fn gst_clock_get_internal_time(clock: *mut GstClock) -> GstClockTime;
7896    pub fn gst_clock_get_master(clock: *mut GstClock) -> *mut GstClock;
7897    pub fn gst_clock_get_resolution(clock: *mut GstClock) -> GstClockTime;
7898    pub fn gst_clock_get_time(clock: *mut GstClock) -> GstClockTime;
7899    pub fn gst_clock_get_timeout(clock: *mut GstClock) -> GstClockTime;
7900    pub fn gst_clock_is_synced(clock: *mut GstClock) -> gboolean;
7901    pub fn gst_clock_new_periodic_id(
7902        clock: *mut GstClock,
7903        start_time: GstClockTime,
7904        interval: GstClockTime,
7905    ) -> GstClockID;
7906    pub fn gst_clock_new_single_shot_id(clock: *mut GstClock, time: GstClockTime) -> GstClockID;
7907    pub fn gst_clock_periodic_id_reinit(
7908        clock: *mut GstClock,
7909        id: GstClockID,
7910        start_time: GstClockTime,
7911        interval: GstClockTime,
7912    ) -> gboolean;
7913    pub fn gst_clock_set_calibration(
7914        clock: *mut GstClock,
7915        internal: GstClockTime,
7916        external: GstClockTime,
7917        rate_num: GstClockTime,
7918        rate_denom: GstClockTime,
7919    );
7920    pub fn gst_clock_set_master(clock: *mut GstClock, master: *mut GstClock) -> gboolean;
7921    pub fn gst_clock_set_resolution(clock: *mut GstClock, resolution: GstClockTime)
7922        -> GstClockTime;
7923    pub fn gst_clock_set_synced(clock: *mut GstClock, synced: gboolean);
7924    pub fn gst_clock_set_timeout(clock: *mut GstClock, timeout: GstClockTime);
7925    pub fn gst_clock_single_shot_id_reinit(
7926        clock: *mut GstClock,
7927        id: GstClockID,
7928        time: GstClockTime,
7929    ) -> gboolean;
7930    pub fn gst_clock_unadjust_unlocked(
7931        clock: *mut GstClock,
7932        external: GstClockTime,
7933    ) -> GstClockTime;
7934    pub fn gst_clock_unadjust_with_calibration(
7935        clock: *mut GstClock,
7936        external_target: GstClockTime,
7937        cinternal: GstClockTime,
7938        cexternal: GstClockTime,
7939        cnum: GstClockTime,
7940        cdenom: GstClockTime,
7941    ) -> GstClockTime;
7942    pub fn gst_clock_wait_for_sync(clock: *mut GstClock, timeout: GstClockTime) -> gboolean;
7943
7944    //=========================================================================
7945    // GstControlBinding
7946    //=========================================================================
7947    pub fn gst_control_binding_get_type() -> GType;
7948    pub fn gst_control_binding_get_g_value_array(
7949        binding: *mut GstControlBinding,
7950        timestamp: GstClockTime,
7951        interval: GstClockTime,
7952        n_values: c_uint,
7953        values: *mut gobject::GValue,
7954    ) -> gboolean;
7955    pub fn gst_control_binding_get_value(
7956        binding: *mut GstControlBinding,
7957        timestamp: GstClockTime,
7958    ) -> *mut gobject::GValue;
7959    pub fn gst_control_binding_get_value_array(
7960        binding: *mut GstControlBinding,
7961        timestamp: GstClockTime,
7962        interval: GstClockTime,
7963        n_values: c_uint,
7964        values: gpointer,
7965    ) -> gboolean;
7966    pub fn gst_control_binding_is_disabled(binding: *mut GstControlBinding) -> gboolean;
7967    pub fn gst_control_binding_set_disabled(binding: *mut GstControlBinding, disabled: gboolean);
7968    pub fn gst_control_binding_sync_values(
7969        binding: *mut GstControlBinding,
7970        object: *mut GstObject,
7971        timestamp: GstClockTime,
7972        last_sync: GstClockTime,
7973    ) -> gboolean;
7974
7975    //=========================================================================
7976    // GstControlSource
7977    //=========================================================================
7978    pub fn gst_control_source_get_type() -> GType;
7979    pub fn gst_control_source_get_value(
7980        self_: *mut GstControlSource,
7981        timestamp: GstClockTime,
7982        value: *mut c_double,
7983    ) -> gboolean;
7984    pub fn gst_control_source_get_value_array(
7985        self_: *mut GstControlSource,
7986        timestamp: GstClockTime,
7987        interval: GstClockTime,
7988        n_values: c_uint,
7989        values: *mut c_double,
7990    ) -> gboolean;
7991
7992    //=========================================================================
7993    // GstDevice
7994    //=========================================================================
7995    pub fn gst_device_get_type() -> GType;
7996    pub fn gst_device_create_element(
7997        device: *mut GstDevice,
7998        name: *const c_char,
7999    ) -> *mut GstElement;
8000    pub fn gst_device_get_caps(device: *mut GstDevice) -> *mut GstCaps;
8001    pub fn gst_device_get_device_class(device: *mut GstDevice) -> *mut c_char;
8002    pub fn gst_device_get_display_name(device: *mut GstDevice) -> *mut c_char;
8003    pub fn gst_device_get_properties(device: *mut GstDevice) -> *mut GstStructure;
8004    pub fn gst_device_has_classes(device: *mut GstDevice, classes: *const c_char) -> gboolean;
8005    pub fn gst_device_has_classesv(device: *mut GstDevice, classes: *mut *mut c_char) -> gboolean;
8006    pub fn gst_device_reconfigure_element(
8007        device: *mut GstDevice,
8008        element: *mut GstElement,
8009    ) -> gboolean;
8010
8011    //=========================================================================
8012    // GstDeviceMonitor
8013    //=========================================================================
8014    pub fn gst_device_monitor_get_type() -> GType;
8015    pub fn gst_device_monitor_new() -> *mut GstDeviceMonitor;
8016    pub fn gst_device_monitor_add_filter(
8017        monitor: *mut GstDeviceMonitor,
8018        classes: *const c_char,
8019        caps: *mut GstCaps,
8020    ) -> c_uint;
8021    pub fn gst_device_monitor_get_bus(monitor: *mut GstDeviceMonitor) -> *mut GstBus;
8022    pub fn gst_device_monitor_get_devices(monitor: *mut GstDeviceMonitor) -> *mut glib::GList;
8023    pub fn gst_device_monitor_get_providers(monitor: *mut GstDeviceMonitor) -> *mut *mut c_char;
8024    pub fn gst_device_monitor_get_show_all_devices(monitor: *mut GstDeviceMonitor) -> gboolean;
8025    pub fn gst_device_monitor_remove_filter(
8026        monitor: *mut GstDeviceMonitor,
8027        filter_id: c_uint,
8028    ) -> gboolean;
8029    pub fn gst_device_monitor_set_show_all_devices(
8030        monitor: *mut GstDeviceMonitor,
8031        show_all: gboolean,
8032    );
8033    pub fn gst_device_monitor_start(monitor: *mut GstDeviceMonitor) -> gboolean;
8034    pub fn gst_device_monitor_stop(monitor: *mut GstDeviceMonitor);
8035
8036    //=========================================================================
8037    // GstDeviceProvider
8038    //=========================================================================
8039    pub fn gst_device_provider_get_type() -> GType;
8040    pub fn gst_device_provider_register(
8041        plugin: *mut GstPlugin,
8042        name: *const c_char,
8043        rank: c_uint,
8044        type_: GType,
8045    ) -> gboolean;
8046    pub fn gst_device_provider_can_monitor(provider: *mut GstDeviceProvider) -> gboolean;
8047    pub fn gst_device_provider_device_add(provider: *mut GstDeviceProvider, device: *mut GstDevice);
8048    #[cfg(feature = "v1_16")]
8049    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
8050    pub fn gst_device_provider_device_changed(
8051        provider: *mut GstDeviceProvider,
8052        device: *mut GstDevice,
8053        changed_device: *mut GstDevice,
8054    );
8055    pub fn gst_device_provider_device_remove(
8056        provider: *mut GstDeviceProvider,
8057        device: *mut GstDevice,
8058    );
8059    pub fn gst_device_provider_get_bus(provider: *mut GstDeviceProvider) -> *mut GstBus;
8060    pub fn gst_device_provider_get_devices(provider: *mut GstDeviceProvider) -> *mut glib::GList;
8061    pub fn gst_device_provider_get_factory(
8062        provider: *mut GstDeviceProvider,
8063    ) -> *mut GstDeviceProviderFactory;
8064    pub fn gst_device_provider_get_hidden_providers(
8065        provider: *mut GstDeviceProvider,
8066    ) -> *mut *mut c_char;
8067    pub fn gst_device_provider_get_metadata(
8068        provider: *mut GstDeviceProvider,
8069        key: *const c_char,
8070    ) -> *const c_char;
8071    pub fn gst_device_provider_hide_provider(provider: *mut GstDeviceProvider, name: *const c_char);
8072    #[cfg(feature = "v1_20")]
8073    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8074    pub fn gst_device_provider_is_started(provider: *mut GstDeviceProvider) -> gboolean;
8075    pub fn gst_device_provider_start(provider: *mut GstDeviceProvider) -> gboolean;
8076    pub fn gst_device_provider_stop(provider: *mut GstDeviceProvider);
8077    pub fn gst_device_provider_unhide_provider(
8078        provider: *mut GstDeviceProvider,
8079        name: *const c_char,
8080    );
8081
8082    //=========================================================================
8083    // GstDeviceProviderFactory
8084    //=========================================================================
8085    pub fn gst_device_provider_factory_get_type() -> GType;
8086    pub fn gst_device_provider_factory_find(name: *const c_char) -> *mut GstDeviceProviderFactory;
8087    pub fn gst_device_provider_factory_get_by_name(
8088        factoryname: *const c_char,
8089    ) -> *mut GstDeviceProvider;
8090    pub fn gst_device_provider_factory_list_get_device_providers(
8091        minrank: GstRank,
8092    ) -> *mut glib::GList;
8093    pub fn gst_device_provider_factory_get(
8094        factory: *mut GstDeviceProviderFactory,
8095    ) -> *mut GstDeviceProvider;
8096    pub fn gst_device_provider_factory_get_device_provider_type(
8097        factory: *mut GstDeviceProviderFactory,
8098    ) -> GType;
8099    pub fn gst_device_provider_factory_get_metadata(
8100        factory: *mut GstDeviceProviderFactory,
8101        key: *const c_char,
8102    ) -> *const c_char;
8103    pub fn gst_device_provider_factory_get_metadata_keys(
8104        factory: *mut GstDeviceProviderFactory,
8105    ) -> *mut *mut c_char;
8106    pub fn gst_device_provider_factory_has_classes(
8107        factory: *mut GstDeviceProviderFactory,
8108        classes: *const c_char,
8109    ) -> gboolean;
8110    pub fn gst_device_provider_factory_has_classesv(
8111        factory: *mut GstDeviceProviderFactory,
8112        classes: *mut *mut c_char,
8113    ) -> gboolean;
8114
8115    //=========================================================================
8116    // GstDoubleRange
8117    //=========================================================================
8118    pub fn gst_double_range_get_type() -> GType;
8119
8120    //=========================================================================
8121    // GstDynamicTypeFactory
8122    //=========================================================================
8123    pub fn gst_dynamic_type_factory_get_type() -> GType;
8124    pub fn gst_dynamic_type_factory_load(factoryname: *const c_char) -> GType;
8125
8126    //=========================================================================
8127    // GstElement
8128    //=========================================================================
8129    pub fn gst_element_get_type() -> GType;
8130    pub fn gst_element_make_from_uri(
8131        type_: GstURIType,
8132        uri: *const c_char,
8133        elementname: *const c_char,
8134        error: *mut *mut glib::GError,
8135    ) -> *mut GstElement;
8136    pub fn gst_element_register(
8137        plugin: *mut GstPlugin,
8138        name: *const c_char,
8139        rank: c_uint,
8140        type_: GType,
8141    ) -> gboolean;
8142    pub fn gst_element_state_change_return_get_name(
8143        state_ret: GstStateChangeReturn,
8144    ) -> *const c_char;
8145    pub fn gst_element_state_get_name(state: GstState) -> *const c_char;
8146    #[cfg(feature = "v1_20")]
8147    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8148    pub fn gst_element_type_set_skip_documentation(type_: GType);
8149    pub fn gst_element_abort_state(element: *mut GstElement);
8150    pub fn gst_element_add_pad(element: *mut GstElement, pad: *mut GstPad) -> gboolean;
8151    pub fn gst_element_add_property_deep_notify_watch(
8152        element: *mut GstElement,
8153        property_name: *const c_char,
8154        include_value: gboolean,
8155    ) -> c_ulong;
8156    pub fn gst_element_add_property_notify_watch(
8157        element: *mut GstElement,
8158        property_name: *const c_char,
8159        include_value: gboolean,
8160    ) -> c_ulong;
8161    pub fn gst_element_call_async(
8162        element: *mut GstElement,
8163        func: GstElementCallAsyncFunc,
8164        user_data: gpointer,
8165        destroy_notify: glib::GDestroyNotify,
8166    );
8167    pub fn gst_element_change_state(
8168        element: *mut GstElement,
8169        transition: GstStateChange,
8170    ) -> GstStateChangeReturn;
8171    pub fn gst_element_continue_state(
8172        element: *mut GstElement,
8173        ret: GstStateChangeReturn,
8174    ) -> GstStateChangeReturn;
8175    pub fn gst_element_create_all_pads(element: *mut GstElement);
8176    #[cfg(feature = "v1_24")]
8177    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8178    pub fn gst_element_decorate_stream_id(
8179        element: *mut GstElement,
8180        stream_id: *const c_char,
8181    ) -> *mut c_char;
8182    #[cfg(feature = "v1_24")]
8183    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8184    pub fn gst_element_decorate_stream_id_printf(
8185        element: *mut GstElement,
8186        format: *const c_char,
8187        ...
8188    ) -> *mut c_char;
8189    //#[cfg(feature = "v1_24")]
8190    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8191    //pub fn gst_element_decorate_stream_id_printf_valist(element: *mut GstElement, format: *const c_char, var_args: /*Unimplemented*/va_list) -> *mut c_char;
8192    pub fn gst_element_foreach_pad(
8193        element: *mut GstElement,
8194        func: GstElementForeachPadFunc,
8195        user_data: gpointer,
8196    ) -> gboolean;
8197    pub fn gst_element_foreach_sink_pad(
8198        element: *mut GstElement,
8199        func: GstElementForeachPadFunc,
8200        user_data: gpointer,
8201    ) -> gboolean;
8202    pub fn gst_element_foreach_src_pad(
8203        element: *mut GstElement,
8204        func: GstElementForeachPadFunc,
8205        user_data: gpointer,
8206    ) -> gboolean;
8207    pub fn gst_element_get_base_time(element: *mut GstElement) -> GstClockTime;
8208    pub fn gst_element_get_bus(element: *mut GstElement) -> *mut GstBus;
8209    pub fn gst_element_get_clock(element: *mut GstElement) -> *mut GstClock;
8210    pub fn gst_element_get_compatible_pad(
8211        element: *mut GstElement,
8212        pad: *mut GstPad,
8213        caps: *mut GstCaps,
8214    ) -> *mut GstPad;
8215    pub fn gst_element_get_compatible_pad_template(
8216        element: *mut GstElement,
8217        compattempl: *mut GstPadTemplate,
8218    ) -> *mut GstPadTemplate;
8219    pub fn gst_element_get_context(
8220        element: *mut GstElement,
8221        context_type: *const c_char,
8222    ) -> *mut GstContext;
8223    pub fn gst_element_get_context_unlocked(
8224        element: *mut GstElement,
8225        context_type: *const c_char,
8226    ) -> *mut GstContext;
8227    pub fn gst_element_get_contexts(element: *mut GstElement) -> *mut glib::GList;
8228    #[cfg(feature = "v1_18")]
8229    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8230    pub fn gst_element_get_current_clock_time(element: *mut GstElement) -> GstClockTime;
8231    #[cfg(feature = "v1_18")]
8232    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8233    pub fn gst_element_get_current_running_time(element: *mut GstElement) -> GstClockTime;
8234    pub fn gst_element_get_factory(element: *mut GstElement) -> *mut GstElementFactory;
8235    pub fn gst_element_get_metadata(element: *mut GstElement, key: *const c_char) -> *const c_char;
8236    pub fn gst_element_get_pad_template(
8237        element: *mut GstElement,
8238        name: *const c_char,
8239    ) -> *mut GstPadTemplate;
8240    pub fn gst_element_get_pad_template_list(element: *mut GstElement) -> *mut glib::GList;
8241    pub fn gst_element_get_request_pad(
8242        element: *mut GstElement,
8243        name: *const c_char,
8244    ) -> *mut GstPad;
8245    pub fn gst_element_get_start_time(element: *mut GstElement) -> GstClockTime;
8246    pub fn gst_element_get_state(
8247        element: *mut GstElement,
8248        state: *mut GstState,
8249        pending: *mut GstState,
8250        timeout: GstClockTime,
8251    ) -> GstStateChangeReturn;
8252    pub fn gst_element_get_static_pad(element: *mut GstElement, name: *const c_char)
8253        -> *mut GstPad;
8254    pub fn gst_element_is_locked_state(element: *mut GstElement) -> gboolean;
8255    pub fn gst_element_iterate_pads(element: *mut GstElement) -> *mut GstIterator;
8256    pub fn gst_element_iterate_sink_pads(element: *mut GstElement) -> *mut GstIterator;
8257    pub fn gst_element_iterate_src_pads(element: *mut GstElement) -> *mut GstIterator;
8258    pub fn gst_element_link(src: *mut GstElement, dest: *mut GstElement) -> gboolean;
8259    pub fn gst_element_link_filtered(
8260        src: *mut GstElement,
8261        dest: *mut GstElement,
8262        filter: *mut GstCaps,
8263    ) -> gboolean;
8264    pub fn gst_element_link_many(
8265        element_1: *mut GstElement,
8266        element_2: *mut GstElement,
8267        ...
8268    ) -> gboolean;
8269    pub fn gst_element_link_pads(
8270        src: *mut GstElement,
8271        srcpadname: *const c_char,
8272        dest: *mut GstElement,
8273        destpadname: *const c_char,
8274    ) -> gboolean;
8275    pub fn gst_element_link_pads_filtered(
8276        src: *mut GstElement,
8277        srcpadname: *const c_char,
8278        dest: *mut GstElement,
8279        destpadname: *const c_char,
8280        filter: *mut GstCaps,
8281    ) -> gboolean;
8282    pub fn gst_element_link_pads_full(
8283        src: *mut GstElement,
8284        srcpadname: *const c_char,
8285        dest: *mut GstElement,
8286        destpadname: *const c_char,
8287        flags: GstPadLinkCheck,
8288    ) -> gboolean;
8289    pub fn gst_element_lost_state(element: *mut GstElement);
8290    pub fn gst_element_message_full(
8291        element: *mut GstElement,
8292        type_: GstMessageType,
8293        domain: glib::GQuark,
8294        code: c_int,
8295        text: *mut c_char,
8296        debug: *mut c_char,
8297        file: *const c_char,
8298        function: *const c_char,
8299        line: c_int,
8300    );
8301    pub fn gst_element_message_full_with_details(
8302        element: *mut GstElement,
8303        type_: GstMessageType,
8304        domain: glib::GQuark,
8305        code: c_int,
8306        text: *mut c_char,
8307        debug: *mut c_char,
8308        file: *const c_char,
8309        function: *const c_char,
8310        line: c_int,
8311        structure: *mut GstStructure,
8312    );
8313    pub fn gst_element_no_more_pads(element: *mut GstElement);
8314    pub fn gst_element_post_message(element: *mut GstElement, message: *mut GstMessage)
8315        -> gboolean;
8316    pub fn gst_element_provide_clock(element: *mut GstElement) -> *mut GstClock;
8317    pub fn gst_element_query(element: *mut GstElement, query: *mut GstQuery) -> gboolean;
8318    pub fn gst_element_query_convert(
8319        element: *mut GstElement,
8320        src_format: GstFormat,
8321        src_val: i64,
8322        dest_format: GstFormat,
8323        dest_val: *mut i64,
8324    ) -> gboolean;
8325    pub fn gst_element_query_duration(
8326        element: *mut GstElement,
8327        format: GstFormat,
8328        duration: *mut i64,
8329    ) -> gboolean;
8330    pub fn gst_element_query_position(
8331        element: *mut GstElement,
8332        format: GstFormat,
8333        cur: *mut i64,
8334    ) -> gboolean;
8335    pub fn gst_element_release_request_pad(element: *mut GstElement, pad: *mut GstPad);
8336    pub fn gst_element_remove_pad(element: *mut GstElement, pad: *mut GstPad) -> gboolean;
8337    pub fn gst_element_remove_property_notify_watch(element: *mut GstElement, watch_id: c_ulong);
8338    pub fn gst_element_request_pad(
8339        element: *mut GstElement,
8340        templ: *mut GstPadTemplate,
8341        name: *const c_char,
8342        caps: *const GstCaps,
8343    ) -> *mut GstPad;
8344    #[cfg(feature = "v1_20")]
8345    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8346    pub fn gst_element_request_pad_simple(
8347        element: *mut GstElement,
8348        name: *const c_char,
8349    ) -> *mut GstPad;
8350    pub fn gst_element_seek(
8351        element: *mut GstElement,
8352        rate: c_double,
8353        format: GstFormat,
8354        flags: GstSeekFlags,
8355        start_type: GstSeekType,
8356        start: i64,
8357        stop_type: GstSeekType,
8358        stop: i64,
8359    ) -> gboolean;
8360    pub fn gst_element_seek_simple(
8361        element: *mut GstElement,
8362        format: GstFormat,
8363        seek_flags: GstSeekFlags,
8364        seek_pos: i64,
8365    ) -> gboolean;
8366    pub fn gst_element_send_event(element: *mut GstElement, event: *mut GstEvent) -> gboolean;
8367    pub fn gst_element_set_base_time(element: *mut GstElement, time: GstClockTime);
8368    pub fn gst_element_set_bus(element: *mut GstElement, bus: *mut GstBus);
8369    pub fn gst_element_set_clock(element: *mut GstElement, clock: *mut GstClock) -> gboolean;
8370    pub fn gst_element_set_context(element: *mut GstElement, context: *mut GstContext);
8371    pub fn gst_element_set_locked_state(
8372        element: *mut GstElement,
8373        locked_state: gboolean,
8374    ) -> gboolean;
8375    pub fn gst_element_set_start_time(element: *mut GstElement, time: GstClockTime);
8376    pub fn gst_element_set_state(element: *mut GstElement, state: GstState)
8377        -> GstStateChangeReturn;
8378    pub fn gst_element_sync_state_with_parent(element: *mut GstElement) -> gboolean;
8379    pub fn gst_element_unlink(src: *mut GstElement, dest: *mut GstElement);
8380    pub fn gst_element_unlink_many(element_1: *mut GstElement, element_2: *mut GstElement, ...);
8381    pub fn gst_element_unlink_pads(
8382        src: *mut GstElement,
8383        srcpadname: *const c_char,
8384        dest: *mut GstElement,
8385        destpadname: *const c_char,
8386    );
8387
8388    //=========================================================================
8389    // GstElementFactory
8390    //=========================================================================
8391    pub fn gst_element_factory_get_type() -> GType;
8392    pub fn gst_element_factory_find(name: *const c_char) -> *mut GstElementFactory;
8393    pub fn gst_element_factory_list_filter(
8394        list: *mut glib::GList,
8395        caps: *const GstCaps,
8396        direction: GstPadDirection,
8397        subsetonly: gboolean,
8398    ) -> *mut glib::GList;
8399    pub fn gst_element_factory_list_get_elements(
8400        type_: GstElementFactoryListType,
8401        minrank: GstRank,
8402    ) -> *mut glib::GList;
8403    pub fn gst_element_factory_make(
8404        factoryname: *const c_char,
8405        name: *const c_char,
8406    ) -> *mut GstElement;
8407    #[cfg(feature = "v1_20")]
8408    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8409    pub fn gst_element_factory_make_full(
8410        factoryname: *const c_char,
8411        first: *const c_char,
8412        ...
8413    ) -> *mut GstElement;
8414    //#[cfg(feature = "v1_20")]
8415    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8416    //pub fn gst_element_factory_make_valist(factoryname: *const c_char, first: *const c_char, properties: /*Unimplemented*/va_list) -> *mut GstElement;
8417    #[cfg(feature = "v1_20")]
8418    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8419    pub fn gst_element_factory_make_with_properties(
8420        factoryname: *const c_char,
8421        n: c_uint,
8422        names: *mut *const c_char,
8423        values: *const gobject::GValue,
8424    ) -> *mut GstElement;
8425    pub fn gst_element_factory_can_sink_all_caps(
8426        factory: *mut GstElementFactory,
8427        caps: *const GstCaps,
8428    ) -> gboolean;
8429    pub fn gst_element_factory_can_sink_any_caps(
8430        factory: *mut GstElementFactory,
8431        caps: *const GstCaps,
8432    ) -> gboolean;
8433    pub fn gst_element_factory_can_src_all_caps(
8434        factory: *mut GstElementFactory,
8435        caps: *const GstCaps,
8436    ) -> gboolean;
8437    pub fn gst_element_factory_can_src_any_caps(
8438        factory: *mut GstElementFactory,
8439        caps: *const GstCaps,
8440    ) -> gboolean;
8441    pub fn gst_element_factory_create(
8442        factory: *mut GstElementFactory,
8443        name: *const c_char,
8444    ) -> *mut GstElement;
8445    #[cfg(feature = "v1_20")]
8446    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8447    pub fn gst_element_factory_create_full(
8448        factory: *mut GstElementFactory,
8449        first: *const c_char,
8450        ...
8451    ) -> *mut GstElement;
8452    //#[cfg(feature = "v1_20")]
8453    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8454    //pub fn gst_element_factory_create_valist(factory: *mut GstElementFactory, first: *const c_char, properties: /*Unimplemented*/va_list) -> *mut GstElement;
8455    #[cfg(feature = "v1_20")]
8456    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8457    pub fn gst_element_factory_create_with_properties(
8458        factory: *mut GstElementFactory,
8459        n: c_uint,
8460        names: *mut *const c_char,
8461        values: *const gobject::GValue,
8462    ) -> *mut GstElement;
8463    pub fn gst_element_factory_get_element_type(factory: *mut GstElementFactory) -> GType;
8464    pub fn gst_element_factory_get_metadata(
8465        factory: *mut GstElementFactory,
8466        key: *const c_char,
8467    ) -> *const c_char;
8468    pub fn gst_element_factory_get_metadata_keys(
8469        factory: *mut GstElementFactory,
8470    ) -> *mut *mut c_char;
8471    pub fn gst_element_factory_get_num_pad_templates(factory: *mut GstElementFactory) -> c_uint;
8472    #[cfg(feature = "v1_20")]
8473    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8474    pub fn gst_element_factory_get_skip_documentation(factory: *mut GstElementFactory) -> gboolean;
8475    pub fn gst_element_factory_get_static_pad_templates(
8476        factory: *mut GstElementFactory,
8477    ) -> *const glib::GList;
8478    pub fn gst_element_factory_get_uri_protocols(
8479        factory: *mut GstElementFactory,
8480    ) -> *const *const c_char;
8481    pub fn gst_element_factory_get_uri_type(factory: *mut GstElementFactory) -> GstURIType;
8482    pub fn gst_element_factory_has_interface(
8483        factory: *mut GstElementFactory,
8484        interfacename: *const c_char,
8485    ) -> gboolean;
8486    pub fn gst_element_factory_list_is_type(
8487        factory: *mut GstElementFactory,
8488        type_: GstElementFactoryListType,
8489    ) -> gboolean;
8490
8491    //=========================================================================
8492    // GstFlagSet
8493    //=========================================================================
8494    pub fn gst_flagset_get_type() -> GType;
8495    pub fn gst_flagset_register(flags_type: GType) -> GType;
8496
8497    //=========================================================================
8498    // GstFraction
8499    //=========================================================================
8500    pub fn gst_fraction_get_type() -> GType;
8501
8502    //=========================================================================
8503    // GstFractionRange
8504    //=========================================================================
8505    pub fn gst_fraction_range_get_type() -> GType;
8506
8507    //=========================================================================
8508    // GstGhostPad
8509    //=========================================================================
8510    pub fn gst_ghost_pad_get_type() -> GType;
8511    pub fn gst_ghost_pad_new(name: *const c_char, target: *mut GstPad) -> *mut GstPad;
8512    pub fn gst_ghost_pad_new_from_template(
8513        name: *const c_char,
8514        target: *mut GstPad,
8515        templ: *mut GstPadTemplate,
8516    ) -> *mut GstPad;
8517    pub fn gst_ghost_pad_new_no_target(name: *const c_char, dir: GstPadDirection) -> *mut GstPad;
8518    pub fn gst_ghost_pad_new_no_target_from_template(
8519        name: *const c_char,
8520        templ: *mut GstPadTemplate,
8521    ) -> *mut GstPad;
8522    pub fn gst_ghost_pad_activate_mode_default(
8523        pad: *mut GstPad,
8524        parent: *mut GstObject,
8525        mode: GstPadMode,
8526        active: gboolean,
8527    ) -> gboolean;
8528    pub fn gst_ghost_pad_internal_activate_mode_default(
8529        pad: *mut GstPad,
8530        parent: *mut GstObject,
8531        mode: GstPadMode,
8532        active: gboolean,
8533    ) -> gboolean;
8534    pub fn gst_ghost_pad_construct(gpad: *mut GstGhostPad) -> gboolean;
8535    pub fn gst_ghost_pad_get_target(gpad: *mut GstGhostPad) -> *mut GstPad;
8536    pub fn gst_ghost_pad_set_target(gpad: *mut GstGhostPad, newtarget: *mut GstPad) -> gboolean;
8537
8538    //=========================================================================
8539    // GstInt64Range
8540    //=========================================================================
8541    pub fn gst_int64_range_get_type() -> GType;
8542
8543    //=========================================================================
8544    // GstIntRange
8545    //=========================================================================
8546    pub fn gst_int_range_get_type() -> GType;
8547
8548    //=========================================================================
8549    // GstObject
8550    //=========================================================================
8551    pub fn gst_object_get_type() -> GType;
8552    pub fn gst_object_check_uniqueness(list: *mut glib::GList, name: *const c_char) -> gboolean;
8553    pub fn gst_object_default_deep_notify(
8554        object: *mut gobject::GObject,
8555        orig: *mut GstObject,
8556        pspec: *mut gobject::GParamSpec,
8557        excluded_props: *mut *mut c_char,
8558    );
8559    pub fn gst_object_ref_sink(object: gpointer) -> gpointer;
8560    pub fn gst_object_replace(oldobj: *mut *mut GstObject, newobj: *mut GstObject) -> gboolean;
8561    pub fn gst_object_add_control_binding(
8562        object: *mut GstObject,
8563        binding: *mut GstControlBinding,
8564    ) -> gboolean;
8565    pub fn gst_object_default_error(
8566        source: *mut GstObject,
8567        error: *const glib::GError,
8568        debug: *const c_char,
8569    );
8570    pub fn gst_object_get_control_binding(
8571        object: *mut GstObject,
8572        property_name: *const c_char,
8573    ) -> *mut GstControlBinding;
8574    pub fn gst_object_get_control_rate(object: *mut GstObject) -> GstClockTime;
8575    pub fn gst_object_get_g_value_array(
8576        object: *mut GstObject,
8577        property_name: *const c_char,
8578        timestamp: GstClockTime,
8579        interval: GstClockTime,
8580        n_values: c_uint,
8581        values: *mut gobject::GValue,
8582    ) -> gboolean;
8583    pub fn gst_object_get_name(object: *mut GstObject) -> *mut c_char;
8584    pub fn gst_object_get_parent(object: *mut GstObject) -> *mut GstObject;
8585    pub fn gst_object_get_path_string(object: *mut GstObject) -> *mut c_char;
8586    pub fn gst_object_get_value(
8587        object: *mut GstObject,
8588        property_name: *const c_char,
8589        timestamp: GstClockTime,
8590    ) -> *mut gobject::GValue;
8591    pub fn gst_object_get_value_array(
8592        object: *mut GstObject,
8593        property_name: *const c_char,
8594        timestamp: GstClockTime,
8595        interval: GstClockTime,
8596        n_values: c_uint,
8597        values: gpointer,
8598    ) -> gboolean;
8599    pub fn gst_object_has_active_control_bindings(object: *mut GstObject) -> gboolean;
8600    pub fn gst_object_has_ancestor(object: *mut GstObject, ancestor: *mut GstObject) -> gboolean;
8601    pub fn gst_object_has_as_ancestor(object: *mut GstObject, ancestor: *mut GstObject)
8602        -> gboolean;
8603    pub fn gst_object_has_as_parent(object: *mut GstObject, parent: *mut GstObject) -> gboolean;
8604    pub fn gst_object_ref(object: *mut GstObject) -> *mut GstObject;
8605    pub fn gst_object_remove_control_binding(
8606        object: *mut GstObject,
8607        binding: *mut GstControlBinding,
8608    ) -> gboolean;
8609    pub fn gst_object_set_control_binding_disabled(
8610        object: *mut GstObject,
8611        property_name: *const c_char,
8612        disabled: gboolean,
8613    );
8614    pub fn gst_object_set_control_bindings_disabled(object: *mut GstObject, disabled: gboolean);
8615    pub fn gst_object_set_control_rate(object: *mut GstObject, control_rate: GstClockTime);
8616    pub fn gst_object_set_name(object: *mut GstObject, name: *const c_char) -> gboolean;
8617    pub fn gst_object_set_parent(object: *mut GstObject, parent: *mut GstObject) -> gboolean;
8618    pub fn gst_object_suggest_next_sync(object: *mut GstObject) -> GstClockTime;
8619    pub fn gst_object_sync_values(object: *mut GstObject, timestamp: GstClockTime) -> gboolean;
8620    pub fn gst_object_unparent(object: *mut GstObject);
8621    pub fn gst_object_unref(object: *mut GstObject);
8622
8623    //=========================================================================
8624    // GstPad
8625    //=========================================================================
8626    pub fn gst_pad_get_type() -> GType;
8627    pub fn gst_pad_new(name: *const c_char, direction: GstPadDirection) -> *mut GstPad;
8628    pub fn gst_pad_new_from_static_template(
8629        templ: *mut GstStaticPadTemplate,
8630        name: *const c_char,
8631    ) -> *mut GstPad;
8632    pub fn gst_pad_new_from_template(
8633        templ: *mut GstPadTemplate,
8634        name: *const c_char,
8635    ) -> *mut GstPad;
8636    pub fn gst_pad_link_get_name(ret: GstPadLinkReturn) -> *const c_char;
8637    pub fn gst_pad_activate_mode(pad: *mut GstPad, mode: GstPadMode, active: gboolean) -> gboolean;
8638    pub fn gst_pad_add_probe(
8639        pad: *mut GstPad,
8640        mask: GstPadProbeType,
8641        callback: GstPadProbeCallback,
8642        user_data: gpointer,
8643        destroy_data: glib::GDestroyNotify,
8644    ) -> c_ulong;
8645    pub fn gst_pad_can_link(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> gboolean;
8646    pub fn gst_pad_chain(pad: *mut GstPad, buffer: *mut GstBuffer) -> GstFlowReturn;
8647    pub fn gst_pad_chain_list(pad: *mut GstPad, list: *mut GstBufferList) -> GstFlowReturn;
8648    pub fn gst_pad_check_reconfigure(pad: *mut GstPad) -> gboolean;
8649    pub fn gst_pad_create_stream_id(
8650        pad: *mut GstPad,
8651        parent: *mut GstElement,
8652        stream_id: *const c_char,
8653    ) -> *mut c_char;
8654    pub fn gst_pad_create_stream_id_printf(
8655        pad: *mut GstPad,
8656        parent: *mut GstElement,
8657        stream_id: *const c_char,
8658        ...
8659    ) -> *mut c_char;
8660    //pub fn gst_pad_create_stream_id_printf_valist(pad: *mut GstPad, parent: *mut GstElement, stream_id: *const c_char, var_args: /*Unimplemented*/va_list) -> *mut c_char;
8661    pub fn gst_pad_event_default(
8662        pad: *mut GstPad,
8663        parent: *mut GstObject,
8664        event: *mut GstEvent,
8665    ) -> gboolean;
8666    pub fn gst_pad_forward(
8667        pad: *mut GstPad,
8668        forward: GstPadForwardFunction,
8669        user_data: gpointer,
8670    ) -> gboolean;
8671    pub fn gst_pad_get_allowed_caps(pad: *mut GstPad) -> *mut GstCaps;
8672    pub fn gst_pad_get_current_caps(pad: *mut GstPad) -> *mut GstCaps;
8673    pub fn gst_pad_get_direction(pad: *mut GstPad) -> GstPadDirection;
8674    pub fn gst_pad_get_element_private(pad: *mut GstPad) -> gpointer;
8675    pub fn gst_pad_get_last_flow_return(pad: *mut GstPad) -> GstFlowReturn;
8676    pub fn gst_pad_get_offset(pad: *mut GstPad) -> i64;
8677    pub fn gst_pad_get_pad_template(pad: *mut GstPad) -> *mut GstPadTemplate;
8678    pub fn gst_pad_get_pad_template_caps(pad: *mut GstPad) -> *mut GstCaps;
8679    pub fn gst_pad_get_parent_element(pad: *mut GstPad) -> *mut GstElement;
8680    pub fn gst_pad_get_peer(pad: *mut GstPad) -> *mut GstPad;
8681    pub fn gst_pad_get_range(
8682        pad: *mut GstPad,
8683        offset: u64,
8684        size: c_uint,
8685        buffer: *mut *mut GstBuffer,
8686    ) -> GstFlowReturn;
8687    #[cfg(feature = "v1_18")]
8688    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8689    pub fn gst_pad_get_single_internal_link(pad: *mut GstPad) -> *mut GstPad;
8690    pub fn gst_pad_get_sticky_event(
8691        pad: *mut GstPad,
8692        event_type: GstEventType,
8693        idx: c_uint,
8694    ) -> *mut GstEvent;
8695    pub fn gst_pad_get_stream(pad: *mut GstPad) -> *mut GstStream;
8696    pub fn gst_pad_get_stream_id(pad: *mut GstPad) -> *mut c_char;
8697    pub fn gst_pad_get_task_state(pad: *mut GstPad) -> GstTaskState;
8698    pub fn gst_pad_has_current_caps(pad: *mut GstPad) -> gboolean;
8699    pub fn gst_pad_is_active(pad: *mut GstPad) -> gboolean;
8700    pub fn gst_pad_is_blocked(pad: *mut GstPad) -> gboolean;
8701    pub fn gst_pad_is_blocking(pad: *mut GstPad) -> gboolean;
8702    pub fn gst_pad_is_linked(pad: *mut GstPad) -> gboolean;
8703    pub fn gst_pad_iterate_internal_links(pad: *mut GstPad) -> *mut GstIterator;
8704    pub fn gst_pad_iterate_internal_links_default(
8705        pad: *mut GstPad,
8706        parent: *mut GstObject,
8707    ) -> *mut GstIterator;
8708    pub fn gst_pad_link(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> GstPadLinkReturn;
8709    pub fn gst_pad_link_full(
8710        srcpad: *mut GstPad,
8711        sinkpad: *mut GstPad,
8712        flags: GstPadLinkCheck,
8713    ) -> GstPadLinkReturn;
8714    pub fn gst_pad_link_maybe_ghosting(src: *mut GstPad, sink: *mut GstPad) -> gboolean;
8715    pub fn gst_pad_link_maybe_ghosting_full(
8716        src: *mut GstPad,
8717        sink: *mut GstPad,
8718        flags: GstPadLinkCheck,
8719    ) -> gboolean;
8720    pub fn gst_pad_mark_reconfigure(pad: *mut GstPad);
8721    pub fn gst_pad_needs_reconfigure(pad: *mut GstPad) -> gboolean;
8722    pub fn gst_pad_pause_task(pad: *mut GstPad) -> gboolean;
8723    pub fn gst_pad_peer_query(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
8724    pub fn gst_pad_peer_query_accept_caps(pad: *mut GstPad, caps: *mut GstCaps) -> gboolean;
8725    pub fn gst_pad_peer_query_caps(pad: *mut GstPad, filter: *mut GstCaps) -> *mut GstCaps;
8726    pub fn gst_pad_peer_query_convert(
8727        pad: *mut GstPad,
8728        src_format: GstFormat,
8729        src_val: i64,
8730        dest_format: GstFormat,
8731        dest_val: *mut i64,
8732    ) -> gboolean;
8733    pub fn gst_pad_peer_query_duration(
8734        pad: *mut GstPad,
8735        format: GstFormat,
8736        duration: *mut i64,
8737    ) -> gboolean;
8738    pub fn gst_pad_peer_query_position(
8739        pad: *mut GstPad,
8740        format: GstFormat,
8741        cur: *mut i64,
8742    ) -> gboolean;
8743    pub fn gst_pad_proxy_query_accept_caps(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
8744    pub fn gst_pad_proxy_query_caps(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
8745    pub fn gst_pad_pull_range(
8746        pad: *mut GstPad,
8747        offset: u64,
8748        size: c_uint,
8749        buffer: *mut *mut GstBuffer,
8750    ) -> GstFlowReturn;
8751    pub fn gst_pad_push(pad: *mut GstPad, buffer: *mut GstBuffer) -> GstFlowReturn;
8752    pub fn gst_pad_push_event(pad: *mut GstPad, event: *mut GstEvent) -> gboolean;
8753    pub fn gst_pad_push_list(pad: *mut GstPad, list: *mut GstBufferList) -> GstFlowReturn;
8754    pub fn gst_pad_query(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
8755    pub fn gst_pad_query_accept_caps(pad: *mut GstPad, caps: *mut GstCaps) -> gboolean;
8756    pub fn gst_pad_query_caps(pad: *mut GstPad, filter: *mut GstCaps) -> *mut GstCaps;
8757    pub fn gst_pad_query_convert(
8758        pad: *mut GstPad,
8759        src_format: GstFormat,
8760        src_val: i64,
8761        dest_format: GstFormat,
8762        dest_val: *mut i64,
8763    ) -> gboolean;
8764    pub fn gst_pad_query_default(
8765        pad: *mut GstPad,
8766        parent: *mut GstObject,
8767        query: *mut GstQuery,
8768    ) -> gboolean;
8769    pub fn gst_pad_query_duration(
8770        pad: *mut GstPad,
8771        format: GstFormat,
8772        duration: *mut i64,
8773    ) -> gboolean;
8774    pub fn gst_pad_query_position(pad: *mut GstPad, format: GstFormat, cur: *mut i64) -> gboolean;
8775    pub fn gst_pad_remove_probe(pad: *mut GstPad, id: c_ulong);
8776    pub fn gst_pad_send_event(pad: *mut GstPad, event: *mut GstEvent) -> gboolean;
8777    pub fn gst_pad_set_activate_function_full(
8778        pad: *mut GstPad,
8779        activate: GstPadActivateFunction,
8780        user_data: gpointer,
8781        notify: glib::GDestroyNotify,
8782    );
8783    pub fn gst_pad_set_activatemode_function_full(
8784        pad: *mut GstPad,
8785        activatemode: GstPadActivateModeFunction,
8786        user_data: gpointer,
8787        notify: glib::GDestroyNotify,
8788    );
8789    pub fn gst_pad_set_active(pad: *mut GstPad, active: gboolean) -> gboolean;
8790    pub fn gst_pad_set_chain_function_full(
8791        pad: *mut GstPad,
8792        chain: GstPadChainFunction,
8793        user_data: gpointer,
8794        notify: glib::GDestroyNotify,
8795    );
8796    pub fn gst_pad_set_chain_list_function_full(
8797        pad: *mut GstPad,
8798        chainlist: GstPadChainListFunction,
8799        user_data: gpointer,
8800        notify: glib::GDestroyNotify,
8801    );
8802    pub fn gst_pad_set_element_private(pad: *mut GstPad, priv_: gpointer);
8803    pub fn gst_pad_set_event_full_function_full(
8804        pad: *mut GstPad,
8805        event: GstPadEventFullFunction,
8806        user_data: gpointer,
8807        notify: glib::GDestroyNotify,
8808    );
8809    pub fn gst_pad_set_event_function_full(
8810        pad: *mut GstPad,
8811        event: GstPadEventFunction,
8812        user_data: gpointer,
8813        notify: glib::GDestroyNotify,
8814    );
8815    pub fn gst_pad_set_getrange_function_full(
8816        pad: *mut GstPad,
8817        get: GstPadGetRangeFunction,
8818        user_data: gpointer,
8819        notify: glib::GDestroyNotify,
8820    );
8821    pub fn gst_pad_set_iterate_internal_links_function_full(
8822        pad: *mut GstPad,
8823        iterintlink: GstPadIterIntLinkFunction,
8824        user_data: gpointer,
8825        notify: glib::GDestroyNotify,
8826    );
8827    pub fn gst_pad_set_link_function_full(
8828        pad: *mut GstPad,
8829        link: GstPadLinkFunction,
8830        user_data: gpointer,
8831        notify: glib::GDestroyNotify,
8832    );
8833    pub fn gst_pad_set_offset(pad: *mut GstPad, offset: i64);
8834    pub fn gst_pad_set_query_function_full(
8835        pad: *mut GstPad,
8836        query: GstPadQueryFunction,
8837        user_data: gpointer,
8838        notify: glib::GDestroyNotify,
8839    );
8840    pub fn gst_pad_set_unlink_function_full(
8841        pad: *mut GstPad,
8842        unlink: GstPadUnlinkFunction,
8843        user_data: gpointer,
8844        notify: glib::GDestroyNotify,
8845    );
8846    pub fn gst_pad_start_task(
8847        pad: *mut GstPad,
8848        func: GstTaskFunction,
8849        user_data: gpointer,
8850        notify: glib::GDestroyNotify,
8851    ) -> gboolean;
8852    pub fn gst_pad_sticky_events_foreach(
8853        pad: *mut GstPad,
8854        foreach_func: GstPadStickyEventsForeachFunction,
8855        user_data: gpointer,
8856    );
8857    pub fn gst_pad_stop_task(pad: *mut GstPad) -> gboolean;
8858    pub fn gst_pad_store_sticky_event(pad: *mut GstPad, event: *mut GstEvent) -> GstFlowReturn;
8859    pub fn gst_pad_unlink(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> gboolean;
8860    pub fn gst_pad_use_fixed_caps(pad: *mut GstPad);
8861
8862    //=========================================================================
8863    // GstPadTemplate
8864    //=========================================================================
8865    pub fn gst_pad_template_get_type() -> GType;
8866    pub fn gst_pad_template_new(
8867        name_template: *const c_char,
8868        direction: GstPadDirection,
8869        presence: GstPadPresence,
8870        caps: *mut GstCaps,
8871    ) -> *mut GstPadTemplate;
8872    pub fn gst_pad_template_new_from_static_pad_template_with_gtype(
8873        pad_template: *mut GstStaticPadTemplate,
8874        pad_type: GType,
8875    ) -> *mut GstPadTemplate;
8876    pub fn gst_pad_template_new_with_gtype(
8877        name_template: *const c_char,
8878        direction: GstPadDirection,
8879        presence: GstPadPresence,
8880        caps: *mut GstCaps,
8881        pad_type: GType,
8882    ) -> *mut GstPadTemplate;
8883    pub fn gst_pad_template_get_caps(templ: *mut GstPadTemplate) -> *mut GstCaps;
8884    #[cfg(feature = "v1_18")]
8885    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8886    pub fn gst_pad_template_get_documentation_caps(templ: *mut GstPadTemplate) -> *mut GstCaps;
8887    pub fn gst_pad_template_pad_created(templ: *mut GstPadTemplate, pad: *mut GstPad);
8888    #[cfg(feature = "v1_18")]
8889    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8890    pub fn gst_pad_template_set_documentation_caps(templ: *mut GstPadTemplate, caps: *mut GstCaps);
8891
8892    //=========================================================================
8893    // GstParamArray
8894    //=========================================================================
8895    pub fn gst_param_spec_array_get_type() -> GType;
8896
8897    //=========================================================================
8898    // GstParamFraction
8899    //=========================================================================
8900    pub fn gst_param_spec_fraction_get_type() -> GType;
8901
8902    //=========================================================================
8903    // GstPipeline
8904    //=========================================================================
8905    pub fn gst_pipeline_get_type() -> GType;
8906    pub fn gst_pipeline_new(name: *const c_char) -> *mut GstElement;
8907    pub fn gst_pipeline_auto_clock(pipeline: *mut GstPipeline);
8908    pub fn gst_pipeline_get_auto_flush_bus(pipeline: *mut GstPipeline) -> gboolean;
8909    pub fn gst_pipeline_get_bus(pipeline: *mut GstPipeline) -> *mut GstBus;
8910    pub fn gst_pipeline_get_clock(pipeline: *mut GstPipeline) -> *mut GstClock;
8911    #[cfg(feature = "v1_24")]
8912    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8913    pub fn gst_pipeline_get_configured_latency(pipeline: *mut GstPipeline) -> GstClockTime;
8914    pub fn gst_pipeline_get_delay(pipeline: *mut GstPipeline) -> GstClockTime;
8915    pub fn gst_pipeline_get_latency(pipeline: *mut GstPipeline) -> GstClockTime;
8916    pub fn gst_pipeline_get_pipeline_clock(pipeline: *mut GstPipeline) -> *mut GstClock;
8917    #[cfg(feature = "v1_24")]
8918    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8919    pub fn gst_pipeline_is_live(pipeline: *mut GstPipeline) -> gboolean;
8920    pub fn gst_pipeline_set_auto_flush_bus(pipeline: *mut GstPipeline, auto_flush: gboolean);
8921    pub fn gst_pipeline_set_clock(pipeline: *mut GstPipeline, clock: *mut GstClock) -> gboolean;
8922    pub fn gst_pipeline_set_delay(pipeline: *mut GstPipeline, delay: GstClockTime);
8923    pub fn gst_pipeline_set_latency(pipeline: *mut GstPipeline, latency: GstClockTime);
8924    pub fn gst_pipeline_use_clock(pipeline: *mut GstPipeline, clock: *mut GstClock);
8925
8926    //=========================================================================
8927    // GstPlugin
8928    //=========================================================================
8929    pub fn gst_plugin_get_type() -> GType;
8930    pub fn gst_plugin_list_free(list: *mut glib::GList);
8931    pub fn gst_plugin_load_by_name(name: *const c_char) -> *mut GstPlugin;
8932    pub fn gst_plugin_load_file(
8933        filename: *const c_char,
8934        error: *mut *mut glib::GError,
8935    ) -> *mut GstPlugin;
8936    pub fn gst_plugin_register_static(
8937        major_version: c_int,
8938        minor_version: c_int,
8939        name: *const c_char,
8940        description: *const c_char,
8941        init_func: GstPluginInitFunc,
8942        version: *const c_char,
8943        license: *const c_char,
8944        source: *const c_char,
8945        package: *const c_char,
8946        origin: *const c_char,
8947    ) -> gboolean;
8948    pub fn gst_plugin_register_static_full(
8949        major_version: c_int,
8950        minor_version: c_int,
8951        name: *const c_char,
8952        description: *const c_char,
8953        init_full_func: GstPluginInitFullFunc,
8954        version: *const c_char,
8955        license: *const c_char,
8956        source: *const c_char,
8957        package: *const c_char,
8958        origin: *const c_char,
8959        user_data: gpointer,
8960    ) -> gboolean;
8961    pub fn gst_plugin_add_dependency(
8962        plugin: *mut GstPlugin,
8963        env_vars: *mut *const c_char,
8964        paths: *mut *const c_char,
8965        names: *mut *const c_char,
8966        flags: GstPluginDependencyFlags,
8967    );
8968    pub fn gst_plugin_add_dependency_simple(
8969        plugin: *mut GstPlugin,
8970        env_vars: *const c_char,
8971        paths: *const c_char,
8972        names: *const c_char,
8973        flags: GstPluginDependencyFlags,
8974    );
8975    #[cfg(feature = "v1_24")]
8976    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8977    pub fn gst_plugin_add_status_error(plugin: *mut GstPlugin, message: *const c_char);
8978    #[cfg(feature = "v1_24")]
8979    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8980    pub fn gst_plugin_add_status_info(plugin: *mut GstPlugin, message: *const c_char);
8981    #[cfg(feature = "v1_24")]
8982    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8983    pub fn gst_plugin_add_status_warning(plugin: *mut GstPlugin, message: *const c_char);
8984    pub fn gst_plugin_get_cache_data(plugin: *mut GstPlugin) -> *const GstStructure;
8985    pub fn gst_plugin_get_description(plugin: *mut GstPlugin) -> *const c_char;
8986    pub fn gst_plugin_get_filename(plugin: *mut GstPlugin) -> *const c_char;
8987    pub fn gst_plugin_get_license(plugin: *mut GstPlugin) -> *const c_char;
8988    pub fn gst_plugin_get_name(plugin: *mut GstPlugin) -> *const c_char;
8989    pub fn gst_plugin_get_origin(plugin: *mut GstPlugin) -> *const c_char;
8990    pub fn gst_plugin_get_package(plugin: *mut GstPlugin) -> *const c_char;
8991    pub fn gst_plugin_get_release_date_string(plugin: *mut GstPlugin) -> *const c_char;
8992    pub fn gst_plugin_get_source(plugin: *mut GstPlugin) -> *const c_char;
8993    #[cfg(feature = "v1_24")]
8994    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8995    pub fn gst_plugin_get_status_errors(plugin: *mut GstPlugin) -> *mut *mut c_char;
8996    #[cfg(feature = "v1_24")]
8997    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8998    pub fn gst_plugin_get_status_infos(plugin: *mut GstPlugin) -> *mut *mut c_char;
8999    #[cfg(feature = "v1_24")]
9000    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9001    pub fn gst_plugin_get_status_warnings(plugin: *mut GstPlugin) -> *mut *mut c_char;
9002    pub fn gst_plugin_get_version(plugin: *mut GstPlugin) -> *const c_char;
9003    pub fn gst_plugin_is_loaded(plugin: *mut GstPlugin) -> gboolean;
9004    pub fn gst_plugin_load(plugin: *mut GstPlugin) -> *mut GstPlugin;
9005    pub fn gst_plugin_set_cache_data(plugin: *mut GstPlugin, cache_data: *mut GstStructure);
9006
9007    //=========================================================================
9008    // GstPluginFeature
9009    //=========================================================================
9010    pub fn gst_plugin_feature_get_type() -> GType;
9011    pub fn gst_plugin_feature_list_copy(list: *mut glib::GList) -> *mut glib::GList;
9012    pub fn gst_plugin_feature_list_debug(list: *mut glib::GList);
9013    pub fn gst_plugin_feature_list_free(list: *mut glib::GList);
9014    pub fn gst_plugin_feature_rank_compare_func(p1: gconstpointer, p2: gconstpointer) -> c_int;
9015    pub fn gst_plugin_feature_check_version(
9016        feature: *mut GstPluginFeature,
9017        min_major: c_uint,
9018        min_minor: c_uint,
9019        min_micro: c_uint,
9020    ) -> gboolean;
9021    pub fn gst_plugin_feature_get_plugin(feature: *mut GstPluginFeature) -> *mut GstPlugin;
9022    pub fn gst_plugin_feature_get_plugin_name(feature: *mut GstPluginFeature) -> *const c_char;
9023    pub fn gst_plugin_feature_get_rank(feature: *mut GstPluginFeature) -> c_uint;
9024    pub fn gst_plugin_feature_load(feature: *mut GstPluginFeature) -> *mut GstPluginFeature;
9025    pub fn gst_plugin_feature_set_rank(feature: *mut GstPluginFeature, rank: c_uint);
9026
9027    //=========================================================================
9028    // GstProxyPad
9029    //=========================================================================
9030    pub fn gst_proxy_pad_get_type() -> GType;
9031    pub fn gst_proxy_pad_chain_default(
9032        pad: *mut GstPad,
9033        parent: *mut GstObject,
9034        buffer: *mut GstBuffer,
9035    ) -> GstFlowReturn;
9036    pub fn gst_proxy_pad_chain_list_default(
9037        pad: *mut GstPad,
9038        parent: *mut GstObject,
9039        list: *mut GstBufferList,
9040    ) -> GstFlowReturn;
9041    pub fn gst_proxy_pad_getrange_default(
9042        pad: *mut GstPad,
9043        parent: *mut GstObject,
9044        offset: u64,
9045        size: c_uint,
9046        buffer: *mut *mut GstBuffer,
9047    ) -> GstFlowReturn;
9048    pub fn gst_proxy_pad_iterate_internal_links_default(
9049        pad: *mut GstPad,
9050        parent: *mut GstObject,
9051    ) -> *mut GstIterator;
9052    pub fn gst_proxy_pad_get_internal(pad: *mut GstProxyPad) -> *mut GstProxyPad;
9053
9054    //=========================================================================
9055    // GstRegistry
9056    //=========================================================================
9057    pub fn gst_registry_get_type() -> GType;
9058    pub fn gst_registry_fork_is_enabled() -> gboolean;
9059    pub fn gst_registry_fork_set_enabled(enabled: gboolean);
9060    pub fn gst_registry_get() -> *mut GstRegistry;
9061    pub fn gst_registry_add_feature(
9062        registry: *mut GstRegistry,
9063        feature: *mut GstPluginFeature,
9064    ) -> gboolean;
9065    pub fn gst_registry_add_plugin(registry: *mut GstRegistry, plugin: *mut GstPlugin) -> gboolean;
9066    pub fn gst_registry_check_feature_version(
9067        registry: *mut GstRegistry,
9068        feature_name: *const c_char,
9069        min_major: c_uint,
9070        min_minor: c_uint,
9071        min_micro: c_uint,
9072    ) -> gboolean;
9073    pub fn gst_registry_feature_filter(
9074        registry: *mut GstRegistry,
9075        filter: GstPluginFeatureFilter,
9076        first: gboolean,
9077        user_data: gpointer,
9078    ) -> *mut glib::GList;
9079    pub fn gst_registry_find_feature(
9080        registry: *mut GstRegistry,
9081        name: *const c_char,
9082        type_: GType,
9083    ) -> *mut GstPluginFeature;
9084    pub fn gst_registry_find_plugin(
9085        registry: *mut GstRegistry,
9086        name: *const c_char,
9087    ) -> *mut GstPlugin;
9088    pub fn gst_registry_get_feature_list(
9089        registry: *mut GstRegistry,
9090        type_: GType,
9091    ) -> *mut glib::GList;
9092    pub fn gst_registry_get_feature_list_by_plugin(
9093        registry: *mut GstRegistry,
9094        name: *const c_char,
9095    ) -> *mut glib::GList;
9096    pub fn gst_registry_get_feature_list_cookie(registry: *mut GstRegistry) -> u32;
9097    pub fn gst_registry_get_plugin_list(registry: *mut GstRegistry) -> *mut glib::GList;
9098    pub fn gst_registry_lookup(
9099        registry: *mut GstRegistry,
9100        filename: *const c_char,
9101    ) -> *mut GstPlugin;
9102    pub fn gst_registry_lookup_feature(
9103        registry: *mut GstRegistry,
9104        name: *const c_char,
9105    ) -> *mut GstPluginFeature;
9106    pub fn gst_registry_plugin_filter(
9107        registry: *mut GstRegistry,
9108        filter: GstPluginFilter,
9109        first: gboolean,
9110        user_data: gpointer,
9111    ) -> *mut glib::GList;
9112    pub fn gst_registry_remove_feature(registry: *mut GstRegistry, feature: *mut GstPluginFeature);
9113    pub fn gst_registry_remove_plugin(registry: *mut GstRegistry, plugin: *mut GstPlugin);
9114    pub fn gst_registry_scan_path(registry: *mut GstRegistry, path: *const c_char) -> gboolean;
9115
9116    //=========================================================================
9117    // GstSharedTaskPool
9118    //=========================================================================
9119    #[cfg(feature = "v1_20")]
9120    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9121    pub fn gst_shared_task_pool_get_type() -> GType;
9122    #[cfg(feature = "v1_20")]
9123    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9124    pub fn gst_shared_task_pool_new() -> *mut GstTaskPool;
9125    #[cfg(feature = "v1_20")]
9126    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9127    pub fn gst_shared_task_pool_get_max_threads(pool: *mut GstSharedTaskPool) -> c_uint;
9128    #[cfg(feature = "v1_20")]
9129    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9130    pub fn gst_shared_task_pool_set_max_threads(pool: *mut GstSharedTaskPool, max_threads: c_uint);
9131
9132    //=========================================================================
9133    // GstStream
9134    //=========================================================================
9135    pub fn gst_stream_get_type() -> GType;
9136    pub fn gst_stream_new(
9137        stream_id: *const c_char,
9138        caps: *mut GstCaps,
9139        type_: GstStreamType,
9140        flags: GstStreamFlags,
9141    ) -> *mut GstStream;
9142    pub fn gst_stream_get_caps(stream: *mut GstStream) -> *mut GstCaps;
9143    pub fn gst_stream_get_stream_flags(stream: *mut GstStream) -> GstStreamFlags;
9144    pub fn gst_stream_get_stream_id(stream: *mut GstStream) -> *const c_char;
9145    pub fn gst_stream_get_stream_type(stream: *mut GstStream) -> GstStreamType;
9146    pub fn gst_stream_get_tags(stream: *mut GstStream) -> *mut GstTagList;
9147    pub fn gst_stream_set_caps(stream: *mut GstStream, caps: *mut GstCaps);
9148    pub fn gst_stream_set_stream_flags(stream: *mut GstStream, flags: GstStreamFlags);
9149    pub fn gst_stream_set_stream_type(stream: *mut GstStream, stream_type: GstStreamType);
9150    pub fn gst_stream_set_tags(stream: *mut GstStream, tags: *mut GstTagList);
9151
9152    //=========================================================================
9153    // GstStreamCollection
9154    //=========================================================================
9155    pub fn gst_stream_collection_get_type() -> GType;
9156    pub fn gst_stream_collection_new(upstream_id: *const c_char) -> *mut GstStreamCollection;
9157    pub fn gst_stream_collection_add_stream(
9158        collection: *mut GstStreamCollection,
9159        stream: *mut GstStream,
9160    ) -> gboolean;
9161    pub fn gst_stream_collection_get_size(collection: *mut GstStreamCollection) -> c_uint;
9162    pub fn gst_stream_collection_get_stream(
9163        collection: *mut GstStreamCollection,
9164        index: c_uint,
9165    ) -> *mut GstStream;
9166    pub fn gst_stream_collection_get_upstream_id(
9167        collection: *mut GstStreamCollection,
9168    ) -> *const c_char;
9169
9170    //=========================================================================
9171    // GstSystemClock
9172    //=========================================================================
9173    pub fn gst_system_clock_get_type() -> GType;
9174    pub fn gst_system_clock_obtain() -> *mut GstClock;
9175    pub fn gst_system_clock_set_default(new_clock: *mut GstClock);
9176
9177    //=========================================================================
9178    // GstTask
9179    //=========================================================================
9180    pub fn gst_task_get_type() -> GType;
9181    pub fn gst_task_new(
9182        func: GstTaskFunction,
9183        user_data: gpointer,
9184        notify: glib::GDestroyNotify,
9185    ) -> *mut GstTask;
9186    pub fn gst_task_cleanup_all();
9187    pub fn gst_task_get_pool(task: *mut GstTask) -> *mut GstTaskPool;
9188    pub fn gst_task_get_state(task: *mut GstTask) -> GstTaskState;
9189    pub fn gst_task_join(task: *mut GstTask) -> gboolean;
9190    pub fn gst_task_pause(task: *mut GstTask) -> gboolean;
9191    #[cfg(feature = "v1_18")]
9192    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9193    pub fn gst_task_resume(task: *mut GstTask) -> gboolean;
9194    pub fn gst_task_set_enter_callback(
9195        task: *mut GstTask,
9196        enter_func: GstTaskThreadFunc,
9197        user_data: gpointer,
9198        notify: glib::GDestroyNotify,
9199    );
9200    pub fn gst_task_set_leave_callback(
9201        task: *mut GstTask,
9202        leave_func: GstTaskThreadFunc,
9203        user_data: gpointer,
9204        notify: glib::GDestroyNotify,
9205    );
9206    pub fn gst_task_set_lock(task: *mut GstTask, mutex: *mut glib::GRecMutex);
9207    pub fn gst_task_set_pool(task: *mut GstTask, pool: *mut GstTaskPool);
9208    pub fn gst_task_set_state(task: *mut GstTask, state: GstTaskState) -> gboolean;
9209    pub fn gst_task_start(task: *mut GstTask) -> gboolean;
9210    pub fn gst_task_stop(task: *mut GstTask) -> gboolean;
9211
9212    //=========================================================================
9213    // GstTaskPool
9214    //=========================================================================
9215    pub fn gst_task_pool_get_type() -> GType;
9216    pub fn gst_task_pool_new() -> *mut GstTaskPool;
9217    pub fn gst_task_pool_cleanup(pool: *mut GstTaskPool);
9218    #[cfg(feature = "v1_20")]
9219    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9220    pub fn gst_task_pool_dispose_handle(pool: *mut GstTaskPool, id: gpointer);
9221    pub fn gst_task_pool_join(pool: *mut GstTaskPool, id: gpointer);
9222    pub fn gst_task_pool_prepare(pool: *mut GstTaskPool, error: *mut *mut glib::GError);
9223    pub fn gst_task_pool_push(
9224        pool: *mut GstTaskPool,
9225        func: GstTaskPoolFunction,
9226        user_data: gpointer,
9227        error: *mut *mut glib::GError,
9228    ) -> gpointer;
9229
9230    //=========================================================================
9231    // GstTracer
9232    //=========================================================================
9233    pub fn gst_tracer_get_type() -> GType;
9234    pub fn gst_tracer_register(
9235        plugin: *mut GstPlugin,
9236        name: *const c_char,
9237        type_: GType,
9238    ) -> gboolean;
9239
9240    //=========================================================================
9241    // GstTracerFactory
9242    //=========================================================================
9243    pub fn gst_tracer_factory_get_type() -> GType;
9244    pub fn gst_tracer_factory_get_list() -> *mut glib::GList;
9245    pub fn gst_tracer_factory_get_tracer_type(factory: *mut GstTracerFactory) -> GType;
9246
9247    //=========================================================================
9248    // GstTracerRecord
9249    //=========================================================================
9250    pub fn gst_tracer_record_get_type() -> GType;
9251    pub fn gst_tracer_record_new(
9252        name: *const c_char,
9253        firstfield: *const c_char,
9254        ...
9255    ) -> *mut GstTracerRecord;
9256    pub fn gst_tracer_record_log(self_: *mut GstTracerRecord, ...);
9257
9258    //=========================================================================
9259    // GstTypeFindFactory
9260    //=========================================================================
9261    pub fn gst_type_find_factory_get_type() -> GType;
9262    pub fn gst_type_find_factory_get_list() -> *mut glib::GList;
9263    pub fn gst_type_find_factory_call_function(
9264        factory: *mut GstTypeFindFactory,
9265        find: *mut GstTypeFind,
9266    );
9267    pub fn gst_type_find_factory_get_caps(factory: *mut GstTypeFindFactory) -> *mut GstCaps;
9268    pub fn gst_type_find_factory_get_extensions(
9269        factory: *mut GstTypeFindFactory,
9270    ) -> *const *const c_char;
9271    pub fn gst_type_find_factory_has_function(factory: *mut GstTypeFindFactory) -> gboolean;
9272
9273    //=========================================================================
9274    // GstValueArray
9275    //=========================================================================
9276    pub fn gst_value_array_get_type() -> GType;
9277    pub fn gst_value_array_append_and_take_value(
9278        value: *mut gobject::GValue,
9279        append_value: *mut gobject::GValue,
9280    );
9281    pub fn gst_value_array_append_value(
9282        value: *mut gobject::GValue,
9283        append_value: *const gobject::GValue,
9284    );
9285    pub fn gst_value_array_get_size(value: *const gobject::GValue) -> c_uint;
9286    pub fn gst_value_array_get_value(
9287        value: *const gobject::GValue,
9288        index: c_uint,
9289    ) -> *const gobject::GValue;
9290    #[cfg(feature = "v1_18")]
9291    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9292    pub fn gst_value_array_init(
9293        value: *mut gobject::GValue,
9294        prealloc: c_uint,
9295    ) -> *mut gobject::GValue;
9296    pub fn gst_value_array_prepend_value(
9297        value: *mut gobject::GValue,
9298        prepend_value: *const gobject::GValue,
9299    );
9300
9301    //=========================================================================
9302    // GstValueList
9303    //=========================================================================
9304    pub fn gst_value_list_get_type() -> GType;
9305    pub fn gst_value_list_append_and_take_value(
9306        value: *mut gobject::GValue,
9307        append_value: *mut gobject::GValue,
9308    );
9309    pub fn gst_value_list_append_value(
9310        value: *mut gobject::GValue,
9311        append_value: *const gobject::GValue,
9312    );
9313    pub fn gst_value_list_concat(
9314        dest: *mut gobject::GValue,
9315        value1: *const gobject::GValue,
9316        value2: *const gobject::GValue,
9317    );
9318    pub fn gst_value_list_get_size(value: *const gobject::GValue) -> c_uint;
9319    pub fn gst_value_list_get_value(
9320        value: *const gobject::GValue,
9321        index: c_uint,
9322    ) -> *const gobject::GValue;
9323    #[cfg(feature = "v1_18")]
9324    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9325    pub fn gst_value_list_init(
9326        value: *mut gobject::GValue,
9327        prealloc: c_uint,
9328    ) -> *mut gobject::GValue;
9329    pub fn gst_value_list_merge(
9330        dest: *mut gobject::GValue,
9331        value1: *const gobject::GValue,
9332        value2: *const gobject::GValue,
9333    );
9334    pub fn gst_value_list_prepend_value(
9335        value: *mut gobject::GValue,
9336        prepend_value: *const gobject::GValue,
9337    );
9338
9339    //=========================================================================
9340    // GstChildProxy
9341    //=========================================================================
9342    pub fn gst_child_proxy_get_type() -> GType;
9343    pub fn gst_child_proxy_child_added(
9344        parent: *mut GstChildProxy,
9345        child: *mut gobject::GObject,
9346        name: *const c_char,
9347    );
9348    pub fn gst_child_proxy_child_removed(
9349        parent: *mut GstChildProxy,
9350        child: *mut gobject::GObject,
9351        name: *const c_char,
9352    );
9353    pub fn gst_child_proxy_get(object: *mut GstChildProxy, first_property_name: *const c_char, ...);
9354    pub fn gst_child_proxy_get_child_by_index(
9355        parent: *mut GstChildProxy,
9356        index: c_uint,
9357    ) -> *mut gobject::GObject;
9358    pub fn gst_child_proxy_get_child_by_name(
9359        parent: *mut GstChildProxy,
9360        name: *const c_char,
9361    ) -> *mut gobject::GObject;
9362    #[cfg(feature = "v1_22")]
9363    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9364    pub fn gst_child_proxy_get_child_by_name_recurse(
9365        child_proxy: *mut GstChildProxy,
9366        name: *const c_char,
9367    ) -> *mut gobject::GObject;
9368    pub fn gst_child_proxy_get_children_count(parent: *mut GstChildProxy) -> c_uint;
9369    pub fn gst_child_proxy_get_property(
9370        object: *mut GstChildProxy,
9371        name: *const c_char,
9372        value: *mut gobject::GValue,
9373    );
9374    //pub fn gst_child_proxy_get_valist(object: *mut GstChildProxy, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
9375    pub fn gst_child_proxy_lookup(
9376        object: *mut GstChildProxy,
9377        name: *const c_char,
9378        target: *mut *mut gobject::GObject,
9379        pspec: *mut *mut gobject::GParamSpec,
9380    ) -> gboolean;
9381    pub fn gst_child_proxy_set(object: *mut GstChildProxy, first_property_name: *const c_char, ...);
9382    pub fn gst_child_proxy_set_property(
9383        object: *mut GstChildProxy,
9384        name: *const c_char,
9385        value: *const gobject::GValue,
9386    );
9387    //pub fn gst_child_proxy_set_valist(object: *mut GstChildProxy, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
9388
9389    //=========================================================================
9390    // GstPreset
9391    //=========================================================================
9392    pub fn gst_preset_get_type() -> GType;
9393    pub fn gst_preset_get_app_dir() -> *const c_char;
9394    pub fn gst_preset_set_app_dir(app_dir: *const c_char) -> gboolean;
9395    pub fn gst_preset_delete_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9396    pub fn gst_preset_get_meta(
9397        preset: *mut GstPreset,
9398        name: *const c_char,
9399        tag: *const c_char,
9400        value: *mut *mut c_char,
9401    ) -> gboolean;
9402    pub fn gst_preset_get_preset_names(preset: *mut GstPreset) -> *mut *mut c_char;
9403    pub fn gst_preset_get_property_names(preset: *mut GstPreset) -> *mut *mut c_char;
9404    pub fn gst_preset_is_editable(preset: *mut GstPreset) -> gboolean;
9405    pub fn gst_preset_load_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9406    pub fn gst_preset_rename_preset(
9407        preset: *mut GstPreset,
9408        old_name: *const c_char,
9409        new_name: *const c_char,
9410    ) -> gboolean;
9411    pub fn gst_preset_save_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9412    pub fn gst_preset_set_meta(
9413        preset: *mut GstPreset,
9414        name: *const c_char,
9415        tag: *const c_char,
9416        value: *const c_char,
9417    ) -> gboolean;
9418
9419    //=========================================================================
9420    // GstTagSetter
9421    //=========================================================================
9422    pub fn gst_tag_setter_get_type() -> GType;
9423    //pub fn gst_tag_setter_add_tag_valist(setter: *mut GstTagSetter, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
9424    //pub fn gst_tag_setter_add_tag_valist_values(setter: *mut GstTagSetter, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
9425    pub fn gst_tag_setter_add_tag_value(
9426        setter: *mut GstTagSetter,
9427        mode: GstTagMergeMode,
9428        tag: *const c_char,
9429        value: *const gobject::GValue,
9430    );
9431    pub fn gst_tag_setter_add_tag_values(
9432        setter: *mut GstTagSetter,
9433        mode: GstTagMergeMode,
9434        tag: *const c_char,
9435        ...
9436    );
9437    pub fn gst_tag_setter_add_tags(
9438        setter: *mut GstTagSetter,
9439        mode: GstTagMergeMode,
9440        tag: *const c_char,
9441        ...
9442    );
9443    pub fn gst_tag_setter_get_tag_list(setter: *mut GstTagSetter) -> *const GstTagList;
9444    pub fn gst_tag_setter_get_tag_merge_mode(setter: *mut GstTagSetter) -> GstTagMergeMode;
9445    pub fn gst_tag_setter_merge_tags(
9446        setter: *mut GstTagSetter,
9447        list: *const GstTagList,
9448        mode: GstTagMergeMode,
9449    );
9450    pub fn gst_tag_setter_reset_tags(setter: *mut GstTagSetter);
9451    pub fn gst_tag_setter_set_tag_merge_mode(setter: *mut GstTagSetter, mode: GstTagMergeMode);
9452
9453    //=========================================================================
9454    // GstTocSetter
9455    //=========================================================================
9456    pub fn gst_toc_setter_get_type() -> GType;
9457    pub fn gst_toc_setter_get_toc(setter: *mut GstTocSetter) -> *mut GstToc;
9458    pub fn gst_toc_setter_reset(setter: *mut GstTocSetter);
9459    pub fn gst_toc_setter_set_toc(setter: *mut GstTocSetter, toc: *mut GstToc);
9460
9461    //=========================================================================
9462    // GstURIHandler
9463    //=========================================================================
9464    pub fn gst_uri_handler_get_type() -> GType;
9465    pub fn gst_uri_handler_get_protocols(handler: *mut GstURIHandler) -> *const *const c_char;
9466    pub fn gst_uri_handler_get_uri(handler: *mut GstURIHandler) -> *mut c_char;
9467    pub fn gst_uri_handler_get_uri_type(handler: *mut GstURIHandler) -> GstURIType;
9468    pub fn gst_uri_handler_set_uri(
9469        handler: *mut GstURIHandler,
9470        uri: *const c_char,
9471        error: *mut *mut glib::GError,
9472    ) -> gboolean;
9473
9474    //=========================================================================
9475    // Other functions
9476    //=========================================================================
9477    pub fn gst_calculate_linear_regression(
9478        xy: *const GstClockTime,
9479        temp: *mut GstClockTime,
9480        n: c_uint,
9481        m_num: *mut GstClockTime,
9482        m_denom: *mut GstClockTime,
9483        b: *mut GstClockTime,
9484        xbase: *mut GstClockTime,
9485        r_squared: *mut c_double,
9486    ) -> gboolean;
9487    #[cfg(feature = "v1_18_3")]
9488    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9489    pub fn gst_clear_buffer(buf_ptr: *mut *mut GstBuffer);
9490    #[cfg(feature = "v1_18_3")]
9491    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9492    pub fn gst_clear_buffer_list(list_ptr: *mut *mut GstBufferList);
9493    #[cfg(feature = "v1_18_3")]
9494    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9495    pub fn gst_clear_caps(caps_ptr: *mut *mut GstCaps);
9496    #[cfg(feature = "v1_24")]
9497    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9498    pub fn gst_clear_context(context_ptr: *mut *mut GstContext);
9499    #[cfg(feature = "v1_18_3")]
9500    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9501    pub fn gst_clear_event(event_ptr: *mut *mut GstEvent);
9502    #[cfg(feature = "v1_18_3")]
9503    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9504    pub fn gst_clear_message(msg_ptr: *mut *mut GstMessage);
9505    #[cfg(feature = "v1_16")]
9506    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
9507    pub fn gst_clear_mini_object(object_ptr: *mut *mut GstMiniObject);
9508    #[cfg(feature = "v1_16")]
9509    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
9510    pub fn gst_clear_object(object_ptr: *mut *mut GstObject);
9511    #[cfg(feature = "v1_24")]
9512    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9513    pub fn gst_clear_promise(promise_ptr: *mut *mut GstPromise);
9514    #[cfg(feature = "v1_18_3")]
9515    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9516    pub fn gst_clear_query(query_ptr: *mut *mut GstQuery);
9517    #[cfg(feature = "v1_24")]
9518    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9519    pub fn gst_clear_sample(sample_ptr: *mut *mut GstSample);
9520    #[cfg(feature = "v1_16")]
9521    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
9522    pub fn gst_clear_structure(structure_ptr: *mut *mut GstStructure);
9523    #[cfg(feature = "v1_18_3")]
9524    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9525    pub fn gst_clear_tag_list(taglist_ptr: *mut *mut GstTagList);
9526    #[cfg(feature = "v1_18_3")]
9527    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9528    pub fn gst_clear_uri(uri_ptr: *mut *mut GstUri);
9529    pub fn gst_debug_add_log_function(
9530        func: GstLogFunction,
9531        user_data: gpointer,
9532        notify: glib::GDestroyNotify,
9533    );
9534    pub fn gst_debug_add_ring_buffer_logger(max_size_per_thread: c_uint, thread_timeout: c_uint);
9535    pub fn gst_debug_bin_to_dot_data(
9536        bin: *mut GstBin,
9537        details: GstDebugGraphDetails,
9538    ) -> *mut c_char;
9539    pub fn gst_debug_bin_to_dot_file(
9540        bin: *mut GstBin,
9541        details: GstDebugGraphDetails,
9542        file_name: *const c_char,
9543    );
9544    pub fn gst_debug_bin_to_dot_file_with_ts(
9545        bin: *mut GstBin,
9546        details: GstDebugGraphDetails,
9547        file_name: *const c_char,
9548    );
9549    pub fn gst_debug_construct_term_color(colorinfo: c_uint) -> *mut c_char;
9550    pub fn gst_debug_construct_win_color(colorinfo: c_uint) -> c_int;
9551    pub fn gst_debug_get_all_categories() -> *mut glib::GSList;
9552    pub fn gst_debug_get_color_mode() -> GstDebugColorMode;
9553    pub fn gst_debug_get_default_threshold() -> GstDebugLevel;
9554    pub fn gst_debug_get_stack_trace(flags: GstStackTraceFlags) -> *mut c_char;
9555    pub fn gst_debug_is_active() -> gboolean;
9556    pub fn gst_debug_is_colored() -> gboolean;
9557    pub fn gst_debug_log(
9558        category: *mut GstDebugCategory,
9559        level: GstDebugLevel,
9560        file: *const c_char,
9561        function: *const c_char,
9562        line: c_int,
9563        object: *mut gobject::GObject,
9564        format: *const c_char,
9565        ...
9566    );
9567    pub fn gst_debug_log_default(
9568        category: *mut GstDebugCategory,
9569        level: GstDebugLevel,
9570        file: *const c_char,
9571        function: *const c_char,
9572        line: c_int,
9573        object: *mut gobject::GObject,
9574        message: *mut GstDebugMessage,
9575        user_data: gpointer,
9576    );
9577    #[cfg(feature = "v1_18")]
9578    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9579    pub fn gst_debug_log_get_line(
9580        category: *mut GstDebugCategory,
9581        level: GstDebugLevel,
9582        file: *const c_char,
9583        function: *const c_char,
9584        line: c_int,
9585        object: *mut gobject::GObject,
9586        message: *mut GstDebugMessage,
9587    ) -> *mut c_char;
9588    #[cfg(feature = "v1_22")]
9589    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9590    pub fn gst_debug_log_id(
9591        category: *mut GstDebugCategory,
9592        level: GstDebugLevel,
9593        file: *const c_char,
9594        function: *const c_char,
9595        line: c_int,
9596        id: *const c_char,
9597        format: *const c_char,
9598        ...
9599    );
9600    #[cfg(feature = "v1_22")]
9601    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9602    pub fn gst_debug_log_id_literal(
9603        category: *mut GstDebugCategory,
9604        level: GstDebugLevel,
9605        file: *const c_char,
9606        function: *const c_char,
9607        line: c_int,
9608        id: *const c_char,
9609        message_string: *const c_char,
9610    );
9611    //#[cfg(feature = "v1_22")]
9612    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9613    //pub fn gst_debug_log_id_valist(category: *mut GstDebugCategory, level: GstDebugLevel, file: *const c_char, function: *const c_char, line: c_int, id: *const c_char, format: *const c_char, args: /*Unimplemented*/va_list);
9614    #[cfg(feature = "v1_20")]
9615    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9616    pub fn gst_debug_log_literal(
9617        category: *mut GstDebugCategory,
9618        level: GstDebugLevel,
9619        file: *const c_char,
9620        function: *const c_char,
9621        line: c_int,
9622        object: *mut gobject::GObject,
9623        message_string: *const c_char,
9624    );
9625    //pub fn gst_debug_log_valist(category: *mut GstDebugCategory, level: GstDebugLevel, file: *const c_char, function: *const c_char, line: c_int, object: *mut gobject::GObject, format: *const c_char, args: /*Unimplemented*/va_list);
9626    #[cfg(feature = "v1_26")]
9627    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
9628    pub fn gst_debug_print_object(ptr: gconstpointer) -> *mut c_char;
9629    #[cfg(feature = "v1_26")]
9630    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
9631    pub fn gst_debug_print_segment(segment: *const GstSegment) -> *mut c_char;
9632    pub fn gst_debug_print_stack_trace();
9633    pub fn gst_debug_remove_log_function(func: GstLogFunction) -> c_uint;
9634    pub fn gst_debug_remove_log_function_by_data(data: gpointer) -> c_uint;
9635    pub fn gst_debug_remove_ring_buffer_logger();
9636    pub fn gst_debug_ring_buffer_logger_get_logs() -> *mut *mut c_char;
9637    pub fn gst_debug_set_active(active: gboolean);
9638    pub fn gst_debug_set_color_mode(mode: GstDebugColorMode);
9639    pub fn gst_debug_set_color_mode_from_string(mode: *const c_char);
9640    pub fn gst_debug_set_colored(colored: gboolean);
9641    pub fn gst_debug_set_default_threshold(level: GstDebugLevel);
9642    pub fn gst_debug_set_threshold_for_name(name: *const c_char, level: GstDebugLevel);
9643    pub fn gst_debug_set_threshold_from_string(list: *const c_char, reset: gboolean);
9644    pub fn gst_debug_unset_threshold_for_name(name: *const c_char);
9645    pub fn gst_deinit();
9646    pub fn gst_dynamic_type_register(plugin: *mut GstPlugin, type_: GType) -> gboolean;
9647    pub fn gst_error_get_message(domain: glib::GQuark, code: c_int) -> *mut c_char;
9648    pub fn gst_filename_to_uri(
9649        filename: *const c_char,
9650        error: *mut *mut glib::GError,
9651    ) -> *mut c_char;
9652    pub fn gst_flow_get_name(ret: GstFlowReturn) -> *const c_char;
9653    pub fn gst_flow_to_quark(ret: GstFlowReturn) -> glib::GQuark;
9654    pub fn gst_formats_contains(formats: *const GstFormat, format: GstFormat) -> gboolean;
9655    pub fn gst_get_main_executable_path() -> *const c_char;
9656    pub fn gst_info_strdup_printf(format: *const c_char, ...) -> *mut c_char;
9657    //pub fn gst_info_strdup_vprintf(format: *const c_char, args: /*Unimplemented*/va_list) -> *mut c_char;
9658    //pub fn gst_info_vasprintf(result: *mut *mut c_char, format: *const c_char, args: /*Unimplemented*/va_list) -> c_int;
9659    pub fn gst_init(argc: *mut c_int, argv: *mut *mut *mut c_char);
9660    pub fn gst_init_check(
9661        argc: *mut c_int,
9662        argv: *mut *mut *mut c_char,
9663        error: *mut *mut glib::GError,
9664    ) -> gboolean;
9665    pub fn gst_init_get_option_group() -> *mut glib::GOptionGroup;
9666    pub fn gst_is_caps_features(obj: gconstpointer) -> gboolean;
9667    pub fn gst_is_initialized() -> gboolean;
9668    pub fn gst_make_element_message_details(name: *const c_char, ...) -> *mut GstStructure;
9669    pub fn gst_param_spec_array(
9670        name: *const c_char,
9671        nick: *const c_char,
9672        blurb: *const c_char,
9673        element_spec: *mut gobject::GParamSpec,
9674        flags: gobject::GParamFlags,
9675    ) -> *mut gobject::GParamSpec;
9676    pub fn gst_param_spec_fraction(
9677        name: *const c_char,
9678        nick: *const c_char,
9679        blurb: *const c_char,
9680        min_num: c_int,
9681        min_denom: c_int,
9682        max_num: c_int,
9683        max_denom: c_int,
9684        default_num: c_int,
9685        default_denom: c_int,
9686        flags: gobject::GParamFlags,
9687    ) -> *mut gobject::GParamSpec;
9688    pub fn gst_parent_buffer_meta_api_get_type() -> GType;
9689    pub fn gst_parse_bin_from_description(
9690        bin_description: *const c_char,
9691        ghost_unlinked_pads: gboolean,
9692        error: *mut *mut glib::GError,
9693    ) -> *mut GstBin;
9694    pub fn gst_parse_bin_from_description_full(
9695        bin_description: *const c_char,
9696        ghost_unlinked_pads: gboolean,
9697        context: *mut GstParseContext,
9698        flags: GstParseFlags,
9699        error: *mut *mut glib::GError,
9700    ) -> *mut GstElement;
9701    pub fn gst_parse_launch(
9702        pipeline_description: *const c_char,
9703        error: *mut *mut glib::GError,
9704    ) -> *mut GstElement;
9705    pub fn gst_parse_launch_full(
9706        pipeline_description: *const c_char,
9707        context: *mut GstParseContext,
9708        flags: GstParseFlags,
9709        error: *mut *mut glib::GError,
9710    ) -> *mut GstElement;
9711    pub fn gst_parse_launchv(
9712        argv: *mut *const c_char,
9713        error: *mut *mut glib::GError,
9714    ) -> *mut GstElement;
9715    pub fn gst_parse_launchv_full(
9716        argv: *mut *const c_char,
9717        context: *mut GstParseContext,
9718        flags: GstParseFlags,
9719        error: *mut *mut glib::GError,
9720    ) -> *mut GstElement;
9721    pub fn gst_print(format: *const c_char, ...);
9722    pub fn gst_printerr(format: *const c_char, ...);
9723    pub fn gst_printerrln(format: *const c_char, ...);
9724    pub fn gst_println(format: *const c_char, ...);
9725    pub fn gst_protection_filter_systems_by_available_decryptors(
9726        system_identifiers: *mut *const c_char,
9727    ) -> *mut *mut c_char;
9728    pub fn gst_protection_meta_api_get_type() -> GType;
9729    pub fn gst_protection_select_system(system_identifiers: *mut *const c_char) -> *const c_char;
9730    pub fn gst_reference_timestamp_meta_api_get_type() -> GType;
9731    pub fn gst_segtrap_is_enabled() -> gboolean;
9732    pub fn gst_segtrap_set_enabled(enabled: gboolean);
9733    pub fn gst_tag_exists(tag: *const c_char) -> gboolean;
9734    pub fn gst_tag_get_description(tag: *const c_char) -> *const c_char;
9735    pub fn gst_tag_get_flag(tag: *const c_char) -> GstTagFlag;
9736    pub fn gst_tag_get_nick(tag: *const c_char) -> *const c_char;
9737    pub fn gst_tag_get_type(tag: *const c_char) -> GType;
9738    pub fn gst_tag_is_fixed(tag: *const c_char) -> gboolean;
9739    pub fn gst_tag_merge_strings_with_comma(
9740        dest: *mut gobject::GValue,
9741        src: *const gobject::GValue,
9742    );
9743    pub fn gst_tag_merge_use_first(dest: *mut gobject::GValue, src: *const gobject::GValue);
9744    pub fn gst_tag_register(
9745        name: *const c_char,
9746        flag: GstTagFlag,
9747        type_: GType,
9748        nick: *const c_char,
9749        blurb: *const c_char,
9750        func: GstTagMergeFunc,
9751    );
9752    pub fn gst_tag_register_static(
9753        name: *const c_char,
9754        flag: GstTagFlag,
9755        type_: GType,
9756        nick: *const c_char,
9757        blurb: *const c_char,
9758        func: GstTagMergeFunc,
9759    );
9760    #[cfg(feature = "v1_18")]
9761    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9762    pub fn gst_tracing_get_active_tracers() -> *mut glib::GList;
9763    pub fn gst_tracing_register_hook(
9764        tracer: *mut GstTracer,
9765        detail: *const c_char,
9766        func: gobject::GCallback,
9767    );
9768    #[cfg(feature = "v1_18")]
9769    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9770    pub fn gst_type_is_plugin_api(type_: GType, flags: *mut GstPluginAPIFlags) -> gboolean;
9771    #[cfg(feature = "v1_18")]
9772    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9773    pub fn gst_type_mark_as_plugin_api(type_: GType, flags: GstPluginAPIFlags);
9774    pub fn gst_update_registry() -> gboolean;
9775    pub fn gst_util_array_binary_search(
9776        array: gpointer,
9777        num_elements: c_uint,
9778        element_size: size_t,
9779        search_func: glib::GCompareDataFunc,
9780        mode: GstSearchMode,
9781        search_data: gconstpointer,
9782        user_data: gpointer,
9783    ) -> gpointer;
9784    #[cfg(feature = "v1_24")]
9785    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9786    pub fn gst_util_ceil_log2(v: u32) -> c_uint;
9787    pub fn gst_util_double_to_fraction(src: c_double, dest_n: *mut c_int, dest_d: *mut c_int);
9788    pub fn gst_util_dump_buffer(buf: *mut GstBuffer);
9789    pub fn gst_util_dump_mem(mem: *const u8, size: c_uint);
9790    #[cfg(feature = "v1_24")]
9791    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9792    pub fn gst_util_filename_compare(a: *const c_char, b: *const c_char) -> c_int;
9793    #[cfg(feature = "v1_26")]
9794    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
9795    pub fn gst_util_floor_log2(x: u32) -> c_uint;
9796    pub fn gst_util_fraction_add(
9797        a_n: c_int,
9798        a_d: c_int,
9799        b_n: c_int,
9800        b_d: c_int,
9801        res_n: *mut c_int,
9802        res_d: *mut c_int,
9803    ) -> gboolean;
9804    pub fn gst_util_fraction_compare(a_n: c_int, a_d: c_int, b_n: c_int, b_d: c_int) -> c_int;
9805    pub fn gst_util_fraction_multiply(
9806        a_n: c_int,
9807        a_d: c_int,
9808        b_n: c_int,
9809        b_d: c_int,
9810        res_n: *mut c_int,
9811        res_d: *mut c_int,
9812    ) -> gboolean;
9813    #[cfg(feature = "v1_26")]
9814    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
9815    pub fn gst_util_fraction_multiply_int64(
9816        a_n: i64,
9817        a_d: i64,
9818        b_n: i64,
9819        b_d: i64,
9820        res_n: *mut i64,
9821        res_d: *mut i64,
9822    ) -> gboolean;
9823    pub fn gst_util_fraction_to_double(src_n: c_int, src_d: c_int, dest: *mut c_double);
9824    pub fn gst_util_gdouble_to_guint64(value: c_double) -> u64;
9825    pub fn gst_util_get_object_array(
9826        object: *mut gobject::GObject,
9827        name: *const c_char,
9828        array: *mut *mut gobject::GValueArray,
9829    ) -> gboolean;
9830    pub fn gst_util_get_timestamp() -> GstClockTime;
9831    pub fn gst_util_greatest_common_divisor(a: c_int, b: c_int) -> c_int;
9832    pub fn gst_util_greatest_common_divisor_int64(a: i64, b: i64) -> i64;
9833    pub fn gst_util_group_id_next() -> c_uint;
9834    pub fn gst_util_guint64_to_gdouble(value: u64) -> c_double;
9835    pub fn gst_util_seqnum_compare(s1: u32, s2: u32) -> i32;
9836    pub fn gst_util_seqnum_next() -> u32;
9837    pub fn gst_util_set_object_arg(
9838        object: *mut gobject::GObject,
9839        name: *const c_char,
9840        value: *const c_char,
9841    );
9842    pub fn gst_util_set_object_array(
9843        object: *mut gobject::GObject,
9844        name: *const c_char,
9845        array: *const gobject::GValueArray,
9846    ) -> gboolean;
9847    pub fn gst_util_set_value_from_string(value: *mut gobject::GValue, value_str: *const c_char);
9848    #[cfg(feature = "v1_24")]
9849    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9850    pub fn gst_util_simplify_fraction(
9851        numerator: *mut c_int,
9852        denominator: *mut c_int,
9853        n_terms: c_uint,
9854        threshold: c_uint,
9855    );
9856    pub fn gst_util_uint64_scale(val: u64, num: u64, denom: u64) -> u64;
9857    pub fn gst_util_uint64_scale_ceil(val: u64, num: u64, denom: u64) -> u64;
9858    pub fn gst_util_uint64_scale_int(val: u64, num: c_int, denom: c_int) -> u64;
9859    pub fn gst_util_uint64_scale_int_ceil(val: u64, num: c_int, denom: c_int) -> u64;
9860    pub fn gst_util_uint64_scale_int_round(val: u64, num: c_int, denom: c_int) -> u64;
9861    pub fn gst_util_uint64_scale_round(val: u64, num: u64, denom: u64) -> u64;
9862    pub fn gst_value_can_compare(
9863        value1: *const gobject::GValue,
9864        value2: *const gobject::GValue,
9865    ) -> gboolean;
9866    pub fn gst_value_can_intersect(
9867        value1: *const gobject::GValue,
9868        value2: *const gobject::GValue,
9869    ) -> gboolean;
9870    pub fn gst_value_can_subtract(
9871        minuend: *const gobject::GValue,
9872        subtrahend: *const gobject::GValue,
9873    ) -> gboolean;
9874    pub fn gst_value_can_union(
9875        value1: *const gobject::GValue,
9876        value2: *const gobject::GValue,
9877    ) -> gboolean;
9878    pub fn gst_value_compare(
9879        value1: *const gobject::GValue,
9880        value2: *const gobject::GValue,
9881    ) -> c_int;
9882    pub fn gst_value_deserialize(dest: *mut gobject::GValue, src: *const c_char) -> gboolean;
9883    #[cfg(feature = "v1_20")]
9884    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9885    pub fn gst_value_deserialize_with_pspec(
9886        dest: *mut gobject::GValue,
9887        src: *const c_char,
9888        pspec: *mut gobject::GParamSpec,
9889    ) -> gboolean;
9890    pub fn gst_value_fixate(dest: *mut gobject::GValue, src: *const gobject::GValue) -> gboolean;
9891    pub fn gst_value_fraction_multiply(
9892        product: *mut gobject::GValue,
9893        factor1: *const gobject::GValue,
9894        factor2: *const gobject::GValue,
9895    ) -> gboolean;
9896    pub fn gst_value_fraction_subtract(
9897        dest: *mut gobject::GValue,
9898        minuend: *const gobject::GValue,
9899        subtrahend: *const gobject::GValue,
9900    ) -> gboolean;
9901    pub fn gst_value_get_bitmask(value: *const gobject::GValue) -> u64;
9902    pub fn gst_value_get_caps(value: *const gobject::GValue) -> *const GstCaps;
9903    pub fn gst_value_get_caps_features(value: *const gobject::GValue) -> *const GstCapsFeatures;
9904    pub fn gst_value_get_double_range_max(value: *const gobject::GValue) -> c_double;
9905    pub fn gst_value_get_double_range_min(value: *const gobject::GValue) -> c_double;
9906    pub fn gst_value_get_flagset_flags(value: *const gobject::GValue) -> c_uint;
9907    pub fn gst_value_get_flagset_mask(value: *const gobject::GValue) -> c_uint;
9908    pub fn gst_value_get_fraction_denominator(value: *const gobject::GValue) -> c_int;
9909    pub fn gst_value_get_fraction_numerator(value: *const gobject::GValue) -> c_int;
9910    pub fn gst_value_get_fraction_range_max(
9911        value: *const gobject::GValue,
9912    ) -> *const gobject::GValue;
9913    pub fn gst_value_get_fraction_range_min(
9914        value: *const gobject::GValue,
9915    ) -> *const gobject::GValue;
9916    pub fn gst_value_get_int64_range_max(value: *const gobject::GValue) -> i64;
9917    pub fn gst_value_get_int64_range_min(value: *const gobject::GValue) -> i64;
9918    pub fn gst_value_get_int64_range_step(value: *const gobject::GValue) -> i64;
9919    pub fn gst_value_get_int_range_max(value: *const gobject::GValue) -> c_int;
9920    pub fn gst_value_get_int_range_min(value: *const gobject::GValue) -> c_int;
9921    pub fn gst_value_get_int_range_step(value: *const gobject::GValue) -> c_int;
9922    pub fn gst_value_get_structure(value: *const gobject::GValue) -> *const GstStructure;
9923    pub fn gst_value_init_and_copy(dest: *mut gobject::GValue, src: *const gobject::GValue);
9924    pub fn gst_value_intersect(
9925        dest: *mut gobject::GValue,
9926        value1: *const gobject::GValue,
9927        value2: *const gobject::GValue,
9928    ) -> gboolean;
9929    pub fn gst_value_is_fixed(value: *const gobject::GValue) -> gboolean;
9930    pub fn gst_value_is_subset(
9931        value1: *const gobject::GValue,
9932        value2: *const gobject::GValue,
9933    ) -> gboolean;
9934    pub fn gst_value_register(table: *const GstValueTable);
9935    pub fn gst_value_serialize(value: *const gobject::GValue) -> *mut c_char;
9936    pub fn gst_value_set_bitmask(value: *mut gobject::GValue, bitmask: u64);
9937    pub fn gst_value_set_caps(value: *mut gobject::GValue, caps: *const GstCaps);
9938    pub fn gst_value_set_caps_features(
9939        value: *mut gobject::GValue,
9940        features: *const GstCapsFeatures,
9941    );
9942    pub fn gst_value_set_double_range(value: *mut gobject::GValue, start: c_double, end: c_double);
9943    pub fn gst_value_set_flagset(value: *mut gobject::GValue, flags: c_uint, mask: c_uint);
9944    pub fn gst_value_set_fraction(
9945        value: *mut gobject::GValue,
9946        numerator: c_int,
9947        denominator: c_int,
9948    );
9949    pub fn gst_value_set_fraction_range(
9950        value: *mut gobject::GValue,
9951        start: *const gobject::GValue,
9952        end: *const gobject::GValue,
9953    );
9954    pub fn gst_value_set_fraction_range_full(
9955        value: *mut gobject::GValue,
9956        numerator_start: c_int,
9957        denominator_start: c_int,
9958        numerator_end: c_int,
9959        denominator_end: c_int,
9960    );
9961    pub fn gst_value_set_int64_range(value: *mut gobject::GValue, start: i64, end: i64);
9962    pub fn gst_value_set_int64_range_step(
9963        value: *mut gobject::GValue,
9964        start: i64,
9965        end: i64,
9966        step: i64,
9967    );
9968    pub fn gst_value_set_int_range(value: *mut gobject::GValue, start: c_int, end: c_int);
9969    pub fn gst_value_set_int_range_step(
9970        value: *mut gobject::GValue,
9971        start: c_int,
9972        end: c_int,
9973        step: c_int,
9974    );
9975    pub fn gst_value_set_structure(value: *mut gobject::GValue, structure: *const GstStructure);
9976    pub fn gst_value_subtract(
9977        dest: *mut gobject::GValue,
9978        minuend: *const gobject::GValue,
9979        subtrahend: *const gobject::GValue,
9980    ) -> gboolean;
9981    pub fn gst_value_union(
9982        dest: *mut gobject::GValue,
9983        value1: *const gobject::GValue,
9984        value2: *const gobject::GValue,
9985    ) -> gboolean;
9986    pub fn gst_version(
9987        major: *mut c_uint,
9988        minor: *mut c_uint,
9989        micro: *mut c_uint,
9990        nano: *mut c_uint,
9991    );
9992    pub fn gst_version_string() -> *mut c_char;
9993
9994}