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
18mod manual;
19
20pub use manual::*;
21
22#[cfg(unix)]
23#[allow(unused_imports)]
24use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
25#[allow(unused_imports)]
26use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
27#[allow(unused_imports)]
28use std::ffi::{
29    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
30};
31
32#[allow(unused_imports)]
33use glib::{gboolean, gconstpointer, gpointer, GType};
34
35// Aliases
36pub type GstBufferMapInfo = GstMapInfo;
37pub type GstClockID = gpointer;
38pub type GstClockTime = u64;
39pub type GstClockTimeDiff = i64;
40pub type GstElementFactoryListType = u64;
41pub type GstMemoryMapInfo = GstMapInfo;
42
43// Enums
44pub type GstBufferingMode = c_int;
45pub const GST_BUFFERING_STREAM: GstBufferingMode = 0;
46pub const GST_BUFFERING_DOWNLOAD: GstBufferingMode = 1;
47pub const GST_BUFFERING_TIMESHIFT: GstBufferingMode = 2;
48pub const GST_BUFFERING_LIVE: GstBufferingMode = 3;
49
50pub type GstBusSyncReply = c_int;
51pub const GST_BUS_DROP: GstBusSyncReply = 0;
52pub const GST_BUS_PASS: GstBusSyncReply = 1;
53pub const GST_BUS_ASYNC: GstBusSyncReply = 2;
54
55pub type GstCapsIntersectMode = c_int;
56pub const GST_CAPS_INTERSECT_ZIG_ZAG: GstCapsIntersectMode = 0;
57pub const GST_CAPS_INTERSECT_FIRST: GstCapsIntersectMode = 1;
58
59pub type GstClockEntryType = c_int;
60pub const GST_CLOCK_ENTRY_SINGLE: GstClockEntryType = 0;
61pub const GST_CLOCK_ENTRY_PERIODIC: GstClockEntryType = 1;
62
63pub type GstClockReturn = c_int;
64pub const GST_CLOCK_OK: GstClockReturn = 0;
65pub const GST_CLOCK_EARLY: GstClockReturn = 1;
66pub const GST_CLOCK_UNSCHEDULED: GstClockReturn = 2;
67pub const GST_CLOCK_BUSY: GstClockReturn = 3;
68pub const GST_CLOCK_BADTIME: GstClockReturn = 4;
69pub const GST_CLOCK_ERROR: GstClockReturn = 5;
70pub const GST_CLOCK_UNSUPPORTED: GstClockReturn = 6;
71pub const GST_CLOCK_DONE: GstClockReturn = 7;
72
73pub type GstClockType = c_int;
74pub const GST_CLOCK_TYPE_REALTIME: GstClockType = 0;
75pub const GST_CLOCK_TYPE_MONOTONIC: GstClockType = 1;
76pub const GST_CLOCK_TYPE_OTHER: GstClockType = 2;
77pub const GST_CLOCK_TYPE_TAI: GstClockType = 3;
78
79pub type GstCoreError = c_int;
80pub const GST_CORE_ERROR_FAILED: GstCoreError = 1;
81pub const GST_CORE_ERROR_TOO_LAZY: GstCoreError = 2;
82pub const GST_CORE_ERROR_NOT_IMPLEMENTED: GstCoreError = 3;
83pub const GST_CORE_ERROR_STATE_CHANGE: GstCoreError = 4;
84pub const GST_CORE_ERROR_PAD: GstCoreError = 5;
85pub const GST_CORE_ERROR_THREAD: GstCoreError = 6;
86pub const GST_CORE_ERROR_NEGOTIATION: GstCoreError = 7;
87pub const GST_CORE_ERROR_EVENT: GstCoreError = 8;
88pub const GST_CORE_ERROR_SEEK: GstCoreError = 9;
89pub const GST_CORE_ERROR_CAPS: GstCoreError = 10;
90pub const GST_CORE_ERROR_TAG: GstCoreError = 11;
91pub const GST_CORE_ERROR_MISSING_PLUGIN: GstCoreError = 12;
92pub const GST_CORE_ERROR_CLOCK: GstCoreError = 13;
93pub const GST_CORE_ERROR_DISABLED: GstCoreError = 14;
94pub const GST_CORE_ERROR_NUM_ERRORS: GstCoreError = 15;
95
96pub type GstDebugColorMode = c_int;
97pub const GST_DEBUG_COLOR_MODE_OFF: GstDebugColorMode = 0;
98pub const GST_DEBUG_COLOR_MODE_ON: GstDebugColorMode = 1;
99pub const GST_DEBUG_COLOR_MODE_UNIX: GstDebugColorMode = 2;
100
101pub type GstDebugLevel = c_int;
102pub const GST_LEVEL_NONE: GstDebugLevel = 0;
103pub const GST_LEVEL_ERROR: GstDebugLevel = 1;
104pub const GST_LEVEL_WARNING: GstDebugLevel = 2;
105pub const GST_LEVEL_FIXME: GstDebugLevel = 3;
106pub const GST_LEVEL_INFO: GstDebugLevel = 4;
107pub const GST_LEVEL_DEBUG: GstDebugLevel = 5;
108pub const GST_LEVEL_LOG: GstDebugLevel = 6;
109pub const GST_LEVEL_TRACE: GstDebugLevel = 7;
110pub const GST_LEVEL_MEMDUMP: GstDebugLevel = 9;
111pub const GST_LEVEL_COUNT: GstDebugLevel = 10;
112
113pub type GstEventType = c_int;
114pub const GST_EVENT_UNKNOWN: GstEventType = 0;
115pub const GST_EVENT_FLUSH_START: GstEventType = 2563;
116pub const GST_EVENT_FLUSH_STOP: GstEventType = 5127;
117pub const GST_EVENT_STREAM_START: GstEventType = 10254;
118pub const GST_EVENT_CAPS: GstEventType = 12814;
119pub const GST_EVENT_SEGMENT: GstEventType = 17934;
120pub const GST_EVENT_STREAM_COLLECTION: GstEventType = 19230;
121pub const GST_EVENT_TAG: GstEventType = 20510;
122pub const GST_EVENT_BUFFERSIZE: GstEventType = 23054;
123pub const GST_EVENT_SINK_MESSAGE: GstEventType = 25630;
124pub const GST_EVENT_STREAM_GROUP_DONE: GstEventType = 26894;
125pub const GST_EVENT_EOS: GstEventType = 28174;
126pub const GST_EVENT_TOC: GstEventType = 30750;
127pub const GST_EVENT_PROTECTION: GstEventType = 33310;
128pub const GST_EVENT_SEGMENT_DONE: GstEventType = 38406;
129pub const GST_EVENT_GAP: GstEventType = 40966;
130pub const GST_EVENT_INSTANT_RATE_CHANGE: GstEventType = 46090;
131pub const GST_EVENT_QOS: GstEventType = 48641;
132pub const GST_EVENT_SEEK: GstEventType = 51201;
133pub const GST_EVENT_NAVIGATION: GstEventType = 53761;
134pub const GST_EVENT_LATENCY: GstEventType = 56321;
135pub const GST_EVENT_STEP: GstEventType = 58881;
136pub const GST_EVENT_RECONFIGURE: GstEventType = 61441;
137pub const GST_EVENT_TOC_SELECT: GstEventType = 64001;
138pub const GST_EVENT_SELECT_STREAMS: GstEventType = 66561;
139pub const GST_EVENT_INSTANT_RATE_SYNC_TIME: GstEventType = 66817;
140pub const GST_EVENT_CUSTOM_UPSTREAM: GstEventType = 69121;
141pub const GST_EVENT_CUSTOM_DOWNSTREAM: GstEventType = 71686;
142pub const GST_EVENT_CUSTOM_DOWNSTREAM_OOB: GstEventType = 74242;
143pub const GST_EVENT_CUSTOM_DOWNSTREAM_STICKY: GstEventType = 76830;
144pub const GST_EVENT_CUSTOM_BOTH: GstEventType = 79367;
145pub const GST_EVENT_CUSTOM_BOTH_OOB: GstEventType = 81923;
146
147pub type GstFlowReturn = c_int;
148pub const GST_FLOW_CUSTOM_SUCCESS_2: GstFlowReturn = 102;
149pub const GST_FLOW_CUSTOM_SUCCESS_1: GstFlowReturn = 101;
150pub const GST_FLOW_CUSTOM_SUCCESS: GstFlowReturn = 100;
151pub const GST_FLOW_OK: GstFlowReturn = 0;
152pub const GST_FLOW_NOT_LINKED: GstFlowReturn = -1;
153pub const GST_FLOW_FLUSHING: GstFlowReturn = -2;
154pub const GST_FLOW_EOS: GstFlowReturn = -3;
155pub const GST_FLOW_NOT_NEGOTIATED: GstFlowReturn = -4;
156pub const GST_FLOW_ERROR: GstFlowReturn = -5;
157pub const GST_FLOW_NOT_SUPPORTED: GstFlowReturn = -6;
158pub const GST_FLOW_CUSTOM_ERROR: GstFlowReturn = -100;
159pub const GST_FLOW_CUSTOM_ERROR_1: GstFlowReturn = -101;
160pub const GST_FLOW_CUSTOM_ERROR_2: GstFlowReturn = -102;
161
162pub type GstFormat = c_int;
163pub const GST_FORMAT_UNDEFINED: GstFormat = 0;
164pub const GST_FORMAT_DEFAULT: GstFormat = 1;
165pub const GST_FORMAT_BYTES: GstFormat = 2;
166pub const GST_FORMAT_TIME: GstFormat = 3;
167pub const GST_FORMAT_BUFFERS: GstFormat = 4;
168pub const GST_FORMAT_PERCENT: GstFormat = 5;
169
170pub type GstIteratorItem = c_int;
171pub const GST_ITERATOR_ITEM_SKIP: GstIteratorItem = 0;
172pub const GST_ITERATOR_ITEM_PASS: GstIteratorItem = 1;
173pub const GST_ITERATOR_ITEM_END: GstIteratorItem = 2;
174
175pub type GstIteratorResult = c_int;
176pub const GST_ITERATOR_DONE: GstIteratorResult = 0;
177pub const GST_ITERATOR_OK: GstIteratorResult = 1;
178pub const GST_ITERATOR_RESYNC: GstIteratorResult = 2;
179pub const GST_ITERATOR_ERROR: GstIteratorResult = 3;
180
181pub type GstLibraryError = c_int;
182pub const GST_LIBRARY_ERROR_FAILED: GstLibraryError = 1;
183pub const GST_LIBRARY_ERROR_TOO_LAZY: GstLibraryError = 2;
184pub const GST_LIBRARY_ERROR_INIT: GstLibraryError = 3;
185pub const GST_LIBRARY_ERROR_SHUTDOWN: GstLibraryError = 4;
186pub const GST_LIBRARY_ERROR_SETTINGS: GstLibraryError = 5;
187pub const GST_LIBRARY_ERROR_ENCODE: GstLibraryError = 6;
188pub const GST_LIBRARY_ERROR_NUM_ERRORS: GstLibraryError = 7;
189
190pub type GstPadDirection = c_int;
191pub const GST_PAD_UNKNOWN: GstPadDirection = 0;
192pub const GST_PAD_SRC: GstPadDirection = 1;
193pub const GST_PAD_SINK: GstPadDirection = 2;
194
195pub type GstPadLinkReturn = c_int;
196pub const GST_PAD_LINK_OK: GstPadLinkReturn = 0;
197pub const GST_PAD_LINK_WRONG_HIERARCHY: GstPadLinkReturn = -1;
198pub const GST_PAD_LINK_WAS_LINKED: GstPadLinkReturn = -2;
199pub const GST_PAD_LINK_WRONG_DIRECTION: GstPadLinkReturn = -3;
200pub const GST_PAD_LINK_NOFORMAT: GstPadLinkReturn = -4;
201pub const GST_PAD_LINK_NOSCHED: GstPadLinkReturn = -5;
202pub const GST_PAD_LINK_REFUSED: GstPadLinkReturn = -6;
203
204pub type GstPadMode = c_int;
205pub const GST_PAD_MODE_NONE: GstPadMode = 0;
206pub const GST_PAD_MODE_PUSH: GstPadMode = 1;
207pub const GST_PAD_MODE_PULL: GstPadMode = 2;
208
209pub type GstPadPresence = c_int;
210pub const GST_PAD_ALWAYS: GstPadPresence = 0;
211pub const GST_PAD_SOMETIMES: GstPadPresence = 1;
212pub const GST_PAD_REQUEST: GstPadPresence = 2;
213
214pub type GstPadProbeReturn = c_int;
215pub const GST_PAD_PROBE_DROP: GstPadProbeReturn = 0;
216pub const GST_PAD_PROBE_OK: GstPadProbeReturn = 1;
217pub const GST_PAD_PROBE_REMOVE: GstPadProbeReturn = 2;
218pub const GST_PAD_PROBE_PASS: GstPadProbeReturn = 3;
219pub const GST_PAD_PROBE_HANDLED: GstPadProbeReturn = 4;
220
221pub type GstParseError = c_int;
222pub const GST_PARSE_ERROR_SYNTAX: GstParseError = 0;
223pub const GST_PARSE_ERROR_NO_SUCH_ELEMENT: GstParseError = 1;
224pub const GST_PARSE_ERROR_NO_SUCH_PROPERTY: GstParseError = 2;
225pub const GST_PARSE_ERROR_LINK: GstParseError = 3;
226pub const GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY: GstParseError = 4;
227pub const GST_PARSE_ERROR_EMPTY_BIN: GstParseError = 5;
228pub const GST_PARSE_ERROR_EMPTY: GstParseError = 6;
229pub const GST_PARSE_ERROR_DELAYED_LINK: GstParseError = 7;
230
231pub type GstPluginError = c_int;
232pub const GST_PLUGIN_ERROR_MODULE: GstPluginError = 0;
233pub const GST_PLUGIN_ERROR_DEPENDENCIES: GstPluginError = 1;
234pub const GST_PLUGIN_ERROR_NAME_MISMATCH: GstPluginError = 2;
235
236pub type GstProgressType = c_int;
237pub const GST_PROGRESS_TYPE_START: GstProgressType = 0;
238pub const GST_PROGRESS_TYPE_CONTINUE: GstProgressType = 1;
239pub const GST_PROGRESS_TYPE_COMPLETE: GstProgressType = 2;
240pub const GST_PROGRESS_TYPE_CANCELED: GstProgressType = 3;
241pub const GST_PROGRESS_TYPE_ERROR: GstProgressType = 4;
242
243pub type GstPromiseResult = c_int;
244pub const GST_PROMISE_RESULT_PENDING: GstPromiseResult = 0;
245pub const GST_PROMISE_RESULT_INTERRUPTED: GstPromiseResult = 1;
246pub const GST_PROMISE_RESULT_REPLIED: GstPromiseResult = 2;
247pub const GST_PROMISE_RESULT_EXPIRED: GstPromiseResult = 3;
248
249pub type GstQOSType = c_int;
250pub const GST_QOS_TYPE_OVERFLOW: GstQOSType = 0;
251pub const GST_QOS_TYPE_UNDERFLOW: GstQOSType = 1;
252pub const GST_QOS_TYPE_THROTTLE: GstQOSType = 2;
253
254pub type GstQueryType = c_int;
255pub const GST_QUERY_UNKNOWN: GstQueryType = 0;
256pub const GST_QUERY_POSITION: GstQueryType = 2563;
257pub const GST_QUERY_DURATION: GstQueryType = 5123;
258pub const GST_QUERY_LATENCY: GstQueryType = 7683;
259pub const GST_QUERY_JITTER: GstQueryType = 10243;
260pub const GST_QUERY_RATE: GstQueryType = 12803;
261pub const GST_QUERY_SEEKING: GstQueryType = 15363;
262pub const GST_QUERY_SEGMENT: GstQueryType = 17923;
263pub const GST_QUERY_CONVERT: GstQueryType = 20483;
264pub const GST_QUERY_FORMATS: GstQueryType = 23043;
265pub const GST_QUERY_BUFFERING: GstQueryType = 28163;
266pub const GST_QUERY_CUSTOM: GstQueryType = 30723;
267pub const GST_QUERY_URI: GstQueryType = 33283;
268pub const GST_QUERY_ALLOCATION: GstQueryType = 35846;
269pub const GST_QUERY_SCHEDULING: GstQueryType = 38401;
270pub const GST_QUERY_ACCEPT_CAPS: GstQueryType = 40963;
271pub const GST_QUERY_CAPS: GstQueryType = 43523;
272pub const GST_QUERY_DRAIN: GstQueryType = 46086;
273pub const GST_QUERY_CONTEXT: GstQueryType = 48643;
274pub const GST_QUERY_BITRATE: GstQueryType = 51202;
275#[cfg(feature = "v1_22")]
276#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
277pub const GST_QUERY_SELECTABLE: GstQueryType = 53763;
278
279pub type GstRank = c_int;
280pub const GST_RANK_NONE: GstRank = 0;
281pub const GST_RANK_MARGINAL: GstRank = 64;
282pub const GST_RANK_SECONDARY: GstRank = 128;
283pub const GST_RANK_PRIMARY: GstRank = 256;
284
285pub type GstResourceError = c_int;
286pub const GST_RESOURCE_ERROR_FAILED: GstResourceError = 1;
287pub const GST_RESOURCE_ERROR_TOO_LAZY: GstResourceError = 2;
288pub const GST_RESOURCE_ERROR_NOT_FOUND: GstResourceError = 3;
289pub const GST_RESOURCE_ERROR_BUSY: GstResourceError = 4;
290pub const GST_RESOURCE_ERROR_OPEN_READ: GstResourceError = 5;
291pub const GST_RESOURCE_ERROR_OPEN_WRITE: GstResourceError = 6;
292pub const GST_RESOURCE_ERROR_OPEN_READ_WRITE: GstResourceError = 7;
293pub const GST_RESOURCE_ERROR_CLOSE: GstResourceError = 8;
294pub const GST_RESOURCE_ERROR_READ: GstResourceError = 9;
295pub const GST_RESOURCE_ERROR_WRITE: GstResourceError = 10;
296pub const GST_RESOURCE_ERROR_SEEK: GstResourceError = 11;
297pub const GST_RESOURCE_ERROR_SYNC: GstResourceError = 12;
298pub const GST_RESOURCE_ERROR_SETTINGS: GstResourceError = 13;
299pub const GST_RESOURCE_ERROR_NO_SPACE_LEFT: GstResourceError = 14;
300pub const GST_RESOURCE_ERROR_NOT_AUTHORIZED: GstResourceError = 15;
301pub const GST_RESOURCE_ERROR_NUM_ERRORS: GstResourceError = 16;
302
303pub type GstSearchMode = c_int;
304pub const GST_SEARCH_MODE_EXACT: GstSearchMode = 0;
305pub const GST_SEARCH_MODE_BEFORE: GstSearchMode = 1;
306pub const GST_SEARCH_MODE_AFTER: GstSearchMode = 2;
307
308pub type GstSeekType = c_int;
309pub const GST_SEEK_TYPE_NONE: GstSeekType = 0;
310pub const GST_SEEK_TYPE_SET: GstSeekType = 1;
311pub const GST_SEEK_TYPE_END: GstSeekType = 2;
312
313pub type GstState = c_int;
314pub const GST_STATE_VOID_PENDING: GstState = 0;
315pub const GST_STATE_NULL: GstState = 1;
316pub const GST_STATE_READY: GstState = 2;
317pub const GST_STATE_PAUSED: GstState = 3;
318pub const GST_STATE_PLAYING: GstState = 4;
319
320pub type GstStateChange = c_int;
321pub const GST_STATE_CHANGE_NULL_TO_READY: GstStateChange = 10;
322pub const GST_STATE_CHANGE_READY_TO_PAUSED: GstStateChange = 19;
323pub const GST_STATE_CHANGE_PAUSED_TO_PLAYING: GstStateChange = 28;
324pub const GST_STATE_CHANGE_PLAYING_TO_PAUSED: GstStateChange = 35;
325pub const GST_STATE_CHANGE_PAUSED_TO_READY: GstStateChange = 26;
326pub const GST_STATE_CHANGE_READY_TO_NULL: GstStateChange = 17;
327pub const GST_STATE_CHANGE_NULL_TO_NULL: GstStateChange = 9;
328pub const GST_STATE_CHANGE_READY_TO_READY: GstStateChange = 18;
329pub const GST_STATE_CHANGE_PAUSED_TO_PAUSED: GstStateChange = 27;
330pub const GST_STATE_CHANGE_PLAYING_TO_PLAYING: GstStateChange = 36;
331
332pub type GstStateChangeReturn = c_int;
333pub const GST_STATE_CHANGE_FAILURE: GstStateChangeReturn = 0;
334pub const GST_STATE_CHANGE_SUCCESS: GstStateChangeReturn = 1;
335pub const GST_STATE_CHANGE_ASYNC: GstStateChangeReturn = 2;
336pub const GST_STATE_CHANGE_NO_PREROLL: GstStateChangeReturn = 3;
337
338pub type GstStreamError = c_int;
339pub const GST_STREAM_ERROR_FAILED: GstStreamError = 1;
340pub const GST_STREAM_ERROR_TOO_LAZY: GstStreamError = 2;
341pub const GST_STREAM_ERROR_NOT_IMPLEMENTED: GstStreamError = 3;
342pub const GST_STREAM_ERROR_TYPE_NOT_FOUND: GstStreamError = 4;
343pub const GST_STREAM_ERROR_WRONG_TYPE: GstStreamError = 5;
344pub const GST_STREAM_ERROR_CODEC_NOT_FOUND: GstStreamError = 6;
345pub const GST_STREAM_ERROR_DECODE: GstStreamError = 7;
346pub const GST_STREAM_ERROR_ENCODE: GstStreamError = 8;
347pub const GST_STREAM_ERROR_DEMUX: GstStreamError = 9;
348pub const GST_STREAM_ERROR_MUX: GstStreamError = 10;
349pub const GST_STREAM_ERROR_FORMAT: GstStreamError = 11;
350pub const GST_STREAM_ERROR_DECRYPT: GstStreamError = 12;
351pub const GST_STREAM_ERROR_DECRYPT_NOKEY: GstStreamError = 13;
352pub const GST_STREAM_ERROR_NUM_ERRORS: GstStreamError = 14;
353
354pub type GstStreamStatusType = c_int;
355pub const GST_STREAM_STATUS_TYPE_CREATE: GstStreamStatusType = 0;
356pub const GST_STREAM_STATUS_TYPE_ENTER: GstStreamStatusType = 1;
357pub const GST_STREAM_STATUS_TYPE_LEAVE: GstStreamStatusType = 2;
358pub const GST_STREAM_STATUS_TYPE_DESTROY: GstStreamStatusType = 3;
359pub const GST_STREAM_STATUS_TYPE_START: GstStreamStatusType = 8;
360pub const GST_STREAM_STATUS_TYPE_PAUSE: GstStreamStatusType = 9;
361pub const GST_STREAM_STATUS_TYPE_STOP: GstStreamStatusType = 10;
362
363pub type GstStructureChangeType = c_int;
364pub const GST_STRUCTURE_CHANGE_TYPE_PAD_LINK: GstStructureChangeType = 0;
365pub const GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK: GstStructureChangeType = 1;
366
367pub type GstTagFlag = c_int;
368pub const GST_TAG_FLAG_UNDEFINED: GstTagFlag = 0;
369pub const GST_TAG_FLAG_META: GstTagFlag = 1;
370pub const GST_TAG_FLAG_ENCODED: GstTagFlag = 2;
371pub const GST_TAG_FLAG_DECODED: GstTagFlag = 3;
372pub const GST_TAG_FLAG_COUNT: GstTagFlag = 4;
373
374pub type GstTagMergeMode = c_int;
375pub const GST_TAG_MERGE_UNDEFINED: GstTagMergeMode = 0;
376pub const GST_TAG_MERGE_REPLACE_ALL: GstTagMergeMode = 1;
377pub const GST_TAG_MERGE_REPLACE: GstTagMergeMode = 2;
378pub const GST_TAG_MERGE_APPEND: GstTagMergeMode = 3;
379pub const GST_TAG_MERGE_PREPEND: GstTagMergeMode = 4;
380pub const GST_TAG_MERGE_KEEP: GstTagMergeMode = 5;
381pub const GST_TAG_MERGE_KEEP_ALL: GstTagMergeMode = 6;
382pub const GST_TAG_MERGE_COUNT: GstTagMergeMode = 7;
383
384pub type GstTagScope = c_int;
385pub const GST_TAG_SCOPE_STREAM: GstTagScope = 0;
386pub const GST_TAG_SCOPE_GLOBAL: GstTagScope = 1;
387
388pub type GstTaskState = c_int;
389pub const GST_TASK_STARTED: GstTaskState = 0;
390pub const GST_TASK_STOPPED: GstTaskState = 1;
391pub const GST_TASK_PAUSED: GstTaskState = 2;
392
393pub type GstTocEntryType = c_int;
394pub const GST_TOC_ENTRY_TYPE_ANGLE: GstTocEntryType = -3;
395pub const GST_TOC_ENTRY_TYPE_VERSION: GstTocEntryType = -2;
396pub const GST_TOC_ENTRY_TYPE_EDITION: GstTocEntryType = -1;
397pub const GST_TOC_ENTRY_TYPE_INVALID: GstTocEntryType = 0;
398pub const GST_TOC_ENTRY_TYPE_TITLE: GstTocEntryType = 1;
399pub const GST_TOC_ENTRY_TYPE_TRACK: GstTocEntryType = 2;
400pub const GST_TOC_ENTRY_TYPE_CHAPTER: GstTocEntryType = 3;
401
402pub type GstTocLoopType = c_int;
403pub const GST_TOC_LOOP_NONE: GstTocLoopType = 0;
404pub const GST_TOC_LOOP_FORWARD: GstTocLoopType = 1;
405pub const GST_TOC_LOOP_REVERSE: GstTocLoopType = 2;
406pub const GST_TOC_LOOP_PING_PONG: GstTocLoopType = 3;
407
408pub type GstTocScope = c_int;
409pub const GST_TOC_SCOPE_GLOBAL: GstTocScope = 1;
410pub const GST_TOC_SCOPE_CURRENT: GstTocScope = 2;
411
412pub type GstTracerValueScope = c_int;
413pub const GST_TRACER_VALUE_SCOPE_PROCESS: GstTracerValueScope = 0;
414pub const GST_TRACER_VALUE_SCOPE_THREAD: GstTracerValueScope = 1;
415pub const GST_TRACER_VALUE_SCOPE_ELEMENT: GstTracerValueScope = 2;
416pub const GST_TRACER_VALUE_SCOPE_PAD: GstTracerValueScope = 3;
417
418pub type GstTypeFindProbability = c_int;
419pub const GST_TYPE_FIND_NONE: GstTypeFindProbability = 0;
420pub const GST_TYPE_FIND_MINIMUM: GstTypeFindProbability = 1;
421pub const GST_TYPE_FIND_POSSIBLE: GstTypeFindProbability = 50;
422pub const GST_TYPE_FIND_LIKELY: GstTypeFindProbability = 80;
423pub const GST_TYPE_FIND_NEARLY_CERTAIN: GstTypeFindProbability = 99;
424pub const GST_TYPE_FIND_MAXIMUM: GstTypeFindProbability = 100;
425
426pub type GstURIError = c_int;
427pub const GST_URI_ERROR_UNSUPPORTED_PROTOCOL: GstURIError = 0;
428pub const GST_URI_ERROR_BAD_URI: GstURIError = 1;
429pub const GST_URI_ERROR_BAD_STATE: GstURIError = 2;
430pub const GST_URI_ERROR_BAD_REFERENCE: GstURIError = 3;
431
432pub type GstURIType = c_int;
433pub const GST_URI_UNKNOWN: GstURIType = 0;
434pub const GST_URI_SINK: GstURIType = 1;
435pub const GST_URI_SRC: GstURIType = 2;
436
437// Constants
438pub const GST_ALLOCATOR_SYSMEM: &[u8] = b"SystemMemory\0";
439pub const GST_BUFFER_COPY_ALL: GstBufferCopyFlags = 15;
440pub const GST_BUFFER_COPY_METADATA: GstBufferCopyFlags = 7;
441pub const GST_BUFFER_OFFSET_NONE: u64 = 18446744073709551615;
442pub const GST_CAN_INLINE: c_int = 1;
443pub const GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY: &[u8] = b"memory:SystemMemory\0";
444pub const GST_CLOCK_TIME_NONE: GstClockTime = 18446744073709551615;
445pub const GST_DEBUG_BG_MASK: c_int = 240;
446pub const GST_DEBUG_FG_MASK: c_int = 15;
447pub const GST_DEBUG_FORMAT_MASK: c_int = 65280;
448pub const GST_ELEMENT_FACTORY_KLASS_DECODER: &[u8] = b"Decoder\0";
449pub const GST_ELEMENT_FACTORY_KLASS_DECRYPTOR: &[u8] = b"Decryptor\0";
450pub const GST_ELEMENT_FACTORY_KLASS_DEMUXER: &[u8] = b"Demuxer\0";
451pub const GST_ELEMENT_FACTORY_KLASS_DEPAYLOADER: &[u8] = b"Depayloader\0";
452pub const GST_ELEMENT_FACTORY_KLASS_ENCODER: &[u8] = b"Encoder\0";
453pub const GST_ELEMENT_FACTORY_KLASS_ENCRYPTOR: &[u8] = b"Encryptor\0";
454pub const GST_ELEMENT_FACTORY_KLASS_FORMATTER: &[u8] = b"Formatter\0";
455pub const GST_ELEMENT_FACTORY_KLASS_HARDWARE: &[u8] = b"Hardware\0";
456pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_AUDIO: &[u8] = b"Audio\0";
457pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_IMAGE: &[u8] = b"Image\0";
458pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_METADATA: &[u8] = b"Metadata\0";
459pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE: &[u8] = b"Subtitle\0";
460pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_VIDEO: &[u8] = b"Video\0";
461pub const GST_ELEMENT_FACTORY_KLASS_MUXER: &[u8] = b"Muxer\0";
462pub const GST_ELEMENT_FACTORY_KLASS_PARSER: &[u8] = b"Parser\0";
463pub const GST_ELEMENT_FACTORY_KLASS_PAYLOADER: &[u8] = b"Payloader\0";
464pub const GST_ELEMENT_FACTORY_KLASS_SINK: &[u8] = b"Sink\0";
465pub const GST_ELEMENT_FACTORY_KLASS_SRC: &[u8] = b"Source\0";
466pub const GST_ELEMENT_FACTORY_TYPE_ANY: GstElementFactoryListType = 562949953421311;
467pub const GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS: GstElementFactoryListType = 3940649673949188;
468pub const GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER: GstElementFactoryListType = 1125899906842626;
469pub const GST_ELEMENT_FACTORY_TYPE_DECODABLE: GstElementFactoryListType = 1377;
470pub const GST_ELEMENT_FACTORY_TYPE_DECODER: GstElementFactoryListType = 1;
471pub const GST_ELEMENT_FACTORY_TYPE_DECRYPTOR: GstElementFactoryListType = 1024;
472pub const GST_ELEMENT_FACTORY_TYPE_DEMUXER: GstElementFactoryListType = 32;
473pub const GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER: GstElementFactoryListType = 256;
474pub const GST_ELEMENT_FACTORY_TYPE_ENCODER: GstElementFactoryListType = 2;
475pub const GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR: GstElementFactoryListType = 2048;
476pub const GST_ELEMENT_FACTORY_TYPE_FORMATTER: GstElementFactoryListType = 512;
477pub const GST_ELEMENT_FACTORY_TYPE_HARDWARE: GstElementFactoryListType = 4096;
478pub const GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS: GstElementFactoryListType = 281474976710656;
479pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY: GstElementFactoryListType = 18446462598732840960;
480pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO: GstElementFactoryListType = 1125899906842624;
481pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE: GstElementFactoryListType = 2251799813685248;
482pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA: GstElementFactoryListType = 9007199254740992;
483pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE: GstElementFactoryListType = 4503599627370496;
484pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO: GstElementFactoryListType = 562949953421312;
485pub const GST_ELEMENT_FACTORY_TYPE_MUXER: GstElementFactoryListType = 16;
486pub const GST_ELEMENT_FACTORY_TYPE_PARSER: GstElementFactoryListType = 64;
487pub const GST_ELEMENT_FACTORY_TYPE_PAYLOADER: GstElementFactoryListType = 128;
488pub const GST_ELEMENT_FACTORY_TYPE_SINK: GstElementFactoryListType = 4;
489pub const GST_ELEMENT_FACTORY_TYPE_SRC: GstElementFactoryListType = 8;
490pub const GST_ELEMENT_FACTORY_TYPE_TIMESTAMPER: GstElementFactoryListType = 8192;
491pub const GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER: GstElementFactoryListType = 2814749767106562;
492pub const GST_ELEMENT_METADATA_AUTHOR: &[u8] = b"author\0";
493pub const GST_ELEMENT_METADATA_DESCRIPTION: &[u8] = b"description\0";
494pub const GST_ELEMENT_METADATA_DOC_URI: &[u8] = b"doc-uri\0";
495pub const GST_ELEMENT_METADATA_ICON_NAME: &[u8] = b"icon-name\0";
496pub const GST_ELEMENT_METADATA_KLASS: &[u8] = b"klass\0";
497pub const GST_ELEMENT_METADATA_LONGNAME: &[u8] = b"long-name\0";
498pub const GST_EVENT_NUM_SHIFT: c_int = 8;
499pub const GST_EVENT_TYPE_BOTH: GstEventTypeFlags = 3;
500pub const GST_FLAG_SET_MASK_EXACT: c_uint = 4294967295;
501pub const GST_FORMAT_PERCENT_MAX: i64 = 1000000;
502pub const GST_FORMAT_PERCENT_SCALE: i64 = 10000;
503pub const GST_GROUP_ID_INVALID: c_int = 0;
504pub const GST_LICENSE_UNKNOWN: &[u8] = b"unknown\0";
505pub const GST_LOCK_FLAG_READWRITE: GstLockFlags = 3;
506pub const GST_MAP_READWRITE: GstMapFlags = 3;
507pub const GST_META_TAG_MEMORY_REFERENCE_STR: &[u8] = b"memory-reference\0";
508pub const GST_META_TAG_MEMORY_STR: &[u8] = b"memory\0";
509pub const GST_MSECOND: GstClockTimeDiff = 1000000;
510pub const GST_NSECOND: GstClockTimeDiff = 1;
511pub const GST_PARAM_CONDITIONALLY_AVAILABLE: c_int = 16384;
512pub const GST_PARAM_CONTROLLABLE: c_int = 512;
513pub const GST_PARAM_DOC_SHOW_DEFAULT: c_int = 8192;
514pub const GST_PARAM_MUTABLE_PAUSED: c_int = 2048;
515pub const GST_PARAM_MUTABLE_PLAYING: c_int = 4096;
516pub const GST_PARAM_MUTABLE_READY: c_int = 1024;
517pub const GST_PARAM_USER_SHIFT: c_int = 65536;
518pub const GST_PROTECTION_SYSTEM_ID_CAPS_FIELD: &[u8] = b"protection-system\0";
519pub const GST_PROTECTION_UNSPECIFIED_SYSTEM_ID: &[u8] = b"unspecified-system-id\0";
520pub const GST_QUERY_NUM_SHIFT: c_int = 8;
521pub const GST_QUERY_TYPE_BOTH: GstQueryTypeFlags = 3;
522pub const GST_SECOND: GstClockTimeDiff = 1000000000;
523pub const GST_SEGMENT_INSTANT_FLAGS: c_int = 912;
524pub const GST_SEQNUM_INVALID: c_int = 0;
525pub const GST_TAG_ALBUM: &[u8] = b"album\0";
526pub const GST_TAG_ALBUM_ARTIST: &[u8] = b"album-artist\0";
527pub const GST_TAG_ALBUM_ARTIST_SORTNAME: &[u8] = b"album-artist-sortname\0";
528pub const GST_TAG_ALBUM_GAIN: &[u8] = b"replaygain-album-gain\0";
529pub const GST_TAG_ALBUM_PEAK: &[u8] = b"replaygain-album-peak\0";
530pub const GST_TAG_ALBUM_SORTNAME: &[u8] = b"album-sortname\0";
531pub const GST_TAG_ALBUM_VOLUME_COUNT: &[u8] = b"album-disc-count\0";
532pub const GST_TAG_ALBUM_VOLUME_NUMBER: &[u8] = b"album-disc-number\0";
533pub const GST_TAG_APPLICATION_DATA: &[u8] = b"application-data\0";
534pub const GST_TAG_APPLICATION_NAME: &[u8] = b"application-name\0";
535pub const GST_TAG_ARTIST: &[u8] = b"artist\0";
536pub const GST_TAG_ARTIST_SORTNAME: &[u8] = b"artist-sortname\0";
537pub const GST_TAG_ATTACHMENT: &[u8] = b"attachment\0";
538pub const GST_TAG_AUDIO_CODEC: &[u8] = b"audio-codec\0";
539pub const GST_TAG_BEATS_PER_MINUTE: &[u8] = b"beats-per-minute\0";
540pub const GST_TAG_BITRATE: &[u8] = b"bitrate\0";
541pub const GST_TAG_CODEC: &[u8] = b"codec\0";
542pub const GST_TAG_COMMENT: &[u8] = b"comment\0";
543pub const GST_TAG_COMPOSER: &[u8] = b"composer\0";
544pub const GST_TAG_COMPOSER_SORTNAME: &[u8] = b"composer-sortname\0";
545pub const GST_TAG_CONDUCTOR: &[u8] = b"conductor\0";
546pub const GST_TAG_CONTACT: &[u8] = b"contact\0";
547pub const GST_TAG_CONTAINER_FORMAT: &[u8] = b"container-format\0";
548pub const GST_TAG_CONTAINER_SPECIFIC_TRACK_ID: &[u8] = b"container-specific-track-id\0";
549pub const GST_TAG_COPYRIGHT: &[u8] = b"copyright\0";
550pub const GST_TAG_COPYRIGHT_URI: &[u8] = b"copyright-uri\0";
551pub const GST_TAG_DATE: &[u8] = b"date\0";
552pub const GST_TAG_DATE_TIME: &[u8] = b"datetime\0";
553pub const GST_TAG_DESCRIPTION: &[u8] = b"description\0";
554pub const GST_TAG_DEVICE_MANUFACTURER: &[u8] = b"device-manufacturer\0";
555pub const GST_TAG_DEVICE_MODEL: &[u8] = b"device-model\0";
556pub const GST_TAG_DURATION: &[u8] = b"duration\0";
557pub const GST_TAG_ENCODED_BY: &[u8] = b"encoded-by\0";
558pub const GST_TAG_ENCODER: &[u8] = b"encoder\0";
559pub const GST_TAG_ENCODER_VERSION: &[u8] = b"encoder-version\0";
560pub const GST_TAG_EXTENDED_COMMENT: &[u8] = b"extended-comment\0";
561pub const GST_TAG_GENRE: &[u8] = b"genre\0";
562pub const GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION: &[u8] = b"geo-location-capture-direction\0";
563pub const GST_TAG_GEO_LOCATION_CITY: &[u8] = b"geo-location-city\0";
564pub const GST_TAG_GEO_LOCATION_COUNTRY: &[u8] = b"geo-location-country\0";
565pub const GST_TAG_GEO_LOCATION_ELEVATION: &[u8] = b"geo-location-elevation\0";
566pub const GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR: &[u8] = b"geo-location-horizontal-error\0";
567pub const GST_TAG_GEO_LOCATION_LATITUDE: &[u8] = b"geo-location-latitude\0";
568pub const GST_TAG_GEO_LOCATION_LONGITUDE: &[u8] = b"geo-location-longitude\0";
569pub const GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION: &[u8] = b"geo-location-movement-direction\0";
570pub const GST_TAG_GEO_LOCATION_MOVEMENT_SPEED: &[u8] = b"geo-location-movement-speed\0";
571pub const GST_TAG_GEO_LOCATION_NAME: &[u8] = b"geo-location-name\0";
572pub const GST_TAG_GEO_LOCATION_SUBLOCATION: &[u8] = b"geo-location-sublocation\0";
573pub const GST_TAG_GROUPING: &[u8] = b"grouping\0";
574pub const GST_TAG_HOMEPAGE: &[u8] = b"homepage\0";
575pub const GST_TAG_IMAGE: &[u8] = b"image\0";
576pub const GST_TAG_IMAGE_ORIENTATION: &[u8] = b"image-orientation\0";
577pub const GST_TAG_INTERPRETED_BY: &[u8] = b"interpreted-by\0";
578pub const GST_TAG_ISRC: &[u8] = b"isrc\0";
579pub const GST_TAG_KEYWORDS: &[u8] = b"keywords\0";
580pub const GST_TAG_LANGUAGE_CODE: &[u8] = b"language-code\0";
581pub const GST_TAG_LANGUAGE_NAME: &[u8] = b"language-name\0";
582pub const GST_TAG_LICENSE: &[u8] = b"license\0";
583pub const GST_TAG_LICENSE_URI: &[u8] = b"license-uri\0";
584pub const GST_TAG_LOCATION: &[u8] = b"location\0";
585pub const GST_TAG_LYRICS: &[u8] = b"lyrics\0";
586pub const GST_TAG_MAXIMUM_BITRATE: &[u8] = b"maximum-bitrate\0";
587pub const GST_TAG_MIDI_BASE_NOTE: &[u8] = b"midi-base-note\0";
588pub const GST_TAG_MINIMUM_BITRATE: &[u8] = b"minimum-bitrate\0";
589pub const GST_TAG_NOMINAL_BITRATE: &[u8] = b"nominal-bitrate\0";
590pub const GST_TAG_ORGANIZATION: &[u8] = b"organization\0";
591pub const GST_TAG_PERFORMER: &[u8] = b"performer\0";
592pub const GST_TAG_PREVIEW_IMAGE: &[u8] = b"preview-image\0";
593pub const GST_TAG_PRIVATE_DATA: &[u8] = b"private-data\0";
594pub const GST_TAG_PUBLISHER: &[u8] = b"publisher\0";
595pub const GST_TAG_REFERENCE_LEVEL: &[u8] = b"replaygain-reference-level\0";
596pub const GST_TAG_SERIAL: &[u8] = b"serial\0";
597pub const GST_TAG_SHOW_EPISODE_NUMBER: &[u8] = b"show-episode-number\0";
598pub const GST_TAG_SHOW_NAME: &[u8] = b"show-name\0";
599pub const GST_TAG_SHOW_SEASON_NUMBER: &[u8] = b"show-season-number\0";
600pub const GST_TAG_SHOW_SORTNAME: &[u8] = b"show-sortname\0";
601pub const GST_TAG_SUBTITLE_CODEC: &[u8] = b"subtitle-codec\0";
602pub const GST_TAG_TITLE: &[u8] = b"title\0";
603pub const GST_TAG_TITLE_SORTNAME: &[u8] = b"title-sortname\0";
604pub const GST_TAG_TRACK_COUNT: &[u8] = b"track-count\0";
605pub const GST_TAG_TRACK_GAIN: &[u8] = b"replaygain-track-gain\0";
606pub const GST_TAG_TRACK_NUMBER: &[u8] = b"track-number\0";
607pub const GST_TAG_TRACK_PEAK: &[u8] = b"replaygain-track-peak\0";
608pub const GST_TAG_USER_RATING: &[u8] = b"user-rating\0";
609pub const GST_TAG_VERSION: &[u8] = b"version\0";
610pub const GST_TAG_VIDEO_CODEC: &[u8] = b"video-codec\0";
611pub const GST_TOC_REPEAT_COUNT_INFINITE: c_int = -1;
612pub const GST_URI_NO_PORT: c_int = 0;
613pub const GST_USECOND: GstClockTimeDiff = 1000;
614pub const GST_VALUE_EQUAL: c_int = 0;
615pub const GST_VALUE_GREATER_THAN: c_int = 1;
616pub const GST_VALUE_LESS_THAN: c_int = -1;
617pub const GST_VALUE_UNORDERED: c_int = 2;
618
619// Flags
620pub type GstAllocatorFlags = c_uint;
621pub const GST_ALLOCATOR_FLAG_CUSTOM_ALLOC: GstAllocatorFlags = 16;
622#[cfg(feature = "v1_24")]
623#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
624pub const GST_ALLOCATOR_FLAG_NO_COPY: GstAllocatorFlags = 32;
625pub const GST_ALLOCATOR_FLAG_LAST: GstAllocatorFlags = 1048576;
626
627pub type GstBinFlags = c_uint;
628pub const GST_BIN_FLAG_NO_RESYNC: GstBinFlags = 16384;
629pub const GST_BIN_FLAG_STREAMS_AWARE: GstBinFlags = 32768;
630pub const GST_BIN_FLAG_LAST: GstBinFlags = 524288;
631
632pub type GstBufferCopyFlags = c_uint;
633pub const GST_BUFFER_COPY_NONE: GstBufferCopyFlags = 0;
634pub const GST_BUFFER_COPY_FLAGS: GstBufferCopyFlags = 1;
635pub const GST_BUFFER_COPY_TIMESTAMPS: GstBufferCopyFlags = 2;
636pub const GST_BUFFER_COPY_META: GstBufferCopyFlags = 4;
637pub const GST_BUFFER_COPY_MEMORY: GstBufferCopyFlags = 8;
638pub const GST_BUFFER_COPY_MERGE: GstBufferCopyFlags = 16;
639pub const GST_BUFFER_COPY_DEEP: GstBufferCopyFlags = 32;
640
641pub type GstBufferFlags = c_uint;
642pub const GST_BUFFER_FLAG_LIVE: GstBufferFlags = 16;
643pub const GST_BUFFER_FLAG_DECODE_ONLY: GstBufferFlags = 32;
644pub const GST_BUFFER_FLAG_DISCONT: GstBufferFlags = 64;
645pub const GST_BUFFER_FLAG_RESYNC: GstBufferFlags = 128;
646pub const GST_BUFFER_FLAG_CORRUPTED: GstBufferFlags = 256;
647pub const GST_BUFFER_FLAG_MARKER: GstBufferFlags = 512;
648pub const GST_BUFFER_FLAG_HEADER: GstBufferFlags = 1024;
649pub const GST_BUFFER_FLAG_GAP: GstBufferFlags = 2048;
650pub const GST_BUFFER_FLAG_DROPPABLE: GstBufferFlags = 4096;
651pub const GST_BUFFER_FLAG_DELTA_UNIT: GstBufferFlags = 8192;
652pub const GST_BUFFER_FLAG_TAG_MEMORY: GstBufferFlags = 16384;
653pub const GST_BUFFER_FLAG_SYNC_AFTER: GstBufferFlags = 32768;
654pub const GST_BUFFER_FLAG_NON_DROPPABLE: GstBufferFlags = 65536;
655pub const GST_BUFFER_FLAG_LAST: GstBufferFlags = 1048576;
656
657pub type GstBufferPoolAcquireFlags = c_uint;
658pub const GST_BUFFER_POOL_ACQUIRE_FLAG_NONE: GstBufferPoolAcquireFlags = 0;
659pub const GST_BUFFER_POOL_ACQUIRE_FLAG_KEY_UNIT: GstBufferPoolAcquireFlags = 1;
660pub const GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT: GstBufferPoolAcquireFlags = 2;
661pub const GST_BUFFER_POOL_ACQUIRE_FLAG_DISCONT: GstBufferPoolAcquireFlags = 4;
662pub const GST_BUFFER_POOL_ACQUIRE_FLAG_LAST: GstBufferPoolAcquireFlags = 65536;
663
664pub type GstBusFlags = c_uint;
665pub const GST_BUS_FLUSHING: GstBusFlags = 16;
666pub const GST_BUS_FLAG_LAST: GstBusFlags = 32;
667
668pub type GstCapsFlags = c_uint;
669pub const GST_CAPS_FLAG_ANY: GstCapsFlags = 16;
670
671pub type GstClockFlags = c_uint;
672pub const GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC: GstClockFlags = 16;
673pub const GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC: GstClockFlags = 32;
674pub const GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC: GstClockFlags = 64;
675pub const GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC: GstClockFlags = 128;
676pub const GST_CLOCK_FLAG_CAN_SET_RESOLUTION: GstClockFlags = 256;
677pub const GST_CLOCK_FLAG_CAN_SET_MASTER: GstClockFlags = 512;
678pub const GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC: GstClockFlags = 1024;
679pub const GST_CLOCK_FLAG_LAST: GstClockFlags = 4096;
680
681pub type GstDebugColorFlags = c_uint;
682pub const GST_DEBUG_FG_BLACK: GstDebugColorFlags = 0;
683pub const GST_DEBUG_FG_RED: GstDebugColorFlags = 1;
684pub const GST_DEBUG_FG_GREEN: GstDebugColorFlags = 2;
685pub const GST_DEBUG_FG_YELLOW: GstDebugColorFlags = 3;
686pub const GST_DEBUG_FG_BLUE: GstDebugColorFlags = 4;
687pub const GST_DEBUG_FG_MAGENTA: GstDebugColorFlags = 5;
688pub const GST_DEBUG_FG_CYAN: GstDebugColorFlags = 6;
689pub const GST_DEBUG_FG_WHITE: GstDebugColorFlags = 7;
690pub const GST_DEBUG_BG_BLACK: GstDebugColorFlags = 0;
691pub const GST_DEBUG_BG_RED: GstDebugColorFlags = 16;
692pub const GST_DEBUG_BG_GREEN: GstDebugColorFlags = 32;
693pub const GST_DEBUG_BG_YELLOW: GstDebugColorFlags = 48;
694pub const GST_DEBUG_BG_BLUE: GstDebugColorFlags = 64;
695pub const GST_DEBUG_BG_MAGENTA: GstDebugColorFlags = 80;
696pub const GST_DEBUG_BG_CYAN: GstDebugColorFlags = 96;
697pub const GST_DEBUG_BG_WHITE: GstDebugColorFlags = 112;
698pub const GST_DEBUG_BOLD: GstDebugColorFlags = 256;
699pub const GST_DEBUG_UNDERLINE: GstDebugColorFlags = 512;
700
701pub type GstDebugGraphDetails = c_uint;
702pub const GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE: GstDebugGraphDetails = 1;
703pub const GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS: GstDebugGraphDetails = 2;
704pub const GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS: GstDebugGraphDetails = 4;
705pub const GST_DEBUG_GRAPH_SHOW_STATES: GstDebugGraphDetails = 8;
706pub const GST_DEBUG_GRAPH_SHOW_FULL_PARAMS: GstDebugGraphDetails = 16;
707pub const GST_DEBUG_GRAPH_SHOW_ALL: GstDebugGraphDetails = 15;
708pub const GST_DEBUG_GRAPH_SHOW_VERBOSE: GstDebugGraphDetails = 4294967295;
709
710pub type GstElementFlags = c_uint;
711pub const GST_ELEMENT_FLAG_LOCKED_STATE: GstElementFlags = 16;
712pub const GST_ELEMENT_FLAG_SINK: GstElementFlags = 32;
713pub const GST_ELEMENT_FLAG_SOURCE: GstElementFlags = 64;
714pub const GST_ELEMENT_FLAG_PROVIDE_CLOCK: GstElementFlags = 128;
715pub const GST_ELEMENT_FLAG_REQUIRE_CLOCK: GstElementFlags = 256;
716pub const GST_ELEMENT_FLAG_INDEXABLE: GstElementFlags = 512;
717pub const GST_ELEMENT_FLAG_LAST: GstElementFlags = 16384;
718
719pub type GstEventTypeFlags = c_uint;
720pub const GST_EVENT_TYPE_UPSTREAM: GstEventTypeFlags = 1;
721pub const GST_EVENT_TYPE_DOWNSTREAM: GstEventTypeFlags = 2;
722pub const GST_EVENT_TYPE_SERIALIZED: GstEventTypeFlags = 4;
723pub const GST_EVENT_TYPE_STICKY: GstEventTypeFlags = 8;
724pub const GST_EVENT_TYPE_STICKY_MULTI: GstEventTypeFlags = 16;
725
726pub type GstGapFlags = c_uint;
727pub const GST_GAP_FLAG_MISSING_DATA: GstGapFlags = 1;
728
729pub type GstLockFlags = c_uint;
730pub const GST_LOCK_FLAG_READ: GstLockFlags = 1;
731pub const GST_LOCK_FLAG_WRITE: GstLockFlags = 2;
732pub const GST_LOCK_FLAG_EXCLUSIVE: GstLockFlags = 4;
733pub const GST_LOCK_FLAG_LAST: GstLockFlags = 256;
734
735pub type GstMapFlags = c_uint;
736pub const GST_MAP_READ: GstMapFlags = 1;
737pub const GST_MAP_WRITE: GstMapFlags = 2;
738pub const GST_MAP_FLAG_LAST: GstMapFlags = 65536;
739
740pub type GstMemoryFlags = c_uint;
741pub const GST_MEMORY_FLAG_READONLY: GstMemoryFlags = 2;
742pub const GST_MEMORY_FLAG_NO_SHARE: GstMemoryFlags = 16;
743pub const GST_MEMORY_FLAG_ZERO_PREFIXED: GstMemoryFlags = 32;
744pub const GST_MEMORY_FLAG_ZERO_PADDED: GstMemoryFlags = 64;
745pub const GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS: GstMemoryFlags = 128;
746pub const GST_MEMORY_FLAG_NOT_MAPPABLE: GstMemoryFlags = 256;
747pub const GST_MEMORY_FLAG_LAST: GstMemoryFlags = 1048576;
748
749pub type GstMessageType = c_uint;
750pub const GST_MESSAGE_UNKNOWN: GstMessageType = 0;
751pub const GST_MESSAGE_EOS: GstMessageType = 1;
752pub const GST_MESSAGE_ERROR: GstMessageType = 2;
753pub const GST_MESSAGE_WARNING: GstMessageType = 4;
754pub const GST_MESSAGE_INFO: GstMessageType = 8;
755pub const GST_MESSAGE_TAG: GstMessageType = 16;
756pub const GST_MESSAGE_BUFFERING: GstMessageType = 32;
757pub const GST_MESSAGE_STATE_CHANGED: GstMessageType = 64;
758pub const GST_MESSAGE_STATE_DIRTY: GstMessageType = 128;
759pub const GST_MESSAGE_STEP_DONE: GstMessageType = 256;
760pub const GST_MESSAGE_CLOCK_PROVIDE: GstMessageType = 512;
761pub const GST_MESSAGE_CLOCK_LOST: GstMessageType = 1024;
762pub const GST_MESSAGE_NEW_CLOCK: GstMessageType = 2048;
763pub const GST_MESSAGE_STRUCTURE_CHANGE: GstMessageType = 4096;
764pub const GST_MESSAGE_STREAM_STATUS: GstMessageType = 8192;
765pub const GST_MESSAGE_APPLICATION: GstMessageType = 16384;
766pub const GST_MESSAGE_ELEMENT: GstMessageType = 32768;
767pub const GST_MESSAGE_SEGMENT_START: GstMessageType = 65536;
768pub const GST_MESSAGE_SEGMENT_DONE: GstMessageType = 131072;
769pub const GST_MESSAGE_DURATION_CHANGED: GstMessageType = 262144;
770pub const GST_MESSAGE_LATENCY: GstMessageType = 524288;
771pub const GST_MESSAGE_ASYNC_START: GstMessageType = 1048576;
772pub const GST_MESSAGE_ASYNC_DONE: GstMessageType = 2097152;
773pub const GST_MESSAGE_REQUEST_STATE: GstMessageType = 4194304;
774pub const GST_MESSAGE_STEP_START: GstMessageType = 8388608;
775pub const GST_MESSAGE_QOS: GstMessageType = 16777216;
776pub const GST_MESSAGE_PROGRESS: GstMessageType = 33554432;
777pub const GST_MESSAGE_TOC: GstMessageType = 67108864;
778pub const GST_MESSAGE_RESET_TIME: GstMessageType = 134217728;
779pub const GST_MESSAGE_STREAM_START: GstMessageType = 268435456;
780pub const GST_MESSAGE_NEED_CONTEXT: GstMessageType = 536870912;
781pub const GST_MESSAGE_HAVE_CONTEXT: GstMessageType = 1073741824;
782pub const GST_MESSAGE_EXTENDED: GstMessageType = 2147483648;
783pub const GST_MESSAGE_DEVICE_ADDED: GstMessageType = 2147483649;
784pub const GST_MESSAGE_DEVICE_REMOVED: GstMessageType = 2147483650;
785pub const GST_MESSAGE_PROPERTY_NOTIFY: GstMessageType = 2147483651;
786pub const GST_MESSAGE_STREAM_COLLECTION: GstMessageType = 2147483652;
787pub const GST_MESSAGE_STREAMS_SELECTED: GstMessageType = 2147483653;
788pub const GST_MESSAGE_REDIRECT: GstMessageType = 2147483654;
789pub const GST_MESSAGE_DEVICE_CHANGED: GstMessageType = 2147483655;
790pub const GST_MESSAGE_INSTANT_RATE_REQUEST: GstMessageType = 2147483656;
791pub const GST_MESSAGE_ANY: GstMessageType = 4294967295;
792
793pub type GstMetaFlags = c_uint;
794pub const GST_META_FLAG_NONE: GstMetaFlags = 0;
795pub const GST_META_FLAG_READONLY: GstMetaFlags = 1;
796pub const GST_META_FLAG_POOLED: GstMetaFlags = 2;
797pub const GST_META_FLAG_LOCKED: GstMetaFlags = 4;
798pub const GST_META_FLAG_LAST: GstMetaFlags = 65536;
799
800pub type GstMiniObjectFlags = c_uint;
801pub const GST_MINI_OBJECT_FLAG_LOCKABLE: GstMiniObjectFlags = 1;
802pub const GST_MINI_OBJECT_FLAG_LOCK_READONLY: GstMiniObjectFlags = 2;
803pub const GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED: GstMiniObjectFlags = 4;
804pub const GST_MINI_OBJECT_FLAG_LAST: GstMiniObjectFlags = 16;
805
806pub type GstObjectFlags = c_uint;
807pub const GST_OBJECT_FLAG_MAY_BE_LEAKED: GstObjectFlags = 1;
808#[cfg(feature = "v1_24")]
809#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
810pub const GST_OBJECT_FLAG_CONSTRUCTED: GstObjectFlags = 2;
811pub const GST_OBJECT_FLAG_LAST: GstObjectFlags = 16;
812
813pub type GstPadFlags = c_uint;
814pub const GST_PAD_FLAG_BLOCKED: GstPadFlags = 16;
815pub const GST_PAD_FLAG_FLUSHING: GstPadFlags = 32;
816pub const GST_PAD_FLAG_EOS: GstPadFlags = 64;
817pub const GST_PAD_FLAG_BLOCKING: GstPadFlags = 128;
818pub const GST_PAD_FLAG_NEED_PARENT: GstPadFlags = 256;
819pub const GST_PAD_FLAG_NEED_RECONFIGURE: GstPadFlags = 512;
820pub const GST_PAD_FLAG_PENDING_EVENTS: GstPadFlags = 1024;
821pub const GST_PAD_FLAG_FIXED_CAPS: GstPadFlags = 2048;
822pub const GST_PAD_FLAG_PROXY_CAPS: GstPadFlags = 4096;
823pub const GST_PAD_FLAG_PROXY_ALLOCATION: GstPadFlags = 8192;
824pub const GST_PAD_FLAG_PROXY_SCHEDULING: GstPadFlags = 16384;
825pub const GST_PAD_FLAG_ACCEPT_INTERSECT: GstPadFlags = 32768;
826pub const GST_PAD_FLAG_ACCEPT_TEMPLATE: GstPadFlags = 65536;
827pub const GST_PAD_FLAG_LAST: GstPadFlags = 1048576;
828
829pub type GstPadLinkCheck = c_uint;
830pub const GST_PAD_LINK_CHECK_NOTHING: GstPadLinkCheck = 0;
831pub const GST_PAD_LINK_CHECK_HIERARCHY: GstPadLinkCheck = 1;
832pub const GST_PAD_LINK_CHECK_TEMPLATE_CAPS: GstPadLinkCheck = 2;
833pub const GST_PAD_LINK_CHECK_CAPS: GstPadLinkCheck = 4;
834pub const GST_PAD_LINK_CHECK_NO_RECONFIGURE: GstPadLinkCheck = 8;
835pub const GST_PAD_LINK_CHECK_DEFAULT: GstPadLinkCheck = 5;
836
837pub type GstPadProbeType = c_uint;
838pub const GST_PAD_PROBE_TYPE_INVALID: GstPadProbeType = 0;
839pub const GST_PAD_PROBE_TYPE_IDLE: GstPadProbeType = 1;
840pub const GST_PAD_PROBE_TYPE_BLOCK: GstPadProbeType = 2;
841pub const GST_PAD_PROBE_TYPE_BUFFER: GstPadProbeType = 16;
842pub const GST_PAD_PROBE_TYPE_BUFFER_LIST: GstPadProbeType = 32;
843pub const GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM: GstPadProbeType = 64;
844pub const GST_PAD_PROBE_TYPE_EVENT_UPSTREAM: GstPadProbeType = 128;
845pub const GST_PAD_PROBE_TYPE_EVENT_FLUSH: GstPadProbeType = 256;
846pub const GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM: GstPadProbeType = 512;
847pub const GST_PAD_PROBE_TYPE_QUERY_UPSTREAM: GstPadProbeType = 1024;
848pub const GST_PAD_PROBE_TYPE_PUSH: GstPadProbeType = 4096;
849pub const GST_PAD_PROBE_TYPE_PULL: GstPadProbeType = 8192;
850pub const GST_PAD_PROBE_TYPE_BLOCKING: GstPadProbeType = 3;
851pub const GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM: GstPadProbeType = 112;
852pub const GST_PAD_PROBE_TYPE_DATA_UPSTREAM: GstPadProbeType = 128;
853pub const GST_PAD_PROBE_TYPE_DATA_BOTH: GstPadProbeType = 240;
854pub const GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM: GstPadProbeType = 114;
855pub const GST_PAD_PROBE_TYPE_BLOCK_UPSTREAM: GstPadProbeType = 130;
856pub const GST_PAD_PROBE_TYPE_EVENT_BOTH: GstPadProbeType = 192;
857pub const GST_PAD_PROBE_TYPE_QUERY_BOTH: GstPadProbeType = 1536;
858pub const GST_PAD_PROBE_TYPE_ALL_BOTH: GstPadProbeType = 1776;
859pub const GST_PAD_PROBE_TYPE_SCHEDULING: GstPadProbeType = 12288;
860
861pub type GstPadTemplateFlags = c_uint;
862pub const GST_PAD_TEMPLATE_FLAG_LAST: GstPadTemplateFlags = 256;
863
864pub type GstParseFlags = c_uint;
865pub const GST_PARSE_FLAG_NONE: GstParseFlags = 0;
866pub const GST_PARSE_FLAG_FATAL_ERRORS: GstParseFlags = 1;
867pub const GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS: GstParseFlags = 2;
868pub const GST_PARSE_FLAG_PLACE_IN_BIN: GstParseFlags = 4;
869
870pub type GstPipelineFlags = c_uint;
871pub const GST_PIPELINE_FLAG_FIXED_CLOCK: GstPipelineFlags = 524288;
872pub const GST_PIPELINE_FLAG_LAST: GstPipelineFlags = 8388608;
873
874pub type GstPluginAPIFlags = c_uint;
875pub const GST_PLUGIN_API_FLAG_IGNORE_ENUM_MEMBERS: GstPluginAPIFlags = 1;
876
877pub type GstPluginDependencyFlags = c_uint;
878pub const GST_PLUGIN_DEPENDENCY_FLAG_NONE: GstPluginDependencyFlags = 0;
879pub const GST_PLUGIN_DEPENDENCY_FLAG_RECURSE: GstPluginDependencyFlags = 1;
880pub const GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY: GstPluginDependencyFlags = 2;
881pub const GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX: GstPluginDependencyFlags = 4;
882pub const GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_PREFIX: GstPluginDependencyFlags = 8;
883pub const GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_RELATIVE_TO_EXE: GstPluginDependencyFlags = 16;
884
885pub type GstPluginFlags = c_uint;
886pub const GST_PLUGIN_FLAG_CACHED: GstPluginFlags = 16;
887pub const GST_PLUGIN_FLAG_BLACKLISTED: GstPluginFlags = 32;
888
889pub type GstQueryTypeFlags = c_uint;
890pub const GST_QUERY_TYPE_UPSTREAM: GstQueryTypeFlags = 1;
891pub const GST_QUERY_TYPE_DOWNSTREAM: GstQueryTypeFlags = 2;
892pub const GST_QUERY_TYPE_SERIALIZED: GstQueryTypeFlags = 4;
893
894pub type GstSchedulingFlags = c_uint;
895pub const GST_SCHEDULING_FLAG_SEEKABLE: GstSchedulingFlags = 1;
896pub const GST_SCHEDULING_FLAG_SEQUENTIAL: GstSchedulingFlags = 2;
897pub const GST_SCHEDULING_FLAG_BANDWIDTH_LIMITED: GstSchedulingFlags = 4;
898
899pub type GstSeekFlags = c_uint;
900pub const GST_SEEK_FLAG_NONE: GstSeekFlags = 0;
901pub const GST_SEEK_FLAG_FLUSH: GstSeekFlags = 1;
902pub const GST_SEEK_FLAG_ACCURATE: GstSeekFlags = 2;
903pub const GST_SEEK_FLAG_KEY_UNIT: GstSeekFlags = 4;
904pub const GST_SEEK_FLAG_SEGMENT: GstSeekFlags = 8;
905pub const GST_SEEK_FLAG_TRICKMODE: GstSeekFlags = 16;
906pub const GST_SEEK_FLAG_SKIP: GstSeekFlags = 16;
907pub const GST_SEEK_FLAG_SNAP_BEFORE: GstSeekFlags = 32;
908pub const GST_SEEK_FLAG_SNAP_AFTER: GstSeekFlags = 64;
909pub const GST_SEEK_FLAG_SNAP_NEAREST: GstSeekFlags = 96;
910pub const GST_SEEK_FLAG_TRICKMODE_KEY_UNITS: GstSeekFlags = 128;
911pub const GST_SEEK_FLAG_TRICKMODE_NO_AUDIO: GstSeekFlags = 256;
912pub const GST_SEEK_FLAG_TRICKMODE_FORWARD_PREDICTED: GstSeekFlags = 512;
913pub const GST_SEEK_FLAG_INSTANT_RATE_CHANGE: GstSeekFlags = 1024;
914
915pub type GstSegmentFlags = c_uint;
916pub const GST_SEGMENT_FLAG_NONE: GstSegmentFlags = 0;
917pub const GST_SEGMENT_FLAG_RESET: GstSegmentFlags = 1;
918pub const GST_SEGMENT_FLAG_TRICKMODE: GstSegmentFlags = 16;
919pub const GST_SEGMENT_FLAG_SKIP: GstSegmentFlags = 16;
920pub const GST_SEGMENT_FLAG_SEGMENT: GstSegmentFlags = 8;
921pub const GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS: GstSegmentFlags = 128;
922pub const GST_SEGMENT_FLAG_TRICKMODE_FORWARD_PREDICTED: GstSegmentFlags = 512;
923pub const GST_SEGMENT_FLAG_TRICKMODE_NO_AUDIO: GstSegmentFlags = 256;
924
925pub type GstSerializeFlags = c_uint;
926pub const GST_SERIALIZE_FLAG_NONE: GstSerializeFlags = 0;
927pub const GST_SERIALIZE_FLAG_BACKWARD_COMPAT: GstSerializeFlags = 1;
928#[cfg(feature = "v1_24")]
929#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
930pub const GST_SERIALIZE_FLAG_STRICT: GstSerializeFlags = 2;
931
932pub type GstStackTraceFlags = c_uint;
933pub const GST_STACK_TRACE_SHOW_NONE: GstStackTraceFlags = 0;
934pub const GST_STACK_TRACE_SHOW_FULL: GstStackTraceFlags = 1;
935
936pub type GstStreamFlags = c_uint;
937pub const GST_STREAM_FLAG_NONE: GstStreamFlags = 0;
938pub const GST_STREAM_FLAG_SPARSE: GstStreamFlags = 1;
939pub const GST_STREAM_FLAG_SELECT: GstStreamFlags = 2;
940pub const GST_STREAM_FLAG_UNSELECT: GstStreamFlags = 4;
941
942pub type GstStreamType = c_uint;
943pub const GST_STREAM_TYPE_UNKNOWN: GstStreamType = 1;
944pub const GST_STREAM_TYPE_AUDIO: GstStreamType = 2;
945pub const GST_STREAM_TYPE_VIDEO: GstStreamType = 4;
946pub const GST_STREAM_TYPE_CONTAINER: GstStreamType = 8;
947pub const GST_STREAM_TYPE_TEXT: GstStreamType = 16;
948
949pub type GstTracerValueFlags = c_uint;
950pub const GST_TRACER_VALUE_FLAGS_NONE: GstTracerValueFlags = 0;
951pub const GST_TRACER_VALUE_FLAGS_OPTIONAL: GstTracerValueFlags = 1;
952pub const GST_TRACER_VALUE_FLAGS_AGGREGATED: GstTracerValueFlags = 2;
953
954// Unions
955#[derive(Copy, Clone)]
956#[repr(C)]
957pub union GstControlBinding_ABI {
958    pub abi: GstControlBinding_ABI_abi,
959    pub _gst_reserved: [gpointer; 4],
960}
961
962impl ::std::fmt::Debug for GstControlBinding_ABI {
963    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
964        f.debug_struct(&format!("GstControlBinding_ABI @ {self:p}"))
965            .field("abi", unsafe { &self.abi })
966            .finish()
967    }
968}
969
970#[derive(Copy, Clone)]
971#[repr(C)]
972pub union GstPadProbeInfo_ABI {
973    pub _gst_reserved: [gpointer; 4],
974    pub abi: GstPadProbeInfo_ABI_abi,
975}
976
977impl ::std::fmt::Debug for GstPadProbeInfo_ABI {
978    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
979        f.debug_struct(&format!("GstPadProbeInfo_ABI @ {self:p}"))
980            .field("_gst_reserved", unsafe { &self._gst_reserved })
981            .field("abi", unsafe { &self.abi })
982            .finish()
983    }
984}
985
986#[derive(Copy, Clone)]
987#[repr(C)]
988pub union GstPadTemplate_ABI {
989    pub _gst_reserved: [gpointer; 4],
990    pub abi: GstPadTemplate_ABI_abi,
991}
992
993impl ::std::fmt::Debug for GstPadTemplate_ABI {
994    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
995        f.debug_struct(&format!("GstPadTemplate_ABI @ {self:p}"))
996            .field("_gst_reserved", unsafe { &self._gst_reserved })
997            .field("abi", unsafe { &self.abi })
998            .finish()
999    }
1000}
1001
1002#[derive(Copy, Clone)]
1003#[repr(C)]
1004pub union GstPad_ABI {
1005    pub _gst_reserved: [gpointer; 4],
1006    pub abi: GstPad_ABI_abi,
1007}
1008
1009impl ::std::fmt::Debug for GstPad_ABI {
1010    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1011        f.debug_struct(&format!("GstPad_ABI @ {self:p}"))
1012            .field("_gst_reserved", unsafe { &self._gst_reserved })
1013            .field("abi", unsafe { &self.abi })
1014            .finish()
1015    }
1016}
1017
1018// Callbacks
1019pub type GstAllocationMetaParamsAggregator = Option<
1020    unsafe extern "C" fn(
1021        *mut *mut GstStructure,
1022        *const GstStructure,
1023        *const GstStructure,
1024    ) -> gboolean,
1025>;
1026pub type GstBufferForeachMetaFunc =
1027    Option<unsafe extern "C" fn(*mut GstBuffer, *mut *mut GstMeta, gpointer) -> gboolean>;
1028pub type GstBufferListFunc =
1029    Option<unsafe extern "C" fn(*mut *mut GstBuffer, c_uint, gpointer) -> gboolean>;
1030pub type GstBusFunc =
1031    Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage, gpointer) -> gboolean>;
1032pub type GstBusSyncHandler =
1033    Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage, gpointer) -> GstBusSyncReply>;
1034pub type GstCapsFilterMapFunc =
1035    Option<unsafe extern "C" fn(*mut GstCapsFeatures, *mut GstStructure, gpointer) -> gboolean>;
1036pub type GstCapsForeachFunc =
1037    Option<unsafe extern "C" fn(*mut GstCapsFeatures, *mut GstStructure, gpointer) -> gboolean>;
1038pub type GstCapsMapFunc =
1039    Option<unsafe extern "C" fn(*mut GstCapsFeatures, *mut GstStructure, gpointer) -> gboolean>;
1040pub type GstClockCallback =
1041    Option<unsafe extern "C" fn(*mut GstClock, GstClockTime, GstClockID, gpointer) -> gboolean>;
1042pub type GstControlBindingConvert =
1043    Option<unsafe extern "C" fn(*mut GstControlBinding, c_double, *mut gobject::GValue)>;
1044pub type GstControlSourceGetValue =
1045    Option<unsafe extern "C" fn(*mut GstControlSource, GstClockTime, *mut c_double) -> gboolean>;
1046pub type GstControlSourceGetValueArray = Option<
1047    unsafe extern "C" fn(
1048        *mut GstControlSource,
1049        GstClockTime,
1050        GstClockTime,
1051        c_uint,
1052        *mut c_double,
1053    ) -> gboolean,
1054>;
1055pub type GstCustomMetaTransformFunction = Option<
1056    unsafe extern "C" fn(
1057        *mut GstBuffer,
1058        *mut GstCustomMeta,
1059        *mut GstBuffer,
1060        glib::GQuark,
1061        gpointer,
1062        gpointer,
1063    ) -> gboolean,
1064>;
1065pub type GstDebugFuncPtr = Option<unsafe extern "C" fn()>;
1066pub type GstElementCallAsyncFunc = Option<unsafe extern "C" fn(*mut GstElement, gpointer)>;
1067pub type GstElementForeachPadFunc =
1068    Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad, gpointer) -> gboolean>;
1069pub type GstIteratorCopyFunction =
1070    Option<unsafe extern "C" fn(*const GstIterator, *mut GstIterator)>;
1071pub type GstIteratorFoldFunction = Option<
1072    unsafe extern "C" fn(*const gobject::GValue, *mut gobject::GValue, gpointer) -> gboolean,
1073>;
1074pub type GstIteratorForeachFunction =
1075    Option<unsafe extern "C" fn(*const gobject::GValue, gpointer)>;
1076pub type GstIteratorFreeFunction = Option<unsafe extern "C" fn(*mut GstIterator)>;
1077pub type GstIteratorItemFunction =
1078    Option<unsafe extern "C" fn(*mut GstIterator, *const gobject::GValue) -> GstIteratorItem>;
1079pub type GstIteratorNextFunction =
1080    Option<unsafe extern "C" fn(*mut GstIterator, *mut gobject::GValue) -> GstIteratorResult>;
1081pub type GstIteratorResyncFunction = Option<unsafe extern "C" fn(*mut GstIterator)>;
1082pub type GstLogFunction = Option<
1083    unsafe extern "C" fn(
1084        *mut GstDebugCategory,
1085        GstDebugLevel,
1086        *const c_char,
1087        *const c_char,
1088        c_int,
1089        *mut gobject::GObject,
1090        *mut GstDebugMessage,
1091        gpointer,
1092    ),
1093>;
1094pub type GstMemoryCopyFunction =
1095    Option<unsafe extern "C" fn(*mut GstMemory, ssize_t, ssize_t) -> *mut GstMemory>;
1096pub type GstMemoryIsSpanFunction =
1097    Option<unsafe extern "C" fn(*mut GstMemory, *mut GstMemory, *mut size_t) -> gboolean>;
1098pub type GstMemoryMapFullFunction =
1099    Option<unsafe extern "C" fn(*mut GstMemory, *mut GstMapInfo, size_t) -> gpointer>;
1100pub type GstMemoryMapFunction =
1101    Option<unsafe extern "C" fn(*mut GstMemory, size_t, GstMapFlags) -> gpointer>;
1102pub type GstMemoryShareFunction =
1103    Option<unsafe extern "C" fn(*mut GstMemory, ssize_t, ssize_t) -> *mut GstMemory>;
1104pub type GstMemoryUnmapFullFunction = Option<unsafe extern "C" fn(*mut GstMemory, *mut GstMapInfo)>;
1105pub type GstMemoryUnmapFunction = Option<unsafe extern "C" fn(*mut GstMemory)>;
1106pub type GstMetaClearFunction = Option<unsafe extern "C" fn(*mut GstBuffer, *mut GstMeta)>;
1107pub type GstMetaDeserializeFunction = Option<
1108    unsafe extern "C" fn(*const GstMetaInfo, *mut GstBuffer, *const u8, size_t, u8) -> *mut GstMeta,
1109>;
1110pub type GstMetaFreeFunction = Option<unsafe extern "C" fn(*mut GstMeta, *mut GstBuffer)>;
1111pub type GstMetaInitFunction =
1112    Option<unsafe extern "C" fn(*mut GstMeta, gpointer, *mut GstBuffer) -> gboolean>;
1113pub type GstMetaSerializeFunction =
1114    Option<unsafe extern "C" fn(*const GstMeta, *mut GstByteArrayInterface, *mut u8) -> gboolean>;
1115pub type GstMetaTransformFunction = Option<
1116    unsafe extern "C" fn(
1117        *mut GstBuffer,
1118        *mut GstMeta,
1119        *mut GstBuffer,
1120        glib::GQuark,
1121        gpointer,
1122    ) -> gboolean,
1123>;
1124pub type GstMiniObjectCopyFunction =
1125    Option<unsafe extern "C" fn(*const GstMiniObject) -> *mut GstMiniObject>;
1126pub type GstMiniObjectDisposeFunction =
1127    Option<unsafe extern "C" fn(*mut GstMiniObject) -> gboolean>;
1128pub type GstMiniObjectFreeFunction = Option<unsafe extern "C" fn(*mut GstMiniObject)>;
1129pub type GstMiniObjectNotify = Option<unsafe extern "C" fn(gpointer, *mut GstMiniObject)>;
1130pub type GstPadActivateFunction =
1131    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject) -> gboolean>;
1132pub type GstPadActivateModeFunction =
1133    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, GstPadMode, gboolean) -> gboolean>;
1134pub type GstPadChainFunction =
1135    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstBuffer) -> GstFlowReturn>;
1136pub type GstPadChainListFunction =
1137    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstBufferList) -> GstFlowReturn>;
1138pub type GstPadEventFullFunction =
1139    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstEvent) -> GstFlowReturn>;
1140pub type GstPadEventFunction =
1141    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstEvent) -> gboolean>;
1142pub type GstPadForwardFunction = Option<unsafe extern "C" fn(*mut GstPad, gpointer) -> gboolean>;
1143pub type GstPadGetRangeFunction = Option<
1144    unsafe extern "C" fn(
1145        *mut GstPad,
1146        *mut GstObject,
1147        u64,
1148        c_uint,
1149        *mut *mut GstBuffer,
1150    ) -> GstFlowReturn,
1151>;
1152pub type GstPadIterIntLinkFunction =
1153    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject) -> *mut GstIterator>;
1154pub type GstPadLinkFunction =
1155    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstPad) -> GstPadLinkReturn>;
1156pub type GstPadProbeCallback =
1157    Option<unsafe extern "C" fn(*mut GstPad, *mut GstPadProbeInfo, gpointer) -> GstPadProbeReturn>;
1158pub type GstPadQueryFunction =
1159    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstQuery) -> gboolean>;
1160pub type GstPadStickyEventsForeachFunction =
1161    Option<unsafe extern "C" fn(*mut GstPad, *mut *mut GstEvent, gpointer) -> gboolean>;
1162pub type GstPadUnlinkFunction = Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject)>;
1163pub type GstPluginFeatureFilter =
1164    Option<unsafe extern "C" fn(*mut GstPluginFeature, gpointer) -> gboolean>;
1165pub type GstPluginFilter = Option<unsafe extern "C" fn(*mut GstPlugin, gpointer) -> gboolean>;
1166pub type GstPluginInitFullFunc = Option<unsafe extern "C" fn(*mut GstPlugin, gpointer) -> gboolean>;
1167pub type GstPluginInitFunc = Option<unsafe extern "C" fn(*mut GstPlugin) -> gboolean>;
1168pub type GstPromiseChangeFunc = Option<unsafe extern "C" fn(*mut GstPromise, gpointer)>;
1169pub type GstStructureFilterMapFunc =
1170    Option<unsafe extern "C" fn(glib::GQuark, *mut gobject::GValue, gpointer) -> gboolean>;
1171pub type GstStructureFilterMapIdStrFunc =
1172    Option<unsafe extern "C" fn(*const GstIdStr, *mut gobject::GValue, gpointer) -> gboolean>;
1173pub type GstStructureForeachFunc =
1174    Option<unsafe extern "C" fn(glib::GQuark, *const gobject::GValue, gpointer) -> gboolean>;
1175pub type GstStructureForeachIdStrFunc =
1176    Option<unsafe extern "C" fn(*const GstIdStr, *const gobject::GValue, gpointer) -> gboolean>;
1177pub type GstStructureMapFunc =
1178    Option<unsafe extern "C" fn(glib::GQuark, *mut gobject::GValue, gpointer) -> gboolean>;
1179pub type GstStructureMapIdStrFunc =
1180    Option<unsafe extern "C" fn(*const GstIdStr, *mut gobject::GValue, gpointer) -> gboolean>;
1181pub type GstTagForeachFunc =
1182    Option<unsafe extern "C" fn(*const GstTagList, *const c_char, gpointer)>;
1183pub type GstTagMergeFunc =
1184    Option<unsafe extern "C" fn(*mut gobject::GValue, *const gobject::GValue)>;
1185pub type GstTaskFunction = Option<unsafe extern "C" fn(gpointer)>;
1186pub type GstTaskPoolFunction = Option<unsafe extern "C" fn(*mut c_void)>;
1187pub type GstTaskThreadFunc =
1188    Option<unsafe extern "C" fn(*mut GstTask, *mut glib::GThread, gpointer)>;
1189pub type GstTypeFindFunction = Option<unsafe extern "C" fn(*mut GstTypeFind, gpointer)>;
1190pub type GstValueCompareFunc =
1191    Option<unsafe extern "C" fn(*const gobject::GValue, *const gobject::GValue) -> c_int>;
1192pub type GstValueDeserializeFunc =
1193    Option<unsafe extern "C" fn(*mut gobject::GValue, *const c_char) -> gboolean>;
1194pub type GstValueDeserializeWithPSpecFunc = Option<
1195    unsafe extern "C" fn(*mut gobject::GValue, *const c_char, *mut gobject::GParamSpec) -> gboolean,
1196>;
1197pub type GstValueSerializeFunc =
1198    Option<unsafe extern "C" fn(*const gobject::GValue) -> *mut c_char>;
1199
1200// Records
1201#[derive(Copy, Clone)]
1202#[repr(C)]
1203pub struct GstAllocationParams {
1204    pub flags: GstMemoryFlags,
1205    pub align: size_t,
1206    pub prefix: size_t,
1207    pub padding: size_t,
1208    pub _gst_reserved: [gpointer; 4],
1209}
1210
1211impl ::std::fmt::Debug for GstAllocationParams {
1212    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1213        f.debug_struct(&format!("GstAllocationParams @ {self:p}"))
1214            .field("flags", &self.flags)
1215            .field("align", &self.align)
1216            .field("prefix", &self.prefix)
1217            .field("padding", &self.padding)
1218            .finish()
1219    }
1220}
1221
1222#[derive(Copy, Clone)]
1223#[repr(C)]
1224pub struct GstAllocatorClass {
1225    pub object_class: GstObjectClass,
1226    pub alloc: Option<
1227        unsafe extern "C" fn(*mut GstAllocator, size_t, *mut GstAllocationParams) -> *mut GstMemory,
1228    >,
1229    pub free: Option<unsafe extern "C" fn(*mut GstAllocator, *mut GstMemory)>,
1230    pub _gst_reserved: [gpointer; 4],
1231}
1232
1233impl ::std::fmt::Debug for GstAllocatorClass {
1234    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1235        f.debug_struct(&format!("GstAllocatorClass @ {self:p}"))
1236            .field("object_class", &self.object_class)
1237            .field("alloc", &self.alloc)
1238            .field("free", &self.free)
1239            .finish()
1240    }
1241}
1242
1243#[repr(C)]
1244#[allow(dead_code)]
1245pub struct _GstAllocatorPrivate {
1246    _data: [u8; 0],
1247    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1248}
1249
1250pub type GstAllocatorPrivate = _GstAllocatorPrivate;
1251
1252#[repr(C)]
1253#[allow(dead_code)]
1254pub struct GstAtomicQueue {
1255    _data: [u8; 0],
1256    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1257}
1258
1259impl ::std::fmt::Debug for GstAtomicQueue {
1260    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1261        f.debug_struct(&format!("GstAtomicQueue @ {self:p}"))
1262            .finish()
1263    }
1264}
1265
1266#[derive(Copy, Clone)]
1267#[repr(C)]
1268pub struct GstBinClass {
1269    pub parent_class: GstElementClass,
1270    pub pool: *mut glib::GThreadPool,
1271    pub element_added: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement)>,
1272    pub element_removed: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement)>,
1273    pub add_element: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement) -> gboolean>,
1274    pub remove_element: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement) -> gboolean>,
1275    pub handle_message: Option<unsafe extern "C" fn(*mut GstBin, *mut GstMessage)>,
1276    pub do_latency: Option<unsafe extern "C" fn(*mut GstBin) -> gboolean>,
1277    pub deep_element_added: Option<unsafe extern "C" fn(*mut GstBin, *mut GstBin, *mut GstElement)>,
1278    pub deep_element_removed:
1279        Option<unsafe extern "C" fn(*mut GstBin, *mut GstBin, *mut GstElement)>,
1280    pub _gst_reserved: [gpointer; 2],
1281}
1282
1283impl ::std::fmt::Debug for GstBinClass {
1284    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1285        f.debug_struct(&format!("GstBinClass @ {self:p}"))
1286            .field("parent_class", &self.parent_class)
1287            .field("element_added", &self.element_added)
1288            .field("element_removed", &self.element_removed)
1289            .field("add_element", &self.add_element)
1290            .field("remove_element", &self.remove_element)
1291            .field("handle_message", &self.handle_message)
1292            .field("do_latency", &self.do_latency)
1293            .field("deep_element_added", &self.deep_element_added)
1294            .field("deep_element_removed", &self.deep_element_removed)
1295            .finish()
1296    }
1297}
1298
1299#[repr(C)]
1300#[allow(dead_code)]
1301pub struct _GstBinPrivate {
1302    _data: [u8; 0],
1303    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1304}
1305
1306pub type GstBinPrivate = _GstBinPrivate;
1307
1308#[derive(Copy, Clone)]
1309#[repr(C)]
1310pub struct GstBuffer {
1311    pub mini_object: GstMiniObject,
1312    pub pool: *mut GstBufferPool,
1313    pub pts: GstClockTime,
1314    pub dts: GstClockTime,
1315    pub duration: GstClockTime,
1316    pub offset: u64,
1317    pub offset_end: u64,
1318}
1319
1320impl ::std::fmt::Debug for GstBuffer {
1321    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1322        f.debug_struct(&format!("GstBuffer @ {self:p}"))
1323            .field("mini_object", &self.mini_object)
1324            .field("pool", &self.pool)
1325            .field("pts", &self.pts)
1326            .field("dts", &self.dts)
1327            .field("duration", &self.duration)
1328            .field("offset", &self.offset)
1329            .field("offset_end", &self.offset_end)
1330            .finish()
1331    }
1332}
1333
1334#[repr(C)]
1335#[allow(dead_code)]
1336pub struct GstBufferList {
1337    _data: [u8; 0],
1338    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1339}
1340
1341impl ::std::fmt::Debug for GstBufferList {
1342    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1343        f.debug_struct(&format!("GstBufferList @ {self:p}"))
1344            .finish()
1345    }
1346}
1347
1348#[derive(Copy, Clone)]
1349#[repr(C)]
1350pub struct GstBufferPoolAcquireParams {
1351    pub format: GstFormat,
1352    pub start: i64,
1353    pub stop: i64,
1354    pub flags: GstBufferPoolAcquireFlags,
1355    pub _gst_reserved: [gpointer; 4],
1356}
1357
1358impl ::std::fmt::Debug for GstBufferPoolAcquireParams {
1359    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1360        f.debug_struct(&format!("GstBufferPoolAcquireParams @ {self:p}"))
1361            .field("format", &self.format)
1362            .field("start", &self.start)
1363            .field("stop", &self.stop)
1364            .field("flags", &self.flags)
1365            .finish()
1366    }
1367}
1368
1369#[derive(Copy, Clone)]
1370#[repr(C)]
1371pub struct GstBufferPoolClass {
1372    pub object_class: GstObjectClass,
1373    pub get_options: Option<unsafe extern "C" fn(*mut GstBufferPool) -> *mut *const c_char>,
1374    pub set_config: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstStructure) -> gboolean>,
1375    pub start: Option<unsafe extern "C" fn(*mut GstBufferPool) -> gboolean>,
1376    pub stop: Option<unsafe extern "C" fn(*mut GstBufferPool) -> gboolean>,
1377    pub acquire_buffer: Option<
1378        unsafe extern "C" fn(
1379            *mut GstBufferPool,
1380            *mut *mut GstBuffer,
1381            *mut GstBufferPoolAcquireParams,
1382        ) -> GstFlowReturn,
1383    >,
1384    pub alloc_buffer: Option<
1385        unsafe extern "C" fn(
1386            *mut GstBufferPool,
1387            *mut *mut GstBuffer,
1388            *mut GstBufferPoolAcquireParams,
1389        ) -> GstFlowReturn,
1390    >,
1391    pub reset_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1392    pub release_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1393    pub free_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1394    pub flush_start: Option<unsafe extern "C" fn(*mut GstBufferPool)>,
1395    pub flush_stop: Option<unsafe extern "C" fn(*mut GstBufferPool)>,
1396    pub _gst_reserved: [gpointer; 2],
1397}
1398
1399impl ::std::fmt::Debug for GstBufferPoolClass {
1400    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1401        f.debug_struct(&format!("GstBufferPoolClass @ {self:p}"))
1402            .field("object_class", &self.object_class)
1403            .field("get_options", &self.get_options)
1404            .field("set_config", &self.set_config)
1405            .field("start", &self.start)
1406            .field("stop", &self.stop)
1407            .field("acquire_buffer", &self.acquire_buffer)
1408            .field("alloc_buffer", &self.alloc_buffer)
1409            .field("reset_buffer", &self.reset_buffer)
1410            .field("release_buffer", &self.release_buffer)
1411            .field("free_buffer", &self.free_buffer)
1412            .field("flush_start", &self.flush_start)
1413            .field("flush_stop", &self.flush_stop)
1414            .finish()
1415    }
1416}
1417
1418#[repr(C)]
1419#[allow(dead_code)]
1420pub struct _GstBufferPoolPrivate {
1421    _data: [u8; 0],
1422    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1423}
1424
1425pub type GstBufferPoolPrivate = _GstBufferPoolPrivate;
1426
1427#[derive(Copy, Clone)]
1428#[repr(C)]
1429pub struct GstBusClass {
1430    pub parent_class: GstObjectClass,
1431    pub message: Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage)>,
1432    pub sync_message: Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage)>,
1433    pub _gst_reserved: [gpointer; 4],
1434}
1435
1436impl ::std::fmt::Debug for GstBusClass {
1437    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1438        f.debug_struct(&format!("GstBusClass @ {self:p}"))
1439            .field("parent_class", &self.parent_class)
1440            .field("message", &self.message)
1441            .field("sync_message", &self.sync_message)
1442            .finish()
1443    }
1444}
1445
1446#[repr(C)]
1447#[allow(dead_code)]
1448pub struct _GstBusPrivate {
1449    _data: [u8; 0],
1450    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1451}
1452
1453pub type GstBusPrivate = _GstBusPrivate;
1454
1455#[derive(Copy, Clone)]
1456#[repr(C)]
1457pub struct GstByteArrayInterface {
1458    pub data: *mut u8,
1459    pub len: size_t,
1460    pub resize: Option<unsafe extern "C" fn(*mut GstByteArrayInterface, size_t) -> gboolean>,
1461    pub _gst_reserved: [gpointer; 4],
1462}
1463
1464impl ::std::fmt::Debug for GstByteArrayInterface {
1465    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1466        f.debug_struct(&format!("GstByteArrayInterface @ {self:p}"))
1467            .field("data", &self.data)
1468            .field("len", &self.len)
1469            .field("resize", &self.resize)
1470            .finish()
1471    }
1472}
1473
1474#[derive(Copy, Clone)]
1475#[repr(C)]
1476pub struct GstCaps {
1477    pub mini_object: GstMiniObject,
1478}
1479
1480impl ::std::fmt::Debug for GstCaps {
1481    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1482        f.debug_struct(&format!("GstCaps @ {self:p}"))
1483            .field("mini_object", &self.mini_object)
1484            .finish()
1485    }
1486}
1487
1488#[repr(C)]
1489#[allow(dead_code)]
1490pub struct GstCapsFeatures {
1491    _data: [u8; 0],
1492    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1493}
1494
1495impl ::std::fmt::Debug for GstCapsFeatures {
1496    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1497        f.debug_struct(&format!("GstCapsFeatures @ {self:p}"))
1498            .finish()
1499    }
1500}
1501
1502#[derive(Copy, Clone)]
1503#[repr(C)]
1504pub struct GstChildProxyInterface {
1505    pub parent: gobject::GTypeInterface,
1506    pub get_child_by_name:
1507        Option<unsafe extern "C" fn(*mut GstChildProxy, *const c_char) -> *mut gobject::GObject>,
1508    pub get_child_by_index:
1509        Option<unsafe extern "C" fn(*mut GstChildProxy, c_uint) -> *mut gobject::GObject>,
1510    pub get_children_count: Option<unsafe extern "C" fn(*mut GstChildProxy) -> c_uint>,
1511    pub child_added:
1512        Option<unsafe extern "C" fn(*mut GstChildProxy, *mut gobject::GObject, *const c_char)>,
1513    pub child_removed:
1514        Option<unsafe extern "C" fn(*mut GstChildProxy, *mut gobject::GObject, *const c_char)>,
1515    pub _gst_reserved: [gpointer; 4],
1516}
1517
1518impl ::std::fmt::Debug for GstChildProxyInterface {
1519    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1520        f.debug_struct(&format!("GstChildProxyInterface @ {self:p}"))
1521            .field("parent", &self.parent)
1522            .field("get_child_by_name", &self.get_child_by_name)
1523            .field("get_child_by_index", &self.get_child_by_index)
1524            .field("get_children_count", &self.get_children_count)
1525            .field("child_added", &self.child_added)
1526            .field("child_removed", &self.child_removed)
1527            .finish()
1528    }
1529}
1530
1531#[derive(Copy, Clone)]
1532#[repr(C)]
1533pub struct GstClockClass {
1534    pub parent_class: GstObjectClass,
1535    pub change_resolution:
1536        Option<unsafe extern "C" fn(*mut GstClock, GstClockTime, GstClockTime) -> GstClockTime>,
1537    pub get_resolution: Option<unsafe extern "C" fn(*mut GstClock) -> GstClockTime>,
1538    pub get_internal_time: Option<unsafe extern "C" fn(*mut GstClock) -> GstClockTime>,
1539    pub wait: Option<
1540        unsafe extern "C" fn(
1541            *mut GstClock,
1542            *mut GstClockEntry,
1543            *mut GstClockTimeDiff,
1544        ) -> GstClockReturn,
1545    >,
1546    pub wait_async:
1547        Option<unsafe extern "C" fn(*mut GstClock, *mut GstClockEntry) -> GstClockReturn>,
1548    pub unschedule: Option<unsafe extern "C" fn(*mut GstClock, *mut GstClockEntry)>,
1549    pub _gst_reserved: [gpointer; 4],
1550}
1551
1552impl ::std::fmt::Debug for GstClockClass {
1553    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1554        f.debug_struct(&format!("GstClockClass @ {self:p}"))
1555            .field("parent_class", &self.parent_class)
1556            .field("change_resolution", &self.change_resolution)
1557            .field("get_resolution", &self.get_resolution)
1558            .field("get_internal_time", &self.get_internal_time)
1559            .field("wait", &self.wait)
1560            .field("wait_async", &self.wait_async)
1561            .field("unschedule", &self.unschedule)
1562            .finish()
1563    }
1564}
1565
1566#[derive(Copy, Clone)]
1567#[repr(C)]
1568pub struct GstClockEntry {
1569    pub refcount: c_int,
1570    pub clock: *mut GstClock,
1571    pub type_: GstClockEntryType,
1572    pub time: GstClockTime,
1573    pub interval: GstClockTime,
1574    pub status: GstClockReturn,
1575    pub func: GstClockCallback,
1576    pub user_data: gpointer,
1577    pub destroy_data: glib::GDestroyNotify,
1578    pub unscheduled: gboolean,
1579    pub woken_up: gboolean,
1580    pub _gst_reserved: [gpointer; 4],
1581}
1582
1583impl ::std::fmt::Debug for GstClockEntry {
1584    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1585        f.debug_struct(&format!("GstClockEntry @ {self:p}"))
1586            .field("refcount", &self.refcount)
1587            .finish()
1588    }
1589}
1590
1591#[repr(C)]
1592#[allow(dead_code)]
1593pub struct _GstClockPrivate {
1594    _data: [u8; 0],
1595    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1596}
1597
1598pub type GstClockPrivate = _GstClockPrivate;
1599
1600#[repr(C)]
1601#[allow(dead_code)]
1602pub struct GstContext {
1603    _data: [u8; 0],
1604    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1605}
1606
1607impl ::std::fmt::Debug for GstContext {
1608    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1609        f.debug_struct(&format!("GstContext @ {self:p}")).finish()
1610    }
1611}
1612
1613#[derive(Copy, Clone)]
1614#[repr(C)]
1615pub struct GstControlBindingClass {
1616    pub parent_class: GstObjectClass,
1617    pub sync_values: Option<
1618        unsafe extern "C" fn(
1619            *mut GstControlBinding,
1620            *mut GstObject,
1621            GstClockTime,
1622            GstClockTime,
1623        ) -> gboolean,
1624    >,
1625    pub get_value:
1626        Option<unsafe extern "C" fn(*mut GstControlBinding, GstClockTime) -> *mut gobject::GValue>,
1627    pub get_value_array: Option<
1628        unsafe extern "C" fn(
1629            *mut GstControlBinding,
1630            GstClockTime,
1631            GstClockTime,
1632            c_uint,
1633            gpointer,
1634        ) -> gboolean,
1635    >,
1636    pub get_g_value_array: Option<
1637        unsafe extern "C" fn(
1638            *mut GstControlBinding,
1639            GstClockTime,
1640            GstClockTime,
1641            c_uint,
1642            *mut gobject::GValue,
1643        ) -> gboolean,
1644    >,
1645    pub _gst_reserved: [gpointer; 4],
1646}
1647
1648impl ::std::fmt::Debug for GstControlBindingClass {
1649    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1650        f.debug_struct(&format!("GstControlBindingClass @ {self:p}"))
1651            .field("parent_class", &self.parent_class)
1652            .field("sync_values", &self.sync_values)
1653            .field("get_value", &self.get_value)
1654            .field("get_value_array", &self.get_value_array)
1655            .field("get_g_value_array", &self.get_g_value_array)
1656            .finish()
1657    }
1658}
1659
1660#[repr(C)]
1661#[allow(dead_code)]
1662pub struct _GstControlBindingPrivate {
1663    _data: [u8; 0],
1664    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1665}
1666
1667pub type GstControlBindingPrivate = _GstControlBindingPrivate;
1668
1669#[derive(Copy, Clone)]
1670#[repr(C)]
1671pub struct GstControlBinding_ABI_abi {
1672    pub priv_: *mut GstControlBindingPrivate,
1673}
1674
1675impl ::std::fmt::Debug for GstControlBinding_ABI_abi {
1676    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1677        f.debug_struct(&format!("GstControlBinding_ABI_abi @ {self:p}"))
1678            .finish()
1679    }
1680}
1681
1682#[derive(Copy, Clone)]
1683#[repr(C)]
1684pub struct GstControlSourceClass {
1685    pub parent_class: GstObjectClass,
1686    pub _gst_reserved: [gpointer; 4],
1687}
1688
1689impl ::std::fmt::Debug for GstControlSourceClass {
1690    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1691        f.debug_struct(&format!("GstControlSourceClass @ {self:p}"))
1692            .field("parent_class", &self.parent_class)
1693            .finish()
1694    }
1695}
1696
1697#[derive(Copy, Clone)]
1698#[repr(C)]
1699pub struct GstCustomMeta {
1700    pub meta: GstMeta,
1701    pub structure: *mut GstStructure,
1702}
1703
1704impl ::std::fmt::Debug for GstCustomMeta {
1705    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1706        f.debug_struct(&format!("GstCustomMeta @ {self:p}"))
1707            .field("meta", &self.meta)
1708            .field("structure", &self.structure)
1709            .finish()
1710    }
1711}
1712
1713#[repr(C)]
1714#[allow(dead_code)]
1715pub struct GstDateTime {
1716    _data: [u8; 0],
1717    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1718}
1719
1720impl ::std::fmt::Debug for GstDateTime {
1721    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1722        f.debug_struct(&format!("GstDateTime @ {self:p}")).finish()
1723    }
1724}
1725
1726#[derive(Copy, Clone)]
1727#[repr(C)]
1728pub struct GstDebugCategory {
1729    pub threshold: c_int,
1730    pub color: c_uint,
1731    pub name: *const c_char,
1732    pub description: *const c_char,
1733}
1734
1735impl ::std::fmt::Debug for GstDebugCategory {
1736    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1737        f.debug_struct(&format!("GstDebugCategory @ {self:p}"))
1738            .finish()
1739    }
1740}
1741
1742#[repr(C)]
1743#[allow(dead_code)]
1744pub struct _GstDebugMessage {
1745    _data: [u8; 0],
1746    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1747}
1748
1749pub type GstDebugMessage = _GstDebugMessage;
1750
1751#[derive(Copy, Clone)]
1752#[repr(C)]
1753pub struct GstDeviceClass {
1754    pub parent_class: GstObjectClass,
1755    pub create_element:
1756        Option<unsafe extern "C" fn(*mut GstDevice, *const c_char) -> *mut GstElement>,
1757    pub reconfigure_element:
1758        Option<unsafe extern "C" fn(*mut GstDevice, *mut GstElement) -> gboolean>,
1759    pub _gst_reserved: [gpointer; 4],
1760}
1761
1762impl ::std::fmt::Debug for GstDeviceClass {
1763    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1764        f.debug_struct(&format!("GstDeviceClass @ {self:p}"))
1765            .field("parent_class", &self.parent_class)
1766            .field("create_element", &self.create_element)
1767            .field("reconfigure_element", &self.reconfigure_element)
1768            .finish()
1769    }
1770}
1771
1772#[derive(Copy, Clone)]
1773#[repr(C)]
1774pub struct GstDeviceMonitorClass {
1775    pub parent_class: GstObjectClass,
1776    pub _gst_reserved: [gpointer; 4],
1777}
1778
1779impl ::std::fmt::Debug for GstDeviceMonitorClass {
1780    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1781        f.debug_struct(&format!("GstDeviceMonitorClass @ {self:p}"))
1782            .field("parent_class", &self.parent_class)
1783            .finish()
1784    }
1785}
1786
1787#[repr(C)]
1788#[allow(dead_code)]
1789pub struct _GstDeviceMonitorPrivate {
1790    _data: [u8; 0],
1791    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1792}
1793
1794pub type GstDeviceMonitorPrivate = _GstDeviceMonitorPrivate;
1795
1796#[repr(C)]
1797#[allow(dead_code)]
1798pub struct _GstDevicePrivate {
1799    _data: [u8; 0],
1800    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1801}
1802
1803pub type GstDevicePrivate = _GstDevicePrivate;
1804
1805#[derive(Copy, Clone)]
1806#[repr(C)]
1807pub struct GstDeviceProviderClass {
1808    pub parent_class: GstObjectClass,
1809    pub factory: *mut GstDeviceProviderFactory,
1810    pub probe: Option<unsafe extern "C" fn(*mut GstDeviceProvider) -> *mut glib::GList>,
1811    pub start: Option<unsafe extern "C" fn(*mut GstDeviceProvider) -> gboolean>,
1812    pub stop: Option<unsafe extern "C" fn(*mut GstDeviceProvider)>,
1813    pub metadata: gpointer,
1814    pub _gst_reserved: [gpointer; 4],
1815}
1816
1817impl ::std::fmt::Debug for GstDeviceProviderClass {
1818    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1819        f.debug_struct(&format!("GstDeviceProviderClass @ {self:p}"))
1820            .field("parent_class", &self.parent_class)
1821            .field("factory", &self.factory)
1822            .field("probe", &self.probe)
1823            .field("start", &self.start)
1824            .field("stop", &self.stop)
1825            .finish()
1826    }
1827}
1828
1829#[repr(C)]
1830#[allow(dead_code)]
1831pub struct _GstDeviceProviderFactoryClass {
1832    _data: [u8; 0],
1833    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1834}
1835
1836pub type GstDeviceProviderFactoryClass = _GstDeviceProviderFactoryClass;
1837
1838#[repr(C)]
1839#[allow(dead_code)]
1840pub struct _GstDeviceProviderPrivate {
1841    _data: [u8; 0],
1842    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1843}
1844
1845pub type GstDeviceProviderPrivate = _GstDeviceProviderPrivate;
1846
1847#[repr(C)]
1848#[allow(dead_code)]
1849pub struct _GstDynamicTypeFactoryClass {
1850    _data: [u8; 0],
1851    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1852}
1853
1854pub type GstDynamicTypeFactoryClass = _GstDynamicTypeFactoryClass;
1855
1856#[derive(Copy, Clone)]
1857#[repr(C)]
1858pub struct GstElementClass {
1859    pub parent_class: GstObjectClass,
1860    pub metadata: gpointer,
1861    pub elementfactory: *mut GstElementFactory,
1862    pub padtemplates: *mut glib::GList,
1863    pub numpadtemplates: c_int,
1864    pub pad_templ_cookie: u32,
1865    pub pad_added: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1866    pub pad_removed: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1867    pub no_more_pads: Option<unsafe extern "C" fn(*mut GstElement)>,
1868    pub request_new_pad: Option<
1869        unsafe extern "C" fn(
1870            *mut GstElement,
1871            *mut GstPadTemplate,
1872            *const c_char,
1873            *const GstCaps,
1874        ) -> *mut GstPad,
1875    >,
1876    pub release_pad: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1877    pub get_state: Option<
1878        unsafe extern "C" fn(
1879            *mut GstElement,
1880            *mut GstState,
1881            *mut GstState,
1882            GstClockTime,
1883        ) -> GstStateChangeReturn,
1884    >,
1885    pub set_state: Option<unsafe extern "C" fn(*mut GstElement, GstState) -> GstStateChangeReturn>,
1886    pub change_state:
1887        Option<unsafe extern "C" fn(*mut GstElement, GstStateChange) -> GstStateChangeReturn>,
1888    pub state_changed: Option<unsafe extern "C" fn(*mut GstElement, GstState, GstState, GstState)>,
1889    pub set_bus: Option<unsafe extern "C" fn(*mut GstElement, *mut GstBus)>,
1890    pub provide_clock: Option<unsafe extern "C" fn(*mut GstElement) -> *mut GstClock>,
1891    pub set_clock: Option<unsafe extern "C" fn(*mut GstElement, *mut GstClock) -> gboolean>,
1892    pub send_event: Option<unsafe extern "C" fn(*mut GstElement, *mut GstEvent) -> gboolean>,
1893    pub query: Option<unsafe extern "C" fn(*mut GstElement, *mut GstQuery) -> gboolean>,
1894    pub post_message: Option<unsafe extern "C" fn(*mut GstElement, *mut GstMessage) -> gboolean>,
1895    pub set_context: Option<unsafe extern "C" fn(*mut GstElement, *mut GstContext)>,
1896    pub _gst_reserved: [gpointer; 18],
1897}
1898
1899impl ::std::fmt::Debug for GstElementClass {
1900    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1901        f.debug_struct(&format!("GstElementClass @ {self:p}"))
1902            .field("parent_class", &self.parent_class)
1903            .field("metadata", &self.metadata)
1904            .field("elementfactory", &self.elementfactory)
1905            .field("padtemplates", &self.padtemplates)
1906            .field("numpadtemplates", &self.numpadtemplates)
1907            .field("pad_templ_cookie", &self.pad_templ_cookie)
1908            .field("pad_added", &self.pad_added)
1909            .field("pad_removed", &self.pad_removed)
1910            .field("no_more_pads", &self.no_more_pads)
1911            .field("request_new_pad", &self.request_new_pad)
1912            .field("release_pad", &self.release_pad)
1913            .field("get_state", &self.get_state)
1914            .field("set_state", &self.set_state)
1915            .field("change_state", &self.change_state)
1916            .field("state_changed", &self.state_changed)
1917            .field("set_bus", &self.set_bus)
1918            .field("provide_clock", &self.provide_clock)
1919            .field("set_clock", &self.set_clock)
1920            .field("send_event", &self.send_event)
1921            .field("query", &self.query)
1922            .field("post_message", &self.post_message)
1923            .field("set_context", &self.set_context)
1924            .finish()
1925    }
1926}
1927
1928#[repr(C)]
1929#[allow(dead_code)]
1930pub struct _GstElementFactoryClass {
1931    _data: [u8; 0],
1932    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1933}
1934
1935pub type GstElementFactoryClass = _GstElementFactoryClass;
1936
1937#[derive(Copy, Clone)]
1938#[repr(C)]
1939pub struct GstEvent {
1940    pub mini_object: GstMiniObject,
1941    pub type_: GstEventType,
1942    pub timestamp: u64,
1943    pub seqnum: u32,
1944}
1945
1946impl ::std::fmt::Debug for GstEvent {
1947    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1948        f.debug_struct(&format!("GstEvent @ {self:p}"))
1949            .field("mini_object", &self.mini_object)
1950            .field("type_", &self.type_)
1951            .field("timestamp", &self.timestamp)
1952            .field("seqnum", &self.seqnum)
1953            .finish()
1954    }
1955}
1956
1957#[derive(Copy, Clone)]
1958#[repr(C)]
1959pub struct GstFormatDefinition {
1960    pub value: GstFormat,
1961    pub nick: *const c_char,
1962    pub description: *const c_char,
1963    pub quark: glib::GQuark,
1964}
1965
1966impl ::std::fmt::Debug for GstFormatDefinition {
1967    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1968        f.debug_struct(&format!("GstFormatDefinition @ {self:p}"))
1969            .field("value", &self.value)
1970            .field("nick", &self.nick)
1971            .field("description", &self.description)
1972            .field("quark", &self.quark)
1973            .finish()
1974    }
1975}
1976
1977#[derive(Copy, Clone)]
1978#[repr(C)]
1979pub struct GstGhostPadClass {
1980    pub parent_class: GstProxyPadClass,
1981    pub _gst_reserved: [gpointer; 4],
1982}
1983
1984impl ::std::fmt::Debug for GstGhostPadClass {
1985    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1986        f.debug_struct(&format!("GstGhostPadClass @ {self:p}"))
1987            .field("parent_class", &self.parent_class)
1988            .finish()
1989    }
1990}
1991
1992#[repr(C)]
1993#[allow(dead_code)]
1994pub struct _GstGhostPadPrivate {
1995    _data: [u8; 0],
1996    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1997}
1998
1999pub type GstGhostPadPrivate = _GstGhostPadPrivate;
2000
2001#[derive(Copy, Clone)]
2002#[repr(C)]
2003pub struct GstIterator {
2004    pub copy: GstIteratorCopyFunction,
2005    pub next: GstIteratorNextFunction,
2006    pub item: GstIteratorItemFunction,
2007    pub resync: GstIteratorResyncFunction,
2008    pub free: GstIteratorFreeFunction,
2009    pub pushed: *mut GstIterator,
2010    pub type_: GType,
2011    pub lock: *mut glib::GMutex,
2012    pub cookie: u32,
2013    pub master_cookie: *mut u32,
2014    pub size: c_uint,
2015    pub _gst_reserved: [gpointer; 4],
2016}
2017
2018impl ::std::fmt::Debug for GstIterator {
2019    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2020        f.debug_struct(&format!("GstIterator @ {self:p}"))
2021            .field("copy", &self.copy)
2022            .field("next", &self.next)
2023            .field("item", &self.item)
2024            .field("resync", &self.resync)
2025            .field("free", &self.free)
2026            .field("pushed", &self.pushed)
2027            .field("type_", &self.type_)
2028            .field("lock", &self.lock)
2029            .field("cookie", &self.cookie)
2030            .field("master_cookie", &self.master_cookie)
2031            .field("size", &self.size)
2032            .finish()
2033    }
2034}
2035
2036#[derive(Copy, Clone)]
2037#[repr(C)]
2038pub struct GstMapInfo {
2039    pub memory: *mut GstMemory,
2040    pub flags: GstMapFlags,
2041    pub data: *mut u8,
2042    pub size: size_t,
2043    pub maxsize: size_t,
2044    pub user_data: [gpointer; 4],
2045    pub _gst_reserved: [gpointer; 4],
2046}
2047
2048impl ::std::fmt::Debug for GstMapInfo {
2049    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2050        f.debug_struct(&format!("GstMapInfo @ {self:p}"))
2051            .field("memory", &self.memory)
2052            .field("flags", &self.flags)
2053            .field("data", &self.data)
2054            .field("size", &self.size)
2055            .field("maxsize", &self.maxsize)
2056            .field("user_data", &self.user_data)
2057            .finish()
2058    }
2059}
2060
2061#[derive(Copy, Clone)]
2062#[repr(C)]
2063pub struct GstMemory {
2064    pub mini_object: GstMiniObject,
2065    pub allocator: *mut GstAllocator,
2066    pub parent: *mut GstMemory,
2067    pub maxsize: size_t,
2068    pub align: size_t,
2069    pub offset: size_t,
2070    pub size: size_t,
2071}
2072
2073impl ::std::fmt::Debug for GstMemory {
2074    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2075        f.debug_struct(&format!("GstMemory @ {self:p}"))
2076            .field("mini_object", &self.mini_object)
2077            .field("allocator", &self.allocator)
2078            .field("parent", &self.parent)
2079            .field("maxsize", &self.maxsize)
2080            .field("align", &self.align)
2081            .field("offset", &self.offset)
2082            .field("size", &self.size)
2083            .finish()
2084    }
2085}
2086
2087#[derive(Copy, Clone)]
2088#[repr(C)]
2089pub struct GstMessage {
2090    pub mini_object: GstMiniObject,
2091    pub type_: GstMessageType,
2092    pub timestamp: u64,
2093    pub src: *mut GstObject,
2094    pub seqnum: u32,
2095    pub lock: glib::GMutex,
2096    pub cond: glib::GCond,
2097}
2098
2099impl ::std::fmt::Debug for GstMessage {
2100    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2101        f.debug_struct(&format!("GstMessage @ {self:p}"))
2102            .field("mini_object", &self.mini_object)
2103            .field("type_", &self.type_)
2104            .field("timestamp", &self.timestamp)
2105            .field("src", &self.src)
2106            .field("seqnum", &self.seqnum)
2107            .finish()
2108    }
2109}
2110
2111#[derive(Copy, Clone)]
2112#[repr(C)]
2113pub struct GstMeta {
2114    pub flags: GstMetaFlags,
2115    pub info: *const GstMetaInfo,
2116}
2117
2118impl ::std::fmt::Debug for GstMeta {
2119    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2120        f.debug_struct(&format!("GstMeta @ {self:p}"))
2121            .field("flags", &self.flags)
2122            .field("info", &self.info)
2123            .finish()
2124    }
2125}
2126
2127#[derive(Copy, Clone)]
2128#[repr(C)]
2129pub struct GstMetaInfo {
2130    pub api: GType,
2131    pub type_: GType,
2132    pub size: size_t,
2133    pub init_func: GstMetaInitFunction,
2134    pub free_func: GstMetaFreeFunction,
2135    pub transform_func: GstMetaTransformFunction,
2136    pub serialize_func: GstMetaSerializeFunction,
2137    pub deserialize_func: GstMetaDeserializeFunction,
2138    pub clear_func: GstMetaClearFunction,
2139}
2140
2141impl ::std::fmt::Debug for GstMetaInfo {
2142    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2143        f.debug_struct(&format!("GstMetaInfo @ {self:p}"))
2144            .field("api", &self.api)
2145            .field("type_", &self.type_)
2146            .field("size", &self.size)
2147            .field("init_func", &self.init_func)
2148            .field("free_func", &self.free_func)
2149            .field("transform_func", &self.transform_func)
2150            .field("serialize_func", &self.serialize_func)
2151            .field("deserialize_func", &self.deserialize_func)
2152            .field("clear_func", &self.clear_func)
2153            .finish()
2154    }
2155}
2156
2157#[derive(Copy, Clone)]
2158#[repr(C)]
2159pub struct GstMetaTransformCopy {
2160    pub region: gboolean,
2161    pub offset: size_t,
2162    pub size: size_t,
2163}
2164
2165impl ::std::fmt::Debug for GstMetaTransformCopy {
2166    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2167        f.debug_struct(&format!("GstMetaTransformCopy @ {self:p}"))
2168            .field("region", &self.region)
2169            .field("offset", &self.offset)
2170            .field("size", &self.size)
2171            .finish()
2172    }
2173}
2174
2175#[derive(Copy, Clone)]
2176#[repr(C)]
2177pub struct GstMiniObject {
2178    pub type_: GType,
2179    pub refcount: c_int,
2180    pub lockstate: c_int,
2181    pub flags: c_uint,
2182    pub copy: GstMiniObjectCopyFunction,
2183    pub dispose: GstMiniObjectDisposeFunction,
2184    pub free: GstMiniObjectFreeFunction,
2185    pub priv_uint: c_uint,
2186    pub priv_pointer: gpointer,
2187}
2188
2189impl ::std::fmt::Debug for GstMiniObject {
2190    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2191        f.debug_struct(&format!("GstMiniObject @ {self:p}"))
2192            .field("type_", &self.type_)
2193            .field("refcount", &self.refcount)
2194            .field("lockstate", &self.lockstate)
2195            .field("flags", &self.flags)
2196            .field("copy", &self.copy)
2197            .field("dispose", &self.dispose)
2198            .field("free", &self.free)
2199            .finish()
2200    }
2201}
2202
2203#[derive(Copy, Clone)]
2204#[repr(C)]
2205pub struct GstObjectClass {
2206    pub parent_class: gobject::GInitiallyUnownedClass,
2207    pub path_string_separator: *const c_char,
2208    pub deep_notify:
2209        Option<unsafe extern "C" fn(*mut GstObject, *mut GstObject, *mut gobject::GParamSpec)>,
2210    pub _gst_reserved: [gpointer; 4],
2211}
2212
2213impl ::std::fmt::Debug for GstObjectClass {
2214    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2215        f.debug_struct(&format!("GstObjectClass @ {self:p}"))
2216            .field("parent_class", &self.parent_class)
2217            .field("path_string_separator", &self.path_string_separator)
2218            .field("deep_notify", &self.deep_notify)
2219            .finish()
2220    }
2221}
2222
2223#[derive(Copy, Clone)]
2224#[repr(C)]
2225pub struct GstPadClass {
2226    pub parent_class: GstObjectClass,
2227    pub linked: Option<unsafe extern "C" fn(*mut GstPad, *mut GstPad)>,
2228    pub unlinked: Option<unsafe extern "C" fn(*mut GstPad, *mut GstPad)>,
2229    pub _gst_reserved: [gpointer; 4],
2230}
2231
2232impl ::std::fmt::Debug for GstPadClass {
2233    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2234        f.debug_struct(&format!("GstPadClass @ {self:p}"))
2235            .field("parent_class", &self.parent_class)
2236            .field("linked", &self.linked)
2237            .field("unlinked", &self.unlinked)
2238            .finish()
2239    }
2240}
2241
2242#[repr(C)]
2243#[allow(dead_code)]
2244pub struct _GstPadPrivate {
2245    _data: [u8; 0],
2246    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2247}
2248
2249pub type GstPadPrivate = _GstPadPrivate;
2250
2251#[derive(Copy, Clone)]
2252#[repr(C)]
2253pub struct GstPadProbeInfo {
2254    pub type_: GstPadProbeType,
2255    pub id: c_ulong,
2256    pub data: gpointer,
2257    pub offset: u64,
2258    pub size: c_uint,
2259    pub ABI: GstPadProbeInfo_ABI,
2260}
2261
2262impl ::std::fmt::Debug for GstPadProbeInfo {
2263    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2264        f.debug_struct(&format!("GstPadProbeInfo @ {self:p}"))
2265            .field("type_", &self.type_)
2266            .field("id", &self.id)
2267            .field("data", &self.data)
2268            .field("offset", &self.offset)
2269            .field("size", &self.size)
2270            .field("ABI", &self.ABI)
2271            .finish()
2272    }
2273}
2274
2275#[derive(Copy, Clone)]
2276#[repr(C)]
2277pub struct GstPadProbeInfo_ABI_abi {
2278    pub flow_ret: GstFlowReturn,
2279}
2280
2281impl ::std::fmt::Debug for GstPadProbeInfo_ABI_abi {
2282    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2283        f.debug_struct(&format!("GstPadProbeInfo_ABI_abi @ {self:p}"))
2284            .field("flow_ret", &self.flow_ret)
2285            .finish()
2286    }
2287}
2288
2289#[derive(Copy, Clone)]
2290#[repr(C)]
2291pub struct GstPadTemplateClass {
2292    pub parent_class: GstObjectClass,
2293    pub pad_created: Option<unsafe extern "C" fn(*mut GstPadTemplate, *mut GstPad)>,
2294    pub _gst_reserved: [gpointer; 4],
2295}
2296
2297impl ::std::fmt::Debug for GstPadTemplateClass {
2298    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2299        f.debug_struct(&format!("GstPadTemplateClass @ {self:p}"))
2300            .field("parent_class", &self.parent_class)
2301            .field("pad_created", &self.pad_created)
2302            .finish()
2303    }
2304}
2305
2306#[derive(Copy, Clone)]
2307#[repr(C)]
2308pub struct GstPadTemplate_ABI_abi {
2309    pub gtype: GType,
2310    pub documentation_caps: *mut GstCaps,
2311}
2312
2313impl ::std::fmt::Debug for GstPadTemplate_ABI_abi {
2314    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2315        f.debug_struct(&format!("GstPadTemplate_ABI_abi @ {self:p}"))
2316            .field("gtype", &self.gtype)
2317            .field("documentation_caps", &self.documentation_caps)
2318            .finish()
2319    }
2320}
2321
2322#[derive(Copy, Clone)]
2323#[repr(C)]
2324pub struct GstPad_ABI_abi {
2325    pub last_flowret: GstFlowReturn,
2326    pub eventfullfunc: GstPadEventFullFunction,
2327}
2328
2329impl ::std::fmt::Debug for GstPad_ABI_abi {
2330    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2331        f.debug_struct(&format!("GstPad_ABI_abi @ {self:p}"))
2332            .field("last_flowret", &self.last_flowret)
2333            .field("eventfullfunc", &self.eventfullfunc)
2334            .finish()
2335    }
2336}
2337
2338#[derive(Copy, Clone)]
2339#[repr(C)]
2340pub struct GstParamSpecArray {
2341    pub parent_instance: gobject::GParamSpec,
2342    pub element_spec: *mut gobject::GParamSpec,
2343}
2344
2345impl ::std::fmt::Debug for GstParamSpecArray {
2346    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2347        f.debug_struct(&format!("GstParamSpecArray @ {self:p}"))
2348            .field("parent_instance", &self.parent_instance)
2349            .field("element_spec", &self.element_spec)
2350            .finish()
2351    }
2352}
2353
2354#[derive(Copy, Clone)]
2355#[repr(C)]
2356pub struct GstParamSpecFraction {
2357    pub parent_instance: gobject::GParamSpec,
2358    pub min_num: c_int,
2359    pub min_den: c_int,
2360    pub max_num: c_int,
2361    pub max_den: c_int,
2362    pub def_num: c_int,
2363    pub def_den: c_int,
2364}
2365
2366impl ::std::fmt::Debug for GstParamSpecFraction {
2367    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2368        f.debug_struct(&format!("GstParamSpecFraction @ {self:p}"))
2369            .field("parent_instance", &self.parent_instance)
2370            .field("min_num", &self.min_num)
2371            .field("min_den", &self.min_den)
2372            .field("max_num", &self.max_num)
2373            .field("max_den", &self.max_den)
2374            .field("def_num", &self.def_num)
2375            .field("def_den", &self.def_den)
2376            .finish()
2377    }
2378}
2379
2380#[derive(Copy, Clone)]
2381#[repr(C)]
2382pub struct GstParentBufferMeta {
2383    pub parent: GstMeta,
2384    pub buffer: *mut GstBuffer,
2385}
2386
2387impl ::std::fmt::Debug for GstParentBufferMeta {
2388    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2389        f.debug_struct(&format!("GstParentBufferMeta @ {self:p}"))
2390            .field("parent", &self.parent)
2391            .field("buffer", &self.buffer)
2392            .finish()
2393    }
2394}
2395
2396#[repr(C)]
2397#[allow(dead_code)]
2398pub struct GstParseContext {
2399    _data: [u8; 0],
2400    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2401}
2402
2403impl ::std::fmt::Debug for GstParseContext {
2404    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2405        f.debug_struct(&format!("GstParseContext @ {self:p}"))
2406            .finish()
2407    }
2408}
2409
2410#[derive(Copy, Clone)]
2411#[repr(C)]
2412pub struct GstPipelineClass {
2413    pub parent_class: GstBinClass,
2414    pub _gst_reserved: [gpointer; 4],
2415}
2416
2417impl ::std::fmt::Debug for GstPipelineClass {
2418    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2419        f.debug_struct(&format!("GstPipelineClass @ {self:p}"))
2420            .field("parent_class", &self.parent_class)
2421            .finish()
2422    }
2423}
2424
2425#[repr(C)]
2426#[allow(dead_code)]
2427pub struct _GstPipelinePrivate {
2428    _data: [u8; 0],
2429    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2430}
2431
2432pub type GstPipelinePrivate = _GstPipelinePrivate;
2433
2434#[repr(C)]
2435#[allow(dead_code)]
2436pub struct _GstPluginClass {
2437    _data: [u8; 0],
2438    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2439}
2440
2441pub type GstPluginClass = _GstPluginClass;
2442
2443#[derive(Copy, Clone)]
2444#[repr(C)]
2445pub struct GstPluginDesc {
2446    pub major_version: c_int,
2447    pub minor_version: c_int,
2448    pub name: *const c_char,
2449    pub description: *const c_char,
2450    pub plugin_init: GstPluginInitFunc,
2451    pub version: *const c_char,
2452    pub license: *const c_char,
2453    pub source: *const c_char,
2454    pub package: *const c_char,
2455    pub origin: *const c_char,
2456    pub release_datetime: *const c_char,
2457    pub _gst_reserved: [gpointer; 4],
2458}
2459
2460impl ::std::fmt::Debug for GstPluginDesc {
2461    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2462        f.debug_struct(&format!("GstPluginDesc @ {self:p}"))
2463            .field("major_version", &self.major_version)
2464            .field("minor_version", &self.minor_version)
2465            .field("name", &self.name)
2466            .field("description", &self.description)
2467            .field("plugin_init", &self.plugin_init)
2468            .field("version", &self.version)
2469            .field("license", &self.license)
2470            .field("source", &self.source)
2471            .field("package", &self.package)
2472            .field("origin", &self.origin)
2473            .field("release_datetime", &self.release_datetime)
2474            .finish()
2475    }
2476}
2477
2478#[repr(C)]
2479#[allow(dead_code)]
2480pub struct _GstPluginFeatureClass {
2481    _data: [u8; 0],
2482    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2483}
2484
2485pub type GstPluginFeatureClass = _GstPluginFeatureClass;
2486
2487#[repr(C)]
2488#[allow(dead_code)]
2489pub struct _GstPoll {
2490    _data: [u8; 0],
2491    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2492}
2493
2494pub type GstPoll = _GstPoll;
2495
2496#[derive(Copy, Clone)]
2497#[repr(C)]
2498pub struct GstPollFD {
2499    pub fd: c_int,
2500    pub idx: c_int,
2501}
2502
2503impl ::std::fmt::Debug for GstPollFD {
2504    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2505        f.debug_struct(&format!("GstPollFD @ {self:p}"))
2506            .field("fd", &self.fd)
2507            .finish()
2508    }
2509}
2510
2511#[derive(Copy, Clone)]
2512#[repr(C)]
2513pub struct GstPresetInterface {
2514    pub parent: gobject::GTypeInterface,
2515    pub get_preset_names: Option<unsafe extern "C" fn(*mut GstPreset) -> *mut *mut c_char>,
2516    pub get_property_names: Option<unsafe extern "C" fn(*mut GstPreset) -> *mut *mut c_char>,
2517    pub load_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2518    pub save_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2519    pub rename_preset:
2520        Option<unsafe extern "C" fn(*mut GstPreset, *const c_char, *const c_char) -> gboolean>,
2521    pub delete_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2522    pub set_meta: Option<
2523        unsafe extern "C" fn(
2524            *mut GstPreset,
2525            *const c_char,
2526            *const c_char,
2527            *mut *mut c_char,
2528        ) -> gboolean,
2529    >,
2530    pub get_meta: Option<
2531        unsafe extern "C" fn(
2532            *mut GstPreset,
2533            *const c_char,
2534            *const c_char,
2535            *mut *mut c_char,
2536        ) -> gboolean,
2537    >,
2538    pub _gst_reserved: [gpointer; 4],
2539}
2540
2541impl ::std::fmt::Debug for GstPresetInterface {
2542    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2543        f.debug_struct(&format!("GstPresetInterface @ {self:p}"))
2544            .field("parent", &self.parent)
2545            .field("get_preset_names", &self.get_preset_names)
2546            .field("get_property_names", &self.get_property_names)
2547            .field("load_preset", &self.load_preset)
2548            .field("save_preset", &self.save_preset)
2549            .field("rename_preset", &self.rename_preset)
2550            .field("delete_preset", &self.delete_preset)
2551            .field("set_meta", &self.set_meta)
2552            .field("get_meta", &self.get_meta)
2553            .finish()
2554    }
2555}
2556
2557#[derive(Copy, Clone)]
2558#[repr(C)]
2559pub struct GstPromise {
2560    pub parent: GstMiniObject,
2561}
2562
2563impl ::std::fmt::Debug for GstPromise {
2564    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2565        f.debug_struct(&format!("GstPromise @ {self:p}"))
2566            .field("parent", &self.parent)
2567            .finish()
2568    }
2569}
2570
2571#[derive(Copy, Clone)]
2572#[repr(C)]
2573pub struct GstProtectionMeta {
2574    pub meta: GstMeta,
2575    pub info: *mut GstStructure,
2576}
2577
2578impl ::std::fmt::Debug for GstProtectionMeta {
2579    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2580        f.debug_struct(&format!("GstProtectionMeta @ {self:p}"))
2581            .field("meta", &self.meta)
2582            .field("info", &self.info)
2583            .finish()
2584    }
2585}
2586
2587#[derive(Copy, Clone)]
2588#[repr(C)]
2589pub struct GstProxyPadClass {
2590    pub parent_class: GstPadClass,
2591    pub _gst_reserved: [gpointer; 1],
2592}
2593
2594impl ::std::fmt::Debug for GstProxyPadClass {
2595    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2596        f.debug_struct(&format!("GstProxyPadClass @ {self:p}"))
2597            .field("parent_class", &self.parent_class)
2598            .finish()
2599    }
2600}
2601
2602#[repr(C)]
2603#[allow(dead_code)]
2604pub struct _GstProxyPadPrivate {
2605    _data: [u8; 0],
2606    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2607}
2608
2609pub type GstProxyPadPrivate = _GstProxyPadPrivate;
2610
2611#[derive(Copy, Clone)]
2612#[repr(C)]
2613pub struct GstQuery {
2614    pub mini_object: GstMiniObject,
2615    pub type_: GstQueryType,
2616}
2617
2618impl ::std::fmt::Debug for GstQuery {
2619    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2620        f.debug_struct(&format!("GstQuery @ {self:p}"))
2621            .field("mini_object", &self.mini_object)
2622            .field("type_", &self.type_)
2623            .finish()
2624    }
2625}
2626
2627#[derive(Copy, Clone)]
2628#[repr(C)]
2629pub struct GstReferenceTimestampMeta {
2630    pub parent: GstMeta,
2631    pub reference: *mut GstCaps,
2632    pub timestamp: GstClockTime,
2633    pub duration: GstClockTime,
2634}
2635
2636impl ::std::fmt::Debug for GstReferenceTimestampMeta {
2637    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2638        f.debug_struct(&format!("GstReferenceTimestampMeta @ {self:p}"))
2639            .field("parent", &self.parent)
2640            .field("reference", &self.reference)
2641            .field("timestamp", &self.timestamp)
2642            .field("duration", &self.duration)
2643            .finish()
2644    }
2645}
2646
2647#[derive(Copy, Clone)]
2648#[repr(C)]
2649pub struct GstRegistryClass {
2650    pub parent_class: GstObjectClass,
2651}
2652
2653impl ::std::fmt::Debug for GstRegistryClass {
2654    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2655        f.debug_struct(&format!("GstRegistryClass @ {self:p}"))
2656            .field("parent_class", &self.parent_class)
2657            .finish()
2658    }
2659}
2660
2661#[repr(C)]
2662#[allow(dead_code)]
2663pub struct _GstRegistryPrivate {
2664    _data: [u8; 0],
2665    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2666}
2667
2668pub type GstRegistryPrivate = _GstRegistryPrivate;
2669
2670#[repr(C)]
2671#[allow(dead_code)]
2672pub struct GstSample {
2673    _data: [u8; 0],
2674    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2675}
2676
2677impl ::std::fmt::Debug for GstSample {
2678    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2679        f.debug_struct(&format!("GstSample @ {self:p}")).finish()
2680    }
2681}
2682
2683#[derive(Copy, Clone)]
2684#[repr(C)]
2685pub struct GstSegment {
2686    pub flags: GstSegmentFlags,
2687    pub rate: c_double,
2688    pub applied_rate: c_double,
2689    pub format: GstFormat,
2690    pub base: u64,
2691    pub offset: u64,
2692    pub start: u64,
2693    pub stop: u64,
2694    pub time: u64,
2695    pub position: u64,
2696    pub duration: u64,
2697    pub _gst_reserved: [gpointer; 4],
2698}
2699
2700impl ::std::fmt::Debug for GstSegment {
2701    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2702        f.debug_struct(&format!("GstSegment @ {self:p}"))
2703            .field("flags", &self.flags)
2704            .field("rate", &self.rate)
2705            .field("applied_rate", &self.applied_rate)
2706            .field("format", &self.format)
2707            .field("base", &self.base)
2708            .field("offset", &self.offset)
2709            .field("start", &self.start)
2710            .field("stop", &self.stop)
2711            .field("time", &self.time)
2712            .field("position", &self.position)
2713            .field("duration", &self.duration)
2714            .finish()
2715    }
2716}
2717
2718#[derive(Copy, Clone)]
2719#[repr(C)]
2720pub struct GstSharedTaskPoolClass {
2721    pub parent_class: GstTaskPoolClass,
2722    pub _gst_reserved: [gpointer; 4],
2723}
2724
2725impl ::std::fmt::Debug for GstSharedTaskPoolClass {
2726    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2727        f.debug_struct(&format!("GstSharedTaskPoolClass @ {self:p}"))
2728            .field("parent_class", &self.parent_class)
2729            .finish()
2730    }
2731}
2732
2733#[repr(C)]
2734#[allow(dead_code)]
2735pub struct _GstSharedTaskPoolPrivate {
2736    _data: [u8; 0],
2737    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2738}
2739
2740pub type GstSharedTaskPoolPrivate = _GstSharedTaskPoolPrivate;
2741
2742#[derive(Copy, Clone)]
2743#[repr(C)]
2744pub struct GstStaticCaps {
2745    pub caps: *mut GstCaps,
2746    pub string: *const c_char,
2747    pub _gst_reserved: [gpointer; 4],
2748}
2749
2750impl ::std::fmt::Debug for GstStaticCaps {
2751    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2752        f.debug_struct(&format!("GstStaticCaps @ {self:p}"))
2753            .field("caps", &self.caps)
2754            .field("string", &self.string)
2755            .finish()
2756    }
2757}
2758
2759#[derive(Copy, Clone)]
2760#[repr(C)]
2761pub struct GstStaticPadTemplate {
2762    pub name_template: *const c_char,
2763    pub direction: GstPadDirection,
2764    pub presence: GstPadPresence,
2765    pub static_caps: GstStaticCaps,
2766}
2767
2768impl ::std::fmt::Debug for GstStaticPadTemplate {
2769    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2770        f.debug_struct(&format!("GstStaticPadTemplate @ {self:p}"))
2771            .field("name_template", &self.name_template)
2772            .field("direction", &self.direction)
2773            .field("presence", &self.presence)
2774            .field("static_caps", &self.static_caps)
2775            .finish()
2776    }
2777}
2778
2779#[derive(Copy, Clone)]
2780#[repr(C)]
2781pub struct GstStreamClass {
2782    pub parent_class: GstObjectClass,
2783    pub _gst_reserved: [gpointer; 4],
2784}
2785
2786impl ::std::fmt::Debug for GstStreamClass {
2787    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2788        f.debug_struct(&format!("GstStreamClass @ {self:p}"))
2789            .field("parent_class", &self.parent_class)
2790            .finish()
2791    }
2792}
2793
2794#[derive(Copy, Clone)]
2795#[repr(C)]
2796pub struct GstStreamCollectionClass {
2797    pub parent_class: GstObjectClass,
2798    pub stream_notify: Option<
2799        unsafe extern "C" fn(*mut GstStreamCollection, *mut GstStream, *mut gobject::GParamSpec),
2800    >,
2801    pub _gst_reserved: [gpointer; 4],
2802}
2803
2804impl ::std::fmt::Debug for GstStreamCollectionClass {
2805    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2806        f.debug_struct(&format!("GstStreamCollectionClass @ {self:p}"))
2807            .field("parent_class", &self.parent_class)
2808            .field("stream_notify", &self.stream_notify)
2809            .finish()
2810    }
2811}
2812
2813#[repr(C)]
2814#[allow(dead_code)]
2815pub struct _GstStreamCollectionPrivate {
2816    _data: [u8; 0],
2817    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2818}
2819
2820pub type GstStreamCollectionPrivate = _GstStreamCollectionPrivate;
2821
2822#[repr(C)]
2823#[allow(dead_code)]
2824pub struct _GstStreamPrivate {
2825    _data: [u8; 0],
2826    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2827}
2828
2829pub type GstStreamPrivate = _GstStreamPrivate;
2830
2831#[derive(Copy, Clone)]
2832#[repr(C)]
2833pub struct GstStructure {
2834    pub type_: GType,
2835    pub name: glib::GQuark,
2836}
2837
2838impl ::std::fmt::Debug for GstStructure {
2839    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2840        f.debug_struct(&format!("GstStructure @ {self:p}"))
2841            .field("type_", &self.type_)
2842            .finish()
2843    }
2844}
2845
2846#[derive(Copy, Clone)]
2847#[repr(C)]
2848pub struct GstSystemClockClass {
2849    pub parent_class: GstClockClass,
2850    pub _gst_reserved: [gpointer; 4],
2851}
2852
2853impl ::std::fmt::Debug for GstSystemClockClass {
2854    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2855        f.debug_struct(&format!("GstSystemClockClass @ {self:p}"))
2856            .field("parent_class", &self.parent_class)
2857            .finish()
2858    }
2859}
2860
2861#[repr(C)]
2862#[allow(dead_code)]
2863pub struct _GstSystemClockPrivate {
2864    _data: [u8; 0],
2865    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2866}
2867
2868pub type GstSystemClockPrivate = _GstSystemClockPrivate;
2869
2870#[derive(Copy, Clone)]
2871#[repr(C)]
2872pub struct GstTagList {
2873    pub mini_object: GstMiniObject,
2874}
2875
2876impl ::std::fmt::Debug for GstTagList {
2877    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2878        f.debug_struct(&format!("GstTagList @ {self:p}"))
2879            .field("mini_object", &self.mini_object)
2880            .finish()
2881    }
2882}
2883
2884#[derive(Copy, Clone)]
2885#[repr(C)]
2886pub struct GstTagSetterInterface {
2887    pub g_iface: gobject::GTypeInterface,
2888}
2889
2890impl ::std::fmt::Debug for GstTagSetterInterface {
2891    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2892        f.debug_struct(&format!("GstTagSetterInterface @ {self:p}"))
2893            .field("g_iface", &self.g_iface)
2894            .finish()
2895    }
2896}
2897
2898#[derive(Copy, Clone)]
2899#[repr(C)]
2900pub struct GstTaskClass {
2901    pub parent_class: GstObjectClass,
2902    pub pool: *mut GstTaskPool,
2903    pub _gst_reserved: [gpointer; 4],
2904}
2905
2906impl ::std::fmt::Debug for GstTaskClass {
2907    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2908        f.debug_struct(&format!("GstTaskClass @ {self:p}"))
2909            .field("parent_class", &self.parent_class)
2910            .finish()
2911    }
2912}
2913
2914#[derive(Copy, Clone)]
2915#[repr(C)]
2916pub struct GstTaskPoolClass {
2917    pub parent_class: GstObjectClass,
2918    pub prepare: Option<unsafe extern "C" fn(*mut GstTaskPool, *mut *mut glib::GError)>,
2919    pub cleanup: Option<unsafe extern "C" fn(*mut GstTaskPool)>,
2920    pub push: Option<
2921        unsafe extern "C" fn(
2922            *mut GstTaskPool,
2923            GstTaskPoolFunction,
2924            gpointer,
2925            *mut *mut glib::GError,
2926        ) -> gpointer,
2927    >,
2928    pub join: Option<unsafe extern "C" fn(*mut GstTaskPool, gpointer)>,
2929    pub dispose_handle: Option<unsafe extern "C" fn(*mut GstTaskPool, gpointer)>,
2930    pub _gst_reserved: [gpointer; 3],
2931}
2932
2933impl ::std::fmt::Debug for GstTaskPoolClass {
2934    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2935        f.debug_struct(&format!("GstTaskPoolClass @ {self:p}"))
2936            .field("parent_class", &self.parent_class)
2937            .field("prepare", &self.prepare)
2938            .field("cleanup", &self.cleanup)
2939            .field("push", &self.push)
2940            .field("join", &self.join)
2941            .field("dispose_handle", &self.dispose_handle)
2942            .finish()
2943    }
2944}
2945
2946#[repr(C)]
2947#[allow(dead_code)]
2948pub struct _GstTaskPrivate {
2949    _data: [u8; 0],
2950    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2951}
2952
2953pub type GstTaskPrivate = _GstTaskPrivate;
2954
2955#[derive(Copy, Clone)]
2956#[repr(C)]
2957pub struct GstTimedValue {
2958    pub timestamp: GstClockTime,
2959    pub value: c_double,
2960}
2961
2962impl ::std::fmt::Debug for GstTimedValue {
2963    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2964        f.debug_struct(&format!("GstTimedValue @ {self:p}"))
2965            .field("timestamp", &self.timestamp)
2966            .field("value", &self.value)
2967            .finish()
2968    }
2969}
2970
2971#[repr(C)]
2972#[allow(dead_code)]
2973pub struct GstToc {
2974    _data: [u8; 0],
2975    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2976}
2977
2978impl ::std::fmt::Debug for GstToc {
2979    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2980        f.debug_struct(&format!("GstToc @ {self:p}")).finish()
2981    }
2982}
2983
2984#[repr(C)]
2985#[allow(dead_code)]
2986pub struct GstTocEntry {
2987    _data: [u8; 0],
2988    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2989}
2990
2991impl ::std::fmt::Debug for GstTocEntry {
2992    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2993        f.debug_struct(&format!("GstTocEntry @ {self:p}")).finish()
2994    }
2995}
2996
2997#[derive(Copy, Clone)]
2998#[repr(C)]
2999pub struct GstTocSetterInterface {
3000    pub g_iface: gobject::GTypeInterface,
3001}
3002
3003impl ::std::fmt::Debug for GstTocSetterInterface {
3004    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3005        f.debug_struct(&format!("GstTocSetterInterface @ {self:p}"))
3006            .field("g_iface", &self.g_iface)
3007            .finish()
3008    }
3009}
3010
3011#[derive(Copy, Clone)]
3012#[repr(C)]
3013pub struct GstTracerClass {
3014    pub parent_class: GstObjectClass,
3015    pub _gst_reserved: [gpointer; 4],
3016}
3017
3018impl ::std::fmt::Debug for GstTracerClass {
3019    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3020        f.debug_struct(&format!("GstTracerClass @ {self:p}"))
3021            .field("parent_class", &self.parent_class)
3022            .finish()
3023    }
3024}
3025
3026#[repr(C)]
3027#[allow(dead_code)]
3028pub struct _GstTracerFactoryClass {
3029    _data: [u8; 0],
3030    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3031}
3032
3033pub type GstTracerFactoryClass = _GstTracerFactoryClass;
3034
3035#[repr(C)]
3036#[allow(dead_code)]
3037pub struct _GstTracerPrivate {
3038    _data: [u8; 0],
3039    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3040}
3041
3042pub type GstTracerPrivate = _GstTracerPrivate;
3043
3044#[repr(C)]
3045#[allow(dead_code)]
3046pub struct _GstTracerRecordClass {
3047    _data: [u8; 0],
3048    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3049}
3050
3051pub type GstTracerRecordClass = _GstTracerRecordClass;
3052
3053#[derive(Copy, Clone)]
3054#[repr(C)]
3055pub struct GstTypeFind {
3056    pub peek: Option<unsafe extern "C" fn(gpointer, i64, c_uint) -> *const u8>,
3057    pub suggest: Option<unsafe extern "C" fn(gpointer, c_uint, *mut GstCaps)>,
3058    pub data: gpointer,
3059    pub get_length: Option<unsafe extern "C" fn(gpointer) -> u64>,
3060    pub _gst_reserved: [gpointer; 4],
3061}
3062
3063impl ::std::fmt::Debug for GstTypeFind {
3064    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3065        f.debug_struct(&format!("GstTypeFind @ {self:p}"))
3066            .field("peek", &self.peek)
3067            .field("suggest", &self.suggest)
3068            .field("data", &self.data)
3069            .field("get_length", &self.get_length)
3070            .finish()
3071    }
3072}
3073
3074#[repr(C)]
3075#[allow(dead_code)]
3076pub struct _GstTypeFindFactoryClass {
3077    _data: [u8; 0],
3078    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3079}
3080
3081pub type GstTypeFindFactoryClass = _GstTypeFindFactoryClass;
3082
3083#[derive(Copy, Clone)]
3084#[repr(C)]
3085pub struct GstURIHandlerInterface {
3086    pub parent: gobject::GTypeInterface,
3087    pub get_type: Option<unsafe extern "C" fn(GType) -> GstURIType>,
3088    pub get_protocols: Option<unsafe extern "C" fn(GType) -> *const *const c_char>,
3089    pub get_uri: Option<unsafe extern "C" fn(*mut GstURIHandler) -> *mut c_char>,
3090    pub set_uri: Option<
3091        unsafe extern "C" fn(*mut GstURIHandler, *const c_char, *mut *mut glib::GError) -> gboolean,
3092    >,
3093}
3094
3095impl ::std::fmt::Debug for GstURIHandlerInterface {
3096    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3097        f.debug_struct(&format!("GstURIHandlerInterface @ {self:p}"))
3098            .field("parent", &self.parent)
3099            .field("get_type", &self.get_type)
3100            .field("get_protocols", &self.get_protocols)
3101            .field("get_uri", &self.get_uri)
3102            .field("set_uri", &self.set_uri)
3103            .finish()
3104    }
3105}
3106
3107#[repr(C)]
3108#[allow(dead_code)]
3109pub struct GstUri {
3110    _data: [u8; 0],
3111    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3112}
3113
3114impl ::std::fmt::Debug for GstUri {
3115    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3116        f.debug_struct(&format!("GstUri @ {self:p}")).finish()
3117    }
3118}
3119
3120#[derive(Copy, Clone)]
3121#[repr(C)]
3122pub struct GstValueTable {
3123    pub type_: GType,
3124    pub compare: GstValueCompareFunc,
3125    pub serialize: GstValueSerializeFunc,
3126    pub deserialize: GstValueDeserializeFunc,
3127    pub deserialize_with_pspec: GstValueDeserializeWithPSpecFunc,
3128    pub _gst_reserved: [gpointer; 3],
3129}
3130
3131impl ::std::fmt::Debug for GstValueTable {
3132    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3133        f.debug_struct(&format!("GstValueTable @ {self:p}"))
3134            .field("type_", &self.type_)
3135            .field("compare", &self.compare)
3136            .field("serialize", &self.serialize)
3137            .field("deserialize", &self.deserialize)
3138            .field("deserialize_with_pspec", &self.deserialize_with_pspec)
3139            .finish()
3140    }
3141}
3142
3143#[repr(C)]
3144#[allow(dead_code)]
3145pub struct _GstVecDeque {
3146    _data: [u8; 0],
3147    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3148}
3149
3150pub type GstVecDeque = _GstVecDeque;
3151
3152// Classes
3153#[derive(Copy, Clone)]
3154#[repr(C)]
3155pub struct GstAllocator {
3156    pub object: GstObject,
3157    pub mem_type: *const c_char,
3158    pub mem_map: GstMemoryMapFunction,
3159    pub mem_unmap: GstMemoryUnmapFunction,
3160    pub mem_copy: GstMemoryCopyFunction,
3161    pub mem_share: GstMemoryShareFunction,
3162    pub mem_is_span: GstMemoryIsSpanFunction,
3163    pub mem_map_full: GstMemoryMapFullFunction,
3164    pub mem_unmap_full: GstMemoryUnmapFullFunction,
3165    pub _gst_reserved: [gpointer; 2],
3166    pub priv_: *mut GstAllocatorPrivate,
3167}
3168
3169impl ::std::fmt::Debug for GstAllocator {
3170    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3171        f.debug_struct(&format!("GstAllocator @ {self:p}"))
3172            .field("object", &self.object)
3173            .field("mem_type", &self.mem_type)
3174            .field("mem_map", &self.mem_map)
3175            .field("mem_unmap", &self.mem_unmap)
3176            .field("mem_copy", &self.mem_copy)
3177            .field("mem_share", &self.mem_share)
3178            .field("mem_is_span", &self.mem_is_span)
3179            .field("mem_map_full", &self.mem_map_full)
3180            .field("mem_unmap_full", &self.mem_unmap_full)
3181            .finish()
3182    }
3183}
3184
3185#[derive(Copy, Clone)]
3186#[repr(C)]
3187pub struct GstBin {
3188    pub element: GstElement,
3189    pub numchildren: c_int,
3190    pub children: *mut glib::GList,
3191    pub children_cookie: u32,
3192    pub child_bus: *mut GstBus,
3193    pub messages: *mut glib::GList,
3194    pub polling: gboolean,
3195    pub state_dirty: gboolean,
3196    pub clock_dirty: gboolean,
3197    pub provided_clock: *mut GstClock,
3198    pub clock_provider: *mut GstElement,
3199    pub priv_: *mut GstBinPrivate,
3200    pub _gst_reserved: [gpointer; 4],
3201}
3202
3203impl ::std::fmt::Debug for GstBin {
3204    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3205        f.debug_struct(&format!("GstBin @ {self:p}"))
3206            .field("element", &self.element)
3207            .field("numchildren", &self.numchildren)
3208            .field("children", &self.children)
3209            .field("children_cookie", &self.children_cookie)
3210            .field("child_bus", &self.child_bus)
3211            .field("messages", &self.messages)
3212            .field("polling", &self.polling)
3213            .field("state_dirty", &self.state_dirty)
3214            .field("clock_dirty", &self.clock_dirty)
3215            .field("provided_clock", &self.provided_clock)
3216            .field("clock_provider", &self.clock_provider)
3217            .finish()
3218    }
3219}
3220
3221#[repr(C)]
3222#[allow(dead_code)]
3223pub struct GstBitmask {
3224    _data: [u8; 0],
3225    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3226}
3227
3228impl ::std::fmt::Debug for GstBitmask {
3229    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3230        f.debug_struct(&format!("GstBitmask @ {self:p}")).finish()
3231    }
3232}
3233
3234#[derive(Copy, Clone)]
3235#[repr(C)]
3236pub struct GstBufferPool {
3237    pub object: GstObject,
3238    pub flushing: c_int,
3239    pub priv_: *mut GstBufferPoolPrivate,
3240    pub _gst_reserved: [gpointer; 4],
3241}
3242
3243impl ::std::fmt::Debug for GstBufferPool {
3244    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3245        f.debug_struct(&format!("GstBufferPool @ {self:p}"))
3246            .field("object", &self.object)
3247            .field("flushing", &self.flushing)
3248            .finish()
3249    }
3250}
3251
3252#[derive(Copy, Clone)]
3253#[repr(C)]
3254pub struct GstBus {
3255    pub object: GstObject,
3256    pub priv_: *mut GstBusPrivate,
3257    pub _gst_reserved: [gpointer; 4],
3258}
3259
3260impl ::std::fmt::Debug for GstBus {
3261    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3262        f.debug_struct(&format!("GstBus @ {self:p}"))
3263            .field("object", &self.object)
3264            .finish()
3265    }
3266}
3267
3268#[derive(Copy, Clone)]
3269#[repr(C)]
3270pub struct GstClock {
3271    pub object: GstObject,
3272    pub priv_: *mut GstClockPrivate,
3273    pub _gst_reserved: [gpointer; 4],
3274}
3275
3276impl ::std::fmt::Debug for GstClock {
3277    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3278        f.debug_struct(&format!("GstClock @ {self:p}"))
3279            .field("object", &self.object)
3280            .finish()
3281    }
3282}
3283
3284#[derive(Copy, Clone)]
3285#[repr(C)]
3286pub struct GstControlBinding {
3287    pub parent: GstObject,
3288    pub name: *mut c_char,
3289    pub pspec: *mut gobject::GParamSpec,
3290    pub object: *mut GstObject,
3291    pub disabled: gboolean,
3292    pub ABI: GstControlBinding_ABI,
3293}
3294
3295impl ::std::fmt::Debug for GstControlBinding {
3296    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3297        f.debug_struct(&format!("GstControlBinding @ {self:p}"))
3298            .field("parent", &self.parent)
3299            .field("name", &self.name)
3300            .field("pspec", &self.pspec)
3301            .field("ABI", &self.ABI)
3302            .finish()
3303    }
3304}
3305
3306#[derive(Copy, Clone)]
3307#[repr(C)]
3308pub struct GstControlSource {
3309    pub parent: GstObject,
3310    pub get_value: GstControlSourceGetValue,
3311    pub get_value_array: GstControlSourceGetValueArray,
3312    pub _gst_reserved: [gpointer; 4],
3313}
3314
3315impl ::std::fmt::Debug for GstControlSource {
3316    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3317        f.debug_struct(&format!("GstControlSource @ {self:p}"))
3318            .field("parent", &self.parent)
3319            .field("get_value", &self.get_value)
3320            .field("get_value_array", &self.get_value_array)
3321            .finish()
3322    }
3323}
3324
3325#[derive(Copy, Clone)]
3326#[repr(C)]
3327pub struct GstDevice {
3328    pub parent: GstObject,
3329    pub priv_: *mut GstDevicePrivate,
3330    pub _gst_reserved: [gpointer; 4],
3331}
3332
3333impl ::std::fmt::Debug for GstDevice {
3334    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3335        f.debug_struct(&format!("GstDevice @ {self:p}"))
3336            .field("parent", &self.parent)
3337            .finish()
3338    }
3339}
3340
3341#[derive(Copy, Clone)]
3342#[repr(C)]
3343pub struct GstDeviceMonitor {
3344    pub parent: GstObject,
3345    pub priv_: *mut GstDeviceMonitorPrivate,
3346    pub _gst_reserved: [gpointer; 4],
3347}
3348
3349impl ::std::fmt::Debug for GstDeviceMonitor {
3350    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3351        f.debug_struct(&format!("GstDeviceMonitor @ {self:p}"))
3352            .field("parent", &self.parent)
3353            .finish()
3354    }
3355}
3356
3357#[derive(Copy, Clone)]
3358#[repr(C)]
3359pub struct GstDeviceProvider {
3360    pub parent: GstObject,
3361    pub devices: *mut glib::GList,
3362    pub priv_: *mut GstDeviceProviderPrivate,
3363    pub _gst_reserved: [gpointer; 4],
3364}
3365
3366impl ::std::fmt::Debug for GstDeviceProvider {
3367    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3368        f.debug_struct(&format!("GstDeviceProvider @ {self:p}"))
3369            .field("parent", &self.parent)
3370            .field("devices", &self.devices)
3371            .finish()
3372    }
3373}
3374
3375#[repr(C)]
3376#[allow(dead_code)]
3377pub struct GstDeviceProviderFactory {
3378    _data: [u8; 0],
3379    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3380}
3381
3382impl ::std::fmt::Debug for GstDeviceProviderFactory {
3383    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3384        f.debug_struct(&format!("GstDeviceProviderFactory @ {self:p}"))
3385            .finish()
3386    }
3387}
3388
3389#[repr(C)]
3390#[allow(dead_code)]
3391pub struct GstDoubleRange {
3392    _data: [u8; 0],
3393    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3394}
3395
3396impl ::std::fmt::Debug for GstDoubleRange {
3397    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3398        f.debug_struct(&format!("GstDoubleRange @ {self:p}"))
3399            .finish()
3400    }
3401}
3402
3403#[repr(C)]
3404#[allow(dead_code)]
3405pub struct GstDynamicTypeFactory {
3406    _data: [u8; 0],
3407    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3408}
3409
3410impl ::std::fmt::Debug for GstDynamicTypeFactory {
3411    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3412        f.debug_struct(&format!("GstDynamicTypeFactory @ {self:p}"))
3413            .finish()
3414    }
3415}
3416
3417#[derive(Copy, Clone)]
3418#[repr(C)]
3419pub struct GstElement {
3420    pub object: GstObject,
3421    pub state_lock: glib::GRecMutex,
3422    pub state_cond: glib::GCond,
3423    pub state_cookie: u32,
3424    pub target_state: GstState,
3425    pub current_state: GstState,
3426    pub next_state: GstState,
3427    pub pending_state: GstState,
3428    pub last_return: GstStateChangeReturn,
3429    pub bus: *mut GstBus,
3430    pub clock: *mut GstClock,
3431    pub base_time: GstClockTimeDiff,
3432    pub start_time: GstClockTime,
3433    pub numpads: u16,
3434    pub pads: *mut glib::GList,
3435    pub numsrcpads: u16,
3436    pub srcpads: *mut glib::GList,
3437    pub numsinkpads: u16,
3438    pub sinkpads: *mut glib::GList,
3439    pub pads_cookie: u32,
3440    pub contexts: *mut glib::GList,
3441    pub _gst_reserved: [gpointer; 3],
3442}
3443
3444impl ::std::fmt::Debug for GstElement {
3445    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3446        f.debug_struct(&format!("GstElement @ {self:p}"))
3447            .field("object", &self.object)
3448            .field("state_lock", &self.state_lock)
3449            .field("state_cond", &self.state_cond)
3450            .field("state_cookie", &self.state_cookie)
3451            .field("target_state", &self.target_state)
3452            .field("current_state", &self.current_state)
3453            .field("next_state", &self.next_state)
3454            .field("pending_state", &self.pending_state)
3455            .field("last_return", &self.last_return)
3456            .field("bus", &self.bus)
3457            .field("clock", &self.clock)
3458            .field("base_time", &self.base_time)
3459            .field("start_time", &self.start_time)
3460            .field("numpads", &self.numpads)
3461            .field("pads", &self.pads)
3462            .field("numsrcpads", &self.numsrcpads)
3463            .field("srcpads", &self.srcpads)
3464            .field("numsinkpads", &self.numsinkpads)
3465            .field("sinkpads", &self.sinkpads)
3466            .field("pads_cookie", &self.pads_cookie)
3467            .field("contexts", &self.contexts)
3468            .finish()
3469    }
3470}
3471
3472#[repr(C)]
3473#[allow(dead_code)]
3474pub struct GstElementFactory {
3475    _data: [u8; 0],
3476    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3477}
3478
3479impl ::std::fmt::Debug for GstElementFactory {
3480    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3481        f.debug_struct(&format!("GstElementFactory @ {self:p}"))
3482            .finish()
3483    }
3484}
3485
3486#[repr(C)]
3487#[allow(dead_code)]
3488pub struct GstFlagSet {
3489    _data: [u8; 0],
3490    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3491}
3492
3493impl ::std::fmt::Debug for GstFlagSet {
3494    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3495        f.debug_struct(&format!("GstFlagSet @ {self:p}")).finish()
3496    }
3497}
3498
3499#[repr(C)]
3500#[allow(dead_code)]
3501pub struct GstFraction {
3502    _data: [u8; 0],
3503    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3504}
3505
3506impl ::std::fmt::Debug for GstFraction {
3507    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3508        f.debug_struct(&format!("GstFraction @ {self:p}")).finish()
3509    }
3510}
3511
3512#[repr(C)]
3513#[allow(dead_code)]
3514pub struct GstFractionRange {
3515    _data: [u8; 0],
3516    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3517}
3518
3519impl ::std::fmt::Debug for GstFractionRange {
3520    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3521        f.debug_struct(&format!("GstFractionRange @ {self:p}"))
3522            .finish()
3523    }
3524}
3525
3526#[derive(Copy, Clone)]
3527#[repr(C)]
3528pub struct GstGhostPad {
3529    pub pad: GstProxyPad,
3530    pub priv_: *mut GstGhostPadPrivate,
3531}
3532
3533impl ::std::fmt::Debug for GstGhostPad {
3534    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3535        f.debug_struct(&format!("GstGhostPad @ {self:p}"))
3536            .field("pad", &self.pad)
3537            .finish()
3538    }
3539}
3540
3541#[repr(C)]
3542#[allow(dead_code)]
3543pub struct GstInt64Range {
3544    _data: [u8; 0],
3545    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3546}
3547
3548impl ::std::fmt::Debug for GstInt64Range {
3549    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3550        f.debug_struct(&format!("GstInt64Range @ {self:p}"))
3551            .finish()
3552    }
3553}
3554
3555#[repr(C)]
3556#[allow(dead_code)]
3557pub struct GstIntRange {
3558    _data: [u8; 0],
3559    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3560}
3561
3562impl ::std::fmt::Debug for GstIntRange {
3563    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3564        f.debug_struct(&format!("GstIntRange @ {self:p}")).finish()
3565    }
3566}
3567
3568#[derive(Copy, Clone)]
3569#[repr(C)]
3570pub struct GstObject {
3571    pub object: gobject::GInitiallyUnowned,
3572    pub lock: glib::GMutex,
3573    pub name: *mut c_char,
3574    pub parent: *mut GstObject,
3575    pub flags: u32,
3576    pub control_bindings: *mut glib::GList,
3577    pub control_rate: u64,
3578    pub last_sync: u64,
3579    pub _gst_reserved: gpointer,
3580}
3581
3582impl ::std::fmt::Debug for GstObject {
3583    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3584        f.debug_struct(&format!("GstObject @ {self:p}"))
3585            .field("object", &self.object)
3586            .field("lock", &self.lock)
3587            .field("name", &self.name)
3588            .field("parent", &self.parent)
3589            .field("flags", &self.flags)
3590            .finish()
3591    }
3592}
3593
3594#[derive(Copy, Clone)]
3595#[repr(C)]
3596pub struct GstPad {
3597    pub object: GstObject,
3598    pub element_private: gpointer,
3599    pub padtemplate: *mut GstPadTemplate,
3600    pub direction: GstPadDirection,
3601    pub stream_rec_lock: glib::GRecMutex,
3602    pub task: *mut GstTask,
3603    pub block_cond: glib::GCond,
3604    pub probes: glib::GHookList,
3605    pub mode: GstPadMode,
3606    pub activatefunc: GstPadActivateFunction,
3607    pub activatedata: gpointer,
3608    pub activatenotify: glib::GDestroyNotify,
3609    pub activatemodefunc: GstPadActivateModeFunction,
3610    pub activatemodedata: gpointer,
3611    pub activatemodenotify: glib::GDestroyNotify,
3612    pub peer: *mut GstPad,
3613    pub linkfunc: GstPadLinkFunction,
3614    pub linkdata: gpointer,
3615    pub linknotify: glib::GDestroyNotify,
3616    pub unlinkfunc: GstPadUnlinkFunction,
3617    pub unlinkdata: gpointer,
3618    pub unlinknotify: glib::GDestroyNotify,
3619    pub chainfunc: GstPadChainFunction,
3620    pub chaindata: gpointer,
3621    pub chainnotify: glib::GDestroyNotify,
3622    pub chainlistfunc: GstPadChainListFunction,
3623    pub chainlistdata: gpointer,
3624    pub chainlistnotify: glib::GDestroyNotify,
3625    pub getrangefunc: GstPadGetRangeFunction,
3626    pub getrangedata: gpointer,
3627    pub getrangenotify: glib::GDestroyNotify,
3628    pub eventfunc: GstPadEventFunction,
3629    pub eventdata: gpointer,
3630    pub eventnotify: glib::GDestroyNotify,
3631    pub offset: i64,
3632    pub queryfunc: GstPadQueryFunction,
3633    pub querydata: gpointer,
3634    pub querynotify: glib::GDestroyNotify,
3635    pub iterintlinkfunc: GstPadIterIntLinkFunction,
3636    pub iterintlinkdata: gpointer,
3637    pub iterintlinknotify: glib::GDestroyNotify,
3638    pub num_probes: c_int,
3639    pub num_blocked: c_int,
3640    pub priv_: *mut GstPadPrivate,
3641    pub ABI: GstPad_ABI,
3642}
3643
3644impl ::std::fmt::Debug for GstPad {
3645    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3646        f.debug_struct(&format!("GstPad @ {self:p}"))
3647            .field("object", &self.object)
3648            .field("element_private", &self.element_private)
3649            .field("padtemplate", &self.padtemplate)
3650            .field("direction", &self.direction)
3651            .field("ABI", &self.ABI)
3652            .finish()
3653    }
3654}
3655
3656#[derive(Copy, Clone)]
3657#[repr(C)]
3658pub struct GstPadTemplate {
3659    pub object: GstObject,
3660    pub name_template: *mut c_char,
3661    pub direction: GstPadDirection,
3662    pub presence: GstPadPresence,
3663    pub caps: *mut GstCaps,
3664    pub ABI: GstPadTemplate_ABI,
3665}
3666
3667impl ::std::fmt::Debug for GstPadTemplate {
3668    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3669        f.debug_struct(&format!("GstPadTemplate @ {self:p}"))
3670            .field("object", &self.object)
3671            .field("name_template", &self.name_template)
3672            .field("direction", &self.direction)
3673            .field("presence", &self.presence)
3674            .field("caps", &self.caps)
3675            .field("ABI", &self.ABI)
3676            .finish()
3677    }
3678}
3679
3680#[repr(C)]
3681#[allow(dead_code)]
3682pub struct GstParamArray {
3683    _data: [u8; 0],
3684    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3685}
3686
3687impl ::std::fmt::Debug for GstParamArray {
3688    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3689        f.debug_struct(&format!("GstParamArray @ {self:p}"))
3690            .finish()
3691    }
3692}
3693
3694#[repr(C)]
3695#[allow(dead_code)]
3696pub struct GstParamFraction {
3697    _data: [u8; 0],
3698    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3699}
3700
3701impl ::std::fmt::Debug for GstParamFraction {
3702    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3703        f.debug_struct(&format!("GstParamFraction @ {self:p}"))
3704            .finish()
3705    }
3706}
3707
3708#[derive(Copy, Clone)]
3709#[repr(C)]
3710pub struct GstPipeline {
3711    pub bin: GstBin,
3712    pub fixed_clock: *mut GstClock,
3713    pub stream_time: GstClockTime,
3714    pub delay: GstClockTime,
3715    pub priv_: *mut GstPipelinePrivate,
3716    pub _gst_reserved: [gpointer; 4],
3717}
3718
3719impl ::std::fmt::Debug for GstPipeline {
3720    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3721        f.debug_struct(&format!("GstPipeline @ {self:p}"))
3722            .field("bin", &self.bin)
3723            .field("fixed_clock", &self.fixed_clock)
3724            .field("stream_time", &self.stream_time)
3725            .field("delay", &self.delay)
3726            .finish()
3727    }
3728}
3729
3730#[repr(C)]
3731#[allow(dead_code)]
3732pub struct GstPlugin {
3733    _data: [u8; 0],
3734    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3735}
3736
3737impl ::std::fmt::Debug for GstPlugin {
3738    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3739        f.debug_struct(&format!("GstPlugin @ {self:p}")).finish()
3740    }
3741}
3742
3743#[repr(C)]
3744#[allow(dead_code)]
3745pub struct GstPluginFeature {
3746    _data: [u8; 0],
3747    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3748}
3749
3750impl ::std::fmt::Debug for GstPluginFeature {
3751    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3752        f.debug_struct(&format!("GstPluginFeature @ {self:p}"))
3753            .finish()
3754    }
3755}
3756
3757#[derive(Copy, Clone)]
3758#[repr(C)]
3759pub struct GstProxyPad {
3760    pub pad: GstPad,
3761    pub priv_: *mut GstProxyPadPrivate,
3762}
3763
3764impl ::std::fmt::Debug for GstProxyPad {
3765    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3766        f.debug_struct(&format!("GstProxyPad @ {self:p}"))
3767            .field("pad", &self.pad)
3768            .finish()
3769    }
3770}
3771
3772#[derive(Copy, Clone)]
3773#[repr(C)]
3774pub struct GstRegistry {
3775    pub object: GstObject,
3776    pub priv_: *mut GstRegistryPrivate,
3777}
3778
3779impl ::std::fmt::Debug for GstRegistry {
3780    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3781        f.debug_struct(&format!("GstRegistry @ {self:p}"))
3782            .field("object", &self.object)
3783            .finish()
3784    }
3785}
3786
3787#[derive(Copy, Clone)]
3788#[repr(C)]
3789pub struct GstSharedTaskPool {
3790    pub parent: GstTaskPool,
3791    pub priv_: *mut GstSharedTaskPoolPrivate,
3792    pub _gst_reserved: [gpointer; 4],
3793}
3794
3795impl ::std::fmt::Debug for GstSharedTaskPool {
3796    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3797        f.debug_struct(&format!("GstSharedTaskPool @ {self:p}"))
3798            .field("parent", &self.parent)
3799            .finish()
3800    }
3801}
3802
3803#[derive(Copy, Clone)]
3804#[repr(C)]
3805pub struct GstStream {
3806    pub object: GstObject,
3807    pub stream_id: *const c_char,
3808    pub priv_: *mut GstStreamPrivate,
3809    pub _gst_reserved: [gpointer; 4],
3810}
3811
3812impl ::std::fmt::Debug for GstStream {
3813    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3814        f.debug_struct(&format!("GstStream @ {self:p}"))
3815            .field("stream_id", &self.stream_id)
3816            .finish()
3817    }
3818}
3819
3820#[derive(Copy, Clone)]
3821#[repr(C)]
3822pub struct GstStreamCollection {
3823    pub object: GstObject,
3824    pub upstream_id: *mut c_char,
3825    pub priv_: *mut GstStreamCollectionPrivate,
3826    pub _gst_reserved: [gpointer; 4],
3827}
3828
3829impl ::std::fmt::Debug for GstStreamCollection {
3830    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3831        f.debug_struct(&format!("GstStreamCollection @ {self:p}"))
3832            .finish()
3833    }
3834}
3835
3836#[derive(Copy, Clone)]
3837#[repr(C)]
3838pub struct GstSystemClock {
3839    pub clock: GstClock,
3840    pub priv_: *mut GstSystemClockPrivate,
3841    pub _gst_reserved: [gpointer; 4],
3842}
3843
3844impl ::std::fmt::Debug for GstSystemClock {
3845    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3846        f.debug_struct(&format!("GstSystemClock @ {self:p}"))
3847            .field("clock", &self.clock)
3848            .finish()
3849    }
3850}
3851
3852#[derive(Copy, Clone)]
3853#[repr(C)]
3854pub struct GstTask {
3855    pub object: GstObject,
3856    pub state: GstTaskState,
3857    pub cond: glib::GCond,
3858    pub lock: *mut glib::GRecMutex,
3859    pub func: GstTaskFunction,
3860    pub user_data: gpointer,
3861    pub notify: glib::GDestroyNotify,
3862    pub running: gboolean,
3863    pub thread: *mut glib::GThread,
3864    pub priv_: *mut GstTaskPrivate,
3865    pub _gst_reserved: [gpointer; 4],
3866}
3867
3868impl ::std::fmt::Debug for GstTask {
3869    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3870        f.debug_struct(&format!("GstTask @ {self:p}"))
3871            .field("object", &self.object)
3872            .field("state", &self.state)
3873            .field("cond", &self.cond)
3874            .field("lock", &self.lock)
3875            .field("func", &self.func)
3876            .field("user_data", &self.user_data)
3877            .field("notify", &self.notify)
3878            .field("running", &self.running)
3879            .finish()
3880    }
3881}
3882
3883#[derive(Copy, Clone)]
3884#[repr(C)]
3885pub struct GstTaskPool {
3886    pub object: GstObject,
3887    pub pool: *mut glib::GThreadPool,
3888    pub _gst_reserved: [gpointer; 4],
3889}
3890
3891impl ::std::fmt::Debug for GstTaskPool {
3892    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3893        f.debug_struct(&format!("GstTaskPool @ {self:p}"))
3894            .field("object", &self.object)
3895            .finish()
3896    }
3897}
3898
3899#[derive(Copy, Clone)]
3900#[repr(C)]
3901pub struct GstTracer {
3902    pub parent: GstObject,
3903    pub priv_: *mut GstTracerPrivate,
3904    pub _gst_reserved: [gpointer; 4],
3905}
3906
3907impl ::std::fmt::Debug for GstTracer {
3908    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3909        f.debug_struct(&format!("GstTracer @ {self:p}"))
3910            .field("parent", &self.parent)
3911            .finish()
3912    }
3913}
3914
3915#[repr(C)]
3916#[allow(dead_code)]
3917pub struct GstTracerFactory {
3918    _data: [u8; 0],
3919    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3920}
3921
3922impl ::std::fmt::Debug for GstTracerFactory {
3923    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3924        f.debug_struct(&format!("GstTracerFactory @ {self:p}"))
3925            .finish()
3926    }
3927}
3928
3929#[repr(C)]
3930#[allow(dead_code)]
3931pub struct GstTracerRecord {
3932    _data: [u8; 0],
3933    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3934}
3935
3936impl ::std::fmt::Debug for GstTracerRecord {
3937    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3938        f.debug_struct(&format!("GstTracerRecord @ {self:p}"))
3939            .finish()
3940    }
3941}
3942
3943#[repr(C)]
3944#[allow(dead_code)]
3945pub struct GstTypeFindFactory {
3946    _data: [u8; 0],
3947    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3948}
3949
3950impl ::std::fmt::Debug for GstTypeFindFactory {
3951    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3952        f.debug_struct(&format!("GstTypeFindFactory @ {self:p}"))
3953            .finish()
3954    }
3955}
3956
3957#[repr(C)]
3958#[allow(dead_code)]
3959pub struct GstValueArray {
3960    _data: [u8; 0],
3961    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3962}
3963
3964impl ::std::fmt::Debug for GstValueArray {
3965    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3966        f.debug_struct(&format!("GstValueArray @ {self:p}"))
3967            .finish()
3968    }
3969}
3970
3971#[repr(C)]
3972#[allow(dead_code)]
3973pub struct GstValueList {
3974    _data: [u8; 0],
3975    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3976}
3977
3978impl ::std::fmt::Debug for GstValueList {
3979    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3980        f.debug_struct(&format!("GstValueList @ {self:p}")).finish()
3981    }
3982}
3983
3984// Interfaces
3985#[repr(C)]
3986#[allow(dead_code)]
3987pub struct GstChildProxy {
3988    _data: [u8; 0],
3989    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3990}
3991
3992impl ::std::fmt::Debug for GstChildProxy {
3993    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3994        write!(f, "GstChildProxy @ {self:p}")
3995    }
3996}
3997
3998#[repr(C)]
3999#[allow(dead_code)]
4000pub struct GstPreset {
4001    _data: [u8; 0],
4002    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4003}
4004
4005impl ::std::fmt::Debug for GstPreset {
4006    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4007        write!(f, "GstPreset @ {self:p}")
4008    }
4009}
4010
4011#[repr(C)]
4012#[allow(dead_code)]
4013pub struct GstTagSetter {
4014    _data: [u8; 0],
4015    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4016}
4017
4018impl ::std::fmt::Debug for GstTagSetter {
4019    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4020        write!(f, "GstTagSetter @ {self:p}")
4021    }
4022}
4023
4024#[repr(C)]
4025#[allow(dead_code)]
4026pub struct GstTocSetter {
4027    _data: [u8; 0],
4028    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4029}
4030
4031impl ::std::fmt::Debug for GstTocSetter {
4032    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4033        write!(f, "GstTocSetter @ {self:p}")
4034    }
4035}
4036
4037#[repr(C)]
4038#[allow(dead_code)]
4039pub struct GstURIHandler {
4040    _data: [u8; 0],
4041    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4042}
4043
4044impl ::std::fmt::Debug for GstURIHandler {
4045    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4046        write!(f, "GstURIHandler @ {self:p}")
4047    }
4048}
4049
4050extern "C" {
4051
4052    //=========================================================================
4053    // GstBufferingMode
4054    //=========================================================================
4055    pub fn gst_buffering_mode_get_type() -> GType;
4056
4057    //=========================================================================
4058    // GstBusSyncReply
4059    //=========================================================================
4060    pub fn gst_bus_sync_reply_get_type() -> GType;
4061
4062    //=========================================================================
4063    // GstCapsIntersectMode
4064    //=========================================================================
4065    pub fn gst_caps_intersect_mode_get_type() -> GType;
4066
4067    //=========================================================================
4068    // GstClockEntryType
4069    //=========================================================================
4070    pub fn gst_clock_entry_type_get_type() -> GType;
4071
4072    //=========================================================================
4073    // GstClockReturn
4074    //=========================================================================
4075    pub fn gst_clock_return_get_type() -> GType;
4076
4077    //=========================================================================
4078    // GstClockType
4079    //=========================================================================
4080    pub fn gst_clock_type_get_type() -> GType;
4081
4082    //=========================================================================
4083    // GstCoreError
4084    //=========================================================================
4085    pub fn gst_core_error_get_type() -> GType;
4086    pub fn gst_core_error_quark() -> glib::GQuark;
4087
4088    //=========================================================================
4089    // GstDebugColorMode
4090    //=========================================================================
4091    pub fn gst_debug_color_mode_get_type() -> GType;
4092
4093    //=========================================================================
4094    // GstDebugLevel
4095    //=========================================================================
4096    pub fn gst_debug_level_get_type() -> GType;
4097    pub fn gst_debug_level_get_name(level: GstDebugLevel) -> *const c_char;
4098
4099    //=========================================================================
4100    // GstEventType
4101    //=========================================================================
4102    pub fn gst_event_type_get_type() -> GType;
4103    pub fn gst_event_type_get_flags(type_: GstEventType) -> GstEventTypeFlags;
4104    pub fn gst_event_type_get_name(type_: GstEventType) -> *const c_char;
4105    pub fn gst_event_type_to_quark(type_: GstEventType) -> glib::GQuark;
4106    #[cfg(feature = "v1_22")]
4107    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4108    pub fn gst_event_type_to_sticky_ordering(type_: GstEventType) -> c_uint;
4109
4110    //=========================================================================
4111    // GstFlowReturn
4112    //=========================================================================
4113    pub fn gst_flow_return_get_type() -> GType;
4114
4115    //=========================================================================
4116    // GstFormat
4117    //=========================================================================
4118    pub fn gst_format_get_type() -> GType;
4119    pub fn gst_format_get_by_nick(nick: *const c_char) -> GstFormat;
4120    pub fn gst_format_get_details(format: GstFormat) -> *const GstFormatDefinition;
4121    pub fn gst_format_get_name(format: GstFormat) -> *const c_char;
4122    pub fn gst_format_iterate_definitions() -> *mut GstIterator;
4123    pub fn gst_format_register(nick: *const c_char, description: *const c_char) -> GstFormat;
4124    pub fn gst_format_to_quark(format: GstFormat) -> glib::GQuark;
4125
4126    //=========================================================================
4127    // GstIteratorItem
4128    //=========================================================================
4129    pub fn gst_iterator_item_get_type() -> GType;
4130
4131    //=========================================================================
4132    // GstIteratorResult
4133    //=========================================================================
4134    pub fn gst_iterator_result_get_type() -> GType;
4135
4136    //=========================================================================
4137    // GstLibraryError
4138    //=========================================================================
4139    pub fn gst_library_error_get_type() -> GType;
4140    pub fn gst_library_error_quark() -> glib::GQuark;
4141
4142    //=========================================================================
4143    // GstPadDirection
4144    //=========================================================================
4145    pub fn gst_pad_direction_get_type() -> GType;
4146
4147    //=========================================================================
4148    // GstPadLinkReturn
4149    //=========================================================================
4150    pub fn gst_pad_link_return_get_type() -> GType;
4151
4152    //=========================================================================
4153    // GstPadMode
4154    //=========================================================================
4155    pub fn gst_pad_mode_get_type() -> GType;
4156    pub fn gst_pad_mode_get_name(mode: GstPadMode) -> *const c_char;
4157
4158    //=========================================================================
4159    // GstPadPresence
4160    //=========================================================================
4161    pub fn gst_pad_presence_get_type() -> GType;
4162
4163    //=========================================================================
4164    // GstPadProbeReturn
4165    //=========================================================================
4166    pub fn gst_pad_probe_return_get_type() -> GType;
4167
4168    //=========================================================================
4169    // GstParseError
4170    //=========================================================================
4171    pub fn gst_parse_error_get_type() -> GType;
4172    pub fn gst_parse_error_quark() -> glib::GQuark;
4173
4174    //=========================================================================
4175    // GstPluginError
4176    //=========================================================================
4177    pub fn gst_plugin_error_get_type() -> GType;
4178    pub fn gst_plugin_error_quark() -> glib::GQuark;
4179
4180    //=========================================================================
4181    // GstProgressType
4182    //=========================================================================
4183    pub fn gst_progress_type_get_type() -> GType;
4184
4185    //=========================================================================
4186    // GstPromiseResult
4187    //=========================================================================
4188    pub fn gst_promise_result_get_type() -> GType;
4189
4190    //=========================================================================
4191    // GstQOSType
4192    //=========================================================================
4193    pub fn gst_qos_type_get_type() -> GType;
4194
4195    //=========================================================================
4196    // GstQueryType
4197    //=========================================================================
4198    pub fn gst_query_type_get_type() -> GType;
4199    pub fn gst_query_type_get_flags(type_: GstQueryType) -> GstQueryTypeFlags;
4200    pub fn gst_query_type_get_name(type_: GstQueryType) -> *const c_char;
4201    pub fn gst_query_type_to_quark(type_: GstQueryType) -> glib::GQuark;
4202
4203    //=========================================================================
4204    // GstRank
4205    //=========================================================================
4206    pub fn gst_rank_get_type() -> GType;
4207
4208    //=========================================================================
4209    // GstResourceError
4210    //=========================================================================
4211    pub fn gst_resource_error_get_type() -> GType;
4212    pub fn gst_resource_error_quark() -> glib::GQuark;
4213
4214    //=========================================================================
4215    // GstSearchMode
4216    //=========================================================================
4217    pub fn gst_search_mode_get_type() -> GType;
4218
4219    //=========================================================================
4220    // GstSeekType
4221    //=========================================================================
4222    pub fn gst_seek_type_get_type() -> GType;
4223
4224    //=========================================================================
4225    // GstState
4226    //=========================================================================
4227    pub fn gst_state_get_type() -> GType;
4228
4229    //=========================================================================
4230    // GstStateChange
4231    //=========================================================================
4232    pub fn gst_state_change_get_type() -> GType;
4233    pub fn gst_state_change_get_name(transition: GstStateChange) -> *const c_char;
4234
4235    //=========================================================================
4236    // GstStateChangeReturn
4237    //=========================================================================
4238    pub fn gst_state_change_return_get_type() -> GType;
4239
4240    //=========================================================================
4241    // GstStreamError
4242    //=========================================================================
4243    pub fn gst_stream_error_get_type() -> GType;
4244    pub fn gst_stream_error_quark() -> glib::GQuark;
4245
4246    //=========================================================================
4247    // GstStreamStatusType
4248    //=========================================================================
4249    pub fn gst_stream_status_type_get_type() -> GType;
4250
4251    //=========================================================================
4252    // GstStructureChangeType
4253    //=========================================================================
4254    pub fn gst_structure_change_type_get_type() -> GType;
4255
4256    //=========================================================================
4257    // GstTagFlag
4258    //=========================================================================
4259    pub fn gst_tag_flag_get_type() -> GType;
4260
4261    //=========================================================================
4262    // GstTagMergeMode
4263    //=========================================================================
4264    pub fn gst_tag_merge_mode_get_type() -> GType;
4265
4266    //=========================================================================
4267    // GstTagScope
4268    //=========================================================================
4269    pub fn gst_tag_scope_get_type() -> GType;
4270
4271    //=========================================================================
4272    // GstTaskState
4273    //=========================================================================
4274    pub fn gst_task_state_get_type() -> GType;
4275
4276    //=========================================================================
4277    // GstTocEntryType
4278    //=========================================================================
4279    pub fn gst_toc_entry_type_get_type() -> GType;
4280    pub fn gst_toc_entry_type_get_nick(type_: GstTocEntryType) -> *const c_char;
4281
4282    //=========================================================================
4283    // GstTocLoopType
4284    //=========================================================================
4285    pub fn gst_toc_loop_type_get_type() -> GType;
4286
4287    //=========================================================================
4288    // GstTocScope
4289    //=========================================================================
4290    pub fn gst_toc_scope_get_type() -> GType;
4291
4292    //=========================================================================
4293    // GstTracerValueScope
4294    //=========================================================================
4295    pub fn gst_tracer_value_scope_get_type() -> GType;
4296
4297    //=========================================================================
4298    // GstTypeFindProbability
4299    //=========================================================================
4300    pub fn gst_type_find_probability_get_type() -> GType;
4301
4302    //=========================================================================
4303    // GstURIError
4304    //=========================================================================
4305    pub fn gst_uri_error_get_type() -> GType;
4306    pub fn gst_uri_error_quark() -> glib::GQuark;
4307
4308    //=========================================================================
4309    // GstURIType
4310    //=========================================================================
4311    pub fn gst_uri_type_get_type() -> GType;
4312
4313    //=========================================================================
4314    // GstAllocatorFlags
4315    //=========================================================================
4316    pub fn gst_allocator_flags_get_type() -> GType;
4317
4318    //=========================================================================
4319    // GstBinFlags
4320    //=========================================================================
4321    pub fn gst_bin_flags_get_type() -> GType;
4322
4323    //=========================================================================
4324    // GstBufferCopyFlags
4325    //=========================================================================
4326    pub fn gst_buffer_copy_flags_get_type() -> GType;
4327
4328    //=========================================================================
4329    // GstBufferFlags
4330    //=========================================================================
4331    pub fn gst_buffer_flags_get_type() -> GType;
4332
4333    //=========================================================================
4334    // GstBufferPoolAcquireFlags
4335    //=========================================================================
4336    pub fn gst_buffer_pool_acquire_flags_get_type() -> GType;
4337
4338    //=========================================================================
4339    // GstBusFlags
4340    //=========================================================================
4341    pub fn gst_bus_flags_get_type() -> GType;
4342
4343    //=========================================================================
4344    // GstCapsFlags
4345    //=========================================================================
4346    pub fn gst_caps_flags_get_type() -> GType;
4347
4348    //=========================================================================
4349    // GstClockFlags
4350    //=========================================================================
4351    pub fn gst_clock_flags_get_type() -> GType;
4352
4353    //=========================================================================
4354    // GstDebugColorFlags
4355    //=========================================================================
4356    pub fn gst_debug_color_flags_get_type() -> GType;
4357
4358    //=========================================================================
4359    // GstDebugGraphDetails
4360    //=========================================================================
4361    pub fn gst_debug_graph_details_get_type() -> GType;
4362
4363    //=========================================================================
4364    // GstElementFlags
4365    //=========================================================================
4366    pub fn gst_element_flags_get_type() -> GType;
4367
4368    //=========================================================================
4369    // GstEventTypeFlags
4370    //=========================================================================
4371    pub fn gst_event_type_flags_get_type() -> GType;
4372
4373    //=========================================================================
4374    // GstGapFlags
4375    //=========================================================================
4376    #[cfg(feature = "v1_20")]
4377    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4378    pub fn gst_gap_flags_get_type() -> GType;
4379
4380    //=========================================================================
4381    // GstLockFlags
4382    //=========================================================================
4383    pub fn gst_lock_flags_get_type() -> GType;
4384
4385    //=========================================================================
4386    // GstMapFlags
4387    //=========================================================================
4388    pub fn gst_map_flags_get_type() -> GType;
4389
4390    //=========================================================================
4391    // GstMemoryFlags
4392    //=========================================================================
4393    pub fn gst_memory_flags_get_type() -> GType;
4394
4395    //=========================================================================
4396    // GstMessageType
4397    //=========================================================================
4398    pub fn gst_message_type_get_type() -> GType;
4399    pub fn gst_message_type_get_name(type_: GstMessageType) -> *const c_char;
4400    pub fn gst_message_type_to_quark(type_: GstMessageType) -> glib::GQuark;
4401
4402    //=========================================================================
4403    // GstMetaFlags
4404    //=========================================================================
4405    pub fn gst_meta_flags_get_type() -> GType;
4406
4407    //=========================================================================
4408    // GstMiniObjectFlags
4409    //=========================================================================
4410    pub fn gst_mini_object_flags_get_type() -> GType;
4411
4412    //=========================================================================
4413    // GstObjectFlags
4414    //=========================================================================
4415    pub fn gst_object_flags_get_type() -> GType;
4416
4417    //=========================================================================
4418    // GstPadFlags
4419    //=========================================================================
4420    pub fn gst_pad_flags_get_type() -> GType;
4421
4422    //=========================================================================
4423    // GstPadLinkCheck
4424    //=========================================================================
4425    pub fn gst_pad_link_check_get_type() -> GType;
4426
4427    //=========================================================================
4428    // GstPadProbeType
4429    //=========================================================================
4430    pub fn gst_pad_probe_type_get_type() -> GType;
4431
4432    //=========================================================================
4433    // GstPadTemplateFlags
4434    //=========================================================================
4435    pub fn gst_pad_template_flags_get_type() -> GType;
4436
4437    //=========================================================================
4438    // GstParseFlags
4439    //=========================================================================
4440    pub fn gst_parse_flags_get_type() -> GType;
4441
4442    //=========================================================================
4443    // GstPipelineFlags
4444    //=========================================================================
4445    pub fn gst_pipeline_flags_get_type() -> GType;
4446
4447    //=========================================================================
4448    // GstPluginAPIFlags
4449    //=========================================================================
4450    #[cfg(feature = "v1_18")]
4451    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4452    pub fn gst_plugin_api_flags_get_type() -> GType;
4453
4454    //=========================================================================
4455    // GstPluginDependencyFlags
4456    //=========================================================================
4457    pub fn gst_plugin_dependency_flags_get_type() -> GType;
4458
4459    //=========================================================================
4460    // GstPluginFlags
4461    //=========================================================================
4462    pub fn gst_plugin_flags_get_type() -> GType;
4463
4464    //=========================================================================
4465    // GstQueryTypeFlags
4466    //=========================================================================
4467    pub fn gst_query_type_flags_get_type() -> GType;
4468
4469    //=========================================================================
4470    // GstSchedulingFlags
4471    //=========================================================================
4472    pub fn gst_scheduling_flags_get_type() -> GType;
4473
4474    //=========================================================================
4475    // GstSeekFlags
4476    //=========================================================================
4477    pub fn gst_seek_flags_get_type() -> GType;
4478
4479    //=========================================================================
4480    // GstSegmentFlags
4481    //=========================================================================
4482    pub fn gst_segment_flags_get_type() -> GType;
4483
4484    //=========================================================================
4485    // GstSerializeFlags
4486    //=========================================================================
4487    #[cfg(feature = "v1_20")]
4488    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4489    pub fn gst_serialize_flags_get_type() -> GType;
4490
4491    //=========================================================================
4492    // GstStackTraceFlags
4493    //=========================================================================
4494    pub fn gst_stack_trace_flags_get_type() -> GType;
4495
4496    //=========================================================================
4497    // GstStreamFlags
4498    //=========================================================================
4499    pub fn gst_stream_flags_get_type() -> GType;
4500
4501    //=========================================================================
4502    // GstStreamType
4503    //=========================================================================
4504    pub fn gst_stream_type_get_type() -> GType;
4505    pub fn gst_stream_type_get_name(stype: GstStreamType) -> *const c_char;
4506
4507    //=========================================================================
4508    // GstTracerValueFlags
4509    //=========================================================================
4510    pub fn gst_tracer_value_flags_get_type() -> GType;
4511
4512    //=========================================================================
4513    // GstAllocationParams
4514    //=========================================================================
4515    pub fn gst_allocation_params_get_type() -> GType;
4516    #[cfg(feature = "v1_20")]
4517    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4518    pub fn gst_allocation_params_new() -> *mut GstAllocationParams;
4519    pub fn gst_allocation_params_copy(
4520        params: *const GstAllocationParams,
4521    ) -> *mut GstAllocationParams;
4522    pub fn gst_allocation_params_free(params: *mut GstAllocationParams);
4523    pub fn gst_allocation_params_init(params: *mut GstAllocationParams);
4524
4525    //=========================================================================
4526    // GstAtomicQueue
4527    //=========================================================================
4528    pub fn gst_atomic_queue_get_type() -> GType;
4529    pub fn gst_atomic_queue_new(initial_size: c_uint) -> *mut GstAtomicQueue;
4530    pub fn gst_atomic_queue_length(queue: *mut GstAtomicQueue) -> c_uint;
4531    pub fn gst_atomic_queue_peek(queue: *mut GstAtomicQueue) -> gpointer;
4532    pub fn gst_atomic_queue_pop(queue: *mut GstAtomicQueue) -> gpointer;
4533    pub fn gst_atomic_queue_push(queue: *mut GstAtomicQueue, data: gpointer);
4534    pub fn gst_atomic_queue_ref(queue: *mut GstAtomicQueue);
4535    pub fn gst_atomic_queue_unref(queue: *mut GstAtomicQueue);
4536
4537    //=========================================================================
4538    // GstBuffer
4539    //=========================================================================
4540    pub fn gst_buffer_get_type() -> GType;
4541    pub fn gst_buffer_new() -> *mut GstBuffer;
4542    pub fn gst_buffer_new_allocate(
4543        allocator: *mut GstAllocator,
4544        size: size_t,
4545        params: *mut GstAllocationParams,
4546    ) -> *mut GstBuffer;
4547    #[cfg(feature = "v1_20")]
4548    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4549    pub fn gst_buffer_new_memdup(data: gconstpointer, size: size_t) -> *mut GstBuffer;
4550    pub fn gst_buffer_new_wrapped(data: gpointer, size: size_t) -> *mut GstBuffer;
4551    #[cfg(feature = "v1_16")]
4552    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4553    pub fn gst_buffer_new_wrapped_bytes(bytes: *mut glib::GBytes) -> *mut GstBuffer;
4554    pub fn gst_buffer_new_wrapped_full(
4555        flags: GstMemoryFlags,
4556        data: gpointer,
4557        maxsize: size_t,
4558        offset: size_t,
4559        size: size_t,
4560        user_data: gpointer,
4561        notify: glib::GDestroyNotify,
4562    ) -> *mut GstBuffer;
4563    #[cfg(feature = "v1_20")]
4564    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4565    pub fn gst_buffer_add_custom_meta(
4566        buffer: *mut GstBuffer,
4567        name: *const c_char,
4568    ) -> *mut GstCustomMeta;
4569    pub fn gst_buffer_add_meta(
4570        buffer: *mut GstBuffer,
4571        info: *const GstMetaInfo,
4572        params: gpointer,
4573    ) -> *mut GstMeta;
4574    pub fn gst_buffer_add_parent_buffer_meta(
4575        buffer: *mut GstBuffer,
4576        ref_: *mut GstBuffer,
4577    ) -> *mut GstParentBufferMeta;
4578    pub fn gst_buffer_add_protection_meta(
4579        buffer: *mut GstBuffer,
4580        info: *mut GstStructure,
4581    ) -> *mut GstProtectionMeta;
4582    pub fn gst_buffer_add_reference_timestamp_meta(
4583        buffer: *mut GstBuffer,
4584        reference: *mut GstCaps,
4585        timestamp: GstClockTime,
4586        duration: GstClockTime,
4587    ) -> *mut GstReferenceTimestampMeta;
4588    pub fn gst_buffer_append(buf1: *mut GstBuffer, buf2: *mut GstBuffer) -> *mut GstBuffer;
4589    pub fn gst_buffer_append_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4590    pub fn gst_buffer_append_region(
4591        buf1: *mut GstBuffer,
4592        buf2: *mut GstBuffer,
4593        offset: ssize_t,
4594        size: ssize_t,
4595    ) -> *mut GstBuffer;
4596    #[cfg(feature = "v1_18_3")]
4597    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4598    pub fn gst_buffer_copy(buf: *const GstBuffer) -> *mut GstBuffer;
4599    pub fn gst_buffer_copy_deep(buf: *const GstBuffer) -> *mut GstBuffer;
4600    pub fn gst_buffer_copy_into(
4601        dest: *mut GstBuffer,
4602        src: *mut GstBuffer,
4603        flags: GstBufferCopyFlags,
4604        offset: size_t,
4605        size: size_t,
4606    ) -> gboolean;
4607    pub fn gst_buffer_copy_region(
4608        parent: *mut GstBuffer,
4609        flags: GstBufferCopyFlags,
4610        offset: size_t,
4611        size: size_t,
4612    ) -> *mut GstBuffer;
4613    pub fn gst_buffer_extract(
4614        buffer: *mut GstBuffer,
4615        offset: size_t,
4616        dest: gpointer,
4617        size: size_t,
4618    ) -> size_t;
4619    pub fn gst_buffer_extract_dup(
4620        buffer: *mut GstBuffer,
4621        offset: size_t,
4622        size: size_t,
4623        dest: *mut u8,
4624        dest_size: *mut size_t,
4625    );
4626    pub fn gst_buffer_fill(
4627        buffer: *mut GstBuffer,
4628        offset: size_t,
4629        src: gconstpointer,
4630        size: size_t,
4631    ) -> size_t;
4632    pub fn gst_buffer_find_memory(
4633        buffer: *mut GstBuffer,
4634        offset: size_t,
4635        size: size_t,
4636        idx: *mut c_uint,
4637        length: *mut c_uint,
4638        skip: *mut size_t,
4639    ) -> gboolean;
4640    pub fn gst_buffer_foreach_meta(
4641        buffer: *mut GstBuffer,
4642        func: GstBufferForeachMetaFunc,
4643        user_data: gpointer,
4644    ) -> gboolean;
4645    pub fn gst_buffer_get_all_memory(buffer: *mut GstBuffer) -> *mut GstMemory;
4646    #[cfg(feature = "v1_20")]
4647    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4648    pub fn gst_buffer_get_custom_meta(
4649        buffer: *mut GstBuffer,
4650        name: *const c_char,
4651    ) -> *mut GstCustomMeta;
4652    pub fn gst_buffer_get_flags(buffer: *mut GstBuffer) -> GstBufferFlags;
4653    pub fn gst_buffer_get_memory(buffer: *mut GstBuffer, idx: c_uint) -> *mut GstMemory;
4654    pub fn gst_buffer_get_memory_range(
4655        buffer: *mut GstBuffer,
4656        idx: c_uint,
4657        length: c_int,
4658    ) -> *mut GstMemory;
4659    pub fn gst_buffer_get_meta(buffer: *mut GstBuffer, api: GType) -> *mut GstMeta;
4660    pub fn gst_buffer_get_n_meta(buffer: *mut GstBuffer, api_type: GType) -> c_uint;
4661    pub fn gst_buffer_get_reference_timestamp_meta(
4662        buffer: *mut GstBuffer,
4663        reference: *mut GstCaps,
4664    ) -> *mut GstReferenceTimestampMeta;
4665    pub fn gst_buffer_get_size(buffer: *mut GstBuffer) -> size_t;
4666    pub fn gst_buffer_get_sizes(
4667        buffer: *mut GstBuffer,
4668        offset: *mut size_t,
4669        maxsize: *mut size_t,
4670    ) -> size_t;
4671    pub fn gst_buffer_get_sizes_range(
4672        buffer: *mut GstBuffer,
4673        idx: c_uint,
4674        length: c_int,
4675        offset: *mut size_t,
4676        maxsize: *mut size_t,
4677    ) -> size_t;
4678    pub fn gst_buffer_has_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4679    pub fn gst_buffer_insert_memory(buffer: *mut GstBuffer, idx: c_int, mem: *mut GstMemory);
4680    pub fn gst_buffer_is_all_memory_writable(buffer: *mut GstBuffer) -> gboolean;
4681    pub fn gst_buffer_is_memory_range_writable(
4682        buffer: *mut GstBuffer,
4683        idx: c_uint,
4684        length: c_int,
4685    ) -> gboolean;
4686    pub fn gst_buffer_iterate_meta(buffer: *mut GstBuffer, state: *mut gpointer) -> *mut GstMeta;
4687    pub fn gst_buffer_iterate_meta_filtered(
4688        buffer: *mut GstBuffer,
4689        state: *mut gpointer,
4690        meta_api_type: GType,
4691    ) -> *mut GstMeta;
4692    pub fn gst_buffer_map(
4693        buffer: *mut GstBuffer,
4694        info: *mut GstMapInfo,
4695        flags: GstMapFlags,
4696    ) -> gboolean;
4697    pub fn gst_buffer_map_range(
4698        buffer: *mut GstBuffer,
4699        idx: c_uint,
4700        length: c_int,
4701        info: *mut GstMapInfo,
4702        flags: GstMapFlags,
4703    ) -> gboolean;
4704    pub fn gst_buffer_memcmp(
4705        buffer: *mut GstBuffer,
4706        offset: size_t,
4707        mem: gconstpointer,
4708        size: size_t,
4709    ) -> c_int;
4710    pub fn gst_buffer_memset(
4711        buffer: *mut GstBuffer,
4712        offset: size_t,
4713        val: u8,
4714        size: size_t,
4715    ) -> size_t;
4716    pub fn gst_buffer_n_memory(buffer: *mut GstBuffer) -> c_uint;
4717    pub fn gst_buffer_peek_memory(buffer: *mut GstBuffer, idx: c_uint) -> *mut GstMemory;
4718    pub fn gst_buffer_prepend_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4719    #[cfg(feature = "v1_18_3")]
4720    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4721    pub fn gst_buffer_ref(buf: *mut GstBuffer) -> *mut GstBuffer;
4722    pub fn gst_buffer_remove_all_memory(buffer: *mut GstBuffer);
4723    pub fn gst_buffer_remove_memory(buffer: *mut GstBuffer, idx: c_uint);
4724    pub fn gst_buffer_remove_memory_range(buffer: *mut GstBuffer, idx: c_uint, length: c_int);
4725    pub fn gst_buffer_remove_meta(buffer: *mut GstBuffer, meta: *mut GstMeta) -> gboolean;
4726    pub fn gst_buffer_replace_all_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4727    pub fn gst_buffer_replace_memory(buffer: *mut GstBuffer, idx: c_uint, mem: *mut GstMemory);
4728    pub fn gst_buffer_replace_memory_range(
4729        buffer: *mut GstBuffer,
4730        idx: c_uint,
4731        length: c_int,
4732        mem: *mut GstMemory,
4733    );
4734    pub fn gst_buffer_resize(buffer: *mut GstBuffer, offset: ssize_t, size: ssize_t);
4735    pub fn gst_buffer_resize_range(
4736        buffer: *mut GstBuffer,
4737        idx: c_uint,
4738        length: c_int,
4739        offset: ssize_t,
4740        size: ssize_t,
4741    ) -> gboolean;
4742    pub fn gst_buffer_set_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4743    pub fn gst_buffer_set_size(buffer: *mut GstBuffer, size: ssize_t);
4744    pub fn gst_buffer_unmap(buffer: *mut GstBuffer, info: *mut GstMapInfo);
4745    #[cfg(feature = "v1_18_3")]
4746    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4747    pub fn gst_buffer_unref(buf: *mut GstBuffer);
4748    pub fn gst_buffer_unset_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4749    pub fn gst_buffer_get_max_memory() -> c_uint;
4750    #[cfg(feature = "v1_18_3")]
4751    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4752    pub fn gst_buffer_replace(obuf: *mut *mut GstBuffer, nbuf: *mut GstBuffer) -> gboolean;
4753
4754    //=========================================================================
4755    // GstBufferList
4756    //=========================================================================
4757    pub fn gst_buffer_list_get_type() -> GType;
4758    pub fn gst_buffer_list_new() -> *mut GstBufferList;
4759    pub fn gst_buffer_list_new_sized(size: c_uint) -> *mut GstBufferList;
4760    pub fn gst_buffer_list_calculate_size(list: *mut GstBufferList) -> size_t;
4761    #[cfg(feature = "v1_18_3")]
4762    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4763    pub fn gst_buffer_list_copy(list: *const GstBufferList) -> *mut GstBufferList;
4764    pub fn gst_buffer_list_copy_deep(list: *const GstBufferList) -> *mut GstBufferList;
4765    pub fn gst_buffer_list_foreach(
4766        list: *mut GstBufferList,
4767        func: GstBufferListFunc,
4768        user_data: gpointer,
4769    ) -> gboolean;
4770    pub fn gst_buffer_list_get(list: *mut GstBufferList, idx: c_uint) -> *mut GstBuffer;
4771    pub fn gst_buffer_list_get_writable(list: *mut GstBufferList, idx: c_uint) -> *mut GstBuffer;
4772    pub fn gst_buffer_list_insert(list: *mut GstBufferList, idx: c_int, buffer: *mut GstBuffer);
4773    pub fn gst_buffer_list_length(list: *mut GstBufferList) -> c_uint;
4774    #[cfg(feature = "v1_18_3")]
4775    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4776    pub fn gst_buffer_list_ref(list: *mut GstBufferList) -> *mut GstBufferList;
4777    pub fn gst_buffer_list_remove(list: *mut GstBufferList, idx: c_uint, length: c_uint);
4778    #[cfg(feature = "v1_18_3")]
4779    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4780    pub fn gst_buffer_list_unref(list: *mut GstBufferList);
4781    #[cfg(feature = "v1_18_3")]
4782    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4783    pub fn gst_buffer_list_replace(
4784        old_list: *mut *mut GstBufferList,
4785        new_list: *mut GstBufferList,
4786    ) -> gboolean;
4787    #[cfg(feature = "v1_18_3")]
4788    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4789    pub fn gst_buffer_list_take(
4790        old_list: *mut *mut GstBufferList,
4791        new_list: *mut GstBufferList,
4792    ) -> gboolean;
4793
4794    //=========================================================================
4795    // GstCaps
4796    //=========================================================================
4797    pub fn gst_caps_get_type() -> GType;
4798    pub fn gst_caps_new_any() -> *mut GstCaps;
4799    pub fn gst_caps_new_empty() -> *mut GstCaps;
4800    pub fn gst_caps_new_empty_simple(media_type: *const c_char) -> *mut GstCaps;
4801    pub fn gst_caps_new_full(struct1: *mut GstStructure, ...) -> *mut GstCaps;
4802    //pub fn gst_caps_new_full_valist(structure: *mut GstStructure, var_args: /*Unimplemented*/va_list) -> *mut GstCaps;
4803    #[cfg(feature = "v1_26")]
4804    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4805    pub fn gst_caps_new_id_str_empty_simple(media_type: *const GstIdStr) -> *mut GstCaps;
4806    #[cfg(feature = "v1_26")]
4807    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4808    pub fn gst_caps_new_id_str_simple(
4809        media_type: *const GstIdStr,
4810        fieldname: *const GstIdStr,
4811        ...
4812    ) -> *mut GstCaps;
4813    pub fn gst_caps_new_simple(
4814        media_type: *const c_char,
4815        fieldname: *const c_char,
4816        ...
4817    ) -> *mut GstCaps;
4818    #[cfg(feature = "v1_26")]
4819    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4820    pub fn gst_caps_new_static_str_empty_simple(media_type: *const c_char) -> *mut GstCaps;
4821    #[cfg(feature = "v1_26")]
4822    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4823    pub fn gst_caps_new_static_str_simple(
4824        media_type: *const c_char,
4825        fieldname: *const c_char,
4826        ...
4827    ) -> *mut GstCaps;
4828    pub fn gst_caps_append(caps1: *mut GstCaps, caps2: *mut GstCaps);
4829    pub fn gst_caps_append_structure(caps: *mut GstCaps, structure: *mut GstStructure);
4830    pub fn gst_caps_append_structure_full(
4831        caps: *mut GstCaps,
4832        structure: *mut GstStructure,
4833        features: *mut GstCapsFeatures,
4834    );
4835    pub fn gst_caps_can_intersect(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4836    #[cfg(feature = "v1_16")]
4837    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4838    pub fn gst_caps_copy(caps: *const GstCaps) -> *mut GstCaps;
4839    #[cfg(feature = "v1_16")]
4840    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4841    pub fn gst_caps_copy_nth(caps: *const GstCaps, nth: c_uint) -> *mut GstCaps;
4842    pub fn gst_caps_filter_and_map_in_place(
4843        caps: *mut GstCaps,
4844        func: GstCapsFilterMapFunc,
4845        user_data: gpointer,
4846    );
4847    pub fn gst_caps_fixate(caps: *mut GstCaps) -> *mut GstCaps;
4848    pub fn gst_caps_foreach(
4849        caps: *const GstCaps,
4850        func: GstCapsForeachFunc,
4851        user_data: gpointer,
4852    ) -> gboolean;
4853    pub fn gst_caps_get_features(caps: *const GstCaps, index: c_uint) -> *mut GstCapsFeatures;
4854    pub fn gst_caps_get_size(caps: *const GstCaps) -> c_uint;
4855    pub fn gst_caps_get_structure(caps: *const GstCaps, index: c_uint) -> *mut GstStructure;
4856    #[cfg(feature = "v1_26")]
4857    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4858    pub fn gst_caps_id_str_set_simple(caps: *mut GstCaps, field: *const GstIdStr, ...);
4859    //#[cfg(feature = "v1_26")]
4860    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4861    //pub fn gst_caps_id_str_set_simple_valist(caps: *mut GstCaps, field: *const GstIdStr, varargs: /*Unimplemented*/va_list);
4862    #[cfg(feature = "v1_26")]
4863    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4864    pub fn gst_caps_id_str_set_value(
4865        caps: *mut GstCaps,
4866        field: *const GstIdStr,
4867        value: *const gobject::GValue,
4868    );
4869    pub fn gst_caps_intersect(caps1: *mut GstCaps, caps2: *mut GstCaps) -> *mut GstCaps;
4870    pub fn gst_caps_intersect_full(
4871        caps1: *mut GstCaps,
4872        caps2: *mut GstCaps,
4873        mode: GstCapsIntersectMode,
4874    ) -> *mut GstCaps;
4875    pub fn gst_caps_is_always_compatible(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4876    pub fn gst_caps_is_any(caps: *const GstCaps) -> gboolean;
4877    pub fn gst_caps_is_empty(caps: *const GstCaps) -> gboolean;
4878    pub fn gst_caps_is_equal(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4879    pub fn gst_caps_is_equal_fixed(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4880    pub fn gst_caps_is_fixed(caps: *const GstCaps) -> gboolean;
4881    pub fn gst_caps_is_strictly_equal(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4882    pub fn gst_caps_is_subset(subset: *const GstCaps, superset: *const GstCaps) -> gboolean;
4883    pub fn gst_caps_is_subset_structure(
4884        caps: *const GstCaps,
4885        structure: *const GstStructure,
4886    ) -> gboolean;
4887    pub fn gst_caps_is_subset_structure_full(
4888        caps: *const GstCaps,
4889        structure: *const GstStructure,
4890        features: *const GstCapsFeatures,
4891    ) -> gboolean;
4892    pub fn gst_caps_map_in_place(
4893        caps: *mut GstCaps,
4894        func: GstCapsMapFunc,
4895        user_data: gpointer,
4896    ) -> gboolean;
4897    pub fn gst_caps_merge(caps1: *mut GstCaps, caps2: *mut GstCaps) -> *mut GstCaps;
4898    pub fn gst_caps_merge_structure(
4899        caps: *mut GstCaps,
4900        structure: *mut GstStructure,
4901    ) -> *mut GstCaps;
4902    pub fn gst_caps_merge_structure_full(
4903        caps: *mut GstCaps,
4904        structure: *mut GstStructure,
4905        features: *mut GstCapsFeatures,
4906    ) -> *mut GstCaps;
4907    pub fn gst_caps_normalize(caps: *mut GstCaps) -> *mut GstCaps;
4908    #[cfg(feature = "v1_18_3")]
4909    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4910    pub fn gst_caps_ref(caps: *mut GstCaps) -> *mut GstCaps;
4911    pub fn gst_caps_remove_structure(caps: *mut GstCaps, idx: c_uint);
4912    #[cfg(feature = "v1_20")]
4913    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4914    pub fn gst_caps_serialize(caps: *const GstCaps, flags: GstSerializeFlags) -> *mut c_char;
4915    pub fn gst_caps_set_features(caps: *mut GstCaps, index: c_uint, features: *mut GstCapsFeatures);
4916    #[cfg(feature = "v1_16")]
4917    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4918    pub fn gst_caps_set_features_simple(caps: *mut GstCaps, features: *mut GstCapsFeatures);
4919    pub fn gst_caps_set_simple(caps: *mut GstCaps, field: *const c_char, ...);
4920    #[cfg(feature = "v1_26")]
4921    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4922    pub fn gst_caps_set_simple_static_str(caps: *mut GstCaps, field: *const c_char, ...);
4923    //#[cfg(feature = "v1_26")]
4924    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4925    //pub fn gst_caps_set_simple_static_str_valist(caps: *mut GstCaps, field: *const c_char, varargs: /*Unimplemented*/va_list);
4926    //pub fn gst_caps_set_simple_valist(caps: *mut GstCaps, field: *const c_char, varargs: /*Unimplemented*/va_list);
4927    pub fn gst_caps_set_value(
4928        caps: *mut GstCaps,
4929        field: *const c_char,
4930        value: *const gobject::GValue,
4931    );
4932    #[cfg(feature = "v1_26")]
4933    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4934    pub fn gst_caps_set_value_static_str(
4935        caps: *mut GstCaps,
4936        field: *const c_char,
4937        value: *const gobject::GValue,
4938    );
4939    pub fn gst_caps_simplify(caps: *mut GstCaps) -> *mut GstCaps;
4940    pub fn gst_caps_steal_structure(caps: *mut GstCaps, index: c_uint) -> *mut GstStructure;
4941    pub fn gst_caps_subtract(minuend: *mut GstCaps, subtrahend: *mut GstCaps) -> *mut GstCaps;
4942    pub fn gst_caps_to_string(caps: *const GstCaps) -> *mut c_char;
4943    pub fn gst_caps_truncate(caps: *mut GstCaps) -> *mut GstCaps;
4944    #[cfg(feature = "v1_18_3")]
4945    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4946    pub fn gst_caps_unref(caps: *mut GstCaps);
4947    pub fn gst_caps_from_string(string: *const c_char) -> *mut GstCaps;
4948    #[cfg(feature = "v1_18_3")]
4949    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4950    pub fn gst_caps_replace(old_caps: *mut *mut GstCaps, new_caps: *mut GstCaps) -> gboolean;
4951    #[cfg(feature = "v1_18_3")]
4952    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4953    pub fn gst_caps_take(old_caps: *mut *mut GstCaps, new_caps: *mut GstCaps) -> gboolean;
4954
4955    //=========================================================================
4956    // GstCapsFeatures
4957    //=========================================================================
4958    pub fn gst_caps_features_get_type() -> GType;
4959    pub fn gst_caps_features_new(feature1: *const c_char, ...) -> *mut GstCapsFeatures;
4960    pub fn gst_caps_features_new_any() -> *mut GstCapsFeatures;
4961    pub fn gst_caps_features_new_empty() -> *mut GstCapsFeatures;
4962    pub fn gst_caps_features_new_id(feature1: glib::GQuark, ...) -> *mut GstCapsFeatures;
4963    #[cfg(feature = "v1_26")]
4964    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4965    pub fn gst_caps_features_new_id_str(feature1: *const GstIdStr, ...) -> *mut GstCapsFeatures;
4966    //#[cfg(feature = "v1_26")]
4967    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4968    //pub fn gst_caps_features_new_id_str_valist(feature1: *const GstIdStr, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
4969    //pub fn gst_caps_features_new_id_valist(feature1: glib::GQuark, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
4970    #[cfg(feature = "v1_20")]
4971    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4972    pub fn gst_caps_features_new_single(feature: *const c_char) -> *mut GstCapsFeatures;
4973    #[cfg(feature = "v1_26")]
4974    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4975    pub fn gst_caps_features_new_single_static_str(feature: *const c_char) -> *mut GstCapsFeatures;
4976    #[cfg(feature = "v1_26")]
4977    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4978    pub fn gst_caps_features_new_static_str(feature1: *const c_char, ...) -> *mut GstCapsFeatures;
4979    //#[cfg(feature = "v1_26")]
4980    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4981    //pub fn gst_caps_features_new_static_str_valist(feature1: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
4982    //pub fn gst_caps_features_new_valist(feature1: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
4983    pub fn gst_caps_features_add(features: *mut GstCapsFeatures, feature: *const c_char);
4984    pub fn gst_caps_features_add_id(features: *mut GstCapsFeatures, feature: glib::GQuark);
4985    #[cfg(feature = "v1_26")]
4986    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4987    pub fn gst_caps_features_add_id_str(features: *mut GstCapsFeatures, feature: *const GstIdStr);
4988    #[cfg(feature = "v1_26")]
4989    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4990    pub fn gst_caps_features_add_static_str(features: *mut GstCapsFeatures, feature: *const c_char);
4991    pub fn gst_caps_features_contains(
4992        features: *const GstCapsFeatures,
4993        feature: *const c_char,
4994    ) -> gboolean;
4995    pub fn gst_caps_features_contains_id(
4996        features: *const GstCapsFeatures,
4997        feature: glib::GQuark,
4998    ) -> gboolean;
4999    #[cfg(feature = "v1_26")]
5000    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5001    pub fn gst_caps_features_contains_id_str(
5002        features: *const GstCapsFeatures,
5003        feature: *const GstIdStr,
5004    ) -> gboolean;
5005    pub fn gst_caps_features_copy(features: *const GstCapsFeatures) -> *mut GstCapsFeatures;
5006    pub fn gst_caps_features_free(features: *mut GstCapsFeatures);
5007    pub fn gst_caps_features_get_nth(features: *const GstCapsFeatures, i: c_uint) -> *const c_char;
5008    pub fn gst_caps_features_get_nth_id(
5009        features: *const GstCapsFeatures,
5010        i: c_uint,
5011    ) -> glib::GQuark;
5012    #[cfg(feature = "v1_26")]
5013    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5014    pub fn gst_caps_features_get_nth_id_str(
5015        features: *const GstCapsFeatures,
5016        i: c_uint,
5017    ) -> *const GstIdStr;
5018    pub fn gst_caps_features_get_size(features: *const GstCapsFeatures) -> c_uint;
5019    pub fn gst_caps_features_is_any(features: *const GstCapsFeatures) -> gboolean;
5020    pub fn gst_caps_features_is_equal(
5021        features1: *const GstCapsFeatures,
5022        features2: *const GstCapsFeatures,
5023    ) -> gboolean;
5024    pub fn gst_caps_features_remove(features: *mut GstCapsFeatures, feature: *const c_char);
5025    pub fn gst_caps_features_remove_id(features: *mut GstCapsFeatures, feature: glib::GQuark);
5026    #[cfg(feature = "v1_26")]
5027    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5028    pub fn gst_caps_features_remove_id_str(
5029        features: *mut GstCapsFeatures,
5030        feature: *const GstIdStr,
5031    );
5032    pub fn gst_caps_features_set_parent_refcount(
5033        features: *mut GstCapsFeatures,
5034        refcount: *mut c_int,
5035    ) -> gboolean;
5036    pub fn gst_caps_features_to_string(features: *const GstCapsFeatures) -> *mut c_char;
5037    pub fn gst_caps_features_from_string(features: *const c_char) -> *mut GstCapsFeatures;
5038
5039    //=========================================================================
5040    // GstContext
5041    //=========================================================================
5042    pub fn gst_context_get_type() -> GType;
5043    pub fn gst_context_new(context_type: *const c_char, persistent: gboolean) -> *mut GstContext;
5044    #[cfg(feature = "v1_18_3")]
5045    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5046    pub fn gst_context_copy(context: *const GstContext) -> *mut GstContext;
5047    pub fn gst_context_get_context_type(context: *const GstContext) -> *const c_char;
5048    pub fn gst_context_get_structure(context: *const GstContext) -> *const GstStructure;
5049    pub fn gst_context_has_context_type(
5050        context: *const GstContext,
5051        context_type: *const c_char,
5052    ) -> gboolean;
5053    pub fn gst_context_is_persistent(context: *const GstContext) -> gboolean;
5054    #[cfg(feature = "v1_18_3")]
5055    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5056    pub fn gst_context_ref(context: *mut GstContext) -> *mut GstContext;
5057    #[cfg(feature = "v1_18_3")]
5058    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5059    pub fn gst_context_unref(context: *mut GstContext);
5060    pub fn gst_context_writable_structure(context: *mut GstContext) -> *mut GstStructure;
5061    #[cfg(feature = "v1_18_3")]
5062    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5063    pub fn gst_context_replace(
5064        old_context: *mut *mut GstContext,
5065        new_context: *mut GstContext,
5066    ) -> gboolean;
5067
5068    //=========================================================================
5069    // GstCustomMeta
5070    //=========================================================================
5071    #[cfg(feature = "v1_20")]
5072    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5073    pub fn gst_custom_meta_get_structure(meta: *mut GstCustomMeta) -> *mut GstStructure;
5074    #[cfg(feature = "v1_20")]
5075    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5076    pub fn gst_custom_meta_has_name(meta: *mut GstCustomMeta, name: *const c_char) -> gboolean;
5077
5078    //=========================================================================
5079    // GstDateTime
5080    //=========================================================================
5081    pub fn gst_date_time_get_type() -> GType;
5082    pub fn gst_date_time_new(
5083        tzoffset: c_float,
5084        year: c_int,
5085        month: c_int,
5086        day: c_int,
5087        hour: c_int,
5088        minute: c_int,
5089        seconds: c_double,
5090    ) -> *mut GstDateTime;
5091    pub fn gst_date_time_new_from_g_date_time(dt: *mut glib::GDateTime) -> *mut GstDateTime;
5092    pub fn gst_date_time_new_from_iso8601_string(string: *const c_char) -> *mut GstDateTime;
5093    pub fn gst_date_time_new_from_unix_epoch_local_time(secs: i64) -> *mut GstDateTime;
5094    #[cfg(feature = "v1_18")]
5095    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5096    pub fn gst_date_time_new_from_unix_epoch_local_time_usecs(usecs: i64) -> *mut GstDateTime;
5097    pub fn gst_date_time_new_from_unix_epoch_utc(secs: i64) -> *mut GstDateTime;
5098    #[cfg(feature = "v1_18")]
5099    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5100    pub fn gst_date_time_new_from_unix_epoch_utc_usecs(usecs: i64) -> *mut GstDateTime;
5101    pub fn gst_date_time_new_local_time(
5102        year: c_int,
5103        month: c_int,
5104        day: c_int,
5105        hour: c_int,
5106        minute: c_int,
5107        seconds: c_double,
5108    ) -> *mut GstDateTime;
5109    pub fn gst_date_time_new_now_local_time() -> *mut GstDateTime;
5110    pub fn gst_date_time_new_now_utc() -> *mut GstDateTime;
5111    pub fn gst_date_time_new_y(year: c_int) -> *mut GstDateTime;
5112    pub fn gst_date_time_new_ym(year: c_int, month: c_int) -> *mut GstDateTime;
5113    pub fn gst_date_time_new_ymd(year: c_int, month: c_int, day: c_int) -> *mut GstDateTime;
5114    pub fn gst_date_time_get_day(datetime: *const GstDateTime) -> c_int;
5115    pub fn gst_date_time_get_hour(datetime: *const GstDateTime) -> c_int;
5116    pub fn gst_date_time_get_microsecond(datetime: *const GstDateTime) -> c_int;
5117    pub fn gst_date_time_get_minute(datetime: *const GstDateTime) -> c_int;
5118    pub fn gst_date_time_get_month(datetime: *const GstDateTime) -> c_int;
5119    pub fn gst_date_time_get_second(datetime: *const GstDateTime) -> c_int;
5120    pub fn gst_date_time_get_time_zone_offset(datetime: *const GstDateTime) -> c_float;
5121    pub fn gst_date_time_get_year(datetime: *const GstDateTime) -> c_int;
5122    pub fn gst_date_time_has_day(datetime: *const GstDateTime) -> gboolean;
5123    pub fn gst_date_time_has_month(datetime: *const GstDateTime) -> gboolean;
5124    pub fn gst_date_time_has_second(datetime: *const GstDateTime) -> gboolean;
5125    pub fn gst_date_time_has_time(datetime: *const GstDateTime) -> gboolean;
5126    pub fn gst_date_time_has_year(datetime: *const GstDateTime) -> gboolean;
5127    pub fn gst_date_time_ref(datetime: *mut GstDateTime) -> *mut GstDateTime;
5128    pub fn gst_date_time_to_g_date_time(datetime: *mut GstDateTime) -> *mut glib::GDateTime;
5129    pub fn gst_date_time_to_iso8601_string(datetime: *mut GstDateTime) -> *mut c_char;
5130    pub fn gst_date_time_unref(datetime: *mut GstDateTime);
5131
5132    //=========================================================================
5133    // GstDebugCategory
5134    //=========================================================================
5135    pub fn gst_debug_category_free(category: *mut GstDebugCategory);
5136    pub fn gst_debug_category_get_color(category: *mut GstDebugCategory) -> c_uint;
5137    pub fn gst_debug_category_get_description(category: *mut GstDebugCategory) -> *const c_char;
5138    pub fn gst_debug_category_get_name(category: *mut GstDebugCategory) -> *const c_char;
5139    pub fn gst_debug_category_get_threshold(category: *mut GstDebugCategory) -> GstDebugLevel;
5140    pub fn gst_debug_category_reset_threshold(category: *mut GstDebugCategory);
5141    pub fn gst_debug_category_set_threshold(category: *mut GstDebugCategory, level: GstDebugLevel);
5142
5143    //=========================================================================
5144    // GstDebugMessage
5145    //=========================================================================
5146    pub fn gst_debug_message_get(message: *mut GstDebugMessage) -> *const c_char;
5147    #[cfg(feature = "v1_22")]
5148    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
5149    pub fn gst_debug_message_get_id(message: *mut GstDebugMessage) -> *const c_char;
5150
5151    //=========================================================================
5152    // GstDeviceProviderClass
5153    //=========================================================================
5154    pub fn gst_device_provider_class_add_metadata(
5155        klass: *mut GstDeviceProviderClass,
5156        key: *const c_char,
5157        value: *const c_char,
5158    );
5159    pub fn gst_device_provider_class_add_static_metadata(
5160        klass: *mut GstDeviceProviderClass,
5161        key: *const c_char,
5162        value: *const c_char,
5163    );
5164    pub fn gst_device_provider_class_get_metadata(
5165        klass: *mut GstDeviceProviderClass,
5166        key: *const c_char,
5167    ) -> *const c_char;
5168    pub fn gst_device_provider_class_set_metadata(
5169        klass: *mut GstDeviceProviderClass,
5170        longname: *const c_char,
5171        classification: *const c_char,
5172        description: *const c_char,
5173        author: *const c_char,
5174    );
5175    pub fn gst_device_provider_class_set_static_metadata(
5176        klass: *mut GstDeviceProviderClass,
5177        longname: *const c_char,
5178        classification: *const c_char,
5179        description: *const c_char,
5180        author: *const c_char,
5181    );
5182
5183    //=========================================================================
5184    // GstElementClass
5185    //=========================================================================
5186    pub fn gst_element_class_add_metadata(
5187        klass: *mut GstElementClass,
5188        key: *const c_char,
5189        value: *const c_char,
5190    );
5191    pub fn gst_element_class_add_pad_template(
5192        klass: *mut GstElementClass,
5193        templ: *mut GstPadTemplate,
5194    );
5195    pub fn gst_element_class_add_static_metadata(
5196        klass: *mut GstElementClass,
5197        key: *const c_char,
5198        value: *const c_char,
5199    );
5200    pub fn gst_element_class_add_static_pad_template(
5201        klass: *mut GstElementClass,
5202        static_templ: *mut GstStaticPadTemplate,
5203    );
5204    pub fn gst_element_class_add_static_pad_template_with_gtype(
5205        klass: *mut GstElementClass,
5206        static_templ: *mut GstStaticPadTemplate,
5207        pad_type: GType,
5208    );
5209    pub fn gst_element_class_get_metadata(
5210        klass: *mut GstElementClass,
5211        key: *const c_char,
5212    ) -> *const c_char;
5213    pub fn gst_element_class_get_pad_template(
5214        element_class: *mut GstElementClass,
5215        name: *const c_char,
5216    ) -> *mut GstPadTemplate;
5217    pub fn gst_element_class_get_pad_template_list(
5218        element_class: *mut GstElementClass,
5219    ) -> *mut glib::GList;
5220    pub fn gst_element_class_set_metadata(
5221        klass: *mut GstElementClass,
5222        longname: *const c_char,
5223        classification: *const c_char,
5224        description: *const c_char,
5225        author: *const c_char,
5226    );
5227    pub fn gst_element_class_set_static_metadata(
5228        klass: *mut GstElementClass,
5229        longname: *const c_char,
5230        classification: *const c_char,
5231        description: *const c_char,
5232        author: *const c_char,
5233    );
5234
5235    //=========================================================================
5236    // GstEvent
5237    //=========================================================================
5238    pub fn gst_event_get_type() -> GType;
5239    pub fn gst_event_new_buffer_size(
5240        format: GstFormat,
5241        minsize: i64,
5242        maxsize: i64,
5243        async_: gboolean,
5244    ) -> *mut GstEvent;
5245    pub fn gst_event_new_caps(caps: *mut GstCaps) -> *mut GstEvent;
5246    pub fn gst_event_new_custom(type_: GstEventType, structure: *mut GstStructure)
5247        -> *mut GstEvent;
5248    pub fn gst_event_new_eos() -> *mut GstEvent;
5249    pub fn gst_event_new_flush_start() -> *mut GstEvent;
5250    pub fn gst_event_new_flush_stop(reset_time: gboolean) -> *mut GstEvent;
5251    pub fn gst_event_new_gap(timestamp: GstClockTime, duration: GstClockTime) -> *mut GstEvent;
5252    #[cfg(feature = "v1_18")]
5253    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5254    pub fn gst_event_new_instant_rate_change(
5255        rate_multiplier: c_double,
5256        new_flags: GstSegmentFlags,
5257    ) -> *mut GstEvent;
5258    #[cfg(feature = "v1_18")]
5259    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5260    pub fn gst_event_new_instant_rate_sync_time(
5261        rate_multiplier: c_double,
5262        running_time: GstClockTime,
5263        upstream_running_time: GstClockTime,
5264    ) -> *mut GstEvent;
5265    pub fn gst_event_new_latency(latency: GstClockTime) -> *mut GstEvent;
5266    pub fn gst_event_new_navigation(structure: *mut GstStructure) -> *mut GstEvent;
5267    pub fn gst_event_new_protection(
5268        system_id: *const c_char,
5269        data: *mut GstBuffer,
5270        origin: *const c_char,
5271    ) -> *mut GstEvent;
5272    pub fn gst_event_new_qos(
5273        type_: GstQOSType,
5274        proportion: c_double,
5275        diff: GstClockTimeDiff,
5276        timestamp: GstClockTime,
5277    ) -> *mut GstEvent;
5278    pub fn gst_event_new_reconfigure() -> *mut GstEvent;
5279    pub fn gst_event_new_seek(
5280        rate: c_double,
5281        format: GstFormat,
5282        flags: GstSeekFlags,
5283        start_type: GstSeekType,
5284        start: i64,
5285        stop_type: GstSeekType,
5286        stop: i64,
5287    ) -> *mut GstEvent;
5288    pub fn gst_event_new_segment(segment: *const GstSegment) -> *mut GstEvent;
5289    pub fn gst_event_new_segment_done(format: GstFormat, position: i64) -> *mut GstEvent;
5290    pub fn gst_event_new_select_streams(streams: *mut glib::GList) -> *mut GstEvent;
5291    pub fn gst_event_new_sink_message(name: *const c_char, msg: *mut GstMessage) -> *mut GstEvent;
5292    pub fn gst_event_new_step(
5293        format: GstFormat,
5294        amount: u64,
5295        rate: c_double,
5296        flush: gboolean,
5297        intermediate: gboolean,
5298    ) -> *mut GstEvent;
5299    pub fn gst_event_new_stream_collection(collection: *mut GstStreamCollection) -> *mut GstEvent;
5300    pub fn gst_event_new_stream_group_done(group_id: c_uint) -> *mut GstEvent;
5301    pub fn gst_event_new_stream_start(stream_id: *const c_char) -> *mut GstEvent;
5302    pub fn gst_event_new_tag(taglist: *mut GstTagList) -> *mut GstEvent;
5303    pub fn gst_event_new_toc(toc: *mut GstToc, updated: gboolean) -> *mut GstEvent;
5304    pub fn gst_event_new_toc_select(uid: *const c_char) -> *mut GstEvent;
5305    #[cfg(feature = "v1_18_3")]
5306    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5307    pub fn gst_event_copy(event: *const GstEvent) -> *mut GstEvent;
5308    pub fn gst_event_copy_segment(event: *mut GstEvent, segment: *mut GstSegment);
5309    pub fn gst_event_get_running_time_offset(event: *mut GstEvent) -> i64;
5310    pub fn gst_event_get_seqnum(event: *mut GstEvent) -> u32;
5311    pub fn gst_event_get_structure(event: *mut GstEvent) -> *const GstStructure;
5312    pub fn gst_event_has_name(event: *mut GstEvent, name: *const c_char) -> gboolean;
5313    #[cfg(feature = "v1_18")]
5314    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5315    pub fn gst_event_has_name_id(event: *mut GstEvent, name: glib::GQuark) -> gboolean;
5316    pub fn gst_event_parse_buffer_size(
5317        event: *mut GstEvent,
5318        format: *mut GstFormat,
5319        minsize: *mut i64,
5320        maxsize: *mut i64,
5321        async_: *mut gboolean,
5322    );
5323    pub fn gst_event_parse_caps(event: *mut GstEvent, caps: *mut *mut GstCaps);
5324    pub fn gst_event_parse_flush_stop(event: *mut GstEvent, reset_time: *mut gboolean);
5325    pub fn gst_event_parse_gap(
5326        event: *mut GstEvent,
5327        timestamp: *mut GstClockTime,
5328        duration: *mut GstClockTime,
5329    );
5330    #[cfg(feature = "v1_20")]
5331    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5332    pub fn gst_event_parse_gap_flags(event: *mut GstEvent, flags: *mut GstGapFlags);
5333    pub fn gst_event_parse_group_id(event: *mut GstEvent, group_id: *mut c_uint) -> gboolean;
5334    #[cfg(feature = "v1_18")]
5335    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5336    pub fn gst_event_parse_instant_rate_change(
5337        event: *mut GstEvent,
5338        rate_multiplier: *mut c_double,
5339        new_flags: *mut GstSegmentFlags,
5340    );
5341    #[cfg(feature = "v1_18")]
5342    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5343    pub fn gst_event_parse_instant_rate_sync_time(
5344        event: *mut GstEvent,
5345        rate_multiplier: *mut c_double,
5346        running_time: *mut GstClockTime,
5347        upstream_running_time: *mut GstClockTime,
5348    );
5349    pub fn gst_event_parse_latency(event: *mut GstEvent, latency: *mut GstClockTime);
5350    pub fn gst_event_parse_protection(
5351        event: *mut GstEvent,
5352        system_id: *mut *const c_char,
5353        data: *mut *mut GstBuffer,
5354        origin: *mut *const c_char,
5355    );
5356    pub fn gst_event_parse_qos(
5357        event: *mut GstEvent,
5358        type_: *mut GstQOSType,
5359        proportion: *mut c_double,
5360        diff: *mut GstClockTimeDiff,
5361        timestamp: *mut GstClockTime,
5362    );
5363    pub fn gst_event_parse_seek(
5364        event: *mut GstEvent,
5365        rate: *mut c_double,
5366        format: *mut GstFormat,
5367        flags: *mut GstSeekFlags,
5368        start_type: *mut GstSeekType,
5369        start: *mut i64,
5370        stop_type: *mut GstSeekType,
5371        stop: *mut i64,
5372    );
5373    #[cfg(feature = "v1_16")]
5374    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5375    pub fn gst_event_parse_seek_trickmode_interval(
5376        event: *mut GstEvent,
5377        interval: *mut GstClockTime,
5378    );
5379    pub fn gst_event_parse_segment(event: *mut GstEvent, segment: *mut *const GstSegment);
5380    pub fn gst_event_parse_segment_done(
5381        event: *mut GstEvent,
5382        format: *mut GstFormat,
5383        position: *mut i64,
5384    );
5385    pub fn gst_event_parse_select_streams(event: *mut GstEvent, streams: *mut *mut glib::GList);
5386    pub fn gst_event_parse_sink_message(event: *mut GstEvent, msg: *mut *mut GstMessage);
5387    pub fn gst_event_parse_step(
5388        event: *mut GstEvent,
5389        format: *mut GstFormat,
5390        amount: *mut u64,
5391        rate: *mut c_double,
5392        flush: *mut gboolean,
5393        intermediate: *mut gboolean,
5394    );
5395    pub fn gst_event_parse_stream(event: *mut GstEvent, stream: *mut *mut GstStream);
5396    pub fn gst_event_parse_stream_collection(
5397        event: *mut GstEvent,
5398        collection: *mut *mut GstStreamCollection,
5399    );
5400    pub fn gst_event_parse_stream_flags(event: *mut GstEvent, flags: *mut GstStreamFlags);
5401    pub fn gst_event_parse_stream_group_done(event: *mut GstEvent, group_id: *mut c_uint);
5402    pub fn gst_event_parse_stream_start(event: *mut GstEvent, stream_id: *mut *const c_char);
5403    pub fn gst_event_parse_tag(event: *mut GstEvent, taglist: *mut *mut GstTagList);
5404    pub fn gst_event_parse_toc(event: *mut GstEvent, toc: *mut *mut GstToc, updated: *mut gboolean);
5405    pub fn gst_event_parse_toc_select(event: *mut GstEvent, uid: *mut *mut c_char);
5406    #[cfg(feature = "v1_18_3")]
5407    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5408    pub fn gst_event_ref(event: *mut GstEvent) -> *mut GstEvent;
5409    #[cfg(feature = "v1_20")]
5410    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5411    pub fn gst_event_set_gap_flags(event: *mut GstEvent, flags: GstGapFlags);
5412    pub fn gst_event_set_group_id(event: *mut GstEvent, group_id: c_uint);
5413    pub fn gst_event_set_running_time_offset(event: *mut GstEvent, offset: i64);
5414    #[cfg(feature = "v1_16")]
5415    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5416    pub fn gst_event_set_seek_trickmode_interval(event: *mut GstEvent, interval: GstClockTime);
5417    pub fn gst_event_set_seqnum(event: *mut GstEvent, seqnum: u32);
5418    pub fn gst_event_set_stream(event: *mut GstEvent, stream: *mut GstStream);
5419    pub fn gst_event_set_stream_flags(event: *mut GstEvent, flags: GstStreamFlags);
5420    #[cfg(feature = "v1_18_3")]
5421    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5422    pub fn gst_event_unref(event: *mut GstEvent);
5423    pub fn gst_event_writable_structure(event: *mut GstEvent) -> *mut GstStructure;
5424    #[cfg(feature = "v1_18_3")]
5425    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5426    pub fn gst_event_replace(old_event: *mut *mut GstEvent, new_event: *mut GstEvent) -> gboolean;
5427    #[cfg(feature = "v1_18_3")]
5428    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5429    pub fn gst_event_steal(old_event: *mut *mut GstEvent) -> *mut GstEvent;
5430    #[cfg(feature = "v1_18_3")]
5431    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5432    pub fn gst_event_take(old_event: *mut *mut GstEvent, new_event: *mut GstEvent) -> gboolean;
5433
5434    //=========================================================================
5435    // GstIdStr
5436    //=========================================================================
5437    #[cfg(feature = "v1_26")]
5438    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5439    pub fn gst_id_str_get_type() -> GType;
5440    #[cfg(feature = "v1_26")]
5441    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5442    pub fn gst_id_str_new() -> *mut GstIdStr;
5443    #[cfg(feature = "v1_26")]
5444    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5445    pub fn gst_id_str_as_str(s: *const GstIdStr) -> *const c_char;
5446    #[cfg(feature = "v1_26")]
5447    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5448    pub fn gst_id_str_clear(s: *mut GstIdStr);
5449    #[cfg(feature = "v1_26")]
5450    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5451    pub fn gst_id_str_copy(s: *const GstIdStr) -> *mut GstIdStr;
5452    #[cfg(feature = "v1_26")]
5453    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5454    pub fn gst_id_str_copy_into(d: *mut GstIdStr, s: *const GstIdStr);
5455    #[cfg(feature = "v1_26")]
5456    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5457    pub fn gst_id_str_free(s: *mut GstIdStr);
5458    #[cfg(feature = "v1_26")]
5459    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5460    pub fn gst_id_str_get_len(s: *const GstIdStr) -> size_t;
5461    #[cfg(feature = "v1_26")]
5462    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5463    pub fn gst_id_str_init(s: *mut GstIdStr);
5464    #[cfg(feature = "v1_26")]
5465    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5466    pub fn gst_id_str_is_equal(s1: *const GstIdStr, s2: *const GstIdStr) -> gboolean;
5467    #[cfg(feature = "v1_26")]
5468    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5469    pub fn gst_id_str_is_equal_to_str(s1: *const GstIdStr, s2: *const c_char) -> gboolean;
5470    #[cfg(feature = "v1_26")]
5471    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5472    pub fn gst_id_str_is_equal_to_str_with_len(
5473        s1: *const GstIdStr,
5474        s2: *const c_char,
5475        len: size_t,
5476    ) -> gboolean;
5477    #[cfg(feature = "v1_26")]
5478    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5479    pub fn gst_id_str_move(d: *mut GstIdStr, s: *mut GstIdStr);
5480    #[cfg(feature = "v1_26")]
5481    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5482    pub fn gst_id_str_set(s: *mut GstIdStr, value: *const c_char);
5483    #[cfg(feature = "v1_26")]
5484    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5485    pub fn gst_id_str_set_static_str(s: *mut GstIdStr, value: *const c_char);
5486    #[cfg(feature = "v1_26")]
5487    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5488    pub fn gst_id_str_set_static_str_with_len(s: *mut GstIdStr, value: *const c_char, len: size_t);
5489    #[cfg(feature = "v1_26")]
5490    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5491    pub fn gst_id_str_set_with_len(s: *mut GstIdStr, value: *const c_char, len: size_t);
5492
5493    //=========================================================================
5494    // GstIterator
5495    //=========================================================================
5496    pub fn gst_iterator_get_type() -> GType;
5497    pub fn gst_iterator_new(
5498        size: c_uint,
5499        type_: GType,
5500        lock: *mut glib::GMutex,
5501        master_cookie: *mut u32,
5502        copy: GstIteratorCopyFunction,
5503        next: GstIteratorNextFunction,
5504        item: GstIteratorItemFunction,
5505        resync: GstIteratorResyncFunction,
5506        free: GstIteratorFreeFunction,
5507    ) -> *mut GstIterator;
5508    pub fn gst_iterator_new_list(
5509        type_: GType,
5510        lock: *mut glib::GMutex,
5511        master_cookie: *mut u32,
5512        list: *mut *mut glib::GList,
5513        owner: *mut gobject::GObject,
5514        item: GstIteratorItemFunction,
5515    ) -> *mut GstIterator;
5516    pub fn gst_iterator_new_single(
5517        type_: GType,
5518        object: *const gobject::GValue,
5519    ) -> *mut GstIterator;
5520    pub fn gst_iterator_copy(it: *const GstIterator) -> *mut GstIterator;
5521    pub fn gst_iterator_filter(
5522        it: *mut GstIterator,
5523        func: glib::GCompareFunc,
5524        user_data: *const gobject::GValue,
5525    ) -> *mut GstIterator;
5526    pub fn gst_iterator_find_custom(
5527        it: *mut GstIterator,
5528        func: glib::GCompareFunc,
5529        elem: *mut gobject::GValue,
5530        user_data: gpointer,
5531    ) -> gboolean;
5532    pub fn gst_iterator_fold(
5533        it: *mut GstIterator,
5534        func: GstIteratorFoldFunction,
5535        ret: *mut gobject::GValue,
5536        user_data: gpointer,
5537    ) -> GstIteratorResult;
5538    pub fn gst_iterator_foreach(
5539        it: *mut GstIterator,
5540        func: GstIteratorForeachFunction,
5541        user_data: gpointer,
5542    ) -> GstIteratorResult;
5543    pub fn gst_iterator_free(it: *mut GstIterator);
5544    pub fn gst_iterator_next(it: *mut GstIterator, elem: *mut gobject::GValue)
5545        -> GstIteratorResult;
5546    pub fn gst_iterator_push(it: *mut GstIterator, other: *mut GstIterator);
5547    pub fn gst_iterator_resync(it: *mut GstIterator);
5548
5549    //=========================================================================
5550    // GstMemory
5551    //=========================================================================
5552    pub fn gst_memory_get_type() -> GType;
5553    pub fn gst_memory_new_wrapped(
5554        flags: GstMemoryFlags,
5555        data: gpointer,
5556        maxsize: size_t,
5557        offset: size_t,
5558        size: size_t,
5559        user_data: gpointer,
5560        notify: glib::GDestroyNotify,
5561    ) -> *mut GstMemory;
5562    pub fn gst_memory_copy(mem: *mut GstMemory, offset: ssize_t, size: ssize_t) -> *mut GstMemory;
5563    pub fn gst_memory_get_sizes(
5564        mem: *mut GstMemory,
5565        offset: *mut size_t,
5566        maxsize: *mut size_t,
5567    ) -> size_t;
5568    pub fn gst_memory_init(
5569        mem: *mut GstMemory,
5570        flags: GstMemoryFlags,
5571        allocator: *mut GstAllocator,
5572        parent: *mut GstMemory,
5573        maxsize: size_t,
5574        align: size_t,
5575        offset: size_t,
5576        size: size_t,
5577    );
5578    pub fn gst_memory_is_span(
5579        mem1: *mut GstMemory,
5580        mem2: *mut GstMemory,
5581        offset: *mut size_t,
5582    ) -> gboolean;
5583    pub fn gst_memory_is_type(mem: *mut GstMemory, mem_type: *const c_char) -> gboolean;
5584    pub fn gst_memory_make_mapped(
5585        mem: *mut GstMemory,
5586        info: *mut GstMapInfo,
5587        flags: GstMapFlags,
5588    ) -> *mut GstMemory;
5589    pub fn gst_memory_map(
5590        mem: *mut GstMemory,
5591        info: *mut GstMapInfo,
5592        flags: GstMapFlags,
5593    ) -> gboolean;
5594    #[cfg(feature = "v1_18_3")]
5595    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5596    pub fn gst_memory_ref(memory: *mut GstMemory) -> *mut GstMemory;
5597    pub fn gst_memory_resize(mem: *mut GstMemory, offset: ssize_t, size: size_t);
5598    pub fn gst_memory_share(mem: *mut GstMemory, offset: ssize_t, size: ssize_t) -> *mut GstMemory;
5599    pub fn gst_memory_unmap(mem: *mut GstMemory, info: *mut GstMapInfo);
5600    #[cfg(feature = "v1_18_3")]
5601    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5602    pub fn gst_memory_unref(memory: *mut GstMemory);
5603
5604    //=========================================================================
5605    // GstMessage
5606    //=========================================================================
5607    pub fn gst_message_get_type() -> GType;
5608    pub fn gst_message_new_application(
5609        src: *mut GstObject,
5610        structure: *mut GstStructure,
5611    ) -> *mut GstMessage;
5612    pub fn gst_message_new_async_done(
5613        src: *mut GstObject,
5614        running_time: GstClockTime,
5615    ) -> *mut GstMessage;
5616    pub fn gst_message_new_async_start(src: *mut GstObject) -> *mut GstMessage;
5617    pub fn gst_message_new_buffering(src: *mut GstObject, percent: c_int) -> *mut GstMessage;
5618    pub fn gst_message_new_clock_lost(src: *mut GstObject, clock: *mut GstClock)
5619        -> *mut GstMessage;
5620    pub fn gst_message_new_clock_provide(
5621        src: *mut GstObject,
5622        clock: *mut GstClock,
5623        ready: gboolean,
5624    ) -> *mut GstMessage;
5625    pub fn gst_message_new_custom(
5626        type_: GstMessageType,
5627        src: *mut GstObject,
5628        structure: *mut GstStructure,
5629    ) -> *mut GstMessage;
5630    pub fn gst_message_new_device_added(
5631        src: *mut GstObject,
5632        device: *mut GstDevice,
5633    ) -> *mut GstMessage;
5634    #[cfg(feature = "v1_16")]
5635    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5636    pub fn gst_message_new_device_changed(
5637        src: *mut GstObject,
5638        device: *mut GstDevice,
5639        changed_device: *mut GstDevice,
5640    ) -> *mut GstMessage;
5641    pub fn gst_message_new_device_removed(
5642        src: *mut GstObject,
5643        device: *mut GstDevice,
5644    ) -> *mut GstMessage;
5645    pub fn gst_message_new_duration_changed(src: *mut GstObject) -> *mut GstMessage;
5646    pub fn gst_message_new_element(
5647        src: *mut GstObject,
5648        structure: *mut GstStructure,
5649    ) -> *mut GstMessage;
5650    pub fn gst_message_new_eos(src: *mut GstObject) -> *mut GstMessage;
5651    pub fn gst_message_new_error(
5652        src: *mut GstObject,
5653        error: *mut glib::GError,
5654        debug: *const c_char,
5655    ) -> *mut GstMessage;
5656    pub fn gst_message_new_error_with_details(
5657        src: *mut GstObject,
5658        error: *mut glib::GError,
5659        debug: *const c_char,
5660        details: *mut GstStructure,
5661    ) -> *mut GstMessage;
5662    pub fn gst_message_new_have_context(
5663        src: *mut GstObject,
5664        context: *mut GstContext,
5665    ) -> *mut GstMessage;
5666    pub fn gst_message_new_info(
5667        src: *mut GstObject,
5668        error: *mut glib::GError,
5669        debug: *const c_char,
5670    ) -> *mut GstMessage;
5671    pub fn gst_message_new_info_with_details(
5672        src: *mut GstObject,
5673        error: *mut glib::GError,
5674        debug: *const c_char,
5675        details: *mut GstStructure,
5676    ) -> *mut GstMessage;
5677    #[cfg(feature = "v1_18")]
5678    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5679    pub fn gst_message_new_instant_rate_request(
5680        src: *mut GstObject,
5681        rate_multiplier: c_double,
5682    ) -> *mut GstMessage;
5683    pub fn gst_message_new_latency(src: *mut GstObject) -> *mut GstMessage;
5684    pub fn gst_message_new_need_context(
5685        src: *mut GstObject,
5686        context_type: *const c_char,
5687    ) -> *mut GstMessage;
5688    pub fn gst_message_new_new_clock(src: *mut GstObject, clock: *mut GstClock) -> *mut GstMessage;
5689    pub fn gst_message_new_progress(
5690        src: *mut GstObject,
5691        type_: GstProgressType,
5692        code: *const c_char,
5693        text: *const c_char,
5694    ) -> *mut GstMessage;
5695    pub fn gst_message_new_property_notify(
5696        src: *mut GstObject,
5697        property_name: *const c_char,
5698        val: *mut gobject::GValue,
5699    ) -> *mut GstMessage;
5700    pub fn gst_message_new_qos(
5701        src: *mut GstObject,
5702        live: gboolean,
5703        running_time: u64,
5704        stream_time: u64,
5705        timestamp: u64,
5706        duration: u64,
5707    ) -> *mut GstMessage;
5708    pub fn gst_message_new_redirect(
5709        src: *mut GstObject,
5710        location: *const c_char,
5711        tag_list: *mut GstTagList,
5712        entry_struct: *const GstStructure,
5713    ) -> *mut GstMessage;
5714    pub fn gst_message_new_request_state(src: *mut GstObject, state: GstState) -> *mut GstMessage;
5715    pub fn gst_message_new_reset_time(
5716        src: *mut GstObject,
5717        running_time: GstClockTime,
5718    ) -> *mut GstMessage;
5719    pub fn gst_message_new_segment_done(
5720        src: *mut GstObject,
5721        format: GstFormat,
5722        position: i64,
5723    ) -> *mut GstMessage;
5724    pub fn gst_message_new_segment_start(
5725        src: *mut GstObject,
5726        format: GstFormat,
5727        position: i64,
5728    ) -> *mut GstMessage;
5729    pub fn gst_message_new_state_changed(
5730        src: *mut GstObject,
5731        oldstate: GstState,
5732        newstate: GstState,
5733        pending: GstState,
5734    ) -> *mut GstMessage;
5735    pub fn gst_message_new_state_dirty(src: *mut GstObject) -> *mut GstMessage;
5736    pub fn gst_message_new_step_done(
5737        src: *mut GstObject,
5738        format: GstFormat,
5739        amount: u64,
5740        rate: c_double,
5741        flush: gboolean,
5742        intermediate: gboolean,
5743        duration: u64,
5744        eos: gboolean,
5745    ) -> *mut GstMessage;
5746    pub fn gst_message_new_step_start(
5747        src: *mut GstObject,
5748        active: gboolean,
5749        format: GstFormat,
5750        amount: u64,
5751        rate: c_double,
5752        flush: gboolean,
5753        intermediate: gboolean,
5754    ) -> *mut GstMessage;
5755    pub fn gst_message_new_stream_collection(
5756        src: *mut GstObject,
5757        collection: *mut GstStreamCollection,
5758    ) -> *mut GstMessage;
5759    pub fn gst_message_new_stream_start(src: *mut GstObject) -> *mut GstMessage;
5760    pub fn gst_message_new_stream_status(
5761        src: *mut GstObject,
5762        type_: GstStreamStatusType,
5763        owner: *mut GstElement,
5764    ) -> *mut GstMessage;
5765    pub fn gst_message_new_streams_selected(
5766        src: *mut GstObject,
5767        collection: *mut GstStreamCollection,
5768    ) -> *mut GstMessage;
5769    pub fn gst_message_new_structure_change(
5770        src: *mut GstObject,
5771        type_: GstStructureChangeType,
5772        owner: *mut GstElement,
5773        busy: gboolean,
5774    ) -> *mut GstMessage;
5775    pub fn gst_message_new_tag(src: *mut GstObject, tag_list: *mut GstTagList) -> *mut GstMessage;
5776    pub fn gst_message_new_toc(
5777        src: *mut GstObject,
5778        toc: *mut GstToc,
5779        updated: gboolean,
5780    ) -> *mut GstMessage;
5781    pub fn gst_message_new_warning(
5782        src: *mut GstObject,
5783        error: *mut glib::GError,
5784        debug: *const c_char,
5785    ) -> *mut GstMessage;
5786    pub fn gst_message_new_warning_with_details(
5787        src: *mut GstObject,
5788        error: *mut glib::GError,
5789        debug: *const c_char,
5790        details: *mut GstStructure,
5791    ) -> *mut GstMessage;
5792    pub fn gst_message_add_redirect_entry(
5793        message: *mut GstMessage,
5794        location: *const c_char,
5795        tag_list: *mut GstTagList,
5796        entry_struct: *const GstStructure,
5797    );
5798    #[cfg(feature = "v1_18_3")]
5799    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5800    pub fn gst_message_copy(msg: *const GstMessage) -> *mut GstMessage;
5801    #[cfg(feature = "v1_26")]
5802    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5803    pub fn gst_message_get_details(message: *mut GstMessage) -> *const GstStructure;
5804    pub fn gst_message_get_num_redirect_entries(message: *mut GstMessage) -> size_t;
5805    pub fn gst_message_get_seqnum(message: *mut GstMessage) -> u32;
5806    pub fn gst_message_get_stream_status_object(message: *mut GstMessage)
5807        -> *const gobject::GValue;
5808    pub fn gst_message_get_structure(message: *mut GstMessage) -> *const GstStructure;
5809    pub fn gst_message_has_name(message: *mut GstMessage, name: *const c_char) -> gboolean;
5810    pub fn gst_message_parse_async_done(message: *mut GstMessage, running_time: *mut GstClockTime);
5811    pub fn gst_message_parse_buffering(message: *mut GstMessage, percent: *mut c_int);
5812    pub fn gst_message_parse_buffering_stats(
5813        message: *mut GstMessage,
5814        mode: *mut GstBufferingMode,
5815        avg_in: *mut c_int,
5816        avg_out: *mut c_int,
5817        buffering_left: *mut i64,
5818    );
5819    pub fn gst_message_parse_clock_lost(message: *mut GstMessage, clock: *mut *mut GstClock);
5820    pub fn gst_message_parse_clock_provide(
5821        message: *mut GstMessage,
5822        clock: *mut *mut GstClock,
5823        ready: *mut gboolean,
5824    );
5825    pub fn gst_message_parse_context_type(
5826        message: *mut GstMessage,
5827        context_type: *mut *const c_char,
5828    ) -> gboolean;
5829    pub fn gst_message_parse_device_added(message: *mut GstMessage, device: *mut *mut GstDevice);
5830    #[cfg(feature = "v1_16")]
5831    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5832    pub fn gst_message_parse_device_changed(
5833        message: *mut GstMessage,
5834        device: *mut *mut GstDevice,
5835        changed_device: *mut *mut GstDevice,
5836    );
5837    pub fn gst_message_parse_device_removed(message: *mut GstMessage, device: *mut *mut GstDevice);
5838    pub fn gst_message_parse_error(
5839        message: *mut GstMessage,
5840        gerror: *mut *mut glib::GError,
5841        debug: *mut *mut c_char,
5842    );
5843    pub fn gst_message_parse_error_details(
5844        message: *mut GstMessage,
5845        structure: *mut *const GstStructure,
5846    );
5847    #[cfg(feature = "v1_26")]
5848    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5849    pub fn gst_message_parse_error_writable_details(
5850        message: *mut GstMessage,
5851        structure: *mut *mut GstStructure,
5852    );
5853    pub fn gst_message_parse_group_id(message: *mut GstMessage, group_id: *mut c_uint) -> gboolean;
5854    pub fn gst_message_parse_have_context(message: *mut GstMessage, context: *mut *mut GstContext);
5855    pub fn gst_message_parse_info(
5856        message: *mut GstMessage,
5857        gerror: *mut *mut glib::GError,
5858        debug: *mut *mut c_char,
5859    );
5860    pub fn gst_message_parse_info_details(
5861        message: *mut GstMessage,
5862        structure: *mut *const GstStructure,
5863    );
5864    #[cfg(feature = "v1_26")]
5865    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5866    pub fn gst_message_parse_info_writable_details(
5867        message: *mut GstMessage,
5868        structure: *mut *mut GstStructure,
5869    );
5870    #[cfg(feature = "v1_18")]
5871    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5872    pub fn gst_message_parse_instant_rate_request(
5873        message: *mut GstMessage,
5874        rate_multiplier: *mut c_double,
5875    );
5876    pub fn gst_message_parse_new_clock(message: *mut GstMessage, clock: *mut *mut GstClock);
5877    pub fn gst_message_parse_progress(
5878        message: *mut GstMessage,
5879        type_: *mut GstProgressType,
5880        code: *mut *mut c_char,
5881        text: *mut *mut c_char,
5882    );
5883    pub fn gst_message_parse_property_notify(
5884        message: *mut GstMessage,
5885        object: *mut *mut GstObject,
5886        property_name: *mut *const c_char,
5887        property_value: *mut *const gobject::GValue,
5888    );
5889    pub fn gst_message_parse_qos(
5890        message: *mut GstMessage,
5891        live: *mut gboolean,
5892        running_time: *mut u64,
5893        stream_time: *mut u64,
5894        timestamp: *mut u64,
5895        duration: *mut u64,
5896    );
5897    pub fn gst_message_parse_qos_stats(
5898        message: *mut GstMessage,
5899        format: *mut GstFormat,
5900        processed: *mut u64,
5901        dropped: *mut u64,
5902    );
5903    pub fn gst_message_parse_qos_values(
5904        message: *mut GstMessage,
5905        jitter: *mut i64,
5906        proportion: *mut c_double,
5907        quality: *mut c_int,
5908    );
5909    pub fn gst_message_parse_redirect_entry(
5910        message: *mut GstMessage,
5911        entry_index: size_t,
5912        location: *mut *const c_char,
5913        tag_list: *mut *mut GstTagList,
5914        entry_struct: *mut *const GstStructure,
5915    );
5916    pub fn gst_message_parse_request_state(message: *mut GstMessage, state: *mut GstState);
5917    pub fn gst_message_parse_reset_time(message: *mut GstMessage, running_time: *mut GstClockTime);
5918    pub fn gst_message_parse_segment_done(
5919        message: *mut GstMessage,
5920        format: *mut GstFormat,
5921        position: *mut i64,
5922    );
5923    pub fn gst_message_parse_segment_start(
5924        message: *mut GstMessage,
5925        format: *mut GstFormat,
5926        position: *mut i64,
5927    );
5928    pub fn gst_message_parse_state_changed(
5929        message: *mut GstMessage,
5930        oldstate: *mut GstState,
5931        newstate: *mut GstState,
5932        pending: *mut GstState,
5933    );
5934    pub fn gst_message_parse_step_done(
5935        message: *mut GstMessage,
5936        format: *mut GstFormat,
5937        amount: *mut u64,
5938        rate: *mut c_double,
5939        flush: *mut gboolean,
5940        intermediate: *mut gboolean,
5941        duration: *mut u64,
5942        eos: *mut gboolean,
5943    );
5944    pub fn gst_message_parse_step_start(
5945        message: *mut GstMessage,
5946        active: *mut gboolean,
5947        format: *mut GstFormat,
5948        amount: *mut u64,
5949        rate: *mut c_double,
5950        flush: *mut gboolean,
5951        intermediate: *mut gboolean,
5952    );
5953    pub fn gst_message_parse_stream_collection(
5954        message: *mut GstMessage,
5955        collection: *mut *mut GstStreamCollection,
5956    );
5957    pub fn gst_message_parse_stream_status(
5958        message: *mut GstMessage,
5959        type_: *mut GstStreamStatusType,
5960        owner: *mut *mut GstElement,
5961    );
5962    pub fn gst_message_parse_streams_selected(
5963        message: *mut GstMessage,
5964        collection: *mut *mut GstStreamCollection,
5965    );
5966    pub fn gst_message_parse_structure_change(
5967        message: *mut GstMessage,
5968        type_: *mut GstStructureChangeType,
5969        owner: *mut *mut GstElement,
5970        busy: *mut gboolean,
5971    );
5972    pub fn gst_message_parse_tag(message: *mut GstMessage, tag_list: *mut *mut GstTagList);
5973    pub fn gst_message_parse_toc(
5974        message: *mut GstMessage,
5975        toc: *mut *mut GstToc,
5976        updated: *mut gboolean,
5977    );
5978    pub fn gst_message_parse_warning(
5979        message: *mut GstMessage,
5980        gerror: *mut *mut glib::GError,
5981        debug: *mut *mut c_char,
5982    );
5983    pub fn gst_message_parse_warning_details(
5984        message: *mut GstMessage,
5985        structure: *mut *const GstStructure,
5986    );
5987    #[cfg(feature = "v1_26")]
5988    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5989    pub fn gst_message_parse_warning_writable_details(
5990        message: *mut GstMessage,
5991        structure: *mut *mut GstStructure,
5992    );
5993    #[cfg(feature = "v1_18_3")]
5994    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5995    pub fn gst_message_ref(msg: *mut GstMessage) -> *mut GstMessage;
5996    pub fn gst_message_set_buffering_stats(
5997        message: *mut GstMessage,
5998        mode: GstBufferingMode,
5999        avg_in: c_int,
6000        avg_out: c_int,
6001        buffering_left: i64,
6002    );
6003    #[cfg(feature = "v1_26")]
6004    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6005    pub fn gst_message_set_details(message: *mut GstMessage, details: *mut GstStructure);
6006    pub fn gst_message_set_group_id(message: *mut GstMessage, group_id: c_uint);
6007    pub fn gst_message_set_qos_stats(
6008        message: *mut GstMessage,
6009        format: GstFormat,
6010        processed: u64,
6011        dropped: u64,
6012    );
6013    pub fn gst_message_set_qos_values(
6014        message: *mut GstMessage,
6015        jitter: i64,
6016        proportion: c_double,
6017        quality: c_int,
6018    );
6019    pub fn gst_message_set_seqnum(message: *mut GstMessage, seqnum: u32);
6020    pub fn gst_message_set_stream_status_object(
6021        message: *mut GstMessage,
6022        object: *const gobject::GValue,
6023    );
6024    pub fn gst_message_streams_selected_add(message: *mut GstMessage, stream: *mut GstStream);
6025    pub fn gst_message_streams_selected_get_size(message: *mut GstMessage) -> c_uint;
6026    pub fn gst_message_streams_selected_get_stream(
6027        message: *mut GstMessage,
6028        idx: c_uint,
6029    ) -> *mut GstStream;
6030    #[cfg(feature = "v1_18_3")]
6031    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6032    pub fn gst_message_unref(msg: *mut GstMessage);
6033    #[cfg(feature = "v1_26")]
6034    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6035    pub fn gst_message_writable_details(message: *mut GstMessage) -> *mut GstStructure;
6036    pub fn gst_message_writable_structure(message: *mut GstMessage) -> *mut GstStructure;
6037    #[cfg(feature = "v1_18_3")]
6038    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6039    pub fn gst_message_replace(
6040        old_message: *mut *mut GstMessage,
6041        new_message: *mut GstMessage,
6042    ) -> gboolean;
6043    #[cfg(feature = "v1_18_3")]
6044    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6045    pub fn gst_message_take(
6046        old_message: *mut *mut GstMessage,
6047        new_message: *mut GstMessage,
6048    ) -> gboolean;
6049
6050    //=========================================================================
6051    // GstMeta
6052    //=========================================================================
6053    #[cfg(feature = "v1_16")]
6054    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6055    pub fn gst_meta_compare_seqnum(meta1: *const GstMeta, meta2: *const GstMeta) -> c_int;
6056    #[cfg(feature = "v1_16")]
6057    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6058    pub fn gst_meta_get_seqnum(meta: *const GstMeta) -> u64;
6059    #[cfg(feature = "v1_24")]
6060    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6061    pub fn gst_meta_serialize(meta: *const GstMeta, data: *mut GstByteArrayInterface) -> gboolean;
6062    #[cfg(feature = "v1_24")]
6063    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6064    pub fn gst_meta_serialize_simple(meta: *const GstMeta, data: *mut glib::GByteArray)
6065        -> gboolean;
6066    #[cfg(feature = "v1_26")]
6067    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6068    pub fn gst_meta_api_type_aggregate_params(
6069        api: GType,
6070        aggregated_params: *mut *mut GstStructure,
6071        params0: *const GstStructure,
6072        params1: *const GstStructure,
6073    ) -> gboolean;
6074    pub fn gst_meta_api_type_get_tags(api: GType) -> *const *const c_char;
6075    pub fn gst_meta_api_type_has_tag(api: GType, tag: glib::GQuark) -> gboolean;
6076    pub fn gst_meta_api_type_register(api: *const c_char, tags: *mut *const c_char) -> GType;
6077    #[cfg(feature = "v1_26")]
6078    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6079    pub fn gst_meta_api_type_set_params_aggregator(
6080        api: GType,
6081        aggregator: GstAllocationMetaParamsAggregator,
6082    );
6083    #[cfg(feature = "v1_24")]
6084    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6085    pub fn gst_meta_deserialize(
6086        buffer: *mut GstBuffer,
6087        data: *const u8,
6088        size: size_t,
6089        consumed: *mut u32,
6090    ) -> *mut GstMeta;
6091    pub fn gst_meta_get_info(impl_: *const c_char) -> *const GstMetaInfo;
6092    pub fn gst_meta_register(
6093        api: GType,
6094        impl_: *const c_char,
6095        size: size_t,
6096        init_func: GstMetaInitFunction,
6097        free_func: GstMetaFreeFunction,
6098        transform_func: GstMetaTransformFunction,
6099    ) -> *const GstMetaInfo;
6100    #[cfg(feature = "v1_20")]
6101    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6102    pub fn gst_meta_register_custom(
6103        name: *const c_char,
6104        tags: *mut *const c_char,
6105        transform_func: GstCustomMetaTransformFunction,
6106        user_data: gpointer,
6107        destroy_data: glib::GDestroyNotify,
6108    ) -> *const GstMetaInfo;
6109    #[cfg(feature = "v1_24")]
6110    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6111    pub fn gst_meta_register_custom_simple(name: *const c_char) -> *const GstMetaInfo;
6112
6113    //=========================================================================
6114    // GstMetaInfo
6115    //=========================================================================
6116    #[cfg(feature = "v1_20")]
6117    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6118    pub fn gst_meta_info_is_custom(info: *const GstMetaInfo) -> gboolean;
6119    #[cfg(feature = "v1_24")]
6120    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6121    pub fn gst_meta_info_register(info: *mut GstMetaInfo) -> *const GstMetaInfo;
6122    #[cfg(feature = "v1_24")]
6123    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6124    pub fn gst_meta_info_new(api: GType, impl_: *const c_char, size: size_t) -> *mut GstMetaInfo;
6125
6126    //=========================================================================
6127    // GstMiniObject
6128    //=========================================================================
6129    #[cfg(feature = "v1_20")]
6130    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6131    pub fn gst_mini_object_get_type() -> GType;
6132    #[cfg(feature = "v1_16")]
6133    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6134    pub fn gst_mini_object_add_parent(object: *mut GstMiniObject, parent: *mut GstMiniObject);
6135    pub fn gst_mini_object_copy(mini_object: *const GstMiniObject) -> *mut GstMiniObject;
6136    pub fn gst_mini_object_get_qdata(object: *mut GstMiniObject, quark: glib::GQuark) -> gpointer;
6137    pub fn gst_mini_object_init(
6138        mini_object: *mut GstMiniObject,
6139        flags: c_uint,
6140        type_: GType,
6141        copy_func: GstMiniObjectCopyFunction,
6142        dispose_func: GstMiniObjectDisposeFunction,
6143        free_func: GstMiniObjectFreeFunction,
6144    );
6145    pub fn gst_mini_object_is_writable(mini_object: *const GstMiniObject) -> gboolean;
6146    pub fn gst_mini_object_lock(object: *mut GstMiniObject, flags: GstLockFlags) -> gboolean;
6147    pub fn gst_mini_object_make_writable(mini_object: *mut GstMiniObject) -> *mut GstMiniObject;
6148    pub fn gst_mini_object_ref(mini_object: *mut GstMiniObject) -> *mut GstMiniObject;
6149    #[cfg(feature = "v1_16")]
6150    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6151    pub fn gst_mini_object_remove_parent(object: *mut GstMiniObject, parent: *mut GstMiniObject);
6152    pub fn gst_mini_object_set_qdata(
6153        object: *mut GstMiniObject,
6154        quark: glib::GQuark,
6155        data: gpointer,
6156        destroy: glib::GDestroyNotify,
6157    );
6158    pub fn gst_mini_object_steal_qdata(object: *mut GstMiniObject, quark: glib::GQuark)
6159        -> gpointer;
6160    pub fn gst_mini_object_unlock(object: *mut GstMiniObject, flags: GstLockFlags);
6161    pub fn gst_mini_object_unref(mini_object: *mut GstMiniObject);
6162    pub fn gst_mini_object_weak_ref(
6163        object: *mut GstMiniObject,
6164        notify: GstMiniObjectNotify,
6165        data: gpointer,
6166    );
6167    pub fn gst_mini_object_weak_unref(
6168        object: *mut GstMiniObject,
6169        notify: GstMiniObjectNotify,
6170        data: gpointer,
6171    );
6172    pub fn gst_mini_object_replace(
6173        olddata: *mut *mut GstMiniObject,
6174        newdata: *mut GstMiniObject,
6175    ) -> gboolean;
6176    pub fn gst_mini_object_steal(olddata: *mut *mut GstMiniObject) -> *mut GstMiniObject;
6177    pub fn gst_mini_object_take(
6178        olddata: *mut *mut GstMiniObject,
6179        newdata: *mut GstMiniObject,
6180    ) -> gboolean;
6181
6182    //=========================================================================
6183    // GstPadProbeInfo
6184    //=========================================================================
6185    pub fn gst_pad_probe_info_get_buffer(info: *mut GstPadProbeInfo) -> *mut GstBuffer;
6186    pub fn gst_pad_probe_info_get_buffer_list(info: *mut GstPadProbeInfo) -> *mut GstBufferList;
6187    pub fn gst_pad_probe_info_get_event(info: *mut GstPadProbeInfo) -> *mut GstEvent;
6188    pub fn gst_pad_probe_info_get_query(info: *mut GstPadProbeInfo) -> *mut GstQuery;
6189
6190    //=========================================================================
6191    // GstParentBufferMeta
6192    //=========================================================================
6193    pub fn gst_parent_buffer_meta_get_info() -> *const GstMetaInfo;
6194
6195    //=========================================================================
6196    // GstParseContext
6197    //=========================================================================
6198    pub fn gst_parse_context_get_type() -> GType;
6199    pub fn gst_parse_context_new() -> *mut GstParseContext;
6200    pub fn gst_parse_context_copy(context: *const GstParseContext) -> *mut GstParseContext;
6201    pub fn gst_parse_context_free(context: *mut GstParseContext);
6202    pub fn gst_parse_context_get_missing_elements(
6203        context: *mut GstParseContext,
6204    ) -> *mut *mut c_char;
6205
6206    //=========================================================================
6207    // GstPoll
6208    //=========================================================================
6209    pub fn gst_poll_add_fd(set: *mut GstPoll, fd: *mut GstPollFD) -> gboolean;
6210    pub fn gst_poll_fd_can_read(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6211    pub fn gst_poll_fd_can_write(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6212    #[cfg(feature = "v1_16")]
6213    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6214    pub fn gst_poll_fd_ctl_pri(set: *mut GstPoll, fd: *mut GstPollFD, active: gboolean)
6215        -> gboolean;
6216    pub fn gst_poll_fd_ctl_read(
6217        set: *mut GstPoll,
6218        fd: *mut GstPollFD,
6219        active: gboolean,
6220    ) -> gboolean;
6221    pub fn gst_poll_fd_ctl_write(
6222        set: *mut GstPoll,
6223        fd: *mut GstPollFD,
6224        active: gboolean,
6225    ) -> gboolean;
6226    pub fn gst_poll_fd_has_closed(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6227    pub fn gst_poll_fd_has_error(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6228    #[cfg(feature = "v1_16")]
6229    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6230    pub fn gst_poll_fd_has_pri(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6231    pub fn gst_poll_fd_ignored(set: *mut GstPoll, fd: *mut GstPollFD);
6232    pub fn gst_poll_free(set: *mut GstPoll);
6233    pub fn gst_poll_get_read_gpollfd(set: *mut GstPoll, fd: *mut glib::GPollFD);
6234    pub fn gst_poll_read_control(set: *mut GstPoll) -> gboolean;
6235    pub fn gst_poll_remove_fd(set: *mut GstPoll, fd: *mut GstPollFD) -> gboolean;
6236    pub fn gst_poll_restart(set: *mut GstPoll);
6237    pub fn gst_poll_set_controllable(set: *mut GstPoll, controllable: gboolean) -> gboolean;
6238    pub fn gst_poll_set_flushing(set: *mut GstPoll, flushing: gboolean);
6239    pub fn gst_poll_wait(set: *mut GstPoll, timeout: GstClockTime) -> c_int;
6240    pub fn gst_poll_write_control(set: *mut GstPoll) -> gboolean;
6241    pub fn gst_poll_new(controllable: gboolean) -> *mut GstPoll;
6242    pub fn gst_poll_new_timer() -> *mut GstPoll;
6243
6244    //=========================================================================
6245    // GstPollFD
6246    //=========================================================================
6247    pub fn gst_poll_fd_init(fd: *mut GstPollFD);
6248
6249    //=========================================================================
6250    // GstPromise
6251    //=========================================================================
6252    pub fn gst_promise_get_type() -> GType;
6253    pub fn gst_promise_new() -> *mut GstPromise;
6254    pub fn gst_promise_new_with_change_func(
6255        func: GstPromiseChangeFunc,
6256        user_data: gpointer,
6257        notify: glib::GDestroyNotify,
6258    ) -> *mut GstPromise;
6259    pub fn gst_promise_expire(promise: *mut GstPromise);
6260    pub fn gst_promise_get_reply(promise: *mut GstPromise) -> *const GstStructure;
6261    pub fn gst_promise_interrupt(promise: *mut GstPromise);
6262    #[cfg(feature = "v1_18_3")]
6263    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6264    pub fn gst_promise_ref(promise: *mut GstPromise) -> *mut GstPromise;
6265    pub fn gst_promise_reply(promise: *mut GstPromise, s: *mut GstStructure);
6266    #[cfg(feature = "v1_18_3")]
6267    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6268    pub fn gst_promise_unref(promise: *mut GstPromise);
6269    pub fn gst_promise_wait(promise: *mut GstPromise) -> GstPromiseResult;
6270
6271    //=========================================================================
6272    // GstProtectionMeta
6273    //=========================================================================
6274    pub fn gst_protection_meta_get_info() -> *const GstMetaInfo;
6275
6276    //=========================================================================
6277    // GstQuery
6278    //=========================================================================
6279    pub fn gst_query_get_type() -> GType;
6280    pub fn gst_query_new_accept_caps(caps: *mut GstCaps) -> *mut GstQuery;
6281    pub fn gst_query_new_allocation(caps: *mut GstCaps, need_pool: gboolean) -> *mut GstQuery;
6282    #[cfg(feature = "v1_16")]
6283    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6284    pub fn gst_query_new_bitrate() -> *mut GstQuery;
6285    pub fn gst_query_new_buffering(format: GstFormat) -> *mut GstQuery;
6286    pub fn gst_query_new_caps(filter: *mut GstCaps) -> *mut GstQuery;
6287    pub fn gst_query_new_context(context_type: *const c_char) -> *mut GstQuery;
6288    pub fn gst_query_new_convert(
6289        src_format: GstFormat,
6290        value: i64,
6291        dest_format: GstFormat,
6292    ) -> *mut GstQuery;
6293    pub fn gst_query_new_custom(type_: GstQueryType, structure: *mut GstStructure)
6294        -> *mut GstQuery;
6295    pub fn gst_query_new_drain() -> *mut GstQuery;
6296    pub fn gst_query_new_duration(format: GstFormat) -> *mut GstQuery;
6297    pub fn gst_query_new_formats() -> *mut GstQuery;
6298    pub fn gst_query_new_latency() -> *mut GstQuery;
6299    pub fn gst_query_new_position(format: GstFormat) -> *mut GstQuery;
6300    pub fn gst_query_new_scheduling() -> *mut GstQuery;
6301    pub fn gst_query_new_seeking(format: GstFormat) -> *mut GstQuery;
6302    pub fn gst_query_new_segment(format: GstFormat) -> *mut GstQuery;
6303    #[cfg(feature = "v1_22")]
6304    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6305    pub fn gst_query_new_selectable() -> *mut GstQuery;
6306    pub fn gst_query_new_uri() -> *mut GstQuery;
6307    pub fn gst_query_add_allocation_meta(
6308        query: *mut GstQuery,
6309        api: GType,
6310        params: *const GstStructure,
6311    );
6312    pub fn gst_query_add_allocation_param(
6313        query: *mut GstQuery,
6314        allocator: *mut GstAllocator,
6315        params: *const GstAllocationParams,
6316    );
6317    pub fn gst_query_add_allocation_pool(
6318        query: *mut GstQuery,
6319        pool: *mut GstBufferPool,
6320        size: c_uint,
6321        min_buffers: c_uint,
6322        max_buffers: c_uint,
6323    );
6324    pub fn gst_query_add_buffering_range(query: *mut GstQuery, start: i64, stop: i64) -> gboolean;
6325    pub fn gst_query_add_scheduling_mode(query: *mut GstQuery, mode: GstPadMode);
6326    #[cfg(feature = "v1_18_3")]
6327    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6328    pub fn gst_query_copy(q: *const GstQuery) -> *mut GstQuery;
6329    pub fn gst_query_find_allocation_meta(
6330        query: *mut GstQuery,
6331        api: GType,
6332        index: *mut c_uint,
6333    ) -> gboolean;
6334    pub fn gst_query_get_n_allocation_metas(query: *mut GstQuery) -> c_uint;
6335    pub fn gst_query_get_n_allocation_params(query: *mut GstQuery) -> c_uint;
6336    pub fn gst_query_get_n_allocation_pools(query: *mut GstQuery) -> c_uint;
6337    pub fn gst_query_get_n_buffering_ranges(query: *mut GstQuery) -> c_uint;
6338    pub fn gst_query_get_n_scheduling_modes(query: *mut GstQuery) -> c_uint;
6339    pub fn gst_query_get_structure(query: *mut GstQuery) -> *const GstStructure;
6340    pub fn gst_query_has_scheduling_mode(query: *mut GstQuery, mode: GstPadMode) -> gboolean;
6341    pub fn gst_query_has_scheduling_mode_with_flags(
6342        query: *mut GstQuery,
6343        mode: GstPadMode,
6344        flags: GstSchedulingFlags,
6345    ) -> gboolean;
6346    pub fn gst_query_parse_accept_caps(query: *mut GstQuery, caps: *mut *mut GstCaps);
6347    pub fn gst_query_parse_accept_caps_result(query: *mut GstQuery, result: *mut gboolean);
6348    pub fn gst_query_parse_allocation(
6349        query: *mut GstQuery,
6350        caps: *mut *mut GstCaps,
6351        need_pool: *mut gboolean,
6352    );
6353    #[cfg(feature = "v1_16")]
6354    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6355    pub fn gst_query_parse_bitrate(query: *mut GstQuery, nominal_bitrate: *mut c_uint);
6356    pub fn gst_query_parse_buffering_percent(
6357        query: *mut GstQuery,
6358        busy: *mut gboolean,
6359        percent: *mut c_int,
6360    );
6361    pub fn gst_query_parse_buffering_range(
6362        query: *mut GstQuery,
6363        format: *mut GstFormat,
6364        start: *mut i64,
6365        stop: *mut i64,
6366        estimated_total: *mut i64,
6367    );
6368    pub fn gst_query_parse_buffering_stats(
6369        query: *mut GstQuery,
6370        mode: *mut GstBufferingMode,
6371        avg_in: *mut c_int,
6372        avg_out: *mut c_int,
6373        buffering_left: *mut i64,
6374    );
6375    pub fn gst_query_parse_caps(query: *mut GstQuery, filter: *mut *mut GstCaps);
6376    pub fn gst_query_parse_caps_result(query: *mut GstQuery, caps: *mut *mut GstCaps);
6377    pub fn gst_query_parse_context(query: *mut GstQuery, context: *mut *mut GstContext);
6378    pub fn gst_query_parse_context_type(
6379        query: *mut GstQuery,
6380        context_type: *mut *const c_char,
6381    ) -> gboolean;
6382    pub fn gst_query_parse_convert(
6383        query: *mut GstQuery,
6384        src_format: *mut GstFormat,
6385        src_value: *mut i64,
6386        dest_format: *mut GstFormat,
6387        dest_value: *mut i64,
6388    );
6389    pub fn gst_query_parse_duration(
6390        query: *mut GstQuery,
6391        format: *mut GstFormat,
6392        duration: *mut i64,
6393    );
6394    pub fn gst_query_parse_latency(
6395        query: *mut GstQuery,
6396        live: *mut gboolean,
6397        min_latency: *mut GstClockTime,
6398        max_latency: *mut GstClockTime,
6399    );
6400    pub fn gst_query_parse_n_formats(query: *mut GstQuery, n_formats: *mut c_uint);
6401    pub fn gst_query_parse_nth_allocation_meta(
6402        query: *mut GstQuery,
6403        index: c_uint,
6404        params: *mut *const GstStructure,
6405    ) -> GType;
6406    pub fn gst_query_parse_nth_allocation_param(
6407        query: *mut GstQuery,
6408        index: c_uint,
6409        allocator: *mut *mut GstAllocator,
6410        params: *mut GstAllocationParams,
6411    );
6412    pub fn gst_query_parse_nth_allocation_pool(
6413        query: *mut GstQuery,
6414        index: c_uint,
6415        pool: *mut *mut GstBufferPool,
6416        size: *mut c_uint,
6417        min_buffers: *mut c_uint,
6418        max_buffers: *mut c_uint,
6419    );
6420    pub fn gst_query_parse_nth_buffering_range(
6421        query: *mut GstQuery,
6422        index: c_uint,
6423        start: *mut i64,
6424        stop: *mut i64,
6425    ) -> gboolean;
6426    pub fn gst_query_parse_nth_format(query: *mut GstQuery, nth: c_uint, format: *mut GstFormat);
6427    pub fn gst_query_parse_nth_scheduling_mode(query: *mut GstQuery, index: c_uint) -> GstPadMode;
6428    pub fn gst_query_parse_position(query: *mut GstQuery, format: *mut GstFormat, cur: *mut i64);
6429    pub fn gst_query_parse_scheduling(
6430        query: *mut GstQuery,
6431        flags: *mut GstSchedulingFlags,
6432        minsize: *mut c_int,
6433        maxsize: *mut c_int,
6434        align: *mut c_int,
6435    );
6436    pub fn gst_query_parse_seeking(
6437        query: *mut GstQuery,
6438        format: *mut GstFormat,
6439        seekable: *mut gboolean,
6440        segment_start: *mut i64,
6441        segment_end: *mut i64,
6442    );
6443    pub fn gst_query_parse_segment(
6444        query: *mut GstQuery,
6445        rate: *mut c_double,
6446        format: *mut GstFormat,
6447        start_value: *mut i64,
6448        stop_value: *mut i64,
6449    );
6450    #[cfg(feature = "v1_22")]
6451    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6452    pub fn gst_query_parse_selectable(query: *mut GstQuery, selectable: *mut gboolean);
6453    pub fn gst_query_parse_uri(query: *mut GstQuery, uri: *mut *mut c_char);
6454    pub fn gst_query_parse_uri_redirection(query: *mut GstQuery, uri: *mut *mut c_char);
6455    pub fn gst_query_parse_uri_redirection_permanent(
6456        query: *mut GstQuery,
6457        permanent: *mut gboolean,
6458    );
6459    #[cfg(feature = "v1_18_3")]
6460    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6461    pub fn gst_query_ref(q: *mut GstQuery) -> *mut GstQuery;
6462    pub fn gst_query_remove_nth_allocation_meta(query: *mut GstQuery, index: c_uint);
6463    pub fn gst_query_remove_nth_allocation_param(query: *mut GstQuery, index: c_uint);
6464    pub fn gst_query_remove_nth_allocation_pool(query: *mut GstQuery, index: c_uint);
6465    pub fn gst_query_set_accept_caps_result(query: *mut GstQuery, result: gboolean);
6466    #[cfg(feature = "v1_16")]
6467    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6468    pub fn gst_query_set_bitrate(query: *mut GstQuery, nominal_bitrate: c_uint);
6469    pub fn gst_query_set_buffering_percent(query: *mut GstQuery, busy: gboolean, percent: c_int);
6470    pub fn gst_query_set_buffering_range(
6471        query: *mut GstQuery,
6472        format: GstFormat,
6473        start: i64,
6474        stop: i64,
6475        estimated_total: i64,
6476    );
6477    pub fn gst_query_set_buffering_stats(
6478        query: *mut GstQuery,
6479        mode: GstBufferingMode,
6480        avg_in: c_int,
6481        avg_out: c_int,
6482        buffering_left: i64,
6483    );
6484    pub fn gst_query_set_caps_result(query: *mut GstQuery, caps: *mut GstCaps);
6485    pub fn gst_query_set_context(query: *mut GstQuery, context: *mut GstContext);
6486    pub fn gst_query_set_convert(
6487        query: *mut GstQuery,
6488        src_format: GstFormat,
6489        src_value: i64,
6490        dest_format: GstFormat,
6491        dest_value: i64,
6492    );
6493    pub fn gst_query_set_duration(query: *mut GstQuery, format: GstFormat, duration: i64);
6494    pub fn gst_query_set_formats(query: *mut GstQuery, n_formats: c_int, ...);
6495    pub fn gst_query_set_formatsv(
6496        query: *mut GstQuery,
6497        n_formats: c_int,
6498        formats: *const GstFormat,
6499    );
6500    pub fn gst_query_set_latency(
6501        query: *mut GstQuery,
6502        live: gboolean,
6503        min_latency: GstClockTime,
6504        max_latency: GstClockTime,
6505    );
6506    pub fn gst_query_set_nth_allocation_param(
6507        query: *mut GstQuery,
6508        index: c_uint,
6509        allocator: *mut GstAllocator,
6510        params: *const GstAllocationParams,
6511    );
6512    pub fn gst_query_set_nth_allocation_pool(
6513        query: *mut GstQuery,
6514        index: c_uint,
6515        pool: *mut GstBufferPool,
6516        size: c_uint,
6517        min_buffers: c_uint,
6518        max_buffers: c_uint,
6519    );
6520    pub fn gst_query_set_position(query: *mut GstQuery, format: GstFormat, cur: i64);
6521    pub fn gst_query_set_scheduling(
6522        query: *mut GstQuery,
6523        flags: GstSchedulingFlags,
6524        minsize: c_int,
6525        maxsize: c_int,
6526        align: c_int,
6527    );
6528    pub fn gst_query_set_seeking(
6529        query: *mut GstQuery,
6530        format: GstFormat,
6531        seekable: gboolean,
6532        segment_start: i64,
6533        segment_end: i64,
6534    );
6535    pub fn gst_query_set_segment(
6536        query: *mut GstQuery,
6537        rate: c_double,
6538        format: GstFormat,
6539        start_value: i64,
6540        stop_value: i64,
6541    );
6542    #[cfg(feature = "v1_22")]
6543    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6544    pub fn gst_query_set_selectable(query: *mut GstQuery, selectable: gboolean);
6545    pub fn gst_query_set_uri(query: *mut GstQuery, uri: *const c_char);
6546    pub fn gst_query_set_uri_redirection(query: *mut GstQuery, uri: *const c_char);
6547    pub fn gst_query_set_uri_redirection_permanent(query: *mut GstQuery, permanent: gboolean);
6548    #[cfg(feature = "v1_18_3")]
6549    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6550    pub fn gst_query_unref(q: *mut GstQuery);
6551    pub fn gst_query_writable_structure(query: *mut GstQuery) -> *mut GstStructure;
6552    #[cfg(feature = "v1_18_3")]
6553    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6554    pub fn gst_query_replace(old_query: *mut *mut GstQuery, new_query: *mut GstQuery) -> gboolean;
6555    #[cfg(feature = "v1_18_3")]
6556    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6557    pub fn gst_query_take(old_query: *mut *mut GstQuery, new_query: *mut GstQuery) -> gboolean;
6558
6559    //=========================================================================
6560    // GstReferenceTimestampMeta
6561    //=========================================================================
6562    pub fn gst_reference_timestamp_meta_get_info() -> *const GstMetaInfo;
6563
6564    //=========================================================================
6565    // GstSample
6566    //=========================================================================
6567    pub fn gst_sample_get_type() -> GType;
6568    pub fn gst_sample_new(
6569        buffer: *mut GstBuffer,
6570        caps: *mut GstCaps,
6571        segment: *const GstSegment,
6572        info: *mut GstStructure,
6573    ) -> *mut GstSample;
6574    #[cfg(feature = "v1_18_3")]
6575    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6576    pub fn gst_sample_copy(sample: *const GstSample) -> *mut GstSample;
6577    pub fn gst_sample_get_buffer(sample: *mut GstSample) -> *mut GstBuffer;
6578    pub fn gst_sample_get_buffer_list(sample: *mut GstSample) -> *mut GstBufferList;
6579    pub fn gst_sample_get_caps(sample: *mut GstSample) -> *mut GstCaps;
6580    pub fn gst_sample_get_info(sample: *mut GstSample) -> *const GstStructure;
6581    pub fn gst_sample_get_segment(sample: *mut GstSample) -> *mut GstSegment;
6582    #[cfg(feature = "v1_18_3")]
6583    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6584    pub fn gst_sample_ref(sample: *mut GstSample) -> *mut GstSample;
6585    #[cfg(feature = "v1_16")]
6586    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6587    pub fn gst_sample_set_buffer(sample: *mut GstSample, buffer: *mut GstBuffer);
6588    pub fn gst_sample_set_buffer_list(sample: *mut GstSample, buffer_list: *mut GstBufferList);
6589    #[cfg(feature = "v1_16")]
6590    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6591    pub fn gst_sample_set_caps(sample: *mut GstSample, caps: *mut GstCaps);
6592    #[cfg(feature = "v1_16")]
6593    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6594    pub fn gst_sample_set_info(sample: *mut GstSample, info: *mut GstStructure) -> gboolean;
6595    #[cfg(feature = "v1_16")]
6596    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6597    pub fn gst_sample_set_segment(sample: *mut GstSample, segment: *const GstSegment);
6598    #[cfg(feature = "v1_18_3")]
6599    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6600    pub fn gst_sample_unref(sample: *mut GstSample);
6601
6602    //=========================================================================
6603    // GstSegment
6604    //=========================================================================
6605    pub fn gst_segment_get_type() -> GType;
6606    pub fn gst_segment_new() -> *mut GstSegment;
6607    pub fn gst_segment_clip(
6608        segment: *const GstSegment,
6609        format: GstFormat,
6610        start: u64,
6611        stop: u64,
6612        clip_start: *mut u64,
6613        clip_stop: *mut u64,
6614    ) -> gboolean;
6615    pub fn gst_segment_copy(segment: *const GstSegment) -> *mut GstSegment;
6616    pub fn gst_segment_copy_into(src: *const GstSegment, dest: *mut GstSegment);
6617    pub fn gst_segment_do_seek(
6618        segment: *mut GstSegment,
6619        rate: c_double,
6620        format: GstFormat,
6621        flags: GstSeekFlags,
6622        start_type: GstSeekType,
6623        start: u64,
6624        stop_type: GstSeekType,
6625        stop: u64,
6626        update: *mut gboolean,
6627    ) -> gboolean;
6628    pub fn gst_segment_free(segment: *mut GstSegment);
6629    pub fn gst_segment_init(segment: *mut GstSegment, format: GstFormat);
6630    pub fn gst_segment_is_equal(s0: *const GstSegment, s1: *const GstSegment) -> gboolean;
6631    pub fn gst_segment_offset_running_time(
6632        segment: *mut GstSegment,
6633        format: GstFormat,
6634        offset: i64,
6635    ) -> gboolean;
6636    pub fn gst_segment_position_from_running_time(
6637        segment: *const GstSegment,
6638        format: GstFormat,
6639        running_time: u64,
6640    ) -> u64;
6641    pub fn gst_segment_position_from_running_time_full(
6642        segment: *const GstSegment,
6643        format: GstFormat,
6644        running_time: u64,
6645        position: *mut u64,
6646    ) -> c_int;
6647    pub fn gst_segment_position_from_stream_time(
6648        segment: *const GstSegment,
6649        format: GstFormat,
6650        stream_time: u64,
6651    ) -> u64;
6652    pub fn gst_segment_position_from_stream_time_full(
6653        segment: *const GstSegment,
6654        format: GstFormat,
6655        stream_time: u64,
6656        position: *mut u64,
6657    ) -> c_int;
6658    pub fn gst_segment_set_running_time(
6659        segment: *mut GstSegment,
6660        format: GstFormat,
6661        running_time: u64,
6662    ) -> gboolean;
6663    pub fn gst_segment_to_position(
6664        segment: *const GstSegment,
6665        format: GstFormat,
6666        running_time: u64,
6667    ) -> u64;
6668    pub fn gst_segment_to_running_time(
6669        segment: *const GstSegment,
6670        format: GstFormat,
6671        position: u64,
6672    ) -> u64;
6673    pub fn gst_segment_to_running_time_full(
6674        segment: *const GstSegment,
6675        format: GstFormat,
6676        position: u64,
6677        running_time: *mut u64,
6678    ) -> c_int;
6679    pub fn gst_segment_to_stream_time(
6680        segment: *const GstSegment,
6681        format: GstFormat,
6682        position: u64,
6683    ) -> u64;
6684    pub fn gst_segment_to_stream_time_full(
6685        segment: *const GstSegment,
6686        format: GstFormat,
6687        position: u64,
6688        stream_time: *mut u64,
6689    ) -> c_int;
6690
6691    //=========================================================================
6692    // GstStaticCaps
6693    //=========================================================================
6694    pub fn gst_static_caps_get_type() -> GType;
6695    pub fn gst_static_caps_cleanup(static_caps: *mut GstStaticCaps);
6696    pub fn gst_static_caps_get(static_caps: *mut GstStaticCaps) -> *mut GstCaps;
6697
6698    //=========================================================================
6699    // GstStaticPadTemplate
6700    //=========================================================================
6701    pub fn gst_static_pad_template_get_type() -> GType;
6702    pub fn gst_static_pad_template_get(
6703        pad_template: *mut GstStaticPadTemplate,
6704    ) -> *mut GstPadTemplate;
6705    pub fn gst_static_pad_template_get_caps(templ: *mut GstStaticPadTemplate) -> *mut GstCaps;
6706
6707    //=========================================================================
6708    // GstStructure
6709    //=========================================================================
6710    pub fn gst_structure_get_type() -> GType;
6711    pub fn gst_structure_from_string(
6712        string: *const c_char,
6713        end: *mut *mut c_char,
6714    ) -> *mut GstStructure;
6715    pub fn gst_structure_new(
6716        name: *const c_char,
6717        firstfield: *const c_char,
6718        ...
6719    ) -> *mut GstStructure;
6720    pub fn gst_structure_new_empty(name: *const c_char) -> *mut GstStructure;
6721    pub fn gst_structure_new_from_string(string: *const c_char) -> *mut GstStructure;
6722    pub fn gst_structure_new_id(
6723        name_quark: glib::GQuark,
6724        field_quark: glib::GQuark,
6725        ...
6726    ) -> *mut GstStructure;
6727    pub fn gst_structure_new_id_empty(quark: glib::GQuark) -> *mut GstStructure;
6728    #[cfg(feature = "v1_26")]
6729    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6730    pub fn gst_structure_new_id_str(
6731        name: *const GstIdStr,
6732        fieldname: *const GstIdStr,
6733        ...
6734    ) -> *mut GstStructure;
6735    #[cfg(feature = "v1_26")]
6736    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6737    pub fn gst_structure_new_id_str_empty(name: *const GstIdStr) -> *mut GstStructure;
6738    //#[cfg(feature = "v1_26")]
6739    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6740    //pub fn gst_structure_new_id_str_valist(name: *const GstIdStr, firstfield: *const GstIdStr, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
6741    #[cfg(feature = "v1_26")]
6742    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6743    pub fn gst_structure_new_static_str(
6744        name: *const c_char,
6745        firstfield: *const c_char,
6746        ...
6747    ) -> *mut GstStructure;
6748    #[cfg(feature = "v1_26")]
6749    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6750    pub fn gst_structure_new_static_str_empty(name: *const c_char) -> *mut GstStructure;
6751    //#[cfg(feature = "v1_26")]
6752    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6753    //pub fn gst_structure_new_static_str_valist(name: *const c_char, firstfield: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
6754    //pub fn gst_structure_new_valist(name: *const c_char, firstfield: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
6755    pub fn gst_structure_can_intersect(
6756        struct1: *const GstStructure,
6757        struct2: *const GstStructure,
6758    ) -> gboolean;
6759    pub fn gst_structure_copy(structure: *const GstStructure) -> *mut GstStructure;
6760    pub fn gst_structure_filter_and_map_in_place(
6761        structure: *mut GstStructure,
6762        func: GstStructureFilterMapFunc,
6763        user_data: gpointer,
6764    );
6765    #[cfg(feature = "v1_26")]
6766    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6767    pub fn gst_structure_filter_and_map_in_place_id_str(
6768        structure: *mut GstStructure,
6769        func: GstStructureFilterMapIdStrFunc,
6770        user_data: gpointer,
6771    );
6772    pub fn gst_structure_fixate(structure: *mut GstStructure);
6773    pub fn gst_structure_fixate_field(
6774        structure: *mut GstStructure,
6775        field_name: *const c_char,
6776    ) -> gboolean;
6777    pub fn gst_structure_fixate_field_boolean(
6778        structure: *mut GstStructure,
6779        field_name: *const c_char,
6780        target: gboolean,
6781    ) -> gboolean;
6782    pub fn gst_structure_fixate_field_nearest_double(
6783        structure: *mut GstStructure,
6784        field_name: *const c_char,
6785        target: c_double,
6786    ) -> gboolean;
6787    pub fn gst_structure_fixate_field_nearest_fraction(
6788        structure: *mut GstStructure,
6789        field_name: *const c_char,
6790        target_numerator: c_int,
6791        target_denominator: c_int,
6792    ) -> gboolean;
6793    pub fn gst_structure_fixate_field_nearest_int(
6794        structure: *mut GstStructure,
6795        field_name: *const c_char,
6796        target: c_int,
6797    ) -> gboolean;
6798    pub fn gst_structure_fixate_field_string(
6799        structure: *mut GstStructure,
6800        field_name: *const c_char,
6801        target: *const c_char,
6802    ) -> gboolean;
6803    pub fn gst_structure_foreach(
6804        structure: *const GstStructure,
6805        func: GstStructureForeachFunc,
6806        user_data: gpointer,
6807    ) -> gboolean;
6808    #[cfg(feature = "v1_26")]
6809    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6810    pub fn gst_structure_foreach_id_str(
6811        structure: *const GstStructure,
6812        func: GstStructureForeachIdStrFunc,
6813        user_data: gpointer,
6814    ) -> gboolean;
6815    pub fn gst_structure_free(structure: *mut GstStructure);
6816    pub fn gst_structure_get(
6817        structure: *const GstStructure,
6818        first_fieldname: *const c_char,
6819        ...
6820    ) -> gboolean;
6821    pub fn gst_structure_get_array(
6822        structure: *mut GstStructure,
6823        fieldname: *const c_char,
6824        array: *mut *mut gobject::GValueArray,
6825    ) -> gboolean;
6826    pub fn gst_structure_get_boolean(
6827        structure: *const GstStructure,
6828        fieldname: *const c_char,
6829        value: *mut gboolean,
6830    ) -> gboolean;
6831    pub fn gst_structure_get_clock_time(
6832        structure: *const GstStructure,
6833        fieldname: *const c_char,
6834        value: *mut GstClockTime,
6835    ) -> gboolean;
6836    pub fn gst_structure_get_date(
6837        structure: *const GstStructure,
6838        fieldname: *const c_char,
6839        value: *mut *mut glib::GDate,
6840    ) -> gboolean;
6841    pub fn gst_structure_get_date_time(
6842        structure: *const GstStructure,
6843        fieldname: *const c_char,
6844        value: *mut *mut GstDateTime,
6845    ) -> gboolean;
6846    pub fn gst_structure_get_double(
6847        structure: *const GstStructure,
6848        fieldname: *const c_char,
6849        value: *mut c_double,
6850    ) -> gboolean;
6851    pub fn gst_structure_get_enum(
6852        structure: *const GstStructure,
6853        fieldname: *const c_char,
6854        enumtype: GType,
6855        value: *mut c_int,
6856    ) -> gboolean;
6857    pub fn gst_structure_get_field_type(
6858        structure: *const GstStructure,
6859        fieldname: *const c_char,
6860    ) -> GType;
6861    #[cfg(feature = "v1_22")]
6862    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6863    pub fn gst_structure_get_flags(
6864        structure: *const GstStructure,
6865        fieldname: *const c_char,
6866        flags_type: GType,
6867        value: *mut c_uint,
6868    ) -> gboolean;
6869    pub fn gst_structure_get_flagset(
6870        structure: *const GstStructure,
6871        fieldname: *const c_char,
6872        value_flags: *mut c_uint,
6873        value_mask: *mut c_uint,
6874    ) -> gboolean;
6875    pub fn gst_structure_get_fraction(
6876        structure: *const GstStructure,
6877        fieldname: *const c_char,
6878        value_numerator: *mut c_int,
6879        value_denominator: *mut c_int,
6880    ) -> gboolean;
6881    pub fn gst_structure_get_int(
6882        structure: *const GstStructure,
6883        fieldname: *const c_char,
6884        value: *mut c_int,
6885    ) -> gboolean;
6886    pub fn gst_structure_get_int64(
6887        structure: *const GstStructure,
6888        fieldname: *const c_char,
6889        value: *mut i64,
6890    ) -> gboolean;
6891    pub fn gst_structure_get_list(
6892        structure: *mut GstStructure,
6893        fieldname: *const c_char,
6894        array: *mut *mut gobject::GValueArray,
6895    ) -> gboolean;
6896    pub fn gst_structure_get_name(structure: *const GstStructure) -> *const c_char;
6897    pub fn gst_structure_get_name_id(structure: *const GstStructure) -> glib::GQuark;
6898    #[cfg(feature = "v1_26")]
6899    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6900    pub fn gst_structure_get_name_id_str(structure: *const GstStructure) -> *const GstIdStr;
6901    pub fn gst_structure_get_string(
6902        structure: *const GstStructure,
6903        fieldname: *const c_char,
6904    ) -> *const c_char;
6905    pub fn gst_structure_get_uint(
6906        structure: *const GstStructure,
6907        fieldname: *const c_char,
6908        value: *mut c_uint,
6909    ) -> gboolean;
6910    pub fn gst_structure_get_uint64(
6911        structure: *const GstStructure,
6912        fieldname: *const c_char,
6913        value: *mut u64,
6914    ) -> gboolean;
6915    //pub fn gst_structure_get_valist(structure: *const GstStructure, first_fieldname: *const c_char, args: /*Unimplemented*/va_list) -> gboolean;
6916    pub fn gst_structure_get_value(
6917        structure: *const GstStructure,
6918        fieldname: *const c_char,
6919    ) -> *const gobject::GValue;
6920    pub fn gst_structure_has_field(
6921        structure: *const GstStructure,
6922        fieldname: *const c_char,
6923    ) -> gboolean;
6924    pub fn gst_structure_has_field_typed(
6925        structure: *const GstStructure,
6926        fieldname: *const c_char,
6927        type_: GType,
6928    ) -> gboolean;
6929    pub fn gst_structure_has_name(structure: *const GstStructure, name: *const c_char) -> gboolean;
6930    pub fn gst_structure_id_get(
6931        structure: *const GstStructure,
6932        first_field_id: glib::GQuark,
6933        ...
6934    ) -> gboolean;
6935    //pub fn gst_structure_id_get_valist(structure: *const GstStructure, first_field_id: glib::GQuark, args: /*Unimplemented*/va_list) -> gboolean;
6936    pub fn gst_structure_id_get_value(
6937        structure: *const GstStructure,
6938        field: glib::GQuark,
6939    ) -> *const gobject::GValue;
6940    pub fn gst_structure_id_has_field(
6941        structure: *const GstStructure,
6942        field: glib::GQuark,
6943    ) -> gboolean;
6944    pub fn gst_structure_id_has_field_typed(
6945        structure: *const GstStructure,
6946        field: glib::GQuark,
6947        type_: GType,
6948    ) -> gboolean;
6949    pub fn gst_structure_id_set(structure: *mut GstStructure, fieldname: glib::GQuark, ...);
6950    //pub fn gst_structure_id_set_valist(structure: *mut GstStructure, fieldname: glib::GQuark, varargs: /*Unimplemented*/va_list);
6951    pub fn gst_structure_id_set_value(
6952        structure: *mut GstStructure,
6953        field: glib::GQuark,
6954        value: *const gobject::GValue,
6955    );
6956    #[cfg(feature = "v1_26")]
6957    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6958    pub fn gst_structure_id_str_get(
6959        structure: *const GstStructure,
6960        first_fieldname: *const GstIdStr,
6961        ...
6962    ) -> gboolean;
6963    #[cfg(feature = "v1_26")]
6964    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6965    pub fn gst_structure_id_str_get_field_type(
6966        structure: *const GstStructure,
6967        fieldname: *const GstIdStr,
6968    ) -> GType;
6969    //#[cfg(feature = "v1_26")]
6970    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6971    //pub fn gst_structure_id_str_get_valist(structure: *const GstStructure, first_fieldname: *const GstIdStr, args: /*Unimplemented*/va_list) -> gboolean;
6972    #[cfg(feature = "v1_26")]
6973    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6974    pub fn gst_structure_id_str_get_value(
6975        structure: *const GstStructure,
6976        fieldname: *const GstIdStr,
6977    ) -> *const gobject::GValue;
6978    #[cfg(feature = "v1_26")]
6979    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6980    pub fn gst_structure_id_str_has_field(
6981        structure: *const GstStructure,
6982        fieldname: *const GstIdStr,
6983    ) -> gboolean;
6984    #[cfg(feature = "v1_26")]
6985    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6986    pub fn gst_structure_id_str_has_field_typed(
6987        structure: *const GstStructure,
6988        fieldname: *const GstIdStr,
6989        type_: GType,
6990    ) -> gboolean;
6991    #[cfg(feature = "v1_26")]
6992    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6993    pub fn gst_structure_id_str_nth_field_name(
6994        structure: *const GstStructure,
6995        index: c_uint,
6996    ) -> *const GstIdStr;
6997    #[cfg(feature = "v1_26")]
6998    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6999    pub fn gst_structure_id_str_remove_field(
7000        structure: *mut GstStructure,
7001        fieldname: *const GstIdStr,
7002    );
7003    #[cfg(feature = "v1_26")]
7004    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7005    pub fn gst_structure_id_str_remove_fields(
7006        structure: *mut GstStructure,
7007        fieldname: *const GstIdStr,
7008        ...
7009    );
7010    //#[cfg(feature = "v1_26")]
7011    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7012    //pub fn gst_structure_id_str_remove_fields_valist(structure: *mut GstStructure, fieldname: *const GstIdStr, varargs: /*Unimplemented*/va_list);
7013    #[cfg(feature = "v1_26")]
7014    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7015    pub fn gst_structure_id_str_set(structure: *mut GstStructure, fieldname: *const GstIdStr, ...);
7016    //#[cfg(feature = "v1_26")]
7017    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7018    //pub fn gst_structure_id_str_set_valist(structure: *mut GstStructure, fieldname: *const GstIdStr, varargs: /*Unimplemented*/va_list);
7019    #[cfg(feature = "v1_26")]
7020    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7021    pub fn gst_structure_id_str_set_value(
7022        structure: *mut GstStructure,
7023        fieldname: *const GstIdStr,
7024        value: *const gobject::GValue,
7025    );
7026    #[cfg(feature = "v1_26")]
7027    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7028    pub fn gst_structure_id_str_take_value(
7029        structure: *mut GstStructure,
7030        fieldname: *const GstIdStr,
7031        value: *mut gobject::GValue,
7032    );
7033    pub fn gst_structure_id_take_value(
7034        structure: *mut GstStructure,
7035        field: glib::GQuark,
7036        value: *mut gobject::GValue,
7037    );
7038    pub fn gst_structure_intersect(
7039        struct1: *const GstStructure,
7040        struct2: *const GstStructure,
7041    ) -> *mut GstStructure;
7042    pub fn gst_structure_is_equal(
7043        structure1: *const GstStructure,
7044        structure2: *const GstStructure,
7045    ) -> gboolean;
7046    pub fn gst_structure_is_subset(
7047        subset: *const GstStructure,
7048        superset: *const GstStructure,
7049    ) -> gboolean;
7050    pub fn gst_structure_map_in_place(
7051        structure: *mut GstStructure,
7052        func: GstStructureMapFunc,
7053        user_data: gpointer,
7054    ) -> gboolean;
7055    #[cfg(feature = "v1_26")]
7056    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7057    pub fn gst_structure_map_in_place_id_str(
7058        structure: *mut GstStructure,
7059        func: GstStructureMapIdStrFunc,
7060        user_data: gpointer,
7061    ) -> gboolean;
7062    pub fn gst_structure_n_fields(structure: *const GstStructure) -> c_int;
7063    pub fn gst_structure_nth_field_name(
7064        structure: *const GstStructure,
7065        index: c_uint,
7066    ) -> *const c_char;
7067    pub fn gst_structure_remove_all_fields(structure: *mut GstStructure);
7068    pub fn gst_structure_remove_field(structure: *mut GstStructure, fieldname: *const c_char);
7069    pub fn gst_structure_remove_fields(structure: *mut GstStructure, fieldname: *const c_char, ...);
7070    //pub fn gst_structure_remove_fields_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7071    #[cfg(feature = "v1_20")]
7072    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
7073    pub fn gst_structure_serialize(
7074        structure: *const GstStructure,
7075        flags: GstSerializeFlags,
7076    ) -> *mut c_char;
7077    #[cfg(feature = "v1_24")]
7078    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7079    pub fn gst_structure_serialize_full(
7080        structure: *const GstStructure,
7081        flags: GstSerializeFlags,
7082    ) -> *mut c_char;
7083    pub fn gst_structure_set(structure: *mut GstStructure, fieldname: *const c_char, ...);
7084    pub fn gst_structure_set_array(
7085        structure: *mut GstStructure,
7086        fieldname: *const c_char,
7087        array: *const gobject::GValueArray,
7088    );
7089    pub fn gst_structure_set_list(
7090        structure: *mut GstStructure,
7091        fieldname: *const c_char,
7092        array: *const gobject::GValueArray,
7093    );
7094    pub fn gst_structure_set_name(structure: *mut GstStructure, name: *const c_char);
7095    #[cfg(feature = "v1_26")]
7096    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7097    pub fn gst_structure_set_name_id_str(structure: *mut GstStructure, name: *const GstIdStr);
7098    #[cfg(feature = "v1_26")]
7099    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7100    pub fn gst_structure_set_name_static_str(structure: *mut GstStructure, name: *const c_char);
7101    pub fn gst_structure_set_parent_refcount(
7102        structure: *mut GstStructure,
7103        refcount: *mut c_int,
7104    ) -> gboolean;
7105    #[cfg(feature = "v1_26")]
7106    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7107    pub fn gst_structure_set_static_str(
7108        structure: *mut GstStructure,
7109        fieldname: *const c_char,
7110        ...
7111    );
7112    //#[cfg(feature = "v1_26")]
7113    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7114    //pub fn gst_structure_set_static_str_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7115    //pub fn gst_structure_set_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7116    pub fn gst_structure_set_value(
7117        structure: *mut GstStructure,
7118        fieldname: *const c_char,
7119        value: *const gobject::GValue,
7120    );
7121    #[cfg(feature = "v1_26")]
7122    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7123    pub fn gst_structure_set_value_static_str(
7124        structure: *mut GstStructure,
7125        fieldname: *const c_char,
7126        value: *const gobject::GValue,
7127    );
7128    pub fn gst_structure_take_value(
7129        structure: *mut GstStructure,
7130        fieldname: *const c_char,
7131        value: *mut gobject::GValue,
7132    );
7133    #[cfg(feature = "v1_26")]
7134    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7135    pub fn gst_structure_take_value_static_str(
7136        structure: *mut GstStructure,
7137        fieldname: *const c_char,
7138        value: *mut gobject::GValue,
7139    );
7140    pub fn gst_structure_to_string(structure: *const GstStructure) -> *mut c_char;
7141    #[cfg(feature = "v1_18")]
7142    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7143    pub fn gst_structure_take(
7144        oldstr_ptr: *mut *mut GstStructure,
7145        newstr: *mut GstStructure,
7146    ) -> gboolean;
7147
7148    //=========================================================================
7149    // GstTagList
7150    //=========================================================================
7151    pub fn gst_tag_list_get_type() -> GType;
7152    pub fn gst_tag_list_new(tag: *const c_char, ...) -> *mut GstTagList;
7153    pub fn gst_tag_list_new_empty() -> *mut GstTagList;
7154    pub fn gst_tag_list_new_from_string(str: *const c_char) -> *mut GstTagList;
7155    //pub fn gst_tag_list_new_valist(var_args: /*Unimplemented*/va_list) -> *mut GstTagList;
7156    pub fn gst_tag_list_add(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, ...);
7157    //pub fn gst_tag_list_add_valist(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
7158    //pub fn gst_tag_list_add_valist_values(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
7159    pub fn gst_tag_list_add_value(
7160        list: *mut GstTagList,
7161        mode: GstTagMergeMode,
7162        tag: *const c_char,
7163        value: *const gobject::GValue,
7164    );
7165    pub fn gst_tag_list_add_values(
7166        list: *mut GstTagList,
7167        mode: GstTagMergeMode,
7168        tag: *const c_char,
7169        ...
7170    );
7171    #[cfg(feature = "v1_18_3")]
7172    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7173    pub fn gst_tag_list_copy(taglist: *const GstTagList) -> *mut GstTagList;
7174    pub fn gst_tag_list_foreach(
7175        list: *const GstTagList,
7176        func: GstTagForeachFunc,
7177        user_data: gpointer,
7178    );
7179    pub fn gst_tag_list_get_boolean(
7180        list: *const GstTagList,
7181        tag: *const c_char,
7182        value: *mut gboolean,
7183    ) -> gboolean;
7184    pub fn gst_tag_list_get_boolean_index(
7185        list: *const GstTagList,
7186        tag: *const c_char,
7187        index: c_uint,
7188        value: *mut gboolean,
7189    ) -> gboolean;
7190    pub fn gst_tag_list_get_date(
7191        list: *const GstTagList,
7192        tag: *const c_char,
7193        value: *mut *mut glib::GDate,
7194    ) -> gboolean;
7195    pub fn gst_tag_list_get_date_index(
7196        list: *const GstTagList,
7197        tag: *const c_char,
7198        index: c_uint,
7199        value: *mut *mut glib::GDate,
7200    ) -> gboolean;
7201    pub fn gst_tag_list_get_date_time(
7202        list: *const GstTagList,
7203        tag: *const c_char,
7204        value: *mut *mut GstDateTime,
7205    ) -> gboolean;
7206    pub fn gst_tag_list_get_date_time_index(
7207        list: *const GstTagList,
7208        tag: *const c_char,
7209        index: c_uint,
7210        value: *mut *mut GstDateTime,
7211    ) -> gboolean;
7212    pub fn gst_tag_list_get_double(
7213        list: *const GstTagList,
7214        tag: *const c_char,
7215        value: *mut c_double,
7216    ) -> gboolean;
7217    pub fn gst_tag_list_get_double_index(
7218        list: *const GstTagList,
7219        tag: *const c_char,
7220        index: c_uint,
7221        value: *mut c_double,
7222    ) -> gboolean;
7223    pub fn gst_tag_list_get_float(
7224        list: *const GstTagList,
7225        tag: *const c_char,
7226        value: *mut c_float,
7227    ) -> gboolean;
7228    pub fn gst_tag_list_get_float_index(
7229        list: *const GstTagList,
7230        tag: *const c_char,
7231        index: c_uint,
7232        value: *mut c_float,
7233    ) -> gboolean;
7234    pub fn gst_tag_list_get_int(
7235        list: *const GstTagList,
7236        tag: *const c_char,
7237        value: *mut c_int,
7238    ) -> gboolean;
7239    pub fn gst_tag_list_get_int64(
7240        list: *const GstTagList,
7241        tag: *const c_char,
7242        value: *mut i64,
7243    ) -> gboolean;
7244    pub fn gst_tag_list_get_int64_index(
7245        list: *const GstTagList,
7246        tag: *const c_char,
7247        index: c_uint,
7248        value: *mut i64,
7249    ) -> gboolean;
7250    pub fn gst_tag_list_get_int_index(
7251        list: *const GstTagList,
7252        tag: *const c_char,
7253        index: c_uint,
7254        value: *mut c_int,
7255    ) -> gboolean;
7256    pub fn gst_tag_list_get_pointer(
7257        list: *const GstTagList,
7258        tag: *const c_char,
7259        value: *mut gpointer,
7260    ) -> gboolean;
7261    pub fn gst_tag_list_get_pointer_index(
7262        list: *const GstTagList,
7263        tag: *const c_char,
7264        index: c_uint,
7265        value: *mut gpointer,
7266    ) -> gboolean;
7267    pub fn gst_tag_list_get_sample(
7268        list: *const GstTagList,
7269        tag: *const c_char,
7270        sample: *mut *mut GstSample,
7271    ) -> gboolean;
7272    pub fn gst_tag_list_get_sample_index(
7273        list: *const GstTagList,
7274        tag: *const c_char,
7275        index: c_uint,
7276        sample: *mut *mut GstSample,
7277    ) -> gboolean;
7278    pub fn gst_tag_list_get_scope(list: *const GstTagList) -> GstTagScope;
7279    pub fn gst_tag_list_get_string(
7280        list: *const GstTagList,
7281        tag: *const c_char,
7282        value: *mut *mut c_char,
7283    ) -> gboolean;
7284    pub fn gst_tag_list_get_string_index(
7285        list: *const GstTagList,
7286        tag: *const c_char,
7287        index: c_uint,
7288        value: *mut *mut c_char,
7289    ) -> gboolean;
7290    pub fn gst_tag_list_get_tag_size(list: *const GstTagList, tag: *const c_char) -> c_uint;
7291    pub fn gst_tag_list_get_uint(
7292        list: *const GstTagList,
7293        tag: *const c_char,
7294        value: *mut c_uint,
7295    ) -> gboolean;
7296    pub fn gst_tag_list_get_uint64(
7297        list: *const GstTagList,
7298        tag: *const c_char,
7299        value: *mut u64,
7300    ) -> gboolean;
7301    pub fn gst_tag_list_get_uint64_index(
7302        list: *const GstTagList,
7303        tag: *const c_char,
7304        index: c_uint,
7305        value: *mut u64,
7306    ) -> gboolean;
7307    pub fn gst_tag_list_get_uint_index(
7308        list: *const GstTagList,
7309        tag: *const c_char,
7310        index: c_uint,
7311        value: *mut c_uint,
7312    ) -> gboolean;
7313    pub fn gst_tag_list_get_value_index(
7314        list: *const GstTagList,
7315        tag: *const c_char,
7316        index: c_uint,
7317    ) -> *const gobject::GValue;
7318    pub fn gst_tag_list_insert(
7319        into: *mut GstTagList,
7320        from: *const GstTagList,
7321        mode: GstTagMergeMode,
7322    );
7323    pub fn gst_tag_list_is_empty(list: *const GstTagList) -> gboolean;
7324    pub fn gst_tag_list_is_equal(list1: *const GstTagList, list2: *const GstTagList) -> gboolean;
7325    pub fn gst_tag_list_merge(
7326        list1: *const GstTagList,
7327        list2: *const GstTagList,
7328        mode: GstTagMergeMode,
7329    ) -> *mut GstTagList;
7330    pub fn gst_tag_list_n_tags(list: *const GstTagList) -> c_int;
7331    pub fn gst_tag_list_nth_tag_name(list: *const GstTagList, index: c_uint) -> *const c_char;
7332    pub fn gst_tag_list_peek_string_index(
7333        list: *const GstTagList,
7334        tag: *const c_char,
7335        index: c_uint,
7336        value: *mut *const c_char,
7337    ) -> gboolean;
7338    #[cfg(feature = "v1_18_3")]
7339    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7340    pub fn gst_tag_list_ref(taglist: *mut GstTagList) -> *mut GstTagList;
7341    pub fn gst_tag_list_remove_tag(list: *mut GstTagList, tag: *const c_char);
7342    pub fn gst_tag_list_set_scope(list: *mut GstTagList, scope: GstTagScope);
7343    pub fn gst_tag_list_to_string(list: *const GstTagList) -> *mut c_char;
7344    #[cfg(feature = "v1_18_3")]
7345    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7346    pub fn gst_tag_list_unref(taglist: *mut GstTagList);
7347    pub fn gst_tag_list_copy_value(
7348        dest: *mut gobject::GValue,
7349        list: *const GstTagList,
7350        tag: *const c_char,
7351    ) -> gboolean;
7352    #[cfg(feature = "v1_18_3")]
7353    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7354    pub fn gst_tag_list_replace(
7355        old_taglist: *mut *mut GstTagList,
7356        new_taglist: *mut GstTagList,
7357    ) -> gboolean;
7358    #[cfg(feature = "v1_18_3")]
7359    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7360    pub fn gst_tag_list_take(
7361        old_taglist: *mut *mut GstTagList,
7362        new_taglist: *mut GstTagList,
7363    ) -> gboolean;
7364
7365    //=========================================================================
7366    // GstToc
7367    //=========================================================================
7368    pub fn gst_toc_get_type() -> GType;
7369    pub fn gst_toc_new(scope: GstTocScope) -> *mut GstToc;
7370    pub fn gst_toc_append_entry(toc: *mut GstToc, entry: *mut GstTocEntry);
7371    pub fn gst_toc_dump(toc: *mut GstToc);
7372    pub fn gst_toc_find_entry(toc: *const GstToc, uid: *const c_char) -> *mut GstTocEntry;
7373    pub fn gst_toc_get_entries(toc: *const GstToc) -> *mut glib::GList;
7374    pub fn gst_toc_get_scope(toc: *const GstToc) -> GstTocScope;
7375    pub fn gst_toc_get_tags(toc: *const GstToc) -> *mut GstTagList;
7376    pub fn gst_toc_merge_tags(toc: *mut GstToc, tags: *mut GstTagList, mode: GstTagMergeMode);
7377    pub fn gst_toc_set_tags(toc: *mut GstToc, tags: *mut GstTagList);
7378
7379    //=========================================================================
7380    // GstTocEntry
7381    //=========================================================================
7382    pub fn gst_toc_entry_get_type() -> GType;
7383    pub fn gst_toc_entry_new(type_: GstTocEntryType, uid: *const c_char) -> *mut GstTocEntry;
7384    pub fn gst_toc_entry_append_sub_entry(entry: *mut GstTocEntry, subentry: *mut GstTocEntry);
7385    pub fn gst_toc_entry_get_entry_type(entry: *const GstTocEntry) -> GstTocEntryType;
7386    pub fn gst_toc_entry_get_loop(
7387        entry: *const GstTocEntry,
7388        loop_type: *mut GstTocLoopType,
7389        repeat_count: *mut c_int,
7390    ) -> gboolean;
7391    pub fn gst_toc_entry_get_parent(entry: *mut GstTocEntry) -> *mut GstTocEntry;
7392    pub fn gst_toc_entry_get_start_stop_times(
7393        entry: *const GstTocEntry,
7394        start: *mut i64,
7395        stop: *mut i64,
7396    ) -> gboolean;
7397    pub fn gst_toc_entry_get_sub_entries(entry: *const GstTocEntry) -> *mut glib::GList;
7398    pub fn gst_toc_entry_get_tags(entry: *const GstTocEntry) -> *mut GstTagList;
7399    pub fn gst_toc_entry_get_toc(entry: *mut GstTocEntry) -> *mut GstToc;
7400    pub fn gst_toc_entry_get_uid(entry: *const GstTocEntry) -> *const c_char;
7401    pub fn gst_toc_entry_is_alternative(entry: *const GstTocEntry) -> gboolean;
7402    pub fn gst_toc_entry_is_sequence(entry: *const GstTocEntry) -> gboolean;
7403    pub fn gst_toc_entry_merge_tags(
7404        entry: *mut GstTocEntry,
7405        tags: *mut GstTagList,
7406        mode: GstTagMergeMode,
7407    );
7408    pub fn gst_toc_entry_set_loop(
7409        entry: *mut GstTocEntry,
7410        loop_type: GstTocLoopType,
7411        repeat_count: c_int,
7412    );
7413    pub fn gst_toc_entry_set_start_stop_times(entry: *mut GstTocEntry, start: i64, stop: i64);
7414    pub fn gst_toc_entry_set_tags(entry: *mut GstTocEntry, tags: *mut GstTagList);
7415
7416    //=========================================================================
7417    // GstTracerClass
7418    //=========================================================================
7419    #[cfg(feature = "v1_26")]
7420    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7421    pub fn gst_tracer_class_set_use_structure_params(
7422        tracer_class: *mut GstTracerClass,
7423        use_structure_params: gboolean,
7424    );
7425    #[cfg(feature = "v1_26")]
7426    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7427    pub fn gst_tracer_class_uses_structure_params(tracer_class: *mut GstTracerClass) -> gboolean;
7428
7429    //=========================================================================
7430    // GstTypeFind
7431    //=========================================================================
7432    pub fn gst_type_find_get_type() -> GType;
7433    pub fn gst_type_find_get_length(find: *mut GstTypeFind) -> u64;
7434    pub fn gst_type_find_peek(find: *mut GstTypeFind, offset: i64, size: c_uint) -> *const u8;
7435    pub fn gst_type_find_suggest(find: *mut GstTypeFind, probability: c_uint, caps: *mut GstCaps);
7436    #[cfg(feature = "v1_20")]
7437    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
7438    pub fn gst_type_find_suggest_empty_simple(
7439        find: *mut GstTypeFind,
7440        probability: c_uint,
7441        media_type: *const c_char,
7442    );
7443    pub fn gst_type_find_suggest_simple(
7444        find: *mut GstTypeFind,
7445        probability: c_uint,
7446        media_type: *const c_char,
7447        fieldname: *const c_char,
7448        ...
7449    );
7450    pub fn gst_type_find_register(
7451        plugin: *mut GstPlugin,
7452        name: *const c_char,
7453        rank: c_uint,
7454        func: GstTypeFindFunction,
7455        extensions: *const c_char,
7456        possible_caps: *mut GstCaps,
7457        data: gpointer,
7458        data_notify: glib::GDestroyNotify,
7459    ) -> gboolean;
7460
7461    //=========================================================================
7462    // GstUri
7463    //=========================================================================
7464    pub fn gst_uri_get_type() -> GType;
7465    pub fn gst_uri_new(
7466        scheme: *const c_char,
7467        userinfo: *const c_char,
7468        host: *const c_char,
7469        port: c_uint,
7470        path: *const c_char,
7471        query: *const c_char,
7472        fragment: *const c_char,
7473    ) -> *mut GstUri;
7474    pub fn gst_uri_append_path(uri: *mut GstUri, relative_path: *const c_char) -> gboolean;
7475    pub fn gst_uri_append_path_segment(uri: *mut GstUri, path_segment: *const c_char) -> gboolean;
7476    #[cfg(feature = "v1_18_3")]
7477    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7478    pub fn gst_uri_copy(uri: *const GstUri) -> *mut GstUri;
7479    pub fn gst_uri_equal(first: *const GstUri, second: *const GstUri) -> gboolean;
7480    pub fn gst_uri_from_string_with_base(base: *mut GstUri, uri: *const c_char) -> *mut GstUri;
7481    pub fn gst_uri_get_fragment(uri: *const GstUri) -> *const c_char;
7482    pub fn gst_uri_get_host(uri: *const GstUri) -> *const c_char;
7483    pub fn gst_uri_get_media_fragment_table(uri: *const GstUri) -> *mut glib::GHashTable;
7484    pub fn gst_uri_get_path(uri: *const GstUri) -> *mut c_char;
7485    pub fn gst_uri_get_path_segments(uri: *const GstUri) -> *mut glib::GList;
7486    pub fn gst_uri_get_path_string(uri: *const GstUri) -> *mut c_char;
7487    pub fn gst_uri_get_port(uri: *const GstUri) -> c_uint;
7488    pub fn gst_uri_get_query_keys(uri: *const GstUri) -> *mut glib::GList;
7489    pub fn gst_uri_get_query_string(uri: *const GstUri) -> *mut c_char;
7490    #[cfg(feature = "v1_24")]
7491    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7492    pub fn gst_uri_get_query_string_ordered(
7493        uri: *const GstUri,
7494        keys: *const glib::GList,
7495    ) -> *mut c_char;
7496    pub fn gst_uri_get_query_table(uri: *const GstUri) -> *mut glib::GHashTable;
7497    pub fn gst_uri_get_query_value(uri: *const GstUri, query_key: *const c_char) -> *const c_char;
7498    pub fn gst_uri_get_scheme(uri: *const GstUri) -> *const c_char;
7499    pub fn gst_uri_get_userinfo(uri: *const GstUri) -> *const c_char;
7500    pub fn gst_uri_is_normalized(uri: *const GstUri) -> gboolean;
7501    pub fn gst_uri_is_writable(uri: *const GstUri) -> gboolean;
7502    pub fn gst_uri_join(base_uri: *mut GstUri, ref_uri: *mut GstUri) -> *mut GstUri;
7503    pub fn gst_uri_make_writable(uri: *mut GstUri) -> *mut GstUri;
7504    pub fn gst_uri_new_with_base(
7505        base: *mut GstUri,
7506        scheme: *const c_char,
7507        userinfo: *const c_char,
7508        host: *const c_char,
7509        port: c_uint,
7510        path: *const c_char,
7511        query: *const c_char,
7512        fragment: *const c_char,
7513    ) -> *mut GstUri;
7514    pub fn gst_uri_normalize(uri: *mut GstUri) -> gboolean;
7515    pub fn gst_uri_query_has_key(uri: *const GstUri, query_key: *const c_char) -> gboolean;
7516    #[cfg(feature = "v1_18_3")]
7517    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7518    pub fn gst_uri_ref(uri: *mut GstUri) -> *mut GstUri;
7519    pub fn gst_uri_remove_query_key(uri: *mut GstUri, query_key: *const c_char) -> gboolean;
7520    pub fn gst_uri_set_fragment(uri: *mut GstUri, fragment: *const c_char) -> gboolean;
7521    pub fn gst_uri_set_host(uri: *mut GstUri, host: *const c_char) -> gboolean;
7522    pub fn gst_uri_set_path(uri: *mut GstUri, path: *const c_char) -> gboolean;
7523    pub fn gst_uri_set_path_segments(uri: *mut GstUri, path_segments: *mut glib::GList)
7524        -> gboolean;
7525    pub fn gst_uri_set_path_string(uri: *mut GstUri, path: *const c_char) -> gboolean;
7526    pub fn gst_uri_set_port(uri: *mut GstUri, port: c_uint) -> gboolean;
7527    pub fn gst_uri_set_query_string(uri: *mut GstUri, query: *const c_char) -> gboolean;
7528    pub fn gst_uri_set_query_table(
7529        uri: *mut GstUri,
7530        query_table: *mut glib::GHashTable,
7531    ) -> gboolean;
7532    pub fn gst_uri_set_query_value(
7533        uri: *mut GstUri,
7534        query_key: *const c_char,
7535        query_value: *const c_char,
7536    ) -> gboolean;
7537    pub fn gst_uri_set_scheme(uri: *mut GstUri, scheme: *const c_char) -> gboolean;
7538    pub fn gst_uri_set_userinfo(uri: *mut GstUri, userinfo: *const c_char) -> gboolean;
7539    pub fn gst_uri_to_string(uri: *const GstUri) -> *mut c_char;
7540    #[cfg(feature = "v1_24")]
7541    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7542    pub fn gst_uri_to_string_with_keys(uri: *const GstUri, keys: *const glib::GList)
7543        -> *mut c_char;
7544    #[cfg(feature = "v1_18_3")]
7545    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7546    pub fn gst_uri_unref(uri: *mut GstUri);
7547    pub fn gst_uri_construct(protocol: *const c_char, location: *const c_char) -> *mut c_char;
7548    pub fn gst_uri_from_string(uri: *const c_char) -> *mut GstUri;
7549    #[cfg(feature = "v1_18")]
7550    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7551    pub fn gst_uri_from_string_escaped(uri: *const c_char) -> *mut GstUri;
7552    pub fn gst_uri_get_location(uri: *const c_char) -> *mut c_char;
7553    pub fn gst_uri_get_protocol(uri: *const c_char) -> *mut c_char;
7554    pub fn gst_uri_has_protocol(uri: *const c_char, protocol: *const c_char) -> gboolean;
7555    pub fn gst_uri_is_valid(uri: *const c_char) -> gboolean;
7556    pub fn gst_uri_join_strings(base_uri: *const c_char, ref_uri: *const c_char) -> *mut c_char;
7557    pub fn gst_uri_protocol_is_supported(type_: GstURIType, protocol: *const c_char) -> gboolean;
7558    pub fn gst_uri_protocol_is_valid(protocol: *const c_char) -> gboolean;
7559
7560    //=========================================================================
7561    // GstVecDeque
7562    //=========================================================================
7563    #[cfg(feature = "v1_26")]
7564    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7565    pub fn gst_vec_deque_clear(array: *mut GstVecDeque);
7566    #[cfg(feature = "v1_26")]
7567    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7568    pub fn gst_vec_deque_drop_element(array: *mut GstVecDeque, idx: size_t) -> gpointer;
7569    #[cfg(feature = "v1_26")]
7570    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7571    pub fn gst_vec_deque_drop_struct(
7572        array: *mut GstVecDeque,
7573        idx: size_t,
7574        p_struct: gpointer,
7575    ) -> gboolean;
7576    #[cfg(feature = "v1_26")]
7577    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7578    pub fn gst_vec_deque_find(
7579        array: *mut GstVecDeque,
7580        func: glib::GCompareFunc,
7581        data: gpointer,
7582    ) -> size_t;
7583    #[cfg(feature = "v1_26")]
7584    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7585    pub fn gst_vec_deque_free(array: *mut GstVecDeque);
7586    #[cfg(feature = "v1_26")]
7587    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7588    pub fn gst_vec_deque_get_length(array: *mut GstVecDeque) -> size_t;
7589    #[cfg(feature = "v1_26")]
7590    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7591    pub fn gst_vec_deque_is_empty(array: *mut GstVecDeque) -> gboolean;
7592    #[cfg(feature = "v1_26")]
7593    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7594    pub fn gst_vec_deque_peek_head(array: *mut GstVecDeque) -> gpointer;
7595    #[cfg(feature = "v1_26")]
7596    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7597    pub fn gst_vec_deque_peek_head_struct(array: *mut GstVecDeque) -> gpointer;
7598    #[cfg(feature = "v1_26")]
7599    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7600    pub fn gst_vec_deque_peek_nth(array: *mut GstVecDeque, idx: size_t) -> gpointer;
7601    #[cfg(feature = "v1_26")]
7602    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7603    pub fn gst_vec_deque_peek_nth_struct(array: *mut GstVecDeque, idx: size_t) -> gpointer;
7604    #[cfg(feature = "v1_26")]
7605    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7606    pub fn gst_vec_deque_peek_tail(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_tail_struct(array: *mut GstVecDeque) -> gpointer;
7610    #[cfg(feature = "v1_26")]
7611    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7612    pub fn gst_vec_deque_pop_head(array: *mut GstVecDeque) -> gpointer;
7613    #[cfg(feature = "v1_26")]
7614    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7615    pub fn gst_vec_deque_pop_head_struct(array: *mut GstVecDeque) -> gpointer;
7616    #[cfg(feature = "v1_26")]
7617    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7618    pub fn gst_vec_deque_pop_tail(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_tail_struct(array: *mut GstVecDeque) -> gpointer;
7622    #[cfg(feature = "v1_26")]
7623    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7624    pub fn gst_vec_deque_push_sorted(
7625        array: *mut GstVecDeque,
7626        data: gpointer,
7627        func: glib::GCompareDataFunc,
7628        user_data: gpointer,
7629    );
7630    #[cfg(feature = "v1_26")]
7631    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7632    pub fn gst_vec_deque_push_sorted_struct(
7633        array: *mut GstVecDeque,
7634        p_struct: gpointer,
7635        func: glib::GCompareDataFunc,
7636        user_data: gpointer,
7637    );
7638    #[cfg(feature = "v1_26")]
7639    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7640    pub fn gst_vec_deque_push_tail(array: *mut GstVecDeque, data: gpointer);
7641    #[cfg(feature = "v1_26")]
7642    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7643    pub fn gst_vec_deque_push_tail_struct(array: *mut GstVecDeque, p_struct: gpointer);
7644    #[cfg(feature = "v1_26")]
7645    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7646    pub fn gst_vec_deque_set_clear_func(array: *mut GstVecDeque, clear_func: glib::GDestroyNotify);
7647    #[cfg(feature = "v1_26")]
7648    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7649    pub fn gst_vec_deque_sort(
7650        array: *mut GstVecDeque,
7651        compare_func: glib::GCompareDataFunc,
7652        user_data: gpointer,
7653    );
7654    #[cfg(feature = "v1_26")]
7655    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7656    pub fn gst_vec_deque_new(initial_size: size_t) -> *mut GstVecDeque;
7657    #[cfg(feature = "v1_26")]
7658    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7659    pub fn gst_vec_deque_new_for_struct(
7660        struct_size: size_t,
7661        initial_size: size_t,
7662    ) -> *mut GstVecDeque;
7663
7664    //=========================================================================
7665    // GstAllocator
7666    //=========================================================================
7667    pub fn gst_allocator_get_type() -> GType;
7668    pub fn gst_allocator_find(name: *const c_char) -> *mut GstAllocator;
7669    pub fn gst_allocator_register(name: *const c_char, allocator: *mut GstAllocator);
7670    pub fn gst_allocator_alloc(
7671        allocator: *mut GstAllocator,
7672        size: size_t,
7673        params: *mut GstAllocationParams,
7674    ) -> *mut GstMemory;
7675    pub fn gst_allocator_free(allocator: *mut GstAllocator, memory: *mut GstMemory);
7676    pub fn gst_allocator_set_default(allocator: *mut GstAllocator);
7677
7678    //=========================================================================
7679    // GstBin
7680    //=========================================================================
7681    pub fn gst_bin_get_type() -> GType;
7682    pub fn gst_bin_new(name: *const c_char) -> *mut GstElement;
7683    pub fn gst_bin_add(bin: *mut GstBin, element: *mut GstElement) -> gboolean;
7684    pub fn gst_bin_add_many(bin: *mut GstBin, element_1: *mut GstElement, ...);
7685    pub fn gst_bin_find_unlinked_pad(bin: *mut GstBin, direction: GstPadDirection) -> *mut GstPad;
7686    pub fn gst_bin_get_by_interface(bin: *mut GstBin, iface: GType) -> *mut GstElement;
7687    pub fn gst_bin_get_by_name(bin: *mut GstBin, name: *const c_char) -> *mut GstElement;
7688    pub fn gst_bin_get_by_name_recurse_up(bin: *mut GstBin, name: *const c_char)
7689        -> *mut GstElement;
7690    pub fn gst_bin_get_suppressed_flags(bin: *mut GstBin) -> GstElementFlags;
7691    #[cfg(feature = "v1_18")]
7692    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7693    pub fn gst_bin_iterate_all_by_element_factory_name(
7694        bin: *mut GstBin,
7695        factory_name: *const c_char,
7696    ) -> *mut GstIterator;
7697    pub fn gst_bin_iterate_all_by_interface(bin: *mut GstBin, iface: GType) -> *mut GstIterator;
7698    pub fn gst_bin_iterate_elements(bin: *mut GstBin) -> *mut GstIterator;
7699    pub fn gst_bin_iterate_recurse(bin: *mut GstBin) -> *mut GstIterator;
7700    pub fn gst_bin_iterate_sinks(bin: *mut GstBin) -> *mut GstIterator;
7701    pub fn gst_bin_iterate_sorted(bin: *mut GstBin) -> *mut GstIterator;
7702    pub fn gst_bin_iterate_sources(bin: *mut GstBin) -> *mut GstIterator;
7703    pub fn gst_bin_recalculate_latency(bin: *mut GstBin) -> gboolean;
7704    pub fn gst_bin_remove(bin: *mut GstBin, element: *mut GstElement) -> gboolean;
7705    pub fn gst_bin_remove_many(bin: *mut GstBin, element_1: *mut GstElement, ...);
7706    pub fn gst_bin_set_suppressed_flags(bin: *mut GstBin, flags: GstElementFlags);
7707    pub fn gst_bin_sync_children_states(bin: *mut GstBin) -> gboolean;
7708
7709    //=========================================================================
7710    // GstBitmask
7711    //=========================================================================
7712    pub fn gst_bitmask_get_type() -> GType;
7713
7714    //=========================================================================
7715    // GstBufferPool
7716    //=========================================================================
7717    pub fn gst_buffer_pool_get_type() -> GType;
7718    pub fn gst_buffer_pool_new() -> *mut GstBufferPool;
7719    pub fn gst_buffer_pool_config_add_option(config: *mut GstStructure, option: *const c_char);
7720    pub fn gst_buffer_pool_config_get_allocator(
7721        config: *mut GstStructure,
7722        allocator: *mut *mut GstAllocator,
7723        params: *mut GstAllocationParams,
7724    ) -> gboolean;
7725    pub fn gst_buffer_pool_config_get_option(
7726        config: *mut GstStructure,
7727        index: c_uint,
7728    ) -> *const c_char;
7729    pub fn gst_buffer_pool_config_get_params(
7730        config: *mut GstStructure,
7731        caps: *mut *mut GstCaps,
7732        size: *mut c_uint,
7733        min_buffers: *mut c_uint,
7734        max_buffers: *mut c_uint,
7735    ) -> gboolean;
7736    pub fn gst_buffer_pool_config_has_option(
7737        config: *mut GstStructure,
7738        option: *const c_char,
7739    ) -> gboolean;
7740    pub fn gst_buffer_pool_config_n_options(config: *mut GstStructure) -> c_uint;
7741    pub fn gst_buffer_pool_config_set_allocator(
7742        config: *mut GstStructure,
7743        allocator: *mut GstAllocator,
7744        params: *const GstAllocationParams,
7745    );
7746    pub fn gst_buffer_pool_config_set_params(
7747        config: *mut GstStructure,
7748        caps: *mut GstCaps,
7749        size: c_uint,
7750        min_buffers: c_uint,
7751        max_buffers: c_uint,
7752    );
7753    pub fn gst_buffer_pool_config_validate_params(
7754        config: *mut GstStructure,
7755        caps: *mut GstCaps,
7756        size: c_uint,
7757        min_buffers: c_uint,
7758        max_buffers: c_uint,
7759    ) -> gboolean;
7760    pub fn gst_buffer_pool_acquire_buffer(
7761        pool: *mut GstBufferPool,
7762        buffer: *mut *mut GstBuffer,
7763        params: *mut GstBufferPoolAcquireParams,
7764    ) -> GstFlowReturn;
7765    pub fn gst_buffer_pool_get_config(pool: *mut GstBufferPool) -> *mut GstStructure;
7766    pub fn gst_buffer_pool_get_options(pool: *mut GstBufferPool) -> *mut *const c_char;
7767    pub fn gst_buffer_pool_has_option(pool: *mut GstBufferPool, option: *const c_char) -> gboolean;
7768    pub fn gst_buffer_pool_is_active(pool: *mut GstBufferPool) -> gboolean;
7769    pub fn gst_buffer_pool_release_buffer(pool: *mut GstBufferPool, buffer: *mut GstBuffer);
7770    pub fn gst_buffer_pool_set_active(pool: *mut GstBufferPool, active: gboolean) -> gboolean;
7771    pub fn gst_buffer_pool_set_config(
7772        pool: *mut GstBufferPool,
7773        config: *mut GstStructure,
7774    ) -> gboolean;
7775    pub fn gst_buffer_pool_set_flushing(pool: *mut GstBufferPool, flushing: gboolean);
7776
7777    //=========================================================================
7778    // GstBus
7779    //=========================================================================
7780    pub fn gst_bus_get_type() -> GType;
7781    pub fn gst_bus_new() -> *mut GstBus;
7782    pub fn gst_bus_add_signal_watch(bus: *mut GstBus);
7783    pub fn gst_bus_add_signal_watch_full(bus: *mut GstBus, priority: c_int);
7784    pub fn gst_bus_add_watch(bus: *mut GstBus, func: GstBusFunc, user_data: gpointer) -> c_uint;
7785    pub fn gst_bus_add_watch_full(
7786        bus: *mut GstBus,
7787        priority: c_int,
7788        func: GstBusFunc,
7789        user_data: gpointer,
7790        notify: glib::GDestroyNotify,
7791    ) -> c_uint;
7792    pub fn gst_bus_async_signal_func(
7793        bus: *mut GstBus,
7794        message: *mut GstMessage,
7795        data: gpointer,
7796    ) -> gboolean;
7797    pub fn gst_bus_create_watch(bus: *mut GstBus) -> *mut glib::GSource;
7798    pub fn gst_bus_disable_sync_message_emission(bus: *mut GstBus);
7799    pub fn gst_bus_enable_sync_message_emission(bus: *mut GstBus);
7800    pub fn gst_bus_get_pollfd(bus: *mut GstBus, fd: *mut glib::GPollFD);
7801    pub fn gst_bus_have_pending(bus: *mut GstBus) -> gboolean;
7802    pub fn gst_bus_peek(bus: *mut GstBus) -> *mut GstMessage;
7803    pub fn gst_bus_poll(
7804        bus: *mut GstBus,
7805        events: GstMessageType,
7806        timeout: GstClockTime,
7807    ) -> *mut GstMessage;
7808    pub fn gst_bus_pop(bus: *mut GstBus) -> *mut GstMessage;
7809    pub fn gst_bus_pop_filtered(bus: *mut GstBus, types: GstMessageType) -> *mut GstMessage;
7810    pub fn gst_bus_post(bus: *mut GstBus, message: *mut GstMessage) -> gboolean;
7811    pub fn gst_bus_remove_signal_watch(bus: *mut GstBus);
7812    pub fn gst_bus_remove_watch(bus: *mut GstBus) -> gboolean;
7813    pub fn gst_bus_set_flushing(bus: *mut GstBus, flushing: gboolean);
7814    pub fn gst_bus_set_sync_handler(
7815        bus: *mut GstBus,
7816        func: GstBusSyncHandler,
7817        user_data: gpointer,
7818        notify: glib::GDestroyNotify,
7819    );
7820    pub fn gst_bus_sync_signal_handler(
7821        bus: *mut GstBus,
7822        message: *mut GstMessage,
7823        data: gpointer,
7824    ) -> GstBusSyncReply;
7825    pub fn gst_bus_timed_pop(bus: *mut GstBus, timeout: GstClockTime) -> *mut GstMessage;
7826    pub fn gst_bus_timed_pop_filtered(
7827        bus: *mut GstBus,
7828        timeout: GstClockTime,
7829        types: GstMessageType,
7830    ) -> *mut GstMessage;
7831
7832    //=========================================================================
7833    // GstClock
7834    //=========================================================================
7835    pub fn gst_clock_get_type() -> GType;
7836    pub fn gst_clock_id_compare_func(id1: gconstpointer, id2: gconstpointer) -> c_int;
7837    #[cfg(feature = "v1_16")]
7838    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
7839    pub fn gst_clock_id_get_clock(id: GstClockID) -> *mut GstClock;
7840    pub fn gst_clock_id_get_time(id: GstClockID) -> GstClockTime;
7841    pub fn gst_clock_id_ref(id: GstClockID) -> GstClockID;
7842    pub fn gst_clock_id_unref(id: GstClockID);
7843    pub fn gst_clock_id_unschedule(id: GstClockID);
7844    #[cfg(feature = "v1_16")]
7845    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
7846    pub fn gst_clock_id_uses_clock(id: GstClockID, clock: *mut GstClock) -> gboolean;
7847    pub fn gst_clock_id_wait(id: GstClockID, jitter: *mut GstClockTimeDiff) -> GstClockReturn;
7848    pub fn gst_clock_id_wait_async(
7849        id: GstClockID,
7850        func: GstClockCallback,
7851        user_data: gpointer,
7852        destroy_data: glib::GDestroyNotify,
7853    ) -> GstClockReturn;
7854    pub fn gst_clock_add_observation(
7855        clock: *mut GstClock,
7856        observation_internal: GstClockTime,
7857        observation_external: GstClockTime,
7858        r_squared: *mut c_double,
7859    ) -> gboolean;
7860    pub fn gst_clock_add_observation_unapplied(
7861        clock: *mut GstClock,
7862        observation_internal: GstClockTime,
7863        observation_external: GstClockTime,
7864        r_squared: *mut c_double,
7865        internal: *mut GstClockTime,
7866        external: *mut GstClockTime,
7867        rate_num: *mut GstClockTime,
7868        rate_denom: *mut GstClockTime,
7869    ) -> gboolean;
7870    pub fn gst_clock_adjust_unlocked(clock: *mut GstClock, internal: GstClockTime) -> GstClockTime;
7871    pub fn gst_clock_adjust_with_calibration(
7872        clock: *mut GstClock,
7873        internal_target: GstClockTime,
7874        cinternal: GstClockTime,
7875        cexternal: GstClockTime,
7876        cnum: GstClockTime,
7877        cdenom: GstClockTime,
7878    ) -> GstClockTime;
7879    pub fn gst_clock_get_calibration(
7880        clock: *mut GstClock,
7881        internal: *mut GstClockTime,
7882        external: *mut GstClockTime,
7883        rate_num: *mut GstClockTime,
7884        rate_denom: *mut GstClockTime,
7885    );
7886    pub fn gst_clock_get_internal_time(clock: *mut GstClock) -> GstClockTime;
7887    pub fn gst_clock_get_master(clock: *mut GstClock) -> *mut GstClock;
7888    pub fn gst_clock_get_resolution(clock: *mut GstClock) -> GstClockTime;
7889    pub fn gst_clock_get_time(clock: *mut GstClock) -> GstClockTime;
7890    pub fn gst_clock_get_timeout(clock: *mut GstClock) -> GstClockTime;
7891    pub fn gst_clock_is_synced(clock: *mut GstClock) -> gboolean;
7892    pub fn gst_clock_new_periodic_id(
7893        clock: *mut GstClock,
7894        start_time: GstClockTime,
7895        interval: GstClockTime,
7896    ) -> GstClockID;
7897    pub fn gst_clock_new_single_shot_id(clock: *mut GstClock, time: GstClockTime) -> GstClockID;
7898    pub fn gst_clock_periodic_id_reinit(
7899        clock: *mut GstClock,
7900        id: GstClockID,
7901        start_time: GstClockTime,
7902        interval: GstClockTime,
7903    ) -> gboolean;
7904    pub fn gst_clock_set_calibration(
7905        clock: *mut GstClock,
7906        internal: GstClockTime,
7907        external: GstClockTime,
7908        rate_num: GstClockTime,
7909        rate_denom: GstClockTime,
7910    );
7911    pub fn gst_clock_set_master(clock: *mut GstClock, master: *mut GstClock) -> gboolean;
7912    pub fn gst_clock_set_resolution(clock: *mut GstClock, resolution: GstClockTime)
7913        -> GstClockTime;
7914    pub fn gst_clock_set_synced(clock: *mut GstClock, synced: gboolean);
7915    pub fn gst_clock_set_timeout(clock: *mut GstClock, timeout: GstClockTime);
7916    pub fn gst_clock_single_shot_id_reinit(
7917        clock: *mut GstClock,
7918        id: GstClockID,
7919        time: GstClockTime,
7920    ) -> gboolean;
7921    pub fn gst_clock_unadjust_unlocked(
7922        clock: *mut GstClock,
7923        external: GstClockTime,
7924    ) -> GstClockTime;
7925    pub fn gst_clock_unadjust_with_calibration(
7926        clock: *mut GstClock,
7927        external_target: GstClockTime,
7928        cinternal: GstClockTime,
7929        cexternal: GstClockTime,
7930        cnum: GstClockTime,
7931        cdenom: GstClockTime,
7932    ) -> GstClockTime;
7933    pub fn gst_clock_wait_for_sync(clock: *mut GstClock, timeout: GstClockTime) -> gboolean;
7934
7935    //=========================================================================
7936    // GstControlBinding
7937    //=========================================================================
7938    pub fn gst_control_binding_get_type() -> GType;
7939    pub fn gst_control_binding_get_g_value_array(
7940        binding: *mut GstControlBinding,
7941        timestamp: GstClockTime,
7942        interval: GstClockTime,
7943        n_values: c_uint,
7944        values: *mut gobject::GValue,
7945    ) -> gboolean;
7946    pub fn gst_control_binding_get_value(
7947        binding: *mut GstControlBinding,
7948        timestamp: GstClockTime,
7949    ) -> *mut gobject::GValue;
7950    pub fn gst_control_binding_get_value_array(
7951        binding: *mut GstControlBinding,
7952        timestamp: GstClockTime,
7953        interval: GstClockTime,
7954        n_values: c_uint,
7955        values: gpointer,
7956    ) -> gboolean;
7957    pub fn gst_control_binding_is_disabled(binding: *mut GstControlBinding) -> gboolean;
7958    pub fn gst_control_binding_set_disabled(binding: *mut GstControlBinding, disabled: gboolean);
7959    pub fn gst_control_binding_sync_values(
7960        binding: *mut GstControlBinding,
7961        object: *mut GstObject,
7962        timestamp: GstClockTime,
7963        last_sync: GstClockTime,
7964    ) -> gboolean;
7965
7966    //=========================================================================
7967    // GstControlSource
7968    //=========================================================================
7969    pub fn gst_control_source_get_type() -> GType;
7970    pub fn gst_control_source_get_value(
7971        self_: *mut GstControlSource,
7972        timestamp: GstClockTime,
7973        value: *mut c_double,
7974    ) -> gboolean;
7975    pub fn gst_control_source_get_value_array(
7976        self_: *mut GstControlSource,
7977        timestamp: GstClockTime,
7978        interval: GstClockTime,
7979        n_values: c_uint,
7980        values: *mut c_double,
7981    ) -> gboolean;
7982
7983    //=========================================================================
7984    // GstDevice
7985    //=========================================================================
7986    pub fn gst_device_get_type() -> GType;
7987    pub fn gst_device_create_element(
7988        device: *mut GstDevice,
7989        name: *const c_char,
7990    ) -> *mut GstElement;
7991    pub fn gst_device_get_caps(device: *mut GstDevice) -> *mut GstCaps;
7992    pub fn gst_device_get_device_class(device: *mut GstDevice) -> *mut c_char;
7993    pub fn gst_device_get_display_name(device: *mut GstDevice) -> *mut c_char;
7994    pub fn gst_device_get_properties(device: *mut GstDevice) -> *mut GstStructure;
7995    pub fn gst_device_has_classes(device: *mut GstDevice, classes: *const c_char) -> gboolean;
7996    pub fn gst_device_has_classesv(device: *mut GstDevice, classes: *mut *mut c_char) -> gboolean;
7997    pub fn gst_device_reconfigure_element(
7998        device: *mut GstDevice,
7999        element: *mut GstElement,
8000    ) -> gboolean;
8001
8002    //=========================================================================
8003    // GstDeviceMonitor
8004    //=========================================================================
8005    pub fn gst_device_monitor_get_type() -> GType;
8006    pub fn gst_device_monitor_new() -> *mut GstDeviceMonitor;
8007    pub fn gst_device_monitor_add_filter(
8008        monitor: *mut GstDeviceMonitor,
8009        classes: *const c_char,
8010        caps: *mut GstCaps,
8011    ) -> c_uint;
8012    pub fn gst_device_monitor_get_bus(monitor: *mut GstDeviceMonitor) -> *mut GstBus;
8013    pub fn gst_device_monitor_get_devices(monitor: *mut GstDeviceMonitor) -> *mut glib::GList;
8014    pub fn gst_device_monitor_get_providers(monitor: *mut GstDeviceMonitor) -> *mut *mut c_char;
8015    pub fn gst_device_monitor_get_show_all_devices(monitor: *mut GstDeviceMonitor) -> gboolean;
8016    pub fn gst_device_monitor_remove_filter(
8017        monitor: *mut GstDeviceMonitor,
8018        filter_id: c_uint,
8019    ) -> gboolean;
8020    pub fn gst_device_monitor_set_show_all_devices(
8021        monitor: *mut GstDeviceMonitor,
8022        show_all: gboolean,
8023    );
8024    pub fn gst_device_monitor_start(monitor: *mut GstDeviceMonitor) -> gboolean;
8025    pub fn gst_device_monitor_stop(monitor: *mut GstDeviceMonitor);
8026
8027    //=========================================================================
8028    // GstDeviceProvider
8029    //=========================================================================
8030    pub fn gst_device_provider_get_type() -> GType;
8031    pub fn gst_device_provider_register(
8032        plugin: *mut GstPlugin,
8033        name: *const c_char,
8034        rank: c_uint,
8035        type_: GType,
8036    ) -> gboolean;
8037    pub fn gst_device_provider_can_monitor(provider: *mut GstDeviceProvider) -> gboolean;
8038    pub fn gst_device_provider_device_add(provider: *mut GstDeviceProvider, device: *mut GstDevice);
8039    #[cfg(feature = "v1_16")]
8040    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
8041    pub fn gst_device_provider_device_changed(
8042        provider: *mut GstDeviceProvider,
8043        device: *mut GstDevice,
8044        changed_device: *mut GstDevice,
8045    );
8046    pub fn gst_device_provider_device_remove(
8047        provider: *mut GstDeviceProvider,
8048        device: *mut GstDevice,
8049    );
8050    pub fn gst_device_provider_get_bus(provider: *mut GstDeviceProvider) -> *mut GstBus;
8051    pub fn gst_device_provider_get_devices(provider: *mut GstDeviceProvider) -> *mut glib::GList;
8052    pub fn gst_device_provider_get_factory(
8053        provider: *mut GstDeviceProvider,
8054    ) -> *mut GstDeviceProviderFactory;
8055    pub fn gst_device_provider_get_hidden_providers(
8056        provider: *mut GstDeviceProvider,
8057    ) -> *mut *mut c_char;
8058    pub fn gst_device_provider_get_metadata(
8059        provider: *mut GstDeviceProvider,
8060        key: *const c_char,
8061    ) -> *const c_char;
8062    pub fn gst_device_provider_hide_provider(provider: *mut GstDeviceProvider, name: *const c_char);
8063    #[cfg(feature = "v1_20")]
8064    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8065    pub fn gst_device_provider_is_started(provider: *mut GstDeviceProvider) -> gboolean;
8066    pub fn gst_device_provider_start(provider: *mut GstDeviceProvider) -> gboolean;
8067    pub fn gst_device_provider_stop(provider: *mut GstDeviceProvider);
8068    pub fn gst_device_provider_unhide_provider(
8069        provider: *mut GstDeviceProvider,
8070        name: *const c_char,
8071    );
8072
8073    //=========================================================================
8074    // GstDeviceProviderFactory
8075    //=========================================================================
8076    pub fn gst_device_provider_factory_get_type() -> GType;
8077    pub fn gst_device_provider_factory_find(name: *const c_char) -> *mut GstDeviceProviderFactory;
8078    pub fn gst_device_provider_factory_get_by_name(
8079        factoryname: *const c_char,
8080    ) -> *mut GstDeviceProvider;
8081    pub fn gst_device_provider_factory_list_get_device_providers(
8082        minrank: GstRank,
8083    ) -> *mut glib::GList;
8084    pub fn gst_device_provider_factory_get(
8085        factory: *mut GstDeviceProviderFactory,
8086    ) -> *mut GstDeviceProvider;
8087    pub fn gst_device_provider_factory_get_device_provider_type(
8088        factory: *mut GstDeviceProviderFactory,
8089    ) -> GType;
8090    pub fn gst_device_provider_factory_get_metadata(
8091        factory: *mut GstDeviceProviderFactory,
8092        key: *const c_char,
8093    ) -> *const c_char;
8094    pub fn gst_device_provider_factory_get_metadata_keys(
8095        factory: *mut GstDeviceProviderFactory,
8096    ) -> *mut *mut c_char;
8097    pub fn gst_device_provider_factory_has_classes(
8098        factory: *mut GstDeviceProviderFactory,
8099        classes: *const c_char,
8100    ) -> gboolean;
8101    pub fn gst_device_provider_factory_has_classesv(
8102        factory: *mut GstDeviceProviderFactory,
8103        classes: *mut *mut c_char,
8104    ) -> gboolean;
8105
8106    //=========================================================================
8107    // GstDoubleRange
8108    //=========================================================================
8109    pub fn gst_double_range_get_type() -> GType;
8110
8111    //=========================================================================
8112    // GstDynamicTypeFactory
8113    //=========================================================================
8114    pub fn gst_dynamic_type_factory_get_type() -> GType;
8115    pub fn gst_dynamic_type_factory_load(factoryname: *const c_char) -> GType;
8116
8117    //=========================================================================
8118    // GstElement
8119    //=========================================================================
8120    pub fn gst_element_get_type() -> GType;
8121    pub fn gst_element_make_from_uri(
8122        type_: GstURIType,
8123        uri: *const c_char,
8124        elementname: *const c_char,
8125        error: *mut *mut glib::GError,
8126    ) -> *mut GstElement;
8127    pub fn gst_element_register(
8128        plugin: *mut GstPlugin,
8129        name: *const c_char,
8130        rank: c_uint,
8131        type_: GType,
8132    ) -> gboolean;
8133    pub fn gst_element_state_change_return_get_name(
8134        state_ret: GstStateChangeReturn,
8135    ) -> *const c_char;
8136    pub fn gst_element_state_get_name(state: GstState) -> *const c_char;
8137    #[cfg(feature = "v1_20")]
8138    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8139    pub fn gst_element_type_set_skip_documentation(type_: GType);
8140    pub fn gst_element_abort_state(element: *mut GstElement);
8141    pub fn gst_element_add_pad(element: *mut GstElement, pad: *mut GstPad) -> gboolean;
8142    pub fn gst_element_add_property_deep_notify_watch(
8143        element: *mut GstElement,
8144        property_name: *const c_char,
8145        include_value: gboolean,
8146    ) -> c_ulong;
8147    pub fn gst_element_add_property_notify_watch(
8148        element: *mut GstElement,
8149        property_name: *const c_char,
8150        include_value: gboolean,
8151    ) -> c_ulong;
8152    pub fn gst_element_call_async(
8153        element: *mut GstElement,
8154        func: GstElementCallAsyncFunc,
8155        user_data: gpointer,
8156        destroy_notify: glib::GDestroyNotify,
8157    );
8158    pub fn gst_element_change_state(
8159        element: *mut GstElement,
8160        transition: GstStateChange,
8161    ) -> GstStateChangeReturn;
8162    pub fn gst_element_continue_state(
8163        element: *mut GstElement,
8164        ret: GstStateChangeReturn,
8165    ) -> GstStateChangeReturn;
8166    pub fn gst_element_create_all_pads(element: *mut GstElement);
8167    #[cfg(feature = "v1_24")]
8168    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8169    pub fn gst_element_decorate_stream_id(
8170        element: *mut GstElement,
8171        stream_id: *const c_char,
8172    ) -> *mut c_char;
8173    #[cfg(feature = "v1_24")]
8174    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8175    pub fn gst_element_decorate_stream_id_printf(
8176        element: *mut GstElement,
8177        format: *const c_char,
8178        ...
8179    ) -> *mut c_char;
8180    //#[cfg(feature = "v1_24")]
8181    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8182    //pub fn gst_element_decorate_stream_id_printf_valist(element: *mut GstElement, format: *const c_char, var_args: /*Unimplemented*/va_list) -> *mut c_char;
8183    pub fn gst_element_foreach_pad(
8184        element: *mut GstElement,
8185        func: GstElementForeachPadFunc,
8186        user_data: gpointer,
8187    ) -> gboolean;
8188    pub fn gst_element_foreach_sink_pad(
8189        element: *mut GstElement,
8190        func: GstElementForeachPadFunc,
8191        user_data: gpointer,
8192    ) -> gboolean;
8193    pub fn gst_element_foreach_src_pad(
8194        element: *mut GstElement,
8195        func: GstElementForeachPadFunc,
8196        user_data: gpointer,
8197    ) -> gboolean;
8198    pub fn gst_element_get_base_time(element: *mut GstElement) -> GstClockTime;
8199    pub fn gst_element_get_bus(element: *mut GstElement) -> *mut GstBus;
8200    pub fn gst_element_get_clock(element: *mut GstElement) -> *mut GstClock;
8201    pub fn gst_element_get_compatible_pad(
8202        element: *mut GstElement,
8203        pad: *mut GstPad,
8204        caps: *mut GstCaps,
8205    ) -> *mut GstPad;
8206    pub fn gst_element_get_compatible_pad_template(
8207        element: *mut GstElement,
8208        compattempl: *mut GstPadTemplate,
8209    ) -> *mut GstPadTemplate;
8210    pub fn gst_element_get_context(
8211        element: *mut GstElement,
8212        context_type: *const c_char,
8213    ) -> *mut GstContext;
8214    pub fn gst_element_get_context_unlocked(
8215        element: *mut GstElement,
8216        context_type: *const c_char,
8217    ) -> *mut GstContext;
8218    pub fn gst_element_get_contexts(element: *mut GstElement) -> *mut glib::GList;
8219    #[cfg(feature = "v1_18")]
8220    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8221    pub fn gst_element_get_current_clock_time(element: *mut GstElement) -> GstClockTime;
8222    #[cfg(feature = "v1_18")]
8223    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8224    pub fn gst_element_get_current_running_time(element: *mut GstElement) -> GstClockTime;
8225    pub fn gst_element_get_factory(element: *mut GstElement) -> *mut GstElementFactory;
8226    pub fn gst_element_get_metadata(element: *mut GstElement, key: *const c_char) -> *const c_char;
8227    pub fn gst_element_get_pad_template(
8228        element: *mut GstElement,
8229        name: *const c_char,
8230    ) -> *mut GstPadTemplate;
8231    pub fn gst_element_get_pad_template_list(element: *mut GstElement) -> *mut glib::GList;
8232    pub fn gst_element_get_request_pad(
8233        element: *mut GstElement,
8234        name: *const c_char,
8235    ) -> *mut GstPad;
8236    pub fn gst_element_get_start_time(element: *mut GstElement) -> GstClockTime;
8237    pub fn gst_element_get_state(
8238        element: *mut GstElement,
8239        state: *mut GstState,
8240        pending: *mut GstState,
8241        timeout: GstClockTime,
8242    ) -> GstStateChangeReturn;
8243    pub fn gst_element_get_static_pad(element: *mut GstElement, name: *const c_char)
8244        -> *mut GstPad;
8245    pub fn gst_element_is_locked_state(element: *mut GstElement) -> gboolean;
8246    pub fn gst_element_iterate_pads(element: *mut GstElement) -> *mut GstIterator;
8247    pub fn gst_element_iterate_sink_pads(element: *mut GstElement) -> *mut GstIterator;
8248    pub fn gst_element_iterate_src_pads(element: *mut GstElement) -> *mut GstIterator;
8249    pub fn gst_element_link(src: *mut GstElement, dest: *mut GstElement) -> gboolean;
8250    pub fn gst_element_link_filtered(
8251        src: *mut GstElement,
8252        dest: *mut GstElement,
8253        filter: *mut GstCaps,
8254    ) -> gboolean;
8255    pub fn gst_element_link_many(
8256        element_1: *mut GstElement,
8257        element_2: *mut GstElement,
8258        ...
8259    ) -> gboolean;
8260    pub fn gst_element_link_pads(
8261        src: *mut GstElement,
8262        srcpadname: *const c_char,
8263        dest: *mut GstElement,
8264        destpadname: *const c_char,
8265    ) -> gboolean;
8266    pub fn gst_element_link_pads_filtered(
8267        src: *mut GstElement,
8268        srcpadname: *const c_char,
8269        dest: *mut GstElement,
8270        destpadname: *const c_char,
8271        filter: *mut GstCaps,
8272    ) -> gboolean;
8273    pub fn gst_element_link_pads_full(
8274        src: *mut GstElement,
8275        srcpadname: *const c_char,
8276        dest: *mut GstElement,
8277        destpadname: *const c_char,
8278        flags: GstPadLinkCheck,
8279    ) -> gboolean;
8280    pub fn gst_element_lost_state(element: *mut GstElement);
8281    pub fn gst_element_message_full(
8282        element: *mut GstElement,
8283        type_: GstMessageType,
8284        domain: glib::GQuark,
8285        code: c_int,
8286        text: *mut c_char,
8287        debug: *mut c_char,
8288        file: *const c_char,
8289        function: *const c_char,
8290        line: c_int,
8291    );
8292    pub fn gst_element_message_full_with_details(
8293        element: *mut GstElement,
8294        type_: GstMessageType,
8295        domain: glib::GQuark,
8296        code: c_int,
8297        text: *mut c_char,
8298        debug: *mut c_char,
8299        file: *const c_char,
8300        function: *const c_char,
8301        line: c_int,
8302        structure: *mut GstStructure,
8303    );
8304    pub fn gst_element_no_more_pads(element: *mut GstElement);
8305    pub fn gst_element_post_message(element: *mut GstElement, message: *mut GstMessage)
8306        -> gboolean;
8307    pub fn gst_element_provide_clock(element: *mut GstElement) -> *mut GstClock;
8308    pub fn gst_element_query(element: *mut GstElement, query: *mut GstQuery) -> gboolean;
8309    pub fn gst_element_query_convert(
8310        element: *mut GstElement,
8311        src_format: GstFormat,
8312        src_val: i64,
8313        dest_format: GstFormat,
8314        dest_val: *mut i64,
8315    ) -> gboolean;
8316    pub fn gst_element_query_duration(
8317        element: *mut GstElement,
8318        format: GstFormat,
8319        duration: *mut i64,
8320    ) -> gboolean;
8321    pub fn gst_element_query_position(
8322        element: *mut GstElement,
8323        format: GstFormat,
8324        cur: *mut i64,
8325    ) -> gboolean;
8326    pub fn gst_element_release_request_pad(element: *mut GstElement, pad: *mut GstPad);
8327    pub fn gst_element_remove_pad(element: *mut GstElement, pad: *mut GstPad) -> gboolean;
8328    pub fn gst_element_remove_property_notify_watch(element: *mut GstElement, watch_id: c_ulong);
8329    pub fn gst_element_request_pad(
8330        element: *mut GstElement,
8331        templ: *mut GstPadTemplate,
8332        name: *const c_char,
8333        caps: *const GstCaps,
8334    ) -> *mut GstPad;
8335    #[cfg(feature = "v1_20")]
8336    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8337    pub fn gst_element_request_pad_simple(
8338        element: *mut GstElement,
8339        name: *const c_char,
8340    ) -> *mut GstPad;
8341    pub fn gst_element_seek(
8342        element: *mut GstElement,
8343        rate: c_double,
8344        format: GstFormat,
8345        flags: GstSeekFlags,
8346        start_type: GstSeekType,
8347        start: i64,
8348        stop_type: GstSeekType,
8349        stop: i64,
8350    ) -> gboolean;
8351    pub fn gst_element_seek_simple(
8352        element: *mut GstElement,
8353        format: GstFormat,
8354        seek_flags: GstSeekFlags,
8355        seek_pos: i64,
8356    ) -> gboolean;
8357    pub fn gst_element_send_event(element: *mut GstElement, event: *mut GstEvent) -> gboolean;
8358    pub fn gst_element_set_base_time(element: *mut GstElement, time: GstClockTime);
8359    pub fn gst_element_set_bus(element: *mut GstElement, bus: *mut GstBus);
8360    pub fn gst_element_set_clock(element: *mut GstElement, clock: *mut GstClock) -> gboolean;
8361    pub fn gst_element_set_context(element: *mut GstElement, context: *mut GstContext);
8362    pub fn gst_element_set_locked_state(
8363        element: *mut GstElement,
8364        locked_state: gboolean,
8365    ) -> gboolean;
8366    pub fn gst_element_set_start_time(element: *mut GstElement, time: GstClockTime);
8367    pub fn gst_element_set_state(element: *mut GstElement, state: GstState)
8368        -> GstStateChangeReturn;
8369    pub fn gst_element_sync_state_with_parent(element: *mut GstElement) -> gboolean;
8370    pub fn gst_element_unlink(src: *mut GstElement, dest: *mut GstElement);
8371    pub fn gst_element_unlink_many(element_1: *mut GstElement, element_2: *mut GstElement, ...);
8372    pub fn gst_element_unlink_pads(
8373        src: *mut GstElement,
8374        srcpadname: *const c_char,
8375        dest: *mut GstElement,
8376        destpadname: *const c_char,
8377    );
8378
8379    //=========================================================================
8380    // GstElementFactory
8381    //=========================================================================
8382    pub fn gst_element_factory_get_type() -> GType;
8383    pub fn gst_element_factory_find(name: *const c_char) -> *mut GstElementFactory;
8384    pub fn gst_element_factory_list_filter(
8385        list: *mut glib::GList,
8386        caps: *const GstCaps,
8387        direction: GstPadDirection,
8388        subsetonly: gboolean,
8389    ) -> *mut glib::GList;
8390    pub fn gst_element_factory_list_get_elements(
8391        type_: GstElementFactoryListType,
8392        minrank: GstRank,
8393    ) -> *mut glib::GList;
8394    pub fn gst_element_factory_make(
8395        factoryname: *const c_char,
8396        name: *const c_char,
8397    ) -> *mut GstElement;
8398    #[cfg(feature = "v1_20")]
8399    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8400    pub fn gst_element_factory_make_full(
8401        factoryname: *const c_char,
8402        first: *const c_char,
8403        ...
8404    ) -> *mut GstElement;
8405    //#[cfg(feature = "v1_20")]
8406    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8407    //pub fn gst_element_factory_make_valist(factoryname: *const c_char, first: *const c_char, properties: /*Unimplemented*/va_list) -> *mut GstElement;
8408    #[cfg(feature = "v1_20")]
8409    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8410    pub fn gst_element_factory_make_with_properties(
8411        factoryname: *const c_char,
8412        n: c_uint,
8413        names: *mut *const c_char,
8414        values: *const gobject::GValue,
8415    ) -> *mut GstElement;
8416    pub fn gst_element_factory_can_sink_all_caps(
8417        factory: *mut GstElementFactory,
8418        caps: *const GstCaps,
8419    ) -> gboolean;
8420    pub fn gst_element_factory_can_sink_any_caps(
8421        factory: *mut GstElementFactory,
8422        caps: *const GstCaps,
8423    ) -> gboolean;
8424    pub fn gst_element_factory_can_src_all_caps(
8425        factory: *mut GstElementFactory,
8426        caps: *const GstCaps,
8427    ) -> gboolean;
8428    pub fn gst_element_factory_can_src_any_caps(
8429        factory: *mut GstElementFactory,
8430        caps: *const GstCaps,
8431    ) -> gboolean;
8432    pub fn gst_element_factory_create(
8433        factory: *mut GstElementFactory,
8434        name: *const c_char,
8435    ) -> *mut GstElement;
8436    #[cfg(feature = "v1_20")]
8437    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8438    pub fn gst_element_factory_create_full(
8439        factory: *mut GstElementFactory,
8440        first: *const c_char,
8441        ...
8442    ) -> *mut GstElement;
8443    //#[cfg(feature = "v1_20")]
8444    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8445    //pub fn gst_element_factory_create_valist(factory: *mut GstElementFactory, first: *const c_char, properties: /*Unimplemented*/va_list) -> *mut GstElement;
8446    #[cfg(feature = "v1_20")]
8447    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8448    pub fn gst_element_factory_create_with_properties(
8449        factory: *mut GstElementFactory,
8450        n: c_uint,
8451        names: *mut *const c_char,
8452        values: *const gobject::GValue,
8453    ) -> *mut GstElement;
8454    pub fn gst_element_factory_get_element_type(factory: *mut GstElementFactory) -> GType;
8455    pub fn gst_element_factory_get_metadata(
8456        factory: *mut GstElementFactory,
8457        key: *const c_char,
8458    ) -> *const c_char;
8459    pub fn gst_element_factory_get_metadata_keys(
8460        factory: *mut GstElementFactory,
8461    ) -> *mut *mut c_char;
8462    pub fn gst_element_factory_get_num_pad_templates(factory: *mut GstElementFactory) -> c_uint;
8463    #[cfg(feature = "v1_20")]
8464    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8465    pub fn gst_element_factory_get_skip_documentation(factory: *mut GstElementFactory) -> gboolean;
8466    pub fn gst_element_factory_get_static_pad_templates(
8467        factory: *mut GstElementFactory,
8468    ) -> *const glib::GList;
8469    pub fn gst_element_factory_get_uri_protocols(
8470        factory: *mut GstElementFactory,
8471    ) -> *const *const c_char;
8472    pub fn gst_element_factory_get_uri_type(factory: *mut GstElementFactory) -> GstURIType;
8473    pub fn gst_element_factory_has_interface(
8474        factory: *mut GstElementFactory,
8475        interfacename: *const c_char,
8476    ) -> gboolean;
8477    pub fn gst_element_factory_list_is_type(
8478        factory: *mut GstElementFactory,
8479        type_: GstElementFactoryListType,
8480    ) -> gboolean;
8481
8482    //=========================================================================
8483    // GstFlagSet
8484    //=========================================================================
8485    pub fn gst_flagset_get_type() -> GType;
8486    pub fn gst_flagset_register(flags_type: GType) -> GType;
8487
8488    //=========================================================================
8489    // GstFraction
8490    //=========================================================================
8491    pub fn gst_fraction_get_type() -> GType;
8492
8493    //=========================================================================
8494    // GstFractionRange
8495    //=========================================================================
8496    pub fn gst_fraction_range_get_type() -> GType;
8497
8498    //=========================================================================
8499    // GstGhostPad
8500    //=========================================================================
8501    pub fn gst_ghost_pad_get_type() -> GType;
8502    pub fn gst_ghost_pad_new(name: *const c_char, target: *mut GstPad) -> *mut GstPad;
8503    pub fn gst_ghost_pad_new_from_template(
8504        name: *const c_char,
8505        target: *mut GstPad,
8506        templ: *mut GstPadTemplate,
8507    ) -> *mut GstPad;
8508    pub fn gst_ghost_pad_new_no_target(name: *const c_char, dir: GstPadDirection) -> *mut GstPad;
8509    pub fn gst_ghost_pad_new_no_target_from_template(
8510        name: *const c_char,
8511        templ: *mut GstPadTemplate,
8512    ) -> *mut GstPad;
8513    pub fn gst_ghost_pad_activate_mode_default(
8514        pad: *mut GstPad,
8515        parent: *mut GstObject,
8516        mode: GstPadMode,
8517        active: gboolean,
8518    ) -> gboolean;
8519    pub fn gst_ghost_pad_internal_activate_mode_default(
8520        pad: *mut GstPad,
8521        parent: *mut GstObject,
8522        mode: GstPadMode,
8523        active: gboolean,
8524    ) -> gboolean;
8525    pub fn gst_ghost_pad_construct(gpad: *mut GstGhostPad) -> gboolean;
8526    pub fn gst_ghost_pad_get_target(gpad: *mut GstGhostPad) -> *mut GstPad;
8527    pub fn gst_ghost_pad_set_target(gpad: *mut GstGhostPad, newtarget: *mut GstPad) -> gboolean;
8528
8529    //=========================================================================
8530    // GstInt64Range
8531    //=========================================================================
8532    pub fn gst_int64_range_get_type() -> GType;
8533
8534    //=========================================================================
8535    // GstIntRange
8536    //=========================================================================
8537    pub fn gst_int_range_get_type() -> GType;
8538
8539    //=========================================================================
8540    // GstObject
8541    //=========================================================================
8542    pub fn gst_object_get_type() -> GType;
8543    pub fn gst_object_check_uniqueness(list: *mut glib::GList, name: *const c_char) -> gboolean;
8544    pub fn gst_object_default_deep_notify(
8545        object: *mut gobject::GObject,
8546        orig: *mut GstObject,
8547        pspec: *mut gobject::GParamSpec,
8548        excluded_props: *mut *mut c_char,
8549    );
8550    pub fn gst_object_ref_sink(object: gpointer) -> gpointer;
8551    pub fn gst_object_replace(oldobj: *mut *mut GstObject, newobj: *mut GstObject) -> gboolean;
8552    pub fn gst_object_add_control_binding(
8553        object: *mut GstObject,
8554        binding: *mut GstControlBinding,
8555    ) -> gboolean;
8556    pub fn gst_object_default_error(
8557        source: *mut GstObject,
8558        error: *const glib::GError,
8559        debug: *const c_char,
8560    );
8561    pub fn gst_object_get_control_binding(
8562        object: *mut GstObject,
8563        property_name: *const c_char,
8564    ) -> *mut GstControlBinding;
8565    pub fn gst_object_get_control_rate(object: *mut GstObject) -> GstClockTime;
8566    pub fn gst_object_get_g_value_array(
8567        object: *mut GstObject,
8568        property_name: *const c_char,
8569        timestamp: GstClockTime,
8570        interval: GstClockTime,
8571        n_values: c_uint,
8572        values: *mut gobject::GValue,
8573    ) -> gboolean;
8574    pub fn gst_object_get_name(object: *mut GstObject) -> *mut c_char;
8575    pub fn gst_object_get_parent(object: *mut GstObject) -> *mut GstObject;
8576    pub fn gst_object_get_path_string(object: *mut GstObject) -> *mut c_char;
8577    pub fn gst_object_get_value(
8578        object: *mut GstObject,
8579        property_name: *const c_char,
8580        timestamp: GstClockTime,
8581    ) -> *mut gobject::GValue;
8582    pub fn gst_object_get_value_array(
8583        object: *mut GstObject,
8584        property_name: *const c_char,
8585        timestamp: GstClockTime,
8586        interval: GstClockTime,
8587        n_values: c_uint,
8588        values: gpointer,
8589    ) -> gboolean;
8590    pub fn gst_object_has_active_control_bindings(object: *mut GstObject) -> gboolean;
8591    pub fn gst_object_has_ancestor(object: *mut GstObject, ancestor: *mut GstObject) -> gboolean;
8592    pub fn gst_object_has_as_ancestor(object: *mut GstObject, ancestor: *mut GstObject)
8593        -> gboolean;
8594    pub fn gst_object_has_as_parent(object: *mut GstObject, parent: *mut GstObject) -> gboolean;
8595    pub fn gst_object_ref(object: *mut GstObject) -> *mut GstObject;
8596    pub fn gst_object_remove_control_binding(
8597        object: *mut GstObject,
8598        binding: *mut GstControlBinding,
8599    ) -> gboolean;
8600    pub fn gst_object_set_control_binding_disabled(
8601        object: *mut GstObject,
8602        property_name: *const c_char,
8603        disabled: gboolean,
8604    );
8605    pub fn gst_object_set_control_bindings_disabled(object: *mut GstObject, disabled: gboolean);
8606    pub fn gst_object_set_control_rate(object: *mut GstObject, control_rate: GstClockTime);
8607    pub fn gst_object_set_name(object: *mut GstObject, name: *const c_char) -> gboolean;
8608    pub fn gst_object_set_parent(object: *mut GstObject, parent: *mut GstObject) -> gboolean;
8609    pub fn gst_object_suggest_next_sync(object: *mut GstObject) -> GstClockTime;
8610    pub fn gst_object_sync_values(object: *mut GstObject, timestamp: GstClockTime) -> gboolean;
8611    pub fn gst_object_unparent(object: *mut GstObject);
8612    pub fn gst_object_unref(object: *mut GstObject);
8613
8614    //=========================================================================
8615    // GstPad
8616    //=========================================================================
8617    pub fn gst_pad_get_type() -> GType;
8618    pub fn gst_pad_new(name: *const c_char, direction: GstPadDirection) -> *mut GstPad;
8619    pub fn gst_pad_new_from_static_template(
8620        templ: *mut GstStaticPadTemplate,
8621        name: *const c_char,
8622    ) -> *mut GstPad;
8623    pub fn gst_pad_new_from_template(
8624        templ: *mut GstPadTemplate,
8625        name: *const c_char,
8626    ) -> *mut GstPad;
8627    pub fn gst_pad_link_get_name(ret: GstPadLinkReturn) -> *const c_char;
8628    pub fn gst_pad_activate_mode(pad: *mut GstPad, mode: GstPadMode, active: gboolean) -> gboolean;
8629    pub fn gst_pad_add_probe(
8630        pad: *mut GstPad,
8631        mask: GstPadProbeType,
8632        callback: GstPadProbeCallback,
8633        user_data: gpointer,
8634        destroy_data: glib::GDestroyNotify,
8635    ) -> c_ulong;
8636    pub fn gst_pad_can_link(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> gboolean;
8637    pub fn gst_pad_chain(pad: *mut GstPad, buffer: *mut GstBuffer) -> GstFlowReturn;
8638    pub fn gst_pad_chain_list(pad: *mut GstPad, list: *mut GstBufferList) -> GstFlowReturn;
8639    pub fn gst_pad_check_reconfigure(pad: *mut GstPad) -> gboolean;
8640    pub fn gst_pad_create_stream_id(
8641        pad: *mut GstPad,
8642        parent: *mut GstElement,
8643        stream_id: *const c_char,
8644    ) -> *mut c_char;
8645    pub fn gst_pad_create_stream_id_printf(
8646        pad: *mut GstPad,
8647        parent: *mut GstElement,
8648        stream_id: *const c_char,
8649        ...
8650    ) -> *mut c_char;
8651    //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;
8652    pub fn gst_pad_event_default(
8653        pad: *mut GstPad,
8654        parent: *mut GstObject,
8655        event: *mut GstEvent,
8656    ) -> gboolean;
8657    pub fn gst_pad_forward(
8658        pad: *mut GstPad,
8659        forward: GstPadForwardFunction,
8660        user_data: gpointer,
8661    ) -> gboolean;
8662    pub fn gst_pad_get_allowed_caps(pad: *mut GstPad) -> *mut GstCaps;
8663    pub fn gst_pad_get_current_caps(pad: *mut GstPad) -> *mut GstCaps;
8664    pub fn gst_pad_get_direction(pad: *mut GstPad) -> GstPadDirection;
8665    pub fn gst_pad_get_element_private(pad: *mut GstPad) -> gpointer;
8666    pub fn gst_pad_get_last_flow_return(pad: *mut GstPad) -> GstFlowReturn;
8667    pub fn gst_pad_get_offset(pad: *mut GstPad) -> i64;
8668    pub fn gst_pad_get_pad_template(pad: *mut GstPad) -> *mut GstPadTemplate;
8669    pub fn gst_pad_get_pad_template_caps(pad: *mut GstPad) -> *mut GstCaps;
8670    pub fn gst_pad_get_parent_element(pad: *mut GstPad) -> *mut GstElement;
8671    pub fn gst_pad_get_peer(pad: *mut GstPad) -> *mut GstPad;
8672    pub fn gst_pad_get_range(
8673        pad: *mut GstPad,
8674        offset: u64,
8675        size: c_uint,
8676        buffer: *mut *mut GstBuffer,
8677    ) -> GstFlowReturn;
8678    #[cfg(feature = "v1_18")]
8679    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8680    pub fn gst_pad_get_single_internal_link(pad: *mut GstPad) -> *mut GstPad;
8681    pub fn gst_pad_get_sticky_event(
8682        pad: *mut GstPad,
8683        event_type: GstEventType,
8684        idx: c_uint,
8685    ) -> *mut GstEvent;
8686    pub fn gst_pad_get_stream(pad: *mut GstPad) -> *mut GstStream;
8687    pub fn gst_pad_get_stream_id(pad: *mut GstPad) -> *mut c_char;
8688    pub fn gst_pad_get_task_state(pad: *mut GstPad) -> GstTaskState;
8689    pub fn gst_pad_has_current_caps(pad: *mut GstPad) -> gboolean;
8690    pub fn gst_pad_is_active(pad: *mut GstPad) -> gboolean;
8691    pub fn gst_pad_is_blocked(pad: *mut GstPad) -> gboolean;
8692    pub fn gst_pad_is_blocking(pad: *mut GstPad) -> gboolean;
8693    pub fn gst_pad_is_linked(pad: *mut GstPad) -> gboolean;
8694    pub fn gst_pad_iterate_internal_links(pad: *mut GstPad) -> *mut GstIterator;
8695    pub fn gst_pad_iterate_internal_links_default(
8696        pad: *mut GstPad,
8697        parent: *mut GstObject,
8698    ) -> *mut GstIterator;
8699    pub fn gst_pad_link(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> GstPadLinkReturn;
8700    pub fn gst_pad_link_full(
8701        srcpad: *mut GstPad,
8702        sinkpad: *mut GstPad,
8703        flags: GstPadLinkCheck,
8704    ) -> GstPadLinkReturn;
8705    pub fn gst_pad_link_maybe_ghosting(src: *mut GstPad, sink: *mut GstPad) -> gboolean;
8706    pub fn gst_pad_link_maybe_ghosting_full(
8707        src: *mut GstPad,
8708        sink: *mut GstPad,
8709        flags: GstPadLinkCheck,
8710    ) -> gboolean;
8711    pub fn gst_pad_mark_reconfigure(pad: *mut GstPad);
8712    pub fn gst_pad_needs_reconfigure(pad: *mut GstPad) -> gboolean;
8713    pub fn gst_pad_pause_task(pad: *mut GstPad) -> gboolean;
8714    pub fn gst_pad_peer_query(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
8715    pub fn gst_pad_peer_query_accept_caps(pad: *mut GstPad, caps: *mut GstCaps) -> gboolean;
8716    pub fn gst_pad_peer_query_caps(pad: *mut GstPad, filter: *mut GstCaps) -> *mut GstCaps;
8717    pub fn gst_pad_peer_query_convert(
8718        pad: *mut GstPad,
8719        src_format: GstFormat,
8720        src_val: i64,
8721        dest_format: GstFormat,
8722        dest_val: *mut i64,
8723    ) -> gboolean;
8724    pub fn gst_pad_peer_query_duration(
8725        pad: *mut GstPad,
8726        format: GstFormat,
8727        duration: *mut i64,
8728    ) -> gboolean;
8729    pub fn gst_pad_peer_query_position(
8730        pad: *mut GstPad,
8731        format: GstFormat,
8732        cur: *mut i64,
8733    ) -> gboolean;
8734    pub fn gst_pad_proxy_query_accept_caps(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
8735    pub fn gst_pad_proxy_query_caps(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
8736    pub fn gst_pad_pull_range(
8737        pad: *mut GstPad,
8738        offset: u64,
8739        size: c_uint,
8740        buffer: *mut *mut GstBuffer,
8741    ) -> GstFlowReturn;
8742    pub fn gst_pad_push(pad: *mut GstPad, buffer: *mut GstBuffer) -> GstFlowReturn;
8743    pub fn gst_pad_push_event(pad: *mut GstPad, event: *mut GstEvent) -> gboolean;
8744    pub fn gst_pad_push_list(pad: *mut GstPad, list: *mut GstBufferList) -> GstFlowReturn;
8745    pub fn gst_pad_query(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
8746    pub fn gst_pad_query_accept_caps(pad: *mut GstPad, caps: *mut GstCaps) -> gboolean;
8747    pub fn gst_pad_query_caps(pad: *mut GstPad, filter: *mut GstCaps) -> *mut GstCaps;
8748    pub fn gst_pad_query_convert(
8749        pad: *mut GstPad,
8750        src_format: GstFormat,
8751        src_val: i64,
8752        dest_format: GstFormat,
8753        dest_val: *mut i64,
8754    ) -> gboolean;
8755    pub fn gst_pad_query_default(
8756        pad: *mut GstPad,
8757        parent: *mut GstObject,
8758        query: *mut GstQuery,
8759    ) -> gboolean;
8760    pub fn gst_pad_query_duration(
8761        pad: *mut GstPad,
8762        format: GstFormat,
8763        duration: *mut i64,
8764    ) -> gboolean;
8765    pub fn gst_pad_query_position(pad: *mut GstPad, format: GstFormat, cur: *mut i64) -> gboolean;
8766    pub fn gst_pad_remove_probe(pad: *mut GstPad, id: c_ulong);
8767    pub fn gst_pad_send_event(pad: *mut GstPad, event: *mut GstEvent) -> gboolean;
8768    pub fn gst_pad_set_activate_function_full(
8769        pad: *mut GstPad,
8770        activate: GstPadActivateFunction,
8771        user_data: gpointer,
8772        notify: glib::GDestroyNotify,
8773    );
8774    pub fn gst_pad_set_activatemode_function_full(
8775        pad: *mut GstPad,
8776        activatemode: GstPadActivateModeFunction,
8777        user_data: gpointer,
8778        notify: glib::GDestroyNotify,
8779    );
8780    pub fn gst_pad_set_active(pad: *mut GstPad, active: gboolean) -> gboolean;
8781    pub fn gst_pad_set_chain_function_full(
8782        pad: *mut GstPad,
8783        chain: GstPadChainFunction,
8784        user_data: gpointer,
8785        notify: glib::GDestroyNotify,
8786    );
8787    pub fn gst_pad_set_chain_list_function_full(
8788        pad: *mut GstPad,
8789        chainlist: GstPadChainListFunction,
8790        user_data: gpointer,
8791        notify: glib::GDestroyNotify,
8792    );
8793    pub fn gst_pad_set_element_private(pad: *mut GstPad, priv_: gpointer);
8794    pub fn gst_pad_set_event_full_function_full(
8795        pad: *mut GstPad,
8796        event: GstPadEventFullFunction,
8797        user_data: gpointer,
8798        notify: glib::GDestroyNotify,
8799    );
8800    pub fn gst_pad_set_event_function_full(
8801        pad: *mut GstPad,
8802        event: GstPadEventFunction,
8803        user_data: gpointer,
8804        notify: glib::GDestroyNotify,
8805    );
8806    pub fn gst_pad_set_getrange_function_full(
8807        pad: *mut GstPad,
8808        get: GstPadGetRangeFunction,
8809        user_data: gpointer,
8810        notify: glib::GDestroyNotify,
8811    );
8812    pub fn gst_pad_set_iterate_internal_links_function_full(
8813        pad: *mut GstPad,
8814        iterintlink: GstPadIterIntLinkFunction,
8815        user_data: gpointer,
8816        notify: glib::GDestroyNotify,
8817    );
8818    pub fn gst_pad_set_link_function_full(
8819        pad: *mut GstPad,
8820        link: GstPadLinkFunction,
8821        user_data: gpointer,
8822        notify: glib::GDestroyNotify,
8823    );
8824    pub fn gst_pad_set_offset(pad: *mut GstPad, offset: i64);
8825    pub fn gst_pad_set_query_function_full(
8826        pad: *mut GstPad,
8827        query: GstPadQueryFunction,
8828        user_data: gpointer,
8829        notify: glib::GDestroyNotify,
8830    );
8831    pub fn gst_pad_set_unlink_function_full(
8832        pad: *mut GstPad,
8833        unlink: GstPadUnlinkFunction,
8834        user_data: gpointer,
8835        notify: glib::GDestroyNotify,
8836    );
8837    pub fn gst_pad_start_task(
8838        pad: *mut GstPad,
8839        func: GstTaskFunction,
8840        user_data: gpointer,
8841        notify: glib::GDestroyNotify,
8842    ) -> gboolean;
8843    pub fn gst_pad_sticky_events_foreach(
8844        pad: *mut GstPad,
8845        foreach_func: GstPadStickyEventsForeachFunction,
8846        user_data: gpointer,
8847    );
8848    pub fn gst_pad_stop_task(pad: *mut GstPad) -> gboolean;
8849    pub fn gst_pad_store_sticky_event(pad: *mut GstPad, event: *mut GstEvent) -> GstFlowReturn;
8850    pub fn gst_pad_unlink(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> gboolean;
8851    pub fn gst_pad_use_fixed_caps(pad: *mut GstPad);
8852
8853    //=========================================================================
8854    // GstPadTemplate
8855    //=========================================================================
8856    pub fn gst_pad_template_get_type() -> GType;
8857    pub fn gst_pad_template_new(
8858        name_template: *const c_char,
8859        direction: GstPadDirection,
8860        presence: GstPadPresence,
8861        caps: *mut GstCaps,
8862    ) -> *mut GstPadTemplate;
8863    pub fn gst_pad_template_new_from_static_pad_template_with_gtype(
8864        pad_template: *mut GstStaticPadTemplate,
8865        pad_type: GType,
8866    ) -> *mut GstPadTemplate;
8867    pub fn gst_pad_template_new_with_gtype(
8868        name_template: *const c_char,
8869        direction: GstPadDirection,
8870        presence: GstPadPresence,
8871        caps: *mut GstCaps,
8872        pad_type: GType,
8873    ) -> *mut GstPadTemplate;
8874    pub fn gst_pad_template_get_caps(templ: *mut GstPadTemplate) -> *mut GstCaps;
8875    #[cfg(feature = "v1_18")]
8876    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8877    pub fn gst_pad_template_get_documentation_caps(templ: *mut GstPadTemplate) -> *mut GstCaps;
8878    pub fn gst_pad_template_pad_created(templ: *mut GstPadTemplate, pad: *mut GstPad);
8879    #[cfg(feature = "v1_18")]
8880    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8881    pub fn gst_pad_template_set_documentation_caps(templ: *mut GstPadTemplate, caps: *mut GstCaps);
8882
8883    //=========================================================================
8884    // GstParamArray
8885    //=========================================================================
8886    pub fn gst_param_spec_array_get_type() -> GType;
8887
8888    //=========================================================================
8889    // GstParamFraction
8890    //=========================================================================
8891    pub fn gst_param_spec_fraction_get_type() -> GType;
8892
8893    //=========================================================================
8894    // GstPipeline
8895    //=========================================================================
8896    pub fn gst_pipeline_get_type() -> GType;
8897    pub fn gst_pipeline_new(name: *const c_char) -> *mut GstElement;
8898    pub fn gst_pipeline_auto_clock(pipeline: *mut GstPipeline);
8899    pub fn gst_pipeline_get_auto_flush_bus(pipeline: *mut GstPipeline) -> gboolean;
8900    pub fn gst_pipeline_get_bus(pipeline: *mut GstPipeline) -> *mut GstBus;
8901    pub fn gst_pipeline_get_clock(pipeline: *mut GstPipeline) -> *mut GstClock;
8902    #[cfg(feature = "v1_24")]
8903    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8904    pub fn gst_pipeline_get_configured_latency(pipeline: *mut GstPipeline) -> GstClockTime;
8905    pub fn gst_pipeline_get_delay(pipeline: *mut GstPipeline) -> GstClockTime;
8906    pub fn gst_pipeline_get_latency(pipeline: *mut GstPipeline) -> GstClockTime;
8907    pub fn gst_pipeline_get_pipeline_clock(pipeline: *mut GstPipeline) -> *mut GstClock;
8908    #[cfg(feature = "v1_24")]
8909    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8910    pub fn gst_pipeline_is_live(pipeline: *mut GstPipeline) -> gboolean;
8911    pub fn gst_pipeline_set_auto_flush_bus(pipeline: *mut GstPipeline, auto_flush: gboolean);
8912    pub fn gst_pipeline_set_clock(pipeline: *mut GstPipeline, clock: *mut GstClock) -> gboolean;
8913    pub fn gst_pipeline_set_delay(pipeline: *mut GstPipeline, delay: GstClockTime);
8914    pub fn gst_pipeline_set_latency(pipeline: *mut GstPipeline, latency: GstClockTime);
8915    pub fn gst_pipeline_use_clock(pipeline: *mut GstPipeline, clock: *mut GstClock);
8916
8917    //=========================================================================
8918    // GstPlugin
8919    //=========================================================================
8920    pub fn gst_plugin_get_type() -> GType;
8921    pub fn gst_plugin_list_free(list: *mut glib::GList);
8922    pub fn gst_plugin_load_by_name(name: *const c_char) -> *mut GstPlugin;
8923    pub fn gst_plugin_load_file(
8924        filename: *const c_char,
8925        error: *mut *mut glib::GError,
8926    ) -> *mut GstPlugin;
8927    pub fn gst_plugin_register_static(
8928        major_version: c_int,
8929        minor_version: c_int,
8930        name: *const c_char,
8931        description: *const c_char,
8932        init_func: GstPluginInitFunc,
8933        version: *const c_char,
8934        license: *const c_char,
8935        source: *const c_char,
8936        package: *const c_char,
8937        origin: *const c_char,
8938    ) -> gboolean;
8939    pub fn gst_plugin_register_static_full(
8940        major_version: c_int,
8941        minor_version: c_int,
8942        name: *const c_char,
8943        description: *const c_char,
8944        init_full_func: GstPluginInitFullFunc,
8945        version: *const c_char,
8946        license: *const c_char,
8947        source: *const c_char,
8948        package: *const c_char,
8949        origin: *const c_char,
8950        user_data: gpointer,
8951    ) -> gboolean;
8952    pub fn gst_plugin_add_dependency(
8953        plugin: *mut GstPlugin,
8954        env_vars: *mut *const c_char,
8955        paths: *mut *const c_char,
8956        names: *mut *const c_char,
8957        flags: GstPluginDependencyFlags,
8958    );
8959    pub fn gst_plugin_add_dependency_simple(
8960        plugin: *mut GstPlugin,
8961        env_vars: *const c_char,
8962        paths: *const c_char,
8963        names: *const c_char,
8964        flags: GstPluginDependencyFlags,
8965    );
8966    #[cfg(feature = "v1_24")]
8967    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8968    pub fn gst_plugin_add_status_error(plugin: *mut GstPlugin, message: *const c_char);
8969    #[cfg(feature = "v1_24")]
8970    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8971    pub fn gst_plugin_add_status_info(plugin: *mut GstPlugin, message: *const c_char);
8972    #[cfg(feature = "v1_24")]
8973    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8974    pub fn gst_plugin_add_status_warning(plugin: *mut GstPlugin, message: *const c_char);
8975    pub fn gst_plugin_get_cache_data(plugin: *mut GstPlugin) -> *const GstStructure;
8976    pub fn gst_plugin_get_description(plugin: *mut GstPlugin) -> *const c_char;
8977    pub fn gst_plugin_get_filename(plugin: *mut GstPlugin) -> *const c_char;
8978    pub fn gst_plugin_get_license(plugin: *mut GstPlugin) -> *const c_char;
8979    pub fn gst_plugin_get_name(plugin: *mut GstPlugin) -> *const c_char;
8980    pub fn gst_plugin_get_origin(plugin: *mut GstPlugin) -> *const c_char;
8981    pub fn gst_plugin_get_package(plugin: *mut GstPlugin) -> *const c_char;
8982    pub fn gst_plugin_get_release_date_string(plugin: *mut GstPlugin) -> *const c_char;
8983    pub fn gst_plugin_get_source(plugin: *mut GstPlugin) -> *const c_char;
8984    #[cfg(feature = "v1_24")]
8985    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8986    pub fn gst_plugin_get_status_errors(plugin: *mut GstPlugin) -> *mut *mut c_char;
8987    #[cfg(feature = "v1_24")]
8988    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8989    pub fn gst_plugin_get_status_infos(plugin: *mut GstPlugin) -> *mut *mut c_char;
8990    #[cfg(feature = "v1_24")]
8991    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8992    pub fn gst_plugin_get_status_warnings(plugin: *mut GstPlugin) -> *mut *mut c_char;
8993    pub fn gst_plugin_get_version(plugin: *mut GstPlugin) -> *const c_char;
8994    pub fn gst_plugin_is_loaded(plugin: *mut GstPlugin) -> gboolean;
8995    pub fn gst_plugin_load(plugin: *mut GstPlugin) -> *mut GstPlugin;
8996    pub fn gst_plugin_set_cache_data(plugin: *mut GstPlugin, cache_data: *mut GstStructure);
8997
8998    //=========================================================================
8999    // GstPluginFeature
9000    //=========================================================================
9001    pub fn gst_plugin_feature_get_type() -> GType;
9002    pub fn gst_plugin_feature_list_copy(list: *mut glib::GList) -> *mut glib::GList;
9003    pub fn gst_plugin_feature_list_debug(list: *mut glib::GList);
9004    pub fn gst_plugin_feature_list_free(list: *mut glib::GList);
9005    pub fn gst_plugin_feature_rank_compare_func(p1: gconstpointer, p2: gconstpointer) -> c_int;
9006    pub fn gst_plugin_feature_check_version(
9007        feature: *mut GstPluginFeature,
9008        min_major: c_uint,
9009        min_minor: c_uint,
9010        min_micro: c_uint,
9011    ) -> gboolean;
9012    pub fn gst_plugin_feature_get_plugin(feature: *mut GstPluginFeature) -> *mut GstPlugin;
9013    pub fn gst_plugin_feature_get_plugin_name(feature: *mut GstPluginFeature) -> *const c_char;
9014    pub fn gst_plugin_feature_get_rank(feature: *mut GstPluginFeature) -> c_uint;
9015    pub fn gst_plugin_feature_load(feature: *mut GstPluginFeature) -> *mut GstPluginFeature;
9016    pub fn gst_plugin_feature_set_rank(feature: *mut GstPluginFeature, rank: c_uint);
9017
9018    //=========================================================================
9019    // GstProxyPad
9020    //=========================================================================
9021    pub fn gst_proxy_pad_get_type() -> GType;
9022    pub fn gst_proxy_pad_chain_default(
9023        pad: *mut GstPad,
9024        parent: *mut GstObject,
9025        buffer: *mut GstBuffer,
9026    ) -> GstFlowReturn;
9027    pub fn gst_proxy_pad_chain_list_default(
9028        pad: *mut GstPad,
9029        parent: *mut GstObject,
9030        list: *mut GstBufferList,
9031    ) -> GstFlowReturn;
9032    pub fn gst_proxy_pad_getrange_default(
9033        pad: *mut GstPad,
9034        parent: *mut GstObject,
9035        offset: u64,
9036        size: c_uint,
9037        buffer: *mut *mut GstBuffer,
9038    ) -> GstFlowReturn;
9039    pub fn gst_proxy_pad_iterate_internal_links_default(
9040        pad: *mut GstPad,
9041        parent: *mut GstObject,
9042    ) -> *mut GstIterator;
9043    pub fn gst_proxy_pad_get_internal(pad: *mut GstProxyPad) -> *mut GstProxyPad;
9044
9045    //=========================================================================
9046    // GstRegistry
9047    //=========================================================================
9048    pub fn gst_registry_get_type() -> GType;
9049    pub fn gst_registry_fork_is_enabled() -> gboolean;
9050    pub fn gst_registry_fork_set_enabled(enabled: gboolean);
9051    pub fn gst_registry_get() -> *mut GstRegistry;
9052    pub fn gst_registry_add_feature(
9053        registry: *mut GstRegistry,
9054        feature: *mut GstPluginFeature,
9055    ) -> gboolean;
9056    pub fn gst_registry_add_plugin(registry: *mut GstRegistry, plugin: *mut GstPlugin) -> gboolean;
9057    pub fn gst_registry_check_feature_version(
9058        registry: *mut GstRegistry,
9059        feature_name: *const c_char,
9060        min_major: c_uint,
9061        min_minor: c_uint,
9062        min_micro: c_uint,
9063    ) -> gboolean;
9064    pub fn gst_registry_feature_filter(
9065        registry: *mut GstRegistry,
9066        filter: GstPluginFeatureFilter,
9067        first: gboolean,
9068        user_data: gpointer,
9069    ) -> *mut glib::GList;
9070    pub fn gst_registry_find_feature(
9071        registry: *mut GstRegistry,
9072        name: *const c_char,
9073        type_: GType,
9074    ) -> *mut GstPluginFeature;
9075    pub fn gst_registry_find_plugin(
9076        registry: *mut GstRegistry,
9077        name: *const c_char,
9078    ) -> *mut GstPlugin;
9079    pub fn gst_registry_get_feature_list(
9080        registry: *mut GstRegistry,
9081        type_: GType,
9082    ) -> *mut glib::GList;
9083    pub fn gst_registry_get_feature_list_by_plugin(
9084        registry: *mut GstRegistry,
9085        name: *const c_char,
9086    ) -> *mut glib::GList;
9087    pub fn gst_registry_get_feature_list_cookie(registry: *mut GstRegistry) -> u32;
9088    pub fn gst_registry_get_plugin_list(registry: *mut GstRegistry) -> *mut glib::GList;
9089    pub fn gst_registry_lookup(
9090        registry: *mut GstRegistry,
9091        filename: *const c_char,
9092    ) -> *mut GstPlugin;
9093    pub fn gst_registry_lookup_feature(
9094        registry: *mut GstRegistry,
9095        name: *const c_char,
9096    ) -> *mut GstPluginFeature;
9097    pub fn gst_registry_plugin_filter(
9098        registry: *mut GstRegistry,
9099        filter: GstPluginFilter,
9100        first: gboolean,
9101        user_data: gpointer,
9102    ) -> *mut glib::GList;
9103    pub fn gst_registry_remove_feature(registry: *mut GstRegistry, feature: *mut GstPluginFeature);
9104    pub fn gst_registry_remove_plugin(registry: *mut GstRegistry, plugin: *mut GstPlugin);
9105    pub fn gst_registry_scan_path(registry: *mut GstRegistry, path: *const c_char) -> gboolean;
9106
9107    //=========================================================================
9108    // GstSharedTaskPool
9109    //=========================================================================
9110    #[cfg(feature = "v1_20")]
9111    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9112    pub fn gst_shared_task_pool_get_type() -> GType;
9113    #[cfg(feature = "v1_20")]
9114    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9115    pub fn gst_shared_task_pool_new() -> *mut GstTaskPool;
9116    #[cfg(feature = "v1_20")]
9117    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9118    pub fn gst_shared_task_pool_get_max_threads(pool: *mut GstSharedTaskPool) -> c_uint;
9119    #[cfg(feature = "v1_20")]
9120    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9121    pub fn gst_shared_task_pool_set_max_threads(pool: *mut GstSharedTaskPool, max_threads: c_uint);
9122
9123    //=========================================================================
9124    // GstStream
9125    //=========================================================================
9126    pub fn gst_stream_get_type() -> GType;
9127    pub fn gst_stream_new(
9128        stream_id: *const c_char,
9129        caps: *mut GstCaps,
9130        type_: GstStreamType,
9131        flags: GstStreamFlags,
9132    ) -> *mut GstStream;
9133    pub fn gst_stream_get_caps(stream: *mut GstStream) -> *mut GstCaps;
9134    pub fn gst_stream_get_stream_flags(stream: *mut GstStream) -> GstStreamFlags;
9135    pub fn gst_stream_get_stream_id(stream: *mut GstStream) -> *const c_char;
9136    pub fn gst_stream_get_stream_type(stream: *mut GstStream) -> GstStreamType;
9137    pub fn gst_stream_get_tags(stream: *mut GstStream) -> *mut GstTagList;
9138    pub fn gst_stream_set_caps(stream: *mut GstStream, caps: *mut GstCaps);
9139    pub fn gst_stream_set_stream_flags(stream: *mut GstStream, flags: GstStreamFlags);
9140    pub fn gst_stream_set_stream_type(stream: *mut GstStream, stream_type: GstStreamType);
9141    pub fn gst_stream_set_tags(stream: *mut GstStream, tags: *mut GstTagList);
9142
9143    //=========================================================================
9144    // GstStreamCollection
9145    //=========================================================================
9146    pub fn gst_stream_collection_get_type() -> GType;
9147    pub fn gst_stream_collection_new(upstream_id: *const c_char) -> *mut GstStreamCollection;
9148    pub fn gst_stream_collection_add_stream(
9149        collection: *mut GstStreamCollection,
9150        stream: *mut GstStream,
9151    ) -> gboolean;
9152    pub fn gst_stream_collection_get_size(collection: *mut GstStreamCollection) -> c_uint;
9153    pub fn gst_stream_collection_get_stream(
9154        collection: *mut GstStreamCollection,
9155        index: c_uint,
9156    ) -> *mut GstStream;
9157    pub fn gst_stream_collection_get_upstream_id(
9158        collection: *mut GstStreamCollection,
9159    ) -> *const c_char;
9160
9161    //=========================================================================
9162    // GstSystemClock
9163    //=========================================================================
9164    pub fn gst_system_clock_get_type() -> GType;
9165    pub fn gst_system_clock_obtain() -> *mut GstClock;
9166    pub fn gst_system_clock_set_default(new_clock: *mut GstClock);
9167
9168    //=========================================================================
9169    // GstTask
9170    //=========================================================================
9171    pub fn gst_task_get_type() -> GType;
9172    pub fn gst_task_new(
9173        func: GstTaskFunction,
9174        user_data: gpointer,
9175        notify: glib::GDestroyNotify,
9176    ) -> *mut GstTask;
9177    pub fn gst_task_cleanup_all();
9178    pub fn gst_task_get_pool(task: *mut GstTask) -> *mut GstTaskPool;
9179    pub fn gst_task_get_state(task: *mut GstTask) -> GstTaskState;
9180    pub fn gst_task_join(task: *mut GstTask) -> gboolean;
9181    pub fn gst_task_pause(task: *mut GstTask) -> gboolean;
9182    #[cfg(feature = "v1_18")]
9183    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9184    pub fn gst_task_resume(task: *mut GstTask) -> gboolean;
9185    pub fn gst_task_set_enter_callback(
9186        task: *mut GstTask,
9187        enter_func: GstTaskThreadFunc,
9188        user_data: gpointer,
9189        notify: glib::GDestroyNotify,
9190    );
9191    pub fn gst_task_set_leave_callback(
9192        task: *mut GstTask,
9193        leave_func: GstTaskThreadFunc,
9194        user_data: gpointer,
9195        notify: glib::GDestroyNotify,
9196    );
9197    pub fn gst_task_set_lock(task: *mut GstTask, mutex: *mut glib::GRecMutex);
9198    pub fn gst_task_set_pool(task: *mut GstTask, pool: *mut GstTaskPool);
9199    pub fn gst_task_set_state(task: *mut GstTask, state: GstTaskState) -> gboolean;
9200    pub fn gst_task_start(task: *mut GstTask) -> gboolean;
9201    pub fn gst_task_stop(task: *mut GstTask) -> gboolean;
9202
9203    //=========================================================================
9204    // GstTaskPool
9205    //=========================================================================
9206    pub fn gst_task_pool_get_type() -> GType;
9207    pub fn gst_task_pool_new() -> *mut GstTaskPool;
9208    pub fn gst_task_pool_cleanup(pool: *mut GstTaskPool);
9209    #[cfg(feature = "v1_20")]
9210    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9211    pub fn gst_task_pool_dispose_handle(pool: *mut GstTaskPool, id: gpointer);
9212    pub fn gst_task_pool_join(pool: *mut GstTaskPool, id: gpointer);
9213    pub fn gst_task_pool_prepare(pool: *mut GstTaskPool, error: *mut *mut glib::GError);
9214    pub fn gst_task_pool_push(
9215        pool: *mut GstTaskPool,
9216        func: GstTaskPoolFunction,
9217        user_data: gpointer,
9218        error: *mut *mut glib::GError,
9219    ) -> gpointer;
9220
9221    //=========================================================================
9222    // GstTracer
9223    //=========================================================================
9224    pub fn gst_tracer_get_type() -> GType;
9225    pub fn gst_tracer_register(
9226        plugin: *mut GstPlugin,
9227        name: *const c_char,
9228        type_: GType,
9229    ) -> gboolean;
9230
9231    //=========================================================================
9232    // GstTracerFactory
9233    //=========================================================================
9234    pub fn gst_tracer_factory_get_type() -> GType;
9235    pub fn gst_tracer_factory_get_list() -> *mut glib::GList;
9236    pub fn gst_tracer_factory_get_tracer_type(factory: *mut GstTracerFactory) -> GType;
9237
9238    //=========================================================================
9239    // GstTracerRecord
9240    //=========================================================================
9241    pub fn gst_tracer_record_get_type() -> GType;
9242    pub fn gst_tracer_record_new(
9243        name: *const c_char,
9244        firstfield: *const c_char,
9245        ...
9246    ) -> *mut GstTracerRecord;
9247    pub fn gst_tracer_record_log(self_: *mut GstTracerRecord, ...);
9248
9249    //=========================================================================
9250    // GstTypeFindFactory
9251    //=========================================================================
9252    pub fn gst_type_find_factory_get_type() -> GType;
9253    pub fn gst_type_find_factory_get_list() -> *mut glib::GList;
9254    pub fn gst_type_find_factory_call_function(
9255        factory: *mut GstTypeFindFactory,
9256        find: *mut GstTypeFind,
9257    );
9258    pub fn gst_type_find_factory_get_caps(factory: *mut GstTypeFindFactory) -> *mut GstCaps;
9259    pub fn gst_type_find_factory_get_extensions(
9260        factory: *mut GstTypeFindFactory,
9261    ) -> *const *const c_char;
9262    pub fn gst_type_find_factory_has_function(factory: *mut GstTypeFindFactory) -> gboolean;
9263
9264    //=========================================================================
9265    // GstValueArray
9266    //=========================================================================
9267    pub fn gst_value_array_get_type() -> GType;
9268    pub fn gst_value_array_append_and_take_value(
9269        value: *mut gobject::GValue,
9270        append_value: *mut gobject::GValue,
9271    );
9272    pub fn gst_value_array_append_value(
9273        value: *mut gobject::GValue,
9274        append_value: *const gobject::GValue,
9275    );
9276    pub fn gst_value_array_get_size(value: *const gobject::GValue) -> c_uint;
9277    pub fn gst_value_array_get_value(
9278        value: *const gobject::GValue,
9279        index: c_uint,
9280    ) -> *const gobject::GValue;
9281    #[cfg(feature = "v1_18")]
9282    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9283    pub fn gst_value_array_init(
9284        value: *mut gobject::GValue,
9285        prealloc: c_uint,
9286    ) -> *mut gobject::GValue;
9287    pub fn gst_value_array_prepend_value(
9288        value: *mut gobject::GValue,
9289        prepend_value: *const gobject::GValue,
9290    );
9291
9292    //=========================================================================
9293    // GstValueList
9294    //=========================================================================
9295    pub fn gst_value_list_get_type() -> GType;
9296    pub fn gst_value_list_append_and_take_value(
9297        value: *mut gobject::GValue,
9298        append_value: *mut gobject::GValue,
9299    );
9300    pub fn gst_value_list_append_value(
9301        value: *mut gobject::GValue,
9302        append_value: *const gobject::GValue,
9303    );
9304    pub fn gst_value_list_concat(
9305        dest: *mut gobject::GValue,
9306        value1: *const gobject::GValue,
9307        value2: *const gobject::GValue,
9308    );
9309    pub fn gst_value_list_get_size(value: *const gobject::GValue) -> c_uint;
9310    pub fn gst_value_list_get_value(
9311        value: *const gobject::GValue,
9312        index: c_uint,
9313    ) -> *const gobject::GValue;
9314    #[cfg(feature = "v1_18")]
9315    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9316    pub fn gst_value_list_init(
9317        value: *mut gobject::GValue,
9318        prealloc: c_uint,
9319    ) -> *mut gobject::GValue;
9320    pub fn gst_value_list_merge(
9321        dest: *mut gobject::GValue,
9322        value1: *const gobject::GValue,
9323        value2: *const gobject::GValue,
9324    );
9325    pub fn gst_value_list_prepend_value(
9326        value: *mut gobject::GValue,
9327        prepend_value: *const gobject::GValue,
9328    );
9329
9330    //=========================================================================
9331    // GstChildProxy
9332    //=========================================================================
9333    pub fn gst_child_proxy_get_type() -> GType;
9334    pub fn gst_child_proxy_child_added(
9335        parent: *mut GstChildProxy,
9336        child: *mut gobject::GObject,
9337        name: *const c_char,
9338    );
9339    pub fn gst_child_proxy_child_removed(
9340        parent: *mut GstChildProxy,
9341        child: *mut gobject::GObject,
9342        name: *const c_char,
9343    );
9344    pub fn gst_child_proxy_get(object: *mut GstChildProxy, first_property_name: *const c_char, ...);
9345    pub fn gst_child_proxy_get_child_by_index(
9346        parent: *mut GstChildProxy,
9347        index: c_uint,
9348    ) -> *mut gobject::GObject;
9349    pub fn gst_child_proxy_get_child_by_name(
9350        parent: *mut GstChildProxy,
9351        name: *const c_char,
9352    ) -> *mut gobject::GObject;
9353    #[cfg(feature = "v1_22")]
9354    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9355    pub fn gst_child_proxy_get_child_by_name_recurse(
9356        child_proxy: *mut GstChildProxy,
9357        name: *const c_char,
9358    ) -> *mut gobject::GObject;
9359    pub fn gst_child_proxy_get_children_count(parent: *mut GstChildProxy) -> c_uint;
9360    pub fn gst_child_proxy_get_property(
9361        object: *mut GstChildProxy,
9362        name: *const c_char,
9363        value: *mut gobject::GValue,
9364    );
9365    //pub fn gst_child_proxy_get_valist(object: *mut GstChildProxy, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
9366    pub fn gst_child_proxy_lookup(
9367        object: *mut GstChildProxy,
9368        name: *const c_char,
9369        target: *mut *mut gobject::GObject,
9370        pspec: *mut *mut gobject::GParamSpec,
9371    ) -> gboolean;
9372    pub fn gst_child_proxy_set(object: *mut GstChildProxy, first_property_name: *const c_char, ...);
9373    pub fn gst_child_proxy_set_property(
9374        object: *mut GstChildProxy,
9375        name: *const c_char,
9376        value: *const gobject::GValue,
9377    );
9378    //pub fn gst_child_proxy_set_valist(object: *mut GstChildProxy, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
9379
9380    //=========================================================================
9381    // GstPreset
9382    //=========================================================================
9383    pub fn gst_preset_get_type() -> GType;
9384    pub fn gst_preset_get_app_dir() -> *const c_char;
9385    pub fn gst_preset_set_app_dir(app_dir: *const c_char) -> gboolean;
9386    pub fn gst_preset_delete_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9387    pub fn gst_preset_get_meta(
9388        preset: *mut GstPreset,
9389        name: *const c_char,
9390        tag: *const c_char,
9391        value: *mut *mut c_char,
9392    ) -> gboolean;
9393    pub fn gst_preset_get_preset_names(preset: *mut GstPreset) -> *mut *mut c_char;
9394    pub fn gst_preset_get_property_names(preset: *mut GstPreset) -> *mut *mut c_char;
9395    pub fn gst_preset_is_editable(preset: *mut GstPreset) -> gboolean;
9396    pub fn gst_preset_load_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9397    pub fn gst_preset_rename_preset(
9398        preset: *mut GstPreset,
9399        old_name: *const c_char,
9400        new_name: *const c_char,
9401    ) -> gboolean;
9402    pub fn gst_preset_save_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9403    pub fn gst_preset_set_meta(
9404        preset: *mut GstPreset,
9405        name: *const c_char,
9406        tag: *const c_char,
9407        value: *const c_char,
9408    ) -> gboolean;
9409
9410    //=========================================================================
9411    // GstTagSetter
9412    //=========================================================================
9413    pub fn gst_tag_setter_get_type() -> GType;
9414    //pub fn gst_tag_setter_add_tag_valist(setter: *mut GstTagSetter, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
9415    //pub fn gst_tag_setter_add_tag_valist_values(setter: *mut GstTagSetter, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
9416    pub fn gst_tag_setter_add_tag_value(
9417        setter: *mut GstTagSetter,
9418        mode: GstTagMergeMode,
9419        tag: *const c_char,
9420        value: *const gobject::GValue,
9421    );
9422    pub fn gst_tag_setter_add_tag_values(
9423        setter: *mut GstTagSetter,
9424        mode: GstTagMergeMode,
9425        tag: *const c_char,
9426        ...
9427    );
9428    pub fn gst_tag_setter_add_tags(
9429        setter: *mut GstTagSetter,
9430        mode: GstTagMergeMode,
9431        tag: *const c_char,
9432        ...
9433    );
9434    pub fn gst_tag_setter_get_tag_list(setter: *mut GstTagSetter) -> *const GstTagList;
9435    pub fn gst_tag_setter_get_tag_merge_mode(setter: *mut GstTagSetter) -> GstTagMergeMode;
9436    pub fn gst_tag_setter_merge_tags(
9437        setter: *mut GstTagSetter,
9438        list: *const GstTagList,
9439        mode: GstTagMergeMode,
9440    );
9441    pub fn gst_tag_setter_reset_tags(setter: *mut GstTagSetter);
9442    pub fn gst_tag_setter_set_tag_merge_mode(setter: *mut GstTagSetter, mode: GstTagMergeMode);
9443
9444    //=========================================================================
9445    // GstTocSetter
9446    //=========================================================================
9447    pub fn gst_toc_setter_get_type() -> GType;
9448    pub fn gst_toc_setter_get_toc(setter: *mut GstTocSetter) -> *mut GstToc;
9449    pub fn gst_toc_setter_reset(setter: *mut GstTocSetter);
9450    pub fn gst_toc_setter_set_toc(setter: *mut GstTocSetter, toc: *mut GstToc);
9451
9452    //=========================================================================
9453    // GstURIHandler
9454    //=========================================================================
9455    pub fn gst_uri_handler_get_type() -> GType;
9456    pub fn gst_uri_handler_get_protocols(handler: *mut GstURIHandler) -> *const *const c_char;
9457    pub fn gst_uri_handler_get_uri(handler: *mut GstURIHandler) -> *mut c_char;
9458    pub fn gst_uri_handler_get_uri_type(handler: *mut GstURIHandler) -> GstURIType;
9459    pub fn gst_uri_handler_set_uri(
9460        handler: *mut GstURIHandler,
9461        uri: *const c_char,
9462        error: *mut *mut glib::GError,
9463    ) -> gboolean;
9464
9465    //=========================================================================
9466    // Other functions
9467    //=========================================================================
9468    pub fn gst_calculate_linear_regression(
9469        xy: *const GstClockTime,
9470        temp: *mut GstClockTime,
9471        n: c_uint,
9472        m_num: *mut GstClockTime,
9473        m_denom: *mut GstClockTime,
9474        b: *mut GstClockTime,
9475        xbase: *mut GstClockTime,
9476        r_squared: *mut c_double,
9477    ) -> gboolean;
9478    #[cfg(feature = "v1_18_3")]
9479    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9480    pub fn gst_clear_buffer(buf_ptr: *mut *mut GstBuffer);
9481    #[cfg(feature = "v1_18_3")]
9482    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9483    pub fn gst_clear_buffer_list(list_ptr: *mut *mut GstBufferList);
9484    #[cfg(feature = "v1_18_3")]
9485    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9486    pub fn gst_clear_caps(caps_ptr: *mut *mut GstCaps);
9487    #[cfg(feature = "v1_24")]
9488    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9489    pub fn gst_clear_context(context_ptr: *mut *mut GstContext);
9490    #[cfg(feature = "v1_18_3")]
9491    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9492    pub fn gst_clear_event(event_ptr: *mut *mut GstEvent);
9493    #[cfg(feature = "v1_18_3")]
9494    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9495    pub fn gst_clear_message(msg_ptr: *mut *mut GstMessage);
9496    #[cfg(feature = "v1_16")]
9497    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
9498    pub fn gst_clear_mini_object(object_ptr: *mut *mut GstMiniObject);
9499    #[cfg(feature = "v1_16")]
9500    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
9501    pub fn gst_clear_object(object_ptr: *mut *mut GstObject);
9502    #[cfg(feature = "v1_24")]
9503    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9504    pub fn gst_clear_promise(promise_ptr: *mut *mut GstPromise);
9505    #[cfg(feature = "v1_18_3")]
9506    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9507    pub fn gst_clear_query(query_ptr: *mut *mut GstQuery);
9508    #[cfg(feature = "v1_24")]
9509    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9510    pub fn gst_clear_sample(sample_ptr: *mut *mut GstSample);
9511    #[cfg(feature = "v1_16")]
9512    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
9513    pub fn gst_clear_structure(structure_ptr: *mut *mut GstStructure);
9514    #[cfg(feature = "v1_18_3")]
9515    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9516    pub fn gst_clear_tag_list(taglist_ptr: *mut *mut GstTagList);
9517    #[cfg(feature = "v1_18_3")]
9518    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9519    pub fn gst_clear_uri(uri_ptr: *mut *mut GstUri);
9520    pub fn gst_debug_add_log_function(
9521        func: GstLogFunction,
9522        user_data: gpointer,
9523        notify: glib::GDestroyNotify,
9524    );
9525    pub fn gst_debug_add_ring_buffer_logger(max_size_per_thread: c_uint, thread_timeout: c_uint);
9526    pub fn gst_debug_bin_to_dot_data(
9527        bin: *mut GstBin,
9528        details: GstDebugGraphDetails,
9529    ) -> *mut c_char;
9530    pub fn gst_debug_bin_to_dot_file(
9531        bin: *mut GstBin,
9532        details: GstDebugGraphDetails,
9533        file_name: *const c_char,
9534    );
9535    pub fn gst_debug_bin_to_dot_file_with_ts(
9536        bin: *mut GstBin,
9537        details: GstDebugGraphDetails,
9538        file_name: *const c_char,
9539    );
9540    pub fn gst_debug_construct_term_color(colorinfo: c_uint) -> *mut c_char;
9541    pub fn gst_debug_construct_win_color(colorinfo: c_uint) -> c_int;
9542    pub fn gst_debug_get_all_categories() -> *mut glib::GSList;
9543    pub fn gst_debug_get_color_mode() -> GstDebugColorMode;
9544    pub fn gst_debug_get_default_threshold() -> GstDebugLevel;
9545    pub fn gst_debug_get_stack_trace(flags: GstStackTraceFlags) -> *mut c_char;
9546    pub fn gst_debug_is_active() -> gboolean;
9547    pub fn gst_debug_is_colored() -> gboolean;
9548    pub fn gst_debug_log(
9549        category: *mut GstDebugCategory,
9550        level: GstDebugLevel,
9551        file: *const c_char,
9552        function: *const c_char,
9553        line: c_int,
9554        object: *mut gobject::GObject,
9555        format: *const c_char,
9556        ...
9557    );
9558    pub fn gst_debug_log_default(
9559        category: *mut GstDebugCategory,
9560        level: GstDebugLevel,
9561        file: *const c_char,
9562        function: *const c_char,
9563        line: c_int,
9564        object: *mut gobject::GObject,
9565        message: *mut GstDebugMessage,
9566        user_data: gpointer,
9567    );
9568    #[cfg(feature = "v1_18")]
9569    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9570    pub fn gst_debug_log_get_line(
9571        category: *mut GstDebugCategory,
9572        level: GstDebugLevel,
9573        file: *const c_char,
9574        function: *const c_char,
9575        line: c_int,
9576        object: *mut gobject::GObject,
9577        message: *mut GstDebugMessage,
9578    ) -> *mut c_char;
9579    #[cfg(feature = "v1_22")]
9580    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9581    pub fn gst_debug_log_id(
9582        category: *mut GstDebugCategory,
9583        level: GstDebugLevel,
9584        file: *const c_char,
9585        function: *const c_char,
9586        line: c_int,
9587        id: *const c_char,
9588        format: *const c_char,
9589        ...
9590    );
9591    #[cfg(feature = "v1_22")]
9592    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9593    pub fn gst_debug_log_id_literal(
9594        category: *mut GstDebugCategory,
9595        level: GstDebugLevel,
9596        file: *const c_char,
9597        function: *const c_char,
9598        line: c_int,
9599        id: *const c_char,
9600        message_string: *const c_char,
9601    );
9602    //#[cfg(feature = "v1_22")]
9603    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9604    //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);
9605    #[cfg(feature = "v1_20")]
9606    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9607    pub fn gst_debug_log_literal(
9608        category: *mut GstDebugCategory,
9609        level: GstDebugLevel,
9610        file: *const c_char,
9611        function: *const c_char,
9612        line: c_int,
9613        object: *mut gobject::GObject,
9614        message_string: *const c_char,
9615    );
9616    //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);
9617    #[cfg(feature = "v1_26")]
9618    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
9619    pub fn gst_debug_print_object(ptr: gconstpointer) -> *mut c_char;
9620    #[cfg(feature = "v1_26")]
9621    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
9622    pub fn gst_debug_print_segment(segment: *const GstSegment) -> *mut c_char;
9623    pub fn gst_debug_print_stack_trace();
9624    pub fn gst_debug_remove_log_function(func: GstLogFunction) -> c_uint;
9625    pub fn gst_debug_remove_log_function_by_data(data: gpointer) -> c_uint;
9626    pub fn gst_debug_remove_ring_buffer_logger();
9627    pub fn gst_debug_ring_buffer_logger_get_logs() -> *mut *mut c_char;
9628    pub fn gst_debug_set_active(active: gboolean);
9629    pub fn gst_debug_set_color_mode(mode: GstDebugColorMode);
9630    pub fn gst_debug_set_color_mode_from_string(mode: *const c_char);
9631    pub fn gst_debug_set_colored(colored: gboolean);
9632    pub fn gst_debug_set_default_threshold(level: GstDebugLevel);
9633    pub fn gst_debug_set_threshold_for_name(name: *const c_char, level: GstDebugLevel);
9634    pub fn gst_debug_set_threshold_from_string(list: *const c_char, reset: gboolean);
9635    pub fn gst_debug_unset_threshold_for_name(name: *const c_char);
9636    pub fn gst_deinit();
9637    pub fn gst_dynamic_type_register(plugin: *mut GstPlugin, type_: GType) -> gboolean;
9638    pub fn gst_error_get_message(domain: glib::GQuark, code: c_int) -> *mut c_char;
9639    pub fn gst_filename_to_uri(
9640        filename: *const c_char,
9641        error: *mut *mut glib::GError,
9642    ) -> *mut c_char;
9643    pub fn gst_flow_get_name(ret: GstFlowReturn) -> *const c_char;
9644    pub fn gst_flow_to_quark(ret: GstFlowReturn) -> glib::GQuark;
9645    pub fn gst_formats_contains(formats: *const GstFormat, format: GstFormat) -> gboolean;
9646    pub fn gst_get_main_executable_path() -> *const c_char;
9647    pub fn gst_info_strdup_printf(format: *const c_char, ...) -> *mut c_char;
9648    //pub fn gst_info_strdup_vprintf(format: *const c_char, args: /*Unimplemented*/va_list) -> *mut c_char;
9649    //pub fn gst_info_vasprintf(result: *mut *mut c_char, format: *const c_char, args: /*Unimplemented*/va_list) -> c_int;
9650    pub fn gst_init(argc: *mut c_int, argv: *mut *mut *mut c_char);
9651    pub fn gst_init_check(
9652        argc: *mut c_int,
9653        argv: *mut *mut *mut c_char,
9654        error: *mut *mut glib::GError,
9655    ) -> gboolean;
9656    pub fn gst_init_get_option_group() -> *mut glib::GOptionGroup;
9657    pub fn gst_is_caps_features(obj: gconstpointer) -> gboolean;
9658    pub fn gst_is_initialized() -> gboolean;
9659    pub fn gst_make_element_message_details(name: *const c_char, ...) -> *mut GstStructure;
9660    pub fn gst_param_spec_array(
9661        name: *const c_char,
9662        nick: *const c_char,
9663        blurb: *const c_char,
9664        element_spec: *mut gobject::GParamSpec,
9665        flags: gobject::GParamFlags,
9666    ) -> *mut gobject::GParamSpec;
9667    pub fn gst_param_spec_fraction(
9668        name: *const c_char,
9669        nick: *const c_char,
9670        blurb: *const c_char,
9671        min_num: c_int,
9672        min_denom: c_int,
9673        max_num: c_int,
9674        max_denom: c_int,
9675        default_num: c_int,
9676        default_denom: c_int,
9677        flags: gobject::GParamFlags,
9678    ) -> *mut gobject::GParamSpec;
9679    pub fn gst_parent_buffer_meta_api_get_type() -> GType;
9680    pub fn gst_parse_bin_from_description(
9681        bin_description: *const c_char,
9682        ghost_unlinked_pads: gboolean,
9683        error: *mut *mut glib::GError,
9684    ) -> *mut GstBin;
9685    pub fn gst_parse_bin_from_description_full(
9686        bin_description: *const c_char,
9687        ghost_unlinked_pads: gboolean,
9688        context: *mut GstParseContext,
9689        flags: GstParseFlags,
9690        error: *mut *mut glib::GError,
9691    ) -> *mut GstElement;
9692    pub fn gst_parse_launch(
9693        pipeline_description: *const c_char,
9694        error: *mut *mut glib::GError,
9695    ) -> *mut GstElement;
9696    pub fn gst_parse_launch_full(
9697        pipeline_description: *const c_char,
9698        context: *mut GstParseContext,
9699        flags: GstParseFlags,
9700        error: *mut *mut glib::GError,
9701    ) -> *mut GstElement;
9702    pub fn gst_parse_launchv(
9703        argv: *mut *const c_char,
9704        error: *mut *mut glib::GError,
9705    ) -> *mut GstElement;
9706    pub fn gst_parse_launchv_full(
9707        argv: *mut *const c_char,
9708        context: *mut GstParseContext,
9709        flags: GstParseFlags,
9710        error: *mut *mut glib::GError,
9711    ) -> *mut GstElement;
9712    pub fn gst_print(format: *const c_char, ...);
9713    pub fn gst_printerr(format: *const c_char, ...);
9714    pub fn gst_printerrln(format: *const c_char, ...);
9715    pub fn gst_println(format: *const c_char, ...);
9716    pub fn gst_protection_filter_systems_by_available_decryptors(
9717        system_identifiers: *mut *const c_char,
9718    ) -> *mut *mut c_char;
9719    pub fn gst_protection_meta_api_get_type() -> GType;
9720    pub fn gst_protection_select_system(system_identifiers: *mut *const c_char) -> *const c_char;
9721    pub fn gst_reference_timestamp_meta_api_get_type() -> GType;
9722    pub fn gst_segtrap_is_enabled() -> gboolean;
9723    pub fn gst_segtrap_set_enabled(enabled: gboolean);
9724    pub fn gst_tag_exists(tag: *const c_char) -> gboolean;
9725    pub fn gst_tag_get_description(tag: *const c_char) -> *const c_char;
9726    pub fn gst_tag_get_flag(tag: *const c_char) -> GstTagFlag;
9727    pub fn gst_tag_get_nick(tag: *const c_char) -> *const c_char;
9728    pub fn gst_tag_get_type(tag: *const c_char) -> GType;
9729    pub fn gst_tag_is_fixed(tag: *const c_char) -> gboolean;
9730    pub fn gst_tag_merge_strings_with_comma(
9731        dest: *mut gobject::GValue,
9732        src: *const gobject::GValue,
9733    );
9734    pub fn gst_tag_merge_use_first(dest: *mut gobject::GValue, src: *const gobject::GValue);
9735    pub fn gst_tag_register(
9736        name: *const c_char,
9737        flag: GstTagFlag,
9738        type_: GType,
9739        nick: *const c_char,
9740        blurb: *const c_char,
9741        func: GstTagMergeFunc,
9742    );
9743    pub fn gst_tag_register_static(
9744        name: *const c_char,
9745        flag: GstTagFlag,
9746        type_: GType,
9747        nick: *const c_char,
9748        blurb: *const c_char,
9749        func: GstTagMergeFunc,
9750    );
9751    #[cfg(feature = "v1_18")]
9752    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9753    pub fn gst_tracing_get_active_tracers() -> *mut glib::GList;
9754    pub fn gst_tracing_register_hook(
9755        tracer: *mut GstTracer,
9756        detail: *const c_char,
9757        func: gobject::GCallback,
9758    );
9759    #[cfg(feature = "v1_18")]
9760    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9761    pub fn gst_type_is_plugin_api(type_: GType, flags: *mut GstPluginAPIFlags) -> gboolean;
9762    #[cfg(feature = "v1_18")]
9763    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9764    pub fn gst_type_mark_as_plugin_api(type_: GType, flags: GstPluginAPIFlags);
9765    pub fn gst_update_registry() -> gboolean;
9766    pub fn gst_util_array_binary_search(
9767        array: gpointer,
9768        num_elements: c_uint,
9769        element_size: size_t,
9770        search_func: glib::GCompareDataFunc,
9771        mode: GstSearchMode,
9772        search_data: gconstpointer,
9773        user_data: gpointer,
9774    ) -> gpointer;
9775    #[cfg(feature = "v1_24")]
9776    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9777    pub fn gst_util_ceil_log2(v: u32) -> c_uint;
9778    pub fn gst_util_double_to_fraction(src: c_double, dest_n: *mut c_int, dest_d: *mut c_int);
9779    pub fn gst_util_dump_buffer(buf: *mut GstBuffer);
9780    pub fn gst_util_dump_mem(mem: *const u8, size: c_uint);
9781    #[cfg(feature = "v1_24")]
9782    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9783    pub fn gst_util_filename_compare(a: *const c_char, b: *const c_char) -> c_int;
9784    #[cfg(feature = "v1_26")]
9785    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
9786    pub fn gst_util_floor_log2(v: u32) -> c_uint;
9787    pub fn gst_util_fraction_add(
9788        a_n: c_int,
9789        a_d: c_int,
9790        b_n: c_int,
9791        b_d: c_int,
9792        res_n: *mut c_int,
9793        res_d: *mut c_int,
9794    ) -> gboolean;
9795    pub fn gst_util_fraction_compare(a_n: c_int, a_d: c_int, b_n: c_int, b_d: c_int) -> c_int;
9796    pub fn gst_util_fraction_multiply(
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    #[cfg(feature = "v1_26")]
9805    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
9806    pub fn gst_util_fraction_multiply_int64(
9807        a_n: i64,
9808        a_d: i64,
9809        b_n: i64,
9810        b_d: i64,
9811        res_n: *mut i64,
9812        res_d: *mut i64,
9813    ) -> gboolean;
9814    pub fn gst_util_fraction_to_double(src_n: c_int, src_d: c_int, dest: *mut c_double);
9815    pub fn gst_util_gdouble_to_guint64(value: c_double) -> u64;
9816    pub fn gst_util_get_object_array(
9817        object: *mut gobject::GObject,
9818        name: *const c_char,
9819        array: *mut *mut gobject::GValueArray,
9820    ) -> gboolean;
9821    pub fn gst_util_get_timestamp() -> GstClockTime;
9822    pub fn gst_util_greatest_common_divisor(a: c_int, b: c_int) -> c_int;
9823    pub fn gst_util_greatest_common_divisor_int64(a: i64, b: i64) -> i64;
9824    pub fn gst_util_group_id_next() -> c_uint;
9825    pub fn gst_util_guint64_to_gdouble(value: u64) -> c_double;
9826    pub fn gst_util_seqnum_compare(s1: u32, s2: u32) -> i32;
9827    pub fn gst_util_seqnum_next() -> u32;
9828    pub fn gst_util_set_object_arg(
9829        object: *mut gobject::GObject,
9830        name: *const c_char,
9831        value: *const c_char,
9832    );
9833    pub fn gst_util_set_object_array(
9834        object: *mut gobject::GObject,
9835        name: *const c_char,
9836        array: *const gobject::GValueArray,
9837    ) -> gboolean;
9838    pub fn gst_util_set_value_from_string(value: *mut gobject::GValue, value_str: *const c_char);
9839    #[cfg(feature = "v1_24")]
9840    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9841    pub fn gst_util_simplify_fraction(
9842        numerator: *mut c_int,
9843        denominator: *mut c_int,
9844        n_terms: c_uint,
9845        threshold: c_uint,
9846    );
9847    pub fn gst_util_uint64_scale(val: u64, num: u64, denom: u64) -> u64;
9848    pub fn gst_util_uint64_scale_ceil(val: u64, num: u64, denom: u64) -> u64;
9849    pub fn gst_util_uint64_scale_int(val: u64, num: c_int, denom: c_int) -> u64;
9850    pub fn gst_util_uint64_scale_int_ceil(val: u64, num: c_int, denom: c_int) -> u64;
9851    pub fn gst_util_uint64_scale_int_round(val: u64, num: c_int, denom: c_int) -> u64;
9852    pub fn gst_util_uint64_scale_round(val: u64, num: u64, denom: u64) -> u64;
9853    pub fn gst_value_can_compare(
9854        value1: *const gobject::GValue,
9855        value2: *const gobject::GValue,
9856    ) -> gboolean;
9857    pub fn gst_value_can_intersect(
9858        value1: *const gobject::GValue,
9859        value2: *const gobject::GValue,
9860    ) -> gboolean;
9861    pub fn gst_value_can_subtract(
9862        minuend: *const gobject::GValue,
9863        subtrahend: *const gobject::GValue,
9864    ) -> gboolean;
9865    pub fn gst_value_can_union(
9866        value1: *const gobject::GValue,
9867        value2: *const gobject::GValue,
9868    ) -> gboolean;
9869    pub fn gst_value_compare(
9870        value1: *const gobject::GValue,
9871        value2: *const gobject::GValue,
9872    ) -> c_int;
9873    pub fn gst_value_deserialize(dest: *mut gobject::GValue, src: *const c_char) -> gboolean;
9874    #[cfg(feature = "v1_20")]
9875    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9876    pub fn gst_value_deserialize_with_pspec(
9877        dest: *mut gobject::GValue,
9878        src: *const c_char,
9879        pspec: *mut gobject::GParamSpec,
9880    ) -> gboolean;
9881    pub fn gst_value_fixate(dest: *mut gobject::GValue, src: *const gobject::GValue) -> gboolean;
9882    pub fn gst_value_fraction_multiply(
9883        product: *mut gobject::GValue,
9884        factor1: *const gobject::GValue,
9885        factor2: *const gobject::GValue,
9886    ) -> gboolean;
9887    pub fn gst_value_fraction_subtract(
9888        dest: *mut gobject::GValue,
9889        minuend: *const gobject::GValue,
9890        subtrahend: *const gobject::GValue,
9891    ) -> gboolean;
9892    pub fn gst_value_get_bitmask(value: *const gobject::GValue) -> u64;
9893    pub fn gst_value_get_caps(value: *const gobject::GValue) -> *const GstCaps;
9894    pub fn gst_value_get_caps_features(value: *const gobject::GValue) -> *const GstCapsFeatures;
9895    pub fn gst_value_get_double_range_max(value: *const gobject::GValue) -> c_double;
9896    pub fn gst_value_get_double_range_min(value: *const gobject::GValue) -> c_double;
9897    pub fn gst_value_get_flagset_flags(value: *const gobject::GValue) -> c_uint;
9898    pub fn gst_value_get_flagset_mask(value: *const gobject::GValue) -> c_uint;
9899    pub fn gst_value_get_fraction_denominator(value: *const gobject::GValue) -> c_int;
9900    pub fn gst_value_get_fraction_numerator(value: *const gobject::GValue) -> c_int;
9901    pub fn gst_value_get_fraction_range_max(
9902        value: *const gobject::GValue,
9903    ) -> *const gobject::GValue;
9904    pub fn gst_value_get_fraction_range_min(
9905        value: *const gobject::GValue,
9906    ) -> *const gobject::GValue;
9907    pub fn gst_value_get_int64_range_max(value: *const gobject::GValue) -> i64;
9908    pub fn gst_value_get_int64_range_min(value: *const gobject::GValue) -> i64;
9909    pub fn gst_value_get_int64_range_step(value: *const gobject::GValue) -> i64;
9910    pub fn gst_value_get_int_range_max(value: *const gobject::GValue) -> c_int;
9911    pub fn gst_value_get_int_range_min(value: *const gobject::GValue) -> c_int;
9912    pub fn gst_value_get_int_range_step(value: *const gobject::GValue) -> c_int;
9913    pub fn gst_value_get_structure(value: *const gobject::GValue) -> *const GstStructure;
9914    pub fn gst_value_init_and_copy(dest: *mut gobject::GValue, src: *const gobject::GValue);
9915    pub fn gst_value_intersect(
9916        dest: *mut gobject::GValue,
9917        value1: *const gobject::GValue,
9918        value2: *const gobject::GValue,
9919    ) -> gboolean;
9920    pub fn gst_value_is_fixed(value: *const gobject::GValue) -> gboolean;
9921    pub fn gst_value_is_subset(
9922        value1: *const gobject::GValue,
9923        value2: *const gobject::GValue,
9924    ) -> gboolean;
9925    pub fn gst_value_register(table: *const GstValueTable);
9926    pub fn gst_value_serialize(value: *const gobject::GValue) -> *mut c_char;
9927    pub fn gst_value_set_bitmask(value: *mut gobject::GValue, bitmask: u64);
9928    pub fn gst_value_set_caps(value: *mut gobject::GValue, caps: *const GstCaps);
9929    pub fn gst_value_set_caps_features(
9930        value: *mut gobject::GValue,
9931        features: *const GstCapsFeatures,
9932    );
9933    pub fn gst_value_set_double_range(value: *mut gobject::GValue, start: c_double, end: c_double);
9934    pub fn gst_value_set_flagset(value: *mut gobject::GValue, flags: c_uint, mask: c_uint);
9935    pub fn gst_value_set_fraction(
9936        value: *mut gobject::GValue,
9937        numerator: c_int,
9938        denominator: c_int,
9939    );
9940    pub fn gst_value_set_fraction_range(
9941        value: *mut gobject::GValue,
9942        start: *const gobject::GValue,
9943        end: *const gobject::GValue,
9944    );
9945    pub fn gst_value_set_fraction_range_full(
9946        value: *mut gobject::GValue,
9947        numerator_start: c_int,
9948        denominator_start: c_int,
9949        numerator_end: c_int,
9950        denominator_end: c_int,
9951    );
9952    pub fn gst_value_set_int64_range(value: *mut gobject::GValue, start: i64, end: i64);
9953    pub fn gst_value_set_int64_range_step(
9954        value: *mut gobject::GValue,
9955        start: i64,
9956        end: i64,
9957        step: i64,
9958    );
9959    pub fn gst_value_set_int_range(value: *mut gobject::GValue, start: c_int, end: c_int);
9960    pub fn gst_value_set_int_range_step(
9961        value: *mut gobject::GValue,
9962        start: c_int,
9963        end: c_int,
9964        step: c_int,
9965    );
9966    pub fn gst_value_set_structure(value: *mut gobject::GValue, structure: *const GstStructure);
9967    pub fn gst_value_subtract(
9968        dest: *mut gobject::GValue,
9969        minuend: *const gobject::GValue,
9970        subtrahend: *const gobject::GValue,
9971    ) -> gboolean;
9972    pub fn gst_value_union(
9973        dest: *mut gobject::GValue,
9974        value1: *const gobject::GValue,
9975        value2: *const gobject::GValue,
9976    ) -> gboolean;
9977    pub fn gst_version(
9978        major: *mut c_uint,
9979        minor: *mut c_uint,
9980        micro: *mut c_uint,
9981        nano: *mut c_uint,
9982    );
9983    pub fn gst_version_string() -> *mut c_char;
9984
9985}