Skip to main content

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#[allow(unused_imports)]
23use libc::{FILE, intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t};
24#[cfg(unix)]
25#[allow(unused_imports)]
26use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
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::{GType, gboolean, gconstpointer, gpointer};
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_GAIN_R128: &[u8] = b"r128-album-gain\0";
530pub const GST_TAG_ALBUM_PEAK: &[u8] = b"replaygain-album-peak\0";
531pub const GST_TAG_ALBUM_SORTNAME: &[u8] = b"album-sortname\0";
532pub const GST_TAG_ALBUM_VOLUME_COUNT: &[u8] = b"album-disc-count\0";
533pub const GST_TAG_ALBUM_VOLUME_NUMBER: &[u8] = b"album-disc-number\0";
534pub const GST_TAG_APPLICATION_DATA: &[u8] = b"application-data\0";
535pub const GST_TAG_APPLICATION_NAME: &[u8] = b"application-name\0";
536pub const GST_TAG_ARTIST: &[u8] = b"artist\0";
537pub const GST_TAG_ARTIST_SORTNAME: &[u8] = b"artist-sortname\0";
538pub const GST_TAG_ATTACHMENT: &[u8] = b"attachment\0";
539pub const GST_TAG_AUDIO_CODEC: &[u8] = b"audio-codec\0";
540pub const GST_TAG_BEATS_PER_MINUTE: &[u8] = b"beats-per-minute\0";
541pub const GST_TAG_BITRATE: &[u8] = b"bitrate\0";
542pub const GST_TAG_CODEC: &[u8] = b"codec\0";
543pub const GST_TAG_COMMENT: &[u8] = b"comment\0";
544pub const GST_TAG_COMPOSER: &[u8] = b"composer\0";
545pub const GST_TAG_COMPOSER_SORTNAME: &[u8] = b"composer-sortname\0";
546pub const GST_TAG_CONDUCTOR: &[u8] = b"conductor\0";
547pub const GST_TAG_CONTACT: &[u8] = b"contact\0";
548pub const GST_TAG_CONTAINER_FORMAT: &[u8] = b"container-format\0";
549pub const GST_TAG_CONTAINER_SPECIFIC_TRACK_ID: &[u8] = b"container-specific-track-id\0";
550pub const GST_TAG_COPYRIGHT: &[u8] = b"copyright\0";
551pub const GST_TAG_COPYRIGHT_URI: &[u8] = b"copyright-uri\0";
552pub const GST_TAG_DATE: &[u8] = b"date\0";
553pub const GST_TAG_DATE_TIME: &[u8] = b"datetime\0";
554pub const GST_TAG_DESCRIPTION: &[u8] = b"description\0";
555pub const GST_TAG_DEVICE_MANUFACTURER: &[u8] = b"device-manufacturer\0";
556pub const GST_TAG_DEVICE_MODEL: &[u8] = b"device-model\0";
557pub const GST_TAG_DURATION: &[u8] = b"duration\0";
558pub const GST_TAG_ENCODED_BY: &[u8] = b"encoded-by\0";
559pub const GST_TAG_ENCODER: &[u8] = b"encoder\0";
560pub const GST_TAG_ENCODER_VERSION: &[u8] = b"encoder-version\0";
561pub const GST_TAG_EXTENDED_COMMENT: &[u8] = b"extended-comment\0";
562pub const GST_TAG_GENRE: &[u8] = b"genre\0";
563pub const GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION: &[u8] = b"geo-location-capture-direction\0";
564pub const GST_TAG_GEO_LOCATION_CITY: &[u8] = b"geo-location-city\0";
565pub const GST_TAG_GEO_LOCATION_COUNTRY: &[u8] = b"geo-location-country\0";
566pub const GST_TAG_GEO_LOCATION_ELEVATION: &[u8] = b"geo-location-elevation\0";
567pub const GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR: &[u8] = b"geo-location-horizontal-error\0";
568pub const GST_TAG_GEO_LOCATION_LATITUDE: &[u8] = b"geo-location-latitude\0";
569pub const GST_TAG_GEO_LOCATION_LONGITUDE: &[u8] = b"geo-location-longitude\0";
570pub const GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION: &[u8] = b"geo-location-movement-direction\0";
571pub const GST_TAG_GEO_LOCATION_MOVEMENT_SPEED: &[u8] = b"geo-location-movement-speed\0";
572pub const GST_TAG_GEO_LOCATION_NAME: &[u8] = b"geo-location-name\0";
573pub const GST_TAG_GEO_LOCATION_SUBLOCATION: &[u8] = b"geo-location-sublocation\0";
574pub const GST_TAG_GROUPING: &[u8] = b"grouping\0";
575pub const GST_TAG_HOMEPAGE: &[u8] = b"homepage\0";
576pub const GST_TAG_IMAGE: &[u8] = b"image\0";
577pub const GST_TAG_IMAGE_ORIENTATION: &[u8] = b"image-orientation\0";
578pub const GST_TAG_INTERPRETED_BY: &[u8] = b"interpreted-by\0";
579pub const GST_TAG_ISRC: &[u8] = b"isrc\0";
580pub const GST_TAG_KEYWORDS: &[u8] = b"keywords\0";
581pub const GST_TAG_LANGUAGE_CODE: &[u8] = b"language-code\0";
582pub const GST_TAG_LANGUAGE_NAME: &[u8] = b"language-name\0";
583pub const GST_TAG_LICENSE: &[u8] = b"license\0";
584pub const GST_TAG_LICENSE_URI: &[u8] = b"license-uri\0";
585pub const GST_TAG_LOCATION: &[u8] = b"location\0";
586pub const GST_TAG_LYRICS: &[u8] = b"lyrics\0";
587pub const GST_TAG_MAXIMUM_BITRATE: &[u8] = b"maximum-bitrate\0";
588pub const GST_TAG_MIDI_BASE_NOTE: &[u8] = b"midi-base-note\0";
589pub const GST_TAG_MINIMUM_BITRATE: &[u8] = b"minimum-bitrate\0";
590pub const GST_TAG_NOMINAL_BITRATE: &[u8] = b"nominal-bitrate\0";
591pub const GST_TAG_ORGANIZATION: &[u8] = b"organization\0";
592pub const GST_TAG_PERFORMER: &[u8] = b"performer\0";
593pub const GST_TAG_PREVIEW_IMAGE: &[u8] = b"preview-image\0";
594pub const GST_TAG_PRIVATE_DATA: &[u8] = b"private-data\0";
595pub const GST_TAG_PUBLISHER: &[u8] = b"publisher\0";
596pub const GST_TAG_REFERENCE_LEVEL: &[u8] = b"replaygain-reference-level\0";
597pub const GST_TAG_SERIAL: &[u8] = b"serial\0";
598pub const GST_TAG_SHOW_EPISODE_NUMBER: &[u8] = b"show-episode-number\0";
599pub const GST_TAG_SHOW_NAME: &[u8] = b"show-name\0";
600pub const GST_TAG_SHOW_SEASON_NUMBER: &[u8] = b"show-season-number\0";
601pub const GST_TAG_SHOW_SORTNAME: &[u8] = b"show-sortname\0";
602pub const GST_TAG_SUBTITLE_CODEC: &[u8] = b"subtitle-codec\0";
603pub const GST_TAG_TITLE: &[u8] = b"title\0";
604pub const GST_TAG_TITLE_SORTNAME: &[u8] = b"title-sortname\0";
605pub const GST_TAG_TRACK_COUNT: &[u8] = b"track-count\0";
606pub const GST_TAG_TRACK_GAIN: &[u8] = b"replaygain-track-gain\0";
607pub const GST_TAG_TRACK_GAIN_R128: &[u8] = b"r128-track-gain\0";
608pub const GST_TAG_TRACK_NUMBER: &[u8] = b"track-number\0";
609pub const GST_TAG_TRACK_PEAK: &[u8] = b"replaygain-track-peak\0";
610pub const GST_TAG_USER_RATING: &[u8] = b"user-rating\0";
611pub const GST_TAG_VERSION: &[u8] = b"version\0";
612pub const GST_TAG_VIDEO_CODEC: &[u8] = b"video-codec\0";
613pub const GST_TASK_POOL_CONTEXT_TYPE: &[u8] = b"gst.task.pool\0";
614pub const GST_TOC_REPEAT_COUNT_INFINITE: c_int = -1;
615pub const GST_URI_NO_PORT: c_int = 0;
616pub const GST_USECOND: GstClockTimeDiff = 1000;
617pub const GST_VALUE_EQUAL: c_int = 0;
618pub const GST_VALUE_GREATER_THAN: c_int = 1;
619pub const GST_VALUE_LESS_THAN: c_int = -1;
620pub const GST_VALUE_UNORDERED: c_int = 2;
621
622// Flags
623pub type GstAllocatorFlags = c_uint;
624pub const GST_ALLOCATOR_FLAG_CUSTOM_ALLOC: GstAllocatorFlags = 16;
625#[cfg(feature = "v1_24")]
626#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
627pub const GST_ALLOCATOR_FLAG_NO_COPY: GstAllocatorFlags = 32;
628pub const GST_ALLOCATOR_FLAG_LAST: GstAllocatorFlags = 1048576;
629
630pub type GstBinFlags = c_uint;
631pub const GST_BIN_FLAG_NO_RESYNC: GstBinFlags = 16384;
632pub const GST_BIN_FLAG_STREAMS_AWARE: GstBinFlags = 32768;
633pub const GST_BIN_FLAG_LAST: GstBinFlags = 524288;
634
635pub type GstBufferCopyFlags = c_uint;
636pub const GST_BUFFER_COPY_NONE: GstBufferCopyFlags = 0;
637pub const GST_BUFFER_COPY_FLAGS: GstBufferCopyFlags = 1;
638pub const GST_BUFFER_COPY_TIMESTAMPS: GstBufferCopyFlags = 2;
639pub const GST_BUFFER_COPY_META: GstBufferCopyFlags = 4;
640pub const GST_BUFFER_COPY_MEMORY: GstBufferCopyFlags = 8;
641pub const GST_BUFFER_COPY_MERGE: GstBufferCopyFlags = 16;
642pub const GST_BUFFER_COPY_DEEP: GstBufferCopyFlags = 32;
643
644pub type GstBufferFlags = c_uint;
645pub const GST_BUFFER_FLAG_LIVE: GstBufferFlags = 16;
646pub const GST_BUFFER_FLAG_DECODE_ONLY: GstBufferFlags = 32;
647pub const GST_BUFFER_FLAG_DISCONT: GstBufferFlags = 64;
648pub const GST_BUFFER_FLAG_RESYNC: GstBufferFlags = 128;
649pub const GST_BUFFER_FLAG_CORRUPTED: GstBufferFlags = 256;
650pub const GST_BUFFER_FLAG_MARKER: GstBufferFlags = 512;
651pub const GST_BUFFER_FLAG_HEADER: GstBufferFlags = 1024;
652pub const GST_BUFFER_FLAG_GAP: GstBufferFlags = 2048;
653pub const GST_BUFFER_FLAG_DROPPABLE: GstBufferFlags = 4096;
654pub const GST_BUFFER_FLAG_DELTA_UNIT: GstBufferFlags = 8192;
655pub const GST_BUFFER_FLAG_TAG_MEMORY: GstBufferFlags = 16384;
656pub const GST_BUFFER_FLAG_SYNC_AFTER: GstBufferFlags = 32768;
657pub const GST_BUFFER_FLAG_NON_DROPPABLE: GstBufferFlags = 65536;
658pub const GST_BUFFER_FLAG_LAST: GstBufferFlags = 1048576;
659
660pub type GstBufferPoolAcquireFlags = c_uint;
661pub const GST_BUFFER_POOL_ACQUIRE_FLAG_NONE: GstBufferPoolAcquireFlags = 0;
662pub const GST_BUFFER_POOL_ACQUIRE_FLAG_KEY_UNIT: GstBufferPoolAcquireFlags = 1;
663pub const GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT: GstBufferPoolAcquireFlags = 2;
664pub const GST_BUFFER_POOL_ACQUIRE_FLAG_DISCONT: GstBufferPoolAcquireFlags = 4;
665pub const GST_BUFFER_POOL_ACQUIRE_FLAG_LAST: GstBufferPoolAcquireFlags = 65536;
666
667pub type GstBusFlags = c_uint;
668pub const GST_BUS_FLUSHING: GstBusFlags = 16;
669pub const GST_BUS_FLAG_LAST: GstBusFlags = 32;
670
671pub type GstCapsFlags = c_uint;
672pub const GST_CAPS_FLAG_ANY: GstCapsFlags = 16;
673
674pub type GstClockFlags = c_uint;
675pub const GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC: GstClockFlags = 16;
676pub const GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC: GstClockFlags = 32;
677pub const GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC: GstClockFlags = 64;
678pub const GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC: GstClockFlags = 128;
679pub const GST_CLOCK_FLAG_CAN_SET_RESOLUTION: GstClockFlags = 256;
680pub const GST_CLOCK_FLAG_CAN_SET_MASTER: GstClockFlags = 512;
681pub const GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC: GstClockFlags = 1024;
682pub const GST_CLOCK_FLAG_LAST: GstClockFlags = 4096;
683
684pub type GstDebugColorFlags = c_uint;
685pub const GST_DEBUG_FG_BLACK: GstDebugColorFlags = 0;
686pub const GST_DEBUG_FG_RED: GstDebugColorFlags = 1;
687pub const GST_DEBUG_FG_GREEN: GstDebugColorFlags = 2;
688pub const GST_DEBUG_FG_YELLOW: GstDebugColorFlags = 3;
689pub const GST_DEBUG_FG_BLUE: GstDebugColorFlags = 4;
690pub const GST_DEBUG_FG_MAGENTA: GstDebugColorFlags = 5;
691pub const GST_DEBUG_FG_CYAN: GstDebugColorFlags = 6;
692pub const GST_DEBUG_FG_WHITE: GstDebugColorFlags = 7;
693pub const GST_DEBUG_BG_BLACK: GstDebugColorFlags = 0;
694pub const GST_DEBUG_BG_RED: GstDebugColorFlags = 16;
695pub const GST_DEBUG_BG_GREEN: GstDebugColorFlags = 32;
696pub const GST_DEBUG_BG_YELLOW: GstDebugColorFlags = 48;
697pub const GST_DEBUG_BG_BLUE: GstDebugColorFlags = 64;
698pub const GST_DEBUG_BG_MAGENTA: GstDebugColorFlags = 80;
699pub const GST_DEBUG_BG_CYAN: GstDebugColorFlags = 96;
700pub const GST_DEBUG_BG_WHITE: GstDebugColorFlags = 112;
701pub const GST_DEBUG_BOLD: GstDebugColorFlags = 256;
702pub const GST_DEBUG_UNDERLINE: GstDebugColorFlags = 512;
703
704pub type GstDebugGraphDetails = c_uint;
705pub const GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE: GstDebugGraphDetails = 1;
706pub const GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS: GstDebugGraphDetails = 2;
707pub const GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS: GstDebugGraphDetails = 4;
708pub const GST_DEBUG_GRAPH_SHOW_STATES: GstDebugGraphDetails = 8;
709pub const GST_DEBUG_GRAPH_SHOW_FULL_PARAMS: GstDebugGraphDetails = 16;
710pub const GST_DEBUG_GRAPH_SHOW_ALL: GstDebugGraphDetails = 15;
711pub const GST_DEBUG_GRAPH_SHOW_VERBOSE: GstDebugGraphDetails = 4294967295;
712
713pub type GstElementFlags = c_uint;
714pub const GST_ELEMENT_FLAG_LOCKED_STATE: GstElementFlags = 16;
715pub const GST_ELEMENT_FLAG_SINK: GstElementFlags = 32;
716pub const GST_ELEMENT_FLAG_SOURCE: GstElementFlags = 64;
717pub const GST_ELEMENT_FLAG_PROVIDE_CLOCK: GstElementFlags = 128;
718pub const GST_ELEMENT_FLAG_REQUIRE_CLOCK: GstElementFlags = 256;
719pub const GST_ELEMENT_FLAG_INDEXABLE: GstElementFlags = 512;
720pub const GST_ELEMENT_FLAG_LAST: GstElementFlags = 16384;
721
722pub type GstEventTypeFlags = c_uint;
723pub const GST_EVENT_TYPE_UPSTREAM: GstEventTypeFlags = 1;
724pub const GST_EVENT_TYPE_DOWNSTREAM: GstEventTypeFlags = 2;
725pub const GST_EVENT_TYPE_SERIALIZED: GstEventTypeFlags = 4;
726pub const GST_EVENT_TYPE_STICKY: GstEventTypeFlags = 8;
727pub const GST_EVENT_TYPE_STICKY_MULTI: GstEventTypeFlags = 16;
728
729pub type GstGapFlags = c_uint;
730pub const GST_GAP_FLAG_MISSING_DATA: GstGapFlags = 1;
731
732pub type GstLockFlags = c_uint;
733pub const GST_LOCK_FLAG_READ: GstLockFlags = 1;
734pub const GST_LOCK_FLAG_WRITE: GstLockFlags = 2;
735pub const GST_LOCK_FLAG_EXCLUSIVE: GstLockFlags = 4;
736pub const GST_LOCK_FLAG_LAST: GstLockFlags = 256;
737
738pub type GstLogContextFlags = c_uint;
739pub const GST_LOG_CONTEXT_FLAG_NONE: GstLogContextFlags = 0;
740pub const GST_LOG_CONTEXT_FLAG_THROTTLE: GstLogContextFlags = 1;
741
742pub type GstLogContextHashFlags = c_uint;
743pub const GST_LOG_CONTEXT_DEFAULT: GstLogContextHashFlags = 0;
744pub const GST_LOG_CONTEXT_IGNORE_OBJECT: GstLogContextHashFlags = 1;
745pub const GST_LOG_CONTEXT_IGNORE_FORMAT: GstLogContextHashFlags = 2;
746pub const GST_LOG_CONTEXT_IGNORE_FILE: GstLogContextHashFlags = 4;
747pub const GST_LOG_CONTEXT_USE_LINE_NUMBER: GstLogContextHashFlags = 8;
748pub const GST_LOG_CONTEXT_USE_STRING_ARGS: GstLogContextHashFlags = 16;
749
750pub type GstMapFlags = c_uint;
751pub const GST_MAP_READ: GstMapFlags = 1;
752pub const GST_MAP_WRITE: GstMapFlags = 2;
753#[cfg(feature = "v1_28")]
754#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
755pub const GST_MAP_REF_MEMORY: GstMapFlags = 256;
756pub const GST_MAP_FLAG_LAST: GstMapFlags = 65536;
757
758pub type GstMemoryFlags = c_uint;
759pub const GST_MEMORY_FLAG_READONLY: GstMemoryFlags = 2;
760pub const GST_MEMORY_FLAG_NO_SHARE: GstMemoryFlags = 16;
761pub const GST_MEMORY_FLAG_ZERO_PREFIXED: GstMemoryFlags = 32;
762pub const GST_MEMORY_FLAG_ZERO_PADDED: GstMemoryFlags = 64;
763pub const GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS: GstMemoryFlags = 128;
764pub const GST_MEMORY_FLAG_NOT_MAPPABLE: GstMemoryFlags = 256;
765pub const GST_MEMORY_FLAG_LAST: GstMemoryFlags = 1048576;
766
767pub type GstMessageType = c_uint;
768pub const GST_MESSAGE_UNKNOWN: GstMessageType = 0;
769pub const GST_MESSAGE_EOS: GstMessageType = 1;
770pub const GST_MESSAGE_ERROR: GstMessageType = 2;
771pub const GST_MESSAGE_WARNING: GstMessageType = 4;
772pub const GST_MESSAGE_INFO: GstMessageType = 8;
773pub const GST_MESSAGE_TAG: GstMessageType = 16;
774pub const GST_MESSAGE_BUFFERING: GstMessageType = 32;
775pub const GST_MESSAGE_STATE_CHANGED: GstMessageType = 64;
776pub const GST_MESSAGE_STATE_DIRTY: GstMessageType = 128;
777pub const GST_MESSAGE_STEP_DONE: GstMessageType = 256;
778pub const GST_MESSAGE_CLOCK_PROVIDE: GstMessageType = 512;
779pub const GST_MESSAGE_CLOCK_LOST: GstMessageType = 1024;
780pub const GST_MESSAGE_NEW_CLOCK: GstMessageType = 2048;
781pub const GST_MESSAGE_STRUCTURE_CHANGE: GstMessageType = 4096;
782pub const GST_MESSAGE_STREAM_STATUS: GstMessageType = 8192;
783pub const GST_MESSAGE_APPLICATION: GstMessageType = 16384;
784pub const GST_MESSAGE_ELEMENT: GstMessageType = 32768;
785pub const GST_MESSAGE_SEGMENT_START: GstMessageType = 65536;
786pub const GST_MESSAGE_SEGMENT_DONE: GstMessageType = 131072;
787pub const GST_MESSAGE_DURATION_CHANGED: GstMessageType = 262144;
788pub const GST_MESSAGE_LATENCY: GstMessageType = 524288;
789pub const GST_MESSAGE_ASYNC_START: GstMessageType = 1048576;
790pub const GST_MESSAGE_ASYNC_DONE: GstMessageType = 2097152;
791pub const GST_MESSAGE_REQUEST_STATE: GstMessageType = 4194304;
792pub const GST_MESSAGE_STEP_START: GstMessageType = 8388608;
793pub const GST_MESSAGE_QOS: GstMessageType = 16777216;
794pub const GST_MESSAGE_PROGRESS: GstMessageType = 33554432;
795pub const GST_MESSAGE_TOC: GstMessageType = 67108864;
796pub const GST_MESSAGE_RESET_TIME: GstMessageType = 134217728;
797pub const GST_MESSAGE_STREAM_START: GstMessageType = 268435456;
798pub const GST_MESSAGE_NEED_CONTEXT: GstMessageType = 536870912;
799pub const GST_MESSAGE_HAVE_CONTEXT: GstMessageType = 1073741824;
800pub const GST_MESSAGE_EXTENDED: GstMessageType = 2147483648;
801pub const GST_MESSAGE_DEVICE_ADDED: GstMessageType = 2147483649;
802pub const GST_MESSAGE_DEVICE_REMOVED: GstMessageType = 2147483650;
803pub const GST_MESSAGE_PROPERTY_NOTIFY: GstMessageType = 2147483651;
804pub const GST_MESSAGE_STREAM_COLLECTION: GstMessageType = 2147483652;
805pub const GST_MESSAGE_STREAMS_SELECTED: GstMessageType = 2147483653;
806pub const GST_MESSAGE_REDIRECT: GstMessageType = 2147483654;
807pub const GST_MESSAGE_DEVICE_CHANGED: GstMessageType = 2147483655;
808pub const GST_MESSAGE_INSTANT_RATE_REQUEST: GstMessageType = 2147483656;
809#[cfg(feature = "v1_28")]
810#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
811pub const GST_MESSAGE_DEVICE_MONITOR_STARTED: GstMessageType = 2147483657;
812pub const GST_MESSAGE_ANY: GstMessageType = 4294967295;
813
814pub type GstMetaFlags = c_uint;
815pub const GST_META_FLAG_NONE: GstMetaFlags = 0;
816pub const GST_META_FLAG_READONLY: GstMetaFlags = 1;
817pub const GST_META_FLAG_POOLED: GstMetaFlags = 2;
818pub const GST_META_FLAG_LOCKED: GstMetaFlags = 4;
819pub const GST_META_FLAG_LAST: GstMetaFlags = 65536;
820
821pub type GstMiniObjectFlags = c_uint;
822pub const GST_MINI_OBJECT_FLAG_LOCKABLE: GstMiniObjectFlags = 1;
823pub const GST_MINI_OBJECT_FLAG_LOCK_READONLY: GstMiniObjectFlags = 2;
824pub const GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED: GstMiniObjectFlags = 4;
825pub const GST_MINI_OBJECT_FLAG_LAST: GstMiniObjectFlags = 16;
826
827pub type GstObjectFlags = c_uint;
828pub const GST_OBJECT_FLAG_MAY_BE_LEAKED: GstObjectFlags = 1;
829#[cfg(feature = "v1_24")]
830#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
831pub const GST_OBJECT_FLAG_CONSTRUCTED: GstObjectFlags = 2;
832pub const GST_OBJECT_FLAG_LAST: GstObjectFlags = 16;
833
834pub type GstPadFlags = c_uint;
835pub const GST_PAD_FLAG_BLOCKED: GstPadFlags = 16;
836pub const GST_PAD_FLAG_FLUSHING: GstPadFlags = 32;
837pub const GST_PAD_FLAG_EOS: GstPadFlags = 64;
838pub const GST_PAD_FLAG_BLOCKING: GstPadFlags = 128;
839pub const GST_PAD_FLAG_NEED_PARENT: GstPadFlags = 256;
840pub const GST_PAD_FLAG_NEED_RECONFIGURE: GstPadFlags = 512;
841pub const GST_PAD_FLAG_PENDING_EVENTS: GstPadFlags = 1024;
842pub const GST_PAD_FLAG_FIXED_CAPS: GstPadFlags = 2048;
843pub const GST_PAD_FLAG_PROXY_CAPS: GstPadFlags = 4096;
844pub const GST_PAD_FLAG_PROXY_ALLOCATION: GstPadFlags = 8192;
845pub const GST_PAD_FLAG_PROXY_SCHEDULING: GstPadFlags = 16384;
846pub const GST_PAD_FLAG_ACCEPT_INTERSECT: GstPadFlags = 32768;
847pub const GST_PAD_FLAG_ACCEPT_TEMPLATE: GstPadFlags = 65536;
848pub const GST_PAD_FLAG_LAST: GstPadFlags = 1048576;
849
850pub type GstPadLinkCheck = c_uint;
851pub const GST_PAD_LINK_CHECK_NOTHING: GstPadLinkCheck = 0;
852pub const GST_PAD_LINK_CHECK_HIERARCHY: GstPadLinkCheck = 1;
853pub const GST_PAD_LINK_CHECK_TEMPLATE_CAPS: GstPadLinkCheck = 2;
854pub const GST_PAD_LINK_CHECK_CAPS: GstPadLinkCheck = 4;
855pub const GST_PAD_LINK_CHECK_NO_RECONFIGURE: GstPadLinkCheck = 8;
856pub const GST_PAD_LINK_CHECK_DEFAULT: GstPadLinkCheck = 5;
857
858pub type GstPadProbeType = c_uint;
859pub const GST_PAD_PROBE_TYPE_INVALID: GstPadProbeType = 0;
860pub const GST_PAD_PROBE_TYPE_IDLE: GstPadProbeType = 1;
861pub const GST_PAD_PROBE_TYPE_BLOCK: GstPadProbeType = 2;
862pub const GST_PAD_PROBE_TYPE_BUFFER: GstPadProbeType = 16;
863pub const GST_PAD_PROBE_TYPE_BUFFER_LIST: GstPadProbeType = 32;
864pub const GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM: GstPadProbeType = 64;
865pub const GST_PAD_PROBE_TYPE_EVENT_UPSTREAM: GstPadProbeType = 128;
866pub const GST_PAD_PROBE_TYPE_EVENT_FLUSH: GstPadProbeType = 256;
867pub const GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM: GstPadProbeType = 512;
868pub const GST_PAD_PROBE_TYPE_QUERY_UPSTREAM: GstPadProbeType = 1024;
869pub const GST_PAD_PROBE_TYPE_PUSH: GstPadProbeType = 4096;
870pub const GST_PAD_PROBE_TYPE_PULL: GstPadProbeType = 8192;
871pub const GST_PAD_PROBE_TYPE_BLOCKING: GstPadProbeType = 3;
872pub const GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM: GstPadProbeType = 112;
873pub const GST_PAD_PROBE_TYPE_DATA_UPSTREAM: GstPadProbeType = 128;
874pub const GST_PAD_PROBE_TYPE_DATA_BOTH: GstPadProbeType = 240;
875pub const GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM: GstPadProbeType = 114;
876pub const GST_PAD_PROBE_TYPE_BLOCK_UPSTREAM: GstPadProbeType = 130;
877pub const GST_PAD_PROBE_TYPE_EVENT_BOTH: GstPadProbeType = 192;
878pub const GST_PAD_PROBE_TYPE_QUERY_BOTH: GstPadProbeType = 1536;
879pub const GST_PAD_PROBE_TYPE_ALL_BOTH: GstPadProbeType = 1776;
880pub const GST_PAD_PROBE_TYPE_SCHEDULING: GstPadProbeType = 12288;
881
882pub type GstPadTemplateFlags = c_uint;
883pub const GST_PAD_TEMPLATE_FLAG_LAST: GstPadTemplateFlags = 256;
884
885pub type GstParseFlags = c_uint;
886pub const GST_PARSE_FLAG_NONE: GstParseFlags = 0;
887pub const GST_PARSE_FLAG_FATAL_ERRORS: GstParseFlags = 1;
888pub const GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS: GstParseFlags = 2;
889pub const GST_PARSE_FLAG_PLACE_IN_BIN: GstParseFlags = 4;
890
891pub type GstPipelineFlags = c_uint;
892pub const GST_PIPELINE_FLAG_FIXED_CLOCK: GstPipelineFlags = 524288;
893pub const GST_PIPELINE_FLAG_LAST: GstPipelineFlags = 8388608;
894
895pub type GstPluginAPIFlags = c_uint;
896pub const GST_PLUGIN_API_FLAG_IGNORE_ENUM_MEMBERS: GstPluginAPIFlags = 1;
897
898pub type GstPluginDependencyFlags = c_uint;
899pub const GST_PLUGIN_DEPENDENCY_FLAG_NONE: GstPluginDependencyFlags = 0;
900pub const GST_PLUGIN_DEPENDENCY_FLAG_RECURSE: GstPluginDependencyFlags = 1;
901pub const GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY: GstPluginDependencyFlags = 2;
902pub const GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX: GstPluginDependencyFlags = 4;
903pub const GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_PREFIX: GstPluginDependencyFlags = 8;
904pub const GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_RELATIVE_TO_EXE: GstPluginDependencyFlags = 16;
905
906pub type GstPluginFlags = c_uint;
907pub const GST_PLUGIN_FLAG_CACHED: GstPluginFlags = 16;
908pub const GST_PLUGIN_FLAG_BLACKLISTED: GstPluginFlags = 32;
909
910pub type GstQueryTypeFlags = c_uint;
911pub const GST_QUERY_TYPE_UPSTREAM: GstQueryTypeFlags = 1;
912pub const GST_QUERY_TYPE_DOWNSTREAM: GstQueryTypeFlags = 2;
913pub const GST_QUERY_TYPE_SERIALIZED: GstQueryTypeFlags = 4;
914
915pub type GstSchedulingFlags = c_uint;
916pub const GST_SCHEDULING_FLAG_SEEKABLE: GstSchedulingFlags = 1;
917pub const GST_SCHEDULING_FLAG_SEQUENTIAL: GstSchedulingFlags = 2;
918pub const GST_SCHEDULING_FLAG_BANDWIDTH_LIMITED: GstSchedulingFlags = 4;
919
920pub type GstSeekFlags = c_uint;
921pub const GST_SEEK_FLAG_NONE: GstSeekFlags = 0;
922pub const GST_SEEK_FLAG_FLUSH: GstSeekFlags = 1;
923pub const GST_SEEK_FLAG_ACCURATE: GstSeekFlags = 2;
924pub const GST_SEEK_FLAG_KEY_UNIT: GstSeekFlags = 4;
925pub const GST_SEEK_FLAG_SEGMENT: GstSeekFlags = 8;
926pub const GST_SEEK_FLAG_TRICKMODE: GstSeekFlags = 16;
927pub const GST_SEEK_FLAG_SKIP: GstSeekFlags = 16;
928pub const GST_SEEK_FLAG_SNAP_BEFORE: GstSeekFlags = 32;
929pub const GST_SEEK_FLAG_SNAP_AFTER: GstSeekFlags = 64;
930pub const GST_SEEK_FLAG_SNAP_NEAREST: GstSeekFlags = 96;
931pub const GST_SEEK_FLAG_TRICKMODE_KEY_UNITS: GstSeekFlags = 128;
932pub const GST_SEEK_FLAG_TRICKMODE_NO_AUDIO: GstSeekFlags = 256;
933pub const GST_SEEK_FLAG_TRICKMODE_FORWARD_PREDICTED: GstSeekFlags = 512;
934pub const GST_SEEK_FLAG_INSTANT_RATE_CHANGE: GstSeekFlags = 1024;
935
936pub type GstSegmentFlags = c_uint;
937pub const GST_SEGMENT_FLAG_NONE: GstSegmentFlags = 0;
938pub const GST_SEGMENT_FLAG_RESET: GstSegmentFlags = 1;
939pub const GST_SEGMENT_FLAG_TRICKMODE: GstSegmentFlags = 16;
940pub const GST_SEGMENT_FLAG_SKIP: GstSegmentFlags = 16;
941pub const GST_SEGMENT_FLAG_SEGMENT: GstSegmentFlags = 8;
942pub const GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS: GstSegmentFlags = 128;
943pub const GST_SEGMENT_FLAG_TRICKMODE_FORWARD_PREDICTED: GstSegmentFlags = 512;
944pub const GST_SEGMENT_FLAG_TRICKMODE_NO_AUDIO: GstSegmentFlags = 256;
945
946pub type GstSerializeFlags = c_uint;
947pub const GST_SERIALIZE_FLAG_NONE: GstSerializeFlags = 0;
948pub const GST_SERIALIZE_FLAG_BACKWARD_COMPAT: GstSerializeFlags = 1;
949#[cfg(feature = "v1_24")]
950#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
951pub const GST_SERIALIZE_FLAG_STRICT: GstSerializeFlags = 2;
952
953pub type GstStackTraceFlags = c_uint;
954pub const GST_STACK_TRACE_SHOW_NONE: GstStackTraceFlags = 0;
955pub const GST_STACK_TRACE_SHOW_FULL: GstStackTraceFlags = 1;
956
957pub type GstStreamFlags = c_uint;
958pub const GST_STREAM_FLAG_NONE: GstStreamFlags = 0;
959pub const GST_STREAM_FLAG_SPARSE: GstStreamFlags = 1;
960pub const GST_STREAM_FLAG_SELECT: GstStreamFlags = 2;
961pub const GST_STREAM_FLAG_UNSELECT: GstStreamFlags = 4;
962
963pub type GstStreamType = c_uint;
964pub const GST_STREAM_TYPE_UNKNOWN: GstStreamType = 1;
965pub const GST_STREAM_TYPE_AUDIO: GstStreamType = 2;
966pub const GST_STREAM_TYPE_VIDEO: GstStreamType = 4;
967pub const GST_STREAM_TYPE_CONTAINER: GstStreamType = 8;
968pub const GST_STREAM_TYPE_TEXT: GstStreamType = 16;
969#[cfg(feature = "v1_28")]
970#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
971pub const GST_STREAM_TYPE_METADATA: GstStreamType = 32;
972
973pub type GstTracerValueFlags = c_uint;
974pub const GST_TRACER_VALUE_FLAGS_NONE: GstTracerValueFlags = 0;
975pub const GST_TRACER_VALUE_FLAGS_OPTIONAL: GstTracerValueFlags = 1;
976pub const GST_TRACER_VALUE_FLAGS_AGGREGATED: GstTracerValueFlags = 2;
977
978// Unions
979#[derive(Copy, Clone)]
980#[repr(C)]
981pub union GstControlBinding_ABI {
982    pub abi: GstControlBinding_ABI_abi,
983    pub _gst_reserved: [gpointer; 4],
984}
985
986impl ::std::fmt::Debug for GstControlBinding_ABI {
987    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
988        f.debug_struct(&format!("GstControlBinding_ABI @ {self:p}"))
989            .field("abi", unsafe { &self.abi })
990            .finish()
991    }
992}
993
994#[derive(Copy, Clone)]
995#[repr(C)]
996pub union GstPadProbeInfo_ABI {
997    pub _gst_reserved: [gpointer; 4],
998    pub abi: GstPadProbeInfo_ABI_abi,
999}
1000
1001impl ::std::fmt::Debug for GstPadProbeInfo_ABI {
1002    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1003        f.debug_struct(&format!("GstPadProbeInfo_ABI @ {self:p}"))
1004            .field("_gst_reserved", unsafe { &self._gst_reserved })
1005            .field("abi", unsafe { &self.abi })
1006            .finish()
1007    }
1008}
1009
1010#[derive(Copy, Clone)]
1011#[repr(C)]
1012pub union GstPadTemplate_ABI {
1013    pub _gst_reserved: [gpointer; 4],
1014    pub abi: GstPadTemplate_ABI_abi,
1015}
1016
1017impl ::std::fmt::Debug for GstPadTemplate_ABI {
1018    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1019        f.debug_struct(&format!("GstPadTemplate_ABI @ {self:p}"))
1020            .field("_gst_reserved", unsafe { &self._gst_reserved })
1021            .field("abi", unsafe { &self.abi })
1022            .finish()
1023    }
1024}
1025
1026#[derive(Copy, Clone)]
1027#[repr(C)]
1028pub union GstPad_ABI {
1029    pub _gst_reserved: [gpointer; 4],
1030    pub abi: GstPad_ABI_abi,
1031}
1032
1033impl ::std::fmt::Debug for GstPad_ABI {
1034    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1035        f.debug_struct(&format!("GstPad_ABI @ {self:p}"))
1036            .field("_gst_reserved", unsafe { &self._gst_reserved })
1037            .field("abi", unsafe { &self.abi })
1038            .finish()
1039    }
1040}
1041
1042// Callbacks
1043pub type GstAllocationMetaParamsAggregator = Option<
1044    unsafe extern "C" fn(
1045        *mut *mut GstStructure,
1046        *const GstStructure,
1047        *const GstStructure,
1048    ) -> gboolean,
1049>;
1050pub type GstBufferForeachMetaFunc =
1051    Option<unsafe extern "C" fn(*mut GstBuffer, *mut *mut GstMeta, gpointer) -> gboolean>;
1052pub type GstBufferListFunc =
1053    Option<unsafe extern "C" fn(*mut *mut GstBuffer, c_uint, gpointer) -> gboolean>;
1054pub type GstBusFunc =
1055    Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage, gpointer) -> gboolean>;
1056pub type GstBusSyncHandler =
1057    Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage, gpointer) -> GstBusSyncReply>;
1058pub type GstCallAsyncFunc = Option<unsafe extern "C" fn(gpointer)>;
1059pub type GstCapsFilterMapFunc =
1060    Option<unsafe extern "C" fn(*mut GstCapsFeatures, *mut GstStructure, gpointer) -> gboolean>;
1061pub type GstCapsForeachFunc =
1062    Option<unsafe extern "C" fn(*mut GstCapsFeatures, *mut GstStructure, gpointer) -> gboolean>;
1063pub type GstCapsMapFunc =
1064    Option<unsafe extern "C" fn(*mut GstCapsFeatures, *mut GstStructure, gpointer) -> gboolean>;
1065pub type GstClockCallback =
1066    Option<unsafe extern "C" fn(*mut GstClock, GstClockTime, GstClockID, gpointer) -> gboolean>;
1067pub type GstControlBindingConvert =
1068    Option<unsafe extern "C" fn(*mut GstControlBinding, c_double, *mut gobject::GValue)>;
1069pub type GstControlSourceGetValue =
1070    Option<unsafe extern "C" fn(*mut GstControlSource, GstClockTime, *mut c_double) -> gboolean>;
1071pub type GstControlSourceGetValueArray = Option<
1072    unsafe extern "C" fn(
1073        *mut GstControlSource,
1074        GstClockTime,
1075        GstClockTime,
1076        c_uint,
1077        *mut c_double,
1078    ) -> gboolean,
1079>;
1080pub type GstCustomMetaTransformFunction = Option<
1081    unsafe extern "C" fn(
1082        *mut GstBuffer,
1083        *mut GstCustomMeta,
1084        *mut GstBuffer,
1085        glib::GQuark,
1086        gpointer,
1087        gpointer,
1088    ) -> gboolean,
1089>;
1090pub type GstDebugFuncPtr = Option<unsafe extern "C" fn()>;
1091pub type GstElementCallAsyncFunc = Option<unsafe extern "C" fn(*mut GstElement, gpointer)>;
1092pub type GstElementForeachPadFunc =
1093    Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad, gpointer) -> gboolean>;
1094pub type GstIteratorCopyFunction =
1095    Option<unsafe extern "C" fn(*const GstIterator, *mut GstIterator)>;
1096pub type GstIteratorFoldFunction = Option<
1097    unsafe extern "C" fn(*const gobject::GValue, *mut gobject::GValue, gpointer) -> gboolean,
1098>;
1099pub type GstIteratorForeachFunction =
1100    Option<unsafe extern "C" fn(*const gobject::GValue, gpointer)>;
1101pub type GstIteratorFreeFunction = Option<unsafe extern "C" fn(*mut GstIterator)>;
1102pub type GstIteratorItemFunction =
1103    Option<unsafe extern "C" fn(*mut GstIterator, *const gobject::GValue) -> GstIteratorItem>;
1104pub type GstIteratorNextFunction =
1105    Option<unsafe extern "C" fn(*mut GstIterator, *mut gobject::GValue) -> GstIteratorResult>;
1106pub type GstIteratorResyncFunction = Option<unsafe extern "C" fn(*mut GstIterator)>;
1107pub type GstLogFunction = Option<
1108    unsafe extern "C" fn(
1109        *mut GstDebugCategory,
1110        GstDebugLevel,
1111        *const c_char,
1112        *const c_char,
1113        c_int,
1114        *mut gobject::GObject,
1115        *mut GstDebugMessage,
1116        gpointer,
1117    ),
1118>;
1119pub type GstMemoryCopyFunction =
1120    Option<unsafe extern "C" fn(*mut GstMemory, ssize_t, ssize_t) -> *mut GstMemory>;
1121pub type GstMemoryIsSpanFunction =
1122    Option<unsafe extern "C" fn(*mut GstMemory, *mut GstMemory, *mut size_t) -> gboolean>;
1123pub type GstMemoryMapFullFunction =
1124    Option<unsafe extern "C" fn(*mut GstMemory, *mut GstMapInfo, size_t) -> gpointer>;
1125pub type GstMemoryMapFunction =
1126    Option<unsafe extern "C" fn(*mut GstMemory, size_t, GstMapFlags) -> gpointer>;
1127pub type GstMemoryShareFunction =
1128    Option<unsafe extern "C" fn(*mut GstMemory, ssize_t, ssize_t) -> *mut GstMemory>;
1129pub type GstMemoryUnmapFullFunction = Option<unsafe extern "C" fn(*mut GstMemory, *mut GstMapInfo)>;
1130pub type GstMemoryUnmapFunction = Option<unsafe extern "C" fn(*mut GstMemory)>;
1131pub type GstMetaClearFunction = Option<unsafe extern "C" fn(*mut GstBuffer, *mut GstMeta)>;
1132pub type GstMetaDeserializeFunction = Option<
1133    unsafe extern "C" fn(*const GstMetaInfo, *mut GstBuffer, *const u8, size_t, u8) -> *mut GstMeta,
1134>;
1135pub type GstMetaFreeFunction = Option<unsafe extern "C" fn(*mut GstMeta, *mut GstBuffer)>;
1136pub type GstMetaInitFunction =
1137    Option<unsafe extern "C" fn(*mut GstMeta, gpointer, *mut GstBuffer) -> gboolean>;
1138pub type GstMetaSerializeFunction =
1139    Option<unsafe extern "C" fn(*const GstMeta, *mut GstByteArrayInterface, *mut u8) -> gboolean>;
1140pub type GstMetaTransformFunction = Option<
1141    unsafe extern "C" fn(
1142        *mut GstBuffer,
1143        *mut GstMeta,
1144        *mut GstBuffer,
1145        glib::GQuark,
1146        gpointer,
1147    ) -> gboolean,
1148>;
1149pub type GstMiniObjectCopyFunction =
1150    Option<unsafe extern "C" fn(*const GstMiniObject) -> *mut GstMiniObject>;
1151pub type GstMiniObjectDisposeFunction =
1152    Option<unsafe extern "C" fn(*mut GstMiniObject) -> gboolean>;
1153pub type GstMiniObjectFreeFunction = Option<unsafe extern "C" fn(*mut GstMiniObject)>;
1154pub type GstMiniObjectNotify = Option<unsafe extern "C" fn(gpointer, *mut GstMiniObject)>;
1155pub type GstObjectCallAsyncFunc = Option<unsafe extern "C" fn(*mut GstObject, gpointer)>;
1156pub type GstPadActivateFunction =
1157    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject) -> gboolean>;
1158pub type GstPadActivateModeFunction =
1159    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, GstPadMode, gboolean) -> gboolean>;
1160pub type GstPadChainFunction =
1161    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstBuffer) -> GstFlowReturn>;
1162pub type GstPadChainListFunction =
1163    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstBufferList) -> GstFlowReturn>;
1164pub type GstPadEventFullFunction =
1165    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstEvent) -> GstFlowReturn>;
1166pub type GstPadEventFunction =
1167    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstEvent) -> gboolean>;
1168pub type GstPadForwardFunction = Option<unsafe extern "C" fn(*mut GstPad, gpointer) -> gboolean>;
1169pub type GstPadGetRangeFunction = Option<
1170    unsafe extern "C" fn(
1171        *mut GstPad,
1172        *mut GstObject,
1173        u64,
1174        c_uint,
1175        *mut *mut GstBuffer,
1176    ) -> GstFlowReturn,
1177>;
1178pub type GstPadIterIntLinkFunction =
1179    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject) -> *mut GstIterator>;
1180pub type GstPadLinkFunction =
1181    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstPad) -> GstPadLinkReturn>;
1182pub type GstPadProbeCallback =
1183    Option<unsafe extern "C" fn(*mut GstPad, *mut GstPadProbeInfo, gpointer) -> GstPadProbeReturn>;
1184pub type GstPadQueryFunction =
1185    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstQuery) -> gboolean>;
1186pub type GstPadStickyEventsForeachFunction =
1187    Option<unsafe extern "C" fn(*mut GstPad, *mut *mut GstEvent, gpointer) -> gboolean>;
1188pub type GstPadUnlinkFunction = Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject)>;
1189pub type GstPluginFeatureFilter =
1190    Option<unsafe extern "C" fn(*mut GstPluginFeature, gpointer) -> gboolean>;
1191pub type GstPluginFilter = Option<unsafe extern "C" fn(*mut GstPlugin, gpointer) -> gboolean>;
1192pub type GstPluginInitFullFunc = Option<unsafe extern "C" fn(*mut GstPlugin, gpointer) -> gboolean>;
1193pub type GstPluginInitFunc = Option<unsafe extern "C" fn(*mut GstPlugin) -> gboolean>;
1194pub type GstPromiseChangeFunc = Option<unsafe extern "C" fn(*mut GstPromise, gpointer)>;
1195pub type GstStructureFilterMapFunc =
1196    Option<unsafe extern "C" fn(glib::GQuark, *mut gobject::GValue, gpointer) -> gboolean>;
1197pub type GstStructureFilterMapIdStrFunc =
1198    Option<unsafe extern "C" fn(*const GstIdStr, *mut gobject::GValue, gpointer) -> gboolean>;
1199pub type GstStructureForeachFunc =
1200    Option<unsafe extern "C" fn(glib::GQuark, *const gobject::GValue, gpointer) -> gboolean>;
1201pub type GstStructureForeachIdStrFunc =
1202    Option<unsafe extern "C" fn(*const GstIdStr, *const gobject::GValue, gpointer) -> gboolean>;
1203pub type GstStructureMapFunc =
1204    Option<unsafe extern "C" fn(glib::GQuark, *mut gobject::GValue, gpointer) -> gboolean>;
1205pub type GstStructureMapIdStrFunc =
1206    Option<unsafe extern "C" fn(*const GstIdStr, *mut gobject::GValue, gpointer) -> gboolean>;
1207pub type GstTagForeachFunc =
1208    Option<unsafe extern "C" fn(*const GstTagList, *const c_char, gpointer)>;
1209pub type GstTagMergeFunc =
1210    Option<unsafe extern "C" fn(*mut gobject::GValue, *const gobject::GValue)>;
1211pub type GstTaskFunction = Option<unsafe extern "C" fn(gpointer)>;
1212pub type GstTaskPoolFunction = Option<unsafe extern "C" fn(*mut c_void)>;
1213pub type GstTaskThreadFunc =
1214    Option<unsafe extern "C" fn(*mut GstTask, *mut glib::GThread, gpointer)>;
1215pub type GstTypeFindFunction = Option<unsafe extern "C" fn(*mut GstTypeFind, gpointer)>;
1216pub type GstValueCompareFunc =
1217    Option<unsafe extern "C" fn(*const gobject::GValue, *const gobject::GValue) -> c_int>;
1218pub type GstValueDeserializeFunc =
1219    Option<unsafe extern "C" fn(*mut gobject::GValue, *const c_char) -> gboolean>;
1220pub type GstValueDeserializeWithPSpecFunc = Option<
1221    unsafe extern "C" fn(*mut gobject::GValue, *const c_char, *mut gobject::GParamSpec) -> gboolean,
1222>;
1223pub type GstValueHashFunc =
1224    Option<unsafe extern "C" fn(*const gobject::GValue, *mut c_uint) -> gboolean>;
1225pub type GstValueSerializeFunc =
1226    Option<unsafe extern "C" fn(*const gobject::GValue) -> *mut c_char>;
1227
1228// Records
1229#[derive(Copy, Clone)]
1230#[repr(C)]
1231pub struct GstAllocationParams {
1232    pub flags: GstMemoryFlags,
1233    pub align: size_t,
1234    pub prefix: size_t,
1235    pub padding: size_t,
1236    pub _gst_reserved: [gpointer; 4],
1237}
1238
1239impl ::std::fmt::Debug for GstAllocationParams {
1240    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1241        f.debug_struct(&format!("GstAllocationParams @ {self:p}"))
1242            .field("flags", &self.flags)
1243            .field("align", &self.align)
1244            .field("prefix", &self.prefix)
1245            .field("padding", &self.padding)
1246            .finish()
1247    }
1248}
1249
1250#[derive(Copy, Clone)]
1251#[repr(C)]
1252pub struct GstAllocatorClass {
1253    pub object_class: GstObjectClass,
1254    pub alloc: Option<
1255        unsafe extern "C" fn(*mut GstAllocator, size_t, *mut GstAllocationParams) -> *mut GstMemory,
1256    >,
1257    pub free: Option<unsafe extern "C" fn(*mut GstAllocator, *mut GstMemory)>,
1258    pub _gst_reserved: [gpointer; 4],
1259}
1260
1261impl ::std::fmt::Debug for GstAllocatorClass {
1262    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1263        f.debug_struct(&format!("GstAllocatorClass @ {self:p}"))
1264            .field("object_class", &self.object_class)
1265            .field("alloc", &self.alloc)
1266            .field("free", &self.free)
1267            .finish()
1268    }
1269}
1270
1271#[repr(C)]
1272#[allow(dead_code)]
1273pub struct _GstAllocatorPrivate {
1274    _data: [u8; 0],
1275    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1276}
1277
1278pub type GstAllocatorPrivate = _GstAllocatorPrivate;
1279
1280#[repr(C)]
1281#[allow(dead_code)]
1282pub struct GstAtomicQueue {
1283    _data: [u8; 0],
1284    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1285}
1286
1287impl ::std::fmt::Debug for GstAtomicQueue {
1288    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1289        f.debug_struct(&format!("GstAtomicQueue @ {self:p}"))
1290            .finish()
1291    }
1292}
1293
1294#[derive(Copy, Clone)]
1295#[repr(C)]
1296pub struct GstBinClass {
1297    pub parent_class: GstElementClass,
1298    pub pool: *mut glib::GThreadPool,
1299    pub element_added: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement)>,
1300    pub element_removed: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement)>,
1301    pub add_element: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement) -> gboolean>,
1302    pub remove_element: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement) -> gboolean>,
1303    pub handle_message: Option<unsafe extern "C" fn(*mut GstBin, *mut GstMessage)>,
1304    pub do_latency: Option<unsafe extern "C" fn(*mut GstBin) -> gboolean>,
1305    pub deep_element_added: Option<unsafe extern "C" fn(*mut GstBin, *mut GstBin, *mut GstElement)>,
1306    pub deep_element_removed:
1307        Option<unsafe extern "C" fn(*mut GstBin, *mut GstBin, *mut GstElement)>,
1308    pub _gst_reserved: [gpointer; 2],
1309}
1310
1311impl ::std::fmt::Debug for GstBinClass {
1312    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1313        f.debug_struct(&format!("GstBinClass @ {self:p}"))
1314            .field("parent_class", &self.parent_class)
1315            .field("element_added", &self.element_added)
1316            .field("element_removed", &self.element_removed)
1317            .field("add_element", &self.add_element)
1318            .field("remove_element", &self.remove_element)
1319            .field("handle_message", &self.handle_message)
1320            .field("do_latency", &self.do_latency)
1321            .field("deep_element_added", &self.deep_element_added)
1322            .field("deep_element_removed", &self.deep_element_removed)
1323            .finish()
1324    }
1325}
1326
1327#[repr(C)]
1328#[allow(dead_code)]
1329pub struct _GstBinPrivate {
1330    _data: [u8; 0],
1331    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1332}
1333
1334pub type GstBinPrivate = _GstBinPrivate;
1335
1336#[derive(Copy, Clone)]
1337#[repr(C)]
1338pub struct GstBuffer {
1339    pub mini_object: GstMiniObject,
1340    pub pool: *mut GstBufferPool,
1341    pub pts: GstClockTime,
1342    pub dts: GstClockTime,
1343    pub duration: GstClockTime,
1344    pub offset: u64,
1345    pub offset_end: u64,
1346}
1347
1348impl ::std::fmt::Debug for GstBuffer {
1349    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1350        f.debug_struct(&format!("GstBuffer @ {self:p}"))
1351            .field("mini_object", &self.mini_object)
1352            .field("pool", &self.pool)
1353            .field("pts", &self.pts)
1354            .field("dts", &self.dts)
1355            .field("duration", &self.duration)
1356            .field("offset", &self.offset)
1357            .field("offset_end", &self.offset_end)
1358            .finish()
1359    }
1360}
1361
1362#[repr(C)]
1363#[allow(dead_code)]
1364pub struct GstBufferList {
1365    _data: [u8; 0],
1366    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1367}
1368
1369impl ::std::fmt::Debug for GstBufferList {
1370    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1371        f.debug_struct(&format!("GstBufferList @ {self:p}"))
1372            .finish()
1373    }
1374}
1375
1376#[derive(Copy, Clone)]
1377#[repr(C)]
1378pub struct GstBufferPoolAcquireParams {
1379    pub format: GstFormat,
1380    pub start: i64,
1381    pub stop: i64,
1382    pub flags: GstBufferPoolAcquireFlags,
1383    pub _gst_reserved: [gpointer; 4],
1384}
1385
1386impl ::std::fmt::Debug for GstBufferPoolAcquireParams {
1387    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1388        f.debug_struct(&format!("GstBufferPoolAcquireParams @ {self:p}"))
1389            .field("format", &self.format)
1390            .field("start", &self.start)
1391            .field("stop", &self.stop)
1392            .field("flags", &self.flags)
1393            .finish()
1394    }
1395}
1396
1397#[derive(Copy, Clone)]
1398#[repr(C)]
1399pub struct GstBufferPoolClass {
1400    pub object_class: GstObjectClass,
1401    pub get_options: Option<unsafe extern "C" fn(*mut GstBufferPool) -> *mut *const c_char>,
1402    pub set_config: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstStructure) -> gboolean>,
1403    pub start: Option<unsafe extern "C" fn(*mut GstBufferPool) -> gboolean>,
1404    pub stop: Option<unsafe extern "C" fn(*mut GstBufferPool) -> gboolean>,
1405    pub acquire_buffer: Option<
1406        unsafe extern "C" fn(
1407            *mut GstBufferPool,
1408            *mut *mut GstBuffer,
1409            *mut GstBufferPoolAcquireParams,
1410        ) -> GstFlowReturn,
1411    >,
1412    pub alloc_buffer: Option<
1413        unsafe extern "C" fn(
1414            *mut GstBufferPool,
1415            *mut *mut GstBuffer,
1416            *mut GstBufferPoolAcquireParams,
1417        ) -> GstFlowReturn,
1418    >,
1419    pub reset_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1420    pub release_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1421    pub free_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1422    pub flush_start: Option<unsafe extern "C" fn(*mut GstBufferPool)>,
1423    pub flush_stop: Option<unsafe extern "C" fn(*mut GstBufferPool)>,
1424    pub _gst_reserved: [gpointer; 2],
1425}
1426
1427impl ::std::fmt::Debug for GstBufferPoolClass {
1428    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1429        f.debug_struct(&format!("GstBufferPoolClass @ {self:p}"))
1430            .field("object_class", &self.object_class)
1431            .field("get_options", &self.get_options)
1432            .field("set_config", &self.set_config)
1433            .field("start", &self.start)
1434            .field("stop", &self.stop)
1435            .field("acquire_buffer", &self.acquire_buffer)
1436            .field("alloc_buffer", &self.alloc_buffer)
1437            .field("reset_buffer", &self.reset_buffer)
1438            .field("release_buffer", &self.release_buffer)
1439            .field("free_buffer", &self.free_buffer)
1440            .field("flush_start", &self.flush_start)
1441            .field("flush_stop", &self.flush_stop)
1442            .finish()
1443    }
1444}
1445
1446#[repr(C)]
1447#[allow(dead_code)]
1448pub struct _GstBufferPoolPrivate {
1449    _data: [u8; 0],
1450    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1451}
1452
1453pub type GstBufferPoolPrivate = _GstBufferPoolPrivate;
1454
1455#[derive(Copy, Clone)]
1456#[repr(C)]
1457pub struct GstBusClass {
1458    pub parent_class: GstObjectClass,
1459    pub message: Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage)>,
1460    pub sync_message: Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage)>,
1461    pub _gst_reserved: [gpointer; 4],
1462}
1463
1464impl ::std::fmt::Debug for GstBusClass {
1465    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1466        f.debug_struct(&format!("GstBusClass @ {self:p}"))
1467            .field("parent_class", &self.parent_class)
1468            .field("message", &self.message)
1469            .field("sync_message", &self.sync_message)
1470            .finish()
1471    }
1472}
1473
1474#[repr(C)]
1475#[allow(dead_code)]
1476pub struct _GstBusPrivate {
1477    _data: [u8; 0],
1478    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1479}
1480
1481pub type GstBusPrivate = _GstBusPrivate;
1482
1483#[derive(Copy, Clone)]
1484#[repr(C)]
1485pub struct GstByteArrayInterface {
1486    pub data: *mut u8,
1487    pub len: size_t,
1488    pub resize: Option<unsafe extern "C" fn(*mut GstByteArrayInterface, size_t) -> gboolean>,
1489    pub _gst_reserved: [gpointer; 4],
1490}
1491
1492impl ::std::fmt::Debug for GstByteArrayInterface {
1493    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1494        f.debug_struct(&format!("GstByteArrayInterface @ {self:p}"))
1495            .field("data", &self.data)
1496            .field("len", &self.len)
1497            .field("resize", &self.resize)
1498            .finish()
1499    }
1500}
1501
1502#[derive(Copy, Clone)]
1503#[repr(C)]
1504pub struct GstCaps {
1505    pub mini_object: GstMiniObject,
1506}
1507
1508impl ::std::fmt::Debug for GstCaps {
1509    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1510        f.debug_struct(&format!("GstCaps @ {self:p}"))
1511            .field("mini_object", &self.mini_object)
1512            .finish()
1513    }
1514}
1515
1516#[repr(C)]
1517#[allow(dead_code)]
1518pub struct GstCapsFeatures {
1519    _data: [u8; 0],
1520    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1521}
1522
1523impl ::std::fmt::Debug for GstCapsFeatures {
1524    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1525        f.debug_struct(&format!("GstCapsFeatures @ {self:p}"))
1526            .finish()
1527    }
1528}
1529
1530#[derive(Copy, Clone)]
1531#[repr(C)]
1532pub struct GstChildProxyInterface {
1533    pub parent: gobject::GTypeInterface,
1534    pub get_child_by_name:
1535        Option<unsafe extern "C" fn(*mut GstChildProxy, *const c_char) -> *mut gobject::GObject>,
1536    pub get_child_by_index:
1537        Option<unsafe extern "C" fn(*mut GstChildProxy, c_uint) -> *mut gobject::GObject>,
1538    pub get_children_count: Option<unsafe extern "C" fn(*mut GstChildProxy) -> c_uint>,
1539    pub child_added:
1540        Option<unsafe extern "C" fn(*mut GstChildProxy, *mut gobject::GObject, *const c_char)>,
1541    pub child_removed:
1542        Option<unsafe extern "C" fn(*mut GstChildProxy, *mut gobject::GObject, *const c_char)>,
1543    pub _gst_reserved: [gpointer; 4],
1544}
1545
1546impl ::std::fmt::Debug for GstChildProxyInterface {
1547    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1548        f.debug_struct(&format!("GstChildProxyInterface @ {self:p}"))
1549            .field("parent", &self.parent)
1550            .field("get_child_by_name", &self.get_child_by_name)
1551            .field("get_child_by_index", &self.get_child_by_index)
1552            .field("get_children_count", &self.get_children_count)
1553            .field("child_added", &self.child_added)
1554            .field("child_removed", &self.child_removed)
1555            .finish()
1556    }
1557}
1558
1559#[derive(Copy, Clone)]
1560#[repr(C)]
1561pub struct GstClockClass {
1562    pub parent_class: GstObjectClass,
1563    pub change_resolution:
1564        Option<unsafe extern "C" fn(*mut GstClock, GstClockTime, GstClockTime) -> GstClockTime>,
1565    pub get_resolution: Option<unsafe extern "C" fn(*mut GstClock) -> GstClockTime>,
1566    pub get_internal_time: Option<unsafe extern "C" fn(*mut GstClock) -> GstClockTime>,
1567    pub wait: Option<
1568        unsafe extern "C" fn(
1569            *mut GstClock,
1570            *mut GstClockEntry,
1571            *mut GstClockTimeDiff,
1572        ) -> GstClockReturn,
1573    >,
1574    pub wait_async:
1575        Option<unsafe extern "C" fn(*mut GstClock, *mut GstClockEntry) -> GstClockReturn>,
1576    pub unschedule: Option<unsafe extern "C" fn(*mut GstClock, *mut GstClockEntry)>,
1577    pub _gst_reserved: [gpointer; 4],
1578}
1579
1580impl ::std::fmt::Debug for GstClockClass {
1581    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1582        f.debug_struct(&format!("GstClockClass @ {self:p}"))
1583            .field("parent_class", &self.parent_class)
1584            .field("change_resolution", &self.change_resolution)
1585            .field("get_resolution", &self.get_resolution)
1586            .field("get_internal_time", &self.get_internal_time)
1587            .field("wait", &self.wait)
1588            .field("wait_async", &self.wait_async)
1589            .field("unschedule", &self.unschedule)
1590            .finish()
1591    }
1592}
1593
1594#[derive(Copy, Clone)]
1595#[repr(C)]
1596pub struct GstClockEntry {
1597    pub refcount: c_int,
1598    pub clock: *mut GstClock,
1599    pub type_: GstClockEntryType,
1600    pub time: GstClockTime,
1601    pub interval: GstClockTime,
1602    pub status: GstClockReturn,
1603    pub func: GstClockCallback,
1604    pub user_data: gpointer,
1605    pub destroy_data: glib::GDestroyNotify,
1606    pub unscheduled: gboolean,
1607    pub woken_up: gboolean,
1608    pub _gst_reserved: [gpointer; 4],
1609}
1610
1611impl ::std::fmt::Debug for GstClockEntry {
1612    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1613        f.debug_struct(&format!("GstClockEntry @ {self:p}"))
1614            .field("refcount", &self.refcount)
1615            .finish()
1616    }
1617}
1618
1619#[repr(C)]
1620#[allow(dead_code)]
1621pub struct _GstClockPrivate {
1622    _data: [u8; 0],
1623    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1624}
1625
1626pub type GstClockPrivate = _GstClockPrivate;
1627
1628#[repr(C)]
1629#[allow(dead_code)]
1630pub struct GstContext {
1631    _data: [u8; 0],
1632    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1633}
1634
1635impl ::std::fmt::Debug for GstContext {
1636    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1637        f.debug_struct(&format!("GstContext @ {self:p}")).finish()
1638    }
1639}
1640
1641#[derive(Copy, Clone)]
1642#[repr(C)]
1643pub struct GstControlBindingClass {
1644    pub parent_class: GstObjectClass,
1645    pub sync_values: Option<
1646        unsafe extern "C" fn(
1647            *mut GstControlBinding,
1648            *mut GstObject,
1649            GstClockTime,
1650            GstClockTime,
1651        ) -> gboolean,
1652    >,
1653    pub get_value:
1654        Option<unsafe extern "C" fn(*mut GstControlBinding, GstClockTime) -> *mut gobject::GValue>,
1655    pub get_value_array: Option<
1656        unsafe extern "C" fn(
1657            *mut GstControlBinding,
1658            GstClockTime,
1659            GstClockTime,
1660            c_uint,
1661            gpointer,
1662        ) -> gboolean,
1663    >,
1664    pub get_g_value_array: Option<
1665        unsafe extern "C" fn(
1666            *mut GstControlBinding,
1667            GstClockTime,
1668            GstClockTime,
1669            c_uint,
1670            *mut gobject::GValue,
1671        ) -> gboolean,
1672    >,
1673    pub _gst_reserved: [gpointer; 4],
1674}
1675
1676impl ::std::fmt::Debug for GstControlBindingClass {
1677    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1678        f.debug_struct(&format!("GstControlBindingClass @ {self:p}"))
1679            .field("parent_class", &self.parent_class)
1680            .field("sync_values", &self.sync_values)
1681            .field("get_value", &self.get_value)
1682            .field("get_value_array", &self.get_value_array)
1683            .field("get_g_value_array", &self.get_g_value_array)
1684            .finish()
1685    }
1686}
1687
1688#[repr(C)]
1689#[allow(dead_code)]
1690pub struct _GstControlBindingPrivate {
1691    _data: [u8; 0],
1692    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1693}
1694
1695pub type GstControlBindingPrivate = _GstControlBindingPrivate;
1696
1697#[derive(Copy, Clone)]
1698#[repr(C)]
1699pub struct GstControlBinding_ABI_abi {
1700    pub priv_: *mut GstControlBindingPrivate,
1701}
1702
1703impl ::std::fmt::Debug for GstControlBinding_ABI_abi {
1704    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1705        f.debug_struct(&format!("GstControlBinding_ABI_abi @ {self:p}"))
1706            .finish()
1707    }
1708}
1709
1710#[derive(Copy, Clone)]
1711#[repr(C)]
1712pub struct GstControlSourceClass {
1713    pub parent_class: GstObjectClass,
1714    pub _gst_reserved: [gpointer; 4],
1715}
1716
1717impl ::std::fmt::Debug for GstControlSourceClass {
1718    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1719        f.debug_struct(&format!("GstControlSourceClass @ {self:p}"))
1720            .field("parent_class", &self.parent_class)
1721            .finish()
1722    }
1723}
1724
1725#[derive(Copy, Clone)]
1726#[repr(C)]
1727pub struct GstCustomMeta {
1728    pub meta: GstMeta,
1729    pub structure: *mut GstStructure,
1730}
1731
1732impl ::std::fmt::Debug for GstCustomMeta {
1733    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1734        f.debug_struct(&format!("GstCustomMeta @ {self:p}"))
1735            .field("meta", &self.meta)
1736            .field("structure", &self.structure)
1737            .finish()
1738    }
1739}
1740
1741#[repr(C)]
1742#[allow(dead_code)]
1743pub struct GstDateTime {
1744    _data: [u8; 0],
1745    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1746}
1747
1748impl ::std::fmt::Debug for GstDateTime {
1749    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1750        f.debug_struct(&format!("GstDateTime @ {self:p}")).finish()
1751    }
1752}
1753
1754#[derive(Copy, Clone)]
1755#[repr(C)]
1756pub struct GstDebugCategory {
1757    pub threshold: c_int,
1758    pub color: c_uint,
1759    pub name: *const c_char,
1760    pub description: *const c_char,
1761}
1762
1763impl ::std::fmt::Debug for GstDebugCategory {
1764    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1765        f.debug_struct(&format!("GstDebugCategory @ {self:p}"))
1766            .finish()
1767    }
1768}
1769
1770#[repr(C)]
1771#[allow(dead_code)]
1772pub struct _GstDebugMessage {
1773    _data: [u8; 0],
1774    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1775}
1776
1777pub type GstDebugMessage = _GstDebugMessage;
1778
1779#[derive(Copy, Clone)]
1780#[repr(C)]
1781pub struct GstDeviceClass {
1782    pub parent_class: GstObjectClass,
1783    pub create_element:
1784        Option<unsafe extern "C" fn(*mut GstDevice, *const c_char) -> *mut GstElement>,
1785    pub reconfigure_element:
1786        Option<unsafe extern "C" fn(*mut GstDevice, *mut GstElement) -> gboolean>,
1787    pub _gst_reserved: [gpointer; 4],
1788}
1789
1790impl ::std::fmt::Debug for GstDeviceClass {
1791    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1792        f.debug_struct(&format!("GstDeviceClass @ {self:p}"))
1793            .field("parent_class", &self.parent_class)
1794            .field("create_element", &self.create_element)
1795            .field("reconfigure_element", &self.reconfigure_element)
1796            .finish()
1797    }
1798}
1799
1800#[derive(Copy, Clone)]
1801#[repr(C)]
1802pub struct GstDeviceMonitorClass {
1803    pub parent_class: GstObjectClass,
1804    pub _gst_reserved: [gpointer; 4],
1805}
1806
1807impl ::std::fmt::Debug for GstDeviceMonitorClass {
1808    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1809        f.debug_struct(&format!("GstDeviceMonitorClass @ {self:p}"))
1810            .field("parent_class", &self.parent_class)
1811            .finish()
1812    }
1813}
1814
1815#[repr(C)]
1816#[allow(dead_code)]
1817pub struct _GstDeviceMonitorPrivate {
1818    _data: [u8; 0],
1819    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1820}
1821
1822pub type GstDeviceMonitorPrivate = _GstDeviceMonitorPrivate;
1823
1824#[repr(C)]
1825#[allow(dead_code)]
1826pub struct _GstDevicePrivate {
1827    _data: [u8; 0],
1828    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1829}
1830
1831pub type GstDevicePrivate = _GstDevicePrivate;
1832
1833#[derive(Copy, Clone)]
1834#[repr(C)]
1835pub struct GstDeviceProviderClass {
1836    pub parent_class: GstObjectClass,
1837    pub factory: *mut GstDeviceProviderFactory,
1838    pub probe: Option<unsafe extern "C" fn(*mut GstDeviceProvider) -> *mut glib::GList>,
1839    pub start: Option<unsafe extern "C" fn(*mut GstDeviceProvider) -> gboolean>,
1840    pub stop: Option<unsafe extern "C" fn(*mut GstDeviceProvider)>,
1841    pub metadata: gpointer,
1842    pub _gst_reserved: [gpointer; 4],
1843}
1844
1845impl ::std::fmt::Debug for GstDeviceProviderClass {
1846    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1847        f.debug_struct(&format!("GstDeviceProviderClass @ {self:p}"))
1848            .field("parent_class", &self.parent_class)
1849            .field("factory", &self.factory)
1850            .field("probe", &self.probe)
1851            .field("start", &self.start)
1852            .field("stop", &self.stop)
1853            .finish()
1854    }
1855}
1856
1857#[repr(C)]
1858#[allow(dead_code)]
1859pub struct _GstDeviceProviderFactoryClass {
1860    _data: [u8; 0],
1861    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1862}
1863
1864pub type GstDeviceProviderFactoryClass = _GstDeviceProviderFactoryClass;
1865
1866#[repr(C)]
1867#[allow(dead_code)]
1868pub struct _GstDeviceProviderPrivate {
1869    _data: [u8; 0],
1870    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1871}
1872
1873pub type GstDeviceProviderPrivate = _GstDeviceProviderPrivate;
1874
1875#[repr(C)]
1876#[allow(dead_code)]
1877pub struct _GstDynamicTypeFactoryClass {
1878    _data: [u8; 0],
1879    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1880}
1881
1882pub type GstDynamicTypeFactoryClass = _GstDynamicTypeFactoryClass;
1883
1884#[derive(Copy, Clone)]
1885#[repr(C)]
1886pub struct GstElementClass {
1887    pub parent_class: GstObjectClass,
1888    pub metadata: gpointer,
1889    pub elementfactory: *mut GstElementFactory,
1890    pub padtemplates: *mut glib::GList,
1891    pub numpadtemplates: c_int,
1892    pub pad_templ_cookie: u32,
1893    pub pad_added: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1894    pub pad_removed: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1895    pub no_more_pads: Option<unsafe extern "C" fn(*mut GstElement)>,
1896    pub request_new_pad: Option<
1897        unsafe extern "C" fn(
1898            *mut GstElement,
1899            *mut GstPadTemplate,
1900            *const c_char,
1901            *const GstCaps,
1902        ) -> *mut GstPad,
1903    >,
1904    pub release_pad: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1905    pub get_state: Option<
1906        unsafe extern "C" fn(
1907            *mut GstElement,
1908            *mut GstState,
1909            *mut GstState,
1910            GstClockTime,
1911        ) -> GstStateChangeReturn,
1912    >,
1913    pub set_state: Option<unsafe extern "C" fn(*mut GstElement, GstState) -> GstStateChangeReturn>,
1914    pub change_state:
1915        Option<unsafe extern "C" fn(*mut GstElement, GstStateChange) -> GstStateChangeReturn>,
1916    pub state_changed: Option<unsafe extern "C" fn(*mut GstElement, GstState, GstState, GstState)>,
1917    pub set_bus: Option<unsafe extern "C" fn(*mut GstElement, *mut GstBus)>,
1918    pub provide_clock: Option<unsafe extern "C" fn(*mut GstElement) -> *mut GstClock>,
1919    pub set_clock: Option<unsafe extern "C" fn(*mut GstElement, *mut GstClock) -> gboolean>,
1920    pub send_event: Option<unsafe extern "C" fn(*mut GstElement, *mut GstEvent) -> gboolean>,
1921    pub query: Option<unsafe extern "C" fn(*mut GstElement, *mut GstQuery) -> gboolean>,
1922    pub post_message: Option<unsafe extern "C" fn(*mut GstElement, *mut GstMessage) -> gboolean>,
1923    pub set_context: Option<unsafe extern "C" fn(*mut GstElement, *mut GstContext)>,
1924    pub _gst_reserved: [gpointer; 18],
1925}
1926
1927impl ::std::fmt::Debug for GstElementClass {
1928    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1929        f.debug_struct(&format!("GstElementClass @ {self:p}"))
1930            .field("parent_class", &self.parent_class)
1931            .field("metadata", &self.metadata)
1932            .field("elementfactory", &self.elementfactory)
1933            .field("padtemplates", &self.padtemplates)
1934            .field("numpadtemplates", &self.numpadtemplates)
1935            .field("pad_templ_cookie", &self.pad_templ_cookie)
1936            .field("pad_added", &self.pad_added)
1937            .field("pad_removed", &self.pad_removed)
1938            .field("no_more_pads", &self.no_more_pads)
1939            .field("request_new_pad", &self.request_new_pad)
1940            .field("release_pad", &self.release_pad)
1941            .field("get_state", &self.get_state)
1942            .field("set_state", &self.set_state)
1943            .field("change_state", &self.change_state)
1944            .field("state_changed", &self.state_changed)
1945            .field("set_bus", &self.set_bus)
1946            .field("provide_clock", &self.provide_clock)
1947            .field("set_clock", &self.set_clock)
1948            .field("send_event", &self.send_event)
1949            .field("query", &self.query)
1950            .field("post_message", &self.post_message)
1951            .field("set_context", &self.set_context)
1952            .finish()
1953    }
1954}
1955
1956#[repr(C)]
1957#[allow(dead_code)]
1958pub struct _GstElementFactoryClass {
1959    _data: [u8; 0],
1960    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1961}
1962
1963pub type GstElementFactoryClass = _GstElementFactoryClass;
1964
1965#[derive(Copy, Clone)]
1966#[repr(C)]
1967pub struct GstEvent {
1968    pub mini_object: GstMiniObject,
1969    pub type_: GstEventType,
1970    pub timestamp: u64,
1971    pub seqnum: u32,
1972}
1973
1974impl ::std::fmt::Debug for GstEvent {
1975    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1976        f.debug_struct(&format!("GstEvent @ {self:p}"))
1977            .field("mini_object", &self.mini_object)
1978            .field("type_", &self.type_)
1979            .field("timestamp", &self.timestamp)
1980            .field("seqnum", &self.seqnum)
1981            .finish()
1982    }
1983}
1984
1985#[derive(Copy, Clone)]
1986#[repr(C)]
1987pub struct GstFormatDefinition {
1988    pub value: GstFormat,
1989    pub nick: *const c_char,
1990    pub description: *const c_char,
1991    pub quark: glib::GQuark,
1992}
1993
1994impl ::std::fmt::Debug for GstFormatDefinition {
1995    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1996        f.debug_struct(&format!("GstFormatDefinition @ {self:p}"))
1997            .field("value", &self.value)
1998            .field("nick", &self.nick)
1999            .field("description", &self.description)
2000            .field("quark", &self.quark)
2001            .finish()
2002    }
2003}
2004
2005#[derive(Copy, Clone)]
2006#[repr(C)]
2007pub struct GstGhostPadClass {
2008    pub parent_class: GstProxyPadClass,
2009    pub _gst_reserved: [gpointer; 4],
2010}
2011
2012impl ::std::fmt::Debug for GstGhostPadClass {
2013    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2014        f.debug_struct(&format!("GstGhostPadClass @ {self:p}"))
2015            .field("parent_class", &self.parent_class)
2016            .finish()
2017    }
2018}
2019
2020#[repr(C)]
2021#[allow(dead_code)]
2022pub struct _GstGhostPadPrivate {
2023    _data: [u8; 0],
2024    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2025}
2026
2027pub type GstGhostPadPrivate = _GstGhostPadPrivate;
2028
2029#[derive(Copy, Clone)]
2030#[repr(C)]
2031pub struct GstIterator {
2032    pub copy: GstIteratorCopyFunction,
2033    pub next: GstIteratorNextFunction,
2034    pub item: GstIteratorItemFunction,
2035    pub resync: GstIteratorResyncFunction,
2036    pub free: GstIteratorFreeFunction,
2037    pub pushed: *mut GstIterator,
2038    pub type_: GType,
2039    pub lock: *mut glib::GMutex,
2040    pub cookie: u32,
2041    pub master_cookie: *mut u32,
2042    pub size: c_uint,
2043    pub _gst_reserved: [gpointer; 4],
2044}
2045
2046impl ::std::fmt::Debug for GstIterator {
2047    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2048        f.debug_struct(&format!("GstIterator @ {self:p}"))
2049            .field("copy", &self.copy)
2050            .field("next", &self.next)
2051            .field("item", &self.item)
2052            .field("resync", &self.resync)
2053            .field("free", &self.free)
2054            .field("pushed", &self.pushed)
2055            .field("type_", &self.type_)
2056            .field("lock", &self.lock)
2057            .field("cookie", &self.cookie)
2058            .field("master_cookie", &self.master_cookie)
2059            .field("size", &self.size)
2060            .finish()
2061    }
2062}
2063
2064#[repr(C)]
2065#[allow(dead_code)]
2066pub struct _GstLogContext {
2067    _data: [u8; 0],
2068    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2069}
2070
2071pub type GstLogContext = _GstLogContext;
2072
2073#[repr(C)]
2074#[allow(dead_code)]
2075pub struct _GstLogContextBuilder {
2076    _data: [u8; 0],
2077    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2078}
2079
2080pub type GstLogContextBuilder = _GstLogContextBuilder;
2081
2082#[derive(Copy, Clone)]
2083#[repr(C)]
2084pub struct GstMapInfo {
2085    pub memory: *mut GstMemory,
2086    pub flags: GstMapFlags,
2087    pub data: *mut u8,
2088    pub size: size_t,
2089    pub maxsize: size_t,
2090    pub user_data: [gpointer; 4],
2091    pub _gst_reserved: [gpointer; 4],
2092}
2093
2094impl ::std::fmt::Debug for GstMapInfo {
2095    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2096        f.debug_struct(&format!("GstMapInfo @ {self:p}"))
2097            .field("memory", &self.memory)
2098            .field("flags", &self.flags)
2099            .field("data", &self.data)
2100            .field("size", &self.size)
2101            .field("maxsize", &self.maxsize)
2102            .field("user_data", &self.user_data)
2103            .finish()
2104    }
2105}
2106
2107#[derive(Copy, Clone)]
2108#[repr(C)]
2109pub struct GstMemory {
2110    pub mini_object: GstMiniObject,
2111    pub allocator: *mut GstAllocator,
2112    pub parent: *mut GstMemory,
2113    pub maxsize: size_t,
2114    pub align: size_t,
2115    pub offset: size_t,
2116    pub size: size_t,
2117}
2118
2119impl ::std::fmt::Debug for GstMemory {
2120    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2121        f.debug_struct(&format!("GstMemory @ {self:p}"))
2122            .field("mini_object", &self.mini_object)
2123            .field("allocator", &self.allocator)
2124            .field("parent", &self.parent)
2125            .field("maxsize", &self.maxsize)
2126            .field("align", &self.align)
2127            .field("offset", &self.offset)
2128            .field("size", &self.size)
2129            .finish()
2130    }
2131}
2132
2133#[derive(Copy, Clone)]
2134#[repr(C)]
2135pub struct GstMessage {
2136    pub mini_object: GstMiniObject,
2137    pub type_: GstMessageType,
2138    pub timestamp: u64,
2139    pub src: *mut GstObject,
2140    pub seqnum: u32,
2141    pub lock: glib::GMutex,
2142    pub cond: glib::GCond,
2143}
2144
2145impl ::std::fmt::Debug for GstMessage {
2146    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2147        f.debug_struct(&format!("GstMessage @ {self:p}"))
2148            .field("mini_object", &self.mini_object)
2149            .field("type_", &self.type_)
2150            .field("timestamp", &self.timestamp)
2151            .field("src", &self.src)
2152            .field("seqnum", &self.seqnum)
2153            .finish()
2154    }
2155}
2156
2157#[derive(Copy, Clone)]
2158#[repr(C)]
2159pub struct GstMeta {
2160    pub flags: GstMetaFlags,
2161    pub info: *const GstMetaInfo,
2162}
2163
2164impl ::std::fmt::Debug for GstMeta {
2165    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2166        f.debug_struct(&format!("GstMeta @ {self:p}"))
2167            .field("flags", &self.flags)
2168            .field("info", &self.info)
2169            .finish()
2170    }
2171}
2172
2173#[repr(C)]
2174#[allow(dead_code)]
2175pub struct _GstMetaFactoryClass {
2176    _data: [u8; 0],
2177    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2178}
2179
2180pub type GstMetaFactoryClass = _GstMetaFactoryClass;
2181
2182#[derive(Copy, Clone)]
2183#[repr(C)]
2184pub struct GstMetaInfo {
2185    pub api: GType,
2186    pub type_: GType,
2187    pub size: size_t,
2188    pub init_func: GstMetaInitFunction,
2189    pub free_func: GstMetaFreeFunction,
2190    pub transform_func: GstMetaTransformFunction,
2191    pub serialize_func: GstMetaSerializeFunction,
2192    pub deserialize_func: GstMetaDeserializeFunction,
2193    pub clear_func: GstMetaClearFunction,
2194}
2195
2196impl ::std::fmt::Debug for GstMetaInfo {
2197    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2198        f.debug_struct(&format!("GstMetaInfo @ {self:p}"))
2199            .field("api", &self.api)
2200            .field("type_", &self.type_)
2201            .field("size", &self.size)
2202            .field("init_func", &self.init_func)
2203            .field("free_func", &self.free_func)
2204            .field("transform_func", &self.transform_func)
2205            .field("serialize_func", &self.serialize_func)
2206            .field("deserialize_func", &self.deserialize_func)
2207            .field("clear_func", &self.clear_func)
2208            .finish()
2209    }
2210}
2211
2212#[derive(Copy, Clone)]
2213#[repr(C)]
2214pub struct GstMetaTransformCopy {
2215    pub region: gboolean,
2216    pub offset: size_t,
2217    pub size: size_t,
2218}
2219
2220impl ::std::fmt::Debug for GstMetaTransformCopy {
2221    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2222        f.debug_struct(&format!("GstMetaTransformCopy @ {self:p}"))
2223            .field("region", &self.region)
2224            .field("offset", &self.offset)
2225            .field("size", &self.size)
2226            .finish()
2227    }
2228}
2229
2230#[derive(Copy, Clone)]
2231#[repr(C)]
2232pub struct GstMiniObject {
2233    pub type_: GType,
2234    pub refcount: c_int,
2235    pub lockstate: c_int,
2236    pub flags: c_uint,
2237    pub copy: GstMiniObjectCopyFunction,
2238    pub dispose: GstMiniObjectDisposeFunction,
2239    pub free: GstMiniObjectFreeFunction,
2240    pub priv_uint: c_uint,
2241    pub priv_pointer: gpointer,
2242}
2243
2244impl ::std::fmt::Debug for GstMiniObject {
2245    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2246        f.debug_struct(&format!("GstMiniObject @ {self:p}"))
2247            .field("type_", &self.type_)
2248            .field("refcount", &self.refcount)
2249            .field("lockstate", &self.lockstate)
2250            .field("flags", &self.flags)
2251            .field("copy", &self.copy)
2252            .field("dispose", &self.dispose)
2253            .field("free", &self.free)
2254            .finish()
2255    }
2256}
2257
2258#[derive(Copy, Clone)]
2259#[repr(C)]
2260pub struct GstObjectClass {
2261    pub parent_class: gobject::GInitiallyUnownedClass,
2262    pub path_string_separator: *const c_char,
2263    pub deep_notify:
2264        Option<unsafe extern "C" fn(*mut GstObject, *mut GstObject, *mut gobject::GParamSpec)>,
2265    pub _gst_reserved: [gpointer; 4],
2266}
2267
2268impl ::std::fmt::Debug for GstObjectClass {
2269    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2270        f.debug_struct(&format!("GstObjectClass @ {self:p}"))
2271            .field("parent_class", &self.parent_class)
2272            .field("path_string_separator", &self.path_string_separator)
2273            .field("deep_notify", &self.deep_notify)
2274            .finish()
2275    }
2276}
2277
2278#[derive(Copy, Clone)]
2279#[repr(C)]
2280pub struct GstPadClass {
2281    pub parent_class: GstObjectClass,
2282    pub linked: Option<unsafe extern "C" fn(*mut GstPad, *mut GstPad)>,
2283    pub unlinked: Option<unsafe extern "C" fn(*mut GstPad, *mut GstPad)>,
2284    pub _gst_reserved: [gpointer; 4],
2285}
2286
2287impl ::std::fmt::Debug for GstPadClass {
2288    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2289        f.debug_struct(&format!("GstPadClass @ {self:p}"))
2290            .field("parent_class", &self.parent_class)
2291            .field("linked", &self.linked)
2292            .field("unlinked", &self.unlinked)
2293            .finish()
2294    }
2295}
2296
2297#[repr(C)]
2298#[allow(dead_code)]
2299pub struct _GstPadPrivate {
2300    _data: [u8; 0],
2301    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2302}
2303
2304pub type GstPadPrivate = _GstPadPrivate;
2305
2306#[derive(Copy, Clone)]
2307#[repr(C)]
2308pub struct GstPadProbeInfo {
2309    pub type_: GstPadProbeType,
2310    pub id: c_ulong,
2311    pub data: gpointer,
2312    pub offset: u64,
2313    pub size: c_uint,
2314    pub ABI: GstPadProbeInfo_ABI,
2315}
2316
2317impl ::std::fmt::Debug for GstPadProbeInfo {
2318    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2319        f.debug_struct(&format!("GstPadProbeInfo @ {self:p}"))
2320            .field("type_", &self.type_)
2321            .field("id", &self.id)
2322            .field("data", &self.data)
2323            .field("offset", &self.offset)
2324            .field("size", &self.size)
2325            .field("ABI", &self.ABI)
2326            .finish()
2327    }
2328}
2329
2330#[derive(Copy, Clone)]
2331#[repr(C)]
2332pub struct GstPadProbeInfo_ABI_abi {
2333    pub flow_ret: GstFlowReturn,
2334}
2335
2336impl ::std::fmt::Debug for GstPadProbeInfo_ABI_abi {
2337    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2338        f.debug_struct(&format!("GstPadProbeInfo_ABI_abi @ {self:p}"))
2339            .field("flow_ret", &self.flow_ret)
2340            .finish()
2341    }
2342}
2343
2344#[derive(Copy, Clone)]
2345#[repr(C)]
2346pub struct GstPadTemplateClass {
2347    pub parent_class: GstObjectClass,
2348    pub pad_created: Option<unsafe extern "C" fn(*mut GstPadTemplate, *mut GstPad)>,
2349    pub _gst_reserved: [gpointer; 4],
2350}
2351
2352impl ::std::fmt::Debug for GstPadTemplateClass {
2353    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2354        f.debug_struct(&format!("GstPadTemplateClass @ {self:p}"))
2355            .field("parent_class", &self.parent_class)
2356            .field("pad_created", &self.pad_created)
2357            .finish()
2358    }
2359}
2360
2361#[derive(Copy, Clone)]
2362#[repr(C)]
2363pub struct GstPadTemplate_ABI_abi {
2364    pub gtype: GType,
2365    pub documentation_caps: *mut GstCaps,
2366}
2367
2368impl ::std::fmt::Debug for GstPadTemplate_ABI_abi {
2369    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2370        f.debug_struct(&format!("GstPadTemplate_ABI_abi @ {self:p}"))
2371            .field("gtype", &self.gtype)
2372            .field("documentation_caps", &self.documentation_caps)
2373            .finish()
2374    }
2375}
2376
2377#[derive(Copy, Clone)]
2378#[repr(C)]
2379pub struct GstPad_ABI_abi {
2380    pub last_flowret: GstFlowReturn,
2381    pub eventfullfunc: GstPadEventFullFunction,
2382}
2383
2384impl ::std::fmt::Debug for GstPad_ABI_abi {
2385    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2386        f.debug_struct(&format!("GstPad_ABI_abi @ {self:p}"))
2387            .field("last_flowret", &self.last_flowret)
2388            .field("eventfullfunc", &self.eventfullfunc)
2389            .finish()
2390    }
2391}
2392
2393#[derive(Copy, Clone)]
2394#[repr(C)]
2395pub struct GstParamSpecArray {
2396    pub parent_instance: gobject::GParamSpec,
2397    pub element_spec: *mut gobject::GParamSpec,
2398}
2399
2400impl ::std::fmt::Debug for GstParamSpecArray {
2401    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2402        f.debug_struct(&format!("GstParamSpecArray @ {self:p}"))
2403            .field("parent_instance", &self.parent_instance)
2404            .field("element_spec", &self.element_spec)
2405            .finish()
2406    }
2407}
2408
2409#[derive(Copy, Clone)]
2410#[repr(C)]
2411pub struct GstParamSpecFraction {
2412    pub parent_instance: gobject::GParamSpec,
2413    pub min_num: c_int,
2414    pub min_den: c_int,
2415    pub max_num: c_int,
2416    pub max_den: c_int,
2417    pub def_num: c_int,
2418    pub def_den: c_int,
2419}
2420
2421impl ::std::fmt::Debug for GstParamSpecFraction {
2422    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2423        f.debug_struct(&format!("GstParamSpecFraction @ {self:p}"))
2424            .field("parent_instance", &self.parent_instance)
2425            .field("min_num", &self.min_num)
2426            .field("min_den", &self.min_den)
2427            .field("max_num", &self.max_num)
2428            .field("max_den", &self.max_den)
2429            .field("def_num", &self.def_num)
2430            .field("def_den", &self.def_den)
2431            .finish()
2432    }
2433}
2434
2435#[derive(Copy, Clone)]
2436#[repr(C)]
2437pub struct GstParentBufferMeta {
2438    pub parent: GstMeta,
2439    pub buffer: *mut GstBuffer,
2440}
2441
2442impl ::std::fmt::Debug for GstParentBufferMeta {
2443    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2444        f.debug_struct(&format!("GstParentBufferMeta @ {self:p}"))
2445            .field("parent", &self.parent)
2446            .field("buffer", &self.buffer)
2447            .finish()
2448    }
2449}
2450
2451#[repr(C)]
2452#[allow(dead_code)]
2453pub struct GstParseContext {
2454    _data: [u8; 0],
2455    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2456}
2457
2458impl ::std::fmt::Debug for GstParseContext {
2459    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2460        f.debug_struct(&format!("GstParseContext @ {self:p}"))
2461            .finish()
2462    }
2463}
2464
2465#[derive(Copy, Clone)]
2466#[repr(C)]
2467pub struct GstPipelineClass {
2468    pub parent_class: GstBinClass,
2469    pub _gst_reserved: [gpointer; 4],
2470}
2471
2472impl ::std::fmt::Debug for GstPipelineClass {
2473    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2474        f.debug_struct(&format!("GstPipelineClass @ {self:p}"))
2475            .field("parent_class", &self.parent_class)
2476            .finish()
2477    }
2478}
2479
2480#[repr(C)]
2481#[allow(dead_code)]
2482pub struct _GstPipelinePrivate {
2483    _data: [u8; 0],
2484    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2485}
2486
2487pub type GstPipelinePrivate = _GstPipelinePrivate;
2488
2489#[repr(C)]
2490#[allow(dead_code)]
2491pub struct _GstPluginClass {
2492    _data: [u8; 0],
2493    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2494}
2495
2496pub type GstPluginClass = _GstPluginClass;
2497
2498#[derive(Copy, Clone)]
2499#[repr(C)]
2500pub struct GstPluginDesc {
2501    pub major_version: c_int,
2502    pub minor_version: c_int,
2503    pub name: *const c_char,
2504    pub description: *const c_char,
2505    pub plugin_init: GstPluginInitFunc,
2506    pub version: *const c_char,
2507    pub license: *const c_char,
2508    pub source: *const c_char,
2509    pub package: *const c_char,
2510    pub origin: *const c_char,
2511    pub release_datetime: *const c_char,
2512    pub _gst_reserved: [gpointer; 4],
2513}
2514
2515impl ::std::fmt::Debug for GstPluginDesc {
2516    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2517        f.debug_struct(&format!("GstPluginDesc @ {self:p}"))
2518            .field("major_version", &self.major_version)
2519            .field("minor_version", &self.minor_version)
2520            .field("name", &self.name)
2521            .field("description", &self.description)
2522            .field("plugin_init", &self.plugin_init)
2523            .field("version", &self.version)
2524            .field("license", &self.license)
2525            .field("source", &self.source)
2526            .field("package", &self.package)
2527            .field("origin", &self.origin)
2528            .field("release_datetime", &self.release_datetime)
2529            .finish()
2530    }
2531}
2532
2533#[repr(C)]
2534#[allow(dead_code)]
2535pub struct _GstPluginFeatureClass {
2536    _data: [u8; 0],
2537    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2538}
2539
2540pub type GstPluginFeatureClass = _GstPluginFeatureClass;
2541
2542#[repr(C)]
2543#[allow(dead_code)]
2544pub struct _GstPoll {
2545    _data: [u8; 0],
2546    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2547}
2548
2549pub type GstPoll = _GstPoll;
2550
2551#[derive(Copy, Clone)]
2552#[repr(C)]
2553pub struct GstPollFD {
2554    pub fd: c_int,
2555    pub idx: c_int,
2556}
2557
2558impl ::std::fmt::Debug for GstPollFD {
2559    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2560        f.debug_struct(&format!("GstPollFD @ {self:p}"))
2561            .field("fd", &self.fd)
2562            .finish()
2563    }
2564}
2565
2566#[derive(Copy, Clone)]
2567#[repr(C)]
2568pub struct GstPresetInterface {
2569    pub parent: gobject::GTypeInterface,
2570    pub get_preset_names: Option<unsafe extern "C" fn(*mut GstPreset) -> *mut *mut c_char>,
2571    pub get_property_names: Option<unsafe extern "C" fn(*mut GstPreset) -> *mut *mut c_char>,
2572    pub load_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2573    pub save_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2574    pub rename_preset:
2575        Option<unsafe extern "C" fn(*mut GstPreset, *const c_char, *const c_char) -> gboolean>,
2576    pub delete_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2577    pub set_meta: Option<
2578        unsafe extern "C" fn(
2579            *mut GstPreset,
2580            *const c_char,
2581            *const c_char,
2582            *mut *mut c_char,
2583        ) -> gboolean,
2584    >,
2585    pub get_meta: Option<
2586        unsafe extern "C" fn(
2587            *mut GstPreset,
2588            *const c_char,
2589            *const c_char,
2590            *mut *mut c_char,
2591        ) -> gboolean,
2592    >,
2593    pub _gst_reserved: [gpointer; 4],
2594}
2595
2596impl ::std::fmt::Debug for GstPresetInterface {
2597    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2598        f.debug_struct(&format!("GstPresetInterface @ {self:p}"))
2599            .field("parent", &self.parent)
2600            .field("get_preset_names", &self.get_preset_names)
2601            .field("get_property_names", &self.get_property_names)
2602            .field("load_preset", &self.load_preset)
2603            .field("save_preset", &self.save_preset)
2604            .field("rename_preset", &self.rename_preset)
2605            .field("delete_preset", &self.delete_preset)
2606            .field("set_meta", &self.set_meta)
2607            .field("get_meta", &self.get_meta)
2608            .finish()
2609    }
2610}
2611
2612#[derive(Copy, Clone)]
2613#[repr(C)]
2614pub struct GstPromise {
2615    pub parent: GstMiniObject,
2616}
2617
2618impl ::std::fmt::Debug for GstPromise {
2619    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2620        f.debug_struct(&format!("GstPromise @ {self:p}"))
2621            .field("parent", &self.parent)
2622            .finish()
2623    }
2624}
2625
2626#[derive(Copy, Clone)]
2627#[repr(C)]
2628pub struct GstProtectionMeta {
2629    pub meta: GstMeta,
2630    pub info: *mut GstStructure,
2631}
2632
2633impl ::std::fmt::Debug for GstProtectionMeta {
2634    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2635        f.debug_struct(&format!("GstProtectionMeta @ {self:p}"))
2636            .field("meta", &self.meta)
2637            .field("info", &self.info)
2638            .finish()
2639    }
2640}
2641
2642#[derive(Copy, Clone)]
2643#[repr(C)]
2644pub struct GstProxyPadClass {
2645    pub parent_class: GstPadClass,
2646    pub _gst_reserved: [gpointer; 1],
2647}
2648
2649impl ::std::fmt::Debug for GstProxyPadClass {
2650    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2651        f.debug_struct(&format!("GstProxyPadClass @ {self:p}"))
2652            .field("parent_class", &self.parent_class)
2653            .finish()
2654    }
2655}
2656
2657#[repr(C)]
2658#[allow(dead_code)]
2659pub struct _GstProxyPadPrivate {
2660    _data: [u8; 0],
2661    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2662}
2663
2664pub type GstProxyPadPrivate = _GstProxyPadPrivate;
2665
2666#[derive(Copy, Clone)]
2667#[repr(C)]
2668pub struct GstQuery {
2669    pub mini_object: GstMiniObject,
2670    pub type_: GstQueryType,
2671}
2672
2673impl ::std::fmt::Debug for GstQuery {
2674    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2675        f.debug_struct(&format!("GstQuery @ {self:p}"))
2676            .field("mini_object", &self.mini_object)
2677            .field("type_", &self.type_)
2678            .finish()
2679    }
2680}
2681
2682#[derive(Copy, Clone)]
2683#[repr(C)]
2684pub struct GstReferenceTimestampMeta {
2685    pub parent: GstMeta,
2686    pub reference: *mut GstCaps,
2687    pub timestamp: GstClockTime,
2688    pub duration: GstClockTime,
2689    pub info: *mut GstStructure,
2690}
2691
2692impl ::std::fmt::Debug for GstReferenceTimestampMeta {
2693    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2694        f.debug_struct(&format!("GstReferenceTimestampMeta @ {self:p}"))
2695            .field("parent", &self.parent)
2696            .field("reference", &self.reference)
2697            .field("timestamp", &self.timestamp)
2698            .field("duration", &self.duration)
2699            .field("info", &self.info)
2700            .finish()
2701    }
2702}
2703
2704#[derive(Copy, Clone)]
2705#[repr(C)]
2706pub struct GstRegistryClass {
2707    pub parent_class: GstObjectClass,
2708}
2709
2710impl ::std::fmt::Debug for GstRegistryClass {
2711    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2712        f.debug_struct(&format!("GstRegistryClass @ {self:p}"))
2713            .field("parent_class", &self.parent_class)
2714            .finish()
2715    }
2716}
2717
2718#[repr(C)]
2719#[allow(dead_code)]
2720pub struct _GstRegistryPrivate {
2721    _data: [u8; 0],
2722    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2723}
2724
2725pub type GstRegistryPrivate = _GstRegistryPrivate;
2726
2727#[repr(C)]
2728#[allow(dead_code)]
2729pub struct GstSample {
2730    _data: [u8; 0],
2731    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2732}
2733
2734impl ::std::fmt::Debug for GstSample {
2735    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2736        f.debug_struct(&format!("GstSample @ {self:p}")).finish()
2737    }
2738}
2739
2740#[derive(Copy, Clone)]
2741#[repr(C)]
2742pub struct GstSegment {
2743    pub flags: GstSegmentFlags,
2744    pub rate: c_double,
2745    pub applied_rate: c_double,
2746    pub format: GstFormat,
2747    pub base: u64,
2748    pub offset: u64,
2749    pub start: u64,
2750    pub stop: u64,
2751    pub time: u64,
2752    pub position: u64,
2753    pub duration: u64,
2754    pub _gst_reserved: [gpointer; 4],
2755}
2756
2757impl ::std::fmt::Debug for GstSegment {
2758    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2759        f.debug_struct(&format!("GstSegment @ {self:p}"))
2760            .field("flags", &self.flags)
2761            .field("rate", &self.rate)
2762            .field("applied_rate", &self.applied_rate)
2763            .field("format", &self.format)
2764            .field("base", &self.base)
2765            .field("offset", &self.offset)
2766            .field("start", &self.start)
2767            .field("stop", &self.stop)
2768            .field("time", &self.time)
2769            .field("position", &self.position)
2770            .field("duration", &self.duration)
2771            .finish()
2772    }
2773}
2774
2775#[derive(Copy, Clone)]
2776#[repr(C)]
2777pub struct GstSharedTaskPoolClass {
2778    pub parent_class: GstTaskPoolClass,
2779    pub _gst_reserved: [gpointer; 4],
2780}
2781
2782impl ::std::fmt::Debug for GstSharedTaskPoolClass {
2783    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2784        f.debug_struct(&format!("GstSharedTaskPoolClass @ {self:p}"))
2785            .field("parent_class", &self.parent_class)
2786            .finish()
2787    }
2788}
2789
2790#[repr(C)]
2791#[allow(dead_code)]
2792pub struct _GstSharedTaskPoolPrivate {
2793    _data: [u8; 0],
2794    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2795}
2796
2797pub type GstSharedTaskPoolPrivate = _GstSharedTaskPoolPrivate;
2798
2799#[derive(Copy, Clone)]
2800#[repr(C)]
2801pub struct GstStaticCaps {
2802    pub caps: *mut GstCaps,
2803    pub string: *const c_char,
2804    pub _gst_reserved: [gpointer; 4],
2805}
2806
2807impl ::std::fmt::Debug for GstStaticCaps {
2808    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2809        f.debug_struct(&format!("GstStaticCaps @ {self:p}"))
2810            .field("caps", &self.caps)
2811            .field("string", &self.string)
2812            .finish()
2813    }
2814}
2815
2816#[derive(Copy, Clone)]
2817#[repr(C)]
2818pub struct GstStaticPadTemplate {
2819    pub name_template: *const c_char,
2820    pub direction: GstPadDirection,
2821    pub presence: GstPadPresence,
2822    pub static_caps: GstStaticCaps,
2823}
2824
2825impl ::std::fmt::Debug for GstStaticPadTemplate {
2826    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2827        f.debug_struct(&format!("GstStaticPadTemplate @ {self:p}"))
2828            .field("name_template", &self.name_template)
2829            .field("direction", &self.direction)
2830            .field("presence", &self.presence)
2831            .field("static_caps", &self.static_caps)
2832            .finish()
2833    }
2834}
2835
2836#[derive(Copy, Clone)]
2837#[repr(C)]
2838pub struct GstStreamClass {
2839    pub parent_class: GstObjectClass,
2840    pub _gst_reserved: [gpointer; 4],
2841}
2842
2843impl ::std::fmt::Debug for GstStreamClass {
2844    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2845        f.debug_struct(&format!("GstStreamClass @ {self:p}"))
2846            .field("parent_class", &self.parent_class)
2847            .finish()
2848    }
2849}
2850
2851#[derive(Copy, Clone)]
2852#[repr(C)]
2853pub struct GstStreamCollectionClass {
2854    pub parent_class: GstObjectClass,
2855    pub stream_notify: Option<
2856        unsafe extern "C" fn(*mut GstStreamCollection, *mut GstStream, *mut gobject::GParamSpec),
2857    >,
2858    pub _gst_reserved: [gpointer; 4],
2859}
2860
2861impl ::std::fmt::Debug for GstStreamCollectionClass {
2862    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2863        f.debug_struct(&format!("GstStreamCollectionClass @ {self:p}"))
2864            .field("parent_class", &self.parent_class)
2865            .field("stream_notify", &self.stream_notify)
2866            .finish()
2867    }
2868}
2869
2870#[repr(C)]
2871#[allow(dead_code)]
2872pub struct _GstStreamCollectionPrivate {
2873    _data: [u8; 0],
2874    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2875}
2876
2877pub type GstStreamCollectionPrivate = _GstStreamCollectionPrivate;
2878
2879#[repr(C)]
2880#[allow(dead_code)]
2881pub struct _GstStreamPrivate {
2882    _data: [u8; 0],
2883    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2884}
2885
2886pub type GstStreamPrivate = _GstStreamPrivate;
2887
2888#[derive(Copy, Clone)]
2889#[repr(C)]
2890pub struct GstStructure {
2891    pub type_: GType,
2892    pub name: glib::GQuark,
2893}
2894
2895impl ::std::fmt::Debug for GstStructure {
2896    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2897        f.debug_struct(&format!("GstStructure @ {self:p}"))
2898            .field("type_", &self.type_)
2899            .finish()
2900    }
2901}
2902
2903#[derive(Copy, Clone)]
2904#[repr(C)]
2905pub struct GstSystemClockClass {
2906    pub parent_class: GstClockClass,
2907    pub _gst_reserved: [gpointer; 4],
2908}
2909
2910impl ::std::fmt::Debug for GstSystemClockClass {
2911    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2912        f.debug_struct(&format!("GstSystemClockClass @ {self:p}"))
2913            .field("parent_class", &self.parent_class)
2914            .finish()
2915    }
2916}
2917
2918#[repr(C)]
2919#[allow(dead_code)]
2920pub struct _GstSystemClockPrivate {
2921    _data: [u8; 0],
2922    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2923}
2924
2925pub type GstSystemClockPrivate = _GstSystemClockPrivate;
2926
2927#[derive(Copy, Clone)]
2928#[repr(C)]
2929pub struct GstTagList {
2930    pub mini_object: GstMiniObject,
2931}
2932
2933impl ::std::fmt::Debug for GstTagList {
2934    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2935        f.debug_struct(&format!("GstTagList @ {self:p}"))
2936            .field("mini_object", &self.mini_object)
2937            .finish()
2938    }
2939}
2940
2941#[derive(Copy, Clone)]
2942#[repr(C)]
2943pub struct GstTagSetterInterface {
2944    pub g_iface: gobject::GTypeInterface,
2945}
2946
2947impl ::std::fmt::Debug for GstTagSetterInterface {
2948    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2949        f.debug_struct(&format!("GstTagSetterInterface @ {self:p}"))
2950            .field("g_iface", &self.g_iface)
2951            .finish()
2952    }
2953}
2954
2955#[derive(Copy, Clone)]
2956#[repr(C)]
2957pub struct GstTaskClass {
2958    pub parent_class: GstObjectClass,
2959    pub pool: *mut GstTaskPool,
2960    pub _gst_reserved: [gpointer; 4],
2961}
2962
2963impl ::std::fmt::Debug for GstTaskClass {
2964    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2965        f.debug_struct(&format!("GstTaskClass @ {self:p}"))
2966            .field("parent_class", &self.parent_class)
2967            .finish()
2968    }
2969}
2970
2971#[derive(Copy, Clone)]
2972#[repr(C)]
2973pub struct GstTaskPoolClass {
2974    pub parent_class: GstObjectClass,
2975    pub prepare: Option<unsafe extern "C" fn(*mut GstTaskPool, *mut *mut glib::GError)>,
2976    pub cleanup: Option<unsafe extern "C" fn(*mut GstTaskPool)>,
2977    pub push: Option<
2978        unsafe extern "C" fn(
2979            *mut GstTaskPool,
2980            GstTaskPoolFunction,
2981            gpointer,
2982            *mut *mut glib::GError,
2983        ) -> gpointer,
2984    >,
2985    pub join: Option<unsafe extern "C" fn(*mut GstTaskPool, gpointer)>,
2986    pub dispose_handle: Option<unsafe extern "C" fn(*mut GstTaskPool, gpointer)>,
2987    pub _gst_reserved: [gpointer; 3],
2988}
2989
2990impl ::std::fmt::Debug for GstTaskPoolClass {
2991    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2992        f.debug_struct(&format!("GstTaskPoolClass @ {self:p}"))
2993            .field("parent_class", &self.parent_class)
2994            .field("prepare", &self.prepare)
2995            .field("cleanup", &self.cleanup)
2996            .field("push", &self.push)
2997            .field("join", &self.join)
2998            .field("dispose_handle", &self.dispose_handle)
2999            .finish()
3000    }
3001}
3002
3003#[repr(C)]
3004#[allow(dead_code)]
3005pub struct _GstTaskPrivate {
3006    _data: [u8; 0],
3007    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3008}
3009
3010pub type GstTaskPrivate = _GstTaskPrivate;
3011
3012#[derive(Copy, Clone)]
3013#[repr(C)]
3014pub struct GstTimedValue {
3015    pub timestamp: GstClockTime,
3016    pub value: c_double,
3017}
3018
3019impl ::std::fmt::Debug for GstTimedValue {
3020    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3021        f.debug_struct(&format!("GstTimedValue @ {self:p}"))
3022            .field("timestamp", &self.timestamp)
3023            .field("value", &self.value)
3024            .finish()
3025    }
3026}
3027
3028#[repr(C)]
3029#[allow(dead_code)]
3030pub struct GstToc {
3031    _data: [u8; 0],
3032    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3033}
3034
3035impl ::std::fmt::Debug for GstToc {
3036    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3037        f.debug_struct(&format!("GstToc @ {self:p}")).finish()
3038    }
3039}
3040
3041#[repr(C)]
3042#[allow(dead_code)]
3043pub struct GstTocEntry {
3044    _data: [u8; 0],
3045    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3046}
3047
3048impl ::std::fmt::Debug for GstTocEntry {
3049    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3050        f.debug_struct(&format!("GstTocEntry @ {self:p}")).finish()
3051    }
3052}
3053
3054#[derive(Copy, Clone)]
3055#[repr(C)]
3056pub struct GstTocSetterInterface {
3057    pub g_iface: gobject::GTypeInterface,
3058}
3059
3060impl ::std::fmt::Debug for GstTocSetterInterface {
3061    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3062        f.debug_struct(&format!("GstTocSetterInterface @ {self:p}"))
3063            .field("g_iface", &self.g_iface)
3064            .finish()
3065    }
3066}
3067
3068#[derive(Copy, Clone)]
3069#[repr(C)]
3070pub struct GstTracerClass {
3071    pub parent_class: GstObjectClass,
3072    pub _gst_reserved: [gpointer; 4],
3073}
3074
3075impl ::std::fmt::Debug for GstTracerClass {
3076    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3077        f.debug_struct(&format!("GstTracerClass @ {self:p}"))
3078            .field("parent_class", &self.parent_class)
3079            .finish()
3080    }
3081}
3082
3083#[repr(C)]
3084#[allow(dead_code)]
3085pub struct _GstTracerFactoryClass {
3086    _data: [u8; 0],
3087    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3088}
3089
3090pub type GstTracerFactoryClass = _GstTracerFactoryClass;
3091
3092#[repr(C)]
3093#[allow(dead_code)]
3094pub struct _GstTracerPrivate {
3095    _data: [u8; 0],
3096    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3097}
3098
3099pub type GstTracerPrivate = _GstTracerPrivate;
3100
3101#[repr(C)]
3102#[allow(dead_code)]
3103pub struct _GstTracerRecordClass {
3104    _data: [u8; 0],
3105    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3106}
3107
3108pub type GstTracerRecordClass = _GstTracerRecordClass;
3109
3110#[derive(Copy, Clone)]
3111#[repr(C)]
3112pub struct GstTypeFind {
3113    pub peek: Option<unsafe extern "C" fn(gpointer, i64, c_uint) -> *const u8>,
3114    pub suggest: Option<unsafe extern "C" fn(gpointer, c_uint, *mut GstCaps)>,
3115    pub data: gpointer,
3116    pub get_length: Option<unsafe extern "C" fn(gpointer) -> u64>,
3117    pub _gst_reserved: [gpointer; 4],
3118}
3119
3120impl ::std::fmt::Debug for GstTypeFind {
3121    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3122        f.debug_struct(&format!("GstTypeFind @ {self:p}"))
3123            .field("peek", &self.peek)
3124            .field("suggest", &self.suggest)
3125            .field("data", &self.data)
3126            .field("get_length", &self.get_length)
3127            .finish()
3128    }
3129}
3130
3131#[repr(C)]
3132#[allow(dead_code)]
3133pub struct _GstTypeFindFactoryClass {
3134    _data: [u8; 0],
3135    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3136}
3137
3138pub type GstTypeFindFactoryClass = _GstTypeFindFactoryClass;
3139
3140#[derive(Copy, Clone)]
3141#[repr(C)]
3142pub struct GstURIHandlerInterface {
3143    pub parent: gobject::GTypeInterface,
3144    pub get_type: Option<unsafe extern "C" fn(GType) -> GstURIType>,
3145    pub get_protocols: Option<unsafe extern "C" fn(GType) -> *const *const c_char>,
3146    pub get_uri: Option<unsafe extern "C" fn(*mut GstURIHandler) -> *mut c_char>,
3147    pub set_uri: Option<
3148        unsafe extern "C" fn(*mut GstURIHandler, *const c_char, *mut *mut glib::GError) -> gboolean,
3149    >,
3150}
3151
3152impl ::std::fmt::Debug for GstURIHandlerInterface {
3153    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3154        f.debug_struct(&format!("GstURIHandlerInterface @ {self:p}"))
3155            .field("parent", &self.parent)
3156            .field("get_type", &self.get_type)
3157            .field("get_protocols", &self.get_protocols)
3158            .field("get_uri", &self.get_uri)
3159            .field("set_uri", &self.set_uri)
3160            .finish()
3161    }
3162}
3163
3164#[repr(C)]
3165#[allow(dead_code)]
3166pub struct GstUri {
3167    _data: [u8; 0],
3168    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3169}
3170
3171impl ::std::fmt::Debug for GstUri {
3172    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3173        f.debug_struct(&format!("GstUri @ {self:p}")).finish()
3174    }
3175}
3176
3177#[derive(Copy, Clone)]
3178#[repr(C)]
3179pub struct GstValueTable {
3180    pub type_: GType,
3181    pub compare: GstValueCompareFunc,
3182    pub serialize: GstValueSerializeFunc,
3183    pub deserialize: GstValueDeserializeFunc,
3184    pub deserialize_with_pspec: GstValueDeserializeWithPSpecFunc,
3185    pub hash: GstValueHashFunc,
3186    pub _gst_reserved: [gpointer; 2],
3187}
3188
3189impl ::std::fmt::Debug for GstValueTable {
3190    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3191        f.debug_struct(&format!("GstValueTable @ {self:p}"))
3192            .field("type_", &self.type_)
3193            .field("compare", &self.compare)
3194            .field("serialize", &self.serialize)
3195            .field("deserialize", &self.deserialize)
3196            .field("deserialize_with_pspec", &self.deserialize_with_pspec)
3197            .field("hash", &self.hash)
3198            .finish()
3199    }
3200}
3201
3202#[repr(C)]
3203#[allow(dead_code)]
3204pub struct _GstVecDeque {
3205    _data: [u8; 0],
3206    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3207}
3208
3209pub type GstVecDeque = _GstVecDeque;
3210
3211// Classes
3212#[derive(Copy, Clone)]
3213#[repr(C)]
3214pub struct GstAllocator {
3215    pub object: GstObject,
3216    pub mem_type: *const c_char,
3217    pub mem_map: GstMemoryMapFunction,
3218    pub mem_unmap: GstMemoryUnmapFunction,
3219    pub mem_copy: GstMemoryCopyFunction,
3220    pub mem_share: GstMemoryShareFunction,
3221    pub mem_is_span: GstMemoryIsSpanFunction,
3222    pub mem_map_full: GstMemoryMapFullFunction,
3223    pub mem_unmap_full: GstMemoryUnmapFullFunction,
3224    pub _gst_reserved: [gpointer; 2],
3225    pub priv_: *mut GstAllocatorPrivate,
3226}
3227
3228impl ::std::fmt::Debug for GstAllocator {
3229    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3230        f.debug_struct(&format!("GstAllocator @ {self:p}"))
3231            .field("object", &self.object)
3232            .field("mem_type", &self.mem_type)
3233            .field("mem_map", &self.mem_map)
3234            .field("mem_unmap", &self.mem_unmap)
3235            .field("mem_copy", &self.mem_copy)
3236            .field("mem_share", &self.mem_share)
3237            .field("mem_is_span", &self.mem_is_span)
3238            .field("mem_map_full", &self.mem_map_full)
3239            .field("mem_unmap_full", &self.mem_unmap_full)
3240            .finish()
3241    }
3242}
3243
3244#[derive(Copy, Clone)]
3245#[repr(C)]
3246pub struct GstBin {
3247    pub element: GstElement,
3248    pub numchildren: c_int,
3249    pub children: *mut glib::GList,
3250    pub children_cookie: u32,
3251    pub child_bus: *mut GstBus,
3252    pub messages: *mut glib::GList,
3253    pub polling: gboolean,
3254    pub state_dirty: gboolean,
3255    pub clock_dirty: gboolean,
3256    pub provided_clock: *mut GstClock,
3257    pub clock_provider: *mut GstElement,
3258    pub priv_: *mut GstBinPrivate,
3259    pub _gst_reserved: [gpointer; 4],
3260}
3261
3262impl ::std::fmt::Debug for GstBin {
3263    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3264        f.debug_struct(&format!("GstBin @ {self:p}"))
3265            .field("element", &self.element)
3266            .field("numchildren", &self.numchildren)
3267            .field("children", &self.children)
3268            .field("children_cookie", &self.children_cookie)
3269            .field("child_bus", &self.child_bus)
3270            .field("messages", &self.messages)
3271            .field("polling", &self.polling)
3272            .field("state_dirty", &self.state_dirty)
3273            .field("clock_dirty", &self.clock_dirty)
3274            .field("provided_clock", &self.provided_clock)
3275            .field("clock_provider", &self.clock_provider)
3276            .finish()
3277    }
3278}
3279
3280#[repr(C)]
3281#[allow(dead_code)]
3282pub struct GstBitmask {
3283    _data: [u8; 0],
3284    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3285}
3286
3287impl ::std::fmt::Debug for GstBitmask {
3288    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3289        f.debug_struct(&format!("GstBitmask @ {self:p}")).finish()
3290    }
3291}
3292
3293#[derive(Copy, Clone)]
3294#[repr(C)]
3295pub struct GstBufferPool {
3296    pub object: GstObject,
3297    pub flushing: c_int,
3298    pub priv_: *mut GstBufferPoolPrivate,
3299    pub _gst_reserved: [gpointer; 4],
3300}
3301
3302impl ::std::fmt::Debug for GstBufferPool {
3303    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3304        f.debug_struct(&format!("GstBufferPool @ {self:p}"))
3305            .field("object", &self.object)
3306            .field("flushing", &self.flushing)
3307            .finish()
3308    }
3309}
3310
3311#[derive(Copy, Clone)]
3312#[repr(C)]
3313pub struct GstBus {
3314    pub object: GstObject,
3315    pub priv_: *mut GstBusPrivate,
3316    pub _gst_reserved: [gpointer; 4],
3317}
3318
3319impl ::std::fmt::Debug for GstBus {
3320    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3321        f.debug_struct(&format!("GstBus @ {self:p}"))
3322            .field("object", &self.object)
3323            .finish()
3324    }
3325}
3326
3327#[derive(Copy, Clone)]
3328#[repr(C)]
3329pub struct GstClock {
3330    pub object: GstObject,
3331    pub priv_: *mut GstClockPrivate,
3332    pub _gst_reserved: [gpointer; 4],
3333}
3334
3335impl ::std::fmt::Debug for GstClock {
3336    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3337        f.debug_struct(&format!("GstClock @ {self:p}"))
3338            .field("object", &self.object)
3339            .finish()
3340    }
3341}
3342
3343#[derive(Copy, Clone)]
3344#[repr(C)]
3345pub struct GstControlBinding {
3346    pub parent: GstObject,
3347    pub name: *mut c_char,
3348    pub pspec: *mut gobject::GParamSpec,
3349    pub object: *mut GstObject,
3350    pub disabled: gboolean,
3351    pub ABI: GstControlBinding_ABI,
3352}
3353
3354impl ::std::fmt::Debug for GstControlBinding {
3355    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3356        f.debug_struct(&format!("GstControlBinding @ {self:p}"))
3357            .field("parent", &self.parent)
3358            .field("name", &self.name)
3359            .field("pspec", &self.pspec)
3360            .field("ABI", &self.ABI)
3361            .finish()
3362    }
3363}
3364
3365#[derive(Copy, Clone)]
3366#[repr(C)]
3367pub struct GstControlSource {
3368    pub parent: GstObject,
3369    pub get_value: GstControlSourceGetValue,
3370    pub get_value_array: GstControlSourceGetValueArray,
3371    pub _gst_reserved: [gpointer; 4],
3372}
3373
3374impl ::std::fmt::Debug for GstControlSource {
3375    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3376        f.debug_struct(&format!("GstControlSource @ {self:p}"))
3377            .field("parent", &self.parent)
3378            .field("get_value", &self.get_value)
3379            .field("get_value_array", &self.get_value_array)
3380            .finish()
3381    }
3382}
3383
3384#[derive(Copy, Clone)]
3385#[repr(C)]
3386pub struct GstDevice {
3387    pub parent: GstObject,
3388    pub priv_: *mut GstDevicePrivate,
3389    pub _gst_reserved: [gpointer; 4],
3390}
3391
3392impl ::std::fmt::Debug for GstDevice {
3393    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3394        f.debug_struct(&format!("GstDevice @ {self:p}"))
3395            .field("parent", &self.parent)
3396            .finish()
3397    }
3398}
3399
3400#[derive(Copy, Clone)]
3401#[repr(C)]
3402pub struct GstDeviceMonitor {
3403    pub parent: GstObject,
3404    pub priv_: *mut GstDeviceMonitorPrivate,
3405    pub _gst_reserved: [gpointer; 4],
3406}
3407
3408impl ::std::fmt::Debug for GstDeviceMonitor {
3409    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3410        f.debug_struct(&format!("GstDeviceMonitor @ {self:p}"))
3411            .field("parent", &self.parent)
3412            .finish()
3413    }
3414}
3415
3416#[derive(Copy, Clone)]
3417#[repr(C)]
3418pub struct GstDeviceProvider {
3419    pub parent: GstObject,
3420    pub devices: *mut glib::GList,
3421    pub priv_: *mut GstDeviceProviderPrivate,
3422    pub _gst_reserved: [gpointer; 4],
3423}
3424
3425impl ::std::fmt::Debug for GstDeviceProvider {
3426    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3427        f.debug_struct(&format!("GstDeviceProvider @ {self:p}"))
3428            .field("parent", &self.parent)
3429            .field("devices", &self.devices)
3430            .finish()
3431    }
3432}
3433
3434#[repr(C)]
3435#[allow(dead_code)]
3436pub struct GstDeviceProviderFactory {
3437    _data: [u8; 0],
3438    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3439}
3440
3441impl ::std::fmt::Debug for GstDeviceProviderFactory {
3442    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3443        f.debug_struct(&format!("GstDeviceProviderFactory @ {self:p}"))
3444            .finish()
3445    }
3446}
3447
3448#[repr(C)]
3449#[allow(dead_code)]
3450pub struct GstDoubleRange {
3451    _data: [u8; 0],
3452    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3453}
3454
3455impl ::std::fmt::Debug for GstDoubleRange {
3456    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3457        f.debug_struct(&format!("GstDoubleRange @ {self:p}"))
3458            .finish()
3459    }
3460}
3461
3462#[repr(C)]
3463#[allow(dead_code)]
3464pub struct GstDynamicTypeFactory {
3465    _data: [u8; 0],
3466    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3467}
3468
3469impl ::std::fmt::Debug for GstDynamicTypeFactory {
3470    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3471        f.debug_struct(&format!("GstDynamicTypeFactory @ {self:p}"))
3472            .finish()
3473    }
3474}
3475
3476#[derive(Copy, Clone)]
3477#[repr(C)]
3478pub struct GstElement {
3479    pub object: GstObject,
3480    pub state_lock: glib::GRecMutex,
3481    pub state_cond: glib::GCond,
3482    pub state_cookie: u32,
3483    pub target_state: GstState,
3484    pub current_state: GstState,
3485    pub next_state: GstState,
3486    pub pending_state: GstState,
3487    pub last_return: GstStateChangeReturn,
3488    pub bus: *mut GstBus,
3489    pub clock: *mut GstClock,
3490    pub base_time: GstClockTimeDiff,
3491    pub start_time: GstClockTime,
3492    pub numpads: u16,
3493    pub pads: *mut glib::GList,
3494    pub numsrcpads: u16,
3495    pub srcpads: *mut glib::GList,
3496    pub numsinkpads: u16,
3497    pub sinkpads: *mut glib::GList,
3498    pub pads_cookie: u32,
3499    pub contexts: *mut glib::GList,
3500    pub _gst_reserved: [gpointer; 3],
3501}
3502
3503impl ::std::fmt::Debug for GstElement {
3504    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3505        f.debug_struct(&format!("GstElement @ {self:p}"))
3506            .field("object", &self.object)
3507            .field("state_lock", &self.state_lock)
3508            .field("state_cond", &self.state_cond)
3509            .field("state_cookie", &self.state_cookie)
3510            .field("target_state", &self.target_state)
3511            .field("current_state", &self.current_state)
3512            .field("next_state", &self.next_state)
3513            .field("pending_state", &self.pending_state)
3514            .field("last_return", &self.last_return)
3515            .field("bus", &self.bus)
3516            .field("clock", &self.clock)
3517            .field("base_time", &self.base_time)
3518            .field("start_time", &self.start_time)
3519            .field("numpads", &self.numpads)
3520            .field("pads", &self.pads)
3521            .field("numsrcpads", &self.numsrcpads)
3522            .field("srcpads", &self.srcpads)
3523            .field("numsinkpads", &self.numsinkpads)
3524            .field("sinkpads", &self.sinkpads)
3525            .field("pads_cookie", &self.pads_cookie)
3526            .field("contexts", &self.contexts)
3527            .finish()
3528    }
3529}
3530
3531#[repr(C)]
3532#[allow(dead_code)]
3533pub struct GstElementFactory {
3534    _data: [u8; 0],
3535    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3536}
3537
3538impl ::std::fmt::Debug for GstElementFactory {
3539    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3540        f.debug_struct(&format!("GstElementFactory @ {self:p}"))
3541            .finish()
3542    }
3543}
3544
3545#[repr(C)]
3546#[allow(dead_code)]
3547pub struct GstFlagSet {
3548    _data: [u8; 0],
3549    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3550}
3551
3552impl ::std::fmt::Debug for GstFlagSet {
3553    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3554        f.debug_struct(&format!("GstFlagSet @ {self:p}")).finish()
3555    }
3556}
3557
3558#[repr(C)]
3559#[allow(dead_code)]
3560pub struct GstFraction {
3561    _data: [u8; 0],
3562    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3563}
3564
3565impl ::std::fmt::Debug for GstFraction {
3566    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3567        f.debug_struct(&format!("GstFraction @ {self:p}")).finish()
3568    }
3569}
3570
3571#[repr(C)]
3572#[allow(dead_code)]
3573pub struct GstFractionRange {
3574    _data: [u8; 0],
3575    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3576}
3577
3578impl ::std::fmt::Debug for GstFractionRange {
3579    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3580        f.debug_struct(&format!("GstFractionRange @ {self:p}"))
3581            .finish()
3582    }
3583}
3584
3585#[derive(Copy, Clone)]
3586#[repr(C)]
3587pub struct GstGhostPad {
3588    pub pad: GstProxyPad,
3589    pub priv_: *mut GstGhostPadPrivate,
3590}
3591
3592impl ::std::fmt::Debug for GstGhostPad {
3593    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3594        f.debug_struct(&format!("GstGhostPad @ {self:p}"))
3595            .field("pad", &self.pad)
3596            .finish()
3597    }
3598}
3599
3600#[repr(C)]
3601#[allow(dead_code)]
3602pub struct GstInt64Range {
3603    _data: [u8; 0],
3604    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3605}
3606
3607impl ::std::fmt::Debug for GstInt64Range {
3608    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3609        f.debug_struct(&format!("GstInt64Range @ {self:p}"))
3610            .finish()
3611    }
3612}
3613
3614#[repr(C)]
3615#[allow(dead_code)]
3616pub struct GstIntRange {
3617    _data: [u8; 0],
3618    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3619}
3620
3621impl ::std::fmt::Debug for GstIntRange {
3622    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3623        f.debug_struct(&format!("GstIntRange @ {self:p}")).finish()
3624    }
3625}
3626
3627#[repr(C)]
3628#[allow(dead_code)]
3629pub struct GstMetaFactory {
3630    _data: [u8; 0],
3631    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3632}
3633
3634impl ::std::fmt::Debug for GstMetaFactory {
3635    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3636        f.debug_struct(&format!("GstMetaFactory @ {self:p}"))
3637            .finish()
3638    }
3639}
3640
3641#[derive(Copy, Clone)]
3642#[repr(C)]
3643pub struct GstObject {
3644    pub object: gobject::GInitiallyUnowned,
3645    pub lock: glib::GMutex,
3646    pub name: *mut c_char,
3647    pub parent: *mut GstObject,
3648    pub flags: u32,
3649    pub control_bindings: *mut glib::GList,
3650    pub control_rate: u64,
3651    pub last_sync: u64,
3652    pub _gst_reserved: gpointer,
3653}
3654
3655impl ::std::fmt::Debug for GstObject {
3656    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3657        f.debug_struct(&format!("GstObject @ {self:p}"))
3658            .field("object", &self.object)
3659            .field("lock", &self.lock)
3660            .field("name", &self.name)
3661            .field("parent", &self.parent)
3662            .field("flags", &self.flags)
3663            .finish()
3664    }
3665}
3666
3667#[derive(Copy, Clone)]
3668#[repr(C)]
3669pub struct GstPad {
3670    pub object: GstObject,
3671    pub element_private: gpointer,
3672    pub padtemplate: *mut GstPadTemplate,
3673    pub direction: GstPadDirection,
3674    pub stream_rec_lock: glib::GRecMutex,
3675    pub task: *mut GstTask,
3676    pub block_cond: glib::GCond,
3677    pub probes: glib::GHookList,
3678    pub mode: GstPadMode,
3679    pub activatefunc: GstPadActivateFunction,
3680    pub activatedata: gpointer,
3681    pub activatenotify: glib::GDestroyNotify,
3682    pub activatemodefunc: GstPadActivateModeFunction,
3683    pub activatemodedata: gpointer,
3684    pub activatemodenotify: glib::GDestroyNotify,
3685    pub peer: *mut GstPad,
3686    pub linkfunc: GstPadLinkFunction,
3687    pub linkdata: gpointer,
3688    pub linknotify: glib::GDestroyNotify,
3689    pub unlinkfunc: GstPadUnlinkFunction,
3690    pub unlinkdata: gpointer,
3691    pub unlinknotify: glib::GDestroyNotify,
3692    pub chainfunc: GstPadChainFunction,
3693    pub chaindata: gpointer,
3694    pub chainnotify: glib::GDestroyNotify,
3695    pub chainlistfunc: GstPadChainListFunction,
3696    pub chainlistdata: gpointer,
3697    pub chainlistnotify: glib::GDestroyNotify,
3698    pub getrangefunc: GstPadGetRangeFunction,
3699    pub getrangedata: gpointer,
3700    pub getrangenotify: glib::GDestroyNotify,
3701    pub eventfunc: GstPadEventFunction,
3702    pub eventdata: gpointer,
3703    pub eventnotify: glib::GDestroyNotify,
3704    pub offset: i64,
3705    pub queryfunc: GstPadQueryFunction,
3706    pub querydata: gpointer,
3707    pub querynotify: glib::GDestroyNotify,
3708    pub iterintlinkfunc: GstPadIterIntLinkFunction,
3709    pub iterintlinkdata: gpointer,
3710    pub iterintlinknotify: glib::GDestroyNotify,
3711    pub num_probes: c_int,
3712    pub num_blocked: c_int,
3713    pub priv_: *mut GstPadPrivate,
3714    pub ABI: GstPad_ABI,
3715}
3716
3717impl ::std::fmt::Debug for GstPad {
3718    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3719        f.debug_struct(&format!("GstPad @ {self:p}"))
3720            .field("object", &self.object)
3721            .field("element_private", &self.element_private)
3722            .field("padtemplate", &self.padtemplate)
3723            .field("direction", &self.direction)
3724            .field("ABI", &self.ABI)
3725            .finish()
3726    }
3727}
3728
3729#[derive(Copy, Clone)]
3730#[repr(C)]
3731pub struct GstPadTemplate {
3732    pub object: GstObject,
3733    pub name_template: *mut c_char,
3734    pub direction: GstPadDirection,
3735    pub presence: GstPadPresence,
3736    pub caps: *mut GstCaps,
3737    pub ABI: GstPadTemplate_ABI,
3738}
3739
3740impl ::std::fmt::Debug for GstPadTemplate {
3741    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3742        f.debug_struct(&format!("GstPadTemplate @ {self:p}"))
3743            .field("object", &self.object)
3744            .field("name_template", &self.name_template)
3745            .field("direction", &self.direction)
3746            .field("presence", &self.presence)
3747            .field("caps", &self.caps)
3748            .field("ABI", &self.ABI)
3749            .finish()
3750    }
3751}
3752
3753#[repr(C)]
3754#[allow(dead_code)]
3755pub struct GstParamArray {
3756    _data: [u8; 0],
3757    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3758}
3759
3760impl ::std::fmt::Debug for GstParamArray {
3761    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3762        f.debug_struct(&format!("GstParamArray @ {self:p}"))
3763            .finish()
3764    }
3765}
3766
3767#[repr(C)]
3768#[allow(dead_code)]
3769pub struct GstParamFraction {
3770    _data: [u8; 0],
3771    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3772}
3773
3774impl ::std::fmt::Debug for GstParamFraction {
3775    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3776        f.debug_struct(&format!("GstParamFraction @ {self:p}"))
3777            .finish()
3778    }
3779}
3780
3781#[derive(Copy, Clone)]
3782#[repr(C)]
3783pub struct GstPipeline {
3784    pub bin: GstBin,
3785    pub fixed_clock: *mut GstClock,
3786    pub stream_time: GstClockTime,
3787    pub delay: GstClockTime,
3788    pub priv_: *mut GstPipelinePrivate,
3789    pub _gst_reserved: [gpointer; 4],
3790}
3791
3792impl ::std::fmt::Debug for GstPipeline {
3793    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3794        f.debug_struct(&format!("GstPipeline @ {self:p}"))
3795            .field("bin", &self.bin)
3796            .field("fixed_clock", &self.fixed_clock)
3797            .field("stream_time", &self.stream_time)
3798            .field("delay", &self.delay)
3799            .finish()
3800    }
3801}
3802
3803#[repr(C)]
3804#[allow(dead_code)]
3805pub struct GstPlugin {
3806    _data: [u8; 0],
3807    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3808}
3809
3810impl ::std::fmt::Debug for GstPlugin {
3811    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3812        f.debug_struct(&format!("GstPlugin @ {self:p}")).finish()
3813    }
3814}
3815
3816#[repr(C)]
3817#[allow(dead_code)]
3818pub struct GstPluginFeature {
3819    _data: [u8; 0],
3820    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3821}
3822
3823impl ::std::fmt::Debug for GstPluginFeature {
3824    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3825        f.debug_struct(&format!("GstPluginFeature @ {self:p}"))
3826            .finish()
3827    }
3828}
3829
3830#[derive(Copy, Clone)]
3831#[repr(C)]
3832pub struct GstProxyPad {
3833    pub pad: GstPad,
3834    pub priv_: *mut GstProxyPadPrivate,
3835}
3836
3837impl ::std::fmt::Debug for GstProxyPad {
3838    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3839        f.debug_struct(&format!("GstProxyPad @ {self:p}"))
3840            .field("pad", &self.pad)
3841            .finish()
3842    }
3843}
3844
3845#[derive(Copy, Clone)]
3846#[repr(C)]
3847pub struct GstRegistry {
3848    pub object: GstObject,
3849    pub priv_: *mut GstRegistryPrivate,
3850}
3851
3852impl ::std::fmt::Debug for GstRegistry {
3853    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3854        f.debug_struct(&format!("GstRegistry @ {self:p}"))
3855            .field("object", &self.object)
3856            .finish()
3857    }
3858}
3859
3860#[derive(Copy, Clone)]
3861#[repr(C)]
3862pub struct GstSharedTaskPool {
3863    pub parent: GstTaskPool,
3864    pub priv_: *mut GstSharedTaskPoolPrivate,
3865    pub _gst_reserved: [gpointer; 4],
3866}
3867
3868impl ::std::fmt::Debug for GstSharedTaskPool {
3869    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3870        f.debug_struct(&format!("GstSharedTaskPool @ {self:p}"))
3871            .field("parent", &self.parent)
3872            .finish()
3873    }
3874}
3875
3876#[derive(Copy, Clone)]
3877#[repr(C)]
3878pub struct GstStream {
3879    pub object: GstObject,
3880    pub stream_id: *const c_char,
3881    pub priv_: *mut GstStreamPrivate,
3882    pub _gst_reserved: [gpointer; 4],
3883}
3884
3885impl ::std::fmt::Debug for GstStream {
3886    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3887        f.debug_struct(&format!("GstStream @ {self:p}"))
3888            .field("stream_id", &self.stream_id)
3889            .finish()
3890    }
3891}
3892
3893#[derive(Copy, Clone)]
3894#[repr(C)]
3895pub struct GstStreamCollection {
3896    pub object: GstObject,
3897    pub upstream_id: *mut c_char,
3898    pub priv_: *mut GstStreamCollectionPrivate,
3899    pub _gst_reserved: [gpointer; 4],
3900}
3901
3902impl ::std::fmt::Debug for GstStreamCollection {
3903    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3904        f.debug_struct(&format!("GstStreamCollection @ {self:p}"))
3905            .finish()
3906    }
3907}
3908
3909#[derive(Copy, Clone)]
3910#[repr(C)]
3911pub struct GstSystemClock {
3912    pub clock: GstClock,
3913    pub priv_: *mut GstSystemClockPrivate,
3914    pub _gst_reserved: [gpointer; 4],
3915}
3916
3917impl ::std::fmt::Debug for GstSystemClock {
3918    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3919        f.debug_struct(&format!("GstSystemClock @ {self:p}"))
3920            .field("clock", &self.clock)
3921            .finish()
3922    }
3923}
3924
3925#[derive(Copy, Clone)]
3926#[repr(C)]
3927pub struct GstTask {
3928    pub object: GstObject,
3929    pub state: GstTaskState,
3930    pub cond: glib::GCond,
3931    pub lock: *mut glib::GRecMutex,
3932    pub func: GstTaskFunction,
3933    pub user_data: gpointer,
3934    pub notify: glib::GDestroyNotify,
3935    pub running: gboolean,
3936    pub thread: *mut glib::GThread,
3937    pub priv_: *mut GstTaskPrivate,
3938    pub _gst_reserved: [gpointer; 4],
3939}
3940
3941impl ::std::fmt::Debug for GstTask {
3942    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3943        f.debug_struct(&format!("GstTask @ {self:p}"))
3944            .field("object", &self.object)
3945            .field("state", &self.state)
3946            .field("cond", &self.cond)
3947            .field("lock", &self.lock)
3948            .field("func", &self.func)
3949            .field("user_data", &self.user_data)
3950            .field("notify", &self.notify)
3951            .field("running", &self.running)
3952            .finish()
3953    }
3954}
3955
3956#[derive(Copy, Clone)]
3957#[repr(C)]
3958pub struct GstTaskPool {
3959    pub object: GstObject,
3960    pub pool: *mut glib::GThreadPool,
3961    pub _gst_reserved: [gpointer; 4],
3962}
3963
3964impl ::std::fmt::Debug for GstTaskPool {
3965    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3966        f.debug_struct(&format!("GstTaskPool @ {self:p}"))
3967            .field("object", &self.object)
3968            .finish()
3969    }
3970}
3971
3972#[derive(Copy, Clone)]
3973#[repr(C)]
3974pub struct GstTracer {
3975    pub parent: GstObject,
3976    pub priv_: *mut GstTracerPrivate,
3977    pub _gst_reserved: [gpointer; 4],
3978}
3979
3980impl ::std::fmt::Debug for GstTracer {
3981    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3982        f.debug_struct(&format!("GstTracer @ {self:p}"))
3983            .field("parent", &self.parent)
3984            .finish()
3985    }
3986}
3987
3988#[repr(C)]
3989#[allow(dead_code)]
3990pub struct GstTracerFactory {
3991    _data: [u8; 0],
3992    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3993}
3994
3995impl ::std::fmt::Debug for GstTracerFactory {
3996    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3997        f.debug_struct(&format!("GstTracerFactory @ {self:p}"))
3998            .finish()
3999    }
4000}
4001
4002#[repr(C)]
4003#[allow(dead_code)]
4004pub struct GstTracerRecord {
4005    _data: [u8; 0],
4006    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4007}
4008
4009impl ::std::fmt::Debug for GstTracerRecord {
4010    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4011        f.debug_struct(&format!("GstTracerRecord @ {self:p}"))
4012            .finish()
4013    }
4014}
4015
4016#[repr(C)]
4017#[allow(dead_code)]
4018pub struct GstTypeFindFactory {
4019    _data: [u8; 0],
4020    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4021}
4022
4023impl ::std::fmt::Debug for GstTypeFindFactory {
4024    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4025        f.debug_struct(&format!("GstTypeFindFactory @ {self:p}"))
4026            .finish()
4027    }
4028}
4029
4030#[repr(C)]
4031#[allow(dead_code)]
4032pub struct GstValueArray {
4033    _data: [u8; 0],
4034    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4035}
4036
4037impl ::std::fmt::Debug for GstValueArray {
4038    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4039        f.debug_struct(&format!("GstValueArray @ {self:p}"))
4040            .finish()
4041    }
4042}
4043
4044#[repr(C)]
4045#[allow(dead_code)]
4046pub struct GstValueList {
4047    _data: [u8; 0],
4048    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4049}
4050
4051impl ::std::fmt::Debug for GstValueList {
4052    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4053        f.debug_struct(&format!("GstValueList @ {self:p}")).finish()
4054    }
4055}
4056
4057#[repr(C)]
4058#[allow(dead_code)]
4059pub struct GstValueUniqueList {
4060    _data: [u8; 0],
4061    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4062}
4063
4064impl ::std::fmt::Debug for GstValueUniqueList {
4065    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4066        f.debug_struct(&format!("GstValueUniqueList @ {self:p}"))
4067            .finish()
4068    }
4069}
4070
4071// Interfaces
4072#[repr(C)]
4073#[allow(dead_code)]
4074pub struct GstChildProxy {
4075    _data: [u8; 0],
4076    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4077}
4078
4079impl ::std::fmt::Debug for GstChildProxy {
4080    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4081        write!(f, "GstChildProxy @ {self:p}")
4082    }
4083}
4084
4085#[repr(C)]
4086#[allow(dead_code)]
4087pub struct GstPreset {
4088    _data: [u8; 0],
4089    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4090}
4091
4092impl ::std::fmt::Debug for GstPreset {
4093    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4094        write!(f, "GstPreset @ {self:p}")
4095    }
4096}
4097
4098#[repr(C)]
4099#[allow(dead_code)]
4100pub struct GstTagSetter {
4101    _data: [u8; 0],
4102    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4103}
4104
4105impl ::std::fmt::Debug for GstTagSetter {
4106    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4107        write!(f, "GstTagSetter @ {self:p}")
4108    }
4109}
4110
4111#[repr(C)]
4112#[allow(dead_code)]
4113pub struct GstTocSetter {
4114    _data: [u8; 0],
4115    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4116}
4117
4118impl ::std::fmt::Debug for GstTocSetter {
4119    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4120        write!(f, "GstTocSetter @ {self:p}")
4121    }
4122}
4123
4124#[repr(C)]
4125#[allow(dead_code)]
4126pub struct GstURIHandler {
4127    _data: [u8; 0],
4128    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4129}
4130
4131impl ::std::fmt::Debug for GstURIHandler {
4132    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4133        write!(f, "GstURIHandler @ {self:p}")
4134    }
4135}
4136
4137unsafe extern "C" {
4138
4139    //=========================================================================
4140    // GstBufferingMode
4141    //=========================================================================
4142    pub fn gst_buffering_mode_get_type() -> GType;
4143
4144    //=========================================================================
4145    // GstBusSyncReply
4146    //=========================================================================
4147    pub fn gst_bus_sync_reply_get_type() -> GType;
4148
4149    //=========================================================================
4150    // GstCapsIntersectMode
4151    //=========================================================================
4152    pub fn gst_caps_intersect_mode_get_type() -> GType;
4153
4154    //=========================================================================
4155    // GstClockEntryType
4156    //=========================================================================
4157    pub fn gst_clock_entry_type_get_type() -> GType;
4158
4159    //=========================================================================
4160    // GstClockReturn
4161    //=========================================================================
4162    pub fn gst_clock_return_get_type() -> GType;
4163
4164    //=========================================================================
4165    // GstClockType
4166    //=========================================================================
4167    pub fn gst_clock_type_get_type() -> GType;
4168
4169    //=========================================================================
4170    // GstCoreError
4171    //=========================================================================
4172    pub fn gst_core_error_get_type() -> GType;
4173    pub fn gst_core_error_quark() -> glib::GQuark;
4174
4175    //=========================================================================
4176    // GstDebugColorMode
4177    //=========================================================================
4178    pub fn gst_debug_color_mode_get_type() -> GType;
4179
4180    //=========================================================================
4181    // GstDebugLevel
4182    //=========================================================================
4183    pub fn gst_debug_level_get_type() -> GType;
4184    pub fn gst_debug_level_get_name(level: GstDebugLevel) -> *const c_char;
4185
4186    //=========================================================================
4187    // GstEventType
4188    //=========================================================================
4189    pub fn gst_event_type_get_type() -> GType;
4190    pub fn gst_event_type_get_flags(type_: GstEventType) -> GstEventTypeFlags;
4191    pub fn gst_event_type_get_name(type_: GstEventType) -> *const c_char;
4192    pub fn gst_event_type_to_quark(type_: GstEventType) -> glib::GQuark;
4193    #[cfg(feature = "v1_22")]
4194    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4195    pub fn gst_event_type_to_sticky_ordering(type_: GstEventType) -> c_uint;
4196
4197    //=========================================================================
4198    // GstFlowReturn
4199    //=========================================================================
4200    pub fn gst_flow_return_get_type() -> GType;
4201
4202    //=========================================================================
4203    // GstFormat
4204    //=========================================================================
4205    pub fn gst_format_get_type() -> GType;
4206    pub fn gst_format_get_by_nick(nick: *const c_char) -> GstFormat;
4207    pub fn gst_format_get_details(format: GstFormat) -> *const GstFormatDefinition;
4208    pub fn gst_format_get_name(format: GstFormat) -> *const c_char;
4209    pub fn gst_format_iterate_definitions() -> *mut GstIterator;
4210    pub fn gst_format_register(nick: *const c_char, description: *const c_char) -> GstFormat;
4211    pub fn gst_format_to_quark(format: GstFormat) -> glib::GQuark;
4212
4213    //=========================================================================
4214    // GstIteratorItem
4215    //=========================================================================
4216    pub fn gst_iterator_item_get_type() -> GType;
4217
4218    //=========================================================================
4219    // GstIteratorResult
4220    //=========================================================================
4221    pub fn gst_iterator_result_get_type() -> GType;
4222
4223    //=========================================================================
4224    // GstLibraryError
4225    //=========================================================================
4226    pub fn gst_library_error_get_type() -> GType;
4227    pub fn gst_library_error_quark() -> glib::GQuark;
4228
4229    //=========================================================================
4230    // GstPadDirection
4231    //=========================================================================
4232    pub fn gst_pad_direction_get_type() -> GType;
4233
4234    //=========================================================================
4235    // GstPadLinkReturn
4236    //=========================================================================
4237    pub fn gst_pad_link_return_get_type() -> GType;
4238
4239    //=========================================================================
4240    // GstPadMode
4241    //=========================================================================
4242    pub fn gst_pad_mode_get_type() -> GType;
4243    pub fn gst_pad_mode_get_name(mode: GstPadMode) -> *const c_char;
4244
4245    //=========================================================================
4246    // GstPadPresence
4247    //=========================================================================
4248    pub fn gst_pad_presence_get_type() -> GType;
4249
4250    //=========================================================================
4251    // GstPadProbeReturn
4252    //=========================================================================
4253    pub fn gst_pad_probe_return_get_type() -> GType;
4254
4255    //=========================================================================
4256    // GstParseError
4257    //=========================================================================
4258    pub fn gst_parse_error_get_type() -> GType;
4259    pub fn gst_parse_error_quark() -> glib::GQuark;
4260
4261    //=========================================================================
4262    // GstPluginError
4263    //=========================================================================
4264    pub fn gst_plugin_error_get_type() -> GType;
4265    pub fn gst_plugin_error_quark() -> glib::GQuark;
4266
4267    //=========================================================================
4268    // GstProgressType
4269    //=========================================================================
4270    pub fn gst_progress_type_get_type() -> GType;
4271
4272    //=========================================================================
4273    // GstPromiseResult
4274    //=========================================================================
4275    pub fn gst_promise_result_get_type() -> GType;
4276
4277    //=========================================================================
4278    // GstQOSType
4279    //=========================================================================
4280    pub fn gst_qos_type_get_type() -> GType;
4281
4282    //=========================================================================
4283    // GstQueryType
4284    //=========================================================================
4285    pub fn gst_query_type_get_type() -> GType;
4286    pub fn gst_query_type_get_flags(type_: GstQueryType) -> GstQueryTypeFlags;
4287    pub fn gst_query_type_get_name(type_: GstQueryType) -> *const c_char;
4288    pub fn gst_query_type_to_quark(type_: GstQueryType) -> glib::GQuark;
4289
4290    //=========================================================================
4291    // GstRank
4292    //=========================================================================
4293    pub fn gst_rank_get_type() -> GType;
4294
4295    //=========================================================================
4296    // GstResourceError
4297    //=========================================================================
4298    pub fn gst_resource_error_get_type() -> GType;
4299    pub fn gst_resource_error_quark() -> glib::GQuark;
4300
4301    //=========================================================================
4302    // GstSearchMode
4303    //=========================================================================
4304    pub fn gst_search_mode_get_type() -> GType;
4305
4306    //=========================================================================
4307    // GstSeekType
4308    //=========================================================================
4309    pub fn gst_seek_type_get_type() -> GType;
4310
4311    //=========================================================================
4312    // GstState
4313    //=========================================================================
4314    pub fn gst_state_get_type() -> GType;
4315    #[cfg(feature = "v1_28")]
4316    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4317    pub fn gst_state_get_name(state: GstState) -> *const c_char;
4318
4319    //=========================================================================
4320    // GstStateChange
4321    //=========================================================================
4322    pub fn gst_state_change_get_type() -> GType;
4323    pub fn gst_state_change_get_name(transition: GstStateChange) -> *const c_char;
4324
4325    //=========================================================================
4326    // GstStateChangeReturn
4327    //=========================================================================
4328    pub fn gst_state_change_return_get_type() -> GType;
4329    #[cfg(feature = "v1_28")]
4330    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4331    pub fn gst_state_change_return_get_name(state_ret: GstStateChangeReturn) -> *const c_char;
4332
4333    //=========================================================================
4334    // GstStreamError
4335    //=========================================================================
4336    pub fn gst_stream_error_get_type() -> GType;
4337    pub fn gst_stream_error_quark() -> glib::GQuark;
4338
4339    //=========================================================================
4340    // GstStreamStatusType
4341    //=========================================================================
4342    pub fn gst_stream_status_type_get_type() -> GType;
4343
4344    //=========================================================================
4345    // GstStructureChangeType
4346    //=========================================================================
4347    pub fn gst_structure_change_type_get_type() -> GType;
4348
4349    //=========================================================================
4350    // GstTagFlag
4351    //=========================================================================
4352    pub fn gst_tag_flag_get_type() -> GType;
4353
4354    //=========================================================================
4355    // GstTagMergeMode
4356    //=========================================================================
4357    pub fn gst_tag_merge_mode_get_type() -> GType;
4358
4359    //=========================================================================
4360    // GstTagScope
4361    //=========================================================================
4362    pub fn gst_tag_scope_get_type() -> GType;
4363
4364    //=========================================================================
4365    // GstTaskState
4366    //=========================================================================
4367    pub fn gst_task_state_get_type() -> GType;
4368
4369    //=========================================================================
4370    // GstTocEntryType
4371    //=========================================================================
4372    pub fn gst_toc_entry_type_get_type() -> GType;
4373    pub fn gst_toc_entry_type_get_nick(type_: GstTocEntryType) -> *const c_char;
4374
4375    //=========================================================================
4376    // GstTocLoopType
4377    //=========================================================================
4378    pub fn gst_toc_loop_type_get_type() -> GType;
4379
4380    //=========================================================================
4381    // GstTocScope
4382    //=========================================================================
4383    pub fn gst_toc_scope_get_type() -> GType;
4384
4385    //=========================================================================
4386    // GstTracerValueScope
4387    //=========================================================================
4388    pub fn gst_tracer_value_scope_get_type() -> GType;
4389
4390    //=========================================================================
4391    // GstTypeFindProbability
4392    //=========================================================================
4393    pub fn gst_type_find_probability_get_type() -> GType;
4394
4395    //=========================================================================
4396    // GstURIError
4397    //=========================================================================
4398    pub fn gst_uri_error_get_type() -> GType;
4399    pub fn gst_uri_error_quark() -> glib::GQuark;
4400
4401    //=========================================================================
4402    // GstURIType
4403    //=========================================================================
4404    pub fn gst_uri_type_get_type() -> GType;
4405
4406    //=========================================================================
4407    // GstAllocatorFlags
4408    //=========================================================================
4409    pub fn gst_allocator_flags_get_type() -> GType;
4410
4411    //=========================================================================
4412    // GstBinFlags
4413    //=========================================================================
4414    pub fn gst_bin_flags_get_type() -> GType;
4415
4416    //=========================================================================
4417    // GstBufferCopyFlags
4418    //=========================================================================
4419    pub fn gst_buffer_copy_flags_get_type() -> GType;
4420
4421    //=========================================================================
4422    // GstBufferFlags
4423    //=========================================================================
4424    pub fn gst_buffer_flags_get_type() -> GType;
4425
4426    //=========================================================================
4427    // GstBufferPoolAcquireFlags
4428    //=========================================================================
4429    pub fn gst_buffer_pool_acquire_flags_get_type() -> GType;
4430
4431    //=========================================================================
4432    // GstBusFlags
4433    //=========================================================================
4434    pub fn gst_bus_flags_get_type() -> GType;
4435
4436    //=========================================================================
4437    // GstCapsFlags
4438    //=========================================================================
4439    pub fn gst_caps_flags_get_type() -> GType;
4440
4441    //=========================================================================
4442    // GstClockFlags
4443    //=========================================================================
4444    pub fn gst_clock_flags_get_type() -> GType;
4445
4446    //=========================================================================
4447    // GstDebugColorFlags
4448    //=========================================================================
4449    pub fn gst_debug_color_flags_get_type() -> GType;
4450
4451    //=========================================================================
4452    // GstDebugGraphDetails
4453    //=========================================================================
4454    pub fn gst_debug_graph_details_get_type() -> GType;
4455
4456    //=========================================================================
4457    // GstElementFlags
4458    //=========================================================================
4459    pub fn gst_element_flags_get_type() -> GType;
4460
4461    //=========================================================================
4462    // GstEventTypeFlags
4463    //=========================================================================
4464    pub fn gst_event_type_flags_get_type() -> GType;
4465
4466    //=========================================================================
4467    // GstGapFlags
4468    //=========================================================================
4469    #[cfg(feature = "v1_20")]
4470    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4471    pub fn gst_gap_flags_get_type() -> GType;
4472
4473    //=========================================================================
4474    // GstLockFlags
4475    //=========================================================================
4476    pub fn gst_lock_flags_get_type() -> GType;
4477
4478    //=========================================================================
4479    // GstLogContextFlags
4480    //=========================================================================
4481    #[cfg(feature = "v1_28")]
4482    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4483    pub fn gst_log_context_flags_get_type() -> GType;
4484
4485    //=========================================================================
4486    // GstLogContextHashFlags
4487    //=========================================================================
4488    #[cfg(feature = "v1_28")]
4489    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4490    pub fn gst_log_context_hash_flags_get_type() -> GType;
4491
4492    //=========================================================================
4493    // GstMapFlags
4494    //=========================================================================
4495    pub fn gst_map_flags_get_type() -> GType;
4496
4497    //=========================================================================
4498    // GstMemoryFlags
4499    //=========================================================================
4500    pub fn gst_memory_flags_get_type() -> GType;
4501
4502    //=========================================================================
4503    // GstMessageType
4504    //=========================================================================
4505    pub fn gst_message_type_get_type() -> GType;
4506    pub fn gst_message_type_get_name(type_: GstMessageType) -> *const c_char;
4507    pub fn gst_message_type_to_quark(type_: GstMessageType) -> glib::GQuark;
4508
4509    //=========================================================================
4510    // GstMetaFlags
4511    //=========================================================================
4512    pub fn gst_meta_flags_get_type() -> GType;
4513
4514    //=========================================================================
4515    // GstMiniObjectFlags
4516    //=========================================================================
4517    pub fn gst_mini_object_flags_get_type() -> GType;
4518
4519    //=========================================================================
4520    // GstObjectFlags
4521    //=========================================================================
4522    pub fn gst_object_flags_get_type() -> GType;
4523
4524    //=========================================================================
4525    // GstPadFlags
4526    //=========================================================================
4527    pub fn gst_pad_flags_get_type() -> GType;
4528
4529    //=========================================================================
4530    // GstPadLinkCheck
4531    //=========================================================================
4532    pub fn gst_pad_link_check_get_type() -> GType;
4533
4534    //=========================================================================
4535    // GstPadProbeType
4536    //=========================================================================
4537    pub fn gst_pad_probe_type_get_type() -> GType;
4538
4539    //=========================================================================
4540    // GstPadTemplateFlags
4541    //=========================================================================
4542    pub fn gst_pad_template_flags_get_type() -> GType;
4543
4544    //=========================================================================
4545    // GstParseFlags
4546    //=========================================================================
4547    pub fn gst_parse_flags_get_type() -> GType;
4548
4549    //=========================================================================
4550    // GstPipelineFlags
4551    //=========================================================================
4552    pub fn gst_pipeline_flags_get_type() -> GType;
4553
4554    //=========================================================================
4555    // GstPluginAPIFlags
4556    //=========================================================================
4557    #[cfg(feature = "v1_18")]
4558    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4559    pub fn gst_plugin_api_flags_get_type() -> GType;
4560
4561    //=========================================================================
4562    // GstPluginDependencyFlags
4563    //=========================================================================
4564    pub fn gst_plugin_dependency_flags_get_type() -> GType;
4565
4566    //=========================================================================
4567    // GstPluginFlags
4568    //=========================================================================
4569    pub fn gst_plugin_flags_get_type() -> GType;
4570
4571    //=========================================================================
4572    // GstQueryTypeFlags
4573    //=========================================================================
4574    pub fn gst_query_type_flags_get_type() -> GType;
4575
4576    //=========================================================================
4577    // GstSchedulingFlags
4578    //=========================================================================
4579    pub fn gst_scheduling_flags_get_type() -> GType;
4580
4581    //=========================================================================
4582    // GstSeekFlags
4583    //=========================================================================
4584    pub fn gst_seek_flags_get_type() -> GType;
4585
4586    //=========================================================================
4587    // GstSegmentFlags
4588    //=========================================================================
4589    pub fn gst_segment_flags_get_type() -> GType;
4590
4591    //=========================================================================
4592    // GstSerializeFlags
4593    //=========================================================================
4594    #[cfg(feature = "v1_20")]
4595    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4596    pub fn gst_serialize_flags_get_type() -> GType;
4597
4598    //=========================================================================
4599    // GstStackTraceFlags
4600    //=========================================================================
4601    pub fn gst_stack_trace_flags_get_type() -> GType;
4602
4603    //=========================================================================
4604    // GstStreamFlags
4605    //=========================================================================
4606    pub fn gst_stream_flags_get_type() -> GType;
4607
4608    //=========================================================================
4609    // GstStreamType
4610    //=========================================================================
4611    pub fn gst_stream_type_get_type() -> GType;
4612    pub fn gst_stream_type_get_name(stype: GstStreamType) -> *const c_char;
4613
4614    //=========================================================================
4615    // GstTracerValueFlags
4616    //=========================================================================
4617    pub fn gst_tracer_value_flags_get_type() -> GType;
4618
4619    //=========================================================================
4620    // GstAllocationParams
4621    //=========================================================================
4622    pub fn gst_allocation_params_get_type() -> GType;
4623    #[cfg(feature = "v1_20")]
4624    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4625    pub fn gst_allocation_params_new() -> *mut GstAllocationParams;
4626    pub fn gst_allocation_params_copy(
4627        params: *const GstAllocationParams,
4628    ) -> *mut GstAllocationParams;
4629    pub fn gst_allocation_params_free(params: *mut GstAllocationParams);
4630    pub fn gst_allocation_params_init(params: *mut GstAllocationParams);
4631
4632    //=========================================================================
4633    // GstAtomicQueue
4634    //=========================================================================
4635    pub fn gst_atomic_queue_get_type() -> GType;
4636    pub fn gst_atomic_queue_new(initial_size: c_uint) -> *mut GstAtomicQueue;
4637    pub fn gst_atomic_queue_length(queue: *mut GstAtomicQueue) -> c_uint;
4638    pub fn gst_atomic_queue_peek(queue: *mut GstAtomicQueue) -> gpointer;
4639    pub fn gst_atomic_queue_pop(queue: *mut GstAtomicQueue) -> gpointer;
4640    pub fn gst_atomic_queue_push(queue: *mut GstAtomicQueue, data: gpointer);
4641    pub fn gst_atomic_queue_ref(queue: *mut GstAtomicQueue);
4642    pub fn gst_atomic_queue_unref(queue: *mut GstAtomicQueue);
4643
4644    //=========================================================================
4645    // GstBuffer
4646    //=========================================================================
4647    pub fn gst_buffer_get_type() -> GType;
4648    pub fn gst_buffer_new() -> *mut GstBuffer;
4649    pub fn gst_buffer_new_allocate(
4650        allocator: *mut GstAllocator,
4651        size: size_t,
4652        params: *mut GstAllocationParams,
4653    ) -> *mut GstBuffer;
4654    #[cfg(feature = "v1_20")]
4655    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4656    pub fn gst_buffer_new_memdup(data: gconstpointer, size: size_t) -> *mut GstBuffer;
4657    pub fn gst_buffer_new_wrapped(data: gpointer, size: size_t) -> *mut GstBuffer;
4658    #[cfg(feature = "v1_16")]
4659    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4660    pub fn gst_buffer_new_wrapped_bytes(bytes: *mut glib::GBytes) -> *mut GstBuffer;
4661    pub fn gst_buffer_new_wrapped_full(
4662        flags: GstMemoryFlags,
4663        data: gpointer,
4664        maxsize: size_t,
4665        offset: size_t,
4666        size: size_t,
4667        user_data: gpointer,
4668        notify: glib::GDestroyNotify,
4669    ) -> *mut GstBuffer;
4670    #[cfg(feature = "v1_20")]
4671    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4672    pub fn gst_buffer_add_custom_meta(
4673        buffer: *mut GstBuffer,
4674        name: *const c_char,
4675    ) -> *mut GstCustomMeta;
4676    pub fn gst_buffer_add_meta(
4677        buffer: *mut GstBuffer,
4678        info: *const GstMetaInfo,
4679        params: gpointer,
4680    ) -> *mut GstMeta;
4681    pub fn gst_buffer_add_parent_buffer_meta(
4682        buffer: *mut GstBuffer,
4683        ref_: *mut GstBuffer,
4684    ) -> *mut GstParentBufferMeta;
4685    pub fn gst_buffer_add_protection_meta(
4686        buffer: *mut GstBuffer,
4687        info: *mut GstStructure,
4688    ) -> *mut GstProtectionMeta;
4689    pub fn gst_buffer_add_reference_timestamp_meta(
4690        buffer: *mut GstBuffer,
4691        reference: *mut GstCaps,
4692        timestamp: GstClockTime,
4693        duration: GstClockTime,
4694    ) -> *mut GstReferenceTimestampMeta;
4695    pub fn gst_buffer_append(buf1: *mut GstBuffer, buf2: *mut GstBuffer) -> *mut GstBuffer;
4696    pub fn gst_buffer_append_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4697    pub fn gst_buffer_append_region(
4698        buf1: *mut GstBuffer,
4699        buf2: *mut GstBuffer,
4700        offset: ssize_t,
4701        size: ssize_t,
4702    ) -> *mut GstBuffer;
4703    #[cfg(feature = "v1_18_3")]
4704    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4705    pub fn gst_buffer_copy(buf: *const GstBuffer) -> *mut GstBuffer;
4706    pub fn gst_buffer_copy_deep(buf: *const GstBuffer) -> *mut GstBuffer;
4707    pub fn gst_buffer_copy_into(
4708        dest: *mut GstBuffer,
4709        src: *mut GstBuffer,
4710        flags: GstBufferCopyFlags,
4711        offset: size_t,
4712        size: size_t,
4713    ) -> gboolean;
4714    pub fn gst_buffer_copy_region(
4715        parent: *mut GstBuffer,
4716        flags: GstBufferCopyFlags,
4717        offset: size_t,
4718        size: size_t,
4719    ) -> *mut GstBuffer;
4720    pub fn gst_buffer_extract(
4721        buffer: *mut GstBuffer,
4722        offset: size_t,
4723        dest: gpointer,
4724        size: size_t,
4725    ) -> size_t;
4726    pub fn gst_buffer_extract_dup(
4727        buffer: *mut GstBuffer,
4728        offset: size_t,
4729        size: size_t,
4730        dest: *mut u8,
4731        dest_size: *mut size_t,
4732    );
4733    pub fn gst_buffer_fill(
4734        buffer: *mut GstBuffer,
4735        offset: size_t,
4736        src: gconstpointer,
4737        size: size_t,
4738    ) -> size_t;
4739    pub fn gst_buffer_find_memory(
4740        buffer: *mut GstBuffer,
4741        offset: size_t,
4742        size: size_t,
4743        idx: *mut c_uint,
4744        length: *mut c_uint,
4745        skip: *mut size_t,
4746    ) -> gboolean;
4747    pub fn gst_buffer_foreach_meta(
4748        buffer: *mut GstBuffer,
4749        func: GstBufferForeachMetaFunc,
4750        user_data: gpointer,
4751    ) -> gboolean;
4752    pub fn gst_buffer_get_all_memory(buffer: *mut GstBuffer) -> *mut GstMemory;
4753    #[cfg(feature = "v1_20")]
4754    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4755    pub fn gst_buffer_get_custom_meta(
4756        buffer: *mut GstBuffer,
4757        name: *const c_char,
4758    ) -> *mut GstCustomMeta;
4759    pub fn gst_buffer_get_flags(buffer: *mut GstBuffer) -> GstBufferFlags;
4760    pub fn gst_buffer_get_memory(buffer: *mut GstBuffer, idx: c_uint) -> *mut GstMemory;
4761    pub fn gst_buffer_get_memory_range(
4762        buffer: *mut GstBuffer,
4763        idx: c_uint,
4764        length: c_int,
4765    ) -> *mut GstMemory;
4766    pub fn gst_buffer_get_meta(buffer: *mut GstBuffer, api: GType) -> *mut GstMeta;
4767    pub fn gst_buffer_get_n_meta(buffer: *mut GstBuffer, api_type: GType) -> c_uint;
4768    pub fn gst_buffer_get_reference_timestamp_meta(
4769        buffer: *mut GstBuffer,
4770        reference: *mut GstCaps,
4771    ) -> *mut GstReferenceTimestampMeta;
4772    pub fn gst_buffer_get_size(buffer: *mut GstBuffer) -> size_t;
4773    pub fn gst_buffer_get_sizes(
4774        buffer: *mut GstBuffer,
4775        offset: *mut size_t,
4776        maxsize: *mut size_t,
4777    ) -> size_t;
4778    pub fn gst_buffer_get_sizes_range(
4779        buffer: *mut GstBuffer,
4780        idx: c_uint,
4781        length: c_int,
4782        offset: *mut size_t,
4783        maxsize: *mut size_t,
4784    ) -> size_t;
4785    pub fn gst_buffer_has_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4786    pub fn gst_buffer_insert_memory(buffer: *mut GstBuffer, idx: c_int, mem: *mut GstMemory);
4787    pub fn gst_buffer_is_all_memory_writable(buffer: *mut GstBuffer) -> gboolean;
4788    pub fn gst_buffer_is_memory_range_writable(
4789        buffer: *mut GstBuffer,
4790        idx: c_uint,
4791        length: c_int,
4792    ) -> gboolean;
4793    pub fn gst_buffer_is_writable(buf: *const GstBuffer) -> gboolean;
4794    pub fn gst_buffer_iterate_meta(buffer: *mut GstBuffer, state: *mut gpointer) -> *mut GstMeta;
4795    pub fn gst_buffer_iterate_meta_filtered(
4796        buffer: *mut GstBuffer,
4797        state: *mut gpointer,
4798        meta_api_type: GType,
4799    ) -> *mut GstMeta;
4800    pub fn gst_buffer_make_writable(buf: *mut GstBuffer) -> *mut GstBuffer;
4801    pub fn gst_buffer_map(
4802        buffer: *mut GstBuffer,
4803        info: *mut GstMapInfo,
4804        flags: GstMapFlags,
4805    ) -> gboolean;
4806    pub fn gst_buffer_map_range(
4807        buffer: *mut GstBuffer,
4808        idx: c_uint,
4809        length: c_int,
4810        info: *mut GstMapInfo,
4811        flags: GstMapFlags,
4812    ) -> gboolean;
4813    pub fn gst_buffer_memcmp(
4814        buffer: *mut GstBuffer,
4815        offset: size_t,
4816        mem: gconstpointer,
4817        size: size_t,
4818    ) -> c_int;
4819    pub fn gst_buffer_memset(
4820        buffer: *mut GstBuffer,
4821        offset: size_t,
4822        val: u8,
4823        size: size_t,
4824    ) -> size_t;
4825    pub fn gst_buffer_n_memory(buffer: *mut GstBuffer) -> c_uint;
4826    pub fn gst_buffer_peek_memory(buffer: *mut GstBuffer, idx: c_uint) -> *mut GstMemory;
4827    pub fn gst_buffer_prepend_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4828    #[cfg(feature = "v1_18_3")]
4829    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4830    pub fn gst_buffer_ref(buf: *mut GstBuffer) -> *mut GstBuffer;
4831    pub fn gst_buffer_remove_all_memory(buffer: *mut GstBuffer);
4832    pub fn gst_buffer_remove_memory(buffer: *mut GstBuffer, idx: c_uint);
4833    pub fn gst_buffer_remove_memory_range(buffer: *mut GstBuffer, idx: c_uint, length: c_int);
4834    pub fn gst_buffer_remove_meta(buffer: *mut GstBuffer, meta: *mut GstMeta) -> gboolean;
4835    pub fn gst_buffer_replace_all_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4836    pub fn gst_buffer_replace_memory(buffer: *mut GstBuffer, idx: c_uint, mem: *mut GstMemory);
4837    pub fn gst_buffer_replace_memory_range(
4838        buffer: *mut GstBuffer,
4839        idx: c_uint,
4840        length: c_int,
4841        mem: *mut GstMemory,
4842    );
4843    pub fn gst_buffer_resize(buffer: *mut GstBuffer, offset: ssize_t, size: ssize_t);
4844    pub fn gst_buffer_resize_range(
4845        buffer: *mut GstBuffer,
4846        idx: c_uint,
4847        length: c_int,
4848        offset: ssize_t,
4849        size: ssize_t,
4850    ) -> gboolean;
4851    pub fn gst_buffer_set_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4852    pub fn gst_buffer_set_size(buffer: *mut GstBuffer, size: ssize_t);
4853    pub fn gst_buffer_unmap(buffer: *mut GstBuffer, info: *mut GstMapInfo);
4854    #[cfg(feature = "v1_18_3")]
4855    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4856    pub fn gst_buffer_unref(buf: *mut GstBuffer);
4857    pub fn gst_buffer_unset_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4858    pub fn gst_buffer_get_max_memory() -> c_uint;
4859    #[cfg(feature = "v1_18_3")]
4860    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4861    pub fn gst_buffer_replace(obuf: *mut *mut GstBuffer, nbuf: *mut GstBuffer) -> gboolean;
4862    #[cfg(feature = "v1_28")]
4863    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4864    pub fn gst_buffer_steal(old_buffer: *mut *mut GstBuffer) -> *mut GstBuffer;
4865    #[cfg(feature = "v1_28")]
4866    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4867    pub fn gst_buffer_take(old_buffer: *mut *mut GstBuffer, new_buffer: *mut GstBuffer)
4868    -> gboolean;
4869
4870    //=========================================================================
4871    // GstBufferList
4872    //=========================================================================
4873    pub fn gst_buffer_list_get_type() -> GType;
4874    pub fn gst_buffer_list_new() -> *mut GstBufferList;
4875    pub fn gst_buffer_list_new_sized(size: c_uint) -> *mut GstBufferList;
4876    pub fn gst_buffer_list_calculate_size(list: *mut GstBufferList) -> size_t;
4877    #[cfg(feature = "v1_18_3")]
4878    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4879    pub fn gst_buffer_list_copy(list: *const GstBufferList) -> *mut GstBufferList;
4880    pub fn gst_buffer_list_copy_deep(list: *const GstBufferList) -> *mut GstBufferList;
4881    pub fn gst_buffer_list_foreach(
4882        list: *mut GstBufferList,
4883        func: GstBufferListFunc,
4884        user_data: gpointer,
4885    ) -> gboolean;
4886    pub fn gst_buffer_list_get(list: *mut GstBufferList, idx: c_uint) -> *mut GstBuffer;
4887    pub fn gst_buffer_list_get_writable(list: *mut GstBufferList, idx: c_uint) -> *mut GstBuffer;
4888    pub fn gst_buffer_list_insert(list: *mut GstBufferList, idx: c_int, buffer: *mut GstBuffer);
4889    pub fn gst_buffer_list_is_writable(list: *const GstBufferList) -> gboolean;
4890    pub fn gst_buffer_list_length(list: *mut GstBufferList) -> c_uint;
4891    pub fn gst_buffer_list_make_writable(list: *mut GstBufferList) -> *mut GstBufferList;
4892    #[cfg(feature = "v1_18_3")]
4893    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4894    pub fn gst_buffer_list_ref(list: *mut GstBufferList) -> *mut GstBufferList;
4895    pub fn gst_buffer_list_remove(list: *mut GstBufferList, idx: c_uint, length: c_uint);
4896    #[cfg(feature = "v1_18_3")]
4897    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4898    pub fn gst_buffer_list_unref(list: *mut GstBufferList);
4899    #[cfg(feature = "v1_18_3")]
4900    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4901    pub fn gst_buffer_list_replace(
4902        old_list: *mut *mut GstBufferList,
4903        new_list: *mut GstBufferList,
4904    ) -> gboolean;
4905    #[cfg(feature = "v1_28")]
4906    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4907    pub fn gst_buffer_list_steal(old_list: *mut *mut GstBufferList) -> *mut GstBufferList;
4908    #[cfg(feature = "v1_18_3")]
4909    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4910    pub fn gst_buffer_list_take(
4911        old_list: *mut *mut GstBufferList,
4912        new_list: *mut GstBufferList,
4913    ) -> gboolean;
4914
4915    //=========================================================================
4916    // GstCaps
4917    //=========================================================================
4918    pub fn gst_caps_get_type() -> GType;
4919    pub fn gst_caps_new_any() -> *mut GstCaps;
4920    pub fn gst_caps_new_empty() -> *mut GstCaps;
4921    pub fn gst_caps_new_empty_simple(media_type: *const c_char) -> *mut GstCaps;
4922    pub fn gst_caps_new_full(struct1: *mut GstStructure, ...) -> *mut GstCaps;
4923    //pub fn gst_caps_new_full_valist(structure: *mut GstStructure, var_args: /*Unimplemented*/va_list) -> *mut GstCaps;
4924    #[cfg(feature = "v1_26")]
4925    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4926    pub fn gst_caps_new_id_str_empty_simple(media_type: *const GstIdStr) -> *mut GstCaps;
4927    #[cfg(feature = "v1_26")]
4928    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4929    pub fn gst_caps_new_id_str_simple(
4930        media_type: *const GstIdStr,
4931        fieldname: *const GstIdStr,
4932        ...
4933    ) -> *mut GstCaps;
4934    pub fn gst_caps_new_simple(
4935        media_type: *const c_char,
4936        fieldname: *const c_char,
4937        ...
4938    ) -> *mut GstCaps;
4939    #[cfg(feature = "v1_26")]
4940    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4941    pub fn gst_caps_new_static_str_empty_simple(media_type: *const c_char) -> *mut GstCaps;
4942    #[cfg(feature = "v1_26")]
4943    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4944    pub fn gst_caps_new_static_str_simple(
4945        media_type: *const c_char,
4946        fieldname: *const c_char,
4947        ...
4948    ) -> *mut GstCaps;
4949    pub fn gst_caps_append(caps1: *mut GstCaps, caps2: *mut GstCaps);
4950    pub fn gst_caps_append_structure(caps: *mut GstCaps, structure: *mut GstStructure);
4951    pub fn gst_caps_append_structure_full(
4952        caps: *mut GstCaps,
4953        structure: *mut GstStructure,
4954        features: *mut GstCapsFeatures,
4955    );
4956    pub fn gst_caps_can_intersect(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4957    #[cfg(feature = "v1_16")]
4958    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4959    pub fn gst_caps_copy(caps: *const GstCaps) -> *mut GstCaps;
4960    #[cfg(feature = "v1_16")]
4961    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4962    pub fn gst_caps_copy_nth(caps: *const GstCaps, nth: c_uint) -> *mut GstCaps;
4963    pub fn gst_caps_filter_and_map_in_place(
4964        caps: *mut GstCaps,
4965        func: GstCapsFilterMapFunc,
4966        user_data: gpointer,
4967    );
4968    pub fn gst_caps_fixate(caps: *mut GstCaps) -> *mut GstCaps;
4969    pub fn gst_caps_foreach(
4970        caps: *const GstCaps,
4971        func: GstCapsForeachFunc,
4972        user_data: gpointer,
4973    ) -> gboolean;
4974    pub fn gst_caps_get_features(caps: *const GstCaps, index: c_uint) -> *mut GstCapsFeatures;
4975    pub fn gst_caps_get_size(caps: *const GstCaps) -> c_uint;
4976    pub fn gst_caps_get_structure(caps: *const GstCaps, index: c_uint) -> *mut GstStructure;
4977    #[cfg(feature = "v1_26")]
4978    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4979    pub fn gst_caps_id_str_set_simple(caps: *mut GstCaps, field: *const GstIdStr, ...);
4980    //#[cfg(feature = "v1_26")]
4981    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4982    //pub fn gst_caps_id_str_set_simple_valist(caps: *mut GstCaps, field: *const GstIdStr, varargs: /*Unimplemented*/va_list);
4983    #[cfg(feature = "v1_26")]
4984    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
4985    pub fn gst_caps_id_str_set_value(
4986        caps: *mut GstCaps,
4987        field: *const GstIdStr,
4988        value: *const gobject::GValue,
4989    );
4990    pub fn gst_caps_intersect(caps1: *mut GstCaps, caps2: *mut GstCaps) -> *mut GstCaps;
4991    pub fn gst_caps_intersect_full(
4992        caps1: *mut GstCaps,
4993        caps2: *mut GstCaps,
4994        mode: GstCapsIntersectMode,
4995    ) -> *mut GstCaps;
4996    pub fn gst_caps_is_always_compatible(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
4997    pub fn gst_caps_is_any(caps: *const GstCaps) -> gboolean;
4998    pub fn gst_caps_is_empty(caps: *const GstCaps) -> gboolean;
4999    pub fn gst_caps_is_equal(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
5000    pub fn gst_caps_is_equal_fixed(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
5001    pub fn gst_caps_is_fixed(caps: *const GstCaps) -> gboolean;
5002    pub fn gst_caps_is_strictly_equal(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
5003    pub fn gst_caps_is_subset(subset: *const GstCaps, superset: *const GstCaps) -> gboolean;
5004    pub fn gst_caps_is_subset_structure(
5005        caps: *const GstCaps,
5006        structure: *const GstStructure,
5007    ) -> gboolean;
5008    pub fn gst_caps_is_subset_structure_full(
5009        caps: *const GstCaps,
5010        structure: *const GstStructure,
5011        features: *const GstCapsFeatures,
5012    ) -> gboolean;
5013    pub fn gst_caps_is_writable(caps: *const GstCaps) -> gboolean;
5014    pub fn gst_caps_make_writable(caps: *mut GstCaps) -> *mut GstCaps;
5015    pub fn gst_caps_map_in_place(
5016        caps: *mut GstCaps,
5017        func: GstCapsMapFunc,
5018        user_data: gpointer,
5019    ) -> gboolean;
5020    pub fn gst_caps_merge(caps1: *mut GstCaps, caps2: *mut GstCaps) -> *mut GstCaps;
5021    pub fn gst_caps_merge_structure(
5022        caps: *mut GstCaps,
5023        structure: *mut GstStructure,
5024    ) -> *mut GstCaps;
5025    pub fn gst_caps_merge_structure_full(
5026        caps: *mut GstCaps,
5027        structure: *mut GstStructure,
5028        features: *mut GstCapsFeatures,
5029    ) -> *mut GstCaps;
5030    pub fn gst_caps_normalize(caps: *mut GstCaps) -> *mut GstCaps;
5031    #[cfg(feature = "v1_18_3")]
5032    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5033    pub fn gst_caps_ref(caps: *mut GstCaps) -> *mut GstCaps;
5034    pub fn gst_caps_remove_structure(caps: *mut GstCaps, idx: c_uint);
5035    #[cfg(feature = "v1_20")]
5036    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5037    pub fn gst_caps_serialize(caps: *const GstCaps, flags: GstSerializeFlags) -> *mut c_char;
5038    pub fn gst_caps_set_features(caps: *mut GstCaps, index: c_uint, features: *mut GstCapsFeatures);
5039    #[cfg(feature = "v1_16")]
5040    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5041    pub fn gst_caps_set_features_simple(caps: *mut GstCaps, features: *mut GstCapsFeatures);
5042    pub fn gst_caps_set_simple(caps: *mut GstCaps, field: *const c_char, ...);
5043    #[cfg(feature = "v1_26")]
5044    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5045    pub fn gst_caps_set_simple_static_str(caps: *mut GstCaps, field: *const c_char, ...);
5046    //#[cfg(feature = "v1_26")]
5047    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5048    //pub fn gst_caps_set_simple_static_str_valist(caps: *mut GstCaps, field: *const c_char, varargs: /*Unimplemented*/va_list);
5049    //pub fn gst_caps_set_simple_valist(caps: *mut GstCaps, field: *const c_char, varargs: /*Unimplemented*/va_list);
5050    pub fn gst_caps_set_value(
5051        caps: *mut GstCaps,
5052        field: *const c_char,
5053        value: *const gobject::GValue,
5054    );
5055    #[cfg(feature = "v1_26")]
5056    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5057    pub fn gst_caps_set_value_static_str(
5058        caps: *mut GstCaps,
5059        field: *const c_char,
5060        value: *const gobject::GValue,
5061    );
5062    pub fn gst_caps_simplify(caps: *mut GstCaps) -> *mut GstCaps;
5063    pub fn gst_caps_steal_structure(caps: *mut GstCaps, index: c_uint) -> *mut GstStructure;
5064    pub fn gst_caps_subtract(minuend: *mut GstCaps, subtrahend: *mut GstCaps) -> *mut GstCaps;
5065    pub fn gst_caps_to_string(caps: *const GstCaps) -> *mut c_char;
5066    pub fn gst_caps_truncate(caps: *mut GstCaps) -> *mut GstCaps;
5067    #[cfg(feature = "v1_18_3")]
5068    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5069    pub fn gst_caps_unref(caps: *mut GstCaps);
5070    pub fn gst_caps_from_string(string: *const c_char) -> *mut GstCaps;
5071    #[cfg(feature = "v1_18_3")]
5072    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5073    pub fn gst_caps_replace(old_caps: *mut *mut GstCaps, new_caps: *mut GstCaps) -> gboolean;
5074    #[cfg(feature = "v1_28")]
5075    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5076    pub fn gst_caps_steal(old_caps: *mut *mut GstCaps) -> *mut GstCaps;
5077    #[cfg(feature = "v1_18_3")]
5078    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5079    pub fn gst_caps_take(old_caps: *mut *mut GstCaps, new_caps: *mut GstCaps) -> gboolean;
5080
5081    //=========================================================================
5082    // GstCapsFeatures
5083    //=========================================================================
5084    pub fn gst_caps_features_get_type() -> GType;
5085    pub fn gst_caps_features_new(feature1: *const c_char, ...) -> *mut GstCapsFeatures;
5086    pub fn gst_caps_features_new_any() -> *mut GstCapsFeatures;
5087    pub fn gst_caps_features_new_empty() -> *mut GstCapsFeatures;
5088    pub fn gst_caps_features_new_id(feature1: glib::GQuark, ...) -> *mut GstCapsFeatures;
5089    #[cfg(feature = "v1_26")]
5090    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5091    pub fn gst_caps_features_new_id_str(feature1: *const GstIdStr, ...) -> *mut GstCapsFeatures;
5092    //#[cfg(feature = "v1_26")]
5093    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5094    //pub fn gst_caps_features_new_id_str_valist(feature1: *const GstIdStr, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
5095    //pub fn gst_caps_features_new_id_valist(feature1: glib::GQuark, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
5096    #[cfg(feature = "v1_20")]
5097    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5098    pub fn gst_caps_features_new_single(feature: *const c_char) -> *mut GstCapsFeatures;
5099    #[cfg(feature = "v1_26")]
5100    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5101    pub fn gst_caps_features_new_single_static_str(feature: *const c_char) -> *mut GstCapsFeatures;
5102    #[cfg(feature = "v1_26")]
5103    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5104    pub fn gst_caps_features_new_static_str(feature1: *const c_char, ...) -> *mut GstCapsFeatures;
5105    //#[cfg(feature = "v1_26")]
5106    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5107    //pub fn gst_caps_features_new_static_str_valist(feature1: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
5108    //pub fn gst_caps_features_new_valist(feature1: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
5109    pub fn gst_caps_features_add(features: *mut GstCapsFeatures, feature: *const c_char);
5110    pub fn gst_caps_features_add_id(features: *mut GstCapsFeatures, feature: glib::GQuark);
5111    #[cfg(feature = "v1_26")]
5112    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5113    pub fn gst_caps_features_add_id_str(features: *mut GstCapsFeatures, feature: *const GstIdStr);
5114    #[cfg(feature = "v1_26")]
5115    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5116    pub fn gst_caps_features_add_static_str(features: *mut GstCapsFeatures, feature: *const c_char);
5117    pub fn gst_caps_features_contains(
5118        features: *const GstCapsFeatures,
5119        feature: *const c_char,
5120    ) -> gboolean;
5121    pub fn gst_caps_features_contains_id(
5122        features: *const GstCapsFeatures,
5123        feature: glib::GQuark,
5124    ) -> gboolean;
5125    #[cfg(feature = "v1_26")]
5126    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5127    pub fn gst_caps_features_contains_id_str(
5128        features: *const GstCapsFeatures,
5129        feature: *const GstIdStr,
5130    ) -> gboolean;
5131    pub fn gst_caps_features_copy(features: *const GstCapsFeatures) -> *mut GstCapsFeatures;
5132    pub fn gst_caps_features_free(features: *mut GstCapsFeatures);
5133    pub fn gst_caps_features_get_nth(features: *const GstCapsFeatures, i: c_uint) -> *const c_char;
5134    pub fn gst_caps_features_get_nth_id(
5135        features: *const GstCapsFeatures,
5136        i: c_uint,
5137    ) -> glib::GQuark;
5138    #[cfg(feature = "v1_26")]
5139    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5140    pub fn gst_caps_features_get_nth_id_str(
5141        features: *const GstCapsFeatures,
5142        i: c_uint,
5143    ) -> *const GstIdStr;
5144    pub fn gst_caps_features_get_size(features: *const GstCapsFeatures) -> c_uint;
5145    pub fn gst_caps_features_is_any(features: *const GstCapsFeatures) -> gboolean;
5146    pub fn gst_caps_features_is_equal(
5147        features1: *const GstCapsFeatures,
5148        features2: *const GstCapsFeatures,
5149    ) -> gboolean;
5150    pub fn gst_caps_features_remove(features: *mut GstCapsFeatures, feature: *const c_char);
5151    pub fn gst_caps_features_remove_id(features: *mut GstCapsFeatures, feature: glib::GQuark);
5152    #[cfg(feature = "v1_26")]
5153    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5154    pub fn gst_caps_features_remove_id_str(
5155        features: *mut GstCapsFeatures,
5156        feature: *const GstIdStr,
5157    );
5158    pub fn gst_caps_features_set_parent_refcount(
5159        features: *mut GstCapsFeatures,
5160        refcount: *mut c_int,
5161    ) -> gboolean;
5162    pub fn gst_caps_features_to_string(features: *const GstCapsFeatures) -> *mut c_char;
5163    pub fn gst_caps_features_from_string(features: *const c_char) -> *mut GstCapsFeatures;
5164
5165    //=========================================================================
5166    // GstContext
5167    //=========================================================================
5168    pub fn gst_context_get_type() -> GType;
5169    pub fn gst_context_new(context_type: *const c_char, persistent: gboolean) -> *mut GstContext;
5170    #[cfg(feature = "v1_18_3")]
5171    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5172    pub fn gst_context_copy(context: *const GstContext) -> *mut GstContext;
5173    pub fn gst_context_get_context_type(context: *const GstContext) -> *const c_char;
5174    pub fn gst_context_get_structure(context: *const GstContext) -> *const GstStructure;
5175    #[cfg(feature = "v1_28")]
5176    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5177    pub fn gst_context_get_task_pool(
5178        context: *mut GstContext,
5179        pool: *mut *mut GstTaskPool,
5180    ) -> gboolean;
5181    pub fn gst_context_has_context_type(
5182        context: *const GstContext,
5183        context_type: *const c_char,
5184    ) -> gboolean;
5185    pub fn gst_context_is_persistent(context: *const GstContext) -> gboolean;
5186    pub fn gst_context_is_writable(context: *const GstContext) -> gboolean;
5187    pub fn gst_context_make_writable(context: *mut GstContext) -> *mut GstContext;
5188    #[cfg(feature = "v1_18_3")]
5189    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5190    pub fn gst_context_ref(context: *mut GstContext) -> *mut GstContext;
5191    #[cfg(feature = "v1_28")]
5192    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5193    pub fn gst_context_set_task_pool(context: *mut GstContext, pool: *mut GstTaskPool);
5194    #[cfg(feature = "v1_18_3")]
5195    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5196    pub fn gst_context_unref(context: *mut GstContext);
5197    pub fn gst_context_writable_structure(context: *mut GstContext) -> *mut GstStructure;
5198    #[cfg(feature = "v1_18_3")]
5199    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5200    pub fn gst_context_replace(
5201        old_context: *mut *mut GstContext,
5202        new_context: *mut GstContext,
5203    ) -> gboolean;
5204
5205    //=========================================================================
5206    // GstCustomMeta
5207    //=========================================================================
5208    #[cfg(feature = "v1_20")]
5209    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5210    pub fn gst_custom_meta_get_structure(meta: *mut GstCustomMeta) -> *mut GstStructure;
5211    #[cfg(feature = "v1_20")]
5212    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5213    pub fn gst_custom_meta_has_name(meta: *mut GstCustomMeta, name: *const c_char) -> gboolean;
5214
5215    //=========================================================================
5216    // GstDateTime
5217    //=========================================================================
5218    pub fn gst_date_time_get_type() -> GType;
5219    pub fn gst_date_time_new(
5220        tzoffset: c_float,
5221        year: c_int,
5222        month: c_int,
5223        day: c_int,
5224        hour: c_int,
5225        minute: c_int,
5226        seconds: c_double,
5227    ) -> *mut GstDateTime;
5228    pub fn gst_date_time_new_from_g_date_time(dt: *mut glib::GDateTime) -> *mut GstDateTime;
5229    pub fn gst_date_time_new_from_iso8601_string(string: *const c_char) -> *mut GstDateTime;
5230    pub fn gst_date_time_new_from_unix_epoch_local_time(secs: i64) -> *mut GstDateTime;
5231    #[cfg(feature = "v1_18")]
5232    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5233    pub fn gst_date_time_new_from_unix_epoch_local_time_usecs(usecs: i64) -> *mut GstDateTime;
5234    pub fn gst_date_time_new_from_unix_epoch_utc(secs: i64) -> *mut GstDateTime;
5235    #[cfg(feature = "v1_18")]
5236    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5237    pub fn gst_date_time_new_from_unix_epoch_utc_usecs(usecs: i64) -> *mut GstDateTime;
5238    pub fn gst_date_time_new_local_time(
5239        year: c_int,
5240        month: c_int,
5241        day: c_int,
5242        hour: c_int,
5243        minute: c_int,
5244        seconds: c_double,
5245    ) -> *mut GstDateTime;
5246    pub fn gst_date_time_new_now_local_time() -> *mut GstDateTime;
5247    pub fn gst_date_time_new_now_utc() -> *mut GstDateTime;
5248    pub fn gst_date_time_new_y(year: c_int) -> *mut GstDateTime;
5249    pub fn gst_date_time_new_ym(year: c_int, month: c_int) -> *mut GstDateTime;
5250    pub fn gst_date_time_new_ymd(year: c_int, month: c_int, day: c_int) -> *mut GstDateTime;
5251    pub fn gst_date_time_get_day(datetime: *const GstDateTime) -> c_int;
5252    pub fn gst_date_time_get_hour(datetime: *const GstDateTime) -> c_int;
5253    pub fn gst_date_time_get_microsecond(datetime: *const GstDateTime) -> c_int;
5254    pub fn gst_date_time_get_minute(datetime: *const GstDateTime) -> c_int;
5255    pub fn gst_date_time_get_month(datetime: *const GstDateTime) -> c_int;
5256    pub fn gst_date_time_get_second(datetime: *const GstDateTime) -> c_int;
5257    pub fn gst_date_time_get_time_zone_offset(datetime: *const GstDateTime) -> c_float;
5258    pub fn gst_date_time_get_year(datetime: *const GstDateTime) -> c_int;
5259    pub fn gst_date_time_has_day(datetime: *const GstDateTime) -> gboolean;
5260    pub fn gst_date_time_has_month(datetime: *const GstDateTime) -> gboolean;
5261    pub fn gst_date_time_has_second(datetime: *const GstDateTime) -> gboolean;
5262    pub fn gst_date_time_has_time(datetime: *const GstDateTime) -> gboolean;
5263    pub fn gst_date_time_has_year(datetime: *const GstDateTime) -> gboolean;
5264    pub fn gst_date_time_ref(datetime: *mut GstDateTime) -> *mut GstDateTime;
5265    pub fn gst_date_time_to_g_date_time(datetime: *mut GstDateTime) -> *mut glib::GDateTime;
5266    pub fn gst_date_time_to_iso8601_string(datetime: *mut GstDateTime) -> *mut c_char;
5267    pub fn gst_date_time_unref(datetime: *mut GstDateTime);
5268
5269    //=========================================================================
5270    // GstDebugCategory
5271    //=========================================================================
5272    pub fn gst_debug_category_free(category: *mut GstDebugCategory);
5273    pub fn gst_debug_category_get_color(category: *mut GstDebugCategory) -> c_uint;
5274    pub fn gst_debug_category_get_description(category: *mut GstDebugCategory) -> *const c_char;
5275    pub fn gst_debug_category_get_name(category: *mut GstDebugCategory) -> *const c_char;
5276    pub fn gst_debug_category_get_threshold(category: *mut GstDebugCategory) -> GstDebugLevel;
5277    pub fn gst_debug_category_reset_threshold(category: *mut GstDebugCategory);
5278    pub fn gst_debug_category_set_threshold(category: *mut GstDebugCategory, level: GstDebugLevel);
5279
5280    //=========================================================================
5281    // GstDebugMessage
5282    //=========================================================================
5283    pub fn gst_debug_message_get(message: *mut GstDebugMessage) -> *const c_char;
5284    #[cfg(feature = "v1_22")]
5285    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
5286    pub fn gst_debug_message_get_id(message: *mut GstDebugMessage) -> *const c_char;
5287
5288    //=========================================================================
5289    // GstDeviceProviderClass
5290    //=========================================================================
5291    pub fn gst_device_provider_class_add_metadata(
5292        klass: *mut GstDeviceProviderClass,
5293        key: *const c_char,
5294        value: *const c_char,
5295    );
5296    pub fn gst_device_provider_class_add_static_metadata(
5297        klass: *mut GstDeviceProviderClass,
5298        key: *const c_char,
5299        value: *const c_char,
5300    );
5301    pub fn gst_device_provider_class_get_metadata(
5302        klass: *mut GstDeviceProviderClass,
5303        key: *const c_char,
5304    ) -> *const c_char;
5305    pub fn gst_device_provider_class_set_metadata(
5306        klass: *mut GstDeviceProviderClass,
5307        longname: *const c_char,
5308        classification: *const c_char,
5309        description: *const c_char,
5310        author: *const c_char,
5311    );
5312    pub fn gst_device_provider_class_set_static_metadata(
5313        klass: *mut GstDeviceProviderClass,
5314        longname: *const c_char,
5315        classification: *const c_char,
5316        description: *const c_char,
5317        author: *const c_char,
5318    );
5319
5320    //=========================================================================
5321    // GstElementClass
5322    //=========================================================================
5323    pub fn gst_element_class_add_metadata(
5324        klass: *mut GstElementClass,
5325        key: *const c_char,
5326        value: *const c_char,
5327    );
5328    pub fn gst_element_class_add_pad_template(
5329        klass: *mut GstElementClass,
5330        templ: *mut GstPadTemplate,
5331    );
5332    pub fn gst_element_class_add_static_metadata(
5333        klass: *mut GstElementClass,
5334        key: *const c_char,
5335        value: *const c_char,
5336    );
5337    pub fn gst_element_class_add_static_pad_template(
5338        klass: *mut GstElementClass,
5339        static_templ: *mut GstStaticPadTemplate,
5340    );
5341    pub fn gst_element_class_add_static_pad_template_with_gtype(
5342        klass: *mut GstElementClass,
5343        static_templ: *mut GstStaticPadTemplate,
5344        pad_type: GType,
5345    );
5346    pub fn gst_element_class_get_metadata(
5347        klass: *mut GstElementClass,
5348        key: *const c_char,
5349    ) -> *const c_char;
5350    pub fn gst_element_class_get_pad_template(
5351        element_class: *mut GstElementClass,
5352        name: *const c_char,
5353    ) -> *mut GstPadTemplate;
5354    pub fn gst_element_class_get_pad_template_list(
5355        element_class: *mut GstElementClass,
5356    ) -> *mut glib::GList;
5357    pub fn gst_element_class_set_metadata(
5358        klass: *mut GstElementClass,
5359        longname: *const c_char,
5360        classification: *const c_char,
5361        description: *const c_char,
5362        author: *const c_char,
5363    );
5364    pub fn gst_element_class_set_static_metadata(
5365        klass: *mut GstElementClass,
5366        longname: *const c_char,
5367        classification: *const c_char,
5368        description: *const c_char,
5369        author: *const c_char,
5370    );
5371
5372    //=========================================================================
5373    // GstEvent
5374    //=========================================================================
5375    pub fn gst_event_get_type() -> GType;
5376    pub fn gst_event_new_buffer_size(
5377        format: GstFormat,
5378        minsize: i64,
5379        maxsize: i64,
5380        async_: gboolean,
5381    ) -> *mut GstEvent;
5382    pub fn gst_event_new_caps(caps: *mut GstCaps) -> *mut GstEvent;
5383    pub fn gst_event_new_custom(type_: GstEventType, structure: *mut GstStructure)
5384    -> *mut GstEvent;
5385    pub fn gst_event_new_eos() -> *mut GstEvent;
5386    pub fn gst_event_new_flush_start() -> *mut GstEvent;
5387    pub fn gst_event_new_flush_stop(reset_time: gboolean) -> *mut GstEvent;
5388    pub fn gst_event_new_gap(timestamp: GstClockTime, duration: GstClockTime) -> *mut GstEvent;
5389    #[cfg(feature = "v1_18")]
5390    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5391    pub fn gst_event_new_instant_rate_change(
5392        rate_multiplier: c_double,
5393        new_flags: GstSegmentFlags,
5394    ) -> *mut GstEvent;
5395    #[cfg(feature = "v1_18")]
5396    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5397    pub fn gst_event_new_instant_rate_sync_time(
5398        rate_multiplier: c_double,
5399        running_time: GstClockTime,
5400        upstream_running_time: GstClockTime,
5401    ) -> *mut GstEvent;
5402    pub fn gst_event_new_latency(latency: GstClockTime) -> *mut GstEvent;
5403    pub fn gst_event_new_navigation(structure: *mut GstStructure) -> *mut GstEvent;
5404    pub fn gst_event_new_protection(
5405        system_id: *const c_char,
5406        data: *mut GstBuffer,
5407        origin: *const c_char,
5408    ) -> *mut GstEvent;
5409    pub fn gst_event_new_qos(
5410        type_: GstQOSType,
5411        proportion: c_double,
5412        diff: GstClockTimeDiff,
5413        timestamp: GstClockTime,
5414    ) -> *mut GstEvent;
5415    pub fn gst_event_new_reconfigure() -> *mut GstEvent;
5416    pub fn gst_event_new_seek(
5417        rate: c_double,
5418        format: GstFormat,
5419        flags: GstSeekFlags,
5420        start_type: GstSeekType,
5421        start: i64,
5422        stop_type: GstSeekType,
5423        stop: i64,
5424    ) -> *mut GstEvent;
5425    pub fn gst_event_new_segment(segment: *const GstSegment) -> *mut GstEvent;
5426    pub fn gst_event_new_segment_done(format: GstFormat, position: i64) -> *mut GstEvent;
5427    pub fn gst_event_new_select_streams(streams: *mut glib::GList) -> *mut GstEvent;
5428    pub fn gst_event_new_sink_message(name: *const c_char, msg: *mut GstMessage) -> *mut GstEvent;
5429    pub fn gst_event_new_step(
5430        format: GstFormat,
5431        amount: u64,
5432        rate: c_double,
5433        flush: gboolean,
5434        intermediate: gboolean,
5435    ) -> *mut GstEvent;
5436    pub fn gst_event_new_stream_collection(collection: *mut GstStreamCollection) -> *mut GstEvent;
5437    pub fn gst_event_new_stream_group_done(group_id: c_uint) -> *mut GstEvent;
5438    pub fn gst_event_new_stream_start(stream_id: *const c_char) -> *mut GstEvent;
5439    pub fn gst_event_new_tag(taglist: *mut GstTagList) -> *mut GstEvent;
5440    pub fn gst_event_new_toc(toc: *mut GstToc, updated: gboolean) -> *mut GstEvent;
5441    pub fn gst_event_new_toc_select(uid: *const c_char) -> *mut GstEvent;
5442    #[cfg(feature = "v1_18_3")]
5443    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5444    pub fn gst_event_copy(event: *const GstEvent) -> *mut GstEvent;
5445    pub fn gst_event_copy_segment(event: *mut GstEvent, segment: *mut GstSegment);
5446    pub fn gst_event_get_running_time_offset(event: *mut GstEvent) -> i64;
5447    pub fn gst_event_get_seqnum(event: *mut GstEvent) -> u32;
5448    pub fn gst_event_get_structure(event: *mut GstEvent) -> *const GstStructure;
5449    pub fn gst_event_has_name(event: *mut GstEvent, name: *const c_char) -> gboolean;
5450    #[cfg(feature = "v1_18")]
5451    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5452    pub fn gst_event_has_name_id(event: *mut GstEvent, name: glib::GQuark) -> gboolean;
5453    pub fn gst_event_is_writable(event: *const GstEvent) -> gboolean;
5454    pub fn gst_event_make_writable(event: *mut GstEvent) -> *mut GstEvent;
5455    pub fn gst_event_parse_buffer_size(
5456        event: *mut GstEvent,
5457        format: *mut GstFormat,
5458        minsize: *mut i64,
5459        maxsize: *mut i64,
5460        async_: *mut gboolean,
5461    );
5462    pub fn gst_event_parse_caps(event: *mut GstEvent, caps: *mut *mut GstCaps);
5463    pub fn gst_event_parse_flush_stop(event: *mut GstEvent, reset_time: *mut gboolean);
5464    pub fn gst_event_parse_gap(
5465        event: *mut GstEvent,
5466        timestamp: *mut GstClockTime,
5467        duration: *mut GstClockTime,
5468    );
5469    #[cfg(feature = "v1_20")]
5470    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5471    pub fn gst_event_parse_gap_flags(event: *mut GstEvent, flags: *mut GstGapFlags);
5472    pub fn gst_event_parse_group_id(event: *mut GstEvent, group_id: *mut c_uint) -> gboolean;
5473    #[cfg(feature = "v1_18")]
5474    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5475    pub fn gst_event_parse_instant_rate_change(
5476        event: *mut GstEvent,
5477        rate_multiplier: *mut c_double,
5478        new_flags: *mut GstSegmentFlags,
5479    );
5480    #[cfg(feature = "v1_18")]
5481    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5482    pub fn gst_event_parse_instant_rate_sync_time(
5483        event: *mut GstEvent,
5484        rate_multiplier: *mut c_double,
5485        running_time: *mut GstClockTime,
5486        upstream_running_time: *mut GstClockTime,
5487    );
5488    pub fn gst_event_parse_latency(event: *mut GstEvent, latency: *mut GstClockTime);
5489    pub fn gst_event_parse_protection(
5490        event: *mut GstEvent,
5491        system_id: *mut *const c_char,
5492        data: *mut *mut GstBuffer,
5493        origin: *mut *const c_char,
5494    );
5495    pub fn gst_event_parse_qos(
5496        event: *mut GstEvent,
5497        type_: *mut GstQOSType,
5498        proportion: *mut c_double,
5499        diff: *mut GstClockTimeDiff,
5500        timestamp: *mut GstClockTime,
5501    );
5502    pub fn gst_event_parse_seek(
5503        event: *mut GstEvent,
5504        rate: *mut c_double,
5505        format: *mut GstFormat,
5506        flags: *mut GstSeekFlags,
5507        start_type: *mut GstSeekType,
5508        start: *mut i64,
5509        stop_type: *mut GstSeekType,
5510        stop: *mut i64,
5511    );
5512    #[cfg(feature = "v1_16")]
5513    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5514    pub fn gst_event_parse_seek_trickmode_interval(
5515        event: *mut GstEvent,
5516        interval: *mut GstClockTime,
5517    );
5518    pub fn gst_event_parse_segment(event: *mut GstEvent, segment: *mut *const GstSegment);
5519    pub fn gst_event_parse_segment_done(
5520        event: *mut GstEvent,
5521        format: *mut GstFormat,
5522        position: *mut i64,
5523    );
5524    pub fn gst_event_parse_select_streams(event: *mut GstEvent, streams: *mut *mut glib::GList);
5525    pub fn gst_event_parse_sink_message(event: *mut GstEvent, msg: *mut *mut GstMessage);
5526    pub fn gst_event_parse_step(
5527        event: *mut GstEvent,
5528        format: *mut GstFormat,
5529        amount: *mut u64,
5530        rate: *mut c_double,
5531        flush: *mut gboolean,
5532        intermediate: *mut gboolean,
5533    );
5534    pub fn gst_event_parse_stream(event: *mut GstEvent, stream: *mut *mut GstStream);
5535    pub fn gst_event_parse_stream_collection(
5536        event: *mut GstEvent,
5537        collection: *mut *mut GstStreamCollection,
5538    );
5539    pub fn gst_event_parse_stream_flags(event: *mut GstEvent, flags: *mut GstStreamFlags);
5540    pub fn gst_event_parse_stream_group_done(event: *mut GstEvent, group_id: *mut c_uint);
5541    pub fn gst_event_parse_stream_start(event: *mut GstEvent, stream_id: *mut *const c_char);
5542    pub fn gst_event_parse_tag(event: *mut GstEvent, taglist: *mut *mut GstTagList);
5543    pub fn gst_event_parse_toc(event: *mut GstEvent, toc: *mut *mut GstToc, updated: *mut gboolean);
5544    pub fn gst_event_parse_toc_select(event: *mut GstEvent, uid: *mut *mut c_char);
5545    #[cfg(feature = "v1_18_3")]
5546    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5547    pub fn gst_event_ref(event: *mut GstEvent) -> *mut GstEvent;
5548    #[cfg(feature = "v1_20")]
5549    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5550    pub fn gst_event_set_gap_flags(event: *mut GstEvent, flags: GstGapFlags);
5551    pub fn gst_event_set_group_id(event: *mut GstEvent, group_id: c_uint);
5552    pub fn gst_event_set_running_time_offset(event: *mut GstEvent, offset: i64);
5553    #[cfg(feature = "v1_16")]
5554    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5555    pub fn gst_event_set_seek_trickmode_interval(event: *mut GstEvent, interval: GstClockTime);
5556    pub fn gst_event_set_seqnum(event: *mut GstEvent, seqnum: u32);
5557    pub fn gst_event_set_stream(event: *mut GstEvent, stream: *mut GstStream);
5558    pub fn gst_event_set_stream_flags(event: *mut GstEvent, flags: GstStreamFlags);
5559    #[cfg(feature = "v1_18_3")]
5560    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5561    pub fn gst_event_unref(event: *mut GstEvent);
5562    pub fn gst_event_writable_structure(event: *mut GstEvent) -> *mut GstStructure;
5563    #[cfg(feature = "v1_18_3")]
5564    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5565    pub fn gst_event_replace(old_event: *mut *mut GstEvent, new_event: *mut GstEvent) -> gboolean;
5566    #[cfg(feature = "v1_18_3")]
5567    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5568    pub fn gst_event_steal(old_event: *mut *mut GstEvent) -> *mut GstEvent;
5569    #[cfg(feature = "v1_18_3")]
5570    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5571    pub fn gst_event_take(old_event: *mut *mut GstEvent, new_event: *mut GstEvent) -> gboolean;
5572
5573    //=========================================================================
5574    // GstIdStr
5575    //=========================================================================
5576    #[cfg(feature = "v1_26")]
5577    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5578    pub fn gst_id_str_get_type() -> GType;
5579    #[cfg(feature = "v1_26")]
5580    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5581    pub fn gst_id_str_new() -> *mut GstIdStr;
5582    #[cfg(feature = "v1_26")]
5583    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5584    pub fn gst_id_str_as_str(s: *const GstIdStr) -> *const c_char;
5585    #[cfg(feature = "v1_26")]
5586    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5587    pub fn gst_id_str_clear(s: *mut GstIdStr);
5588    #[cfg(feature = "v1_26")]
5589    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5590    pub fn gst_id_str_copy(s: *const GstIdStr) -> *mut GstIdStr;
5591    #[cfg(feature = "v1_26")]
5592    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5593    pub fn gst_id_str_copy_into(d: *mut GstIdStr, s: *const GstIdStr);
5594    #[cfg(feature = "v1_26")]
5595    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5596    pub fn gst_id_str_free(s: *mut GstIdStr);
5597    #[cfg(feature = "v1_26")]
5598    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5599    pub fn gst_id_str_get_len(s: *const GstIdStr) -> size_t;
5600    #[cfg(feature = "v1_26")]
5601    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5602    pub fn gst_id_str_init(s: *mut GstIdStr);
5603    #[cfg(feature = "v1_26")]
5604    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5605    pub fn gst_id_str_is_equal(s1: *const GstIdStr, s2: *const GstIdStr) -> gboolean;
5606    #[cfg(feature = "v1_26")]
5607    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5608    pub fn gst_id_str_is_equal_to_str(s1: *const GstIdStr, s2: *const c_char) -> gboolean;
5609    #[cfg(feature = "v1_26")]
5610    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5611    pub fn gst_id_str_is_equal_to_str_with_len(
5612        s1: *const GstIdStr,
5613        s2: *const c_char,
5614        len: size_t,
5615    ) -> gboolean;
5616    #[cfg(feature = "v1_26")]
5617    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5618    pub fn gst_id_str_move(d: *mut GstIdStr, s: *mut GstIdStr);
5619    #[cfg(feature = "v1_26")]
5620    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5621    pub fn gst_id_str_set(s: *mut GstIdStr, value: *const c_char);
5622    #[cfg(feature = "v1_26")]
5623    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5624    pub fn gst_id_str_set_static_str(s: *mut GstIdStr, value: *const c_char);
5625    #[cfg(feature = "v1_26")]
5626    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5627    pub fn gst_id_str_set_static_str_with_len(s: *mut GstIdStr, value: *const c_char, len: size_t);
5628    #[cfg(feature = "v1_26")]
5629    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5630    pub fn gst_id_str_set_with_len(s: *mut GstIdStr, value: *const c_char, len: size_t);
5631
5632    //=========================================================================
5633    // GstIterator
5634    //=========================================================================
5635    pub fn gst_iterator_get_type() -> GType;
5636    pub fn gst_iterator_new(
5637        size: c_uint,
5638        type_: GType,
5639        lock: *mut glib::GMutex,
5640        master_cookie: *mut u32,
5641        copy: GstIteratorCopyFunction,
5642        next: GstIteratorNextFunction,
5643        item: GstIteratorItemFunction,
5644        resync: GstIteratorResyncFunction,
5645        free: GstIteratorFreeFunction,
5646    ) -> *mut GstIterator;
5647    pub fn gst_iterator_new_list(
5648        type_: GType,
5649        lock: *mut glib::GMutex,
5650        master_cookie: *mut u32,
5651        list: *mut *mut glib::GList,
5652        owner: *mut gobject::GObject,
5653        item: GstIteratorItemFunction,
5654    ) -> *mut GstIterator;
5655    pub fn gst_iterator_new_single(
5656        type_: GType,
5657        object: *const gobject::GValue,
5658    ) -> *mut GstIterator;
5659    pub fn gst_iterator_copy(it: *const GstIterator) -> *mut GstIterator;
5660    pub fn gst_iterator_filter(
5661        it: *mut GstIterator,
5662        func: glib::GCompareFunc,
5663        user_data: *const gobject::GValue,
5664    ) -> *mut GstIterator;
5665    pub fn gst_iterator_find_custom(
5666        it: *mut GstIterator,
5667        func: glib::GCompareFunc,
5668        elem: *mut gobject::GValue,
5669        user_data: gpointer,
5670    ) -> gboolean;
5671    pub fn gst_iterator_fold(
5672        it: *mut GstIterator,
5673        func: GstIteratorFoldFunction,
5674        ret: *mut gobject::GValue,
5675        user_data: gpointer,
5676    ) -> GstIteratorResult;
5677    pub fn gst_iterator_foreach(
5678        it: *mut GstIterator,
5679        func: GstIteratorForeachFunction,
5680        user_data: gpointer,
5681    ) -> GstIteratorResult;
5682    pub fn gst_iterator_free(it: *mut GstIterator);
5683    pub fn gst_iterator_next(it: *mut GstIterator, elem: *mut gobject::GValue)
5684    -> GstIteratorResult;
5685    pub fn gst_iterator_push(it: *mut GstIterator, other: *mut GstIterator);
5686    pub fn gst_iterator_resync(it: *mut GstIterator);
5687
5688    //=========================================================================
5689    // GstLogContext
5690    //=========================================================================
5691    #[cfg(feature = "v1_28")]
5692    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5693    pub fn gst_log_context_free(ctx: *mut GstLogContext);
5694    #[cfg(feature = "v1_28")]
5695    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5696    pub fn gst_log_context_get_category(context: *mut GstLogContext) -> *mut GstDebugCategory;
5697    #[cfg(feature = "v1_28")]
5698    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5699    pub fn gst_log_context_reset(ctx: *mut GstLogContext);
5700
5701    //=========================================================================
5702    // GstLogContextBuilder
5703    //=========================================================================
5704    #[cfg(feature = "v1_28")]
5705    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5706    pub fn gst_log_context_builder_build(builder: *mut GstLogContextBuilder) -> *mut GstLogContext;
5707    #[cfg(feature = "v1_28")]
5708    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5709    pub fn gst_log_context_builder_set_category(
5710        builder: *mut GstLogContextBuilder,
5711        category: *mut GstDebugCategory,
5712    ) -> *mut GstLogContextBuilder;
5713    #[cfg(feature = "v1_28")]
5714    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5715    pub fn gst_log_context_builder_set_hash_flags(
5716        builder: *mut GstLogContextBuilder,
5717        flags: GstLogContextHashFlags,
5718    ) -> *mut GstLogContextBuilder;
5719    #[cfg(feature = "v1_28")]
5720    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5721    pub fn gst_log_context_builder_set_interval(
5722        builder: *mut GstLogContextBuilder,
5723        interval: GstClockTime,
5724    ) -> *mut GstLogContextBuilder;
5725    #[cfg(feature = "v1_28")]
5726    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5727    pub fn gst_log_context_builder_new(
5728        category: *mut GstDebugCategory,
5729        flags: GstLogContextFlags,
5730    ) -> *mut GstLogContextBuilder;
5731
5732    //=========================================================================
5733    // GstMapInfo
5734    //=========================================================================
5735    #[cfg(feature = "v1_28")]
5736    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5737    pub fn gst_map_info_clear(info: *mut GstMapInfo);
5738    #[cfg(feature = "v1_28")]
5739    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5740    pub fn gst_map_info_get_data(info: *mut GstMapInfo, size: *mut size_t) -> *mut u8;
5741    #[cfg(feature = "v1_28")]
5742    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5743    pub fn gst_map_info_init(info: *mut GstMapInfo);
5744
5745    //=========================================================================
5746    // GstMemory
5747    //=========================================================================
5748    pub fn gst_memory_get_type() -> GType;
5749    pub fn gst_memory_new_wrapped(
5750        flags: GstMemoryFlags,
5751        data: gpointer,
5752        maxsize: size_t,
5753        offset: size_t,
5754        size: size_t,
5755        user_data: gpointer,
5756        notify: glib::GDestroyNotify,
5757    ) -> *mut GstMemory;
5758    pub fn gst_memory_copy(mem: *mut GstMemory, offset: ssize_t, size: ssize_t) -> *mut GstMemory;
5759    pub fn gst_memory_get_sizes(
5760        mem: *mut GstMemory,
5761        offset: *mut size_t,
5762        maxsize: *mut size_t,
5763    ) -> size_t;
5764    pub fn gst_memory_init(
5765        mem: *mut GstMemory,
5766        flags: GstMemoryFlags,
5767        allocator: *mut GstAllocator,
5768        parent: *mut GstMemory,
5769        maxsize: size_t,
5770        align: size_t,
5771        offset: size_t,
5772        size: size_t,
5773    );
5774    pub fn gst_memory_is_span(
5775        mem1: *mut GstMemory,
5776        mem2: *mut GstMemory,
5777        offset: *mut size_t,
5778    ) -> gboolean;
5779    pub fn gst_memory_is_type(mem: *mut GstMemory, mem_type: *const c_char) -> gboolean;
5780    pub fn gst_memory_is_writable(memory: *const GstMemory) -> gboolean;
5781    pub fn gst_memory_make_mapped(
5782        mem: *mut GstMemory,
5783        info: *mut GstMapInfo,
5784        flags: GstMapFlags,
5785    ) -> *mut GstMemory;
5786    pub fn gst_memory_make_writable(memory: *mut GstMemory) -> *mut GstMemory;
5787    pub fn gst_memory_map(
5788        mem: *mut GstMemory,
5789        info: *mut GstMapInfo,
5790        flags: GstMapFlags,
5791    ) -> gboolean;
5792    #[cfg(feature = "v1_18_3")]
5793    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5794    pub fn gst_memory_ref(memory: *mut GstMemory) -> *mut GstMemory;
5795    pub fn gst_memory_resize(mem: *mut GstMemory, offset: ssize_t, size: size_t);
5796    pub fn gst_memory_share(mem: *mut GstMemory, offset: ssize_t, size: ssize_t) -> *mut GstMemory;
5797    pub fn gst_memory_unmap(mem: *mut GstMemory, info: *mut GstMapInfo);
5798    #[cfg(feature = "v1_18_3")]
5799    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5800    pub fn gst_memory_unref(memory: *mut GstMemory);
5801    #[cfg(feature = "v1_28")]
5802    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5803    pub fn gst_memory_replace(
5804        old_memory: *mut *mut GstMemory,
5805        new_memory: *mut GstMemory,
5806    ) -> gboolean;
5807    #[cfg(feature = "v1_28")]
5808    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5809    pub fn gst_memory_steal(old_memory: *mut *mut GstMemory) -> *mut GstMemory;
5810    #[cfg(feature = "v1_28")]
5811    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5812    pub fn gst_memory_take(old_memory: *mut *mut GstMemory, new_memory: *mut GstMemory)
5813    -> gboolean;
5814
5815    //=========================================================================
5816    // GstMessage
5817    //=========================================================================
5818    pub fn gst_message_get_type() -> GType;
5819    pub fn gst_message_new_application(
5820        src: *mut GstObject,
5821        structure: *mut GstStructure,
5822    ) -> *mut GstMessage;
5823    pub fn gst_message_new_async_done(
5824        src: *mut GstObject,
5825        running_time: GstClockTime,
5826    ) -> *mut GstMessage;
5827    pub fn gst_message_new_async_start(src: *mut GstObject) -> *mut GstMessage;
5828    pub fn gst_message_new_buffering(src: *mut GstObject, percent: c_int) -> *mut GstMessage;
5829    pub fn gst_message_new_clock_lost(src: *mut GstObject, clock: *mut GstClock)
5830    -> *mut GstMessage;
5831    pub fn gst_message_new_clock_provide(
5832        src: *mut GstObject,
5833        clock: *mut GstClock,
5834        ready: gboolean,
5835    ) -> *mut GstMessage;
5836    pub fn gst_message_new_custom(
5837        type_: GstMessageType,
5838        src: *mut GstObject,
5839        structure: *mut GstStructure,
5840    ) -> *mut GstMessage;
5841    pub fn gst_message_new_device_added(
5842        src: *mut GstObject,
5843        device: *mut GstDevice,
5844    ) -> *mut GstMessage;
5845    #[cfg(feature = "v1_16")]
5846    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5847    pub fn gst_message_new_device_changed(
5848        src: *mut GstObject,
5849        device: *mut GstDevice,
5850        changed_device: *mut GstDevice,
5851    ) -> *mut GstMessage;
5852    #[cfg(feature = "v1_28")]
5853    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5854    pub fn gst_message_new_device_monitor_started(
5855        src: *mut GstObject,
5856        success: gboolean,
5857    ) -> *mut GstMessage;
5858    pub fn gst_message_new_device_removed(
5859        src: *mut GstObject,
5860        device: *mut GstDevice,
5861    ) -> *mut GstMessage;
5862    pub fn gst_message_new_duration_changed(src: *mut GstObject) -> *mut GstMessage;
5863    pub fn gst_message_new_element(
5864        src: *mut GstObject,
5865        structure: *mut GstStructure,
5866    ) -> *mut GstMessage;
5867    pub fn gst_message_new_eos(src: *mut GstObject) -> *mut GstMessage;
5868    pub fn gst_message_new_error(
5869        src: *mut GstObject,
5870        error: *mut glib::GError,
5871        debug: *const c_char,
5872    ) -> *mut GstMessage;
5873    pub fn gst_message_new_error_with_details(
5874        src: *mut GstObject,
5875        error: *mut glib::GError,
5876        debug: *const c_char,
5877        details: *mut GstStructure,
5878    ) -> *mut GstMessage;
5879    pub fn gst_message_new_have_context(
5880        src: *mut GstObject,
5881        context: *mut GstContext,
5882    ) -> *mut GstMessage;
5883    pub fn gst_message_new_info(
5884        src: *mut GstObject,
5885        error: *mut glib::GError,
5886        debug: *const c_char,
5887    ) -> *mut GstMessage;
5888    pub fn gst_message_new_info_with_details(
5889        src: *mut GstObject,
5890        error: *mut glib::GError,
5891        debug: *const c_char,
5892        details: *mut GstStructure,
5893    ) -> *mut GstMessage;
5894    #[cfg(feature = "v1_18")]
5895    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5896    pub fn gst_message_new_instant_rate_request(
5897        src: *mut GstObject,
5898        rate_multiplier: c_double,
5899    ) -> *mut GstMessage;
5900    pub fn gst_message_new_latency(src: *mut GstObject) -> *mut GstMessage;
5901    pub fn gst_message_new_need_context(
5902        src: *mut GstObject,
5903        context_type: *const c_char,
5904    ) -> *mut GstMessage;
5905    pub fn gst_message_new_new_clock(src: *mut GstObject, clock: *mut GstClock) -> *mut GstMessage;
5906    pub fn gst_message_new_progress(
5907        src: *mut GstObject,
5908        type_: GstProgressType,
5909        code: *const c_char,
5910        text: *const c_char,
5911    ) -> *mut GstMessage;
5912    pub fn gst_message_new_property_notify(
5913        src: *mut GstObject,
5914        property_name: *const c_char,
5915        val: *mut gobject::GValue,
5916    ) -> *mut GstMessage;
5917    pub fn gst_message_new_qos(
5918        src: *mut GstObject,
5919        live: gboolean,
5920        running_time: u64,
5921        stream_time: u64,
5922        timestamp: u64,
5923        duration: u64,
5924    ) -> *mut GstMessage;
5925    pub fn gst_message_new_redirect(
5926        src: *mut GstObject,
5927        location: *const c_char,
5928        tag_list: *mut GstTagList,
5929        entry_struct: *mut GstStructure,
5930    ) -> *mut GstMessage;
5931    pub fn gst_message_new_request_state(src: *mut GstObject, state: GstState) -> *mut GstMessage;
5932    pub fn gst_message_new_reset_time(
5933        src: *mut GstObject,
5934        running_time: GstClockTime,
5935    ) -> *mut GstMessage;
5936    pub fn gst_message_new_segment_done(
5937        src: *mut GstObject,
5938        format: GstFormat,
5939        position: i64,
5940    ) -> *mut GstMessage;
5941    pub fn gst_message_new_segment_start(
5942        src: *mut GstObject,
5943        format: GstFormat,
5944        position: i64,
5945    ) -> *mut GstMessage;
5946    pub fn gst_message_new_state_changed(
5947        src: *mut GstObject,
5948        oldstate: GstState,
5949        newstate: GstState,
5950        pending: GstState,
5951    ) -> *mut GstMessage;
5952    pub fn gst_message_new_state_dirty(src: *mut GstObject) -> *mut GstMessage;
5953    pub fn gst_message_new_step_done(
5954        src: *mut GstObject,
5955        format: GstFormat,
5956        amount: u64,
5957        rate: c_double,
5958        flush: gboolean,
5959        intermediate: gboolean,
5960        duration: u64,
5961        eos: gboolean,
5962    ) -> *mut GstMessage;
5963    pub fn gst_message_new_step_start(
5964        src: *mut GstObject,
5965        active: gboolean,
5966        format: GstFormat,
5967        amount: u64,
5968        rate: c_double,
5969        flush: gboolean,
5970        intermediate: gboolean,
5971    ) -> *mut GstMessage;
5972    pub fn gst_message_new_stream_collection(
5973        src: *mut GstObject,
5974        collection: *mut GstStreamCollection,
5975    ) -> *mut GstMessage;
5976    pub fn gst_message_new_stream_start(src: *mut GstObject) -> *mut GstMessage;
5977    pub fn gst_message_new_stream_status(
5978        src: *mut GstObject,
5979        type_: GstStreamStatusType,
5980        owner: *mut GstElement,
5981    ) -> *mut GstMessage;
5982    pub fn gst_message_new_streams_selected(
5983        src: *mut GstObject,
5984        collection: *mut GstStreamCollection,
5985    ) -> *mut GstMessage;
5986    pub fn gst_message_new_structure_change(
5987        src: *mut GstObject,
5988        type_: GstStructureChangeType,
5989        owner: *mut GstElement,
5990        busy: gboolean,
5991    ) -> *mut GstMessage;
5992    pub fn gst_message_new_tag(src: *mut GstObject, tag_list: *mut GstTagList) -> *mut GstMessage;
5993    pub fn gst_message_new_toc(
5994        src: *mut GstObject,
5995        toc: *mut GstToc,
5996        updated: gboolean,
5997    ) -> *mut GstMessage;
5998    pub fn gst_message_new_warning(
5999        src: *mut GstObject,
6000        error: *mut glib::GError,
6001        debug: *const c_char,
6002    ) -> *mut GstMessage;
6003    pub fn gst_message_new_warning_with_details(
6004        src: *mut GstObject,
6005        error: *mut glib::GError,
6006        debug: *const c_char,
6007        details: *mut GstStructure,
6008    ) -> *mut GstMessage;
6009    pub fn gst_message_add_redirect_entry(
6010        message: *mut GstMessage,
6011        location: *const c_char,
6012        tag_list: *mut GstTagList,
6013        entry_struct: *mut GstStructure,
6014    );
6015    #[cfg(feature = "v1_18_3")]
6016    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6017    pub fn gst_message_copy(msg: *const GstMessage) -> *mut GstMessage;
6018    #[cfg(feature = "v1_26")]
6019    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6020    pub fn gst_message_get_details(message: *mut GstMessage) -> *const GstStructure;
6021    pub fn gst_message_get_num_redirect_entries(message: *mut GstMessage) -> size_t;
6022    pub fn gst_message_get_seqnum(message: *mut GstMessage) -> u32;
6023    pub fn gst_message_get_stream_status_object(message: *mut GstMessage)
6024    -> *const gobject::GValue;
6025    pub fn gst_message_get_structure(message: *mut GstMessage) -> *const GstStructure;
6026    pub fn gst_message_has_name(message: *mut GstMessage, name: *const c_char) -> gboolean;
6027    pub fn gst_message_is_writable(message: *const GstMessage) -> gboolean;
6028    pub fn gst_message_make_writable(message: *mut GstMessage) -> *mut GstMessage;
6029    pub fn gst_message_parse_async_done(message: *mut GstMessage, running_time: *mut GstClockTime);
6030    pub fn gst_message_parse_buffering(message: *mut GstMessage, percent: *mut c_int);
6031    pub fn gst_message_parse_buffering_stats(
6032        message: *mut GstMessage,
6033        mode: *mut GstBufferingMode,
6034        avg_in: *mut c_int,
6035        avg_out: *mut c_int,
6036        buffering_left: *mut i64,
6037    );
6038    pub fn gst_message_parse_clock_lost(message: *mut GstMessage, clock: *mut *mut GstClock);
6039    pub fn gst_message_parse_clock_provide(
6040        message: *mut GstMessage,
6041        clock: *mut *mut GstClock,
6042        ready: *mut gboolean,
6043    );
6044    pub fn gst_message_parse_context_type(
6045        message: *mut GstMessage,
6046        context_type: *mut *const c_char,
6047    ) -> gboolean;
6048    pub fn gst_message_parse_device_added(message: *mut GstMessage, device: *mut *mut GstDevice);
6049    #[cfg(feature = "v1_16")]
6050    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6051    pub fn gst_message_parse_device_changed(
6052        message: *mut GstMessage,
6053        device: *mut *mut GstDevice,
6054        changed_device: *mut *mut GstDevice,
6055    );
6056    #[cfg(feature = "v1_28")]
6057    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6058    pub fn gst_message_parse_device_monitor_started(
6059        message: *mut GstMessage,
6060        success: *mut gboolean,
6061    );
6062    pub fn gst_message_parse_device_removed(message: *mut GstMessage, device: *mut *mut GstDevice);
6063    pub fn gst_message_parse_error(
6064        message: *mut GstMessage,
6065        gerror: *mut *mut glib::GError,
6066        debug: *mut *mut c_char,
6067    );
6068    pub fn gst_message_parse_error_details(
6069        message: *mut GstMessage,
6070        structure: *mut *const GstStructure,
6071    );
6072    #[cfg(feature = "v1_26")]
6073    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6074    pub fn gst_message_parse_error_writable_details(
6075        message: *mut GstMessage,
6076        structure: *mut *mut GstStructure,
6077    );
6078    pub fn gst_message_parse_group_id(message: *mut GstMessage, group_id: *mut c_uint) -> gboolean;
6079    pub fn gst_message_parse_have_context(message: *mut GstMessage, context: *mut *mut GstContext);
6080    pub fn gst_message_parse_info(
6081        message: *mut GstMessage,
6082        gerror: *mut *mut glib::GError,
6083        debug: *mut *mut c_char,
6084    );
6085    pub fn gst_message_parse_info_details(
6086        message: *mut GstMessage,
6087        structure: *mut *const GstStructure,
6088    );
6089    #[cfg(feature = "v1_26")]
6090    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6091    pub fn gst_message_parse_info_writable_details(
6092        message: *mut GstMessage,
6093        structure: *mut *mut GstStructure,
6094    );
6095    #[cfg(feature = "v1_18")]
6096    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
6097    pub fn gst_message_parse_instant_rate_request(
6098        message: *mut GstMessage,
6099        rate_multiplier: *mut c_double,
6100    );
6101    pub fn gst_message_parse_new_clock(message: *mut GstMessage, clock: *mut *mut GstClock);
6102    pub fn gst_message_parse_progress(
6103        message: *mut GstMessage,
6104        type_: *mut GstProgressType,
6105        code: *mut *mut c_char,
6106        text: *mut *mut c_char,
6107    );
6108    pub fn gst_message_parse_property_notify(
6109        message: *mut GstMessage,
6110        object: *mut *mut GstObject,
6111        property_name: *mut *const c_char,
6112        property_value: *mut *const gobject::GValue,
6113    );
6114    pub fn gst_message_parse_qos(
6115        message: *mut GstMessage,
6116        live: *mut gboolean,
6117        running_time: *mut u64,
6118        stream_time: *mut u64,
6119        timestamp: *mut u64,
6120        duration: *mut u64,
6121    );
6122    pub fn gst_message_parse_qos_stats(
6123        message: *mut GstMessage,
6124        format: *mut GstFormat,
6125        processed: *mut u64,
6126        dropped: *mut u64,
6127    );
6128    pub fn gst_message_parse_qos_values(
6129        message: *mut GstMessage,
6130        jitter: *mut i64,
6131        proportion: *mut c_double,
6132        quality: *mut c_int,
6133    );
6134    pub fn gst_message_parse_redirect_entry(
6135        message: *mut GstMessage,
6136        entry_index: size_t,
6137        location: *mut *const c_char,
6138        tag_list: *mut *mut GstTagList,
6139        entry_struct: *mut *const GstStructure,
6140    );
6141    pub fn gst_message_parse_request_state(message: *mut GstMessage, state: *mut GstState);
6142    pub fn gst_message_parse_reset_time(message: *mut GstMessage, running_time: *mut GstClockTime);
6143    pub fn gst_message_parse_segment_done(
6144        message: *mut GstMessage,
6145        format: *mut GstFormat,
6146        position: *mut i64,
6147    );
6148    pub fn gst_message_parse_segment_start(
6149        message: *mut GstMessage,
6150        format: *mut GstFormat,
6151        position: *mut i64,
6152    );
6153    pub fn gst_message_parse_state_changed(
6154        message: *mut GstMessage,
6155        oldstate: *mut GstState,
6156        newstate: *mut GstState,
6157        pending: *mut GstState,
6158    );
6159    pub fn gst_message_parse_step_done(
6160        message: *mut GstMessage,
6161        format: *mut GstFormat,
6162        amount: *mut u64,
6163        rate: *mut c_double,
6164        flush: *mut gboolean,
6165        intermediate: *mut gboolean,
6166        duration: *mut u64,
6167        eos: *mut gboolean,
6168    );
6169    pub fn gst_message_parse_step_start(
6170        message: *mut GstMessage,
6171        active: *mut gboolean,
6172        format: *mut GstFormat,
6173        amount: *mut u64,
6174        rate: *mut c_double,
6175        flush: *mut gboolean,
6176        intermediate: *mut gboolean,
6177    );
6178    pub fn gst_message_parse_stream_collection(
6179        message: *mut GstMessage,
6180        collection: *mut *mut GstStreamCollection,
6181    );
6182    pub fn gst_message_parse_stream_status(
6183        message: *mut GstMessage,
6184        type_: *mut GstStreamStatusType,
6185        owner: *mut *mut GstElement,
6186    );
6187    pub fn gst_message_parse_streams_selected(
6188        message: *mut GstMessage,
6189        collection: *mut *mut GstStreamCollection,
6190    );
6191    pub fn gst_message_parse_structure_change(
6192        message: *mut GstMessage,
6193        type_: *mut GstStructureChangeType,
6194        owner: *mut *mut GstElement,
6195        busy: *mut gboolean,
6196    );
6197    pub fn gst_message_parse_tag(message: *mut GstMessage, tag_list: *mut *mut GstTagList);
6198    pub fn gst_message_parse_toc(
6199        message: *mut GstMessage,
6200        toc: *mut *mut GstToc,
6201        updated: *mut gboolean,
6202    );
6203    pub fn gst_message_parse_warning(
6204        message: *mut GstMessage,
6205        gerror: *mut *mut glib::GError,
6206        debug: *mut *mut c_char,
6207    );
6208    pub fn gst_message_parse_warning_details(
6209        message: *mut GstMessage,
6210        structure: *mut *const GstStructure,
6211    );
6212    #[cfg(feature = "v1_26")]
6213    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6214    pub fn gst_message_parse_warning_writable_details(
6215        message: *mut GstMessage,
6216        structure: *mut *mut GstStructure,
6217    );
6218    #[cfg(feature = "v1_18_3")]
6219    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6220    pub fn gst_message_ref(msg: *mut GstMessage) -> *mut GstMessage;
6221    pub fn gst_message_set_buffering_stats(
6222        message: *mut GstMessage,
6223        mode: GstBufferingMode,
6224        avg_in: c_int,
6225        avg_out: c_int,
6226        buffering_left: i64,
6227    );
6228    #[cfg(feature = "v1_26")]
6229    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6230    pub fn gst_message_set_details(message: *mut GstMessage, details: *mut GstStructure);
6231    pub fn gst_message_set_group_id(message: *mut GstMessage, group_id: c_uint);
6232    pub fn gst_message_set_qos_stats(
6233        message: *mut GstMessage,
6234        format: GstFormat,
6235        processed: u64,
6236        dropped: u64,
6237    );
6238    pub fn gst_message_set_qos_values(
6239        message: *mut GstMessage,
6240        jitter: i64,
6241        proportion: c_double,
6242        quality: c_int,
6243    );
6244    pub fn gst_message_set_seqnum(message: *mut GstMessage, seqnum: u32);
6245    pub fn gst_message_set_stream_status_object(
6246        message: *mut GstMessage,
6247        object: *const gobject::GValue,
6248    );
6249    pub fn gst_message_streams_selected_add(message: *mut GstMessage, stream: *mut GstStream);
6250    pub fn gst_message_streams_selected_get_size(message: *mut GstMessage) -> c_uint;
6251    pub fn gst_message_streams_selected_get_stream(
6252        message: *mut GstMessage,
6253        idx: c_uint,
6254    ) -> *mut GstStream;
6255    #[cfg(feature = "v1_18_3")]
6256    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6257    pub fn gst_message_unref(msg: *mut GstMessage);
6258    #[cfg(feature = "v1_26")]
6259    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6260    pub fn gst_message_writable_details(message: *mut GstMessage) -> *mut GstStructure;
6261    pub fn gst_message_writable_structure(message: *mut GstMessage) -> *mut GstStructure;
6262    #[cfg(feature = "v1_18_3")]
6263    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6264    pub fn gst_message_replace(
6265        old_message: *mut *mut GstMessage,
6266        new_message: *mut GstMessage,
6267    ) -> gboolean;
6268    #[cfg(feature = "v1_28")]
6269    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6270    pub fn gst_message_steal(old_message: *mut *mut GstMessage) -> *mut GstMessage;
6271    #[cfg(feature = "v1_18_3")]
6272    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6273    pub fn gst_message_take(
6274        old_message: *mut *mut GstMessage,
6275        new_message: *mut GstMessage,
6276    ) -> gboolean;
6277
6278    //=========================================================================
6279    // GstMeta
6280    //=========================================================================
6281    #[cfg(feature = "v1_16")]
6282    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6283    pub fn gst_meta_compare_seqnum(meta1: *const GstMeta, meta2: *const GstMeta) -> c_int;
6284    #[cfg(feature = "v1_16")]
6285    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6286    pub fn gst_meta_get_seqnum(meta: *const GstMeta) -> u64;
6287    #[cfg(feature = "v1_24")]
6288    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6289    pub fn gst_meta_serialize(meta: *const GstMeta, data: *mut GstByteArrayInterface) -> gboolean;
6290    #[cfg(feature = "v1_24")]
6291    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6292    pub fn gst_meta_serialize_simple(meta: *const GstMeta, data: *mut glib::GByteArray)
6293    -> gboolean;
6294    #[cfg(feature = "v1_26")]
6295    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6296    pub fn gst_meta_api_type_aggregate_params(
6297        api: GType,
6298        aggregated_params: *mut *mut GstStructure,
6299        params0: *const GstStructure,
6300        params1: *const GstStructure,
6301    ) -> gboolean;
6302    pub fn gst_meta_api_type_get_tags(api: GType) -> *const *const c_char;
6303    pub fn gst_meta_api_type_has_tag(api: GType, tag: glib::GQuark) -> gboolean;
6304    pub fn gst_meta_api_type_register(api: *const c_char, tags: *mut *const c_char) -> GType;
6305    #[cfg(feature = "v1_26")]
6306    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6307    pub fn gst_meta_api_type_set_params_aggregator(
6308        api: GType,
6309        aggregator: GstAllocationMetaParamsAggregator,
6310    );
6311    #[cfg(feature = "v1_28")]
6312    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6313    pub fn gst_meta_api_type_tags_contain_only(
6314        api: GType,
6315        valid_tags: *mut *const c_char,
6316    ) -> gboolean;
6317    #[cfg(feature = "v1_24")]
6318    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6319    pub fn gst_meta_deserialize(
6320        buffer: *mut GstBuffer,
6321        data: *const u8,
6322        size: size_t,
6323        consumed: *mut u32,
6324    ) -> *mut GstMeta;
6325    pub fn gst_meta_get_info(impl_: *const c_char) -> *const GstMetaInfo;
6326    pub fn gst_meta_register(
6327        api: GType,
6328        impl_: *const c_char,
6329        size: size_t,
6330        init_func: GstMetaInitFunction,
6331        free_func: GstMetaFreeFunction,
6332        transform_func: GstMetaTransformFunction,
6333    ) -> *const GstMetaInfo;
6334    #[cfg(feature = "v1_20")]
6335    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6336    pub fn gst_meta_register_custom(
6337        name: *const c_char,
6338        tags: *mut *const c_char,
6339        transform_func: GstCustomMetaTransformFunction,
6340        user_data: gpointer,
6341        destroy_data: glib::GDestroyNotify,
6342    ) -> *const GstMetaInfo;
6343    #[cfg(feature = "v1_24")]
6344    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6345    pub fn gst_meta_register_custom_simple(name: *const c_char) -> *const GstMetaInfo;
6346
6347    //=========================================================================
6348    // GstMetaInfo
6349    //=========================================================================
6350    #[cfg(feature = "v1_20")]
6351    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6352    pub fn gst_meta_info_is_custom(info: *const GstMetaInfo) -> gboolean;
6353    #[cfg(feature = "v1_24")]
6354    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6355    pub fn gst_meta_info_register(info: *mut GstMetaInfo) -> *const GstMetaInfo;
6356    #[cfg(feature = "v1_24")]
6357    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6358    pub fn gst_meta_info_new(api: GType, impl_: *const c_char, size: size_t) -> *mut GstMetaInfo;
6359
6360    //=========================================================================
6361    // GstMiniObject
6362    //=========================================================================
6363    #[cfg(feature = "v1_20")]
6364    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6365    pub fn gst_mini_object_get_type() -> GType;
6366    #[cfg(feature = "v1_16")]
6367    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6368    pub fn gst_mini_object_add_parent(object: *mut GstMiniObject, parent: *mut GstMiniObject);
6369    pub fn gst_mini_object_copy(mini_object: *const GstMiniObject) -> *mut GstMiniObject;
6370    pub fn gst_mini_object_get_qdata(object: *mut GstMiniObject, quark: glib::GQuark) -> gpointer;
6371    pub fn gst_mini_object_init(
6372        mini_object: *mut GstMiniObject,
6373        flags: c_uint,
6374        type_: GType,
6375        copy_func: GstMiniObjectCopyFunction,
6376        dispose_func: GstMiniObjectDisposeFunction,
6377        free_func: GstMiniObjectFreeFunction,
6378    );
6379    pub fn gst_mini_object_is_writable(mini_object: *const GstMiniObject) -> gboolean;
6380    pub fn gst_mini_object_lock(object: *mut GstMiniObject, flags: GstLockFlags) -> gboolean;
6381    pub fn gst_mini_object_make_writable(mini_object: *mut GstMiniObject) -> *mut GstMiniObject;
6382    pub fn gst_mini_object_ref(mini_object: *mut GstMiniObject) -> *mut GstMiniObject;
6383    #[cfg(feature = "v1_16")]
6384    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6385    pub fn gst_mini_object_remove_parent(object: *mut GstMiniObject, parent: *mut GstMiniObject);
6386    pub fn gst_mini_object_set_qdata(
6387        object: *mut GstMiniObject,
6388        quark: glib::GQuark,
6389        data: gpointer,
6390        destroy: glib::GDestroyNotify,
6391    );
6392    pub fn gst_mini_object_steal_qdata(object: *mut GstMiniObject, quark: glib::GQuark)
6393    -> gpointer;
6394    pub fn gst_mini_object_unlock(object: *mut GstMiniObject, flags: GstLockFlags);
6395    pub fn gst_mini_object_unref(mini_object: *mut GstMiniObject);
6396    pub fn gst_mini_object_weak_ref(
6397        object: *mut GstMiniObject,
6398        notify: GstMiniObjectNotify,
6399        data: gpointer,
6400    );
6401    pub fn gst_mini_object_weak_unref(
6402        object: *mut GstMiniObject,
6403        notify: GstMiniObjectNotify,
6404        data: gpointer,
6405    );
6406    pub fn gst_mini_object_replace(
6407        olddata: *mut *mut GstMiniObject,
6408        newdata: *mut GstMiniObject,
6409    ) -> gboolean;
6410    pub fn gst_mini_object_steal(olddata: *mut *mut GstMiniObject) -> *mut GstMiniObject;
6411    pub fn gst_mini_object_take(
6412        olddata: *mut *mut GstMiniObject,
6413        newdata: *mut GstMiniObject,
6414    ) -> gboolean;
6415
6416    //=========================================================================
6417    // GstPadProbeInfo
6418    //=========================================================================
6419    pub fn gst_pad_probe_info_get_buffer(info: *mut GstPadProbeInfo) -> *mut GstBuffer;
6420    pub fn gst_pad_probe_info_get_buffer_list(info: *mut GstPadProbeInfo) -> *mut GstBufferList;
6421    pub fn gst_pad_probe_info_get_event(info: *mut GstPadProbeInfo) -> *mut GstEvent;
6422    #[cfg(feature = "v1_28")]
6423    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6424    pub fn gst_pad_probe_info_get_flow_return(info: *mut GstPadProbeInfo) -> GstFlowReturn;
6425    #[cfg(feature = "v1_28")]
6426    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6427    pub fn gst_pad_probe_info_get_id(info: *mut GstPadProbeInfo) -> c_ulong;
6428    #[cfg(feature = "v1_28")]
6429    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6430    pub fn gst_pad_probe_info_get_offset(info: *mut GstPadProbeInfo) -> u64;
6431    pub fn gst_pad_probe_info_get_query(info: *mut GstPadProbeInfo) -> *mut GstQuery;
6432    #[cfg(feature = "v1_28")]
6433    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6434    pub fn gst_pad_probe_info_get_size(info: *mut GstPadProbeInfo) -> size_t;
6435    #[cfg(feature = "v1_28")]
6436    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6437    pub fn gst_pad_probe_info_get_type(info: *mut GstPadProbeInfo) -> GstPadProbeType;
6438    #[cfg(feature = "v1_28")]
6439    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6440    pub fn gst_pad_probe_info_set_buffer(info: *mut GstPadProbeInfo, buffer: *mut GstBuffer);
6441    #[cfg(feature = "v1_28")]
6442    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6443    pub fn gst_pad_probe_info_set_buffer_list(info: *mut GstPadProbeInfo, list: *mut GstBufferList);
6444    #[cfg(feature = "v1_28")]
6445    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6446    pub fn gst_pad_probe_info_set_event(info: *mut GstPadProbeInfo, event: *mut GstEvent);
6447    #[cfg(feature = "v1_28")]
6448    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6449    pub fn gst_pad_probe_info_set_flow_return(info: *mut GstPadProbeInfo, flow_ret: GstFlowReturn);
6450
6451    //=========================================================================
6452    // GstParentBufferMeta
6453    //=========================================================================
6454    pub fn gst_parent_buffer_meta_get_info() -> *const GstMetaInfo;
6455
6456    //=========================================================================
6457    // GstParseContext
6458    //=========================================================================
6459    pub fn gst_parse_context_get_type() -> GType;
6460    pub fn gst_parse_context_new() -> *mut GstParseContext;
6461    pub fn gst_parse_context_copy(context: *const GstParseContext) -> *mut GstParseContext;
6462    pub fn gst_parse_context_free(context: *mut GstParseContext);
6463    pub fn gst_parse_context_get_missing_elements(
6464        context: *mut GstParseContext,
6465    ) -> *mut *mut c_char;
6466
6467    //=========================================================================
6468    // GstPoll
6469    //=========================================================================
6470    pub fn gst_poll_add_fd(set: *mut GstPoll, fd: *mut GstPollFD) -> gboolean;
6471    pub fn gst_poll_fd_can_read(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6472    pub fn gst_poll_fd_can_write(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6473    #[cfg(feature = "v1_16")]
6474    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6475    pub fn gst_poll_fd_ctl_pri(set: *mut GstPoll, fd: *mut GstPollFD, active: gboolean)
6476    -> gboolean;
6477    pub fn gst_poll_fd_ctl_read(
6478        set: *mut GstPoll,
6479        fd: *mut GstPollFD,
6480        active: gboolean,
6481    ) -> gboolean;
6482    pub fn gst_poll_fd_ctl_write(
6483        set: *mut GstPoll,
6484        fd: *mut GstPollFD,
6485        active: gboolean,
6486    ) -> gboolean;
6487    pub fn gst_poll_fd_has_closed(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6488    pub fn gst_poll_fd_has_error(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6489    #[cfg(feature = "v1_16")]
6490    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6491    pub fn gst_poll_fd_has_pri(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6492    pub fn gst_poll_fd_ignored(set: *mut GstPoll, fd: *mut GstPollFD);
6493    pub fn gst_poll_free(set: *mut GstPoll);
6494    pub fn gst_poll_get_read_gpollfd(set: *mut GstPoll, fd: *mut glib::GPollFD);
6495    pub fn gst_poll_read_control(set: *mut GstPoll) -> gboolean;
6496    pub fn gst_poll_remove_fd(set: *mut GstPoll, fd: *mut GstPollFD) -> gboolean;
6497    pub fn gst_poll_restart(set: *mut GstPoll);
6498    pub fn gst_poll_set_controllable(set: *mut GstPoll, controllable: gboolean) -> gboolean;
6499    pub fn gst_poll_set_flushing(set: *mut GstPoll, flushing: gboolean);
6500    pub fn gst_poll_wait(set: *mut GstPoll, timeout: GstClockTime) -> c_int;
6501    pub fn gst_poll_write_control(set: *mut GstPoll) -> gboolean;
6502    pub fn gst_poll_new(controllable: gboolean) -> *mut GstPoll;
6503    pub fn gst_poll_new_timer() -> *mut GstPoll;
6504
6505    //=========================================================================
6506    // GstPollFD
6507    //=========================================================================
6508    pub fn gst_poll_fd_init(fd: *mut GstPollFD);
6509
6510    //=========================================================================
6511    // GstPromise
6512    //=========================================================================
6513    pub fn gst_promise_get_type() -> GType;
6514    pub fn gst_promise_new() -> *mut GstPromise;
6515    pub fn gst_promise_new_with_change_func(
6516        func: GstPromiseChangeFunc,
6517        user_data: gpointer,
6518        notify: glib::GDestroyNotify,
6519    ) -> *mut GstPromise;
6520    pub fn gst_promise_expire(promise: *mut GstPromise);
6521    pub fn gst_promise_get_reply(promise: *mut GstPromise) -> *const GstStructure;
6522    pub fn gst_promise_interrupt(promise: *mut GstPromise);
6523    #[cfg(feature = "v1_18_3")]
6524    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6525    pub fn gst_promise_ref(promise: *mut GstPromise) -> *mut GstPromise;
6526    pub fn gst_promise_reply(promise: *mut GstPromise, s: *mut GstStructure);
6527    #[cfg(feature = "v1_18_3")]
6528    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6529    pub fn gst_promise_unref(promise: *mut GstPromise);
6530    pub fn gst_promise_wait(promise: *mut GstPromise) -> GstPromiseResult;
6531
6532    //=========================================================================
6533    // GstProtectionMeta
6534    //=========================================================================
6535    pub fn gst_protection_meta_get_info() -> *const GstMetaInfo;
6536
6537    //=========================================================================
6538    // GstQuery
6539    //=========================================================================
6540    pub fn gst_query_get_type() -> GType;
6541    pub fn gst_query_new_accept_caps(caps: *mut GstCaps) -> *mut GstQuery;
6542    pub fn gst_query_new_allocation(caps: *mut GstCaps, need_pool: gboolean) -> *mut GstQuery;
6543    #[cfg(feature = "v1_16")]
6544    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6545    pub fn gst_query_new_bitrate() -> *mut GstQuery;
6546    pub fn gst_query_new_buffering(format: GstFormat) -> *mut GstQuery;
6547    pub fn gst_query_new_caps(filter: *mut GstCaps) -> *mut GstQuery;
6548    pub fn gst_query_new_context(context_type: *const c_char) -> *mut GstQuery;
6549    pub fn gst_query_new_convert(
6550        src_format: GstFormat,
6551        value: i64,
6552        dest_format: GstFormat,
6553    ) -> *mut GstQuery;
6554    pub fn gst_query_new_custom(type_: GstQueryType, structure: *mut GstStructure)
6555    -> *mut GstQuery;
6556    pub fn gst_query_new_drain() -> *mut GstQuery;
6557    pub fn gst_query_new_duration(format: GstFormat) -> *mut GstQuery;
6558    pub fn gst_query_new_formats() -> *mut GstQuery;
6559    pub fn gst_query_new_latency() -> *mut GstQuery;
6560    pub fn gst_query_new_position(format: GstFormat) -> *mut GstQuery;
6561    pub fn gst_query_new_scheduling() -> *mut GstQuery;
6562    pub fn gst_query_new_seeking(format: GstFormat) -> *mut GstQuery;
6563    pub fn gst_query_new_segment(format: GstFormat) -> *mut GstQuery;
6564    #[cfg(feature = "v1_22")]
6565    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6566    pub fn gst_query_new_selectable() -> *mut GstQuery;
6567    pub fn gst_query_new_uri() -> *mut GstQuery;
6568    pub fn gst_query_add_allocation_meta(
6569        query: *mut GstQuery,
6570        api: GType,
6571        params: *const GstStructure,
6572    );
6573    pub fn gst_query_add_allocation_param(
6574        query: *mut GstQuery,
6575        allocator: *mut GstAllocator,
6576        params: *const GstAllocationParams,
6577    );
6578    pub fn gst_query_add_allocation_pool(
6579        query: *mut GstQuery,
6580        pool: *mut GstBufferPool,
6581        size: c_uint,
6582        min_buffers: c_uint,
6583        max_buffers: c_uint,
6584    );
6585    pub fn gst_query_add_buffering_range(query: *mut GstQuery, start: i64, stop: i64) -> gboolean;
6586    pub fn gst_query_add_scheduling_mode(query: *mut GstQuery, mode: GstPadMode);
6587    #[cfg(feature = "v1_18_3")]
6588    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6589    pub fn gst_query_copy(q: *const GstQuery) -> *mut GstQuery;
6590    pub fn gst_query_find_allocation_meta(
6591        query: *mut GstQuery,
6592        api: GType,
6593        index: *mut c_uint,
6594    ) -> gboolean;
6595    pub fn gst_query_get_n_allocation_metas(query: *mut GstQuery) -> c_uint;
6596    pub fn gst_query_get_n_allocation_params(query: *mut GstQuery) -> c_uint;
6597    pub fn gst_query_get_n_allocation_pools(query: *mut GstQuery) -> c_uint;
6598    pub fn gst_query_get_n_buffering_ranges(query: *mut GstQuery) -> c_uint;
6599    pub fn gst_query_get_n_scheduling_modes(query: *mut GstQuery) -> c_uint;
6600    pub fn gst_query_get_structure(query: *mut GstQuery) -> *const GstStructure;
6601    pub fn gst_query_has_scheduling_mode(query: *mut GstQuery, mode: GstPadMode) -> gboolean;
6602    pub fn gst_query_has_scheduling_mode_with_flags(
6603        query: *mut GstQuery,
6604        mode: GstPadMode,
6605        flags: GstSchedulingFlags,
6606    ) -> gboolean;
6607    pub fn gst_query_is_writable(query: *const GstQuery) -> gboolean;
6608    pub fn gst_query_make_writable(query: *mut GstQuery) -> *mut GstQuery;
6609    pub fn gst_query_parse_accept_caps(query: *mut GstQuery, caps: *mut *mut GstCaps);
6610    pub fn gst_query_parse_accept_caps_result(query: *mut GstQuery, result: *mut gboolean);
6611    pub fn gst_query_parse_allocation(
6612        query: *mut GstQuery,
6613        caps: *mut *mut GstCaps,
6614        need_pool: *mut gboolean,
6615    );
6616    #[cfg(feature = "v1_16")]
6617    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6618    pub fn gst_query_parse_bitrate(query: *mut GstQuery, nominal_bitrate: *mut c_uint);
6619    pub fn gst_query_parse_buffering_percent(
6620        query: *mut GstQuery,
6621        busy: *mut gboolean,
6622        percent: *mut c_int,
6623    );
6624    pub fn gst_query_parse_buffering_range(
6625        query: *mut GstQuery,
6626        format: *mut GstFormat,
6627        start: *mut i64,
6628        stop: *mut i64,
6629        estimated_total: *mut i64,
6630    );
6631    pub fn gst_query_parse_buffering_stats(
6632        query: *mut GstQuery,
6633        mode: *mut GstBufferingMode,
6634        avg_in: *mut c_int,
6635        avg_out: *mut c_int,
6636        buffering_left: *mut i64,
6637    );
6638    pub fn gst_query_parse_caps(query: *mut GstQuery, filter: *mut *mut GstCaps);
6639    pub fn gst_query_parse_caps_result(query: *mut GstQuery, caps: *mut *mut GstCaps);
6640    pub fn gst_query_parse_context(query: *mut GstQuery, context: *mut *mut GstContext);
6641    pub fn gst_query_parse_context_type(
6642        query: *mut GstQuery,
6643        context_type: *mut *const c_char,
6644    ) -> gboolean;
6645    pub fn gst_query_parse_convert(
6646        query: *mut GstQuery,
6647        src_format: *mut GstFormat,
6648        src_value: *mut i64,
6649        dest_format: *mut GstFormat,
6650        dest_value: *mut i64,
6651    );
6652    pub fn gst_query_parse_duration(
6653        query: *mut GstQuery,
6654        format: *mut GstFormat,
6655        duration: *mut i64,
6656    );
6657    pub fn gst_query_parse_latency(
6658        query: *mut GstQuery,
6659        live: *mut gboolean,
6660        min_latency: *mut GstClockTime,
6661        max_latency: *mut GstClockTime,
6662    );
6663    pub fn gst_query_parse_n_formats(query: *mut GstQuery, n_formats: *mut c_uint);
6664    pub fn gst_query_parse_nth_allocation_meta(
6665        query: *mut GstQuery,
6666        index: c_uint,
6667        params: *mut *const GstStructure,
6668    ) -> GType;
6669    pub fn gst_query_parse_nth_allocation_param(
6670        query: *mut GstQuery,
6671        index: c_uint,
6672        allocator: *mut *mut GstAllocator,
6673        params: *mut GstAllocationParams,
6674    );
6675    pub fn gst_query_parse_nth_allocation_pool(
6676        query: *mut GstQuery,
6677        index: c_uint,
6678        pool: *mut *mut GstBufferPool,
6679        size: *mut c_uint,
6680        min_buffers: *mut c_uint,
6681        max_buffers: *mut c_uint,
6682    );
6683    pub fn gst_query_parse_nth_buffering_range(
6684        query: *mut GstQuery,
6685        index: c_uint,
6686        start: *mut i64,
6687        stop: *mut i64,
6688    ) -> gboolean;
6689    pub fn gst_query_parse_nth_format(query: *mut GstQuery, nth: c_uint, format: *mut GstFormat);
6690    pub fn gst_query_parse_nth_scheduling_mode(query: *mut GstQuery, index: c_uint) -> GstPadMode;
6691    pub fn gst_query_parse_position(query: *mut GstQuery, format: *mut GstFormat, cur: *mut i64);
6692    pub fn gst_query_parse_scheduling(
6693        query: *mut GstQuery,
6694        flags: *mut GstSchedulingFlags,
6695        minsize: *mut c_int,
6696        maxsize: *mut c_int,
6697        align: *mut c_int,
6698    );
6699    pub fn gst_query_parse_seeking(
6700        query: *mut GstQuery,
6701        format: *mut GstFormat,
6702        seekable: *mut gboolean,
6703        segment_start: *mut i64,
6704        segment_end: *mut i64,
6705    );
6706    pub fn gst_query_parse_segment(
6707        query: *mut GstQuery,
6708        rate: *mut c_double,
6709        format: *mut GstFormat,
6710        start_value: *mut i64,
6711        stop_value: *mut i64,
6712    );
6713    #[cfg(feature = "v1_22")]
6714    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6715    pub fn gst_query_parse_selectable(query: *mut GstQuery, selectable: *mut gboolean);
6716    pub fn gst_query_parse_uri(query: *mut GstQuery, uri: *mut *mut c_char);
6717    pub fn gst_query_parse_uri_redirection(query: *mut GstQuery, uri: *mut *mut c_char);
6718    pub fn gst_query_parse_uri_redirection_permanent(
6719        query: *mut GstQuery,
6720        permanent: *mut gboolean,
6721    );
6722    #[cfg(feature = "v1_18_3")]
6723    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6724    pub fn gst_query_ref(q: *mut GstQuery) -> *mut GstQuery;
6725    pub fn gst_query_remove_nth_allocation_meta(query: *mut GstQuery, index: c_uint);
6726    pub fn gst_query_remove_nth_allocation_param(query: *mut GstQuery, index: c_uint);
6727    pub fn gst_query_remove_nth_allocation_pool(query: *mut GstQuery, index: c_uint);
6728    pub fn gst_query_set_accept_caps_result(query: *mut GstQuery, result: gboolean);
6729    #[cfg(feature = "v1_16")]
6730    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6731    pub fn gst_query_set_bitrate(query: *mut GstQuery, nominal_bitrate: c_uint);
6732    pub fn gst_query_set_buffering_percent(query: *mut GstQuery, busy: gboolean, percent: c_int);
6733    pub fn gst_query_set_buffering_range(
6734        query: *mut GstQuery,
6735        format: GstFormat,
6736        start: i64,
6737        stop: i64,
6738        estimated_total: i64,
6739    );
6740    pub fn gst_query_set_buffering_stats(
6741        query: *mut GstQuery,
6742        mode: GstBufferingMode,
6743        avg_in: c_int,
6744        avg_out: c_int,
6745        buffering_left: i64,
6746    );
6747    pub fn gst_query_set_caps_result(query: *mut GstQuery, caps: *mut GstCaps);
6748    pub fn gst_query_set_context(query: *mut GstQuery, context: *mut GstContext);
6749    pub fn gst_query_set_convert(
6750        query: *mut GstQuery,
6751        src_format: GstFormat,
6752        src_value: i64,
6753        dest_format: GstFormat,
6754        dest_value: i64,
6755    );
6756    pub fn gst_query_set_duration(query: *mut GstQuery, format: GstFormat, duration: i64);
6757    pub fn gst_query_set_formats(query: *mut GstQuery, n_formats: c_int, ...);
6758    pub fn gst_query_set_formatsv(
6759        query: *mut GstQuery,
6760        n_formats: c_int,
6761        formats: *const GstFormat,
6762    );
6763    pub fn gst_query_set_latency(
6764        query: *mut GstQuery,
6765        live: gboolean,
6766        min_latency: GstClockTime,
6767        max_latency: GstClockTime,
6768    );
6769    pub fn gst_query_set_nth_allocation_param(
6770        query: *mut GstQuery,
6771        index: c_uint,
6772        allocator: *mut GstAllocator,
6773        params: *const GstAllocationParams,
6774    );
6775    pub fn gst_query_set_nth_allocation_pool(
6776        query: *mut GstQuery,
6777        index: c_uint,
6778        pool: *mut GstBufferPool,
6779        size: c_uint,
6780        min_buffers: c_uint,
6781        max_buffers: c_uint,
6782    );
6783    pub fn gst_query_set_position(query: *mut GstQuery, format: GstFormat, cur: i64);
6784    pub fn gst_query_set_scheduling(
6785        query: *mut GstQuery,
6786        flags: GstSchedulingFlags,
6787        minsize: c_int,
6788        maxsize: c_int,
6789        align: c_int,
6790    );
6791    pub fn gst_query_set_seeking(
6792        query: *mut GstQuery,
6793        format: GstFormat,
6794        seekable: gboolean,
6795        segment_start: i64,
6796        segment_end: i64,
6797    );
6798    pub fn gst_query_set_segment(
6799        query: *mut GstQuery,
6800        rate: c_double,
6801        format: GstFormat,
6802        start_value: i64,
6803        stop_value: i64,
6804    );
6805    #[cfg(feature = "v1_22")]
6806    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6807    pub fn gst_query_set_selectable(query: *mut GstQuery, selectable: gboolean);
6808    pub fn gst_query_set_uri(query: *mut GstQuery, uri: *const c_char);
6809    pub fn gst_query_set_uri_redirection(query: *mut GstQuery, uri: *const c_char);
6810    pub fn gst_query_set_uri_redirection_permanent(query: *mut GstQuery, permanent: gboolean);
6811    #[cfg(feature = "v1_18_3")]
6812    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6813    pub fn gst_query_unref(q: *mut GstQuery);
6814    pub fn gst_query_writable_structure(query: *mut GstQuery) -> *mut GstStructure;
6815    #[cfg(feature = "v1_18_3")]
6816    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6817    pub fn gst_query_replace(old_query: *mut *mut GstQuery, new_query: *mut GstQuery) -> gboolean;
6818    #[cfg(feature = "v1_28")]
6819    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6820    pub fn gst_query_steal(old_query: *mut *mut GstQuery) -> *mut GstQuery;
6821    #[cfg(feature = "v1_18_3")]
6822    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6823    pub fn gst_query_take(old_query: *mut *mut GstQuery, new_query: *mut GstQuery) -> gboolean;
6824
6825    //=========================================================================
6826    // GstReferenceTimestampMeta
6827    //=========================================================================
6828    pub fn gst_reference_timestamp_meta_get_info() -> *const GstMetaInfo;
6829
6830    //=========================================================================
6831    // GstSample
6832    //=========================================================================
6833    pub fn gst_sample_get_type() -> GType;
6834    pub fn gst_sample_new(
6835        buffer: *mut GstBuffer,
6836        caps: *mut GstCaps,
6837        segment: *const GstSegment,
6838        info: *mut GstStructure,
6839    ) -> *mut GstSample;
6840    #[cfg(feature = "v1_18_3")]
6841    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6842    pub fn gst_sample_copy(sample: *const GstSample) -> *mut GstSample;
6843    pub fn gst_sample_get_buffer(sample: *mut GstSample) -> *mut GstBuffer;
6844    pub fn gst_sample_get_buffer_list(sample: *mut GstSample) -> *mut GstBufferList;
6845    pub fn gst_sample_get_caps(sample: *mut GstSample) -> *mut GstCaps;
6846    pub fn gst_sample_get_info(sample: *mut GstSample) -> *const GstStructure;
6847    pub fn gst_sample_get_segment(sample: *mut GstSample) -> *mut GstSegment;
6848    #[cfg(feature = "v1_16")]
6849    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6850    pub fn gst_sample_is_writable(sample: *const GstSample) -> gboolean;
6851    #[cfg(feature = "v1_16")]
6852    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6853    pub fn gst_sample_make_writable(sample: *mut GstSample) -> *mut GstSample;
6854    #[cfg(feature = "v1_18_3")]
6855    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6856    pub fn gst_sample_ref(sample: *mut GstSample) -> *mut GstSample;
6857    #[cfg(feature = "v1_16")]
6858    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6859    pub fn gst_sample_set_buffer(sample: *mut GstSample, buffer: *mut GstBuffer);
6860    pub fn gst_sample_set_buffer_list(sample: *mut GstSample, buffer_list: *mut GstBufferList);
6861    #[cfg(feature = "v1_16")]
6862    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6863    pub fn gst_sample_set_caps(sample: *mut GstSample, caps: *mut GstCaps);
6864    #[cfg(feature = "v1_16")]
6865    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6866    pub fn gst_sample_set_info(sample: *mut GstSample, info: *mut GstStructure) -> gboolean;
6867    #[cfg(feature = "v1_16")]
6868    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6869    pub fn gst_sample_set_segment(sample: *mut GstSample, segment: *const GstSegment);
6870    #[cfg(feature = "v1_18_3")]
6871    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6872    pub fn gst_sample_unref(sample: *mut GstSample);
6873
6874    //=========================================================================
6875    // GstSegment
6876    //=========================================================================
6877    pub fn gst_segment_get_type() -> GType;
6878    pub fn gst_segment_new() -> *mut GstSegment;
6879    pub fn gst_segment_clip(
6880        segment: *const GstSegment,
6881        format: GstFormat,
6882        start: u64,
6883        stop: u64,
6884        clip_start: *mut u64,
6885        clip_stop: *mut u64,
6886    ) -> gboolean;
6887    pub fn gst_segment_copy(segment: *const GstSegment) -> *mut GstSegment;
6888    pub fn gst_segment_copy_into(src: *const GstSegment, dest: *mut GstSegment);
6889    pub fn gst_segment_do_seek(
6890        segment: *mut GstSegment,
6891        rate: c_double,
6892        format: GstFormat,
6893        flags: GstSeekFlags,
6894        start_type: GstSeekType,
6895        start: u64,
6896        stop_type: GstSeekType,
6897        stop: u64,
6898        update: *mut gboolean,
6899    ) -> gboolean;
6900    pub fn gst_segment_free(segment: *mut GstSegment);
6901    pub fn gst_segment_init(segment: *mut GstSegment, format: GstFormat);
6902    pub fn gst_segment_is_equal(s0: *const GstSegment, s1: *const GstSegment) -> gboolean;
6903    pub fn gst_segment_offset_running_time(
6904        segment: *mut GstSegment,
6905        format: GstFormat,
6906        offset: i64,
6907    ) -> gboolean;
6908    pub fn gst_segment_position_from_running_time(
6909        segment: *const GstSegment,
6910        format: GstFormat,
6911        running_time: u64,
6912    ) -> u64;
6913    pub fn gst_segment_position_from_running_time_full(
6914        segment: *const GstSegment,
6915        format: GstFormat,
6916        running_time: u64,
6917        position: *mut u64,
6918    ) -> c_int;
6919    pub fn gst_segment_position_from_stream_time(
6920        segment: *const GstSegment,
6921        format: GstFormat,
6922        stream_time: u64,
6923    ) -> u64;
6924    pub fn gst_segment_position_from_stream_time_full(
6925        segment: *const GstSegment,
6926        format: GstFormat,
6927        stream_time: u64,
6928        position: *mut u64,
6929    ) -> c_int;
6930    pub fn gst_segment_set_running_time(
6931        segment: *mut GstSegment,
6932        format: GstFormat,
6933        running_time: u64,
6934    ) -> gboolean;
6935    pub fn gst_segment_to_position(
6936        segment: *const GstSegment,
6937        format: GstFormat,
6938        running_time: u64,
6939    ) -> u64;
6940    pub fn gst_segment_to_running_time(
6941        segment: *const GstSegment,
6942        format: GstFormat,
6943        position: u64,
6944    ) -> u64;
6945    pub fn gst_segment_to_running_time_full(
6946        segment: *const GstSegment,
6947        format: GstFormat,
6948        position: u64,
6949        running_time: *mut u64,
6950    ) -> c_int;
6951    pub fn gst_segment_to_stream_time(
6952        segment: *const GstSegment,
6953        format: GstFormat,
6954        position: u64,
6955    ) -> u64;
6956    pub fn gst_segment_to_stream_time_full(
6957        segment: *const GstSegment,
6958        format: GstFormat,
6959        position: u64,
6960        stream_time: *mut u64,
6961    ) -> c_int;
6962
6963    //=========================================================================
6964    // GstStaticCaps
6965    //=========================================================================
6966    pub fn gst_static_caps_get_type() -> GType;
6967    pub fn gst_static_caps_cleanup(static_caps: *mut GstStaticCaps);
6968    pub fn gst_static_caps_get(static_caps: *mut GstStaticCaps) -> *mut GstCaps;
6969
6970    //=========================================================================
6971    // GstStaticPadTemplate
6972    //=========================================================================
6973    pub fn gst_static_pad_template_get_type() -> GType;
6974    pub fn gst_static_pad_template_get(
6975        pad_template: *mut GstStaticPadTemplate,
6976    ) -> *mut GstPadTemplate;
6977    pub fn gst_static_pad_template_get_caps(templ: *mut GstStaticPadTemplate) -> *mut GstCaps;
6978
6979    //=========================================================================
6980    // GstStructure
6981    //=========================================================================
6982    pub fn gst_structure_get_type() -> GType;
6983    pub fn gst_structure_from_string(
6984        string: *const c_char,
6985        end: *mut *mut c_char,
6986    ) -> *mut GstStructure;
6987    pub fn gst_structure_new(
6988        name: *const c_char,
6989        firstfield: *const c_char,
6990        ...
6991    ) -> *mut GstStructure;
6992    pub fn gst_structure_new_empty(name: *const c_char) -> *mut GstStructure;
6993    pub fn gst_structure_new_from_string(string: *const c_char) -> *mut GstStructure;
6994    pub fn gst_structure_new_id(
6995        name_quark: glib::GQuark,
6996        field_quark: glib::GQuark,
6997        ...
6998    ) -> *mut GstStructure;
6999    pub fn gst_structure_new_id_empty(quark: glib::GQuark) -> *mut GstStructure;
7000    #[cfg(feature = "v1_26")]
7001    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7002    pub fn gst_structure_new_id_str(
7003        name: *const GstIdStr,
7004        fieldname: *const GstIdStr,
7005        ...
7006    ) -> *mut GstStructure;
7007    #[cfg(feature = "v1_26")]
7008    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7009    pub fn gst_structure_new_id_str_empty(name: *const GstIdStr) -> *mut GstStructure;
7010    //#[cfg(feature = "v1_26")]
7011    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7012    //pub fn gst_structure_new_id_str_valist(name: *const GstIdStr, firstfield: *const GstIdStr, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
7013    #[cfg(feature = "v1_26")]
7014    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7015    pub fn gst_structure_new_static_str(
7016        name: *const c_char,
7017        firstfield: *const c_char,
7018        ...
7019    ) -> *mut GstStructure;
7020    #[cfg(feature = "v1_26")]
7021    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7022    pub fn gst_structure_new_static_str_empty(name: *const c_char) -> *mut GstStructure;
7023    //#[cfg(feature = "v1_26")]
7024    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7025    //pub fn gst_structure_new_static_str_valist(name: *const c_char, firstfield: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
7026    //pub fn gst_structure_new_valist(name: *const c_char, firstfield: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
7027    pub fn gst_structure_can_intersect(
7028        struct1: *const GstStructure,
7029        struct2: *const GstStructure,
7030    ) -> gboolean;
7031    pub fn gst_structure_copy(structure: *const GstStructure) -> *mut GstStructure;
7032    pub fn gst_structure_filter_and_map_in_place(
7033        structure: *mut GstStructure,
7034        func: GstStructureFilterMapFunc,
7035        user_data: gpointer,
7036    );
7037    #[cfg(feature = "v1_26")]
7038    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7039    pub fn gst_structure_filter_and_map_in_place_id_str(
7040        structure: *mut GstStructure,
7041        func: GstStructureFilterMapIdStrFunc,
7042        user_data: gpointer,
7043    );
7044    pub fn gst_structure_fixate(structure: *mut GstStructure);
7045    pub fn gst_structure_fixate_field(
7046        structure: *mut GstStructure,
7047        field_name: *const c_char,
7048    ) -> gboolean;
7049    pub fn gst_structure_fixate_field_boolean(
7050        structure: *mut GstStructure,
7051        field_name: *const c_char,
7052        target: gboolean,
7053    ) -> gboolean;
7054    pub fn gst_structure_fixate_field_nearest_double(
7055        structure: *mut GstStructure,
7056        field_name: *const c_char,
7057        target: c_double,
7058    ) -> gboolean;
7059    pub fn gst_structure_fixate_field_nearest_fraction(
7060        structure: *mut GstStructure,
7061        field_name: *const c_char,
7062        target_numerator: c_int,
7063        target_denominator: c_int,
7064    ) -> gboolean;
7065    pub fn gst_structure_fixate_field_nearest_int(
7066        structure: *mut GstStructure,
7067        field_name: *const c_char,
7068        target: c_int,
7069    ) -> gboolean;
7070    pub fn gst_structure_fixate_field_string(
7071        structure: *mut GstStructure,
7072        field_name: *const c_char,
7073        target: *const c_char,
7074    ) -> gboolean;
7075    pub fn gst_structure_foreach(
7076        structure: *const GstStructure,
7077        func: GstStructureForeachFunc,
7078        user_data: gpointer,
7079    ) -> gboolean;
7080    #[cfg(feature = "v1_26")]
7081    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7082    pub fn gst_structure_foreach_id_str(
7083        structure: *const GstStructure,
7084        func: GstStructureForeachIdStrFunc,
7085        user_data: gpointer,
7086    ) -> gboolean;
7087    pub fn gst_structure_free(structure: *mut GstStructure);
7088    pub fn gst_structure_get(
7089        structure: *const GstStructure,
7090        first_fieldname: *const c_char,
7091        ...
7092    ) -> gboolean;
7093    pub fn gst_structure_get_array(
7094        structure: *mut GstStructure,
7095        fieldname: *const c_char,
7096        array: *mut *mut gobject::GValueArray,
7097    ) -> gboolean;
7098    pub fn gst_structure_get_boolean(
7099        structure: *const GstStructure,
7100        fieldname: *const c_char,
7101        value: *mut gboolean,
7102    ) -> gboolean;
7103    #[cfg(feature = "v1_28")]
7104    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
7105    pub fn gst_structure_get_caps(
7106        structure: *const GstStructure,
7107        fieldname: *const c_char,
7108        caps: *mut *const GstCaps,
7109    ) -> gboolean;
7110    pub fn gst_structure_get_clock_time(
7111        structure: *const GstStructure,
7112        fieldname: *const c_char,
7113        value: *mut GstClockTime,
7114    ) -> gboolean;
7115    pub fn gst_structure_get_date(
7116        structure: *const GstStructure,
7117        fieldname: *const c_char,
7118        value: *mut *mut glib::GDate,
7119    ) -> gboolean;
7120    pub fn gst_structure_get_date_time(
7121        structure: *const GstStructure,
7122        fieldname: *const c_char,
7123        value: *mut *mut GstDateTime,
7124    ) -> gboolean;
7125    pub fn gst_structure_get_double(
7126        structure: *const GstStructure,
7127        fieldname: *const c_char,
7128        value: *mut c_double,
7129    ) -> gboolean;
7130    pub fn gst_structure_get_enum(
7131        structure: *const GstStructure,
7132        fieldname: *const c_char,
7133        enumtype: GType,
7134        value: *mut c_int,
7135    ) -> gboolean;
7136    pub fn gst_structure_get_field_type(
7137        structure: *const GstStructure,
7138        fieldname: *const c_char,
7139    ) -> GType;
7140    #[cfg(feature = "v1_22")]
7141    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
7142    pub fn gst_structure_get_flags(
7143        structure: *const GstStructure,
7144        fieldname: *const c_char,
7145        flags_type: GType,
7146        value: *mut c_uint,
7147    ) -> gboolean;
7148    pub fn gst_structure_get_flagset(
7149        structure: *const GstStructure,
7150        fieldname: *const c_char,
7151        value_flags: *mut c_uint,
7152        value_mask: *mut c_uint,
7153    ) -> gboolean;
7154    pub fn gst_structure_get_fraction(
7155        structure: *const GstStructure,
7156        fieldname: *const c_char,
7157        value_numerator: *mut c_int,
7158        value_denominator: *mut c_int,
7159    ) -> gboolean;
7160    pub fn gst_structure_get_int(
7161        structure: *const GstStructure,
7162        fieldname: *const c_char,
7163        value: *mut c_int,
7164    ) -> gboolean;
7165    pub fn gst_structure_get_int64(
7166        structure: *const GstStructure,
7167        fieldname: *const c_char,
7168        value: *mut i64,
7169    ) -> gboolean;
7170    pub fn gst_structure_get_list(
7171        structure: *mut GstStructure,
7172        fieldname: *const c_char,
7173        array: *mut *mut gobject::GValueArray,
7174    ) -> gboolean;
7175    pub fn gst_structure_get_name(structure: *const GstStructure) -> *const c_char;
7176    pub fn gst_structure_get_name_id(structure: *const GstStructure) -> glib::GQuark;
7177    #[cfg(feature = "v1_26")]
7178    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7179    pub fn gst_structure_get_name_id_str(structure: *const GstStructure) -> *const GstIdStr;
7180    pub fn gst_structure_get_string(
7181        structure: *const GstStructure,
7182        fieldname: *const c_char,
7183    ) -> *const c_char;
7184    pub fn gst_structure_get_uint(
7185        structure: *const GstStructure,
7186        fieldname: *const c_char,
7187        value: *mut c_uint,
7188    ) -> gboolean;
7189    pub fn gst_structure_get_uint64(
7190        structure: *const GstStructure,
7191        fieldname: *const c_char,
7192        value: *mut u64,
7193    ) -> gboolean;
7194    //pub fn gst_structure_get_valist(structure: *const GstStructure, first_fieldname: *const c_char, args: /*Unimplemented*/va_list) -> gboolean;
7195    pub fn gst_structure_get_value(
7196        structure: *const GstStructure,
7197        fieldname: *const c_char,
7198    ) -> *const gobject::GValue;
7199    pub fn gst_structure_has_field(
7200        structure: *const GstStructure,
7201        fieldname: *const c_char,
7202    ) -> gboolean;
7203    pub fn gst_structure_has_field_typed(
7204        structure: *const GstStructure,
7205        fieldname: *const c_char,
7206        type_: GType,
7207    ) -> gboolean;
7208    pub fn gst_structure_has_name(structure: *const GstStructure, name: *const c_char) -> gboolean;
7209    pub fn gst_structure_id_get(
7210        structure: *const GstStructure,
7211        first_field_id: glib::GQuark,
7212        ...
7213    ) -> gboolean;
7214    //pub fn gst_structure_id_get_valist(structure: *const GstStructure, first_field_id: glib::GQuark, args: /*Unimplemented*/va_list) -> gboolean;
7215    pub fn gst_structure_id_get_value(
7216        structure: *const GstStructure,
7217        field: glib::GQuark,
7218    ) -> *const gobject::GValue;
7219    pub fn gst_structure_id_has_field(
7220        structure: *const GstStructure,
7221        field: glib::GQuark,
7222    ) -> gboolean;
7223    pub fn gst_structure_id_has_field_typed(
7224        structure: *const GstStructure,
7225        field: glib::GQuark,
7226        type_: GType,
7227    ) -> gboolean;
7228    pub fn gst_structure_id_set(structure: *mut GstStructure, fieldname: glib::GQuark, ...);
7229    //pub fn gst_structure_id_set_valist(structure: *mut GstStructure, fieldname: glib::GQuark, varargs: /*Unimplemented*/va_list);
7230    pub fn gst_structure_id_set_value(
7231        structure: *mut GstStructure,
7232        field: glib::GQuark,
7233        value: *const gobject::GValue,
7234    );
7235    #[cfg(feature = "v1_26")]
7236    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7237    pub fn gst_structure_id_str_get(
7238        structure: *const GstStructure,
7239        first_fieldname: *const GstIdStr,
7240        ...
7241    ) -> gboolean;
7242    #[cfg(feature = "v1_26")]
7243    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7244    pub fn gst_structure_id_str_get_field_type(
7245        structure: *const GstStructure,
7246        fieldname: *const GstIdStr,
7247    ) -> GType;
7248    //#[cfg(feature = "v1_26")]
7249    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7250    //pub fn gst_structure_id_str_get_valist(structure: *const GstStructure, first_fieldname: *const GstIdStr, args: /*Unimplemented*/va_list) -> gboolean;
7251    #[cfg(feature = "v1_26")]
7252    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7253    pub fn gst_structure_id_str_get_value(
7254        structure: *const GstStructure,
7255        fieldname: *const GstIdStr,
7256    ) -> *const gobject::GValue;
7257    #[cfg(feature = "v1_26")]
7258    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7259    pub fn gst_structure_id_str_has_field(
7260        structure: *const GstStructure,
7261        fieldname: *const GstIdStr,
7262    ) -> gboolean;
7263    #[cfg(feature = "v1_26")]
7264    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7265    pub fn gst_structure_id_str_has_field_typed(
7266        structure: *const GstStructure,
7267        fieldname: *const GstIdStr,
7268        type_: GType,
7269    ) -> gboolean;
7270    #[cfg(feature = "v1_26")]
7271    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7272    pub fn gst_structure_id_str_nth_field_name(
7273        structure: *const GstStructure,
7274        index: c_uint,
7275    ) -> *const GstIdStr;
7276    #[cfg(feature = "v1_26")]
7277    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7278    pub fn gst_structure_id_str_remove_field(
7279        structure: *mut GstStructure,
7280        fieldname: *const GstIdStr,
7281    );
7282    #[cfg(feature = "v1_26")]
7283    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7284    pub fn gst_structure_id_str_remove_fields(
7285        structure: *mut GstStructure,
7286        fieldname: *const GstIdStr,
7287        ...
7288    );
7289    //#[cfg(feature = "v1_26")]
7290    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7291    //pub fn gst_structure_id_str_remove_fields_valist(structure: *mut GstStructure, fieldname: *const GstIdStr, varargs: /*Unimplemented*/va_list);
7292    #[cfg(feature = "v1_26")]
7293    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7294    pub fn gst_structure_id_str_set(structure: *mut GstStructure, fieldname: *const GstIdStr, ...);
7295    //#[cfg(feature = "v1_26")]
7296    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7297    //pub fn gst_structure_id_str_set_valist(structure: *mut GstStructure, fieldname: *const GstIdStr, varargs: /*Unimplemented*/va_list);
7298    #[cfg(feature = "v1_26")]
7299    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7300    pub fn gst_structure_id_str_set_value(
7301        structure: *mut GstStructure,
7302        fieldname: *const GstIdStr,
7303        value: *const gobject::GValue,
7304    );
7305    #[cfg(feature = "v1_26")]
7306    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7307    pub fn gst_structure_id_str_take_value(
7308        structure: *mut GstStructure,
7309        fieldname: *const GstIdStr,
7310        value: *mut gobject::GValue,
7311    );
7312    pub fn gst_structure_id_take_value(
7313        structure: *mut GstStructure,
7314        field: glib::GQuark,
7315        value: *mut gobject::GValue,
7316    );
7317    pub fn gst_structure_intersect(
7318        struct1: *const GstStructure,
7319        struct2: *const GstStructure,
7320    ) -> *mut GstStructure;
7321    pub fn gst_structure_is_equal(
7322        structure1: *const GstStructure,
7323        structure2: *const GstStructure,
7324    ) -> gboolean;
7325    pub fn gst_structure_is_subset(
7326        subset: *const GstStructure,
7327        superset: *const GstStructure,
7328    ) -> gboolean;
7329    #[cfg(feature = "v1_28")]
7330    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
7331    pub fn gst_structure_is_writable(structure: *const GstStructure) -> gboolean;
7332    pub fn gst_structure_map_in_place(
7333        structure: *mut GstStructure,
7334        func: GstStructureMapFunc,
7335        user_data: gpointer,
7336    ) -> gboolean;
7337    #[cfg(feature = "v1_26")]
7338    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7339    pub fn gst_structure_map_in_place_id_str(
7340        structure: *mut GstStructure,
7341        func: GstStructureMapIdStrFunc,
7342        user_data: gpointer,
7343    ) -> gboolean;
7344    pub fn gst_structure_n_fields(structure: *const GstStructure) -> c_int;
7345    pub fn gst_structure_nth_field_name(
7346        structure: *const GstStructure,
7347        index: c_uint,
7348    ) -> *const c_char;
7349    pub fn gst_structure_remove_all_fields(structure: *mut GstStructure);
7350    pub fn gst_structure_remove_field(structure: *mut GstStructure, fieldname: *const c_char);
7351    pub fn gst_structure_remove_fields(structure: *mut GstStructure, fieldname: *const c_char, ...);
7352    //pub fn gst_structure_remove_fields_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7353    #[cfg(feature = "v1_20")]
7354    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
7355    pub fn gst_structure_serialize(
7356        structure: *const GstStructure,
7357        flags: GstSerializeFlags,
7358    ) -> *mut c_char;
7359    #[cfg(feature = "v1_24")]
7360    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7361    pub fn gst_structure_serialize_full(
7362        structure: *const GstStructure,
7363        flags: GstSerializeFlags,
7364    ) -> *mut c_char;
7365    pub fn gst_structure_set(structure: *mut GstStructure, fieldname: *const c_char, ...);
7366    pub fn gst_structure_set_array(
7367        structure: *mut GstStructure,
7368        fieldname: *const c_char,
7369        array: *const gobject::GValueArray,
7370    );
7371    pub fn gst_structure_set_list(
7372        structure: *mut GstStructure,
7373        fieldname: *const c_char,
7374        array: *const gobject::GValueArray,
7375    );
7376    pub fn gst_structure_set_name(structure: *mut GstStructure, name: *const c_char);
7377    #[cfg(feature = "v1_26")]
7378    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7379    pub fn gst_structure_set_name_id_str(structure: *mut GstStructure, name: *const GstIdStr);
7380    #[cfg(feature = "v1_26")]
7381    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7382    pub fn gst_structure_set_name_static_str(structure: *mut GstStructure, name: *const c_char);
7383    pub fn gst_structure_set_parent_refcount(
7384        structure: *mut GstStructure,
7385        refcount: *mut c_int,
7386    ) -> gboolean;
7387    #[cfg(feature = "v1_26")]
7388    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7389    pub fn gst_structure_set_static_str(
7390        structure: *mut GstStructure,
7391        fieldname: *const c_char,
7392        ...
7393    );
7394    //#[cfg(feature = "v1_26")]
7395    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7396    //pub fn gst_structure_set_static_str_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7397    //pub fn gst_structure_set_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7398    pub fn gst_structure_set_value(
7399        structure: *mut GstStructure,
7400        fieldname: *const c_char,
7401        value: *const gobject::GValue,
7402    );
7403    #[cfg(feature = "v1_26")]
7404    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7405    pub fn gst_structure_set_value_static_str(
7406        structure: *mut GstStructure,
7407        fieldname: *const c_char,
7408        value: *const gobject::GValue,
7409    );
7410    pub fn gst_structure_take_value(
7411        structure: *mut GstStructure,
7412        fieldname: *const c_char,
7413        value: *mut gobject::GValue,
7414    );
7415    #[cfg(feature = "v1_26")]
7416    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7417    pub fn gst_structure_take_value_static_str(
7418        structure: *mut GstStructure,
7419        fieldname: *const c_char,
7420        value: *mut gobject::GValue,
7421    );
7422    pub fn gst_structure_to_string(structure: *const GstStructure) -> *mut c_char;
7423    #[cfg(feature = "v1_18")]
7424    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7425    pub fn gst_structure_take(
7426        oldstr_ptr: *mut *mut GstStructure,
7427        newstr: *mut GstStructure,
7428    ) -> gboolean;
7429
7430    //=========================================================================
7431    // GstTagList
7432    //=========================================================================
7433    pub fn gst_tag_list_get_type() -> GType;
7434    pub fn gst_tag_list_new(tag: *const c_char, ...) -> *mut GstTagList;
7435    pub fn gst_tag_list_new_empty() -> *mut GstTagList;
7436    pub fn gst_tag_list_new_from_string(str: *const c_char) -> *mut GstTagList;
7437    //pub fn gst_tag_list_new_valist(var_args: /*Unimplemented*/va_list) -> *mut GstTagList;
7438    pub fn gst_tag_list_add(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, ...);
7439    //pub fn gst_tag_list_add_valist(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
7440    //pub fn gst_tag_list_add_valist_values(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
7441    pub fn gst_tag_list_add_value(
7442        list: *mut GstTagList,
7443        mode: GstTagMergeMode,
7444        tag: *const c_char,
7445        value: *const gobject::GValue,
7446    );
7447    pub fn gst_tag_list_add_values(
7448        list: *mut GstTagList,
7449        mode: GstTagMergeMode,
7450        tag: *const c_char,
7451        ...
7452    );
7453    #[cfg(feature = "v1_18_3")]
7454    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7455    pub fn gst_tag_list_copy(taglist: *const GstTagList) -> *mut GstTagList;
7456    pub fn gst_tag_list_foreach(
7457        list: *const GstTagList,
7458        func: GstTagForeachFunc,
7459        user_data: gpointer,
7460    );
7461    pub fn gst_tag_list_get_boolean(
7462        list: *const GstTagList,
7463        tag: *const c_char,
7464        value: *mut gboolean,
7465    ) -> gboolean;
7466    pub fn gst_tag_list_get_boolean_index(
7467        list: *const GstTagList,
7468        tag: *const c_char,
7469        index: c_uint,
7470        value: *mut gboolean,
7471    ) -> gboolean;
7472    pub fn gst_tag_list_get_date(
7473        list: *const GstTagList,
7474        tag: *const c_char,
7475        value: *mut *mut glib::GDate,
7476    ) -> gboolean;
7477    pub fn gst_tag_list_get_date_index(
7478        list: *const GstTagList,
7479        tag: *const c_char,
7480        index: c_uint,
7481        value: *mut *mut glib::GDate,
7482    ) -> gboolean;
7483    pub fn gst_tag_list_get_date_time(
7484        list: *const GstTagList,
7485        tag: *const c_char,
7486        value: *mut *mut GstDateTime,
7487    ) -> gboolean;
7488    pub fn gst_tag_list_get_date_time_index(
7489        list: *const GstTagList,
7490        tag: *const c_char,
7491        index: c_uint,
7492        value: *mut *mut GstDateTime,
7493    ) -> gboolean;
7494    pub fn gst_tag_list_get_double(
7495        list: *const GstTagList,
7496        tag: *const c_char,
7497        value: *mut c_double,
7498    ) -> gboolean;
7499    pub fn gst_tag_list_get_double_index(
7500        list: *const GstTagList,
7501        tag: *const c_char,
7502        index: c_uint,
7503        value: *mut c_double,
7504    ) -> gboolean;
7505    pub fn gst_tag_list_get_float(
7506        list: *const GstTagList,
7507        tag: *const c_char,
7508        value: *mut c_float,
7509    ) -> gboolean;
7510    pub fn gst_tag_list_get_float_index(
7511        list: *const GstTagList,
7512        tag: *const c_char,
7513        index: c_uint,
7514        value: *mut c_float,
7515    ) -> gboolean;
7516    pub fn gst_tag_list_get_int(
7517        list: *const GstTagList,
7518        tag: *const c_char,
7519        value: *mut c_int,
7520    ) -> gboolean;
7521    pub fn gst_tag_list_get_int64(
7522        list: *const GstTagList,
7523        tag: *const c_char,
7524        value: *mut i64,
7525    ) -> gboolean;
7526    pub fn gst_tag_list_get_int64_index(
7527        list: *const GstTagList,
7528        tag: *const c_char,
7529        index: c_uint,
7530        value: *mut i64,
7531    ) -> gboolean;
7532    pub fn gst_tag_list_get_int_index(
7533        list: *const GstTagList,
7534        tag: *const c_char,
7535        index: c_uint,
7536        value: *mut c_int,
7537    ) -> gboolean;
7538    pub fn gst_tag_list_get_pointer(
7539        list: *const GstTagList,
7540        tag: *const c_char,
7541        value: *mut gpointer,
7542    ) -> gboolean;
7543    pub fn gst_tag_list_get_pointer_index(
7544        list: *const GstTagList,
7545        tag: *const c_char,
7546        index: c_uint,
7547        value: *mut gpointer,
7548    ) -> gboolean;
7549    pub fn gst_tag_list_get_sample(
7550        list: *const GstTagList,
7551        tag: *const c_char,
7552        sample: *mut *mut GstSample,
7553    ) -> gboolean;
7554    pub fn gst_tag_list_get_sample_index(
7555        list: *const GstTagList,
7556        tag: *const c_char,
7557        index: c_uint,
7558        sample: *mut *mut GstSample,
7559    ) -> gboolean;
7560    pub fn gst_tag_list_get_scope(list: *const GstTagList) -> GstTagScope;
7561    pub fn gst_tag_list_get_string(
7562        list: *const GstTagList,
7563        tag: *const c_char,
7564        value: *mut *mut c_char,
7565    ) -> gboolean;
7566    pub fn gst_tag_list_get_string_index(
7567        list: *const GstTagList,
7568        tag: *const c_char,
7569        index: c_uint,
7570        value: *mut *mut c_char,
7571    ) -> gboolean;
7572    pub fn gst_tag_list_get_tag_size(list: *const GstTagList, tag: *const c_char) -> c_uint;
7573    pub fn gst_tag_list_get_uint(
7574        list: *const GstTagList,
7575        tag: *const c_char,
7576        value: *mut c_uint,
7577    ) -> gboolean;
7578    pub fn gst_tag_list_get_uint64(
7579        list: *const GstTagList,
7580        tag: *const c_char,
7581        value: *mut u64,
7582    ) -> gboolean;
7583    pub fn gst_tag_list_get_uint64_index(
7584        list: *const GstTagList,
7585        tag: *const c_char,
7586        index: c_uint,
7587        value: *mut u64,
7588    ) -> gboolean;
7589    pub fn gst_tag_list_get_uint_index(
7590        list: *const GstTagList,
7591        tag: *const c_char,
7592        index: c_uint,
7593        value: *mut c_uint,
7594    ) -> gboolean;
7595    pub fn gst_tag_list_get_value_index(
7596        list: *const GstTagList,
7597        tag: *const c_char,
7598        index: c_uint,
7599    ) -> *const gobject::GValue;
7600    pub fn gst_tag_list_insert(
7601        into: *mut GstTagList,
7602        from: *const GstTagList,
7603        mode: GstTagMergeMode,
7604    );
7605    pub fn gst_tag_list_is_empty(list: *const GstTagList) -> gboolean;
7606    pub fn gst_tag_list_is_equal(list1: *const GstTagList, list2: *const GstTagList) -> gboolean;
7607    pub fn gst_tag_list_is_writable(taglist: *const GstTagList) -> gboolean;
7608    pub fn gst_tag_list_make_writable(taglist: *mut GstTagList) -> *mut GstTagList;
7609    pub fn gst_tag_list_merge(
7610        list1: *const GstTagList,
7611        list2: *const GstTagList,
7612        mode: GstTagMergeMode,
7613    ) -> *mut GstTagList;
7614    pub fn gst_tag_list_n_tags(list: *const GstTagList) -> c_int;
7615    pub fn gst_tag_list_nth_tag_name(list: *const GstTagList, index: c_uint) -> *const c_char;
7616    pub fn gst_tag_list_peek_string_index(
7617        list: *const GstTagList,
7618        tag: *const c_char,
7619        index: c_uint,
7620        value: *mut *const c_char,
7621    ) -> gboolean;
7622    #[cfg(feature = "v1_18_3")]
7623    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7624    pub fn gst_tag_list_ref(taglist: *mut GstTagList) -> *mut GstTagList;
7625    pub fn gst_tag_list_remove_tag(list: *mut GstTagList, tag: *const c_char);
7626    pub fn gst_tag_list_set_scope(list: *mut GstTagList, scope: GstTagScope);
7627    pub fn gst_tag_list_to_string(list: *const GstTagList) -> *mut c_char;
7628    #[cfg(feature = "v1_18_3")]
7629    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7630    pub fn gst_tag_list_unref(taglist: *mut GstTagList);
7631    pub fn gst_tag_list_copy_value(
7632        dest: *mut gobject::GValue,
7633        list: *const GstTagList,
7634        tag: *const c_char,
7635    ) -> gboolean;
7636    #[cfg(feature = "v1_18_3")]
7637    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7638    pub fn gst_tag_list_replace(
7639        old_taglist: *mut *mut GstTagList,
7640        new_taglist: *mut GstTagList,
7641    ) -> gboolean;
7642    #[cfg(feature = "v1_18_3")]
7643    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7644    pub fn gst_tag_list_take(
7645        old_taglist: *mut *mut GstTagList,
7646        new_taglist: *mut GstTagList,
7647    ) -> gboolean;
7648
7649    //=========================================================================
7650    // GstToc
7651    //=========================================================================
7652    pub fn gst_toc_get_type() -> GType;
7653    pub fn gst_toc_new(scope: GstTocScope) -> *mut GstToc;
7654    pub fn gst_toc_append_entry(toc: *mut GstToc, entry: *mut GstTocEntry);
7655    pub fn gst_toc_dump(toc: *mut GstToc);
7656    pub fn gst_toc_find_entry(toc: *const GstToc, uid: *const c_char) -> *mut GstTocEntry;
7657    pub fn gst_toc_get_entries(toc: *const GstToc) -> *mut glib::GList;
7658    pub fn gst_toc_get_scope(toc: *const GstToc) -> GstTocScope;
7659    pub fn gst_toc_get_tags(toc: *const GstToc) -> *mut GstTagList;
7660    pub fn gst_toc_merge_tags(toc: *mut GstToc, tags: *mut GstTagList, mode: GstTagMergeMode);
7661    pub fn gst_toc_set_tags(toc: *mut GstToc, tags: *mut GstTagList);
7662
7663    //=========================================================================
7664    // GstTocEntry
7665    //=========================================================================
7666    pub fn gst_toc_entry_get_type() -> GType;
7667    pub fn gst_toc_entry_new(type_: GstTocEntryType, uid: *const c_char) -> *mut GstTocEntry;
7668    pub fn gst_toc_entry_append_sub_entry(entry: *mut GstTocEntry, subentry: *mut GstTocEntry);
7669    pub fn gst_toc_entry_get_entry_type(entry: *const GstTocEntry) -> GstTocEntryType;
7670    pub fn gst_toc_entry_get_loop(
7671        entry: *const GstTocEntry,
7672        loop_type: *mut GstTocLoopType,
7673        repeat_count: *mut c_int,
7674    ) -> gboolean;
7675    pub fn gst_toc_entry_get_parent(entry: *mut GstTocEntry) -> *mut GstTocEntry;
7676    pub fn gst_toc_entry_get_start_stop_times(
7677        entry: *const GstTocEntry,
7678        start: *mut i64,
7679        stop: *mut i64,
7680    ) -> gboolean;
7681    pub fn gst_toc_entry_get_sub_entries(entry: *const GstTocEntry) -> *mut glib::GList;
7682    pub fn gst_toc_entry_get_tags(entry: *const GstTocEntry) -> *mut GstTagList;
7683    pub fn gst_toc_entry_get_toc(entry: *mut GstTocEntry) -> *mut GstToc;
7684    pub fn gst_toc_entry_get_uid(entry: *const GstTocEntry) -> *const c_char;
7685    pub fn gst_toc_entry_is_alternative(entry: *const GstTocEntry) -> gboolean;
7686    pub fn gst_toc_entry_is_sequence(entry: *const GstTocEntry) -> gboolean;
7687    pub fn gst_toc_entry_merge_tags(
7688        entry: *mut GstTocEntry,
7689        tags: *mut GstTagList,
7690        mode: GstTagMergeMode,
7691    );
7692    pub fn gst_toc_entry_set_loop(
7693        entry: *mut GstTocEntry,
7694        loop_type: GstTocLoopType,
7695        repeat_count: c_int,
7696    );
7697    pub fn gst_toc_entry_set_start_stop_times(entry: *mut GstTocEntry, start: i64, stop: i64);
7698    pub fn gst_toc_entry_set_tags(entry: *mut GstTocEntry, tags: *mut GstTagList);
7699
7700    //=========================================================================
7701    // GstTracerClass
7702    //=========================================================================
7703    #[cfg(feature = "v1_26")]
7704    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7705    pub fn gst_tracer_class_set_use_structure_params(
7706        tracer_class: *mut GstTracerClass,
7707        use_structure_params: gboolean,
7708    );
7709    #[cfg(feature = "v1_26")]
7710    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7711    pub fn gst_tracer_class_uses_structure_params(tracer_class: *mut GstTracerClass) -> gboolean;
7712
7713    //=========================================================================
7714    // GstTypeFind
7715    //=========================================================================
7716    pub fn gst_type_find_get_type() -> GType;
7717    pub fn gst_type_find_get_length(find: *mut GstTypeFind) -> u64;
7718    pub fn gst_type_find_peek(find: *mut GstTypeFind, offset: i64, size: c_uint) -> *const u8;
7719    pub fn gst_type_find_suggest(find: *mut GstTypeFind, probability: c_uint, caps: *mut GstCaps);
7720    #[cfg(feature = "v1_20")]
7721    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
7722    pub fn gst_type_find_suggest_empty_simple(
7723        find: *mut GstTypeFind,
7724        probability: c_uint,
7725        media_type: *const c_char,
7726    );
7727    pub fn gst_type_find_suggest_simple(
7728        find: *mut GstTypeFind,
7729        probability: c_uint,
7730        media_type: *const c_char,
7731        fieldname: *const c_char,
7732        ...
7733    );
7734    pub fn gst_type_find_register(
7735        plugin: *mut GstPlugin,
7736        name: *const c_char,
7737        rank: c_uint,
7738        func: GstTypeFindFunction,
7739        extensions: *const c_char,
7740        possible_caps: *mut GstCaps,
7741        data: gpointer,
7742        data_notify: glib::GDestroyNotify,
7743    ) -> gboolean;
7744
7745    //=========================================================================
7746    // GstUri
7747    //=========================================================================
7748    pub fn gst_uri_get_type() -> GType;
7749    pub fn gst_uri_new(
7750        scheme: *const c_char,
7751        userinfo: *const c_char,
7752        host: *const c_char,
7753        port: c_uint,
7754        path: *const c_char,
7755        query: *const c_char,
7756        fragment: *const c_char,
7757    ) -> *mut GstUri;
7758    pub fn gst_uri_append_path(uri: *mut GstUri, relative_path: *const c_char) -> gboolean;
7759    pub fn gst_uri_append_path_segment(uri: *mut GstUri, path_segment: *const c_char) -> gboolean;
7760    #[cfg(feature = "v1_18_3")]
7761    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7762    pub fn gst_uri_copy(uri: *const GstUri) -> *mut GstUri;
7763    pub fn gst_uri_equal(first: *const GstUri, second: *const GstUri) -> gboolean;
7764    pub fn gst_uri_from_string_with_base(base: *mut GstUri, uri: *const c_char) -> *mut GstUri;
7765    pub fn gst_uri_get_fragment(uri: *const GstUri) -> *const c_char;
7766    pub fn gst_uri_get_host(uri: *const GstUri) -> *const c_char;
7767    pub fn gst_uri_get_media_fragment_table(uri: *const GstUri) -> *mut glib::GHashTable;
7768    pub fn gst_uri_get_path(uri: *const GstUri) -> *mut c_char;
7769    pub fn gst_uri_get_path_segments(uri: *const GstUri) -> *mut glib::GList;
7770    pub fn gst_uri_get_path_string(uri: *const GstUri) -> *mut c_char;
7771    pub fn gst_uri_get_port(uri: *const GstUri) -> c_uint;
7772    pub fn gst_uri_get_query_keys(uri: *const GstUri) -> *mut glib::GList;
7773    pub fn gst_uri_get_query_string(uri: *const GstUri) -> *mut c_char;
7774    #[cfg(feature = "v1_24")]
7775    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7776    pub fn gst_uri_get_query_string_ordered(
7777        uri: *const GstUri,
7778        keys: *const glib::GList,
7779    ) -> *mut c_char;
7780    pub fn gst_uri_get_query_table(uri: *const GstUri) -> *mut glib::GHashTable;
7781    pub fn gst_uri_get_query_value(uri: *const GstUri, query_key: *const c_char) -> *const c_char;
7782    pub fn gst_uri_get_scheme(uri: *const GstUri) -> *const c_char;
7783    pub fn gst_uri_get_userinfo(uri: *const GstUri) -> *const c_char;
7784    pub fn gst_uri_is_normalized(uri: *const GstUri) -> gboolean;
7785    pub fn gst_uri_is_writable(uri: *const GstUri) -> gboolean;
7786    pub fn gst_uri_join(base_uri: *mut GstUri, ref_uri: *mut GstUri) -> *mut GstUri;
7787    pub fn gst_uri_make_writable(uri: *mut GstUri) -> *mut GstUri;
7788    pub fn gst_uri_new_with_base(
7789        base: *mut GstUri,
7790        scheme: *const c_char,
7791        userinfo: *const c_char,
7792        host: *const c_char,
7793        port: c_uint,
7794        path: *const c_char,
7795        query: *const c_char,
7796        fragment: *const c_char,
7797    ) -> *mut GstUri;
7798    pub fn gst_uri_normalize(uri: *mut GstUri) -> gboolean;
7799    pub fn gst_uri_query_has_key(uri: *const GstUri, query_key: *const c_char) -> gboolean;
7800    #[cfg(feature = "v1_18_3")]
7801    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7802    pub fn gst_uri_ref(uri: *mut GstUri) -> *mut GstUri;
7803    pub fn gst_uri_remove_query_key(uri: *mut GstUri, query_key: *const c_char) -> gboolean;
7804    pub fn gst_uri_set_fragment(uri: *mut GstUri, fragment: *const c_char) -> gboolean;
7805    pub fn gst_uri_set_host(uri: *mut GstUri, host: *const c_char) -> gboolean;
7806    pub fn gst_uri_set_path(uri: *mut GstUri, path: *const c_char) -> gboolean;
7807    pub fn gst_uri_set_path_segments(uri: *mut GstUri, path_segments: *mut glib::GList)
7808    -> gboolean;
7809    pub fn gst_uri_set_path_string(uri: *mut GstUri, path: *const c_char) -> gboolean;
7810    pub fn gst_uri_set_port(uri: *mut GstUri, port: c_uint) -> gboolean;
7811    pub fn gst_uri_set_query_string(uri: *mut GstUri, query: *const c_char) -> gboolean;
7812    pub fn gst_uri_set_query_table(
7813        uri: *mut GstUri,
7814        query_table: *mut glib::GHashTable,
7815    ) -> gboolean;
7816    pub fn gst_uri_set_query_value(
7817        uri: *mut GstUri,
7818        query_key: *const c_char,
7819        query_value: *const c_char,
7820    ) -> gboolean;
7821    pub fn gst_uri_set_scheme(uri: *mut GstUri, scheme: *const c_char) -> gboolean;
7822    pub fn gst_uri_set_userinfo(uri: *mut GstUri, userinfo: *const c_char) -> gboolean;
7823    pub fn gst_uri_to_string(uri: *const GstUri) -> *mut c_char;
7824    #[cfg(feature = "v1_24")]
7825    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7826    pub fn gst_uri_to_string_with_keys(uri: *const GstUri, keys: *const glib::GList)
7827    -> *mut c_char;
7828    #[cfg(feature = "v1_18_3")]
7829    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7830    pub fn gst_uri_unref(uri: *mut GstUri);
7831    pub fn gst_uri_construct(protocol: *const c_char, location: *const c_char) -> *mut c_char;
7832    pub fn gst_uri_from_string(uri: *const c_char) -> *mut GstUri;
7833    #[cfg(feature = "v1_18")]
7834    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7835    pub fn gst_uri_from_string_escaped(uri: *const c_char) -> *mut GstUri;
7836    pub fn gst_uri_get_location(uri: *const c_char) -> *mut c_char;
7837    pub fn gst_uri_get_protocol(uri: *const c_char) -> *mut c_char;
7838    pub fn gst_uri_has_protocol(uri: *const c_char, protocol: *const c_char) -> gboolean;
7839    pub fn gst_uri_is_valid(uri: *const c_char) -> gboolean;
7840    pub fn gst_uri_join_strings(base_uri: *const c_char, ref_uri: *const c_char) -> *mut c_char;
7841    pub fn gst_uri_protocol_is_supported(type_: GstURIType, protocol: *const c_char) -> gboolean;
7842    pub fn gst_uri_protocol_is_valid(protocol: *const c_char) -> gboolean;
7843
7844    //=========================================================================
7845    // GstVecDeque
7846    //=========================================================================
7847    #[cfg(feature = "v1_26")]
7848    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7849    pub fn gst_vec_deque_clear(array: *mut GstVecDeque);
7850    #[cfg(feature = "v1_26")]
7851    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7852    pub fn gst_vec_deque_drop_element(array: *mut GstVecDeque, idx: size_t) -> gpointer;
7853    #[cfg(feature = "v1_26")]
7854    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7855    pub fn gst_vec_deque_drop_struct(
7856        array: *mut GstVecDeque,
7857        idx: size_t,
7858        p_struct: gpointer,
7859    ) -> gboolean;
7860    #[cfg(feature = "v1_26")]
7861    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7862    pub fn gst_vec_deque_find(
7863        array: *mut GstVecDeque,
7864        func: glib::GCompareFunc,
7865        data: gpointer,
7866    ) -> size_t;
7867    #[cfg(feature = "v1_26")]
7868    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7869    pub fn gst_vec_deque_free(array: *mut GstVecDeque);
7870    #[cfg(feature = "v1_26")]
7871    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7872    pub fn gst_vec_deque_get_length(array: *mut GstVecDeque) -> size_t;
7873    #[cfg(feature = "v1_26")]
7874    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7875    pub fn gst_vec_deque_is_empty(array: *mut GstVecDeque) -> gboolean;
7876    #[cfg(feature = "v1_26")]
7877    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7878    pub fn gst_vec_deque_peek_head(array: *mut GstVecDeque) -> gpointer;
7879    #[cfg(feature = "v1_26")]
7880    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7881    pub fn gst_vec_deque_peek_head_struct(array: *mut GstVecDeque) -> gpointer;
7882    #[cfg(feature = "v1_26")]
7883    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7884    pub fn gst_vec_deque_peek_nth(array: *mut GstVecDeque, idx: size_t) -> gpointer;
7885    #[cfg(feature = "v1_26")]
7886    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7887    pub fn gst_vec_deque_peek_nth_struct(array: *mut GstVecDeque, idx: size_t) -> gpointer;
7888    #[cfg(feature = "v1_26")]
7889    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7890    pub fn gst_vec_deque_peek_tail(array: *mut GstVecDeque) -> gpointer;
7891    #[cfg(feature = "v1_26")]
7892    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7893    pub fn gst_vec_deque_peek_tail_struct(array: *mut GstVecDeque) -> gpointer;
7894    #[cfg(feature = "v1_26")]
7895    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7896    pub fn gst_vec_deque_pop_head(array: *mut GstVecDeque) -> gpointer;
7897    #[cfg(feature = "v1_26")]
7898    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7899    pub fn gst_vec_deque_pop_head_struct(array: *mut GstVecDeque) -> gpointer;
7900    #[cfg(feature = "v1_26")]
7901    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7902    pub fn gst_vec_deque_pop_tail(array: *mut GstVecDeque) -> gpointer;
7903    #[cfg(feature = "v1_26")]
7904    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7905    pub fn gst_vec_deque_pop_tail_struct(array: *mut GstVecDeque) -> gpointer;
7906    #[cfg(feature = "v1_26")]
7907    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7908    pub fn gst_vec_deque_push_sorted(
7909        array: *mut GstVecDeque,
7910        data: gpointer,
7911        func: glib::GCompareDataFunc,
7912        user_data: gpointer,
7913    );
7914    #[cfg(feature = "v1_26")]
7915    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7916    pub fn gst_vec_deque_push_sorted_struct(
7917        array: *mut GstVecDeque,
7918        p_struct: gpointer,
7919        func: glib::GCompareDataFunc,
7920        user_data: gpointer,
7921    );
7922    #[cfg(feature = "v1_26")]
7923    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7924    pub fn gst_vec_deque_push_tail(array: *mut GstVecDeque, data: gpointer);
7925    #[cfg(feature = "v1_26")]
7926    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7927    pub fn gst_vec_deque_push_tail_struct(array: *mut GstVecDeque, p_struct: gpointer);
7928    #[cfg(feature = "v1_26")]
7929    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7930    pub fn gst_vec_deque_set_clear_func(array: *mut GstVecDeque, clear_func: glib::GDestroyNotify);
7931    #[cfg(feature = "v1_26")]
7932    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7933    pub fn gst_vec_deque_sort(
7934        array: *mut GstVecDeque,
7935        compare_func: glib::GCompareDataFunc,
7936        user_data: gpointer,
7937    );
7938    #[cfg(feature = "v1_26")]
7939    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7940    pub fn gst_vec_deque_new(initial_size: size_t) -> *mut GstVecDeque;
7941    #[cfg(feature = "v1_26")]
7942    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7943    pub fn gst_vec_deque_new_for_struct(
7944        struct_size: size_t,
7945        initial_size: size_t,
7946    ) -> *mut GstVecDeque;
7947
7948    //=========================================================================
7949    // GstAllocator
7950    //=========================================================================
7951    pub fn gst_allocator_get_type() -> GType;
7952    pub fn gst_allocator_find(name: *const c_char) -> *mut GstAllocator;
7953    pub fn gst_allocator_register(name: *const c_char, allocator: *mut GstAllocator);
7954    pub fn gst_allocator_alloc(
7955        allocator: *mut GstAllocator,
7956        size: size_t,
7957        params: *mut GstAllocationParams,
7958    ) -> *mut GstMemory;
7959    pub fn gst_allocator_free(allocator: *mut GstAllocator, memory: *mut GstMemory);
7960    pub fn gst_allocator_set_default(allocator: *mut GstAllocator);
7961
7962    //=========================================================================
7963    // GstBin
7964    //=========================================================================
7965    pub fn gst_bin_get_type() -> GType;
7966    pub fn gst_bin_new(name: *const c_char) -> *mut GstElement;
7967    pub fn gst_bin_add(bin: *mut GstBin, element: *mut GstElement) -> gboolean;
7968    pub fn gst_bin_add_many(bin: *mut GstBin, element_1: *mut GstElement, ...);
7969    pub fn gst_bin_find_unlinked_pad(bin: *mut GstBin, direction: GstPadDirection) -> *mut GstPad;
7970    pub fn gst_bin_get_by_interface(bin: *mut GstBin, iface: GType) -> *mut GstElement;
7971    pub fn gst_bin_get_by_name(bin: *mut GstBin, name: *const c_char) -> *mut GstElement;
7972    pub fn gst_bin_get_by_name_recurse_up(bin: *mut GstBin, name: *const c_char)
7973    -> *mut GstElement;
7974    pub fn gst_bin_get_suppressed_flags(bin: *mut GstBin) -> GstElementFlags;
7975    #[cfg(feature = "v1_18")]
7976    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7977    pub fn gst_bin_iterate_all_by_element_factory_name(
7978        bin: *mut GstBin,
7979        factory_name: *const c_char,
7980    ) -> *mut GstIterator;
7981    pub fn gst_bin_iterate_all_by_interface(bin: *mut GstBin, iface: GType) -> *mut GstIterator;
7982    pub fn gst_bin_iterate_elements(bin: *mut GstBin) -> *mut GstIterator;
7983    pub fn gst_bin_iterate_recurse(bin: *mut GstBin) -> *mut GstIterator;
7984    pub fn gst_bin_iterate_sinks(bin: *mut GstBin) -> *mut GstIterator;
7985    pub fn gst_bin_iterate_sorted(bin: *mut GstBin) -> *mut GstIterator;
7986    pub fn gst_bin_iterate_sources(bin: *mut GstBin) -> *mut GstIterator;
7987    pub fn gst_bin_recalculate_latency(bin: *mut GstBin) -> gboolean;
7988    pub fn gst_bin_remove(bin: *mut GstBin, element: *mut GstElement) -> gboolean;
7989    pub fn gst_bin_remove_many(bin: *mut GstBin, element_1: *mut GstElement, ...);
7990    pub fn gst_bin_set_suppressed_flags(bin: *mut GstBin, flags: GstElementFlags);
7991    pub fn gst_bin_sync_children_states(bin: *mut GstBin) -> gboolean;
7992
7993    //=========================================================================
7994    // GstBitmask
7995    //=========================================================================
7996    pub fn gst_bitmask_get_type() -> GType;
7997
7998    //=========================================================================
7999    // GstBufferPool
8000    //=========================================================================
8001    pub fn gst_buffer_pool_get_type() -> GType;
8002    pub fn gst_buffer_pool_new() -> *mut GstBufferPool;
8003    pub fn gst_buffer_pool_config_add_option(config: *mut GstStructure, option: *const c_char);
8004    pub fn gst_buffer_pool_config_get_allocator(
8005        config: *mut GstStructure,
8006        allocator: *mut *mut GstAllocator,
8007        params: *mut GstAllocationParams,
8008    ) -> gboolean;
8009    pub fn gst_buffer_pool_config_get_option(
8010        config: *mut GstStructure,
8011        index: c_uint,
8012    ) -> *const c_char;
8013    pub fn gst_buffer_pool_config_get_params(
8014        config: *mut GstStructure,
8015        caps: *mut *mut GstCaps,
8016        size: *mut c_uint,
8017        min_buffers: *mut c_uint,
8018        max_buffers: *mut c_uint,
8019    ) -> gboolean;
8020    pub fn gst_buffer_pool_config_has_option(
8021        config: *mut GstStructure,
8022        option: *const c_char,
8023    ) -> gboolean;
8024    pub fn gst_buffer_pool_config_n_options(config: *mut GstStructure) -> c_uint;
8025    pub fn gst_buffer_pool_config_set_allocator(
8026        config: *mut GstStructure,
8027        allocator: *mut GstAllocator,
8028        params: *const GstAllocationParams,
8029    );
8030    pub fn gst_buffer_pool_config_set_params(
8031        config: *mut GstStructure,
8032        caps: *mut GstCaps,
8033        size: c_uint,
8034        min_buffers: c_uint,
8035        max_buffers: c_uint,
8036    );
8037    pub fn gst_buffer_pool_config_validate_params(
8038        config: *mut GstStructure,
8039        caps: *mut GstCaps,
8040        size: c_uint,
8041        min_buffers: c_uint,
8042        max_buffers: c_uint,
8043    ) -> gboolean;
8044    pub fn gst_buffer_pool_acquire_buffer(
8045        pool: *mut GstBufferPool,
8046        buffer: *mut *mut GstBuffer,
8047        params: *mut GstBufferPoolAcquireParams,
8048    ) -> GstFlowReturn;
8049    pub fn gst_buffer_pool_get_config(pool: *mut GstBufferPool) -> *mut GstStructure;
8050    pub fn gst_buffer_pool_get_options(pool: *mut GstBufferPool) -> *mut *const c_char;
8051    pub fn gst_buffer_pool_has_option(pool: *mut GstBufferPool, option: *const c_char) -> gboolean;
8052    pub fn gst_buffer_pool_is_active(pool: *mut GstBufferPool) -> gboolean;
8053    pub fn gst_buffer_pool_release_buffer(pool: *mut GstBufferPool, buffer: *mut GstBuffer);
8054    pub fn gst_buffer_pool_set_active(pool: *mut GstBufferPool, active: gboolean) -> gboolean;
8055    pub fn gst_buffer_pool_set_config(
8056        pool: *mut GstBufferPool,
8057        config: *mut GstStructure,
8058    ) -> gboolean;
8059    pub fn gst_buffer_pool_set_flushing(pool: *mut GstBufferPool, flushing: gboolean);
8060
8061    //=========================================================================
8062    // GstBus
8063    //=========================================================================
8064    pub fn gst_bus_get_type() -> GType;
8065    pub fn gst_bus_new() -> *mut GstBus;
8066    pub fn gst_bus_add_signal_watch(bus: *mut GstBus);
8067    pub fn gst_bus_add_signal_watch_full(bus: *mut GstBus, priority: c_int);
8068    pub fn gst_bus_add_watch(bus: *mut GstBus, func: GstBusFunc, user_data: gpointer) -> c_uint;
8069    pub fn gst_bus_add_watch_full(
8070        bus: *mut GstBus,
8071        priority: c_int,
8072        func: GstBusFunc,
8073        user_data: gpointer,
8074        notify: glib::GDestroyNotify,
8075    ) -> c_uint;
8076    pub fn gst_bus_async_signal_func(
8077        bus: *mut GstBus,
8078        message: *mut GstMessage,
8079        data: gpointer,
8080    ) -> gboolean;
8081    pub fn gst_bus_create_watch(bus: *mut GstBus) -> *mut glib::GSource;
8082    pub fn gst_bus_disable_sync_message_emission(bus: *mut GstBus);
8083    pub fn gst_bus_enable_sync_message_emission(bus: *mut GstBus);
8084    pub fn gst_bus_get_pollfd(bus: *mut GstBus, fd: *mut glib::GPollFD);
8085    pub fn gst_bus_have_pending(bus: *mut GstBus) -> gboolean;
8086    pub fn gst_bus_peek(bus: *mut GstBus) -> *mut GstMessage;
8087    pub fn gst_bus_poll(
8088        bus: *mut GstBus,
8089        events: GstMessageType,
8090        timeout: GstClockTime,
8091    ) -> *mut GstMessage;
8092    pub fn gst_bus_pop(bus: *mut GstBus) -> *mut GstMessage;
8093    pub fn gst_bus_pop_filtered(bus: *mut GstBus, types: GstMessageType) -> *mut GstMessage;
8094    pub fn gst_bus_post(bus: *mut GstBus, message: *mut GstMessage) -> gboolean;
8095    pub fn gst_bus_remove_signal_watch(bus: *mut GstBus);
8096    pub fn gst_bus_remove_watch(bus: *mut GstBus) -> gboolean;
8097    pub fn gst_bus_set_flushing(bus: *mut GstBus, flushing: gboolean);
8098    pub fn gst_bus_set_sync_handler(
8099        bus: *mut GstBus,
8100        func: GstBusSyncHandler,
8101        user_data: gpointer,
8102        notify: glib::GDestroyNotify,
8103    );
8104    pub fn gst_bus_sync_signal_handler(
8105        bus: *mut GstBus,
8106        message: *mut GstMessage,
8107        data: gpointer,
8108    ) -> GstBusSyncReply;
8109    pub fn gst_bus_timed_pop(bus: *mut GstBus, timeout: GstClockTime) -> *mut GstMessage;
8110    pub fn gst_bus_timed_pop_filtered(
8111        bus: *mut GstBus,
8112        timeout: GstClockTime,
8113        types: GstMessageType,
8114    ) -> *mut GstMessage;
8115
8116    //=========================================================================
8117    // GstClock
8118    //=========================================================================
8119    pub fn gst_clock_get_type() -> GType;
8120    pub fn gst_clock_id_compare_func(id1: gconstpointer, id2: gconstpointer) -> c_int;
8121    #[cfg(feature = "v1_16")]
8122    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
8123    pub fn gst_clock_id_get_clock(id: GstClockID) -> *mut GstClock;
8124    pub fn gst_clock_id_get_time(id: GstClockID) -> GstClockTime;
8125    pub fn gst_clock_id_ref(id: GstClockID) -> GstClockID;
8126    pub fn gst_clock_id_unref(id: GstClockID);
8127    pub fn gst_clock_id_unschedule(id: GstClockID);
8128    #[cfg(feature = "v1_16")]
8129    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
8130    pub fn gst_clock_id_uses_clock(id: GstClockID, clock: *mut GstClock) -> gboolean;
8131    pub fn gst_clock_id_wait(id: GstClockID, jitter: *mut GstClockTimeDiff) -> GstClockReturn;
8132    pub fn gst_clock_id_wait_async(
8133        id: GstClockID,
8134        func: GstClockCallback,
8135        user_data: gpointer,
8136        destroy_data: glib::GDestroyNotify,
8137    ) -> GstClockReturn;
8138    pub fn gst_clock_add_observation(
8139        clock: *mut GstClock,
8140        observation_internal: GstClockTime,
8141        observation_external: GstClockTime,
8142        r_squared: *mut c_double,
8143    ) -> gboolean;
8144    pub fn gst_clock_add_observation_unapplied(
8145        clock: *mut GstClock,
8146        observation_internal: GstClockTime,
8147        observation_external: GstClockTime,
8148        r_squared: *mut c_double,
8149        internal: *mut GstClockTime,
8150        external: *mut GstClockTime,
8151        rate_num: *mut GstClockTime,
8152        rate_denom: *mut GstClockTime,
8153    ) -> gboolean;
8154    pub fn gst_clock_adjust_unlocked(clock: *mut GstClock, internal: GstClockTime) -> GstClockTime;
8155    pub fn gst_clock_adjust_with_calibration(
8156        clock: *mut GstClock,
8157        internal_target: GstClockTime,
8158        cinternal: GstClockTime,
8159        cexternal: GstClockTime,
8160        cnum: GstClockTime,
8161        cdenom: GstClockTime,
8162    ) -> GstClockTime;
8163    pub fn gst_clock_get_calibration(
8164        clock: *mut GstClock,
8165        internal: *mut GstClockTime,
8166        external: *mut GstClockTime,
8167        rate_num: *mut GstClockTime,
8168        rate_denom: *mut GstClockTime,
8169    );
8170    pub fn gst_clock_get_internal_time(clock: *mut GstClock) -> GstClockTime;
8171    pub fn gst_clock_get_master(clock: *mut GstClock) -> *mut GstClock;
8172    pub fn gst_clock_get_resolution(clock: *mut GstClock) -> GstClockTime;
8173    pub fn gst_clock_get_time(clock: *mut GstClock) -> GstClockTime;
8174    pub fn gst_clock_get_timeout(clock: *mut GstClock) -> GstClockTime;
8175    pub fn gst_clock_is_synced(clock: *mut GstClock) -> gboolean;
8176    #[cfg(feature = "v1_28")]
8177    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
8178    pub fn gst_clock_is_system_monotonic(clock: *mut GstClock) -> gboolean;
8179    pub fn gst_clock_new_periodic_id(
8180        clock: *mut GstClock,
8181        start_time: GstClockTime,
8182        interval: GstClockTime,
8183    ) -> GstClockID;
8184    pub fn gst_clock_new_single_shot_id(clock: *mut GstClock, time: GstClockTime) -> GstClockID;
8185    pub fn gst_clock_periodic_id_reinit(
8186        clock: *mut GstClock,
8187        id: GstClockID,
8188        start_time: GstClockTime,
8189        interval: GstClockTime,
8190    ) -> gboolean;
8191    pub fn gst_clock_set_calibration(
8192        clock: *mut GstClock,
8193        internal: GstClockTime,
8194        external: GstClockTime,
8195        rate_num: GstClockTime,
8196        rate_denom: GstClockTime,
8197    );
8198    pub fn gst_clock_set_master(clock: *mut GstClock, master: *mut GstClock) -> gboolean;
8199    pub fn gst_clock_set_resolution(clock: *mut GstClock, resolution: GstClockTime)
8200    -> GstClockTime;
8201    pub fn gst_clock_set_synced(clock: *mut GstClock, synced: gboolean);
8202    pub fn gst_clock_set_timeout(clock: *mut GstClock, timeout: GstClockTime);
8203    pub fn gst_clock_single_shot_id_reinit(
8204        clock: *mut GstClock,
8205        id: GstClockID,
8206        time: GstClockTime,
8207    ) -> gboolean;
8208    pub fn gst_clock_unadjust_unlocked(
8209        clock: *mut GstClock,
8210        external: GstClockTime,
8211    ) -> GstClockTime;
8212    pub fn gst_clock_unadjust_with_calibration(
8213        clock: *mut GstClock,
8214        external_target: GstClockTime,
8215        cinternal: GstClockTime,
8216        cexternal: GstClockTime,
8217        cnum: GstClockTime,
8218        cdenom: GstClockTime,
8219    ) -> GstClockTime;
8220    pub fn gst_clock_wait_for_sync(clock: *mut GstClock, timeout: GstClockTime) -> gboolean;
8221
8222    //=========================================================================
8223    // GstControlBinding
8224    //=========================================================================
8225    pub fn gst_control_binding_get_type() -> GType;
8226    pub fn gst_control_binding_get_g_value_array(
8227        binding: *mut GstControlBinding,
8228        timestamp: GstClockTime,
8229        interval: GstClockTime,
8230        n_values: c_uint,
8231        values: *mut gobject::GValue,
8232    ) -> gboolean;
8233    pub fn gst_control_binding_get_value(
8234        binding: *mut GstControlBinding,
8235        timestamp: GstClockTime,
8236    ) -> *mut gobject::GValue;
8237    pub fn gst_control_binding_get_value_array(
8238        binding: *mut GstControlBinding,
8239        timestamp: GstClockTime,
8240        interval: GstClockTime,
8241        n_values: c_uint,
8242        values: gpointer,
8243    ) -> gboolean;
8244    pub fn gst_control_binding_is_disabled(binding: *mut GstControlBinding) -> gboolean;
8245    pub fn gst_control_binding_set_disabled(binding: *mut GstControlBinding, disabled: gboolean);
8246    pub fn gst_control_binding_sync_values(
8247        binding: *mut GstControlBinding,
8248        object: *mut GstObject,
8249        timestamp: GstClockTime,
8250        last_sync: GstClockTime,
8251    ) -> gboolean;
8252
8253    //=========================================================================
8254    // GstControlSource
8255    //=========================================================================
8256    pub fn gst_control_source_get_type() -> GType;
8257    pub fn gst_control_source_get_value(
8258        self_: *mut GstControlSource,
8259        timestamp: GstClockTime,
8260        value: *mut c_double,
8261    ) -> gboolean;
8262    pub fn gst_control_source_get_value_array(
8263        self_: *mut GstControlSource,
8264        timestamp: GstClockTime,
8265        interval: GstClockTime,
8266        n_values: c_uint,
8267        values: *mut c_double,
8268    ) -> gboolean;
8269
8270    //=========================================================================
8271    // GstDevice
8272    //=========================================================================
8273    pub fn gst_device_get_type() -> GType;
8274    pub fn gst_device_create_element(
8275        device: *mut GstDevice,
8276        name: *const c_char,
8277    ) -> *mut GstElement;
8278    pub fn gst_device_get_caps(device: *mut GstDevice) -> *mut GstCaps;
8279    pub fn gst_device_get_device_class(device: *mut GstDevice) -> *mut c_char;
8280    pub fn gst_device_get_display_name(device: *mut GstDevice) -> *mut c_char;
8281    pub fn gst_device_get_properties(device: *mut GstDevice) -> *mut GstStructure;
8282    pub fn gst_device_has_classes(device: *mut GstDevice, classes: *const c_char) -> gboolean;
8283    pub fn gst_device_has_classesv(device: *mut GstDevice, classes: *mut *mut c_char) -> gboolean;
8284    pub fn gst_device_reconfigure_element(
8285        device: *mut GstDevice,
8286        element: *mut GstElement,
8287    ) -> gboolean;
8288
8289    //=========================================================================
8290    // GstDeviceMonitor
8291    //=========================================================================
8292    pub fn gst_device_monitor_get_type() -> GType;
8293    pub fn gst_device_monitor_new() -> *mut GstDeviceMonitor;
8294    pub fn gst_device_monitor_add_filter(
8295        monitor: *mut GstDeviceMonitor,
8296        classes: *const c_char,
8297        caps: *mut GstCaps,
8298    ) -> c_uint;
8299    pub fn gst_device_monitor_get_bus(monitor: *mut GstDeviceMonitor) -> *mut GstBus;
8300    pub fn gst_device_monitor_get_devices(monitor: *mut GstDeviceMonitor) -> *mut glib::GList;
8301    pub fn gst_device_monitor_get_providers(monitor: *mut GstDeviceMonitor) -> *mut *mut c_char;
8302    pub fn gst_device_monitor_get_show_all_devices(monitor: *mut GstDeviceMonitor) -> gboolean;
8303    pub fn gst_device_monitor_remove_filter(
8304        monitor: *mut GstDeviceMonitor,
8305        filter_id: c_uint,
8306    ) -> gboolean;
8307    pub fn gst_device_monitor_set_show_all_devices(
8308        monitor: *mut GstDeviceMonitor,
8309        show_all: gboolean,
8310    );
8311    pub fn gst_device_monitor_start(monitor: *mut GstDeviceMonitor) -> gboolean;
8312    pub fn gst_device_monitor_stop(monitor: *mut GstDeviceMonitor);
8313
8314    //=========================================================================
8315    // GstDeviceProvider
8316    //=========================================================================
8317    pub fn gst_device_provider_get_type() -> GType;
8318    pub fn gst_device_provider_register(
8319        plugin: *mut GstPlugin,
8320        name: *const c_char,
8321        rank: c_uint,
8322        type_: GType,
8323    ) -> gboolean;
8324    pub fn gst_device_provider_can_monitor(provider: *mut GstDeviceProvider) -> gboolean;
8325    pub fn gst_device_provider_device_add(provider: *mut GstDeviceProvider, device: *mut GstDevice);
8326    #[cfg(feature = "v1_16")]
8327    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
8328    pub fn gst_device_provider_device_changed(
8329        provider: *mut GstDeviceProvider,
8330        device: *mut GstDevice,
8331        changed_device: *mut GstDevice,
8332    );
8333    pub fn gst_device_provider_device_remove(
8334        provider: *mut GstDeviceProvider,
8335        device: *mut GstDevice,
8336    );
8337    pub fn gst_device_provider_get_bus(provider: *mut GstDeviceProvider) -> *mut GstBus;
8338    pub fn gst_device_provider_get_devices(provider: *mut GstDeviceProvider) -> *mut glib::GList;
8339    pub fn gst_device_provider_get_factory(
8340        provider: *mut GstDeviceProvider,
8341    ) -> *mut GstDeviceProviderFactory;
8342    pub fn gst_device_provider_get_hidden_providers(
8343        provider: *mut GstDeviceProvider,
8344    ) -> *mut *mut c_char;
8345    pub fn gst_device_provider_get_metadata(
8346        provider: *mut GstDeviceProvider,
8347        key: *const c_char,
8348    ) -> *const c_char;
8349    pub fn gst_device_provider_hide_provider(provider: *mut GstDeviceProvider, name: *const c_char);
8350    #[cfg(feature = "v1_20")]
8351    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8352    pub fn gst_device_provider_is_started(provider: *mut GstDeviceProvider) -> gboolean;
8353    pub fn gst_device_provider_start(provider: *mut GstDeviceProvider) -> gboolean;
8354    pub fn gst_device_provider_stop(provider: *mut GstDeviceProvider);
8355    pub fn gst_device_provider_unhide_provider(
8356        provider: *mut GstDeviceProvider,
8357        name: *const c_char,
8358    );
8359
8360    //=========================================================================
8361    // GstDeviceProviderFactory
8362    //=========================================================================
8363    pub fn gst_device_provider_factory_get_type() -> GType;
8364    pub fn gst_device_provider_factory_find(name: *const c_char) -> *mut GstDeviceProviderFactory;
8365    pub fn gst_device_provider_factory_get_by_name(
8366        factoryname: *const c_char,
8367    ) -> *mut GstDeviceProvider;
8368    pub fn gst_device_provider_factory_list_get_device_providers(
8369        minrank: GstRank,
8370    ) -> *mut glib::GList;
8371    pub fn gst_device_provider_factory_get(
8372        factory: *mut GstDeviceProviderFactory,
8373    ) -> *mut GstDeviceProvider;
8374    pub fn gst_device_provider_factory_get_device_provider_type(
8375        factory: *mut GstDeviceProviderFactory,
8376    ) -> GType;
8377    pub fn gst_device_provider_factory_get_metadata(
8378        factory: *mut GstDeviceProviderFactory,
8379        key: *const c_char,
8380    ) -> *const c_char;
8381    pub fn gst_device_provider_factory_get_metadata_keys(
8382        factory: *mut GstDeviceProviderFactory,
8383    ) -> *mut *mut c_char;
8384    pub fn gst_device_provider_factory_has_classes(
8385        factory: *mut GstDeviceProviderFactory,
8386        classes: *const c_char,
8387    ) -> gboolean;
8388    pub fn gst_device_provider_factory_has_classesv(
8389        factory: *mut GstDeviceProviderFactory,
8390        classes: *mut *mut c_char,
8391    ) -> gboolean;
8392
8393    //=========================================================================
8394    // GstDoubleRange
8395    //=========================================================================
8396    pub fn gst_double_range_get_type() -> GType;
8397
8398    //=========================================================================
8399    // GstDynamicTypeFactory
8400    //=========================================================================
8401    pub fn gst_dynamic_type_factory_get_type() -> GType;
8402    pub fn gst_dynamic_type_factory_load(factoryname: *const c_char) -> GType;
8403
8404    //=========================================================================
8405    // GstElement
8406    //=========================================================================
8407    pub fn gst_element_get_type() -> GType;
8408    pub fn gst_element_make_from_uri(
8409        type_: GstURIType,
8410        uri: *const c_char,
8411        elementname: *const c_char,
8412        error: *mut *mut glib::GError,
8413    ) -> *mut GstElement;
8414    pub fn gst_element_register(
8415        plugin: *mut GstPlugin,
8416        name: *const c_char,
8417        rank: c_uint,
8418        type_: GType,
8419    ) -> gboolean;
8420    pub fn gst_element_state_change_return_get_name(
8421        state_ret: GstStateChangeReturn,
8422    ) -> *const c_char;
8423    pub fn gst_element_state_get_name(state: GstState) -> *const c_char;
8424    #[cfg(feature = "v1_20")]
8425    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8426    pub fn gst_element_type_set_skip_documentation(type_: GType);
8427    pub fn gst_element_abort_state(element: *mut GstElement);
8428    pub fn gst_element_add_pad(element: *mut GstElement, pad: *mut GstPad) -> gboolean;
8429    pub fn gst_element_add_property_deep_notify_watch(
8430        element: *mut GstElement,
8431        property_name: *const c_char,
8432        include_value: gboolean,
8433    ) -> c_ulong;
8434    pub fn gst_element_add_property_notify_watch(
8435        element: *mut GstElement,
8436        property_name: *const c_char,
8437        include_value: gboolean,
8438    ) -> c_ulong;
8439    pub fn gst_element_call_async(
8440        element: *mut GstElement,
8441        func: GstElementCallAsyncFunc,
8442        user_data: gpointer,
8443        destroy_notify: glib::GDestroyNotify,
8444    );
8445    pub fn gst_element_change_state(
8446        element: *mut GstElement,
8447        transition: GstStateChange,
8448    ) -> GstStateChangeReturn;
8449    pub fn gst_element_continue_state(
8450        element: *mut GstElement,
8451        ret: GstStateChangeReturn,
8452    ) -> GstStateChangeReturn;
8453    pub fn gst_element_create_all_pads(element: *mut GstElement);
8454    #[cfg(feature = "v1_24")]
8455    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8456    pub fn gst_element_decorate_stream_id(
8457        element: *mut GstElement,
8458        stream_id: *const c_char,
8459    ) -> *mut c_char;
8460    #[cfg(feature = "v1_24")]
8461    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8462    pub fn gst_element_decorate_stream_id_printf(
8463        element: *mut GstElement,
8464        format: *const c_char,
8465        ...
8466    ) -> *mut c_char;
8467    //#[cfg(feature = "v1_24")]
8468    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8469    //pub fn gst_element_decorate_stream_id_printf_valist(element: *mut GstElement, format: *const c_char, var_args: /*Unimplemented*/va_list) -> *mut c_char;
8470    pub fn gst_element_foreach_pad(
8471        element: *mut GstElement,
8472        func: GstElementForeachPadFunc,
8473        user_data: gpointer,
8474    ) -> gboolean;
8475    pub fn gst_element_foreach_sink_pad(
8476        element: *mut GstElement,
8477        func: GstElementForeachPadFunc,
8478        user_data: gpointer,
8479    ) -> gboolean;
8480    pub fn gst_element_foreach_src_pad(
8481        element: *mut GstElement,
8482        func: GstElementForeachPadFunc,
8483        user_data: gpointer,
8484    ) -> gboolean;
8485    pub fn gst_element_get_base_time(element: *mut GstElement) -> GstClockTime;
8486    pub fn gst_element_get_bus(element: *mut GstElement) -> *mut GstBus;
8487    pub fn gst_element_get_clock(element: *mut GstElement) -> *mut GstClock;
8488    pub fn gst_element_get_compatible_pad(
8489        element: *mut GstElement,
8490        pad: *mut GstPad,
8491        caps: *mut GstCaps,
8492    ) -> *mut GstPad;
8493    pub fn gst_element_get_compatible_pad_template(
8494        element: *mut GstElement,
8495        compattempl: *mut GstPadTemplate,
8496    ) -> *mut GstPadTemplate;
8497    pub fn gst_element_get_context(
8498        element: *mut GstElement,
8499        context_type: *const c_char,
8500    ) -> *mut GstContext;
8501    pub fn gst_element_get_context_unlocked(
8502        element: *mut GstElement,
8503        context_type: *const c_char,
8504    ) -> *mut GstContext;
8505    pub fn gst_element_get_contexts(element: *mut GstElement) -> *mut glib::GList;
8506    #[cfg(feature = "v1_18")]
8507    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8508    pub fn gst_element_get_current_clock_time(element: *mut GstElement) -> GstClockTime;
8509    #[cfg(feature = "v1_18")]
8510    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8511    pub fn gst_element_get_current_running_time(element: *mut GstElement) -> GstClockTime;
8512    pub fn gst_element_get_factory(element: *mut GstElement) -> *mut GstElementFactory;
8513    pub fn gst_element_get_metadata(element: *mut GstElement, key: *const c_char) -> *const c_char;
8514    pub fn gst_element_get_pad_template(
8515        element: *mut GstElement,
8516        name: *const c_char,
8517    ) -> *mut GstPadTemplate;
8518    pub fn gst_element_get_pad_template_list(element: *mut GstElement) -> *mut glib::GList;
8519    pub fn gst_element_get_request_pad(
8520        element: *mut GstElement,
8521        name: *const c_char,
8522    ) -> *mut GstPad;
8523    pub fn gst_element_get_start_time(element: *mut GstElement) -> GstClockTime;
8524    pub fn gst_element_get_state(
8525        element: *mut GstElement,
8526        state: *mut GstState,
8527        pending: *mut GstState,
8528        timeout: GstClockTime,
8529    ) -> GstStateChangeReturn;
8530    pub fn gst_element_get_static_pad(element: *mut GstElement, name: *const c_char)
8531    -> *mut GstPad;
8532    pub fn gst_element_is_locked_state(element: *mut GstElement) -> gboolean;
8533    pub fn gst_element_iterate_pads(element: *mut GstElement) -> *mut GstIterator;
8534    pub fn gst_element_iterate_sink_pads(element: *mut GstElement) -> *mut GstIterator;
8535    pub fn gst_element_iterate_src_pads(element: *mut GstElement) -> *mut GstIterator;
8536    pub fn gst_element_link(src: *mut GstElement, dest: *mut GstElement) -> gboolean;
8537    pub fn gst_element_link_filtered(
8538        src: *mut GstElement,
8539        dest: *mut GstElement,
8540        filter: *mut GstCaps,
8541    ) -> gboolean;
8542    pub fn gst_element_link_many(
8543        element_1: *mut GstElement,
8544        element_2: *mut GstElement,
8545        ...
8546    ) -> gboolean;
8547    pub fn gst_element_link_pads(
8548        src: *mut GstElement,
8549        srcpadname: *const c_char,
8550        dest: *mut GstElement,
8551        destpadname: *const c_char,
8552    ) -> gboolean;
8553    pub fn gst_element_link_pads_filtered(
8554        src: *mut GstElement,
8555        srcpadname: *const c_char,
8556        dest: *mut GstElement,
8557        destpadname: *const c_char,
8558        filter: *mut GstCaps,
8559    ) -> gboolean;
8560    pub fn gst_element_link_pads_full(
8561        src: *mut GstElement,
8562        srcpadname: *const c_char,
8563        dest: *mut GstElement,
8564        destpadname: *const c_char,
8565        flags: GstPadLinkCheck,
8566    ) -> gboolean;
8567    pub fn gst_element_lost_state(element: *mut GstElement);
8568    pub fn gst_element_message_full(
8569        element: *mut GstElement,
8570        type_: GstMessageType,
8571        domain: glib::GQuark,
8572        code: c_int,
8573        text: *mut c_char,
8574        debug: *mut c_char,
8575        file: *const c_char,
8576        function: *const c_char,
8577        line: c_int,
8578    );
8579    pub fn gst_element_message_full_with_details(
8580        element: *mut GstElement,
8581        type_: GstMessageType,
8582        domain: glib::GQuark,
8583        code: c_int,
8584        text: *mut c_char,
8585        debug: *mut c_char,
8586        file: *const c_char,
8587        function: *const c_char,
8588        line: c_int,
8589        structure: *mut GstStructure,
8590    );
8591    pub fn gst_element_no_more_pads(element: *mut GstElement);
8592    pub fn gst_element_post_message(element: *mut GstElement, message: *mut GstMessage)
8593    -> gboolean;
8594    pub fn gst_element_provide_clock(element: *mut GstElement) -> *mut GstClock;
8595    pub fn gst_element_query(element: *mut GstElement, query: *mut GstQuery) -> gboolean;
8596    pub fn gst_element_query_convert(
8597        element: *mut GstElement,
8598        src_format: GstFormat,
8599        src_val: i64,
8600        dest_format: GstFormat,
8601        dest_val: *mut i64,
8602    ) -> gboolean;
8603    pub fn gst_element_query_duration(
8604        element: *mut GstElement,
8605        format: GstFormat,
8606        duration: *mut i64,
8607    ) -> gboolean;
8608    pub fn gst_element_query_position(
8609        element: *mut GstElement,
8610        format: GstFormat,
8611        cur: *mut i64,
8612    ) -> gboolean;
8613    pub fn gst_element_release_request_pad(element: *mut GstElement, pad: *mut GstPad);
8614    pub fn gst_element_remove_pad(element: *mut GstElement, pad: *mut GstPad) -> gboolean;
8615    pub fn gst_element_remove_property_notify_watch(element: *mut GstElement, watch_id: c_ulong);
8616    pub fn gst_element_request_pad(
8617        element: *mut GstElement,
8618        templ: *mut GstPadTemplate,
8619        name: *const c_char,
8620        caps: *const GstCaps,
8621    ) -> *mut GstPad;
8622    #[cfg(feature = "v1_20")]
8623    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8624    pub fn gst_element_request_pad_simple(
8625        element: *mut GstElement,
8626        name: *const c_char,
8627    ) -> *mut GstPad;
8628    pub fn gst_element_seek(
8629        element: *mut GstElement,
8630        rate: c_double,
8631        format: GstFormat,
8632        flags: GstSeekFlags,
8633        start_type: GstSeekType,
8634        start: i64,
8635        stop_type: GstSeekType,
8636        stop: i64,
8637    ) -> gboolean;
8638    pub fn gst_element_seek_simple(
8639        element: *mut GstElement,
8640        format: GstFormat,
8641        seek_flags: GstSeekFlags,
8642        seek_pos: i64,
8643    ) -> gboolean;
8644    pub fn gst_element_send_event(element: *mut GstElement, event: *mut GstEvent) -> gboolean;
8645    pub fn gst_element_set_base_time(element: *mut GstElement, time: GstClockTime);
8646    pub fn gst_element_set_bus(element: *mut GstElement, bus: *mut GstBus);
8647    pub fn gst_element_set_clock(element: *mut GstElement, clock: *mut GstClock) -> gboolean;
8648    pub fn gst_element_set_context(element: *mut GstElement, context: *mut GstContext);
8649    pub fn gst_element_set_locked_state(
8650        element: *mut GstElement,
8651        locked_state: gboolean,
8652    ) -> gboolean;
8653    pub fn gst_element_set_start_time(element: *mut GstElement, time: GstClockTime);
8654    pub fn gst_element_set_state(element: *mut GstElement, state: GstState)
8655    -> GstStateChangeReturn;
8656    pub fn gst_element_sync_state_with_parent(element: *mut GstElement) -> gboolean;
8657    pub fn gst_element_unlink(src: *mut GstElement, dest: *mut GstElement);
8658    pub fn gst_element_unlink_many(element_1: *mut GstElement, element_2: *mut GstElement, ...);
8659    pub fn gst_element_unlink_pads(
8660        src: *mut GstElement,
8661        srcpadname: *const c_char,
8662        dest: *mut GstElement,
8663        destpadname: *const c_char,
8664    );
8665
8666    //=========================================================================
8667    // GstElementFactory
8668    //=========================================================================
8669    pub fn gst_element_factory_get_type() -> GType;
8670    pub fn gst_element_factory_find(name: *const c_char) -> *mut GstElementFactory;
8671    pub fn gst_element_factory_list_filter(
8672        list: *mut glib::GList,
8673        caps: *const GstCaps,
8674        direction: GstPadDirection,
8675        subsetonly: gboolean,
8676    ) -> *mut glib::GList;
8677    pub fn gst_element_factory_list_get_elements(
8678        type_: GstElementFactoryListType,
8679        minrank: GstRank,
8680    ) -> *mut glib::GList;
8681    pub fn gst_element_factory_make(
8682        factoryname: *const c_char,
8683        name: *const c_char,
8684    ) -> *mut GstElement;
8685    #[cfg(feature = "v1_20")]
8686    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8687    pub fn gst_element_factory_make_full(
8688        factoryname: *const c_char,
8689        first: *const c_char,
8690        ...
8691    ) -> *mut GstElement;
8692    //#[cfg(feature = "v1_20")]
8693    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8694    //pub fn gst_element_factory_make_valist(factoryname: *const c_char, first: *const c_char, properties: /*Unimplemented*/va_list) -> *mut GstElement;
8695    #[cfg(feature = "v1_20")]
8696    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8697    pub fn gst_element_factory_make_with_properties(
8698        factoryname: *const c_char,
8699        n: c_uint,
8700        names: *mut *const c_char,
8701        values: *const gobject::GValue,
8702    ) -> *mut GstElement;
8703    pub fn gst_element_factory_can_sink_all_caps(
8704        factory: *mut GstElementFactory,
8705        caps: *const GstCaps,
8706    ) -> gboolean;
8707    pub fn gst_element_factory_can_sink_any_caps(
8708        factory: *mut GstElementFactory,
8709        caps: *const GstCaps,
8710    ) -> gboolean;
8711    pub fn gst_element_factory_can_src_all_caps(
8712        factory: *mut GstElementFactory,
8713        caps: *const GstCaps,
8714    ) -> gboolean;
8715    pub fn gst_element_factory_can_src_any_caps(
8716        factory: *mut GstElementFactory,
8717        caps: *const GstCaps,
8718    ) -> gboolean;
8719    pub fn gst_element_factory_create(
8720        factory: *mut GstElementFactory,
8721        name: *const c_char,
8722    ) -> *mut GstElement;
8723    #[cfg(feature = "v1_20")]
8724    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8725    pub fn gst_element_factory_create_full(
8726        factory: *mut GstElementFactory,
8727        first: *const c_char,
8728        ...
8729    ) -> *mut GstElement;
8730    //#[cfg(feature = "v1_20")]
8731    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8732    //pub fn gst_element_factory_create_valist(factory: *mut GstElementFactory, first: *const c_char, properties: /*Unimplemented*/va_list) -> *mut GstElement;
8733    #[cfg(feature = "v1_20")]
8734    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8735    pub fn gst_element_factory_create_with_properties(
8736        factory: *mut GstElementFactory,
8737        n: c_uint,
8738        names: *mut *const c_char,
8739        values: *const gobject::GValue,
8740    ) -> *mut GstElement;
8741    pub fn gst_element_factory_get_element_type(factory: *mut GstElementFactory) -> GType;
8742    pub fn gst_element_factory_get_metadata(
8743        factory: *mut GstElementFactory,
8744        key: *const c_char,
8745    ) -> *const c_char;
8746    pub fn gst_element_factory_get_metadata_keys(
8747        factory: *mut GstElementFactory,
8748    ) -> *mut *mut c_char;
8749    pub fn gst_element_factory_get_num_pad_templates(factory: *mut GstElementFactory) -> c_uint;
8750    #[cfg(feature = "v1_20")]
8751    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8752    pub fn gst_element_factory_get_skip_documentation(factory: *mut GstElementFactory) -> gboolean;
8753    pub fn gst_element_factory_get_static_pad_templates(
8754        factory: *mut GstElementFactory,
8755    ) -> *const glib::GList;
8756    pub fn gst_element_factory_get_uri_protocols(
8757        factory: *mut GstElementFactory,
8758    ) -> *const *const c_char;
8759    pub fn gst_element_factory_get_uri_type(factory: *mut GstElementFactory) -> GstURIType;
8760    pub fn gst_element_factory_has_interface(
8761        factory: *mut GstElementFactory,
8762        interfacename: *const c_char,
8763    ) -> gboolean;
8764    pub fn gst_element_factory_list_is_type(
8765        factory: *mut GstElementFactory,
8766        type_: GstElementFactoryListType,
8767    ) -> gboolean;
8768
8769    //=========================================================================
8770    // GstFlagSet
8771    //=========================================================================
8772    pub fn gst_flagset_get_type() -> GType;
8773    pub fn gst_flagset_register(flags_type: GType) -> GType;
8774
8775    //=========================================================================
8776    // GstFraction
8777    //=========================================================================
8778    pub fn gst_fraction_get_type() -> GType;
8779
8780    //=========================================================================
8781    // GstFractionRange
8782    //=========================================================================
8783    pub fn gst_fraction_range_get_type() -> GType;
8784
8785    //=========================================================================
8786    // GstGhostPad
8787    //=========================================================================
8788    pub fn gst_ghost_pad_get_type() -> GType;
8789    pub fn gst_ghost_pad_new(name: *const c_char, target: *mut GstPad) -> *mut GstPad;
8790    pub fn gst_ghost_pad_new_from_template(
8791        name: *const c_char,
8792        target: *mut GstPad,
8793        templ: *mut GstPadTemplate,
8794    ) -> *mut GstPad;
8795    pub fn gst_ghost_pad_new_no_target(name: *const c_char, dir: GstPadDirection) -> *mut GstPad;
8796    pub fn gst_ghost_pad_new_no_target_from_template(
8797        name: *const c_char,
8798        templ: *mut GstPadTemplate,
8799    ) -> *mut GstPad;
8800    pub fn gst_ghost_pad_activate_mode_default(
8801        pad: *mut GstPad,
8802        parent: *mut GstObject,
8803        mode: GstPadMode,
8804        active: gboolean,
8805    ) -> gboolean;
8806    pub fn gst_ghost_pad_internal_activate_mode_default(
8807        pad: *mut GstPad,
8808        parent: *mut GstObject,
8809        mode: GstPadMode,
8810        active: gboolean,
8811    ) -> gboolean;
8812    pub fn gst_ghost_pad_construct(gpad: *mut GstGhostPad) -> gboolean;
8813    pub fn gst_ghost_pad_get_target(gpad: *mut GstGhostPad) -> *mut GstPad;
8814    pub fn gst_ghost_pad_set_target(gpad: *mut GstGhostPad, newtarget: *mut GstPad) -> gboolean;
8815
8816    //=========================================================================
8817    // GstInt64Range
8818    //=========================================================================
8819    pub fn gst_int64_range_get_type() -> GType;
8820
8821    //=========================================================================
8822    // GstIntRange
8823    //=========================================================================
8824    pub fn gst_int_range_get_type() -> GType;
8825
8826    //=========================================================================
8827    // GstMetaFactory
8828    //=========================================================================
8829    #[cfg(feature = "v1_28")]
8830    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
8831    pub fn gst_meta_factory_get_type() -> GType;
8832    #[cfg(feature = "v1_28")]
8833    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
8834    pub fn gst_meta_factory_load(factoryname: *const c_char) -> *const GstMetaInfo;
8835    #[cfg(feature = "v1_28")]
8836    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
8837    pub fn gst_meta_factory_register(
8838        plugin: *mut GstPlugin,
8839        meta_info: *const GstMetaInfo,
8840    ) -> gboolean;
8841
8842    //=========================================================================
8843    // GstObject
8844    //=========================================================================
8845    pub fn gst_object_get_type() -> GType;
8846    pub fn gst_object_check_uniqueness(list: *mut glib::GList, name: *const c_char) -> gboolean;
8847    pub fn gst_object_default_deep_notify(
8848        object: *mut gobject::GObject,
8849        orig: *mut GstObject,
8850        pspec: *mut gobject::GParamSpec,
8851        excluded_props: *mut *mut c_char,
8852    );
8853    pub fn gst_object_ref_sink(object: gpointer) -> gpointer;
8854    pub fn gst_object_replace(oldobj: *mut *mut GstObject, newobj: *mut GstObject) -> gboolean;
8855    pub fn gst_object_add_control_binding(
8856        object: *mut GstObject,
8857        binding: *mut GstControlBinding,
8858    ) -> gboolean;
8859    #[cfg(feature = "v1_28")]
8860    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
8861    pub fn gst_object_call_async(
8862        object: *mut GstObject,
8863        func: GstObjectCallAsyncFunc,
8864        user_data: gpointer,
8865    );
8866    pub fn gst_object_default_error(
8867        source: *mut GstObject,
8868        error: *const glib::GError,
8869        debug: *const c_char,
8870    );
8871    pub fn gst_object_get_control_binding(
8872        object: *mut GstObject,
8873        property_name: *const c_char,
8874    ) -> *mut GstControlBinding;
8875    pub fn gst_object_get_control_rate(object: *mut GstObject) -> GstClockTime;
8876    pub fn gst_object_get_g_value_array(
8877        object: *mut GstObject,
8878        property_name: *const c_char,
8879        timestamp: GstClockTime,
8880        interval: GstClockTime,
8881        n_values: c_uint,
8882        values: *mut gobject::GValue,
8883    ) -> gboolean;
8884    pub fn gst_object_get_name(object: *mut GstObject) -> *mut c_char;
8885    pub fn gst_object_get_parent(object: *mut GstObject) -> *mut GstObject;
8886    pub fn gst_object_get_path_string(object: *mut GstObject) -> *mut c_char;
8887    #[cfg(feature = "v1_28")]
8888    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
8889    pub fn gst_object_get_toplevel(object: *mut GstObject) -> *mut GstObject;
8890    pub fn gst_object_get_value(
8891        object: *mut GstObject,
8892        property_name: *const c_char,
8893        timestamp: GstClockTime,
8894    ) -> *mut gobject::GValue;
8895    pub fn gst_object_get_value_array(
8896        object: *mut GstObject,
8897        property_name: *const c_char,
8898        timestamp: GstClockTime,
8899        interval: GstClockTime,
8900        n_values: c_uint,
8901        values: gpointer,
8902    ) -> gboolean;
8903    pub fn gst_object_has_active_control_bindings(object: *mut GstObject) -> gboolean;
8904    pub fn gst_object_has_ancestor(object: *mut GstObject, ancestor: *mut GstObject) -> gboolean;
8905    pub fn gst_object_has_as_ancestor(object: *mut GstObject, ancestor: *mut GstObject)
8906    -> gboolean;
8907    pub fn gst_object_has_as_parent(object: *mut GstObject, parent: *mut GstObject) -> gboolean;
8908    pub fn gst_object_ref(object: *mut GstObject) -> *mut GstObject;
8909    pub fn gst_object_remove_control_binding(
8910        object: *mut GstObject,
8911        binding: *mut GstControlBinding,
8912    ) -> gboolean;
8913    pub fn gst_object_set_control_binding_disabled(
8914        object: *mut GstObject,
8915        property_name: *const c_char,
8916        disabled: gboolean,
8917    );
8918    pub fn gst_object_set_control_bindings_disabled(object: *mut GstObject, disabled: gboolean);
8919    pub fn gst_object_set_control_rate(object: *mut GstObject, control_rate: GstClockTime);
8920    pub fn gst_object_set_name(object: *mut GstObject, name: *const c_char) -> gboolean;
8921    pub fn gst_object_set_parent(object: *mut GstObject, parent: *mut GstObject) -> gboolean;
8922    pub fn gst_object_suggest_next_sync(object: *mut GstObject) -> GstClockTime;
8923    pub fn gst_object_sync_values(object: *mut GstObject, timestamp: GstClockTime) -> gboolean;
8924    pub fn gst_object_unparent(object: *mut GstObject);
8925    pub fn gst_object_unref(object: *mut GstObject);
8926
8927    //=========================================================================
8928    // GstPad
8929    //=========================================================================
8930    pub fn gst_pad_get_type() -> GType;
8931    pub fn gst_pad_new(name: *const c_char, direction: GstPadDirection) -> *mut GstPad;
8932    pub fn gst_pad_new_from_static_template(
8933        templ: *mut GstStaticPadTemplate,
8934        name: *const c_char,
8935    ) -> *mut GstPad;
8936    pub fn gst_pad_new_from_template(
8937        templ: *mut GstPadTemplate,
8938        name: *const c_char,
8939    ) -> *mut GstPad;
8940    pub fn gst_pad_link_get_name(ret: GstPadLinkReturn) -> *const c_char;
8941    pub fn gst_pad_activate_mode(pad: *mut GstPad, mode: GstPadMode, active: gboolean) -> gboolean;
8942    pub fn gst_pad_add_probe(
8943        pad: *mut GstPad,
8944        mask: GstPadProbeType,
8945        callback: GstPadProbeCallback,
8946        user_data: gpointer,
8947        destroy_data: glib::GDestroyNotify,
8948    ) -> c_ulong;
8949    pub fn gst_pad_can_link(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> gboolean;
8950    pub fn gst_pad_chain(pad: *mut GstPad, buffer: *mut GstBuffer) -> GstFlowReturn;
8951    pub fn gst_pad_chain_list(pad: *mut GstPad, list: *mut GstBufferList) -> GstFlowReturn;
8952    pub fn gst_pad_check_reconfigure(pad: *mut GstPad) -> gboolean;
8953    pub fn gst_pad_create_stream_id(
8954        pad: *mut GstPad,
8955        parent: *mut GstElement,
8956        stream_id: *const c_char,
8957    ) -> *mut c_char;
8958    pub fn gst_pad_create_stream_id_printf(
8959        pad: *mut GstPad,
8960        parent: *mut GstElement,
8961        stream_id: *const c_char,
8962        ...
8963    ) -> *mut c_char;
8964    //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;
8965    pub fn gst_pad_event_default(
8966        pad: *mut GstPad,
8967        parent: *mut GstObject,
8968        event: *mut GstEvent,
8969    ) -> gboolean;
8970    pub fn gst_pad_forward(
8971        pad: *mut GstPad,
8972        forward: GstPadForwardFunction,
8973        user_data: gpointer,
8974    ) -> gboolean;
8975    pub fn gst_pad_get_allowed_caps(pad: *mut GstPad) -> *mut GstCaps;
8976    pub fn gst_pad_get_current_caps(pad: *mut GstPad) -> *mut GstCaps;
8977    pub fn gst_pad_get_direction(pad: *mut GstPad) -> GstPadDirection;
8978    pub fn gst_pad_get_element_private(pad: *mut GstPad) -> gpointer;
8979    pub fn gst_pad_get_last_flow_return(pad: *mut GstPad) -> GstFlowReturn;
8980    pub fn gst_pad_get_offset(pad: *mut GstPad) -> i64;
8981    pub fn gst_pad_get_pad_template(pad: *mut GstPad) -> *mut GstPadTemplate;
8982    pub fn gst_pad_get_pad_template_caps(pad: *mut GstPad) -> *mut GstCaps;
8983    pub fn gst_pad_get_parent_element(pad: *mut GstPad) -> *mut GstElement;
8984    pub fn gst_pad_get_peer(pad: *mut GstPad) -> *mut GstPad;
8985    pub fn gst_pad_get_range(
8986        pad: *mut GstPad,
8987        offset: u64,
8988        size: c_uint,
8989        buffer: *mut *mut GstBuffer,
8990    ) -> GstFlowReturn;
8991    #[cfg(feature = "v1_18")]
8992    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8993    pub fn gst_pad_get_single_internal_link(pad: *mut GstPad) -> *mut GstPad;
8994    pub fn gst_pad_get_sticky_event(
8995        pad: *mut GstPad,
8996        event_type: GstEventType,
8997        idx: c_uint,
8998    ) -> *mut GstEvent;
8999    pub fn gst_pad_get_stream(pad: *mut GstPad) -> *mut GstStream;
9000    pub fn gst_pad_get_stream_id(pad: *mut GstPad) -> *mut c_char;
9001    pub fn gst_pad_get_task_state(pad: *mut GstPad) -> GstTaskState;
9002    pub fn gst_pad_has_current_caps(pad: *mut GstPad) -> gboolean;
9003    pub fn gst_pad_is_active(pad: *mut GstPad) -> gboolean;
9004    pub fn gst_pad_is_blocked(pad: *mut GstPad) -> gboolean;
9005    pub fn gst_pad_is_blocking(pad: *mut GstPad) -> gboolean;
9006    pub fn gst_pad_is_linked(pad: *mut GstPad) -> gboolean;
9007    pub fn gst_pad_iterate_internal_links(pad: *mut GstPad) -> *mut GstIterator;
9008    pub fn gst_pad_iterate_internal_links_default(
9009        pad: *mut GstPad,
9010        parent: *mut GstObject,
9011    ) -> *mut GstIterator;
9012    pub fn gst_pad_link(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> GstPadLinkReturn;
9013    pub fn gst_pad_link_full(
9014        srcpad: *mut GstPad,
9015        sinkpad: *mut GstPad,
9016        flags: GstPadLinkCheck,
9017    ) -> GstPadLinkReturn;
9018    pub fn gst_pad_link_maybe_ghosting(src: *mut GstPad, sink: *mut GstPad) -> gboolean;
9019    pub fn gst_pad_link_maybe_ghosting_full(
9020        src: *mut GstPad,
9021        sink: *mut GstPad,
9022        flags: GstPadLinkCheck,
9023    ) -> gboolean;
9024    pub fn gst_pad_mark_reconfigure(pad: *mut GstPad);
9025    pub fn gst_pad_needs_reconfigure(pad: *mut GstPad) -> gboolean;
9026    pub fn gst_pad_pause_task(pad: *mut GstPad) -> gboolean;
9027    pub fn gst_pad_peer_query(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
9028    pub fn gst_pad_peer_query_accept_caps(pad: *mut GstPad, caps: *mut GstCaps) -> gboolean;
9029    pub fn gst_pad_peer_query_caps(pad: *mut GstPad, filter: *mut GstCaps) -> *mut GstCaps;
9030    pub fn gst_pad_peer_query_convert(
9031        pad: *mut GstPad,
9032        src_format: GstFormat,
9033        src_val: i64,
9034        dest_format: GstFormat,
9035        dest_val: *mut i64,
9036    ) -> gboolean;
9037    pub fn gst_pad_peer_query_duration(
9038        pad: *mut GstPad,
9039        format: GstFormat,
9040        duration: *mut i64,
9041    ) -> gboolean;
9042    pub fn gst_pad_peer_query_position(
9043        pad: *mut GstPad,
9044        format: GstFormat,
9045        cur: *mut i64,
9046    ) -> gboolean;
9047    pub fn gst_pad_proxy_query_accept_caps(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
9048    pub fn gst_pad_proxy_query_caps(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
9049    pub fn gst_pad_pull_range(
9050        pad: *mut GstPad,
9051        offset: u64,
9052        size: c_uint,
9053        buffer: *mut *mut GstBuffer,
9054    ) -> GstFlowReturn;
9055    pub fn gst_pad_push(pad: *mut GstPad, buffer: *mut GstBuffer) -> GstFlowReturn;
9056    pub fn gst_pad_push_event(pad: *mut GstPad, event: *mut GstEvent) -> gboolean;
9057    pub fn gst_pad_push_list(pad: *mut GstPad, list: *mut GstBufferList) -> GstFlowReturn;
9058    pub fn gst_pad_query(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
9059    pub fn gst_pad_query_accept_caps(pad: *mut GstPad, caps: *mut GstCaps) -> gboolean;
9060    pub fn gst_pad_query_caps(pad: *mut GstPad, filter: *mut GstCaps) -> *mut GstCaps;
9061    pub fn gst_pad_query_convert(
9062        pad: *mut GstPad,
9063        src_format: GstFormat,
9064        src_val: i64,
9065        dest_format: GstFormat,
9066        dest_val: *mut i64,
9067    ) -> gboolean;
9068    pub fn gst_pad_query_default(
9069        pad: *mut GstPad,
9070        parent: *mut GstObject,
9071        query: *mut GstQuery,
9072    ) -> gboolean;
9073    pub fn gst_pad_query_duration(
9074        pad: *mut GstPad,
9075        format: GstFormat,
9076        duration: *mut i64,
9077    ) -> gboolean;
9078    pub fn gst_pad_query_position(pad: *mut GstPad, format: GstFormat, cur: *mut i64) -> gboolean;
9079    pub fn gst_pad_remove_probe(pad: *mut GstPad, id: c_ulong);
9080    pub fn gst_pad_send_event(pad: *mut GstPad, event: *mut GstEvent) -> gboolean;
9081    pub fn gst_pad_set_activate_function_full(
9082        pad: *mut GstPad,
9083        activate: GstPadActivateFunction,
9084        user_data: gpointer,
9085        notify: glib::GDestroyNotify,
9086    );
9087    pub fn gst_pad_set_activatemode_function_full(
9088        pad: *mut GstPad,
9089        activatemode: GstPadActivateModeFunction,
9090        user_data: gpointer,
9091        notify: glib::GDestroyNotify,
9092    );
9093    pub fn gst_pad_set_active(pad: *mut GstPad, active: gboolean) -> gboolean;
9094    pub fn gst_pad_set_chain_function_full(
9095        pad: *mut GstPad,
9096        chain: GstPadChainFunction,
9097        user_data: gpointer,
9098        notify: glib::GDestroyNotify,
9099    );
9100    pub fn gst_pad_set_chain_list_function_full(
9101        pad: *mut GstPad,
9102        chainlist: GstPadChainListFunction,
9103        user_data: gpointer,
9104        notify: glib::GDestroyNotify,
9105    );
9106    pub fn gst_pad_set_element_private(pad: *mut GstPad, priv_: gpointer);
9107    pub fn gst_pad_set_event_full_function_full(
9108        pad: *mut GstPad,
9109        event: GstPadEventFullFunction,
9110        user_data: gpointer,
9111        notify: glib::GDestroyNotify,
9112    );
9113    pub fn gst_pad_set_event_function_full(
9114        pad: *mut GstPad,
9115        event: GstPadEventFunction,
9116        user_data: gpointer,
9117        notify: glib::GDestroyNotify,
9118    );
9119    pub fn gst_pad_set_getrange_function_full(
9120        pad: *mut GstPad,
9121        get: GstPadGetRangeFunction,
9122        user_data: gpointer,
9123        notify: glib::GDestroyNotify,
9124    );
9125    pub fn gst_pad_set_iterate_internal_links_function_full(
9126        pad: *mut GstPad,
9127        iterintlink: GstPadIterIntLinkFunction,
9128        user_data: gpointer,
9129        notify: glib::GDestroyNotify,
9130    );
9131    pub fn gst_pad_set_link_function_full(
9132        pad: *mut GstPad,
9133        link: GstPadLinkFunction,
9134        user_data: gpointer,
9135        notify: glib::GDestroyNotify,
9136    );
9137    pub fn gst_pad_set_offset(pad: *mut GstPad, offset: i64);
9138    pub fn gst_pad_set_query_function_full(
9139        pad: *mut GstPad,
9140        query: GstPadQueryFunction,
9141        user_data: gpointer,
9142        notify: glib::GDestroyNotify,
9143    );
9144    pub fn gst_pad_set_unlink_function_full(
9145        pad: *mut GstPad,
9146        unlink: GstPadUnlinkFunction,
9147        user_data: gpointer,
9148        notify: glib::GDestroyNotify,
9149    );
9150    pub fn gst_pad_start_task(
9151        pad: *mut GstPad,
9152        func: GstTaskFunction,
9153        user_data: gpointer,
9154        notify: glib::GDestroyNotify,
9155    ) -> gboolean;
9156    pub fn gst_pad_sticky_events_foreach(
9157        pad: *mut GstPad,
9158        foreach_func: GstPadStickyEventsForeachFunction,
9159        user_data: gpointer,
9160    );
9161    pub fn gst_pad_stop_task(pad: *mut GstPad) -> gboolean;
9162    pub fn gst_pad_store_sticky_event(pad: *mut GstPad, event: *mut GstEvent) -> GstFlowReturn;
9163    pub fn gst_pad_unlink(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> gboolean;
9164    pub fn gst_pad_use_fixed_caps(pad: *mut GstPad);
9165
9166    //=========================================================================
9167    // GstPadTemplate
9168    //=========================================================================
9169    pub fn gst_pad_template_get_type() -> GType;
9170    pub fn gst_pad_template_new(
9171        name_template: *const c_char,
9172        direction: GstPadDirection,
9173        presence: GstPadPresence,
9174        caps: *mut GstCaps,
9175    ) -> *mut GstPadTemplate;
9176    pub fn gst_pad_template_new_from_static_pad_template_with_gtype(
9177        pad_template: *mut GstStaticPadTemplate,
9178        pad_type: GType,
9179    ) -> *mut GstPadTemplate;
9180    pub fn gst_pad_template_new_with_gtype(
9181        name_template: *const c_char,
9182        direction: GstPadDirection,
9183        presence: GstPadPresence,
9184        caps: *mut GstCaps,
9185        pad_type: GType,
9186    ) -> *mut GstPadTemplate;
9187    pub fn gst_pad_template_get_caps(templ: *mut GstPadTemplate) -> *mut GstCaps;
9188    #[cfg(feature = "v1_18")]
9189    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9190    pub fn gst_pad_template_get_documentation_caps(templ: *mut GstPadTemplate) -> *mut GstCaps;
9191    pub fn gst_pad_template_pad_created(templ: *mut GstPadTemplate, pad: *mut GstPad);
9192    #[cfg(feature = "v1_18")]
9193    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9194    pub fn gst_pad_template_set_documentation_caps(templ: *mut GstPadTemplate, caps: *mut GstCaps);
9195
9196    //=========================================================================
9197    // GstParamArray
9198    //=========================================================================
9199    pub fn gst_param_spec_array_get_type() -> GType;
9200
9201    //=========================================================================
9202    // GstParamFraction
9203    //=========================================================================
9204    pub fn gst_param_spec_fraction_get_type() -> GType;
9205
9206    //=========================================================================
9207    // GstPipeline
9208    //=========================================================================
9209    pub fn gst_pipeline_get_type() -> GType;
9210    pub fn gst_pipeline_new(name: *const c_char) -> *mut GstElement;
9211    pub fn gst_pipeline_auto_clock(pipeline: *mut GstPipeline);
9212    pub fn gst_pipeline_get_auto_flush_bus(pipeline: *mut GstPipeline) -> gboolean;
9213    pub fn gst_pipeline_get_bus(pipeline: *mut GstPipeline) -> *mut GstBus;
9214    pub fn gst_pipeline_get_clock(pipeline: *mut GstPipeline) -> *mut GstClock;
9215    #[cfg(feature = "v1_24")]
9216    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9217    pub fn gst_pipeline_get_configured_latency(pipeline: *mut GstPipeline) -> GstClockTime;
9218    pub fn gst_pipeline_get_delay(pipeline: *mut GstPipeline) -> GstClockTime;
9219    pub fn gst_pipeline_get_latency(pipeline: *mut GstPipeline) -> GstClockTime;
9220    pub fn gst_pipeline_get_pipeline_clock(pipeline: *mut GstPipeline) -> *mut GstClock;
9221    #[cfg(feature = "v1_24")]
9222    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9223    pub fn gst_pipeline_is_live(pipeline: *mut GstPipeline) -> gboolean;
9224    pub fn gst_pipeline_set_auto_flush_bus(pipeline: *mut GstPipeline, auto_flush: gboolean);
9225    pub fn gst_pipeline_set_clock(pipeline: *mut GstPipeline, clock: *mut GstClock) -> gboolean;
9226    pub fn gst_pipeline_set_delay(pipeline: *mut GstPipeline, delay: GstClockTime);
9227    pub fn gst_pipeline_set_latency(pipeline: *mut GstPipeline, latency: GstClockTime);
9228    pub fn gst_pipeline_use_clock(pipeline: *mut GstPipeline, clock: *mut GstClock);
9229
9230    //=========================================================================
9231    // GstPlugin
9232    //=========================================================================
9233    pub fn gst_plugin_get_type() -> GType;
9234    pub fn gst_plugin_list_free(list: *mut glib::GList);
9235    pub fn gst_plugin_load_by_name(name: *const c_char) -> *mut GstPlugin;
9236    pub fn gst_plugin_load_file(
9237        filename: *const c_char,
9238        error: *mut *mut glib::GError,
9239    ) -> *mut GstPlugin;
9240    pub fn gst_plugin_register_static(
9241        major_version: c_int,
9242        minor_version: c_int,
9243        name: *const c_char,
9244        description: *const c_char,
9245        init_func: GstPluginInitFunc,
9246        version: *const c_char,
9247        license: *const c_char,
9248        source: *const c_char,
9249        package: *const c_char,
9250        origin: *const c_char,
9251    ) -> gboolean;
9252    pub fn gst_plugin_register_static_full(
9253        major_version: c_int,
9254        minor_version: c_int,
9255        name: *const c_char,
9256        description: *const c_char,
9257        init_full_func: GstPluginInitFullFunc,
9258        version: *const c_char,
9259        license: *const c_char,
9260        source: *const c_char,
9261        package: *const c_char,
9262        origin: *const c_char,
9263        user_data: gpointer,
9264    ) -> gboolean;
9265    pub fn gst_plugin_add_dependency(
9266        plugin: *mut GstPlugin,
9267        env_vars: *mut *const c_char,
9268        paths: *mut *const c_char,
9269        names: *mut *const c_char,
9270        flags: GstPluginDependencyFlags,
9271    );
9272    pub fn gst_plugin_add_dependency_simple(
9273        plugin: *mut GstPlugin,
9274        env_vars: *const c_char,
9275        paths: *const c_char,
9276        names: *const c_char,
9277        flags: GstPluginDependencyFlags,
9278    );
9279    #[cfg(feature = "v1_24")]
9280    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9281    pub fn gst_plugin_add_status_error(plugin: *mut GstPlugin, message: *const c_char);
9282    #[cfg(feature = "v1_24")]
9283    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9284    pub fn gst_plugin_add_status_info(plugin: *mut GstPlugin, message: *const c_char);
9285    #[cfg(feature = "v1_24")]
9286    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9287    pub fn gst_plugin_add_status_warning(plugin: *mut GstPlugin, message: *const c_char);
9288    pub fn gst_plugin_get_cache_data(plugin: *mut GstPlugin) -> *const GstStructure;
9289    pub fn gst_plugin_get_description(plugin: *mut GstPlugin) -> *const c_char;
9290    pub fn gst_plugin_get_filename(plugin: *mut GstPlugin) -> *const c_char;
9291    pub fn gst_plugin_get_license(plugin: *mut GstPlugin) -> *const c_char;
9292    pub fn gst_plugin_get_name(plugin: *mut GstPlugin) -> *const c_char;
9293    pub fn gst_plugin_get_origin(plugin: *mut GstPlugin) -> *const c_char;
9294    pub fn gst_plugin_get_package(plugin: *mut GstPlugin) -> *const c_char;
9295    pub fn gst_plugin_get_release_date_string(plugin: *mut GstPlugin) -> *const c_char;
9296    pub fn gst_plugin_get_source(plugin: *mut GstPlugin) -> *const c_char;
9297    #[cfg(feature = "v1_24")]
9298    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9299    pub fn gst_plugin_get_status_errors(plugin: *mut GstPlugin) -> *mut *mut c_char;
9300    #[cfg(feature = "v1_24")]
9301    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9302    pub fn gst_plugin_get_status_infos(plugin: *mut GstPlugin) -> *mut *mut c_char;
9303    #[cfg(feature = "v1_24")]
9304    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9305    pub fn gst_plugin_get_status_warnings(plugin: *mut GstPlugin) -> *mut *mut c_char;
9306    pub fn gst_plugin_get_version(plugin: *mut GstPlugin) -> *const c_char;
9307    pub fn gst_plugin_is_loaded(plugin: *mut GstPlugin) -> gboolean;
9308    pub fn gst_plugin_load(plugin: *mut GstPlugin) -> *mut GstPlugin;
9309    pub fn gst_plugin_set_cache_data(plugin: *mut GstPlugin, cache_data: *mut GstStructure);
9310
9311    //=========================================================================
9312    // GstPluginFeature
9313    //=========================================================================
9314    pub fn gst_plugin_feature_get_type() -> GType;
9315    pub fn gst_plugin_feature_list_copy(list: *mut glib::GList) -> *mut glib::GList;
9316    pub fn gst_plugin_feature_list_debug(list: *mut glib::GList);
9317    pub fn gst_plugin_feature_list_free(list: *mut glib::GList);
9318    pub fn gst_plugin_feature_rank_compare_func(p1: gconstpointer, p2: gconstpointer) -> c_int;
9319    pub fn gst_plugin_feature_check_version(
9320        feature: *mut GstPluginFeature,
9321        min_major: c_uint,
9322        min_minor: c_uint,
9323        min_micro: c_uint,
9324    ) -> gboolean;
9325    pub fn gst_plugin_feature_get_plugin(feature: *mut GstPluginFeature) -> *mut GstPlugin;
9326    pub fn gst_plugin_feature_get_plugin_name(feature: *mut GstPluginFeature) -> *const c_char;
9327    pub fn gst_plugin_feature_get_rank(feature: *mut GstPluginFeature) -> c_uint;
9328    pub fn gst_plugin_feature_load(feature: *mut GstPluginFeature) -> *mut GstPluginFeature;
9329    pub fn gst_plugin_feature_set_rank(feature: *mut GstPluginFeature, rank: c_uint);
9330
9331    //=========================================================================
9332    // GstProxyPad
9333    //=========================================================================
9334    pub fn gst_proxy_pad_get_type() -> GType;
9335    pub fn gst_proxy_pad_chain_default(
9336        pad: *mut GstPad,
9337        parent: *mut GstObject,
9338        buffer: *mut GstBuffer,
9339    ) -> GstFlowReturn;
9340    pub fn gst_proxy_pad_chain_list_default(
9341        pad: *mut GstPad,
9342        parent: *mut GstObject,
9343        list: *mut GstBufferList,
9344    ) -> GstFlowReturn;
9345    pub fn gst_proxy_pad_getrange_default(
9346        pad: *mut GstPad,
9347        parent: *mut GstObject,
9348        offset: u64,
9349        size: c_uint,
9350        buffer: *mut *mut GstBuffer,
9351    ) -> GstFlowReturn;
9352    pub fn gst_proxy_pad_iterate_internal_links_default(
9353        pad: *mut GstPad,
9354        parent: *mut GstObject,
9355    ) -> *mut GstIterator;
9356    pub fn gst_proxy_pad_get_internal(pad: *mut GstProxyPad) -> *mut GstProxyPad;
9357
9358    //=========================================================================
9359    // GstRegistry
9360    //=========================================================================
9361    pub fn gst_registry_get_type() -> GType;
9362    pub fn gst_registry_fork_is_enabled() -> gboolean;
9363    pub fn gst_registry_fork_set_enabled(enabled: gboolean);
9364    pub fn gst_registry_get() -> *mut GstRegistry;
9365    pub fn gst_registry_add_feature(
9366        registry: *mut GstRegistry,
9367        feature: *mut GstPluginFeature,
9368    ) -> gboolean;
9369    pub fn gst_registry_add_plugin(registry: *mut GstRegistry, plugin: *mut GstPlugin) -> gboolean;
9370    pub fn gst_registry_check_feature_version(
9371        registry: *mut GstRegistry,
9372        feature_name: *const c_char,
9373        min_major: c_uint,
9374        min_minor: c_uint,
9375        min_micro: c_uint,
9376    ) -> gboolean;
9377    pub fn gst_registry_feature_filter(
9378        registry: *mut GstRegistry,
9379        filter: GstPluginFeatureFilter,
9380        first: gboolean,
9381        user_data: gpointer,
9382    ) -> *mut glib::GList;
9383    pub fn gst_registry_find_feature(
9384        registry: *mut GstRegistry,
9385        name: *const c_char,
9386        type_: GType,
9387    ) -> *mut GstPluginFeature;
9388    pub fn gst_registry_find_plugin(
9389        registry: *mut GstRegistry,
9390        name: *const c_char,
9391    ) -> *mut GstPlugin;
9392    pub fn gst_registry_get_feature_list(
9393        registry: *mut GstRegistry,
9394        type_: GType,
9395    ) -> *mut glib::GList;
9396    pub fn gst_registry_get_feature_list_by_plugin(
9397        registry: *mut GstRegistry,
9398        name: *const c_char,
9399    ) -> *mut glib::GList;
9400    pub fn gst_registry_get_feature_list_cookie(registry: *mut GstRegistry) -> u32;
9401    pub fn gst_registry_get_plugin_list(registry: *mut GstRegistry) -> *mut glib::GList;
9402    pub fn gst_registry_lookup(
9403        registry: *mut GstRegistry,
9404        filename: *const c_char,
9405    ) -> *mut GstPlugin;
9406    pub fn gst_registry_lookup_feature(
9407        registry: *mut GstRegistry,
9408        name: *const c_char,
9409    ) -> *mut GstPluginFeature;
9410    pub fn gst_registry_plugin_filter(
9411        registry: *mut GstRegistry,
9412        filter: GstPluginFilter,
9413        first: gboolean,
9414        user_data: gpointer,
9415    ) -> *mut glib::GList;
9416    pub fn gst_registry_remove_feature(registry: *mut GstRegistry, feature: *mut GstPluginFeature);
9417    pub fn gst_registry_remove_plugin(registry: *mut GstRegistry, plugin: *mut GstPlugin);
9418    pub fn gst_registry_scan_path(registry: *mut GstRegistry, path: *const c_char) -> gboolean;
9419
9420    //=========================================================================
9421    // GstSharedTaskPool
9422    //=========================================================================
9423    #[cfg(feature = "v1_20")]
9424    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9425    pub fn gst_shared_task_pool_get_type() -> GType;
9426    #[cfg(feature = "v1_20")]
9427    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9428    pub fn gst_shared_task_pool_new() -> *mut GstTaskPool;
9429    #[cfg(feature = "v1_20")]
9430    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9431    pub fn gst_shared_task_pool_get_max_threads(pool: *mut GstSharedTaskPool) -> c_uint;
9432    #[cfg(feature = "v1_20")]
9433    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9434    pub fn gst_shared_task_pool_set_max_threads(pool: *mut GstSharedTaskPool, max_threads: c_uint);
9435
9436    //=========================================================================
9437    // GstStream
9438    //=========================================================================
9439    pub fn gst_stream_get_type() -> GType;
9440    pub fn gst_stream_new(
9441        stream_id: *const c_char,
9442        caps: *mut GstCaps,
9443        type_: GstStreamType,
9444        flags: GstStreamFlags,
9445    ) -> *mut GstStream;
9446    pub fn gst_stream_get_caps(stream: *mut GstStream) -> *mut GstCaps;
9447    pub fn gst_stream_get_stream_flags(stream: *mut GstStream) -> GstStreamFlags;
9448    pub fn gst_stream_get_stream_id(stream: *mut GstStream) -> *const c_char;
9449    pub fn gst_stream_get_stream_type(stream: *mut GstStream) -> GstStreamType;
9450    pub fn gst_stream_get_tags(stream: *mut GstStream) -> *mut GstTagList;
9451    pub fn gst_stream_set_caps(stream: *mut GstStream, caps: *mut GstCaps);
9452    pub fn gst_stream_set_stream_flags(stream: *mut GstStream, flags: GstStreamFlags);
9453    pub fn gst_stream_set_stream_type(stream: *mut GstStream, stream_type: GstStreamType);
9454    pub fn gst_stream_set_tags(stream: *mut GstStream, tags: *mut GstTagList);
9455
9456    //=========================================================================
9457    // GstStreamCollection
9458    //=========================================================================
9459    pub fn gst_stream_collection_get_type() -> GType;
9460    pub fn gst_stream_collection_new(upstream_id: *const c_char) -> *mut GstStreamCollection;
9461    pub fn gst_stream_collection_add_stream(
9462        collection: *mut GstStreamCollection,
9463        stream: *mut GstStream,
9464    ) -> gboolean;
9465    pub fn gst_stream_collection_get_size(collection: *mut GstStreamCollection) -> c_uint;
9466    pub fn gst_stream_collection_get_stream(
9467        collection: *mut GstStreamCollection,
9468        index: c_uint,
9469    ) -> *mut GstStream;
9470    pub fn gst_stream_collection_get_upstream_id(
9471        collection: *mut GstStreamCollection,
9472    ) -> *const c_char;
9473
9474    //=========================================================================
9475    // GstSystemClock
9476    //=========================================================================
9477    pub fn gst_system_clock_get_type() -> GType;
9478    pub fn gst_system_clock_obtain() -> *mut GstClock;
9479    pub fn gst_system_clock_set_default(new_clock: *mut GstClock);
9480
9481    //=========================================================================
9482    // GstTask
9483    //=========================================================================
9484    pub fn gst_task_get_type() -> GType;
9485    pub fn gst_task_new(
9486        func: GstTaskFunction,
9487        user_data: gpointer,
9488        notify: glib::GDestroyNotify,
9489    ) -> *mut GstTask;
9490    pub fn gst_task_cleanup_all();
9491    pub fn gst_task_get_pool(task: *mut GstTask) -> *mut GstTaskPool;
9492    pub fn gst_task_get_state(task: *mut GstTask) -> GstTaskState;
9493    pub fn gst_task_join(task: *mut GstTask) -> gboolean;
9494    pub fn gst_task_pause(task: *mut GstTask) -> gboolean;
9495    #[cfg(feature = "v1_18")]
9496    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9497    pub fn gst_task_resume(task: *mut GstTask) -> gboolean;
9498    pub fn gst_task_set_enter_callback(
9499        task: *mut GstTask,
9500        enter_func: GstTaskThreadFunc,
9501        user_data: gpointer,
9502        notify: glib::GDestroyNotify,
9503    );
9504    pub fn gst_task_set_leave_callback(
9505        task: *mut GstTask,
9506        leave_func: GstTaskThreadFunc,
9507        user_data: gpointer,
9508        notify: glib::GDestroyNotify,
9509    );
9510    pub fn gst_task_set_lock(task: *mut GstTask, mutex: *mut glib::GRecMutex);
9511    pub fn gst_task_set_pool(task: *mut GstTask, pool: *mut GstTaskPool);
9512    pub fn gst_task_set_state(task: *mut GstTask, state: GstTaskState) -> gboolean;
9513    pub fn gst_task_start(task: *mut GstTask) -> gboolean;
9514    pub fn gst_task_stop(task: *mut GstTask) -> gboolean;
9515
9516    //=========================================================================
9517    // GstTaskPool
9518    //=========================================================================
9519    pub fn gst_task_pool_get_type() -> GType;
9520    pub fn gst_task_pool_new() -> *mut GstTaskPool;
9521    pub fn gst_task_pool_cleanup(pool: *mut GstTaskPool);
9522    #[cfg(feature = "v1_20")]
9523    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9524    pub fn gst_task_pool_dispose_handle(pool: *mut GstTaskPool, id: gpointer);
9525    pub fn gst_task_pool_join(pool: *mut GstTaskPool, id: gpointer);
9526    pub fn gst_task_pool_prepare(pool: *mut GstTaskPool, error: *mut *mut glib::GError);
9527    pub fn gst_task_pool_push(
9528        pool: *mut GstTaskPool,
9529        func: GstTaskPoolFunction,
9530        user_data: gpointer,
9531        error: *mut *mut glib::GError,
9532    ) -> gpointer;
9533
9534    //=========================================================================
9535    // GstTracer
9536    //=========================================================================
9537    pub fn gst_tracer_get_type() -> GType;
9538    pub fn gst_tracer_register(
9539        plugin: *mut GstPlugin,
9540        name: *const c_char,
9541        type_: GType,
9542    ) -> gboolean;
9543
9544    //=========================================================================
9545    // GstTracerFactory
9546    //=========================================================================
9547    pub fn gst_tracer_factory_get_type() -> GType;
9548    pub fn gst_tracer_factory_get_list() -> *mut glib::GList;
9549    pub fn gst_tracer_factory_get_tracer_type(factory: *mut GstTracerFactory) -> GType;
9550
9551    //=========================================================================
9552    // GstTracerRecord
9553    //=========================================================================
9554    pub fn gst_tracer_record_get_type() -> GType;
9555    pub fn gst_tracer_record_new(
9556        name: *const c_char,
9557        firstfield: *const c_char,
9558        ...
9559    ) -> *mut GstTracerRecord;
9560    pub fn gst_tracer_record_log(self_: *mut GstTracerRecord, ...);
9561
9562    //=========================================================================
9563    // GstTypeFindFactory
9564    //=========================================================================
9565    pub fn gst_type_find_factory_get_type() -> GType;
9566    pub fn gst_type_find_factory_get_list() -> *mut glib::GList;
9567    pub fn gst_type_find_factory_call_function(
9568        factory: *mut GstTypeFindFactory,
9569        find: *mut GstTypeFind,
9570    );
9571    pub fn gst_type_find_factory_get_caps(factory: *mut GstTypeFindFactory) -> *mut GstCaps;
9572    pub fn gst_type_find_factory_get_extensions(
9573        factory: *mut GstTypeFindFactory,
9574    ) -> *const *const c_char;
9575    pub fn gst_type_find_factory_has_function(factory: *mut GstTypeFindFactory) -> gboolean;
9576
9577    //=========================================================================
9578    // GstValueArray
9579    //=========================================================================
9580    pub fn gst_value_array_get_type() -> GType;
9581    pub fn gst_value_array_append_and_take_value(
9582        value: *mut gobject::GValue,
9583        append_value: *mut gobject::GValue,
9584    );
9585    pub fn gst_value_array_append_value(
9586        value: *mut gobject::GValue,
9587        append_value: *const gobject::GValue,
9588    );
9589    pub fn gst_value_array_get_size(value: *const gobject::GValue) -> c_uint;
9590    pub fn gst_value_array_get_value(
9591        value: *const gobject::GValue,
9592        index: c_uint,
9593    ) -> *const gobject::GValue;
9594    #[cfg(feature = "v1_18")]
9595    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9596    pub fn gst_value_array_init(
9597        value: *mut gobject::GValue,
9598        prealloc: c_uint,
9599    ) -> *mut gobject::GValue;
9600    pub fn gst_value_array_prepend_value(
9601        value: *mut gobject::GValue,
9602        prepend_value: *const gobject::GValue,
9603    );
9604
9605    //=========================================================================
9606    // GstValueList
9607    //=========================================================================
9608    pub fn gst_value_list_get_type() -> GType;
9609    pub fn gst_value_list_append_and_take_value(
9610        value: *mut gobject::GValue,
9611        append_value: *mut gobject::GValue,
9612    );
9613    pub fn gst_value_list_append_value(
9614        value: *mut gobject::GValue,
9615        append_value: *const gobject::GValue,
9616    );
9617    pub fn gst_value_list_concat(
9618        dest: *mut gobject::GValue,
9619        value1: *const gobject::GValue,
9620        value2: *const gobject::GValue,
9621    );
9622    pub fn gst_value_list_get_size(value: *const gobject::GValue) -> c_uint;
9623    pub fn gst_value_list_get_value(
9624        value: *const gobject::GValue,
9625        index: c_uint,
9626    ) -> *const gobject::GValue;
9627    #[cfg(feature = "v1_18")]
9628    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9629    pub fn gst_value_list_init(
9630        value: *mut gobject::GValue,
9631        prealloc: c_uint,
9632    ) -> *mut gobject::GValue;
9633    pub fn gst_value_list_merge(
9634        dest: *mut gobject::GValue,
9635        value1: *const gobject::GValue,
9636        value2: *const gobject::GValue,
9637    );
9638    pub fn gst_value_list_prepend_value(
9639        value: *mut gobject::GValue,
9640        prepend_value: *const gobject::GValue,
9641    );
9642
9643    //=========================================================================
9644    // GstValueUniqueList
9645    //=========================================================================
9646    #[cfg(feature = "v1_28")]
9647    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9648    pub fn gst_value_unique_list_get_type() -> GType;
9649    #[cfg(feature = "v1_28")]
9650    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9651    pub fn gst_value_unique_list_append_and_take_value(
9652        value: *mut gobject::GValue,
9653        append_value: *mut gobject::GValue,
9654    );
9655    #[cfg(feature = "v1_28")]
9656    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9657    pub fn gst_value_unique_list_append_value(
9658        value: *mut gobject::GValue,
9659        append_value: *const gobject::GValue,
9660    );
9661    #[cfg(feature = "v1_28")]
9662    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9663    pub fn gst_value_unique_list_concat(
9664        dest: *mut gobject::GValue,
9665        value1: *const gobject::GValue,
9666        value2: *const gobject::GValue,
9667    );
9668    #[cfg(feature = "v1_28")]
9669    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9670    pub fn gst_value_unique_list_get_size(value: *const gobject::GValue) -> c_uint;
9671    #[cfg(feature = "v1_28")]
9672    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9673    pub fn gst_value_unique_list_get_value(
9674        value: *const gobject::GValue,
9675        index: c_uint,
9676    ) -> *const gobject::GValue;
9677    #[cfg(feature = "v1_28")]
9678    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9679    pub fn gst_value_unique_list_prepend_value(
9680        value: *mut gobject::GValue,
9681        prepend_value: *const gobject::GValue,
9682    );
9683
9684    //=========================================================================
9685    // GstChildProxy
9686    //=========================================================================
9687    pub fn gst_child_proxy_get_type() -> GType;
9688    pub fn gst_child_proxy_child_added(
9689        parent: *mut GstChildProxy,
9690        child: *mut gobject::GObject,
9691        name: *const c_char,
9692    );
9693    pub fn gst_child_proxy_child_removed(
9694        parent: *mut GstChildProxy,
9695        child: *mut gobject::GObject,
9696        name: *const c_char,
9697    );
9698    pub fn gst_child_proxy_get(object: *mut GstChildProxy, first_property_name: *const c_char, ...);
9699    pub fn gst_child_proxy_get_child_by_index(
9700        parent: *mut GstChildProxy,
9701        index: c_uint,
9702    ) -> *mut gobject::GObject;
9703    pub fn gst_child_proxy_get_child_by_name(
9704        parent: *mut GstChildProxy,
9705        name: *const c_char,
9706    ) -> *mut gobject::GObject;
9707    #[cfg(feature = "v1_22")]
9708    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9709    pub fn gst_child_proxy_get_child_by_name_recurse(
9710        child_proxy: *mut GstChildProxy,
9711        name: *const c_char,
9712    ) -> *mut gobject::GObject;
9713    pub fn gst_child_proxy_get_children_count(parent: *mut GstChildProxy) -> c_uint;
9714    pub fn gst_child_proxy_get_property(
9715        object: *mut GstChildProxy,
9716        name: *const c_char,
9717        value: *mut gobject::GValue,
9718    );
9719    //pub fn gst_child_proxy_get_valist(object: *mut GstChildProxy, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
9720    pub fn gst_child_proxy_lookup(
9721        object: *mut GstChildProxy,
9722        name: *const c_char,
9723        target: *mut *mut gobject::GObject,
9724        pspec: *mut *mut gobject::GParamSpec,
9725    ) -> gboolean;
9726    pub fn gst_child_proxy_set(object: *mut GstChildProxy, first_property_name: *const c_char, ...);
9727    pub fn gst_child_proxy_set_property(
9728        object: *mut GstChildProxy,
9729        name: *const c_char,
9730        value: *const gobject::GValue,
9731    );
9732    //pub fn gst_child_proxy_set_valist(object: *mut GstChildProxy, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
9733
9734    //=========================================================================
9735    // GstPreset
9736    //=========================================================================
9737    pub fn gst_preset_get_type() -> GType;
9738    pub fn gst_preset_get_app_dir() -> *const c_char;
9739    pub fn gst_preset_set_app_dir(app_dir: *const c_char) -> gboolean;
9740    pub fn gst_preset_delete_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9741    pub fn gst_preset_get_meta(
9742        preset: *mut GstPreset,
9743        name: *const c_char,
9744        tag: *const c_char,
9745        value: *mut *mut c_char,
9746    ) -> gboolean;
9747    pub fn gst_preset_get_preset_names(preset: *mut GstPreset) -> *mut *mut c_char;
9748    pub fn gst_preset_get_property_names(preset: *mut GstPreset) -> *mut *mut c_char;
9749    pub fn gst_preset_is_editable(preset: *mut GstPreset) -> gboolean;
9750    pub fn gst_preset_load_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9751    pub fn gst_preset_rename_preset(
9752        preset: *mut GstPreset,
9753        old_name: *const c_char,
9754        new_name: *const c_char,
9755    ) -> gboolean;
9756    pub fn gst_preset_save_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9757    pub fn gst_preset_set_meta(
9758        preset: *mut GstPreset,
9759        name: *const c_char,
9760        tag: *const c_char,
9761        value: *const c_char,
9762    ) -> gboolean;
9763
9764    //=========================================================================
9765    // GstTagSetter
9766    //=========================================================================
9767    pub fn gst_tag_setter_get_type() -> GType;
9768    //pub fn gst_tag_setter_add_tag_valist(setter: *mut GstTagSetter, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
9769    //pub fn gst_tag_setter_add_tag_valist_values(setter: *mut GstTagSetter, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
9770    pub fn gst_tag_setter_add_tag_value(
9771        setter: *mut GstTagSetter,
9772        mode: GstTagMergeMode,
9773        tag: *const c_char,
9774        value: *const gobject::GValue,
9775    );
9776    pub fn gst_tag_setter_add_tag_values(
9777        setter: *mut GstTagSetter,
9778        mode: GstTagMergeMode,
9779        tag: *const c_char,
9780        ...
9781    );
9782    pub fn gst_tag_setter_add_tags(
9783        setter: *mut GstTagSetter,
9784        mode: GstTagMergeMode,
9785        tag: *const c_char,
9786        ...
9787    );
9788    pub fn gst_tag_setter_get_tag_list(setter: *mut GstTagSetter) -> *const GstTagList;
9789    pub fn gst_tag_setter_get_tag_merge_mode(setter: *mut GstTagSetter) -> GstTagMergeMode;
9790    pub fn gst_tag_setter_merge_tags(
9791        setter: *mut GstTagSetter,
9792        list: *const GstTagList,
9793        mode: GstTagMergeMode,
9794    );
9795    pub fn gst_tag_setter_reset_tags(setter: *mut GstTagSetter);
9796    pub fn gst_tag_setter_set_tag_merge_mode(setter: *mut GstTagSetter, mode: GstTagMergeMode);
9797
9798    //=========================================================================
9799    // GstTocSetter
9800    //=========================================================================
9801    pub fn gst_toc_setter_get_type() -> GType;
9802    pub fn gst_toc_setter_get_toc(setter: *mut GstTocSetter) -> *mut GstToc;
9803    pub fn gst_toc_setter_reset(setter: *mut GstTocSetter);
9804    pub fn gst_toc_setter_set_toc(setter: *mut GstTocSetter, toc: *mut GstToc);
9805
9806    //=========================================================================
9807    // GstURIHandler
9808    //=========================================================================
9809    pub fn gst_uri_handler_get_type() -> GType;
9810    pub fn gst_uri_handler_get_protocols(handler: *mut GstURIHandler) -> *const *const c_char;
9811    pub fn gst_uri_handler_get_uri(handler: *mut GstURIHandler) -> *mut c_char;
9812    pub fn gst_uri_handler_get_uri_type(handler: *mut GstURIHandler) -> GstURIType;
9813    pub fn gst_uri_handler_set_uri(
9814        handler: *mut GstURIHandler,
9815        uri: *const c_char,
9816        error: *mut *mut glib::GError,
9817    ) -> gboolean;
9818
9819    //=========================================================================
9820    // Other functions
9821    //=========================================================================
9822    pub fn gst_calculate_linear_regression(
9823        xy: *const GstClockTime,
9824        temp: *mut GstClockTime,
9825        n: c_uint,
9826        m_num: *mut GstClockTime,
9827        m_denom: *mut GstClockTime,
9828        b: *mut GstClockTime,
9829        xbase: *mut GstClockTime,
9830        r_squared: *mut c_double,
9831    ) -> gboolean;
9832    #[cfg(feature = "v1_28")]
9833    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9834    pub fn gst_call_async(func: GstCallAsyncFunc, user_data: gpointer);
9835    #[cfg(feature = "v1_28")]
9836    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9837    pub fn gst_check_version(major: c_uint, minor: c_uint, micro: c_uint) -> gboolean;
9838    #[cfg(feature = "v1_18_3")]
9839    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9840    pub fn gst_clear_buffer(buf_ptr: *mut *mut GstBuffer);
9841    #[cfg(feature = "v1_18_3")]
9842    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9843    pub fn gst_clear_buffer_list(list_ptr: *mut *mut GstBufferList);
9844    #[cfg(feature = "v1_18_3")]
9845    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9846    pub fn gst_clear_caps(caps_ptr: *mut *mut GstCaps);
9847    #[cfg(feature = "v1_24")]
9848    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9849    pub fn gst_clear_context(context_ptr: *mut *mut GstContext);
9850    #[cfg(feature = "v1_18_3")]
9851    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9852    pub fn gst_clear_event(event_ptr: *mut *mut GstEvent);
9853    #[cfg(feature = "v1_18_3")]
9854    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9855    pub fn gst_clear_message(msg_ptr: *mut *mut GstMessage);
9856    #[cfg(feature = "v1_16")]
9857    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
9858    pub fn gst_clear_mini_object(object_ptr: *mut *mut GstMiniObject);
9859    #[cfg(feature = "v1_16")]
9860    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
9861    pub fn gst_clear_object(object_ptr: *mut *mut GstObject);
9862    #[cfg(feature = "v1_24")]
9863    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9864    pub fn gst_clear_promise(promise_ptr: *mut *mut GstPromise);
9865    #[cfg(feature = "v1_18_3")]
9866    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9867    pub fn gst_clear_query(query_ptr: *mut *mut GstQuery);
9868    #[cfg(feature = "v1_24")]
9869    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9870    pub fn gst_clear_sample(sample_ptr: *mut *mut GstSample);
9871    #[cfg(feature = "v1_16")]
9872    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
9873    pub fn gst_clear_structure(structure_ptr: *mut *mut GstStructure);
9874    #[cfg(feature = "v1_18_3")]
9875    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9876    pub fn gst_clear_tag_list(taglist_ptr: *mut *mut GstTagList);
9877    #[cfg(feature = "v1_18_3")]
9878    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
9879    pub fn gst_clear_uri(uri_ptr: *mut *mut GstUri);
9880    #[cfg(feature = "v1_28")]
9881    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9882    pub fn gst_cpuid_supports_arm_neon() -> gboolean;
9883    #[cfg(feature = "v1_28")]
9884    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9885    pub fn gst_cpuid_supports_arm_neon64() -> gboolean;
9886    #[cfg(feature = "v1_28")]
9887    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9888    pub fn gst_cpuid_supports_x86_3dnow() -> gboolean;
9889    #[cfg(feature = "v1_28")]
9890    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9891    pub fn gst_cpuid_supports_x86_avx() -> gboolean;
9892    #[cfg(feature = "v1_28")]
9893    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9894    pub fn gst_cpuid_supports_x86_avx2() -> gboolean;
9895    #[cfg(feature = "v1_28")]
9896    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9897    pub fn gst_cpuid_supports_x86_mmx() -> gboolean;
9898    #[cfg(feature = "v1_28")]
9899    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9900    pub fn gst_cpuid_supports_x86_mmxext() -> gboolean;
9901    #[cfg(feature = "v1_28")]
9902    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9903    pub fn gst_cpuid_supports_x86_sse2() -> gboolean;
9904    #[cfg(feature = "v1_28")]
9905    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9906    pub fn gst_cpuid_supports_x86_sse3() -> gboolean;
9907    #[cfg(feature = "v1_28")]
9908    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9909    pub fn gst_cpuid_supports_x86_sse4_1() -> gboolean;
9910    #[cfg(feature = "v1_28")]
9911    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9912    pub fn gst_cpuid_supports_x86_sse4_2() -> gboolean;
9913    #[cfg(feature = "v1_28")]
9914    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9915    pub fn gst_cpuid_supports_x86_ssse3() -> gboolean;
9916    pub fn gst_debug_add_log_function(
9917        func: GstLogFunction,
9918        user_data: gpointer,
9919        notify: glib::GDestroyNotify,
9920    );
9921    pub fn gst_debug_add_ring_buffer_logger(max_size_per_thread: c_uint, thread_timeout: c_uint);
9922    pub fn gst_debug_bin_to_dot_data(
9923        bin: *mut GstBin,
9924        details: GstDebugGraphDetails,
9925    ) -> *mut c_char;
9926    pub fn gst_debug_bin_to_dot_file(
9927        bin: *mut GstBin,
9928        details: GstDebugGraphDetails,
9929        file_name: *const c_char,
9930    );
9931    pub fn gst_debug_bin_to_dot_file_with_ts(
9932        bin: *mut GstBin,
9933        details: GstDebugGraphDetails,
9934        file_name: *const c_char,
9935    );
9936    pub fn gst_debug_construct_term_color(colorinfo: c_uint) -> *mut c_char;
9937    pub fn gst_debug_construct_win_color(colorinfo: c_uint) -> c_int;
9938    pub fn gst_debug_get_all_categories() -> *mut glib::GSList;
9939    pub fn gst_debug_get_color_mode() -> GstDebugColorMode;
9940    pub fn gst_debug_get_default_threshold() -> GstDebugLevel;
9941    pub fn gst_debug_get_stack_trace(flags: GstStackTraceFlags) -> *mut c_char;
9942    pub fn gst_debug_is_active() -> gboolean;
9943    pub fn gst_debug_is_colored() -> gboolean;
9944    pub fn gst_debug_log(
9945        category: *mut GstDebugCategory,
9946        level: GstDebugLevel,
9947        file: *const c_char,
9948        function: *const c_char,
9949        line: c_int,
9950        object: *mut gobject::GObject,
9951        format: *const c_char,
9952        ...
9953    );
9954    pub fn gst_debug_log_default(
9955        category: *mut GstDebugCategory,
9956        level: GstDebugLevel,
9957        file: *const c_char,
9958        function: *const c_char,
9959        line: c_int,
9960        object: *mut gobject::GObject,
9961        message: *mut GstDebugMessage,
9962        user_data: gpointer,
9963    );
9964    #[cfg(feature = "v1_18")]
9965    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9966    pub fn gst_debug_log_get_line(
9967        category: *mut GstDebugCategory,
9968        level: GstDebugLevel,
9969        file: *const c_char,
9970        function: *const c_char,
9971        line: c_int,
9972        object: *mut gobject::GObject,
9973        message: *mut GstDebugMessage,
9974    ) -> *mut c_char;
9975    #[cfg(feature = "v1_22")]
9976    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9977    pub fn gst_debug_log_id(
9978        category: *mut GstDebugCategory,
9979        level: GstDebugLevel,
9980        file: *const c_char,
9981        function: *const c_char,
9982        line: c_int,
9983        id: *const c_char,
9984        format: *const c_char,
9985        ...
9986    );
9987    #[cfg(feature = "v1_22")]
9988    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9989    pub fn gst_debug_log_id_literal(
9990        category: *mut GstDebugCategory,
9991        level: GstDebugLevel,
9992        file: *const c_char,
9993        function: *const c_char,
9994        line: c_int,
9995        id: *const c_char,
9996        message_string: *const c_char,
9997    );
9998    #[cfg(feature = "v1_28")]
9999    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10000    pub fn gst_debug_log_id_literal_with_context(
10001        ctx: *mut GstLogContext,
10002        level: GstDebugLevel,
10003        file: *const c_char,
10004        function: *const c_char,
10005        line: c_int,
10006        id: *const c_char,
10007        message: *const c_char,
10008    );
10009    //#[cfg(feature = "v1_22")]
10010    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
10011    //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);
10012    #[cfg(feature = "v1_28")]
10013    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10014    pub fn gst_debug_log_id_with_context(
10015        ctx: *mut GstLogContext,
10016        level: GstDebugLevel,
10017        file: *const c_char,
10018        function: *const c_char,
10019        line: c_int,
10020        id: *const c_char,
10021        format: *const c_char,
10022        ...
10023    );
10024    //#[cfg(feature = "v1_28")]
10025    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10026    //pub fn gst_debug_log_id_with_context_valist(ctx: *mut GstLogContext, 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);
10027    #[cfg(feature = "v1_20")]
10028    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
10029    pub fn gst_debug_log_literal(
10030        category: *mut GstDebugCategory,
10031        level: GstDebugLevel,
10032        file: *const c_char,
10033        function: *const c_char,
10034        line: c_int,
10035        object: *mut gobject::GObject,
10036        message_string: *const c_char,
10037    );
10038    #[cfg(feature = "v1_28")]
10039    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10040    pub fn gst_debug_log_literal_with_context(
10041        ctx: *mut GstLogContext,
10042        level: GstDebugLevel,
10043        file: *const c_char,
10044        function: *const c_char,
10045        line: c_int,
10046        object: *mut gobject::GObject,
10047        message: *const c_char,
10048    );
10049    //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);
10050    #[cfg(feature = "v1_28")]
10051    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10052    pub fn gst_debug_log_with_context(
10053        ctx: *mut GstLogContext,
10054        level: GstDebugLevel,
10055        file: *const c_char,
10056        function: *const c_char,
10057        line: c_int,
10058        object: *mut gobject::GObject,
10059        format: *const c_char,
10060        ...
10061    );
10062    //#[cfg(feature = "v1_28")]
10063    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10064    //pub fn gst_debug_log_with_context_valist(ctx: *mut GstLogContext, 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);
10065    #[cfg(feature = "v1_26")]
10066    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
10067    pub fn gst_debug_print_object(ptr: gconstpointer) -> *mut c_char;
10068    #[cfg(feature = "v1_26")]
10069    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
10070    pub fn gst_debug_print_segment(segment: *const GstSegment) -> *mut c_char;
10071    pub fn gst_debug_print_stack_trace();
10072    pub fn gst_debug_remove_log_function(func: GstLogFunction) -> c_uint;
10073    pub fn gst_debug_remove_log_function_by_data(data: gpointer) -> c_uint;
10074    pub fn gst_debug_remove_ring_buffer_logger();
10075    pub fn gst_debug_ring_buffer_logger_get_logs() -> *mut *mut c_char;
10076    pub fn gst_debug_set_active(active: gboolean);
10077    pub fn gst_debug_set_color_mode(mode: GstDebugColorMode);
10078    pub fn gst_debug_set_color_mode_from_string(mode: *const c_char);
10079    pub fn gst_debug_set_colored(colored: gboolean);
10080    pub fn gst_debug_set_default_threshold(level: GstDebugLevel);
10081    pub fn gst_debug_set_threshold_for_name(name: *const c_char, level: GstDebugLevel);
10082    pub fn gst_debug_set_threshold_from_string(list: *const c_char, reset: gboolean);
10083    pub fn gst_debug_unset_threshold_for_name(name: *const c_char);
10084    pub fn gst_deinit();
10085    pub fn gst_dynamic_type_register(plugin: *mut GstPlugin, type_: GType) -> gboolean;
10086    pub fn gst_error_get_message(domain: glib::GQuark, code: c_int) -> *mut c_char;
10087    pub fn gst_filename_to_uri(
10088        filename: *const c_char,
10089        error: *mut *mut glib::GError,
10090    ) -> *mut c_char;
10091    pub fn gst_flow_get_name(ret: GstFlowReturn) -> *const c_char;
10092    pub fn gst_flow_to_quark(ret: GstFlowReturn) -> glib::GQuark;
10093    pub fn gst_formats_contains(formats: *const GstFormat, format: GstFormat) -> gboolean;
10094    pub fn gst_get_main_executable_path() -> *const c_char;
10095    pub fn gst_info_strdup_printf(format: *const c_char, ...) -> *mut c_char;
10096    //pub fn gst_info_strdup_vprintf(format: *const c_char, args: /*Unimplemented*/va_list) -> *mut c_char;
10097    //pub fn gst_info_vasprintf(result: *mut *mut c_char, format: *const c_char, args: /*Unimplemented*/va_list) -> c_int;
10098    pub fn gst_init(argc: *mut c_int, argv: *mut *mut *mut c_char);
10099    pub fn gst_init_check(
10100        argc: *mut c_int,
10101        argv: *mut *mut *mut c_char,
10102        error: *mut *mut glib::GError,
10103    ) -> gboolean;
10104    pub fn gst_init_get_option_group() -> *mut glib::GOptionGroup;
10105    pub fn gst_is_caps_features(obj: gconstpointer) -> gboolean;
10106    pub fn gst_is_initialized() -> gboolean;
10107    pub fn gst_make_element_message_details(name: *const c_char, ...) -> *mut GstStructure;
10108    pub fn gst_param_spec_array(
10109        name: *const c_char,
10110        nick: *const c_char,
10111        blurb: *const c_char,
10112        element_spec: *mut gobject::GParamSpec,
10113        flags: gobject::GParamFlags,
10114    ) -> *mut gobject::GParamSpec;
10115    pub fn gst_param_spec_fraction(
10116        name: *const c_char,
10117        nick: *const c_char,
10118        blurb: *const c_char,
10119        min_num: c_int,
10120        min_denom: c_int,
10121        max_num: c_int,
10122        max_denom: c_int,
10123        default_num: c_int,
10124        default_denom: c_int,
10125        flags: gobject::GParamFlags,
10126    ) -> *mut gobject::GParamSpec;
10127    pub fn gst_parent_buffer_meta_api_get_type() -> GType;
10128    pub fn gst_parse_bin_from_description(
10129        bin_description: *const c_char,
10130        ghost_unlinked_pads: gboolean,
10131        error: *mut *mut glib::GError,
10132    ) -> *mut GstBin;
10133    pub fn gst_parse_bin_from_description_full(
10134        bin_description: *const c_char,
10135        ghost_unlinked_pads: gboolean,
10136        context: *mut GstParseContext,
10137        flags: GstParseFlags,
10138        error: *mut *mut glib::GError,
10139    ) -> *mut GstElement;
10140    pub fn gst_parse_launch(
10141        pipeline_description: *const c_char,
10142        error: *mut *mut glib::GError,
10143    ) -> *mut GstElement;
10144    pub fn gst_parse_launch_full(
10145        pipeline_description: *const c_char,
10146        context: *mut GstParseContext,
10147        flags: GstParseFlags,
10148        error: *mut *mut glib::GError,
10149    ) -> *mut GstElement;
10150    pub fn gst_parse_launchv(
10151        argv: *mut *const c_char,
10152        error: *mut *mut glib::GError,
10153    ) -> *mut GstElement;
10154    pub fn gst_parse_launchv_full(
10155        argv: *mut *const c_char,
10156        context: *mut GstParseContext,
10157        flags: GstParseFlags,
10158        error: *mut *mut glib::GError,
10159    ) -> *mut GstElement;
10160    pub fn gst_print(format: *const c_char, ...);
10161    pub fn gst_printerr(format: *const c_char, ...);
10162    pub fn gst_printerrln(format: *const c_char, ...);
10163    pub fn gst_println(format: *const c_char, ...);
10164    pub fn gst_protection_filter_systems_by_available_decryptors(
10165        system_identifiers: *mut *const c_char,
10166    ) -> *mut *mut c_char;
10167    pub fn gst_protection_meta_api_get_type() -> GType;
10168    pub fn gst_protection_select_system(system_identifiers: *mut *const c_char) -> *const c_char;
10169    pub fn gst_reference_timestamp_meta_api_get_type() -> GType;
10170    pub fn gst_segtrap_is_enabled() -> gboolean;
10171    pub fn gst_segtrap_set_enabled(enabled: gboolean);
10172    pub fn gst_tag_exists(tag: *const c_char) -> gboolean;
10173    pub fn gst_tag_get_description(tag: *const c_char) -> *const c_char;
10174    pub fn gst_tag_get_flag(tag: *const c_char) -> GstTagFlag;
10175    pub fn gst_tag_get_nick(tag: *const c_char) -> *const c_char;
10176    pub fn gst_tag_get_type(tag: *const c_char) -> GType;
10177    pub fn gst_tag_is_fixed(tag: *const c_char) -> gboolean;
10178    pub fn gst_tag_merge_strings_with_comma(
10179        dest: *mut gobject::GValue,
10180        src: *const gobject::GValue,
10181    );
10182    pub fn gst_tag_merge_use_first(dest: *mut gobject::GValue, src: *const gobject::GValue);
10183    pub fn gst_tag_register(
10184        name: *const c_char,
10185        flag: GstTagFlag,
10186        type_: GType,
10187        nick: *const c_char,
10188        blurb: *const c_char,
10189        func: GstTagMergeFunc,
10190    );
10191    pub fn gst_tag_register_static(
10192        name: *const c_char,
10193        flag: GstTagFlag,
10194        type_: GType,
10195        nick: *const c_char,
10196        blurb: *const c_char,
10197        func: GstTagMergeFunc,
10198    );
10199    #[cfg(feature = "v1_18")]
10200    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
10201    pub fn gst_tracing_get_active_tracers() -> *mut glib::GList;
10202    pub fn gst_tracing_register_hook(
10203        tracer: *mut GstTracer,
10204        detail: *const c_char,
10205        func: gobject::GCallback,
10206    );
10207    #[cfg(feature = "v1_18")]
10208    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
10209    pub fn gst_type_is_plugin_api(type_: GType, flags: *mut GstPluginAPIFlags) -> gboolean;
10210    #[cfg(feature = "v1_18")]
10211    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
10212    pub fn gst_type_mark_as_plugin_api(type_: GType, flags: GstPluginAPIFlags);
10213    pub fn gst_update_registry() -> gboolean;
10214    pub fn gst_util_array_binary_search(
10215        array: gpointer,
10216        num_elements: c_uint,
10217        element_size: size_t,
10218        search_func: glib::GCompareDataFunc,
10219        mode: GstSearchMode,
10220        search_data: gconstpointer,
10221        user_data: gpointer,
10222    ) -> gpointer;
10223    #[cfg(feature = "v1_24")]
10224    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
10225    pub fn gst_util_ceil_log2(v: u32) -> c_uint;
10226    pub fn gst_util_double_to_fraction(src: c_double, dest_n: *mut c_int, dest_d: *mut c_int);
10227    pub fn gst_util_dump_buffer(buf: *mut GstBuffer);
10228    pub fn gst_util_dump_mem(mem: *const u8, size: c_uint);
10229    #[cfg(feature = "v1_24")]
10230    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
10231    pub fn gst_util_filename_compare(a: *const c_char, b: *const c_char) -> c_int;
10232    #[cfg(feature = "v1_26")]
10233    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
10234    pub fn gst_util_floor_log2(v: u32) -> c_uint;
10235    pub fn gst_util_fraction_add(
10236        a_n: c_int,
10237        a_d: c_int,
10238        b_n: c_int,
10239        b_d: c_int,
10240        res_n: *mut c_int,
10241        res_d: *mut c_int,
10242    ) -> gboolean;
10243    pub fn gst_util_fraction_compare(a_n: c_int, a_d: c_int, b_n: c_int, b_d: c_int) -> c_int;
10244    pub fn gst_util_fraction_multiply(
10245        a_n: c_int,
10246        a_d: c_int,
10247        b_n: c_int,
10248        b_d: c_int,
10249        res_n: *mut c_int,
10250        res_d: *mut c_int,
10251    ) -> gboolean;
10252    #[cfg(feature = "v1_26")]
10253    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
10254    pub fn gst_util_fraction_multiply_int64(
10255        a_n: i64,
10256        a_d: i64,
10257        b_n: i64,
10258        b_d: i64,
10259        res_n: *mut i64,
10260        res_d: *mut i64,
10261    ) -> gboolean;
10262    pub fn gst_util_fraction_to_double(src_n: c_int, src_d: c_int, dest: *mut c_double);
10263    pub fn gst_util_gdouble_to_guint64(value: c_double) -> u64;
10264    pub fn gst_util_get_object_array(
10265        object: *mut gobject::GObject,
10266        name: *const c_char,
10267        array: *mut *mut gobject::GValueArray,
10268    ) -> gboolean;
10269    pub fn gst_util_get_timestamp() -> GstClockTime;
10270    pub fn gst_util_greatest_common_divisor(a: c_int, b: c_int) -> c_int;
10271    pub fn gst_util_greatest_common_divisor_int64(a: i64, b: i64) -> i64;
10272    pub fn gst_util_group_id_next() -> c_uint;
10273    pub fn gst_util_guint64_to_gdouble(value: u64) -> c_double;
10274    pub fn gst_util_seqnum_compare(s1: u32, s2: u32) -> i32;
10275    pub fn gst_util_seqnum_next() -> u32;
10276    pub fn gst_util_set_object_arg(
10277        object: *mut gobject::GObject,
10278        name: *const c_char,
10279        value: *const c_char,
10280    );
10281    pub fn gst_util_set_object_array(
10282        object: *mut gobject::GObject,
10283        name: *const c_char,
10284        array: *const gobject::GValueArray,
10285    ) -> gboolean;
10286    pub fn gst_util_set_value_from_string(value: *mut gobject::GValue, value_str: *const c_char);
10287    #[cfg(feature = "v1_24")]
10288    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
10289    pub fn gst_util_simplify_fraction(
10290        numerator: *mut c_int,
10291        denominator: *mut c_int,
10292        n_terms: c_uint,
10293        threshold: c_uint,
10294    );
10295    pub fn gst_util_uint64_scale(val: u64, num: u64, denom: u64) -> u64;
10296    pub fn gst_util_uint64_scale_ceil(val: u64, num: u64, denom: u64) -> u64;
10297    pub fn gst_util_uint64_scale_int(val: u64, num: c_int, denom: c_int) -> u64;
10298    pub fn gst_util_uint64_scale_int_ceil(val: u64, num: c_int, denom: c_int) -> u64;
10299    pub fn gst_util_uint64_scale_int_round(val: u64, num: c_int, denom: c_int) -> u64;
10300    pub fn gst_util_uint64_scale_round(val: u64, num: u64, denom: u64) -> u64;
10301    pub fn gst_value_can_compare(
10302        value1: *const gobject::GValue,
10303        value2: *const gobject::GValue,
10304    ) -> gboolean;
10305    pub fn gst_value_can_intersect(
10306        value1: *const gobject::GValue,
10307        value2: *const gobject::GValue,
10308    ) -> gboolean;
10309    pub fn gst_value_can_subtract(
10310        minuend: *const gobject::GValue,
10311        subtrahend: *const gobject::GValue,
10312    ) -> gboolean;
10313    pub fn gst_value_can_union(
10314        value1: *const gobject::GValue,
10315        value2: *const gobject::GValue,
10316    ) -> gboolean;
10317    pub fn gst_value_compare(
10318        value1: *const gobject::GValue,
10319        value2: *const gobject::GValue,
10320    ) -> c_int;
10321    pub fn gst_value_deserialize(dest: *mut gobject::GValue, src: *const c_char) -> gboolean;
10322    #[cfg(feature = "v1_20")]
10323    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
10324    pub fn gst_value_deserialize_with_pspec(
10325        dest: *mut gobject::GValue,
10326        src: *const c_char,
10327        pspec: *mut gobject::GParamSpec,
10328    ) -> gboolean;
10329    pub fn gst_value_fixate(dest: *mut gobject::GValue, src: *const gobject::GValue) -> gboolean;
10330    pub fn gst_value_fraction_multiply(
10331        product: *mut gobject::GValue,
10332        factor1: *const gobject::GValue,
10333        factor2: *const gobject::GValue,
10334    ) -> gboolean;
10335    pub fn gst_value_fraction_subtract(
10336        dest: *mut gobject::GValue,
10337        minuend: *const gobject::GValue,
10338        subtrahend: *const gobject::GValue,
10339    ) -> gboolean;
10340    pub fn gst_value_get_bitmask(value: *const gobject::GValue) -> u64;
10341    pub fn gst_value_get_caps(value: *const gobject::GValue) -> *const GstCaps;
10342    pub fn gst_value_get_caps_features(value: *const gobject::GValue) -> *const GstCapsFeatures;
10343    pub fn gst_value_get_double_range_max(value: *const gobject::GValue) -> c_double;
10344    pub fn gst_value_get_double_range_min(value: *const gobject::GValue) -> c_double;
10345    pub fn gst_value_get_flagset_flags(value: *const gobject::GValue) -> c_uint;
10346    pub fn gst_value_get_flagset_mask(value: *const gobject::GValue) -> c_uint;
10347    pub fn gst_value_get_fraction_denominator(value: *const gobject::GValue) -> c_int;
10348    pub fn gst_value_get_fraction_numerator(value: *const gobject::GValue) -> c_int;
10349    pub fn gst_value_get_fraction_range_max(
10350        value: *const gobject::GValue,
10351    ) -> *const gobject::GValue;
10352    pub fn gst_value_get_fraction_range_min(
10353        value: *const gobject::GValue,
10354    ) -> *const gobject::GValue;
10355    pub fn gst_value_get_int64_range_max(value: *const gobject::GValue) -> i64;
10356    pub fn gst_value_get_int64_range_min(value: *const gobject::GValue) -> i64;
10357    pub fn gst_value_get_int64_range_step(value: *const gobject::GValue) -> i64;
10358    pub fn gst_value_get_int_range_max(value: *const gobject::GValue) -> c_int;
10359    pub fn gst_value_get_int_range_min(value: *const gobject::GValue) -> c_int;
10360    pub fn gst_value_get_int_range_step(value: *const gobject::GValue) -> c_int;
10361    pub fn gst_value_get_structure(value: *const gobject::GValue) -> *const GstStructure;
10362    #[cfg(feature = "v1_28")]
10363    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10364    pub fn gst_value_hash(value: *const gobject::GValue, res: *mut c_uint) -> gboolean;
10365    pub fn gst_value_init_and_copy(dest: *mut gobject::GValue, src: *const gobject::GValue);
10366    pub fn gst_value_intersect(
10367        dest: *mut gobject::GValue,
10368        value1: *const gobject::GValue,
10369        value2: *const gobject::GValue,
10370    ) -> gboolean;
10371    pub fn gst_value_is_fixed(value: *const gobject::GValue) -> gboolean;
10372    pub fn gst_value_is_subset(
10373        value1: *const gobject::GValue,
10374        value2: *const gobject::GValue,
10375    ) -> gboolean;
10376    pub fn gst_value_register(table: *const GstValueTable);
10377    pub fn gst_value_serialize(value: *const gobject::GValue) -> *mut c_char;
10378    pub fn gst_value_set_bitmask(value: *mut gobject::GValue, bitmask: u64);
10379    pub fn gst_value_set_caps(value: *mut gobject::GValue, caps: *const GstCaps);
10380    pub fn gst_value_set_caps_features(
10381        value: *mut gobject::GValue,
10382        features: *const GstCapsFeatures,
10383    );
10384    pub fn gst_value_set_double_range(value: *mut gobject::GValue, start: c_double, end: c_double);
10385    pub fn gst_value_set_flagset(value: *mut gobject::GValue, flags: c_uint, mask: c_uint);
10386    pub fn gst_value_set_fraction(
10387        value: *mut gobject::GValue,
10388        numerator: c_int,
10389        denominator: c_int,
10390    );
10391    pub fn gst_value_set_fraction_range(
10392        value: *mut gobject::GValue,
10393        start: *const gobject::GValue,
10394        end: *const gobject::GValue,
10395    );
10396    pub fn gst_value_set_fraction_range_full(
10397        value: *mut gobject::GValue,
10398        numerator_start: c_int,
10399        denominator_start: c_int,
10400        numerator_end: c_int,
10401        denominator_end: c_int,
10402    );
10403    pub fn gst_value_set_int64_range(value: *mut gobject::GValue, start: i64, end: i64);
10404    pub fn gst_value_set_int64_range_step(
10405        value: *mut gobject::GValue,
10406        start: i64,
10407        end: i64,
10408        step: i64,
10409    );
10410    pub fn gst_value_set_int_range(value: *mut gobject::GValue, start: c_int, end: c_int);
10411    pub fn gst_value_set_int_range_step(
10412        value: *mut gobject::GValue,
10413        start: c_int,
10414        end: c_int,
10415        step: c_int,
10416    );
10417    pub fn gst_value_set_structure(value: *mut gobject::GValue, structure: *const GstStructure);
10418    pub fn gst_value_subtract(
10419        dest: *mut gobject::GValue,
10420        minuend: *const gobject::GValue,
10421        subtrahend: *const gobject::GValue,
10422    ) -> gboolean;
10423    pub fn gst_value_union(
10424        dest: *mut gobject::GValue,
10425        value1: *const gobject::GValue,
10426        value2: *const gobject::GValue,
10427    ) -> gboolean;
10428    pub fn gst_version(
10429        major: *mut c_uint,
10430        minor: *mut c_uint,
10431        micro: *mut c_uint,
10432        nano: *mut c_uint,
10433    );
10434    pub fn gst_version_string() -> *mut c_char;
10435
10436}