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 GstValueHashFunc =
1198    Option<unsafe extern "C" fn(*const gobject::GValue, *mut c_uint) -> gboolean>;
1199pub type GstValueSerializeFunc =
1200    Option<unsafe extern "C" fn(*const gobject::GValue) -> *mut c_char>;
1201
1202// Records
1203#[derive(Copy, Clone)]
1204#[repr(C)]
1205pub struct GstAllocationParams {
1206    pub flags: GstMemoryFlags,
1207    pub align: size_t,
1208    pub prefix: size_t,
1209    pub padding: size_t,
1210    pub _gst_reserved: [gpointer; 4],
1211}
1212
1213impl ::std::fmt::Debug for GstAllocationParams {
1214    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1215        f.debug_struct(&format!("GstAllocationParams @ {self:p}"))
1216            .field("flags", &self.flags)
1217            .field("align", &self.align)
1218            .field("prefix", &self.prefix)
1219            .field("padding", &self.padding)
1220            .finish()
1221    }
1222}
1223
1224#[derive(Copy, Clone)]
1225#[repr(C)]
1226pub struct GstAllocatorClass {
1227    pub object_class: GstObjectClass,
1228    pub alloc: Option<
1229        unsafe extern "C" fn(*mut GstAllocator, size_t, *mut GstAllocationParams) -> *mut GstMemory,
1230    >,
1231    pub free: Option<unsafe extern "C" fn(*mut GstAllocator, *mut GstMemory)>,
1232    pub _gst_reserved: [gpointer; 4],
1233}
1234
1235impl ::std::fmt::Debug for GstAllocatorClass {
1236    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1237        f.debug_struct(&format!("GstAllocatorClass @ {self:p}"))
1238            .field("object_class", &self.object_class)
1239            .field("alloc", &self.alloc)
1240            .field("free", &self.free)
1241            .finish()
1242    }
1243}
1244
1245#[repr(C)]
1246#[allow(dead_code)]
1247pub struct _GstAllocatorPrivate {
1248    _data: [u8; 0],
1249    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1250}
1251
1252pub type GstAllocatorPrivate = _GstAllocatorPrivate;
1253
1254#[repr(C)]
1255#[allow(dead_code)]
1256pub struct GstAtomicQueue {
1257    _data: [u8; 0],
1258    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1259}
1260
1261impl ::std::fmt::Debug for GstAtomicQueue {
1262    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1263        f.debug_struct(&format!("GstAtomicQueue @ {self:p}"))
1264            .finish()
1265    }
1266}
1267
1268#[derive(Copy, Clone)]
1269#[repr(C)]
1270pub struct GstBinClass {
1271    pub parent_class: GstElementClass,
1272    pub pool: *mut glib::GThreadPool,
1273    pub element_added: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement)>,
1274    pub element_removed: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement)>,
1275    pub add_element: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement) -> gboolean>,
1276    pub remove_element: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement) -> gboolean>,
1277    pub handle_message: Option<unsafe extern "C" fn(*mut GstBin, *mut GstMessage)>,
1278    pub do_latency: Option<unsafe extern "C" fn(*mut GstBin) -> gboolean>,
1279    pub deep_element_added: Option<unsafe extern "C" fn(*mut GstBin, *mut GstBin, *mut GstElement)>,
1280    pub deep_element_removed:
1281        Option<unsafe extern "C" fn(*mut GstBin, *mut GstBin, *mut GstElement)>,
1282    pub _gst_reserved: [gpointer; 2],
1283}
1284
1285impl ::std::fmt::Debug for GstBinClass {
1286    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1287        f.debug_struct(&format!("GstBinClass @ {self:p}"))
1288            .field("parent_class", &self.parent_class)
1289            .field("element_added", &self.element_added)
1290            .field("element_removed", &self.element_removed)
1291            .field("add_element", &self.add_element)
1292            .field("remove_element", &self.remove_element)
1293            .field("handle_message", &self.handle_message)
1294            .field("do_latency", &self.do_latency)
1295            .field("deep_element_added", &self.deep_element_added)
1296            .field("deep_element_removed", &self.deep_element_removed)
1297            .finish()
1298    }
1299}
1300
1301#[repr(C)]
1302#[allow(dead_code)]
1303pub struct _GstBinPrivate {
1304    _data: [u8; 0],
1305    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1306}
1307
1308pub type GstBinPrivate = _GstBinPrivate;
1309
1310#[derive(Copy, Clone)]
1311#[repr(C)]
1312pub struct GstBuffer {
1313    pub mini_object: GstMiniObject,
1314    pub pool: *mut GstBufferPool,
1315    pub pts: GstClockTime,
1316    pub dts: GstClockTime,
1317    pub duration: GstClockTime,
1318    pub offset: u64,
1319    pub offset_end: u64,
1320}
1321
1322impl ::std::fmt::Debug for GstBuffer {
1323    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1324        f.debug_struct(&format!("GstBuffer @ {self:p}"))
1325            .field("mini_object", &self.mini_object)
1326            .field("pool", &self.pool)
1327            .field("pts", &self.pts)
1328            .field("dts", &self.dts)
1329            .field("duration", &self.duration)
1330            .field("offset", &self.offset)
1331            .field("offset_end", &self.offset_end)
1332            .finish()
1333    }
1334}
1335
1336#[repr(C)]
1337#[allow(dead_code)]
1338pub struct GstBufferList {
1339    _data: [u8; 0],
1340    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1341}
1342
1343impl ::std::fmt::Debug for GstBufferList {
1344    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1345        f.debug_struct(&format!("GstBufferList @ {self:p}"))
1346            .finish()
1347    }
1348}
1349
1350#[derive(Copy, Clone)]
1351#[repr(C)]
1352pub struct GstBufferPoolAcquireParams {
1353    pub format: GstFormat,
1354    pub start: i64,
1355    pub stop: i64,
1356    pub flags: GstBufferPoolAcquireFlags,
1357    pub _gst_reserved: [gpointer; 4],
1358}
1359
1360impl ::std::fmt::Debug for GstBufferPoolAcquireParams {
1361    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1362        f.debug_struct(&format!("GstBufferPoolAcquireParams @ {self:p}"))
1363            .field("format", &self.format)
1364            .field("start", &self.start)
1365            .field("stop", &self.stop)
1366            .field("flags", &self.flags)
1367            .finish()
1368    }
1369}
1370
1371#[derive(Copy, Clone)]
1372#[repr(C)]
1373pub struct GstBufferPoolClass {
1374    pub object_class: GstObjectClass,
1375    pub get_options: Option<unsafe extern "C" fn(*mut GstBufferPool) -> *mut *const c_char>,
1376    pub set_config: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstStructure) -> gboolean>,
1377    pub start: Option<unsafe extern "C" fn(*mut GstBufferPool) -> gboolean>,
1378    pub stop: Option<unsafe extern "C" fn(*mut GstBufferPool) -> gboolean>,
1379    pub acquire_buffer: Option<
1380        unsafe extern "C" fn(
1381            *mut GstBufferPool,
1382            *mut *mut GstBuffer,
1383            *mut GstBufferPoolAcquireParams,
1384        ) -> GstFlowReturn,
1385    >,
1386    pub alloc_buffer: Option<
1387        unsafe extern "C" fn(
1388            *mut GstBufferPool,
1389            *mut *mut GstBuffer,
1390            *mut GstBufferPoolAcquireParams,
1391        ) -> GstFlowReturn,
1392    >,
1393    pub reset_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1394    pub release_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1395    pub free_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1396    pub flush_start: Option<unsafe extern "C" fn(*mut GstBufferPool)>,
1397    pub flush_stop: Option<unsafe extern "C" fn(*mut GstBufferPool)>,
1398    pub _gst_reserved: [gpointer; 2],
1399}
1400
1401impl ::std::fmt::Debug for GstBufferPoolClass {
1402    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1403        f.debug_struct(&format!("GstBufferPoolClass @ {self:p}"))
1404            .field("object_class", &self.object_class)
1405            .field("get_options", &self.get_options)
1406            .field("set_config", &self.set_config)
1407            .field("start", &self.start)
1408            .field("stop", &self.stop)
1409            .field("acquire_buffer", &self.acquire_buffer)
1410            .field("alloc_buffer", &self.alloc_buffer)
1411            .field("reset_buffer", &self.reset_buffer)
1412            .field("release_buffer", &self.release_buffer)
1413            .field("free_buffer", &self.free_buffer)
1414            .field("flush_start", &self.flush_start)
1415            .field("flush_stop", &self.flush_stop)
1416            .finish()
1417    }
1418}
1419
1420#[repr(C)]
1421#[allow(dead_code)]
1422pub struct _GstBufferPoolPrivate {
1423    _data: [u8; 0],
1424    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1425}
1426
1427pub type GstBufferPoolPrivate = _GstBufferPoolPrivate;
1428
1429#[derive(Copy, Clone)]
1430#[repr(C)]
1431pub struct GstBusClass {
1432    pub parent_class: GstObjectClass,
1433    pub message: Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage)>,
1434    pub sync_message: Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage)>,
1435    pub _gst_reserved: [gpointer; 4],
1436}
1437
1438impl ::std::fmt::Debug for GstBusClass {
1439    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1440        f.debug_struct(&format!("GstBusClass @ {self:p}"))
1441            .field("parent_class", &self.parent_class)
1442            .field("message", &self.message)
1443            .field("sync_message", &self.sync_message)
1444            .finish()
1445    }
1446}
1447
1448#[repr(C)]
1449#[allow(dead_code)]
1450pub struct _GstBusPrivate {
1451    _data: [u8; 0],
1452    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1453}
1454
1455pub type GstBusPrivate = _GstBusPrivate;
1456
1457#[derive(Copy, Clone)]
1458#[repr(C)]
1459pub struct GstByteArrayInterface {
1460    pub data: *mut u8,
1461    pub len: size_t,
1462    pub resize: Option<unsafe extern "C" fn(*mut GstByteArrayInterface, size_t) -> gboolean>,
1463    pub _gst_reserved: [gpointer; 4],
1464}
1465
1466impl ::std::fmt::Debug for GstByteArrayInterface {
1467    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1468        f.debug_struct(&format!("GstByteArrayInterface @ {self:p}"))
1469            .field("data", &self.data)
1470            .field("len", &self.len)
1471            .field("resize", &self.resize)
1472            .finish()
1473    }
1474}
1475
1476#[derive(Copy, Clone)]
1477#[repr(C)]
1478pub struct GstCaps {
1479    pub mini_object: GstMiniObject,
1480}
1481
1482impl ::std::fmt::Debug for GstCaps {
1483    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1484        f.debug_struct(&format!("GstCaps @ {self:p}"))
1485            .field("mini_object", &self.mini_object)
1486            .finish()
1487    }
1488}
1489
1490#[repr(C)]
1491#[allow(dead_code)]
1492pub struct GstCapsFeatures {
1493    _data: [u8; 0],
1494    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1495}
1496
1497impl ::std::fmt::Debug for GstCapsFeatures {
1498    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1499        f.debug_struct(&format!("GstCapsFeatures @ {self:p}"))
1500            .finish()
1501    }
1502}
1503
1504#[derive(Copy, Clone)]
1505#[repr(C)]
1506pub struct GstChildProxyInterface {
1507    pub parent: gobject::GTypeInterface,
1508    pub get_child_by_name:
1509        Option<unsafe extern "C" fn(*mut GstChildProxy, *const c_char) -> *mut gobject::GObject>,
1510    pub get_child_by_index:
1511        Option<unsafe extern "C" fn(*mut GstChildProxy, c_uint) -> *mut gobject::GObject>,
1512    pub get_children_count: Option<unsafe extern "C" fn(*mut GstChildProxy) -> c_uint>,
1513    pub child_added:
1514        Option<unsafe extern "C" fn(*mut GstChildProxy, *mut gobject::GObject, *const c_char)>,
1515    pub child_removed:
1516        Option<unsafe extern "C" fn(*mut GstChildProxy, *mut gobject::GObject, *const c_char)>,
1517    pub _gst_reserved: [gpointer; 4],
1518}
1519
1520impl ::std::fmt::Debug for GstChildProxyInterface {
1521    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1522        f.debug_struct(&format!("GstChildProxyInterface @ {self:p}"))
1523            .field("parent", &self.parent)
1524            .field("get_child_by_name", &self.get_child_by_name)
1525            .field("get_child_by_index", &self.get_child_by_index)
1526            .field("get_children_count", &self.get_children_count)
1527            .field("child_added", &self.child_added)
1528            .field("child_removed", &self.child_removed)
1529            .finish()
1530    }
1531}
1532
1533#[derive(Copy, Clone)]
1534#[repr(C)]
1535pub struct GstClockClass {
1536    pub parent_class: GstObjectClass,
1537    pub change_resolution:
1538        Option<unsafe extern "C" fn(*mut GstClock, GstClockTime, GstClockTime) -> GstClockTime>,
1539    pub get_resolution: Option<unsafe extern "C" fn(*mut GstClock) -> GstClockTime>,
1540    pub get_internal_time: Option<unsafe extern "C" fn(*mut GstClock) -> GstClockTime>,
1541    pub wait: Option<
1542        unsafe extern "C" fn(
1543            *mut GstClock,
1544            *mut GstClockEntry,
1545            *mut GstClockTimeDiff,
1546        ) -> GstClockReturn,
1547    >,
1548    pub wait_async:
1549        Option<unsafe extern "C" fn(*mut GstClock, *mut GstClockEntry) -> GstClockReturn>,
1550    pub unschedule: Option<unsafe extern "C" fn(*mut GstClock, *mut GstClockEntry)>,
1551    pub _gst_reserved: [gpointer; 4],
1552}
1553
1554impl ::std::fmt::Debug for GstClockClass {
1555    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1556        f.debug_struct(&format!("GstClockClass @ {self:p}"))
1557            .field("parent_class", &self.parent_class)
1558            .field("change_resolution", &self.change_resolution)
1559            .field("get_resolution", &self.get_resolution)
1560            .field("get_internal_time", &self.get_internal_time)
1561            .field("wait", &self.wait)
1562            .field("wait_async", &self.wait_async)
1563            .field("unschedule", &self.unschedule)
1564            .finish()
1565    }
1566}
1567
1568#[derive(Copy, Clone)]
1569#[repr(C)]
1570pub struct GstClockEntry {
1571    pub refcount: c_int,
1572    pub clock: *mut GstClock,
1573    pub type_: GstClockEntryType,
1574    pub time: GstClockTime,
1575    pub interval: GstClockTime,
1576    pub status: GstClockReturn,
1577    pub func: GstClockCallback,
1578    pub user_data: gpointer,
1579    pub destroy_data: glib::GDestroyNotify,
1580    pub unscheduled: gboolean,
1581    pub woken_up: gboolean,
1582    pub _gst_reserved: [gpointer; 4],
1583}
1584
1585impl ::std::fmt::Debug for GstClockEntry {
1586    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1587        f.debug_struct(&format!("GstClockEntry @ {self:p}"))
1588            .field("refcount", &self.refcount)
1589            .finish()
1590    }
1591}
1592
1593#[repr(C)]
1594#[allow(dead_code)]
1595pub struct _GstClockPrivate {
1596    _data: [u8; 0],
1597    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1598}
1599
1600pub type GstClockPrivate = _GstClockPrivate;
1601
1602#[repr(C)]
1603#[allow(dead_code)]
1604pub struct GstContext {
1605    _data: [u8; 0],
1606    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1607}
1608
1609impl ::std::fmt::Debug for GstContext {
1610    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1611        f.debug_struct(&format!("GstContext @ {self:p}")).finish()
1612    }
1613}
1614
1615#[derive(Copy, Clone)]
1616#[repr(C)]
1617pub struct GstControlBindingClass {
1618    pub parent_class: GstObjectClass,
1619    pub sync_values: Option<
1620        unsafe extern "C" fn(
1621            *mut GstControlBinding,
1622            *mut GstObject,
1623            GstClockTime,
1624            GstClockTime,
1625        ) -> gboolean,
1626    >,
1627    pub get_value:
1628        Option<unsafe extern "C" fn(*mut GstControlBinding, GstClockTime) -> *mut gobject::GValue>,
1629    pub get_value_array: Option<
1630        unsafe extern "C" fn(
1631            *mut GstControlBinding,
1632            GstClockTime,
1633            GstClockTime,
1634            c_uint,
1635            gpointer,
1636        ) -> gboolean,
1637    >,
1638    pub get_g_value_array: Option<
1639        unsafe extern "C" fn(
1640            *mut GstControlBinding,
1641            GstClockTime,
1642            GstClockTime,
1643            c_uint,
1644            *mut gobject::GValue,
1645        ) -> gboolean,
1646    >,
1647    pub _gst_reserved: [gpointer; 4],
1648}
1649
1650impl ::std::fmt::Debug for GstControlBindingClass {
1651    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1652        f.debug_struct(&format!("GstControlBindingClass @ {self:p}"))
1653            .field("parent_class", &self.parent_class)
1654            .field("sync_values", &self.sync_values)
1655            .field("get_value", &self.get_value)
1656            .field("get_value_array", &self.get_value_array)
1657            .field("get_g_value_array", &self.get_g_value_array)
1658            .finish()
1659    }
1660}
1661
1662#[repr(C)]
1663#[allow(dead_code)]
1664pub struct _GstControlBindingPrivate {
1665    _data: [u8; 0],
1666    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1667}
1668
1669pub type GstControlBindingPrivate = _GstControlBindingPrivate;
1670
1671#[derive(Copy, Clone)]
1672#[repr(C)]
1673pub struct GstControlBinding_ABI_abi {
1674    pub priv_: *mut GstControlBindingPrivate,
1675}
1676
1677impl ::std::fmt::Debug for GstControlBinding_ABI_abi {
1678    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1679        f.debug_struct(&format!("GstControlBinding_ABI_abi @ {self:p}"))
1680            .finish()
1681    }
1682}
1683
1684#[derive(Copy, Clone)]
1685#[repr(C)]
1686pub struct GstControlSourceClass {
1687    pub parent_class: GstObjectClass,
1688    pub _gst_reserved: [gpointer; 4],
1689}
1690
1691impl ::std::fmt::Debug for GstControlSourceClass {
1692    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1693        f.debug_struct(&format!("GstControlSourceClass @ {self:p}"))
1694            .field("parent_class", &self.parent_class)
1695            .finish()
1696    }
1697}
1698
1699#[derive(Copy, Clone)]
1700#[repr(C)]
1701pub struct GstCustomMeta {
1702    pub meta: GstMeta,
1703    pub structure: *mut GstStructure,
1704}
1705
1706impl ::std::fmt::Debug for GstCustomMeta {
1707    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1708        f.debug_struct(&format!("GstCustomMeta @ {self:p}"))
1709            .field("meta", &self.meta)
1710            .field("structure", &self.structure)
1711            .finish()
1712    }
1713}
1714
1715#[repr(C)]
1716#[allow(dead_code)]
1717pub struct GstDateTime {
1718    _data: [u8; 0],
1719    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1720}
1721
1722impl ::std::fmt::Debug for GstDateTime {
1723    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1724        f.debug_struct(&format!("GstDateTime @ {self:p}")).finish()
1725    }
1726}
1727
1728#[derive(Copy, Clone)]
1729#[repr(C)]
1730pub struct GstDebugCategory {
1731    pub threshold: c_int,
1732    pub color: c_uint,
1733    pub name: *const c_char,
1734    pub description: *const c_char,
1735}
1736
1737impl ::std::fmt::Debug for GstDebugCategory {
1738    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1739        f.debug_struct(&format!("GstDebugCategory @ {self:p}"))
1740            .finish()
1741    }
1742}
1743
1744#[repr(C)]
1745#[allow(dead_code)]
1746pub struct _GstDebugMessage {
1747    _data: [u8; 0],
1748    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1749}
1750
1751pub type GstDebugMessage = _GstDebugMessage;
1752
1753#[derive(Copy, Clone)]
1754#[repr(C)]
1755pub struct GstDeviceClass {
1756    pub parent_class: GstObjectClass,
1757    pub create_element:
1758        Option<unsafe extern "C" fn(*mut GstDevice, *const c_char) -> *mut GstElement>,
1759    pub reconfigure_element:
1760        Option<unsafe extern "C" fn(*mut GstDevice, *mut GstElement) -> gboolean>,
1761    pub _gst_reserved: [gpointer; 4],
1762}
1763
1764impl ::std::fmt::Debug for GstDeviceClass {
1765    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1766        f.debug_struct(&format!("GstDeviceClass @ {self:p}"))
1767            .field("parent_class", &self.parent_class)
1768            .field("create_element", &self.create_element)
1769            .field("reconfigure_element", &self.reconfigure_element)
1770            .finish()
1771    }
1772}
1773
1774#[derive(Copy, Clone)]
1775#[repr(C)]
1776pub struct GstDeviceMonitorClass {
1777    pub parent_class: GstObjectClass,
1778    pub _gst_reserved: [gpointer; 4],
1779}
1780
1781impl ::std::fmt::Debug for GstDeviceMonitorClass {
1782    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1783        f.debug_struct(&format!("GstDeviceMonitorClass @ {self:p}"))
1784            .field("parent_class", &self.parent_class)
1785            .finish()
1786    }
1787}
1788
1789#[repr(C)]
1790#[allow(dead_code)]
1791pub struct _GstDeviceMonitorPrivate {
1792    _data: [u8; 0],
1793    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1794}
1795
1796pub type GstDeviceMonitorPrivate = _GstDeviceMonitorPrivate;
1797
1798#[repr(C)]
1799#[allow(dead_code)]
1800pub struct _GstDevicePrivate {
1801    _data: [u8; 0],
1802    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1803}
1804
1805pub type GstDevicePrivate = _GstDevicePrivate;
1806
1807#[derive(Copy, Clone)]
1808#[repr(C)]
1809pub struct GstDeviceProviderClass {
1810    pub parent_class: GstObjectClass,
1811    pub factory: *mut GstDeviceProviderFactory,
1812    pub probe: Option<unsafe extern "C" fn(*mut GstDeviceProvider) -> *mut glib::GList>,
1813    pub start: Option<unsafe extern "C" fn(*mut GstDeviceProvider) -> gboolean>,
1814    pub stop: Option<unsafe extern "C" fn(*mut GstDeviceProvider)>,
1815    pub metadata: gpointer,
1816    pub _gst_reserved: [gpointer; 4],
1817}
1818
1819impl ::std::fmt::Debug for GstDeviceProviderClass {
1820    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1821        f.debug_struct(&format!("GstDeviceProviderClass @ {self:p}"))
1822            .field("parent_class", &self.parent_class)
1823            .field("factory", &self.factory)
1824            .field("probe", &self.probe)
1825            .field("start", &self.start)
1826            .field("stop", &self.stop)
1827            .finish()
1828    }
1829}
1830
1831#[repr(C)]
1832#[allow(dead_code)]
1833pub struct _GstDeviceProviderFactoryClass {
1834    _data: [u8; 0],
1835    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1836}
1837
1838pub type GstDeviceProviderFactoryClass = _GstDeviceProviderFactoryClass;
1839
1840#[repr(C)]
1841#[allow(dead_code)]
1842pub struct _GstDeviceProviderPrivate {
1843    _data: [u8; 0],
1844    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1845}
1846
1847pub type GstDeviceProviderPrivate = _GstDeviceProviderPrivate;
1848
1849#[repr(C)]
1850#[allow(dead_code)]
1851pub struct _GstDynamicTypeFactoryClass {
1852    _data: [u8; 0],
1853    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1854}
1855
1856pub type GstDynamicTypeFactoryClass = _GstDynamicTypeFactoryClass;
1857
1858#[derive(Copy, Clone)]
1859#[repr(C)]
1860pub struct GstElementClass {
1861    pub parent_class: GstObjectClass,
1862    pub metadata: gpointer,
1863    pub elementfactory: *mut GstElementFactory,
1864    pub padtemplates: *mut glib::GList,
1865    pub numpadtemplates: c_int,
1866    pub pad_templ_cookie: u32,
1867    pub pad_added: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1868    pub pad_removed: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1869    pub no_more_pads: Option<unsafe extern "C" fn(*mut GstElement)>,
1870    pub request_new_pad: Option<
1871        unsafe extern "C" fn(
1872            *mut GstElement,
1873            *mut GstPadTemplate,
1874            *const c_char,
1875            *const GstCaps,
1876        ) -> *mut GstPad,
1877    >,
1878    pub release_pad: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1879    pub get_state: Option<
1880        unsafe extern "C" fn(
1881            *mut GstElement,
1882            *mut GstState,
1883            *mut GstState,
1884            GstClockTime,
1885        ) -> GstStateChangeReturn,
1886    >,
1887    pub set_state: Option<unsafe extern "C" fn(*mut GstElement, GstState) -> GstStateChangeReturn>,
1888    pub change_state:
1889        Option<unsafe extern "C" fn(*mut GstElement, GstStateChange) -> GstStateChangeReturn>,
1890    pub state_changed: Option<unsafe extern "C" fn(*mut GstElement, GstState, GstState, GstState)>,
1891    pub set_bus: Option<unsafe extern "C" fn(*mut GstElement, *mut GstBus)>,
1892    pub provide_clock: Option<unsafe extern "C" fn(*mut GstElement) -> *mut GstClock>,
1893    pub set_clock: Option<unsafe extern "C" fn(*mut GstElement, *mut GstClock) -> gboolean>,
1894    pub send_event: Option<unsafe extern "C" fn(*mut GstElement, *mut GstEvent) -> gboolean>,
1895    pub query: Option<unsafe extern "C" fn(*mut GstElement, *mut GstQuery) -> gboolean>,
1896    pub post_message: Option<unsafe extern "C" fn(*mut GstElement, *mut GstMessage) -> gboolean>,
1897    pub set_context: Option<unsafe extern "C" fn(*mut GstElement, *mut GstContext)>,
1898    pub _gst_reserved: [gpointer; 18],
1899}
1900
1901impl ::std::fmt::Debug for GstElementClass {
1902    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1903        f.debug_struct(&format!("GstElementClass @ {self:p}"))
1904            .field("parent_class", &self.parent_class)
1905            .field("metadata", &self.metadata)
1906            .field("elementfactory", &self.elementfactory)
1907            .field("padtemplates", &self.padtemplates)
1908            .field("numpadtemplates", &self.numpadtemplates)
1909            .field("pad_templ_cookie", &self.pad_templ_cookie)
1910            .field("pad_added", &self.pad_added)
1911            .field("pad_removed", &self.pad_removed)
1912            .field("no_more_pads", &self.no_more_pads)
1913            .field("request_new_pad", &self.request_new_pad)
1914            .field("release_pad", &self.release_pad)
1915            .field("get_state", &self.get_state)
1916            .field("set_state", &self.set_state)
1917            .field("change_state", &self.change_state)
1918            .field("state_changed", &self.state_changed)
1919            .field("set_bus", &self.set_bus)
1920            .field("provide_clock", &self.provide_clock)
1921            .field("set_clock", &self.set_clock)
1922            .field("send_event", &self.send_event)
1923            .field("query", &self.query)
1924            .field("post_message", &self.post_message)
1925            .field("set_context", &self.set_context)
1926            .finish()
1927    }
1928}
1929
1930#[repr(C)]
1931#[allow(dead_code)]
1932pub struct _GstElementFactoryClass {
1933    _data: [u8; 0],
1934    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1935}
1936
1937pub type GstElementFactoryClass = _GstElementFactoryClass;
1938
1939#[derive(Copy, Clone)]
1940#[repr(C)]
1941pub struct GstEvent {
1942    pub mini_object: GstMiniObject,
1943    pub type_: GstEventType,
1944    pub timestamp: u64,
1945    pub seqnum: u32,
1946}
1947
1948impl ::std::fmt::Debug for GstEvent {
1949    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1950        f.debug_struct(&format!("GstEvent @ {self:p}"))
1951            .field("mini_object", &self.mini_object)
1952            .field("type_", &self.type_)
1953            .field("timestamp", &self.timestamp)
1954            .field("seqnum", &self.seqnum)
1955            .finish()
1956    }
1957}
1958
1959#[derive(Copy, Clone)]
1960#[repr(C)]
1961pub struct GstFormatDefinition {
1962    pub value: GstFormat,
1963    pub nick: *const c_char,
1964    pub description: *const c_char,
1965    pub quark: glib::GQuark,
1966}
1967
1968impl ::std::fmt::Debug for GstFormatDefinition {
1969    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1970        f.debug_struct(&format!("GstFormatDefinition @ {self:p}"))
1971            .field("value", &self.value)
1972            .field("nick", &self.nick)
1973            .field("description", &self.description)
1974            .field("quark", &self.quark)
1975            .finish()
1976    }
1977}
1978
1979#[derive(Copy, Clone)]
1980#[repr(C)]
1981pub struct GstGhostPadClass {
1982    pub parent_class: GstProxyPadClass,
1983    pub _gst_reserved: [gpointer; 4],
1984}
1985
1986impl ::std::fmt::Debug for GstGhostPadClass {
1987    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1988        f.debug_struct(&format!("GstGhostPadClass @ {self:p}"))
1989            .field("parent_class", &self.parent_class)
1990            .finish()
1991    }
1992}
1993
1994#[repr(C)]
1995#[allow(dead_code)]
1996pub struct _GstGhostPadPrivate {
1997    _data: [u8; 0],
1998    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1999}
2000
2001pub type GstGhostPadPrivate = _GstGhostPadPrivate;
2002
2003#[derive(Copy, Clone)]
2004#[repr(C)]
2005pub struct GstIterator {
2006    pub copy: GstIteratorCopyFunction,
2007    pub next: GstIteratorNextFunction,
2008    pub item: GstIteratorItemFunction,
2009    pub resync: GstIteratorResyncFunction,
2010    pub free: GstIteratorFreeFunction,
2011    pub pushed: *mut GstIterator,
2012    pub type_: GType,
2013    pub lock: *mut glib::GMutex,
2014    pub cookie: u32,
2015    pub master_cookie: *mut u32,
2016    pub size: c_uint,
2017    pub _gst_reserved: [gpointer; 4],
2018}
2019
2020impl ::std::fmt::Debug for GstIterator {
2021    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2022        f.debug_struct(&format!("GstIterator @ {self:p}"))
2023            .field("copy", &self.copy)
2024            .field("next", &self.next)
2025            .field("item", &self.item)
2026            .field("resync", &self.resync)
2027            .field("free", &self.free)
2028            .field("pushed", &self.pushed)
2029            .field("type_", &self.type_)
2030            .field("lock", &self.lock)
2031            .field("cookie", &self.cookie)
2032            .field("master_cookie", &self.master_cookie)
2033            .field("size", &self.size)
2034            .finish()
2035    }
2036}
2037
2038#[derive(Copy, Clone)]
2039#[repr(C)]
2040pub struct GstMapInfo {
2041    pub memory: *mut GstMemory,
2042    pub flags: GstMapFlags,
2043    pub data: *mut u8,
2044    pub size: size_t,
2045    pub maxsize: size_t,
2046    pub user_data: [gpointer; 4],
2047    pub _gst_reserved: [gpointer; 4],
2048}
2049
2050impl ::std::fmt::Debug for GstMapInfo {
2051    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2052        f.debug_struct(&format!("GstMapInfo @ {self:p}"))
2053            .field("memory", &self.memory)
2054            .field("flags", &self.flags)
2055            .field("data", &self.data)
2056            .field("size", &self.size)
2057            .field("maxsize", &self.maxsize)
2058            .field("user_data", &self.user_data)
2059            .finish()
2060    }
2061}
2062
2063#[derive(Copy, Clone)]
2064#[repr(C)]
2065pub struct GstMemory {
2066    pub mini_object: GstMiniObject,
2067    pub allocator: *mut GstAllocator,
2068    pub parent: *mut GstMemory,
2069    pub maxsize: size_t,
2070    pub align: size_t,
2071    pub offset: size_t,
2072    pub size: size_t,
2073}
2074
2075impl ::std::fmt::Debug for GstMemory {
2076    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2077        f.debug_struct(&format!("GstMemory @ {self:p}"))
2078            .field("mini_object", &self.mini_object)
2079            .field("allocator", &self.allocator)
2080            .field("parent", &self.parent)
2081            .field("maxsize", &self.maxsize)
2082            .field("align", &self.align)
2083            .field("offset", &self.offset)
2084            .field("size", &self.size)
2085            .finish()
2086    }
2087}
2088
2089#[derive(Copy, Clone)]
2090#[repr(C)]
2091pub struct GstMessage {
2092    pub mini_object: GstMiniObject,
2093    pub type_: GstMessageType,
2094    pub timestamp: u64,
2095    pub src: *mut GstObject,
2096    pub seqnum: u32,
2097    pub lock: glib::GMutex,
2098    pub cond: glib::GCond,
2099}
2100
2101impl ::std::fmt::Debug for GstMessage {
2102    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2103        f.debug_struct(&format!("GstMessage @ {self:p}"))
2104            .field("mini_object", &self.mini_object)
2105            .field("type_", &self.type_)
2106            .field("timestamp", &self.timestamp)
2107            .field("src", &self.src)
2108            .field("seqnum", &self.seqnum)
2109            .finish()
2110    }
2111}
2112
2113#[derive(Copy, Clone)]
2114#[repr(C)]
2115pub struct GstMeta {
2116    pub flags: GstMetaFlags,
2117    pub info: *const GstMetaInfo,
2118}
2119
2120impl ::std::fmt::Debug for GstMeta {
2121    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2122        f.debug_struct(&format!("GstMeta @ {self:p}"))
2123            .field("flags", &self.flags)
2124            .field("info", &self.info)
2125            .finish()
2126    }
2127}
2128
2129#[derive(Copy, Clone)]
2130#[repr(C)]
2131pub struct GstMetaInfo {
2132    pub api: GType,
2133    pub type_: GType,
2134    pub size: size_t,
2135    pub init_func: GstMetaInitFunction,
2136    pub free_func: GstMetaFreeFunction,
2137    pub transform_func: GstMetaTransformFunction,
2138    pub serialize_func: GstMetaSerializeFunction,
2139    pub deserialize_func: GstMetaDeserializeFunction,
2140    pub clear_func: GstMetaClearFunction,
2141}
2142
2143impl ::std::fmt::Debug for GstMetaInfo {
2144    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2145        f.debug_struct(&format!("GstMetaInfo @ {self:p}"))
2146            .field("api", &self.api)
2147            .field("type_", &self.type_)
2148            .field("size", &self.size)
2149            .field("init_func", &self.init_func)
2150            .field("free_func", &self.free_func)
2151            .field("transform_func", &self.transform_func)
2152            .field("serialize_func", &self.serialize_func)
2153            .field("deserialize_func", &self.deserialize_func)
2154            .field("clear_func", &self.clear_func)
2155            .finish()
2156    }
2157}
2158
2159#[derive(Copy, Clone)]
2160#[repr(C)]
2161pub struct GstMetaTransformCopy {
2162    pub region: gboolean,
2163    pub offset: size_t,
2164    pub size: size_t,
2165}
2166
2167impl ::std::fmt::Debug for GstMetaTransformCopy {
2168    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2169        f.debug_struct(&format!("GstMetaTransformCopy @ {self:p}"))
2170            .field("region", &self.region)
2171            .field("offset", &self.offset)
2172            .field("size", &self.size)
2173            .finish()
2174    }
2175}
2176
2177#[derive(Copy, Clone)]
2178#[repr(C)]
2179pub struct GstMiniObject {
2180    pub type_: GType,
2181    pub refcount: c_int,
2182    pub lockstate: c_int,
2183    pub flags: c_uint,
2184    pub copy: GstMiniObjectCopyFunction,
2185    pub dispose: GstMiniObjectDisposeFunction,
2186    pub free: GstMiniObjectFreeFunction,
2187    pub priv_uint: c_uint,
2188    pub priv_pointer: gpointer,
2189}
2190
2191impl ::std::fmt::Debug for GstMiniObject {
2192    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2193        f.debug_struct(&format!("GstMiniObject @ {self:p}"))
2194            .field("type_", &self.type_)
2195            .field("refcount", &self.refcount)
2196            .field("lockstate", &self.lockstate)
2197            .field("flags", &self.flags)
2198            .field("copy", &self.copy)
2199            .field("dispose", &self.dispose)
2200            .field("free", &self.free)
2201            .finish()
2202    }
2203}
2204
2205#[derive(Copy, Clone)]
2206#[repr(C)]
2207pub struct GstObjectClass {
2208    pub parent_class: gobject::GInitiallyUnownedClass,
2209    pub path_string_separator: *const c_char,
2210    pub deep_notify:
2211        Option<unsafe extern "C" fn(*mut GstObject, *mut GstObject, *mut gobject::GParamSpec)>,
2212    pub _gst_reserved: [gpointer; 4],
2213}
2214
2215impl ::std::fmt::Debug for GstObjectClass {
2216    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2217        f.debug_struct(&format!("GstObjectClass @ {self:p}"))
2218            .field("parent_class", &self.parent_class)
2219            .field("path_string_separator", &self.path_string_separator)
2220            .field("deep_notify", &self.deep_notify)
2221            .finish()
2222    }
2223}
2224
2225#[derive(Copy, Clone)]
2226#[repr(C)]
2227pub struct GstPadClass {
2228    pub parent_class: GstObjectClass,
2229    pub linked: Option<unsafe extern "C" fn(*mut GstPad, *mut GstPad)>,
2230    pub unlinked: Option<unsafe extern "C" fn(*mut GstPad, *mut GstPad)>,
2231    pub _gst_reserved: [gpointer; 4],
2232}
2233
2234impl ::std::fmt::Debug for GstPadClass {
2235    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2236        f.debug_struct(&format!("GstPadClass @ {self:p}"))
2237            .field("parent_class", &self.parent_class)
2238            .field("linked", &self.linked)
2239            .field("unlinked", &self.unlinked)
2240            .finish()
2241    }
2242}
2243
2244#[repr(C)]
2245#[allow(dead_code)]
2246pub struct _GstPadPrivate {
2247    _data: [u8; 0],
2248    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2249}
2250
2251pub type GstPadPrivate = _GstPadPrivate;
2252
2253#[derive(Copy, Clone)]
2254#[repr(C)]
2255pub struct GstPadProbeInfo {
2256    pub type_: GstPadProbeType,
2257    pub id: c_ulong,
2258    pub data: gpointer,
2259    pub offset: u64,
2260    pub size: c_uint,
2261    pub ABI: GstPadProbeInfo_ABI,
2262}
2263
2264impl ::std::fmt::Debug for GstPadProbeInfo {
2265    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2266        f.debug_struct(&format!("GstPadProbeInfo @ {self:p}"))
2267            .field("type_", &self.type_)
2268            .field("id", &self.id)
2269            .field("data", &self.data)
2270            .field("offset", &self.offset)
2271            .field("size", &self.size)
2272            .field("ABI", &self.ABI)
2273            .finish()
2274    }
2275}
2276
2277#[derive(Copy, Clone)]
2278#[repr(C)]
2279pub struct GstPadProbeInfo_ABI_abi {
2280    pub flow_ret: GstFlowReturn,
2281}
2282
2283impl ::std::fmt::Debug for GstPadProbeInfo_ABI_abi {
2284    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2285        f.debug_struct(&format!("GstPadProbeInfo_ABI_abi @ {self:p}"))
2286            .field("flow_ret", &self.flow_ret)
2287            .finish()
2288    }
2289}
2290
2291#[derive(Copy, Clone)]
2292#[repr(C)]
2293pub struct GstPadTemplateClass {
2294    pub parent_class: GstObjectClass,
2295    pub pad_created: Option<unsafe extern "C" fn(*mut GstPadTemplate, *mut GstPad)>,
2296    pub _gst_reserved: [gpointer; 4],
2297}
2298
2299impl ::std::fmt::Debug for GstPadTemplateClass {
2300    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2301        f.debug_struct(&format!("GstPadTemplateClass @ {self:p}"))
2302            .field("parent_class", &self.parent_class)
2303            .field("pad_created", &self.pad_created)
2304            .finish()
2305    }
2306}
2307
2308#[derive(Copy, Clone)]
2309#[repr(C)]
2310pub struct GstPadTemplate_ABI_abi {
2311    pub gtype: GType,
2312    pub documentation_caps: *mut GstCaps,
2313}
2314
2315impl ::std::fmt::Debug for GstPadTemplate_ABI_abi {
2316    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2317        f.debug_struct(&format!("GstPadTemplate_ABI_abi @ {self:p}"))
2318            .field("gtype", &self.gtype)
2319            .field("documentation_caps", &self.documentation_caps)
2320            .finish()
2321    }
2322}
2323
2324#[derive(Copy, Clone)]
2325#[repr(C)]
2326pub struct GstPad_ABI_abi {
2327    pub last_flowret: GstFlowReturn,
2328    pub eventfullfunc: GstPadEventFullFunction,
2329}
2330
2331impl ::std::fmt::Debug for GstPad_ABI_abi {
2332    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2333        f.debug_struct(&format!("GstPad_ABI_abi @ {self:p}"))
2334            .field("last_flowret", &self.last_flowret)
2335            .field("eventfullfunc", &self.eventfullfunc)
2336            .finish()
2337    }
2338}
2339
2340#[derive(Copy, Clone)]
2341#[repr(C)]
2342pub struct GstParamSpecArray {
2343    pub parent_instance: gobject::GParamSpec,
2344    pub element_spec: *mut gobject::GParamSpec,
2345}
2346
2347impl ::std::fmt::Debug for GstParamSpecArray {
2348    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2349        f.debug_struct(&format!("GstParamSpecArray @ {self:p}"))
2350            .field("parent_instance", &self.parent_instance)
2351            .field("element_spec", &self.element_spec)
2352            .finish()
2353    }
2354}
2355
2356#[derive(Copy, Clone)]
2357#[repr(C)]
2358pub struct GstParamSpecFraction {
2359    pub parent_instance: gobject::GParamSpec,
2360    pub min_num: c_int,
2361    pub min_den: c_int,
2362    pub max_num: c_int,
2363    pub max_den: c_int,
2364    pub def_num: c_int,
2365    pub def_den: c_int,
2366}
2367
2368impl ::std::fmt::Debug for GstParamSpecFraction {
2369    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2370        f.debug_struct(&format!("GstParamSpecFraction @ {self:p}"))
2371            .field("parent_instance", &self.parent_instance)
2372            .field("min_num", &self.min_num)
2373            .field("min_den", &self.min_den)
2374            .field("max_num", &self.max_num)
2375            .field("max_den", &self.max_den)
2376            .field("def_num", &self.def_num)
2377            .field("def_den", &self.def_den)
2378            .finish()
2379    }
2380}
2381
2382#[derive(Copy, Clone)]
2383#[repr(C)]
2384pub struct GstParentBufferMeta {
2385    pub parent: GstMeta,
2386    pub buffer: *mut GstBuffer,
2387}
2388
2389impl ::std::fmt::Debug for GstParentBufferMeta {
2390    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2391        f.debug_struct(&format!("GstParentBufferMeta @ {self:p}"))
2392            .field("parent", &self.parent)
2393            .field("buffer", &self.buffer)
2394            .finish()
2395    }
2396}
2397
2398#[repr(C)]
2399#[allow(dead_code)]
2400pub struct GstParseContext {
2401    _data: [u8; 0],
2402    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2403}
2404
2405impl ::std::fmt::Debug for GstParseContext {
2406    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2407        f.debug_struct(&format!("GstParseContext @ {self:p}"))
2408            .finish()
2409    }
2410}
2411
2412#[derive(Copy, Clone)]
2413#[repr(C)]
2414pub struct GstPipelineClass {
2415    pub parent_class: GstBinClass,
2416    pub _gst_reserved: [gpointer; 4],
2417}
2418
2419impl ::std::fmt::Debug for GstPipelineClass {
2420    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2421        f.debug_struct(&format!("GstPipelineClass @ {self:p}"))
2422            .field("parent_class", &self.parent_class)
2423            .finish()
2424    }
2425}
2426
2427#[repr(C)]
2428#[allow(dead_code)]
2429pub struct _GstPipelinePrivate {
2430    _data: [u8; 0],
2431    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2432}
2433
2434pub type GstPipelinePrivate = _GstPipelinePrivate;
2435
2436#[repr(C)]
2437#[allow(dead_code)]
2438pub struct _GstPluginClass {
2439    _data: [u8; 0],
2440    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2441}
2442
2443pub type GstPluginClass = _GstPluginClass;
2444
2445#[derive(Copy, Clone)]
2446#[repr(C)]
2447pub struct GstPluginDesc {
2448    pub major_version: c_int,
2449    pub minor_version: c_int,
2450    pub name: *const c_char,
2451    pub description: *const c_char,
2452    pub plugin_init: GstPluginInitFunc,
2453    pub version: *const c_char,
2454    pub license: *const c_char,
2455    pub source: *const c_char,
2456    pub package: *const c_char,
2457    pub origin: *const c_char,
2458    pub release_datetime: *const c_char,
2459    pub _gst_reserved: [gpointer; 4],
2460}
2461
2462impl ::std::fmt::Debug for GstPluginDesc {
2463    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2464        f.debug_struct(&format!("GstPluginDesc @ {self:p}"))
2465            .field("major_version", &self.major_version)
2466            .field("minor_version", &self.minor_version)
2467            .field("name", &self.name)
2468            .field("description", &self.description)
2469            .field("plugin_init", &self.plugin_init)
2470            .field("version", &self.version)
2471            .field("license", &self.license)
2472            .field("source", &self.source)
2473            .field("package", &self.package)
2474            .field("origin", &self.origin)
2475            .field("release_datetime", &self.release_datetime)
2476            .finish()
2477    }
2478}
2479
2480#[repr(C)]
2481#[allow(dead_code)]
2482pub struct _GstPluginFeatureClass {
2483    _data: [u8; 0],
2484    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2485}
2486
2487pub type GstPluginFeatureClass = _GstPluginFeatureClass;
2488
2489#[repr(C)]
2490#[allow(dead_code)]
2491pub struct _GstPoll {
2492    _data: [u8; 0],
2493    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2494}
2495
2496pub type GstPoll = _GstPoll;
2497
2498#[derive(Copy, Clone)]
2499#[repr(C)]
2500pub struct GstPollFD {
2501    pub fd: c_int,
2502    pub idx: c_int,
2503}
2504
2505impl ::std::fmt::Debug for GstPollFD {
2506    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2507        f.debug_struct(&format!("GstPollFD @ {self:p}"))
2508            .field("fd", &self.fd)
2509            .finish()
2510    }
2511}
2512
2513#[derive(Copy, Clone)]
2514#[repr(C)]
2515pub struct GstPresetInterface {
2516    pub parent: gobject::GTypeInterface,
2517    pub get_preset_names: Option<unsafe extern "C" fn(*mut GstPreset) -> *mut *mut c_char>,
2518    pub get_property_names: Option<unsafe extern "C" fn(*mut GstPreset) -> *mut *mut c_char>,
2519    pub load_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2520    pub save_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2521    pub rename_preset:
2522        Option<unsafe extern "C" fn(*mut GstPreset, *const c_char, *const c_char) -> gboolean>,
2523    pub delete_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2524    pub set_meta: Option<
2525        unsafe extern "C" fn(
2526            *mut GstPreset,
2527            *const c_char,
2528            *const c_char,
2529            *mut *mut c_char,
2530        ) -> gboolean,
2531    >,
2532    pub get_meta: Option<
2533        unsafe extern "C" fn(
2534            *mut GstPreset,
2535            *const c_char,
2536            *const c_char,
2537            *mut *mut c_char,
2538        ) -> gboolean,
2539    >,
2540    pub _gst_reserved: [gpointer; 4],
2541}
2542
2543impl ::std::fmt::Debug for GstPresetInterface {
2544    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2545        f.debug_struct(&format!("GstPresetInterface @ {self:p}"))
2546            .field("parent", &self.parent)
2547            .field("get_preset_names", &self.get_preset_names)
2548            .field("get_property_names", &self.get_property_names)
2549            .field("load_preset", &self.load_preset)
2550            .field("save_preset", &self.save_preset)
2551            .field("rename_preset", &self.rename_preset)
2552            .field("delete_preset", &self.delete_preset)
2553            .field("set_meta", &self.set_meta)
2554            .field("get_meta", &self.get_meta)
2555            .finish()
2556    }
2557}
2558
2559#[derive(Copy, Clone)]
2560#[repr(C)]
2561pub struct GstPromise {
2562    pub parent: GstMiniObject,
2563}
2564
2565impl ::std::fmt::Debug for GstPromise {
2566    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2567        f.debug_struct(&format!("GstPromise @ {self:p}"))
2568            .field("parent", &self.parent)
2569            .finish()
2570    }
2571}
2572
2573#[derive(Copy, Clone)]
2574#[repr(C)]
2575pub struct GstProtectionMeta {
2576    pub meta: GstMeta,
2577    pub info: *mut GstStructure,
2578}
2579
2580impl ::std::fmt::Debug for GstProtectionMeta {
2581    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2582        f.debug_struct(&format!("GstProtectionMeta @ {self:p}"))
2583            .field("meta", &self.meta)
2584            .field("info", &self.info)
2585            .finish()
2586    }
2587}
2588
2589#[derive(Copy, Clone)]
2590#[repr(C)]
2591pub struct GstProxyPadClass {
2592    pub parent_class: GstPadClass,
2593    pub _gst_reserved: [gpointer; 1],
2594}
2595
2596impl ::std::fmt::Debug for GstProxyPadClass {
2597    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2598        f.debug_struct(&format!("GstProxyPadClass @ {self:p}"))
2599            .field("parent_class", &self.parent_class)
2600            .finish()
2601    }
2602}
2603
2604#[repr(C)]
2605#[allow(dead_code)]
2606pub struct _GstProxyPadPrivate {
2607    _data: [u8; 0],
2608    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2609}
2610
2611pub type GstProxyPadPrivate = _GstProxyPadPrivate;
2612
2613#[derive(Copy, Clone)]
2614#[repr(C)]
2615pub struct GstQuery {
2616    pub mini_object: GstMiniObject,
2617    pub type_: GstQueryType,
2618}
2619
2620impl ::std::fmt::Debug for GstQuery {
2621    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2622        f.debug_struct(&format!("GstQuery @ {self:p}"))
2623            .field("mini_object", &self.mini_object)
2624            .field("type_", &self.type_)
2625            .finish()
2626    }
2627}
2628
2629#[derive(Copy, Clone)]
2630#[repr(C)]
2631pub struct GstReferenceTimestampMeta {
2632    pub parent: GstMeta,
2633    pub reference: *mut GstCaps,
2634    pub timestamp: GstClockTime,
2635    pub duration: GstClockTime,
2636}
2637
2638impl ::std::fmt::Debug for GstReferenceTimestampMeta {
2639    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2640        f.debug_struct(&format!("GstReferenceTimestampMeta @ {self:p}"))
2641            .field("parent", &self.parent)
2642            .field("reference", &self.reference)
2643            .field("timestamp", &self.timestamp)
2644            .field("duration", &self.duration)
2645            .finish()
2646    }
2647}
2648
2649#[derive(Copy, Clone)]
2650#[repr(C)]
2651pub struct GstRegistryClass {
2652    pub parent_class: GstObjectClass,
2653}
2654
2655impl ::std::fmt::Debug for GstRegistryClass {
2656    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2657        f.debug_struct(&format!("GstRegistryClass @ {self:p}"))
2658            .field("parent_class", &self.parent_class)
2659            .finish()
2660    }
2661}
2662
2663#[repr(C)]
2664#[allow(dead_code)]
2665pub struct _GstRegistryPrivate {
2666    _data: [u8; 0],
2667    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2668}
2669
2670pub type GstRegistryPrivate = _GstRegistryPrivate;
2671
2672#[repr(C)]
2673#[allow(dead_code)]
2674pub struct GstSample {
2675    _data: [u8; 0],
2676    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2677}
2678
2679impl ::std::fmt::Debug for GstSample {
2680    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2681        f.debug_struct(&format!("GstSample @ {self:p}")).finish()
2682    }
2683}
2684
2685#[derive(Copy, Clone)]
2686#[repr(C)]
2687pub struct GstSegment {
2688    pub flags: GstSegmentFlags,
2689    pub rate: c_double,
2690    pub applied_rate: c_double,
2691    pub format: GstFormat,
2692    pub base: u64,
2693    pub offset: u64,
2694    pub start: u64,
2695    pub stop: u64,
2696    pub time: u64,
2697    pub position: u64,
2698    pub duration: u64,
2699    pub _gst_reserved: [gpointer; 4],
2700}
2701
2702impl ::std::fmt::Debug for GstSegment {
2703    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2704        f.debug_struct(&format!("GstSegment @ {self:p}"))
2705            .field("flags", &self.flags)
2706            .field("rate", &self.rate)
2707            .field("applied_rate", &self.applied_rate)
2708            .field("format", &self.format)
2709            .field("base", &self.base)
2710            .field("offset", &self.offset)
2711            .field("start", &self.start)
2712            .field("stop", &self.stop)
2713            .field("time", &self.time)
2714            .field("position", &self.position)
2715            .field("duration", &self.duration)
2716            .finish()
2717    }
2718}
2719
2720#[derive(Copy, Clone)]
2721#[repr(C)]
2722pub struct GstSharedTaskPoolClass {
2723    pub parent_class: GstTaskPoolClass,
2724    pub _gst_reserved: [gpointer; 4],
2725}
2726
2727impl ::std::fmt::Debug for GstSharedTaskPoolClass {
2728    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2729        f.debug_struct(&format!("GstSharedTaskPoolClass @ {self:p}"))
2730            .field("parent_class", &self.parent_class)
2731            .finish()
2732    }
2733}
2734
2735#[repr(C)]
2736#[allow(dead_code)]
2737pub struct _GstSharedTaskPoolPrivate {
2738    _data: [u8; 0],
2739    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2740}
2741
2742pub type GstSharedTaskPoolPrivate = _GstSharedTaskPoolPrivate;
2743
2744#[derive(Copy, Clone)]
2745#[repr(C)]
2746pub struct GstStaticCaps {
2747    pub caps: *mut GstCaps,
2748    pub string: *const c_char,
2749    pub _gst_reserved: [gpointer; 4],
2750}
2751
2752impl ::std::fmt::Debug for GstStaticCaps {
2753    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2754        f.debug_struct(&format!("GstStaticCaps @ {self:p}"))
2755            .field("caps", &self.caps)
2756            .field("string", &self.string)
2757            .finish()
2758    }
2759}
2760
2761#[derive(Copy, Clone)]
2762#[repr(C)]
2763pub struct GstStaticPadTemplate {
2764    pub name_template: *const c_char,
2765    pub direction: GstPadDirection,
2766    pub presence: GstPadPresence,
2767    pub static_caps: GstStaticCaps,
2768}
2769
2770impl ::std::fmt::Debug for GstStaticPadTemplate {
2771    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2772        f.debug_struct(&format!("GstStaticPadTemplate @ {self:p}"))
2773            .field("name_template", &self.name_template)
2774            .field("direction", &self.direction)
2775            .field("presence", &self.presence)
2776            .field("static_caps", &self.static_caps)
2777            .finish()
2778    }
2779}
2780
2781#[derive(Copy, Clone)]
2782#[repr(C)]
2783pub struct GstStreamClass {
2784    pub parent_class: GstObjectClass,
2785    pub _gst_reserved: [gpointer; 4],
2786}
2787
2788impl ::std::fmt::Debug for GstStreamClass {
2789    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2790        f.debug_struct(&format!("GstStreamClass @ {self:p}"))
2791            .field("parent_class", &self.parent_class)
2792            .finish()
2793    }
2794}
2795
2796#[derive(Copy, Clone)]
2797#[repr(C)]
2798pub struct GstStreamCollectionClass {
2799    pub parent_class: GstObjectClass,
2800    pub stream_notify: Option<
2801        unsafe extern "C" fn(*mut GstStreamCollection, *mut GstStream, *mut gobject::GParamSpec),
2802    >,
2803    pub _gst_reserved: [gpointer; 4],
2804}
2805
2806impl ::std::fmt::Debug for GstStreamCollectionClass {
2807    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2808        f.debug_struct(&format!("GstStreamCollectionClass @ {self:p}"))
2809            .field("parent_class", &self.parent_class)
2810            .field("stream_notify", &self.stream_notify)
2811            .finish()
2812    }
2813}
2814
2815#[repr(C)]
2816#[allow(dead_code)]
2817pub struct _GstStreamCollectionPrivate {
2818    _data: [u8; 0],
2819    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2820}
2821
2822pub type GstStreamCollectionPrivate = _GstStreamCollectionPrivate;
2823
2824#[repr(C)]
2825#[allow(dead_code)]
2826pub struct _GstStreamPrivate {
2827    _data: [u8; 0],
2828    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2829}
2830
2831pub type GstStreamPrivate = _GstStreamPrivate;
2832
2833#[derive(Copy, Clone)]
2834#[repr(C)]
2835pub struct GstStructure {
2836    pub type_: GType,
2837    pub name: glib::GQuark,
2838}
2839
2840impl ::std::fmt::Debug for GstStructure {
2841    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2842        f.debug_struct(&format!("GstStructure @ {self:p}"))
2843            .field("type_", &self.type_)
2844            .finish()
2845    }
2846}
2847
2848#[derive(Copy, Clone)]
2849#[repr(C)]
2850pub struct GstSystemClockClass {
2851    pub parent_class: GstClockClass,
2852    pub _gst_reserved: [gpointer; 4],
2853}
2854
2855impl ::std::fmt::Debug for GstSystemClockClass {
2856    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2857        f.debug_struct(&format!("GstSystemClockClass @ {self:p}"))
2858            .field("parent_class", &self.parent_class)
2859            .finish()
2860    }
2861}
2862
2863#[repr(C)]
2864#[allow(dead_code)]
2865pub struct _GstSystemClockPrivate {
2866    _data: [u8; 0],
2867    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2868}
2869
2870pub type GstSystemClockPrivate = _GstSystemClockPrivate;
2871
2872#[derive(Copy, Clone)]
2873#[repr(C)]
2874pub struct GstTagList {
2875    pub mini_object: GstMiniObject,
2876}
2877
2878impl ::std::fmt::Debug for GstTagList {
2879    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2880        f.debug_struct(&format!("GstTagList @ {self:p}"))
2881            .field("mini_object", &self.mini_object)
2882            .finish()
2883    }
2884}
2885
2886#[derive(Copy, Clone)]
2887#[repr(C)]
2888pub struct GstTagSetterInterface {
2889    pub g_iface: gobject::GTypeInterface,
2890}
2891
2892impl ::std::fmt::Debug for GstTagSetterInterface {
2893    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2894        f.debug_struct(&format!("GstTagSetterInterface @ {self:p}"))
2895            .field("g_iface", &self.g_iface)
2896            .finish()
2897    }
2898}
2899
2900#[derive(Copy, Clone)]
2901#[repr(C)]
2902pub struct GstTaskClass {
2903    pub parent_class: GstObjectClass,
2904    pub pool: *mut GstTaskPool,
2905    pub _gst_reserved: [gpointer; 4],
2906}
2907
2908impl ::std::fmt::Debug for GstTaskClass {
2909    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2910        f.debug_struct(&format!("GstTaskClass @ {self:p}"))
2911            .field("parent_class", &self.parent_class)
2912            .finish()
2913    }
2914}
2915
2916#[derive(Copy, Clone)]
2917#[repr(C)]
2918pub struct GstTaskPoolClass {
2919    pub parent_class: GstObjectClass,
2920    pub prepare: Option<unsafe extern "C" fn(*mut GstTaskPool, *mut *mut glib::GError)>,
2921    pub cleanup: Option<unsafe extern "C" fn(*mut GstTaskPool)>,
2922    pub push: Option<
2923        unsafe extern "C" fn(
2924            *mut GstTaskPool,
2925            GstTaskPoolFunction,
2926            gpointer,
2927            *mut *mut glib::GError,
2928        ) -> gpointer,
2929    >,
2930    pub join: Option<unsafe extern "C" fn(*mut GstTaskPool, gpointer)>,
2931    pub dispose_handle: Option<unsafe extern "C" fn(*mut GstTaskPool, gpointer)>,
2932    pub _gst_reserved: [gpointer; 3],
2933}
2934
2935impl ::std::fmt::Debug for GstTaskPoolClass {
2936    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2937        f.debug_struct(&format!("GstTaskPoolClass @ {self:p}"))
2938            .field("parent_class", &self.parent_class)
2939            .field("prepare", &self.prepare)
2940            .field("cleanup", &self.cleanup)
2941            .field("push", &self.push)
2942            .field("join", &self.join)
2943            .field("dispose_handle", &self.dispose_handle)
2944            .finish()
2945    }
2946}
2947
2948#[repr(C)]
2949#[allow(dead_code)]
2950pub struct _GstTaskPrivate {
2951    _data: [u8; 0],
2952    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2953}
2954
2955pub type GstTaskPrivate = _GstTaskPrivate;
2956
2957#[derive(Copy, Clone)]
2958#[repr(C)]
2959pub struct GstTimedValue {
2960    pub timestamp: GstClockTime,
2961    pub value: c_double,
2962}
2963
2964impl ::std::fmt::Debug for GstTimedValue {
2965    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2966        f.debug_struct(&format!("GstTimedValue @ {self:p}"))
2967            .field("timestamp", &self.timestamp)
2968            .field("value", &self.value)
2969            .finish()
2970    }
2971}
2972
2973#[repr(C)]
2974#[allow(dead_code)]
2975pub struct GstToc {
2976    _data: [u8; 0],
2977    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2978}
2979
2980impl ::std::fmt::Debug for GstToc {
2981    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2982        f.debug_struct(&format!("GstToc @ {self:p}")).finish()
2983    }
2984}
2985
2986#[repr(C)]
2987#[allow(dead_code)]
2988pub struct GstTocEntry {
2989    _data: [u8; 0],
2990    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2991}
2992
2993impl ::std::fmt::Debug for GstTocEntry {
2994    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2995        f.debug_struct(&format!("GstTocEntry @ {self:p}")).finish()
2996    }
2997}
2998
2999#[derive(Copy, Clone)]
3000#[repr(C)]
3001pub struct GstTocSetterInterface {
3002    pub g_iface: gobject::GTypeInterface,
3003}
3004
3005impl ::std::fmt::Debug for GstTocSetterInterface {
3006    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3007        f.debug_struct(&format!("GstTocSetterInterface @ {self:p}"))
3008            .field("g_iface", &self.g_iface)
3009            .finish()
3010    }
3011}
3012
3013#[derive(Copy, Clone)]
3014#[repr(C)]
3015pub struct GstTracerClass {
3016    pub parent_class: GstObjectClass,
3017    pub _gst_reserved: [gpointer; 4],
3018}
3019
3020impl ::std::fmt::Debug for GstTracerClass {
3021    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3022        f.debug_struct(&format!("GstTracerClass @ {self:p}"))
3023            .field("parent_class", &self.parent_class)
3024            .finish()
3025    }
3026}
3027
3028#[repr(C)]
3029#[allow(dead_code)]
3030pub struct _GstTracerFactoryClass {
3031    _data: [u8; 0],
3032    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3033}
3034
3035pub type GstTracerFactoryClass = _GstTracerFactoryClass;
3036
3037#[repr(C)]
3038#[allow(dead_code)]
3039pub struct _GstTracerPrivate {
3040    _data: [u8; 0],
3041    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3042}
3043
3044pub type GstTracerPrivate = _GstTracerPrivate;
3045
3046#[repr(C)]
3047#[allow(dead_code)]
3048pub struct _GstTracerRecordClass {
3049    _data: [u8; 0],
3050    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3051}
3052
3053pub type GstTracerRecordClass = _GstTracerRecordClass;
3054
3055#[derive(Copy, Clone)]
3056#[repr(C)]
3057pub struct GstTypeFind {
3058    pub peek: Option<unsafe extern "C" fn(gpointer, i64, c_uint) -> *const u8>,
3059    pub suggest: Option<unsafe extern "C" fn(gpointer, c_uint, *mut GstCaps)>,
3060    pub data: gpointer,
3061    pub get_length: Option<unsafe extern "C" fn(gpointer) -> u64>,
3062    pub _gst_reserved: [gpointer; 4],
3063}
3064
3065impl ::std::fmt::Debug for GstTypeFind {
3066    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3067        f.debug_struct(&format!("GstTypeFind @ {self:p}"))
3068            .field("peek", &self.peek)
3069            .field("suggest", &self.suggest)
3070            .field("data", &self.data)
3071            .field("get_length", &self.get_length)
3072            .finish()
3073    }
3074}
3075
3076#[repr(C)]
3077#[allow(dead_code)]
3078pub struct _GstTypeFindFactoryClass {
3079    _data: [u8; 0],
3080    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3081}
3082
3083pub type GstTypeFindFactoryClass = _GstTypeFindFactoryClass;
3084
3085#[derive(Copy, Clone)]
3086#[repr(C)]
3087pub struct GstURIHandlerInterface {
3088    pub parent: gobject::GTypeInterface,
3089    pub get_type: Option<unsafe extern "C" fn(GType) -> GstURIType>,
3090    pub get_protocols: Option<unsafe extern "C" fn(GType) -> *const *const c_char>,
3091    pub get_uri: Option<unsafe extern "C" fn(*mut GstURIHandler) -> *mut c_char>,
3092    pub set_uri: Option<
3093        unsafe extern "C" fn(*mut GstURIHandler, *const c_char, *mut *mut glib::GError) -> gboolean,
3094    >,
3095}
3096
3097impl ::std::fmt::Debug for GstURIHandlerInterface {
3098    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3099        f.debug_struct(&format!("GstURIHandlerInterface @ {self:p}"))
3100            .field("parent", &self.parent)
3101            .field("get_type", &self.get_type)
3102            .field("get_protocols", &self.get_protocols)
3103            .field("get_uri", &self.get_uri)
3104            .field("set_uri", &self.set_uri)
3105            .finish()
3106    }
3107}
3108
3109#[repr(C)]
3110#[allow(dead_code)]
3111pub struct GstUri {
3112    _data: [u8; 0],
3113    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3114}
3115
3116impl ::std::fmt::Debug for GstUri {
3117    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3118        f.debug_struct(&format!("GstUri @ {self:p}")).finish()
3119    }
3120}
3121
3122#[derive(Copy, Clone)]
3123#[repr(C)]
3124pub struct GstValueTable {
3125    pub type_: GType,
3126    pub compare: GstValueCompareFunc,
3127    pub serialize: GstValueSerializeFunc,
3128    pub deserialize: GstValueDeserializeFunc,
3129    pub deserialize_with_pspec: GstValueDeserializeWithPSpecFunc,
3130    pub hash: GstValueHashFunc,
3131    pub _gst_reserved: [gpointer; 2],
3132}
3133
3134impl ::std::fmt::Debug for GstValueTable {
3135    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3136        f.debug_struct(&format!("GstValueTable @ {self:p}"))
3137            .field("type_", &self.type_)
3138            .field("compare", &self.compare)
3139            .field("serialize", &self.serialize)
3140            .field("deserialize", &self.deserialize)
3141            .field("deserialize_with_pspec", &self.deserialize_with_pspec)
3142            .field("hash", &self.hash)
3143            .finish()
3144    }
3145}
3146
3147#[repr(C)]
3148#[allow(dead_code)]
3149pub struct _GstVecDeque {
3150    _data: [u8; 0],
3151    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3152}
3153
3154pub type GstVecDeque = _GstVecDeque;
3155
3156// Classes
3157#[derive(Copy, Clone)]
3158#[repr(C)]
3159pub struct GstAllocator {
3160    pub object: GstObject,
3161    pub mem_type: *const c_char,
3162    pub mem_map: GstMemoryMapFunction,
3163    pub mem_unmap: GstMemoryUnmapFunction,
3164    pub mem_copy: GstMemoryCopyFunction,
3165    pub mem_share: GstMemoryShareFunction,
3166    pub mem_is_span: GstMemoryIsSpanFunction,
3167    pub mem_map_full: GstMemoryMapFullFunction,
3168    pub mem_unmap_full: GstMemoryUnmapFullFunction,
3169    pub _gst_reserved: [gpointer; 2],
3170    pub priv_: *mut GstAllocatorPrivate,
3171}
3172
3173impl ::std::fmt::Debug for GstAllocator {
3174    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3175        f.debug_struct(&format!("GstAllocator @ {self:p}"))
3176            .field("object", &self.object)
3177            .field("mem_type", &self.mem_type)
3178            .field("mem_map", &self.mem_map)
3179            .field("mem_unmap", &self.mem_unmap)
3180            .field("mem_copy", &self.mem_copy)
3181            .field("mem_share", &self.mem_share)
3182            .field("mem_is_span", &self.mem_is_span)
3183            .field("mem_map_full", &self.mem_map_full)
3184            .field("mem_unmap_full", &self.mem_unmap_full)
3185            .finish()
3186    }
3187}
3188
3189#[derive(Copy, Clone)]
3190#[repr(C)]
3191pub struct GstBin {
3192    pub element: GstElement,
3193    pub numchildren: c_int,
3194    pub children: *mut glib::GList,
3195    pub children_cookie: u32,
3196    pub child_bus: *mut GstBus,
3197    pub messages: *mut glib::GList,
3198    pub polling: gboolean,
3199    pub state_dirty: gboolean,
3200    pub clock_dirty: gboolean,
3201    pub provided_clock: *mut GstClock,
3202    pub clock_provider: *mut GstElement,
3203    pub priv_: *mut GstBinPrivate,
3204    pub _gst_reserved: [gpointer; 4],
3205}
3206
3207impl ::std::fmt::Debug for GstBin {
3208    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3209        f.debug_struct(&format!("GstBin @ {self:p}"))
3210            .field("element", &self.element)
3211            .field("numchildren", &self.numchildren)
3212            .field("children", &self.children)
3213            .field("children_cookie", &self.children_cookie)
3214            .field("child_bus", &self.child_bus)
3215            .field("messages", &self.messages)
3216            .field("polling", &self.polling)
3217            .field("state_dirty", &self.state_dirty)
3218            .field("clock_dirty", &self.clock_dirty)
3219            .field("provided_clock", &self.provided_clock)
3220            .field("clock_provider", &self.clock_provider)
3221            .finish()
3222    }
3223}
3224
3225#[repr(C)]
3226#[allow(dead_code)]
3227pub struct GstBitmask {
3228    _data: [u8; 0],
3229    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3230}
3231
3232impl ::std::fmt::Debug for GstBitmask {
3233    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3234        f.debug_struct(&format!("GstBitmask @ {self:p}")).finish()
3235    }
3236}
3237
3238#[derive(Copy, Clone)]
3239#[repr(C)]
3240pub struct GstBufferPool {
3241    pub object: GstObject,
3242    pub flushing: c_int,
3243    pub priv_: *mut GstBufferPoolPrivate,
3244    pub _gst_reserved: [gpointer; 4],
3245}
3246
3247impl ::std::fmt::Debug for GstBufferPool {
3248    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3249        f.debug_struct(&format!("GstBufferPool @ {self:p}"))
3250            .field("object", &self.object)
3251            .field("flushing", &self.flushing)
3252            .finish()
3253    }
3254}
3255
3256#[derive(Copy, Clone)]
3257#[repr(C)]
3258pub struct GstBus {
3259    pub object: GstObject,
3260    pub priv_: *mut GstBusPrivate,
3261    pub _gst_reserved: [gpointer; 4],
3262}
3263
3264impl ::std::fmt::Debug for GstBus {
3265    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3266        f.debug_struct(&format!("GstBus @ {self:p}"))
3267            .field("object", &self.object)
3268            .finish()
3269    }
3270}
3271
3272#[derive(Copy, Clone)]
3273#[repr(C)]
3274pub struct GstClock {
3275    pub object: GstObject,
3276    pub priv_: *mut GstClockPrivate,
3277    pub _gst_reserved: [gpointer; 4],
3278}
3279
3280impl ::std::fmt::Debug for GstClock {
3281    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3282        f.debug_struct(&format!("GstClock @ {self:p}"))
3283            .field("object", &self.object)
3284            .finish()
3285    }
3286}
3287
3288#[derive(Copy, Clone)]
3289#[repr(C)]
3290pub struct GstControlBinding {
3291    pub parent: GstObject,
3292    pub name: *mut c_char,
3293    pub pspec: *mut gobject::GParamSpec,
3294    pub object: *mut GstObject,
3295    pub disabled: gboolean,
3296    pub ABI: GstControlBinding_ABI,
3297}
3298
3299impl ::std::fmt::Debug for GstControlBinding {
3300    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3301        f.debug_struct(&format!("GstControlBinding @ {self:p}"))
3302            .field("parent", &self.parent)
3303            .field("name", &self.name)
3304            .field("pspec", &self.pspec)
3305            .field("ABI", &self.ABI)
3306            .finish()
3307    }
3308}
3309
3310#[derive(Copy, Clone)]
3311#[repr(C)]
3312pub struct GstControlSource {
3313    pub parent: GstObject,
3314    pub get_value: GstControlSourceGetValue,
3315    pub get_value_array: GstControlSourceGetValueArray,
3316    pub _gst_reserved: [gpointer; 4],
3317}
3318
3319impl ::std::fmt::Debug for GstControlSource {
3320    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3321        f.debug_struct(&format!("GstControlSource @ {self:p}"))
3322            .field("parent", &self.parent)
3323            .field("get_value", &self.get_value)
3324            .field("get_value_array", &self.get_value_array)
3325            .finish()
3326    }
3327}
3328
3329#[derive(Copy, Clone)]
3330#[repr(C)]
3331pub struct GstDevice {
3332    pub parent: GstObject,
3333    pub priv_: *mut GstDevicePrivate,
3334    pub _gst_reserved: [gpointer; 4],
3335}
3336
3337impl ::std::fmt::Debug for GstDevice {
3338    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3339        f.debug_struct(&format!("GstDevice @ {self:p}"))
3340            .field("parent", &self.parent)
3341            .finish()
3342    }
3343}
3344
3345#[derive(Copy, Clone)]
3346#[repr(C)]
3347pub struct GstDeviceMonitor {
3348    pub parent: GstObject,
3349    pub priv_: *mut GstDeviceMonitorPrivate,
3350    pub _gst_reserved: [gpointer; 4],
3351}
3352
3353impl ::std::fmt::Debug for GstDeviceMonitor {
3354    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3355        f.debug_struct(&format!("GstDeviceMonitor @ {self:p}"))
3356            .field("parent", &self.parent)
3357            .finish()
3358    }
3359}
3360
3361#[derive(Copy, Clone)]
3362#[repr(C)]
3363pub struct GstDeviceProvider {
3364    pub parent: GstObject,
3365    pub devices: *mut glib::GList,
3366    pub priv_: *mut GstDeviceProviderPrivate,
3367    pub _gst_reserved: [gpointer; 4],
3368}
3369
3370impl ::std::fmt::Debug for GstDeviceProvider {
3371    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3372        f.debug_struct(&format!("GstDeviceProvider @ {self:p}"))
3373            .field("parent", &self.parent)
3374            .field("devices", &self.devices)
3375            .finish()
3376    }
3377}
3378
3379#[repr(C)]
3380#[allow(dead_code)]
3381pub struct GstDeviceProviderFactory {
3382    _data: [u8; 0],
3383    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3384}
3385
3386impl ::std::fmt::Debug for GstDeviceProviderFactory {
3387    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3388        f.debug_struct(&format!("GstDeviceProviderFactory @ {self:p}"))
3389            .finish()
3390    }
3391}
3392
3393#[repr(C)]
3394#[allow(dead_code)]
3395pub struct GstDoubleRange {
3396    _data: [u8; 0],
3397    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3398}
3399
3400impl ::std::fmt::Debug for GstDoubleRange {
3401    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3402        f.debug_struct(&format!("GstDoubleRange @ {self:p}"))
3403            .finish()
3404    }
3405}
3406
3407#[repr(C)]
3408#[allow(dead_code)]
3409pub struct GstDynamicTypeFactory {
3410    _data: [u8; 0],
3411    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3412}
3413
3414impl ::std::fmt::Debug for GstDynamicTypeFactory {
3415    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3416        f.debug_struct(&format!("GstDynamicTypeFactory @ {self:p}"))
3417            .finish()
3418    }
3419}
3420
3421#[derive(Copy, Clone)]
3422#[repr(C)]
3423pub struct GstElement {
3424    pub object: GstObject,
3425    pub state_lock: glib::GRecMutex,
3426    pub state_cond: glib::GCond,
3427    pub state_cookie: u32,
3428    pub target_state: GstState,
3429    pub current_state: GstState,
3430    pub next_state: GstState,
3431    pub pending_state: GstState,
3432    pub last_return: GstStateChangeReturn,
3433    pub bus: *mut GstBus,
3434    pub clock: *mut GstClock,
3435    pub base_time: GstClockTimeDiff,
3436    pub start_time: GstClockTime,
3437    pub numpads: u16,
3438    pub pads: *mut glib::GList,
3439    pub numsrcpads: u16,
3440    pub srcpads: *mut glib::GList,
3441    pub numsinkpads: u16,
3442    pub sinkpads: *mut glib::GList,
3443    pub pads_cookie: u32,
3444    pub contexts: *mut glib::GList,
3445    pub _gst_reserved: [gpointer; 3],
3446}
3447
3448impl ::std::fmt::Debug for GstElement {
3449    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3450        f.debug_struct(&format!("GstElement @ {self:p}"))
3451            .field("object", &self.object)
3452            .field("state_lock", &self.state_lock)
3453            .field("state_cond", &self.state_cond)
3454            .field("state_cookie", &self.state_cookie)
3455            .field("target_state", &self.target_state)
3456            .field("current_state", &self.current_state)
3457            .field("next_state", &self.next_state)
3458            .field("pending_state", &self.pending_state)
3459            .field("last_return", &self.last_return)
3460            .field("bus", &self.bus)
3461            .field("clock", &self.clock)
3462            .field("base_time", &self.base_time)
3463            .field("start_time", &self.start_time)
3464            .field("numpads", &self.numpads)
3465            .field("pads", &self.pads)
3466            .field("numsrcpads", &self.numsrcpads)
3467            .field("srcpads", &self.srcpads)
3468            .field("numsinkpads", &self.numsinkpads)
3469            .field("sinkpads", &self.sinkpads)
3470            .field("pads_cookie", &self.pads_cookie)
3471            .field("contexts", &self.contexts)
3472            .finish()
3473    }
3474}
3475
3476#[repr(C)]
3477#[allow(dead_code)]
3478pub struct GstElementFactory {
3479    _data: [u8; 0],
3480    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3481}
3482
3483impl ::std::fmt::Debug for GstElementFactory {
3484    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3485        f.debug_struct(&format!("GstElementFactory @ {self:p}"))
3486            .finish()
3487    }
3488}
3489
3490#[repr(C)]
3491#[allow(dead_code)]
3492pub struct GstFlagSet {
3493    _data: [u8; 0],
3494    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3495}
3496
3497impl ::std::fmt::Debug for GstFlagSet {
3498    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3499        f.debug_struct(&format!("GstFlagSet @ {self:p}")).finish()
3500    }
3501}
3502
3503#[repr(C)]
3504#[allow(dead_code)]
3505pub struct GstFraction {
3506    _data: [u8; 0],
3507    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3508}
3509
3510impl ::std::fmt::Debug for GstFraction {
3511    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3512        f.debug_struct(&format!("GstFraction @ {self:p}")).finish()
3513    }
3514}
3515
3516#[repr(C)]
3517#[allow(dead_code)]
3518pub struct GstFractionRange {
3519    _data: [u8; 0],
3520    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3521}
3522
3523impl ::std::fmt::Debug for GstFractionRange {
3524    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3525        f.debug_struct(&format!("GstFractionRange @ {self:p}"))
3526            .finish()
3527    }
3528}
3529
3530#[derive(Copy, Clone)]
3531#[repr(C)]
3532pub struct GstGhostPad {
3533    pub pad: GstProxyPad,
3534    pub priv_: *mut GstGhostPadPrivate,
3535}
3536
3537impl ::std::fmt::Debug for GstGhostPad {
3538    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3539        f.debug_struct(&format!("GstGhostPad @ {self:p}"))
3540            .field("pad", &self.pad)
3541            .finish()
3542    }
3543}
3544
3545#[repr(C)]
3546#[allow(dead_code)]
3547pub struct GstInt64Range {
3548    _data: [u8; 0],
3549    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3550}
3551
3552impl ::std::fmt::Debug for GstInt64Range {
3553    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3554        f.debug_struct(&format!("GstInt64Range @ {self:p}"))
3555            .finish()
3556    }
3557}
3558
3559#[repr(C)]
3560#[allow(dead_code)]
3561pub struct GstIntRange {
3562    _data: [u8; 0],
3563    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3564}
3565
3566impl ::std::fmt::Debug for GstIntRange {
3567    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3568        f.debug_struct(&format!("GstIntRange @ {self:p}")).finish()
3569    }
3570}
3571
3572#[derive(Copy, Clone)]
3573#[repr(C)]
3574pub struct GstObject {
3575    pub object: gobject::GInitiallyUnowned,
3576    pub lock: glib::GMutex,
3577    pub name: *mut c_char,
3578    pub parent: *mut GstObject,
3579    pub flags: u32,
3580    pub control_bindings: *mut glib::GList,
3581    pub control_rate: u64,
3582    pub last_sync: u64,
3583    pub _gst_reserved: gpointer,
3584}
3585
3586impl ::std::fmt::Debug for GstObject {
3587    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3588        f.debug_struct(&format!("GstObject @ {self:p}"))
3589            .field("object", &self.object)
3590            .field("lock", &self.lock)
3591            .field("name", &self.name)
3592            .field("parent", &self.parent)
3593            .field("flags", &self.flags)
3594            .finish()
3595    }
3596}
3597
3598#[derive(Copy, Clone)]
3599#[repr(C)]
3600pub struct GstPad {
3601    pub object: GstObject,
3602    pub element_private: gpointer,
3603    pub padtemplate: *mut GstPadTemplate,
3604    pub direction: GstPadDirection,
3605    pub stream_rec_lock: glib::GRecMutex,
3606    pub task: *mut GstTask,
3607    pub block_cond: glib::GCond,
3608    pub probes: glib::GHookList,
3609    pub mode: GstPadMode,
3610    pub activatefunc: GstPadActivateFunction,
3611    pub activatedata: gpointer,
3612    pub activatenotify: glib::GDestroyNotify,
3613    pub activatemodefunc: GstPadActivateModeFunction,
3614    pub activatemodedata: gpointer,
3615    pub activatemodenotify: glib::GDestroyNotify,
3616    pub peer: *mut GstPad,
3617    pub linkfunc: GstPadLinkFunction,
3618    pub linkdata: gpointer,
3619    pub linknotify: glib::GDestroyNotify,
3620    pub unlinkfunc: GstPadUnlinkFunction,
3621    pub unlinkdata: gpointer,
3622    pub unlinknotify: glib::GDestroyNotify,
3623    pub chainfunc: GstPadChainFunction,
3624    pub chaindata: gpointer,
3625    pub chainnotify: glib::GDestroyNotify,
3626    pub chainlistfunc: GstPadChainListFunction,
3627    pub chainlistdata: gpointer,
3628    pub chainlistnotify: glib::GDestroyNotify,
3629    pub getrangefunc: GstPadGetRangeFunction,
3630    pub getrangedata: gpointer,
3631    pub getrangenotify: glib::GDestroyNotify,
3632    pub eventfunc: GstPadEventFunction,
3633    pub eventdata: gpointer,
3634    pub eventnotify: glib::GDestroyNotify,
3635    pub offset: i64,
3636    pub queryfunc: GstPadQueryFunction,
3637    pub querydata: gpointer,
3638    pub querynotify: glib::GDestroyNotify,
3639    pub iterintlinkfunc: GstPadIterIntLinkFunction,
3640    pub iterintlinkdata: gpointer,
3641    pub iterintlinknotify: glib::GDestroyNotify,
3642    pub num_probes: c_int,
3643    pub num_blocked: c_int,
3644    pub priv_: *mut GstPadPrivate,
3645    pub ABI: GstPad_ABI,
3646}
3647
3648impl ::std::fmt::Debug for GstPad {
3649    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3650        f.debug_struct(&format!("GstPad @ {self:p}"))
3651            .field("object", &self.object)
3652            .field("element_private", &self.element_private)
3653            .field("padtemplate", &self.padtemplate)
3654            .field("direction", &self.direction)
3655            .field("ABI", &self.ABI)
3656            .finish()
3657    }
3658}
3659
3660#[derive(Copy, Clone)]
3661#[repr(C)]
3662pub struct GstPadTemplate {
3663    pub object: GstObject,
3664    pub name_template: *mut c_char,
3665    pub direction: GstPadDirection,
3666    pub presence: GstPadPresence,
3667    pub caps: *mut GstCaps,
3668    pub ABI: GstPadTemplate_ABI,
3669}
3670
3671impl ::std::fmt::Debug for GstPadTemplate {
3672    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3673        f.debug_struct(&format!("GstPadTemplate @ {self:p}"))
3674            .field("object", &self.object)
3675            .field("name_template", &self.name_template)
3676            .field("direction", &self.direction)
3677            .field("presence", &self.presence)
3678            .field("caps", &self.caps)
3679            .field("ABI", &self.ABI)
3680            .finish()
3681    }
3682}
3683
3684#[repr(C)]
3685#[allow(dead_code)]
3686pub struct GstParamArray {
3687    _data: [u8; 0],
3688    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3689}
3690
3691impl ::std::fmt::Debug for GstParamArray {
3692    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3693        f.debug_struct(&format!("GstParamArray @ {self:p}"))
3694            .finish()
3695    }
3696}
3697
3698#[repr(C)]
3699#[allow(dead_code)]
3700pub struct GstParamFraction {
3701    _data: [u8; 0],
3702    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3703}
3704
3705impl ::std::fmt::Debug for GstParamFraction {
3706    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3707        f.debug_struct(&format!("GstParamFraction @ {self:p}"))
3708            .finish()
3709    }
3710}
3711
3712#[derive(Copy, Clone)]
3713#[repr(C)]
3714pub struct GstPipeline {
3715    pub bin: GstBin,
3716    pub fixed_clock: *mut GstClock,
3717    pub stream_time: GstClockTime,
3718    pub delay: GstClockTime,
3719    pub priv_: *mut GstPipelinePrivate,
3720    pub _gst_reserved: [gpointer; 4],
3721}
3722
3723impl ::std::fmt::Debug for GstPipeline {
3724    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3725        f.debug_struct(&format!("GstPipeline @ {self:p}"))
3726            .field("bin", &self.bin)
3727            .field("fixed_clock", &self.fixed_clock)
3728            .field("stream_time", &self.stream_time)
3729            .field("delay", &self.delay)
3730            .finish()
3731    }
3732}
3733
3734#[repr(C)]
3735#[allow(dead_code)]
3736pub struct GstPlugin {
3737    _data: [u8; 0],
3738    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3739}
3740
3741impl ::std::fmt::Debug for GstPlugin {
3742    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3743        f.debug_struct(&format!("GstPlugin @ {self:p}")).finish()
3744    }
3745}
3746
3747#[repr(C)]
3748#[allow(dead_code)]
3749pub struct GstPluginFeature {
3750    _data: [u8; 0],
3751    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3752}
3753
3754impl ::std::fmt::Debug for GstPluginFeature {
3755    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3756        f.debug_struct(&format!("GstPluginFeature @ {self:p}"))
3757            .finish()
3758    }
3759}
3760
3761#[derive(Copy, Clone)]
3762#[repr(C)]
3763pub struct GstProxyPad {
3764    pub pad: GstPad,
3765    pub priv_: *mut GstProxyPadPrivate,
3766}
3767
3768impl ::std::fmt::Debug for GstProxyPad {
3769    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3770        f.debug_struct(&format!("GstProxyPad @ {self:p}"))
3771            .field("pad", &self.pad)
3772            .finish()
3773    }
3774}
3775
3776#[derive(Copy, Clone)]
3777#[repr(C)]
3778pub struct GstRegistry {
3779    pub object: GstObject,
3780    pub priv_: *mut GstRegistryPrivate,
3781}
3782
3783impl ::std::fmt::Debug for GstRegistry {
3784    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3785        f.debug_struct(&format!("GstRegistry @ {self:p}"))
3786            .field("object", &self.object)
3787            .finish()
3788    }
3789}
3790
3791#[derive(Copy, Clone)]
3792#[repr(C)]
3793pub struct GstSharedTaskPool {
3794    pub parent: GstTaskPool,
3795    pub priv_: *mut GstSharedTaskPoolPrivate,
3796    pub _gst_reserved: [gpointer; 4],
3797}
3798
3799impl ::std::fmt::Debug for GstSharedTaskPool {
3800    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3801        f.debug_struct(&format!("GstSharedTaskPool @ {self:p}"))
3802            .field("parent", &self.parent)
3803            .finish()
3804    }
3805}
3806
3807#[derive(Copy, Clone)]
3808#[repr(C)]
3809pub struct GstStream {
3810    pub object: GstObject,
3811    pub stream_id: *const c_char,
3812    pub priv_: *mut GstStreamPrivate,
3813    pub _gst_reserved: [gpointer; 4],
3814}
3815
3816impl ::std::fmt::Debug for GstStream {
3817    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3818        f.debug_struct(&format!("GstStream @ {self:p}"))
3819            .field("stream_id", &self.stream_id)
3820            .finish()
3821    }
3822}
3823
3824#[derive(Copy, Clone)]
3825#[repr(C)]
3826pub struct GstStreamCollection {
3827    pub object: GstObject,
3828    pub upstream_id: *mut c_char,
3829    pub priv_: *mut GstStreamCollectionPrivate,
3830    pub _gst_reserved: [gpointer; 4],
3831}
3832
3833impl ::std::fmt::Debug for GstStreamCollection {
3834    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3835        f.debug_struct(&format!("GstStreamCollection @ {self:p}"))
3836            .finish()
3837    }
3838}
3839
3840#[derive(Copy, Clone)]
3841#[repr(C)]
3842pub struct GstSystemClock {
3843    pub clock: GstClock,
3844    pub priv_: *mut GstSystemClockPrivate,
3845    pub _gst_reserved: [gpointer; 4],
3846}
3847
3848impl ::std::fmt::Debug for GstSystemClock {
3849    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3850        f.debug_struct(&format!("GstSystemClock @ {self:p}"))
3851            .field("clock", &self.clock)
3852            .finish()
3853    }
3854}
3855
3856#[derive(Copy, Clone)]
3857#[repr(C)]
3858pub struct GstTask {
3859    pub object: GstObject,
3860    pub state: GstTaskState,
3861    pub cond: glib::GCond,
3862    pub lock: *mut glib::GRecMutex,
3863    pub func: GstTaskFunction,
3864    pub user_data: gpointer,
3865    pub notify: glib::GDestroyNotify,
3866    pub running: gboolean,
3867    pub thread: *mut glib::GThread,
3868    pub priv_: *mut GstTaskPrivate,
3869    pub _gst_reserved: [gpointer; 4],
3870}
3871
3872impl ::std::fmt::Debug for GstTask {
3873    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3874        f.debug_struct(&format!("GstTask @ {self:p}"))
3875            .field("object", &self.object)
3876            .field("state", &self.state)
3877            .field("cond", &self.cond)
3878            .field("lock", &self.lock)
3879            .field("func", &self.func)
3880            .field("user_data", &self.user_data)
3881            .field("notify", &self.notify)
3882            .field("running", &self.running)
3883            .finish()
3884    }
3885}
3886
3887#[derive(Copy, Clone)]
3888#[repr(C)]
3889pub struct GstTaskPool {
3890    pub object: GstObject,
3891    pub pool: *mut glib::GThreadPool,
3892    pub _gst_reserved: [gpointer; 4],
3893}
3894
3895impl ::std::fmt::Debug for GstTaskPool {
3896    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3897        f.debug_struct(&format!("GstTaskPool @ {self:p}"))
3898            .field("object", &self.object)
3899            .finish()
3900    }
3901}
3902
3903#[derive(Copy, Clone)]
3904#[repr(C)]
3905pub struct GstTracer {
3906    pub parent: GstObject,
3907    pub priv_: *mut GstTracerPrivate,
3908    pub _gst_reserved: [gpointer; 4],
3909}
3910
3911impl ::std::fmt::Debug for GstTracer {
3912    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3913        f.debug_struct(&format!("GstTracer @ {self:p}"))
3914            .field("parent", &self.parent)
3915            .finish()
3916    }
3917}
3918
3919#[repr(C)]
3920#[allow(dead_code)]
3921pub struct GstTracerFactory {
3922    _data: [u8; 0],
3923    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3924}
3925
3926impl ::std::fmt::Debug for GstTracerFactory {
3927    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3928        f.debug_struct(&format!("GstTracerFactory @ {self:p}"))
3929            .finish()
3930    }
3931}
3932
3933#[repr(C)]
3934#[allow(dead_code)]
3935pub struct GstTracerRecord {
3936    _data: [u8; 0],
3937    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3938}
3939
3940impl ::std::fmt::Debug for GstTracerRecord {
3941    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3942        f.debug_struct(&format!("GstTracerRecord @ {self:p}"))
3943            .finish()
3944    }
3945}
3946
3947#[repr(C)]
3948#[allow(dead_code)]
3949pub struct GstTypeFindFactory {
3950    _data: [u8; 0],
3951    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3952}
3953
3954impl ::std::fmt::Debug for GstTypeFindFactory {
3955    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3956        f.debug_struct(&format!("GstTypeFindFactory @ {self:p}"))
3957            .finish()
3958    }
3959}
3960
3961#[repr(C)]
3962#[allow(dead_code)]
3963pub struct GstValueArray {
3964    _data: [u8; 0],
3965    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3966}
3967
3968impl ::std::fmt::Debug for GstValueArray {
3969    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3970        f.debug_struct(&format!("GstValueArray @ {self:p}"))
3971            .finish()
3972    }
3973}
3974
3975#[repr(C)]
3976#[allow(dead_code)]
3977pub struct GstValueList {
3978    _data: [u8; 0],
3979    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3980}
3981
3982impl ::std::fmt::Debug for GstValueList {
3983    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3984        f.debug_struct(&format!("GstValueList @ {self:p}")).finish()
3985    }
3986}
3987
3988// Interfaces
3989#[repr(C)]
3990#[allow(dead_code)]
3991pub struct GstChildProxy {
3992    _data: [u8; 0],
3993    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3994}
3995
3996impl ::std::fmt::Debug for GstChildProxy {
3997    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3998        write!(f, "GstChildProxy @ {self:p}")
3999    }
4000}
4001
4002#[repr(C)]
4003#[allow(dead_code)]
4004pub struct GstPreset {
4005    _data: [u8; 0],
4006    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4007}
4008
4009impl ::std::fmt::Debug for GstPreset {
4010    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4011        write!(f, "GstPreset @ {self:p}")
4012    }
4013}
4014
4015#[repr(C)]
4016#[allow(dead_code)]
4017pub struct GstTagSetter {
4018    _data: [u8; 0],
4019    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4020}
4021
4022impl ::std::fmt::Debug for GstTagSetter {
4023    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4024        write!(f, "GstTagSetter @ {self:p}")
4025    }
4026}
4027
4028#[repr(C)]
4029#[allow(dead_code)]
4030pub struct GstTocSetter {
4031    _data: [u8; 0],
4032    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4033}
4034
4035impl ::std::fmt::Debug for GstTocSetter {
4036    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4037        write!(f, "GstTocSetter @ {self:p}")
4038    }
4039}
4040
4041#[repr(C)]
4042#[allow(dead_code)]
4043pub struct GstURIHandler {
4044    _data: [u8; 0],
4045    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4046}
4047
4048impl ::std::fmt::Debug for GstURIHandler {
4049    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4050        write!(f, "GstURIHandler @ {self:p}")
4051    }
4052}
4053
4054extern "C" {
4055
4056    //=========================================================================
4057    // GstBufferingMode
4058    //=========================================================================
4059    pub fn gst_buffering_mode_get_type() -> GType;
4060
4061    //=========================================================================
4062    // GstBusSyncReply
4063    //=========================================================================
4064    pub fn gst_bus_sync_reply_get_type() -> GType;
4065
4066    //=========================================================================
4067    // GstCapsIntersectMode
4068    //=========================================================================
4069    pub fn gst_caps_intersect_mode_get_type() -> GType;
4070
4071    //=========================================================================
4072    // GstClockEntryType
4073    //=========================================================================
4074    pub fn gst_clock_entry_type_get_type() -> GType;
4075
4076    //=========================================================================
4077    // GstClockReturn
4078    //=========================================================================
4079    pub fn gst_clock_return_get_type() -> GType;
4080
4081    //=========================================================================
4082    // GstClockType
4083    //=========================================================================
4084    pub fn gst_clock_type_get_type() -> GType;
4085
4086    //=========================================================================
4087    // GstCoreError
4088    //=========================================================================
4089    pub fn gst_core_error_get_type() -> GType;
4090    pub fn gst_core_error_quark() -> glib::GQuark;
4091
4092    //=========================================================================
4093    // GstDebugColorMode
4094    //=========================================================================
4095    pub fn gst_debug_color_mode_get_type() -> GType;
4096
4097    //=========================================================================
4098    // GstDebugLevel
4099    //=========================================================================
4100    pub fn gst_debug_level_get_type() -> GType;
4101    pub fn gst_debug_level_get_name(level: GstDebugLevel) -> *const c_char;
4102
4103    //=========================================================================
4104    // GstEventType
4105    //=========================================================================
4106    pub fn gst_event_type_get_type() -> GType;
4107    pub fn gst_event_type_get_flags(type_: GstEventType) -> GstEventTypeFlags;
4108    pub fn gst_event_type_get_name(type_: GstEventType) -> *const c_char;
4109    pub fn gst_event_type_to_quark(type_: GstEventType) -> glib::GQuark;
4110    #[cfg(feature = "v1_22")]
4111    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4112    pub fn gst_event_type_to_sticky_ordering(type_: GstEventType) -> c_uint;
4113
4114    //=========================================================================
4115    // GstFlowReturn
4116    //=========================================================================
4117    pub fn gst_flow_return_get_type() -> GType;
4118
4119    //=========================================================================
4120    // GstFormat
4121    //=========================================================================
4122    pub fn gst_format_get_type() -> GType;
4123    pub fn gst_format_get_by_nick(nick: *const c_char) -> GstFormat;
4124    pub fn gst_format_get_details(format: GstFormat) -> *const GstFormatDefinition;
4125    pub fn gst_format_get_name(format: GstFormat) -> *const c_char;
4126    pub fn gst_format_iterate_definitions() -> *mut GstIterator;
4127    pub fn gst_format_register(nick: *const c_char, description: *const c_char) -> GstFormat;
4128    pub fn gst_format_to_quark(format: GstFormat) -> glib::GQuark;
4129
4130    //=========================================================================
4131    // GstIteratorItem
4132    //=========================================================================
4133    pub fn gst_iterator_item_get_type() -> GType;
4134
4135    //=========================================================================
4136    // GstIteratorResult
4137    //=========================================================================
4138    pub fn gst_iterator_result_get_type() -> GType;
4139
4140    //=========================================================================
4141    // GstLibraryError
4142    //=========================================================================
4143    pub fn gst_library_error_get_type() -> GType;
4144    pub fn gst_library_error_quark() -> glib::GQuark;
4145
4146    //=========================================================================
4147    // GstPadDirection
4148    //=========================================================================
4149    pub fn gst_pad_direction_get_type() -> GType;
4150
4151    //=========================================================================
4152    // GstPadLinkReturn
4153    //=========================================================================
4154    pub fn gst_pad_link_return_get_type() -> GType;
4155
4156    //=========================================================================
4157    // GstPadMode
4158    //=========================================================================
4159    pub fn gst_pad_mode_get_type() -> GType;
4160    pub fn gst_pad_mode_get_name(mode: GstPadMode) -> *const c_char;
4161
4162    //=========================================================================
4163    // GstPadPresence
4164    //=========================================================================
4165    pub fn gst_pad_presence_get_type() -> GType;
4166
4167    //=========================================================================
4168    // GstPadProbeReturn
4169    //=========================================================================
4170    pub fn gst_pad_probe_return_get_type() -> GType;
4171
4172    //=========================================================================
4173    // GstParseError
4174    //=========================================================================
4175    pub fn gst_parse_error_get_type() -> GType;
4176    pub fn gst_parse_error_quark() -> glib::GQuark;
4177
4178    //=========================================================================
4179    // GstPluginError
4180    //=========================================================================
4181    pub fn gst_plugin_error_get_type() -> GType;
4182    pub fn gst_plugin_error_quark() -> glib::GQuark;
4183
4184    //=========================================================================
4185    // GstProgressType
4186    //=========================================================================
4187    pub fn gst_progress_type_get_type() -> GType;
4188
4189    //=========================================================================
4190    // GstPromiseResult
4191    //=========================================================================
4192    pub fn gst_promise_result_get_type() -> GType;
4193
4194    //=========================================================================
4195    // GstQOSType
4196    //=========================================================================
4197    pub fn gst_qos_type_get_type() -> GType;
4198
4199    //=========================================================================
4200    // GstQueryType
4201    //=========================================================================
4202    pub fn gst_query_type_get_type() -> GType;
4203    pub fn gst_query_type_get_flags(type_: GstQueryType) -> GstQueryTypeFlags;
4204    pub fn gst_query_type_get_name(type_: GstQueryType) -> *const c_char;
4205    pub fn gst_query_type_to_quark(type_: GstQueryType) -> glib::GQuark;
4206
4207    //=========================================================================
4208    // GstRank
4209    //=========================================================================
4210    pub fn gst_rank_get_type() -> GType;
4211
4212    //=========================================================================
4213    // GstResourceError
4214    //=========================================================================
4215    pub fn gst_resource_error_get_type() -> GType;
4216    pub fn gst_resource_error_quark() -> glib::GQuark;
4217
4218    //=========================================================================
4219    // GstSearchMode
4220    //=========================================================================
4221    pub fn gst_search_mode_get_type() -> GType;
4222
4223    //=========================================================================
4224    // GstSeekType
4225    //=========================================================================
4226    pub fn gst_seek_type_get_type() -> GType;
4227
4228    //=========================================================================
4229    // GstState
4230    //=========================================================================
4231    pub fn gst_state_get_type() -> GType;
4232
4233    //=========================================================================
4234    // GstStateChange
4235    //=========================================================================
4236    pub fn gst_state_change_get_type() -> GType;
4237    pub fn gst_state_change_get_name(transition: GstStateChange) -> *const c_char;
4238
4239    //=========================================================================
4240    // GstStateChangeReturn
4241    //=========================================================================
4242    pub fn gst_state_change_return_get_type() -> GType;
4243
4244    //=========================================================================
4245    // GstStreamError
4246    //=========================================================================
4247    pub fn gst_stream_error_get_type() -> GType;
4248    pub fn gst_stream_error_quark() -> glib::GQuark;
4249
4250    //=========================================================================
4251    // GstStreamStatusType
4252    //=========================================================================
4253    pub fn gst_stream_status_type_get_type() -> GType;
4254
4255    //=========================================================================
4256    // GstStructureChangeType
4257    //=========================================================================
4258    pub fn gst_structure_change_type_get_type() -> GType;
4259
4260    //=========================================================================
4261    // GstTagFlag
4262    //=========================================================================
4263    pub fn gst_tag_flag_get_type() -> GType;
4264
4265    //=========================================================================
4266    // GstTagMergeMode
4267    //=========================================================================
4268    pub fn gst_tag_merge_mode_get_type() -> GType;
4269
4270    //=========================================================================
4271    // GstTagScope
4272    //=========================================================================
4273    pub fn gst_tag_scope_get_type() -> GType;
4274
4275    //=========================================================================
4276    // GstTaskState
4277    //=========================================================================
4278    pub fn gst_task_state_get_type() -> GType;
4279
4280    //=========================================================================
4281    // GstTocEntryType
4282    //=========================================================================
4283    pub fn gst_toc_entry_type_get_type() -> GType;
4284    pub fn gst_toc_entry_type_get_nick(type_: GstTocEntryType) -> *const c_char;
4285
4286    //=========================================================================
4287    // GstTocLoopType
4288    //=========================================================================
4289    pub fn gst_toc_loop_type_get_type() -> GType;
4290
4291    //=========================================================================
4292    // GstTocScope
4293    //=========================================================================
4294    pub fn gst_toc_scope_get_type() -> GType;
4295
4296    //=========================================================================
4297    // GstTracerValueScope
4298    //=========================================================================
4299    pub fn gst_tracer_value_scope_get_type() -> GType;
4300
4301    //=========================================================================
4302    // GstTypeFindProbability
4303    //=========================================================================
4304    pub fn gst_type_find_probability_get_type() -> GType;
4305
4306    //=========================================================================
4307    // GstURIError
4308    //=========================================================================
4309    pub fn gst_uri_error_get_type() -> GType;
4310    pub fn gst_uri_error_quark() -> glib::GQuark;
4311
4312    //=========================================================================
4313    // GstURIType
4314    //=========================================================================
4315    pub fn gst_uri_type_get_type() -> GType;
4316
4317    //=========================================================================
4318    // GstAllocatorFlags
4319    //=========================================================================
4320    pub fn gst_allocator_flags_get_type() -> GType;
4321
4322    //=========================================================================
4323    // GstBinFlags
4324    //=========================================================================
4325    pub fn gst_bin_flags_get_type() -> GType;
4326
4327    //=========================================================================
4328    // GstBufferCopyFlags
4329    //=========================================================================
4330    pub fn gst_buffer_copy_flags_get_type() -> GType;
4331
4332    //=========================================================================
4333    // GstBufferFlags
4334    //=========================================================================
4335    pub fn gst_buffer_flags_get_type() -> GType;
4336
4337    //=========================================================================
4338    // GstBufferPoolAcquireFlags
4339    //=========================================================================
4340    pub fn gst_buffer_pool_acquire_flags_get_type() -> GType;
4341
4342    //=========================================================================
4343    // GstBusFlags
4344    //=========================================================================
4345    pub fn gst_bus_flags_get_type() -> GType;
4346
4347    //=========================================================================
4348    // GstCapsFlags
4349    //=========================================================================
4350    pub fn gst_caps_flags_get_type() -> GType;
4351
4352    //=========================================================================
4353    // GstClockFlags
4354    //=========================================================================
4355    pub fn gst_clock_flags_get_type() -> GType;
4356
4357    //=========================================================================
4358    // GstDebugColorFlags
4359    //=========================================================================
4360    pub fn gst_debug_color_flags_get_type() -> GType;
4361
4362    //=========================================================================
4363    // GstDebugGraphDetails
4364    //=========================================================================
4365    pub fn gst_debug_graph_details_get_type() -> GType;
4366
4367    //=========================================================================
4368    // GstElementFlags
4369    //=========================================================================
4370    pub fn gst_element_flags_get_type() -> GType;
4371
4372    //=========================================================================
4373    // GstEventTypeFlags
4374    //=========================================================================
4375    pub fn gst_event_type_flags_get_type() -> GType;
4376
4377    //=========================================================================
4378    // GstGapFlags
4379    //=========================================================================
4380    #[cfg(feature = "v1_20")]
4381    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4382    pub fn gst_gap_flags_get_type() -> GType;
4383
4384    //=========================================================================
4385    // GstLockFlags
4386    //=========================================================================
4387    pub fn gst_lock_flags_get_type() -> GType;
4388
4389    //=========================================================================
4390    // GstMapFlags
4391    //=========================================================================
4392    pub fn gst_map_flags_get_type() -> GType;
4393
4394    //=========================================================================
4395    // GstMemoryFlags
4396    //=========================================================================
4397    pub fn gst_memory_flags_get_type() -> GType;
4398
4399    //=========================================================================
4400    // GstMessageType
4401    //=========================================================================
4402    pub fn gst_message_type_get_type() -> GType;
4403    pub fn gst_message_type_get_name(type_: GstMessageType) -> *const c_char;
4404    pub fn gst_message_type_to_quark(type_: GstMessageType) -> glib::GQuark;
4405
4406    //=========================================================================
4407    // GstMetaFlags
4408    //=========================================================================
4409    pub fn gst_meta_flags_get_type() -> GType;
4410
4411    //=========================================================================
4412    // GstMiniObjectFlags
4413    //=========================================================================
4414    pub fn gst_mini_object_flags_get_type() -> GType;
4415
4416    //=========================================================================
4417    // GstObjectFlags
4418    //=========================================================================
4419    pub fn gst_object_flags_get_type() -> GType;
4420
4421    //=========================================================================
4422    // GstPadFlags
4423    //=========================================================================
4424    pub fn gst_pad_flags_get_type() -> GType;
4425
4426    //=========================================================================
4427    // GstPadLinkCheck
4428    //=========================================================================
4429    pub fn gst_pad_link_check_get_type() -> GType;
4430
4431    //=========================================================================
4432    // GstPadProbeType
4433    //=========================================================================
4434    pub fn gst_pad_probe_type_get_type() -> GType;
4435
4436    //=========================================================================
4437    // GstPadTemplateFlags
4438    //=========================================================================
4439    pub fn gst_pad_template_flags_get_type() -> GType;
4440
4441    //=========================================================================
4442    // GstParseFlags
4443    //=========================================================================
4444    pub fn gst_parse_flags_get_type() -> GType;
4445
4446    //=========================================================================
4447    // GstPipelineFlags
4448    //=========================================================================
4449    pub fn gst_pipeline_flags_get_type() -> GType;
4450
4451    //=========================================================================
4452    // GstPluginAPIFlags
4453    //=========================================================================
4454    #[cfg(feature = "v1_18")]
4455    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4456    pub fn gst_plugin_api_flags_get_type() -> GType;
4457
4458    //=========================================================================
4459    // GstPluginDependencyFlags
4460    //=========================================================================
4461    pub fn gst_plugin_dependency_flags_get_type() -> GType;
4462
4463    //=========================================================================
4464    // GstPluginFlags
4465    //=========================================================================
4466    pub fn gst_plugin_flags_get_type() -> GType;
4467
4468    //=========================================================================
4469    // GstQueryTypeFlags
4470    //=========================================================================
4471    pub fn gst_query_type_flags_get_type() -> GType;
4472
4473    //=========================================================================
4474    // GstSchedulingFlags
4475    //=========================================================================
4476    pub fn gst_scheduling_flags_get_type() -> GType;
4477
4478    //=========================================================================
4479    // GstSeekFlags
4480    //=========================================================================
4481    pub fn gst_seek_flags_get_type() -> GType;
4482
4483    //=========================================================================
4484    // GstSegmentFlags
4485    //=========================================================================
4486    pub fn gst_segment_flags_get_type() -> GType;
4487
4488    //=========================================================================
4489    // GstSerializeFlags
4490    //=========================================================================
4491    #[cfg(feature = "v1_20")]
4492    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4493    pub fn gst_serialize_flags_get_type() -> GType;
4494
4495    //=========================================================================
4496    // GstStackTraceFlags
4497    //=========================================================================
4498    pub fn gst_stack_trace_flags_get_type() -> GType;
4499
4500    //=========================================================================
4501    // GstStreamFlags
4502    //=========================================================================
4503    pub fn gst_stream_flags_get_type() -> GType;
4504
4505    //=========================================================================
4506    // GstStreamType
4507    //=========================================================================
4508    pub fn gst_stream_type_get_type() -> GType;
4509    pub fn gst_stream_type_get_name(stype: GstStreamType) -> *const c_char;
4510
4511    //=========================================================================
4512    // GstTracerValueFlags
4513    //=========================================================================
4514    pub fn gst_tracer_value_flags_get_type() -> GType;
4515
4516    //=========================================================================
4517    // GstAllocationParams
4518    //=========================================================================
4519    pub fn gst_allocation_params_get_type() -> GType;
4520    #[cfg(feature = "v1_20")]
4521    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4522    pub fn gst_allocation_params_new() -> *mut GstAllocationParams;
4523    pub fn gst_allocation_params_copy(
4524        params: *const GstAllocationParams,
4525    ) -> *mut GstAllocationParams;
4526    pub fn gst_allocation_params_free(params: *mut GstAllocationParams);
4527    pub fn gst_allocation_params_init(params: *mut GstAllocationParams);
4528
4529    //=========================================================================
4530    // GstAtomicQueue
4531    //=========================================================================
4532    pub fn gst_atomic_queue_get_type() -> GType;
4533    pub fn gst_atomic_queue_new(initial_size: c_uint) -> *mut GstAtomicQueue;
4534    pub fn gst_atomic_queue_length(queue: *mut GstAtomicQueue) -> c_uint;
4535    pub fn gst_atomic_queue_peek(queue: *mut GstAtomicQueue) -> gpointer;
4536    pub fn gst_atomic_queue_pop(queue: *mut GstAtomicQueue) -> gpointer;
4537    pub fn gst_atomic_queue_push(queue: *mut GstAtomicQueue, data: gpointer);
4538    pub fn gst_atomic_queue_ref(queue: *mut GstAtomicQueue);
4539    pub fn gst_atomic_queue_unref(queue: *mut GstAtomicQueue);
4540
4541    //=========================================================================
4542    // GstBuffer
4543    //=========================================================================
4544    pub fn gst_buffer_get_type() -> GType;
4545    pub fn gst_buffer_new() -> *mut GstBuffer;
4546    pub fn gst_buffer_new_allocate(
4547        allocator: *mut GstAllocator,
4548        size: size_t,
4549        params: *mut GstAllocationParams,
4550    ) -> *mut GstBuffer;
4551    #[cfg(feature = "v1_20")]
4552    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4553    pub fn gst_buffer_new_memdup(data: gconstpointer, size: size_t) -> *mut GstBuffer;
4554    pub fn gst_buffer_new_wrapped(data: gpointer, size: size_t) -> *mut GstBuffer;
4555    #[cfg(feature = "v1_16")]
4556    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4557    pub fn gst_buffer_new_wrapped_bytes(bytes: *mut glib::GBytes) -> *mut GstBuffer;
4558    pub fn gst_buffer_new_wrapped_full(
4559        flags: GstMemoryFlags,
4560        data: gpointer,
4561        maxsize: size_t,
4562        offset: size_t,
4563        size: size_t,
4564        user_data: gpointer,
4565        notify: glib::GDestroyNotify,
4566    ) -> *mut GstBuffer;
4567    #[cfg(feature = "v1_20")]
4568    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4569    pub fn gst_buffer_add_custom_meta(
4570        buffer: *mut GstBuffer,
4571        name: *const c_char,
4572    ) -> *mut GstCustomMeta;
4573    pub fn gst_buffer_add_meta(
4574        buffer: *mut GstBuffer,
4575        info: *const GstMetaInfo,
4576        params: gpointer,
4577    ) -> *mut GstMeta;
4578    pub fn gst_buffer_add_parent_buffer_meta(
4579        buffer: *mut GstBuffer,
4580        ref_: *mut GstBuffer,
4581    ) -> *mut GstParentBufferMeta;
4582    pub fn gst_buffer_add_protection_meta(
4583        buffer: *mut GstBuffer,
4584        info: *mut GstStructure,
4585    ) -> *mut GstProtectionMeta;
4586    pub fn gst_buffer_add_reference_timestamp_meta(
4587        buffer: *mut GstBuffer,
4588        reference: *mut GstCaps,
4589        timestamp: GstClockTime,
4590        duration: GstClockTime,
4591    ) -> *mut GstReferenceTimestampMeta;
4592    pub fn gst_buffer_append(buf1: *mut GstBuffer, buf2: *mut GstBuffer) -> *mut GstBuffer;
4593    pub fn gst_buffer_append_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4594    pub fn gst_buffer_append_region(
4595        buf1: *mut GstBuffer,
4596        buf2: *mut GstBuffer,
4597        offset: ssize_t,
4598        size: ssize_t,
4599    ) -> *mut GstBuffer;
4600    #[cfg(feature = "v1_18_3")]
4601    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4602    pub fn gst_buffer_copy(buf: *const GstBuffer) -> *mut GstBuffer;
4603    pub fn gst_buffer_copy_deep(buf: *const GstBuffer) -> *mut GstBuffer;
4604    pub fn gst_buffer_copy_into(
4605        dest: *mut GstBuffer,
4606        src: *mut GstBuffer,
4607        flags: GstBufferCopyFlags,
4608        offset: size_t,
4609        size: size_t,
4610    ) -> gboolean;
4611    pub fn gst_buffer_copy_region(
4612        parent: *mut GstBuffer,
4613        flags: GstBufferCopyFlags,
4614        offset: size_t,
4615        size: size_t,
4616    ) -> *mut GstBuffer;
4617    pub fn gst_buffer_extract(
4618        buffer: *mut GstBuffer,
4619        offset: size_t,
4620        dest: gpointer,
4621        size: size_t,
4622    ) -> size_t;
4623    pub fn gst_buffer_extract_dup(
4624        buffer: *mut GstBuffer,
4625        offset: size_t,
4626        size: size_t,
4627        dest: *mut u8,
4628        dest_size: *mut size_t,
4629    );
4630    pub fn gst_buffer_fill(
4631        buffer: *mut GstBuffer,
4632        offset: size_t,
4633        src: gconstpointer,
4634        size: size_t,
4635    ) -> size_t;
4636    pub fn gst_buffer_find_memory(
4637        buffer: *mut GstBuffer,
4638        offset: size_t,
4639        size: size_t,
4640        idx: *mut c_uint,
4641        length: *mut c_uint,
4642        skip: *mut size_t,
4643    ) -> gboolean;
4644    pub fn gst_buffer_foreach_meta(
4645        buffer: *mut GstBuffer,
4646        func: GstBufferForeachMetaFunc,
4647        user_data: gpointer,
4648    ) -> gboolean;
4649    pub fn gst_buffer_get_all_memory(buffer: *mut GstBuffer) -> *mut GstMemory;
4650    #[cfg(feature = "v1_20")]
4651    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4652    pub fn gst_buffer_get_custom_meta(
4653        buffer: *mut GstBuffer,
4654        name: *const c_char,
4655    ) -> *mut GstCustomMeta;
4656    pub fn gst_buffer_get_flags(buffer: *mut GstBuffer) -> GstBufferFlags;
4657    pub fn gst_buffer_get_memory(buffer: *mut GstBuffer, idx: c_uint) -> *mut GstMemory;
4658    pub fn gst_buffer_get_memory_range(
4659        buffer: *mut GstBuffer,
4660        idx: c_uint,
4661        length: c_int,
4662    ) -> *mut GstMemory;
4663    pub fn gst_buffer_get_meta(buffer: *mut GstBuffer, api: GType) -> *mut GstMeta;
4664    pub fn gst_buffer_get_n_meta(buffer: *mut GstBuffer, api_type: GType) -> c_uint;
4665    pub fn gst_buffer_get_reference_timestamp_meta(
4666        buffer: *mut GstBuffer,
4667        reference: *mut GstCaps,
4668    ) -> *mut GstReferenceTimestampMeta;
4669    pub fn gst_buffer_get_size(buffer: *mut GstBuffer) -> size_t;
4670    pub fn gst_buffer_get_sizes(
4671        buffer: *mut GstBuffer,
4672        offset: *mut size_t,
4673        maxsize: *mut size_t,
4674    ) -> size_t;
4675    pub fn gst_buffer_get_sizes_range(
4676        buffer: *mut GstBuffer,
4677        idx: c_uint,
4678        length: c_int,
4679        offset: *mut size_t,
4680        maxsize: *mut size_t,
4681    ) -> size_t;
4682    pub fn gst_buffer_has_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4683    pub fn gst_buffer_insert_memory(buffer: *mut GstBuffer, idx: c_int, mem: *mut GstMemory);
4684    pub fn gst_buffer_is_all_memory_writable(buffer: *mut GstBuffer) -> gboolean;
4685    pub fn gst_buffer_is_memory_range_writable(
4686        buffer: *mut GstBuffer,
4687        idx: c_uint,
4688        length: c_int,
4689    ) -> gboolean;
4690    pub fn gst_buffer_iterate_meta(buffer: *mut GstBuffer, state: *mut gpointer) -> *mut GstMeta;
4691    pub fn gst_buffer_iterate_meta_filtered(
4692        buffer: *mut GstBuffer,
4693        state: *mut gpointer,
4694        meta_api_type: GType,
4695    ) -> *mut GstMeta;
4696    pub fn gst_buffer_map(
4697        buffer: *mut GstBuffer,
4698        info: *mut GstMapInfo,
4699        flags: GstMapFlags,
4700    ) -> gboolean;
4701    pub fn gst_buffer_map_range(
4702        buffer: *mut GstBuffer,
4703        idx: c_uint,
4704        length: c_int,
4705        info: *mut GstMapInfo,
4706        flags: GstMapFlags,
4707    ) -> gboolean;
4708    pub fn gst_buffer_memcmp(
4709        buffer: *mut GstBuffer,
4710        offset: size_t,
4711        mem: gconstpointer,
4712        size: size_t,
4713    ) -> c_int;
4714    pub fn gst_buffer_memset(
4715        buffer: *mut GstBuffer,
4716        offset: size_t,
4717        val: u8,
4718        size: size_t,
4719    ) -> size_t;
4720    pub fn gst_buffer_n_memory(buffer: *mut GstBuffer) -> c_uint;
4721    pub fn gst_buffer_peek_memory(buffer: *mut GstBuffer, idx: c_uint) -> *mut GstMemory;
4722    pub fn gst_buffer_prepend_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4723    #[cfg(feature = "v1_18_3")]
4724    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4725    pub fn gst_buffer_ref(buf: *mut GstBuffer) -> *mut GstBuffer;
4726    pub fn gst_buffer_remove_all_memory(buffer: *mut GstBuffer);
4727    pub fn gst_buffer_remove_memory(buffer: *mut GstBuffer, idx: c_uint);
4728    pub fn gst_buffer_remove_memory_range(buffer: *mut GstBuffer, idx: c_uint, length: c_int);
4729    pub fn gst_buffer_remove_meta(buffer: *mut GstBuffer, meta: *mut GstMeta) -> gboolean;
4730    pub fn gst_buffer_replace_all_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4731    pub fn gst_buffer_replace_memory(buffer: *mut GstBuffer, idx: c_uint, mem: *mut GstMemory);
4732    pub fn gst_buffer_replace_memory_range(
4733        buffer: *mut GstBuffer,
4734        idx: c_uint,
4735        length: c_int,
4736        mem: *mut GstMemory,
4737    );
4738    pub fn gst_buffer_resize(buffer: *mut GstBuffer, offset: ssize_t, size: ssize_t);
4739    pub fn gst_buffer_resize_range(
4740        buffer: *mut GstBuffer,
4741        idx: c_uint,
4742        length: c_int,
4743        offset: ssize_t,
4744        size: ssize_t,
4745    ) -> gboolean;
4746    pub fn gst_buffer_set_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4747    pub fn gst_buffer_set_size(buffer: *mut GstBuffer, size: ssize_t);
4748    pub fn gst_buffer_unmap(buffer: *mut GstBuffer, info: *mut GstMapInfo);
4749    #[cfg(feature = "v1_18_3")]
4750    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4751    pub fn gst_buffer_unref(buf: *mut GstBuffer);
4752    pub fn gst_buffer_unset_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4753    pub fn gst_buffer_get_max_memory() -> c_uint;
4754    #[cfg(feature = "v1_18_3")]
4755    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4756    pub fn gst_buffer_replace(obuf: *mut *mut GstBuffer, nbuf: *mut GstBuffer) -> gboolean;
4757
4758    //=========================================================================
4759    // GstBufferList
4760    //=========================================================================
4761    pub fn gst_buffer_list_get_type() -> GType;
4762    pub fn gst_buffer_list_new() -> *mut GstBufferList;
4763    pub fn gst_buffer_list_new_sized(size: c_uint) -> *mut GstBufferList;
4764    pub fn gst_buffer_list_calculate_size(list: *mut GstBufferList) -> size_t;
4765    #[cfg(feature = "v1_18_3")]
4766    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4767    pub fn gst_buffer_list_copy(list: *const GstBufferList) -> *mut GstBufferList;
4768    pub fn gst_buffer_list_copy_deep(list: *const GstBufferList) -> *mut GstBufferList;
4769    pub fn gst_buffer_list_foreach(
4770        list: *mut GstBufferList,
4771        func: GstBufferListFunc,
4772        user_data: gpointer,
4773    ) -> gboolean;
4774    pub fn gst_buffer_list_get(list: *mut GstBufferList, idx: c_uint) -> *mut GstBuffer;
4775    pub fn gst_buffer_list_get_writable(list: *mut GstBufferList, idx: c_uint) -> *mut GstBuffer;
4776    pub fn gst_buffer_list_insert(list: *mut GstBufferList, idx: c_int, buffer: *mut GstBuffer);
4777    pub fn gst_buffer_list_length(list: *mut GstBufferList) -> c_uint;
4778    #[cfg(feature = "v1_18_3")]
4779    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4780    pub fn gst_buffer_list_ref(list: *mut GstBufferList) -> *mut GstBufferList;
4781    pub fn gst_buffer_list_remove(list: *mut GstBufferList, idx: c_uint, length: c_uint);
4782    #[cfg(feature = "v1_18_3")]
4783    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4784    pub fn gst_buffer_list_unref(list: *mut GstBufferList);
4785    #[cfg(feature = "v1_18_3")]
4786    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4787    pub fn gst_buffer_list_replace(
4788        old_list: *mut *mut GstBufferList,
4789        new_list: *mut GstBufferList,
4790    ) -> gboolean;
4791    #[cfg(feature = "v1_18_3")]
4792    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4793    pub fn gst_buffer_list_take(
4794        old_list: *mut *mut GstBufferList,
4795        new_list: *mut GstBufferList,
4796    ) -> gboolean;
4797
4798    //=========================================================================
4799    // GstCaps
4800    //=========================================================================
4801    pub fn gst_caps_get_type() -> GType;
4802    pub fn gst_caps_new_any() -> *mut GstCaps;
4803    pub fn gst_caps_new_empty() -> *mut GstCaps;
4804    pub fn gst_caps_new_empty_simple(media_type: *const c_char) -> *mut GstCaps;
4805    pub fn gst_caps_new_full(struct1: *mut GstStructure, ...) -> *mut GstCaps;
4806    //pub fn gst_caps_new_full_valist(structure: *mut GstStructure, var_args: /*Unimplemented*/va_list) -> *mut GstCaps;
4807    #[cfg(feature = "v1_26")]
4808    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4809    pub fn gst_caps_new_id_str_empty_simple(media_type: *const GstIdStr) -> *mut GstCaps;
4810    #[cfg(feature = "v1_26")]
4811    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4812    pub fn gst_caps_new_id_str_simple(
4813        media_type: *const GstIdStr,
4814        fieldname: *const GstIdStr,
4815        ...
4816    ) -> *mut GstCaps;
4817    pub fn gst_caps_new_simple(
4818        media_type: *const c_char,
4819        fieldname: *const c_char,
4820        ...
4821    ) -> *mut GstCaps;
4822    #[cfg(feature = "v1_26")]
4823    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4824    pub fn gst_caps_new_static_str_empty_simple(media_type: *const c_char) -> *mut GstCaps;
4825    #[cfg(feature = "v1_26")]
4826    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4827    pub fn gst_caps_new_static_str_simple(
4828        media_type: *const c_char,
4829        fieldname: *const c_char,
4830        ...
4831    ) -> *mut GstCaps;
4832    pub fn gst_caps_append(caps1: *mut GstCaps, caps2: *mut GstCaps);
4833    pub fn gst_caps_append_structure(caps: *mut GstCaps, structure: *mut GstStructure);
4834    pub fn gst_caps_append_structure_full(
4835        caps: *mut GstCaps,
4836        structure: *mut GstStructure,
4837        features: *mut GstCapsFeatures,
4838    );
4839    pub fn gst_caps_can_intersect(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4840    #[cfg(feature = "v1_16")]
4841    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4842    pub fn gst_caps_copy(caps: *const GstCaps) -> *mut GstCaps;
4843    #[cfg(feature = "v1_16")]
4844    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4845    pub fn gst_caps_copy_nth(caps: *const GstCaps, nth: c_uint) -> *mut GstCaps;
4846    pub fn gst_caps_filter_and_map_in_place(
4847        caps: *mut GstCaps,
4848        func: GstCapsFilterMapFunc,
4849        user_data: gpointer,
4850    );
4851    pub fn gst_caps_fixate(caps: *mut GstCaps) -> *mut GstCaps;
4852    pub fn gst_caps_foreach(
4853        caps: *const GstCaps,
4854        func: GstCapsForeachFunc,
4855        user_data: gpointer,
4856    ) -> gboolean;
4857    pub fn gst_caps_get_features(caps: *const GstCaps, index: c_uint) -> *mut GstCapsFeatures;
4858    pub fn gst_caps_get_size(caps: *const GstCaps) -> c_uint;
4859    pub fn gst_caps_get_structure(caps: *const GstCaps, index: c_uint) -> *mut GstStructure;
4860    #[cfg(feature = "v1_26")]
4861    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4862    pub fn gst_caps_id_str_set_simple(caps: *mut GstCaps, field: *const GstIdStr, ...);
4863    //#[cfg(feature = "v1_26")]
4864    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4865    //pub fn gst_caps_id_str_set_simple_valist(caps: *mut GstCaps, field: *const GstIdStr, varargs: /*Unimplemented*/va_list);
4866    #[cfg(feature = "v1_26")]
4867    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4868    pub fn gst_caps_id_str_set_value(
4869        caps: *mut GstCaps,
4870        field: *const GstIdStr,
4871        value: *const gobject::GValue,
4872    );
4873    pub fn gst_caps_intersect(caps1: *mut GstCaps, caps2: *mut GstCaps) -> *mut GstCaps;
4874    pub fn gst_caps_intersect_full(
4875        caps1: *mut GstCaps,
4876        caps2: *mut GstCaps,
4877        mode: GstCapsIntersectMode,
4878    ) -> *mut GstCaps;
4879    pub fn gst_caps_is_always_compatible(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4880    pub fn gst_caps_is_any(caps: *const GstCaps) -> gboolean;
4881    pub fn gst_caps_is_empty(caps: *const GstCaps) -> gboolean;
4882    pub fn gst_caps_is_equal(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4883    pub fn gst_caps_is_equal_fixed(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4884    pub fn gst_caps_is_fixed(caps: *const GstCaps) -> gboolean;
4885    pub fn gst_caps_is_strictly_equal(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4886    pub fn gst_caps_is_subset(subset: *const GstCaps, superset: *const GstCaps) -> gboolean;
4887    pub fn gst_caps_is_subset_structure(
4888        caps: *const GstCaps,
4889        structure: *const GstStructure,
4890    ) -> gboolean;
4891    pub fn gst_caps_is_subset_structure_full(
4892        caps: *const GstCaps,
4893        structure: *const GstStructure,
4894        features: *const GstCapsFeatures,
4895    ) -> gboolean;
4896    pub fn gst_caps_map_in_place(
4897        caps: *mut GstCaps,
4898        func: GstCapsMapFunc,
4899        user_data: gpointer,
4900    ) -> gboolean;
4901    pub fn gst_caps_merge(caps1: *mut GstCaps, caps2: *mut GstCaps) -> *mut GstCaps;
4902    pub fn gst_caps_merge_structure(
4903        caps: *mut GstCaps,
4904        structure: *mut GstStructure,
4905    ) -> *mut GstCaps;
4906    pub fn gst_caps_merge_structure_full(
4907        caps: *mut GstCaps,
4908        structure: *mut GstStructure,
4909        features: *mut GstCapsFeatures,
4910    ) -> *mut GstCaps;
4911    pub fn gst_caps_normalize(caps: *mut GstCaps) -> *mut GstCaps;
4912    #[cfg(feature = "v1_18_3")]
4913    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4914    pub fn gst_caps_ref(caps: *mut GstCaps) -> *mut GstCaps;
4915    pub fn gst_caps_remove_structure(caps: *mut GstCaps, idx: c_uint);
4916    #[cfg(feature = "v1_20")]
4917    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4918    pub fn gst_caps_serialize(caps: *const GstCaps, flags: GstSerializeFlags) -> *mut c_char;
4919    pub fn gst_caps_set_features(caps: *mut GstCaps, index: c_uint, features: *mut GstCapsFeatures);
4920    #[cfg(feature = "v1_16")]
4921    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4922    pub fn gst_caps_set_features_simple(caps: *mut GstCaps, features: *mut GstCapsFeatures);
4923    pub fn gst_caps_set_simple(caps: *mut GstCaps, field: *const c_char, ...);
4924    #[cfg(feature = "v1_26")]
4925    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4926    pub fn gst_caps_set_simple_static_str(caps: *mut GstCaps, field: *const c_char, ...);
4927    //#[cfg(feature = "v1_26")]
4928    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4929    //pub fn gst_caps_set_simple_static_str_valist(caps: *mut GstCaps, field: *const c_char, varargs: /*Unimplemented*/va_list);
4930    //pub fn gst_caps_set_simple_valist(caps: *mut GstCaps, field: *const c_char, varargs: /*Unimplemented*/va_list);
4931    pub fn gst_caps_set_value(
4932        caps: *mut GstCaps,
4933        field: *const c_char,
4934        value: *const gobject::GValue,
4935    );
4936    #[cfg(feature = "v1_26")]
4937    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4938    pub fn gst_caps_set_value_static_str(
4939        caps: *mut GstCaps,
4940        field: *const c_char,
4941        value: *const gobject::GValue,
4942    );
4943    pub fn gst_caps_simplify(caps: *mut GstCaps) -> *mut GstCaps;
4944    pub fn gst_caps_steal_structure(caps: *mut GstCaps, index: c_uint) -> *mut GstStructure;
4945    pub fn gst_caps_subtract(minuend: *mut GstCaps, subtrahend: *mut GstCaps) -> *mut GstCaps;
4946    pub fn gst_caps_to_string(caps: *const GstCaps) -> *mut c_char;
4947    pub fn gst_caps_truncate(caps: *mut GstCaps) -> *mut GstCaps;
4948    #[cfg(feature = "v1_18_3")]
4949    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4950    pub fn gst_caps_unref(caps: *mut GstCaps);
4951    pub fn gst_caps_from_string(string: *const c_char) -> *mut GstCaps;
4952    #[cfg(feature = "v1_18_3")]
4953    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4954    pub fn gst_caps_replace(old_caps: *mut *mut GstCaps, new_caps: *mut GstCaps) -> gboolean;
4955    #[cfg(feature = "v1_18_3")]
4956    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4957    pub fn gst_caps_take(old_caps: *mut *mut GstCaps, new_caps: *mut GstCaps) -> gboolean;
4958
4959    //=========================================================================
4960    // GstCapsFeatures
4961    //=========================================================================
4962    pub fn gst_caps_features_get_type() -> GType;
4963    pub fn gst_caps_features_new(feature1: *const c_char, ...) -> *mut GstCapsFeatures;
4964    pub fn gst_caps_features_new_any() -> *mut GstCapsFeatures;
4965    pub fn gst_caps_features_new_empty() -> *mut GstCapsFeatures;
4966    pub fn gst_caps_features_new_id(feature1: glib::GQuark, ...) -> *mut GstCapsFeatures;
4967    #[cfg(feature = "v1_26")]
4968    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4969    pub fn gst_caps_features_new_id_str(feature1: *const GstIdStr, ...) -> *mut GstCapsFeatures;
4970    //#[cfg(feature = "v1_26")]
4971    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4972    //pub fn gst_caps_features_new_id_str_valist(feature1: *const GstIdStr, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
4973    //pub fn gst_caps_features_new_id_valist(feature1: glib::GQuark, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
4974    #[cfg(feature = "v1_20")]
4975    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4976    pub fn gst_caps_features_new_single(feature: *const c_char) -> *mut GstCapsFeatures;
4977    #[cfg(feature = "v1_26")]
4978    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4979    pub fn gst_caps_features_new_single_static_str(feature: *const c_char) -> *mut GstCapsFeatures;
4980    #[cfg(feature = "v1_26")]
4981    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4982    pub fn gst_caps_features_new_static_str(feature1: *const c_char, ...) -> *mut GstCapsFeatures;
4983    //#[cfg(feature = "v1_26")]
4984    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4985    //pub fn gst_caps_features_new_static_str_valist(feature1: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
4986    //pub fn gst_caps_features_new_valist(feature1: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
4987    pub fn gst_caps_features_add(features: *mut GstCapsFeatures, feature: *const c_char);
4988    pub fn gst_caps_features_add_id(features: *mut GstCapsFeatures, feature: glib::GQuark);
4989    #[cfg(feature = "v1_26")]
4990    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4991    pub fn gst_caps_features_add_id_str(features: *mut GstCapsFeatures, feature: *const GstIdStr);
4992    #[cfg(feature = "v1_26")]
4993    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4994    pub fn gst_caps_features_add_static_str(features: *mut GstCapsFeatures, feature: *const c_char);
4995    pub fn gst_caps_features_contains(
4996        features: *const GstCapsFeatures,
4997        feature: *const c_char,
4998    ) -> gboolean;
4999    pub fn gst_caps_features_contains_id(
5000        features: *const GstCapsFeatures,
5001        feature: glib::GQuark,
5002    ) -> gboolean;
5003    #[cfg(feature = "v1_26")]
5004    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5005    pub fn gst_caps_features_contains_id_str(
5006        features: *const GstCapsFeatures,
5007        feature: *const GstIdStr,
5008    ) -> gboolean;
5009    pub fn gst_caps_features_copy(features: *const GstCapsFeatures) -> *mut GstCapsFeatures;
5010    pub fn gst_caps_features_free(features: *mut GstCapsFeatures);
5011    pub fn gst_caps_features_get_nth(features: *const GstCapsFeatures, i: c_uint) -> *const c_char;
5012    pub fn gst_caps_features_get_nth_id(
5013        features: *const GstCapsFeatures,
5014        i: c_uint,
5015    ) -> glib::GQuark;
5016    #[cfg(feature = "v1_26")]
5017    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5018    pub fn gst_caps_features_get_nth_id_str(
5019        features: *const GstCapsFeatures,
5020        i: c_uint,
5021    ) -> *const GstIdStr;
5022    pub fn gst_caps_features_get_size(features: *const GstCapsFeatures) -> c_uint;
5023    pub fn gst_caps_features_is_any(features: *const GstCapsFeatures) -> gboolean;
5024    pub fn gst_caps_features_is_equal(
5025        features1: *const GstCapsFeatures,
5026        features2: *const GstCapsFeatures,
5027    ) -> gboolean;
5028    pub fn gst_caps_features_remove(features: *mut GstCapsFeatures, feature: *const c_char);
5029    pub fn gst_caps_features_remove_id(features: *mut GstCapsFeatures, feature: glib::GQuark);
5030    #[cfg(feature = "v1_26")]
5031    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5032    pub fn gst_caps_features_remove_id_str(
5033        features: *mut GstCapsFeatures,
5034        feature: *const GstIdStr,
5035    );
5036    pub fn gst_caps_features_set_parent_refcount(
5037        features: *mut GstCapsFeatures,
5038        refcount: *mut c_int,
5039    ) -> gboolean;
5040    pub fn gst_caps_features_to_string(features: *const GstCapsFeatures) -> *mut c_char;
5041    pub fn gst_caps_features_from_string(features: *const c_char) -> *mut GstCapsFeatures;
5042
5043    //=========================================================================
5044    // GstContext
5045    //=========================================================================
5046    pub fn gst_context_get_type() -> GType;
5047    pub fn gst_context_new(context_type: *const c_char, persistent: gboolean) -> *mut GstContext;
5048    #[cfg(feature = "v1_18_3")]
5049    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5050    pub fn gst_context_copy(context: *const GstContext) -> *mut GstContext;
5051    pub fn gst_context_get_context_type(context: *const GstContext) -> *const c_char;
5052    pub fn gst_context_get_structure(context: *const GstContext) -> *const GstStructure;
5053    pub fn gst_context_has_context_type(
5054        context: *const GstContext,
5055        context_type: *const c_char,
5056    ) -> gboolean;
5057    pub fn gst_context_is_persistent(context: *const GstContext) -> gboolean;
5058    #[cfg(feature = "v1_18_3")]
5059    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5060    pub fn gst_context_ref(context: *mut GstContext) -> *mut GstContext;
5061    #[cfg(feature = "v1_18_3")]
5062    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5063    pub fn gst_context_unref(context: *mut GstContext);
5064    pub fn gst_context_writable_structure(context: *mut GstContext) -> *mut GstStructure;
5065    #[cfg(feature = "v1_18_3")]
5066    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5067    pub fn gst_context_replace(
5068        old_context: *mut *mut GstContext,
5069        new_context: *mut GstContext,
5070    ) -> gboolean;
5071
5072    //=========================================================================
5073    // GstCustomMeta
5074    //=========================================================================
5075    #[cfg(feature = "v1_20")]
5076    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5077    pub fn gst_custom_meta_get_structure(meta: *mut GstCustomMeta) -> *mut GstStructure;
5078    #[cfg(feature = "v1_20")]
5079    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5080    pub fn gst_custom_meta_has_name(meta: *mut GstCustomMeta, name: *const c_char) -> gboolean;
5081
5082    //=========================================================================
5083    // GstDateTime
5084    //=========================================================================
5085    pub fn gst_date_time_get_type() -> GType;
5086    pub fn gst_date_time_new(
5087        tzoffset: c_float,
5088        year: c_int,
5089        month: c_int,
5090        day: c_int,
5091        hour: c_int,
5092        minute: c_int,
5093        seconds: c_double,
5094    ) -> *mut GstDateTime;
5095    pub fn gst_date_time_new_from_g_date_time(dt: *mut glib::GDateTime) -> *mut GstDateTime;
5096    pub fn gst_date_time_new_from_iso8601_string(string: *const c_char) -> *mut GstDateTime;
5097    pub fn gst_date_time_new_from_unix_epoch_local_time(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_local_time_usecs(usecs: i64) -> *mut GstDateTime;
5101    pub fn gst_date_time_new_from_unix_epoch_utc(secs: i64) -> *mut GstDateTime;
5102    #[cfg(feature = "v1_18")]
5103    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5104    pub fn gst_date_time_new_from_unix_epoch_utc_usecs(usecs: i64) -> *mut GstDateTime;
5105    pub fn gst_date_time_new_local_time(
5106        year: c_int,
5107        month: c_int,
5108        day: c_int,
5109        hour: c_int,
5110        minute: c_int,
5111        seconds: c_double,
5112    ) -> *mut GstDateTime;
5113    pub fn gst_date_time_new_now_local_time() -> *mut GstDateTime;
5114    pub fn gst_date_time_new_now_utc() -> *mut GstDateTime;
5115    pub fn gst_date_time_new_y(year: c_int) -> *mut GstDateTime;
5116    pub fn gst_date_time_new_ym(year: c_int, month: c_int) -> *mut GstDateTime;
5117    pub fn gst_date_time_new_ymd(year: c_int, month: c_int, day: c_int) -> *mut GstDateTime;
5118    pub fn gst_date_time_get_day(datetime: *const GstDateTime) -> c_int;
5119    pub fn gst_date_time_get_hour(datetime: *const GstDateTime) -> c_int;
5120    pub fn gst_date_time_get_microsecond(datetime: *const GstDateTime) -> c_int;
5121    pub fn gst_date_time_get_minute(datetime: *const GstDateTime) -> c_int;
5122    pub fn gst_date_time_get_month(datetime: *const GstDateTime) -> c_int;
5123    pub fn gst_date_time_get_second(datetime: *const GstDateTime) -> c_int;
5124    pub fn gst_date_time_get_time_zone_offset(datetime: *const GstDateTime) -> c_float;
5125    pub fn gst_date_time_get_year(datetime: *const GstDateTime) -> c_int;
5126    pub fn gst_date_time_has_day(datetime: *const GstDateTime) -> gboolean;
5127    pub fn gst_date_time_has_month(datetime: *const GstDateTime) -> gboolean;
5128    pub fn gst_date_time_has_second(datetime: *const GstDateTime) -> gboolean;
5129    pub fn gst_date_time_has_time(datetime: *const GstDateTime) -> gboolean;
5130    pub fn gst_date_time_has_year(datetime: *const GstDateTime) -> gboolean;
5131    pub fn gst_date_time_ref(datetime: *mut GstDateTime) -> *mut GstDateTime;
5132    pub fn gst_date_time_to_g_date_time(datetime: *mut GstDateTime) -> *mut glib::GDateTime;
5133    pub fn gst_date_time_to_iso8601_string(datetime: *mut GstDateTime) -> *mut c_char;
5134    pub fn gst_date_time_unref(datetime: *mut GstDateTime);
5135
5136    //=========================================================================
5137    // GstDebugCategory
5138    //=========================================================================
5139    pub fn gst_debug_category_free(category: *mut GstDebugCategory);
5140    pub fn gst_debug_category_get_color(category: *mut GstDebugCategory) -> c_uint;
5141    pub fn gst_debug_category_get_description(category: *mut GstDebugCategory) -> *const c_char;
5142    pub fn gst_debug_category_get_name(category: *mut GstDebugCategory) -> *const c_char;
5143    pub fn gst_debug_category_get_threshold(category: *mut GstDebugCategory) -> GstDebugLevel;
5144    pub fn gst_debug_category_reset_threshold(category: *mut GstDebugCategory);
5145    pub fn gst_debug_category_set_threshold(category: *mut GstDebugCategory, level: GstDebugLevel);
5146
5147    //=========================================================================
5148    // GstDebugMessage
5149    //=========================================================================
5150    pub fn gst_debug_message_get(message: *mut GstDebugMessage) -> *const c_char;
5151    #[cfg(feature = "v1_22")]
5152    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
5153    pub fn gst_debug_message_get_id(message: *mut GstDebugMessage) -> *const c_char;
5154
5155    //=========================================================================
5156    // GstDeviceProviderClass
5157    //=========================================================================
5158    pub fn gst_device_provider_class_add_metadata(
5159        klass: *mut GstDeviceProviderClass,
5160        key: *const c_char,
5161        value: *const c_char,
5162    );
5163    pub fn gst_device_provider_class_add_static_metadata(
5164        klass: *mut GstDeviceProviderClass,
5165        key: *const c_char,
5166        value: *const c_char,
5167    );
5168    pub fn gst_device_provider_class_get_metadata(
5169        klass: *mut GstDeviceProviderClass,
5170        key: *const c_char,
5171    ) -> *const c_char;
5172    pub fn gst_device_provider_class_set_metadata(
5173        klass: *mut GstDeviceProviderClass,
5174        longname: *const c_char,
5175        classification: *const c_char,
5176        description: *const c_char,
5177        author: *const c_char,
5178    );
5179    pub fn gst_device_provider_class_set_static_metadata(
5180        klass: *mut GstDeviceProviderClass,
5181        longname: *const c_char,
5182        classification: *const c_char,
5183        description: *const c_char,
5184        author: *const c_char,
5185    );
5186
5187    //=========================================================================
5188    // GstElementClass
5189    //=========================================================================
5190    pub fn gst_element_class_add_metadata(
5191        klass: *mut GstElementClass,
5192        key: *const c_char,
5193        value: *const c_char,
5194    );
5195    pub fn gst_element_class_add_pad_template(
5196        klass: *mut GstElementClass,
5197        templ: *mut GstPadTemplate,
5198    );
5199    pub fn gst_element_class_add_static_metadata(
5200        klass: *mut GstElementClass,
5201        key: *const c_char,
5202        value: *const c_char,
5203    );
5204    pub fn gst_element_class_add_static_pad_template(
5205        klass: *mut GstElementClass,
5206        static_templ: *mut GstStaticPadTemplate,
5207    );
5208    pub fn gst_element_class_add_static_pad_template_with_gtype(
5209        klass: *mut GstElementClass,
5210        static_templ: *mut GstStaticPadTemplate,
5211        pad_type: GType,
5212    );
5213    pub fn gst_element_class_get_metadata(
5214        klass: *mut GstElementClass,
5215        key: *const c_char,
5216    ) -> *const c_char;
5217    pub fn gst_element_class_get_pad_template(
5218        element_class: *mut GstElementClass,
5219        name: *const c_char,
5220    ) -> *mut GstPadTemplate;
5221    pub fn gst_element_class_get_pad_template_list(
5222        element_class: *mut GstElementClass,
5223    ) -> *mut glib::GList;
5224    pub fn gst_element_class_set_metadata(
5225        klass: *mut GstElementClass,
5226        longname: *const c_char,
5227        classification: *const c_char,
5228        description: *const c_char,
5229        author: *const c_char,
5230    );
5231    pub fn gst_element_class_set_static_metadata(
5232        klass: *mut GstElementClass,
5233        longname: *const c_char,
5234        classification: *const c_char,
5235        description: *const c_char,
5236        author: *const c_char,
5237    );
5238
5239    //=========================================================================
5240    // GstEvent
5241    //=========================================================================
5242    pub fn gst_event_get_type() -> GType;
5243    pub fn gst_event_new_buffer_size(
5244        format: GstFormat,
5245        minsize: i64,
5246        maxsize: i64,
5247        async_: gboolean,
5248    ) -> *mut GstEvent;
5249    pub fn gst_event_new_caps(caps: *mut GstCaps) -> *mut GstEvent;
5250    pub fn gst_event_new_custom(type_: GstEventType, structure: *mut GstStructure)
5251        -> *mut GstEvent;
5252    pub fn gst_event_new_eos() -> *mut GstEvent;
5253    pub fn gst_event_new_flush_start() -> *mut GstEvent;
5254    pub fn gst_event_new_flush_stop(reset_time: gboolean) -> *mut GstEvent;
5255    pub fn gst_event_new_gap(timestamp: GstClockTime, duration: GstClockTime) -> *mut GstEvent;
5256    #[cfg(feature = "v1_18")]
5257    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5258    pub fn gst_event_new_instant_rate_change(
5259        rate_multiplier: c_double,
5260        new_flags: GstSegmentFlags,
5261    ) -> *mut GstEvent;
5262    #[cfg(feature = "v1_18")]
5263    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5264    pub fn gst_event_new_instant_rate_sync_time(
5265        rate_multiplier: c_double,
5266        running_time: GstClockTime,
5267        upstream_running_time: GstClockTime,
5268    ) -> *mut GstEvent;
5269    pub fn gst_event_new_latency(latency: GstClockTime) -> *mut GstEvent;
5270    pub fn gst_event_new_navigation(structure: *mut GstStructure) -> *mut GstEvent;
5271    pub fn gst_event_new_protection(
5272        system_id: *const c_char,
5273        data: *mut GstBuffer,
5274        origin: *const c_char,
5275    ) -> *mut GstEvent;
5276    pub fn gst_event_new_qos(
5277        type_: GstQOSType,
5278        proportion: c_double,
5279        diff: GstClockTimeDiff,
5280        timestamp: GstClockTime,
5281    ) -> *mut GstEvent;
5282    pub fn gst_event_new_reconfigure() -> *mut GstEvent;
5283    pub fn gst_event_new_seek(
5284        rate: c_double,
5285        format: GstFormat,
5286        flags: GstSeekFlags,
5287        start_type: GstSeekType,
5288        start: i64,
5289        stop_type: GstSeekType,
5290        stop: i64,
5291    ) -> *mut GstEvent;
5292    pub fn gst_event_new_segment(segment: *const GstSegment) -> *mut GstEvent;
5293    pub fn gst_event_new_segment_done(format: GstFormat, position: i64) -> *mut GstEvent;
5294    pub fn gst_event_new_select_streams(streams: *mut glib::GList) -> *mut GstEvent;
5295    pub fn gst_event_new_sink_message(name: *const c_char, msg: *mut GstMessage) -> *mut GstEvent;
5296    pub fn gst_event_new_step(
5297        format: GstFormat,
5298        amount: u64,
5299        rate: c_double,
5300        flush: gboolean,
5301        intermediate: gboolean,
5302    ) -> *mut GstEvent;
5303    pub fn gst_event_new_stream_collection(collection: *mut GstStreamCollection) -> *mut GstEvent;
5304    pub fn gst_event_new_stream_group_done(group_id: c_uint) -> *mut GstEvent;
5305    pub fn gst_event_new_stream_start(stream_id: *const c_char) -> *mut GstEvent;
5306    pub fn gst_event_new_tag(taglist: *mut GstTagList) -> *mut GstEvent;
5307    pub fn gst_event_new_toc(toc: *mut GstToc, updated: gboolean) -> *mut GstEvent;
5308    pub fn gst_event_new_toc_select(uid: *const c_char) -> *mut GstEvent;
5309    #[cfg(feature = "v1_18_3")]
5310    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5311    pub fn gst_event_copy(event: *const GstEvent) -> *mut GstEvent;
5312    pub fn gst_event_copy_segment(event: *mut GstEvent, segment: *mut GstSegment);
5313    pub fn gst_event_get_running_time_offset(event: *mut GstEvent) -> i64;
5314    pub fn gst_event_get_seqnum(event: *mut GstEvent) -> u32;
5315    pub fn gst_event_get_structure(event: *mut GstEvent) -> *const GstStructure;
5316    pub fn gst_event_has_name(event: *mut GstEvent, name: *const c_char) -> gboolean;
5317    #[cfg(feature = "v1_18")]
5318    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5319    pub fn gst_event_has_name_id(event: *mut GstEvent, name: glib::GQuark) -> gboolean;
5320    pub fn gst_event_parse_buffer_size(
5321        event: *mut GstEvent,
5322        format: *mut GstFormat,
5323        minsize: *mut i64,
5324        maxsize: *mut i64,
5325        async_: *mut gboolean,
5326    );
5327    pub fn gst_event_parse_caps(event: *mut GstEvent, caps: *mut *mut GstCaps);
5328    pub fn gst_event_parse_flush_stop(event: *mut GstEvent, reset_time: *mut gboolean);
5329    pub fn gst_event_parse_gap(
5330        event: *mut GstEvent,
5331        timestamp: *mut GstClockTime,
5332        duration: *mut GstClockTime,
5333    );
5334    #[cfg(feature = "v1_20")]
5335    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5336    pub fn gst_event_parse_gap_flags(event: *mut GstEvent, flags: *mut GstGapFlags);
5337    pub fn gst_event_parse_group_id(event: *mut GstEvent, group_id: *mut c_uint) -> gboolean;
5338    #[cfg(feature = "v1_18")]
5339    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5340    pub fn gst_event_parse_instant_rate_change(
5341        event: *mut GstEvent,
5342        rate_multiplier: *mut c_double,
5343        new_flags: *mut GstSegmentFlags,
5344    );
5345    #[cfg(feature = "v1_18")]
5346    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5347    pub fn gst_event_parse_instant_rate_sync_time(
5348        event: *mut GstEvent,
5349        rate_multiplier: *mut c_double,
5350        running_time: *mut GstClockTime,
5351        upstream_running_time: *mut GstClockTime,
5352    );
5353    pub fn gst_event_parse_latency(event: *mut GstEvent, latency: *mut GstClockTime);
5354    pub fn gst_event_parse_protection(
5355        event: *mut GstEvent,
5356        system_id: *mut *const c_char,
5357        data: *mut *mut GstBuffer,
5358        origin: *mut *const c_char,
5359    );
5360    pub fn gst_event_parse_qos(
5361        event: *mut GstEvent,
5362        type_: *mut GstQOSType,
5363        proportion: *mut c_double,
5364        diff: *mut GstClockTimeDiff,
5365        timestamp: *mut GstClockTime,
5366    );
5367    pub fn gst_event_parse_seek(
5368        event: *mut GstEvent,
5369        rate: *mut c_double,
5370        format: *mut GstFormat,
5371        flags: *mut GstSeekFlags,
5372        start_type: *mut GstSeekType,
5373        start: *mut i64,
5374        stop_type: *mut GstSeekType,
5375        stop: *mut i64,
5376    );
5377    #[cfg(feature = "v1_16")]
5378    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5379    pub fn gst_event_parse_seek_trickmode_interval(
5380        event: *mut GstEvent,
5381        interval: *mut GstClockTime,
5382    );
5383    pub fn gst_event_parse_segment(event: *mut GstEvent, segment: *mut *const GstSegment);
5384    pub fn gst_event_parse_segment_done(
5385        event: *mut GstEvent,
5386        format: *mut GstFormat,
5387        position: *mut i64,
5388    );
5389    pub fn gst_event_parse_select_streams(event: *mut GstEvent, streams: *mut *mut glib::GList);
5390    pub fn gst_event_parse_sink_message(event: *mut GstEvent, msg: *mut *mut GstMessage);
5391    pub fn gst_event_parse_step(
5392        event: *mut GstEvent,
5393        format: *mut GstFormat,
5394        amount: *mut u64,
5395        rate: *mut c_double,
5396        flush: *mut gboolean,
5397        intermediate: *mut gboolean,
5398    );
5399    pub fn gst_event_parse_stream(event: *mut GstEvent, stream: *mut *mut GstStream);
5400    pub fn gst_event_parse_stream_collection(
5401        event: *mut GstEvent,
5402        collection: *mut *mut GstStreamCollection,
5403    );
5404    pub fn gst_event_parse_stream_flags(event: *mut GstEvent, flags: *mut GstStreamFlags);
5405    pub fn gst_event_parse_stream_group_done(event: *mut GstEvent, group_id: *mut c_uint);
5406    pub fn gst_event_parse_stream_start(event: *mut GstEvent, stream_id: *mut *const c_char);
5407    pub fn gst_event_parse_tag(event: *mut GstEvent, taglist: *mut *mut GstTagList);
5408    pub fn gst_event_parse_toc(event: *mut GstEvent, toc: *mut *mut GstToc, updated: *mut gboolean);
5409    pub fn gst_event_parse_toc_select(event: *mut GstEvent, uid: *mut *mut c_char);
5410    #[cfg(feature = "v1_18_3")]
5411    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5412    pub fn gst_event_ref(event: *mut GstEvent) -> *mut GstEvent;
5413    #[cfg(feature = "v1_20")]
5414    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5415    pub fn gst_event_set_gap_flags(event: *mut GstEvent, flags: GstGapFlags);
5416    pub fn gst_event_set_group_id(event: *mut GstEvent, group_id: c_uint);
5417    pub fn gst_event_set_running_time_offset(event: *mut GstEvent, offset: i64);
5418    #[cfg(feature = "v1_16")]
5419    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5420    pub fn gst_event_set_seek_trickmode_interval(event: *mut GstEvent, interval: GstClockTime);
5421    pub fn gst_event_set_seqnum(event: *mut GstEvent, seqnum: u32);
5422    pub fn gst_event_set_stream(event: *mut GstEvent, stream: *mut GstStream);
5423    pub fn gst_event_set_stream_flags(event: *mut GstEvent, flags: GstStreamFlags);
5424    #[cfg(feature = "v1_18_3")]
5425    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5426    pub fn gst_event_unref(event: *mut GstEvent);
5427    pub fn gst_event_writable_structure(event: *mut GstEvent) -> *mut GstStructure;
5428    #[cfg(feature = "v1_18_3")]
5429    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5430    pub fn gst_event_replace(old_event: *mut *mut GstEvent, new_event: *mut GstEvent) -> gboolean;
5431    #[cfg(feature = "v1_18_3")]
5432    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5433    pub fn gst_event_steal(old_event: *mut *mut GstEvent) -> *mut GstEvent;
5434    #[cfg(feature = "v1_18_3")]
5435    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5436    pub fn gst_event_take(old_event: *mut *mut GstEvent, new_event: *mut GstEvent) -> gboolean;
5437
5438    //=========================================================================
5439    // GstIdStr
5440    //=========================================================================
5441    #[cfg(feature = "v1_26")]
5442    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5443    pub fn gst_id_str_get_type() -> GType;
5444    #[cfg(feature = "v1_26")]
5445    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5446    pub fn gst_id_str_new() -> *mut GstIdStr;
5447    #[cfg(feature = "v1_26")]
5448    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5449    pub fn gst_id_str_as_str(s: *const GstIdStr) -> *const c_char;
5450    #[cfg(feature = "v1_26")]
5451    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5452    pub fn gst_id_str_clear(s: *mut GstIdStr);
5453    #[cfg(feature = "v1_26")]
5454    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5455    pub fn gst_id_str_copy(s: *const GstIdStr) -> *mut GstIdStr;
5456    #[cfg(feature = "v1_26")]
5457    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5458    pub fn gst_id_str_copy_into(d: *mut GstIdStr, s: *const GstIdStr);
5459    #[cfg(feature = "v1_26")]
5460    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5461    pub fn gst_id_str_free(s: *mut GstIdStr);
5462    #[cfg(feature = "v1_26")]
5463    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5464    pub fn gst_id_str_get_len(s: *const GstIdStr) -> size_t;
5465    #[cfg(feature = "v1_26")]
5466    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5467    pub fn gst_id_str_init(s: *mut GstIdStr);
5468    #[cfg(feature = "v1_26")]
5469    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5470    pub fn gst_id_str_is_equal(s1: *const GstIdStr, s2: *const GstIdStr) -> gboolean;
5471    #[cfg(feature = "v1_26")]
5472    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5473    pub fn gst_id_str_is_equal_to_str(s1: *const GstIdStr, s2: *const c_char) -> gboolean;
5474    #[cfg(feature = "v1_26")]
5475    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5476    pub fn gst_id_str_is_equal_to_str_with_len(
5477        s1: *const GstIdStr,
5478        s2: *const c_char,
5479        len: size_t,
5480    ) -> gboolean;
5481    #[cfg(feature = "v1_26")]
5482    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5483    pub fn gst_id_str_move(d: *mut GstIdStr, s: *mut GstIdStr);
5484    #[cfg(feature = "v1_26")]
5485    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5486    pub fn gst_id_str_set(s: *mut GstIdStr, value: *const c_char);
5487    #[cfg(feature = "v1_26")]
5488    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5489    pub fn gst_id_str_set_static_str(s: *mut GstIdStr, value: *const c_char);
5490    #[cfg(feature = "v1_26")]
5491    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5492    pub fn gst_id_str_set_static_str_with_len(s: *mut GstIdStr, value: *const c_char, len: size_t);
5493    #[cfg(feature = "v1_26")]
5494    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5495    pub fn gst_id_str_set_with_len(s: *mut GstIdStr, value: *const c_char, len: size_t);
5496
5497    //=========================================================================
5498    // GstIterator
5499    //=========================================================================
5500    pub fn gst_iterator_get_type() -> GType;
5501    pub fn gst_iterator_new(
5502        size: c_uint,
5503        type_: GType,
5504        lock: *mut glib::GMutex,
5505        master_cookie: *mut u32,
5506        copy: GstIteratorCopyFunction,
5507        next: GstIteratorNextFunction,
5508        item: GstIteratorItemFunction,
5509        resync: GstIteratorResyncFunction,
5510        free: GstIteratorFreeFunction,
5511    ) -> *mut GstIterator;
5512    pub fn gst_iterator_new_list(
5513        type_: GType,
5514        lock: *mut glib::GMutex,
5515        master_cookie: *mut u32,
5516        list: *mut *mut glib::GList,
5517        owner: *mut gobject::GObject,
5518        item: GstIteratorItemFunction,
5519    ) -> *mut GstIterator;
5520    pub fn gst_iterator_new_single(
5521        type_: GType,
5522        object: *const gobject::GValue,
5523    ) -> *mut GstIterator;
5524    pub fn gst_iterator_copy(it: *const GstIterator) -> *mut GstIterator;
5525    pub fn gst_iterator_filter(
5526        it: *mut GstIterator,
5527        func: glib::GCompareFunc,
5528        user_data: *const gobject::GValue,
5529    ) -> *mut GstIterator;
5530    pub fn gst_iterator_find_custom(
5531        it: *mut GstIterator,
5532        func: glib::GCompareFunc,
5533        elem: *mut gobject::GValue,
5534        user_data: gpointer,
5535    ) -> gboolean;
5536    pub fn gst_iterator_fold(
5537        it: *mut GstIterator,
5538        func: GstIteratorFoldFunction,
5539        ret: *mut gobject::GValue,
5540        user_data: gpointer,
5541    ) -> GstIteratorResult;
5542    pub fn gst_iterator_foreach(
5543        it: *mut GstIterator,
5544        func: GstIteratorForeachFunction,
5545        user_data: gpointer,
5546    ) -> GstIteratorResult;
5547    pub fn gst_iterator_free(it: *mut GstIterator);
5548    pub fn gst_iterator_next(it: *mut GstIterator, elem: *mut gobject::GValue)
5549        -> GstIteratorResult;
5550    pub fn gst_iterator_push(it: *mut GstIterator, other: *mut GstIterator);
5551    pub fn gst_iterator_resync(it: *mut GstIterator);
5552
5553    //=========================================================================
5554    // GstMemory
5555    //=========================================================================
5556    pub fn gst_memory_get_type() -> GType;
5557    pub fn gst_memory_new_wrapped(
5558        flags: GstMemoryFlags,
5559        data: gpointer,
5560        maxsize: size_t,
5561        offset: size_t,
5562        size: size_t,
5563        user_data: gpointer,
5564        notify: glib::GDestroyNotify,
5565    ) -> *mut GstMemory;
5566    pub fn gst_memory_copy(mem: *mut GstMemory, offset: ssize_t, size: ssize_t) -> *mut GstMemory;
5567    pub fn gst_memory_get_sizes(
5568        mem: *mut GstMemory,
5569        offset: *mut size_t,
5570        maxsize: *mut size_t,
5571    ) -> size_t;
5572    pub fn gst_memory_init(
5573        mem: *mut GstMemory,
5574        flags: GstMemoryFlags,
5575        allocator: *mut GstAllocator,
5576        parent: *mut GstMemory,
5577        maxsize: size_t,
5578        align: size_t,
5579        offset: size_t,
5580        size: size_t,
5581    );
5582    pub fn gst_memory_is_span(
5583        mem1: *mut GstMemory,
5584        mem2: *mut GstMemory,
5585        offset: *mut size_t,
5586    ) -> gboolean;
5587    pub fn gst_memory_is_type(mem: *mut GstMemory, mem_type: *const c_char) -> gboolean;
5588    pub fn gst_memory_make_mapped(
5589        mem: *mut GstMemory,
5590        info: *mut GstMapInfo,
5591        flags: GstMapFlags,
5592    ) -> *mut GstMemory;
5593    pub fn gst_memory_map(
5594        mem: *mut GstMemory,
5595        info: *mut GstMapInfo,
5596        flags: GstMapFlags,
5597    ) -> gboolean;
5598    #[cfg(feature = "v1_18_3")]
5599    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5600    pub fn gst_memory_ref(memory: *mut GstMemory) -> *mut GstMemory;
5601    pub fn gst_memory_resize(mem: *mut GstMemory, offset: ssize_t, size: size_t);
5602    pub fn gst_memory_share(mem: *mut GstMemory, offset: ssize_t, size: ssize_t) -> *mut GstMemory;
5603    pub fn gst_memory_unmap(mem: *mut GstMemory, info: *mut GstMapInfo);
5604    #[cfg(feature = "v1_18_3")]
5605    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5606    pub fn gst_memory_unref(memory: *mut GstMemory);
5607
5608    //=========================================================================
5609    // GstMessage
5610    //=========================================================================
5611    pub fn gst_message_get_type() -> GType;
5612    pub fn gst_message_new_application(
5613        src: *mut GstObject,
5614        structure: *mut GstStructure,
5615    ) -> *mut GstMessage;
5616    pub fn gst_message_new_async_done(
5617        src: *mut GstObject,
5618        running_time: GstClockTime,
5619    ) -> *mut GstMessage;
5620    pub fn gst_message_new_async_start(src: *mut GstObject) -> *mut GstMessage;
5621    pub fn gst_message_new_buffering(src: *mut GstObject, percent: c_int) -> *mut GstMessage;
5622    pub fn gst_message_new_clock_lost(src: *mut GstObject, clock: *mut GstClock)
5623        -> *mut GstMessage;
5624    pub fn gst_message_new_clock_provide(
5625        src: *mut GstObject,
5626        clock: *mut GstClock,
5627        ready: gboolean,
5628    ) -> *mut GstMessage;
5629    pub fn gst_message_new_custom(
5630        type_: GstMessageType,
5631        src: *mut GstObject,
5632        structure: *mut GstStructure,
5633    ) -> *mut GstMessage;
5634    pub fn gst_message_new_device_added(
5635        src: *mut GstObject,
5636        device: *mut GstDevice,
5637    ) -> *mut GstMessage;
5638    #[cfg(feature = "v1_16")]
5639    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5640    pub fn gst_message_new_device_changed(
5641        src: *mut GstObject,
5642        device: *mut GstDevice,
5643        changed_device: *mut GstDevice,
5644    ) -> *mut GstMessage;
5645    pub fn gst_message_new_device_removed(
5646        src: *mut GstObject,
5647        device: *mut GstDevice,
5648    ) -> *mut GstMessage;
5649    pub fn gst_message_new_duration_changed(src: *mut GstObject) -> *mut GstMessage;
5650    pub fn gst_message_new_element(
5651        src: *mut GstObject,
5652        structure: *mut GstStructure,
5653    ) -> *mut GstMessage;
5654    pub fn gst_message_new_eos(src: *mut GstObject) -> *mut GstMessage;
5655    pub fn gst_message_new_error(
5656        src: *mut GstObject,
5657        error: *mut glib::GError,
5658        debug: *const c_char,
5659    ) -> *mut GstMessage;
5660    pub fn gst_message_new_error_with_details(
5661        src: *mut GstObject,
5662        error: *mut glib::GError,
5663        debug: *const c_char,
5664        details: *mut GstStructure,
5665    ) -> *mut GstMessage;
5666    pub fn gst_message_new_have_context(
5667        src: *mut GstObject,
5668        context: *mut GstContext,
5669    ) -> *mut GstMessage;
5670    pub fn gst_message_new_info(
5671        src: *mut GstObject,
5672        error: *mut glib::GError,
5673        debug: *const c_char,
5674    ) -> *mut GstMessage;
5675    pub fn gst_message_new_info_with_details(
5676        src: *mut GstObject,
5677        error: *mut glib::GError,
5678        debug: *const c_char,
5679        details: *mut GstStructure,
5680    ) -> *mut GstMessage;
5681    #[cfg(feature = "v1_18")]
5682    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5683    pub fn gst_message_new_instant_rate_request(
5684        src: *mut GstObject,
5685        rate_multiplier: c_double,
5686    ) -> *mut GstMessage;
5687    pub fn gst_message_new_latency(src: *mut GstObject) -> *mut GstMessage;
5688    pub fn gst_message_new_need_context(
5689        src: *mut GstObject,
5690        context_type: *const c_char,
5691    ) -> *mut GstMessage;
5692    pub fn gst_message_new_new_clock(src: *mut GstObject, clock: *mut GstClock) -> *mut GstMessage;
5693    pub fn gst_message_new_progress(
5694        src: *mut GstObject,
5695        type_: GstProgressType,
5696        code: *const c_char,
5697        text: *const c_char,
5698    ) -> *mut GstMessage;
5699    pub fn gst_message_new_property_notify(
5700        src: *mut GstObject,
5701        property_name: *const c_char,
5702        val: *mut gobject::GValue,
5703    ) -> *mut GstMessage;
5704    pub fn gst_message_new_qos(
5705        src: *mut GstObject,
5706        live: gboolean,
5707        running_time: u64,
5708        stream_time: u64,
5709        timestamp: u64,
5710        duration: u64,
5711    ) -> *mut GstMessage;
5712    pub fn gst_message_new_redirect(
5713        src: *mut GstObject,
5714        location: *const c_char,
5715        tag_list: *mut GstTagList,
5716        entry_struct: *const GstStructure,
5717    ) -> *mut GstMessage;
5718    pub fn gst_message_new_request_state(src: *mut GstObject, state: GstState) -> *mut GstMessage;
5719    pub fn gst_message_new_reset_time(
5720        src: *mut GstObject,
5721        running_time: GstClockTime,
5722    ) -> *mut GstMessage;
5723    pub fn gst_message_new_segment_done(
5724        src: *mut GstObject,
5725        format: GstFormat,
5726        position: i64,
5727    ) -> *mut GstMessage;
5728    pub fn gst_message_new_segment_start(
5729        src: *mut GstObject,
5730        format: GstFormat,
5731        position: i64,
5732    ) -> *mut GstMessage;
5733    pub fn gst_message_new_state_changed(
5734        src: *mut GstObject,
5735        oldstate: GstState,
5736        newstate: GstState,
5737        pending: GstState,
5738    ) -> *mut GstMessage;
5739    pub fn gst_message_new_state_dirty(src: *mut GstObject) -> *mut GstMessage;
5740    pub fn gst_message_new_step_done(
5741        src: *mut GstObject,
5742        format: GstFormat,
5743        amount: u64,
5744        rate: c_double,
5745        flush: gboolean,
5746        intermediate: gboolean,
5747        duration: u64,
5748        eos: gboolean,
5749    ) -> *mut GstMessage;
5750    pub fn gst_message_new_step_start(
5751        src: *mut GstObject,
5752        active: gboolean,
5753        format: GstFormat,
5754        amount: u64,
5755        rate: c_double,
5756        flush: gboolean,
5757        intermediate: gboolean,
5758    ) -> *mut GstMessage;
5759    pub fn gst_message_new_stream_collection(
5760        src: *mut GstObject,
5761        collection: *mut GstStreamCollection,
5762    ) -> *mut GstMessage;
5763    pub fn gst_message_new_stream_start(src: *mut GstObject) -> *mut GstMessage;
5764    pub fn gst_message_new_stream_status(
5765        src: *mut GstObject,
5766        type_: GstStreamStatusType,
5767        owner: *mut GstElement,
5768    ) -> *mut GstMessage;
5769    pub fn gst_message_new_streams_selected(
5770        src: *mut GstObject,
5771        collection: *mut GstStreamCollection,
5772    ) -> *mut GstMessage;
5773    pub fn gst_message_new_structure_change(
5774        src: *mut GstObject,
5775        type_: GstStructureChangeType,
5776        owner: *mut GstElement,
5777        busy: gboolean,
5778    ) -> *mut GstMessage;
5779    pub fn gst_message_new_tag(src: *mut GstObject, tag_list: *mut GstTagList) -> *mut GstMessage;
5780    pub fn gst_message_new_toc(
5781        src: *mut GstObject,
5782        toc: *mut GstToc,
5783        updated: gboolean,
5784    ) -> *mut GstMessage;
5785    pub fn gst_message_new_warning(
5786        src: *mut GstObject,
5787        error: *mut glib::GError,
5788        debug: *const c_char,
5789    ) -> *mut GstMessage;
5790    pub fn gst_message_new_warning_with_details(
5791        src: *mut GstObject,
5792        error: *mut glib::GError,
5793        debug: *const c_char,
5794        details: *mut GstStructure,
5795    ) -> *mut GstMessage;
5796    pub fn gst_message_add_redirect_entry(
5797        message: *mut GstMessage,
5798        location: *const c_char,
5799        tag_list: *mut GstTagList,
5800        entry_struct: *const GstStructure,
5801    );
5802    #[cfg(feature = "v1_18_3")]
5803    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5804    pub fn gst_message_copy(msg: *const GstMessage) -> *mut GstMessage;
5805    #[cfg(feature = "v1_26")]
5806    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5807    pub fn gst_message_get_details(message: *mut GstMessage) -> *const GstStructure;
5808    pub fn gst_message_get_num_redirect_entries(message: *mut GstMessage) -> size_t;
5809    pub fn gst_message_get_seqnum(message: *mut GstMessage) -> u32;
5810    pub fn gst_message_get_stream_status_object(message: *mut GstMessage)
5811        -> *const gobject::GValue;
5812    pub fn gst_message_get_structure(message: *mut GstMessage) -> *const GstStructure;
5813    pub fn gst_message_has_name(message: *mut GstMessage, name: *const c_char) -> gboolean;
5814    pub fn gst_message_parse_async_done(message: *mut GstMessage, running_time: *mut GstClockTime);
5815    pub fn gst_message_parse_buffering(message: *mut GstMessage, percent: *mut c_int);
5816    pub fn gst_message_parse_buffering_stats(
5817        message: *mut GstMessage,
5818        mode: *mut GstBufferingMode,
5819        avg_in: *mut c_int,
5820        avg_out: *mut c_int,
5821        buffering_left: *mut i64,
5822    );
5823    pub fn gst_message_parse_clock_lost(message: *mut GstMessage, clock: *mut *mut GstClock);
5824    pub fn gst_message_parse_clock_provide(
5825        message: *mut GstMessage,
5826        clock: *mut *mut GstClock,
5827        ready: *mut gboolean,
5828    );
5829    pub fn gst_message_parse_context_type(
5830        message: *mut GstMessage,
5831        context_type: *mut *const c_char,
5832    ) -> gboolean;
5833    pub fn gst_message_parse_device_added(message: *mut GstMessage, device: *mut *mut GstDevice);
5834    #[cfg(feature = "v1_16")]
5835    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5836    pub fn gst_message_parse_device_changed(
5837        message: *mut GstMessage,
5838        device: *mut *mut GstDevice,
5839        changed_device: *mut *mut GstDevice,
5840    );
5841    pub fn gst_message_parse_device_removed(message: *mut GstMessage, device: *mut *mut GstDevice);
5842    pub fn gst_message_parse_error(
5843        message: *mut GstMessage,
5844        gerror: *mut *mut glib::GError,
5845        debug: *mut *mut c_char,
5846    );
5847    pub fn gst_message_parse_error_details(
5848        message: *mut GstMessage,
5849        structure: *mut *const GstStructure,
5850    );
5851    #[cfg(feature = "v1_26")]
5852    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5853    pub fn gst_message_parse_error_writable_details(
5854        message: *mut GstMessage,
5855        structure: *mut *mut GstStructure,
5856    );
5857    pub fn gst_message_parse_group_id(message: *mut GstMessage, group_id: *mut c_uint) -> gboolean;
5858    pub fn gst_message_parse_have_context(message: *mut GstMessage, context: *mut *mut GstContext);
5859    pub fn gst_message_parse_info(
5860        message: *mut GstMessage,
5861        gerror: *mut *mut glib::GError,
5862        debug: *mut *mut c_char,
5863    );
5864    pub fn gst_message_parse_info_details(
5865        message: *mut GstMessage,
5866        structure: *mut *const GstStructure,
5867    );
5868    #[cfg(feature = "v1_26")]
5869    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5870    pub fn gst_message_parse_info_writable_details(
5871        message: *mut GstMessage,
5872        structure: *mut *mut GstStructure,
5873    );
5874    #[cfg(feature = "v1_18")]
5875    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5876    pub fn gst_message_parse_instant_rate_request(
5877        message: *mut GstMessage,
5878        rate_multiplier: *mut c_double,
5879    );
5880    pub fn gst_message_parse_new_clock(message: *mut GstMessage, clock: *mut *mut GstClock);
5881    pub fn gst_message_parse_progress(
5882        message: *mut GstMessage,
5883        type_: *mut GstProgressType,
5884        code: *mut *mut c_char,
5885        text: *mut *mut c_char,
5886    );
5887    pub fn gst_message_parse_property_notify(
5888        message: *mut GstMessage,
5889        object: *mut *mut GstObject,
5890        property_name: *mut *const c_char,
5891        property_value: *mut *const gobject::GValue,
5892    );
5893    pub fn gst_message_parse_qos(
5894        message: *mut GstMessage,
5895        live: *mut gboolean,
5896        running_time: *mut u64,
5897        stream_time: *mut u64,
5898        timestamp: *mut u64,
5899        duration: *mut u64,
5900    );
5901    pub fn gst_message_parse_qos_stats(
5902        message: *mut GstMessage,
5903        format: *mut GstFormat,
5904        processed: *mut u64,
5905        dropped: *mut u64,
5906    );
5907    pub fn gst_message_parse_qos_values(
5908        message: *mut GstMessage,
5909        jitter: *mut i64,
5910        proportion: *mut c_double,
5911        quality: *mut c_int,
5912    );
5913    pub fn gst_message_parse_redirect_entry(
5914        message: *mut GstMessage,
5915        entry_index: size_t,
5916        location: *mut *const c_char,
5917        tag_list: *mut *mut GstTagList,
5918        entry_struct: *mut *const GstStructure,
5919    );
5920    pub fn gst_message_parse_request_state(message: *mut GstMessage, state: *mut GstState);
5921    pub fn gst_message_parse_reset_time(message: *mut GstMessage, running_time: *mut GstClockTime);
5922    pub fn gst_message_parse_segment_done(
5923        message: *mut GstMessage,
5924        format: *mut GstFormat,
5925        position: *mut i64,
5926    );
5927    pub fn gst_message_parse_segment_start(
5928        message: *mut GstMessage,
5929        format: *mut GstFormat,
5930        position: *mut i64,
5931    );
5932    pub fn gst_message_parse_state_changed(
5933        message: *mut GstMessage,
5934        oldstate: *mut GstState,
5935        newstate: *mut GstState,
5936        pending: *mut GstState,
5937    );
5938    pub fn gst_message_parse_step_done(
5939        message: *mut GstMessage,
5940        format: *mut GstFormat,
5941        amount: *mut u64,
5942        rate: *mut c_double,
5943        flush: *mut gboolean,
5944        intermediate: *mut gboolean,
5945        duration: *mut u64,
5946        eos: *mut gboolean,
5947    );
5948    pub fn gst_message_parse_step_start(
5949        message: *mut GstMessage,
5950        active: *mut gboolean,
5951        format: *mut GstFormat,
5952        amount: *mut u64,
5953        rate: *mut c_double,
5954        flush: *mut gboolean,
5955        intermediate: *mut gboolean,
5956    );
5957    pub fn gst_message_parse_stream_collection(
5958        message: *mut GstMessage,
5959        collection: *mut *mut GstStreamCollection,
5960    );
5961    pub fn gst_message_parse_stream_status(
5962        message: *mut GstMessage,
5963        type_: *mut GstStreamStatusType,
5964        owner: *mut *mut GstElement,
5965    );
5966    pub fn gst_message_parse_streams_selected(
5967        message: *mut GstMessage,
5968        collection: *mut *mut GstStreamCollection,
5969    );
5970    pub fn gst_message_parse_structure_change(
5971        message: *mut GstMessage,
5972        type_: *mut GstStructureChangeType,
5973        owner: *mut *mut GstElement,
5974        busy: *mut gboolean,
5975    );
5976    pub fn gst_message_parse_tag(message: *mut GstMessage, tag_list: *mut *mut GstTagList);
5977    pub fn gst_message_parse_toc(
5978        message: *mut GstMessage,
5979        toc: *mut *mut GstToc,
5980        updated: *mut gboolean,
5981    );
5982    pub fn gst_message_parse_warning(
5983        message: *mut GstMessage,
5984        gerror: *mut *mut glib::GError,
5985        debug: *mut *mut c_char,
5986    );
5987    pub fn gst_message_parse_warning_details(
5988        message: *mut GstMessage,
5989        structure: *mut *const GstStructure,
5990    );
5991    #[cfg(feature = "v1_26")]
5992    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5993    pub fn gst_message_parse_warning_writable_details(
5994        message: *mut GstMessage,
5995        structure: *mut *mut GstStructure,
5996    );
5997    #[cfg(feature = "v1_18_3")]
5998    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5999    pub fn gst_message_ref(msg: *mut GstMessage) -> *mut GstMessage;
6000    pub fn gst_message_set_buffering_stats(
6001        message: *mut GstMessage,
6002        mode: GstBufferingMode,
6003        avg_in: c_int,
6004        avg_out: c_int,
6005        buffering_left: i64,
6006    );
6007    #[cfg(feature = "v1_26")]
6008    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6009    pub fn gst_message_set_details(message: *mut GstMessage, details: *mut GstStructure);
6010    pub fn gst_message_set_group_id(message: *mut GstMessage, group_id: c_uint);
6011    pub fn gst_message_set_qos_stats(
6012        message: *mut GstMessage,
6013        format: GstFormat,
6014        processed: u64,
6015        dropped: u64,
6016    );
6017    pub fn gst_message_set_qos_values(
6018        message: *mut GstMessage,
6019        jitter: i64,
6020        proportion: c_double,
6021        quality: c_int,
6022    );
6023    pub fn gst_message_set_seqnum(message: *mut GstMessage, seqnum: u32);
6024    pub fn gst_message_set_stream_status_object(
6025        message: *mut GstMessage,
6026        object: *const gobject::GValue,
6027    );
6028    pub fn gst_message_streams_selected_add(message: *mut GstMessage, stream: *mut GstStream);
6029    pub fn gst_message_streams_selected_get_size(message: *mut GstMessage) -> c_uint;
6030    pub fn gst_message_streams_selected_get_stream(
6031        message: *mut GstMessage,
6032        idx: c_uint,
6033    ) -> *mut GstStream;
6034    #[cfg(feature = "v1_18_3")]
6035    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6036    pub fn gst_message_unref(msg: *mut GstMessage);
6037    #[cfg(feature = "v1_26")]
6038    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6039    pub fn gst_message_writable_details(message: *mut GstMessage) -> *mut GstStructure;
6040    pub fn gst_message_writable_structure(message: *mut GstMessage) -> *mut GstStructure;
6041    #[cfg(feature = "v1_18_3")]
6042    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6043    pub fn gst_message_replace(
6044        old_message: *mut *mut GstMessage,
6045        new_message: *mut GstMessage,
6046    ) -> gboolean;
6047    #[cfg(feature = "v1_18_3")]
6048    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6049    pub fn gst_message_take(
6050        old_message: *mut *mut GstMessage,
6051        new_message: *mut GstMessage,
6052    ) -> gboolean;
6053
6054    //=========================================================================
6055    // GstMeta
6056    //=========================================================================
6057    #[cfg(feature = "v1_16")]
6058    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6059    pub fn gst_meta_compare_seqnum(meta1: *const GstMeta, meta2: *const GstMeta) -> c_int;
6060    #[cfg(feature = "v1_16")]
6061    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6062    pub fn gst_meta_get_seqnum(meta: *const GstMeta) -> u64;
6063    #[cfg(feature = "v1_24")]
6064    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6065    pub fn gst_meta_serialize(meta: *const GstMeta, data: *mut GstByteArrayInterface) -> gboolean;
6066    #[cfg(feature = "v1_24")]
6067    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6068    pub fn gst_meta_serialize_simple(meta: *const GstMeta, data: *mut glib::GByteArray)
6069        -> gboolean;
6070    #[cfg(feature = "v1_26")]
6071    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6072    pub fn gst_meta_api_type_aggregate_params(
6073        api: GType,
6074        aggregated_params: *mut *mut GstStructure,
6075        params0: *const GstStructure,
6076        params1: *const GstStructure,
6077    ) -> gboolean;
6078    pub fn gst_meta_api_type_get_tags(api: GType) -> *const *const c_char;
6079    pub fn gst_meta_api_type_has_tag(api: GType, tag: glib::GQuark) -> gboolean;
6080    pub fn gst_meta_api_type_register(api: *const c_char, tags: *mut *const c_char) -> GType;
6081    #[cfg(feature = "v1_26")]
6082    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6083    pub fn gst_meta_api_type_set_params_aggregator(
6084        api: GType,
6085        aggregator: GstAllocationMetaParamsAggregator,
6086    );
6087    #[cfg(feature = "v1_24")]
6088    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6089    pub fn gst_meta_deserialize(
6090        buffer: *mut GstBuffer,
6091        data: *const u8,
6092        size: size_t,
6093        consumed: *mut u32,
6094    ) -> *mut GstMeta;
6095    pub fn gst_meta_get_info(impl_: *const c_char) -> *const GstMetaInfo;
6096    pub fn gst_meta_register(
6097        api: GType,
6098        impl_: *const c_char,
6099        size: size_t,
6100        init_func: GstMetaInitFunction,
6101        free_func: GstMetaFreeFunction,
6102        transform_func: GstMetaTransformFunction,
6103    ) -> *const GstMetaInfo;
6104    #[cfg(feature = "v1_20")]
6105    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6106    pub fn gst_meta_register_custom(
6107        name: *const c_char,
6108        tags: *mut *const c_char,
6109        transform_func: GstCustomMetaTransformFunction,
6110        user_data: gpointer,
6111        destroy_data: glib::GDestroyNotify,
6112    ) -> *const GstMetaInfo;
6113    #[cfg(feature = "v1_24")]
6114    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6115    pub fn gst_meta_register_custom_simple(name: *const c_char) -> *const GstMetaInfo;
6116
6117    //=========================================================================
6118    // GstMetaInfo
6119    //=========================================================================
6120    #[cfg(feature = "v1_20")]
6121    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6122    pub fn gst_meta_info_is_custom(info: *const GstMetaInfo) -> gboolean;
6123    #[cfg(feature = "v1_24")]
6124    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6125    pub fn gst_meta_info_register(info: *mut GstMetaInfo) -> *const GstMetaInfo;
6126    #[cfg(feature = "v1_24")]
6127    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6128    pub fn gst_meta_info_new(api: GType, impl_: *const c_char, size: size_t) -> *mut GstMetaInfo;
6129
6130    //=========================================================================
6131    // GstMiniObject
6132    //=========================================================================
6133    #[cfg(feature = "v1_20")]
6134    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6135    pub fn gst_mini_object_get_type() -> GType;
6136    #[cfg(feature = "v1_16")]
6137    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6138    pub fn gst_mini_object_add_parent(object: *mut GstMiniObject, parent: *mut GstMiniObject);
6139    pub fn gst_mini_object_copy(mini_object: *const GstMiniObject) -> *mut GstMiniObject;
6140    pub fn gst_mini_object_get_qdata(object: *mut GstMiniObject, quark: glib::GQuark) -> gpointer;
6141    pub fn gst_mini_object_init(
6142        mini_object: *mut GstMiniObject,
6143        flags: c_uint,
6144        type_: GType,
6145        copy_func: GstMiniObjectCopyFunction,
6146        dispose_func: GstMiniObjectDisposeFunction,
6147        free_func: GstMiniObjectFreeFunction,
6148    );
6149    pub fn gst_mini_object_is_writable(mini_object: *const GstMiniObject) -> gboolean;
6150    pub fn gst_mini_object_lock(object: *mut GstMiniObject, flags: GstLockFlags) -> gboolean;
6151    pub fn gst_mini_object_make_writable(mini_object: *mut GstMiniObject) -> *mut GstMiniObject;
6152    pub fn gst_mini_object_ref(mini_object: *mut GstMiniObject) -> *mut GstMiniObject;
6153    #[cfg(feature = "v1_16")]
6154    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6155    pub fn gst_mini_object_remove_parent(object: *mut GstMiniObject, parent: *mut GstMiniObject);
6156    pub fn gst_mini_object_set_qdata(
6157        object: *mut GstMiniObject,
6158        quark: glib::GQuark,
6159        data: gpointer,
6160        destroy: glib::GDestroyNotify,
6161    );
6162    pub fn gst_mini_object_steal_qdata(object: *mut GstMiniObject, quark: glib::GQuark)
6163        -> gpointer;
6164    pub fn gst_mini_object_unlock(object: *mut GstMiniObject, flags: GstLockFlags);
6165    pub fn gst_mini_object_unref(mini_object: *mut GstMiniObject);
6166    pub fn gst_mini_object_weak_ref(
6167        object: *mut GstMiniObject,
6168        notify: GstMiniObjectNotify,
6169        data: gpointer,
6170    );
6171    pub fn gst_mini_object_weak_unref(
6172        object: *mut GstMiniObject,
6173        notify: GstMiniObjectNotify,
6174        data: gpointer,
6175    );
6176    pub fn gst_mini_object_replace(
6177        olddata: *mut *mut GstMiniObject,
6178        newdata: *mut GstMiniObject,
6179    ) -> gboolean;
6180    pub fn gst_mini_object_steal(olddata: *mut *mut GstMiniObject) -> *mut GstMiniObject;
6181    pub fn gst_mini_object_take(
6182        olddata: *mut *mut GstMiniObject,
6183        newdata: *mut GstMiniObject,
6184    ) -> gboolean;
6185
6186    //=========================================================================
6187    // GstPadProbeInfo
6188    //=========================================================================
6189    pub fn gst_pad_probe_info_get_buffer(info: *mut GstPadProbeInfo) -> *mut GstBuffer;
6190    pub fn gst_pad_probe_info_get_buffer_list(info: *mut GstPadProbeInfo) -> *mut GstBufferList;
6191    pub fn gst_pad_probe_info_get_event(info: *mut GstPadProbeInfo) -> *mut GstEvent;
6192    pub fn gst_pad_probe_info_get_query(info: *mut GstPadProbeInfo) -> *mut GstQuery;
6193
6194    //=========================================================================
6195    // GstParentBufferMeta
6196    //=========================================================================
6197    pub fn gst_parent_buffer_meta_get_info() -> *const GstMetaInfo;
6198
6199    //=========================================================================
6200    // GstParseContext
6201    //=========================================================================
6202    pub fn gst_parse_context_get_type() -> GType;
6203    pub fn gst_parse_context_new() -> *mut GstParseContext;
6204    pub fn gst_parse_context_copy(context: *const GstParseContext) -> *mut GstParseContext;
6205    pub fn gst_parse_context_free(context: *mut GstParseContext);
6206    pub fn gst_parse_context_get_missing_elements(
6207        context: *mut GstParseContext,
6208    ) -> *mut *mut c_char;
6209
6210    //=========================================================================
6211    // GstPoll
6212    //=========================================================================
6213    pub fn gst_poll_add_fd(set: *mut GstPoll, fd: *mut GstPollFD) -> gboolean;
6214    pub fn gst_poll_fd_can_read(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6215    pub fn gst_poll_fd_can_write(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6216    #[cfg(feature = "v1_16")]
6217    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6218    pub fn gst_poll_fd_ctl_pri(set: *mut GstPoll, fd: *mut GstPollFD, active: gboolean)
6219        -> gboolean;
6220    pub fn gst_poll_fd_ctl_read(
6221        set: *mut GstPoll,
6222        fd: *mut GstPollFD,
6223        active: gboolean,
6224    ) -> gboolean;
6225    pub fn gst_poll_fd_ctl_write(
6226        set: *mut GstPoll,
6227        fd: *mut GstPollFD,
6228        active: gboolean,
6229    ) -> gboolean;
6230    pub fn gst_poll_fd_has_closed(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6231    pub fn gst_poll_fd_has_error(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6232    #[cfg(feature = "v1_16")]
6233    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6234    pub fn gst_poll_fd_has_pri(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6235    pub fn gst_poll_fd_ignored(set: *mut GstPoll, fd: *mut GstPollFD);
6236    pub fn gst_poll_free(set: *mut GstPoll);
6237    pub fn gst_poll_get_read_gpollfd(set: *mut GstPoll, fd: *mut glib::GPollFD);
6238    pub fn gst_poll_read_control(set: *mut GstPoll) -> gboolean;
6239    pub fn gst_poll_remove_fd(set: *mut GstPoll, fd: *mut GstPollFD) -> gboolean;
6240    pub fn gst_poll_restart(set: *mut GstPoll);
6241    pub fn gst_poll_set_controllable(set: *mut GstPoll, controllable: gboolean) -> gboolean;
6242    pub fn gst_poll_set_flushing(set: *mut GstPoll, flushing: gboolean);
6243    pub fn gst_poll_wait(set: *mut GstPoll, timeout: GstClockTime) -> c_int;
6244    pub fn gst_poll_write_control(set: *mut GstPoll) -> gboolean;
6245    pub fn gst_poll_new(controllable: gboolean) -> *mut GstPoll;
6246    pub fn gst_poll_new_timer() -> *mut GstPoll;
6247
6248    //=========================================================================
6249    // GstPollFD
6250    //=========================================================================
6251    pub fn gst_poll_fd_init(fd: *mut GstPollFD);
6252
6253    //=========================================================================
6254    // GstPromise
6255    //=========================================================================
6256    pub fn gst_promise_get_type() -> GType;
6257    pub fn gst_promise_new() -> *mut GstPromise;
6258    pub fn gst_promise_new_with_change_func(
6259        func: GstPromiseChangeFunc,
6260        user_data: gpointer,
6261        notify: glib::GDestroyNotify,
6262    ) -> *mut GstPromise;
6263    pub fn gst_promise_expire(promise: *mut GstPromise);
6264    pub fn gst_promise_get_reply(promise: *mut GstPromise) -> *const GstStructure;
6265    pub fn gst_promise_interrupt(promise: *mut GstPromise);
6266    #[cfg(feature = "v1_18_3")]
6267    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6268    pub fn gst_promise_ref(promise: *mut GstPromise) -> *mut GstPromise;
6269    pub fn gst_promise_reply(promise: *mut GstPromise, s: *mut GstStructure);
6270    #[cfg(feature = "v1_18_3")]
6271    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6272    pub fn gst_promise_unref(promise: *mut GstPromise);
6273    pub fn gst_promise_wait(promise: *mut GstPromise) -> GstPromiseResult;
6274
6275    //=========================================================================
6276    // GstProtectionMeta
6277    //=========================================================================
6278    pub fn gst_protection_meta_get_info() -> *const GstMetaInfo;
6279
6280    //=========================================================================
6281    // GstQuery
6282    //=========================================================================
6283    pub fn gst_query_get_type() -> GType;
6284    pub fn gst_query_new_accept_caps(caps: *mut GstCaps) -> *mut GstQuery;
6285    pub fn gst_query_new_allocation(caps: *mut GstCaps, need_pool: gboolean) -> *mut GstQuery;
6286    #[cfg(feature = "v1_16")]
6287    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6288    pub fn gst_query_new_bitrate() -> *mut GstQuery;
6289    pub fn gst_query_new_buffering(format: GstFormat) -> *mut GstQuery;
6290    pub fn gst_query_new_caps(filter: *mut GstCaps) -> *mut GstQuery;
6291    pub fn gst_query_new_context(context_type: *const c_char) -> *mut GstQuery;
6292    pub fn gst_query_new_convert(
6293        src_format: GstFormat,
6294        value: i64,
6295        dest_format: GstFormat,
6296    ) -> *mut GstQuery;
6297    pub fn gst_query_new_custom(type_: GstQueryType, structure: *mut GstStructure)
6298        -> *mut GstQuery;
6299    pub fn gst_query_new_drain() -> *mut GstQuery;
6300    pub fn gst_query_new_duration(format: GstFormat) -> *mut GstQuery;
6301    pub fn gst_query_new_formats() -> *mut GstQuery;
6302    pub fn gst_query_new_latency() -> *mut GstQuery;
6303    pub fn gst_query_new_position(format: GstFormat) -> *mut GstQuery;
6304    pub fn gst_query_new_scheduling() -> *mut GstQuery;
6305    pub fn gst_query_new_seeking(format: GstFormat) -> *mut GstQuery;
6306    pub fn gst_query_new_segment(format: GstFormat) -> *mut GstQuery;
6307    #[cfg(feature = "v1_22")]
6308    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6309    pub fn gst_query_new_selectable() -> *mut GstQuery;
6310    pub fn gst_query_new_uri() -> *mut GstQuery;
6311    pub fn gst_query_add_allocation_meta(
6312        query: *mut GstQuery,
6313        api: GType,
6314        params: *const GstStructure,
6315    );
6316    pub fn gst_query_add_allocation_param(
6317        query: *mut GstQuery,
6318        allocator: *mut GstAllocator,
6319        params: *const GstAllocationParams,
6320    );
6321    pub fn gst_query_add_allocation_pool(
6322        query: *mut GstQuery,
6323        pool: *mut GstBufferPool,
6324        size: c_uint,
6325        min_buffers: c_uint,
6326        max_buffers: c_uint,
6327    );
6328    pub fn gst_query_add_buffering_range(query: *mut GstQuery, start: i64, stop: i64) -> gboolean;
6329    pub fn gst_query_add_scheduling_mode(query: *mut GstQuery, mode: GstPadMode);
6330    #[cfg(feature = "v1_18_3")]
6331    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6332    pub fn gst_query_copy(q: *const GstQuery) -> *mut GstQuery;
6333    pub fn gst_query_find_allocation_meta(
6334        query: *mut GstQuery,
6335        api: GType,
6336        index: *mut c_uint,
6337    ) -> gboolean;
6338    pub fn gst_query_get_n_allocation_metas(query: *mut GstQuery) -> c_uint;
6339    pub fn gst_query_get_n_allocation_params(query: *mut GstQuery) -> c_uint;
6340    pub fn gst_query_get_n_allocation_pools(query: *mut GstQuery) -> c_uint;
6341    pub fn gst_query_get_n_buffering_ranges(query: *mut GstQuery) -> c_uint;
6342    pub fn gst_query_get_n_scheduling_modes(query: *mut GstQuery) -> c_uint;
6343    pub fn gst_query_get_structure(query: *mut GstQuery) -> *const GstStructure;
6344    pub fn gst_query_has_scheduling_mode(query: *mut GstQuery, mode: GstPadMode) -> gboolean;
6345    pub fn gst_query_has_scheduling_mode_with_flags(
6346        query: *mut GstQuery,
6347        mode: GstPadMode,
6348        flags: GstSchedulingFlags,
6349    ) -> gboolean;
6350    pub fn gst_query_parse_accept_caps(query: *mut GstQuery, caps: *mut *mut GstCaps);
6351    pub fn gst_query_parse_accept_caps_result(query: *mut GstQuery, result: *mut gboolean);
6352    pub fn gst_query_parse_allocation(
6353        query: *mut GstQuery,
6354        caps: *mut *mut GstCaps,
6355        need_pool: *mut gboolean,
6356    );
6357    #[cfg(feature = "v1_16")]
6358    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6359    pub fn gst_query_parse_bitrate(query: *mut GstQuery, nominal_bitrate: *mut c_uint);
6360    pub fn gst_query_parse_buffering_percent(
6361        query: *mut GstQuery,
6362        busy: *mut gboolean,
6363        percent: *mut c_int,
6364    );
6365    pub fn gst_query_parse_buffering_range(
6366        query: *mut GstQuery,
6367        format: *mut GstFormat,
6368        start: *mut i64,
6369        stop: *mut i64,
6370        estimated_total: *mut i64,
6371    );
6372    pub fn gst_query_parse_buffering_stats(
6373        query: *mut GstQuery,
6374        mode: *mut GstBufferingMode,
6375        avg_in: *mut c_int,
6376        avg_out: *mut c_int,
6377        buffering_left: *mut i64,
6378    );
6379    pub fn gst_query_parse_caps(query: *mut GstQuery, filter: *mut *mut GstCaps);
6380    pub fn gst_query_parse_caps_result(query: *mut GstQuery, caps: *mut *mut GstCaps);
6381    pub fn gst_query_parse_context(query: *mut GstQuery, context: *mut *mut GstContext);
6382    pub fn gst_query_parse_context_type(
6383        query: *mut GstQuery,
6384        context_type: *mut *const c_char,
6385    ) -> gboolean;
6386    pub fn gst_query_parse_convert(
6387        query: *mut GstQuery,
6388        src_format: *mut GstFormat,
6389        src_value: *mut i64,
6390        dest_format: *mut GstFormat,
6391        dest_value: *mut i64,
6392    );
6393    pub fn gst_query_parse_duration(
6394        query: *mut GstQuery,
6395        format: *mut GstFormat,
6396        duration: *mut i64,
6397    );
6398    pub fn gst_query_parse_latency(
6399        query: *mut GstQuery,
6400        live: *mut gboolean,
6401        min_latency: *mut GstClockTime,
6402        max_latency: *mut GstClockTime,
6403    );
6404    pub fn gst_query_parse_n_formats(query: *mut GstQuery, n_formats: *mut c_uint);
6405    pub fn gst_query_parse_nth_allocation_meta(
6406        query: *mut GstQuery,
6407        index: c_uint,
6408        params: *mut *const GstStructure,
6409    ) -> GType;
6410    pub fn gst_query_parse_nth_allocation_param(
6411        query: *mut GstQuery,
6412        index: c_uint,
6413        allocator: *mut *mut GstAllocator,
6414        params: *mut GstAllocationParams,
6415    );
6416    pub fn gst_query_parse_nth_allocation_pool(
6417        query: *mut GstQuery,
6418        index: c_uint,
6419        pool: *mut *mut GstBufferPool,
6420        size: *mut c_uint,
6421        min_buffers: *mut c_uint,
6422        max_buffers: *mut c_uint,
6423    );
6424    pub fn gst_query_parse_nth_buffering_range(
6425        query: *mut GstQuery,
6426        index: c_uint,
6427        start: *mut i64,
6428        stop: *mut i64,
6429    ) -> gboolean;
6430    pub fn gst_query_parse_nth_format(query: *mut GstQuery, nth: c_uint, format: *mut GstFormat);
6431    pub fn gst_query_parse_nth_scheduling_mode(query: *mut GstQuery, index: c_uint) -> GstPadMode;
6432    pub fn gst_query_parse_position(query: *mut GstQuery, format: *mut GstFormat, cur: *mut i64);
6433    pub fn gst_query_parse_scheduling(
6434        query: *mut GstQuery,
6435        flags: *mut GstSchedulingFlags,
6436        minsize: *mut c_int,
6437        maxsize: *mut c_int,
6438        align: *mut c_int,
6439    );
6440    pub fn gst_query_parse_seeking(
6441        query: *mut GstQuery,
6442        format: *mut GstFormat,
6443        seekable: *mut gboolean,
6444        segment_start: *mut i64,
6445        segment_end: *mut i64,
6446    );
6447    pub fn gst_query_parse_segment(
6448        query: *mut GstQuery,
6449        rate: *mut c_double,
6450        format: *mut GstFormat,
6451        start_value: *mut i64,
6452        stop_value: *mut i64,
6453    );
6454    #[cfg(feature = "v1_22")]
6455    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6456    pub fn gst_query_parse_selectable(query: *mut GstQuery, selectable: *mut gboolean);
6457    pub fn gst_query_parse_uri(query: *mut GstQuery, uri: *mut *mut c_char);
6458    pub fn gst_query_parse_uri_redirection(query: *mut GstQuery, uri: *mut *mut c_char);
6459    pub fn gst_query_parse_uri_redirection_permanent(
6460        query: *mut GstQuery,
6461        permanent: *mut gboolean,
6462    );
6463    #[cfg(feature = "v1_18_3")]
6464    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6465    pub fn gst_query_ref(q: *mut GstQuery) -> *mut GstQuery;
6466    pub fn gst_query_remove_nth_allocation_meta(query: *mut GstQuery, index: c_uint);
6467    pub fn gst_query_remove_nth_allocation_param(query: *mut GstQuery, index: c_uint);
6468    pub fn gst_query_remove_nth_allocation_pool(query: *mut GstQuery, index: c_uint);
6469    pub fn gst_query_set_accept_caps_result(query: *mut GstQuery, result: gboolean);
6470    #[cfg(feature = "v1_16")]
6471    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6472    pub fn gst_query_set_bitrate(query: *mut GstQuery, nominal_bitrate: c_uint);
6473    pub fn gst_query_set_buffering_percent(query: *mut GstQuery, busy: gboolean, percent: c_int);
6474    pub fn gst_query_set_buffering_range(
6475        query: *mut GstQuery,
6476        format: GstFormat,
6477        start: i64,
6478        stop: i64,
6479        estimated_total: i64,
6480    );
6481    pub fn gst_query_set_buffering_stats(
6482        query: *mut GstQuery,
6483        mode: GstBufferingMode,
6484        avg_in: c_int,
6485        avg_out: c_int,
6486        buffering_left: i64,
6487    );
6488    pub fn gst_query_set_caps_result(query: *mut GstQuery, caps: *mut GstCaps);
6489    pub fn gst_query_set_context(query: *mut GstQuery, context: *mut GstContext);
6490    pub fn gst_query_set_convert(
6491        query: *mut GstQuery,
6492        src_format: GstFormat,
6493        src_value: i64,
6494        dest_format: GstFormat,
6495        dest_value: i64,
6496    );
6497    pub fn gst_query_set_duration(query: *mut GstQuery, format: GstFormat, duration: i64);
6498    pub fn gst_query_set_formats(query: *mut GstQuery, n_formats: c_int, ...);
6499    pub fn gst_query_set_formatsv(
6500        query: *mut GstQuery,
6501        n_formats: c_int,
6502        formats: *const GstFormat,
6503    );
6504    pub fn gst_query_set_latency(
6505        query: *mut GstQuery,
6506        live: gboolean,
6507        min_latency: GstClockTime,
6508        max_latency: GstClockTime,
6509    );
6510    pub fn gst_query_set_nth_allocation_param(
6511        query: *mut GstQuery,
6512        index: c_uint,
6513        allocator: *mut GstAllocator,
6514        params: *const GstAllocationParams,
6515    );
6516    pub fn gst_query_set_nth_allocation_pool(
6517        query: *mut GstQuery,
6518        index: c_uint,
6519        pool: *mut GstBufferPool,
6520        size: c_uint,
6521        min_buffers: c_uint,
6522        max_buffers: c_uint,
6523    );
6524    pub fn gst_query_set_position(query: *mut GstQuery, format: GstFormat, cur: i64);
6525    pub fn gst_query_set_scheduling(
6526        query: *mut GstQuery,
6527        flags: GstSchedulingFlags,
6528        minsize: c_int,
6529        maxsize: c_int,
6530        align: c_int,
6531    );
6532    pub fn gst_query_set_seeking(
6533        query: *mut GstQuery,
6534        format: GstFormat,
6535        seekable: gboolean,
6536        segment_start: i64,
6537        segment_end: i64,
6538    );
6539    pub fn gst_query_set_segment(
6540        query: *mut GstQuery,
6541        rate: c_double,
6542        format: GstFormat,
6543        start_value: i64,
6544        stop_value: i64,
6545    );
6546    #[cfg(feature = "v1_22")]
6547    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6548    pub fn gst_query_set_selectable(query: *mut GstQuery, selectable: gboolean);
6549    pub fn gst_query_set_uri(query: *mut GstQuery, uri: *const c_char);
6550    pub fn gst_query_set_uri_redirection(query: *mut GstQuery, uri: *const c_char);
6551    pub fn gst_query_set_uri_redirection_permanent(query: *mut GstQuery, permanent: gboolean);
6552    #[cfg(feature = "v1_18_3")]
6553    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6554    pub fn gst_query_unref(q: *mut GstQuery);
6555    pub fn gst_query_writable_structure(query: *mut GstQuery) -> *mut GstStructure;
6556    #[cfg(feature = "v1_18_3")]
6557    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6558    pub fn gst_query_replace(old_query: *mut *mut GstQuery, new_query: *mut GstQuery) -> gboolean;
6559    #[cfg(feature = "v1_18_3")]
6560    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6561    pub fn gst_query_take(old_query: *mut *mut GstQuery, new_query: *mut GstQuery) -> gboolean;
6562
6563    //=========================================================================
6564    // GstReferenceTimestampMeta
6565    //=========================================================================
6566    pub fn gst_reference_timestamp_meta_get_info() -> *const GstMetaInfo;
6567
6568    //=========================================================================
6569    // GstSample
6570    //=========================================================================
6571    pub fn gst_sample_get_type() -> GType;
6572    pub fn gst_sample_new(
6573        buffer: *mut GstBuffer,
6574        caps: *mut GstCaps,
6575        segment: *const GstSegment,
6576        info: *mut GstStructure,
6577    ) -> *mut GstSample;
6578    #[cfg(feature = "v1_18_3")]
6579    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6580    pub fn gst_sample_copy(sample: *const GstSample) -> *mut GstSample;
6581    pub fn gst_sample_get_buffer(sample: *mut GstSample) -> *mut GstBuffer;
6582    pub fn gst_sample_get_buffer_list(sample: *mut GstSample) -> *mut GstBufferList;
6583    pub fn gst_sample_get_caps(sample: *mut GstSample) -> *mut GstCaps;
6584    pub fn gst_sample_get_info(sample: *mut GstSample) -> *const GstStructure;
6585    pub fn gst_sample_get_segment(sample: *mut GstSample) -> *mut GstSegment;
6586    #[cfg(feature = "v1_18_3")]
6587    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6588    pub fn gst_sample_ref(sample: *mut GstSample) -> *mut GstSample;
6589    #[cfg(feature = "v1_16")]
6590    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6591    pub fn gst_sample_set_buffer(sample: *mut GstSample, buffer: *mut GstBuffer);
6592    pub fn gst_sample_set_buffer_list(sample: *mut GstSample, buffer_list: *mut GstBufferList);
6593    #[cfg(feature = "v1_16")]
6594    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6595    pub fn gst_sample_set_caps(sample: *mut GstSample, caps: *mut GstCaps);
6596    #[cfg(feature = "v1_16")]
6597    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6598    pub fn gst_sample_set_info(sample: *mut GstSample, info: *mut GstStructure) -> gboolean;
6599    #[cfg(feature = "v1_16")]
6600    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6601    pub fn gst_sample_set_segment(sample: *mut GstSample, segment: *const GstSegment);
6602    #[cfg(feature = "v1_18_3")]
6603    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6604    pub fn gst_sample_unref(sample: *mut GstSample);
6605
6606    //=========================================================================
6607    // GstSegment
6608    //=========================================================================
6609    pub fn gst_segment_get_type() -> GType;
6610    pub fn gst_segment_new() -> *mut GstSegment;
6611    pub fn gst_segment_clip(
6612        segment: *const GstSegment,
6613        format: GstFormat,
6614        start: u64,
6615        stop: u64,
6616        clip_start: *mut u64,
6617        clip_stop: *mut u64,
6618    ) -> gboolean;
6619    pub fn gst_segment_copy(segment: *const GstSegment) -> *mut GstSegment;
6620    pub fn gst_segment_copy_into(src: *const GstSegment, dest: *mut GstSegment);
6621    pub fn gst_segment_do_seek(
6622        segment: *mut GstSegment,
6623        rate: c_double,
6624        format: GstFormat,
6625        flags: GstSeekFlags,
6626        start_type: GstSeekType,
6627        start: u64,
6628        stop_type: GstSeekType,
6629        stop: u64,
6630        update: *mut gboolean,
6631    ) -> gboolean;
6632    pub fn gst_segment_free(segment: *mut GstSegment);
6633    pub fn gst_segment_init(segment: *mut GstSegment, format: GstFormat);
6634    pub fn gst_segment_is_equal(s0: *const GstSegment, s1: *const GstSegment) -> gboolean;
6635    pub fn gst_segment_offset_running_time(
6636        segment: *mut GstSegment,
6637        format: GstFormat,
6638        offset: i64,
6639    ) -> gboolean;
6640    pub fn gst_segment_position_from_running_time(
6641        segment: *const GstSegment,
6642        format: GstFormat,
6643        running_time: u64,
6644    ) -> u64;
6645    pub fn gst_segment_position_from_running_time_full(
6646        segment: *const GstSegment,
6647        format: GstFormat,
6648        running_time: u64,
6649        position: *mut u64,
6650    ) -> c_int;
6651    pub fn gst_segment_position_from_stream_time(
6652        segment: *const GstSegment,
6653        format: GstFormat,
6654        stream_time: u64,
6655    ) -> u64;
6656    pub fn gst_segment_position_from_stream_time_full(
6657        segment: *const GstSegment,
6658        format: GstFormat,
6659        stream_time: u64,
6660        position: *mut u64,
6661    ) -> c_int;
6662    pub fn gst_segment_set_running_time(
6663        segment: *mut GstSegment,
6664        format: GstFormat,
6665        running_time: u64,
6666    ) -> gboolean;
6667    pub fn gst_segment_to_position(
6668        segment: *const GstSegment,
6669        format: GstFormat,
6670        running_time: u64,
6671    ) -> u64;
6672    pub fn gst_segment_to_running_time(
6673        segment: *const GstSegment,
6674        format: GstFormat,
6675        position: u64,
6676    ) -> u64;
6677    pub fn gst_segment_to_running_time_full(
6678        segment: *const GstSegment,
6679        format: GstFormat,
6680        position: u64,
6681        running_time: *mut u64,
6682    ) -> c_int;
6683    pub fn gst_segment_to_stream_time(
6684        segment: *const GstSegment,
6685        format: GstFormat,
6686        position: u64,
6687    ) -> u64;
6688    pub fn gst_segment_to_stream_time_full(
6689        segment: *const GstSegment,
6690        format: GstFormat,
6691        position: u64,
6692        stream_time: *mut u64,
6693    ) -> c_int;
6694
6695    //=========================================================================
6696    // GstStaticCaps
6697    //=========================================================================
6698    pub fn gst_static_caps_get_type() -> GType;
6699    pub fn gst_static_caps_cleanup(static_caps: *mut GstStaticCaps);
6700    pub fn gst_static_caps_get(static_caps: *mut GstStaticCaps) -> *mut GstCaps;
6701
6702    //=========================================================================
6703    // GstStaticPadTemplate
6704    //=========================================================================
6705    pub fn gst_static_pad_template_get_type() -> GType;
6706    pub fn gst_static_pad_template_get(
6707        pad_template: *mut GstStaticPadTemplate,
6708    ) -> *mut GstPadTemplate;
6709    pub fn gst_static_pad_template_get_caps(templ: *mut GstStaticPadTemplate) -> *mut GstCaps;
6710
6711    //=========================================================================
6712    // GstStructure
6713    //=========================================================================
6714    pub fn gst_structure_get_type() -> GType;
6715    pub fn gst_structure_from_string(
6716        string: *const c_char,
6717        end: *mut *mut c_char,
6718    ) -> *mut GstStructure;
6719    pub fn gst_structure_new(
6720        name: *const c_char,
6721        firstfield: *const c_char,
6722        ...
6723    ) -> *mut GstStructure;
6724    pub fn gst_structure_new_empty(name: *const c_char) -> *mut GstStructure;
6725    pub fn gst_structure_new_from_string(string: *const c_char) -> *mut GstStructure;
6726    pub fn gst_structure_new_id(
6727        name_quark: glib::GQuark,
6728        field_quark: glib::GQuark,
6729        ...
6730    ) -> *mut GstStructure;
6731    pub fn gst_structure_new_id_empty(quark: glib::GQuark) -> *mut GstStructure;
6732    #[cfg(feature = "v1_26")]
6733    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6734    pub fn gst_structure_new_id_str(
6735        name: *const GstIdStr,
6736        fieldname: *const GstIdStr,
6737        ...
6738    ) -> *mut GstStructure;
6739    #[cfg(feature = "v1_26")]
6740    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6741    pub fn gst_structure_new_id_str_empty(name: *const GstIdStr) -> *mut GstStructure;
6742    //#[cfg(feature = "v1_26")]
6743    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6744    //pub fn gst_structure_new_id_str_valist(name: *const GstIdStr, firstfield: *const GstIdStr, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
6745    #[cfg(feature = "v1_26")]
6746    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6747    pub fn gst_structure_new_static_str(
6748        name: *const c_char,
6749        firstfield: *const c_char,
6750        ...
6751    ) -> *mut GstStructure;
6752    #[cfg(feature = "v1_26")]
6753    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6754    pub fn gst_structure_new_static_str_empty(name: *const c_char) -> *mut GstStructure;
6755    //#[cfg(feature = "v1_26")]
6756    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6757    //pub fn gst_structure_new_static_str_valist(name: *const c_char, firstfield: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
6758    //pub fn gst_structure_new_valist(name: *const c_char, firstfield: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
6759    pub fn gst_structure_can_intersect(
6760        struct1: *const GstStructure,
6761        struct2: *const GstStructure,
6762    ) -> gboolean;
6763    pub fn gst_structure_copy(structure: *const GstStructure) -> *mut GstStructure;
6764    pub fn gst_structure_filter_and_map_in_place(
6765        structure: *mut GstStructure,
6766        func: GstStructureFilterMapFunc,
6767        user_data: gpointer,
6768    );
6769    #[cfg(feature = "v1_26")]
6770    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6771    pub fn gst_structure_filter_and_map_in_place_id_str(
6772        structure: *mut GstStructure,
6773        func: GstStructureFilterMapIdStrFunc,
6774        user_data: gpointer,
6775    );
6776    pub fn gst_structure_fixate(structure: *mut GstStructure);
6777    pub fn gst_structure_fixate_field(
6778        structure: *mut GstStructure,
6779        field_name: *const c_char,
6780    ) -> gboolean;
6781    pub fn gst_structure_fixate_field_boolean(
6782        structure: *mut GstStructure,
6783        field_name: *const c_char,
6784        target: gboolean,
6785    ) -> gboolean;
6786    pub fn gst_structure_fixate_field_nearest_double(
6787        structure: *mut GstStructure,
6788        field_name: *const c_char,
6789        target: c_double,
6790    ) -> gboolean;
6791    pub fn gst_structure_fixate_field_nearest_fraction(
6792        structure: *mut GstStructure,
6793        field_name: *const c_char,
6794        target_numerator: c_int,
6795        target_denominator: c_int,
6796    ) -> gboolean;
6797    pub fn gst_structure_fixate_field_nearest_int(
6798        structure: *mut GstStructure,
6799        field_name: *const c_char,
6800        target: c_int,
6801    ) -> gboolean;
6802    pub fn gst_structure_fixate_field_string(
6803        structure: *mut GstStructure,
6804        field_name: *const c_char,
6805        target: *const c_char,
6806    ) -> gboolean;
6807    pub fn gst_structure_foreach(
6808        structure: *const GstStructure,
6809        func: GstStructureForeachFunc,
6810        user_data: gpointer,
6811    ) -> gboolean;
6812    #[cfg(feature = "v1_26")]
6813    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6814    pub fn gst_structure_foreach_id_str(
6815        structure: *const GstStructure,
6816        func: GstStructureForeachIdStrFunc,
6817        user_data: gpointer,
6818    ) -> gboolean;
6819    pub fn gst_structure_free(structure: *mut GstStructure);
6820    pub fn gst_structure_get(
6821        structure: *const GstStructure,
6822        first_fieldname: *const c_char,
6823        ...
6824    ) -> gboolean;
6825    pub fn gst_structure_get_array(
6826        structure: *mut GstStructure,
6827        fieldname: *const c_char,
6828        array: *mut *mut gobject::GValueArray,
6829    ) -> gboolean;
6830    pub fn gst_structure_get_boolean(
6831        structure: *const GstStructure,
6832        fieldname: *const c_char,
6833        value: *mut gboolean,
6834    ) -> gboolean;
6835    pub fn gst_structure_get_clock_time(
6836        structure: *const GstStructure,
6837        fieldname: *const c_char,
6838        value: *mut GstClockTime,
6839    ) -> gboolean;
6840    pub fn gst_structure_get_date(
6841        structure: *const GstStructure,
6842        fieldname: *const c_char,
6843        value: *mut *mut glib::GDate,
6844    ) -> gboolean;
6845    pub fn gst_structure_get_date_time(
6846        structure: *const GstStructure,
6847        fieldname: *const c_char,
6848        value: *mut *mut GstDateTime,
6849    ) -> gboolean;
6850    pub fn gst_structure_get_double(
6851        structure: *const GstStructure,
6852        fieldname: *const c_char,
6853        value: *mut c_double,
6854    ) -> gboolean;
6855    pub fn gst_structure_get_enum(
6856        structure: *const GstStructure,
6857        fieldname: *const c_char,
6858        enumtype: GType,
6859        value: *mut c_int,
6860    ) -> gboolean;
6861    pub fn gst_structure_get_field_type(
6862        structure: *const GstStructure,
6863        fieldname: *const c_char,
6864    ) -> GType;
6865    #[cfg(feature = "v1_22")]
6866    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6867    pub fn gst_structure_get_flags(
6868        structure: *const GstStructure,
6869        fieldname: *const c_char,
6870        flags_type: GType,
6871        value: *mut c_uint,
6872    ) -> gboolean;
6873    pub fn gst_structure_get_flagset(
6874        structure: *const GstStructure,
6875        fieldname: *const c_char,
6876        value_flags: *mut c_uint,
6877        value_mask: *mut c_uint,
6878    ) -> gboolean;
6879    pub fn gst_structure_get_fraction(
6880        structure: *const GstStructure,
6881        fieldname: *const c_char,
6882        value_numerator: *mut c_int,
6883        value_denominator: *mut c_int,
6884    ) -> gboolean;
6885    pub fn gst_structure_get_int(
6886        structure: *const GstStructure,
6887        fieldname: *const c_char,
6888        value: *mut c_int,
6889    ) -> gboolean;
6890    pub fn gst_structure_get_int64(
6891        structure: *const GstStructure,
6892        fieldname: *const c_char,
6893        value: *mut i64,
6894    ) -> gboolean;
6895    pub fn gst_structure_get_list(
6896        structure: *mut GstStructure,
6897        fieldname: *const c_char,
6898        array: *mut *mut gobject::GValueArray,
6899    ) -> gboolean;
6900    pub fn gst_structure_get_name(structure: *const GstStructure) -> *const c_char;
6901    pub fn gst_structure_get_name_id(structure: *const GstStructure) -> glib::GQuark;
6902    #[cfg(feature = "v1_26")]
6903    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6904    pub fn gst_structure_get_name_id_str(structure: *const GstStructure) -> *const GstIdStr;
6905    pub fn gst_structure_get_string(
6906        structure: *const GstStructure,
6907        fieldname: *const c_char,
6908    ) -> *const c_char;
6909    pub fn gst_structure_get_uint(
6910        structure: *const GstStructure,
6911        fieldname: *const c_char,
6912        value: *mut c_uint,
6913    ) -> gboolean;
6914    pub fn gst_structure_get_uint64(
6915        structure: *const GstStructure,
6916        fieldname: *const c_char,
6917        value: *mut u64,
6918    ) -> gboolean;
6919    //pub fn gst_structure_get_valist(structure: *const GstStructure, first_fieldname: *const c_char, args: /*Unimplemented*/va_list) -> gboolean;
6920    pub fn gst_structure_get_value(
6921        structure: *const GstStructure,
6922        fieldname: *const c_char,
6923    ) -> *const gobject::GValue;
6924    pub fn gst_structure_has_field(
6925        structure: *const GstStructure,
6926        fieldname: *const c_char,
6927    ) -> gboolean;
6928    pub fn gst_structure_has_field_typed(
6929        structure: *const GstStructure,
6930        fieldname: *const c_char,
6931        type_: GType,
6932    ) -> gboolean;
6933    pub fn gst_structure_has_name(structure: *const GstStructure, name: *const c_char) -> gboolean;
6934    pub fn gst_structure_id_get(
6935        structure: *const GstStructure,
6936        first_field_id: glib::GQuark,
6937        ...
6938    ) -> gboolean;
6939    //pub fn gst_structure_id_get_valist(structure: *const GstStructure, first_field_id: glib::GQuark, args: /*Unimplemented*/va_list) -> gboolean;
6940    pub fn gst_structure_id_get_value(
6941        structure: *const GstStructure,
6942        field: glib::GQuark,
6943    ) -> *const gobject::GValue;
6944    pub fn gst_structure_id_has_field(
6945        structure: *const GstStructure,
6946        field: glib::GQuark,
6947    ) -> gboolean;
6948    pub fn gst_structure_id_has_field_typed(
6949        structure: *const GstStructure,
6950        field: glib::GQuark,
6951        type_: GType,
6952    ) -> gboolean;
6953    pub fn gst_structure_id_set(structure: *mut GstStructure, fieldname: glib::GQuark, ...);
6954    //pub fn gst_structure_id_set_valist(structure: *mut GstStructure, fieldname: glib::GQuark, varargs: /*Unimplemented*/va_list);
6955    pub fn gst_structure_id_set_value(
6956        structure: *mut GstStructure,
6957        field: glib::GQuark,
6958        value: *const gobject::GValue,
6959    );
6960    #[cfg(feature = "v1_26")]
6961    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6962    pub fn gst_structure_id_str_get(
6963        structure: *const GstStructure,
6964        first_fieldname: *const GstIdStr,
6965        ...
6966    ) -> gboolean;
6967    #[cfg(feature = "v1_26")]
6968    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6969    pub fn gst_structure_id_str_get_field_type(
6970        structure: *const GstStructure,
6971        fieldname: *const GstIdStr,
6972    ) -> GType;
6973    //#[cfg(feature = "v1_26")]
6974    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6975    //pub fn gst_structure_id_str_get_valist(structure: *const GstStructure, first_fieldname: *const GstIdStr, args: /*Unimplemented*/va_list) -> gboolean;
6976    #[cfg(feature = "v1_26")]
6977    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6978    pub fn gst_structure_id_str_get_value(
6979        structure: *const GstStructure,
6980        fieldname: *const GstIdStr,
6981    ) -> *const gobject::GValue;
6982    #[cfg(feature = "v1_26")]
6983    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6984    pub fn gst_structure_id_str_has_field(
6985        structure: *const GstStructure,
6986        fieldname: *const GstIdStr,
6987    ) -> gboolean;
6988    #[cfg(feature = "v1_26")]
6989    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6990    pub fn gst_structure_id_str_has_field_typed(
6991        structure: *const GstStructure,
6992        fieldname: *const GstIdStr,
6993        type_: GType,
6994    ) -> gboolean;
6995    #[cfg(feature = "v1_26")]
6996    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6997    pub fn gst_structure_id_str_nth_field_name(
6998        structure: *const GstStructure,
6999        index: c_uint,
7000    ) -> *const GstIdStr;
7001    #[cfg(feature = "v1_26")]
7002    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7003    pub fn gst_structure_id_str_remove_field(
7004        structure: *mut GstStructure,
7005        fieldname: *const GstIdStr,
7006    );
7007    #[cfg(feature = "v1_26")]
7008    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7009    pub fn gst_structure_id_str_remove_fields(
7010        structure: *mut GstStructure,
7011        fieldname: *const GstIdStr,
7012        ...
7013    );
7014    //#[cfg(feature = "v1_26")]
7015    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7016    //pub fn gst_structure_id_str_remove_fields_valist(structure: *mut GstStructure, fieldname: *const GstIdStr, varargs: /*Unimplemented*/va_list);
7017    #[cfg(feature = "v1_26")]
7018    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7019    pub fn gst_structure_id_str_set(structure: *mut GstStructure, fieldname: *const GstIdStr, ...);
7020    //#[cfg(feature = "v1_26")]
7021    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7022    //pub fn gst_structure_id_str_set_valist(structure: *mut GstStructure, fieldname: *const GstIdStr, varargs: /*Unimplemented*/va_list);
7023    #[cfg(feature = "v1_26")]
7024    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7025    pub fn gst_structure_id_str_set_value(
7026        structure: *mut GstStructure,
7027        fieldname: *const GstIdStr,
7028        value: *const gobject::GValue,
7029    );
7030    #[cfg(feature = "v1_26")]
7031    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7032    pub fn gst_structure_id_str_take_value(
7033        structure: *mut GstStructure,
7034        fieldname: *const GstIdStr,
7035        value: *mut gobject::GValue,
7036    );
7037    pub fn gst_structure_id_take_value(
7038        structure: *mut GstStructure,
7039        field: glib::GQuark,
7040        value: *mut gobject::GValue,
7041    );
7042    pub fn gst_structure_intersect(
7043        struct1: *const GstStructure,
7044        struct2: *const GstStructure,
7045    ) -> *mut GstStructure;
7046    pub fn gst_structure_is_equal(
7047        structure1: *const GstStructure,
7048        structure2: *const GstStructure,
7049    ) -> gboolean;
7050    pub fn gst_structure_is_subset(
7051        subset: *const GstStructure,
7052        superset: *const GstStructure,
7053    ) -> gboolean;
7054    pub fn gst_structure_map_in_place(
7055        structure: *mut GstStructure,
7056        func: GstStructureMapFunc,
7057        user_data: gpointer,
7058    ) -> gboolean;
7059    #[cfg(feature = "v1_26")]
7060    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7061    pub fn gst_structure_map_in_place_id_str(
7062        structure: *mut GstStructure,
7063        func: GstStructureMapIdStrFunc,
7064        user_data: gpointer,
7065    ) -> gboolean;
7066    pub fn gst_structure_n_fields(structure: *const GstStructure) -> c_int;
7067    pub fn gst_structure_nth_field_name(
7068        structure: *const GstStructure,
7069        index: c_uint,
7070    ) -> *const c_char;
7071    pub fn gst_structure_remove_all_fields(structure: *mut GstStructure);
7072    pub fn gst_structure_remove_field(structure: *mut GstStructure, fieldname: *const c_char);
7073    pub fn gst_structure_remove_fields(structure: *mut GstStructure, fieldname: *const c_char, ...);
7074    //pub fn gst_structure_remove_fields_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7075    #[cfg(feature = "v1_20")]
7076    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
7077    pub fn gst_structure_serialize(
7078        structure: *const GstStructure,
7079        flags: GstSerializeFlags,
7080    ) -> *mut c_char;
7081    #[cfg(feature = "v1_24")]
7082    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7083    pub fn gst_structure_serialize_full(
7084        structure: *const GstStructure,
7085        flags: GstSerializeFlags,
7086    ) -> *mut c_char;
7087    pub fn gst_structure_set(structure: *mut GstStructure, fieldname: *const c_char, ...);
7088    pub fn gst_structure_set_array(
7089        structure: *mut GstStructure,
7090        fieldname: *const c_char,
7091        array: *const gobject::GValueArray,
7092    );
7093    pub fn gst_structure_set_list(
7094        structure: *mut GstStructure,
7095        fieldname: *const c_char,
7096        array: *const gobject::GValueArray,
7097    );
7098    pub fn gst_structure_set_name(structure: *mut GstStructure, name: *const c_char);
7099    #[cfg(feature = "v1_26")]
7100    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7101    pub fn gst_structure_set_name_id_str(structure: *mut GstStructure, name: *const GstIdStr);
7102    #[cfg(feature = "v1_26")]
7103    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7104    pub fn gst_structure_set_name_static_str(structure: *mut GstStructure, name: *const c_char);
7105    pub fn gst_structure_set_parent_refcount(
7106        structure: *mut GstStructure,
7107        refcount: *mut c_int,
7108    ) -> gboolean;
7109    #[cfg(feature = "v1_26")]
7110    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7111    pub fn gst_structure_set_static_str(
7112        structure: *mut GstStructure,
7113        fieldname: *const c_char,
7114        ...
7115    );
7116    //#[cfg(feature = "v1_26")]
7117    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7118    //pub fn gst_structure_set_static_str_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7119    //pub fn gst_structure_set_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7120    pub fn gst_structure_set_value(
7121        structure: *mut GstStructure,
7122        fieldname: *const c_char,
7123        value: *const gobject::GValue,
7124    );
7125    #[cfg(feature = "v1_26")]
7126    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7127    pub fn gst_structure_set_value_static_str(
7128        structure: *mut GstStructure,
7129        fieldname: *const c_char,
7130        value: *const gobject::GValue,
7131    );
7132    pub fn gst_structure_take_value(
7133        structure: *mut GstStructure,
7134        fieldname: *const c_char,
7135        value: *mut gobject::GValue,
7136    );
7137    #[cfg(feature = "v1_26")]
7138    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7139    pub fn gst_structure_take_value_static_str(
7140        structure: *mut GstStructure,
7141        fieldname: *const c_char,
7142        value: *mut gobject::GValue,
7143    );
7144    pub fn gst_structure_to_string(structure: *const GstStructure) -> *mut c_char;
7145    #[cfg(feature = "v1_18")]
7146    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7147    pub fn gst_structure_take(
7148        oldstr_ptr: *mut *mut GstStructure,
7149        newstr: *mut GstStructure,
7150    ) -> gboolean;
7151
7152    //=========================================================================
7153    // GstTagList
7154    //=========================================================================
7155    pub fn gst_tag_list_get_type() -> GType;
7156    pub fn gst_tag_list_new(tag: *const c_char, ...) -> *mut GstTagList;
7157    pub fn gst_tag_list_new_empty() -> *mut GstTagList;
7158    pub fn gst_tag_list_new_from_string(str: *const c_char) -> *mut GstTagList;
7159    //pub fn gst_tag_list_new_valist(var_args: /*Unimplemented*/va_list) -> *mut GstTagList;
7160    pub fn gst_tag_list_add(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, ...);
7161    //pub fn gst_tag_list_add_valist(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
7162    //pub fn gst_tag_list_add_valist_values(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
7163    pub fn gst_tag_list_add_value(
7164        list: *mut GstTagList,
7165        mode: GstTagMergeMode,
7166        tag: *const c_char,
7167        value: *const gobject::GValue,
7168    );
7169    pub fn gst_tag_list_add_values(
7170        list: *mut GstTagList,
7171        mode: GstTagMergeMode,
7172        tag: *const c_char,
7173        ...
7174    );
7175    #[cfg(feature = "v1_18_3")]
7176    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7177    pub fn gst_tag_list_copy(taglist: *const GstTagList) -> *mut GstTagList;
7178    pub fn gst_tag_list_foreach(
7179        list: *const GstTagList,
7180        func: GstTagForeachFunc,
7181        user_data: gpointer,
7182    );
7183    pub fn gst_tag_list_get_boolean(
7184        list: *const GstTagList,
7185        tag: *const c_char,
7186        value: *mut gboolean,
7187    ) -> gboolean;
7188    pub fn gst_tag_list_get_boolean_index(
7189        list: *const GstTagList,
7190        tag: *const c_char,
7191        index: c_uint,
7192        value: *mut gboolean,
7193    ) -> gboolean;
7194    pub fn gst_tag_list_get_date(
7195        list: *const GstTagList,
7196        tag: *const c_char,
7197        value: *mut *mut glib::GDate,
7198    ) -> gboolean;
7199    pub fn gst_tag_list_get_date_index(
7200        list: *const GstTagList,
7201        tag: *const c_char,
7202        index: c_uint,
7203        value: *mut *mut glib::GDate,
7204    ) -> gboolean;
7205    pub fn gst_tag_list_get_date_time(
7206        list: *const GstTagList,
7207        tag: *const c_char,
7208        value: *mut *mut GstDateTime,
7209    ) -> gboolean;
7210    pub fn gst_tag_list_get_date_time_index(
7211        list: *const GstTagList,
7212        tag: *const c_char,
7213        index: c_uint,
7214        value: *mut *mut GstDateTime,
7215    ) -> gboolean;
7216    pub fn gst_tag_list_get_double(
7217        list: *const GstTagList,
7218        tag: *const c_char,
7219        value: *mut c_double,
7220    ) -> gboolean;
7221    pub fn gst_tag_list_get_double_index(
7222        list: *const GstTagList,
7223        tag: *const c_char,
7224        index: c_uint,
7225        value: *mut c_double,
7226    ) -> gboolean;
7227    pub fn gst_tag_list_get_float(
7228        list: *const GstTagList,
7229        tag: *const c_char,
7230        value: *mut c_float,
7231    ) -> gboolean;
7232    pub fn gst_tag_list_get_float_index(
7233        list: *const GstTagList,
7234        tag: *const c_char,
7235        index: c_uint,
7236        value: *mut c_float,
7237    ) -> gboolean;
7238    pub fn gst_tag_list_get_int(
7239        list: *const GstTagList,
7240        tag: *const c_char,
7241        value: *mut c_int,
7242    ) -> gboolean;
7243    pub fn gst_tag_list_get_int64(
7244        list: *const GstTagList,
7245        tag: *const c_char,
7246        value: *mut i64,
7247    ) -> gboolean;
7248    pub fn gst_tag_list_get_int64_index(
7249        list: *const GstTagList,
7250        tag: *const c_char,
7251        index: c_uint,
7252        value: *mut i64,
7253    ) -> gboolean;
7254    pub fn gst_tag_list_get_int_index(
7255        list: *const GstTagList,
7256        tag: *const c_char,
7257        index: c_uint,
7258        value: *mut c_int,
7259    ) -> gboolean;
7260    pub fn gst_tag_list_get_pointer(
7261        list: *const GstTagList,
7262        tag: *const c_char,
7263        value: *mut gpointer,
7264    ) -> gboolean;
7265    pub fn gst_tag_list_get_pointer_index(
7266        list: *const GstTagList,
7267        tag: *const c_char,
7268        index: c_uint,
7269        value: *mut gpointer,
7270    ) -> gboolean;
7271    pub fn gst_tag_list_get_sample(
7272        list: *const GstTagList,
7273        tag: *const c_char,
7274        sample: *mut *mut GstSample,
7275    ) -> gboolean;
7276    pub fn gst_tag_list_get_sample_index(
7277        list: *const GstTagList,
7278        tag: *const c_char,
7279        index: c_uint,
7280        sample: *mut *mut GstSample,
7281    ) -> gboolean;
7282    pub fn gst_tag_list_get_scope(list: *const GstTagList) -> GstTagScope;
7283    pub fn gst_tag_list_get_string(
7284        list: *const GstTagList,
7285        tag: *const c_char,
7286        value: *mut *mut c_char,
7287    ) -> gboolean;
7288    pub fn gst_tag_list_get_string_index(
7289        list: *const GstTagList,
7290        tag: *const c_char,
7291        index: c_uint,
7292        value: *mut *mut c_char,
7293    ) -> gboolean;
7294    pub fn gst_tag_list_get_tag_size(list: *const GstTagList, tag: *const c_char) -> c_uint;
7295    pub fn gst_tag_list_get_uint(
7296        list: *const GstTagList,
7297        tag: *const c_char,
7298        value: *mut c_uint,
7299    ) -> gboolean;
7300    pub fn gst_tag_list_get_uint64(
7301        list: *const GstTagList,
7302        tag: *const c_char,
7303        value: *mut u64,
7304    ) -> gboolean;
7305    pub fn gst_tag_list_get_uint64_index(
7306        list: *const GstTagList,
7307        tag: *const c_char,
7308        index: c_uint,
7309        value: *mut u64,
7310    ) -> gboolean;
7311    pub fn gst_tag_list_get_uint_index(
7312        list: *const GstTagList,
7313        tag: *const c_char,
7314        index: c_uint,
7315        value: *mut c_uint,
7316    ) -> gboolean;
7317    pub fn gst_tag_list_get_value_index(
7318        list: *const GstTagList,
7319        tag: *const c_char,
7320        index: c_uint,
7321    ) -> *const gobject::GValue;
7322    pub fn gst_tag_list_insert(
7323        into: *mut GstTagList,
7324        from: *const GstTagList,
7325        mode: GstTagMergeMode,
7326    );
7327    pub fn gst_tag_list_is_empty(list: *const GstTagList) -> gboolean;
7328    pub fn gst_tag_list_is_equal(list1: *const GstTagList, list2: *const GstTagList) -> gboolean;
7329    pub fn gst_tag_list_merge(
7330        list1: *const GstTagList,
7331        list2: *const GstTagList,
7332        mode: GstTagMergeMode,
7333    ) -> *mut GstTagList;
7334    pub fn gst_tag_list_n_tags(list: *const GstTagList) -> c_int;
7335    pub fn gst_tag_list_nth_tag_name(list: *const GstTagList, index: c_uint) -> *const c_char;
7336    pub fn gst_tag_list_peek_string_index(
7337        list: *const GstTagList,
7338        tag: *const c_char,
7339        index: c_uint,
7340        value: *mut *const c_char,
7341    ) -> gboolean;
7342    #[cfg(feature = "v1_18_3")]
7343    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7344    pub fn gst_tag_list_ref(taglist: *mut GstTagList) -> *mut GstTagList;
7345    pub fn gst_tag_list_remove_tag(list: *mut GstTagList, tag: *const c_char);
7346    pub fn gst_tag_list_set_scope(list: *mut GstTagList, scope: GstTagScope);
7347    pub fn gst_tag_list_to_string(list: *const GstTagList) -> *mut c_char;
7348    #[cfg(feature = "v1_18_3")]
7349    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7350    pub fn gst_tag_list_unref(taglist: *mut GstTagList);
7351    pub fn gst_tag_list_copy_value(
7352        dest: *mut gobject::GValue,
7353        list: *const GstTagList,
7354        tag: *const c_char,
7355    ) -> gboolean;
7356    #[cfg(feature = "v1_18_3")]
7357    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7358    pub fn gst_tag_list_replace(
7359        old_taglist: *mut *mut GstTagList,
7360        new_taglist: *mut GstTagList,
7361    ) -> gboolean;
7362    #[cfg(feature = "v1_18_3")]
7363    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7364    pub fn gst_tag_list_take(
7365        old_taglist: *mut *mut GstTagList,
7366        new_taglist: *mut GstTagList,
7367    ) -> gboolean;
7368
7369    //=========================================================================
7370    // GstToc
7371    //=========================================================================
7372    pub fn gst_toc_get_type() -> GType;
7373    pub fn gst_toc_new(scope: GstTocScope) -> *mut GstToc;
7374    pub fn gst_toc_append_entry(toc: *mut GstToc, entry: *mut GstTocEntry);
7375    pub fn gst_toc_dump(toc: *mut GstToc);
7376    pub fn gst_toc_find_entry(toc: *const GstToc, uid: *const c_char) -> *mut GstTocEntry;
7377    pub fn gst_toc_get_entries(toc: *const GstToc) -> *mut glib::GList;
7378    pub fn gst_toc_get_scope(toc: *const GstToc) -> GstTocScope;
7379    pub fn gst_toc_get_tags(toc: *const GstToc) -> *mut GstTagList;
7380    pub fn gst_toc_merge_tags(toc: *mut GstToc, tags: *mut GstTagList, mode: GstTagMergeMode);
7381    pub fn gst_toc_set_tags(toc: *mut GstToc, tags: *mut GstTagList);
7382
7383    //=========================================================================
7384    // GstTocEntry
7385    //=========================================================================
7386    pub fn gst_toc_entry_get_type() -> GType;
7387    pub fn gst_toc_entry_new(type_: GstTocEntryType, uid: *const c_char) -> *mut GstTocEntry;
7388    pub fn gst_toc_entry_append_sub_entry(entry: *mut GstTocEntry, subentry: *mut GstTocEntry);
7389    pub fn gst_toc_entry_get_entry_type(entry: *const GstTocEntry) -> GstTocEntryType;
7390    pub fn gst_toc_entry_get_loop(
7391        entry: *const GstTocEntry,
7392        loop_type: *mut GstTocLoopType,
7393        repeat_count: *mut c_int,
7394    ) -> gboolean;
7395    pub fn gst_toc_entry_get_parent(entry: *mut GstTocEntry) -> *mut GstTocEntry;
7396    pub fn gst_toc_entry_get_start_stop_times(
7397        entry: *const GstTocEntry,
7398        start: *mut i64,
7399        stop: *mut i64,
7400    ) -> gboolean;
7401    pub fn gst_toc_entry_get_sub_entries(entry: *const GstTocEntry) -> *mut glib::GList;
7402    pub fn gst_toc_entry_get_tags(entry: *const GstTocEntry) -> *mut GstTagList;
7403    pub fn gst_toc_entry_get_toc(entry: *mut GstTocEntry) -> *mut GstToc;
7404    pub fn gst_toc_entry_get_uid(entry: *const GstTocEntry) -> *const c_char;
7405    pub fn gst_toc_entry_is_alternative(entry: *const GstTocEntry) -> gboolean;
7406    pub fn gst_toc_entry_is_sequence(entry: *const GstTocEntry) -> gboolean;
7407    pub fn gst_toc_entry_merge_tags(
7408        entry: *mut GstTocEntry,
7409        tags: *mut GstTagList,
7410        mode: GstTagMergeMode,
7411    );
7412    pub fn gst_toc_entry_set_loop(
7413        entry: *mut GstTocEntry,
7414        loop_type: GstTocLoopType,
7415        repeat_count: c_int,
7416    );
7417    pub fn gst_toc_entry_set_start_stop_times(entry: *mut GstTocEntry, start: i64, stop: i64);
7418    pub fn gst_toc_entry_set_tags(entry: *mut GstTocEntry, tags: *mut GstTagList);
7419
7420    //=========================================================================
7421    // GstTracerClass
7422    //=========================================================================
7423    #[cfg(feature = "v1_26")]
7424    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7425    pub fn gst_tracer_class_set_use_structure_params(
7426        tracer_class: *mut GstTracerClass,
7427        use_structure_params: gboolean,
7428    );
7429    #[cfg(feature = "v1_26")]
7430    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7431    pub fn gst_tracer_class_uses_structure_params(tracer_class: *mut GstTracerClass) -> gboolean;
7432
7433    //=========================================================================
7434    // GstTypeFind
7435    //=========================================================================
7436    pub fn gst_type_find_get_type() -> GType;
7437    pub fn gst_type_find_get_length(find: *mut GstTypeFind) -> u64;
7438    pub fn gst_type_find_peek(find: *mut GstTypeFind, offset: i64, size: c_uint) -> *const u8;
7439    pub fn gst_type_find_suggest(find: *mut GstTypeFind, probability: c_uint, caps: *mut GstCaps);
7440    #[cfg(feature = "v1_20")]
7441    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
7442    pub fn gst_type_find_suggest_empty_simple(
7443        find: *mut GstTypeFind,
7444        probability: c_uint,
7445        media_type: *const c_char,
7446    );
7447    pub fn gst_type_find_suggest_simple(
7448        find: *mut GstTypeFind,
7449        probability: c_uint,
7450        media_type: *const c_char,
7451        fieldname: *const c_char,
7452        ...
7453    );
7454    pub fn gst_type_find_register(
7455        plugin: *mut GstPlugin,
7456        name: *const c_char,
7457        rank: c_uint,
7458        func: GstTypeFindFunction,
7459        extensions: *const c_char,
7460        possible_caps: *mut GstCaps,
7461        data: gpointer,
7462        data_notify: glib::GDestroyNotify,
7463    ) -> gboolean;
7464
7465    //=========================================================================
7466    // GstUri
7467    //=========================================================================
7468    pub fn gst_uri_get_type() -> GType;
7469    pub fn gst_uri_new(
7470        scheme: *const c_char,
7471        userinfo: *const c_char,
7472        host: *const c_char,
7473        port: c_uint,
7474        path: *const c_char,
7475        query: *const c_char,
7476        fragment: *const c_char,
7477    ) -> *mut GstUri;
7478    pub fn gst_uri_append_path(uri: *mut GstUri, relative_path: *const c_char) -> gboolean;
7479    pub fn gst_uri_append_path_segment(uri: *mut GstUri, path_segment: *const c_char) -> gboolean;
7480    #[cfg(feature = "v1_18_3")]
7481    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7482    pub fn gst_uri_copy(uri: *const GstUri) -> *mut GstUri;
7483    pub fn gst_uri_equal(first: *const GstUri, second: *const GstUri) -> gboolean;
7484    pub fn gst_uri_from_string_with_base(base: *mut GstUri, uri: *const c_char) -> *mut GstUri;
7485    pub fn gst_uri_get_fragment(uri: *const GstUri) -> *const c_char;
7486    pub fn gst_uri_get_host(uri: *const GstUri) -> *const c_char;
7487    pub fn gst_uri_get_media_fragment_table(uri: *const GstUri) -> *mut glib::GHashTable;
7488    pub fn gst_uri_get_path(uri: *const GstUri) -> *mut c_char;
7489    pub fn gst_uri_get_path_segments(uri: *const GstUri) -> *mut glib::GList;
7490    pub fn gst_uri_get_path_string(uri: *const GstUri) -> *mut c_char;
7491    pub fn gst_uri_get_port(uri: *const GstUri) -> c_uint;
7492    pub fn gst_uri_get_query_keys(uri: *const GstUri) -> *mut glib::GList;
7493    pub fn gst_uri_get_query_string(uri: *const GstUri) -> *mut c_char;
7494    #[cfg(feature = "v1_24")]
7495    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7496    pub fn gst_uri_get_query_string_ordered(
7497        uri: *const GstUri,
7498        keys: *const glib::GList,
7499    ) -> *mut c_char;
7500    pub fn gst_uri_get_query_table(uri: *const GstUri) -> *mut glib::GHashTable;
7501    pub fn gst_uri_get_query_value(uri: *const GstUri, query_key: *const c_char) -> *const c_char;
7502    pub fn gst_uri_get_scheme(uri: *const GstUri) -> *const c_char;
7503    pub fn gst_uri_get_userinfo(uri: *const GstUri) -> *const c_char;
7504    pub fn gst_uri_is_normalized(uri: *const GstUri) -> gboolean;
7505    pub fn gst_uri_is_writable(uri: *const GstUri) -> gboolean;
7506    pub fn gst_uri_join(base_uri: *mut GstUri, ref_uri: *mut GstUri) -> *mut GstUri;
7507    pub fn gst_uri_make_writable(uri: *mut GstUri) -> *mut GstUri;
7508    pub fn gst_uri_new_with_base(
7509        base: *mut GstUri,
7510        scheme: *const c_char,
7511        userinfo: *const c_char,
7512        host: *const c_char,
7513        port: c_uint,
7514        path: *const c_char,
7515        query: *const c_char,
7516        fragment: *const c_char,
7517    ) -> *mut GstUri;
7518    pub fn gst_uri_normalize(uri: *mut GstUri) -> gboolean;
7519    pub fn gst_uri_query_has_key(uri: *const GstUri, query_key: *const c_char) -> gboolean;
7520    #[cfg(feature = "v1_18_3")]
7521    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7522    pub fn gst_uri_ref(uri: *mut GstUri) -> *mut GstUri;
7523    pub fn gst_uri_remove_query_key(uri: *mut GstUri, query_key: *const c_char) -> gboolean;
7524    pub fn gst_uri_set_fragment(uri: *mut GstUri, fragment: *const c_char) -> gboolean;
7525    pub fn gst_uri_set_host(uri: *mut GstUri, host: *const c_char) -> gboolean;
7526    pub fn gst_uri_set_path(uri: *mut GstUri, path: *const c_char) -> gboolean;
7527    pub fn gst_uri_set_path_segments(uri: *mut GstUri, path_segments: *mut glib::GList)
7528        -> gboolean;
7529    pub fn gst_uri_set_path_string(uri: *mut GstUri, path: *const c_char) -> gboolean;
7530    pub fn gst_uri_set_port(uri: *mut GstUri, port: c_uint) -> gboolean;
7531    pub fn gst_uri_set_query_string(uri: *mut GstUri, query: *const c_char) -> gboolean;
7532    pub fn gst_uri_set_query_table(
7533        uri: *mut GstUri,
7534        query_table: *mut glib::GHashTable,
7535    ) -> gboolean;
7536    pub fn gst_uri_set_query_value(
7537        uri: *mut GstUri,
7538        query_key: *const c_char,
7539        query_value: *const c_char,
7540    ) -> gboolean;
7541    pub fn gst_uri_set_scheme(uri: *mut GstUri, scheme: *const c_char) -> gboolean;
7542    pub fn gst_uri_set_userinfo(uri: *mut GstUri, userinfo: *const c_char) -> gboolean;
7543    pub fn gst_uri_to_string(uri: *const GstUri) -> *mut c_char;
7544    #[cfg(feature = "v1_24")]
7545    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7546    pub fn gst_uri_to_string_with_keys(uri: *const GstUri, keys: *const glib::GList)
7547        -> *mut c_char;
7548    #[cfg(feature = "v1_18_3")]
7549    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7550    pub fn gst_uri_unref(uri: *mut GstUri);
7551    pub fn gst_uri_construct(protocol: *const c_char, location: *const c_char) -> *mut c_char;
7552    pub fn gst_uri_from_string(uri: *const c_char) -> *mut GstUri;
7553    #[cfg(feature = "v1_18")]
7554    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7555    pub fn gst_uri_from_string_escaped(uri: *const c_char) -> *mut GstUri;
7556    pub fn gst_uri_get_location(uri: *const c_char) -> *mut c_char;
7557    pub fn gst_uri_get_protocol(uri: *const c_char) -> *mut c_char;
7558    pub fn gst_uri_has_protocol(uri: *const c_char, protocol: *const c_char) -> gboolean;
7559    pub fn gst_uri_is_valid(uri: *const c_char) -> gboolean;
7560    pub fn gst_uri_join_strings(base_uri: *const c_char, ref_uri: *const c_char) -> *mut c_char;
7561    pub fn gst_uri_protocol_is_supported(type_: GstURIType, protocol: *const c_char) -> gboolean;
7562    pub fn gst_uri_protocol_is_valid(protocol: *const c_char) -> gboolean;
7563
7564    //=========================================================================
7565    // GstVecDeque
7566    //=========================================================================
7567    #[cfg(feature = "v1_26")]
7568    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7569    pub fn gst_vec_deque_clear(array: *mut GstVecDeque);
7570    #[cfg(feature = "v1_26")]
7571    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7572    pub fn gst_vec_deque_drop_element(array: *mut GstVecDeque, idx: size_t) -> gpointer;
7573    #[cfg(feature = "v1_26")]
7574    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7575    pub fn gst_vec_deque_drop_struct(
7576        array: *mut GstVecDeque,
7577        idx: size_t,
7578        p_struct: gpointer,
7579    ) -> gboolean;
7580    #[cfg(feature = "v1_26")]
7581    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7582    pub fn gst_vec_deque_find(
7583        array: *mut GstVecDeque,
7584        func: glib::GCompareFunc,
7585        data: gpointer,
7586    ) -> size_t;
7587    #[cfg(feature = "v1_26")]
7588    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7589    pub fn gst_vec_deque_free(array: *mut GstVecDeque);
7590    #[cfg(feature = "v1_26")]
7591    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7592    pub fn gst_vec_deque_get_length(array: *mut GstVecDeque) -> size_t;
7593    #[cfg(feature = "v1_26")]
7594    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7595    pub fn gst_vec_deque_is_empty(array: *mut GstVecDeque) -> gboolean;
7596    #[cfg(feature = "v1_26")]
7597    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7598    pub fn gst_vec_deque_peek_head(array: *mut GstVecDeque) -> gpointer;
7599    #[cfg(feature = "v1_26")]
7600    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7601    pub fn gst_vec_deque_peek_head_struct(array: *mut GstVecDeque) -> gpointer;
7602    #[cfg(feature = "v1_26")]
7603    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7604    pub fn gst_vec_deque_peek_nth(array: *mut GstVecDeque, idx: size_t) -> gpointer;
7605    #[cfg(feature = "v1_26")]
7606    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7607    pub fn gst_vec_deque_peek_nth_struct(array: *mut GstVecDeque, idx: size_t) -> gpointer;
7608    #[cfg(feature = "v1_26")]
7609    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7610    pub fn gst_vec_deque_peek_tail(array: *mut GstVecDeque) -> gpointer;
7611    #[cfg(feature = "v1_26")]
7612    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7613    pub fn gst_vec_deque_peek_tail_struct(array: *mut GstVecDeque) -> gpointer;
7614    #[cfg(feature = "v1_26")]
7615    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7616    pub fn gst_vec_deque_pop_head(array: *mut GstVecDeque) -> gpointer;
7617    #[cfg(feature = "v1_26")]
7618    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7619    pub fn gst_vec_deque_pop_head_struct(array: *mut GstVecDeque) -> gpointer;
7620    #[cfg(feature = "v1_26")]
7621    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7622    pub fn gst_vec_deque_pop_tail(array: *mut GstVecDeque) -> gpointer;
7623    #[cfg(feature = "v1_26")]
7624    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7625    pub fn gst_vec_deque_pop_tail_struct(array: *mut GstVecDeque) -> gpointer;
7626    #[cfg(feature = "v1_26")]
7627    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7628    pub fn gst_vec_deque_push_sorted(
7629        array: *mut GstVecDeque,
7630        data: gpointer,
7631        func: glib::GCompareDataFunc,
7632        user_data: gpointer,
7633    );
7634    #[cfg(feature = "v1_26")]
7635    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7636    pub fn gst_vec_deque_push_sorted_struct(
7637        array: *mut GstVecDeque,
7638        p_struct: gpointer,
7639        func: glib::GCompareDataFunc,
7640        user_data: gpointer,
7641    );
7642    #[cfg(feature = "v1_26")]
7643    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7644    pub fn gst_vec_deque_push_tail(array: *mut GstVecDeque, data: gpointer);
7645    #[cfg(feature = "v1_26")]
7646    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7647    pub fn gst_vec_deque_push_tail_struct(array: *mut GstVecDeque, p_struct: gpointer);
7648    #[cfg(feature = "v1_26")]
7649    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7650    pub fn gst_vec_deque_set_clear_func(array: *mut GstVecDeque, clear_func: glib::GDestroyNotify);
7651    #[cfg(feature = "v1_26")]
7652    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7653    pub fn gst_vec_deque_sort(
7654        array: *mut GstVecDeque,
7655        compare_func: glib::GCompareDataFunc,
7656        user_data: gpointer,
7657    );
7658    #[cfg(feature = "v1_26")]
7659    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7660    pub fn gst_vec_deque_new(initial_size: size_t) -> *mut GstVecDeque;
7661    #[cfg(feature = "v1_26")]
7662    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7663    pub fn gst_vec_deque_new_for_struct(
7664        struct_size: size_t,
7665        initial_size: size_t,
7666    ) -> *mut GstVecDeque;
7667
7668    //=========================================================================
7669    // GstAllocator
7670    //=========================================================================
7671    pub fn gst_allocator_get_type() -> GType;
7672    pub fn gst_allocator_find(name: *const c_char) -> *mut GstAllocator;
7673    pub fn gst_allocator_register(name: *const c_char, allocator: *mut GstAllocator);
7674    pub fn gst_allocator_alloc(
7675        allocator: *mut GstAllocator,
7676        size: size_t,
7677        params: *mut GstAllocationParams,
7678    ) -> *mut GstMemory;
7679    pub fn gst_allocator_free(allocator: *mut GstAllocator, memory: *mut GstMemory);
7680    pub fn gst_allocator_set_default(allocator: *mut GstAllocator);
7681
7682    //=========================================================================
7683    // GstBin
7684    //=========================================================================
7685    pub fn gst_bin_get_type() -> GType;
7686    pub fn gst_bin_new(name: *const c_char) -> *mut GstElement;
7687    pub fn gst_bin_add(bin: *mut GstBin, element: *mut GstElement) -> gboolean;
7688    pub fn gst_bin_add_many(bin: *mut GstBin, element_1: *mut GstElement, ...);
7689    pub fn gst_bin_find_unlinked_pad(bin: *mut GstBin, direction: GstPadDirection) -> *mut GstPad;
7690    pub fn gst_bin_get_by_interface(bin: *mut GstBin, iface: GType) -> *mut GstElement;
7691    pub fn gst_bin_get_by_name(bin: *mut GstBin, name: *const c_char) -> *mut GstElement;
7692    pub fn gst_bin_get_by_name_recurse_up(bin: *mut GstBin, name: *const c_char)
7693        -> *mut GstElement;
7694    pub fn gst_bin_get_suppressed_flags(bin: *mut GstBin) -> GstElementFlags;
7695    #[cfg(feature = "v1_18")]
7696    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7697    pub fn gst_bin_iterate_all_by_element_factory_name(
7698        bin: *mut GstBin,
7699        factory_name: *const c_char,
7700    ) -> *mut GstIterator;
7701    pub fn gst_bin_iterate_all_by_interface(bin: *mut GstBin, iface: GType) -> *mut GstIterator;
7702    pub fn gst_bin_iterate_elements(bin: *mut GstBin) -> *mut GstIterator;
7703    pub fn gst_bin_iterate_recurse(bin: *mut GstBin) -> *mut GstIterator;
7704    pub fn gst_bin_iterate_sinks(bin: *mut GstBin) -> *mut GstIterator;
7705    pub fn gst_bin_iterate_sorted(bin: *mut GstBin) -> *mut GstIterator;
7706    pub fn gst_bin_iterate_sources(bin: *mut GstBin) -> *mut GstIterator;
7707    pub fn gst_bin_recalculate_latency(bin: *mut GstBin) -> gboolean;
7708    pub fn gst_bin_remove(bin: *mut GstBin, element: *mut GstElement) -> gboolean;
7709    pub fn gst_bin_remove_many(bin: *mut GstBin, element_1: *mut GstElement, ...);
7710    pub fn gst_bin_set_suppressed_flags(bin: *mut GstBin, flags: GstElementFlags);
7711    pub fn gst_bin_sync_children_states(bin: *mut GstBin) -> gboolean;
7712
7713    //=========================================================================
7714    // GstBitmask
7715    //=========================================================================
7716    pub fn gst_bitmask_get_type() -> GType;
7717
7718    //=========================================================================
7719    // GstBufferPool
7720    //=========================================================================
7721    pub fn gst_buffer_pool_get_type() -> GType;
7722    pub fn gst_buffer_pool_new() -> *mut GstBufferPool;
7723    pub fn gst_buffer_pool_config_add_option(config: *mut GstStructure, option: *const c_char);
7724    pub fn gst_buffer_pool_config_get_allocator(
7725        config: *mut GstStructure,
7726        allocator: *mut *mut GstAllocator,
7727        params: *mut GstAllocationParams,
7728    ) -> gboolean;
7729    pub fn gst_buffer_pool_config_get_option(
7730        config: *mut GstStructure,
7731        index: c_uint,
7732    ) -> *const c_char;
7733    pub fn gst_buffer_pool_config_get_params(
7734        config: *mut GstStructure,
7735        caps: *mut *mut GstCaps,
7736        size: *mut c_uint,
7737        min_buffers: *mut c_uint,
7738        max_buffers: *mut c_uint,
7739    ) -> gboolean;
7740    pub fn gst_buffer_pool_config_has_option(
7741        config: *mut GstStructure,
7742        option: *const c_char,
7743    ) -> gboolean;
7744    pub fn gst_buffer_pool_config_n_options(config: *mut GstStructure) -> c_uint;
7745    pub fn gst_buffer_pool_config_set_allocator(
7746        config: *mut GstStructure,
7747        allocator: *mut GstAllocator,
7748        params: *const GstAllocationParams,
7749    );
7750    pub fn gst_buffer_pool_config_set_params(
7751        config: *mut GstStructure,
7752        caps: *mut GstCaps,
7753        size: c_uint,
7754        min_buffers: c_uint,
7755        max_buffers: c_uint,
7756    );
7757    pub fn gst_buffer_pool_config_validate_params(
7758        config: *mut GstStructure,
7759        caps: *mut GstCaps,
7760        size: c_uint,
7761        min_buffers: c_uint,
7762        max_buffers: c_uint,
7763    ) -> gboolean;
7764    pub fn gst_buffer_pool_acquire_buffer(
7765        pool: *mut GstBufferPool,
7766        buffer: *mut *mut GstBuffer,
7767        params: *mut GstBufferPoolAcquireParams,
7768    ) -> GstFlowReturn;
7769    pub fn gst_buffer_pool_get_config(pool: *mut GstBufferPool) -> *mut GstStructure;
7770    pub fn gst_buffer_pool_get_options(pool: *mut GstBufferPool) -> *mut *const c_char;
7771    pub fn gst_buffer_pool_has_option(pool: *mut GstBufferPool, option: *const c_char) -> gboolean;
7772    pub fn gst_buffer_pool_is_active(pool: *mut GstBufferPool) -> gboolean;
7773    pub fn gst_buffer_pool_release_buffer(pool: *mut GstBufferPool, buffer: *mut GstBuffer);
7774    pub fn gst_buffer_pool_set_active(pool: *mut GstBufferPool, active: gboolean) -> gboolean;
7775    pub fn gst_buffer_pool_set_config(
7776        pool: *mut GstBufferPool,
7777        config: *mut GstStructure,
7778    ) -> gboolean;
7779    pub fn gst_buffer_pool_set_flushing(pool: *mut GstBufferPool, flushing: gboolean);
7780
7781    //=========================================================================
7782    // GstBus
7783    //=========================================================================
7784    pub fn gst_bus_get_type() -> GType;
7785    pub fn gst_bus_new() -> *mut GstBus;
7786    pub fn gst_bus_add_signal_watch(bus: *mut GstBus);
7787    pub fn gst_bus_add_signal_watch_full(bus: *mut GstBus, priority: c_int);
7788    pub fn gst_bus_add_watch(bus: *mut GstBus, func: GstBusFunc, user_data: gpointer) -> c_uint;
7789    pub fn gst_bus_add_watch_full(
7790        bus: *mut GstBus,
7791        priority: c_int,
7792        func: GstBusFunc,
7793        user_data: gpointer,
7794        notify: glib::GDestroyNotify,
7795    ) -> c_uint;
7796    pub fn gst_bus_async_signal_func(
7797        bus: *mut GstBus,
7798        message: *mut GstMessage,
7799        data: gpointer,
7800    ) -> gboolean;
7801    pub fn gst_bus_create_watch(bus: *mut GstBus) -> *mut glib::GSource;
7802    pub fn gst_bus_disable_sync_message_emission(bus: *mut GstBus);
7803    pub fn gst_bus_enable_sync_message_emission(bus: *mut GstBus);
7804    pub fn gst_bus_get_pollfd(bus: *mut GstBus, fd: *mut glib::GPollFD);
7805    pub fn gst_bus_have_pending(bus: *mut GstBus) -> gboolean;
7806    pub fn gst_bus_peek(bus: *mut GstBus) -> *mut GstMessage;
7807    pub fn gst_bus_poll(
7808        bus: *mut GstBus,
7809        events: GstMessageType,
7810        timeout: GstClockTime,
7811    ) -> *mut GstMessage;
7812    pub fn gst_bus_pop(bus: *mut GstBus) -> *mut GstMessage;
7813    pub fn gst_bus_pop_filtered(bus: *mut GstBus, types: GstMessageType) -> *mut GstMessage;
7814    pub fn gst_bus_post(bus: *mut GstBus, message: *mut GstMessage) -> gboolean;
7815    pub fn gst_bus_remove_signal_watch(bus: *mut GstBus);
7816    pub fn gst_bus_remove_watch(bus: *mut GstBus) -> gboolean;
7817    pub fn gst_bus_set_flushing(bus: *mut GstBus, flushing: gboolean);
7818    pub fn gst_bus_set_sync_handler(
7819        bus: *mut GstBus,
7820        func: GstBusSyncHandler,
7821        user_data: gpointer,
7822        notify: glib::GDestroyNotify,
7823    );
7824    pub fn gst_bus_sync_signal_handler(
7825        bus: *mut GstBus,
7826        message: *mut GstMessage,
7827        data: gpointer,
7828    ) -> GstBusSyncReply;
7829    pub fn gst_bus_timed_pop(bus: *mut GstBus, timeout: GstClockTime) -> *mut GstMessage;
7830    pub fn gst_bus_timed_pop_filtered(
7831        bus: *mut GstBus,
7832        timeout: GstClockTime,
7833        types: GstMessageType,
7834    ) -> *mut GstMessage;
7835
7836    //=========================================================================
7837    // GstClock
7838    //=========================================================================
7839    pub fn gst_clock_get_type() -> GType;
7840    pub fn gst_clock_id_compare_func(id1: gconstpointer, id2: gconstpointer) -> c_int;
7841    #[cfg(feature = "v1_16")]
7842    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
7843    pub fn gst_clock_id_get_clock(id: GstClockID) -> *mut GstClock;
7844    pub fn gst_clock_id_get_time(id: GstClockID) -> GstClockTime;
7845    pub fn gst_clock_id_ref(id: GstClockID) -> GstClockID;
7846    pub fn gst_clock_id_unref(id: GstClockID);
7847    pub fn gst_clock_id_unschedule(id: GstClockID);
7848    #[cfg(feature = "v1_16")]
7849    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
7850    pub fn gst_clock_id_uses_clock(id: GstClockID, clock: *mut GstClock) -> gboolean;
7851    pub fn gst_clock_id_wait(id: GstClockID, jitter: *mut GstClockTimeDiff) -> GstClockReturn;
7852    pub fn gst_clock_id_wait_async(
7853        id: GstClockID,
7854        func: GstClockCallback,
7855        user_data: gpointer,
7856        destroy_data: glib::GDestroyNotify,
7857    ) -> GstClockReturn;
7858    pub fn gst_clock_add_observation(
7859        clock: *mut GstClock,
7860        observation_internal: GstClockTime,
7861        observation_external: GstClockTime,
7862        r_squared: *mut c_double,
7863    ) -> gboolean;
7864    pub fn gst_clock_add_observation_unapplied(
7865        clock: *mut GstClock,
7866        observation_internal: GstClockTime,
7867        observation_external: GstClockTime,
7868        r_squared: *mut c_double,
7869        internal: *mut GstClockTime,
7870        external: *mut GstClockTime,
7871        rate_num: *mut GstClockTime,
7872        rate_denom: *mut GstClockTime,
7873    ) -> gboolean;
7874    pub fn gst_clock_adjust_unlocked(clock: *mut GstClock, internal: GstClockTime) -> GstClockTime;
7875    pub fn gst_clock_adjust_with_calibration(
7876        clock: *mut GstClock,
7877        internal_target: GstClockTime,
7878        cinternal: GstClockTime,
7879        cexternal: GstClockTime,
7880        cnum: GstClockTime,
7881        cdenom: GstClockTime,
7882    ) -> GstClockTime;
7883    pub fn gst_clock_get_calibration(
7884        clock: *mut GstClock,
7885        internal: *mut GstClockTime,
7886        external: *mut GstClockTime,
7887        rate_num: *mut GstClockTime,
7888        rate_denom: *mut GstClockTime,
7889    );
7890    pub fn gst_clock_get_internal_time(clock: *mut GstClock) -> GstClockTime;
7891    pub fn gst_clock_get_master(clock: *mut GstClock) -> *mut GstClock;
7892    pub fn gst_clock_get_resolution(clock: *mut GstClock) -> GstClockTime;
7893    pub fn gst_clock_get_time(clock: *mut GstClock) -> GstClockTime;
7894    pub fn gst_clock_get_timeout(clock: *mut GstClock) -> GstClockTime;
7895    pub fn gst_clock_is_synced(clock: *mut GstClock) -> gboolean;
7896    pub fn gst_clock_new_periodic_id(
7897        clock: *mut GstClock,
7898        start_time: GstClockTime,
7899        interval: GstClockTime,
7900    ) -> GstClockID;
7901    pub fn gst_clock_new_single_shot_id(clock: *mut GstClock, time: GstClockTime) -> GstClockID;
7902    pub fn gst_clock_periodic_id_reinit(
7903        clock: *mut GstClock,
7904        id: GstClockID,
7905        start_time: GstClockTime,
7906        interval: GstClockTime,
7907    ) -> gboolean;
7908    pub fn gst_clock_set_calibration(
7909        clock: *mut GstClock,
7910        internal: GstClockTime,
7911        external: GstClockTime,
7912        rate_num: GstClockTime,
7913        rate_denom: GstClockTime,
7914    );
7915    pub fn gst_clock_set_master(clock: *mut GstClock, master: *mut GstClock) -> gboolean;
7916    pub fn gst_clock_set_resolution(clock: *mut GstClock, resolution: GstClockTime)
7917        -> GstClockTime;
7918    pub fn gst_clock_set_synced(clock: *mut GstClock, synced: gboolean);
7919    pub fn gst_clock_set_timeout(clock: *mut GstClock, timeout: GstClockTime);
7920    pub fn gst_clock_single_shot_id_reinit(
7921        clock: *mut GstClock,
7922        id: GstClockID,
7923        time: GstClockTime,
7924    ) -> gboolean;
7925    pub fn gst_clock_unadjust_unlocked(
7926        clock: *mut GstClock,
7927        external: GstClockTime,
7928    ) -> GstClockTime;
7929    pub fn gst_clock_unadjust_with_calibration(
7930        clock: *mut GstClock,
7931        external_target: GstClockTime,
7932        cinternal: GstClockTime,
7933        cexternal: GstClockTime,
7934        cnum: GstClockTime,
7935        cdenom: GstClockTime,
7936    ) -> GstClockTime;
7937    pub fn gst_clock_wait_for_sync(clock: *mut GstClock, timeout: GstClockTime) -> gboolean;
7938
7939    //=========================================================================
7940    // GstControlBinding
7941    //=========================================================================
7942    pub fn gst_control_binding_get_type() -> GType;
7943    pub fn gst_control_binding_get_g_value_array(
7944        binding: *mut GstControlBinding,
7945        timestamp: GstClockTime,
7946        interval: GstClockTime,
7947        n_values: c_uint,
7948        values: *mut gobject::GValue,
7949    ) -> gboolean;
7950    pub fn gst_control_binding_get_value(
7951        binding: *mut GstControlBinding,
7952        timestamp: GstClockTime,
7953    ) -> *mut gobject::GValue;
7954    pub fn gst_control_binding_get_value_array(
7955        binding: *mut GstControlBinding,
7956        timestamp: GstClockTime,
7957        interval: GstClockTime,
7958        n_values: c_uint,
7959        values: gpointer,
7960    ) -> gboolean;
7961    pub fn gst_control_binding_is_disabled(binding: *mut GstControlBinding) -> gboolean;
7962    pub fn gst_control_binding_set_disabled(binding: *mut GstControlBinding, disabled: gboolean);
7963    pub fn gst_control_binding_sync_values(
7964        binding: *mut GstControlBinding,
7965        object: *mut GstObject,
7966        timestamp: GstClockTime,
7967        last_sync: GstClockTime,
7968    ) -> gboolean;
7969
7970    //=========================================================================
7971    // GstControlSource
7972    //=========================================================================
7973    pub fn gst_control_source_get_type() -> GType;
7974    pub fn gst_control_source_get_value(
7975        self_: *mut GstControlSource,
7976        timestamp: GstClockTime,
7977        value: *mut c_double,
7978    ) -> gboolean;
7979    pub fn gst_control_source_get_value_array(
7980        self_: *mut GstControlSource,
7981        timestamp: GstClockTime,
7982        interval: GstClockTime,
7983        n_values: c_uint,
7984        values: *mut c_double,
7985    ) -> gboolean;
7986
7987    //=========================================================================
7988    // GstDevice
7989    //=========================================================================
7990    pub fn gst_device_get_type() -> GType;
7991    pub fn gst_device_create_element(
7992        device: *mut GstDevice,
7993        name: *const c_char,
7994    ) -> *mut GstElement;
7995    pub fn gst_device_get_caps(device: *mut GstDevice) -> *mut GstCaps;
7996    pub fn gst_device_get_device_class(device: *mut GstDevice) -> *mut c_char;
7997    pub fn gst_device_get_display_name(device: *mut GstDevice) -> *mut c_char;
7998    pub fn gst_device_get_properties(device: *mut GstDevice) -> *mut GstStructure;
7999    pub fn gst_device_has_classes(device: *mut GstDevice, classes: *const c_char) -> gboolean;
8000    pub fn gst_device_has_classesv(device: *mut GstDevice, classes: *mut *mut c_char) -> gboolean;
8001    pub fn gst_device_reconfigure_element(
8002        device: *mut GstDevice,
8003        element: *mut GstElement,
8004    ) -> gboolean;
8005
8006    //=========================================================================
8007    // GstDeviceMonitor
8008    //=========================================================================
8009    pub fn gst_device_monitor_get_type() -> GType;
8010    pub fn gst_device_monitor_new() -> *mut GstDeviceMonitor;
8011    pub fn gst_device_monitor_add_filter(
8012        monitor: *mut GstDeviceMonitor,
8013        classes: *const c_char,
8014        caps: *mut GstCaps,
8015    ) -> c_uint;
8016    pub fn gst_device_monitor_get_bus(monitor: *mut GstDeviceMonitor) -> *mut GstBus;
8017    pub fn gst_device_monitor_get_devices(monitor: *mut GstDeviceMonitor) -> *mut glib::GList;
8018    pub fn gst_device_monitor_get_providers(monitor: *mut GstDeviceMonitor) -> *mut *mut c_char;
8019    pub fn gst_device_monitor_get_show_all_devices(monitor: *mut GstDeviceMonitor) -> gboolean;
8020    pub fn gst_device_monitor_remove_filter(
8021        monitor: *mut GstDeviceMonitor,
8022        filter_id: c_uint,
8023    ) -> gboolean;
8024    pub fn gst_device_monitor_set_show_all_devices(
8025        monitor: *mut GstDeviceMonitor,
8026        show_all: gboolean,
8027    );
8028    pub fn gst_device_monitor_start(monitor: *mut GstDeviceMonitor) -> gboolean;
8029    pub fn gst_device_monitor_stop(monitor: *mut GstDeviceMonitor);
8030
8031    //=========================================================================
8032    // GstDeviceProvider
8033    //=========================================================================
8034    pub fn gst_device_provider_get_type() -> GType;
8035    pub fn gst_device_provider_register(
8036        plugin: *mut GstPlugin,
8037        name: *const c_char,
8038        rank: c_uint,
8039        type_: GType,
8040    ) -> gboolean;
8041    pub fn gst_device_provider_can_monitor(provider: *mut GstDeviceProvider) -> gboolean;
8042    pub fn gst_device_provider_device_add(provider: *mut GstDeviceProvider, device: *mut GstDevice);
8043    #[cfg(feature = "v1_16")]
8044    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
8045    pub fn gst_device_provider_device_changed(
8046        provider: *mut GstDeviceProvider,
8047        device: *mut GstDevice,
8048        changed_device: *mut GstDevice,
8049    );
8050    pub fn gst_device_provider_device_remove(
8051        provider: *mut GstDeviceProvider,
8052        device: *mut GstDevice,
8053    );
8054    pub fn gst_device_provider_get_bus(provider: *mut GstDeviceProvider) -> *mut GstBus;
8055    pub fn gst_device_provider_get_devices(provider: *mut GstDeviceProvider) -> *mut glib::GList;
8056    pub fn gst_device_provider_get_factory(
8057        provider: *mut GstDeviceProvider,
8058    ) -> *mut GstDeviceProviderFactory;
8059    pub fn gst_device_provider_get_hidden_providers(
8060        provider: *mut GstDeviceProvider,
8061    ) -> *mut *mut c_char;
8062    pub fn gst_device_provider_get_metadata(
8063        provider: *mut GstDeviceProvider,
8064        key: *const c_char,
8065    ) -> *const c_char;
8066    pub fn gst_device_provider_hide_provider(provider: *mut GstDeviceProvider, name: *const c_char);
8067    #[cfg(feature = "v1_20")]
8068    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8069    pub fn gst_device_provider_is_started(provider: *mut GstDeviceProvider) -> gboolean;
8070    pub fn gst_device_provider_start(provider: *mut GstDeviceProvider) -> gboolean;
8071    pub fn gst_device_provider_stop(provider: *mut GstDeviceProvider);
8072    pub fn gst_device_provider_unhide_provider(
8073        provider: *mut GstDeviceProvider,
8074        name: *const c_char,
8075    );
8076
8077    //=========================================================================
8078    // GstDeviceProviderFactory
8079    //=========================================================================
8080    pub fn gst_device_provider_factory_get_type() -> GType;
8081    pub fn gst_device_provider_factory_find(name: *const c_char) -> *mut GstDeviceProviderFactory;
8082    pub fn gst_device_provider_factory_get_by_name(
8083        factoryname: *const c_char,
8084    ) -> *mut GstDeviceProvider;
8085    pub fn gst_device_provider_factory_list_get_device_providers(
8086        minrank: GstRank,
8087    ) -> *mut glib::GList;
8088    pub fn gst_device_provider_factory_get(
8089        factory: *mut GstDeviceProviderFactory,
8090    ) -> *mut GstDeviceProvider;
8091    pub fn gst_device_provider_factory_get_device_provider_type(
8092        factory: *mut GstDeviceProviderFactory,
8093    ) -> GType;
8094    pub fn gst_device_provider_factory_get_metadata(
8095        factory: *mut GstDeviceProviderFactory,
8096        key: *const c_char,
8097    ) -> *const c_char;
8098    pub fn gst_device_provider_factory_get_metadata_keys(
8099        factory: *mut GstDeviceProviderFactory,
8100    ) -> *mut *mut c_char;
8101    pub fn gst_device_provider_factory_has_classes(
8102        factory: *mut GstDeviceProviderFactory,
8103        classes: *const c_char,
8104    ) -> gboolean;
8105    pub fn gst_device_provider_factory_has_classesv(
8106        factory: *mut GstDeviceProviderFactory,
8107        classes: *mut *mut c_char,
8108    ) -> gboolean;
8109
8110    //=========================================================================
8111    // GstDoubleRange
8112    //=========================================================================
8113    pub fn gst_double_range_get_type() -> GType;
8114
8115    //=========================================================================
8116    // GstDynamicTypeFactory
8117    //=========================================================================
8118    pub fn gst_dynamic_type_factory_get_type() -> GType;
8119    pub fn gst_dynamic_type_factory_load(factoryname: *const c_char) -> GType;
8120
8121    //=========================================================================
8122    // GstElement
8123    //=========================================================================
8124    pub fn gst_element_get_type() -> GType;
8125    pub fn gst_element_make_from_uri(
8126        type_: GstURIType,
8127        uri: *const c_char,
8128        elementname: *const c_char,
8129        error: *mut *mut glib::GError,
8130    ) -> *mut GstElement;
8131    pub fn gst_element_register(
8132        plugin: *mut GstPlugin,
8133        name: *const c_char,
8134        rank: c_uint,
8135        type_: GType,
8136    ) -> gboolean;
8137    pub fn gst_element_state_change_return_get_name(
8138        state_ret: GstStateChangeReturn,
8139    ) -> *const c_char;
8140    pub fn gst_element_state_get_name(state: GstState) -> *const c_char;
8141    #[cfg(feature = "v1_20")]
8142    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8143    pub fn gst_element_type_set_skip_documentation(type_: GType);
8144    pub fn gst_element_abort_state(element: *mut GstElement);
8145    pub fn gst_element_add_pad(element: *mut GstElement, pad: *mut GstPad) -> gboolean;
8146    pub fn gst_element_add_property_deep_notify_watch(
8147        element: *mut GstElement,
8148        property_name: *const c_char,
8149        include_value: gboolean,
8150    ) -> c_ulong;
8151    pub fn gst_element_add_property_notify_watch(
8152        element: *mut GstElement,
8153        property_name: *const c_char,
8154        include_value: gboolean,
8155    ) -> c_ulong;
8156    pub fn gst_element_call_async(
8157        element: *mut GstElement,
8158        func: GstElementCallAsyncFunc,
8159        user_data: gpointer,
8160        destroy_notify: glib::GDestroyNotify,
8161    );
8162    pub fn gst_element_change_state(
8163        element: *mut GstElement,
8164        transition: GstStateChange,
8165    ) -> GstStateChangeReturn;
8166    pub fn gst_element_continue_state(
8167        element: *mut GstElement,
8168        ret: GstStateChangeReturn,
8169    ) -> GstStateChangeReturn;
8170    pub fn gst_element_create_all_pads(element: *mut GstElement);
8171    #[cfg(feature = "v1_24")]
8172    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8173    pub fn gst_element_decorate_stream_id(
8174        element: *mut GstElement,
8175        stream_id: *const c_char,
8176    ) -> *mut c_char;
8177    #[cfg(feature = "v1_24")]
8178    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8179    pub fn gst_element_decorate_stream_id_printf(
8180        element: *mut GstElement,
8181        format: *const c_char,
8182        ...
8183    ) -> *mut c_char;
8184    //#[cfg(feature = "v1_24")]
8185    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8186    //pub fn gst_element_decorate_stream_id_printf_valist(element: *mut GstElement, format: *const c_char, var_args: /*Unimplemented*/va_list) -> *mut c_char;
8187    pub fn gst_element_foreach_pad(
8188        element: *mut GstElement,
8189        func: GstElementForeachPadFunc,
8190        user_data: gpointer,
8191    ) -> gboolean;
8192    pub fn gst_element_foreach_sink_pad(
8193        element: *mut GstElement,
8194        func: GstElementForeachPadFunc,
8195        user_data: gpointer,
8196    ) -> gboolean;
8197    pub fn gst_element_foreach_src_pad(
8198        element: *mut GstElement,
8199        func: GstElementForeachPadFunc,
8200        user_data: gpointer,
8201    ) -> gboolean;
8202    pub fn gst_element_get_base_time(element: *mut GstElement) -> GstClockTime;
8203    pub fn gst_element_get_bus(element: *mut GstElement) -> *mut GstBus;
8204    pub fn gst_element_get_clock(element: *mut GstElement) -> *mut GstClock;
8205    pub fn gst_element_get_compatible_pad(
8206        element: *mut GstElement,
8207        pad: *mut GstPad,
8208        caps: *mut GstCaps,
8209    ) -> *mut GstPad;
8210    pub fn gst_element_get_compatible_pad_template(
8211        element: *mut GstElement,
8212        compattempl: *mut GstPadTemplate,
8213    ) -> *mut GstPadTemplate;
8214    pub fn gst_element_get_context(
8215        element: *mut GstElement,
8216        context_type: *const c_char,
8217    ) -> *mut GstContext;
8218    pub fn gst_element_get_context_unlocked(
8219        element: *mut GstElement,
8220        context_type: *const c_char,
8221    ) -> *mut GstContext;
8222    pub fn gst_element_get_contexts(element: *mut GstElement) -> *mut glib::GList;
8223    #[cfg(feature = "v1_18")]
8224    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8225    pub fn gst_element_get_current_clock_time(element: *mut GstElement) -> GstClockTime;
8226    #[cfg(feature = "v1_18")]
8227    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8228    pub fn gst_element_get_current_running_time(element: *mut GstElement) -> GstClockTime;
8229    pub fn gst_element_get_factory(element: *mut GstElement) -> *mut GstElementFactory;
8230    pub fn gst_element_get_metadata(element: *mut GstElement, key: *const c_char) -> *const c_char;
8231    pub fn gst_element_get_pad_template(
8232        element: *mut GstElement,
8233        name: *const c_char,
8234    ) -> *mut GstPadTemplate;
8235    pub fn gst_element_get_pad_template_list(element: *mut GstElement) -> *mut glib::GList;
8236    pub fn gst_element_get_request_pad(
8237        element: *mut GstElement,
8238        name: *const c_char,
8239    ) -> *mut GstPad;
8240    pub fn gst_element_get_start_time(element: *mut GstElement) -> GstClockTime;
8241    pub fn gst_element_get_state(
8242        element: *mut GstElement,
8243        state: *mut GstState,
8244        pending: *mut GstState,
8245        timeout: GstClockTime,
8246    ) -> GstStateChangeReturn;
8247    pub fn gst_element_get_static_pad(element: *mut GstElement, name: *const c_char)
8248        -> *mut GstPad;
8249    pub fn gst_element_is_locked_state(element: *mut GstElement) -> gboolean;
8250    pub fn gst_element_iterate_pads(element: *mut GstElement) -> *mut GstIterator;
8251    pub fn gst_element_iterate_sink_pads(element: *mut GstElement) -> *mut GstIterator;
8252    pub fn gst_element_iterate_src_pads(element: *mut GstElement) -> *mut GstIterator;
8253    pub fn gst_element_link(src: *mut GstElement, dest: *mut GstElement) -> gboolean;
8254    pub fn gst_element_link_filtered(
8255        src: *mut GstElement,
8256        dest: *mut GstElement,
8257        filter: *mut GstCaps,
8258    ) -> gboolean;
8259    pub fn gst_element_link_many(
8260        element_1: *mut GstElement,
8261        element_2: *mut GstElement,
8262        ...
8263    ) -> gboolean;
8264    pub fn gst_element_link_pads(
8265        src: *mut GstElement,
8266        srcpadname: *const c_char,
8267        dest: *mut GstElement,
8268        destpadname: *const c_char,
8269    ) -> gboolean;
8270    pub fn gst_element_link_pads_filtered(
8271        src: *mut GstElement,
8272        srcpadname: *const c_char,
8273        dest: *mut GstElement,
8274        destpadname: *const c_char,
8275        filter: *mut GstCaps,
8276    ) -> gboolean;
8277    pub fn gst_element_link_pads_full(
8278        src: *mut GstElement,
8279        srcpadname: *const c_char,
8280        dest: *mut GstElement,
8281        destpadname: *const c_char,
8282        flags: GstPadLinkCheck,
8283    ) -> gboolean;
8284    pub fn gst_element_lost_state(element: *mut GstElement);
8285    pub fn gst_element_message_full(
8286        element: *mut GstElement,
8287        type_: GstMessageType,
8288        domain: glib::GQuark,
8289        code: c_int,
8290        text: *mut c_char,
8291        debug: *mut c_char,
8292        file: *const c_char,
8293        function: *const c_char,
8294        line: c_int,
8295    );
8296    pub fn gst_element_message_full_with_details(
8297        element: *mut GstElement,
8298        type_: GstMessageType,
8299        domain: glib::GQuark,
8300        code: c_int,
8301        text: *mut c_char,
8302        debug: *mut c_char,
8303        file: *const c_char,
8304        function: *const c_char,
8305        line: c_int,
8306        structure: *mut GstStructure,
8307    );
8308    pub fn gst_element_no_more_pads(element: *mut GstElement);
8309    pub fn gst_element_post_message(element: *mut GstElement, message: *mut GstMessage)
8310        -> gboolean;
8311    pub fn gst_element_provide_clock(element: *mut GstElement) -> *mut GstClock;
8312    pub fn gst_element_query(element: *mut GstElement, query: *mut GstQuery) -> gboolean;
8313    pub fn gst_element_query_convert(
8314        element: *mut GstElement,
8315        src_format: GstFormat,
8316        src_val: i64,
8317        dest_format: GstFormat,
8318        dest_val: *mut i64,
8319    ) -> gboolean;
8320    pub fn gst_element_query_duration(
8321        element: *mut GstElement,
8322        format: GstFormat,
8323        duration: *mut i64,
8324    ) -> gboolean;
8325    pub fn gst_element_query_position(
8326        element: *mut GstElement,
8327        format: GstFormat,
8328        cur: *mut i64,
8329    ) -> gboolean;
8330    pub fn gst_element_release_request_pad(element: *mut GstElement, pad: *mut GstPad);
8331    pub fn gst_element_remove_pad(element: *mut GstElement, pad: *mut GstPad) -> gboolean;
8332    pub fn gst_element_remove_property_notify_watch(element: *mut GstElement, watch_id: c_ulong);
8333    pub fn gst_element_request_pad(
8334        element: *mut GstElement,
8335        templ: *mut GstPadTemplate,
8336        name: *const c_char,
8337        caps: *const GstCaps,
8338    ) -> *mut GstPad;
8339    #[cfg(feature = "v1_20")]
8340    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8341    pub fn gst_element_request_pad_simple(
8342        element: *mut GstElement,
8343        name: *const c_char,
8344    ) -> *mut GstPad;
8345    pub fn gst_element_seek(
8346        element: *mut GstElement,
8347        rate: c_double,
8348        format: GstFormat,
8349        flags: GstSeekFlags,
8350        start_type: GstSeekType,
8351        start: i64,
8352        stop_type: GstSeekType,
8353        stop: i64,
8354    ) -> gboolean;
8355    pub fn gst_element_seek_simple(
8356        element: *mut GstElement,
8357        format: GstFormat,
8358        seek_flags: GstSeekFlags,
8359        seek_pos: i64,
8360    ) -> gboolean;
8361    pub fn gst_element_send_event(element: *mut GstElement, event: *mut GstEvent) -> gboolean;
8362    pub fn gst_element_set_base_time(element: *mut GstElement, time: GstClockTime);
8363    pub fn gst_element_set_bus(element: *mut GstElement, bus: *mut GstBus);
8364    pub fn gst_element_set_clock(element: *mut GstElement, clock: *mut GstClock) -> gboolean;
8365    pub fn gst_element_set_context(element: *mut GstElement, context: *mut GstContext);
8366    pub fn gst_element_set_locked_state(
8367        element: *mut GstElement,
8368        locked_state: gboolean,
8369    ) -> gboolean;
8370    pub fn gst_element_set_start_time(element: *mut GstElement, time: GstClockTime);
8371    pub fn gst_element_set_state(element: *mut GstElement, state: GstState)
8372        -> GstStateChangeReturn;
8373    pub fn gst_element_sync_state_with_parent(element: *mut GstElement) -> gboolean;
8374    pub fn gst_element_unlink(src: *mut GstElement, dest: *mut GstElement);
8375    pub fn gst_element_unlink_many(element_1: *mut GstElement, element_2: *mut GstElement, ...);
8376    pub fn gst_element_unlink_pads(
8377        src: *mut GstElement,
8378        srcpadname: *const c_char,
8379        dest: *mut GstElement,
8380        destpadname: *const c_char,
8381    );
8382
8383    //=========================================================================
8384    // GstElementFactory
8385    //=========================================================================
8386    pub fn gst_element_factory_get_type() -> GType;
8387    pub fn gst_element_factory_find(name: *const c_char) -> *mut GstElementFactory;
8388    pub fn gst_element_factory_list_filter(
8389        list: *mut glib::GList,
8390        caps: *const GstCaps,
8391        direction: GstPadDirection,
8392        subsetonly: gboolean,
8393    ) -> *mut glib::GList;
8394    pub fn gst_element_factory_list_get_elements(
8395        type_: GstElementFactoryListType,
8396        minrank: GstRank,
8397    ) -> *mut glib::GList;
8398    pub fn gst_element_factory_make(
8399        factoryname: *const c_char,
8400        name: *const c_char,
8401    ) -> *mut GstElement;
8402    #[cfg(feature = "v1_20")]
8403    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8404    pub fn gst_element_factory_make_full(
8405        factoryname: *const c_char,
8406        first: *const c_char,
8407        ...
8408    ) -> *mut GstElement;
8409    //#[cfg(feature = "v1_20")]
8410    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8411    //pub fn gst_element_factory_make_valist(factoryname: *const c_char, first: *const c_char, properties: /*Unimplemented*/va_list) -> *mut GstElement;
8412    #[cfg(feature = "v1_20")]
8413    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8414    pub fn gst_element_factory_make_with_properties(
8415        factoryname: *const c_char,
8416        n: c_uint,
8417        names: *mut *const c_char,
8418        values: *const gobject::GValue,
8419    ) -> *mut GstElement;
8420    pub fn gst_element_factory_can_sink_all_caps(
8421        factory: *mut GstElementFactory,
8422        caps: *const GstCaps,
8423    ) -> gboolean;
8424    pub fn gst_element_factory_can_sink_any_caps(
8425        factory: *mut GstElementFactory,
8426        caps: *const GstCaps,
8427    ) -> gboolean;
8428    pub fn gst_element_factory_can_src_all_caps(
8429        factory: *mut GstElementFactory,
8430        caps: *const GstCaps,
8431    ) -> gboolean;
8432    pub fn gst_element_factory_can_src_any_caps(
8433        factory: *mut GstElementFactory,
8434        caps: *const GstCaps,
8435    ) -> gboolean;
8436    pub fn gst_element_factory_create(
8437        factory: *mut GstElementFactory,
8438        name: *const c_char,
8439    ) -> *mut GstElement;
8440    #[cfg(feature = "v1_20")]
8441    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8442    pub fn gst_element_factory_create_full(
8443        factory: *mut GstElementFactory,
8444        first: *const c_char,
8445        ...
8446    ) -> *mut GstElement;
8447    //#[cfg(feature = "v1_20")]
8448    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8449    //pub fn gst_element_factory_create_valist(factory: *mut GstElementFactory, first: *const c_char, properties: /*Unimplemented*/va_list) -> *mut GstElement;
8450    #[cfg(feature = "v1_20")]
8451    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8452    pub fn gst_element_factory_create_with_properties(
8453        factory: *mut GstElementFactory,
8454        n: c_uint,
8455        names: *mut *const c_char,
8456        values: *const gobject::GValue,
8457    ) -> *mut GstElement;
8458    pub fn gst_element_factory_get_element_type(factory: *mut GstElementFactory) -> GType;
8459    pub fn gst_element_factory_get_metadata(
8460        factory: *mut GstElementFactory,
8461        key: *const c_char,
8462    ) -> *const c_char;
8463    pub fn gst_element_factory_get_metadata_keys(
8464        factory: *mut GstElementFactory,
8465    ) -> *mut *mut c_char;
8466    pub fn gst_element_factory_get_num_pad_templates(factory: *mut GstElementFactory) -> c_uint;
8467    #[cfg(feature = "v1_20")]
8468    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8469    pub fn gst_element_factory_get_skip_documentation(factory: *mut GstElementFactory) -> gboolean;
8470    pub fn gst_element_factory_get_static_pad_templates(
8471        factory: *mut GstElementFactory,
8472    ) -> *const glib::GList;
8473    pub fn gst_element_factory_get_uri_protocols(
8474        factory: *mut GstElementFactory,
8475    ) -> *const *const c_char;
8476    pub fn gst_element_factory_get_uri_type(factory: *mut GstElementFactory) -> GstURIType;
8477    pub fn gst_element_factory_has_interface(
8478        factory: *mut GstElementFactory,
8479        interfacename: *const c_char,
8480    ) -> gboolean;
8481    pub fn gst_element_factory_list_is_type(
8482        factory: *mut GstElementFactory,
8483        type_: GstElementFactoryListType,
8484    ) -> gboolean;
8485
8486    //=========================================================================
8487    // GstFlagSet
8488    //=========================================================================
8489    pub fn gst_flagset_get_type() -> GType;
8490    pub fn gst_flagset_register(flags_type: GType) -> GType;
8491
8492    //=========================================================================
8493    // GstFraction
8494    //=========================================================================
8495    pub fn gst_fraction_get_type() -> GType;
8496
8497    //=========================================================================
8498    // GstFractionRange
8499    //=========================================================================
8500    pub fn gst_fraction_range_get_type() -> GType;
8501
8502    //=========================================================================
8503    // GstGhostPad
8504    //=========================================================================
8505    pub fn gst_ghost_pad_get_type() -> GType;
8506    pub fn gst_ghost_pad_new(name: *const c_char, target: *mut GstPad) -> *mut GstPad;
8507    pub fn gst_ghost_pad_new_from_template(
8508        name: *const c_char,
8509        target: *mut GstPad,
8510        templ: *mut GstPadTemplate,
8511    ) -> *mut GstPad;
8512    pub fn gst_ghost_pad_new_no_target(name: *const c_char, dir: GstPadDirection) -> *mut GstPad;
8513    pub fn gst_ghost_pad_new_no_target_from_template(
8514        name: *const c_char,
8515        templ: *mut GstPadTemplate,
8516    ) -> *mut GstPad;
8517    pub fn gst_ghost_pad_activate_mode_default(
8518        pad: *mut GstPad,
8519        parent: *mut GstObject,
8520        mode: GstPadMode,
8521        active: gboolean,
8522    ) -> gboolean;
8523    pub fn gst_ghost_pad_internal_activate_mode_default(
8524        pad: *mut GstPad,
8525        parent: *mut GstObject,
8526        mode: GstPadMode,
8527        active: gboolean,
8528    ) -> gboolean;
8529    pub fn gst_ghost_pad_construct(gpad: *mut GstGhostPad) -> gboolean;
8530    pub fn gst_ghost_pad_get_target(gpad: *mut GstGhostPad) -> *mut GstPad;
8531    pub fn gst_ghost_pad_set_target(gpad: *mut GstGhostPad, newtarget: *mut GstPad) -> gboolean;
8532
8533    //=========================================================================
8534    // GstInt64Range
8535    //=========================================================================
8536    pub fn gst_int64_range_get_type() -> GType;
8537
8538    //=========================================================================
8539    // GstIntRange
8540    //=========================================================================
8541    pub fn gst_int_range_get_type() -> GType;
8542
8543    //=========================================================================
8544    // GstObject
8545    //=========================================================================
8546    pub fn gst_object_get_type() -> GType;
8547    pub fn gst_object_check_uniqueness(list: *mut glib::GList, name: *const c_char) -> gboolean;
8548    pub fn gst_object_default_deep_notify(
8549        object: *mut gobject::GObject,
8550        orig: *mut GstObject,
8551        pspec: *mut gobject::GParamSpec,
8552        excluded_props: *mut *mut c_char,
8553    );
8554    pub fn gst_object_ref_sink(object: gpointer) -> gpointer;
8555    pub fn gst_object_replace(oldobj: *mut *mut GstObject, newobj: *mut GstObject) -> gboolean;
8556    pub fn gst_object_add_control_binding(
8557        object: *mut GstObject,
8558        binding: *mut GstControlBinding,
8559    ) -> gboolean;
8560    pub fn gst_object_default_error(
8561        source: *mut GstObject,
8562        error: *const glib::GError,
8563        debug: *const c_char,
8564    );
8565    pub fn gst_object_get_control_binding(
8566        object: *mut GstObject,
8567        property_name: *const c_char,
8568    ) -> *mut GstControlBinding;
8569    pub fn gst_object_get_control_rate(object: *mut GstObject) -> GstClockTime;
8570    pub fn gst_object_get_g_value_array(
8571        object: *mut GstObject,
8572        property_name: *const c_char,
8573        timestamp: GstClockTime,
8574        interval: GstClockTime,
8575        n_values: c_uint,
8576        values: *mut gobject::GValue,
8577    ) -> gboolean;
8578    pub fn gst_object_get_name(object: *mut GstObject) -> *mut c_char;
8579    pub fn gst_object_get_parent(object: *mut GstObject) -> *mut GstObject;
8580    pub fn gst_object_get_path_string(object: *mut GstObject) -> *mut c_char;
8581    pub fn gst_object_get_value(
8582        object: *mut GstObject,
8583        property_name: *const c_char,
8584        timestamp: GstClockTime,
8585    ) -> *mut gobject::GValue;
8586    pub fn gst_object_get_value_array(
8587        object: *mut GstObject,
8588        property_name: *const c_char,
8589        timestamp: GstClockTime,
8590        interval: GstClockTime,
8591        n_values: c_uint,
8592        values: gpointer,
8593    ) -> gboolean;
8594    pub fn gst_object_has_active_control_bindings(object: *mut GstObject) -> gboolean;
8595    pub fn gst_object_has_ancestor(object: *mut GstObject, ancestor: *mut GstObject) -> gboolean;
8596    pub fn gst_object_has_as_ancestor(object: *mut GstObject, ancestor: *mut GstObject)
8597        -> gboolean;
8598    pub fn gst_object_has_as_parent(object: *mut GstObject, parent: *mut GstObject) -> gboolean;
8599    pub fn gst_object_ref(object: *mut GstObject) -> *mut GstObject;
8600    pub fn gst_object_remove_control_binding(
8601        object: *mut GstObject,
8602        binding: *mut GstControlBinding,
8603    ) -> gboolean;
8604    pub fn gst_object_set_control_binding_disabled(
8605        object: *mut GstObject,
8606        property_name: *const c_char,
8607        disabled: gboolean,
8608    );
8609    pub fn gst_object_set_control_bindings_disabled(object: *mut GstObject, disabled: gboolean);
8610    pub fn gst_object_set_control_rate(object: *mut GstObject, control_rate: GstClockTime);
8611    pub fn gst_object_set_name(object: *mut GstObject, name: *const c_char) -> gboolean;
8612    pub fn gst_object_set_parent(object: *mut GstObject, parent: *mut GstObject) -> gboolean;
8613    pub fn gst_object_suggest_next_sync(object: *mut GstObject) -> GstClockTime;
8614    pub fn gst_object_sync_values(object: *mut GstObject, timestamp: GstClockTime) -> gboolean;
8615    pub fn gst_object_unparent(object: *mut GstObject);
8616    pub fn gst_object_unref(object: *mut GstObject);
8617
8618    //=========================================================================
8619    // GstPad
8620    //=========================================================================
8621    pub fn gst_pad_get_type() -> GType;
8622    pub fn gst_pad_new(name: *const c_char, direction: GstPadDirection) -> *mut GstPad;
8623    pub fn gst_pad_new_from_static_template(
8624        templ: *mut GstStaticPadTemplate,
8625        name: *const c_char,
8626    ) -> *mut GstPad;
8627    pub fn gst_pad_new_from_template(
8628        templ: *mut GstPadTemplate,
8629        name: *const c_char,
8630    ) -> *mut GstPad;
8631    pub fn gst_pad_link_get_name(ret: GstPadLinkReturn) -> *const c_char;
8632    pub fn gst_pad_activate_mode(pad: *mut GstPad, mode: GstPadMode, active: gboolean) -> gboolean;
8633    pub fn gst_pad_add_probe(
8634        pad: *mut GstPad,
8635        mask: GstPadProbeType,
8636        callback: GstPadProbeCallback,
8637        user_data: gpointer,
8638        destroy_data: glib::GDestroyNotify,
8639    ) -> c_ulong;
8640    pub fn gst_pad_can_link(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> gboolean;
8641    pub fn gst_pad_chain(pad: *mut GstPad, buffer: *mut GstBuffer) -> GstFlowReturn;
8642    pub fn gst_pad_chain_list(pad: *mut GstPad, list: *mut GstBufferList) -> GstFlowReturn;
8643    pub fn gst_pad_check_reconfigure(pad: *mut GstPad) -> gboolean;
8644    pub fn gst_pad_create_stream_id(
8645        pad: *mut GstPad,
8646        parent: *mut GstElement,
8647        stream_id: *const c_char,
8648    ) -> *mut c_char;
8649    pub fn gst_pad_create_stream_id_printf(
8650        pad: *mut GstPad,
8651        parent: *mut GstElement,
8652        stream_id: *const c_char,
8653        ...
8654    ) -> *mut c_char;
8655    //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;
8656    pub fn gst_pad_event_default(
8657        pad: *mut GstPad,
8658        parent: *mut GstObject,
8659        event: *mut GstEvent,
8660    ) -> gboolean;
8661    pub fn gst_pad_forward(
8662        pad: *mut GstPad,
8663        forward: GstPadForwardFunction,
8664        user_data: gpointer,
8665    ) -> gboolean;
8666    pub fn gst_pad_get_allowed_caps(pad: *mut GstPad) -> *mut GstCaps;
8667    pub fn gst_pad_get_current_caps(pad: *mut GstPad) -> *mut GstCaps;
8668    pub fn gst_pad_get_direction(pad: *mut GstPad) -> GstPadDirection;
8669    pub fn gst_pad_get_element_private(pad: *mut GstPad) -> gpointer;
8670    pub fn gst_pad_get_last_flow_return(pad: *mut GstPad) -> GstFlowReturn;
8671    pub fn gst_pad_get_offset(pad: *mut GstPad) -> i64;
8672    pub fn gst_pad_get_pad_template(pad: *mut GstPad) -> *mut GstPadTemplate;
8673    pub fn gst_pad_get_pad_template_caps(pad: *mut GstPad) -> *mut GstCaps;
8674    pub fn gst_pad_get_parent_element(pad: *mut GstPad) -> *mut GstElement;
8675    pub fn gst_pad_get_peer(pad: *mut GstPad) -> *mut GstPad;
8676    pub fn gst_pad_get_range(
8677        pad: *mut GstPad,
8678        offset: u64,
8679        size: c_uint,
8680        buffer: *mut *mut GstBuffer,
8681    ) -> GstFlowReturn;
8682    #[cfg(feature = "v1_18")]
8683    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8684    pub fn gst_pad_get_single_internal_link(pad: *mut GstPad) -> *mut GstPad;
8685    pub fn gst_pad_get_sticky_event(
8686        pad: *mut GstPad,
8687        event_type: GstEventType,
8688        idx: c_uint,
8689    ) -> *mut GstEvent;
8690    pub fn gst_pad_get_stream(pad: *mut GstPad) -> *mut GstStream;
8691    pub fn gst_pad_get_stream_id(pad: *mut GstPad) -> *mut c_char;
8692    pub fn gst_pad_get_task_state(pad: *mut GstPad) -> GstTaskState;
8693    pub fn gst_pad_has_current_caps(pad: *mut GstPad) -> gboolean;
8694    pub fn gst_pad_is_active(pad: *mut GstPad) -> gboolean;
8695    pub fn gst_pad_is_blocked(pad: *mut GstPad) -> gboolean;
8696    pub fn gst_pad_is_blocking(pad: *mut GstPad) -> gboolean;
8697    pub fn gst_pad_is_linked(pad: *mut GstPad) -> gboolean;
8698    pub fn gst_pad_iterate_internal_links(pad: *mut GstPad) -> *mut GstIterator;
8699    pub fn gst_pad_iterate_internal_links_default(
8700        pad: *mut GstPad,
8701        parent: *mut GstObject,
8702    ) -> *mut GstIterator;
8703    pub fn gst_pad_link(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> GstPadLinkReturn;
8704    pub fn gst_pad_link_full(
8705        srcpad: *mut GstPad,
8706        sinkpad: *mut GstPad,
8707        flags: GstPadLinkCheck,
8708    ) -> GstPadLinkReturn;
8709    pub fn gst_pad_link_maybe_ghosting(src: *mut GstPad, sink: *mut GstPad) -> gboolean;
8710    pub fn gst_pad_link_maybe_ghosting_full(
8711        src: *mut GstPad,
8712        sink: *mut GstPad,
8713        flags: GstPadLinkCheck,
8714    ) -> gboolean;
8715    pub fn gst_pad_mark_reconfigure(pad: *mut GstPad);
8716    pub fn gst_pad_needs_reconfigure(pad: *mut GstPad) -> gboolean;
8717    pub fn gst_pad_pause_task(pad: *mut GstPad) -> gboolean;
8718    pub fn gst_pad_peer_query(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
8719    pub fn gst_pad_peer_query_accept_caps(pad: *mut GstPad, caps: *mut GstCaps) -> gboolean;
8720    pub fn gst_pad_peer_query_caps(pad: *mut GstPad, filter: *mut GstCaps) -> *mut GstCaps;
8721    pub fn gst_pad_peer_query_convert(
8722        pad: *mut GstPad,
8723        src_format: GstFormat,
8724        src_val: i64,
8725        dest_format: GstFormat,
8726        dest_val: *mut i64,
8727    ) -> gboolean;
8728    pub fn gst_pad_peer_query_duration(
8729        pad: *mut GstPad,
8730        format: GstFormat,
8731        duration: *mut i64,
8732    ) -> gboolean;
8733    pub fn gst_pad_peer_query_position(
8734        pad: *mut GstPad,
8735        format: GstFormat,
8736        cur: *mut i64,
8737    ) -> gboolean;
8738    pub fn gst_pad_proxy_query_accept_caps(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
8739    pub fn gst_pad_proxy_query_caps(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
8740    pub fn gst_pad_pull_range(
8741        pad: *mut GstPad,
8742        offset: u64,
8743        size: c_uint,
8744        buffer: *mut *mut GstBuffer,
8745    ) -> GstFlowReturn;
8746    pub fn gst_pad_push(pad: *mut GstPad, buffer: *mut GstBuffer) -> GstFlowReturn;
8747    pub fn gst_pad_push_event(pad: *mut GstPad, event: *mut GstEvent) -> gboolean;
8748    pub fn gst_pad_push_list(pad: *mut GstPad, list: *mut GstBufferList) -> GstFlowReturn;
8749    pub fn gst_pad_query(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
8750    pub fn gst_pad_query_accept_caps(pad: *mut GstPad, caps: *mut GstCaps) -> gboolean;
8751    pub fn gst_pad_query_caps(pad: *mut GstPad, filter: *mut GstCaps) -> *mut GstCaps;
8752    pub fn gst_pad_query_convert(
8753        pad: *mut GstPad,
8754        src_format: GstFormat,
8755        src_val: i64,
8756        dest_format: GstFormat,
8757        dest_val: *mut i64,
8758    ) -> gboolean;
8759    pub fn gst_pad_query_default(
8760        pad: *mut GstPad,
8761        parent: *mut GstObject,
8762        query: *mut GstQuery,
8763    ) -> gboolean;
8764    pub fn gst_pad_query_duration(
8765        pad: *mut GstPad,
8766        format: GstFormat,
8767        duration: *mut i64,
8768    ) -> gboolean;
8769    pub fn gst_pad_query_position(pad: *mut GstPad, format: GstFormat, cur: *mut i64) -> gboolean;
8770    pub fn gst_pad_remove_probe(pad: *mut GstPad, id: c_ulong);
8771    pub fn gst_pad_send_event(pad: *mut GstPad, event: *mut GstEvent) -> gboolean;
8772    pub fn gst_pad_set_activate_function_full(
8773        pad: *mut GstPad,
8774        activate: GstPadActivateFunction,
8775        user_data: gpointer,
8776        notify: glib::GDestroyNotify,
8777    );
8778    pub fn gst_pad_set_activatemode_function_full(
8779        pad: *mut GstPad,
8780        activatemode: GstPadActivateModeFunction,
8781        user_data: gpointer,
8782        notify: glib::GDestroyNotify,
8783    );
8784    pub fn gst_pad_set_active(pad: *mut GstPad, active: gboolean) -> gboolean;
8785    pub fn gst_pad_set_chain_function_full(
8786        pad: *mut GstPad,
8787        chain: GstPadChainFunction,
8788        user_data: gpointer,
8789        notify: glib::GDestroyNotify,
8790    );
8791    pub fn gst_pad_set_chain_list_function_full(
8792        pad: *mut GstPad,
8793        chainlist: GstPadChainListFunction,
8794        user_data: gpointer,
8795        notify: glib::GDestroyNotify,
8796    );
8797    pub fn gst_pad_set_element_private(pad: *mut GstPad, priv_: gpointer);
8798    pub fn gst_pad_set_event_full_function_full(
8799        pad: *mut GstPad,
8800        event: GstPadEventFullFunction,
8801        user_data: gpointer,
8802        notify: glib::GDestroyNotify,
8803    );
8804    pub fn gst_pad_set_event_function_full(
8805        pad: *mut GstPad,
8806        event: GstPadEventFunction,
8807        user_data: gpointer,
8808        notify: glib::GDestroyNotify,
8809    );
8810    pub fn gst_pad_set_getrange_function_full(
8811        pad: *mut GstPad,
8812        get: GstPadGetRangeFunction,
8813        user_data: gpointer,
8814        notify: glib::GDestroyNotify,
8815    );
8816    pub fn gst_pad_set_iterate_internal_links_function_full(
8817        pad: *mut GstPad,
8818        iterintlink: GstPadIterIntLinkFunction,
8819        user_data: gpointer,
8820        notify: glib::GDestroyNotify,
8821    );
8822    pub fn gst_pad_set_link_function_full(
8823        pad: *mut GstPad,
8824        link: GstPadLinkFunction,
8825        user_data: gpointer,
8826        notify: glib::GDestroyNotify,
8827    );
8828    pub fn gst_pad_set_offset(pad: *mut GstPad, offset: i64);
8829    pub fn gst_pad_set_query_function_full(
8830        pad: *mut GstPad,
8831        query: GstPadQueryFunction,
8832        user_data: gpointer,
8833        notify: glib::GDestroyNotify,
8834    );
8835    pub fn gst_pad_set_unlink_function_full(
8836        pad: *mut GstPad,
8837        unlink: GstPadUnlinkFunction,
8838        user_data: gpointer,
8839        notify: glib::GDestroyNotify,
8840    );
8841    pub fn gst_pad_start_task(
8842        pad: *mut GstPad,
8843        func: GstTaskFunction,
8844        user_data: gpointer,
8845        notify: glib::GDestroyNotify,
8846    ) -> gboolean;
8847    pub fn gst_pad_sticky_events_foreach(
8848        pad: *mut GstPad,
8849        foreach_func: GstPadStickyEventsForeachFunction,
8850        user_data: gpointer,
8851    );
8852    pub fn gst_pad_stop_task(pad: *mut GstPad) -> gboolean;
8853    pub fn gst_pad_store_sticky_event(pad: *mut GstPad, event: *mut GstEvent) -> GstFlowReturn;
8854    pub fn gst_pad_unlink(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> gboolean;
8855    pub fn gst_pad_use_fixed_caps(pad: *mut GstPad);
8856
8857    //=========================================================================
8858    // GstPadTemplate
8859    //=========================================================================
8860    pub fn gst_pad_template_get_type() -> GType;
8861    pub fn gst_pad_template_new(
8862        name_template: *const c_char,
8863        direction: GstPadDirection,
8864        presence: GstPadPresence,
8865        caps: *mut GstCaps,
8866    ) -> *mut GstPadTemplate;
8867    pub fn gst_pad_template_new_from_static_pad_template_with_gtype(
8868        pad_template: *mut GstStaticPadTemplate,
8869        pad_type: GType,
8870    ) -> *mut GstPadTemplate;
8871    pub fn gst_pad_template_new_with_gtype(
8872        name_template: *const c_char,
8873        direction: GstPadDirection,
8874        presence: GstPadPresence,
8875        caps: *mut GstCaps,
8876        pad_type: GType,
8877    ) -> *mut GstPadTemplate;
8878    pub fn gst_pad_template_get_caps(templ: *mut GstPadTemplate) -> *mut GstCaps;
8879    #[cfg(feature = "v1_18")]
8880    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8881    pub fn gst_pad_template_get_documentation_caps(templ: *mut GstPadTemplate) -> *mut GstCaps;
8882    pub fn gst_pad_template_pad_created(templ: *mut GstPadTemplate, pad: *mut GstPad);
8883    #[cfg(feature = "v1_18")]
8884    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8885    pub fn gst_pad_template_set_documentation_caps(templ: *mut GstPadTemplate, caps: *mut GstCaps);
8886
8887    //=========================================================================
8888    // GstParamArray
8889    //=========================================================================
8890    pub fn gst_param_spec_array_get_type() -> GType;
8891
8892    //=========================================================================
8893    // GstParamFraction
8894    //=========================================================================
8895    pub fn gst_param_spec_fraction_get_type() -> GType;
8896
8897    //=========================================================================
8898    // GstPipeline
8899    //=========================================================================
8900    pub fn gst_pipeline_get_type() -> GType;
8901    pub fn gst_pipeline_new(name: *const c_char) -> *mut GstElement;
8902    pub fn gst_pipeline_auto_clock(pipeline: *mut GstPipeline);
8903    pub fn gst_pipeline_get_auto_flush_bus(pipeline: *mut GstPipeline) -> gboolean;
8904    pub fn gst_pipeline_get_bus(pipeline: *mut GstPipeline) -> *mut GstBus;
8905    pub fn gst_pipeline_get_clock(pipeline: *mut GstPipeline) -> *mut GstClock;
8906    #[cfg(feature = "v1_24")]
8907    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8908    pub fn gst_pipeline_get_configured_latency(pipeline: *mut GstPipeline) -> GstClockTime;
8909    pub fn gst_pipeline_get_delay(pipeline: *mut GstPipeline) -> GstClockTime;
8910    pub fn gst_pipeline_get_latency(pipeline: *mut GstPipeline) -> GstClockTime;
8911    pub fn gst_pipeline_get_pipeline_clock(pipeline: *mut GstPipeline) -> *mut GstClock;
8912    #[cfg(feature = "v1_24")]
8913    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8914    pub fn gst_pipeline_is_live(pipeline: *mut GstPipeline) -> gboolean;
8915    pub fn gst_pipeline_set_auto_flush_bus(pipeline: *mut GstPipeline, auto_flush: gboolean);
8916    pub fn gst_pipeline_set_clock(pipeline: *mut GstPipeline, clock: *mut GstClock) -> gboolean;
8917    pub fn gst_pipeline_set_delay(pipeline: *mut GstPipeline, delay: GstClockTime);
8918    pub fn gst_pipeline_set_latency(pipeline: *mut GstPipeline, latency: GstClockTime);
8919    pub fn gst_pipeline_use_clock(pipeline: *mut GstPipeline, clock: *mut GstClock);
8920
8921    //=========================================================================
8922    // GstPlugin
8923    //=========================================================================
8924    pub fn gst_plugin_get_type() -> GType;
8925    pub fn gst_plugin_list_free(list: *mut glib::GList);
8926    pub fn gst_plugin_load_by_name(name: *const c_char) -> *mut GstPlugin;
8927    pub fn gst_plugin_load_file(
8928        filename: *const c_char,
8929        error: *mut *mut glib::GError,
8930    ) -> *mut GstPlugin;
8931    pub fn gst_plugin_register_static(
8932        major_version: c_int,
8933        minor_version: c_int,
8934        name: *const c_char,
8935        description: *const c_char,
8936        init_func: GstPluginInitFunc,
8937        version: *const c_char,
8938        license: *const c_char,
8939        source: *const c_char,
8940        package: *const c_char,
8941        origin: *const c_char,
8942    ) -> gboolean;
8943    pub fn gst_plugin_register_static_full(
8944        major_version: c_int,
8945        minor_version: c_int,
8946        name: *const c_char,
8947        description: *const c_char,
8948        init_full_func: GstPluginInitFullFunc,
8949        version: *const c_char,
8950        license: *const c_char,
8951        source: *const c_char,
8952        package: *const c_char,
8953        origin: *const c_char,
8954        user_data: gpointer,
8955    ) -> gboolean;
8956    pub fn gst_plugin_add_dependency(
8957        plugin: *mut GstPlugin,
8958        env_vars: *mut *const c_char,
8959        paths: *mut *const c_char,
8960        names: *mut *const c_char,
8961        flags: GstPluginDependencyFlags,
8962    );
8963    pub fn gst_plugin_add_dependency_simple(
8964        plugin: *mut GstPlugin,
8965        env_vars: *const c_char,
8966        paths: *const c_char,
8967        names: *const c_char,
8968        flags: GstPluginDependencyFlags,
8969    );
8970    #[cfg(feature = "v1_24")]
8971    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8972    pub fn gst_plugin_add_status_error(plugin: *mut GstPlugin, message: *const c_char);
8973    #[cfg(feature = "v1_24")]
8974    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8975    pub fn gst_plugin_add_status_info(plugin: *mut GstPlugin, message: *const c_char);
8976    #[cfg(feature = "v1_24")]
8977    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8978    pub fn gst_plugin_add_status_warning(plugin: *mut GstPlugin, message: *const c_char);
8979    pub fn gst_plugin_get_cache_data(plugin: *mut GstPlugin) -> *const GstStructure;
8980    pub fn gst_plugin_get_description(plugin: *mut GstPlugin) -> *const c_char;
8981    pub fn gst_plugin_get_filename(plugin: *mut GstPlugin) -> *const c_char;
8982    pub fn gst_plugin_get_license(plugin: *mut GstPlugin) -> *const c_char;
8983    pub fn gst_plugin_get_name(plugin: *mut GstPlugin) -> *const c_char;
8984    pub fn gst_plugin_get_origin(plugin: *mut GstPlugin) -> *const c_char;
8985    pub fn gst_plugin_get_package(plugin: *mut GstPlugin) -> *const c_char;
8986    pub fn gst_plugin_get_release_date_string(plugin: *mut GstPlugin) -> *const c_char;
8987    pub fn gst_plugin_get_source(plugin: *mut GstPlugin) -> *const c_char;
8988    #[cfg(feature = "v1_24")]
8989    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8990    pub fn gst_plugin_get_status_errors(plugin: *mut GstPlugin) -> *mut *mut c_char;
8991    #[cfg(feature = "v1_24")]
8992    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8993    pub fn gst_plugin_get_status_infos(plugin: *mut GstPlugin) -> *mut *mut c_char;
8994    #[cfg(feature = "v1_24")]
8995    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8996    pub fn gst_plugin_get_status_warnings(plugin: *mut GstPlugin) -> *mut *mut c_char;
8997    pub fn gst_plugin_get_version(plugin: *mut GstPlugin) -> *const c_char;
8998    pub fn gst_plugin_is_loaded(plugin: *mut GstPlugin) -> gboolean;
8999    pub fn gst_plugin_load(plugin: *mut GstPlugin) -> *mut GstPlugin;
9000    pub fn gst_plugin_set_cache_data(plugin: *mut GstPlugin, cache_data: *mut GstStructure);
9001
9002    //=========================================================================
9003    // GstPluginFeature
9004    //=========================================================================
9005    pub fn gst_plugin_feature_get_type() -> GType;
9006    pub fn gst_plugin_feature_list_copy(list: *mut glib::GList) -> *mut glib::GList;
9007    pub fn gst_plugin_feature_list_debug(list: *mut glib::GList);
9008    pub fn gst_plugin_feature_list_free(list: *mut glib::GList);
9009    pub fn gst_plugin_feature_rank_compare_func(p1: gconstpointer, p2: gconstpointer) -> c_int;
9010    pub fn gst_plugin_feature_check_version(
9011        feature: *mut GstPluginFeature,
9012        min_major: c_uint,
9013        min_minor: c_uint,
9014        min_micro: c_uint,
9015    ) -> gboolean;
9016    pub fn gst_plugin_feature_get_plugin(feature: *mut GstPluginFeature) -> *mut GstPlugin;
9017    pub fn gst_plugin_feature_get_plugin_name(feature: *mut GstPluginFeature) -> *const c_char;
9018    pub fn gst_plugin_feature_get_rank(feature: *mut GstPluginFeature) -> c_uint;
9019    pub fn gst_plugin_feature_load(feature: *mut GstPluginFeature) -> *mut GstPluginFeature;
9020    pub fn gst_plugin_feature_set_rank(feature: *mut GstPluginFeature, rank: c_uint);
9021
9022    //=========================================================================
9023    // GstProxyPad
9024    //=========================================================================
9025    pub fn gst_proxy_pad_get_type() -> GType;
9026    pub fn gst_proxy_pad_chain_default(
9027        pad: *mut GstPad,
9028        parent: *mut GstObject,
9029        buffer: *mut GstBuffer,
9030    ) -> GstFlowReturn;
9031    pub fn gst_proxy_pad_chain_list_default(
9032        pad: *mut GstPad,
9033        parent: *mut GstObject,
9034        list: *mut GstBufferList,
9035    ) -> GstFlowReturn;
9036    pub fn gst_proxy_pad_getrange_default(
9037        pad: *mut GstPad,
9038        parent: *mut GstObject,
9039        offset: u64,
9040        size: c_uint,
9041        buffer: *mut *mut GstBuffer,
9042    ) -> GstFlowReturn;
9043    pub fn gst_proxy_pad_iterate_internal_links_default(
9044        pad: *mut GstPad,
9045        parent: *mut GstObject,
9046    ) -> *mut GstIterator;
9047    pub fn gst_proxy_pad_get_internal(pad: *mut GstProxyPad) -> *mut GstProxyPad;
9048
9049    //=========================================================================
9050    // GstRegistry
9051    //=========================================================================
9052    pub fn gst_registry_get_type() -> GType;
9053    pub fn gst_registry_fork_is_enabled() -> gboolean;
9054    pub fn gst_registry_fork_set_enabled(enabled: gboolean);
9055    pub fn gst_registry_get() -> *mut GstRegistry;
9056    pub fn gst_registry_add_feature(
9057        registry: *mut GstRegistry,
9058        feature: *mut GstPluginFeature,
9059    ) -> gboolean;
9060    pub fn gst_registry_add_plugin(registry: *mut GstRegistry, plugin: *mut GstPlugin) -> gboolean;
9061    pub fn gst_registry_check_feature_version(
9062        registry: *mut GstRegistry,
9063        feature_name: *const c_char,
9064        min_major: c_uint,
9065        min_minor: c_uint,
9066        min_micro: c_uint,
9067    ) -> gboolean;
9068    pub fn gst_registry_feature_filter(
9069        registry: *mut GstRegistry,
9070        filter: GstPluginFeatureFilter,
9071        first: gboolean,
9072        user_data: gpointer,
9073    ) -> *mut glib::GList;
9074    pub fn gst_registry_find_feature(
9075        registry: *mut GstRegistry,
9076        name: *const c_char,
9077        type_: GType,
9078    ) -> *mut GstPluginFeature;
9079    pub fn gst_registry_find_plugin(
9080        registry: *mut GstRegistry,
9081        name: *const c_char,
9082    ) -> *mut GstPlugin;
9083    pub fn gst_registry_get_feature_list(
9084        registry: *mut GstRegistry,
9085        type_: GType,
9086    ) -> *mut glib::GList;
9087    pub fn gst_registry_get_feature_list_by_plugin(
9088        registry: *mut GstRegistry,
9089        name: *const c_char,
9090    ) -> *mut glib::GList;
9091    pub fn gst_registry_get_feature_list_cookie(registry: *mut GstRegistry) -> u32;
9092    pub fn gst_registry_get_plugin_list(registry: *mut GstRegistry) -> *mut glib::GList;
9093    pub fn gst_registry_lookup(
9094        registry: *mut GstRegistry,
9095        filename: *const c_char,
9096    ) -> *mut GstPlugin;
9097    pub fn gst_registry_lookup_feature(
9098        registry: *mut GstRegistry,
9099        name: *const c_char,
9100    ) -> *mut GstPluginFeature;
9101    pub fn gst_registry_plugin_filter(
9102        registry: *mut GstRegistry,
9103        filter: GstPluginFilter,
9104        first: gboolean,
9105        user_data: gpointer,
9106    ) -> *mut glib::GList;
9107    pub fn gst_registry_remove_feature(registry: *mut GstRegistry, feature: *mut GstPluginFeature);
9108    pub fn gst_registry_remove_plugin(registry: *mut GstRegistry, plugin: *mut GstPlugin);
9109    pub fn gst_registry_scan_path(registry: *mut GstRegistry, path: *const c_char) -> gboolean;
9110
9111    //=========================================================================
9112    // GstSharedTaskPool
9113    //=========================================================================
9114    #[cfg(feature = "v1_20")]
9115    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9116    pub fn gst_shared_task_pool_get_type() -> GType;
9117    #[cfg(feature = "v1_20")]
9118    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9119    pub fn gst_shared_task_pool_new() -> *mut GstTaskPool;
9120    #[cfg(feature = "v1_20")]
9121    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9122    pub fn gst_shared_task_pool_get_max_threads(pool: *mut GstSharedTaskPool) -> c_uint;
9123    #[cfg(feature = "v1_20")]
9124    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9125    pub fn gst_shared_task_pool_set_max_threads(pool: *mut GstSharedTaskPool, max_threads: c_uint);
9126
9127    //=========================================================================
9128    // GstStream
9129    //=========================================================================
9130    pub fn gst_stream_get_type() -> GType;
9131    pub fn gst_stream_new(
9132        stream_id: *const c_char,
9133        caps: *mut GstCaps,
9134        type_: GstStreamType,
9135        flags: GstStreamFlags,
9136    ) -> *mut GstStream;
9137    pub fn gst_stream_get_caps(stream: *mut GstStream) -> *mut GstCaps;
9138    pub fn gst_stream_get_stream_flags(stream: *mut GstStream) -> GstStreamFlags;
9139    pub fn gst_stream_get_stream_id(stream: *mut GstStream) -> *const c_char;
9140    pub fn gst_stream_get_stream_type(stream: *mut GstStream) -> GstStreamType;
9141    pub fn gst_stream_get_tags(stream: *mut GstStream) -> *mut GstTagList;
9142    pub fn gst_stream_set_caps(stream: *mut GstStream, caps: *mut GstCaps);
9143    pub fn gst_stream_set_stream_flags(stream: *mut GstStream, flags: GstStreamFlags);
9144    pub fn gst_stream_set_stream_type(stream: *mut GstStream, stream_type: GstStreamType);
9145    pub fn gst_stream_set_tags(stream: *mut GstStream, tags: *mut GstTagList);
9146
9147    //=========================================================================
9148    // GstStreamCollection
9149    //=========================================================================
9150    pub fn gst_stream_collection_get_type() -> GType;
9151    pub fn gst_stream_collection_new(upstream_id: *const c_char) -> *mut GstStreamCollection;
9152    pub fn gst_stream_collection_add_stream(
9153        collection: *mut GstStreamCollection,
9154        stream: *mut GstStream,
9155    ) -> gboolean;
9156    pub fn gst_stream_collection_get_size(collection: *mut GstStreamCollection) -> c_uint;
9157    pub fn gst_stream_collection_get_stream(
9158        collection: *mut GstStreamCollection,
9159        index: c_uint,
9160    ) -> *mut GstStream;
9161    pub fn gst_stream_collection_get_upstream_id(
9162        collection: *mut GstStreamCollection,
9163    ) -> *const c_char;
9164
9165    //=========================================================================
9166    // GstSystemClock
9167    //=========================================================================
9168    pub fn gst_system_clock_get_type() -> GType;
9169    pub fn gst_system_clock_obtain() -> *mut GstClock;
9170    pub fn gst_system_clock_set_default(new_clock: *mut GstClock);
9171
9172    //=========================================================================
9173    // GstTask
9174    //=========================================================================
9175    pub fn gst_task_get_type() -> GType;
9176    pub fn gst_task_new(
9177        func: GstTaskFunction,
9178        user_data: gpointer,
9179        notify: glib::GDestroyNotify,
9180    ) -> *mut GstTask;
9181    pub fn gst_task_cleanup_all();
9182    pub fn gst_task_get_pool(task: *mut GstTask) -> *mut GstTaskPool;
9183    pub fn gst_task_get_state(task: *mut GstTask) -> GstTaskState;
9184    pub fn gst_task_join(task: *mut GstTask) -> gboolean;
9185    pub fn gst_task_pause(task: *mut GstTask) -> gboolean;
9186    #[cfg(feature = "v1_18")]
9187    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9188    pub fn gst_task_resume(task: *mut GstTask) -> gboolean;
9189    pub fn gst_task_set_enter_callback(
9190        task: *mut GstTask,
9191        enter_func: GstTaskThreadFunc,
9192        user_data: gpointer,
9193        notify: glib::GDestroyNotify,
9194    );
9195    pub fn gst_task_set_leave_callback(
9196        task: *mut GstTask,
9197        leave_func: GstTaskThreadFunc,
9198        user_data: gpointer,
9199        notify: glib::GDestroyNotify,
9200    );
9201    pub fn gst_task_set_lock(task: *mut GstTask, mutex: *mut glib::GRecMutex);
9202    pub fn gst_task_set_pool(task: *mut GstTask, pool: *mut GstTaskPool);
9203    pub fn gst_task_set_state(task: *mut GstTask, state: GstTaskState) -> gboolean;
9204    pub fn gst_task_start(task: *mut GstTask) -> gboolean;
9205    pub fn gst_task_stop(task: *mut GstTask) -> gboolean;
9206
9207    //=========================================================================
9208    // GstTaskPool
9209    //=========================================================================
9210    pub fn gst_task_pool_get_type() -> GType;
9211    pub fn gst_task_pool_new() -> *mut GstTaskPool;
9212    pub fn gst_task_pool_cleanup(pool: *mut GstTaskPool);
9213    #[cfg(feature = "v1_20")]
9214    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9215    pub fn gst_task_pool_dispose_handle(pool: *mut GstTaskPool, id: gpointer);
9216    pub fn gst_task_pool_join(pool: *mut GstTaskPool, id: gpointer);
9217    pub fn gst_task_pool_prepare(pool: *mut GstTaskPool, error: *mut *mut glib::GError);
9218    pub fn gst_task_pool_push(
9219        pool: *mut GstTaskPool,
9220        func: GstTaskPoolFunction,
9221        user_data: gpointer,
9222        error: *mut *mut glib::GError,
9223    ) -> gpointer;
9224
9225    //=========================================================================
9226    // GstTracer
9227    //=========================================================================
9228    pub fn gst_tracer_get_type() -> GType;
9229    pub fn gst_tracer_register(
9230        plugin: *mut GstPlugin,
9231        name: *const c_char,
9232        type_: GType,
9233    ) -> gboolean;
9234
9235    //=========================================================================
9236    // GstTracerFactory
9237    //=========================================================================
9238    pub fn gst_tracer_factory_get_type() -> GType;
9239    pub fn gst_tracer_factory_get_list() -> *mut glib::GList;
9240    pub fn gst_tracer_factory_get_tracer_type(factory: *mut GstTracerFactory) -> GType;
9241
9242    //=========================================================================
9243    // GstTracerRecord
9244    //=========================================================================
9245    pub fn gst_tracer_record_get_type() -> GType;
9246    pub fn gst_tracer_record_new(
9247        name: *const c_char,
9248        firstfield: *const c_char,
9249        ...
9250    ) -> *mut GstTracerRecord;
9251    pub fn gst_tracer_record_log(self_: *mut GstTracerRecord, ...);
9252
9253    //=========================================================================
9254    // GstTypeFindFactory
9255    //=========================================================================
9256    pub fn gst_type_find_factory_get_type() -> GType;
9257    pub fn gst_type_find_factory_get_list() -> *mut glib::GList;
9258    pub fn gst_type_find_factory_call_function(
9259        factory: *mut GstTypeFindFactory,
9260        find: *mut GstTypeFind,
9261    );
9262    pub fn gst_type_find_factory_get_caps(factory: *mut GstTypeFindFactory) -> *mut GstCaps;
9263    pub fn gst_type_find_factory_get_extensions(
9264        factory: *mut GstTypeFindFactory,
9265    ) -> *const *const c_char;
9266    pub fn gst_type_find_factory_has_function(factory: *mut GstTypeFindFactory) -> gboolean;
9267
9268    //=========================================================================
9269    // GstValueArray
9270    //=========================================================================
9271    pub fn gst_value_array_get_type() -> GType;
9272    pub fn gst_value_array_append_and_take_value(
9273        value: *mut gobject::GValue,
9274        append_value: *mut gobject::GValue,
9275    );
9276    pub fn gst_value_array_append_value(
9277        value: *mut gobject::GValue,
9278        append_value: *const gobject::GValue,
9279    );
9280    pub fn gst_value_array_get_size(value: *const gobject::GValue) -> c_uint;
9281    pub fn gst_value_array_get_value(
9282        value: *const gobject::GValue,
9283        index: c_uint,
9284    ) -> *const gobject::GValue;
9285    #[cfg(feature = "v1_18")]
9286    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9287    pub fn gst_value_array_init(
9288        value: *mut gobject::GValue,
9289        prealloc: c_uint,
9290    ) -> *mut gobject::GValue;
9291    pub fn gst_value_array_prepend_value(
9292        value: *mut gobject::GValue,
9293        prepend_value: *const gobject::GValue,
9294    );
9295
9296    //=========================================================================
9297    // GstValueList
9298    //=========================================================================
9299    pub fn gst_value_list_get_type() -> GType;
9300    pub fn gst_value_list_append_and_take_value(
9301        value: *mut gobject::GValue,
9302        append_value: *mut gobject::GValue,
9303    );
9304    pub fn gst_value_list_append_value(
9305        value: *mut gobject::GValue,
9306        append_value: *const gobject::GValue,
9307    );
9308    pub fn gst_value_list_concat(
9309        dest: *mut gobject::GValue,
9310        value1: *const gobject::GValue,
9311        value2: *const gobject::GValue,
9312    );
9313    pub fn gst_value_list_get_size(value: *const gobject::GValue) -> c_uint;
9314    pub fn gst_value_list_get_value(
9315        value: *const gobject::GValue,
9316        index: c_uint,
9317    ) -> *const gobject::GValue;
9318    #[cfg(feature = "v1_18")]
9319    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9320    pub fn gst_value_list_init(
9321        value: *mut gobject::GValue,
9322        prealloc: c_uint,
9323    ) -> *mut gobject::GValue;
9324    pub fn gst_value_list_merge(
9325        dest: *mut gobject::GValue,
9326        value1: *const gobject::GValue,
9327        value2: *const gobject::GValue,
9328    );
9329    pub fn gst_value_list_prepend_value(
9330        value: *mut gobject::GValue,
9331        prepend_value: *const gobject::GValue,
9332    );
9333
9334    //=========================================================================
9335    // GstChildProxy
9336    //=========================================================================
9337    pub fn gst_child_proxy_get_type() -> GType;
9338    pub fn gst_child_proxy_child_added(
9339        parent: *mut GstChildProxy,
9340        child: *mut gobject::GObject,
9341        name: *const c_char,
9342    );
9343    pub fn gst_child_proxy_child_removed(
9344        parent: *mut GstChildProxy,
9345        child: *mut gobject::GObject,
9346        name: *const c_char,
9347    );
9348    pub fn gst_child_proxy_get(object: *mut GstChildProxy, first_property_name: *const c_char, ...);
9349    pub fn gst_child_proxy_get_child_by_index(
9350        parent: *mut GstChildProxy,
9351        index: c_uint,
9352    ) -> *mut gobject::GObject;
9353    pub fn gst_child_proxy_get_child_by_name(
9354        parent: *mut GstChildProxy,
9355        name: *const c_char,
9356    ) -> *mut gobject::GObject;
9357    #[cfg(feature = "v1_22")]
9358    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9359    pub fn gst_child_proxy_get_child_by_name_recurse(
9360        child_proxy: *mut GstChildProxy,
9361        name: *const c_char,
9362    ) -> *mut gobject::GObject;
9363    pub fn gst_child_proxy_get_children_count(parent: *mut GstChildProxy) -> c_uint;
9364    pub fn gst_child_proxy_get_property(
9365        object: *mut GstChildProxy,
9366        name: *const c_char,
9367        value: *mut gobject::GValue,
9368    );
9369    //pub fn gst_child_proxy_get_valist(object: *mut GstChildProxy, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
9370    pub fn gst_child_proxy_lookup(
9371        object: *mut GstChildProxy,
9372        name: *const c_char,
9373        target: *mut *mut gobject::GObject,
9374        pspec: *mut *mut gobject::GParamSpec,
9375    ) -> gboolean;
9376    pub fn gst_child_proxy_set(object: *mut GstChildProxy, first_property_name: *const c_char, ...);
9377    pub fn gst_child_proxy_set_property(
9378        object: *mut GstChildProxy,
9379        name: *const c_char,
9380        value: *const gobject::GValue,
9381    );
9382    //pub fn gst_child_proxy_set_valist(object: *mut GstChildProxy, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
9383
9384    //=========================================================================
9385    // GstPreset
9386    //=========================================================================
9387    pub fn gst_preset_get_type() -> GType;
9388    pub fn gst_preset_get_app_dir() -> *const c_char;
9389    pub fn gst_preset_set_app_dir(app_dir: *const c_char) -> gboolean;
9390    pub fn gst_preset_delete_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9391    pub fn gst_preset_get_meta(
9392        preset: *mut GstPreset,
9393        name: *const c_char,
9394        tag: *const c_char,
9395        value: *mut *mut c_char,
9396    ) -> gboolean;
9397    pub fn gst_preset_get_preset_names(preset: *mut GstPreset) -> *mut *mut c_char;
9398    pub fn gst_preset_get_property_names(preset: *mut GstPreset) -> *mut *mut c_char;
9399    pub fn gst_preset_is_editable(preset: *mut GstPreset) -> gboolean;
9400    pub fn gst_preset_load_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9401    pub fn gst_preset_rename_preset(
9402        preset: *mut GstPreset,
9403        old_name: *const c_char,
9404        new_name: *const c_char,
9405    ) -> gboolean;
9406    pub fn gst_preset_save_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9407    pub fn gst_preset_set_meta(
9408        preset: *mut GstPreset,
9409        name: *const c_char,
9410        tag: *const c_char,
9411        value: *const c_char,
9412    ) -> gboolean;
9413
9414    //=========================================================================
9415    // GstTagSetter
9416    //=========================================================================
9417    pub fn gst_tag_setter_get_type() -> GType;
9418    //pub fn gst_tag_setter_add_tag_valist(setter: *mut GstTagSetter, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
9419    //pub fn gst_tag_setter_add_tag_valist_values(setter: *mut GstTagSetter, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
9420    pub fn gst_tag_setter_add_tag_value(
9421        setter: *mut GstTagSetter,
9422        mode: GstTagMergeMode,
9423        tag: *const c_char,
9424        value: *const gobject::GValue,
9425    );
9426    pub fn gst_tag_setter_add_tag_values(
9427        setter: *mut GstTagSetter,
9428        mode: GstTagMergeMode,
9429        tag: *const c_char,
9430        ...
9431    );
9432    pub fn gst_tag_setter_add_tags(
9433        setter: *mut GstTagSetter,
9434        mode: GstTagMergeMode,
9435        tag: *const c_char,
9436        ...
9437    );
9438    pub fn gst_tag_setter_get_tag_list(setter: *mut GstTagSetter) -> *const GstTagList;
9439    pub fn gst_tag_setter_get_tag_merge_mode(setter: *mut GstTagSetter) -> GstTagMergeMode;
9440    pub fn gst_tag_setter_merge_tags(
9441        setter: *mut GstTagSetter,
9442        list: *const GstTagList,
9443        mode: GstTagMergeMode,
9444    );
9445    pub fn gst_tag_setter_reset_tags(setter: *mut GstTagSetter);
9446    pub fn gst_tag_setter_set_tag_merge_mode(setter: *mut GstTagSetter, mode: GstTagMergeMode);
9447
9448    //=========================================================================
9449    // GstTocSetter
9450    //=========================================================================
9451    pub fn gst_toc_setter_get_type() -> GType;
9452    pub fn gst_toc_setter_get_toc(setter: *mut GstTocSetter) -> *mut GstToc;
9453    pub fn gst_toc_setter_reset(setter: *mut GstTocSetter);
9454    pub fn gst_toc_setter_set_toc(setter: *mut GstTocSetter, toc: *mut GstToc);
9455
9456    //=========================================================================
9457    // GstURIHandler
9458    //=========================================================================
9459    pub fn gst_uri_handler_get_type() -> GType;
9460    pub fn gst_uri_handler_get_protocols(handler: *mut GstURIHandler) -> *const *const c_char;
9461    pub fn gst_uri_handler_get_uri(handler: *mut GstURIHandler) -> *mut c_char;
9462    pub fn gst_uri_handler_get_uri_type(handler: *mut GstURIHandler) -> GstURIType;
9463    pub fn gst_uri_handler_set_uri(
9464        handler: *mut GstURIHandler,
9465        uri: *const c_char,
9466        error: *mut *mut glib::GError,
9467    ) -> gboolean;
9468
9469    //=========================================================================
9470    // Other functions
9471    //=========================================================================
9472    pub fn gst_calculate_linear_regression(
9473        xy: *const GstClockTime,
9474        temp: *mut GstClockTime,
9475        n: c_uint,
9476        m_num: *mut GstClockTime,
9477        m_denom: *mut GstClockTime,
9478        b: *mut GstClockTime,
9479        xbase: *mut GstClockTime,
9480        r_squared: *mut c_double,
9481    ) -> gboolean;
9482    #[cfg(feature = "v1_18_3")]
9483    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9484    pub fn gst_clear_buffer(buf_ptr: *mut *mut GstBuffer);
9485    #[cfg(feature = "v1_18_3")]
9486    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9487    pub fn gst_clear_buffer_list(list_ptr: *mut *mut GstBufferList);
9488    #[cfg(feature = "v1_18_3")]
9489    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9490    pub fn gst_clear_caps(caps_ptr: *mut *mut GstCaps);
9491    #[cfg(feature = "v1_24")]
9492    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9493    pub fn gst_clear_context(context_ptr: *mut *mut GstContext);
9494    #[cfg(feature = "v1_18_3")]
9495    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9496    pub fn gst_clear_event(event_ptr: *mut *mut GstEvent);
9497    #[cfg(feature = "v1_18_3")]
9498    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9499    pub fn gst_clear_message(msg_ptr: *mut *mut GstMessage);
9500    #[cfg(feature = "v1_16")]
9501    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
9502    pub fn gst_clear_mini_object(object_ptr: *mut *mut GstMiniObject);
9503    #[cfg(feature = "v1_16")]
9504    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
9505    pub fn gst_clear_object(object_ptr: *mut *mut GstObject);
9506    #[cfg(feature = "v1_24")]
9507    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9508    pub fn gst_clear_promise(promise_ptr: *mut *mut GstPromise);
9509    #[cfg(feature = "v1_18_3")]
9510    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9511    pub fn gst_clear_query(query_ptr: *mut *mut GstQuery);
9512    #[cfg(feature = "v1_24")]
9513    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9514    pub fn gst_clear_sample(sample_ptr: *mut *mut GstSample);
9515    #[cfg(feature = "v1_16")]
9516    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
9517    pub fn gst_clear_structure(structure_ptr: *mut *mut GstStructure);
9518    #[cfg(feature = "v1_18_3")]
9519    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9520    pub fn gst_clear_tag_list(taglist_ptr: *mut *mut GstTagList);
9521    #[cfg(feature = "v1_18_3")]
9522    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9523    pub fn gst_clear_uri(uri_ptr: *mut *mut GstUri);
9524    pub fn gst_debug_add_log_function(
9525        func: GstLogFunction,
9526        user_data: gpointer,
9527        notify: glib::GDestroyNotify,
9528    );
9529    pub fn gst_debug_add_ring_buffer_logger(max_size_per_thread: c_uint, thread_timeout: c_uint);
9530    pub fn gst_debug_bin_to_dot_data(
9531        bin: *mut GstBin,
9532        details: GstDebugGraphDetails,
9533    ) -> *mut c_char;
9534    pub fn gst_debug_bin_to_dot_file(
9535        bin: *mut GstBin,
9536        details: GstDebugGraphDetails,
9537        file_name: *const c_char,
9538    );
9539    pub fn gst_debug_bin_to_dot_file_with_ts(
9540        bin: *mut GstBin,
9541        details: GstDebugGraphDetails,
9542        file_name: *const c_char,
9543    );
9544    pub fn gst_debug_construct_term_color(colorinfo: c_uint) -> *mut c_char;
9545    pub fn gst_debug_construct_win_color(colorinfo: c_uint) -> c_int;
9546    pub fn gst_debug_get_all_categories() -> *mut glib::GSList;
9547    pub fn gst_debug_get_color_mode() -> GstDebugColorMode;
9548    pub fn gst_debug_get_default_threshold() -> GstDebugLevel;
9549    pub fn gst_debug_get_stack_trace(flags: GstStackTraceFlags) -> *mut c_char;
9550    pub fn gst_debug_is_active() -> gboolean;
9551    pub fn gst_debug_is_colored() -> gboolean;
9552    pub fn gst_debug_log(
9553        category: *mut GstDebugCategory,
9554        level: GstDebugLevel,
9555        file: *const c_char,
9556        function: *const c_char,
9557        line: c_int,
9558        object: *mut gobject::GObject,
9559        format: *const c_char,
9560        ...
9561    );
9562    pub fn gst_debug_log_default(
9563        category: *mut GstDebugCategory,
9564        level: GstDebugLevel,
9565        file: *const c_char,
9566        function: *const c_char,
9567        line: c_int,
9568        object: *mut gobject::GObject,
9569        message: *mut GstDebugMessage,
9570        user_data: gpointer,
9571    );
9572    #[cfg(feature = "v1_18")]
9573    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9574    pub fn gst_debug_log_get_line(
9575        category: *mut GstDebugCategory,
9576        level: GstDebugLevel,
9577        file: *const c_char,
9578        function: *const c_char,
9579        line: c_int,
9580        object: *mut gobject::GObject,
9581        message: *mut GstDebugMessage,
9582    ) -> *mut c_char;
9583    #[cfg(feature = "v1_22")]
9584    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9585    pub fn gst_debug_log_id(
9586        category: *mut GstDebugCategory,
9587        level: GstDebugLevel,
9588        file: *const c_char,
9589        function: *const c_char,
9590        line: c_int,
9591        id: *const c_char,
9592        format: *const c_char,
9593        ...
9594    );
9595    #[cfg(feature = "v1_22")]
9596    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9597    pub fn gst_debug_log_id_literal(
9598        category: *mut GstDebugCategory,
9599        level: GstDebugLevel,
9600        file: *const c_char,
9601        function: *const c_char,
9602        line: c_int,
9603        id: *const c_char,
9604        message_string: *const c_char,
9605    );
9606    //#[cfg(feature = "v1_22")]
9607    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9608    //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);
9609    #[cfg(feature = "v1_20")]
9610    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9611    pub fn gst_debug_log_literal(
9612        category: *mut GstDebugCategory,
9613        level: GstDebugLevel,
9614        file: *const c_char,
9615        function: *const c_char,
9616        line: c_int,
9617        object: *mut gobject::GObject,
9618        message_string: *const c_char,
9619    );
9620    //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);
9621    #[cfg(feature = "v1_26")]
9622    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
9623    pub fn gst_debug_print_object(ptr: gconstpointer) -> *mut c_char;
9624    #[cfg(feature = "v1_26")]
9625    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
9626    pub fn gst_debug_print_segment(segment: *const GstSegment) -> *mut c_char;
9627    pub fn gst_debug_print_stack_trace();
9628    pub fn gst_debug_remove_log_function(func: GstLogFunction) -> c_uint;
9629    pub fn gst_debug_remove_log_function_by_data(data: gpointer) -> c_uint;
9630    pub fn gst_debug_remove_ring_buffer_logger();
9631    pub fn gst_debug_ring_buffer_logger_get_logs() -> *mut *mut c_char;
9632    pub fn gst_debug_set_active(active: gboolean);
9633    pub fn gst_debug_set_color_mode(mode: GstDebugColorMode);
9634    pub fn gst_debug_set_color_mode_from_string(mode: *const c_char);
9635    pub fn gst_debug_set_colored(colored: gboolean);
9636    pub fn gst_debug_set_default_threshold(level: GstDebugLevel);
9637    pub fn gst_debug_set_threshold_for_name(name: *const c_char, level: GstDebugLevel);
9638    pub fn gst_debug_set_threshold_from_string(list: *const c_char, reset: gboolean);
9639    pub fn gst_debug_unset_threshold_for_name(name: *const c_char);
9640    pub fn gst_deinit();
9641    pub fn gst_dynamic_type_register(plugin: *mut GstPlugin, type_: GType) -> gboolean;
9642    pub fn gst_error_get_message(domain: glib::GQuark, code: c_int) -> *mut c_char;
9643    pub fn gst_filename_to_uri(
9644        filename: *const c_char,
9645        error: *mut *mut glib::GError,
9646    ) -> *mut c_char;
9647    pub fn gst_flow_get_name(ret: GstFlowReturn) -> *const c_char;
9648    pub fn gst_flow_to_quark(ret: GstFlowReturn) -> glib::GQuark;
9649    pub fn gst_formats_contains(formats: *const GstFormat, format: GstFormat) -> gboolean;
9650    pub fn gst_get_main_executable_path() -> *const c_char;
9651    pub fn gst_info_strdup_printf(format: *const c_char, ...) -> *mut c_char;
9652    //pub fn gst_info_strdup_vprintf(format: *const c_char, args: /*Unimplemented*/va_list) -> *mut c_char;
9653    //pub fn gst_info_vasprintf(result: *mut *mut c_char, format: *const c_char, args: /*Unimplemented*/va_list) -> c_int;
9654    pub fn gst_init(argc: *mut c_int, argv: *mut *mut *mut c_char);
9655    pub fn gst_init_check(
9656        argc: *mut c_int,
9657        argv: *mut *mut *mut c_char,
9658        error: *mut *mut glib::GError,
9659    ) -> gboolean;
9660    pub fn gst_init_get_option_group() -> *mut glib::GOptionGroup;
9661    pub fn gst_is_caps_features(obj: gconstpointer) -> gboolean;
9662    pub fn gst_is_initialized() -> gboolean;
9663    pub fn gst_make_element_message_details(name: *const c_char, ...) -> *mut GstStructure;
9664    pub fn gst_param_spec_array(
9665        name: *const c_char,
9666        nick: *const c_char,
9667        blurb: *const c_char,
9668        element_spec: *mut gobject::GParamSpec,
9669        flags: gobject::GParamFlags,
9670    ) -> *mut gobject::GParamSpec;
9671    pub fn gst_param_spec_fraction(
9672        name: *const c_char,
9673        nick: *const c_char,
9674        blurb: *const c_char,
9675        min_num: c_int,
9676        min_denom: c_int,
9677        max_num: c_int,
9678        max_denom: c_int,
9679        default_num: c_int,
9680        default_denom: c_int,
9681        flags: gobject::GParamFlags,
9682    ) -> *mut gobject::GParamSpec;
9683    pub fn gst_parent_buffer_meta_api_get_type() -> GType;
9684    pub fn gst_parse_bin_from_description(
9685        bin_description: *const c_char,
9686        ghost_unlinked_pads: gboolean,
9687        error: *mut *mut glib::GError,
9688    ) -> *mut GstBin;
9689    pub fn gst_parse_bin_from_description_full(
9690        bin_description: *const c_char,
9691        ghost_unlinked_pads: gboolean,
9692        context: *mut GstParseContext,
9693        flags: GstParseFlags,
9694        error: *mut *mut glib::GError,
9695    ) -> *mut GstElement;
9696    pub fn gst_parse_launch(
9697        pipeline_description: *const c_char,
9698        error: *mut *mut glib::GError,
9699    ) -> *mut GstElement;
9700    pub fn gst_parse_launch_full(
9701        pipeline_description: *const c_char,
9702        context: *mut GstParseContext,
9703        flags: GstParseFlags,
9704        error: *mut *mut glib::GError,
9705    ) -> *mut GstElement;
9706    pub fn gst_parse_launchv(
9707        argv: *mut *const c_char,
9708        error: *mut *mut glib::GError,
9709    ) -> *mut GstElement;
9710    pub fn gst_parse_launchv_full(
9711        argv: *mut *const c_char,
9712        context: *mut GstParseContext,
9713        flags: GstParseFlags,
9714        error: *mut *mut glib::GError,
9715    ) -> *mut GstElement;
9716    pub fn gst_print(format: *const c_char, ...);
9717    pub fn gst_printerr(format: *const c_char, ...);
9718    pub fn gst_printerrln(format: *const c_char, ...);
9719    pub fn gst_println(format: *const c_char, ...);
9720    pub fn gst_protection_filter_systems_by_available_decryptors(
9721        system_identifiers: *mut *const c_char,
9722    ) -> *mut *mut c_char;
9723    pub fn gst_protection_meta_api_get_type() -> GType;
9724    pub fn gst_protection_select_system(system_identifiers: *mut *const c_char) -> *const c_char;
9725    pub fn gst_reference_timestamp_meta_api_get_type() -> GType;
9726    pub fn gst_segtrap_is_enabled() -> gboolean;
9727    pub fn gst_segtrap_set_enabled(enabled: gboolean);
9728    pub fn gst_tag_exists(tag: *const c_char) -> gboolean;
9729    pub fn gst_tag_get_description(tag: *const c_char) -> *const c_char;
9730    pub fn gst_tag_get_flag(tag: *const c_char) -> GstTagFlag;
9731    pub fn gst_tag_get_nick(tag: *const c_char) -> *const c_char;
9732    pub fn gst_tag_get_type(tag: *const c_char) -> GType;
9733    pub fn gst_tag_is_fixed(tag: *const c_char) -> gboolean;
9734    pub fn gst_tag_merge_strings_with_comma(
9735        dest: *mut gobject::GValue,
9736        src: *const gobject::GValue,
9737    );
9738    pub fn gst_tag_merge_use_first(dest: *mut gobject::GValue, src: *const gobject::GValue);
9739    pub fn gst_tag_register(
9740        name: *const c_char,
9741        flag: GstTagFlag,
9742        type_: GType,
9743        nick: *const c_char,
9744        blurb: *const c_char,
9745        func: GstTagMergeFunc,
9746    );
9747    pub fn gst_tag_register_static(
9748        name: *const c_char,
9749        flag: GstTagFlag,
9750        type_: GType,
9751        nick: *const c_char,
9752        blurb: *const c_char,
9753        func: GstTagMergeFunc,
9754    );
9755    #[cfg(feature = "v1_18")]
9756    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9757    pub fn gst_tracing_get_active_tracers() -> *mut glib::GList;
9758    pub fn gst_tracing_register_hook(
9759        tracer: *mut GstTracer,
9760        detail: *const c_char,
9761        func: gobject::GCallback,
9762    );
9763    #[cfg(feature = "v1_18")]
9764    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9765    pub fn gst_type_is_plugin_api(type_: GType, flags: *mut GstPluginAPIFlags) -> gboolean;
9766    #[cfg(feature = "v1_18")]
9767    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9768    pub fn gst_type_mark_as_plugin_api(type_: GType, flags: GstPluginAPIFlags);
9769    pub fn gst_update_registry() -> gboolean;
9770    pub fn gst_util_array_binary_search(
9771        array: gpointer,
9772        num_elements: c_uint,
9773        element_size: size_t,
9774        search_func: glib::GCompareDataFunc,
9775        mode: GstSearchMode,
9776        search_data: gconstpointer,
9777        user_data: gpointer,
9778    ) -> gpointer;
9779    #[cfg(feature = "v1_24")]
9780    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9781    pub fn gst_util_ceil_log2(v: u32) -> c_uint;
9782    pub fn gst_util_double_to_fraction(src: c_double, dest_n: *mut c_int, dest_d: *mut c_int);
9783    pub fn gst_util_dump_buffer(buf: *mut GstBuffer);
9784    pub fn gst_util_dump_mem(mem: *const u8, size: c_uint);
9785    #[cfg(feature = "v1_24")]
9786    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9787    pub fn gst_util_filename_compare(a: *const c_char, b: *const c_char) -> c_int;
9788    #[cfg(feature = "v1_26")]
9789    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
9790    pub fn gst_util_floor_log2(v: u32) -> c_uint;
9791    pub fn gst_util_fraction_add(
9792        a_n: c_int,
9793        a_d: c_int,
9794        b_n: c_int,
9795        b_d: c_int,
9796        res_n: *mut c_int,
9797        res_d: *mut c_int,
9798    ) -> gboolean;
9799    pub fn gst_util_fraction_compare(a_n: c_int, a_d: c_int, b_n: c_int, b_d: c_int) -> c_int;
9800    pub fn gst_util_fraction_multiply(
9801        a_n: c_int,
9802        a_d: c_int,
9803        b_n: c_int,
9804        b_d: c_int,
9805        res_n: *mut c_int,
9806        res_d: *mut c_int,
9807    ) -> gboolean;
9808    #[cfg(feature = "v1_26")]
9809    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
9810    pub fn gst_util_fraction_multiply_int64(
9811        a_n: i64,
9812        a_d: i64,
9813        b_n: i64,
9814        b_d: i64,
9815        res_n: *mut i64,
9816        res_d: *mut i64,
9817    ) -> gboolean;
9818    pub fn gst_util_fraction_to_double(src_n: c_int, src_d: c_int, dest: *mut c_double);
9819    pub fn gst_util_gdouble_to_guint64(value: c_double) -> u64;
9820    pub fn gst_util_get_object_array(
9821        object: *mut gobject::GObject,
9822        name: *const c_char,
9823        array: *mut *mut gobject::GValueArray,
9824    ) -> gboolean;
9825    pub fn gst_util_get_timestamp() -> GstClockTime;
9826    pub fn gst_util_greatest_common_divisor(a: c_int, b: c_int) -> c_int;
9827    pub fn gst_util_greatest_common_divisor_int64(a: i64, b: i64) -> i64;
9828    pub fn gst_util_group_id_next() -> c_uint;
9829    pub fn gst_util_guint64_to_gdouble(value: u64) -> c_double;
9830    pub fn gst_util_seqnum_compare(s1: u32, s2: u32) -> i32;
9831    pub fn gst_util_seqnum_next() -> u32;
9832    pub fn gst_util_set_object_arg(
9833        object: *mut gobject::GObject,
9834        name: *const c_char,
9835        value: *const c_char,
9836    );
9837    pub fn gst_util_set_object_array(
9838        object: *mut gobject::GObject,
9839        name: *const c_char,
9840        array: *const gobject::GValueArray,
9841    ) -> gboolean;
9842    pub fn gst_util_set_value_from_string(value: *mut gobject::GValue, value_str: *const c_char);
9843    #[cfg(feature = "v1_24")]
9844    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9845    pub fn gst_util_simplify_fraction(
9846        numerator: *mut c_int,
9847        denominator: *mut c_int,
9848        n_terms: c_uint,
9849        threshold: c_uint,
9850    );
9851    pub fn gst_util_uint64_scale(val: u64, num: u64, denom: u64) -> u64;
9852    pub fn gst_util_uint64_scale_ceil(val: u64, num: u64, denom: u64) -> u64;
9853    pub fn gst_util_uint64_scale_int(val: u64, num: c_int, denom: c_int) -> u64;
9854    pub fn gst_util_uint64_scale_int_ceil(val: u64, num: c_int, denom: c_int) -> u64;
9855    pub fn gst_util_uint64_scale_int_round(val: u64, num: c_int, denom: c_int) -> u64;
9856    pub fn gst_util_uint64_scale_round(val: u64, num: u64, denom: u64) -> u64;
9857    pub fn gst_value_can_compare(
9858        value1: *const gobject::GValue,
9859        value2: *const gobject::GValue,
9860    ) -> gboolean;
9861    pub fn gst_value_can_intersect(
9862        value1: *const gobject::GValue,
9863        value2: *const gobject::GValue,
9864    ) -> gboolean;
9865    pub fn gst_value_can_subtract(
9866        minuend: *const gobject::GValue,
9867        subtrahend: *const gobject::GValue,
9868    ) -> gboolean;
9869    pub fn gst_value_can_union(
9870        value1: *const gobject::GValue,
9871        value2: *const gobject::GValue,
9872    ) -> gboolean;
9873    pub fn gst_value_compare(
9874        value1: *const gobject::GValue,
9875        value2: *const gobject::GValue,
9876    ) -> c_int;
9877    pub fn gst_value_deserialize(dest: *mut gobject::GValue, src: *const c_char) -> gboolean;
9878    #[cfg(feature = "v1_20")]
9879    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9880    pub fn gst_value_deserialize_with_pspec(
9881        dest: *mut gobject::GValue,
9882        src: *const c_char,
9883        pspec: *mut gobject::GParamSpec,
9884    ) -> gboolean;
9885    pub fn gst_value_fixate(dest: *mut gobject::GValue, src: *const gobject::GValue) -> gboolean;
9886    pub fn gst_value_fraction_multiply(
9887        product: *mut gobject::GValue,
9888        factor1: *const gobject::GValue,
9889        factor2: *const gobject::GValue,
9890    ) -> gboolean;
9891    pub fn gst_value_fraction_subtract(
9892        dest: *mut gobject::GValue,
9893        minuend: *const gobject::GValue,
9894        subtrahend: *const gobject::GValue,
9895    ) -> gboolean;
9896    pub fn gst_value_get_bitmask(value: *const gobject::GValue) -> u64;
9897    pub fn gst_value_get_caps(value: *const gobject::GValue) -> *const GstCaps;
9898    pub fn gst_value_get_caps_features(value: *const gobject::GValue) -> *const GstCapsFeatures;
9899    pub fn gst_value_get_double_range_max(value: *const gobject::GValue) -> c_double;
9900    pub fn gst_value_get_double_range_min(value: *const gobject::GValue) -> c_double;
9901    pub fn gst_value_get_flagset_flags(value: *const gobject::GValue) -> c_uint;
9902    pub fn gst_value_get_flagset_mask(value: *const gobject::GValue) -> c_uint;
9903    pub fn gst_value_get_fraction_denominator(value: *const gobject::GValue) -> c_int;
9904    pub fn gst_value_get_fraction_numerator(value: *const gobject::GValue) -> c_int;
9905    pub fn gst_value_get_fraction_range_max(
9906        value: *const gobject::GValue,
9907    ) -> *const gobject::GValue;
9908    pub fn gst_value_get_fraction_range_min(
9909        value: *const gobject::GValue,
9910    ) -> *const gobject::GValue;
9911    pub fn gst_value_get_int64_range_max(value: *const gobject::GValue) -> i64;
9912    pub fn gst_value_get_int64_range_min(value: *const gobject::GValue) -> i64;
9913    pub fn gst_value_get_int64_range_step(value: *const gobject::GValue) -> i64;
9914    pub fn gst_value_get_int_range_max(value: *const gobject::GValue) -> c_int;
9915    pub fn gst_value_get_int_range_min(value: *const gobject::GValue) -> c_int;
9916    pub fn gst_value_get_int_range_step(value: *const gobject::GValue) -> c_int;
9917    pub fn gst_value_get_structure(value: *const gobject::GValue) -> *const GstStructure;
9918    #[cfg(feature = "v1_28")]
9919    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9920    pub fn gst_value_hash(value: *const gobject::GValue, res: *mut c_uint) -> gboolean;
9921    pub fn gst_value_init_and_copy(dest: *mut gobject::GValue, src: *const gobject::GValue);
9922    pub fn gst_value_intersect(
9923        dest: *mut gobject::GValue,
9924        value1: *const gobject::GValue,
9925        value2: *const gobject::GValue,
9926    ) -> gboolean;
9927    pub fn gst_value_is_fixed(value: *const gobject::GValue) -> gboolean;
9928    pub fn gst_value_is_subset(
9929        value1: *const gobject::GValue,
9930        value2: *const gobject::GValue,
9931    ) -> gboolean;
9932    pub fn gst_value_register(table: *const GstValueTable);
9933    pub fn gst_value_serialize(value: *const gobject::GValue) -> *mut c_char;
9934    pub fn gst_value_set_bitmask(value: *mut gobject::GValue, bitmask: u64);
9935    pub fn gst_value_set_caps(value: *mut gobject::GValue, caps: *const GstCaps);
9936    pub fn gst_value_set_caps_features(
9937        value: *mut gobject::GValue,
9938        features: *const GstCapsFeatures,
9939    );
9940    pub fn gst_value_set_double_range(value: *mut gobject::GValue, start: c_double, end: c_double);
9941    pub fn gst_value_set_flagset(value: *mut gobject::GValue, flags: c_uint, mask: c_uint);
9942    pub fn gst_value_set_fraction(
9943        value: *mut gobject::GValue,
9944        numerator: c_int,
9945        denominator: c_int,
9946    );
9947    pub fn gst_value_set_fraction_range(
9948        value: *mut gobject::GValue,
9949        start: *const gobject::GValue,
9950        end: *const gobject::GValue,
9951    );
9952    pub fn gst_value_set_fraction_range_full(
9953        value: *mut gobject::GValue,
9954        numerator_start: c_int,
9955        denominator_start: c_int,
9956        numerator_end: c_int,
9957        denominator_end: c_int,
9958    );
9959    pub fn gst_value_set_int64_range(value: *mut gobject::GValue, start: i64, end: i64);
9960    pub fn gst_value_set_int64_range_step(
9961        value: *mut gobject::GValue,
9962        start: i64,
9963        end: i64,
9964        step: i64,
9965    );
9966    pub fn gst_value_set_int_range(value: *mut gobject::GValue, start: c_int, end: c_int);
9967    pub fn gst_value_set_int_range_step(
9968        value: *mut gobject::GValue,
9969        start: c_int,
9970        end: c_int,
9971        step: c_int,
9972    );
9973    pub fn gst_value_set_structure(value: *mut gobject::GValue, structure: *const GstStructure);
9974    pub fn gst_value_subtract(
9975        dest: *mut gobject::GValue,
9976        minuend: *const gobject::GValue,
9977        subtrahend: *const gobject::GValue,
9978    ) -> gboolean;
9979    pub fn gst_value_union(
9980        dest: *mut gobject::GValue,
9981        value1: *const gobject::GValue,
9982        value2: *const gobject::GValue,
9983    ) -> gboolean;
9984    pub fn gst_version(
9985        major: *mut c_uint,
9986        minor: *mut c_uint,
9987        micro: *mut c_uint,
9988        nano: *mut c_uint,
9989    );
9990    pub fn gst_version_string() -> *mut c_char;
9991
9992}