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;
42pub type GstTraceSpanId = u64;
43
44// Enums
45pub type GstBufferingMode = c_int;
46pub const GST_BUFFERING_STREAM: GstBufferingMode = 0;
47pub const GST_BUFFERING_DOWNLOAD: GstBufferingMode = 1;
48pub const GST_BUFFERING_TIMESHIFT: GstBufferingMode = 2;
49pub const GST_BUFFERING_LIVE: GstBufferingMode = 3;
50
51pub type GstBusSyncReply = c_int;
52pub const GST_BUS_DROP: GstBusSyncReply = 0;
53pub const GST_BUS_PASS: GstBusSyncReply = 1;
54pub const GST_BUS_ASYNC: GstBusSyncReply = 2;
55
56pub type GstCapsIntersectMode = c_int;
57pub const GST_CAPS_INTERSECT_ZIG_ZAG: GstCapsIntersectMode = 0;
58pub const GST_CAPS_INTERSECT_FIRST: GstCapsIntersectMode = 1;
59
60pub type GstClockEntryType = c_int;
61pub const GST_CLOCK_ENTRY_SINGLE: GstClockEntryType = 0;
62pub const GST_CLOCK_ENTRY_PERIODIC: GstClockEntryType = 1;
63
64pub type GstClockReturn = c_int;
65pub const GST_CLOCK_OK: GstClockReturn = 0;
66pub const GST_CLOCK_EARLY: GstClockReturn = 1;
67pub const GST_CLOCK_UNSCHEDULED: GstClockReturn = 2;
68pub const GST_CLOCK_BUSY: GstClockReturn = 3;
69pub const GST_CLOCK_BADTIME: GstClockReturn = 4;
70pub const GST_CLOCK_ERROR: GstClockReturn = 5;
71pub const GST_CLOCK_UNSUPPORTED: GstClockReturn = 6;
72pub const GST_CLOCK_DONE: GstClockReturn = 7;
73
74pub type GstClockType = c_int;
75pub const GST_CLOCK_TYPE_REALTIME: GstClockType = 0;
76pub const GST_CLOCK_TYPE_MONOTONIC: GstClockType = 1;
77pub const GST_CLOCK_TYPE_OTHER: GstClockType = 2;
78pub const GST_CLOCK_TYPE_TAI: GstClockType = 3;
79
80pub type GstCoreError = c_int;
81pub const GST_CORE_ERROR_FAILED: GstCoreError = 1;
82pub const GST_CORE_ERROR_TOO_LAZY: GstCoreError = 2;
83pub const GST_CORE_ERROR_NOT_IMPLEMENTED: GstCoreError = 3;
84pub const GST_CORE_ERROR_STATE_CHANGE: GstCoreError = 4;
85pub const GST_CORE_ERROR_PAD: GstCoreError = 5;
86pub const GST_CORE_ERROR_THREAD: GstCoreError = 6;
87pub const GST_CORE_ERROR_NEGOTIATION: GstCoreError = 7;
88pub const GST_CORE_ERROR_EVENT: GstCoreError = 8;
89pub const GST_CORE_ERROR_SEEK: GstCoreError = 9;
90pub const GST_CORE_ERROR_CAPS: GstCoreError = 10;
91pub const GST_CORE_ERROR_TAG: GstCoreError = 11;
92pub const GST_CORE_ERROR_MISSING_PLUGIN: GstCoreError = 12;
93pub const GST_CORE_ERROR_CLOCK: GstCoreError = 13;
94pub const GST_CORE_ERROR_DISABLED: GstCoreError = 14;
95pub const GST_CORE_ERROR_NUM_ERRORS: GstCoreError = 15;
96
97pub type GstDebugColorMode = c_int;
98pub const GST_DEBUG_COLOR_MODE_OFF: GstDebugColorMode = 0;
99pub const GST_DEBUG_COLOR_MODE_ON: GstDebugColorMode = 1;
100pub const GST_DEBUG_COLOR_MODE_UNIX: GstDebugColorMode = 2;
101
102pub type GstDebugLevel = c_int;
103pub const GST_LEVEL_NONE: GstDebugLevel = 0;
104pub const GST_LEVEL_ERROR: GstDebugLevel = 1;
105pub const GST_LEVEL_WARNING: GstDebugLevel = 2;
106pub const GST_LEVEL_FIXME: GstDebugLevel = 3;
107pub const GST_LEVEL_INFO: GstDebugLevel = 4;
108pub const GST_LEVEL_DEBUG: GstDebugLevel = 5;
109pub const GST_LEVEL_LOG: GstDebugLevel = 6;
110pub const GST_LEVEL_TRACE: GstDebugLevel = 7;
111pub const GST_LEVEL_MEMDUMP: GstDebugLevel = 9;
112pub const GST_LEVEL_COUNT: GstDebugLevel = 10;
113
114pub type GstEventType = c_int;
115pub const GST_EVENT_UNKNOWN: GstEventType = 0;
116pub const GST_EVENT_FLUSH_START: GstEventType = 2563;
117pub const GST_EVENT_FLUSH_STOP: GstEventType = 5127;
118pub const GST_EVENT_STREAM_START: GstEventType = 10254;
119pub const GST_EVENT_CAPS: GstEventType = 12814;
120pub const GST_EVENT_SEGMENT: GstEventType = 17934;
121pub const GST_EVENT_STREAM_COLLECTION: GstEventType = 19230;
122pub const GST_EVENT_TAG: GstEventType = 20510;
123pub const GST_EVENT_BUFFERSIZE: GstEventType = 23054;
124pub const GST_EVENT_SINK_MESSAGE: GstEventType = 25630;
125pub const GST_EVENT_STREAM_GROUP_DONE: GstEventType = 26894;
126pub const GST_EVENT_EOS: GstEventType = 28174;
127pub const GST_EVENT_TOC: GstEventType = 30750;
128pub const GST_EVENT_PROTECTION: GstEventType = 33310;
129pub const GST_EVENT_SEGMENT_DONE: GstEventType = 38406;
130pub const GST_EVENT_GAP: GstEventType = 40966;
131pub const GST_EVENT_INSTANT_RATE_CHANGE: GstEventType = 46090;
132pub const GST_EVENT_QOS: GstEventType = 48641;
133pub const GST_EVENT_SEEK: GstEventType = 51201;
134pub const GST_EVENT_NAVIGATION: GstEventType = 53761;
135pub const GST_EVENT_LATENCY: GstEventType = 56321;
136pub const GST_EVENT_STEP: GstEventType = 58881;
137pub const GST_EVENT_RECONFIGURE: GstEventType = 61441;
138pub const GST_EVENT_TOC_SELECT: GstEventType = 64001;
139pub const GST_EVENT_SELECT_STREAMS: GstEventType = 66561;
140pub const GST_EVENT_INSTANT_RATE_SYNC_TIME: GstEventType = 66817;
141pub const GST_EVENT_CUSTOM_UPSTREAM: GstEventType = 69121;
142pub const GST_EVENT_CUSTOM_DOWNSTREAM: GstEventType = 71686;
143pub const GST_EVENT_CUSTOM_DOWNSTREAM_OOB: GstEventType = 74242;
144pub const GST_EVENT_CUSTOM_DOWNSTREAM_STICKY: GstEventType = 76830;
145pub const GST_EVENT_CUSTOM_BOTH: GstEventType = 79367;
146pub const GST_EVENT_CUSTOM_BOTH_OOB: GstEventType = 81923;
147
148pub type GstFlowReturn = c_int;
149pub const GST_FLOW_CUSTOM_SUCCESS_2: GstFlowReturn = 102;
150pub const GST_FLOW_CUSTOM_SUCCESS_1: GstFlowReturn = 101;
151pub const GST_FLOW_CUSTOM_SUCCESS: GstFlowReturn = 100;
152pub const GST_FLOW_OK: GstFlowReturn = 0;
153pub const GST_FLOW_NOT_LINKED: GstFlowReturn = -1;
154pub const GST_FLOW_FLUSHING: GstFlowReturn = -2;
155pub const GST_FLOW_EOS: GstFlowReturn = -3;
156pub const GST_FLOW_NOT_NEGOTIATED: GstFlowReturn = -4;
157pub const GST_FLOW_ERROR: GstFlowReturn = -5;
158pub const GST_FLOW_NOT_SUPPORTED: GstFlowReturn = -6;
159pub const GST_FLOW_CUSTOM_ERROR: GstFlowReturn = -100;
160pub const GST_FLOW_CUSTOM_ERROR_1: GstFlowReturn = -101;
161pub const GST_FLOW_CUSTOM_ERROR_2: GstFlowReturn = -102;
162
163pub type GstFormat = c_int;
164pub const GST_FORMAT_UNDEFINED: GstFormat = 0;
165pub const GST_FORMAT_DEFAULT: GstFormat = 1;
166pub const GST_FORMAT_BYTES: GstFormat = 2;
167pub const GST_FORMAT_TIME: GstFormat = 3;
168pub const GST_FORMAT_BUFFERS: GstFormat = 4;
169pub const GST_FORMAT_PERCENT: GstFormat = 5;
170
171pub type GstIteratorItem = c_int;
172pub const GST_ITERATOR_ITEM_SKIP: GstIteratorItem = 0;
173pub const GST_ITERATOR_ITEM_PASS: GstIteratorItem = 1;
174pub const GST_ITERATOR_ITEM_END: GstIteratorItem = 2;
175
176pub type GstIteratorResult = c_int;
177pub const GST_ITERATOR_DONE: GstIteratorResult = 0;
178pub const GST_ITERATOR_OK: GstIteratorResult = 1;
179pub const GST_ITERATOR_RESYNC: GstIteratorResult = 2;
180pub const GST_ITERATOR_ERROR: GstIteratorResult = 3;
181
182pub type GstLibraryError = c_int;
183pub const GST_LIBRARY_ERROR_FAILED: GstLibraryError = 1;
184pub const GST_LIBRARY_ERROR_TOO_LAZY: GstLibraryError = 2;
185pub const GST_LIBRARY_ERROR_INIT: GstLibraryError = 3;
186pub const GST_LIBRARY_ERROR_SHUTDOWN: GstLibraryError = 4;
187pub const GST_LIBRARY_ERROR_SETTINGS: GstLibraryError = 5;
188pub const GST_LIBRARY_ERROR_ENCODE: GstLibraryError = 6;
189pub const GST_LIBRARY_ERROR_NUM_ERRORS: GstLibraryError = 7;
190
191pub type GstPadDirection = c_int;
192pub const GST_PAD_UNKNOWN: GstPadDirection = 0;
193pub const GST_PAD_SRC: GstPadDirection = 1;
194pub const GST_PAD_SINK: GstPadDirection = 2;
195
196pub type GstPadLinkReturn = c_int;
197pub const GST_PAD_LINK_OK: GstPadLinkReturn = 0;
198pub const GST_PAD_LINK_WRONG_HIERARCHY: GstPadLinkReturn = -1;
199pub const GST_PAD_LINK_WAS_LINKED: GstPadLinkReturn = -2;
200pub const GST_PAD_LINK_WRONG_DIRECTION: GstPadLinkReturn = -3;
201pub const GST_PAD_LINK_NOFORMAT: GstPadLinkReturn = -4;
202pub const GST_PAD_LINK_NOSCHED: GstPadLinkReturn = -5;
203pub const GST_PAD_LINK_REFUSED: GstPadLinkReturn = -6;
204
205pub type GstPadMode = c_int;
206pub const GST_PAD_MODE_NONE: GstPadMode = 0;
207pub const GST_PAD_MODE_PUSH: GstPadMode = 1;
208pub const GST_PAD_MODE_PULL: GstPadMode = 2;
209
210pub type GstPadPresence = c_int;
211pub const GST_PAD_ALWAYS: GstPadPresence = 0;
212pub const GST_PAD_SOMETIMES: GstPadPresence = 1;
213pub const GST_PAD_REQUEST: GstPadPresence = 2;
214
215pub type GstPadProbeReturn = c_int;
216pub const GST_PAD_PROBE_DROP: GstPadProbeReturn = 0;
217pub const GST_PAD_PROBE_OK: GstPadProbeReturn = 1;
218pub const GST_PAD_PROBE_REMOVE: GstPadProbeReturn = 2;
219pub const GST_PAD_PROBE_PASS: GstPadProbeReturn = 3;
220pub const GST_PAD_PROBE_HANDLED: GstPadProbeReturn = 4;
221
222pub type GstParseError = c_int;
223pub const GST_PARSE_ERROR_SYNTAX: GstParseError = 0;
224pub const GST_PARSE_ERROR_NO_SUCH_ELEMENT: GstParseError = 1;
225pub const GST_PARSE_ERROR_NO_SUCH_PROPERTY: GstParseError = 2;
226pub const GST_PARSE_ERROR_LINK: GstParseError = 3;
227pub const GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY: GstParseError = 4;
228pub const GST_PARSE_ERROR_EMPTY_BIN: GstParseError = 5;
229pub const GST_PARSE_ERROR_EMPTY: GstParseError = 6;
230pub const GST_PARSE_ERROR_DELAYED_LINK: GstParseError = 7;
231
232pub type GstPluginError = c_int;
233pub const GST_PLUGIN_ERROR_MODULE: GstPluginError = 0;
234pub const GST_PLUGIN_ERROR_DEPENDENCIES: GstPluginError = 1;
235pub const GST_PLUGIN_ERROR_NAME_MISMATCH: GstPluginError = 2;
236
237pub type GstProgressType = c_int;
238pub const GST_PROGRESS_TYPE_START: GstProgressType = 0;
239pub const GST_PROGRESS_TYPE_CONTINUE: GstProgressType = 1;
240pub const GST_PROGRESS_TYPE_COMPLETE: GstProgressType = 2;
241pub const GST_PROGRESS_TYPE_CANCELED: GstProgressType = 3;
242pub const GST_PROGRESS_TYPE_ERROR: GstProgressType = 4;
243
244pub type GstPromiseResult = c_int;
245pub const GST_PROMISE_RESULT_PENDING: GstPromiseResult = 0;
246pub const GST_PROMISE_RESULT_INTERRUPTED: GstPromiseResult = 1;
247pub const GST_PROMISE_RESULT_REPLIED: GstPromiseResult = 2;
248pub const GST_PROMISE_RESULT_EXPIRED: GstPromiseResult = 3;
249
250pub type GstQOSType = c_int;
251pub const GST_QOS_TYPE_OVERFLOW: GstQOSType = 0;
252pub const GST_QOS_TYPE_UNDERFLOW: GstQOSType = 1;
253pub const GST_QOS_TYPE_THROTTLE: GstQOSType = 2;
254
255pub type GstQueryType = c_int;
256pub const GST_QUERY_UNKNOWN: GstQueryType = 0;
257pub const GST_QUERY_POSITION: GstQueryType = 2563;
258pub const GST_QUERY_DURATION: GstQueryType = 5123;
259pub const GST_QUERY_LATENCY: GstQueryType = 7683;
260pub const GST_QUERY_JITTER: GstQueryType = 10243;
261pub const GST_QUERY_RATE: GstQueryType = 12803;
262pub const GST_QUERY_SEEKING: GstQueryType = 15363;
263pub const GST_QUERY_SEGMENT: GstQueryType = 17923;
264pub const GST_QUERY_CONVERT: GstQueryType = 20483;
265pub const GST_QUERY_FORMATS: GstQueryType = 23043;
266pub const GST_QUERY_BUFFERING: GstQueryType = 28163;
267pub const GST_QUERY_CUSTOM: GstQueryType = 30723;
268pub const GST_QUERY_URI: GstQueryType = 33283;
269pub const GST_QUERY_ALLOCATION: GstQueryType = 35846;
270pub const GST_QUERY_SCHEDULING: GstQueryType = 38401;
271pub const GST_QUERY_ACCEPT_CAPS: GstQueryType = 40963;
272pub const GST_QUERY_CAPS: GstQueryType = 43523;
273pub const GST_QUERY_DRAIN: GstQueryType = 46086;
274pub const GST_QUERY_CONTEXT: GstQueryType = 48643;
275pub const GST_QUERY_BITRATE: GstQueryType = 51202;
276#[cfg(feature = "v1_22")]
277#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
278pub const GST_QUERY_SELECTABLE: GstQueryType = 53763;
279
280pub type GstRank = c_int;
281pub const GST_RANK_NONE: GstRank = 0;
282pub const GST_RANK_MARGINAL: GstRank = 64;
283pub const GST_RANK_SECONDARY: GstRank = 128;
284pub const GST_RANK_PRIMARY: GstRank = 256;
285
286pub type GstResourceError = c_int;
287pub const GST_RESOURCE_ERROR_FAILED: GstResourceError = 1;
288pub const GST_RESOURCE_ERROR_TOO_LAZY: GstResourceError = 2;
289pub const GST_RESOURCE_ERROR_NOT_FOUND: GstResourceError = 3;
290pub const GST_RESOURCE_ERROR_BUSY: GstResourceError = 4;
291pub const GST_RESOURCE_ERROR_OPEN_READ: GstResourceError = 5;
292pub const GST_RESOURCE_ERROR_OPEN_WRITE: GstResourceError = 6;
293pub const GST_RESOURCE_ERROR_OPEN_READ_WRITE: GstResourceError = 7;
294pub const GST_RESOURCE_ERROR_CLOSE: GstResourceError = 8;
295pub const GST_RESOURCE_ERROR_READ: GstResourceError = 9;
296pub const GST_RESOURCE_ERROR_WRITE: GstResourceError = 10;
297pub const GST_RESOURCE_ERROR_SEEK: GstResourceError = 11;
298pub const GST_RESOURCE_ERROR_SYNC: GstResourceError = 12;
299pub const GST_RESOURCE_ERROR_SETTINGS: GstResourceError = 13;
300pub const GST_RESOURCE_ERROR_NO_SPACE_LEFT: GstResourceError = 14;
301pub const GST_RESOURCE_ERROR_NOT_AUTHORIZED: GstResourceError = 15;
302pub const GST_RESOURCE_ERROR_NUM_ERRORS: GstResourceError = 16;
303
304pub type GstSearchMode = c_int;
305pub const GST_SEARCH_MODE_EXACT: GstSearchMode = 0;
306pub const GST_SEARCH_MODE_BEFORE: GstSearchMode = 1;
307pub const GST_SEARCH_MODE_AFTER: GstSearchMode = 2;
308
309pub type GstSeekType = c_int;
310pub const GST_SEEK_TYPE_NONE: GstSeekType = 0;
311pub const GST_SEEK_TYPE_SET: GstSeekType = 1;
312pub const GST_SEEK_TYPE_END: GstSeekType = 2;
313
314pub type GstState = c_int;
315pub const GST_STATE_VOID_PENDING: GstState = 0;
316pub const GST_STATE_NULL: GstState = 1;
317pub const GST_STATE_READY: GstState = 2;
318pub const GST_STATE_PAUSED: GstState = 3;
319pub const GST_STATE_PLAYING: GstState = 4;
320
321pub type GstStateChange = c_int;
322pub const GST_STATE_CHANGE_NULL_TO_READY: GstStateChange = 10;
323pub const GST_STATE_CHANGE_READY_TO_PAUSED: GstStateChange = 19;
324pub const GST_STATE_CHANGE_PAUSED_TO_PLAYING: GstStateChange = 28;
325pub const GST_STATE_CHANGE_PLAYING_TO_PAUSED: GstStateChange = 35;
326pub const GST_STATE_CHANGE_PAUSED_TO_READY: GstStateChange = 26;
327pub const GST_STATE_CHANGE_READY_TO_NULL: GstStateChange = 17;
328pub const GST_STATE_CHANGE_NULL_TO_NULL: GstStateChange = 9;
329pub const GST_STATE_CHANGE_READY_TO_READY: GstStateChange = 18;
330pub const GST_STATE_CHANGE_PAUSED_TO_PAUSED: GstStateChange = 27;
331pub const GST_STATE_CHANGE_PLAYING_TO_PLAYING: GstStateChange = 36;
332
333pub type GstStateChangeReturn = c_int;
334pub const GST_STATE_CHANGE_FAILURE: GstStateChangeReturn = 0;
335pub const GST_STATE_CHANGE_SUCCESS: GstStateChangeReturn = 1;
336pub const GST_STATE_CHANGE_ASYNC: GstStateChangeReturn = 2;
337pub const GST_STATE_CHANGE_NO_PREROLL: GstStateChangeReturn = 3;
338
339pub type GstStreamError = c_int;
340pub const GST_STREAM_ERROR_FAILED: GstStreamError = 1;
341pub const GST_STREAM_ERROR_TOO_LAZY: GstStreamError = 2;
342pub const GST_STREAM_ERROR_NOT_IMPLEMENTED: GstStreamError = 3;
343pub const GST_STREAM_ERROR_TYPE_NOT_FOUND: GstStreamError = 4;
344pub const GST_STREAM_ERROR_WRONG_TYPE: GstStreamError = 5;
345pub const GST_STREAM_ERROR_CODEC_NOT_FOUND: GstStreamError = 6;
346pub const GST_STREAM_ERROR_DECODE: GstStreamError = 7;
347pub const GST_STREAM_ERROR_ENCODE: GstStreamError = 8;
348pub const GST_STREAM_ERROR_DEMUX: GstStreamError = 9;
349pub const GST_STREAM_ERROR_MUX: GstStreamError = 10;
350pub const GST_STREAM_ERROR_FORMAT: GstStreamError = 11;
351pub const GST_STREAM_ERROR_DECRYPT: GstStreamError = 12;
352pub const GST_STREAM_ERROR_DECRYPT_NOKEY: GstStreamError = 13;
353pub const GST_STREAM_ERROR_NUM_ERRORS: GstStreamError = 14;
354
355pub type GstStreamStatusType = c_int;
356pub const GST_STREAM_STATUS_TYPE_CREATE: GstStreamStatusType = 0;
357pub const GST_STREAM_STATUS_TYPE_ENTER: GstStreamStatusType = 1;
358pub const GST_STREAM_STATUS_TYPE_LEAVE: GstStreamStatusType = 2;
359pub const GST_STREAM_STATUS_TYPE_DESTROY: GstStreamStatusType = 3;
360pub const GST_STREAM_STATUS_TYPE_START: GstStreamStatusType = 8;
361pub const GST_STREAM_STATUS_TYPE_PAUSE: GstStreamStatusType = 9;
362pub const GST_STREAM_STATUS_TYPE_STOP: GstStreamStatusType = 10;
363
364pub type GstStructureChangeType = c_int;
365pub const GST_STRUCTURE_CHANGE_TYPE_PAD_LINK: GstStructureChangeType = 0;
366pub const GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK: GstStructureChangeType = 1;
367
368pub type GstTagFlag = c_int;
369pub const GST_TAG_FLAG_UNDEFINED: GstTagFlag = 0;
370pub const GST_TAG_FLAG_META: GstTagFlag = 1;
371pub const GST_TAG_FLAG_ENCODED: GstTagFlag = 2;
372pub const GST_TAG_FLAG_DECODED: GstTagFlag = 3;
373pub const GST_TAG_FLAG_COUNT: GstTagFlag = 4;
374
375pub type GstTagMergeMode = c_int;
376pub const GST_TAG_MERGE_UNDEFINED: GstTagMergeMode = 0;
377pub const GST_TAG_MERGE_REPLACE_ALL: GstTagMergeMode = 1;
378pub const GST_TAG_MERGE_REPLACE: GstTagMergeMode = 2;
379pub const GST_TAG_MERGE_APPEND: GstTagMergeMode = 3;
380pub const GST_TAG_MERGE_PREPEND: GstTagMergeMode = 4;
381pub const GST_TAG_MERGE_KEEP: GstTagMergeMode = 5;
382pub const GST_TAG_MERGE_KEEP_ALL: GstTagMergeMode = 6;
383pub const GST_TAG_MERGE_COUNT: GstTagMergeMode = 7;
384
385pub type GstTagScope = c_int;
386pub const GST_TAG_SCOPE_STREAM: GstTagScope = 0;
387pub const GST_TAG_SCOPE_GLOBAL: GstTagScope = 1;
388
389pub type GstTaskState = c_int;
390pub const GST_TASK_STARTED: GstTaskState = 0;
391pub const GST_TASK_STOPPED: GstTaskState = 1;
392pub const GST_TASK_PAUSED: GstTaskState = 2;
393
394pub type GstTocEntryType = c_int;
395pub const GST_TOC_ENTRY_TYPE_ANGLE: GstTocEntryType = -3;
396pub const GST_TOC_ENTRY_TYPE_VERSION: GstTocEntryType = -2;
397pub const GST_TOC_ENTRY_TYPE_EDITION: GstTocEntryType = -1;
398pub const GST_TOC_ENTRY_TYPE_INVALID: GstTocEntryType = 0;
399pub const GST_TOC_ENTRY_TYPE_TITLE: GstTocEntryType = 1;
400pub const GST_TOC_ENTRY_TYPE_TRACK: GstTocEntryType = 2;
401pub const GST_TOC_ENTRY_TYPE_CHAPTER: GstTocEntryType = 3;
402
403pub type GstTocLoopType = c_int;
404pub const GST_TOC_LOOP_NONE: GstTocLoopType = 0;
405pub const GST_TOC_LOOP_FORWARD: GstTocLoopType = 1;
406pub const GST_TOC_LOOP_REVERSE: GstTocLoopType = 2;
407pub const GST_TOC_LOOP_PING_PONG: GstTocLoopType = 3;
408
409pub type GstTocScope = c_int;
410pub const GST_TOC_SCOPE_GLOBAL: GstTocScope = 1;
411pub const GST_TOC_SCOPE_CURRENT: GstTocScope = 2;
412
413pub type GstTracerFieldType = c_int;
414pub const GST_TRACER_FIELD_TYPE_BOOLEAN: GstTracerFieldType = 0;
415pub const GST_TRACER_FIELD_TYPE_INT: GstTracerFieldType = 1;
416pub const GST_TRACER_FIELD_TYPE_UINT: GstTracerFieldType = 2;
417pub const GST_TRACER_FIELD_TYPE_INT64: GstTracerFieldType = 3;
418pub const GST_TRACER_FIELD_TYPE_UINT64: GstTracerFieldType = 4;
419pub const GST_TRACER_FIELD_TYPE_DOUBLE: GstTracerFieldType = 5;
420pub const GST_TRACER_FIELD_TYPE_STRING: GstTracerFieldType = 6;
421pub const GST_TRACER_FIELD_TYPE_CLOCK_TIME: GstTracerFieldType = 7;
422pub const GST_TRACER_FIELD_TYPE_STRUCTURE: GstTracerFieldType = 8;
423pub const GST_TRACER_FIELD_TYPE_OBJECT: GstTracerFieldType = 9;
424
425pub type GstTracerValueScope = c_int;
426pub const GST_TRACER_VALUE_SCOPE_PROCESS: GstTracerValueScope = 0;
427pub const GST_TRACER_VALUE_SCOPE_THREAD: GstTracerValueScope = 1;
428pub const GST_TRACER_VALUE_SCOPE_ELEMENT: GstTracerValueScope = 2;
429pub const GST_TRACER_VALUE_SCOPE_PAD: GstTracerValueScope = 3;
430
431pub type GstTypeFindProbability = c_int;
432pub const GST_TYPE_FIND_NONE: GstTypeFindProbability = 0;
433pub const GST_TYPE_FIND_MINIMUM: GstTypeFindProbability = 1;
434pub const GST_TYPE_FIND_POSSIBLE: GstTypeFindProbability = 50;
435pub const GST_TYPE_FIND_LIKELY: GstTypeFindProbability = 80;
436pub const GST_TYPE_FIND_NEARLY_CERTAIN: GstTypeFindProbability = 99;
437pub const GST_TYPE_FIND_MAXIMUM: GstTypeFindProbability = 100;
438
439pub type GstURIError = c_int;
440pub const GST_URI_ERROR_UNSUPPORTED_PROTOCOL: GstURIError = 0;
441pub const GST_URI_ERROR_BAD_URI: GstURIError = 1;
442pub const GST_URI_ERROR_BAD_STATE: GstURIError = 2;
443pub const GST_URI_ERROR_BAD_REFERENCE: GstURIError = 3;
444
445pub type GstURIType = c_int;
446pub const GST_URI_UNKNOWN: GstURIType = 0;
447pub const GST_URI_SINK: GstURIType = 1;
448pub const GST_URI_SRC: GstURIType = 2;
449
450// Constants
451pub const GST_ALLOCATOR_SYSMEM: &[u8] = b"SystemMemory\0";
452pub const GST_BUFFER_COPY_ALL: GstBufferCopyFlags = 15;
453pub const GST_BUFFER_COPY_METADATA: GstBufferCopyFlags = 7;
454pub const GST_BUFFER_OFFSET_NONE: u64 = 18446744073709551615;
455pub const GST_CAN_INLINE: c_int = 1;
456pub const GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY: &[u8] = b"memory:SystemMemory\0";
457pub const GST_CLOCK_TIME_NONE: GstClockTime = 18446744073709551615;
458pub const GST_DEBUG_BG_MASK: c_int = 240;
459pub const GST_DEBUG_FG_MASK: c_int = 15;
460pub const GST_DEBUG_FORMAT_MASK: c_int = 65280;
461pub const GST_ELEMENT_FACTORY_KLASS_DECODER: &[u8] = b"Decoder\0";
462pub const GST_ELEMENT_FACTORY_KLASS_DECRYPTOR: &[u8] = b"Decryptor\0";
463pub const GST_ELEMENT_FACTORY_KLASS_DEMUXER: &[u8] = b"Demuxer\0";
464pub const GST_ELEMENT_FACTORY_KLASS_DEPAYLOADER: &[u8] = b"Depayloader\0";
465pub const GST_ELEMENT_FACTORY_KLASS_ENCODER: &[u8] = b"Encoder\0";
466pub const GST_ELEMENT_FACTORY_KLASS_ENCRYPTOR: &[u8] = b"Encryptor\0";
467pub const GST_ELEMENT_FACTORY_KLASS_FORMATTER: &[u8] = b"Formatter\0";
468pub const GST_ELEMENT_FACTORY_KLASS_HARDWARE: &[u8] = b"Hardware\0";
469pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_AUDIO: &[u8] = b"Audio\0";
470pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_IMAGE: &[u8] = b"Image\0";
471pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_METADATA: &[u8] = b"Metadata\0";
472pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_SUBTITLE: &[u8] = b"Subtitle\0";
473pub const GST_ELEMENT_FACTORY_KLASS_MEDIA_VIDEO: &[u8] = b"Video\0";
474pub const GST_ELEMENT_FACTORY_KLASS_MUXER: &[u8] = b"Muxer\0";
475pub const GST_ELEMENT_FACTORY_KLASS_PARSER: &[u8] = b"Parser\0";
476pub const GST_ELEMENT_FACTORY_KLASS_PAYLOADER: &[u8] = b"Payloader\0";
477pub const GST_ELEMENT_FACTORY_KLASS_SINK: &[u8] = b"Sink\0";
478pub const GST_ELEMENT_FACTORY_KLASS_SRC: &[u8] = b"Source\0";
479pub const GST_ELEMENT_FACTORY_TYPE_ANY: GstElementFactoryListType = 562949953421311;
480pub const GST_ELEMENT_FACTORY_TYPE_AUDIOVIDEO_SINKS: GstElementFactoryListType = 3940649673949188;
481pub const GST_ELEMENT_FACTORY_TYPE_AUDIO_ENCODER: GstElementFactoryListType = 1125899906842626;
482pub const GST_ELEMENT_FACTORY_TYPE_DECODABLE: GstElementFactoryListType = 1377;
483pub const GST_ELEMENT_FACTORY_TYPE_DECODER: GstElementFactoryListType = 1;
484pub const GST_ELEMENT_FACTORY_TYPE_DECRYPTOR: GstElementFactoryListType = 1024;
485pub const GST_ELEMENT_FACTORY_TYPE_DEMUXER: GstElementFactoryListType = 32;
486pub const GST_ELEMENT_FACTORY_TYPE_DEPAYLOADER: GstElementFactoryListType = 256;
487pub const GST_ELEMENT_FACTORY_TYPE_ENCODER: GstElementFactoryListType = 2;
488pub const GST_ELEMENT_FACTORY_TYPE_ENCRYPTOR: GstElementFactoryListType = 2048;
489pub const GST_ELEMENT_FACTORY_TYPE_FORMATTER: GstElementFactoryListType = 512;
490pub const GST_ELEMENT_FACTORY_TYPE_HARDWARE: GstElementFactoryListType = 4096;
491pub const GST_ELEMENT_FACTORY_TYPE_MAX_ELEMENTS: GstElementFactoryListType = 281474976710656;
492pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_ANY: GstElementFactoryListType = 18446462598732840960;
493pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_AUDIO: GstElementFactoryListType = 1125899906842624;
494pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_IMAGE: GstElementFactoryListType = 2251799813685248;
495pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_METADATA: GstElementFactoryListType = 9007199254740992;
496pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_SUBTITLE: GstElementFactoryListType = 4503599627370496;
497pub const GST_ELEMENT_FACTORY_TYPE_MEDIA_VIDEO: GstElementFactoryListType = 562949953421312;
498pub const GST_ELEMENT_FACTORY_TYPE_MUXER: GstElementFactoryListType = 16;
499pub const GST_ELEMENT_FACTORY_TYPE_PARSER: GstElementFactoryListType = 64;
500pub const GST_ELEMENT_FACTORY_TYPE_PAYLOADER: GstElementFactoryListType = 128;
501pub const GST_ELEMENT_FACTORY_TYPE_SINK: GstElementFactoryListType = 4;
502pub const GST_ELEMENT_FACTORY_TYPE_SRC: GstElementFactoryListType = 8;
503pub const GST_ELEMENT_FACTORY_TYPE_TIMESTAMPER: GstElementFactoryListType = 8192;
504pub const GST_ELEMENT_FACTORY_TYPE_VIDEO_ENCODER: GstElementFactoryListType = 2814749767106562;
505pub const GST_ELEMENT_METADATA_AUTHOR: &[u8] = b"author\0";
506pub const GST_ELEMENT_METADATA_DESCRIPTION: &[u8] = b"description\0";
507pub const GST_ELEMENT_METADATA_DOC_URI: &[u8] = b"doc-uri\0";
508pub const GST_ELEMENT_METADATA_ICON_NAME: &[u8] = b"icon-name\0";
509pub const GST_ELEMENT_METADATA_KLASS: &[u8] = b"klass\0";
510pub const GST_ELEMENT_METADATA_LONGNAME: &[u8] = b"long-name\0";
511pub const GST_EVENT_NUM_SHIFT: c_int = 8;
512pub const GST_EVENT_TYPE_BOTH: GstEventTypeFlags = 3;
513pub const GST_FLAG_SET_MASK_EXACT: c_uint = 4294967295;
514pub const GST_FORMAT_PERCENT_MAX: i64 = 1000000;
515pub const GST_FORMAT_PERCENT_SCALE: i64 = 10000;
516pub const GST_GROUP_ID_INVALID: c_int = 0;
517pub const GST_LICENSE_UNKNOWN: &[u8] = b"unknown\0";
518pub const GST_LOCK_FLAG_READWRITE: GstLockFlags = 3;
519pub const GST_MAP_READWRITE: GstMapFlags = 3;
520pub const GST_META_TAG_MEMORY_REFERENCE_STR: &[u8] = b"memory-reference\0";
521pub const GST_META_TAG_MEMORY_STR: &[u8] = b"memory\0";
522pub const GST_MSECOND: GstClockTimeDiff = 1000000;
523pub const GST_NSECOND: GstClockTimeDiff = 1;
524pub const GST_PARAM_CONDITIONALLY_AVAILABLE: c_int = 16384;
525pub const GST_PARAM_CONTROLLABLE: c_int = 512;
526pub const GST_PARAM_DOC_SHOW_DEFAULT: c_int = 8192;
527pub const GST_PARAM_MUTABLE_PAUSED: c_int = 2048;
528pub const GST_PARAM_MUTABLE_PLAYING: c_int = 4096;
529pub const GST_PARAM_MUTABLE_READY: c_int = 1024;
530pub const GST_PARAM_USER_SHIFT: c_int = 65536;
531pub const GST_PROTECTION_SYSTEM_ID_CAPS_FIELD: &[u8] = b"protection-system\0";
532pub const GST_PROTECTION_UNSPECIFIED_SYSTEM_ID: &[u8] = b"unspecified-system-id\0";
533pub const GST_QUERY_NUM_SHIFT: c_int = 8;
534pub const GST_QUERY_TYPE_BOTH: GstQueryTypeFlags = 3;
535pub const GST_SECOND: GstClockTimeDiff = 1000000000;
536pub const GST_SEGMENT_INSTANT_FLAGS: c_int = 912;
537pub const GST_SEQNUM_INVALID: c_int = 0;
538pub const GST_TAG_ALBUM: &[u8] = b"album\0";
539pub const GST_TAG_ALBUM_ARTIST: &[u8] = b"album-artist\0";
540pub const GST_TAG_ALBUM_ARTIST_SORTNAME: &[u8] = b"album-artist-sortname\0";
541pub const GST_TAG_ALBUM_GAIN: &[u8] = b"replaygain-album-gain\0";
542pub const GST_TAG_ALBUM_GAIN_R128: &[u8] = b"r128-album-gain\0";
543pub const GST_TAG_ALBUM_PEAK: &[u8] = b"replaygain-album-peak\0";
544pub const GST_TAG_ALBUM_SORTNAME: &[u8] = b"album-sortname\0";
545pub const GST_TAG_ALBUM_VOLUME_COUNT: &[u8] = b"album-disc-count\0";
546pub const GST_TAG_ALBUM_VOLUME_NUMBER: &[u8] = b"album-disc-number\0";
547pub const GST_TAG_APPLICATION_DATA: &[u8] = b"application-data\0";
548pub const GST_TAG_APPLICATION_NAME: &[u8] = b"application-name\0";
549pub const GST_TAG_ARTIST: &[u8] = b"artist\0";
550pub const GST_TAG_ARTIST_SORTNAME: &[u8] = b"artist-sortname\0";
551pub const GST_TAG_ATTACHMENT: &[u8] = b"attachment\0";
552pub const GST_TAG_AUDIO_CODEC: &[u8] = b"audio-codec\0";
553pub const GST_TAG_BEATS_PER_MINUTE: &[u8] = b"beats-per-minute\0";
554pub const GST_TAG_BITRATE: &[u8] = b"bitrate\0";
555pub const GST_TAG_CODEC: &[u8] = b"codec\0";
556pub const GST_TAG_COMMENT: &[u8] = b"comment\0";
557pub const GST_TAG_COMPOSER: &[u8] = b"composer\0";
558pub const GST_TAG_COMPOSER_SORTNAME: &[u8] = b"composer-sortname\0";
559pub const GST_TAG_CONDUCTOR: &[u8] = b"conductor\0";
560pub const GST_TAG_CONTACT: &[u8] = b"contact\0";
561pub const GST_TAG_CONTAINER_FORMAT: &[u8] = b"container-format\0";
562pub const GST_TAG_CONTAINER_SPECIFIC_TRACK_ID: &[u8] = b"container-specific-track-id\0";
563pub const GST_TAG_COPYRIGHT: &[u8] = b"copyright\0";
564pub const GST_TAG_COPYRIGHT_URI: &[u8] = b"copyright-uri\0";
565pub const GST_TAG_DATE: &[u8] = b"date\0";
566pub const GST_TAG_DATE_TIME: &[u8] = b"datetime\0";
567pub const GST_TAG_DESCRIPTION: &[u8] = b"description\0";
568pub const GST_TAG_DEVICE_MANUFACTURER: &[u8] = b"device-manufacturer\0";
569pub const GST_TAG_DEVICE_MODEL: &[u8] = b"device-model\0";
570pub const GST_TAG_DURATION: &[u8] = b"duration\0";
571pub const GST_TAG_ENCODED_BY: &[u8] = b"encoded-by\0";
572pub const GST_TAG_ENCODER: &[u8] = b"encoder\0";
573pub const GST_TAG_ENCODER_VERSION: &[u8] = b"encoder-version\0";
574pub const GST_TAG_EXTENDED_COMMENT: &[u8] = b"extended-comment\0";
575pub const GST_TAG_GENRE: &[u8] = b"genre\0";
576pub const GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION: &[u8] = b"geo-location-capture-direction\0";
577pub const GST_TAG_GEO_LOCATION_CITY: &[u8] = b"geo-location-city\0";
578pub const GST_TAG_GEO_LOCATION_COUNTRY: &[u8] = b"geo-location-country\0";
579pub const GST_TAG_GEO_LOCATION_ELEVATION: &[u8] = b"geo-location-elevation\0";
580pub const GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR: &[u8] = b"geo-location-horizontal-error\0";
581pub const GST_TAG_GEO_LOCATION_LATITUDE: &[u8] = b"geo-location-latitude\0";
582pub const GST_TAG_GEO_LOCATION_LONGITUDE: &[u8] = b"geo-location-longitude\0";
583pub const GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION: &[u8] = b"geo-location-movement-direction\0";
584pub const GST_TAG_GEO_LOCATION_MOVEMENT_SPEED: &[u8] = b"geo-location-movement-speed\0";
585pub const GST_TAG_GEO_LOCATION_NAME: &[u8] = b"geo-location-name\0";
586pub const GST_TAG_GEO_LOCATION_SUBLOCATION: &[u8] = b"geo-location-sublocation\0";
587pub const GST_TAG_GROUPING: &[u8] = b"grouping\0";
588pub const GST_TAG_HOMEPAGE: &[u8] = b"homepage\0";
589pub const GST_TAG_IMAGE: &[u8] = b"image\0";
590pub const GST_TAG_IMAGE_ORIENTATION: &[u8] = b"image-orientation\0";
591pub const GST_TAG_INTERPRETED_BY: &[u8] = b"interpreted-by\0";
592pub const GST_TAG_ISRC: &[u8] = b"isrc\0";
593pub const GST_TAG_KEYWORDS: &[u8] = b"keywords\0";
594pub const GST_TAG_LANGUAGE_CODE: &[u8] = b"language-code\0";
595pub const GST_TAG_LANGUAGE_NAME: &[u8] = b"language-name\0";
596pub const GST_TAG_LICENSE: &[u8] = b"license\0";
597pub const GST_TAG_LICENSE_URI: &[u8] = b"license-uri\0";
598pub const GST_TAG_LOCATION: &[u8] = b"location\0";
599pub const GST_TAG_LYRICS: &[u8] = b"lyrics\0";
600pub const GST_TAG_MAXIMUM_BITRATE: &[u8] = b"maximum-bitrate\0";
601pub const GST_TAG_MIDI_BASE_NOTE: &[u8] = b"midi-base-note\0";
602pub const GST_TAG_MINIMUM_BITRATE: &[u8] = b"minimum-bitrate\0";
603pub const GST_TAG_NOMINAL_BITRATE: &[u8] = b"nominal-bitrate\0";
604pub const GST_TAG_ORGANIZATION: &[u8] = b"organization\0";
605pub const GST_TAG_PERFORMER: &[u8] = b"performer\0";
606pub const GST_TAG_PREVIEW_IMAGE: &[u8] = b"preview-image\0";
607pub const GST_TAG_PRIVATE_DATA: &[u8] = b"private-data\0";
608pub const GST_TAG_PUBLISHER: &[u8] = b"publisher\0";
609pub const GST_TAG_REFERENCE_LEVEL: &[u8] = b"replaygain-reference-level\0";
610pub const GST_TAG_SERIAL: &[u8] = b"serial\0";
611pub const GST_TAG_SHOW_EPISODE_NUMBER: &[u8] = b"show-episode-number\0";
612pub const GST_TAG_SHOW_NAME: &[u8] = b"show-name\0";
613pub const GST_TAG_SHOW_SEASON_NUMBER: &[u8] = b"show-season-number\0";
614pub const GST_TAG_SHOW_SORTNAME: &[u8] = b"show-sortname\0";
615pub const GST_TAG_SUBTITLE_CODEC: &[u8] = b"subtitle-codec\0";
616pub const GST_TAG_TITLE: &[u8] = b"title\0";
617pub const GST_TAG_TITLE_SORTNAME: &[u8] = b"title-sortname\0";
618pub const GST_TAG_TRACK_COUNT: &[u8] = b"track-count\0";
619pub const GST_TAG_TRACK_GAIN: &[u8] = b"replaygain-track-gain\0";
620pub const GST_TAG_TRACK_GAIN_R128: &[u8] = b"r128-track-gain\0";
621pub const GST_TAG_TRACK_NUMBER: &[u8] = b"track-number\0";
622pub const GST_TAG_TRACK_PEAK: &[u8] = b"replaygain-track-peak\0";
623pub const GST_TAG_USER_RATING: &[u8] = b"user-rating\0";
624pub const GST_TAG_VERSION: &[u8] = b"version\0";
625pub const GST_TAG_VIDEO_CODEC: &[u8] = b"video-codec\0";
626pub const GST_TASK_POOL_CONTEXT_TYPE: &[u8] = b"gst.task.pool\0";
627pub const GST_TOC_REPEAT_COUNT_INFINITE: c_int = -1;
628pub const GST_TRACE_SPAN_ID_NONE: GstTraceSpanId = 0;
629pub const GST_URI_NO_PORT: c_int = 0;
630pub const GST_USECOND: GstClockTimeDiff = 1000;
631pub const GST_VALUE_EQUAL: c_int = 0;
632pub const GST_VALUE_GREATER_THAN: c_int = 1;
633pub const GST_VALUE_LESS_THAN: c_int = -1;
634pub const GST_VALUE_UNORDERED: c_int = 2;
635
636// Flags
637pub type GstAllocatorFlags = c_uint;
638pub const GST_ALLOCATOR_FLAG_CUSTOM_ALLOC: GstAllocatorFlags = 16;
639#[cfg(feature = "v1_24")]
640#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
641pub const GST_ALLOCATOR_FLAG_NO_COPY: GstAllocatorFlags = 32;
642pub const GST_ALLOCATOR_FLAG_LAST: GstAllocatorFlags = 1048576;
643
644pub type GstBinFlags = c_uint;
645pub const GST_BIN_FLAG_NO_RESYNC: GstBinFlags = 16384;
646pub const GST_BIN_FLAG_STREAMS_AWARE: GstBinFlags = 32768;
647pub const GST_BIN_FLAG_LAST: GstBinFlags = 524288;
648
649pub type GstBufferCopyFlags = c_uint;
650pub const GST_BUFFER_COPY_NONE: GstBufferCopyFlags = 0;
651pub const GST_BUFFER_COPY_FLAGS: GstBufferCopyFlags = 1;
652pub const GST_BUFFER_COPY_TIMESTAMPS: GstBufferCopyFlags = 2;
653pub const GST_BUFFER_COPY_META: GstBufferCopyFlags = 4;
654pub const GST_BUFFER_COPY_MEMORY: GstBufferCopyFlags = 8;
655pub const GST_BUFFER_COPY_MERGE: GstBufferCopyFlags = 16;
656pub const GST_BUFFER_COPY_DEEP: GstBufferCopyFlags = 32;
657
658pub type GstBufferFlags = c_uint;
659pub const GST_BUFFER_FLAG_LIVE: GstBufferFlags = 16;
660pub const GST_BUFFER_FLAG_DECODE_ONLY: GstBufferFlags = 32;
661pub const GST_BUFFER_FLAG_DISCONT: GstBufferFlags = 64;
662pub const GST_BUFFER_FLAG_RESYNC: GstBufferFlags = 128;
663pub const GST_BUFFER_FLAG_CORRUPTED: GstBufferFlags = 256;
664pub const GST_BUFFER_FLAG_MARKER: GstBufferFlags = 512;
665pub const GST_BUFFER_FLAG_HEADER: GstBufferFlags = 1024;
666pub const GST_BUFFER_FLAG_GAP: GstBufferFlags = 2048;
667pub const GST_BUFFER_FLAG_DROPPABLE: GstBufferFlags = 4096;
668pub const GST_BUFFER_FLAG_DELTA_UNIT: GstBufferFlags = 8192;
669pub const GST_BUFFER_FLAG_TAG_MEMORY: GstBufferFlags = 16384;
670pub const GST_BUFFER_FLAG_SYNC_AFTER: GstBufferFlags = 32768;
671pub const GST_BUFFER_FLAG_NON_DROPPABLE: GstBufferFlags = 65536;
672pub const GST_BUFFER_FLAG_LAST: GstBufferFlags = 1048576;
673
674pub type GstBufferPoolAcquireFlags = c_uint;
675pub const GST_BUFFER_POOL_ACQUIRE_FLAG_NONE: GstBufferPoolAcquireFlags = 0;
676pub const GST_BUFFER_POOL_ACQUIRE_FLAG_KEY_UNIT: GstBufferPoolAcquireFlags = 1;
677pub const GST_BUFFER_POOL_ACQUIRE_FLAG_DONTWAIT: GstBufferPoolAcquireFlags = 2;
678pub const GST_BUFFER_POOL_ACQUIRE_FLAG_DISCONT: GstBufferPoolAcquireFlags = 4;
679pub const GST_BUFFER_POOL_ACQUIRE_FLAG_LAST: GstBufferPoolAcquireFlags = 65536;
680
681pub type GstBusFlags = c_uint;
682pub const GST_BUS_FLUSHING: GstBusFlags = 16;
683pub const GST_BUS_FLAG_LAST: GstBusFlags = 32;
684
685pub type GstCapsFlags = c_uint;
686pub const GST_CAPS_FLAG_ANY: GstCapsFlags = 16;
687
688pub type GstClockFlags = c_uint;
689pub const GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC: GstClockFlags = 16;
690pub const GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC: GstClockFlags = 32;
691pub const GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC: GstClockFlags = 64;
692pub const GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC: GstClockFlags = 128;
693pub const GST_CLOCK_FLAG_CAN_SET_RESOLUTION: GstClockFlags = 256;
694pub const GST_CLOCK_FLAG_CAN_SET_MASTER: GstClockFlags = 512;
695pub const GST_CLOCK_FLAG_NEEDS_STARTUP_SYNC: GstClockFlags = 1024;
696pub const GST_CLOCK_FLAG_LAST: GstClockFlags = 4096;
697
698pub type GstDebugColorFlags = c_uint;
699pub const GST_DEBUG_FG_BLACK: GstDebugColorFlags = 0;
700pub const GST_DEBUG_FG_RED: GstDebugColorFlags = 1;
701pub const GST_DEBUG_FG_GREEN: GstDebugColorFlags = 2;
702pub const GST_DEBUG_FG_YELLOW: GstDebugColorFlags = 3;
703pub const GST_DEBUG_FG_BLUE: GstDebugColorFlags = 4;
704pub const GST_DEBUG_FG_MAGENTA: GstDebugColorFlags = 5;
705pub const GST_DEBUG_FG_CYAN: GstDebugColorFlags = 6;
706pub const GST_DEBUG_FG_WHITE: GstDebugColorFlags = 7;
707pub const GST_DEBUG_BG_BLACK: GstDebugColorFlags = 0;
708pub const GST_DEBUG_BG_RED: GstDebugColorFlags = 16;
709pub const GST_DEBUG_BG_GREEN: GstDebugColorFlags = 32;
710pub const GST_DEBUG_BG_YELLOW: GstDebugColorFlags = 48;
711pub const GST_DEBUG_BG_BLUE: GstDebugColorFlags = 64;
712pub const GST_DEBUG_BG_MAGENTA: GstDebugColorFlags = 80;
713pub const GST_DEBUG_BG_CYAN: GstDebugColorFlags = 96;
714pub const GST_DEBUG_BG_WHITE: GstDebugColorFlags = 112;
715pub const GST_DEBUG_BOLD: GstDebugColorFlags = 256;
716pub const GST_DEBUG_UNDERLINE: GstDebugColorFlags = 512;
717
718pub type GstDebugGraphDetails = c_uint;
719pub const GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE: GstDebugGraphDetails = 1;
720pub const GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS: GstDebugGraphDetails = 2;
721pub const GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS: GstDebugGraphDetails = 4;
722pub const GST_DEBUG_GRAPH_SHOW_STATES: GstDebugGraphDetails = 8;
723pub const GST_DEBUG_GRAPH_SHOW_FULL_PARAMS: GstDebugGraphDetails = 16;
724pub const GST_DEBUG_GRAPH_SHOW_ALL: GstDebugGraphDetails = 15;
725pub const GST_DEBUG_GRAPH_SHOW_VERBOSE: GstDebugGraphDetails = 4294967295;
726
727pub type GstElementFlags = c_uint;
728pub const GST_ELEMENT_FLAG_LOCKED_STATE: GstElementFlags = 16;
729pub const GST_ELEMENT_FLAG_SINK: GstElementFlags = 32;
730pub const GST_ELEMENT_FLAG_SOURCE: GstElementFlags = 64;
731pub const GST_ELEMENT_FLAG_PROVIDE_CLOCK: GstElementFlags = 128;
732pub const GST_ELEMENT_FLAG_REQUIRE_CLOCK: GstElementFlags = 256;
733pub const GST_ELEMENT_FLAG_INDEXABLE: GstElementFlags = 512;
734pub const GST_ELEMENT_FLAG_LAST: GstElementFlags = 16384;
735
736pub type GstEventTypeFlags = c_uint;
737pub const GST_EVENT_TYPE_UPSTREAM: GstEventTypeFlags = 1;
738pub const GST_EVENT_TYPE_DOWNSTREAM: GstEventTypeFlags = 2;
739pub const GST_EVENT_TYPE_SERIALIZED: GstEventTypeFlags = 4;
740pub const GST_EVENT_TYPE_STICKY: GstEventTypeFlags = 8;
741pub const GST_EVENT_TYPE_STICKY_MULTI: GstEventTypeFlags = 16;
742
743pub type GstGapFlags = c_uint;
744pub const GST_GAP_FLAG_MISSING_DATA: GstGapFlags = 1;
745
746pub type GstLockFlags = c_uint;
747pub const GST_LOCK_FLAG_READ: GstLockFlags = 1;
748pub const GST_LOCK_FLAG_WRITE: GstLockFlags = 2;
749pub const GST_LOCK_FLAG_EXCLUSIVE: GstLockFlags = 4;
750pub const GST_LOCK_FLAG_LAST: GstLockFlags = 256;
751
752pub type GstLogContextFlags = c_uint;
753pub const GST_LOG_CONTEXT_FLAG_NONE: GstLogContextFlags = 0;
754pub const GST_LOG_CONTEXT_FLAG_THROTTLE: GstLogContextFlags = 1;
755
756pub type GstLogContextHashFlags = c_uint;
757pub const GST_LOG_CONTEXT_DEFAULT: GstLogContextHashFlags = 0;
758pub const GST_LOG_CONTEXT_IGNORE_OBJECT: GstLogContextHashFlags = 1;
759pub const GST_LOG_CONTEXT_IGNORE_FORMAT: GstLogContextHashFlags = 2;
760pub const GST_LOG_CONTEXT_IGNORE_FILE: GstLogContextHashFlags = 4;
761pub const GST_LOG_CONTEXT_USE_LINE_NUMBER: GstLogContextHashFlags = 8;
762pub const GST_LOG_CONTEXT_USE_STRING_ARGS: GstLogContextHashFlags = 16;
763
764pub type GstMapFlags = c_uint;
765pub const GST_MAP_READ: GstMapFlags = 1;
766pub const GST_MAP_WRITE: GstMapFlags = 2;
767#[cfg(feature = "v1_28")]
768#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
769pub const GST_MAP_REF_MEMORY: GstMapFlags = 256;
770pub const GST_MAP_FLAG_LAST: GstMapFlags = 65536;
771
772pub type GstMemoryFlags = c_uint;
773pub const GST_MEMORY_FLAG_READONLY: GstMemoryFlags = 2;
774pub const GST_MEMORY_FLAG_NO_SHARE: GstMemoryFlags = 16;
775pub const GST_MEMORY_FLAG_ZERO_PREFIXED: GstMemoryFlags = 32;
776pub const GST_MEMORY_FLAG_ZERO_PADDED: GstMemoryFlags = 64;
777pub const GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS: GstMemoryFlags = 128;
778pub const GST_MEMORY_FLAG_NOT_MAPPABLE: GstMemoryFlags = 256;
779pub const GST_MEMORY_FLAG_LAST: GstMemoryFlags = 1048576;
780
781pub type GstMessageType = c_uint;
782pub const GST_MESSAGE_UNKNOWN: GstMessageType = 0;
783pub const GST_MESSAGE_EOS: GstMessageType = 1;
784pub const GST_MESSAGE_ERROR: GstMessageType = 2;
785pub const GST_MESSAGE_WARNING: GstMessageType = 4;
786pub const GST_MESSAGE_INFO: GstMessageType = 8;
787pub const GST_MESSAGE_TAG: GstMessageType = 16;
788pub const GST_MESSAGE_BUFFERING: GstMessageType = 32;
789pub const GST_MESSAGE_STATE_CHANGED: GstMessageType = 64;
790pub const GST_MESSAGE_STATE_DIRTY: GstMessageType = 128;
791pub const GST_MESSAGE_STEP_DONE: GstMessageType = 256;
792pub const GST_MESSAGE_CLOCK_PROVIDE: GstMessageType = 512;
793pub const GST_MESSAGE_CLOCK_LOST: GstMessageType = 1024;
794pub const GST_MESSAGE_NEW_CLOCK: GstMessageType = 2048;
795pub const GST_MESSAGE_STRUCTURE_CHANGE: GstMessageType = 4096;
796pub const GST_MESSAGE_STREAM_STATUS: GstMessageType = 8192;
797pub const GST_MESSAGE_APPLICATION: GstMessageType = 16384;
798pub const GST_MESSAGE_ELEMENT: GstMessageType = 32768;
799pub const GST_MESSAGE_SEGMENT_START: GstMessageType = 65536;
800pub const GST_MESSAGE_SEGMENT_DONE: GstMessageType = 131072;
801pub const GST_MESSAGE_DURATION_CHANGED: GstMessageType = 262144;
802pub const GST_MESSAGE_LATENCY: GstMessageType = 524288;
803pub const GST_MESSAGE_ASYNC_START: GstMessageType = 1048576;
804pub const GST_MESSAGE_ASYNC_DONE: GstMessageType = 2097152;
805pub const GST_MESSAGE_REQUEST_STATE: GstMessageType = 4194304;
806pub const GST_MESSAGE_STEP_START: GstMessageType = 8388608;
807pub const GST_MESSAGE_QOS: GstMessageType = 16777216;
808pub const GST_MESSAGE_PROGRESS: GstMessageType = 33554432;
809pub const GST_MESSAGE_TOC: GstMessageType = 67108864;
810pub const GST_MESSAGE_RESET_TIME: GstMessageType = 134217728;
811pub const GST_MESSAGE_STREAM_START: GstMessageType = 268435456;
812pub const GST_MESSAGE_NEED_CONTEXT: GstMessageType = 536870912;
813pub const GST_MESSAGE_HAVE_CONTEXT: GstMessageType = 1073741824;
814pub const GST_MESSAGE_EXTENDED: GstMessageType = 2147483648;
815pub const GST_MESSAGE_DEVICE_ADDED: GstMessageType = 2147483649;
816pub const GST_MESSAGE_DEVICE_REMOVED: GstMessageType = 2147483650;
817pub const GST_MESSAGE_PROPERTY_NOTIFY: GstMessageType = 2147483651;
818pub const GST_MESSAGE_STREAM_COLLECTION: GstMessageType = 2147483652;
819pub const GST_MESSAGE_STREAMS_SELECTED: GstMessageType = 2147483653;
820pub const GST_MESSAGE_REDIRECT: GstMessageType = 2147483654;
821pub const GST_MESSAGE_DEVICE_CHANGED: GstMessageType = 2147483655;
822pub const GST_MESSAGE_INSTANT_RATE_REQUEST: GstMessageType = 2147483656;
823#[cfg(feature = "v1_28")]
824#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
825pub const GST_MESSAGE_DEVICE_MONITOR_STARTED: GstMessageType = 2147483657;
826pub const GST_MESSAGE_ANY: GstMessageType = 4294967295;
827
828pub type GstMetaFlags = c_uint;
829pub const GST_META_FLAG_NONE: GstMetaFlags = 0;
830pub const GST_META_FLAG_READONLY: GstMetaFlags = 1;
831pub const GST_META_FLAG_POOLED: GstMetaFlags = 2;
832pub const GST_META_FLAG_LOCKED: GstMetaFlags = 4;
833pub const GST_META_FLAG_LAST: GstMetaFlags = 65536;
834
835pub type GstMiniObjectFlags = c_uint;
836pub const GST_MINI_OBJECT_FLAG_LOCKABLE: GstMiniObjectFlags = 1;
837pub const GST_MINI_OBJECT_FLAG_LOCK_READONLY: GstMiniObjectFlags = 2;
838pub const GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED: GstMiniObjectFlags = 4;
839pub const GST_MINI_OBJECT_FLAG_LAST: GstMiniObjectFlags = 16;
840
841pub type GstObjectFlags = c_uint;
842pub const GST_OBJECT_FLAG_MAY_BE_LEAKED: GstObjectFlags = 1;
843#[cfg(feature = "v1_24")]
844#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
845pub const GST_OBJECT_FLAG_CONSTRUCTED: GstObjectFlags = 2;
846pub const GST_OBJECT_FLAG_LAST: GstObjectFlags = 16;
847
848pub type GstPadFlags = c_uint;
849pub const GST_PAD_FLAG_BLOCKED: GstPadFlags = 16;
850pub const GST_PAD_FLAG_FLUSHING: GstPadFlags = 32;
851pub const GST_PAD_FLAG_EOS: GstPadFlags = 64;
852pub const GST_PAD_FLAG_BLOCKING: GstPadFlags = 128;
853pub const GST_PAD_FLAG_NEED_PARENT: GstPadFlags = 256;
854pub const GST_PAD_FLAG_NEED_RECONFIGURE: GstPadFlags = 512;
855pub const GST_PAD_FLAG_PENDING_EVENTS: GstPadFlags = 1024;
856pub const GST_PAD_FLAG_FIXED_CAPS: GstPadFlags = 2048;
857pub const GST_PAD_FLAG_PROXY_CAPS: GstPadFlags = 4096;
858pub const GST_PAD_FLAG_PROXY_ALLOCATION: GstPadFlags = 8192;
859pub const GST_PAD_FLAG_PROXY_SCHEDULING: GstPadFlags = 16384;
860pub const GST_PAD_FLAG_ACCEPT_INTERSECT: GstPadFlags = 32768;
861pub const GST_PAD_FLAG_ACCEPT_TEMPLATE: GstPadFlags = 65536;
862pub const GST_PAD_FLAG_LAST: GstPadFlags = 1048576;
863
864pub type GstPadLinkCheck = c_uint;
865pub const GST_PAD_LINK_CHECK_NOTHING: GstPadLinkCheck = 0;
866pub const GST_PAD_LINK_CHECK_HIERARCHY: GstPadLinkCheck = 1;
867pub const GST_PAD_LINK_CHECK_TEMPLATE_CAPS: GstPadLinkCheck = 2;
868pub const GST_PAD_LINK_CHECK_CAPS: GstPadLinkCheck = 4;
869pub const GST_PAD_LINK_CHECK_NO_RECONFIGURE: GstPadLinkCheck = 8;
870pub const GST_PAD_LINK_CHECK_DEFAULT: GstPadLinkCheck = 5;
871
872pub type GstPadProbeType = c_uint;
873pub const GST_PAD_PROBE_TYPE_INVALID: GstPadProbeType = 0;
874pub const GST_PAD_PROBE_TYPE_IDLE: GstPadProbeType = 1;
875pub const GST_PAD_PROBE_TYPE_BLOCK: GstPadProbeType = 2;
876pub const GST_PAD_PROBE_TYPE_BUFFER: GstPadProbeType = 16;
877pub const GST_PAD_PROBE_TYPE_BUFFER_LIST: GstPadProbeType = 32;
878pub const GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM: GstPadProbeType = 64;
879pub const GST_PAD_PROBE_TYPE_EVENT_UPSTREAM: GstPadProbeType = 128;
880pub const GST_PAD_PROBE_TYPE_EVENT_FLUSH: GstPadProbeType = 256;
881pub const GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM: GstPadProbeType = 512;
882pub const GST_PAD_PROBE_TYPE_QUERY_UPSTREAM: GstPadProbeType = 1024;
883pub const GST_PAD_PROBE_TYPE_PUSH: GstPadProbeType = 4096;
884pub const GST_PAD_PROBE_TYPE_PULL: GstPadProbeType = 8192;
885pub const GST_PAD_PROBE_TYPE_BLOCKING: GstPadProbeType = 3;
886pub const GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM: GstPadProbeType = 112;
887pub const GST_PAD_PROBE_TYPE_DATA_UPSTREAM: GstPadProbeType = 128;
888pub const GST_PAD_PROBE_TYPE_DATA_BOTH: GstPadProbeType = 240;
889pub const GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM: GstPadProbeType = 114;
890pub const GST_PAD_PROBE_TYPE_BLOCK_UPSTREAM: GstPadProbeType = 130;
891pub const GST_PAD_PROBE_TYPE_EVENT_BOTH: GstPadProbeType = 192;
892pub const GST_PAD_PROBE_TYPE_QUERY_BOTH: GstPadProbeType = 1536;
893pub const GST_PAD_PROBE_TYPE_ALL_BOTH: GstPadProbeType = 1776;
894pub const GST_PAD_PROBE_TYPE_SCHEDULING: GstPadProbeType = 12288;
895
896pub type GstPadTemplateFlags = c_uint;
897pub const GST_PAD_TEMPLATE_FLAG_LAST: GstPadTemplateFlags = 256;
898
899pub type GstParseFlags = c_uint;
900pub const GST_PARSE_FLAG_NONE: GstParseFlags = 0;
901pub const GST_PARSE_FLAG_FATAL_ERRORS: GstParseFlags = 1;
902pub const GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS: GstParseFlags = 2;
903pub const GST_PARSE_FLAG_PLACE_IN_BIN: GstParseFlags = 4;
904
905pub type GstPipelineFlags = c_uint;
906pub const GST_PIPELINE_FLAG_FIXED_CLOCK: GstPipelineFlags = 524288;
907pub const GST_PIPELINE_FLAG_LAST: GstPipelineFlags = 8388608;
908
909pub type GstPluginAPIFlags = c_uint;
910pub const GST_PLUGIN_API_FLAG_IGNORE_ENUM_MEMBERS: GstPluginAPIFlags = 1;
911
912pub type GstPluginDependencyFlags = c_uint;
913pub const GST_PLUGIN_DEPENDENCY_FLAG_NONE: GstPluginDependencyFlags = 0;
914pub const GST_PLUGIN_DEPENDENCY_FLAG_RECURSE: GstPluginDependencyFlags = 1;
915pub const GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY: GstPluginDependencyFlags = 2;
916pub const GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX: GstPluginDependencyFlags = 4;
917pub const GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_PREFIX: GstPluginDependencyFlags = 8;
918pub const GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_RELATIVE_TO_EXE: GstPluginDependencyFlags = 16;
919
920pub type GstPluginFlags = c_uint;
921pub const GST_PLUGIN_FLAG_CACHED: GstPluginFlags = 16;
922pub const GST_PLUGIN_FLAG_BLACKLISTED: GstPluginFlags = 32;
923#[cfg(feature = "v1_30")]
924#[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
925pub const GST_PLUGIN_FLAG_STATIC_FEATURES: GstPluginFlags = 64;
926
927pub type GstQueryTypeFlags = c_uint;
928pub const GST_QUERY_TYPE_UPSTREAM: GstQueryTypeFlags = 1;
929pub const GST_QUERY_TYPE_DOWNSTREAM: GstQueryTypeFlags = 2;
930pub const GST_QUERY_TYPE_SERIALIZED: GstQueryTypeFlags = 4;
931
932pub type GstSchedulingFlags = c_uint;
933pub const GST_SCHEDULING_FLAG_SEEKABLE: GstSchedulingFlags = 1;
934pub const GST_SCHEDULING_FLAG_SEQUENTIAL: GstSchedulingFlags = 2;
935pub const GST_SCHEDULING_FLAG_BANDWIDTH_LIMITED: GstSchedulingFlags = 4;
936
937pub type GstSeekFlags = c_uint;
938pub const GST_SEEK_FLAG_NONE: GstSeekFlags = 0;
939pub const GST_SEEK_FLAG_FLUSH: GstSeekFlags = 1;
940pub const GST_SEEK_FLAG_ACCURATE: GstSeekFlags = 2;
941pub const GST_SEEK_FLAG_KEY_UNIT: GstSeekFlags = 4;
942pub const GST_SEEK_FLAG_SEGMENT: GstSeekFlags = 8;
943pub const GST_SEEK_FLAG_TRICKMODE: GstSeekFlags = 16;
944pub const GST_SEEK_FLAG_SKIP: GstSeekFlags = 16;
945pub const GST_SEEK_FLAG_SNAP_BEFORE: GstSeekFlags = 32;
946pub const GST_SEEK_FLAG_SNAP_AFTER: GstSeekFlags = 64;
947pub const GST_SEEK_FLAG_SNAP_NEAREST: GstSeekFlags = 96;
948pub const GST_SEEK_FLAG_TRICKMODE_KEY_UNITS: GstSeekFlags = 128;
949pub const GST_SEEK_FLAG_TRICKMODE_NO_AUDIO: GstSeekFlags = 256;
950pub const GST_SEEK_FLAG_TRICKMODE_FORWARD_PREDICTED: GstSeekFlags = 512;
951pub const GST_SEEK_FLAG_INSTANT_RATE_CHANGE: GstSeekFlags = 1024;
952
953pub type GstSegmentFlags = c_uint;
954pub const GST_SEGMENT_FLAG_NONE: GstSegmentFlags = 0;
955pub const GST_SEGMENT_FLAG_RESET: GstSegmentFlags = 1;
956pub const GST_SEGMENT_FLAG_TRICKMODE: GstSegmentFlags = 16;
957pub const GST_SEGMENT_FLAG_SKIP: GstSegmentFlags = 16;
958pub const GST_SEGMENT_FLAG_SEGMENT: GstSegmentFlags = 8;
959pub const GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS: GstSegmentFlags = 128;
960pub const GST_SEGMENT_FLAG_TRICKMODE_FORWARD_PREDICTED: GstSegmentFlags = 512;
961pub const GST_SEGMENT_FLAG_TRICKMODE_NO_AUDIO: GstSegmentFlags = 256;
962
963pub type GstSerializeFlags = c_uint;
964pub const GST_SERIALIZE_FLAG_NONE: GstSerializeFlags = 0;
965pub const GST_SERIALIZE_FLAG_BACKWARD_COMPAT: GstSerializeFlags = 1;
966#[cfg(feature = "v1_24")]
967#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
968pub const GST_SERIALIZE_FLAG_STRICT: GstSerializeFlags = 2;
969
970pub type GstStackTraceFlags = c_uint;
971pub const GST_STACK_TRACE_SHOW_NONE: GstStackTraceFlags = 0;
972pub const GST_STACK_TRACE_SHOW_FULL: GstStackTraceFlags = 1;
973
974pub type GstStreamFlags = c_uint;
975pub const GST_STREAM_FLAG_NONE: GstStreamFlags = 0;
976pub const GST_STREAM_FLAG_SPARSE: GstStreamFlags = 1;
977pub const GST_STREAM_FLAG_SELECT: GstStreamFlags = 2;
978pub const GST_STREAM_FLAG_UNSELECT: GstStreamFlags = 4;
979
980pub type GstStreamType = c_uint;
981pub const GST_STREAM_TYPE_UNKNOWN: GstStreamType = 1;
982pub const GST_STREAM_TYPE_AUDIO: GstStreamType = 2;
983pub const GST_STREAM_TYPE_VIDEO: GstStreamType = 4;
984pub const GST_STREAM_TYPE_CONTAINER: GstStreamType = 8;
985pub const GST_STREAM_TYPE_TEXT: GstStreamType = 16;
986#[cfg(feature = "v1_28")]
987#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
988pub const GST_STREAM_TYPE_METADATA: GstStreamType = 32;
989
990pub type GstTracerValueFlags = c_uint;
991pub const GST_TRACER_VALUE_FLAGS_NONE: GstTracerValueFlags = 0;
992pub const GST_TRACER_VALUE_FLAGS_OPTIONAL: GstTracerValueFlags = 1;
993pub const GST_TRACER_VALUE_FLAGS_AGGREGATED: GstTracerValueFlags = 2;
994
995// Unions
996#[derive(Copy, Clone)]
997#[repr(C)]
998pub union GstControlBinding_ABI {
999    pub abi: GstControlBinding_ABI_abi,
1000    pub _gst_reserved: [gpointer; 4],
1001}
1002
1003impl ::std::fmt::Debug for GstControlBinding_ABI {
1004    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1005        f.debug_struct(&format!("GstControlBinding_ABI @ {self:p}"))
1006            .field("abi", unsafe { &self.abi })
1007            .finish()
1008    }
1009}
1010
1011#[derive(Copy, Clone)]
1012#[repr(C)]
1013pub union GstPadProbeInfo_ABI {
1014    pub _gst_reserved: [gpointer; 4],
1015    pub abi: GstPadProbeInfo_ABI_abi,
1016}
1017
1018impl ::std::fmt::Debug for GstPadProbeInfo_ABI {
1019    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1020        f.debug_struct(&format!("GstPadProbeInfo_ABI @ {self:p}"))
1021            .field("_gst_reserved", unsafe { &self._gst_reserved })
1022            .field("abi", unsafe { &self.abi })
1023            .finish()
1024    }
1025}
1026
1027#[derive(Copy, Clone)]
1028#[repr(C)]
1029pub union GstPadTemplate_ABI {
1030    pub _gst_reserved: [gpointer; 4],
1031    pub abi: GstPadTemplate_ABI_abi,
1032}
1033
1034impl ::std::fmt::Debug for GstPadTemplate_ABI {
1035    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1036        f.debug_struct(&format!("GstPadTemplate_ABI @ {self:p}"))
1037            .field("_gst_reserved", unsafe { &self._gst_reserved })
1038            .field("abi", unsafe { &self.abi })
1039            .finish()
1040    }
1041}
1042
1043#[derive(Copy, Clone)]
1044#[repr(C)]
1045pub union GstPad_ABI {
1046    pub _gst_reserved: [gpointer; 4],
1047    pub abi: GstPad_ABI_abi,
1048}
1049
1050impl ::std::fmt::Debug for GstPad_ABI {
1051    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1052        f.debug_struct(&format!("GstPad_ABI @ {self:p}"))
1053            .field("_gst_reserved", unsafe { &self._gst_reserved })
1054            .field("abi", unsafe { &self.abi })
1055            .finish()
1056    }
1057}
1058
1059#[derive(Copy, Clone)]
1060#[repr(C)]
1061pub union GstTraceValue {
1062    pub v_boolean: gboolean,
1063    pub v_int: c_int,
1064    pub v_uint: c_uint,
1065    pub v_int64: i64,
1066    pub v_uint64: u64,
1067    pub v_double: c_double,
1068    pub v_string: *const c_char,
1069    pub v_structure: *mut GstStructure,
1070    pub v_object: *mut gobject::GObject,
1071    pub _gst_reserved: [gpointer; 4],
1072}
1073
1074impl ::std::fmt::Debug for GstTraceValue {
1075    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1076        f.debug_struct(&format!("GstTraceValue @ {self:p}"))
1077            .field("v_boolean", unsafe { &self.v_boolean })
1078            .field("v_int", unsafe { &self.v_int })
1079            .field("v_uint", unsafe { &self.v_uint })
1080            .field("v_int64", unsafe { &self.v_int64 })
1081            .field("v_uint64", unsafe { &self.v_uint64 })
1082            .field("v_double", unsafe { &self.v_double })
1083            .field("v_string", unsafe { &self.v_string })
1084            .field("v_structure", unsafe { &self.v_structure })
1085            .field("v_object", unsafe { &self.v_object })
1086            .finish()
1087    }
1088}
1089
1090// Callbacks
1091pub type GstAllocationMetaParamsAggregator = Option<
1092    unsafe extern "C" fn(
1093        *mut *mut GstStructure,
1094        *const GstStructure,
1095        *const GstStructure,
1096    ) -> gboolean,
1097>;
1098pub type GstBufferForeachMetaFunc =
1099    Option<unsafe extern "C" fn(*mut GstBuffer, *mut *mut GstMeta, gpointer) -> gboolean>;
1100pub type GstBufferListFunc =
1101    Option<unsafe extern "C" fn(*mut *mut GstBuffer, c_uint, gpointer) -> gboolean>;
1102pub type GstBusFunc =
1103    Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage, gpointer) -> gboolean>;
1104pub type GstBusSyncHandler =
1105    Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage, gpointer) -> GstBusSyncReply>;
1106pub type GstCallAsyncFunc = Option<unsafe extern "C" fn(gpointer)>;
1107pub type GstCapsFilterMapFunc =
1108    Option<unsafe extern "C" fn(*mut GstCapsFeatures, *mut GstStructure, gpointer) -> gboolean>;
1109pub type GstCapsForeachFunc =
1110    Option<unsafe extern "C" fn(*mut GstCapsFeatures, *mut GstStructure, gpointer) -> gboolean>;
1111pub type GstCapsMapFunc =
1112    Option<unsafe extern "C" fn(*mut GstCapsFeatures, *mut GstStructure, gpointer) -> gboolean>;
1113pub type GstClockCallback =
1114    Option<unsafe extern "C" fn(*mut GstClock, GstClockTime, GstClockID, gpointer) -> gboolean>;
1115pub type GstControlBindingConvert =
1116    Option<unsafe extern "C" fn(*mut GstControlBinding, c_double, *mut gobject::GValue)>;
1117pub type GstControlSourceGetValue =
1118    Option<unsafe extern "C" fn(*mut GstControlSource, GstClockTime, *mut c_double) -> gboolean>;
1119pub type GstControlSourceGetValueArray = Option<
1120    unsafe extern "C" fn(
1121        *mut GstControlSource,
1122        GstClockTime,
1123        GstClockTime,
1124        c_uint,
1125        *mut c_double,
1126    ) -> gboolean,
1127>;
1128pub type GstCustomMetaTransformFunction = Option<
1129    unsafe extern "C" fn(
1130        *mut GstBuffer,
1131        *mut GstCustomMeta,
1132        *mut GstBuffer,
1133        glib::GQuark,
1134        gpointer,
1135        gpointer,
1136    ) -> gboolean,
1137>;
1138pub type GstDebugFuncPtr = Option<unsafe extern "C" fn()>;
1139pub type GstElementCallAsyncFunc = Option<unsafe extern "C" fn(*mut GstElement, gpointer)>;
1140pub type GstElementForeachPadFunc =
1141    Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad, gpointer) -> gboolean>;
1142pub type GstIteratorCopyFunction =
1143    Option<unsafe extern "C" fn(*const GstIterator, *mut GstIterator)>;
1144pub type GstIteratorFoldFunction = Option<
1145    unsafe extern "C" fn(*const gobject::GValue, *mut gobject::GValue, gpointer) -> gboolean,
1146>;
1147pub type GstIteratorForeachFunction =
1148    Option<unsafe extern "C" fn(*const gobject::GValue, gpointer)>;
1149pub type GstIteratorFreeFunction = Option<unsafe extern "C" fn(*mut GstIterator)>;
1150pub type GstIteratorItemFunction =
1151    Option<unsafe extern "C" fn(*mut GstIterator, *const gobject::GValue) -> GstIteratorItem>;
1152pub type GstIteratorNextFunction =
1153    Option<unsafe extern "C" fn(*mut GstIterator, *mut gobject::GValue) -> GstIteratorResult>;
1154pub type GstIteratorResyncFunction = Option<unsafe extern "C" fn(*mut GstIterator)>;
1155pub type GstLogFunction = Option<
1156    unsafe extern "C" fn(
1157        *mut GstDebugCategory,
1158        GstDebugLevel,
1159        *const c_char,
1160        *const c_char,
1161        c_int,
1162        *mut gobject::GObject,
1163        *mut GstDebugMessage,
1164        gpointer,
1165    ),
1166>;
1167pub type GstMemoryCopyFunction =
1168    Option<unsafe extern "C" fn(*mut GstMemory, ssize_t, ssize_t) -> *mut GstMemory>;
1169pub type GstMemoryIsSpanFunction =
1170    Option<unsafe extern "C" fn(*mut GstMemory, *mut GstMemory, *mut size_t) -> gboolean>;
1171pub type GstMemoryMapFullFunction =
1172    Option<unsafe extern "C" fn(*mut GstMemory, *mut GstMapInfo, size_t) -> gpointer>;
1173pub type GstMemoryMapFunction =
1174    Option<unsafe extern "C" fn(*mut GstMemory, size_t, GstMapFlags) -> gpointer>;
1175pub type GstMemoryShareFunction =
1176    Option<unsafe extern "C" fn(*mut GstMemory, ssize_t, ssize_t) -> *mut GstMemory>;
1177pub type GstMemoryUnmapFullFunction = Option<unsafe extern "C" fn(*mut GstMemory, *mut GstMapInfo)>;
1178pub type GstMemoryUnmapFunction = Option<unsafe extern "C" fn(*mut GstMemory)>;
1179pub type GstMetaClearFunction = Option<unsafe extern "C" fn(*mut GstBuffer, *mut GstMeta)>;
1180pub type GstMetaDeserializeFunction = Option<
1181    unsafe extern "C" fn(*const GstMetaInfo, *mut GstBuffer, *const u8, size_t, u8) -> *mut GstMeta,
1182>;
1183pub type GstMetaFreeFunction = Option<unsafe extern "C" fn(*mut GstMeta, *mut GstBuffer)>;
1184pub type GstMetaInitFunction =
1185    Option<unsafe extern "C" fn(*mut GstMeta, gpointer, *mut GstBuffer) -> gboolean>;
1186pub type GstMetaSerializeFunction =
1187    Option<unsafe extern "C" fn(*const GstMeta, *mut GstByteArrayInterface, *mut u8) -> gboolean>;
1188pub type GstMetaTransformFunction = Option<
1189    unsafe extern "C" fn(
1190        *mut GstBuffer,
1191        *mut GstMeta,
1192        *mut GstBuffer,
1193        glib::GQuark,
1194        gpointer,
1195    ) -> gboolean,
1196>;
1197pub type GstMiniObjectCopyFunction =
1198    Option<unsafe extern "C" fn(*const GstMiniObject) -> *mut GstMiniObject>;
1199pub type GstMiniObjectDisposeFunction =
1200    Option<unsafe extern "C" fn(*mut GstMiniObject) -> gboolean>;
1201pub type GstMiniObjectFreeFunction = Option<unsafe extern "C" fn(*mut GstMiniObject)>;
1202pub type GstMiniObjectNotify = Option<unsafe extern "C" fn(gpointer, *mut GstMiniObject)>;
1203pub type GstObjectCallAsyncFunc = Option<unsafe extern "C" fn(*mut GstObject, gpointer)>;
1204pub type GstPadActivateFunction =
1205    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject) -> gboolean>;
1206pub type GstPadActivateModeFunction =
1207    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, GstPadMode, gboolean) -> gboolean>;
1208pub type GstPadChainFunction =
1209    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstBuffer) -> GstFlowReturn>;
1210pub type GstPadChainListFunction =
1211    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstBufferList) -> GstFlowReturn>;
1212pub type GstPadEventFullFunction =
1213    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstEvent) -> GstFlowReturn>;
1214pub type GstPadEventFunction =
1215    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstEvent) -> gboolean>;
1216pub type GstPadForwardFunction = Option<unsafe extern "C" fn(*mut GstPad, gpointer) -> gboolean>;
1217pub type GstPadGetRangeFunction = Option<
1218    unsafe extern "C" fn(
1219        *mut GstPad,
1220        *mut GstObject,
1221        u64,
1222        c_uint,
1223        *mut *mut GstBuffer,
1224    ) -> GstFlowReturn,
1225>;
1226pub type GstPadIterIntLinkFunction =
1227    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject) -> *mut GstIterator>;
1228pub type GstPadLinkFunction =
1229    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstPad) -> GstPadLinkReturn>;
1230pub type GstPadProbeCallback =
1231    Option<unsafe extern "C" fn(*mut GstPad, *mut GstPadProbeInfo, gpointer) -> GstPadProbeReturn>;
1232pub type GstPadQueryFunction =
1233    Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject, *mut GstQuery) -> gboolean>;
1234pub type GstPadStickyEventsForeachFunction =
1235    Option<unsafe extern "C" fn(*mut GstPad, *mut *mut GstEvent, gpointer) -> gboolean>;
1236pub type GstPadUnlinkFunction = Option<unsafe extern "C" fn(*mut GstPad, *mut GstObject)>;
1237pub type GstPluginFeatureFilter =
1238    Option<unsafe extern "C" fn(*mut GstPluginFeature, gpointer) -> gboolean>;
1239pub type GstPluginFilter = Option<unsafe extern "C" fn(*mut GstPlugin, gpointer) -> gboolean>;
1240pub type GstPluginInitFullFunc = Option<unsafe extern "C" fn(*mut GstPlugin, gpointer) -> gboolean>;
1241pub type GstPluginInitFunc = Option<unsafe extern "C" fn(*mut GstPlugin) -> gboolean>;
1242pub type GstPromiseChangeFunc = Option<unsafe extern "C" fn(*mut GstPromise, gpointer)>;
1243pub type GstStructureFilterMapFunc =
1244    Option<unsafe extern "C" fn(glib::GQuark, *mut gobject::GValue, gpointer) -> gboolean>;
1245pub type GstStructureFilterMapIdStrFunc =
1246    Option<unsafe extern "C" fn(*const GstIdStr, *mut gobject::GValue, gpointer) -> gboolean>;
1247pub type GstStructureForeachFunc =
1248    Option<unsafe extern "C" fn(glib::GQuark, *const gobject::GValue, gpointer) -> gboolean>;
1249pub type GstStructureForeachIdStrFunc =
1250    Option<unsafe extern "C" fn(*const GstIdStr, *const gobject::GValue, gpointer) -> gboolean>;
1251pub type GstStructureMapFunc =
1252    Option<unsafe extern "C" fn(glib::GQuark, *mut gobject::GValue, gpointer) -> gboolean>;
1253pub type GstStructureMapIdStrFunc =
1254    Option<unsafe extern "C" fn(*const GstIdStr, *mut gobject::GValue, gpointer) -> gboolean>;
1255pub type GstTagForeachFunc =
1256    Option<unsafe extern "C" fn(*const GstTagList, *const c_char, gpointer)>;
1257pub type GstTagMergeFunc =
1258    Option<unsafe extern "C" fn(*mut gobject::GValue, *const gobject::GValue)>;
1259pub type GstTaskFunction = Option<unsafe extern "C" fn(gpointer)>;
1260pub type GstTaskPoolFunction = Option<unsafe extern "C" fn(*mut c_void)>;
1261pub type GstTaskThreadFunc =
1262    Option<unsafe extern "C" fn(*mut GstTask, *mut glib::GThread, gpointer)>;
1263pub type GstTypeFindFunction = Option<unsafe extern "C" fn(*mut GstTypeFind, gpointer)>;
1264pub type GstValueCompareFunc =
1265    Option<unsafe extern "C" fn(*const gobject::GValue, *const gobject::GValue) -> c_int>;
1266pub type GstValueDeserializeFunc =
1267    Option<unsafe extern "C" fn(*mut gobject::GValue, *const c_char) -> gboolean>;
1268pub type GstValueDeserializeWithPSpecFunc = Option<
1269    unsafe extern "C" fn(*mut gobject::GValue, *const c_char, *mut gobject::GParamSpec) -> gboolean,
1270>;
1271pub type GstValueHashFunc =
1272    Option<unsafe extern "C" fn(*const gobject::GValue, *mut c_uint) -> gboolean>;
1273pub type GstValueSerializeFunc =
1274    Option<unsafe extern "C" fn(*const gobject::GValue) -> *mut c_char>;
1275
1276// Records
1277#[derive(Copy, Clone)]
1278#[repr(C)]
1279pub struct GstAllocationParams {
1280    pub flags: GstMemoryFlags,
1281    pub align: size_t,
1282    pub prefix: size_t,
1283    pub padding: size_t,
1284    pub _gst_reserved: [gpointer; 4],
1285}
1286
1287impl ::std::fmt::Debug for GstAllocationParams {
1288    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1289        f.debug_struct(&format!("GstAllocationParams @ {self:p}"))
1290            .field("flags", &self.flags)
1291            .field("align", &self.align)
1292            .field("prefix", &self.prefix)
1293            .field("padding", &self.padding)
1294            .finish()
1295    }
1296}
1297
1298#[derive(Copy, Clone)]
1299#[repr(C)]
1300pub struct GstAllocatorClass {
1301    pub object_class: GstObjectClass,
1302    pub alloc: Option<
1303        unsafe extern "C" fn(*mut GstAllocator, size_t, *mut GstAllocationParams) -> *mut GstMemory,
1304    >,
1305    pub free: Option<unsafe extern "C" fn(*mut GstAllocator, *mut GstMemory)>,
1306    pub _gst_reserved: [gpointer; 4],
1307}
1308
1309impl ::std::fmt::Debug for GstAllocatorClass {
1310    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1311        f.debug_struct(&format!("GstAllocatorClass @ {self:p}"))
1312            .field("object_class", &self.object_class)
1313            .field("alloc", &self.alloc)
1314            .field("free", &self.free)
1315            .finish()
1316    }
1317}
1318
1319#[repr(C)]
1320#[allow(dead_code)]
1321pub struct _GstAllocatorPrivate {
1322    _data: [u8; 0],
1323    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1324}
1325
1326pub type GstAllocatorPrivate = _GstAllocatorPrivate;
1327
1328#[repr(C)]
1329#[allow(dead_code)]
1330pub struct GstAtomicQueue {
1331    _data: [u8; 0],
1332    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1333}
1334
1335impl ::std::fmt::Debug for GstAtomicQueue {
1336    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1337        f.debug_struct(&format!("GstAtomicQueue @ {self:p}"))
1338            .finish()
1339    }
1340}
1341
1342#[derive(Copy, Clone)]
1343#[repr(C)]
1344pub struct GstBinClass {
1345    pub parent_class: GstElementClass,
1346    pub pool: *mut glib::GThreadPool,
1347    pub element_added: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement)>,
1348    pub element_removed: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement)>,
1349    pub add_element: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement) -> gboolean>,
1350    pub remove_element: Option<unsafe extern "C" fn(*mut GstBin, *mut GstElement) -> gboolean>,
1351    pub handle_message: Option<unsafe extern "C" fn(*mut GstBin, *mut GstMessage)>,
1352    pub do_latency: Option<unsafe extern "C" fn(*mut GstBin) -> gboolean>,
1353    pub deep_element_added: Option<unsafe extern "C" fn(*mut GstBin, *mut GstBin, *mut GstElement)>,
1354    pub deep_element_removed:
1355        Option<unsafe extern "C" fn(*mut GstBin, *mut GstBin, *mut GstElement)>,
1356    pub _gst_reserved: [gpointer; 2],
1357}
1358
1359impl ::std::fmt::Debug for GstBinClass {
1360    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1361        f.debug_struct(&format!("GstBinClass @ {self:p}"))
1362            .field("parent_class", &self.parent_class)
1363            .field("element_added", &self.element_added)
1364            .field("element_removed", &self.element_removed)
1365            .field("add_element", &self.add_element)
1366            .field("remove_element", &self.remove_element)
1367            .field("handle_message", &self.handle_message)
1368            .field("do_latency", &self.do_latency)
1369            .field("deep_element_added", &self.deep_element_added)
1370            .field("deep_element_removed", &self.deep_element_removed)
1371            .finish()
1372    }
1373}
1374
1375#[repr(C)]
1376#[allow(dead_code)]
1377pub struct _GstBinPrivate {
1378    _data: [u8; 0],
1379    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1380}
1381
1382pub type GstBinPrivate = _GstBinPrivate;
1383
1384#[derive(Copy, Clone)]
1385#[repr(C)]
1386pub struct GstBuffer {
1387    pub mini_object: GstMiniObject,
1388    pub pool: *mut GstBufferPool,
1389    pub pts: GstClockTime,
1390    pub dts: GstClockTime,
1391    pub duration: GstClockTime,
1392    pub offset: u64,
1393    pub offset_end: u64,
1394}
1395
1396impl ::std::fmt::Debug for GstBuffer {
1397    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1398        f.debug_struct(&format!("GstBuffer @ {self:p}"))
1399            .field("mini_object", &self.mini_object)
1400            .field("pool", &self.pool)
1401            .field("pts", &self.pts)
1402            .field("dts", &self.dts)
1403            .field("duration", &self.duration)
1404            .field("offset", &self.offset)
1405            .field("offset_end", &self.offset_end)
1406            .finish()
1407    }
1408}
1409
1410#[repr(C)]
1411#[allow(dead_code)]
1412pub struct GstBufferList {
1413    _data: [u8; 0],
1414    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1415}
1416
1417impl ::std::fmt::Debug for GstBufferList {
1418    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1419        f.debug_struct(&format!("GstBufferList @ {self:p}"))
1420            .finish()
1421    }
1422}
1423
1424#[derive(Copy, Clone)]
1425#[repr(C)]
1426pub struct GstBufferPoolAcquireParams {
1427    pub format: GstFormat,
1428    pub start: i64,
1429    pub stop: i64,
1430    pub flags: GstBufferPoolAcquireFlags,
1431    pub _gst_reserved: [gpointer; 4],
1432}
1433
1434impl ::std::fmt::Debug for GstBufferPoolAcquireParams {
1435    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1436        f.debug_struct(&format!("GstBufferPoolAcquireParams @ {self:p}"))
1437            .field("format", &self.format)
1438            .field("start", &self.start)
1439            .field("stop", &self.stop)
1440            .field("flags", &self.flags)
1441            .finish()
1442    }
1443}
1444
1445#[derive(Copy, Clone)]
1446#[repr(C)]
1447pub struct GstBufferPoolClass {
1448    pub object_class: GstObjectClass,
1449    pub get_options: Option<unsafe extern "C" fn(*mut GstBufferPool) -> *mut *const c_char>,
1450    pub set_config: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstStructure) -> gboolean>,
1451    pub start: Option<unsafe extern "C" fn(*mut GstBufferPool) -> gboolean>,
1452    pub stop: Option<unsafe extern "C" fn(*mut GstBufferPool) -> gboolean>,
1453    pub acquire_buffer: Option<
1454        unsafe extern "C" fn(
1455            *mut GstBufferPool,
1456            *mut *mut GstBuffer,
1457            *mut GstBufferPoolAcquireParams,
1458        ) -> GstFlowReturn,
1459    >,
1460    pub alloc_buffer: Option<
1461        unsafe extern "C" fn(
1462            *mut GstBufferPool,
1463            *mut *mut GstBuffer,
1464            *mut GstBufferPoolAcquireParams,
1465        ) -> GstFlowReturn,
1466    >,
1467    pub reset_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1468    pub release_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1469    pub free_buffer: Option<unsafe extern "C" fn(*mut GstBufferPool, *mut GstBuffer)>,
1470    pub flush_start: Option<unsafe extern "C" fn(*mut GstBufferPool)>,
1471    pub flush_stop: Option<unsafe extern "C" fn(*mut GstBufferPool)>,
1472    pub _gst_reserved: [gpointer; 2],
1473}
1474
1475impl ::std::fmt::Debug for GstBufferPoolClass {
1476    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1477        f.debug_struct(&format!("GstBufferPoolClass @ {self:p}"))
1478            .field("object_class", &self.object_class)
1479            .field("get_options", &self.get_options)
1480            .field("set_config", &self.set_config)
1481            .field("start", &self.start)
1482            .field("stop", &self.stop)
1483            .field("acquire_buffer", &self.acquire_buffer)
1484            .field("alloc_buffer", &self.alloc_buffer)
1485            .field("reset_buffer", &self.reset_buffer)
1486            .field("release_buffer", &self.release_buffer)
1487            .field("free_buffer", &self.free_buffer)
1488            .field("flush_start", &self.flush_start)
1489            .field("flush_stop", &self.flush_stop)
1490            .finish()
1491    }
1492}
1493
1494#[repr(C)]
1495#[allow(dead_code)]
1496pub struct _GstBufferPoolPrivate {
1497    _data: [u8; 0],
1498    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1499}
1500
1501pub type GstBufferPoolPrivate = _GstBufferPoolPrivate;
1502
1503#[derive(Copy, Clone)]
1504#[repr(C)]
1505pub struct GstBusClass {
1506    pub parent_class: GstObjectClass,
1507    pub message: Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage)>,
1508    pub sync_message: Option<unsafe extern "C" fn(*mut GstBus, *mut GstMessage)>,
1509    pub _gst_reserved: [gpointer; 4],
1510}
1511
1512impl ::std::fmt::Debug for GstBusClass {
1513    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1514        f.debug_struct(&format!("GstBusClass @ {self:p}"))
1515            .field("parent_class", &self.parent_class)
1516            .field("message", &self.message)
1517            .field("sync_message", &self.sync_message)
1518            .finish()
1519    }
1520}
1521
1522#[repr(C)]
1523#[allow(dead_code)]
1524pub struct _GstBusPrivate {
1525    _data: [u8; 0],
1526    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1527}
1528
1529pub type GstBusPrivate = _GstBusPrivate;
1530
1531#[derive(Copy, Clone)]
1532#[repr(C)]
1533pub struct GstByteArrayInterface {
1534    pub data: *mut u8,
1535    pub len: size_t,
1536    pub resize: Option<unsafe extern "C" fn(*mut GstByteArrayInterface, size_t) -> gboolean>,
1537    pub _gst_reserved: [gpointer; 4],
1538}
1539
1540impl ::std::fmt::Debug for GstByteArrayInterface {
1541    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1542        f.debug_struct(&format!("GstByteArrayInterface @ {self:p}"))
1543            .field("data", &self.data)
1544            .field("len", &self.len)
1545            .field("resize", &self.resize)
1546            .finish()
1547    }
1548}
1549
1550#[derive(Copy, Clone)]
1551#[repr(C)]
1552pub struct GstCaps {
1553    pub mini_object: GstMiniObject,
1554}
1555
1556impl ::std::fmt::Debug for GstCaps {
1557    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1558        f.debug_struct(&format!("GstCaps @ {self:p}"))
1559            .field("mini_object", &self.mini_object)
1560            .finish()
1561    }
1562}
1563
1564#[repr(C)]
1565#[allow(dead_code)]
1566pub struct GstCapsFeatures {
1567    _data: [u8; 0],
1568    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1569}
1570
1571impl ::std::fmt::Debug for GstCapsFeatures {
1572    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1573        f.debug_struct(&format!("GstCapsFeatures @ {self:p}"))
1574            .finish()
1575    }
1576}
1577
1578#[derive(Copy, Clone)]
1579#[repr(C)]
1580pub struct GstChildProxyInterface {
1581    pub parent: gobject::GTypeInterface,
1582    pub get_child_by_name:
1583        Option<unsafe extern "C" fn(*mut GstChildProxy, *const c_char) -> *mut gobject::GObject>,
1584    pub get_child_by_index:
1585        Option<unsafe extern "C" fn(*mut GstChildProxy, c_uint) -> *mut gobject::GObject>,
1586    pub get_children_count: Option<unsafe extern "C" fn(*mut GstChildProxy) -> c_uint>,
1587    pub child_added:
1588        Option<unsafe extern "C" fn(*mut GstChildProxy, *mut gobject::GObject, *const c_char)>,
1589    pub child_removed:
1590        Option<unsafe extern "C" fn(*mut GstChildProxy, *mut gobject::GObject, *const c_char)>,
1591    pub _gst_reserved: [gpointer; 4],
1592}
1593
1594impl ::std::fmt::Debug for GstChildProxyInterface {
1595    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1596        f.debug_struct(&format!("GstChildProxyInterface @ {self:p}"))
1597            .field("parent", &self.parent)
1598            .field("get_child_by_name", &self.get_child_by_name)
1599            .field("get_child_by_index", &self.get_child_by_index)
1600            .field("get_children_count", &self.get_children_count)
1601            .field("child_added", &self.child_added)
1602            .field("child_removed", &self.child_removed)
1603            .finish()
1604    }
1605}
1606
1607#[derive(Copy, Clone)]
1608#[repr(C)]
1609pub struct GstClockClass {
1610    pub parent_class: GstObjectClass,
1611    pub change_resolution:
1612        Option<unsafe extern "C" fn(*mut GstClock, GstClockTime, GstClockTime) -> GstClockTime>,
1613    pub get_resolution: Option<unsafe extern "C" fn(*mut GstClock) -> GstClockTime>,
1614    pub get_internal_time: Option<unsafe extern "C" fn(*mut GstClock) -> GstClockTime>,
1615    pub wait: Option<
1616        unsafe extern "C" fn(
1617            *mut GstClock,
1618            *mut GstClockEntry,
1619            *mut GstClockTimeDiff,
1620        ) -> GstClockReturn,
1621    >,
1622    pub wait_async:
1623        Option<unsafe extern "C" fn(*mut GstClock, *mut GstClockEntry) -> GstClockReturn>,
1624    pub unschedule: Option<unsafe extern "C" fn(*mut GstClock, *mut GstClockEntry)>,
1625    pub _gst_reserved: [gpointer; 4],
1626}
1627
1628impl ::std::fmt::Debug for GstClockClass {
1629    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1630        f.debug_struct(&format!("GstClockClass @ {self:p}"))
1631            .field("parent_class", &self.parent_class)
1632            .field("change_resolution", &self.change_resolution)
1633            .field("get_resolution", &self.get_resolution)
1634            .field("get_internal_time", &self.get_internal_time)
1635            .field("wait", &self.wait)
1636            .field("wait_async", &self.wait_async)
1637            .field("unschedule", &self.unschedule)
1638            .finish()
1639    }
1640}
1641
1642#[derive(Copy, Clone)]
1643#[repr(C)]
1644pub struct GstClockEntry {
1645    pub refcount: c_int,
1646    pub clock: *mut GstClock,
1647    pub type_: GstClockEntryType,
1648    pub time: GstClockTime,
1649    pub interval: GstClockTime,
1650    pub status: GstClockReturn,
1651    pub func: GstClockCallback,
1652    pub user_data: gpointer,
1653    pub destroy_data: glib::GDestroyNotify,
1654    pub unscheduled: gboolean,
1655    pub woken_up: gboolean,
1656    pub _gst_reserved: [gpointer; 4],
1657}
1658
1659impl ::std::fmt::Debug for GstClockEntry {
1660    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1661        f.debug_struct(&format!("GstClockEntry @ {self:p}"))
1662            .field("refcount", &self.refcount)
1663            .finish()
1664    }
1665}
1666
1667#[repr(C)]
1668#[allow(dead_code)]
1669pub struct _GstClockPrivate {
1670    _data: [u8; 0],
1671    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1672}
1673
1674pub type GstClockPrivate = _GstClockPrivate;
1675
1676#[repr(C)]
1677#[allow(dead_code)]
1678pub struct GstContext {
1679    _data: [u8; 0],
1680    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1681}
1682
1683impl ::std::fmt::Debug for GstContext {
1684    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1685        f.debug_struct(&format!("GstContext @ {self:p}")).finish()
1686    }
1687}
1688
1689#[derive(Copy, Clone)]
1690#[repr(C)]
1691pub struct GstControlBindingClass {
1692    pub parent_class: GstObjectClass,
1693    pub sync_values: Option<
1694        unsafe extern "C" fn(
1695            *mut GstControlBinding,
1696            *mut GstObject,
1697            GstClockTime,
1698            GstClockTime,
1699        ) -> gboolean,
1700    >,
1701    pub get_value:
1702        Option<unsafe extern "C" fn(*mut GstControlBinding, GstClockTime) -> *mut gobject::GValue>,
1703    pub get_value_array: Option<
1704        unsafe extern "C" fn(
1705            *mut GstControlBinding,
1706            GstClockTime,
1707            GstClockTime,
1708            c_uint,
1709            gpointer,
1710        ) -> gboolean,
1711    >,
1712    pub get_g_value_array: Option<
1713        unsafe extern "C" fn(
1714            *mut GstControlBinding,
1715            GstClockTime,
1716            GstClockTime,
1717            c_uint,
1718            *mut gobject::GValue,
1719        ) -> gboolean,
1720    >,
1721    pub _gst_reserved: [gpointer; 4],
1722}
1723
1724impl ::std::fmt::Debug for GstControlBindingClass {
1725    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1726        f.debug_struct(&format!("GstControlBindingClass @ {self:p}"))
1727            .field("parent_class", &self.parent_class)
1728            .field("sync_values", &self.sync_values)
1729            .field("get_value", &self.get_value)
1730            .field("get_value_array", &self.get_value_array)
1731            .field("get_g_value_array", &self.get_g_value_array)
1732            .finish()
1733    }
1734}
1735
1736#[repr(C)]
1737#[allow(dead_code)]
1738pub struct _GstControlBindingPrivate {
1739    _data: [u8; 0],
1740    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1741}
1742
1743pub type GstControlBindingPrivate = _GstControlBindingPrivate;
1744
1745#[derive(Copy, Clone)]
1746#[repr(C)]
1747pub struct GstControlBinding_ABI_abi {
1748    pub priv_: *mut GstControlBindingPrivate,
1749}
1750
1751impl ::std::fmt::Debug for GstControlBinding_ABI_abi {
1752    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1753        f.debug_struct(&format!("GstControlBinding_ABI_abi @ {self:p}"))
1754            .finish()
1755    }
1756}
1757
1758#[derive(Copy, Clone)]
1759#[repr(C)]
1760pub struct GstControlSourceClass {
1761    pub parent_class: GstObjectClass,
1762    pub _gst_reserved: [gpointer; 4],
1763}
1764
1765impl ::std::fmt::Debug for GstControlSourceClass {
1766    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1767        f.debug_struct(&format!("GstControlSourceClass @ {self:p}"))
1768            .field("parent_class", &self.parent_class)
1769            .finish()
1770    }
1771}
1772
1773#[derive(Copy, Clone)]
1774#[repr(C)]
1775pub struct GstCustomMeta {
1776    pub meta: GstMeta,
1777    pub structure: *mut GstStructure,
1778}
1779
1780impl ::std::fmt::Debug for GstCustomMeta {
1781    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1782        f.debug_struct(&format!("GstCustomMeta @ {self:p}"))
1783            .field("meta", &self.meta)
1784            .field("structure", &self.structure)
1785            .finish()
1786    }
1787}
1788
1789#[repr(C)]
1790#[allow(dead_code)]
1791pub struct GstDateTime {
1792    _data: [u8; 0],
1793    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1794}
1795
1796impl ::std::fmt::Debug for GstDateTime {
1797    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1798        f.debug_struct(&format!("GstDateTime @ {self:p}")).finish()
1799    }
1800}
1801
1802#[derive(Copy, Clone)]
1803#[repr(C)]
1804pub struct GstDebugCategory {
1805    pub threshold: c_int,
1806    pub color: c_uint,
1807    pub name: *const c_char,
1808    pub description: *const c_char,
1809}
1810
1811impl ::std::fmt::Debug for GstDebugCategory {
1812    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1813        f.debug_struct(&format!("GstDebugCategory @ {self:p}"))
1814            .finish()
1815    }
1816}
1817
1818#[repr(C)]
1819#[allow(dead_code)]
1820pub struct _GstDebugMessage {
1821    _data: [u8; 0],
1822    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1823}
1824
1825pub type GstDebugMessage = _GstDebugMessage;
1826
1827#[derive(Copy, Clone)]
1828#[repr(C)]
1829pub struct GstDeviceClass {
1830    pub parent_class: GstObjectClass,
1831    pub create_element:
1832        Option<unsafe extern "C" fn(*mut GstDevice, *const c_char) -> *mut GstElement>,
1833    pub reconfigure_element:
1834        Option<unsafe extern "C" fn(*mut GstDevice, *mut GstElement) -> gboolean>,
1835    pub _gst_reserved: [gpointer; 4],
1836}
1837
1838impl ::std::fmt::Debug for GstDeviceClass {
1839    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1840        f.debug_struct(&format!("GstDeviceClass @ {self:p}"))
1841            .field("parent_class", &self.parent_class)
1842            .field("create_element", &self.create_element)
1843            .field("reconfigure_element", &self.reconfigure_element)
1844            .finish()
1845    }
1846}
1847
1848#[derive(Copy, Clone)]
1849#[repr(C)]
1850pub struct GstDeviceMonitorClass {
1851    pub parent_class: GstObjectClass,
1852    pub _gst_reserved: [gpointer; 4],
1853}
1854
1855impl ::std::fmt::Debug for GstDeviceMonitorClass {
1856    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1857        f.debug_struct(&format!("GstDeviceMonitorClass @ {self:p}"))
1858            .field("parent_class", &self.parent_class)
1859            .finish()
1860    }
1861}
1862
1863#[repr(C)]
1864#[allow(dead_code)]
1865pub struct _GstDeviceMonitorPrivate {
1866    _data: [u8; 0],
1867    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1868}
1869
1870pub type GstDeviceMonitorPrivate = _GstDeviceMonitorPrivate;
1871
1872#[repr(C)]
1873#[allow(dead_code)]
1874pub struct _GstDevicePrivate {
1875    _data: [u8; 0],
1876    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1877}
1878
1879pub type GstDevicePrivate = _GstDevicePrivate;
1880
1881#[derive(Copy, Clone)]
1882#[repr(C)]
1883pub struct GstDeviceProviderClass {
1884    pub parent_class: GstObjectClass,
1885    pub factory: *mut GstDeviceProviderFactory,
1886    pub probe: Option<unsafe extern "C" fn(*mut GstDeviceProvider) -> *mut glib::GList>,
1887    pub start: Option<unsafe extern "C" fn(*mut GstDeviceProvider) -> gboolean>,
1888    pub stop: Option<unsafe extern "C" fn(*mut GstDeviceProvider)>,
1889    pub metadata: gpointer,
1890    pub _gst_reserved: [gpointer; 4],
1891}
1892
1893impl ::std::fmt::Debug for GstDeviceProviderClass {
1894    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1895        f.debug_struct(&format!("GstDeviceProviderClass @ {self:p}"))
1896            .field("parent_class", &self.parent_class)
1897            .field("factory", &self.factory)
1898            .field("probe", &self.probe)
1899            .field("start", &self.start)
1900            .field("stop", &self.stop)
1901            .finish()
1902    }
1903}
1904
1905#[repr(C)]
1906#[allow(dead_code)]
1907pub struct _GstDeviceProviderFactoryClass {
1908    _data: [u8; 0],
1909    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1910}
1911
1912pub type GstDeviceProviderFactoryClass = _GstDeviceProviderFactoryClass;
1913
1914#[repr(C)]
1915#[allow(dead_code)]
1916pub struct _GstDeviceProviderPrivate {
1917    _data: [u8; 0],
1918    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1919}
1920
1921pub type GstDeviceProviderPrivate = _GstDeviceProviderPrivate;
1922
1923#[repr(C)]
1924#[allow(dead_code)]
1925pub struct _GstDynamicTypeFactoryClass {
1926    _data: [u8; 0],
1927    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1928}
1929
1930pub type GstDynamicTypeFactoryClass = _GstDynamicTypeFactoryClass;
1931
1932#[derive(Copy, Clone)]
1933#[repr(C)]
1934pub struct GstElementClass {
1935    pub parent_class: GstObjectClass,
1936    pub metadata: gpointer,
1937    pub elementfactory: *mut GstElementFactory,
1938    pub padtemplates: *mut glib::GList,
1939    pub numpadtemplates: c_int,
1940    pub pad_templ_cookie: u32,
1941    pub pad_added: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1942    pub pad_removed: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1943    pub no_more_pads: Option<unsafe extern "C" fn(*mut GstElement)>,
1944    pub request_new_pad: Option<
1945        unsafe extern "C" fn(
1946            *mut GstElement,
1947            *mut GstPadTemplate,
1948            *const c_char,
1949            *const GstCaps,
1950        ) -> *mut GstPad,
1951    >,
1952    pub release_pad: Option<unsafe extern "C" fn(*mut GstElement, *mut GstPad)>,
1953    pub get_state: Option<
1954        unsafe extern "C" fn(
1955            *mut GstElement,
1956            *mut GstState,
1957            *mut GstState,
1958            GstClockTime,
1959        ) -> GstStateChangeReturn,
1960    >,
1961    pub set_state: Option<unsafe extern "C" fn(*mut GstElement, GstState) -> GstStateChangeReturn>,
1962    pub change_state:
1963        Option<unsafe extern "C" fn(*mut GstElement, GstStateChange) -> GstStateChangeReturn>,
1964    pub state_changed: Option<unsafe extern "C" fn(*mut GstElement, GstState, GstState, GstState)>,
1965    pub set_bus: Option<unsafe extern "C" fn(*mut GstElement, *mut GstBus)>,
1966    pub provide_clock: Option<unsafe extern "C" fn(*mut GstElement) -> *mut GstClock>,
1967    pub set_clock: Option<unsafe extern "C" fn(*mut GstElement, *mut GstClock) -> gboolean>,
1968    pub send_event: Option<unsafe extern "C" fn(*mut GstElement, *mut GstEvent) -> gboolean>,
1969    pub query: Option<unsafe extern "C" fn(*mut GstElement, *mut GstQuery) -> gboolean>,
1970    pub post_message: Option<unsafe extern "C" fn(*mut GstElement, *mut GstMessage) -> gboolean>,
1971    pub set_context: Option<unsafe extern "C" fn(*mut GstElement, *mut GstContext)>,
1972    pub _gst_reserved: [gpointer; 18],
1973}
1974
1975impl ::std::fmt::Debug for GstElementClass {
1976    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1977        f.debug_struct(&format!("GstElementClass @ {self:p}"))
1978            .field("parent_class", &self.parent_class)
1979            .field("metadata", &self.metadata)
1980            .field("elementfactory", &self.elementfactory)
1981            .field("padtemplates", &self.padtemplates)
1982            .field("numpadtemplates", &self.numpadtemplates)
1983            .field("pad_templ_cookie", &self.pad_templ_cookie)
1984            .field("pad_added", &self.pad_added)
1985            .field("pad_removed", &self.pad_removed)
1986            .field("no_more_pads", &self.no_more_pads)
1987            .field("request_new_pad", &self.request_new_pad)
1988            .field("release_pad", &self.release_pad)
1989            .field("get_state", &self.get_state)
1990            .field("set_state", &self.set_state)
1991            .field("change_state", &self.change_state)
1992            .field("state_changed", &self.state_changed)
1993            .field("set_bus", &self.set_bus)
1994            .field("provide_clock", &self.provide_clock)
1995            .field("set_clock", &self.set_clock)
1996            .field("send_event", &self.send_event)
1997            .field("query", &self.query)
1998            .field("post_message", &self.post_message)
1999            .field("set_context", &self.set_context)
2000            .finish()
2001    }
2002}
2003
2004#[repr(C)]
2005#[allow(dead_code)]
2006pub struct _GstElementFactoryClass {
2007    _data: [u8; 0],
2008    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2009}
2010
2011pub type GstElementFactoryClass = _GstElementFactoryClass;
2012
2013#[derive(Copy, Clone)]
2014#[repr(C)]
2015pub struct GstEvent {
2016    pub mini_object: GstMiniObject,
2017    pub type_: GstEventType,
2018    pub timestamp: u64,
2019    pub seqnum: u32,
2020}
2021
2022impl ::std::fmt::Debug for GstEvent {
2023    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2024        f.debug_struct(&format!("GstEvent @ {self:p}"))
2025            .field("mini_object", &self.mini_object)
2026            .field("type_", &self.type_)
2027            .field("timestamp", &self.timestamp)
2028            .field("seqnum", &self.seqnum)
2029            .finish()
2030    }
2031}
2032
2033#[derive(Copy, Clone)]
2034#[repr(C)]
2035pub struct GstFormatDefinition {
2036    pub value: GstFormat,
2037    pub nick: *const c_char,
2038    pub description: *const c_char,
2039    pub quark: glib::GQuark,
2040}
2041
2042impl ::std::fmt::Debug for GstFormatDefinition {
2043    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2044        f.debug_struct(&format!("GstFormatDefinition @ {self:p}"))
2045            .field("value", &self.value)
2046            .field("nick", &self.nick)
2047            .field("description", &self.description)
2048            .field("quark", &self.quark)
2049            .finish()
2050    }
2051}
2052
2053#[derive(Copy, Clone)]
2054#[repr(C)]
2055pub struct GstGhostPadClass {
2056    pub parent_class: GstProxyPadClass,
2057    pub _gst_reserved: [gpointer; 4],
2058}
2059
2060impl ::std::fmt::Debug for GstGhostPadClass {
2061    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2062        f.debug_struct(&format!("GstGhostPadClass @ {self:p}"))
2063            .field("parent_class", &self.parent_class)
2064            .finish()
2065    }
2066}
2067
2068#[repr(C)]
2069#[allow(dead_code)]
2070pub struct _GstGhostPadPrivate {
2071    _data: [u8; 0],
2072    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2073}
2074
2075pub type GstGhostPadPrivate = _GstGhostPadPrivate;
2076
2077#[derive(Copy, Clone)]
2078#[repr(C)]
2079pub struct GstIterator {
2080    pub copy: GstIteratorCopyFunction,
2081    pub next: GstIteratorNextFunction,
2082    pub item: GstIteratorItemFunction,
2083    pub resync: GstIteratorResyncFunction,
2084    pub free: GstIteratorFreeFunction,
2085    pub pushed: *mut GstIterator,
2086    pub type_: GType,
2087    pub lock: *mut glib::GMutex,
2088    pub cookie: u32,
2089    pub master_cookie: *mut u32,
2090    pub size: c_uint,
2091    pub _gst_reserved: [gpointer; 4],
2092}
2093
2094impl ::std::fmt::Debug for GstIterator {
2095    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2096        f.debug_struct(&format!("GstIterator @ {self:p}"))
2097            .field("copy", &self.copy)
2098            .field("next", &self.next)
2099            .field("item", &self.item)
2100            .field("resync", &self.resync)
2101            .field("free", &self.free)
2102            .field("pushed", &self.pushed)
2103            .field("type_", &self.type_)
2104            .field("lock", &self.lock)
2105            .field("cookie", &self.cookie)
2106            .field("master_cookie", &self.master_cookie)
2107            .field("size", &self.size)
2108            .finish()
2109    }
2110}
2111
2112#[repr(C)]
2113#[allow(dead_code)]
2114pub struct _GstLogContext {
2115    _data: [u8; 0],
2116    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2117}
2118
2119pub type GstLogContext = _GstLogContext;
2120
2121#[repr(C)]
2122#[allow(dead_code)]
2123pub struct _GstLogContextBuilder {
2124    _data: [u8; 0],
2125    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2126}
2127
2128pub type GstLogContextBuilder = _GstLogContextBuilder;
2129
2130#[derive(Copy, Clone)]
2131#[repr(C)]
2132pub struct GstMapInfo {
2133    pub memory: *mut GstMemory,
2134    pub flags: GstMapFlags,
2135    pub data: *mut u8,
2136    pub size: size_t,
2137    pub maxsize: size_t,
2138    pub user_data: [gpointer; 4],
2139    pub _gst_reserved: [gpointer; 4],
2140}
2141
2142impl ::std::fmt::Debug for GstMapInfo {
2143    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2144        f.debug_struct(&format!("GstMapInfo @ {self:p}"))
2145            .field("memory", &self.memory)
2146            .field("flags", &self.flags)
2147            .field("data", &self.data)
2148            .field("size", &self.size)
2149            .field("maxsize", &self.maxsize)
2150            .field("user_data", &self.user_data)
2151            .finish()
2152    }
2153}
2154
2155#[derive(Copy, Clone)]
2156#[repr(C)]
2157pub struct GstMemory {
2158    pub mini_object: GstMiniObject,
2159    pub allocator: *mut GstAllocator,
2160    pub parent: *mut GstMemory,
2161    pub maxsize: size_t,
2162    pub align: size_t,
2163    pub offset: size_t,
2164    pub size: size_t,
2165}
2166
2167impl ::std::fmt::Debug for GstMemory {
2168    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2169        f.debug_struct(&format!("GstMemory @ {self:p}"))
2170            .field("mini_object", &self.mini_object)
2171            .field("allocator", &self.allocator)
2172            .field("parent", &self.parent)
2173            .field("maxsize", &self.maxsize)
2174            .field("align", &self.align)
2175            .field("offset", &self.offset)
2176            .field("size", &self.size)
2177            .finish()
2178    }
2179}
2180
2181#[derive(Copy, Clone)]
2182#[repr(C)]
2183pub struct GstMessage {
2184    pub mini_object: GstMiniObject,
2185    pub type_: GstMessageType,
2186    pub timestamp: u64,
2187    pub src: *mut GstObject,
2188    pub seqnum: u32,
2189    pub lock: glib::GMutex,
2190    pub cond: glib::GCond,
2191}
2192
2193impl ::std::fmt::Debug for GstMessage {
2194    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2195        f.debug_struct(&format!("GstMessage @ {self:p}"))
2196            .field("mini_object", &self.mini_object)
2197            .field("type_", &self.type_)
2198            .field("timestamp", &self.timestamp)
2199            .field("src", &self.src)
2200            .field("seqnum", &self.seqnum)
2201            .finish()
2202    }
2203}
2204
2205#[derive(Copy, Clone)]
2206#[repr(C)]
2207pub struct GstMeta {
2208    pub flags: GstMetaFlags,
2209    pub info: *const GstMetaInfo,
2210}
2211
2212impl ::std::fmt::Debug for GstMeta {
2213    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2214        f.debug_struct(&format!("GstMeta @ {self:p}"))
2215            .field("flags", &self.flags)
2216            .field("info", &self.info)
2217            .finish()
2218    }
2219}
2220
2221#[repr(C)]
2222#[allow(dead_code)]
2223pub struct _GstMetaFactoryClass {
2224    _data: [u8; 0],
2225    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2226}
2227
2228pub type GstMetaFactoryClass = _GstMetaFactoryClass;
2229
2230#[derive(Copy, Clone)]
2231#[repr(C)]
2232pub struct GstMetaInfo {
2233    pub api: GType,
2234    pub type_: GType,
2235    pub size: size_t,
2236    pub init_func: GstMetaInitFunction,
2237    pub free_func: GstMetaFreeFunction,
2238    pub transform_func: GstMetaTransformFunction,
2239    pub serialize_func: GstMetaSerializeFunction,
2240    pub deserialize_func: GstMetaDeserializeFunction,
2241    pub clear_func: GstMetaClearFunction,
2242}
2243
2244impl ::std::fmt::Debug for GstMetaInfo {
2245    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2246        f.debug_struct(&format!("GstMetaInfo @ {self:p}"))
2247            .field("api", &self.api)
2248            .field("type_", &self.type_)
2249            .field("size", &self.size)
2250            .field("init_func", &self.init_func)
2251            .field("free_func", &self.free_func)
2252            .field("transform_func", &self.transform_func)
2253            .field("serialize_func", &self.serialize_func)
2254            .field("deserialize_func", &self.deserialize_func)
2255            .field("clear_func", &self.clear_func)
2256            .finish()
2257    }
2258}
2259
2260#[derive(Copy, Clone)]
2261#[repr(C)]
2262pub struct GstMetaTransformCopy {
2263    pub region: gboolean,
2264    pub offset: size_t,
2265    pub size: size_t,
2266}
2267
2268impl ::std::fmt::Debug for GstMetaTransformCopy {
2269    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2270        f.debug_struct(&format!("GstMetaTransformCopy @ {self:p}"))
2271            .field("region", &self.region)
2272            .field("offset", &self.offset)
2273            .field("size", &self.size)
2274            .finish()
2275    }
2276}
2277
2278#[derive(Copy, Clone)]
2279#[repr(C)]
2280pub struct GstMiniObject {
2281    pub type_: GType,
2282    pub refcount: c_int,
2283    pub lockstate: c_int,
2284    pub flags: c_uint,
2285    pub copy: GstMiniObjectCopyFunction,
2286    pub dispose: GstMiniObjectDisposeFunction,
2287    pub free: GstMiniObjectFreeFunction,
2288    pub priv_uint: c_uint,
2289    pub priv_pointer: gpointer,
2290}
2291
2292impl ::std::fmt::Debug for GstMiniObject {
2293    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2294        f.debug_struct(&format!("GstMiniObject @ {self:p}"))
2295            .field("type_", &self.type_)
2296            .field("refcount", &self.refcount)
2297            .field("lockstate", &self.lockstate)
2298            .field("flags", &self.flags)
2299            .field("copy", &self.copy)
2300            .field("dispose", &self.dispose)
2301            .field("free", &self.free)
2302            .finish()
2303    }
2304}
2305
2306#[derive(Copy, Clone)]
2307#[repr(C)]
2308pub struct GstObjectClass {
2309    pub parent_class: gobject::GInitiallyUnownedClass,
2310    pub path_string_separator: *const c_char,
2311    pub deep_notify:
2312        Option<unsafe extern "C" fn(*mut GstObject, *mut GstObject, *mut gobject::GParamSpec)>,
2313    pub _gst_reserved: [gpointer; 4],
2314}
2315
2316impl ::std::fmt::Debug for GstObjectClass {
2317    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2318        f.debug_struct(&format!("GstObjectClass @ {self:p}"))
2319            .field("parent_class", &self.parent_class)
2320            .field("path_string_separator", &self.path_string_separator)
2321            .field("deep_notify", &self.deep_notify)
2322            .finish()
2323    }
2324}
2325
2326#[derive(Copy, Clone)]
2327#[repr(C)]
2328pub struct GstPadClass {
2329    pub parent_class: GstObjectClass,
2330    pub linked: Option<unsafe extern "C" fn(*mut GstPad, *mut GstPad)>,
2331    pub unlinked: Option<unsafe extern "C" fn(*mut GstPad, *mut GstPad)>,
2332    pub _gst_reserved: [gpointer; 4],
2333}
2334
2335impl ::std::fmt::Debug for GstPadClass {
2336    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2337        f.debug_struct(&format!("GstPadClass @ {self:p}"))
2338            .field("parent_class", &self.parent_class)
2339            .field("linked", &self.linked)
2340            .field("unlinked", &self.unlinked)
2341            .finish()
2342    }
2343}
2344
2345#[repr(C)]
2346#[allow(dead_code)]
2347pub struct _GstPadPrivate {
2348    _data: [u8; 0],
2349    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2350}
2351
2352pub type GstPadPrivate = _GstPadPrivate;
2353
2354#[derive(Copy, Clone)]
2355#[repr(C)]
2356pub struct GstPadProbeInfo {
2357    pub type_: GstPadProbeType,
2358    pub id: c_ulong,
2359    pub data: gpointer,
2360    pub offset: u64,
2361    pub size: c_uint,
2362    pub ABI: GstPadProbeInfo_ABI,
2363}
2364
2365impl ::std::fmt::Debug for GstPadProbeInfo {
2366    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2367        f.debug_struct(&format!("GstPadProbeInfo @ {self:p}"))
2368            .field("type_", &self.type_)
2369            .field("id", &self.id)
2370            .field("data", &self.data)
2371            .field("offset", &self.offset)
2372            .field("size", &self.size)
2373            .field("ABI", &self.ABI)
2374            .finish()
2375    }
2376}
2377
2378#[derive(Copy, Clone)]
2379#[repr(C)]
2380pub struct GstPadProbeInfo_ABI_abi {
2381    pub flow_ret: GstFlowReturn,
2382}
2383
2384impl ::std::fmt::Debug for GstPadProbeInfo_ABI_abi {
2385    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2386        f.debug_struct(&format!("GstPadProbeInfo_ABI_abi @ {self:p}"))
2387            .field("flow_ret", &self.flow_ret)
2388            .finish()
2389    }
2390}
2391
2392#[derive(Copy, Clone)]
2393#[repr(C)]
2394pub struct GstPadTemplateClass {
2395    pub parent_class: GstObjectClass,
2396    pub pad_created: Option<unsafe extern "C" fn(*mut GstPadTemplate, *mut GstPad)>,
2397    pub _gst_reserved: [gpointer; 4],
2398}
2399
2400impl ::std::fmt::Debug for GstPadTemplateClass {
2401    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2402        f.debug_struct(&format!("GstPadTemplateClass @ {self:p}"))
2403            .field("parent_class", &self.parent_class)
2404            .field("pad_created", &self.pad_created)
2405            .finish()
2406    }
2407}
2408
2409#[derive(Copy, Clone)]
2410#[repr(C)]
2411pub struct GstPadTemplate_ABI_abi {
2412    pub gtype: GType,
2413    pub documentation_caps: *mut GstCaps,
2414}
2415
2416impl ::std::fmt::Debug for GstPadTemplate_ABI_abi {
2417    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2418        f.debug_struct(&format!("GstPadTemplate_ABI_abi @ {self:p}"))
2419            .field("gtype", &self.gtype)
2420            .field("documentation_caps", &self.documentation_caps)
2421            .finish()
2422    }
2423}
2424
2425#[derive(Copy, Clone)]
2426#[repr(C)]
2427pub struct GstPad_ABI_abi {
2428    pub last_flowret: GstFlowReturn,
2429    pub eventfullfunc: GstPadEventFullFunction,
2430}
2431
2432impl ::std::fmt::Debug for GstPad_ABI_abi {
2433    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2434        f.debug_struct(&format!("GstPad_ABI_abi @ {self:p}"))
2435            .field("last_flowret", &self.last_flowret)
2436            .field("eventfullfunc", &self.eventfullfunc)
2437            .finish()
2438    }
2439}
2440
2441#[derive(Copy, Clone)]
2442#[repr(C)]
2443pub struct GstParamSpecArray {
2444    pub parent_instance: gobject::GParamSpec,
2445    pub element_spec: *mut gobject::GParamSpec,
2446}
2447
2448impl ::std::fmt::Debug for GstParamSpecArray {
2449    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2450        f.debug_struct(&format!("GstParamSpecArray @ {self:p}"))
2451            .field("parent_instance", &self.parent_instance)
2452            .field("element_spec", &self.element_spec)
2453            .finish()
2454    }
2455}
2456
2457#[derive(Copy, Clone)]
2458#[repr(C)]
2459pub struct GstParamSpecFraction {
2460    pub parent_instance: gobject::GParamSpec,
2461    pub min_num: c_int,
2462    pub min_den: c_int,
2463    pub max_num: c_int,
2464    pub max_den: c_int,
2465    pub def_num: c_int,
2466    pub def_den: c_int,
2467}
2468
2469impl ::std::fmt::Debug for GstParamSpecFraction {
2470    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2471        f.debug_struct(&format!("GstParamSpecFraction @ {self:p}"))
2472            .field("parent_instance", &self.parent_instance)
2473            .field("min_num", &self.min_num)
2474            .field("min_den", &self.min_den)
2475            .field("max_num", &self.max_num)
2476            .field("max_den", &self.max_den)
2477            .field("def_num", &self.def_num)
2478            .field("def_den", &self.def_den)
2479            .finish()
2480    }
2481}
2482
2483#[derive(Copy, Clone)]
2484#[repr(C)]
2485pub struct GstParentBufferMeta {
2486    pub parent: GstMeta,
2487    pub buffer: *mut GstBuffer,
2488}
2489
2490impl ::std::fmt::Debug for GstParentBufferMeta {
2491    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2492        f.debug_struct(&format!("GstParentBufferMeta @ {self:p}"))
2493            .field("parent", &self.parent)
2494            .field("buffer", &self.buffer)
2495            .finish()
2496    }
2497}
2498
2499#[repr(C)]
2500#[allow(dead_code)]
2501pub struct GstParseContext {
2502    _data: [u8; 0],
2503    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2504}
2505
2506impl ::std::fmt::Debug for GstParseContext {
2507    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2508        f.debug_struct(&format!("GstParseContext @ {self:p}"))
2509            .finish()
2510    }
2511}
2512
2513#[derive(Copy, Clone)]
2514#[repr(C)]
2515pub struct GstPipelineClass {
2516    pub parent_class: GstBinClass,
2517    pub _gst_reserved: [gpointer; 4],
2518}
2519
2520impl ::std::fmt::Debug for GstPipelineClass {
2521    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2522        f.debug_struct(&format!("GstPipelineClass @ {self:p}"))
2523            .field("parent_class", &self.parent_class)
2524            .finish()
2525    }
2526}
2527
2528#[repr(C)]
2529#[allow(dead_code)]
2530pub struct _GstPipelinePrivate {
2531    _data: [u8; 0],
2532    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2533}
2534
2535pub type GstPipelinePrivate = _GstPipelinePrivate;
2536
2537#[repr(C)]
2538#[allow(dead_code)]
2539pub struct _GstPluginClass {
2540    _data: [u8; 0],
2541    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2542}
2543
2544pub type GstPluginClass = _GstPluginClass;
2545
2546#[derive(Copy, Clone)]
2547#[repr(C)]
2548pub struct GstPluginDesc {
2549    pub major_version: c_int,
2550    pub minor_version: c_int,
2551    pub name: *const c_char,
2552    pub description: *const c_char,
2553    pub plugin_init: GstPluginInitFunc,
2554    pub version: *const c_char,
2555    pub license: *const c_char,
2556    pub source: *const c_char,
2557    pub package: *const c_char,
2558    pub origin: *const c_char,
2559    pub release_datetime: *const c_char,
2560    pub _gst_reserved: [gpointer; 4],
2561}
2562
2563impl ::std::fmt::Debug for GstPluginDesc {
2564    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2565        f.debug_struct(&format!("GstPluginDesc @ {self:p}"))
2566            .field("major_version", &self.major_version)
2567            .field("minor_version", &self.minor_version)
2568            .field("name", &self.name)
2569            .field("description", &self.description)
2570            .field("plugin_init", &self.plugin_init)
2571            .field("version", &self.version)
2572            .field("license", &self.license)
2573            .field("source", &self.source)
2574            .field("package", &self.package)
2575            .field("origin", &self.origin)
2576            .field("release_datetime", &self.release_datetime)
2577            .finish()
2578    }
2579}
2580
2581#[repr(C)]
2582#[allow(dead_code)]
2583pub struct _GstPluginFeatureClass {
2584    _data: [u8; 0],
2585    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2586}
2587
2588pub type GstPluginFeatureClass = _GstPluginFeatureClass;
2589
2590#[repr(C)]
2591#[allow(dead_code)]
2592pub struct _GstPoll {
2593    _data: [u8; 0],
2594    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2595}
2596
2597pub type GstPoll = _GstPoll;
2598
2599#[derive(Copy, Clone)]
2600#[repr(C)]
2601pub struct GstPollFD {
2602    pub fd: c_int,
2603    pub idx: c_int,
2604}
2605
2606impl ::std::fmt::Debug for GstPollFD {
2607    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2608        f.debug_struct(&format!("GstPollFD @ {self:p}"))
2609            .field("fd", &self.fd)
2610            .finish()
2611    }
2612}
2613
2614#[derive(Copy, Clone)]
2615#[repr(C)]
2616pub struct GstPresetInterface {
2617    pub parent: gobject::GTypeInterface,
2618    pub get_preset_names: Option<unsafe extern "C" fn(*mut GstPreset) -> *mut *mut c_char>,
2619    pub get_property_names: Option<unsafe extern "C" fn(*mut GstPreset) -> *mut *mut c_char>,
2620    pub load_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2621    pub save_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2622    pub rename_preset:
2623        Option<unsafe extern "C" fn(*mut GstPreset, *const c_char, *const c_char) -> gboolean>,
2624    pub delete_preset: Option<unsafe extern "C" fn(*mut GstPreset, *const c_char) -> gboolean>,
2625    pub set_meta: Option<
2626        unsafe extern "C" fn(
2627            *mut GstPreset,
2628            *const c_char,
2629            *const c_char,
2630            *mut *mut c_char,
2631        ) -> gboolean,
2632    >,
2633    pub get_meta: Option<
2634        unsafe extern "C" fn(
2635            *mut GstPreset,
2636            *const c_char,
2637            *const c_char,
2638            *mut *mut c_char,
2639        ) -> gboolean,
2640    >,
2641    pub get_property: Option<
2642        unsafe extern "C" fn(
2643            *mut GstPreset,
2644            *const c_char,
2645            *const c_char,
2646            *mut gobject::GValue,
2647        ) -> gboolean,
2648    >,
2649    pub get_property_alternatives: Option<
2650        unsafe extern "C" fn(*mut GstPreset, *const c_char, *const c_char) -> *mut *mut c_char,
2651    >,
2652    pub _gst_reserved: [gpointer; 2],
2653}
2654
2655impl ::std::fmt::Debug for GstPresetInterface {
2656    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2657        f.debug_struct(&format!("GstPresetInterface @ {self:p}"))
2658            .field("parent", &self.parent)
2659            .field("get_preset_names", &self.get_preset_names)
2660            .field("get_property_names", &self.get_property_names)
2661            .field("load_preset", &self.load_preset)
2662            .field("save_preset", &self.save_preset)
2663            .field("rename_preset", &self.rename_preset)
2664            .field("delete_preset", &self.delete_preset)
2665            .field("set_meta", &self.set_meta)
2666            .field("get_meta", &self.get_meta)
2667            .field("get_property", &self.get_property)
2668            .field("get_property_alternatives", &self.get_property_alternatives)
2669            .finish()
2670    }
2671}
2672
2673#[derive(Copy, Clone)]
2674#[repr(C)]
2675pub struct GstPromise {
2676    pub parent: GstMiniObject,
2677}
2678
2679impl ::std::fmt::Debug for GstPromise {
2680    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2681        f.debug_struct(&format!("GstPromise @ {self:p}"))
2682            .field("parent", &self.parent)
2683            .finish()
2684    }
2685}
2686
2687#[derive(Copy, Clone)]
2688#[repr(C)]
2689pub struct GstProtectionMeta {
2690    pub meta: GstMeta,
2691    pub info: *mut GstStructure,
2692}
2693
2694impl ::std::fmt::Debug for GstProtectionMeta {
2695    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2696        f.debug_struct(&format!("GstProtectionMeta @ {self:p}"))
2697            .field("meta", &self.meta)
2698            .field("info", &self.info)
2699            .finish()
2700    }
2701}
2702
2703#[derive(Copy, Clone)]
2704#[repr(C)]
2705pub struct GstProxyPadClass {
2706    pub parent_class: GstPadClass,
2707    pub _gst_reserved: [gpointer; 1],
2708}
2709
2710impl ::std::fmt::Debug for GstProxyPadClass {
2711    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2712        f.debug_struct(&format!("GstProxyPadClass @ {self:p}"))
2713            .field("parent_class", &self.parent_class)
2714            .finish()
2715    }
2716}
2717
2718#[repr(C)]
2719#[allow(dead_code)]
2720pub struct _GstProxyPadPrivate {
2721    _data: [u8; 0],
2722    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2723}
2724
2725pub type GstProxyPadPrivate = _GstProxyPadPrivate;
2726
2727#[derive(Copy, Clone)]
2728#[repr(C)]
2729pub struct GstQuery {
2730    pub mini_object: GstMiniObject,
2731    pub type_: GstQueryType,
2732}
2733
2734impl ::std::fmt::Debug for GstQuery {
2735    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2736        f.debug_struct(&format!("GstQuery @ {self:p}"))
2737            .field("mini_object", &self.mini_object)
2738            .field("type_", &self.type_)
2739            .finish()
2740    }
2741}
2742
2743#[derive(Copy, Clone)]
2744#[repr(C)]
2745pub struct GstReferenceTimestampMeta {
2746    pub parent: GstMeta,
2747    pub reference: *mut GstCaps,
2748    pub timestamp: GstClockTime,
2749    pub duration: GstClockTime,
2750    pub info: *mut GstStructure,
2751}
2752
2753impl ::std::fmt::Debug for GstReferenceTimestampMeta {
2754    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2755        f.debug_struct(&format!("GstReferenceTimestampMeta @ {self:p}"))
2756            .field("parent", &self.parent)
2757            .field("reference", &self.reference)
2758            .field("timestamp", &self.timestamp)
2759            .field("duration", &self.duration)
2760            .field("info", &self.info)
2761            .finish()
2762    }
2763}
2764
2765#[derive(Copy, Clone)]
2766#[repr(C)]
2767pub struct GstRegistryClass {
2768    pub parent_class: GstObjectClass,
2769}
2770
2771impl ::std::fmt::Debug for GstRegistryClass {
2772    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2773        f.debug_struct(&format!("GstRegistryClass @ {self:p}"))
2774            .field("parent_class", &self.parent_class)
2775            .finish()
2776    }
2777}
2778
2779#[repr(C)]
2780#[allow(dead_code)]
2781pub struct _GstRegistryPrivate {
2782    _data: [u8; 0],
2783    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2784}
2785
2786pub type GstRegistryPrivate = _GstRegistryPrivate;
2787
2788#[repr(C)]
2789#[allow(dead_code)]
2790pub struct GstSample {
2791    _data: [u8; 0],
2792    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2793}
2794
2795impl ::std::fmt::Debug for GstSample {
2796    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2797        f.debug_struct(&format!("GstSample @ {self:p}")).finish()
2798    }
2799}
2800
2801#[derive(Copy, Clone)]
2802#[repr(C)]
2803pub struct GstSegment {
2804    pub flags: GstSegmentFlags,
2805    pub rate: c_double,
2806    pub applied_rate: c_double,
2807    pub format: GstFormat,
2808    pub base: u64,
2809    pub offset: u64,
2810    pub start: u64,
2811    pub stop: u64,
2812    pub time: u64,
2813    pub position: u64,
2814    pub duration: u64,
2815    pub _gst_reserved: [gpointer; 4],
2816}
2817
2818impl ::std::fmt::Debug for GstSegment {
2819    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2820        f.debug_struct(&format!("GstSegment @ {self:p}"))
2821            .field("flags", &self.flags)
2822            .field("rate", &self.rate)
2823            .field("applied_rate", &self.applied_rate)
2824            .field("format", &self.format)
2825            .field("base", &self.base)
2826            .field("offset", &self.offset)
2827            .field("start", &self.start)
2828            .field("stop", &self.stop)
2829            .field("time", &self.time)
2830            .field("position", &self.position)
2831            .field("duration", &self.duration)
2832            .finish()
2833    }
2834}
2835
2836#[derive(Copy, Clone)]
2837#[repr(C)]
2838pub struct GstSharedTaskPoolClass {
2839    pub parent_class: GstTaskPoolClass,
2840    pub _gst_reserved: [gpointer; 4],
2841}
2842
2843impl ::std::fmt::Debug for GstSharedTaskPoolClass {
2844    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2845        f.debug_struct(&format!("GstSharedTaskPoolClass @ {self:p}"))
2846            .field("parent_class", &self.parent_class)
2847            .finish()
2848    }
2849}
2850
2851#[repr(C)]
2852#[allow(dead_code)]
2853pub struct _GstSharedTaskPoolPrivate {
2854    _data: [u8; 0],
2855    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2856}
2857
2858pub type GstSharedTaskPoolPrivate = _GstSharedTaskPoolPrivate;
2859
2860#[derive(Copy, Clone)]
2861#[repr(C)]
2862pub struct GstStaticCaps {
2863    pub caps: *mut GstCaps,
2864    pub string: *const c_char,
2865    pub _gst_reserved: [gpointer; 4],
2866}
2867
2868impl ::std::fmt::Debug for GstStaticCaps {
2869    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2870        f.debug_struct(&format!("GstStaticCaps @ {self:p}"))
2871            .field("caps", &self.caps)
2872            .field("string", &self.string)
2873            .finish()
2874    }
2875}
2876
2877#[derive(Copy, Clone)]
2878#[repr(C)]
2879pub struct GstStaticPadTemplate {
2880    pub name_template: *const c_char,
2881    pub direction: GstPadDirection,
2882    pub presence: GstPadPresence,
2883    pub static_caps: GstStaticCaps,
2884}
2885
2886impl ::std::fmt::Debug for GstStaticPadTemplate {
2887    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2888        f.debug_struct(&format!("GstStaticPadTemplate @ {self:p}"))
2889            .field("name_template", &self.name_template)
2890            .field("direction", &self.direction)
2891            .field("presence", &self.presence)
2892            .field("static_caps", &self.static_caps)
2893            .finish()
2894    }
2895}
2896
2897#[derive(Copy, Clone)]
2898#[repr(C)]
2899pub struct GstStreamClass {
2900    pub parent_class: GstObjectClass,
2901    pub _gst_reserved: [gpointer; 4],
2902}
2903
2904impl ::std::fmt::Debug for GstStreamClass {
2905    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2906        f.debug_struct(&format!("GstStreamClass @ {self:p}"))
2907            .field("parent_class", &self.parent_class)
2908            .finish()
2909    }
2910}
2911
2912#[derive(Copy, Clone)]
2913#[repr(C)]
2914pub struct GstStreamCollectionClass {
2915    pub parent_class: GstObjectClass,
2916    pub stream_notify: Option<
2917        unsafe extern "C" fn(*mut GstStreamCollection, *mut GstStream, *mut gobject::GParamSpec),
2918    >,
2919    pub _gst_reserved: [gpointer; 4],
2920}
2921
2922impl ::std::fmt::Debug for GstStreamCollectionClass {
2923    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2924        f.debug_struct(&format!("GstStreamCollectionClass @ {self:p}"))
2925            .field("parent_class", &self.parent_class)
2926            .field("stream_notify", &self.stream_notify)
2927            .finish()
2928    }
2929}
2930
2931#[repr(C)]
2932#[allow(dead_code)]
2933pub struct _GstStreamCollectionPrivate {
2934    _data: [u8; 0],
2935    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2936}
2937
2938pub type GstStreamCollectionPrivate = _GstStreamCollectionPrivate;
2939
2940#[repr(C)]
2941#[allow(dead_code)]
2942pub struct _GstStreamPrivate {
2943    _data: [u8; 0],
2944    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2945}
2946
2947pub type GstStreamPrivate = _GstStreamPrivate;
2948
2949#[derive(Copy, Clone)]
2950#[repr(C)]
2951pub struct GstStructure {
2952    pub type_: GType,
2953    pub name: glib::GQuark,
2954}
2955
2956impl ::std::fmt::Debug for GstStructure {
2957    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2958        f.debug_struct(&format!("GstStructure @ {self:p}"))
2959            .field("type_", &self.type_)
2960            .finish()
2961    }
2962}
2963
2964#[derive(Copy, Clone)]
2965#[repr(C)]
2966pub struct GstSystemClockClass {
2967    pub parent_class: GstClockClass,
2968    pub _gst_reserved: [gpointer; 4],
2969}
2970
2971impl ::std::fmt::Debug for GstSystemClockClass {
2972    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2973        f.debug_struct(&format!("GstSystemClockClass @ {self:p}"))
2974            .field("parent_class", &self.parent_class)
2975            .finish()
2976    }
2977}
2978
2979#[repr(C)]
2980#[allow(dead_code)]
2981pub struct _GstSystemClockPrivate {
2982    _data: [u8; 0],
2983    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
2984}
2985
2986pub type GstSystemClockPrivate = _GstSystemClockPrivate;
2987
2988#[derive(Copy, Clone)]
2989#[repr(C)]
2990pub struct GstTagList {
2991    pub mini_object: GstMiniObject,
2992}
2993
2994impl ::std::fmt::Debug for GstTagList {
2995    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
2996        f.debug_struct(&format!("GstTagList @ {self:p}"))
2997            .field("mini_object", &self.mini_object)
2998            .finish()
2999    }
3000}
3001
3002#[derive(Copy, Clone)]
3003#[repr(C)]
3004pub struct GstTagSetterInterface {
3005    pub g_iface: gobject::GTypeInterface,
3006}
3007
3008impl ::std::fmt::Debug for GstTagSetterInterface {
3009    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3010        f.debug_struct(&format!("GstTagSetterInterface @ {self:p}"))
3011            .field("g_iface", &self.g_iface)
3012            .finish()
3013    }
3014}
3015
3016#[derive(Copy, Clone)]
3017#[repr(C)]
3018pub struct GstTaskClass {
3019    pub parent_class: GstObjectClass,
3020    pub pool: *mut GstTaskPool,
3021    pub _gst_reserved: [gpointer; 4],
3022}
3023
3024impl ::std::fmt::Debug for GstTaskClass {
3025    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3026        f.debug_struct(&format!("GstTaskClass @ {self:p}"))
3027            .field("parent_class", &self.parent_class)
3028            .finish()
3029    }
3030}
3031
3032#[derive(Copy, Clone)]
3033#[repr(C)]
3034pub struct GstTaskPoolClass {
3035    pub parent_class: GstObjectClass,
3036    pub prepare: Option<unsafe extern "C" fn(*mut GstTaskPool, *mut *mut glib::GError)>,
3037    pub cleanup: Option<unsafe extern "C" fn(*mut GstTaskPool)>,
3038    pub push: Option<
3039        unsafe extern "C" fn(
3040            *mut GstTaskPool,
3041            GstTaskPoolFunction,
3042            gpointer,
3043            *mut *mut glib::GError,
3044        ) -> gpointer,
3045    >,
3046    pub join: Option<unsafe extern "C" fn(*mut GstTaskPool, gpointer)>,
3047    pub dispose_handle: Option<unsafe extern "C" fn(*mut GstTaskPool, gpointer)>,
3048    pub _gst_reserved: [gpointer; 3],
3049}
3050
3051impl ::std::fmt::Debug for GstTaskPoolClass {
3052    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3053        f.debug_struct(&format!("GstTaskPoolClass @ {self:p}"))
3054            .field("parent_class", &self.parent_class)
3055            .field("prepare", &self.prepare)
3056            .field("cleanup", &self.cleanup)
3057            .field("push", &self.push)
3058            .field("join", &self.join)
3059            .field("dispose_handle", &self.dispose_handle)
3060            .finish()
3061    }
3062}
3063
3064#[repr(C)]
3065#[allow(dead_code)]
3066pub struct _GstTaskPrivate {
3067    _data: [u8; 0],
3068    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3069}
3070
3071pub type GstTaskPrivate = _GstTaskPrivate;
3072
3073#[derive(Copy, Clone)]
3074#[repr(C)]
3075pub struct GstTimedValue {
3076    pub timestamp: GstClockTime,
3077    pub value: c_double,
3078}
3079
3080impl ::std::fmt::Debug for GstTimedValue {
3081    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3082        f.debug_struct(&format!("GstTimedValue @ {self:p}"))
3083            .field("timestamp", &self.timestamp)
3084            .field("value", &self.value)
3085            .finish()
3086    }
3087}
3088
3089#[repr(C)]
3090#[allow(dead_code)]
3091pub struct GstToc {
3092    _data: [u8; 0],
3093    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3094}
3095
3096impl ::std::fmt::Debug for GstToc {
3097    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3098        f.debug_struct(&format!("GstToc @ {self:p}")).finish()
3099    }
3100}
3101
3102#[repr(C)]
3103#[allow(dead_code)]
3104pub struct GstTocEntry {
3105    _data: [u8; 0],
3106    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3107}
3108
3109impl ::std::fmt::Debug for GstTocEntry {
3110    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3111        f.debug_struct(&format!("GstTocEntry @ {self:p}")).finish()
3112    }
3113}
3114
3115#[derive(Copy, Clone)]
3116#[repr(C)]
3117pub struct GstTocSetterInterface {
3118    pub g_iface: gobject::GTypeInterface,
3119}
3120
3121impl ::std::fmt::Debug for GstTocSetterInterface {
3122    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3123        f.debug_struct(&format!("GstTocSetterInterface @ {self:p}"))
3124            .field("g_iface", &self.g_iface)
3125            .finish()
3126    }
3127}
3128
3129#[repr(C)]
3130#[allow(dead_code)]
3131pub struct _GstTraceField {
3132    _data: [u8; 0],
3133    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3134}
3135
3136pub type GstTraceField = _GstTraceField;
3137
3138#[repr(C)]
3139#[allow(dead_code)]
3140pub struct _GstTraceFormat {
3141    _data: [u8; 0],
3142    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3143}
3144
3145pub type GstTraceFormat = _GstTraceFormat;
3146
3147#[repr(C)]
3148#[allow(dead_code)]
3149pub struct _GstTraceFormatBuilder {
3150    _data: [u8; 0],
3151    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3152}
3153
3154pub type GstTraceFormatBuilder = _GstTraceFormatBuilder;
3155
3156#[derive(Copy, Clone)]
3157#[repr(C)]
3158pub struct GstTracerClass {
3159    pub parent_class: GstObjectClass,
3160    pub _gst_reserved: [gpointer; 4],
3161}
3162
3163impl ::std::fmt::Debug for GstTracerClass {
3164    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3165        f.debug_struct(&format!("GstTracerClass @ {self:p}"))
3166            .field("parent_class", &self.parent_class)
3167            .finish()
3168    }
3169}
3170
3171#[repr(C)]
3172#[allow(dead_code)]
3173pub struct _GstTracerFactoryClass {
3174    _data: [u8; 0],
3175    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3176}
3177
3178pub type GstTracerFactoryClass = _GstTracerFactoryClass;
3179
3180#[repr(C)]
3181#[allow(dead_code)]
3182pub struct _GstTracerPrivate {
3183    _data: [u8; 0],
3184    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3185}
3186
3187pub type GstTracerPrivate = _GstTracerPrivate;
3188
3189#[repr(C)]
3190#[allow(dead_code)]
3191pub struct _GstTracerRecordClass {
3192    _data: [u8; 0],
3193    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3194}
3195
3196pub type GstTracerRecordClass = _GstTracerRecordClass;
3197
3198#[derive(Copy, Clone)]
3199#[repr(C)]
3200pub struct GstTypeFind {
3201    pub peek: Option<unsafe extern "C" fn(gpointer, i64, c_uint) -> *const u8>,
3202    pub suggest: Option<unsafe extern "C" fn(gpointer, c_uint, *mut GstCaps)>,
3203    pub data: gpointer,
3204    pub get_length: Option<unsafe extern "C" fn(gpointer) -> u64>,
3205    pub _gst_reserved: [gpointer; 4],
3206}
3207
3208impl ::std::fmt::Debug for GstTypeFind {
3209    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3210        f.debug_struct(&format!("GstTypeFind @ {self:p}"))
3211            .field("peek", &self.peek)
3212            .field("suggest", &self.suggest)
3213            .field("data", &self.data)
3214            .field("get_length", &self.get_length)
3215            .finish()
3216    }
3217}
3218
3219#[repr(C)]
3220#[allow(dead_code)]
3221pub struct _GstTypeFindFactoryClass {
3222    _data: [u8; 0],
3223    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3224}
3225
3226pub type GstTypeFindFactoryClass = _GstTypeFindFactoryClass;
3227
3228#[derive(Copy, Clone)]
3229#[repr(C)]
3230pub struct GstURIHandlerInterface {
3231    pub parent: gobject::GTypeInterface,
3232    pub get_type: Option<unsafe extern "C" fn(GType) -> GstURIType>,
3233    pub get_protocols: Option<unsafe extern "C" fn(GType) -> *const *const c_char>,
3234    pub get_uri: Option<unsafe extern "C" fn(*mut GstURIHandler) -> *mut c_char>,
3235    pub set_uri: Option<
3236        unsafe extern "C" fn(*mut GstURIHandler, *const c_char, *mut *mut glib::GError) -> gboolean,
3237    >,
3238}
3239
3240impl ::std::fmt::Debug for GstURIHandlerInterface {
3241    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3242        f.debug_struct(&format!("GstURIHandlerInterface @ {self:p}"))
3243            .field("parent", &self.parent)
3244            .field("get_type", &self.get_type)
3245            .field("get_protocols", &self.get_protocols)
3246            .field("get_uri", &self.get_uri)
3247            .field("set_uri", &self.set_uri)
3248            .finish()
3249    }
3250}
3251
3252#[repr(C)]
3253#[allow(dead_code)]
3254pub struct GstUri {
3255    _data: [u8; 0],
3256    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3257}
3258
3259impl ::std::fmt::Debug for GstUri {
3260    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3261        f.debug_struct(&format!("GstUri @ {self:p}")).finish()
3262    }
3263}
3264
3265#[derive(Copy, Clone)]
3266#[repr(C)]
3267pub struct GstValueTable {
3268    pub type_: GType,
3269    pub compare: GstValueCompareFunc,
3270    pub serialize: GstValueSerializeFunc,
3271    pub deserialize: GstValueDeserializeFunc,
3272    pub deserialize_with_pspec: GstValueDeserializeWithPSpecFunc,
3273    pub hash: GstValueHashFunc,
3274    pub _gst_reserved: [gpointer; 2],
3275}
3276
3277impl ::std::fmt::Debug for GstValueTable {
3278    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3279        f.debug_struct(&format!("GstValueTable @ {self:p}"))
3280            .field("type_", &self.type_)
3281            .field("compare", &self.compare)
3282            .field("serialize", &self.serialize)
3283            .field("deserialize", &self.deserialize)
3284            .field("deserialize_with_pspec", &self.deserialize_with_pspec)
3285            .field("hash", &self.hash)
3286            .finish()
3287    }
3288}
3289
3290#[repr(C)]
3291#[allow(dead_code)]
3292pub struct _GstVecDeque {
3293    _data: [u8; 0],
3294    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3295}
3296
3297pub type GstVecDeque = _GstVecDeque;
3298
3299// Classes
3300#[derive(Copy, Clone)]
3301#[repr(C)]
3302pub struct GstAllocator {
3303    pub object: GstObject,
3304    pub mem_type: *const c_char,
3305    pub mem_map: GstMemoryMapFunction,
3306    pub mem_unmap: GstMemoryUnmapFunction,
3307    pub mem_copy: GstMemoryCopyFunction,
3308    pub mem_share: GstMemoryShareFunction,
3309    pub mem_is_span: GstMemoryIsSpanFunction,
3310    pub mem_map_full: GstMemoryMapFullFunction,
3311    pub mem_unmap_full: GstMemoryUnmapFullFunction,
3312    pub _gst_reserved: [gpointer; 2],
3313    pub priv_: *mut GstAllocatorPrivate,
3314}
3315
3316impl ::std::fmt::Debug for GstAllocator {
3317    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3318        f.debug_struct(&format!("GstAllocator @ {self:p}"))
3319            .field("object", &self.object)
3320            .field("mem_type", &self.mem_type)
3321            .field("mem_map", &self.mem_map)
3322            .field("mem_unmap", &self.mem_unmap)
3323            .field("mem_copy", &self.mem_copy)
3324            .field("mem_share", &self.mem_share)
3325            .field("mem_is_span", &self.mem_is_span)
3326            .field("mem_map_full", &self.mem_map_full)
3327            .field("mem_unmap_full", &self.mem_unmap_full)
3328            .finish()
3329    }
3330}
3331
3332#[derive(Copy, Clone)]
3333#[repr(C)]
3334pub struct GstBin {
3335    pub element: GstElement,
3336    pub numchildren: c_int,
3337    pub children: *mut glib::GList,
3338    pub children_cookie: u32,
3339    pub child_bus: *mut GstBus,
3340    pub messages: *mut glib::GList,
3341    pub polling: gboolean,
3342    pub state_dirty: gboolean,
3343    pub clock_dirty: gboolean,
3344    pub provided_clock: *mut GstClock,
3345    pub clock_provider: *mut GstElement,
3346    pub priv_: *mut GstBinPrivate,
3347    pub _gst_reserved: [gpointer; 4],
3348}
3349
3350impl ::std::fmt::Debug for GstBin {
3351    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3352        f.debug_struct(&format!("GstBin @ {self:p}"))
3353            .field("element", &self.element)
3354            .field("numchildren", &self.numchildren)
3355            .field("children", &self.children)
3356            .field("children_cookie", &self.children_cookie)
3357            .field("child_bus", &self.child_bus)
3358            .field("messages", &self.messages)
3359            .field("polling", &self.polling)
3360            .field("state_dirty", &self.state_dirty)
3361            .field("clock_dirty", &self.clock_dirty)
3362            .field("provided_clock", &self.provided_clock)
3363            .field("clock_provider", &self.clock_provider)
3364            .finish()
3365    }
3366}
3367
3368#[repr(C)]
3369#[allow(dead_code)]
3370pub struct GstBitmask {
3371    _data: [u8; 0],
3372    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3373}
3374
3375impl ::std::fmt::Debug for GstBitmask {
3376    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3377        f.debug_struct(&format!("GstBitmask @ {self:p}")).finish()
3378    }
3379}
3380
3381#[derive(Copy, Clone)]
3382#[repr(C)]
3383pub struct GstBufferPool {
3384    pub object: GstObject,
3385    pub flushing: c_int,
3386    pub priv_: *mut GstBufferPoolPrivate,
3387    pub _gst_reserved: [gpointer; 4],
3388}
3389
3390impl ::std::fmt::Debug for GstBufferPool {
3391    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3392        f.debug_struct(&format!("GstBufferPool @ {self:p}"))
3393            .field("object", &self.object)
3394            .field("flushing", &self.flushing)
3395            .finish()
3396    }
3397}
3398
3399#[derive(Copy, Clone)]
3400#[repr(C)]
3401pub struct GstBus {
3402    pub object: GstObject,
3403    pub priv_: *mut GstBusPrivate,
3404    pub _gst_reserved: [gpointer; 4],
3405}
3406
3407impl ::std::fmt::Debug for GstBus {
3408    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3409        f.debug_struct(&format!("GstBus @ {self:p}"))
3410            .field("object", &self.object)
3411            .finish()
3412    }
3413}
3414
3415#[derive(Copy, Clone)]
3416#[repr(C)]
3417pub struct GstClock {
3418    pub object: GstObject,
3419    pub priv_: *mut GstClockPrivate,
3420    pub _gst_reserved: [gpointer; 4],
3421}
3422
3423impl ::std::fmt::Debug for GstClock {
3424    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3425        f.debug_struct(&format!("GstClock @ {self:p}"))
3426            .field("object", &self.object)
3427            .finish()
3428    }
3429}
3430
3431#[derive(Copy, Clone)]
3432#[repr(C)]
3433pub struct GstControlBinding {
3434    pub parent: GstObject,
3435    pub name: *mut c_char,
3436    pub pspec: *mut gobject::GParamSpec,
3437    pub object: *mut GstObject,
3438    pub disabled: gboolean,
3439    pub ABI: GstControlBinding_ABI,
3440}
3441
3442impl ::std::fmt::Debug for GstControlBinding {
3443    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3444        f.debug_struct(&format!("GstControlBinding @ {self:p}"))
3445            .field("parent", &self.parent)
3446            .field("name", &self.name)
3447            .field("pspec", &self.pspec)
3448            .field("ABI", &self.ABI)
3449            .finish()
3450    }
3451}
3452
3453#[derive(Copy, Clone)]
3454#[repr(C)]
3455pub struct GstControlSource {
3456    pub parent: GstObject,
3457    pub get_value: GstControlSourceGetValue,
3458    pub get_value_array: GstControlSourceGetValueArray,
3459    pub _gst_reserved: [gpointer; 4],
3460}
3461
3462impl ::std::fmt::Debug for GstControlSource {
3463    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3464        f.debug_struct(&format!("GstControlSource @ {self:p}"))
3465            .field("parent", &self.parent)
3466            .field("get_value", &self.get_value)
3467            .field("get_value_array", &self.get_value_array)
3468            .finish()
3469    }
3470}
3471
3472#[derive(Copy, Clone)]
3473#[repr(C)]
3474pub struct GstDevice {
3475    pub parent: GstObject,
3476    pub priv_: *mut GstDevicePrivate,
3477    pub _gst_reserved: [gpointer; 4],
3478}
3479
3480impl ::std::fmt::Debug for GstDevice {
3481    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3482        f.debug_struct(&format!("GstDevice @ {self:p}"))
3483            .field("parent", &self.parent)
3484            .finish()
3485    }
3486}
3487
3488#[derive(Copy, Clone)]
3489#[repr(C)]
3490pub struct GstDeviceMonitor {
3491    pub parent: GstObject,
3492    pub priv_: *mut GstDeviceMonitorPrivate,
3493    pub _gst_reserved: [gpointer; 4],
3494}
3495
3496impl ::std::fmt::Debug for GstDeviceMonitor {
3497    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3498        f.debug_struct(&format!("GstDeviceMonitor @ {self:p}"))
3499            .field("parent", &self.parent)
3500            .finish()
3501    }
3502}
3503
3504#[derive(Copy, Clone)]
3505#[repr(C)]
3506pub struct GstDeviceProvider {
3507    pub parent: GstObject,
3508    pub devices: *mut glib::GList,
3509    pub priv_: *mut GstDeviceProviderPrivate,
3510    pub _gst_reserved: [gpointer; 4],
3511}
3512
3513impl ::std::fmt::Debug for GstDeviceProvider {
3514    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3515        f.debug_struct(&format!("GstDeviceProvider @ {self:p}"))
3516            .field("parent", &self.parent)
3517            .field("devices", &self.devices)
3518            .finish()
3519    }
3520}
3521
3522#[repr(C)]
3523#[allow(dead_code)]
3524pub struct GstDeviceProviderFactory {
3525    _data: [u8; 0],
3526    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3527}
3528
3529impl ::std::fmt::Debug for GstDeviceProviderFactory {
3530    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3531        f.debug_struct(&format!("GstDeviceProviderFactory @ {self:p}"))
3532            .finish()
3533    }
3534}
3535
3536#[repr(C)]
3537#[allow(dead_code)]
3538pub struct GstDoubleRange {
3539    _data: [u8; 0],
3540    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3541}
3542
3543impl ::std::fmt::Debug for GstDoubleRange {
3544    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3545        f.debug_struct(&format!("GstDoubleRange @ {self:p}"))
3546            .finish()
3547    }
3548}
3549
3550#[repr(C)]
3551#[allow(dead_code)]
3552pub struct GstDynamicTypeFactory {
3553    _data: [u8; 0],
3554    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3555}
3556
3557impl ::std::fmt::Debug for GstDynamicTypeFactory {
3558    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3559        f.debug_struct(&format!("GstDynamicTypeFactory @ {self:p}"))
3560            .finish()
3561    }
3562}
3563
3564#[derive(Copy, Clone)]
3565#[repr(C)]
3566pub struct GstElement {
3567    pub object: GstObject,
3568    pub state_lock: glib::GRecMutex,
3569    pub state_cond: glib::GCond,
3570    pub state_cookie: u32,
3571    pub target_state: GstState,
3572    pub current_state: GstState,
3573    pub next_state: GstState,
3574    pub pending_state: GstState,
3575    pub last_return: GstStateChangeReturn,
3576    pub bus: *mut GstBus,
3577    pub clock: *mut GstClock,
3578    pub base_time: GstClockTimeDiff,
3579    pub start_time: GstClockTime,
3580    pub numpads: u16,
3581    pub pads: *mut glib::GList,
3582    pub numsrcpads: u16,
3583    pub srcpads: *mut glib::GList,
3584    pub numsinkpads: u16,
3585    pub sinkpads: *mut glib::GList,
3586    pub pads_cookie: u32,
3587    pub contexts: *mut glib::GList,
3588    pub _gst_reserved: [gpointer; 3],
3589}
3590
3591impl ::std::fmt::Debug for GstElement {
3592    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3593        f.debug_struct(&format!("GstElement @ {self:p}"))
3594            .field("object", &self.object)
3595            .field("state_lock", &self.state_lock)
3596            .field("state_cond", &self.state_cond)
3597            .field("state_cookie", &self.state_cookie)
3598            .field("target_state", &self.target_state)
3599            .field("current_state", &self.current_state)
3600            .field("next_state", &self.next_state)
3601            .field("pending_state", &self.pending_state)
3602            .field("last_return", &self.last_return)
3603            .field("bus", &self.bus)
3604            .field("clock", &self.clock)
3605            .field("base_time", &self.base_time)
3606            .field("start_time", &self.start_time)
3607            .field("numpads", &self.numpads)
3608            .field("pads", &self.pads)
3609            .field("numsrcpads", &self.numsrcpads)
3610            .field("srcpads", &self.srcpads)
3611            .field("numsinkpads", &self.numsinkpads)
3612            .field("sinkpads", &self.sinkpads)
3613            .field("pads_cookie", &self.pads_cookie)
3614            .field("contexts", &self.contexts)
3615            .finish()
3616    }
3617}
3618
3619#[repr(C)]
3620#[allow(dead_code)]
3621pub struct GstElementFactory {
3622    _data: [u8; 0],
3623    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3624}
3625
3626impl ::std::fmt::Debug for GstElementFactory {
3627    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3628        f.debug_struct(&format!("GstElementFactory @ {self:p}"))
3629            .finish()
3630    }
3631}
3632
3633#[repr(C)]
3634#[allow(dead_code)]
3635pub struct GstFlagSet {
3636    _data: [u8; 0],
3637    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3638}
3639
3640impl ::std::fmt::Debug for GstFlagSet {
3641    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3642        f.debug_struct(&format!("GstFlagSet @ {self:p}")).finish()
3643    }
3644}
3645
3646#[repr(C)]
3647#[allow(dead_code)]
3648pub struct GstFraction {
3649    _data: [u8; 0],
3650    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3651}
3652
3653impl ::std::fmt::Debug for GstFraction {
3654    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3655        f.debug_struct(&format!("GstFraction @ {self:p}")).finish()
3656    }
3657}
3658
3659#[repr(C)]
3660#[allow(dead_code)]
3661pub struct GstFractionRange {
3662    _data: [u8; 0],
3663    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3664}
3665
3666impl ::std::fmt::Debug for GstFractionRange {
3667    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3668        f.debug_struct(&format!("GstFractionRange @ {self:p}"))
3669            .finish()
3670    }
3671}
3672
3673#[derive(Copy, Clone)]
3674#[repr(C)]
3675pub struct GstGhostPad {
3676    pub pad: GstProxyPad,
3677    pub priv_: *mut GstGhostPadPrivate,
3678}
3679
3680impl ::std::fmt::Debug for GstGhostPad {
3681    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3682        f.debug_struct(&format!("GstGhostPad @ {self:p}"))
3683            .field("pad", &self.pad)
3684            .finish()
3685    }
3686}
3687
3688#[repr(C)]
3689#[allow(dead_code)]
3690pub struct GstInt64Range {
3691    _data: [u8; 0],
3692    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3693}
3694
3695impl ::std::fmt::Debug for GstInt64Range {
3696    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3697        f.debug_struct(&format!("GstInt64Range @ {self:p}"))
3698            .finish()
3699    }
3700}
3701
3702#[repr(C)]
3703#[allow(dead_code)]
3704pub struct GstIntRange {
3705    _data: [u8; 0],
3706    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3707}
3708
3709impl ::std::fmt::Debug for GstIntRange {
3710    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3711        f.debug_struct(&format!("GstIntRange @ {self:p}")).finish()
3712    }
3713}
3714
3715#[repr(C)]
3716#[allow(dead_code)]
3717pub struct GstMetaFactory {
3718    _data: [u8; 0],
3719    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3720}
3721
3722impl ::std::fmt::Debug for GstMetaFactory {
3723    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3724        f.debug_struct(&format!("GstMetaFactory @ {self:p}"))
3725            .finish()
3726    }
3727}
3728
3729#[derive(Copy, Clone)]
3730#[repr(C)]
3731pub struct GstObject {
3732    pub object: gobject::GInitiallyUnowned,
3733    pub lock: glib::GMutex,
3734    pub name: *mut c_char,
3735    pub parent: *mut GstObject,
3736    pub flags: u32,
3737    pub control_bindings: *mut glib::GList,
3738    pub control_rate: u64,
3739    pub last_sync: u64,
3740    pub _gst_reserved: gpointer,
3741}
3742
3743impl ::std::fmt::Debug for GstObject {
3744    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3745        f.debug_struct(&format!("GstObject @ {self:p}"))
3746            .field("object", &self.object)
3747            .field("lock", &self.lock)
3748            .field("name", &self.name)
3749            .field("parent", &self.parent)
3750            .field("flags", &self.flags)
3751            .finish()
3752    }
3753}
3754
3755#[derive(Copy, Clone)]
3756#[repr(C)]
3757pub struct GstPad {
3758    pub object: GstObject,
3759    pub element_private: gpointer,
3760    pub padtemplate: *mut GstPadTemplate,
3761    pub direction: GstPadDirection,
3762    pub stream_rec_lock: glib::GRecMutex,
3763    pub task: *mut GstTask,
3764    pub block_cond: glib::GCond,
3765    pub probes: glib::GHookList,
3766    pub mode: GstPadMode,
3767    pub activatefunc: GstPadActivateFunction,
3768    pub activatedata: gpointer,
3769    pub activatenotify: glib::GDestroyNotify,
3770    pub activatemodefunc: GstPadActivateModeFunction,
3771    pub activatemodedata: gpointer,
3772    pub activatemodenotify: glib::GDestroyNotify,
3773    pub peer: *mut GstPad,
3774    pub linkfunc: GstPadLinkFunction,
3775    pub linkdata: gpointer,
3776    pub linknotify: glib::GDestroyNotify,
3777    pub unlinkfunc: GstPadUnlinkFunction,
3778    pub unlinkdata: gpointer,
3779    pub unlinknotify: glib::GDestroyNotify,
3780    pub chainfunc: GstPadChainFunction,
3781    pub chaindata: gpointer,
3782    pub chainnotify: glib::GDestroyNotify,
3783    pub chainlistfunc: GstPadChainListFunction,
3784    pub chainlistdata: gpointer,
3785    pub chainlistnotify: glib::GDestroyNotify,
3786    pub getrangefunc: GstPadGetRangeFunction,
3787    pub getrangedata: gpointer,
3788    pub getrangenotify: glib::GDestroyNotify,
3789    pub eventfunc: GstPadEventFunction,
3790    pub eventdata: gpointer,
3791    pub eventnotify: glib::GDestroyNotify,
3792    pub offset: i64,
3793    pub queryfunc: GstPadQueryFunction,
3794    pub querydata: gpointer,
3795    pub querynotify: glib::GDestroyNotify,
3796    pub iterintlinkfunc: GstPadIterIntLinkFunction,
3797    pub iterintlinkdata: gpointer,
3798    pub iterintlinknotify: glib::GDestroyNotify,
3799    pub num_probes: c_int,
3800    pub num_blocked: c_int,
3801    pub priv_: *mut GstPadPrivate,
3802    pub ABI: GstPad_ABI,
3803}
3804
3805impl ::std::fmt::Debug for GstPad {
3806    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3807        f.debug_struct(&format!("GstPad @ {self:p}"))
3808            .field("object", &self.object)
3809            .field("element_private", &self.element_private)
3810            .field("padtemplate", &self.padtemplate)
3811            .field("direction", &self.direction)
3812            .field("ABI", &self.ABI)
3813            .finish()
3814    }
3815}
3816
3817#[derive(Copy, Clone)]
3818#[repr(C)]
3819pub struct GstPadTemplate {
3820    pub object: GstObject,
3821    pub name_template: *mut c_char,
3822    pub direction: GstPadDirection,
3823    pub presence: GstPadPresence,
3824    pub caps: *mut GstCaps,
3825    pub ABI: GstPadTemplate_ABI,
3826}
3827
3828impl ::std::fmt::Debug for GstPadTemplate {
3829    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3830        f.debug_struct(&format!("GstPadTemplate @ {self:p}"))
3831            .field("object", &self.object)
3832            .field("name_template", &self.name_template)
3833            .field("direction", &self.direction)
3834            .field("presence", &self.presence)
3835            .field("caps", &self.caps)
3836            .field("ABI", &self.ABI)
3837            .finish()
3838    }
3839}
3840
3841#[repr(C)]
3842#[allow(dead_code)]
3843pub struct GstParamArray {
3844    _data: [u8; 0],
3845    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3846}
3847
3848impl ::std::fmt::Debug for GstParamArray {
3849    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3850        f.debug_struct(&format!("GstParamArray @ {self:p}"))
3851            .finish()
3852    }
3853}
3854
3855#[repr(C)]
3856#[allow(dead_code)]
3857pub struct GstParamFraction {
3858    _data: [u8; 0],
3859    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3860}
3861
3862impl ::std::fmt::Debug for GstParamFraction {
3863    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3864        f.debug_struct(&format!("GstParamFraction @ {self:p}"))
3865            .finish()
3866    }
3867}
3868
3869#[derive(Copy, Clone)]
3870#[repr(C)]
3871pub struct GstPipeline {
3872    pub bin: GstBin,
3873    pub fixed_clock: *mut GstClock,
3874    pub stream_time: GstClockTime,
3875    pub delay: GstClockTime,
3876    pub priv_: *mut GstPipelinePrivate,
3877    pub _gst_reserved: [gpointer; 4],
3878}
3879
3880impl ::std::fmt::Debug for GstPipeline {
3881    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3882        f.debug_struct(&format!("GstPipeline @ {self:p}"))
3883            .field("bin", &self.bin)
3884            .field("fixed_clock", &self.fixed_clock)
3885            .field("stream_time", &self.stream_time)
3886            .field("delay", &self.delay)
3887            .finish()
3888    }
3889}
3890
3891#[repr(C)]
3892#[allow(dead_code)]
3893pub struct GstPlugin {
3894    _data: [u8; 0],
3895    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3896}
3897
3898impl ::std::fmt::Debug for GstPlugin {
3899    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3900        f.debug_struct(&format!("GstPlugin @ {self:p}")).finish()
3901    }
3902}
3903
3904#[repr(C)]
3905#[allow(dead_code)]
3906pub struct GstPluginFeature {
3907    _data: [u8; 0],
3908    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
3909}
3910
3911impl ::std::fmt::Debug for GstPluginFeature {
3912    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3913        f.debug_struct(&format!("GstPluginFeature @ {self:p}"))
3914            .finish()
3915    }
3916}
3917
3918#[derive(Copy, Clone)]
3919#[repr(C)]
3920pub struct GstProxyPad {
3921    pub pad: GstPad,
3922    pub priv_: *mut GstProxyPadPrivate,
3923}
3924
3925impl ::std::fmt::Debug for GstProxyPad {
3926    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3927        f.debug_struct(&format!("GstProxyPad @ {self:p}"))
3928            .field("pad", &self.pad)
3929            .finish()
3930    }
3931}
3932
3933#[derive(Copy, Clone)]
3934#[repr(C)]
3935pub struct GstRegistry {
3936    pub object: GstObject,
3937    pub priv_: *mut GstRegistryPrivate,
3938}
3939
3940impl ::std::fmt::Debug for GstRegistry {
3941    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3942        f.debug_struct(&format!("GstRegistry @ {self:p}"))
3943            .field("object", &self.object)
3944            .finish()
3945    }
3946}
3947
3948#[derive(Copy, Clone)]
3949#[repr(C)]
3950pub struct GstSharedTaskPool {
3951    pub parent: GstTaskPool,
3952    pub priv_: *mut GstSharedTaskPoolPrivate,
3953    pub _gst_reserved: [gpointer; 4],
3954}
3955
3956impl ::std::fmt::Debug for GstSharedTaskPool {
3957    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3958        f.debug_struct(&format!("GstSharedTaskPool @ {self:p}"))
3959            .field("parent", &self.parent)
3960            .finish()
3961    }
3962}
3963
3964#[derive(Copy, Clone)]
3965#[repr(C)]
3966pub struct GstStream {
3967    pub object: GstObject,
3968    pub stream_id: *const c_char,
3969    pub priv_: *mut GstStreamPrivate,
3970    pub _gst_reserved: [gpointer; 4],
3971}
3972
3973impl ::std::fmt::Debug for GstStream {
3974    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3975        f.debug_struct(&format!("GstStream @ {self:p}"))
3976            .field("stream_id", &self.stream_id)
3977            .finish()
3978    }
3979}
3980
3981#[derive(Copy, Clone)]
3982#[repr(C)]
3983pub struct GstStreamCollection {
3984    pub object: GstObject,
3985    pub upstream_id: *mut c_char,
3986    pub priv_: *mut GstStreamCollectionPrivate,
3987    pub _gst_reserved: [gpointer; 4],
3988}
3989
3990impl ::std::fmt::Debug for GstStreamCollection {
3991    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
3992        f.debug_struct(&format!("GstStreamCollection @ {self:p}"))
3993            .finish()
3994    }
3995}
3996
3997#[derive(Copy, Clone)]
3998#[repr(C)]
3999pub struct GstSystemClock {
4000    pub clock: GstClock,
4001    pub priv_: *mut GstSystemClockPrivate,
4002    pub _gst_reserved: [gpointer; 4],
4003}
4004
4005impl ::std::fmt::Debug for GstSystemClock {
4006    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4007        f.debug_struct(&format!("GstSystemClock @ {self:p}"))
4008            .field("clock", &self.clock)
4009            .finish()
4010    }
4011}
4012
4013#[derive(Copy, Clone)]
4014#[repr(C)]
4015pub struct GstTask {
4016    pub object: GstObject,
4017    pub state: GstTaskState,
4018    pub cond: glib::GCond,
4019    pub lock: *mut glib::GRecMutex,
4020    pub func: GstTaskFunction,
4021    pub user_data: gpointer,
4022    pub notify: glib::GDestroyNotify,
4023    pub running: gboolean,
4024    pub thread: *mut glib::GThread,
4025    pub priv_: *mut GstTaskPrivate,
4026    pub _gst_reserved: [gpointer; 4],
4027}
4028
4029impl ::std::fmt::Debug for GstTask {
4030    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4031        f.debug_struct(&format!("GstTask @ {self:p}"))
4032            .field("object", &self.object)
4033            .field("state", &self.state)
4034            .field("cond", &self.cond)
4035            .field("lock", &self.lock)
4036            .field("func", &self.func)
4037            .field("user_data", &self.user_data)
4038            .field("notify", &self.notify)
4039            .field("running", &self.running)
4040            .finish()
4041    }
4042}
4043
4044#[derive(Copy, Clone)]
4045#[repr(C)]
4046pub struct GstTaskPool {
4047    pub object: GstObject,
4048    pub pool: *mut glib::GThreadPool,
4049    pub _gst_reserved: [gpointer; 4],
4050}
4051
4052impl ::std::fmt::Debug for GstTaskPool {
4053    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4054        f.debug_struct(&format!("GstTaskPool @ {self:p}"))
4055            .field("object", &self.object)
4056            .finish()
4057    }
4058}
4059
4060#[derive(Copy, Clone)]
4061#[repr(C)]
4062pub struct GstTracer {
4063    pub parent: GstObject,
4064    pub priv_: *mut GstTracerPrivate,
4065    pub _gst_reserved: [gpointer; 4],
4066}
4067
4068impl ::std::fmt::Debug for GstTracer {
4069    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4070        f.debug_struct(&format!("GstTracer @ {self:p}"))
4071            .field("parent", &self.parent)
4072            .finish()
4073    }
4074}
4075
4076#[repr(C)]
4077#[allow(dead_code)]
4078pub struct GstTracerFactory {
4079    _data: [u8; 0],
4080    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4081}
4082
4083impl ::std::fmt::Debug for GstTracerFactory {
4084    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4085        f.debug_struct(&format!("GstTracerFactory @ {self:p}"))
4086            .finish()
4087    }
4088}
4089
4090#[repr(C)]
4091#[allow(dead_code)]
4092pub struct GstTracerRecord {
4093    _data: [u8; 0],
4094    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4095}
4096
4097impl ::std::fmt::Debug for GstTracerRecord {
4098    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4099        f.debug_struct(&format!("GstTracerRecord @ {self:p}"))
4100            .finish()
4101    }
4102}
4103
4104#[repr(C)]
4105#[allow(dead_code)]
4106pub struct GstTypeFindFactory {
4107    _data: [u8; 0],
4108    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4109}
4110
4111impl ::std::fmt::Debug for GstTypeFindFactory {
4112    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4113        f.debug_struct(&format!("GstTypeFindFactory @ {self:p}"))
4114            .finish()
4115    }
4116}
4117
4118#[repr(C)]
4119#[allow(dead_code)]
4120pub struct GstValueArray {
4121    _data: [u8; 0],
4122    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4123}
4124
4125impl ::std::fmt::Debug for GstValueArray {
4126    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4127        f.debug_struct(&format!("GstValueArray @ {self:p}"))
4128            .finish()
4129    }
4130}
4131
4132#[repr(C)]
4133#[allow(dead_code)]
4134pub struct GstValueList {
4135    _data: [u8; 0],
4136    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4137}
4138
4139impl ::std::fmt::Debug for GstValueList {
4140    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4141        f.debug_struct(&format!("GstValueList @ {self:p}")).finish()
4142    }
4143}
4144
4145#[repr(C)]
4146#[allow(dead_code)]
4147pub struct GstValueUniqueList {
4148    _data: [u8; 0],
4149    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4150}
4151
4152impl ::std::fmt::Debug for GstValueUniqueList {
4153    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4154        f.debug_struct(&format!("GstValueUniqueList @ {self:p}"))
4155            .finish()
4156    }
4157}
4158
4159// Interfaces
4160#[repr(C)]
4161#[allow(dead_code)]
4162pub struct GstChildProxy {
4163    _data: [u8; 0],
4164    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4165}
4166
4167impl ::std::fmt::Debug for GstChildProxy {
4168    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4169        write!(f, "GstChildProxy @ {self:p}")
4170    }
4171}
4172
4173#[repr(C)]
4174#[allow(dead_code)]
4175pub struct GstPreset {
4176    _data: [u8; 0],
4177    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4178}
4179
4180impl ::std::fmt::Debug for GstPreset {
4181    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4182        write!(f, "GstPreset @ {self:p}")
4183    }
4184}
4185
4186#[repr(C)]
4187#[allow(dead_code)]
4188pub struct GstTagSetter {
4189    _data: [u8; 0],
4190    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4191}
4192
4193impl ::std::fmt::Debug for GstTagSetter {
4194    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4195        write!(f, "GstTagSetter @ {self:p}")
4196    }
4197}
4198
4199#[repr(C)]
4200#[allow(dead_code)]
4201pub struct GstTocSetter {
4202    _data: [u8; 0],
4203    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4204}
4205
4206impl ::std::fmt::Debug for GstTocSetter {
4207    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4208        write!(f, "GstTocSetter @ {self:p}")
4209    }
4210}
4211
4212#[repr(C)]
4213#[allow(dead_code)]
4214pub struct GstURIHandler {
4215    _data: [u8; 0],
4216    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
4217}
4218
4219impl ::std::fmt::Debug for GstURIHandler {
4220    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
4221        write!(f, "GstURIHandler @ {self:p}")
4222    }
4223}
4224
4225unsafe extern "C" {
4226
4227    //=========================================================================
4228    // GstBufferingMode
4229    //=========================================================================
4230    pub fn gst_buffering_mode_get_type() -> GType;
4231
4232    //=========================================================================
4233    // GstBusSyncReply
4234    //=========================================================================
4235    pub fn gst_bus_sync_reply_get_type() -> GType;
4236
4237    //=========================================================================
4238    // GstCapsIntersectMode
4239    //=========================================================================
4240    pub fn gst_caps_intersect_mode_get_type() -> GType;
4241
4242    //=========================================================================
4243    // GstClockEntryType
4244    //=========================================================================
4245    pub fn gst_clock_entry_type_get_type() -> GType;
4246
4247    //=========================================================================
4248    // GstClockReturn
4249    //=========================================================================
4250    pub fn gst_clock_return_get_type() -> GType;
4251
4252    //=========================================================================
4253    // GstClockType
4254    //=========================================================================
4255    pub fn gst_clock_type_get_type() -> GType;
4256
4257    //=========================================================================
4258    // GstCoreError
4259    //=========================================================================
4260    pub fn gst_core_error_get_type() -> GType;
4261    pub fn gst_core_error_quark() -> glib::GQuark;
4262
4263    //=========================================================================
4264    // GstDebugColorMode
4265    //=========================================================================
4266    pub fn gst_debug_color_mode_get_type() -> GType;
4267
4268    //=========================================================================
4269    // GstDebugLevel
4270    //=========================================================================
4271    pub fn gst_debug_level_get_type() -> GType;
4272    pub fn gst_debug_level_get_name(level: GstDebugLevel) -> *const c_char;
4273
4274    //=========================================================================
4275    // GstEventType
4276    //=========================================================================
4277    pub fn gst_event_type_get_type() -> GType;
4278    pub fn gst_event_type_get_flags(type_: GstEventType) -> GstEventTypeFlags;
4279    pub fn gst_event_type_get_name(type_: GstEventType) -> *const c_char;
4280    pub fn gst_event_type_to_quark(type_: GstEventType) -> glib::GQuark;
4281    #[cfg(feature = "v1_22")]
4282    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
4283    pub fn gst_event_type_to_sticky_ordering(type_: GstEventType) -> c_uint;
4284
4285    //=========================================================================
4286    // GstFlowReturn
4287    //=========================================================================
4288    pub fn gst_flow_return_get_type() -> GType;
4289
4290    //=========================================================================
4291    // GstFormat
4292    //=========================================================================
4293    pub fn gst_format_get_type() -> GType;
4294    pub fn gst_format_get_by_nick(nick: *const c_char) -> GstFormat;
4295    pub fn gst_format_get_details(format: GstFormat) -> *const GstFormatDefinition;
4296    pub fn gst_format_get_name(format: GstFormat) -> *const c_char;
4297    pub fn gst_format_iterate_definitions() -> *mut GstIterator;
4298    pub fn gst_format_register(nick: *const c_char, description: *const c_char) -> GstFormat;
4299    pub fn gst_format_to_quark(format: GstFormat) -> glib::GQuark;
4300
4301    //=========================================================================
4302    // GstIteratorItem
4303    //=========================================================================
4304    pub fn gst_iterator_item_get_type() -> GType;
4305
4306    //=========================================================================
4307    // GstIteratorResult
4308    //=========================================================================
4309    pub fn gst_iterator_result_get_type() -> GType;
4310
4311    //=========================================================================
4312    // GstLibraryError
4313    //=========================================================================
4314    pub fn gst_library_error_get_type() -> GType;
4315    pub fn gst_library_error_quark() -> glib::GQuark;
4316
4317    //=========================================================================
4318    // GstPadDirection
4319    //=========================================================================
4320    pub fn gst_pad_direction_get_type() -> GType;
4321
4322    //=========================================================================
4323    // GstPadLinkReturn
4324    //=========================================================================
4325    pub fn gst_pad_link_return_get_type() -> GType;
4326
4327    //=========================================================================
4328    // GstPadMode
4329    //=========================================================================
4330    pub fn gst_pad_mode_get_type() -> GType;
4331    pub fn gst_pad_mode_get_name(mode: GstPadMode) -> *const c_char;
4332
4333    //=========================================================================
4334    // GstPadPresence
4335    //=========================================================================
4336    pub fn gst_pad_presence_get_type() -> GType;
4337
4338    //=========================================================================
4339    // GstPadProbeReturn
4340    //=========================================================================
4341    pub fn gst_pad_probe_return_get_type() -> GType;
4342
4343    //=========================================================================
4344    // GstParseError
4345    //=========================================================================
4346    pub fn gst_parse_error_get_type() -> GType;
4347    pub fn gst_parse_error_quark() -> glib::GQuark;
4348
4349    //=========================================================================
4350    // GstPluginError
4351    //=========================================================================
4352    pub fn gst_plugin_error_get_type() -> GType;
4353    pub fn gst_plugin_error_quark() -> glib::GQuark;
4354
4355    //=========================================================================
4356    // GstProgressType
4357    //=========================================================================
4358    pub fn gst_progress_type_get_type() -> GType;
4359
4360    //=========================================================================
4361    // GstPromiseResult
4362    //=========================================================================
4363    pub fn gst_promise_result_get_type() -> GType;
4364
4365    //=========================================================================
4366    // GstQOSType
4367    //=========================================================================
4368    pub fn gst_qos_type_get_type() -> GType;
4369
4370    //=========================================================================
4371    // GstQueryType
4372    //=========================================================================
4373    pub fn gst_query_type_get_type() -> GType;
4374    pub fn gst_query_type_get_flags(type_: GstQueryType) -> GstQueryTypeFlags;
4375    pub fn gst_query_type_get_name(type_: GstQueryType) -> *const c_char;
4376    pub fn gst_query_type_to_quark(type_: GstQueryType) -> glib::GQuark;
4377
4378    //=========================================================================
4379    // GstRank
4380    //=========================================================================
4381    pub fn gst_rank_get_type() -> GType;
4382
4383    //=========================================================================
4384    // GstResourceError
4385    //=========================================================================
4386    pub fn gst_resource_error_get_type() -> GType;
4387    pub fn gst_resource_error_quark() -> glib::GQuark;
4388
4389    //=========================================================================
4390    // GstSearchMode
4391    //=========================================================================
4392    pub fn gst_search_mode_get_type() -> GType;
4393
4394    //=========================================================================
4395    // GstSeekType
4396    //=========================================================================
4397    pub fn gst_seek_type_get_type() -> GType;
4398
4399    //=========================================================================
4400    // GstState
4401    //=========================================================================
4402    pub fn gst_state_get_type() -> GType;
4403    #[cfg(feature = "v1_28")]
4404    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4405    pub fn gst_state_get_name(state: GstState) -> *const c_char;
4406
4407    //=========================================================================
4408    // GstStateChange
4409    //=========================================================================
4410    pub fn gst_state_change_get_type() -> GType;
4411    pub fn gst_state_change_get_name(transition: GstStateChange) -> *const c_char;
4412
4413    //=========================================================================
4414    // GstStateChangeReturn
4415    //=========================================================================
4416    pub fn gst_state_change_return_get_type() -> GType;
4417    #[cfg(feature = "v1_28")]
4418    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4419    pub fn gst_state_change_return_get_name(state_ret: GstStateChangeReturn) -> *const c_char;
4420
4421    //=========================================================================
4422    // GstStreamError
4423    //=========================================================================
4424    pub fn gst_stream_error_get_type() -> GType;
4425    pub fn gst_stream_error_quark() -> glib::GQuark;
4426
4427    //=========================================================================
4428    // GstStreamStatusType
4429    //=========================================================================
4430    pub fn gst_stream_status_type_get_type() -> GType;
4431
4432    //=========================================================================
4433    // GstStructureChangeType
4434    //=========================================================================
4435    pub fn gst_structure_change_type_get_type() -> GType;
4436
4437    //=========================================================================
4438    // GstTagFlag
4439    //=========================================================================
4440    pub fn gst_tag_flag_get_type() -> GType;
4441
4442    //=========================================================================
4443    // GstTagMergeMode
4444    //=========================================================================
4445    pub fn gst_tag_merge_mode_get_type() -> GType;
4446
4447    //=========================================================================
4448    // GstTagScope
4449    //=========================================================================
4450    pub fn gst_tag_scope_get_type() -> GType;
4451
4452    //=========================================================================
4453    // GstTaskState
4454    //=========================================================================
4455    pub fn gst_task_state_get_type() -> GType;
4456
4457    //=========================================================================
4458    // GstTocEntryType
4459    //=========================================================================
4460    pub fn gst_toc_entry_type_get_type() -> GType;
4461    pub fn gst_toc_entry_type_get_nick(type_: GstTocEntryType) -> *const c_char;
4462
4463    //=========================================================================
4464    // GstTocLoopType
4465    //=========================================================================
4466    pub fn gst_toc_loop_type_get_type() -> GType;
4467
4468    //=========================================================================
4469    // GstTocScope
4470    //=========================================================================
4471    pub fn gst_toc_scope_get_type() -> GType;
4472
4473    //=========================================================================
4474    // GstTracerFieldType
4475    //=========================================================================
4476    #[cfg(feature = "v1_30")]
4477    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
4478    pub fn gst_tracer_field_type_get_type() -> GType;
4479
4480    //=========================================================================
4481    // GstTracerValueScope
4482    //=========================================================================
4483    pub fn gst_tracer_value_scope_get_type() -> GType;
4484
4485    //=========================================================================
4486    // GstTypeFindProbability
4487    //=========================================================================
4488    pub fn gst_type_find_probability_get_type() -> GType;
4489
4490    //=========================================================================
4491    // GstURIError
4492    //=========================================================================
4493    pub fn gst_uri_error_get_type() -> GType;
4494    pub fn gst_uri_error_quark() -> glib::GQuark;
4495
4496    //=========================================================================
4497    // GstURIType
4498    //=========================================================================
4499    pub fn gst_uri_type_get_type() -> GType;
4500
4501    //=========================================================================
4502    // GstAllocatorFlags
4503    //=========================================================================
4504    pub fn gst_allocator_flags_get_type() -> GType;
4505
4506    //=========================================================================
4507    // GstBinFlags
4508    //=========================================================================
4509    pub fn gst_bin_flags_get_type() -> GType;
4510
4511    //=========================================================================
4512    // GstBufferCopyFlags
4513    //=========================================================================
4514    pub fn gst_buffer_copy_flags_get_type() -> GType;
4515
4516    //=========================================================================
4517    // GstBufferFlags
4518    //=========================================================================
4519    pub fn gst_buffer_flags_get_type() -> GType;
4520
4521    //=========================================================================
4522    // GstBufferPoolAcquireFlags
4523    //=========================================================================
4524    pub fn gst_buffer_pool_acquire_flags_get_type() -> GType;
4525
4526    //=========================================================================
4527    // GstBusFlags
4528    //=========================================================================
4529    pub fn gst_bus_flags_get_type() -> GType;
4530
4531    //=========================================================================
4532    // GstCapsFlags
4533    //=========================================================================
4534    pub fn gst_caps_flags_get_type() -> GType;
4535
4536    //=========================================================================
4537    // GstClockFlags
4538    //=========================================================================
4539    pub fn gst_clock_flags_get_type() -> GType;
4540
4541    //=========================================================================
4542    // GstDebugColorFlags
4543    //=========================================================================
4544    pub fn gst_debug_color_flags_get_type() -> GType;
4545
4546    //=========================================================================
4547    // GstDebugGraphDetails
4548    //=========================================================================
4549    pub fn gst_debug_graph_details_get_type() -> GType;
4550
4551    //=========================================================================
4552    // GstElementFlags
4553    //=========================================================================
4554    pub fn gst_element_flags_get_type() -> GType;
4555
4556    //=========================================================================
4557    // GstEventTypeFlags
4558    //=========================================================================
4559    pub fn gst_event_type_flags_get_type() -> GType;
4560
4561    //=========================================================================
4562    // GstGapFlags
4563    //=========================================================================
4564    #[cfg(feature = "v1_20")]
4565    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4566    pub fn gst_gap_flags_get_type() -> GType;
4567
4568    //=========================================================================
4569    // GstLockFlags
4570    //=========================================================================
4571    pub fn gst_lock_flags_get_type() -> GType;
4572
4573    //=========================================================================
4574    // GstLogContextFlags
4575    //=========================================================================
4576    #[cfg(feature = "v1_28")]
4577    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4578    pub fn gst_log_context_flags_get_type() -> GType;
4579
4580    //=========================================================================
4581    // GstLogContextHashFlags
4582    //=========================================================================
4583    #[cfg(feature = "v1_28")]
4584    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4585    pub fn gst_log_context_hash_flags_get_type() -> GType;
4586
4587    //=========================================================================
4588    // GstMapFlags
4589    //=========================================================================
4590    pub fn gst_map_flags_get_type() -> GType;
4591
4592    //=========================================================================
4593    // GstMemoryFlags
4594    //=========================================================================
4595    pub fn gst_memory_flags_get_type() -> GType;
4596
4597    //=========================================================================
4598    // GstMessageType
4599    //=========================================================================
4600    pub fn gst_message_type_get_type() -> GType;
4601    pub fn gst_message_type_get_name(type_: GstMessageType) -> *const c_char;
4602    pub fn gst_message_type_to_quark(type_: GstMessageType) -> glib::GQuark;
4603
4604    //=========================================================================
4605    // GstMetaFlags
4606    //=========================================================================
4607    pub fn gst_meta_flags_get_type() -> GType;
4608
4609    //=========================================================================
4610    // GstMiniObjectFlags
4611    //=========================================================================
4612    pub fn gst_mini_object_flags_get_type() -> GType;
4613
4614    //=========================================================================
4615    // GstObjectFlags
4616    //=========================================================================
4617    pub fn gst_object_flags_get_type() -> GType;
4618
4619    //=========================================================================
4620    // GstPadFlags
4621    //=========================================================================
4622    pub fn gst_pad_flags_get_type() -> GType;
4623
4624    //=========================================================================
4625    // GstPadLinkCheck
4626    //=========================================================================
4627    pub fn gst_pad_link_check_get_type() -> GType;
4628
4629    //=========================================================================
4630    // GstPadProbeType
4631    //=========================================================================
4632    pub fn gst_pad_probe_type_get_type() -> GType;
4633
4634    //=========================================================================
4635    // GstPadTemplateFlags
4636    //=========================================================================
4637    pub fn gst_pad_template_flags_get_type() -> GType;
4638
4639    //=========================================================================
4640    // GstParseFlags
4641    //=========================================================================
4642    pub fn gst_parse_flags_get_type() -> GType;
4643
4644    //=========================================================================
4645    // GstPipelineFlags
4646    //=========================================================================
4647    pub fn gst_pipeline_flags_get_type() -> GType;
4648
4649    //=========================================================================
4650    // GstPluginAPIFlags
4651    //=========================================================================
4652    #[cfg(feature = "v1_18")]
4653    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
4654    pub fn gst_plugin_api_flags_get_type() -> GType;
4655
4656    //=========================================================================
4657    // GstPluginDependencyFlags
4658    //=========================================================================
4659    pub fn gst_plugin_dependency_flags_get_type() -> GType;
4660
4661    //=========================================================================
4662    // GstPluginFlags
4663    //=========================================================================
4664    pub fn gst_plugin_flags_get_type() -> GType;
4665
4666    //=========================================================================
4667    // GstQueryTypeFlags
4668    //=========================================================================
4669    pub fn gst_query_type_flags_get_type() -> GType;
4670
4671    //=========================================================================
4672    // GstSchedulingFlags
4673    //=========================================================================
4674    pub fn gst_scheduling_flags_get_type() -> GType;
4675
4676    //=========================================================================
4677    // GstSeekFlags
4678    //=========================================================================
4679    pub fn gst_seek_flags_get_type() -> GType;
4680
4681    //=========================================================================
4682    // GstSegmentFlags
4683    //=========================================================================
4684    pub fn gst_segment_flags_get_type() -> GType;
4685
4686    //=========================================================================
4687    // GstSerializeFlags
4688    //=========================================================================
4689    #[cfg(feature = "v1_20")]
4690    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4691    pub fn gst_serialize_flags_get_type() -> GType;
4692
4693    //=========================================================================
4694    // GstStackTraceFlags
4695    //=========================================================================
4696    pub fn gst_stack_trace_flags_get_type() -> GType;
4697
4698    //=========================================================================
4699    // GstStreamFlags
4700    //=========================================================================
4701    pub fn gst_stream_flags_get_type() -> GType;
4702
4703    //=========================================================================
4704    // GstStreamType
4705    //=========================================================================
4706    pub fn gst_stream_type_get_type() -> GType;
4707    pub fn gst_stream_type_get_name(stype: GstStreamType) -> *const c_char;
4708
4709    //=========================================================================
4710    // GstTracerValueFlags
4711    //=========================================================================
4712    pub fn gst_tracer_value_flags_get_type() -> GType;
4713
4714    //=========================================================================
4715    // GstAllocationParams
4716    //=========================================================================
4717    pub fn gst_allocation_params_get_type() -> GType;
4718    #[cfg(feature = "v1_20")]
4719    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4720    pub fn gst_allocation_params_new() -> *mut GstAllocationParams;
4721    pub fn gst_allocation_params_copy(
4722        params: *const GstAllocationParams,
4723    ) -> *mut GstAllocationParams;
4724    pub fn gst_allocation_params_free(params: *mut GstAllocationParams);
4725    pub fn gst_allocation_params_init(params: *mut GstAllocationParams);
4726
4727    //=========================================================================
4728    // GstAtomicQueue
4729    //=========================================================================
4730    pub fn gst_atomic_queue_get_type() -> GType;
4731    pub fn gst_atomic_queue_new(initial_size: c_uint) -> *mut GstAtomicQueue;
4732    pub fn gst_atomic_queue_length(queue: *mut GstAtomicQueue) -> c_uint;
4733    pub fn gst_atomic_queue_peek(queue: *mut GstAtomicQueue) -> gpointer;
4734    pub fn gst_atomic_queue_pop(queue: *mut GstAtomicQueue) -> gpointer;
4735    pub fn gst_atomic_queue_push(queue: *mut GstAtomicQueue, data: gpointer);
4736    pub fn gst_atomic_queue_ref(queue: *mut GstAtomicQueue);
4737    pub fn gst_atomic_queue_unref(queue: *mut GstAtomicQueue);
4738
4739    //=========================================================================
4740    // GstBuffer
4741    //=========================================================================
4742    pub fn gst_buffer_get_type() -> GType;
4743    pub fn gst_buffer_new() -> *mut GstBuffer;
4744    pub fn gst_buffer_new_allocate(
4745        allocator: *mut GstAllocator,
4746        size: size_t,
4747        params: *mut GstAllocationParams,
4748    ) -> *mut GstBuffer;
4749    #[cfg(feature = "v1_20")]
4750    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4751    pub fn gst_buffer_new_memdup(data: gconstpointer, size: size_t) -> *mut GstBuffer;
4752    pub fn gst_buffer_new_wrapped(data: gpointer, size: size_t) -> *mut GstBuffer;
4753    #[cfg(feature = "v1_16")]
4754    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
4755    pub fn gst_buffer_new_wrapped_bytes(bytes: *mut glib::GBytes) -> *mut GstBuffer;
4756    pub fn gst_buffer_new_wrapped_full(
4757        flags: GstMemoryFlags,
4758        data: gpointer,
4759        maxsize: size_t,
4760        offset: size_t,
4761        size: size_t,
4762        user_data: gpointer,
4763        notify: glib::GDestroyNotify,
4764    ) -> *mut GstBuffer;
4765    #[cfg(feature = "v1_20")]
4766    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4767    pub fn gst_buffer_add_custom_meta(
4768        buffer: *mut GstBuffer,
4769        name: *const c_char,
4770    ) -> *mut GstCustomMeta;
4771    pub fn gst_buffer_add_meta(
4772        buffer: *mut GstBuffer,
4773        info: *const GstMetaInfo,
4774        params: gpointer,
4775    ) -> *mut GstMeta;
4776    pub fn gst_buffer_add_parent_buffer_meta(
4777        buffer: *mut GstBuffer,
4778        ref_: *mut GstBuffer,
4779    ) -> *mut GstParentBufferMeta;
4780    pub fn gst_buffer_add_protection_meta(
4781        buffer: *mut GstBuffer,
4782        info: *mut GstStructure,
4783    ) -> *mut GstProtectionMeta;
4784    pub fn gst_buffer_add_reference_timestamp_meta(
4785        buffer: *mut GstBuffer,
4786        reference: *mut GstCaps,
4787        timestamp: GstClockTime,
4788        duration: GstClockTime,
4789    ) -> *mut GstReferenceTimestampMeta;
4790    pub fn gst_buffer_append(buf1: *mut GstBuffer, buf2: *mut GstBuffer) -> *mut GstBuffer;
4791    pub fn gst_buffer_append_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4792    pub fn gst_buffer_append_region(
4793        buf1: *mut GstBuffer,
4794        buf2: *mut GstBuffer,
4795        offset: ssize_t,
4796        size: ssize_t,
4797    ) -> *mut GstBuffer;
4798    #[cfg(feature = "v1_18_3")]
4799    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4800    pub fn gst_buffer_copy(buf: *const GstBuffer) -> *mut GstBuffer;
4801    pub fn gst_buffer_copy_deep(buf: *const GstBuffer) -> *mut GstBuffer;
4802    pub fn gst_buffer_copy_into(
4803        dest: *mut GstBuffer,
4804        src: *mut GstBuffer,
4805        flags: GstBufferCopyFlags,
4806        offset: size_t,
4807        size: size_t,
4808    ) -> gboolean;
4809    pub fn gst_buffer_copy_region(
4810        parent: *mut GstBuffer,
4811        flags: GstBufferCopyFlags,
4812        offset: size_t,
4813        size: size_t,
4814    ) -> *mut GstBuffer;
4815    pub fn gst_buffer_extract(
4816        buffer: *mut GstBuffer,
4817        offset: size_t,
4818        dest: gpointer,
4819        size: size_t,
4820    ) -> size_t;
4821    pub fn gst_buffer_extract_dup(
4822        buffer: *mut GstBuffer,
4823        offset: size_t,
4824        size: size_t,
4825        dest: *mut u8,
4826        dest_size: *mut size_t,
4827    );
4828    pub fn gst_buffer_fill(
4829        buffer: *mut GstBuffer,
4830        offset: size_t,
4831        src: gconstpointer,
4832        size: size_t,
4833    ) -> size_t;
4834    pub fn gst_buffer_find_memory(
4835        buffer: *mut GstBuffer,
4836        offset: size_t,
4837        size: size_t,
4838        idx: *mut c_uint,
4839        length: *mut c_uint,
4840        skip: *mut size_t,
4841    ) -> gboolean;
4842    pub fn gst_buffer_foreach_meta(
4843        buffer: *mut GstBuffer,
4844        func: GstBufferForeachMetaFunc,
4845        user_data: gpointer,
4846    ) -> gboolean;
4847    pub fn gst_buffer_get_all_memory(buffer: *mut GstBuffer) -> *mut GstMemory;
4848    #[cfg(feature = "v1_20")]
4849    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
4850    pub fn gst_buffer_get_custom_meta(
4851        buffer: *mut GstBuffer,
4852        name: *const c_char,
4853    ) -> *mut GstCustomMeta;
4854    pub fn gst_buffer_get_flags(buffer: *mut GstBuffer) -> GstBufferFlags;
4855    pub fn gst_buffer_get_memory(buffer: *mut GstBuffer, idx: c_uint) -> *mut GstMemory;
4856    pub fn gst_buffer_get_memory_range(
4857        buffer: *mut GstBuffer,
4858        idx: c_uint,
4859        length: c_int,
4860    ) -> *mut GstMemory;
4861    pub fn gst_buffer_get_meta(buffer: *mut GstBuffer, api: GType) -> *mut GstMeta;
4862    pub fn gst_buffer_get_n_meta(buffer: *mut GstBuffer, api_type: GType) -> c_uint;
4863    pub fn gst_buffer_get_reference_timestamp_meta(
4864        buffer: *mut GstBuffer,
4865        reference: *mut GstCaps,
4866    ) -> *mut GstReferenceTimestampMeta;
4867    pub fn gst_buffer_get_size(buffer: *mut GstBuffer) -> size_t;
4868    pub fn gst_buffer_get_sizes(
4869        buffer: *mut GstBuffer,
4870        offset: *mut size_t,
4871        maxsize: *mut size_t,
4872    ) -> size_t;
4873    pub fn gst_buffer_get_sizes_range(
4874        buffer: *mut GstBuffer,
4875        idx: c_uint,
4876        length: c_int,
4877        offset: *mut size_t,
4878        maxsize: *mut size_t,
4879    ) -> size_t;
4880    pub fn gst_buffer_has_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4881    pub fn gst_buffer_insert_memory(buffer: *mut GstBuffer, idx: c_int, mem: *mut GstMemory);
4882    pub fn gst_buffer_is_all_memory_writable(buffer: *mut GstBuffer) -> gboolean;
4883    pub fn gst_buffer_is_memory_range_writable(
4884        buffer: *mut GstBuffer,
4885        idx: c_uint,
4886        length: c_int,
4887    ) -> gboolean;
4888    pub fn gst_buffer_is_writable(buf: *const GstBuffer) -> gboolean;
4889    pub fn gst_buffer_iterate_meta(buffer: *mut GstBuffer, state: *mut gpointer) -> *mut GstMeta;
4890    pub fn gst_buffer_iterate_meta_filtered(
4891        buffer: *mut GstBuffer,
4892        state: *mut gpointer,
4893        meta_api_type: GType,
4894    ) -> *mut GstMeta;
4895    pub fn gst_buffer_make_writable(buf: *mut GstBuffer) -> *mut GstBuffer;
4896    pub fn gst_buffer_map(
4897        buffer: *mut GstBuffer,
4898        info: *mut GstMapInfo,
4899        flags: GstMapFlags,
4900    ) -> gboolean;
4901    pub fn gst_buffer_map_range(
4902        buffer: *mut GstBuffer,
4903        idx: c_uint,
4904        length: c_int,
4905        info: *mut GstMapInfo,
4906        flags: GstMapFlags,
4907    ) -> gboolean;
4908    pub fn gst_buffer_memcmp(
4909        buffer: *mut GstBuffer,
4910        offset: size_t,
4911        mem: gconstpointer,
4912        size: size_t,
4913    ) -> c_int;
4914    pub fn gst_buffer_memset(
4915        buffer: *mut GstBuffer,
4916        offset: size_t,
4917        val: u8,
4918        size: size_t,
4919    ) -> size_t;
4920    pub fn gst_buffer_n_memory(buffer: *mut GstBuffer) -> c_uint;
4921    pub fn gst_buffer_peek_memory(buffer: *mut GstBuffer, idx: c_uint) -> *mut GstMemory;
4922    pub fn gst_buffer_prepend_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4923    #[cfg(feature = "v1_18_3")]
4924    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4925    pub fn gst_buffer_ref(buf: *mut GstBuffer) -> *mut GstBuffer;
4926    pub fn gst_buffer_remove_all_memory(buffer: *mut GstBuffer);
4927    pub fn gst_buffer_remove_memory(buffer: *mut GstBuffer, idx: c_uint);
4928    pub fn gst_buffer_remove_memory_range(buffer: *mut GstBuffer, idx: c_uint, length: c_int);
4929    pub fn gst_buffer_remove_meta(buffer: *mut GstBuffer, meta: *mut GstMeta) -> gboolean;
4930    pub fn gst_buffer_replace_all_memory(buffer: *mut GstBuffer, mem: *mut GstMemory);
4931    pub fn gst_buffer_replace_memory(buffer: *mut GstBuffer, idx: c_uint, mem: *mut GstMemory);
4932    pub fn gst_buffer_replace_memory_range(
4933        buffer: *mut GstBuffer,
4934        idx: c_uint,
4935        length: c_int,
4936        mem: *mut GstMemory,
4937    );
4938    pub fn gst_buffer_resize(buffer: *mut GstBuffer, offset: ssize_t, size: ssize_t);
4939    pub fn gst_buffer_resize_range(
4940        buffer: *mut GstBuffer,
4941        idx: c_uint,
4942        length: c_int,
4943        offset: ssize_t,
4944        size: ssize_t,
4945    ) -> gboolean;
4946    pub fn gst_buffer_set_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4947    pub fn gst_buffer_set_size(buffer: *mut GstBuffer, size: ssize_t);
4948    pub fn gst_buffer_unmap(buffer: *mut GstBuffer, info: *mut GstMapInfo);
4949    #[cfg(feature = "v1_18_3")]
4950    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4951    pub fn gst_buffer_unref(buf: *mut GstBuffer);
4952    pub fn gst_buffer_unset_flags(buffer: *mut GstBuffer, flags: GstBufferFlags) -> gboolean;
4953    pub fn gst_buffer_get_max_memory() -> c_uint;
4954    #[cfg(feature = "v1_18_3")]
4955    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4956    pub fn gst_buffer_replace(obuf: *mut *mut GstBuffer, nbuf: *mut GstBuffer) -> gboolean;
4957    #[cfg(feature = "v1_28")]
4958    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4959    pub fn gst_buffer_steal(old_buffer: *mut *mut GstBuffer) -> *mut GstBuffer;
4960    #[cfg(feature = "v1_28")]
4961    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
4962    pub fn gst_buffer_take(old_buffer: *mut *mut GstBuffer, new_buffer: *mut GstBuffer)
4963    -> gboolean;
4964
4965    //=========================================================================
4966    // GstBufferList
4967    //=========================================================================
4968    pub fn gst_buffer_list_get_type() -> GType;
4969    pub fn gst_buffer_list_new() -> *mut GstBufferList;
4970    pub fn gst_buffer_list_new_sized(size: c_uint) -> *mut GstBufferList;
4971    pub fn gst_buffer_list_calculate_size(list: *mut GstBufferList) -> size_t;
4972    #[cfg(feature = "v1_18_3")]
4973    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4974    pub fn gst_buffer_list_copy(list: *const GstBufferList) -> *mut GstBufferList;
4975    pub fn gst_buffer_list_copy_deep(list: *const GstBufferList) -> *mut GstBufferList;
4976    pub fn gst_buffer_list_foreach(
4977        list: *mut GstBufferList,
4978        func: GstBufferListFunc,
4979        user_data: gpointer,
4980    ) -> gboolean;
4981    pub fn gst_buffer_list_get(list: *mut GstBufferList, idx: c_uint) -> *mut GstBuffer;
4982    pub fn gst_buffer_list_get_writable(list: *mut GstBufferList, idx: c_uint) -> *mut GstBuffer;
4983    pub fn gst_buffer_list_insert(list: *mut GstBufferList, idx: c_int, buffer: *mut GstBuffer);
4984    pub fn gst_buffer_list_is_writable(list: *const GstBufferList) -> gboolean;
4985    pub fn gst_buffer_list_length(list: *mut GstBufferList) -> c_uint;
4986    pub fn gst_buffer_list_make_writable(list: *mut GstBufferList) -> *mut GstBufferList;
4987    #[cfg(feature = "v1_18_3")]
4988    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4989    pub fn gst_buffer_list_ref(list: *mut GstBufferList) -> *mut GstBufferList;
4990    pub fn gst_buffer_list_remove(list: *mut GstBufferList, idx: c_uint, length: c_uint);
4991    #[cfg(feature = "v1_18_3")]
4992    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4993    pub fn gst_buffer_list_unref(list: *mut GstBufferList);
4994    #[cfg(feature = "v1_18_3")]
4995    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
4996    pub fn gst_buffer_list_replace(
4997        old_list: *mut *mut GstBufferList,
4998        new_list: *mut GstBufferList,
4999    ) -> gboolean;
5000    #[cfg(feature = "v1_28")]
5001    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5002    pub fn gst_buffer_list_steal(old_list: *mut *mut GstBufferList) -> *mut GstBufferList;
5003    #[cfg(feature = "v1_18_3")]
5004    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5005    pub fn gst_buffer_list_take(
5006        old_list: *mut *mut GstBufferList,
5007        new_list: *mut GstBufferList,
5008    ) -> gboolean;
5009
5010    //=========================================================================
5011    // GstCaps
5012    //=========================================================================
5013    pub fn gst_caps_get_type() -> GType;
5014    pub fn gst_caps_new_any() -> *mut GstCaps;
5015    pub fn gst_caps_new_empty() -> *mut GstCaps;
5016    pub fn gst_caps_new_empty_simple(media_type: *const c_char) -> *mut GstCaps;
5017    pub fn gst_caps_new_full(struct1: *mut GstStructure, ...) -> *mut GstCaps;
5018    //pub fn gst_caps_new_full_valist(structure: *mut GstStructure, var_args: /*Unimplemented*/va_list) -> *mut GstCaps;
5019    #[cfg(feature = "v1_26")]
5020    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5021    pub fn gst_caps_new_id_str_empty_simple(media_type: *const GstIdStr) -> *mut GstCaps;
5022    #[cfg(feature = "v1_26")]
5023    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5024    pub fn gst_caps_new_id_str_simple(
5025        media_type: *const GstIdStr,
5026        fieldname: *const GstIdStr,
5027        ...
5028    ) -> *mut GstCaps;
5029    pub fn gst_caps_new_simple(
5030        media_type: *const c_char,
5031        fieldname: *const c_char,
5032        ...
5033    ) -> *mut GstCaps;
5034    #[cfg(feature = "v1_26")]
5035    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5036    pub fn gst_caps_new_static_str_empty_simple(media_type: *const c_char) -> *mut GstCaps;
5037    #[cfg(feature = "v1_26")]
5038    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5039    pub fn gst_caps_new_static_str_simple(
5040        media_type: *const c_char,
5041        fieldname: *const c_char,
5042        ...
5043    ) -> *mut GstCaps;
5044    pub fn gst_caps_append(caps1: *mut GstCaps, caps2: *mut GstCaps);
5045    pub fn gst_caps_append_structure(caps: *mut GstCaps, structure: *mut GstStructure);
5046    pub fn gst_caps_append_structure_full(
5047        caps: *mut GstCaps,
5048        structure: *mut GstStructure,
5049        features: *mut GstCapsFeatures,
5050    );
5051    pub fn gst_caps_can_intersect(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
5052    #[cfg(feature = "v1_16")]
5053    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5054    pub fn gst_caps_copy(caps: *const GstCaps) -> *mut GstCaps;
5055    #[cfg(feature = "v1_16")]
5056    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5057    pub fn gst_caps_copy_nth(caps: *const GstCaps, nth: c_uint) -> *mut GstCaps;
5058    pub fn gst_caps_filter_and_map_in_place(
5059        caps: *mut GstCaps,
5060        func: GstCapsFilterMapFunc,
5061        user_data: gpointer,
5062    );
5063    pub fn gst_caps_fixate(caps: *mut GstCaps) -> *mut GstCaps;
5064    pub fn gst_caps_foreach(
5065        caps: *const GstCaps,
5066        func: GstCapsForeachFunc,
5067        user_data: gpointer,
5068    ) -> gboolean;
5069    pub fn gst_caps_get_features(caps: *const GstCaps, index: c_uint) -> *mut GstCapsFeatures;
5070    pub fn gst_caps_get_size(caps: *const GstCaps) -> c_uint;
5071    pub fn gst_caps_get_structure(caps: *const GstCaps, index: c_uint) -> *mut GstStructure;
5072    #[cfg(feature = "v1_26")]
5073    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5074    pub fn gst_caps_id_str_set_simple(caps: *mut GstCaps, field: *const GstIdStr, ...);
5075    //#[cfg(feature = "v1_26")]
5076    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5077    //pub fn gst_caps_id_str_set_simple_valist(caps: *mut GstCaps, field: *const GstIdStr, varargs: /*Unimplemented*/va_list);
5078    #[cfg(feature = "v1_26")]
5079    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5080    pub fn gst_caps_id_str_set_value(
5081        caps: *mut GstCaps,
5082        field: *const GstIdStr,
5083        value: *const gobject::GValue,
5084    );
5085    pub fn gst_caps_intersect(caps1: *mut GstCaps, caps2: *mut GstCaps) -> *mut GstCaps;
5086    pub fn gst_caps_intersect_full(
5087        caps1: *mut GstCaps,
5088        caps2: *mut GstCaps,
5089        mode: GstCapsIntersectMode,
5090    ) -> *mut GstCaps;
5091    pub fn gst_caps_is_always_compatible(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
5092    pub fn gst_caps_is_any(caps: *const GstCaps) -> gboolean;
5093    pub fn gst_caps_is_empty(caps: *const GstCaps) -> gboolean;
5094    pub fn gst_caps_is_equal(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
5095    pub fn gst_caps_is_equal_fixed(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
5096    pub fn gst_caps_is_fixed(caps: *const GstCaps) -> gboolean;
5097    pub fn gst_caps_is_strictly_equal(caps1: *const GstCaps, caps2: *const GstCaps) -> gboolean;
5098    pub fn gst_caps_is_subset(subset: *const GstCaps, superset: *const GstCaps) -> gboolean;
5099    pub fn gst_caps_is_subset_structure(
5100        caps: *const GstCaps,
5101        structure: *const GstStructure,
5102    ) -> gboolean;
5103    pub fn gst_caps_is_subset_structure_full(
5104        caps: *const GstCaps,
5105        structure: *const GstStructure,
5106        features: *const GstCapsFeatures,
5107    ) -> gboolean;
5108    pub fn gst_caps_is_writable(caps: *const GstCaps) -> gboolean;
5109    pub fn gst_caps_make_writable(caps: *mut GstCaps) -> *mut GstCaps;
5110    pub fn gst_caps_map_in_place(
5111        caps: *mut GstCaps,
5112        func: GstCapsMapFunc,
5113        user_data: gpointer,
5114    ) -> gboolean;
5115    pub fn gst_caps_merge(caps1: *mut GstCaps, caps2: *mut GstCaps) -> *mut GstCaps;
5116    pub fn gst_caps_merge_structure(
5117        caps: *mut GstCaps,
5118        structure: *mut GstStructure,
5119    ) -> *mut GstCaps;
5120    pub fn gst_caps_merge_structure_full(
5121        caps: *mut GstCaps,
5122        structure: *mut GstStructure,
5123        features: *mut GstCapsFeatures,
5124    ) -> *mut GstCaps;
5125    pub fn gst_caps_normalize(caps: *mut GstCaps) -> *mut GstCaps;
5126    #[cfg(feature = "v1_18_3")]
5127    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5128    pub fn gst_caps_ref(caps: *mut GstCaps) -> *mut GstCaps;
5129    pub fn gst_caps_remove_structure(caps: *mut GstCaps, idx: c_uint);
5130    #[cfg(feature = "v1_20")]
5131    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5132    pub fn gst_caps_serialize(caps: *const GstCaps, flags: GstSerializeFlags) -> *mut c_char;
5133    pub fn gst_caps_set_features(caps: *mut GstCaps, index: c_uint, features: *mut GstCapsFeatures);
5134    #[cfg(feature = "v1_16")]
5135    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5136    pub fn gst_caps_set_features_simple(caps: *mut GstCaps, features: *mut GstCapsFeatures);
5137    pub fn gst_caps_set_simple(caps: *mut GstCaps, field: *const c_char, ...);
5138    #[cfg(feature = "v1_26")]
5139    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5140    pub fn gst_caps_set_simple_static_str(caps: *mut GstCaps, field: *const c_char, ...);
5141    //#[cfg(feature = "v1_26")]
5142    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5143    //pub fn gst_caps_set_simple_static_str_valist(caps: *mut GstCaps, field: *const c_char, varargs: /*Unimplemented*/va_list);
5144    //pub fn gst_caps_set_simple_valist(caps: *mut GstCaps, field: *const c_char, varargs: /*Unimplemented*/va_list);
5145    pub fn gst_caps_set_value(
5146        caps: *mut GstCaps,
5147        field: *const c_char,
5148        value: *const gobject::GValue,
5149    );
5150    #[cfg(feature = "v1_26")]
5151    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5152    pub fn gst_caps_set_value_static_str(
5153        caps: *mut GstCaps,
5154        field: *const c_char,
5155        value: *const gobject::GValue,
5156    );
5157    pub fn gst_caps_simplify(caps: *mut GstCaps) -> *mut GstCaps;
5158    pub fn gst_caps_steal_structure(caps: *mut GstCaps, index: c_uint) -> *mut GstStructure;
5159    pub fn gst_caps_subtract(minuend: *mut GstCaps, subtrahend: *mut GstCaps) -> *mut GstCaps;
5160    pub fn gst_caps_to_string(caps: *const GstCaps) -> *mut c_char;
5161    pub fn gst_caps_truncate(caps: *mut GstCaps) -> *mut GstCaps;
5162    #[cfg(feature = "v1_18_3")]
5163    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5164    pub fn gst_caps_unref(caps: *mut GstCaps);
5165    pub fn gst_caps_from_string(string: *const c_char) -> *mut GstCaps;
5166    #[cfg(feature = "v1_18_3")]
5167    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5168    pub fn gst_caps_replace(old_caps: *mut *mut GstCaps, new_caps: *mut GstCaps) -> gboolean;
5169    #[cfg(feature = "v1_28")]
5170    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5171    pub fn gst_caps_steal(old_caps: *mut *mut GstCaps) -> *mut GstCaps;
5172    #[cfg(feature = "v1_18_3")]
5173    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5174    pub fn gst_caps_take(old_caps: *mut *mut GstCaps, new_caps: *mut GstCaps) -> gboolean;
5175
5176    //=========================================================================
5177    // GstCapsFeatures
5178    //=========================================================================
5179    pub fn gst_caps_features_get_type() -> GType;
5180    pub fn gst_caps_features_new(feature1: *const c_char, ...) -> *mut GstCapsFeatures;
5181    pub fn gst_caps_features_new_any() -> *mut GstCapsFeatures;
5182    pub fn gst_caps_features_new_empty() -> *mut GstCapsFeatures;
5183    pub fn gst_caps_features_new_id(feature1: glib::GQuark, ...) -> *mut GstCapsFeatures;
5184    #[cfg(feature = "v1_26")]
5185    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5186    pub fn gst_caps_features_new_id_str(feature1: *const GstIdStr, ...) -> *mut GstCapsFeatures;
5187    //#[cfg(feature = "v1_26")]
5188    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5189    //pub fn gst_caps_features_new_id_str_valist(feature1: *const GstIdStr, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
5190    //pub fn gst_caps_features_new_id_valist(feature1: glib::GQuark, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
5191    #[cfg(feature = "v1_20")]
5192    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5193    pub fn gst_caps_features_new_single(feature: *const c_char) -> *mut GstCapsFeatures;
5194    #[cfg(feature = "v1_26")]
5195    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5196    pub fn gst_caps_features_new_single_static_str(feature: *const c_char) -> *mut GstCapsFeatures;
5197    #[cfg(feature = "v1_26")]
5198    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5199    pub fn gst_caps_features_new_static_str(feature1: *const c_char, ...) -> *mut GstCapsFeatures;
5200    //#[cfg(feature = "v1_26")]
5201    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5202    //pub fn gst_caps_features_new_static_str_valist(feature1: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
5203    //pub fn gst_caps_features_new_valist(feature1: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstCapsFeatures;
5204    pub fn gst_caps_features_add(features: *mut GstCapsFeatures, feature: *const c_char);
5205    pub fn gst_caps_features_add_id(features: *mut GstCapsFeatures, feature: glib::GQuark);
5206    #[cfg(feature = "v1_26")]
5207    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5208    pub fn gst_caps_features_add_id_str(features: *mut GstCapsFeatures, feature: *const GstIdStr);
5209    #[cfg(feature = "v1_26")]
5210    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5211    pub fn gst_caps_features_add_static_str(features: *mut GstCapsFeatures, feature: *const c_char);
5212    pub fn gst_caps_features_contains(
5213        features: *const GstCapsFeatures,
5214        feature: *const c_char,
5215    ) -> gboolean;
5216    pub fn gst_caps_features_contains_id(
5217        features: *const GstCapsFeatures,
5218        feature: glib::GQuark,
5219    ) -> gboolean;
5220    #[cfg(feature = "v1_26")]
5221    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5222    pub fn gst_caps_features_contains_id_str(
5223        features: *const GstCapsFeatures,
5224        feature: *const GstIdStr,
5225    ) -> gboolean;
5226    pub fn gst_caps_features_copy(features: *const GstCapsFeatures) -> *mut GstCapsFeatures;
5227    pub fn gst_caps_features_free(features: *mut GstCapsFeatures);
5228    pub fn gst_caps_features_get_nth(features: *const GstCapsFeatures, i: c_uint) -> *const c_char;
5229    pub fn gst_caps_features_get_nth_id(
5230        features: *const GstCapsFeatures,
5231        i: c_uint,
5232    ) -> glib::GQuark;
5233    #[cfg(feature = "v1_26")]
5234    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5235    pub fn gst_caps_features_get_nth_id_str(
5236        features: *const GstCapsFeatures,
5237        i: c_uint,
5238    ) -> *const GstIdStr;
5239    pub fn gst_caps_features_get_size(features: *const GstCapsFeatures) -> c_uint;
5240    pub fn gst_caps_features_is_any(features: *const GstCapsFeatures) -> gboolean;
5241    pub fn gst_caps_features_is_equal(
5242        features1: *const GstCapsFeatures,
5243        features2: *const GstCapsFeatures,
5244    ) -> gboolean;
5245    pub fn gst_caps_features_remove(features: *mut GstCapsFeatures, feature: *const c_char);
5246    pub fn gst_caps_features_remove_id(features: *mut GstCapsFeatures, feature: glib::GQuark);
5247    #[cfg(feature = "v1_26")]
5248    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5249    pub fn gst_caps_features_remove_id_str(
5250        features: *mut GstCapsFeatures,
5251        feature: *const GstIdStr,
5252    );
5253    pub fn gst_caps_features_set_parent_refcount(
5254        features: *mut GstCapsFeatures,
5255        refcount: *mut c_int,
5256    ) -> gboolean;
5257    pub fn gst_caps_features_to_string(features: *const GstCapsFeatures) -> *mut c_char;
5258    pub fn gst_caps_features_from_string(features: *const c_char) -> *mut GstCapsFeatures;
5259
5260    //=========================================================================
5261    // GstContext
5262    //=========================================================================
5263    pub fn gst_context_get_type() -> GType;
5264    pub fn gst_context_new(context_type: *const c_char, persistent: gboolean) -> *mut GstContext;
5265    #[cfg(feature = "v1_18_3")]
5266    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5267    pub fn gst_context_copy(context: *const GstContext) -> *mut GstContext;
5268    pub fn gst_context_get_context_type(context: *const GstContext) -> *const c_char;
5269    pub fn gst_context_get_structure(context: *const GstContext) -> *const GstStructure;
5270    #[cfg(feature = "v1_28")]
5271    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5272    pub fn gst_context_get_task_pool(
5273        context: *mut GstContext,
5274        pool: *mut *mut GstTaskPool,
5275    ) -> gboolean;
5276    pub fn gst_context_has_context_type(
5277        context: *const GstContext,
5278        context_type: *const c_char,
5279    ) -> gboolean;
5280    pub fn gst_context_is_persistent(context: *const GstContext) -> gboolean;
5281    pub fn gst_context_is_writable(context: *const GstContext) -> gboolean;
5282    pub fn gst_context_make_writable(context: *mut GstContext) -> *mut GstContext;
5283    #[cfg(feature = "v1_18_3")]
5284    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5285    pub fn gst_context_ref(context: *mut GstContext) -> *mut GstContext;
5286    #[cfg(feature = "v1_28")]
5287    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5288    pub fn gst_context_set_task_pool(context: *mut GstContext, pool: *mut GstTaskPool);
5289    #[cfg(feature = "v1_18_3")]
5290    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5291    pub fn gst_context_unref(context: *mut GstContext);
5292    pub fn gst_context_writable_structure(context: *mut GstContext) -> *mut GstStructure;
5293    #[cfg(feature = "v1_18_3")]
5294    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5295    pub fn gst_context_replace(
5296        old_context: *mut *mut GstContext,
5297        new_context: *mut GstContext,
5298    ) -> gboolean;
5299
5300    //=========================================================================
5301    // GstCustomMeta
5302    //=========================================================================
5303    #[cfg(feature = "v1_20")]
5304    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5305    pub fn gst_custom_meta_get_structure(meta: *mut GstCustomMeta) -> *mut GstStructure;
5306    #[cfg(feature = "v1_20")]
5307    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5308    pub fn gst_custom_meta_has_name(meta: *mut GstCustomMeta, name: *const c_char) -> gboolean;
5309
5310    //=========================================================================
5311    // GstDateTime
5312    //=========================================================================
5313    pub fn gst_date_time_get_type() -> GType;
5314    pub fn gst_date_time_new(
5315        tzoffset: c_float,
5316        year: c_int,
5317        month: c_int,
5318        day: c_int,
5319        hour: c_int,
5320        minute: c_int,
5321        seconds: c_double,
5322    ) -> *mut GstDateTime;
5323    pub fn gst_date_time_new_from_g_date_time(dt: *mut glib::GDateTime) -> *mut GstDateTime;
5324    pub fn gst_date_time_new_from_iso8601_string(string: *const c_char) -> *mut GstDateTime;
5325    pub fn gst_date_time_new_from_unix_epoch_local_time(secs: i64) -> *mut GstDateTime;
5326    #[cfg(feature = "v1_18")]
5327    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5328    pub fn gst_date_time_new_from_unix_epoch_local_time_usecs(usecs: i64) -> *mut GstDateTime;
5329    pub fn gst_date_time_new_from_unix_epoch_utc(secs: i64) -> *mut GstDateTime;
5330    #[cfg(feature = "v1_18")]
5331    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5332    pub fn gst_date_time_new_from_unix_epoch_utc_usecs(usecs: i64) -> *mut GstDateTime;
5333    pub fn gst_date_time_new_local_time(
5334        year: c_int,
5335        month: c_int,
5336        day: c_int,
5337        hour: c_int,
5338        minute: c_int,
5339        seconds: c_double,
5340    ) -> *mut GstDateTime;
5341    pub fn gst_date_time_new_now_local_time() -> *mut GstDateTime;
5342    pub fn gst_date_time_new_now_utc() -> *mut GstDateTime;
5343    pub fn gst_date_time_new_y(year: c_int) -> *mut GstDateTime;
5344    pub fn gst_date_time_new_ym(year: c_int, month: c_int) -> *mut GstDateTime;
5345    pub fn gst_date_time_new_ymd(year: c_int, month: c_int, day: c_int) -> *mut GstDateTime;
5346    pub fn gst_date_time_get_day(datetime: *const GstDateTime) -> c_int;
5347    pub fn gst_date_time_get_hour(datetime: *const GstDateTime) -> c_int;
5348    pub fn gst_date_time_get_microsecond(datetime: *const GstDateTime) -> c_int;
5349    pub fn gst_date_time_get_minute(datetime: *const GstDateTime) -> c_int;
5350    pub fn gst_date_time_get_month(datetime: *const GstDateTime) -> c_int;
5351    pub fn gst_date_time_get_second(datetime: *const GstDateTime) -> c_int;
5352    pub fn gst_date_time_get_time_zone_offset(datetime: *const GstDateTime) -> c_float;
5353    pub fn gst_date_time_get_year(datetime: *const GstDateTime) -> c_int;
5354    pub fn gst_date_time_has_day(datetime: *const GstDateTime) -> gboolean;
5355    pub fn gst_date_time_has_month(datetime: *const GstDateTime) -> gboolean;
5356    pub fn gst_date_time_has_second(datetime: *const GstDateTime) -> gboolean;
5357    pub fn gst_date_time_has_time(datetime: *const GstDateTime) -> gboolean;
5358    pub fn gst_date_time_has_year(datetime: *const GstDateTime) -> gboolean;
5359    pub fn gst_date_time_ref(datetime: *mut GstDateTime) -> *mut GstDateTime;
5360    pub fn gst_date_time_to_g_date_time(datetime: *mut GstDateTime) -> *mut glib::GDateTime;
5361    pub fn gst_date_time_to_iso8601_string(datetime: *mut GstDateTime) -> *mut c_char;
5362    pub fn gst_date_time_unref(datetime: *mut GstDateTime);
5363
5364    //=========================================================================
5365    // GstDebugCategory
5366    //=========================================================================
5367    pub fn gst_debug_category_free(category: *mut GstDebugCategory);
5368    pub fn gst_debug_category_get_color(category: *mut GstDebugCategory) -> c_uint;
5369    pub fn gst_debug_category_get_description(category: *mut GstDebugCategory) -> *const c_char;
5370    pub fn gst_debug_category_get_name(category: *mut GstDebugCategory) -> *const c_char;
5371    pub fn gst_debug_category_get_threshold(category: *mut GstDebugCategory) -> GstDebugLevel;
5372    pub fn gst_debug_category_reset_threshold(category: *mut GstDebugCategory);
5373    pub fn gst_debug_category_set_threshold(category: *mut GstDebugCategory, level: GstDebugLevel);
5374
5375    //=========================================================================
5376    // GstDebugMessage
5377    //=========================================================================
5378    pub fn gst_debug_message_get(message: *mut GstDebugMessage) -> *const c_char;
5379    #[cfg(feature = "v1_22")]
5380    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
5381    pub fn gst_debug_message_get_id(message: *mut GstDebugMessage) -> *const c_char;
5382
5383    //=========================================================================
5384    // GstDeviceProviderClass
5385    //=========================================================================
5386    pub fn gst_device_provider_class_add_metadata(
5387        klass: *mut GstDeviceProviderClass,
5388        key: *const c_char,
5389        value: *const c_char,
5390    );
5391    pub fn gst_device_provider_class_add_static_metadata(
5392        klass: *mut GstDeviceProviderClass,
5393        key: *const c_char,
5394        value: *const c_char,
5395    );
5396    pub fn gst_device_provider_class_get_metadata(
5397        klass: *mut GstDeviceProviderClass,
5398        key: *const c_char,
5399    ) -> *const c_char;
5400    pub fn gst_device_provider_class_set_metadata(
5401        klass: *mut GstDeviceProviderClass,
5402        longname: *const c_char,
5403        classification: *const c_char,
5404        description: *const c_char,
5405        author: *const c_char,
5406    );
5407    pub fn gst_device_provider_class_set_static_metadata(
5408        klass: *mut GstDeviceProviderClass,
5409        longname: *const c_char,
5410        classification: *const c_char,
5411        description: *const c_char,
5412        author: *const c_char,
5413    );
5414
5415    //=========================================================================
5416    // GstElementClass
5417    //=========================================================================
5418    pub fn gst_element_class_add_metadata(
5419        klass: *mut GstElementClass,
5420        key: *const c_char,
5421        value: *const c_char,
5422    );
5423    pub fn gst_element_class_add_pad_template(
5424        klass: *mut GstElementClass,
5425        templ: *mut GstPadTemplate,
5426    );
5427    pub fn gst_element_class_add_static_metadata(
5428        klass: *mut GstElementClass,
5429        key: *const c_char,
5430        value: *const c_char,
5431    );
5432    pub fn gst_element_class_add_static_pad_template(
5433        klass: *mut GstElementClass,
5434        static_templ: *mut GstStaticPadTemplate,
5435    );
5436    pub fn gst_element_class_add_static_pad_template_with_gtype(
5437        klass: *mut GstElementClass,
5438        static_templ: *mut GstStaticPadTemplate,
5439        pad_type: GType,
5440    );
5441    pub fn gst_element_class_get_metadata(
5442        klass: *mut GstElementClass,
5443        key: *const c_char,
5444    ) -> *const c_char;
5445    pub fn gst_element_class_get_pad_template(
5446        element_class: *mut GstElementClass,
5447        name: *const c_char,
5448    ) -> *mut GstPadTemplate;
5449    pub fn gst_element_class_get_pad_template_list(
5450        element_class: *mut GstElementClass,
5451    ) -> *mut glib::GList;
5452    pub fn gst_element_class_set_metadata(
5453        klass: *mut GstElementClass,
5454        longname: *const c_char,
5455        classification: *const c_char,
5456        description: *const c_char,
5457        author: *const c_char,
5458    );
5459    pub fn gst_element_class_set_static_metadata(
5460        klass: *mut GstElementClass,
5461        longname: *const c_char,
5462        classification: *const c_char,
5463        description: *const c_char,
5464        author: *const c_char,
5465    );
5466
5467    //=========================================================================
5468    // GstEvent
5469    //=========================================================================
5470    pub fn gst_event_get_type() -> GType;
5471    pub fn gst_event_new_buffer_size(
5472        format: GstFormat,
5473        minsize: i64,
5474        maxsize: i64,
5475        async_: gboolean,
5476    ) -> *mut GstEvent;
5477    pub fn gst_event_new_caps(caps: *mut GstCaps) -> *mut GstEvent;
5478    pub fn gst_event_new_custom(type_: GstEventType, structure: *mut GstStructure)
5479    -> *mut GstEvent;
5480    pub fn gst_event_new_eos() -> *mut GstEvent;
5481    pub fn gst_event_new_flush_start() -> *mut GstEvent;
5482    pub fn gst_event_new_flush_stop(reset_time: gboolean) -> *mut GstEvent;
5483    pub fn gst_event_new_gap(timestamp: GstClockTime, duration: GstClockTime) -> *mut GstEvent;
5484    #[cfg(feature = "v1_18")]
5485    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5486    pub fn gst_event_new_instant_rate_change(
5487        rate_multiplier: c_double,
5488        new_flags: GstSegmentFlags,
5489    ) -> *mut GstEvent;
5490    #[cfg(feature = "v1_18")]
5491    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5492    pub fn gst_event_new_instant_rate_sync_time(
5493        rate_multiplier: c_double,
5494        running_time: GstClockTime,
5495        upstream_running_time: GstClockTime,
5496    ) -> *mut GstEvent;
5497    pub fn gst_event_new_latency(latency: GstClockTime) -> *mut GstEvent;
5498    pub fn gst_event_new_navigation(structure: *mut GstStructure) -> *mut GstEvent;
5499    pub fn gst_event_new_protection(
5500        system_id: *const c_char,
5501        data: *mut GstBuffer,
5502        origin: *const c_char,
5503    ) -> *mut GstEvent;
5504    pub fn gst_event_new_qos(
5505        type_: GstQOSType,
5506        proportion: c_double,
5507        diff: GstClockTimeDiff,
5508        timestamp: GstClockTime,
5509    ) -> *mut GstEvent;
5510    pub fn gst_event_new_reconfigure() -> *mut GstEvent;
5511    pub fn gst_event_new_seek(
5512        rate: c_double,
5513        format: GstFormat,
5514        flags: GstSeekFlags,
5515        start_type: GstSeekType,
5516        start: i64,
5517        stop_type: GstSeekType,
5518        stop: i64,
5519    ) -> *mut GstEvent;
5520    pub fn gst_event_new_segment(segment: *const GstSegment) -> *mut GstEvent;
5521    pub fn gst_event_new_segment_done(format: GstFormat, position: i64) -> *mut GstEvent;
5522    pub fn gst_event_new_select_streams(streams: *mut glib::GList) -> *mut GstEvent;
5523    pub fn gst_event_new_sink_message(name: *const c_char, msg: *mut GstMessage) -> *mut GstEvent;
5524    pub fn gst_event_new_step(
5525        format: GstFormat,
5526        amount: u64,
5527        rate: c_double,
5528        flush: gboolean,
5529        intermediate: gboolean,
5530    ) -> *mut GstEvent;
5531    pub fn gst_event_new_stream_collection(collection: *mut GstStreamCollection) -> *mut GstEvent;
5532    pub fn gst_event_new_stream_group_done(group_id: c_uint) -> *mut GstEvent;
5533    pub fn gst_event_new_stream_start(stream_id: *const c_char) -> *mut GstEvent;
5534    pub fn gst_event_new_tag(taglist: *mut GstTagList) -> *mut GstEvent;
5535    pub fn gst_event_new_toc(toc: *mut GstToc, updated: gboolean) -> *mut GstEvent;
5536    pub fn gst_event_new_toc_select(uid: *const c_char) -> *mut GstEvent;
5537    #[cfg(feature = "v1_18_3")]
5538    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5539    pub fn gst_event_copy(event: *const GstEvent) -> *mut GstEvent;
5540    pub fn gst_event_copy_segment(event: *mut GstEvent, segment: *mut GstSegment);
5541    pub fn gst_event_get_running_time_offset(event: *mut GstEvent) -> i64;
5542    pub fn gst_event_get_seqnum(event: *mut GstEvent) -> u32;
5543    pub fn gst_event_get_structure(event: *mut GstEvent) -> *const GstStructure;
5544    pub fn gst_event_has_name(event: *mut GstEvent, name: *const c_char) -> gboolean;
5545    #[cfg(feature = "v1_18")]
5546    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5547    pub fn gst_event_has_name_id(event: *mut GstEvent, name: glib::GQuark) -> gboolean;
5548    pub fn gst_event_is_writable(event: *const GstEvent) -> gboolean;
5549    pub fn gst_event_make_writable(event: *mut GstEvent) -> *mut GstEvent;
5550    pub fn gst_event_parse_buffer_size(
5551        event: *mut GstEvent,
5552        format: *mut GstFormat,
5553        minsize: *mut i64,
5554        maxsize: *mut i64,
5555        async_: *mut gboolean,
5556    );
5557    pub fn gst_event_parse_caps(event: *mut GstEvent, caps: *mut *mut GstCaps);
5558    pub fn gst_event_parse_flush_stop(event: *mut GstEvent, reset_time: *mut gboolean);
5559    pub fn gst_event_parse_gap(
5560        event: *mut GstEvent,
5561        timestamp: *mut GstClockTime,
5562        duration: *mut GstClockTime,
5563    );
5564    #[cfg(feature = "v1_20")]
5565    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5566    pub fn gst_event_parse_gap_flags(event: *mut GstEvent, flags: *mut GstGapFlags);
5567    pub fn gst_event_parse_group_id(event: *mut GstEvent, group_id: *mut c_uint) -> gboolean;
5568    #[cfg(feature = "v1_18")]
5569    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5570    pub fn gst_event_parse_instant_rate_change(
5571        event: *mut GstEvent,
5572        rate_multiplier: *mut c_double,
5573        new_flags: *mut GstSegmentFlags,
5574    );
5575    #[cfg(feature = "v1_18")]
5576    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5577    pub fn gst_event_parse_instant_rate_sync_time(
5578        event: *mut GstEvent,
5579        rate_multiplier: *mut c_double,
5580        running_time: *mut GstClockTime,
5581        upstream_running_time: *mut GstClockTime,
5582    );
5583    pub fn gst_event_parse_latency(event: *mut GstEvent, latency: *mut GstClockTime);
5584    pub fn gst_event_parse_protection(
5585        event: *mut GstEvent,
5586        system_id: *mut *const c_char,
5587        data: *mut *mut GstBuffer,
5588        origin: *mut *const c_char,
5589    );
5590    pub fn gst_event_parse_qos(
5591        event: *mut GstEvent,
5592        type_: *mut GstQOSType,
5593        proportion: *mut c_double,
5594        diff: *mut GstClockTimeDiff,
5595        timestamp: *mut GstClockTime,
5596    );
5597    pub fn gst_event_parse_seek(
5598        event: *mut GstEvent,
5599        rate: *mut c_double,
5600        format: *mut GstFormat,
5601        flags: *mut GstSeekFlags,
5602        start_type: *mut GstSeekType,
5603        start: *mut i64,
5604        stop_type: *mut GstSeekType,
5605        stop: *mut i64,
5606    );
5607    #[cfg(feature = "v1_16")]
5608    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5609    pub fn gst_event_parse_seek_trickmode_interval(
5610        event: *mut GstEvent,
5611        interval: *mut GstClockTime,
5612    );
5613    pub fn gst_event_parse_segment(event: *mut GstEvent, segment: *mut *const GstSegment);
5614    pub fn gst_event_parse_segment_done(
5615        event: *mut GstEvent,
5616        format: *mut GstFormat,
5617        position: *mut i64,
5618    );
5619    pub fn gst_event_parse_select_streams(event: *mut GstEvent, streams: *mut *mut glib::GList);
5620    pub fn gst_event_parse_sink_message(event: *mut GstEvent, msg: *mut *mut GstMessage);
5621    pub fn gst_event_parse_step(
5622        event: *mut GstEvent,
5623        format: *mut GstFormat,
5624        amount: *mut u64,
5625        rate: *mut c_double,
5626        flush: *mut gboolean,
5627        intermediate: *mut gboolean,
5628    );
5629    pub fn gst_event_parse_stream(event: *mut GstEvent, stream: *mut *mut GstStream);
5630    pub fn gst_event_parse_stream_collection(
5631        event: *mut GstEvent,
5632        collection: *mut *mut GstStreamCollection,
5633    );
5634    pub fn gst_event_parse_stream_flags(event: *mut GstEvent, flags: *mut GstStreamFlags);
5635    pub fn gst_event_parse_stream_group_done(event: *mut GstEvent, group_id: *mut c_uint);
5636    pub fn gst_event_parse_stream_start(event: *mut GstEvent, stream_id: *mut *const c_char);
5637    pub fn gst_event_parse_tag(event: *mut GstEvent, taglist: *mut *mut GstTagList);
5638    pub fn gst_event_parse_toc(event: *mut GstEvent, toc: *mut *mut GstToc, updated: *mut gboolean);
5639    pub fn gst_event_parse_toc_select(event: *mut GstEvent, uid: *mut *mut c_char);
5640    #[cfg(feature = "v1_18_3")]
5641    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5642    pub fn gst_event_ref(event: *mut GstEvent) -> *mut GstEvent;
5643    #[cfg(feature = "v1_20")]
5644    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
5645    pub fn gst_event_set_gap_flags(event: *mut GstEvent, flags: GstGapFlags);
5646    pub fn gst_event_set_group_id(event: *mut GstEvent, group_id: c_uint);
5647    pub fn gst_event_set_running_time_offset(event: *mut GstEvent, offset: i64);
5648    #[cfg(feature = "v1_16")]
5649    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5650    pub fn gst_event_set_seek_trickmode_interval(event: *mut GstEvent, interval: GstClockTime);
5651    pub fn gst_event_set_seqnum(event: *mut GstEvent, seqnum: u32);
5652    pub fn gst_event_set_stream(event: *mut GstEvent, stream: *mut GstStream);
5653    pub fn gst_event_set_stream_flags(event: *mut GstEvent, flags: GstStreamFlags);
5654    #[cfg(feature = "v1_18_3")]
5655    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5656    pub fn gst_event_unref(event: *mut GstEvent);
5657    pub fn gst_event_writable_structure(event: *mut GstEvent) -> *mut GstStructure;
5658    #[cfg(feature = "v1_18_3")]
5659    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5660    pub fn gst_event_replace(old_event: *mut *mut GstEvent, new_event: *mut GstEvent) -> gboolean;
5661    #[cfg(feature = "v1_18_3")]
5662    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5663    pub fn gst_event_steal(old_event: *mut *mut GstEvent) -> *mut GstEvent;
5664    #[cfg(feature = "v1_18_3")]
5665    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5666    pub fn gst_event_take(old_event: *mut *mut GstEvent, new_event: *mut GstEvent) -> gboolean;
5667
5668    //=========================================================================
5669    // GstIdStr
5670    //=========================================================================
5671    #[cfg(feature = "v1_26")]
5672    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5673    pub fn gst_id_str_get_type() -> GType;
5674    #[cfg(feature = "v1_26")]
5675    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5676    pub fn gst_id_str_new() -> *mut GstIdStr;
5677    #[cfg(feature = "v1_26")]
5678    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5679    pub fn gst_id_str_as_str(s: *const GstIdStr) -> *const c_char;
5680    #[cfg(feature = "v1_26")]
5681    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5682    pub fn gst_id_str_clear(s: *mut GstIdStr);
5683    #[cfg(feature = "v1_26")]
5684    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5685    pub fn gst_id_str_copy(s: *const GstIdStr) -> *mut GstIdStr;
5686    #[cfg(feature = "v1_26")]
5687    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5688    pub fn gst_id_str_copy_into(d: *mut GstIdStr, s: *const GstIdStr);
5689    #[cfg(feature = "v1_26")]
5690    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5691    pub fn gst_id_str_free(s: *mut GstIdStr);
5692    #[cfg(feature = "v1_26")]
5693    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5694    pub fn gst_id_str_get_len(s: *const GstIdStr) -> size_t;
5695    #[cfg(feature = "v1_26")]
5696    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5697    pub fn gst_id_str_init(s: *mut GstIdStr);
5698    #[cfg(feature = "v1_26")]
5699    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5700    pub fn gst_id_str_is_equal(s1: *const GstIdStr, s2: *const GstIdStr) -> gboolean;
5701    #[cfg(feature = "v1_26")]
5702    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5703    pub fn gst_id_str_is_equal_to_str(s1: *const GstIdStr, s2: *const c_char) -> gboolean;
5704    #[cfg(feature = "v1_26")]
5705    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5706    pub fn gst_id_str_is_equal_to_str_with_len(
5707        s1: *const GstIdStr,
5708        s2: *const c_char,
5709        len: size_t,
5710    ) -> gboolean;
5711    #[cfg(feature = "v1_26")]
5712    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5713    pub fn gst_id_str_move(d: *mut GstIdStr, s: *mut GstIdStr);
5714    #[cfg(feature = "v1_26")]
5715    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5716    pub fn gst_id_str_set(s: *mut GstIdStr, value: *const c_char);
5717    #[cfg(feature = "v1_26")]
5718    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5719    pub fn gst_id_str_set_static_str(s: *mut GstIdStr, value: *const c_char);
5720    #[cfg(feature = "v1_26")]
5721    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5722    pub fn gst_id_str_set_static_str_with_len(s: *mut GstIdStr, value: *const c_char, len: size_t);
5723    #[cfg(feature = "v1_26")]
5724    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
5725    pub fn gst_id_str_set_with_len(s: *mut GstIdStr, value: *const c_char, len: size_t);
5726
5727    //=========================================================================
5728    // GstIterator
5729    //=========================================================================
5730    pub fn gst_iterator_get_type() -> GType;
5731    pub fn gst_iterator_new(
5732        size: c_uint,
5733        type_: GType,
5734        lock: *mut glib::GMutex,
5735        master_cookie: *mut u32,
5736        copy: GstIteratorCopyFunction,
5737        next: GstIteratorNextFunction,
5738        item: GstIteratorItemFunction,
5739        resync: GstIteratorResyncFunction,
5740        free: GstIteratorFreeFunction,
5741    ) -> *mut GstIterator;
5742    pub fn gst_iterator_new_list(
5743        type_: GType,
5744        lock: *mut glib::GMutex,
5745        master_cookie: *mut u32,
5746        list: *mut *mut glib::GList,
5747        owner: *mut gobject::GObject,
5748        item: GstIteratorItemFunction,
5749    ) -> *mut GstIterator;
5750    pub fn gst_iterator_new_single(
5751        type_: GType,
5752        object: *const gobject::GValue,
5753    ) -> *mut GstIterator;
5754    pub fn gst_iterator_copy(it: *const GstIterator) -> *mut GstIterator;
5755    pub fn gst_iterator_filter(
5756        it: *mut GstIterator,
5757        func: glib::GCompareFunc,
5758        user_data: *const gobject::GValue,
5759    ) -> *mut GstIterator;
5760    pub fn gst_iterator_find_custom(
5761        it: *mut GstIterator,
5762        func: glib::GCompareFunc,
5763        elem: *mut gobject::GValue,
5764        user_data: gpointer,
5765    ) -> gboolean;
5766    pub fn gst_iterator_fold(
5767        it: *mut GstIterator,
5768        func: GstIteratorFoldFunction,
5769        ret: *mut gobject::GValue,
5770        user_data: gpointer,
5771    ) -> GstIteratorResult;
5772    pub fn gst_iterator_foreach(
5773        it: *mut GstIterator,
5774        func: GstIteratorForeachFunction,
5775        user_data: gpointer,
5776    ) -> GstIteratorResult;
5777    pub fn gst_iterator_free(it: *mut GstIterator);
5778    pub fn gst_iterator_next(it: *mut GstIterator, elem: *mut gobject::GValue)
5779    -> GstIteratorResult;
5780    pub fn gst_iterator_push(it: *mut GstIterator, other: *mut GstIterator);
5781    pub fn gst_iterator_resync(it: *mut GstIterator);
5782
5783    //=========================================================================
5784    // GstLogContext
5785    //=========================================================================
5786    #[cfg(feature = "v1_28")]
5787    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5788    pub fn gst_log_context_free(ctx: *mut GstLogContext);
5789    #[cfg(feature = "v1_28")]
5790    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5791    pub fn gst_log_context_get_category(context: *mut GstLogContext) -> *mut GstDebugCategory;
5792    #[cfg(feature = "v1_28")]
5793    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5794    pub fn gst_log_context_reset(ctx: *mut GstLogContext);
5795
5796    //=========================================================================
5797    // GstLogContextBuilder
5798    //=========================================================================
5799    #[cfg(feature = "v1_28")]
5800    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5801    pub fn gst_log_context_builder_build(builder: *mut GstLogContextBuilder) -> *mut GstLogContext;
5802    #[cfg(feature = "v1_28")]
5803    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5804    pub fn gst_log_context_builder_set_category(
5805        builder: *mut GstLogContextBuilder,
5806        category: *mut GstDebugCategory,
5807    ) -> *mut GstLogContextBuilder;
5808    #[cfg(feature = "v1_28")]
5809    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5810    pub fn gst_log_context_builder_set_hash_flags(
5811        builder: *mut GstLogContextBuilder,
5812        flags: GstLogContextHashFlags,
5813    ) -> *mut GstLogContextBuilder;
5814    #[cfg(feature = "v1_28")]
5815    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5816    pub fn gst_log_context_builder_set_interval(
5817        builder: *mut GstLogContextBuilder,
5818        interval: GstClockTime,
5819    ) -> *mut GstLogContextBuilder;
5820    #[cfg(feature = "v1_28")]
5821    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5822    pub fn gst_log_context_builder_new(
5823        category: *mut GstDebugCategory,
5824        flags: GstLogContextFlags,
5825    ) -> *mut GstLogContextBuilder;
5826
5827    //=========================================================================
5828    // GstMapInfo
5829    //=========================================================================
5830    #[cfg(feature = "v1_28")]
5831    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5832    pub fn gst_map_info_clear(info: *mut GstMapInfo);
5833    #[cfg(feature = "v1_28")]
5834    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5835    pub fn gst_map_info_get_data(info: *mut GstMapInfo, size: *mut size_t) -> *mut u8;
5836    #[cfg(feature = "v1_28")]
5837    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5838    pub fn gst_map_info_init(info: *mut GstMapInfo);
5839
5840    //=========================================================================
5841    // GstMemory
5842    //=========================================================================
5843    pub fn gst_memory_get_type() -> GType;
5844    pub fn gst_memory_new_wrapped(
5845        flags: GstMemoryFlags,
5846        data: gpointer,
5847        maxsize: size_t,
5848        offset: size_t,
5849        size: size_t,
5850        user_data: gpointer,
5851        notify: glib::GDestroyNotify,
5852    ) -> *mut GstMemory;
5853    pub fn gst_memory_copy(mem: *mut GstMemory, offset: ssize_t, size: ssize_t) -> *mut GstMemory;
5854    pub fn gst_memory_get_sizes(
5855        mem: *mut GstMemory,
5856        offset: *mut size_t,
5857        maxsize: *mut size_t,
5858    ) -> size_t;
5859    pub fn gst_memory_init(
5860        mem: *mut GstMemory,
5861        flags: GstMemoryFlags,
5862        allocator: *mut GstAllocator,
5863        parent: *mut GstMemory,
5864        maxsize: size_t,
5865        align: size_t,
5866        offset: size_t,
5867        size: size_t,
5868    );
5869    pub fn gst_memory_is_span(
5870        mem1: *mut GstMemory,
5871        mem2: *mut GstMemory,
5872        offset: *mut size_t,
5873    ) -> gboolean;
5874    pub fn gst_memory_is_type(mem: *mut GstMemory, mem_type: *const c_char) -> gboolean;
5875    pub fn gst_memory_is_writable(memory: *const GstMemory) -> gboolean;
5876    pub fn gst_memory_make_mapped(
5877        mem: *mut GstMemory,
5878        info: *mut GstMapInfo,
5879        flags: GstMapFlags,
5880    ) -> *mut GstMemory;
5881    pub fn gst_memory_make_writable(memory: *mut GstMemory) -> *mut GstMemory;
5882    pub fn gst_memory_map(
5883        mem: *mut GstMemory,
5884        info: *mut GstMapInfo,
5885        flags: GstMapFlags,
5886    ) -> gboolean;
5887    #[cfg(feature = "v1_18_3")]
5888    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5889    pub fn gst_memory_ref(memory: *mut GstMemory) -> *mut GstMemory;
5890    pub fn gst_memory_resize(mem: *mut GstMemory, offset: ssize_t, size: size_t);
5891    pub fn gst_memory_share(mem: *mut GstMemory, offset: ssize_t, size: ssize_t) -> *mut GstMemory;
5892    pub fn gst_memory_unmap(mem: *mut GstMemory, info: *mut GstMapInfo);
5893    #[cfg(feature = "v1_18_3")]
5894    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
5895    pub fn gst_memory_unref(memory: *mut GstMemory);
5896    #[cfg(feature = "v1_28")]
5897    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5898    pub fn gst_memory_replace(
5899        old_memory: *mut *mut GstMemory,
5900        new_memory: *mut GstMemory,
5901    ) -> gboolean;
5902    #[cfg(feature = "v1_28")]
5903    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5904    pub fn gst_memory_steal(old_memory: *mut *mut GstMemory) -> *mut GstMemory;
5905    #[cfg(feature = "v1_28")]
5906    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5907    pub fn gst_memory_take(old_memory: *mut *mut GstMemory, new_memory: *mut GstMemory)
5908    -> gboolean;
5909
5910    //=========================================================================
5911    // GstMessage
5912    //=========================================================================
5913    pub fn gst_message_get_type() -> GType;
5914    pub fn gst_message_new_application(
5915        src: *mut GstObject,
5916        structure: *mut GstStructure,
5917    ) -> *mut GstMessage;
5918    pub fn gst_message_new_async_done(
5919        src: *mut GstObject,
5920        running_time: GstClockTime,
5921    ) -> *mut GstMessage;
5922    pub fn gst_message_new_async_start(src: *mut GstObject) -> *mut GstMessage;
5923    pub fn gst_message_new_buffering(src: *mut GstObject, percent: c_int) -> *mut GstMessage;
5924    pub fn gst_message_new_clock_lost(src: *mut GstObject, clock: *mut GstClock)
5925    -> *mut GstMessage;
5926    pub fn gst_message_new_clock_provide(
5927        src: *mut GstObject,
5928        clock: *mut GstClock,
5929        ready: gboolean,
5930    ) -> *mut GstMessage;
5931    pub fn gst_message_new_custom(
5932        type_: GstMessageType,
5933        src: *mut GstObject,
5934        structure: *mut GstStructure,
5935    ) -> *mut GstMessage;
5936    pub fn gst_message_new_device_added(
5937        src: *mut GstObject,
5938        device: *mut GstDevice,
5939    ) -> *mut GstMessage;
5940    #[cfg(feature = "v1_16")]
5941    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
5942    pub fn gst_message_new_device_changed(
5943        src: *mut GstObject,
5944        device: *mut GstDevice,
5945        changed_device: *mut GstDevice,
5946    ) -> *mut GstMessage;
5947    #[cfg(feature = "v1_28")]
5948    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
5949    pub fn gst_message_new_device_monitor_started(
5950        src: *mut GstObject,
5951        success: gboolean,
5952    ) -> *mut GstMessage;
5953    pub fn gst_message_new_device_removed(
5954        src: *mut GstObject,
5955        device: *mut GstDevice,
5956    ) -> *mut GstMessage;
5957    pub fn gst_message_new_duration_changed(src: *mut GstObject) -> *mut GstMessage;
5958    pub fn gst_message_new_element(
5959        src: *mut GstObject,
5960        structure: *mut GstStructure,
5961    ) -> *mut GstMessage;
5962    pub fn gst_message_new_eos(src: *mut GstObject) -> *mut GstMessage;
5963    pub fn gst_message_new_error(
5964        src: *mut GstObject,
5965        error: *mut glib::GError,
5966        debug: *const c_char,
5967    ) -> *mut GstMessage;
5968    pub fn gst_message_new_error_with_details(
5969        src: *mut GstObject,
5970        error: *mut glib::GError,
5971        debug: *const c_char,
5972        details: *mut GstStructure,
5973    ) -> *mut GstMessage;
5974    pub fn gst_message_new_have_context(
5975        src: *mut GstObject,
5976        context: *mut GstContext,
5977    ) -> *mut GstMessage;
5978    pub fn gst_message_new_info(
5979        src: *mut GstObject,
5980        error: *mut glib::GError,
5981        debug: *const c_char,
5982    ) -> *mut GstMessage;
5983    pub fn gst_message_new_info_with_details(
5984        src: *mut GstObject,
5985        error: *mut glib::GError,
5986        debug: *const c_char,
5987        details: *mut GstStructure,
5988    ) -> *mut GstMessage;
5989    #[cfg(feature = "v1_18")]
5990    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
5991    pub fn gst_message_new_instant_rate_request(
5992        src: *mut GstObject,
5993        rate_multiplier: c_double,
5994    ) -> *mut GstMessage;
5995    pub fn gst_message_new_latency(src: *mut GstObject) -> *mut GstMessage;
5996    pub fn gst_message_new_need_context(
5997        src: *mut GstObject,
5998        context_type: *const c_char,
5999    ) -> *mut GstMessage;
6000    pub fn gst_message_new_new_clock(src: *mut GstObject, clock: *mut GstClock) -> *mut GstMessage;
6001    pub fn gst_message_new_progress(
6002        src: *mut GstObject,
6003        type_: GstProgressType,
6004        code: *const c_char,
6005        text: *const c_char,
6006    ) -> *mut GstMessage;
6007    pub fn gst_message_new_property_notify(
6008        src: *mut GstObject,
6009        property_name: *const c_char,
6010        val: *mut gobject::GValue,
6011    ) -> *mut GstMessage;
6012    pub fn gst_message_new_qos(
6013        src: *mut GstObject,
6014        live: gboolean,
6015        running_time: u64,
6016        stream_time: u64,
6017        timestamp: u64,
6018        duration: u64,
6019    ) -> *mut GstMessage;
6020    pub fn gst_message_new_redirect(
6021        src: *mut GstObject,
6022        location: *const c_char,
6023        tag_list: *mut GstTagList,
6024        entry_struct: *mut GstStructure,
6025    ) -> *mut GstMessage;
6026    pub fn gst_message_new_request_state(src: *mut GstObject, state: GstState) -> *mut GstMessage;
6027    pub fn gst_message_new_reset_time(
6028        src: *mut GstObject,
6029        running_time: GstClockTime,
6030    ) -> *mut GstMessage;
6031    pub fn gst_message_new_segment_done(
6032        src: *mut GstObject,
6033        format: GstFormat,
6034        position: i64,
6035    ) -> *mut GstMessage;
6036    pub fn gst_message_new_segment_start(
6037        src: *mut GstObject,
6038        format: GstFormat,
6039        position: i64,
6040    ) -> *mut GstMessage;
6041    pub fn gst_message_new_state_changed(
6042        src: *mut GstObject,
6043        oldstate: GstState,
6044        newstate: GstState,
6045        pending: GstState,
6046    ) -> *mut GstMessage;
6047    pub fn gst_message_new_state_dirty(src: *mut GstObject) -> *mut GstMessage;
6048    pub fn gst_message_new_step_done(
6049        src: *mut GstObject,
6050        format: GstFormat,
6051        amount: u64,
6052        rate: c_double,
6053        flush: gboolean,
6054        intermediate: gboolean,
6055        duration: u64,
6056        eos: gboolean,
6057    ) -> *mut GstMessage;
6058    pub fn gst_message_new_step_start(
6059        src: *mut GstObject,
6060        active: gboolean,
6061        format: GstFormat,
6062        amount: u64,
6063        rate: c_double,
6064        flush: gboolean,
6065        intermediate: gboolean,
6066    ) -> *mut GstMessage;
6067    pub fn gst_message_new_stream_collection(
6068        src: *mut GstObject,
6069        collection: *mut GstStreamCollection,
6070    ) -> *mut GstMessage;
6071    pub fn gst_message_new_stream_start(src: *mut GstObject) -> *mut GstMessage;
6072    pub fn gst_message_new_stream_status(
6073        src: *mut GstObject,
6074        type_: GstStreamStatusType,
6075        owner: *mut GstElement,
6076    ) -> *mut GstMessage;
6077    pub fn gst_message_new_streams_selected(
6078        src: *mut GstObject,
6079        collection: *mut GstStreamCollection,
6080    ) -> *mut GstMessage;
6081    pub fn gst_message_new_structure_change(
6082        src: *mut GstObject,
6083        type_: GstStructureChangeType,
6084        owner: *mut GstElement,
6085        busy: gboolean,
6086    ) -> *mut GstMessage;
6087    pub fn gst_message_new_tag(src: *mut GstObject, tag_list: *mut GstTagList) -> *mut GstMessage;
6088    pub fn gst_message_new_toc(
6089        src: *mut GstObject,
6090        toc: *mut GstToc,
6091        updated: gboolean,
6092    ) -> *mut GstMessage;
6093    pub fn gst_message_new_warning(
6094        src: *mut GstObject,
6095        error: *mut glib::GError,
6096        debug: *const c_char,
6097    ) -> *mut GstMessage;
6098    pub fn gst_message_new_warning_with_details(
6099        src: *mut GstObject,
6100        error: *mut glib::GError,
6101        debug: *const c_char,
6102        details: *mut GstStructure,
6103    ) -> *mut GstMessage;
6104    pub fn gst_message_add_redirect_entry(
6105        message: *mut GstMessage,
6106        location: *const c_char,
6107        tag_list: *mut GstTagList,
6108        entry_struct: *mut GstStructure,
6109    );
6110    #[cfg(feature = "v1_18_3")]
6111    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6112    pub fn gst_message_copy(msg: *const GstMessage) -> *mut GstMessage;
6113    #[cfg(feature = "v1_26")]
6114    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6115    pub fn gst_message_get_details(message: *mut GstMessage) -> *const GstStructure;
6116    pub fn gst_message_get_num_redirect_entries(message: *mut GstMessage) -> size_t;
6117    pub fn gst_message_get_seqnum(message: *mut GstMessage) -> u32;
6118    pub fn gst_message_get_stream_status_object(message: *mut GstMessage)
6119    -> *const gobject::GValue;
6120    pub fn gst_message_get_structure(message: *mut GstMessage) -> *const GstStructure;
6121    pub fn gst_message_has_name(message: *mut GstMessage, name: *const c_char) -> gboolean;
6122    pub fn gst_message_is_writable(message: *const GstMessage) -> gboolean;
6123    pub fn gst_message_make_writable(message: *mut GstMessage) -> *mut GstMessage;
6124    pub fn gst_message_parse_async_done(message: *mut GstMessage, running_time: *mut GstClockTime);
6125    pub fn gst_message_parse_buffering(message: *mut GstMessage, percent: *mut c_int);
6126    pub fn gst_message_parse_buffering_stats(
6127        message: *mut GstMessage,
6128        mode: *mut GstBufferingMode,
6129        avg_in: *mut c_int,
6130        avg_out: *mut c_int,
6131        buffering_left: *mut i64,
6132    );
6133    pub fn gst_message_parse_clock_lost(message: *mut GstMessage, clock: *mut *mut GstClock);
6134    pub fn gst_message_parse_clock_provide(
6135        message: *mut GstMessage,
6136        clock: *mut *mut GstClock,
6137        ready: *mut gboolean,
6138    );
6139    pub fn gst_message_parse_context_type(
6140        message: *mut GstMessage,
6141        context_type: *mut *const c_char,
6142    ) -> gboolean;
6143    pub fn gst_message_parse_device_added(message: *mut GstMessage, device: *mut *mut GstDevice);
6144    #[cfg(feature = "v1_16")]
6145    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6146    pub fn gst_message_parse_device_changed(
6147        message: *mut GstMessage,
6148        device: *mut *mut GstDevice,
6149        changed_device: *mut *mut GstDevice,
6150    );
6151    #[cfg(feature = "v1_28")]
6152    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6153    pub fn gst_message_parse_device_monitor_started(
6154        message: *mut GstMessage,
6155        success: *mut gboolean,
6156    );
6157    pub fn gst_message_parse_device_removed(message: *mut GstMessage, device: *mut *mut GstDevice);
6158    pub fn gst_message_parse_error(
6159        message: *mut GstMessage,
6160        gerror: *mut *mut glib::GError,
6161        debug: *mut *mut c_char,
6162    );
6163    pub fn gst_message_parse_error_details(
6164        message: *mut GstMessage,
6165        structure: *mut *const GstStructure,
6166    );
6167    #[cfg(feature = "v1_26")]
6168    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6169    pub fn gst_message_parse_error_writable_details(
6170        message: *mut GstMessage,
6171        structure: *mut *mut GstStructure,
6172    );
6173    pub fn gst_message_parse_group_id(message: *mut GstMessage, group_id: *mut c_uint) -> gboolean;
6174    pub fn gst_message_parse_have_context(message: *mut GstMessage, context: *mut *mut GstContext);
6175    pub fn gst_message_parse_info(
6176        message: *mut GstMessage,
6177        gerror: *mut *mut glib::GError,
6178        debug: *mut *mut c_char,
6179    );
6180    pub fn gst_message_parse_info_details(
6181        message: *mut GstMessage,
6182        structure: *mut *const GstStructure,
6183    );
6184    #[cfg(feature = "v1_26")]
6185    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6186    pub fn gst_message_parse_info_writable_details(
6187        message: *mut GstMessage,
6188        structure: *mut *mut GstStructure,
6189    );
6190    #[cfg(feature = "v1_18")]
6191    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
6192    pub fn gst_message_parse_instant_rate_request(
6193        message: *mut GstMessage,
6194        rate_multiplier: *mut c_double,
6195    );
6196    pub fn gst_message_parse_new_clock(message: *mut GstMessage, clock: *mut *mut GstClock);
6197    pub fn gst_message_parse_progress(
6198        message: *mut GstMessage,
6199        type_: *mut GstProgressType,
6200        code: *mut *mut c_char,
6201        text: *mut *mut c_char,
6202    );
6203    pub fn gst_message_parse_property_notify(
6204        message: *mut GstMessage,
6205        object: *mut *mut GstObject,
6206        property_name: *mut *const c_char,
6207        property_value: *mut *const gobject::GValue,
6208    );
6209    pub fn gst_message_parse_qos(
6210        message: *mut GstMessage,
6211        live: *mut gboolean,
6212        running_time: *mut u64,
6213        stream_time: *mut u64,
6214        timestamp: *mut u64,
6215        duration: *mut u64,
6216    );
6217    pub fn gst_message_parse_qos_stats(
6218        message: *mut GstMessage,
6219        format: *mut GstFormat,
6220        processed: *mut u64,
6221        dropped: *mut u64,
6222    );
6223    pub fn gst_message_parse_qos_values(
6224        message: *mut GstMessage,
6225        jitter: *mut i64,
6226        proportion: *mut c_double,
6227        quality: *mut c_int,
6228    );
6229    pub fn gst_message_parse_redirect_entry(
6230        message: *mut GstMessage,
6231        entry_index: size_t,
6232        location: *mut *const c_char,
6233        tag_list: *mut *mut GstTagList,
6234        entry_struct: *mut *const GstStructure,
6235    );
6236    pub fn gst_message_parse_request_state(message: *mut GstMessage, state: *mut GstState);
6237    pub fn gst_message_parse_reset_time(message: *mut GstMessage, running_time: *mut GstClockTime);
6238    pub fn gst_message_parse_segment_done(
6239        message: *mut GstMessage,
6240        format: *mut GstFormat,
6241        position: *mut i64,
6242    );
6243    pub fn gst_message_parse_segment_start(
6244        message: *mut GstMessage,
6245        format: *mut GstFormat,
6246        position: *mut i64,
6247    );
6248    pub fn gst_message_parse_state_changed(
6249        message: *mut GstMessage,
6250        oldstate: *mut GstState,
6251        newstate: *mut GstState,
6252        pending: *mut GstState,
6253    );
6254    pub fn gst_message_parse_step_done(
6255        message: *mut GstMessage,
6256        format: *mut GstFormat,
6257        amount: *mut u64,
6258        rate: *mut c_double,
6259        flush: *mut gboolean,
6260        intermediate: *mut gboolean,
6261        duration: *mut u64,
6262        eos: *mut gboolean,
6263    );
6264    pub fn gst_message_parse_step_start(
6265        message: *mut GstMessage,
6266        active: *mut gboolean,
6267        format: *mut GstFormat,
6268        amount: *mut u64,
6269        rate: *mut c_double,
6270        flush: *mut gboolean,
6271        intermediate: *mut gboolean,
6272    );
6273    pub fn gst_message_parse_stream_collection(
6274        message: *mut GstMessage,
6275        collection: *mut *mut GstStreamCollection,
6276    );
6277    pub fn gst_message_parse_stream_status(
6278        message: *mut GstMessage,
6279        type_: *mut GstStreamStatusType,
6280        owner: *mut *mut GstElement,
6281    );
6282    pub fn gst_message_parse_streams_selected(
6283        message: *mut GstMessage,
6284        collection: *mut *mut GstStreamCollection,
6285    );
6286    pub fn gst_message_parse_structure_change(
6287        message: *mut GstMessage,
6288        type_: *mut GstStructureChangeType,
6289        owner: *mut *mut GstElement,
6290        busy: *mut gboolean,
6291    );
6292    pub fn gst_message_parse_tag(message: *mut GstMessage, tag_list: *mut *mut GstTagList);
6293    pub fn gst_message_parse_toc(
6294        message: *mut GstMessage,
6295        toc: *mut *mut GstToc,
6296        updated: *mut gboolean,
6297    );
6298    pub fn gst_message_parse_warning(
6299        message: *mut GstMessage,
6300        gerror: *mut *mut glib::GError,
6301        debug: *mut *mut c_char,
6302    );
6303    pub fn gst_message_parse_warning_details(
6304        message: *mut GstMessage,
6305        structure: *mut *const GstStructure,
6306    );
6307    #[cfg(feature = "v1_26")]
6308    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6309    pub fn gst_message_parse_warning_writable_details(
6310        message: *mut GstMessage,
6311        structure: *mut *mut GstStructure,
6312    );
6313    #[cfg(feature = "v1_18_3")]
6314    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6315    pub fn gst_message_ref(msg: *mut GstMessage) -> *mut GstMessage;
6316    pub fn gst_message_set_buffering_stats(
6317        message: *mut GstMessage,
6318        mode: GstBufferingMode,
6319        avg_in: c_int,
6320        avg_out: c_int,
6321        buffering_left: i64,
6322    );
6323    #[cfg(feature = "v1_26")]
6324    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6325    pub fn gst_message_set_details(message: *mut GstMessage, details: *mut GstStructure);
6326    pub fn gst_message_set_group_id(message: *mut GstMessage, group_id: c_uint);
6327    pub fn gst_message_set_qos_stats(
6328        message: *mut GstMessage,
6329        format: GstFormat,
6330        processed: u64,
6331        dropped: u64,
6332    );
6333    pub fn gst_message_set_qos_values(
6334        message: *mut GstMessage,
6335        jitter: i64,
6336        proportion: c_double,
6337        quality: c_int,
6338    );
6339    pub fn gst_message_set_seqnum(message: *mut GstMessage, seqnum: u32);
6340    pub fn gst_message_set_stream_status_object(
6341        message: *mut GstMessage,
6342        object: *const gobject::GValue,
6343    );
6344    pub fn gst_message_streams_selected_add(message: *mut GstMessage, stream: *mut GstStream);
6345    pub fn gst_message_streams_selected_get_size(message: *mut GstMessage) -> c_uint;
6346    pub fn gst_message_streams_selected_get_stream(
6347        message: *mut GstMessage,
6348        idx: c_uint,
6349    ) -> *mut GstStream;
6350    #[cfg(feature = "v1_18_3")]
6351    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6352    pub fn gst_message_unref(msg: *mut GstMessage);
6353    #[cfg(feature = "v1_26")]
6354    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6355    pub fn gst_message_writable_details(message: *mut GstMessage) -> *mut GstStructure;
6356    pub fn gst_message_writable_structure(message: *mut GstMessage) -> *mut GstStructure;
6357    #[cfg(feature = "v1_18_3")]
6358    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6359    pub fn gst_message_replace(
6360        old_message: *mut *mut GstMessage,
6361        new_message: *mut GstMessage,
6362    ) -> gboolean;
6363    #[cfg(feature = "v1_28")]
6364    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6365    pub fn gst_message_steal(old_message: *mut *mut GstMessage) -> *mut GstMessage;
6366    #[cfg(feature = "v1_18_3")]
6367    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6368    pub fn gst_message_take(
6369        old_message: *mut *mut GstMessage,
6370        new_message: *mut GstMessage,
6371    ) -> gboolean;
6372
6373    //=========================================================================
6374    // GstMeta
6375    //=========================================================================
6376    #[cfg(feature = "v1_16")]
6377    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6378    pub fn gst_meta_compare_seqnum(meta1: *const GstMeta, meta2: *const GstMeta) -> c_int;
6379    #[cfg(feature = "v1_16")]
6380    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6381    pub fn gst_meta_get_seqnum(meta: *const GstMeta) -> u64;
6382    #[cfg(feature = "v1_24")]
6383    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6384    pub fn gst_meta_serialize(meta: *const GstMeta, data: *mut GstByteArrayInterface) -> gboolean;
6385    #[cfg(feature = "v1_24")]
6386    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6387    pub fn gst_meta_serialize_simple(meta: *const GstMeta, data: *mut glib::GByteArray)
6388    -> gboolean;
6389    #[cfg(feature = "v1_26")]
6390    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6391    pub fn gst_meta_api_type_aggregate_params(
6392        api: GType,
6393        aggregated_params: *mut *mut GstStructure,
6394        params0: *const GstStructure,
6395        params1: *const GstStructure,
6396    ) -> gboolean;
6397    pub fn gst_meta_api_type_get_tags(api: GType) -> *const *const c_char;
6398    pub fn gst_meta_api_type_has_tag(api: GType, tag: glib::GQuark) -> gboolean;
6399    pub fn gst_meta_api_type_register(api: *const c_char, tags: *mut *const c_char) -> GType;
6400    #[cfg(feature = "v1_26")]
6401    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
6402    pub fn gst_meta_api_type_set_params_aggregator(
6403        api: GType,
6404        aggregator: GstAllocationMetaParamsAggregator,
6405    );
6406    #[cfg(feature = "v1_28")]
6407    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6408    pub fn gst_meta_api_type_tags_contain_only(
6409        api: GType,
6410        valid_tags: *mut *const c_char,
6411    ) -> gboolean;
6412    #[cfg(feature = "v1_24")]
6413    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6414    pub fn gst_meta_deserialize(
6415        buffer: *mut GstBuffer,
6416        data: *const u8,
6417        size: size_t,
6418        consumed: *mut u32,
6419    ) -> *mut GstMeta;
6420    pub fn gst_meta_get_info(impl_: *const c_char) -> *const GstMetaInfo;
6421    pub fn gst_meta_register(
6422        api: GType,
6423        impl_: *const c_char,
6424        size: size_t,
6425        init_func: GstMetaInitFunction,
6426        free_func: GstMetaFreeFunction,
6427        transform_func: GstMetaTransformFunction,
6428    ) -> *const GstMetaInfo;
6429    #[cfg(feature = "v1_20")]
6430    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6431    pub fn gst_meta_register_custom(
6432        name: *const c_char,
6433        tags: *mut *const c_char,
6434        transform_func: GstCustomMetaTransformFunction,
6435        user_data: gpointer,
6436        destroy_data: glib::GDestroyNotify,
6437    ) -> *const GstMetaInfo;
6438    #[cfg(feature = "v1_24")]
6439    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6440    pub fn gst_meta_register_custom_simple(name: *const c_char) -> *const GstMetaInfo;
6441
6442    //=========================================================================
6443    // GstMetaInfo
6444    //=========================================================================
6445    #[cfg(feature = "v1_20")]
6446    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6447    pub fn gst_meta_info_is_custom(info: *const GstMetaInfo) -> gboolean;
6448    #[cfg(feature = "v1_24")]
6449    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6450    pub fn gst_meta_info_register(info: *mut GstMetaInfo) -> *const GstMetaInfo;
6451    #[cfg(feature = "v1_24")]
6452    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
6453    pub fn gst_meta_info_new(api: GType, impl_: *const c_char, size: size_t) -> *mut GstMetaInfo;
6454
6455    //=========================================================================
6456    // GstMiniObject
6457    //=========================================================================
6458    #[cfg(feature = "v1_20")]
6459    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
6460    pub fn gst_mini_object_get_type() -> GType;
6461    #[cfg(feature = "v1_16")]
6462    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6463    pub fn gst_mini_object_add_parent(object: *mut GstMiniObject, parent: *mut GstMiniObject);
6464    pub fn gst_mini_object_copy(mini_object: *const GstMiniObject) -> *mut GstMiniObject;
6465    pub fn gst_mini_object_get_qdata(object: *mut GstMiniObject, quark: glib::GQuark) -> gpointer;
6466    pub fn gst_mini_object_init(
6467        mini_object: *mut GstMiniObject,
6468        flags: c_uint,
6469        type_: GType,
6470        copy_func: GstMiniObjectCopyFunction,
6471        dispose_func: GstMiniObjectDisposeFunction,
6472        free_func: GstMiniObjectFreeFunction,
6473    );
6474    pub fn gst_mini_object_is_writable(mini_object: *const GstMiniObject) -> gboolean;
6475    pub fn gst_mini_object_lock(object: *mut GstMiniObject, flags: GstLockFlags) -> gboolean;
6476    pub fn gst_mini_object_make_writable(mini_object: *mut GstMiniObject) -> *mut GstMiniObject;
6477    pub fn gst_mini_object_ref(mini_object: *mut GstMiniObject) -> *mut GstMiniObject;
6478    #[cfg(feature = "v1_16")]
6479    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6480    pub fn gst_mini_object_remove_parent(object: *mut GstMiniObject, parent: *mut GstMiniObject);
6481    pub fn gst_mini_object_set_qdata(
6482        object: *mut GstMiniObject,
6483        quark: glib::GQuark,
6484        data: gpointer,
6485        destroy: glib::GDestroyNotify,
6486    );
6487    pub fn gst_mini_object_steal_qdata(object: *mut GstMiniObject, quark: glib::GQuark)
6488    -> gpointer;
6489    pub fn gst_mini_object_unlock(object: *mut GstMiniObject, flags: GstLockFlags);
6490    pub fn gst_mini_object_unref(mini_object: *mut GstMiniObject);
6491    pub fn gst_mini_object_weak_ref(
6492        object: *mut GstMiniObject,
6493        notify: GstMiniObjectNotify,
6494        data: gpointer,
6495    );
6496    pub fn gst_mini_object_weak_unref(
6497        object: *mut GstMiniObject,
6498        notify: GstMiniObjectNotify,
6499        data: gpointer,
6500    );
6501    pub fn gst_mini_object_replace(
6502        olddata: *mut *mut GstMiniObject,
6503        newdata: *mut GstMiniObject,
6504    ) -> gboolean;
6505    pub fn gst_mini_object_steal(olddata: *mut *mut GstMiniObject) -> *mut GstMiniObject;
6506    pub fn gst_mini_object_take(
6507        olddata: *mut *mut GstMiniObject,
6508        newdata: *mut GstMiniObject,
6509    ) -> gboolean;
6510
6511    //=========================================================================
6512    // GstPadProbeInfo
6513    //=========================================================================
6514    pub fn gst_pad_probe_info_get_buffer(info: *mut GstPadProbeInfo) -> *mut GstBuffer;
6515    pub fn gst_pad_probe_info_get_buffer_list(info: *mut GstPadProbeInfo) -> *mut GstBufferList;
6516    pub fn gst_pad_probe_info_get_event(info: *mut GstPadProbeInfo) -> *mut GstEvent;
6517    #[cfg(feature = "v1_28")]
6518    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6519    pub fn gst_pad_probe_info_get_flow_return(info: *mut GstPadProbeInfo) -> GstFlowReturn;
6520    #[cfg(feature = "v1_28")]
6521    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6522    pub fn gst_pad_probe_info_get_id(info: *mut GstPadProbeInfo) -> c_ulong;
6523    #[cfg(feature = "v1_28")]
6524    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6525    pub fn gst_pad_probe_info_get_offset(info: *mut GstPadProbeInfo) -> u64;
6526    pub fn gst_pad_probe_info_get_query(info: *mut GstPadProbeInfo) -> *mut GstQuery;
6527    #[cfg(feature = "v1_28")]
6528    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6529    pub fn gst_pad_probe_info_get_size(info: *mut GstPadProbeInfo) -> size_t;
6530    #[cfg(feature = "v1_28")]
6531    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6532    pub fn gst_pad_probe_info_get_type(info: *mut GstPadProbeInfo) -> GstPadProbeType;
6533    #[cfg(feature = "v1_28")]
6534    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6535    pub fn gst_pad_probe_info_set_buffer(info: *mut GstPadProbeInfo, buffer: *mut GstBuffer);
6536    #[cfg(feature = "v1_28")]
6537    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6538    pub fn gst_pad_probe_info_set_buffer_list(info: *mut GstPadProbeInfo, list: *mut GstBufferList);
6539    #[cfg(feature = "v1_28")]
6540    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6541    pub fn gst_pad_probe_info_set_event(info: *mut GstPadProbeInfo, event: *mut GstEvent);
6542    #[cfg(feature = "v1_28")]
6543    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6544    pub fn gst_pad_probe_info_set_flow_return(info: *mut GstPadProbeInfo, flow_ret: GstFlowReturn);
6545
6546    //=========================================================================
6547    // GstParentBufferMeta
6548    //=========================================================================
6549    pub fn gst_parent_buffer_meta_get_info() -> *const GstMetaInfo;
6550
6551    //=========================================================================
6552    // GstParseContext
6553    //=========================================================================
6554    pub fn gst_parse_context_get_type() -> GType;
6555    pub fn gst_parse_context_new() -> *mut GstParseContext;
6556    pub fn gst_parse_context_copy(context: *const GstParseContext) -> *mut GstParseContext;
6557    pub fn gst_parse_context_free(context: *mut GstParseContext);
6558    pub fn gst_parse_context_get_missing_elements(
6559        context: *mut GstParseContext,
6560    ) -> *mut *mut c_char;
6561
6562    //=========================================================================
6563    // GstPoll
6564    //=========================================================================
6565    pub fn gst_poll_add_fd(set: *mut GstPoll, fd: *mut GstPollFD) -> gboolean;
6566    pub fn gst_poll_fd_can_read(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6567    pub fn gst_poll_fd_can_write(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6568    #[cfg(feature = "v1_16")]
6569    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6570    pub fn gst_poll_fd_ctl_pri(set: *mut GstPoll, fd: *mut GstPollFD, active: gboolean)
6571    -> gboolean;
6572    pub fn gst_poll_fd_ctl_read(
6573        set: *mut GstPoll,
6574        fd: *mut GstPollFD,
6575        active: gboolean,
6576    ) -> gboolean;
6577    pub fn gst_poll_fd_ctl_write(
6578        set: *mut GstPoll,
6579        fd: *mut GstPollFD,
6580        active: gboolean,
6581    ) -> gboolean;
6582    pub fn gst_poll_fd_has_closed(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6583    pub fn gst_poll_fd_has_error(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6584    #[cfg(feature = "v1_16")]
6585    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6586    pub fn gst_poll_fd_has_pri(set: *const GstPoll, fd: *mut GstPollFD) -> gboolean;
6587    pub fn gst_poll_fd_ignored(set: *mut GstPoll, fd: *mut GstPollFD);
6588    pub fn gst_poll_free(set: *mut GstPoll);
6589    pub fn gst_poll_get_read_gpollfd(set: *mut GstPoll, fd: *mut glib::GPollFD);
6590    pub fn gst_poll_read_control(set: *mut GstPoll) -> gboolean;
6591    pub fn gst_poll_remove_fd(set: *mut GstPoll, fd: *mut GstPollFD) -> gboolean;
6592    pub fn gst_poll_restart(set: *mut GstPoll);
6593    pub fn gst_poll_set_controllable(set: *mut GstPoll, controllable: gboolean) -> gboolean;
6594    pub fn gst_poll_set_flushing(set: *mut GstPoll, flushing: gboolean);
6595    pub fn gst_poll_wait(set: *mut GstPoll, timeout: GstClockTime) -> c_int;
6596    pub fn gst_poll_write_control(set: *mut GstPoll) -> gboolean;
6597    pub fn gst_poll_new(controllable: gboolean) -> *mut GstPoll;
6598    pub fn gst_poll_new_timer() -> *mut GstPoll;
6599
6600    //=========================================================================
6601    // GstPollFD
6602    //=========================================================================
6603    pub fn gst_poll_fd_init(fd: *mut GstPollFD);
6604
6605    //=========================================================================
6606    // GstPromise
6607    //=========================================================================
6608    pub fn gst_promise_get_type() -> GType;
6609    pub fn gst_promise_new() -> *mut GstPromise;
6610    pub fn gst_promise_new_with_change_func(
6611        func: GstPromiseChangeFunc,
6612        user_data: gpointer,
6613        notify: glib::GDestroyNotify,
6614    ) -> *mut GstPromise;
6615    pub fn gst_promise_expire(promise: *mut GstPromise);
6616    pub fn gst_promise_get_reply(promise: *mut GstPromise) -> *const GstStructure;
6617    pub fn gst_promise_interrupt(promise: *mut GstPromise);
6618    #[cfg(feature = "v1_18_3")]
6619    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6620    pub fn gst_promise_ref(promise: *mut GstPromise) -> *mut GstPromise;
6621    pub fn gst_promise_reply(promise: *mut GstPromise, s: *mut GstStructure);
6622    #[cfg(feature = "v1_18_3")]
6623    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6624    pub fn gst_promise_unref(promise: *mut GstPromise);
6625    pub fn gst_promise_wait(promise: *mut GstPromise) -> GstPromiseResult;
6626
6627    //=========================================================================
6628    // GstProtectionMeta
6629    //=========================================================================
6630    pub fn gst_protection_meta_get_info() -> *const GstMetaInfo;
6631
6632    //=========================================================================
6633    // GstQuery
6634    //=========================================================================
6635    pub fn gst_query_get_type() -> GType;
6636    pub fn gst_query_new_accept_caps(caps: *mut GstCaps) -> *mut GstQuery;
6637    pub fn gst_query_new_allocation(caps: *mut GstCaps, need_pool: gboolean) -> *mut GstQuery;
6638    #[cfg(feature = "v1_16")]
6639    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6640    pub fn gst_query_new_bitrate() -> *mut GstQuery;
6641    pub fn gst_query_new_buffering(format: GstFormat) -> *mut GstQuery;
6642    pub fn gst_query_new_caps(filter: *mut GstCaps) -> *mut GstQuery;
6643    pub fn gst_query_new_context(context_type: *const c_char) -> *mut GstQuery;
6644    pub fn gst_query_new_convert(
6645        src_format: GstFormat,
6646        value: i64,
6647        dest_format: GstFormat,
6648    ) -> *mut GstQuery;
6649    pub fn gst_query_new_custom(type_: GstQueryType, structure: *mut GstStructure)
6650    -> *mut GstQuery;
6651    pub fn gst_query_new_drain() -> *mut GstQuery;
6652    pub fn gst_query_new_duration(format: GstFormat) -> *mut GstQuery;
6653    pub fn gst_query_new_formats() -> *mut GstQuery;
6654    pub fn gst_query_new_latency() -> *mut GstQuery;
6655    pub fn gst_query_new_position(format: GstFormat) -> *mut GstQuery;
6656    pub fn gst_query_new_scheduling() -> *mut GstQuery;
6657    pub fn gst_query_new_seeking(format: GstFormat) -> *mut GstQuery;
6658    pub fn gst_query_new_segment(format: GstFormat) -> *mut GstQuery;
6659    #[cfg(feature = "v1_22")]
6660    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6661    pub fn gst_query_new_selectable() -> *mut GstQuery;
6662    pub fn gst_query_new_uri() -> *mut GstQuery;
6663    pub fn gst_query_add_allocation_meta(
6664        query: *mut GstQuery,
6665        api: GType,
6666        params: *const GstStructure,
6667    );
6668    pub fn gst_query_add_allocation_param(
6669        query: *mut GstQuery,
6670        allocator: *mut GstAllocator,
6671        params: *const GstAllocationParams,
6672    );
6673    pub fn gst_query_add_allocation_pool(
6674        query: *mut GstQuery,
6675        pool: *mut GstBufferPool,
6676        size: c_uint,
6677        min_buffers: c_uint,
6678        max_buffers: c_uint,
6679    );
6680    pub fn gst_query_add_buffering_range(query: *mut GstQuery, start: i64, stop: i64) -> gboolean;
6681    pub fn gst_query_add_scheduling_mode(query: *mut GstQuery, mode: GstPadMode);
6682    #[cfg(feature = "v1_18_3")]
6683    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6684    pub fn gst_query_copy(q: *const GstQuery) -> *mut GstQuery;
6685    pub fn gst_query_find_allocation_meta(
6686        query: *mut GstQuery,
6687        api: GType,
6688        index: *mut c_uint,
6689    ) -> gboolean;
6690    pub fn gst_query_get_n_allocation_metas(query: *mut GstQuery) -> c_uint;
6691    pub fn gst_query_get_n_allocation_params(query: *mut GstQuery) -> c_uint;
6692    pub fn gst_query_get_n_allocation_pools(query: *mut GstQuery) -> c_uint;
6693    pub fn gst_query_get_n_buffering_ranges(query: *mut GstQuery) -> c_uint;
6694    pub fn gst_query_get_n_scheduling_modes(query: *mut GstQuery) -> c_uint;
6695    pub fn gst_query_get_structure(query: *mut GstQuery) -> *const GstStructure;
6696    pub fn gst_query_has_scheduling_mode(query: *mut GstQuery, mode: GstPadMode) -> gboolean;
6697    pub fn gst_query_has_scheduling_mode_with_flags(
6698        query: *mut GstQuery,
6699        mode: GstPadMode,
6700        flags: GstSchedulingFlags,
6701    ) -> gboolean;
6702    pub fn gst_query_is_writable(query: *const GstQuery) -> gboolean;
6703    pub fn gst_query_make_writable(query: *mut GstQuery) -> *mut GstQuery;
6704    pub fn gst_query_parse_accept_caps(query: *mut GstQuery, caps: *mut *mut GstCaps);
6705    pub fn gst_query_parse_accept_caps_result(query: *mut GstQuery, result: *mut gboolean);
6706    pub fn gst_query_parse_allocation(
6707        query: *mut GstQuery,
6708        caps: *mut *mut GstCaps,
6709        need_pool: *mut gboolean,
6710    );
6711    #[cfg(feature = "v1_16")]
6712    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6713    pub fn gst_query_parse_bitrate(query: *mut GstQuery, nominal_bitrate: *mut c_uint);
6714    pub fn gst_query_parse_buffering_percent(
6715        query: *mut GstQuery,
6716        busy: *mut gboolean,
6717        percent: *mut c_int,
6718    );
6719    pub fn gst_query_parse_buffering_range(
6720        query: *mut GstQuery,
6721        format: *mut GstFormat,
6722        start: *mut i64,
6723        stop: *mut i64,
6724        estimated_total: *mut i64,
6725    );
6726    pub fn gst_query_parse_buffering_stats(
6727        query: *mut GstQuery,
6728        mode: *mut GstBufferingMode,
6729        avg_in: *mut c_int,
6730        avg_out: *mut c_int,
6731        buffering_left: *mut i64,
6732    );
6733    pub fn gst_query_parse_caps(query: *mut GstQuery, filter: *mut *mut GstCaps);
6734    pub fn gst_query_parse_caps_result(query: *mut GstQuery, caps: *mut *mut GstCaps);
6735    pub fn gst_query_parse_context(query: *mut GstQuery, context: *mut *mut GstContext);
6736    pub fn gst_query_parse_context_type(
6737        query: *mut GstQuery,
6738        context_type: *mut *const c_char,
6739    ) -> gboolean;
6740    pub fn gst_query_parse_convert(
6741        query: *mut GstQuery,
6742        src_format: *mut GstFormat,
6743        src_value: *mut i64,
6744        dest_format: *mut GstFormat,
6745        dest_value: *mut i64,
6746    );
6747    pub fn gst_query_parse_duration(
6748        query: *mut GstQuery,
6749        format: *mut GstFormat,
6750        duration: *mut i64,
6751    );
6752    pub fn gst_query_parse_latency(
6753        query: *mut GstQuery,
6754        live: *mut gboolean,
6755        min_latency: *mut GstClockTime,
6756        max_latency: *mut GstClockTime,
6757    );
6758    pub fn gst_query_parse_n_formats(query: *mut GstQuery, n_formats: *mut c_uint);
6759    pub fn gst_query_parse_nth_allocation_meta(
6760        query: *mut GstQuery,
6761        index: c_uint,
6762        params: *mut *const GstStructure,
6763    ) -> GType;
6764    pub fn gst_query_parse_nth_allocation_param(
6765        query: *mut GstQuery,
6766        index: c_uint,
6767        allocator: *mut *mut GstAllocator,
6768        params: *mut GstAllocationParams,
6769    );
6770    pub fn gst_query_parse_nth_allocation_pool(
6771        query: *mut GstQuery,
6772        index: c_uint,
6773        pool: *mut *mut GstBufferPool,
6774        size: *mut c_uint,
6775        min_buffers: *mut c_uint,
6776        max_buffers: *mut c_uint,
6777    );
6778    pub fn gst_query_parse_nth_buffering_range(
6779        query: *mut GstQuery,
6780        index: c_uint,
6781        start: *mut i64,
6782        stop: *mut i64,
6783    ) -> gboolean;
6784    pub fn gst_query_parse_nth_format(query: *mut GstQuery, nth: c_uint, format: *mut GstFormat);
6785    pub fn gst_query_parse_nth_scheduling_mode(query: *mut GstQuery, index: c_uint) -> GstPadMode;
6786    pub fn gst_query_parse_position(query: *mut GstQuery, format: *mut GstFormat, cur: *mut i64);
6787    pub fn gst_query_parse_scheduling(
6788        query: *mut GstQuery,
6789        flags: *mut GstSchedulingFlags,
6790        minsize: *mut c_int,
6791        maxsize: *mut c_int,
6792        align: *mut c_int,
6793    );
6794    pub fn gst_query_parse_seeking(
6795        query: *mut GstQuery,
6796        format: *mut GstFormat,
6797        seekable: *mut gboolean,
6798        segment_start: *mut i64,
6799        segment_end: *mut i64,
6800    );
6801    pub fn gst_query_parse_segment(
6802        query: *mut GstQuery,
6803        rate: *mut c_double,
6804        format: *mut GstFormat,
6805        start_value: *mut i64,
6806        stop_value: *mut i64,
6807    );
6808    #[cfg(feature = "v1_22")]
6809    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6810    pub fn gst_query_parse_selectable(query: *mut GstQuery, selectable: *mut gboolean);
6811    pub fn gst_query_parse_uri(query: *mut GstQuery, uri: *mut *mut c_char);
6812    pub fn gst_query_parse_uri_redirection(query: *mut GstQuery, uri: *mut *mut c_char);
6813    pub fn gst_query_parse_uri_redirection_permanent(
6814        query: *mut GstQuery,
6815        permanent: *mut gboolean,
6816    );
6817    #[cfg(feature = "v1_18_3")]
6818    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6819    pub fn gst_query_ref(q: *mut GstQuery) -> *mut GstQuery;
6820    pub fn gst_query_remove_nth_allocation_meta(query: *mut GstQuery, index: c_uint);
6821    pub fn gst_query_remove_nth_allocation_param(query: *mut GstQuery, index: c_uint);
6822    pub fn gst_query_remove_nth_allocation_pool(query: *mut GstQuery, index: c_uint);
6823    pub fn gst_query_set_accept_caps_result(query: *mut GstQuery, result: gboolean);
6824    #[cfg(feature = "v1_16")]
6825    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6826    pub fn gst_query_set_bitrate(query: *mut GstQuery, nominal_bitrate: c_uint);
6827    pub fn gst_query_set_buffering_percent(query: *mut GstQuery, busy: gboolean, percent: c_int);
6828    pub fn gst_query_set_buffering_range(
6829        query: *mut GstQuery,
6830        format: GstFormat,
6831        start: i64,
6832        stop: i64,
6833        estimated_total: i64,
6834    );
6835    pub fn gst_query_set_buffering_stats(
6836        query: *mut GstQuery,
6837        mode: GstBufferingMode,
6838        avg_in: c_int,
6839        avg_out: c_int,
6840        buffering_left: i64,
6841    );
6842    pub fn gst_query_set_caps_result(query: *mut GstQuery, caps: *mut GstCaps);
6843    pub fn gst_query_set_context(query: *mut GstQuery, context: *mut GstContext);
6844    pub fn gst_query_set_convert(
6845        query: *mut GstQuery,
6846        src_format: GstFormat,
6847        src_value: i64,
6848        dest_format: GstFormat,
6849        dest_value: i64,
6850    );
6851    pub fn gst_query_set_duration(query: *mut GstQuery, format: GstFormat, duration: i64);
6852    pub fn gst_query_set_formats(query: *mut GstQuery, n_formats: c_int, ...);
6853    pub fn gst_query_set_formatsv(
6854        query: *mut GstQuery,
6855        n_formats: c_int,
6856        formats: *const GstFormat,
6857    );
6858    pub fn gst_query_set_latency(
6859        query: *mut GstQuery,
6860        live: gboolean,
6861        min_latency: GstClockTime,
6862        max_latency: GstClockTime,
6863    );
6864    pub fn gst_query_set_nth_allocation_param(
6865        query: *mut GstQuery,
6866        index: c_uint,
6867        allocator: *mut GstAllocator,
6868        params: *const GstAllocationParams,
6869    );
6870    pub fn gst_query_set_nth_allocation_pool(
6871        query: *mut GstQuery,
6872        index: c_uint,
6873        pool: *mut GstBufferPool,
6874        size: c_uint,
6875        min_buffers: c_uint,
6876        max_buffers: c_uint,
6877    );
6878    pub fn gst_query_set_position(query: *mut GstQuery, format: GstFormat, cur: i64);
6879    pub fn gst_query_set_scheduling(
6880        query: *mut GstQuery,
6881        flags: GstSchedulingFlags,
6882        minsize: c_int,
6883        maxsize: c_int,
6884        align: c_int,
6885    );
6886    pub fn gst_query_set_seeking(
6887        query: *mut GstQuery,
6888        format: GstFormat,
6889        seekable: gboolean,
6890        segment_start: i64,
6891        segment_end: i64,
6892    );
6893    pub fn gst_query_set_segment(
6894        query: *mut GstQuery,
6895        rate: c_double,
6896        format: GstFormat,
6897        start_value: i64,
6898        stop_value: i64,
6899    );
6900    #[cfg(feature = "v1_22")]
6901    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
6902    pub fn gst_query_set_selectable(query: *mut GstQuery, selectable: gboolean);
6903    pub fn gst_query_set_uri(query: *mut GstQuery, uri: *const c_char);
6904    pub fn gst_query_set_uri_redirection(query: *mut GstQuery, uri: *const c_char);
6905    pub fn gst_query_set_uri_redirection_permanent(query: *mut GstQuery, permanent: gboolean);
6906    #[cfg(feature = "v1_18_3")]
6907    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6908    pub fn gst_query_unref(q: *mut GstQuery);
6909    pub fn gst_query_writable_structure(query: *mut GstQuery) -> *mut GstStructure;
6910    #[cfg(feature = "v1_18_3")]
6911    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6912    pub fn gst_query_replace(old_query: *mut *mut GstQuery, new_query: *mut GstQuery) -> gboolean;
6913    #[cfg(feature = "v1_28")]
6914    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
6915    pub fn gst_query_steal(old_query: *mut *mut GstQuery) -> *mut GstQuery;
6916    #[cfg(feature = "v1_18_3")]
6917    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6918    pub fn gst_query_take(old_query: *mut *mut GstQuery, new_query: *mut GstQuery) -> gboolean;
6919
6920    //=========================================================================
6921    // GstReferenceTimestampMeta
6922    //=========================================================================
6923    pub fn gst_reference_timestamp_meta_get_info() -> *const GstMetaInfo;
6924
6925    //=========================================================================
6926    // GstSample
6927    //=========================================================================
6928    pub fn gst_sample_get_type() -> GType;
6929    pub fn gst_sample_new(
6930        buffer: *mut GstBuffer,
6931        caps: *mut GstCaps,
6932        segment: *const GstSegment,
6933        info: *mut GstStructure,
6934    ) -> *mut GstSample;
6935    #[cfg(feature = "v1_18_3")]
6936    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6937    pub fn gst_sample_copy(sample: *const GstSample) -> *mut GstSample;
6938    pub fn gst_sample_get_buffer(sample: *mut GstSample) -> *mut GstBuffer;
6939    pub fn gst_sample_get_buffer_list(sample: *mut GstSample) -> *mut GstBufferList;
6940    pub fn gst_sample_get_caps(sample: *mut GstSample) -> *mut GstCaps;
6941    pub fn gst_sample_get_info(sample: *mut GstSample) -> *const GstStructure;
6942    pub fn gst_sample_get_segment(sample: *mut GstSample) -> *mut GstSegment;
6943    #[cfg(feature = "v1_16")]
6944    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6945    pub fn gst_sample_is_writable(sample: *const GstSample) -> gboolean;
6946    #[cfg(feature = "v1_16")]
6947    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6948    pub fn gst_sample_make_writable(sample: *mut GstSample) -> *mut GstSample;
6949    #[cfg(feature = "v1_18_3")]
6950    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6951    pub fn gst_sample_ref(sample: *mut GstSample) -> *mut GstSample;
6952    #[cfg(feature = "v1_16")]
6953    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6954    pub fn gst_sample_set_buffer(sample: *mut GstSample, buffer: *mut GstBuffer);
6955    pub fn gst_sample_set_buffer_list(sample: *mut GstSample, buffer_list: *mut GstBufferList);
6956    #[cfg(feature = "v1_16")]
6957    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6958    pub fn gst_sample_set_caps(sample: *mut GstSample, caps: *mut GstCaps);
6959    #[cfg(feature = "v1_16")]
6960    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6961    pub fn gst_sample_set_info(sample: *mut GstSample, info: *mut GstStructure) -> gboolean;
6962    #[cfg(feature = "v1_16")]
6963    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
6964    pub fn gst_sample_set_segment(sample: *mut GstSample, segment: *const GstSegment);
6965    #[cfg(feature = "v1_18_3")]
6966    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
6967    pub fn gst_sample_unref(sample: *mut GstSample);
6968
6969    //=========================================================================
6970    // GstSegment
6971    //=========================================================================
6972    pub fn gst_segment_get_type() -> GType;
6973    pub fn gst_segment_new() -> *mut GstSegment;
6974    pub fn gst_segment_clip(
6975        segment: *const GstSegment,
6976        format: GstFormat,
6977        start: u64,
6978        stop: u64,
6979        clip_start: *mut u64,
6980        clip_stop: *mut u64,
6981    ) -> gboolean;
6982    pub fn gst_segment_copy(segment: *const GstSegment) -> *mut GstSegment;
6983    pub fn gst_segment_copy_into(src: *const GstSegment, dest: *mut GstSegment);
6984    pub fn gst_segment_do_seek(
6985        segment: *mut GstSegment,
6986        rate: c_double,
6987        format: GstFormat,
6988        flags: GstSeekFlags,
6989        start_type: GstSeekType,
6990        start: u64,
6991        stop_type: GstSeekType,
6992        stop: u64,
6993        update: *mut gboolean,
6994    ) -> gboolean;
6995    pub fn gst_segment_free(segment: *mut GstSegment);
6996    pub fn gst_segment_init(segment: *mut GstSegment, format: GstFormat);
6997    pub fn gst_segment_is_equal(s0: *const GstSegment, s1: *const GstSegment) -> gboolean;
6998    pub fn gst_segment_offset_running_time(
6999        segment: *mut GstSegment,
7000        format: GstFormat,
7001        offset: i64,
7002    ) -> gboolean;
7003    pub fn gst_segment_position_from_running_time(
7004        segment: *const GstSegment,
7005        format: GstFormat,
7006        running_time: u64,
7007    ) -> u64;
7008    pub fn gst_segment_position_from_running_time_full(
7009        segment: *const GstSegment,
7010        format: GstFormat,
7011        running_time: u64,
7012        position: *mut u64,
7013    ) -> c_int;
7014    pub fn gst_segment_position_from_stream_time(
7015        segment: *const GstSegment,
7016        format: GstFormat,
7017        stream_time: u64,
7018    ) -> u64;
7019    pub fn gst_segment_position_from_stream_time_full(
7020        segment: *const GstSegment,
7021        format: GstFormat,
7022        stream_time: u64,
7023        position: *mut u64,
7024    ) -> c_int;
7025    pub fn gst_segment_set_running_time(
7026        segment: *mut GstSegment,
7027        format: GstFormat,
7028        running_time: u64,
7029    ) -> gboolean;
7030    pub fn gst_segment_to_position(
7031        segment: *const GstSegment,
7032        format: GstFormat,
7033        running_time: u64,
7034    ) -> u64;
7035    pub fn gst_segment_to_running_time(
7036        segment: *const GstSegment,
7037        format: GstFormat,
7038        position: u64,
7039    ) -> u64;
7040    pub fn gst_segment_to_running_time_full(
7041        segment: *const GstSegment,
7042        format: GstFormat,
7043        position: u64,
7044        running_time: *mut u64,
7045    ) -> c_int;
7046    pub fn gst_segment_to_stream_time(
7047        segment: *const GstSegment,
7048        format: GstFormat,
7049        position: u64,
7050    ) -> u64;
7051    pub fn gst_segment_to_stream_time_full(
7052        segment: *const GstSegment,
7053        format: GstFormat,
7054        position: u64,
7055        stream_time: *mut u64,
7056    ) -> c_int;
7057
7058    //=========================================================================
7059    // GstStaticCaps
7060    //=========================================================================
7061    pub fn gst_static_caps_get_type() -> GType;
7062    pub fn gst_static_caps_cleanup(static_caps: *mut GstStaticCaps);
7063    pub fn gst_static_caps_get(static_caps: *mut GstStaticCaps) -> *mut GstCaps;
7064
7065    //=========================================================================
7066    // GstStaticPadTemplate
7067    //=========================================================================
7068    pub fn gst_static_pad_template_get_type() -> GType;
7069    pub fn gst_static_pad_template_get(
7070        pad_template: *mut GstStaticPadTemplate,
7071    ) -> *mut GstPadTemplate;
7072    pub fn gst_static_pad_template_get_caps(templ: *mut GstStaticPadTemplate) -> *mut GstCaps;
7073
7074    //=========================================================================
7075    // GstStructure
7076    //=========================================================================
7077    pub fn gst_structure_get_type() -> GType;
7078    pub fn gst_structure_from_string(
7079        string: *const c_char,
7080        end: *mut *mut c_char,
7081    ) -> *mut GstStructure;
7082    pub fn gst_structure_new(
7083        name: *const c_char,
7084        firstfield: *const c_char,
7085        ...
7086    ) -> *mut GstStructure;
7087    pub fn gst_structure_new_empty(name: *const c_char) -> *mut GstStructure;
7088    pub fn gst_structure_new_from_string(string: *const c_char) -> *mut GstStructure;
7089    pub fn gst_structure_new_id(
7090        name_quark: glib::GQuark,
7091        field_quark: glib::GQuark,
7092        ...
7093    ) -> *mut GstStructure;
7094    pub fn gst_structure_new_id_empty(quark: glib::GQuark) -> *mut GstStructure;
7095    #[cfg(feature = "v1_26")]
7096    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7097    pub fn gst_structure_new_id_str(
7098        name: *const GstIdStr,
7099        fieldname: *const GstIdStr,
7100        ...
7101    ) -> *mut GstStructure;
7102    #[cfg(feature = "v1_26")]
7103    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7104    pub fn gst_structure_new_id_str_empty(name: *const GstIdStr) -> *mut GstStructure;
7105    //#[cfg(feature = "v1_26")]
7106    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7107    //pub fn gst_structure_new_id_str_valist(name: *const GstIdStr, firstfield: *const GstIdStr, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
7108    #[cfg(feature = "v1_26")]
7109    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7110    pub fn gst_structure_new_static_str(
7111        name: *const c_char,
7112        firstfield: *const c_char,
7113        ...
7114    ) -> *mut GstStructure;
7115    #[cfg(feature = "v1_26")]
7116    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7117    pub fn gst_structure_new_static_str_empty(name: *const c_char) -> *mut GstStructure;
7118    //#[cfg(feature = "v1_26")]
7119    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7120    //pub fn gst_structure_new_static_str_valist(name: *const c_char, firstfield: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
7121    //pub fn gst_structure_new_valist(name: *const c_char, firstfield: *const c_char, varargs: /*Unimplemented*/va_list) -> *mut GstStructure;
7122    pub fn gst_structure_can_intersect(
7123        struct1: *const GstStructure,
7124        struct2: *const GstStructure,
7125    ) -> gboolean;
7126    pub fn gst_structure_copy(structure: *const GstStructure) -> *mut GstStructure;
7127    pub fn gst_structure_filter_and_map_in_place(
7128        structure: *mut GstStructure,
7129        func: GstStructureFilterMapFunc,
7130        user_data: gpointer,
7131    );
7132    #[cfg(feature = "v1_26")]
7133    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7134    pub fn gst_structure_filter_and_map_in_place_id_str(
7135        structure: *mut GstStructure,
7136        func: GstStructureFilterMapIdStrFunc,
7137        user_data: gpointer,
7138    );
7139    pub fn gst_structure_fixate(structure: *mut GstStructure);
7140    pub fn gst_structure_fixate_field(
7141        structure: *mut GstStructure,
7142        field_name: *const c_char,
7143    ) -> gboolean;
7144    pub fn gst_structure_fixate_field_boolean(
7145        structure: *mut GstStructure,
7146        field_name: *const c_char,
7147        target: gboolean,
7148    ) -> gboolean;
7149    pub fn gst_structure_fixate_field_nearest_double(
7150        structure: *mut GstStructure,
7151        field_name: *const c_char,
7152        target: c_double,
7153    ) -> gboolean;
7154    pub fn gst_structure_fixate_field_nearest_fraction(
7155        structure: *mut GstStructure,
7156        field_name: *const c_char,
7157        target_numerator: c_int,
7158        target_denominator: c_int,
7159    ) -> gboolean;
7160    pub fn gst_structure_fixate_field_nearest_int(
7161        structure: *mut GstStructure,
7162        field_name: *const c_char,
7163        target: c_int,
7164    ) -> gboolean;
7165    pub fn gst_structure_fixate_field_string(
7166        structure: *mut GstStructure,
7167        field_name: *const c_char,
7168        target: *const c_char,
7169    ) -> gboolean;
7170    pub fn gst_structure_foreach(
7171        structure: *const GstStructure,
7172        func: GstStructureForeachFunc,
7173        user_data: gpointer,
7174    ) -> gboolean;
7175    #[cfg(feature = "v1_26")]
7176    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7177    pub fn gst_structure_foreach_id_str(
7178        structure: *const GstStructure,
7179        func: GstStructureForeachIdStrFunc,
7180        user_data: gpointer,
7181    ) -> gboolean;
7182    pub fn gst_structure_free(structure: *mut GstStructure);
7183    pub fn gst_structure_get(
7184        structure: *const GstStructure,
7185        first_fieldname: *const c_char,
7186        ...
7187    ) -> gboolean;
7188    pub fn gst_structure_get_array(
7189        structure: *mut GstStructure,
7190        fieldname: *const c_char,
7191        array: *mut *mut gobject::GValueArray,
7192    ) -> gboolean;
7193    pub fn gst_structure_get_boolean(
7194        structure: *const GstStructure,
7195        fieldname: *const c_char,
7196        value: *mut gboolean,
7197    ) -> gboolean;
7198    #[cfg(feature = "v1_28")]
7199    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
7200    pub fn gst_structure_get_caps(
7201        structure: *const GstStructure,
7202        fieldname: *const c_char,
7203        caps: *mut *const GstCaps,
7204    ) -> gboolean;
7205    pub fn gst_structure_get_clock_time(
7206        structure: *const GstStructure,
7207        fieldname: *const c_char,
7208        value: *mut GstClockTime,
7209    ) -> gboolean;
7210    pub fn gst_structure_get_date(
7211        structure: *const GstStructure,
7212        fieldname: *const c_char,
7213        value: *mut *mut glib::GDate,
7214    ) -> gboolean;
7215    pub fn gst_structure_get_date_time(
7216        structure: *const GstStructure,
7217        fieldname: *const c_char,
7218        value: *mut *mut GstDateTime,
7219    ) -> gboolean;
7220    pub fn gst_structure_get_double(
7221        structure: *const GstStructure,
7222        fieldname: *const c_char,
7223        value: *mut c_double,
7224    ) -> gboolean;
7225    pub fn gst_structure_get_enum(
7226        structure: *const GstStructure,
7227        fieldname: *const c_char,
7228        enumtype: GType,
7229        value: *mut c_int,
7230    ) -> gboolean;
7231    pub fn gst_structure_get_field_type(
7232        structure: *const GstStructure,
7233        fieldname: *const c_char,
7234    ) -> GType;
7235    #[cfg(feature = "v1_22")]
7236    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
7237    pub fn gst_structure_get_flags(
7238        structure: *const GstStructure,
7239        fieldname: *const c_char,
7240        flags_type: GType,
7241        value: *mut c_uint,
7242    ) -> gboolean;
7243    pub fn gst_structure_get_flagset(
7244        structure: *const GstStructure,
7245        fieldname: *const c_char,
7246        value_flags: *mut c_uint,
7247        value_mask: *mut c_uint,
7248    ) -> gboolean;
7249    pub fn gst_structure_get_fraction(
7250        structure: *const GstStructure,
7251        fieldname: *const c_char,
7252        value_numerator: *mut c_int,
7253        value_denominator: *mut c_int,
7254    ) -> gboolean;
7255    pub fn gst_structure_get_int(
7256        structure: *const GstStructure,
7257        fieldname: *const c_char,
7258        value: *mut c_int,
7259    ) -> gboolean;
7260    pub fn gst_structure_get_int64(
7261        structure: *const GstStructure,
7262        fieldname: *const c_char,
7263        value: *mut i64,
7264    ) -> gboolean;
7265    pub fn gst_structure_get_list(
7266        structure: *mut GstStructure,
7267        fieldname: *const c_char,
7268        array: *mut *mut gobject::GValueArray,
7269    ) -> gboolean;
7270    pub fn gst_structure_get_name(structure: *const GstStructure) -> *const c_char;
7271    pub fn gst_structure_get_name_id(structure: *const GstStructure) -> glib::GQuark;
7272    #[cfg(feature = "v1_26")]
7273    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7274    pub fn gst_structure_get_name_id_str(structure: *const GstStructure) -> *const GstIdStr;
7275    pub fn gst_structure_get_string(
7276        structure: *const GstStructure,
7277        fieldname: *const c_char,
7278    ) -> *const c_char;
7279    pub fn gst_structure_get_uint(
7280        structure: *const GstStructure,
7281        fieldname: *const c_char,
7282        value: *mut c_uint,
7283    ) -> gboolean;
7284    pub fn gst_structure_get_uint64(
7285        structure: *const GstStructure,
7286        fieldname: *const c_char,
7287        value: *mut u64,
7288    ) -> gboolean;
7289    //pub fn gst_structure_get_valist(structure: *const GstStructure, first_fieldname: *const c_char, args: /*Unimplemented*/va_list) -> gboolean;
7290    pub fn gst_structure_get_value(
7291        structure: *const GstStructure,
7292        fieldname: *const c_char,
7293    ) -> *const gobject::GValue;
7294    pub fn gst_structure_has_field(
7295        structure: *const GstStructure,
7296        fieldname: *const c_char,
7297    ) -> gboolean;
7298    pub fn gst_structure_has_field_typed(
7299        structure: *const GstStructure,
7300        fieldname: *const c_char,
7301        type_: GType,
7302    ) -> gboolean;
7303    pub fn gst_structure_has_name(structure: *const GstStructure, name: *const c_char) -> gboolean;
7304    pub fn gst_structure_id_get(
7305        structure: *const GstStructure,
7306        first_field_id: glib::GQuark,
7307        ...
7308    ) -> gboolean;
7309    //pub fn gst_structure_id_get_valist(structure: *const GstStructure, first_field_id: glib::GQuark, args: /*Unimplemented*/va_list) -> gboolean;
7310    pub fn gst_structure_id_get_value(
7311        structure: *const GstStructure,
7312        field: glib::GQuark,
7313    ) -> *const gobject::GValue;
7314    pub fn gst_structure_id_has_field(
7315        structure: *const GstStructure,
7316        field: glib::GQuark,
7317    ) -> gboolean;
7318    pub fn gst_structure_id_has_field_typed(
7319        structure: *const GstStructure,
7320        field: glib::GQuark,
7321        type_: GType,
7322    ) -> gboolean;
7323    pub fn gst_structure_id_set(structure: *mut GstStructure, fieldname: glib::GQuark, ...);
7324    //pub fn gst_structure_id_set_valist(structure: *mut GstStructure, fieldname: glib::GQuark, varargs: /*Unimplemented*/va_list);
7325    pub fn gst_structure_id_set_value(
7326        structure: *mut GstStructure,
7327        field: glib::GQuark,
7328        value: *const gobject::GValue,
7329    );
7330    #[cfg(feature = "v1_26")]
7331    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7332    pub fn gst_structure_id_str_get(
7333        structure: *const GstStructure,
7334        first_fieldname: *const GstIdStr,
7335        ...
7336    ) -> gboolean;
7337    #[cfg(feature = "v1_26")]
7338    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7339    pub fn gst_structure_id_str_get_field_type(
7340        structure: *const GstStructure,
7341        fieldname: *const GstIdStr,
7342    ) -> GType;
7343    //#[cfg(feature = "v1_26")]
7344    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7345    //pub fn gst_structure_id_str_get_valist(structure: *const GstStructure, first_fieldname: *const GstIdStr, args: /*Unimplemented*/va_list) -> gboolean;
7346    #[cfg(feature = "v1_26")]
7347    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7348    pub fn gst_structure_id_str_get_value(
7349        structure: *const GstStructure,
7350        fieldname: *const GstIdStr,
7351    ) -> *const gobject::GValue;
7352    #[cfg(feature = "v1_26")]
7353    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7354    pub fn gst_structure_id_str_has_field(
7355        structure: *const GstStructure,
7356        fieldname: *const GstIdStr,
7357    ) -> gboolean;
7358    #[cfg(feature = "v1_26")]
7359    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7360    pub fn gst_structure_id_str_has_field_typed(
7361        structure: *const GstStructure,
7362        fieldname: *const GstIdStr,
7363        type_: GType,
7364    ) -> gboolean;
7365    #[cfg(feature = "v1_26")]
7366    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7367    pub fn gst_structure_id_str_nth_field_name(
7368        structure: *const GstStructure,
7369        index: c_uint,
7370    ) -> *const GstIdStr;
7371    #[cfg(feature = "v1_26")]
7372    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7373    pub fn gst_structure_id_str_remove_field(
7374        structure: *mut GstStructure,
7375        fieldname: *const GstIdStr,
7376    );
7377    #[cfg(feature = "v1_26")]
7378    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7379    pub fn gst_structure_id_str_remove_fields(
7380        structure: *mut GstStructure,
7381        fieldname: *const GstIdStr,
7382        ...
7383    );
7384    //#[cfg(feature = "v1_26")]
7385    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7386    //pub fn gst_structure_id_str_remove_fields_valist(structure: *mut GstStructure, fieldname: *const GstIdStr, varargs: /*Unimplemented*/va_list);
7387    #[cfg(feature = "v1_26")]
7388    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7389    pub fn gst_structure_id_str_set(structure: *mut GstStructure, fieldname: *const GstIdStr, ...);
7390    //#[cfg(feature = "v1_26")]
7391    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7392    //pub fn gst_structure_id_str_set_valist(structure: *mut GstStructure, fieldname: *const GstIdStr, varargs: /*Unimplemented*/va_list);
7393    #[cfg(feature = "v1_26")]
7394    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7395    pub fn gst_structure_id_str_set_value(
7396        structure: *mut GstStructure,
7397        fieldname: *const GstIdStr,
7398        value: *const gobject::GValue,
7399    );
7400    #[cfg(feature = "v1_26")]
7401    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7402    pub fn gst_structure_id_str_take_value(
7403        structure: *mut GstStructure,
7404        fieldname: *const GstIdStr,
7405        value: *mut gobject::GValue,
7406    );
7407    pub fn gst_structure_id_take_value(
7408        structure: *mut GstStructure,
7409        field: glib::GQuark,
7410        value: *mut gobject::GValue,
7411    );
7412    pub fn gst_structure_intersect(
7413        struct1: *const GstStructure,
7414        struct2: *const GstStructure,
7415    ) -> *mut GstStructure;
7416    pub fn gst_structure_is_equal(
7417        structure1: *const GstStructure,
7418        structure2: *const GstStructure,
7419    ) -> gboolean;
7420    pub fn gst_structure_is_subset(
7421        subset: *const GstStructure,
7422        superset: *const GstStructure,
7423    ) -> gboolean;
7424    #[cfg(feature = "v1_28")]
7425    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
7426    pub fn gst_structure_is_writable(structure: *const GstStructure) -> gboolean;
7427    pub fn gst_structure_map_in_place(
7428        structure: *mut GstStructure,
7429        func: GstStructureMapFunc,
7430        user_data: gpointer,
7431    ) -> gboolean;
7432    #[cfg(feature = "v1_26")]
7433    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7434    pub fn gst_structure_map_in_place_id_str(
7435        structure: *mut GstStructure,
7436        func: GstStructureMapIdStrFunc,
7437        user_data: gpointer,
7438    ) -> gboolean;
7439    pub fn gst_structure_n_fields(structure: *const GstStructure) -> c_int;
7440    pub fn gst_structure_nth_field_name(
7441        structure: *const GstStructure,
7442        index: c_uint,
7443    ) -> *const c_char;
7444    pub fn gst_structure_remove_all_fields(structure: *mut GstStructure);
7445    pub fn gst_structure_remove_field(structure: *mut GstStructure, fieldname: *const c_char);
7446    pub fn gst_structure_remove_fields(structure: *mut GstStructure, fieldname: *const c_char, ...);
7447    //pub fn gst_structure_remove_fields_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7448    #[cfg(feature = "v1_20")]
7449    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
7450    pub fn gst_structure_serialize(
7451        structure: *const GstStructure,
7452        flags: GstSerializeFlags,
7453    ) -> *mut c_char;
7454    #[cfg(feature = "v1_24")]
7455    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7456    pub fn gst_structure_serialize_full(
7457        structure: *const GstStructure,
7458        flags: GstSerializeFlags,
7459    ) -> *mut c_char;
7460    pub fn gst_structure_set(structure: *mut GstStructure, fieldname: *const c_char, ...);
7461    pub fn gst_structure_set_array(
7462        structure: *mut GstStructure,
7463        fieldname: *const c_char,
7464        array: *const gobject::GValueArray,
7465    );
7466    pub fn gst_structure_set_list(
7467        structure: *mut GstStructure,
7468        fieldname: *const c_char,
7469        array: *const gobject::GValueArray,
7470    );
7471    pub fn gst_structure_set_name(structure: *mut GstStructure, name: *const c_char);
7472    #[cfg(feature = "v1_26")]
7473    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7474    pub fn gst_structure_set_name_id_str(structure: *mut GstStructure, name: *const GstIdStr);
7475    #[cfg(feature = "v1_26")]
7476    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7477    pub fn gst_structure_set_name_static_str(structure: *mut GstStructure, name: *const c_char);
7478    pub fn gst_structure_set_parent_refcount(
7479        structure: *mut GstStructure,
7480        refcount: *mut c_int,
7481    ) -> gboolean;
7482    #[cfg(feature = "v1_26")]
7483    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7484    pub fn gst_structure_set_static_str(
7485        structure: *mut GstStructure,
7486        fieldname: *const c_char,
7487        ...
7488    );
7489    //#[cfg(feature = "v1_26")]
7490    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7491    //pub fn gst_structure_set_static_str_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7492    //pub fn gst_structure_set_valist(structure: *mut GstStructure, fieldname: *const c_char, varargs: /*Unimplemented*/va_list);
7493    pub fn gst_structure_set_value(
7494        structure: *mut GstStructure,
7495        fieldname: *const c_char,
7496        value: *const gobject::GValue,
7497    );
7498    #[cfg(feature = "v1_26")]
7499    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7500    pub fn gst_structure_set_value_static_str(
7501        structure: *mut GstStructure,
7502        fieldname: *const c_char,
7503        value: *const gobject::GValue,
7504    );
7505    pub fn gst_structure_take_value(
7506        structure: *mut GstStructure,
7507        fieldname: *const c_char,
7508        value: *mut gobject::GValue,
7509    );
7510    #[cfg(feature = "v1_26")]
7511    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7512    pub fn gst_structure_take_value_static_str(
7513        structure: *mut GstStructure,
7514        fieldname: *const c_char,
7515        value: *mut gobject::GValue,
7516    );
7517    pub fn gst_structure_to_string(structure: *const GstStructure) -> *mut c_char;
7518    #[cfg(feature = "v1_18")]
7519    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
7520    pub fn gst_structure_take(
7521        oldstr_ptr: *mut *mut GstStructure,
7522        newstr: *mut GstStructure,
7523    ) -> gboolean;
7524
7525    //=========================================================================
7526    // GstTagList
7527    //=========================================================================
7528    pub fn gst_tag_list_get_type() -> GType;
7529    pub fn gst_tag_list_new(tag: *const c_char, ...) -> *mut GstTagList;
7530    pub fn gst_tag_list_new_empty() -> *mut GstTagList;
7531    pub fn gst_tag_list_new_from_string(str: *const c_char) -> *mut GstTagList;
7532    //pub fn gst_tag_list_new_valist(var_args: /*Unimplemented*/va_list) -> *mut GstTagList;
7533    pub fn gst_tag_list_add(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, ...);
7534    //pub fn gst_tag_list_add_valist(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
7535    //pub fn gst_tag_list_add_valist_values(list: *mut GstTagList, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
7536    pub fn gst_tag_list_add_value(
7537        list: *mut GstTagList,
7538        mode: GstTagMergeMode,
7539        tag: *const c_char,
7540        value: *const gobject::GValue,
7541    );
7542    pub fn gst_tag_list_add_values(
7543        list: *mut GstTagList,
7544        mode: GstTagMergeMode,
7545        tag: *const c_char,
7546        ...
7547    );
7548    #[cfg(feature = "v1_18_3")]
7549    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7550    pub fn gst_tag_list_copy(taglist: *const GstTagList) -> *mut GstTagList;
7551    pub fn gst_tag_list_foreach(
7552        list: *const GstTagList,
7553        func: GstTagForeachFunc,
7554        user_data: gpointer,
7555    );
7556    pub fn gst_tag_list_get_boolean(
7557        list: *const GstTagList,
7558        tag: *const c_char,
7559        value: *mut gboolean,
7560    ) -> gboolean;
7561    pub fn gst_tag_list_get_boolean_index(
7562        list: *const GstTagList,
7563        tag: *const c_char,
7564        index: c_uint,
7565        value: *mut gboolean,
7566    ) -> gboolean;
7567    pub fn gst_tag_list_get_date(
7568        list: *const GstTagList,
7569        tag: *const c_char,
7570        value: *mut *mut glib::GDate,
7571    ) -> gboolean;
7572    pub fn gst_tag_list_get_date_index(
7573        list: *const GstTagList,
7574        tag: *const c_char,
7575        index: c_uint,
7576        value: *mut *mut glib::GDate,
7577    ) -> gboolean;
7578    pub fn gst_tag_list_get_date_time(
7579        list: *const GstTagList,
7580        tag: *const c_char,
7581        value: *mut *mut GstDateTime,
7582    ) -> gboolean;
7583    pub fn gst_tag_list_get_date_time_index(
7584        list: *const GstTagList,
7585        tag: *const c_char,
7586        index: c_uint,
7587        value: *mut *mut GstDateTime,
7588    ) -> gboolean;
7589    pub fn gst_tag_list_get_double(
7590        list: *const GstTagList,
7591        tag: *const c_char,
7592        value: *mut c_double,
7593    ) -> gboolean;
7594    pub fn gst_tag_list_get_double_index(
7595        list: *const GstTagList,
7596        tag: *const c_char,
7597        index: c_uint,
7598        value: *mut c_double,
7599    ) -> gboolean;
7600    pub fn gst_tag_list_get_float(
7601        list: *const GstTagList,
7602        tag: *const c_char,
7603        value: *mut c_float,
7604    ) -> gboolean;
7605    pub fn gst_tag_list_get_float_index(
7606        list: *const GstTagList,
7607        tag: *const c_char,
7608        index: c_uint,
7609        value: *mut c_float,
7610    ) -> gboolean;
7611    pub fn gst_tag_list_get_int(
7612        list: *const GstTagList,
7613        tag: *const c_char,
7614        value: *mut c_int,
7615    ) -> gboolean;
7616    pub fn gst_tag_list_get_int64(
7617        list: *const GstTagList,
7618        tag: *const c_char,
7619        value: *mut i64,
7620    ) -> gboolean;
7621    pub fn gst_tag_list_get_int64_index(
7622        list: *const GstTagList,
7623        tag: *const c_char,
7624        index: c_uint,
7625        value: *mut i64,
7626    ) -> gboolean;
7627    pub fn gst_tag_list_get_int_index(
7628        list: *const GstTagList,
7629        tag: *const c_char,
7630        index: c_uint,
7631        value: *mut c_int,
7632    ) -> gboolean;
7633    pub fn gst_tag_list_get_pointer(
7634        list: *const GstTagList,
7635        tag: *const c_char,
7636        value: *mut gpointer,
7637    ) -> gboolean;
7638    pub fn gst_tag_list_get_pointer_index(
7639        list: *const GstTagList,
7640        tag: *const c_char,
7641        index: c_uint,
7642        value: *mut gpointer,
7643    ) -> gboolean;
7644    pub fn gst_tag_list_get_sample(
7645        list: *const GstTagList,
7646        tag: *const c_char,
7647        sample: *mut *mut GstSample,
7648    ) -> gboolean;
7649    pub fn gst_tag_list_get_sample_index(
7650        list: *const GstTagList,
7651        tag: *const c_char,
7652        index: c_uint,
7653        sample: *mut *mut GstSample,
7654    ) -> gboolean;
7655    pub fn gst_tag_list_get_scope(list: *const GstTagList) -> GstTagScope;
7656    pub fn gst_tag_list_get_string(
7657        list: *const GstTagList,
7658        tag: *const c_char,
7659        value: *mut *mut c_char,
7660    ) -> gboolean;
7661    pub fn gst_tag_list_get_string_index(
7662        list: *const GstTagList,
7663        tag: *const c_char,
7664        index: c_uint,
7665        value: *mut *mut c_char,
7666    ) -> gboolean;
7667    pub fn gst_tag_list_get_tag_size(list: *const GstTagList, tag: *const c_char) -> c_uint;
7668    pub fn gst_tag_list_get_uint(
7669        list: *const GstTagList,
7670        tag: *const c_char,
7671        value: *mut c_uint,
7672    ) -> gboolean;
7673    pub fn gst_tag_list_get_uint64(
7674        list: *const GstTagList,
7675        tag: *const c_char,
7676        value: *mut u64,
7677    ) -> gboolean;
7678    pub fn gst_tag_list_get_uint64_index(
7679        list: *const GstTagList,
7680        tag: *const c_char,
7681        index: c_uint,
7682        value: *mut u64,
7683    ) -> gboolean;
7684    pub fn gst_tag_list_get_uint_index(
7685        list: *const GstTagList,
7686        tag: *const c_char,
7687        index: c_uint,
7688        value: *mut c_uint,
7689    ) -> gboolean;
7690    pub fn gst_tag_list_get_value_index(
7691        list: *const GstTagList,
7692        tag: *const c_char,
7693        index: c_uint,
7694    ) -> *const gobject::GValue;
7695    pub fn gst_tag_list_insert(
7696        into: *mut GstTagList,
7697        from: *const GstTagList,
7698        mode: GstTagMergeMode,
7699    );
7700    pub fn gst_tag_list_is_empty(list: *const GstTagList) -> gboolean;
7701    pub fn gst_tag_list_is_equal(list1: *const GstTagList, list2: *const GstTagList) -> gboolean;
7702    pub fn gst_tag_list_is_writable(taglist: *const GstTagList) -> gboolean;
7703    pub fn gst_tag_list_make_writable(taglist: *mut GstTagList) -> *mut GstTagList;
7704    pub fn gst_tag_list_merge(
7705        list1: *const GstTagList,
7706        list2: *const GstTagList,
7707        mode: GstTagMergeMode,
7708    ) -> *mut GstTagList;
7709    pub fn gst_tag_list_n_tags(list: *const GstTagList) -> c_int;
7710    pub fn gst_tag_list_nth_tag_name(list: *const GstTagList, index: c_uint) -> *const c_char;
7711    pub fn gst_tag_list_peek_string_index(
7712        list: *const GstTagList,
7713        tag: *const c_char,
7714        index: c_uint,
7715        value: *mut *const c_char,
7716    ) -> gboolean;
7717    #[cfg(feature = "v1_18_3")]
7718    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7719    pub fn gst_tag_list_ref(taglist: *mut GstTagList) -> *mut GstTagList;
7720    pub fn gst_tag_list_remove_tag(list: *mut GstTagList, tag: *const c_char);
7721    pub fn gst_tag_list_set_scope(list: *mut GstTagList, scope: GstTagScope);
7722    pub fn gst_tag_list_to_string(list: *const GstTagList) -> *mut c_char;
7723    #[cfg(feature = "v1_18_3")]
7724    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7725    pub fn gst_tag_list_unref(taglist: *mut GstTagList);
7726    pub fn gst_tag_list_copy_value(
7727        dest: *mut gobject::GValue,
7728        list: *const GstTagList,
7729        tag: *const c_char,
7730    ) -> gboolean;
7731    #[cfg(feature = "v1_18_3")]
7732    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7733    pub fn gst_tag_list_replace(
7734        old_taglist: *mut *mut GstTagList,
7735        new_taglist: *mut GstTagList,
7736    ) -> gboolean;
7737    #[cfg(feature = "v1_18_3")]
7738    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7739    pub fn gst_tag_list_take(
7740        old_taglist: *mut *mut GstTagList,
7741        new_taglist: *mut GstTagList,
7742    ) -> gboolean;
7743
7744    //=========================================================================
7745    // GstToc
7746    //=========================================================================
7747    pub fn gst_toc_get_type() -> GType;
7748    pub fn gst_toc_new(scope: GstTocScope) -> *mut GstToc;
7749    pub fn gst_toc_append_entry(toc: *mut GstToc, entry: *mut GstTocEntry);
7750    pub fn gst_toc_dump(toc: *mut GstToc);
7751    pub fn gst_toc_find_entry(toc: *const GstToc, uid: *const c_char) -> *mut GstTocEntry;
7752    pub fn gst_toc_get_entries(toc: *const GstToc) -> *mut glib::GList;
7753    pub fn gst_toc_get_scope(toc: *const GstToc) -> GstTocScope;
7754    pub fn gst_toc_get_tags(toc: *const GstToc) -> *mut GstTagList;
7755    pub fn gst_toc_merge_tags(toc: *mut GstToc, tags: *mut GstTagList, mode: GstTagMergeMode);
7756    pub fn gst_toc_set_tags(toc: *mut GstToc, tags: *mut GstTagList);
7757
7758    //=========================================================================
7759    // GstTocEntry
7760    //=========================================================================
7761    pub fn gst_toc_entry_get_type() -> GType;
7762    pub fn gst_toc_entry_new(type_: GstTocEntryType, uid: *const c_char) -> *mut GstTocEntry;
7763    pub fn gst_toc_entry_append_sub_entry(entry: *mut GstTocEntry, subentry: *mut GstTocEntry);
7764    pub fn gst_toc_entry_get_entry_type(entry: *const GstTocEntry) -> GstTocEntryType;
7765    pub fn gst_toc_entry_get_loop(
7766        entry: *const GstTocEntry,
7767        loop_type: *mut GstTocLoopType,
7768        repeat_count: *mut c_int,
7769    ) -> gboolean;
7770    pub fn gst_toc_entry_get_parent(entry: *mut GstTocEntry) -> *mut GstTocEntry;
7771    pub fn gst_toc_entry_get_start_stop_times(
7772        entry: *const GstTocEntry,
7773        start: *mut i64,
7774        stop: *mut i64,
7775    ) -> gboolean;
7776    pub fn gst_toc_entry_get_sub_entries(entry: *const GstTocEntry) -> *mut glib::GList;
7777    pub fn gst_toc_entry_get_tags(entry: *const GstTocEntry) -> *mut GstTagList;
7778    pub fn gst_toc_entry_get_toc(entry: *mut GstTocEntry) -> *mut GstToc;
7779    pub fn gst_toc_entry_get_uid(entry: *const GstTocEntry) -> *const c_char;
7780    pub fn gst_toc_entry_is_alternative(entry: *const GstTocEntry) -> gboolean;
7781    pub fn gst_toc_entry_is_sequence(entry: *const GstTocEntry) -> gboolean;
7782    pub fn gst_toc_entry_merge_tags(
7783        entry: *mut GstTocEntry,
7784        tags: *mut GstTagList,
7785        mode: GstTagMergeMode,
7786    );
7787    pub fn gst_toc_entry_set_loop(
7788        entry: *mut GstTocEntry,
7789        loop_type: GstTocLoopType,
7790        repeat_count: c_int,
7791    );
7792    pub fn gst_toc_entry_set_start_stop_times(entry: *mut GstTocEntry, start: i64, stop: i64);
7793    pub fn gst_toc_entry_set_tags(entry: *mut GstTocEntry, tags: *mut GstTagList);
7794
7795    //=========================================================================
7796    // GstTraceField
7797    //=========================================================================
7798    #[cfg(feature = "v1_30")]
7799    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7800    pub fn gst_trace_field_free(field: *mut GstTraceField);
7801    #[cfg(feature = "v1_30")]
7802    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7803    pub fn gst_trace_field_set_description(
7804        field: *mut GstTraceField,
7805        description: *const c_char,
7806    ) -> *mut GstTraceField;
7807    #[cfg(feature = "v1_30")]
7808    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7809    pub fn gst_trace_field_set_flags(
7810        field: *mut GstTraceField,
7811        flags: GstTracerValueFlags,
7812    ) -> *mut GstTraceField;
7813    #[cfg(feature = "v1_30")]
7814    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7815    pub fn gst_trace_field_set_scope(
7816        field: *mut GstTraceField,
7817        scope: GstTracerValueScope,
7818    ) -> *mut GstTraceField;
7819    #[cfg(feature = "v1_30")]
7820    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7821    pub fn gst_trace_field_new(
7822        name: *const c_char,
7823        type_: GstTracerFieldType,
7824    ) -> *mut GstTraceField;
7825
7826    //=========================================================================
7827    // GstTraceFormat
7828    //=========================================================================
7829    #[cfg(feature = "v1_30")]
7830    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7831    pub fn gst_trace_format_get_description(format: *mut GstTraceFormat) -> *const c_char;
7832    #[cfg(feature = "v1_30")]
7833    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7834    pub fn gst_trace_format_get_field_description(
7835        format: *mut GstTraceFormat,
7836        index: c_uint,
7837    ) -> *const c_char;
7838    #[cfg(feature = "v1_30")]
7839    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7840    pub fn gst_trace_format_get_field_name(
7841        format: *mut GstTraceFormat,
7842        index: c_uint,
7843    ) -> *const c_char;
7844    #[cfg(feature = "v1_30")]
7845    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7846    pub fn gst_trace_format_get_field_structure(
7847        format: *mut GstTraceFormat,
7848        index: c_uint,
7849    ) -> *const GstStructure;
7850    #[cfg(feature = "v1_30")]
7851    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7852    pub fn gst_trace_format_get_field_type(
7853        format: *mut GstTraceFormat,
7854        index: c_uint,
7855    ) -> GstTracerFieldType;
7856    #[cfg(feature = "v1_30")]
7857    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7858    pub fn gst_trace_format_get_n_fields(format: *mut GstTraceFormat) -> c_uint;
7859    #[cfg(feature = "v1_30")]
7860    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7861    pub fn gst_trace_format_get_name(format: *mut GstTraceFormat) -> *const c_char;
7862    #[cfg(feature = "v1_30")]
7863    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7864    pub fn gst_trace_format_is_enabled(format: *mut GstTraceFormat) -> gboolean;
7865    #[cfg(feature = "v1_30")]
7866    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7867    pub fn gst_trace_format_register(name: *const c_char, ...) -> *mut GstTraceFormat;
7868
7869    //=========================================================================
7870    // GstTraceFormatBuilder
7871    //=========================================================================
7872    #[cfg(feature = "v1_30")]
7873    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7874    pub fn gst_trace_format_builder_add_field(
7875        builder: *mut GstTraceFormatBuilder,
7876        name: *const c_char,
7877        type_: GstTracerFieldType,
7878    ) -> *mut GstTraceFormatBuilder;
7879    #[cfg(feature = "v1_30")]
7880    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7881    pub fn gst_trace_format_builder_add_field_full(
7882        builder: *mut GstTraceFormatBuilder,
7883        field: *mut GstTraceField,
7884    ) -> *mut GstTraceFormatBuilder;
7885    #[cfg(feature = "v1_30")]
7886    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7887    pub fn gst_trace_format_builder_free(builder: *mut GstTraceFormatBuilder);
7888    #[cfg(feature = "v1_30")]
7889    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7890    pub fn gst_trace_format_builder_register(
7891        builder: *mut GstTraceFormatBuilder,
7892    ) -> *mut GstTraceFormat;
7893    #[cfg(feature = "v1_30")]
7894    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7895    pub fn gst_trace_format_builder_set_description(
7896        builder: *mut GstTraceFormatBuilder,
7897        description: *const c_char,
7898    ) -> *mut GstTraceFormatBuilder;
7899    #[cfg(feature = "v1_30")]
7900    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
7901    pub fn gst_trace_format_builder_new(name: *const c_char) -> *mut GstTraceFormatBuilder;
7902
7903    //=========================================================================
7904    // GstTracerClass
7905    //=========================================================================
7906    #[cfg(feature = "v1_26")]
7907    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7908    pub fn gst_tracer_class_set_use_structure_params(
7909        tracer_class: *mut GstTracerClass,
7910        use_structure_params: gboolean,
7911    );
7912    #[cfg(feature = "v1_26")]
7913    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
7914    pub fn gst_tracer_class_uses_structure_params(tracer_class: *mut GstTracerClass) -> gboolean;
7915
7916    //=========================================================================
7917    // GstTypeFind
7918    //=========================================================================
7919    pub fn gst_type_find_get_type() -> GType;
7920    pub fn gst_type_find_get_length(find: *mut GstTypeFind) -> u64;
7921    pub fn gst_type_find_peek(find: *mut GstTypeFind, offset: i64, size: c_uint) -> *const u8;
7922    pub fn gst_type_find_suggest(find: *mut GstTypeFind, probability: c_uint, caps: *mut GstCaps);
7923    #[cfg(feature = "v1_20")]
7924    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
7925    pub fn gst_type_find_suggest_empty_simple(
7926        find: *mut GstTypeFind,
7927        probability: c_uint,
7928        media_type: *const c_char,
7929    );
7930    pub fn gst_type_find_suggest_simple(
7931        find: *mut GstTypeFind,
7932        probability: c_uint,
7933        media_type: *const c_char,
7934        fieldname: *const c_char,
7935        ...
7936    );
7937    pub fn gst_type_find_register(
7938        plugin: *mut GstPlugin,
7939        name: *const c_char,
7940        rank: c_uint,
7941        func: GstTypeFindFunction,
7942        extensions: *const c_char,
7943        possible_caps: *mut GstCaps,
7944        data: gpointer,
7945        data_notify: glib::GDestroyNotify,
7946    ) -> gboolean;
7947
7948    //=========================================================================
7949    // GstUri
7950    //=========================================================================
7951    pub fn gst_uri_get_type() -> GType;
7952    pub fn gst_uri_new(
7953        scheme: *const c_char,
7954        userinfo: *const c_char,
7955        host: *const c_char,
7956        port: c_uint,
7957        path: *const c_char,
7958        query: *const c_char,
7959        fragment: *const c_char,
7960    ) -> *mut GstUri;
7961    pub fn gst_uri_append_path(uri: *mut GstUri, relative_path: *const c_char) -> gboolean;
7962    pub fn gst_uri_append_path_segment(uri: *mut GstUri, path_segment: *const c_char) -> gboolean;
7963    #[cfg(feature = "v1_18_3")]
7964    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
7965    pub fn gst_uri_copy(uri: *const GstUri) -> *mut GstUri;
7966    pub fn gst_uri_equal(first: *const GstUri, second: *const GstUri) -> gboolean;
7967    pub fn gst_uri_from_string_with_base(base: *mut GstUri, uri: *const c_char) -> *mut GstUri;
7968    pub fn gst_uri_get_fragment(uri: *const GstUri) -> *const c_char;
7969    pub fn gst_uri_get_host(uri: *const GstUri) -> *const c_char;
7970    pub fn gst_uri_get_media_fragment_table(uri: *const GstUri) -> *mut glib::GHashTable;
7971    pub fn gst_uri_get_path(uri: *const GstUri) -> *mut c_char;
7972    pub fn gst_uri_get_path_segments(uri: *const GstUri) -> *mut glib::GList;
7973    pub fn gst_uri_get_path_string(uri: *const GstUri) -> *mut c_char;
7974    pub fn gst_uri_get_port(uri: *const GstUri) -> c_uint;
7975    pub fn gst_uri_get_query_keys(uri: *const GstUri) -> *mut glib::GList;
7976    pub fn gst_uri_get_query_string(uri: *const GstUri) -> *mut c_char;
7977    #[cfg(feature = "v1_24")]
7978    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
7979    pub fn gst_uri_get_query_string_ordered(
7980        uri: *const GstUri,
7981        keys: *const glib::GList,
7982    ) -> *mut c_char;
7983    pub fn gst_uri_get_query_table(uri: *const GstUri) -> *mut glib::GHashTable;
7984    pub fn gst_uri_get_query_value(uri: *const GstUri, query_key: *const c_char) -> *const c_char;
7985    pub fn gst_uri_get_scheme(uri: *const GstUri) -> *const c_char;
7986    pub fn gst_uri_get_userinfo(uri: *const GstUri) -> *const c_char;
7987    pub fn gst_uri_is_normalized(uri: *const GstUri) -> gboolean;
7988    pub fn gst_uri_is_writable(uri: *const GstUri) -> gboolean;
7989    pub fn gst_uri_join(base_uri: *mut GstUri, ref_uri: *mut GstUri) -> *mut GstUri;
7990    pub fn gst_uri_make_writable(uri: *mut GstUri) -> *mut GstUri;
7991    pub fn gst_uri_new_with_base(
7992        base: *mut GstUri,
7993        scheme: *const c_char,
7994        userinfo: *const c_char,
7995        host: *const c_char,
7996        port: c_uint,
7997        path: *const c_char,
7998        query: *const c_char,
7999        fragment: *const c_char,
8000    ) -> *mut GstUri;
8001    pub fn gst_uri_normalize(uri: *mut GstUri) -> gboolean;
8002    pub fn gst_uri_query_has_key(uri: *const GstUri, query_key: *const c_char) -> gboolean;
8003    #[cfg(feature = "v1_18_3")]
8004    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
8005    pub fn gst_uri_ref(uri: *mut GstUri) -> *mut GstUri;
8006    pub fn gst_uri_remove_query_key(uri: *mut GstUri, query_key: *const c_char) -> gboolean;
8007    pub fn gst_uri_set_fragment(uri: *mut GstUri, fragment: *const c_char) -> gboolean;
8008    pub fn gst_uri_set_host(uri: *mut GstUri, host: *const c_char) -> gboolean;
8009    pub fn gst_uri_set_path(uri: *mut GstUri, path: *const c_char) -> gboolean;
8010    pub fn gst_uri_set_path_segments(uri: *mut GstUri, path_segments: *mut glib::GList)
8011    -> gboolean;
8012    pub fn gst_uri_set_path_string(uri: *mut GstUri, path: *const c_char) -> gboolean;
8013    pub fn gst_uri_set_port(uri: *mut GstUri, port: c_uint) -> gboolean;
8014    pub fn gst_uri_set_query_string(uri: *mut GstUri, query: *const c_char) -> gboolean;
8015    pub fn gst_uri_set_query_table(
8016        uri: *mut GstUri,
8017        query_table: *mut glib::GHashTable,
8018    ) -> gboolean;
8019    pub fn gst_uri_set_query_value(
8020        uri: *mut GstUri,
8021        query_key: *const c_char,
8022        query_value: *const c_char,
8023    ) -> gboolean;
8024    pub fn gst_uri_set_scheme(uri: *mut GstUri, scheme: *const c_char) -> gboolean;
8025    pub fn gst_uri_set_userinfo(uri: *mut GstUri, userinfo: *const c_char) -> gboolean;
8026    pub fn gst_uri_to_string(uri: *const GstUri) -> *mut c_char;
8027    #[cfg(feature = "v1_24")]
8028    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8029    pub fn gst_uri_to_string_with_keys(uri: *const GstUri, keys: *const glib::GList)
8030    -> *mut c_char;
8031    #[cfg(feature = "v1_18_3")]
8032    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
8033    pub fn gst_uri_unref(uri: *mut GstUri);
8034    pub fn gst_uri_construct(protocol: *const c_char, location: *const c_char) -> *mut c_char;
8035    pub fn gst_uri_from_string(uri: *const c_char) -> *mut GstUri;
8036    #[cfg(feature = "v1_18")]
8037    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8038    pub fn gst_uri_from_string_escaped(uri: *const c_char) -> *mut GstUri;
8039    pub fn gst_uri_get_location(uri: *const c_char) -> *mut c_char;
8040    pub fn gst_uri_get_protocol(uri: *const c_char) -> *mut c_char;
8041    pub fn gst_uri_has_protocol(uri: *const c_char, protocol: *const c_char) -> gboolean;
8042    pub fn gst_uri_is_valid(uri: *const c_char) -> gboolean;
8043    pub fn gst_uri_join_strings(base_uri: *const c_char, ref_uri: *const c_char) -> *mut c_char;
8044    pub fn gst_uri_protocol_is_supported(type_: GstURIType, protocol: *const c_char) -> gboolean;
8045    pub fn gst_uri_protocol_is_valid(protocol: *const c_char) -> gboolean;
8046
8047    //=========================================================================
8048    // GstVecDeque
8049    //=========================================================================
8050    #[cfg(feature = "v1_26")]
8051    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8052    pub fn gst_vec_deque_clear(array: *mut GstVecDeque);
8053    #[cfg(feature = "v1_26")]
8054    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8055    pub fn gst_vec_deque_drop_element(array: *mut GstVecDeque, idx: size_t) -> gpointer;
8056    #[cfg(feature = "v1_26")]
8057    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8058    pub fn gst_vec_deque_drop_struct(
8059        array: *mut GstVecDeque,
8060        idx: size_t,
8061        p_struct: gpointer,
8062    ) -> gboolean;
8063    #[cfg(feature = "v1_26")]
8064    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8065    pub fn gst_vec_deque_find(
8066        array: *mut GstVecDeque,
8067        func: glib::GCompareFunc,
8068        data: gpointer,
8069    ) -> size_t;
8070    #[cfg(feature = "v1_26")]
8071    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8072    pub fn gst_vec_deque_free(array: *mut GstVecDeque);
8073    #[cfg(feature = "v1_26")]
8074    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8075    pub fn gst_vec_deque_get_length(array: *mut GstVecDeque) -> size_t;
8076    #[cfg(feature = "v1_26")]
8077    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8078    pub fn gst_vec_deque_is_empty(array: *mut GstVecDeque) -> gboolean;
8079    #[cfg(feature = "v1_26")]
8080    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8081    pub fn gst_vec_deque_peek_head(array: *mut GstVecDeque) -> gpointer;
8082    #[cfg(feature = "v1_26")]
8083    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8084    pub fn gst_vec_deque_peek_head_struct(array: *mut GstVecDeque) -> gpointer;
8085    #[cfg(feature = "v1_26")]
8086    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8087    pub fn gst_vec_deque_peek_nth(array: *mut GstVecDeque, idx: size_t) -> gpointer;
8088    #[cfg(feature = "v1_26")]
8089    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8090    pub fn gst_vec_deque_peek_nth_struct(array: *mut GstVecDeque, idx: size_t) -> gpointer;
8091    #[cfg(feature = "v1_26")]
8092    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8093    pub fn gst_vec_deque_peek_tail(array: *mut GstVecDeque) -> gpointer;
8094    #[cfg(feature = "v1_26")]
8095    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8096    pub fn gst_vec_deque_peek_tail_struct(array: *mut GstVecDeque) -> gpointer;
8097    #[cfg(feature = "v1_26")]
8098    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8099    pub fn gst_vec_deque_pop_head(array: *mut GstVecDeque) -> gpointer;
8100    #[cfg(feature = "v1_26")]
8101    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8102    pub fn gst_vec_deque_pop_head_struct(array: *mut GstVecDeque) -> gpointer;
8103    #[cfg(feature = "v1_26")]
8104    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8105    pub fn gst_vec_deque_pop_tail(array: *mut GstVecDeque) -> gpointer;
8106    #[cfg(feature = "v1_26")]
8107    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8108    pub fn gst_vec_deque_pop_tail_struct(array: *mut GstVecDeque) -> gpointer;
8109    #[cfg(feature = "v1_26")]
8110    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8111    pub fn gst_vec_deque_push_sorted(
8112        array: *mut GstVecDeque,
8113        data: gpointer,
8114        func: glib::GCompareDataFunc,
8115        user_data: gpointer,
8116    );
8117    #[cfg(feature = "v1_26")]
8118    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8119    pub fn gst_vec_deque_push_sorted_struct(
8120        array: *mut GstVecDeque,
8121        p_struct: gpointer,
8122        func: glib::GCompareDataFunc,
8123        user_data: gpointer,
8124    );
8125    #[cfg(feature = "v1_26")]
8126    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8127    pub fn gst_vec_deque_push_tail(array: *mut GstVecDeque, data: gpointer);
8128    #[cfg(feature = "v1_26")]
8129    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8130    pub fn gst_vec_deque_push_tail_struct(array: *mut GstVecDeque, p_struct: gpointer);
8131    #[cfg(feature = "v1_26")]
8132    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8133    pub fn gst_vec_deque_set_clear_func(array: *mut GstVecDeque, clear_func: glib::GDestroyNotify);
8134    #[cfg(feature = "v1_26")]
8135    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8136    pub fn gst_vec_deque_sort(
8137        array: *mut GstVecDeque,
8138        compare_func: glib::GCompareDataFunc,
8139        user_data: gpointer,
8140    );
8141    #[cfg(feature = "v1_26")]
8142    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8143    pub fn gst_vec_deque_new(initial_size: size_t) -> *mut GstVecDeque;
8144    #[cfg(feature = "v1_26")]
8145    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
8146    pub fn gst_vec_deque_new_for_struct(
8147        struct_size: size_t,
8148        initial_size: size_t,
8149    ) -> *mut GstVecDeque;
8150
8151    //=========================================================================
8152    // GstAllocator
8153    //=========================================================================
8154    pub fn gst_allocator_get_type() -> GType;
8155    pub fn gst_allocator_find(name: *const c_char) -> *mut GstAllocator;
8156    pub fn gst_allocator_register(name: *const c_char, allocator: *mut GstAllocator);
8157    pub fn gst_allocator_alloc(
8158        allocator: *mut GstAllocator,
8159        size: size_t,
8160        params: *mut GstAllocationParams,
8161    ) -> *mut GstMemory;
8162    pub fn gst_allocator_free(allocator: *mut GstAllocator, memory: *mut GstMemory);
8163    pub fn gst_allocator_set_default(allocator: *mut GstAllocator);
8164
8165    //=========================================================================
8166    // GstBin
8167    //=========================================================================
8168    pub fn gst_bin_get_type() -> GType;
8169    pub fn gst_bin_new(name: *const c_char) -> *mut GstElement;
8170    pub fn gst_bin_add(bin: *mut GstBin, element: *mut GstElement) -> gboolean;
8171    pub fn gst_bin_add_many(bin: *mut GstBin, element_1: *mut GstElement, ...);
8172    pub fn gst_bin_find_unlinked_pad(bin: *mut GstBin, direction: GstPadDirection) -> *mut GstPad;
8173    pub fn gst_bin_get_by_interface(bin: *mut GstBin, iface: GType) -> *mut GstElement;
8174    pub fn gst_bin_get_by_name(bin: *mut GstBin, name: *const c_char) -> *mut GstElement;
8175    pub fn gst_bin_get_by_name_recurse_up(bin: *mut GstBin, name: *const c_char)
8176    -> *mut GstElement;
8177    pub fn gst_bin_get_suppressed_flags(bin: *mut GstBin) -> GstElementFlags;
8178    #[cfg(feature = "v1_18")]
8179    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8180    pub fn gst_bin_iterate_all_by_element_factory_name(
8181        bin: *mut GstBin,
8182        factory_name: *const c_char,
8183    ) -> *mut GstIterator;
8184    pub fn gst_bin_iterate_all_by_interface(bin: *mut GstBin, iface: GType) -> *mut GstIterator;
8185    pub fn gst_bin_iterate_elements(bin: *mut GstBin) -> *mut GstIterator;
8186    pub fn gst_bin_iterate_recurse(bin: *mut GstBin) -> *mut GstIterator;
8187    pub fn gst_bin_iterate_sinks(bin: *mut GstBin) -> *mut GstIterator;
8188    pub fn gst_bin_iterate_sorted(bin: *mut GstBin) -> *mut GstIterator;
8189    pub fn gst_bin_iterate_sources(bin: *mut GstBin) -> *mut GstIterator;
8190    pub fn gst_bin_recalculate_latency(bin: *mut GstBin) -> gboolean;
8191    pub fn gst_bin_remove(bin: *mut GstBin, element: *mut GstElement) -> gboolean;
8192    pub fn gst_bin_remove_many(bin: *mut GstBin, element_1: *mut GstElement, ...);
8193    pub fn gst_bin_set_suppressed_flags(bin: *mut GstBin, flags: GstElementFlags);
8194    pub fn gst_bin_sync_children_states(bin: *mut GstBin) -> gboolean;
8195
8196    //=========================================================================
8197    // GstBitmask
8198    //=========================================================================
8199    pub fn gst_bitmask_get_type() -> GType;
8200
8201    //=========================================================================
8202    // GstBufferPool
8203    //=========================================================================
8204    pub fn gst_buffer_pool_get_type() -> GType;
8205    pub fn gst_buffer_pool_new() -> *mut GstBufferPool;
8206    pub fn gst_buffer_pool_config_add_option(config: *mut GstStructure, option: *const c_char);
8207    pub fn gst_buffer_pool_config_get_allocator(
8208        config: *mut GstStructure,
8209        allocator: *mut *mut GstAllocator,
8210        params: *mut GstAllocationParams,
8211    ) -> gboolean;
8212    pub fn gst_buffer_pool_config_get_option(
8213        config: *mut GstStructure,
8214        index: c_uint,
8215    ) -> *const c_char;
8216    pub fn gst_buffer_pool_config_get_params(
8217        config: *mut GstStructure,
8218        caps: *mut *mut GstCaps,
8219        size: *mut c_uint,
8220        min_buffers: *mut c_uint,
8221        max_buffers: *mut c_uint,
8222    ) -> gboolean;
8223    pub fn gst_buffer_pool_config_has_option(
8224        config: *mut GstStructure,
8225        option: *const c_char,
8226    ) -> gboolean;
8227    pub fn gst_buffer_pool_config_n_options(config: *mut GstStructure) -> c_uint;
8228    pub fn gst_buffer_pool_config_set_allocator(
8229        config: *mut GstStructure,
8230        allocator: *mut GstAllocator,
8231        params: *const GstAllocationParams,
8232    );
8233    pub fn gst_buffer_pool_config_set_params(
8234        config: *mut GstStructure,
8235        caps: *mut GstCaps,
8236        size: c_uint,
8237        min_buffers: c_uint,
8238        max_buffers: c_uint,
8239    );
8240    pub fn gst_buffer_pool_config_validate_params(
8241        config: *mut GstStructure,
8242        caps: *mut GstCaps,
8243        size: c_uint,
8244        min_buffers: c_uint,
8245        max_buffers: c_uint,
8246    ) -> gboolean;
8247    pub fn gst_buffer_pool_acquire_buffer(
8248        pool: *mut GstBufferPool,
8249        buffer: *mut *mut GstBuffer,
8250        params: *mut GstBufferPoolAcquireParams,
8251    ) -> GstFlowReturn;
8252    pub fn gst_buffer_pool_get_config(pool: *mut GstBufferPool) -> *mut GstStructure;
8253    pub fn gst_buffer_pool_get_options(pool: *mut GstBufferPool) -> *mut *const c_char;
8254    pub fn gst_buffer_pool_has_option(pool: *mut GstBufferPool, option: *const c_char) -> gboolean;
8255    pub fn gst_buffer_pool_is_active(pool: *mut GstBufferPool) -> gboolean;
8256    pub fn gst_buffer_pool_release_buffer(pool: *mut GstBufferPool, buffer: *mut GstBuffer);
8257    pub fn gst_buffer_pool_set_active(pool: *mut GstBufferPool, active: gboolean) -> gboolean;
8258    pub fn gst_buffer_pool_set_config(
8259        pool: *mut GstBufferPool,
8260        config: *mut GstStructure,
8261    ) -> gboolean;
8262    pub fn gst_buffer_pool_set_flushing(pool: *mut GstBufferPool, flushing: gboolean);
8263
8264    //=========================================================================
8265    // GstBus
8266    //=========================================================================
8267    pub fn gst_bus_get_type() -> GType;
8268    pub fn gst_bus_new() -> *mut GstBus;
8269    pub fn gst_bus_add_signal_watch(bus: *mut GstBus);
8270    pub fn gst_bus_add_signal_watch_full(bus: *mut GstBus, priority: c_int);
8271    pub fn gst_bus_add_watch(bus: *mut GstBus, func: GstBusFunc, user_data: gpointer) -> c_uint;
8272    pub fn gst_bus_add_watch_full(
8273        bus: *mut GstBus,
8274        priority: c_int,
8275        func: GstBusFunc,
8276        user_data: gpointer,
8277        notify: glib::GDestroyNotify,
8278    ) -> c_uint;
8279    pub fn gst_bus_async_signal_func(
8280        bus: *mut GstBus,
8281        message: *mut GstMessage,
8282        data: gpointer,
8283    ) -> gboolean;
8284    pub fn gst_bus_create_watch(bus: *mut GstBus) -> *mut glib::GSource;
8285    pub fn gst_bus_disable_sync_message_emission(bus: *mut GstBus);
8286    pub fn gst_bus_enable_sync_message_emission(bus: *mut GstBus);
8287    pub fn gst_bus_get_pollfd(bus: *mut GstBus, fd: *mut glib::GPollFD);
8288    pub fn gst_bus_have_pending(bus: *mut GstBus) -> gboolean;
8289    pub fn gst_bus_peek(bus: *mut GstBus) -> *mut GstMessage;
8290    pub fn gst_bus_poll(
8291        bus: *mut GstBus,
8292        events: GstMessageType,
8293        timeout: GstClockTime,
8294    ) -> *mut GstMessage;
8295    pub fn gst_bus_pop(bus: *mut GstBus) -> *mut GstMessage;
8296    pub fn gst_bus_pop_filtered(bus: *mut GstBus, types: GstMessageType) -> *mut GstMessage;
8297    pub fn gst_bus_post(bus: *mut GstBus, message: *mut GstMessage) -> gboolean;
8298    pub fn gst_bus_remove_signal_watch(bus: *mut GstBus);
8299    pub fn gst_bus_remove_watch(bus: *mut GstBus) -> gboolean;
8300    pub fn gst_bus_set_flushing(bus: *mut GstBus, flushing: gboolean);
8301    pub fn gst_bus_set_sync_handler(
8302        bus: *mut GstBus,
8303        func: GstBusSyncHandler,
8304        user_data: gpointer,
8305        notify: glib::GDestroyNotify,
8306    );
8307    pub fn gst_bus_sync_signal_handler(
8308        bus: *mut GstBus,
8309        message: *mut GstMessage,
8310        data: gpointer,
8311    ) -> GstBusSyncReply;
8312    pub fn gst_bus_timed_pop(bus: *mut GstBus, timeout: GstClockTime) -> *mut GstMessage;
8313    pub fn gst_bus_timed_pop_filtered(
8314        bus: *mut GstBus,
8315        timeout: GstClockTime,
8316        types: GstMessageType,
8317    ) -> *mut GstMessage;
8318
8319    //=========================================================================
8320    // GstClock
8321    //=========================================================================
8322    pub fn gst_clock_get_type() -> GType;
8323    pub fn gst_clock_id_compare_func(id1: gconstpointer, id2: gconstpointer) -> c_int;
8324    #[cfg(feature = "v1_16")]
8325    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
8326    pub fn gst_clock_id_get_clock(id: GstClockID) -> *mut GstClock;
8327    pub fn gst_clock_id_get_time(id: GstClockID) -> GstClockTime;
8328    pub fn gst_clock_id_ref(id: GstClockID) -> GstClockID;
8329    pub fn gst_clock_id_unref(id: GstClockID);
8330    pub fn gst_clock_id_unschedule(id: GstClockID);
8331    #[cfg(feature = "v1_16")]
8332    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
8333    pub fn gst_clock_id_uses_clock(id: GstClockID, clock: *mut GstClock) -> gboolean;
8334    pub fn gst_clock_id_wait(id: GstClockID, jitter: *mut GstClockTimeDiff) -> GstClockReturn;
8335    pub fn gst_clock_id_wait_async(
8336        id: GstClockID,
8337        func: GstClockCallback,
8338        user_data: gpointer,
8339        destroy_data: glib::GDestroyNotify,
8340    ) -> GstClockReturn;
8341    pub fn gst_clock_add_observation(
8342        clock: *mut GstClock,
8343        observation_internal: GstClockTime,
8344        observation_external: GstClockTime,
8345        r_squared: *mut c_double,
8346    ) -> gboolean;
8347    pub fn gst_clock_add_observation_unapplied(
8348        clock: *mut GstClock,
8349        observation_internal: GstClockTime,
8350        observation_external: GstClockTime,
8351        r_squared: *mut c_double,
8352        internal: *mut GstClockTime,
8353        external: *mut GstClockTime,
8354        rate_num: *mut GstClockTime,
8355        rate_denom: *mut GstClockTime,
8356    ) -> gboolean;
8357    pub fn gst_clock_adjust_unlocked(clock: *mut GstClock, internal: GstClockTime) -> GstClockTime;
8358    pub fn gst_clock_adjust_with_calibration(
8359        clock: *mut GstClock,
8360        internal_target: GstClockTime,
8361        cinternal: GstClockTime,
8362        cexternal: GstClockTime,
8363        cnum: GstClockTime,
8364        cdenom: GstClockTime,
8365    ) -> GstClockTime;
8366    pub fn gst_clock_get_calibration(
8367        clock: *mut GstClock,
8368        internal: *mut GstClockTime,
8369        external: *mut GstClockTime,
8370        rate_num: *mut GstClockTime,
8371        rate_denom: *mut GstClockTime,
8372    );
8373    pub fn gst_clock_get_internal_time(clock: *mut GstClock) -> GstClockTime;
8374    pub fn gst_clock_get_master(clock: *mut GstClock) -> *mut GstClock;
8375    pub fn gst_clock_get_resolution(clock: *mut GstClock) -> GstClockTime;
8376    pub fn gst_clock_get_time(clock: *mut GstClock) -> GstClockTime;
8377    pub fn gst_clock_get_timeout(clock: *mut GstClock) -> GstClockTime;
8378    pub fn gst_clock_is_synced(clock: *mut GstClock) -> gboolean;
8379    #[cfg(feature = "v1_28")]
8380    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
8381    pub fn gst_clock_is_system_monotonic(clock: *mut GstClock) -> gboolean;
8382    pub fn gst_clock_new_periodic_id(
8383        clock: *mut GstClock,
8384        start_time: GstClockTime,
8385        interval: GstClockTime,
8386    ) -> GstClockID;
8387    pub fn gst_clock_new_single_shot_id(clock: *mut GstClock, time: GstClockTime) -> GstClockID;
8388    pub fn gst_clock_periodic_id_reinit(
8389        clock: *mut GstClock,
8390        id: GstClockID,
8391        start_time: GstClockTime,
8392        interval: GstClockTime,
8393    ) -> gboolean;
8394    pub fn gst_clock_set_calibration(
8395        clock: *mut GstClock,
8396        internal: GstClockTime,
8397        external: GstClockTime,
8398        rate_num: GstClockTime,
8399        rate_denom: GstClockTime,
8400    );
8401    pub fn gst_clock_set_master(clock: *mut GstClock, master: *mut GstClock) -> gboolean;
8402    pub fn gst_clock_set_resolution(clock: *mut GstClock, resolution: GstClockTime)
8403    -> GstClockTime;
8404    pub fn gst_clock_set_synced(clock: *mut GstClock, synced: gboolean);
8405    pub fn gst_clock_set_timeout(clock: *mut GstClock, timeout: GstClockTime);
8406    pub fn gst_clock_single_shot_id_reinit(
8407        clock: *mut GstClock,
8408        id: GstClockID,
8409        time: GstClockTime,
8410    ) -> gboolean;
8411    pub fn gst_clock_unadjust_unlocked(
8412        clock: *mut GstClock,
8413        external: GstClockTime,
8414    ) -> GstClockTime;
8415    pub fn gst_clock_unadjust_with_calibration(
8416        clock: *mut GstClock,
8417        external_target: GstClockTime,
8418        cinternal: GstClockTime,
8419        cexternal: GstClockTime,
8420        cnum: GstClockTime,
8421        cdenom: GstClockTime,
8422    ) -> GstClockTime;
8423    pub fn gst_clock_wait_for_sync(clock: *mut GstClock, timeout: GstClockTime) -> gboolean;
8424
8425    //=========================================================================
8426    // GstControlBinding
8427    //=========================================================================
8428    pub fn gst_control_binding_get_type() -> GType;
8429    pub fn gst_control_binding_get_g_value_array(
8430        binding: *mut GstControlBinding,
8431        timestamp: GstClockTime,
8432        interval: GstClockTime,
8433        n_values: c_uint,
8434        values: *mut gobject::GValue,
8435    ) -> gboolean;
8436    pub fn gst_control_binding_get_value(
8437        binding: *mut GstControlBinding,
8438        timestamp: GstClockTime,
8439    ) -> *mut gobject::GValue;
8440    pub fn gst_control_binding_get_value_array(
8441        binding: *mut GstControlBinding,
8442        timestamp: GstClockTime,
8443        interval: GstClockTime,
8444        n_values: c_uint,
8445        values: gpointer,
8446    ) -> gboolean;
8447    pub fn gst_control_binding_is_disabled(binding: *mut GstControlBinding) -> gboolean;
8448    pub fn gst_control_binding_set_disabled(binding: *mut GstControlBinding, disabled: gboolean);
8449    pub fn gst_control_binding_sync_values(
8450        binding: *mut GstControlBinding,
8451        object: *mut GstObject,
8452        timestamp: GstClockTime,
8453        last_sync: GstClockTime,
8454    ) -> gboolean;
8455
8456    //=========================================================================
8457    // GstControlSource
8458    //=========================================================================
8459    pub fn gst_control_source_get_type() -> GType;
8460    pub fn gst_control_source_get_value(
8461        self_: *mut GstControlSource,
8462        timestamp: GstClockTime,
8463        value: *mut c_double,
8464    ) -> gboolean;
8465    pub fn gst_control_source_get_value_array(
8466        self_: *mut GstControlSource,
8467        timestamp: GstClockTime,
8468        interval: GstClockTime,
8469        n_values: c_uint,
8470        values: *mut c_double,
8471    ) -> gboolean;
8472
8473    //=========================================================================
8474    // GstDevice
8475    //=========================================================================
8476    pub fn gst_device_get_type() -> GType;
8477    pub fn gst_device_create_element(
8478        device: *mut GstDevice,
8479        name: *const c_char,
8480    ) -> *mut GstElement;
8481    pub fn gst_device_get_caps(device: *mut GstDevice) -> *mut GstCaps;
8482    pub fn gst_device_get_device_class(device: *mut GstDevice) -> *mut c_char;
8483    pub fn gst_device_get_display_name(device: *mut GstDevice) -> *mut c_char;
8484    pub fn gst_device_get_properties(device: *mut GstDevice) -> *mut GstStructure;
8485    pub fn gst_device_has_classes(device: *mut GstDevice, classes: *const c_char) -> gboolean;
8486    pub fn gst_device_has_classesv(device: *mut GstDevice, classes: *mut *mut c_char) -> gboolean;
8487    pub fn gst_device_reconfigure_element(
8488        device: *mut GstDevice,
8489        element: *mut GstElement,
8490    ) -> gboolean;
8491
8492    //=========================================================================
8493    // GstDeviceMonitor
8494    //=========================================================================
8495    pub fn gst_device_monitor_get_type() -> GType;
8496    pub fn gst_device_monitor_new() -> *mut GstDeviceMonitor;
8497    pub fn gst_device_monitor_add_filter(
8498        monitor: *mut GstDeviceMonitor,
8499        classes: *const c_char,
8500        caps: *mut GstCaps,
8501    ) -> c_uint;
8502    pub fn gst_device_monitor_get_bus(monitor: *mut GstDeviceMonitor) -> *mut GstBus;
8503    pub fn gst_device_monitor_get_devices(monitor: *mut GstDeviceMonitor) -> *mut glib::GList;
8504    pub fn gst_device_monitor_get_providers(monitor: *mut GstDeviceMonitor) -> *mut *mut c_char;
8505    pub fn gst_device_monitor_get_show_all_devices(monitor: *mut GstDeviceMonitor) -> gboolean;
8506    pub fn gst_device_monitor_remove_filter(
8507        monitor: *mut GstDeviceMonitor,
8508        filter_id: c_uint,
8509    ) -> gboolean;
8510    pub fn gst_device_monitor_set_show_all_devices(
8511        monitor: *mut GstDeviceMonitor,
8512        show_all: gboolean,
8513    );
8514    pub fn gst_device_monitor_start(monitor: *mut GstDeviceMonitor) -> gboolean;
8515    pub fn gst_device_monitor_stop(monitor: *mut GstDeviceMonitor);
8516
8517    //=========================================================================
8518    // GstDeviceProvider
8519    //=========================================================================
8520    pub fn gst_device_provider_get_type() -> GType;
8521    pub fn gst_device_provider_register(
8522        plugin: *mut GstPlugin,
8523        name: *const c_char,
8524        rank: c_uint,
8525        type_: GType,
8526    ) -> gboolean;
8527    pub fn gst_device_provider_can_monitor(provider: *mut GstDeviceProvider) -> gboolean;
8528    pub fn gst_device_provider_device_add(provider: *mut GstDeviceProvider, device: *mut GstDevice);
8529    #[cfg(feature = "v1_16")]
8530    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
8531    pub fn gst_device_provider_device_changed(
8532        provider: *mut GstDeviceProvider,
8533        device: *mut GstDevice,
8534        changed_device: *mut GstDevice,
8535    );
8536    pub fn gst_device_provider_device_remove(
8537        provider: *mut GstDeviceProvider,
8538        device: *mut GstDevice,
8539    );
8540    pub fn gst_device_provider_get_bus(provider: *mut GstDeviceProvider) -> *mut GstBus;
8541    pub fn gst_device_provider_get_devices(provider: *mut GstDeviceProvider) -> *mut glib::GList;
8542    pub fn gst_device_provider_get_factory(
8543        provider: *mut GstDeviceProvider,
8544    ) -> *mut GstDeviceProviderFactory;
8545    pub fn gst_device_provider_get_hidden_providers(
8546        provider: *mut GstDeviceProvider,
8547    ) -> *mut *mut c_char;
8548    pub fn gst_device_provider_get_metadata(
8549        provider: *mut GstDeviceProvider,
8550        key: *const c_char,
8551    ) -> *const c_char;
8552    pub fn gst_device_provider_hide_provider(provider: *mut GstDeviceProvider, name: *const c_char);
8553    #[cfg(feature = "v1_20")]
8554    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8555    pub fn gst_device_provider_is_started(provider: *mut GstDeviceProvider) -> gboolean;
8556    pub fn gst_device_provider_start(provider: *mut GstDeviceProvider) -> gboolean;
8557    pub fn gst_device_provider_stop(provider: *mut GstDeviceProvider);
8558    pub fn gst_device_provider_unhide_provider(
8559        provider: *mut GstDeviceProvider,
8560        name: *const c_char,
8561    );
8562
8563    //=========================================================================
8564    // GstDeviceProviderFactory
8565    //=========================================================================
8566    pub fn gst_device_provider_factory_get_type() -> GType;
8567    pub fn gst_device_provider_factory_find(name: *const c_char) -> *mut GstDeviceProviderFactory;
8568    pub fn gst_device_provider_factory_get_by_name(
8569        factoryname: *const c_char,
8570    ) -> *mut GstDeviceProvider;
8571    pub fn gst_device_provider_factory_list_get_device_providers(
8572        minrank: GstRank,
8573    ) -> *mut glib::GList;
8574    pub fn gst_device_provider_factory_get(
8575        factory: *mut GstDeviceProviderFactory,
8576    ) -> *mut GstDeviceProvider;
8577    pub fn gst_device_provider_factory_get_device_provider_type(
8578        factory: *mut GstDeviceProviderFactory,
8579    ) -> GType;
8580    pub fn gst_device_provider_factory_get_metadata(
8581        factory: *mut GstDeviceProviderFactory,
8582        key: *const c_char,
8583    ) -> *const c_char;
8584    pub fn gst_device_provider_factory_get_metadata_keys(
8585        factory: *mut GstDeviceProviderFactory,
8586    ) -> *mut *mut c_char;
8587    pub fn gst_device_provider_factory_has_classes(
8588        factory: *mut GstDeviceProviderFactory,
8589        classes: *const c_char,
8590    ) -> gboolean;
8591    pub fn gst_device_provider_factory_has_classesv(
8592        factory: *mut GstDeviceProviderFactory,
8593        classes: *mut *mut c_char,
8594    ) -> gboolean;
8595
8596    //=========================================================================
8597    // GstDoubleRange
8598    //=========================================================================
8599    pub fn gst_double_range_get_type() -> GType;
8600
8601    //=========================================================================
8602    // GstDynamicTypeFactory
8603    //=========================================================================
8604    pub fn gst_dynamic_type_factory_get_type() -> GType;
8605    pub fn gst_dynamic_type_factory_load(factoryname: *const c_char) -> GType;
8606
8607    //=========================================================================
8608    // GstElement
8609    //=========================================================================
8610    pub fn gst_element_get_type() -> GType;
8611    pub fn gst_element_make_from_uri(
8612        type_: GstURIType,
8613        uri: *const c_char,
8614        elementname: *const c_char,
8615        error: *mut *mut glib::GError,
8616    ) -> *mut GstElement;
8617    pub fn gst_element_register(
8618        plugin: *mut GstPlugin,
8619        name: *const c_char,
8620        rank: c_uint,
8621        type_: GType,
8622    ) -> gboolean;
8623    pub fn gst_element_state_change_return_get_name(
8624        state_ret: GstStateChangeReturn,
8625    ) -> *const c_char;
8626    pub fn gst_element_state_get_name(state: GstState) -> *const c_char;
8627    #[cfg(feature = "v1_20")]
8628    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8629    pub fn gst_element_type_set_skip_documentation(type_: GType);
8630    pub fn gst_element_abort_state(element: *mut GstElement);
8631    pub fn gst_element_add_pad(element: *mut GstElement, pad: *mut GstPad) -> gboolean;
8632    pub fn gst_element_add_property_deep_notify_watch(
8633        element: *mut GstElement,
8634        property_name: *const c_char,
8635        include_value: gboolean,
8636    ) -> c_ulong;
8637    pub fn gst_element_add_property_notify_watch(
8638        element: *mut GstElement,
8639        property_name: *const c_char,
8640        include_value: gboolean,
8641    ) -> c_ulong;
8642    pub fn gst_element_call_async(
8643        element: *mut GstElement,
8644        func: GstElementCallAsyncFunc,
8645        user_data: gpointer,
8646        destroy_notify: glib::GDestroyNotify,
8647    );
8648    pub fn gst_element_change_state(
8649        element: *mut GstElement,
8650        transition: GstStateChange,
8651    ) -> GstStateChangeReturn;
8652    pub fn gst_element_continue_state(
8653        element: *mut GstElement,
8654        ret: GstStateChangeReturn,
8655    ) -> GstStateChangeReturn;
8656    pub fn gst_element_create_all_pads(element: *mut GstElement);
8657    #[cfg(feature = "v1_24")]
8658    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8659    pub fn gst_element_decorate_stream_id(
8660        element: *mut GstElement,
8661        stream_id: *const c_char,
8662    ) -> *mut c_char;
8663    #[cfg(feature = "v1_24")]
8664    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8665    pub fn gst_element_decorate_stream_id_printf(
8666        element: *mut GstElement,
8667        format: *const c_char,
8668        ...
8669    ) -> *mut c_char;
8670    //#[cfg(feature = "v1_24")]
8671    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
8672    //pub fn gst_element_decorate_stream_id_printf_valist(element: *mut GstElement, format: *const c_char, var_args: /*Unimplemented*/va_list) -> *mut c_char;
8673    pub fn gst_element_foreach_pad(
8674        element: *mut GstElement,
8675        func: GstElementForeachPadFunc,
8676        user_data: gpointer,
8677    ) -> gboolean;
8678    pub fn gst_element_foreach_sink_pad(
8679        element: *mut GstElement,
8680        func: GstElementForeachPadFunc,
8681        user_data: gpointer,
8682    ) -> gboolean;
8683    pub fn gst_element_foreach_src_pad(
8684        element: *mut GstElement,
8685        func: GstElementForeachPadFunc,
8686        user_data: gpointer,
8687    ) -> gboolean;
8688    pub fn gst_element_get_base_time(element: *mut GstElement) -> GstClockTime;
8689    pub fn gst_element_get_bus(element: *mut GstElement) -> *mut GstBus;
8690    pub fn gst_element_get_clock(element: *mut GstElement) -> *mut GstClock;
8691    pub fn gst_element_get_compatible_pad(
8692        element: *mut GstElement,
8693        pad: *mut GstPad,
8694        caps: *mut GstCaps,
8695    ) -> *mut GstPad;
8696    pub fn gst_element_get_compatible_pad_template(
8697        element: *mut GstElement,
8698        compattempl: *mut GstPadTemplate,
8699    ) -> *mut GstPadTemplate;
8700    pub fn gst_element_get_context(
8701        element: *mut GstElement,
8702        context_type: *const c_char,
8703    ) -> *mut GstContext;
8704    pub fn gst_element_get_context_unlocked(
8705        element: *mut GstElement,
8706        context_type: *const c_char,
8707    ) -> *mut GstContext;
8708    pub fn gst_element_get_contexts(element: *mut GstElement) -> *mut glib::GList;
8709    #[cfg(feature = "v1_18")]
8710    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8711    pub fn gst_element_get_current_clock_time(element: *mut GstElement) -> GstClockTime;
8712    #[cfg(feature = "v1_18")]
8713    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
8714    pub fn gst_element_get_current_running_time(element: *mut GstElement) -> GstClockTime;
8715    pub fn gst_element_get_factory(element: *mut GstElement) -> *mut GstElementFactory;
8716    pub fn gst_element_get_metadata(element: *mut GstElement, key: *const c_char) -> *const c_char;
8717    pub fn gst_element_get_pad_template(
8718        element: *mut GstElement,
8719        name: *const c_char,
8720    ) -> *mut GstPadTemplate;
8721    pub fn gst_element_get_pad_template_list(element: *mut GstElement) -> *mut glib::GList;
8722    pub fn gst_element_get_request_pad(
8723        element: *mut GstElement,
8724        name: *const c_char,
8725    ) -> *mut GstPad;
8726    pub fn gst_element_get_start_time(element: *mut GstElement) -> GstClockTime;
8727    pub fn gst_element_get_state(
8728        element: *mut GstElement,
8729        state: *mut GstState,
8730        pending: *mut GstState,
8731        timeout: GstClockTime,
8732    ) -> GstStateChangeReturn;
8733    pub fn gst_element_get_static_pad(element: *mut GstElement, name: *const c_char)
8734    -> *mut GstPad;
8735    pub fn gst_element_is_locked_state(element: *mut GstElement) -> gboolean;
8736    pub fn gst_element_iterate_pads(element: *mut GstElement) -> *mut GstIterator;
8737    pub fn gst_element_iterate_sink_pads(element: *mut GstElement) -> *mut GstIterator;
8738    pub fn gst_element_iterate_src_pads(element: *mut GstElement) -> *mut GstIterator;
8739    pub fn gst_element_link(src: *mut GstElement, dest: *mut GstElement) -> gboolean;
8740    pub fn gst_element_link_filtered(
8741        src: *mut GstElement,
8742        dest: *mut GstElement,
8743        filter: *mut GstCaps,
8744    ) -> gboolean;
8745    pub fn gst_element_link_many(
8746        element_1: *mut GstElement,
8747        element_2: *mut GstElement,
8748        ...
8749    ) -> gboolean;
8750    pub fn gst_element_link_pads(
8751        src: *mut GstElement,
8752        srcpadname: *const c_char,
8753        dest: *mut GstElement,
8754        destpadname: *const c_char,
8755    ) -> gboolean;
8756    pub fn gst_element_link_pads_filtered(
8757        src: *mut GstElement,
8758        srcpadname: *const c_char,
8759        dest: *mut GstElement,
8760        destpadname: *const c_char,
8761        filter: *mut GstCaps,
8762    ) -> gboolean;
8763    pub fn gst_element_link_pads_full(
8764        src: *mut GstElement,
8765        srcpadname: *const c_char,
8766        dest: *mut GstElement,
8767        destpadname: *const c_char,
8768        flags: GstPadLinkCheck,
8769    ) -> gboolean;
8770    pub fn gst_element_lost_state(element: *mut GstElement);
8771    pub fn gst_element_message_full(
8772        element: *mut GstElement,
8773        type_: GstMessageType,
8774        domain: glib::GQuark,
8775        code: c_int,
8776        text: *mut c_char,
8777        debug: *mut c_char,
8778        file: *const c_char,
8779        function: *const c_char,
8780        line: c_int,
8781    );
8782    pub fn gst_element_message_full_with_details(
8783        element: *mut GstElement,
8784        type_: GstMessageType,
8785        domain: glib::GQuark,
8786        code: c_int,
8787        text: *mut c_char,
8788        debug: *mut c_char,
8789        file: *const c_char,
8790        function: *const c_char,
8791        line: c_int,
8792        structure: *mut GstStructure,
8793    );
8794    pub fn gst_element_no_more_pads(element: *mut GstElement);
8795    pub fn gst_element_post_message(element: *mut GstElement, message: *mut GstMessage)
8796    -> gboolean;
8797    pub fn gst_element_provide_clock(element: *mut GstElement) -> *mut GstClock;
8798    pub fn gst_element_query(element: *mut GstElement, query: *mut GstQuery) -> gboolean;
8799    pub fn gst_element_query_convert(
8800        element: *mut GstElement,
8801        src_format: GstFormat,
8802        src_val: i64,
8803        dest_format: GstFormat,
8804        dest_val: *mut i64,
8805    ) -> gboolean;
8806    pub fn gst_element_query_duration(
8807        element: *mut GstElement,
8808        format: GstFormat,
8809        duration: *mut i64,
8810    ) -> gboolean;
8811    pub fn gst_element_query_position(
8812        element: *mut GstElement,
8813        format: GstFormat,
8814        cur: *mut i64,
8815    ) -> gboolean;
8816    pub fn gst_element_release_request_pad(element: *mut GstElement, pad: *mut GstPad);
8817    pub fn gst_element_remove_pad(element: *mut GstElement, pad: *mut GstPad) -> gboolean;
8818    pub fn gst_element_remove_property_notify_watch(element: *mut GstElement, watch_id: c_ulong);
8819    pub fn gst_element_request_pad(
8820        element: *mut GstElement,
8821        templ: *mut GstPadTemplate,
8822        name: *const c_char,
8823        caps: *const GstCaps,
8824    ) -> *mut GstPad;
8825    #[cfg(feature = "v1_20")]
8826    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8827    pub fn gst_element_request_pad_simple(
8828        element: *mut GstElement,
8829        name: *const c_char,
8830    ) -> *mut GstPad;
8831    pub fn gst_element_seek(
8832        element: *mut GstElement,
8833        rate: c_double,
8834        format: GstFormat,
8835        flags: GstSeekFlags,
8836        start_type: GstSeekType,
8837        start: i64,
8838        stop_type: GstSeekType,
8839        stop: i64,
8840    ) -> gboolean;
8841    pub fn gst_element_seek_simple(
8842        element: *mut GstElement,
8843        format: GstFormat,
8844        seek_flags: GstSeekFlags,
8845        seek_pos: i64,
8846    ) -> gboolean;
8847    pub fn gst_element_send_event(element: *mut GstElement, event: *mut GstEvent) -> gboolean;
8848    pub fn gst_element_set_base_time(element: *mut GstElement, time: GstClockTime);
8849    pub fn gst_element_set_bus(element: *mut GstElement, bus: *mut GstBus);
8850    pub fn gst_element_set_clock(element: *mut GstElement, clock: *mut GstClock) -> gboolean;
8851    pub fn gst_element_set_context(element: *mut GstElement, context: *mut GstContext);
8852    pub fn gst_element_set_locked_state(
8853        element: *mut GstElement,
8854        locked_state: gboolean,
8855    ) -> gboolean;
8856    pub fn gst_element_set_start_time(element: *mut GstElement, time: GstClockTime);
8857    pub fn gst_element_set_state(element: *mut GstElement, state: GstState)
8858    -> GstStateChangeReturn;
8859    pub fn gst_element_sync_state_with_parent(element: *mut GstElement) -> gboolean;
8860    pub fn gst_element_unlink(src: *mut GstElement, dest: *mut GstElement);
8861    pub fn gst_element_unlink_many(element_1: *mut GstElement, element_2: *mut GstElement, ...);
8862    pub fn gst_element_unlink_pads(
8863        src: *mut GstElement,
8864        srcpadname: *const c_char,
8865        dest: *mut GstElement,
8866        destpadname: *const c_char,
8867    );
8868
8869    //=========================================================================
8870    // GstElementFactory
8871    //=========================================================================
8872    pub fn gst_element_factory_get_type() -> GType;
8873    pub fn gst_element_factory_find(name: *const c_char) -> *mut GstElementFactory;
8874    pub fn gst_element_factory_list_filter(
8875        list: *mut glib::GList,
8876        caps: *const GstCaps,
8877        direction: GstPadDirection,
8878        subsetonly: gboolean,
8879    ) -> *mut glib::GList;
8880    pub fn gst_element_factory_list_get_elements(
8881        type_: GstElementFactoryListType,
8882        minrank: GstRank,
8883    ) -> *mut glib::GList;
8884    pub fn gst_element_factory_make(
8885        factoryname: *const c_char,
8886        name: *const c_char,
8887    ) -> *mut GstElement;
8888    #[cfg(feature = "v1_20")]
8889    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8890    pub fn gst_element_factory_make_full(
8891        factoryname: *const c_char,
8892        first: *const c_char,
8893        ...
8894    ) -> *mut GstElement;
8895    //#[cfg(feature = "v1_20")]
8896    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8897    //pub fn gst_element_factory_make_valist(factoryname: *const c_char, first: *const c_char, properties: /*Unimplemented*/va_list) -> *mut GstElement;
8898    #[cfg(feature = "v1_20")]
8899    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8900    pub fn gst_element_factory_make_with_properties(
8901        factoryname: *const c_char,
8902        n: c_uint,
8903        names: *mut *const c_char,
8904        values: *const gobject::GValue,
8905    ) -> *mut GstElement;
8906    pub fn gst_element_factory_can_sink_all_caps(
8907        factory: *mut GstElementFactory,
8908        caps: *const GstCaps,
8909    ) -> gboolean;
8910    pub fn gst_element_factory_can_sink_any_caps(
8911        factory: *mut GstElementFactory,
8912        caps: *const GstCaps,
8913    ) -> gboolean;
8914    pub fn gst_element_factory_can_src_all_caps(
8915        factory: *mut GstElementFactory,
8916        caps: *const GstCaps,
8917    ) -> gboolean;
8918    pub fn gst_element_factory_can_src_any_caps(
8919        factory: *mut GstElementFactory,
8920        caps: *const GstCaps,
8921    ) -> gboolean;
8922    pub fn gst_element_factory_create(
8923        factory: *mut GstElementFactory,
8924        name: *const c_char,
8925    ) -> *mut GstElement;
8926    #[cfg(feature = "v1_20")]
8927    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8928    pub fn gst_element_factory_create_full(
8929        factory: *mut GstElementFactory,
8930        first: *const c_char,
8931        ...
8932    ) -> *mut GstElement;
8933    //#[cfg(feature = "v1_20")]
8934    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8935    //pub fn gst_element_factory_create_valist(factory: *mut GstElementFactory, first: *const c_char, properties: /*Unimplemented*/va_list) -> *mut GstElement;
8936    #[cfg(feature = "v1_20")]
8937    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8938    pub fn gst_element_factory_create_with_properties(
8939        factory: *mut GstElementFactory,
8940        n: c_uint,
8941        names: *mut *const c_char,
8942        values: *const gobject::GValue,
8943    ) -> *mut GstElement;
8944    pub fn gst_element_factory_get_element_type(factory: *mut GstElementFactory) -> GType;
8945    pub fn gst_element_factory_get_metadata(
8946        factory: *mut GstElementFactory,
8947        key: *const c_char,
8948    ) -> *const c_char;
8949    pub fn gst_element_factory_get_metadata_keys(
8950        factory: *mut GstElementFactory,
8951    ) -> *mut *mut c_char;
8952    pub fn gst_element_factory_get_num_pad_templates(factory: *mut GstElementFactory) -> c_uint;
8953    #[cfg(feature = "v1_20")]
8954    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
8955    pub fn gst_element_factory_get_skip_documentation(factory: *mut GstElementFactory) -> gboolean;
8956    pub fn gst_element_factory_get_static_pad_templates(
8957        factory: *mut GstElementFactory,
8958    ) -> *const glib::GList;
8959    pub fn gst_element_factory_get_uri_protocols(
8960        factory: *mut GstElementFactory,
8961    ) -> *const *const c_char;
8962    pub fn gst_element_factory_get_uri_type(factory: *mut GstElementFactory) -> GstURIType;
8963    pub fn gst_element_factory_has_interface(
8964        factory: *mut GstElementFactory,
8965        interfacename: *const c_char,
8966    ) -> gboolean;
8967    pub fn gst_element_factory_list_is_type(
8968        factory: *mut GstElementFactory,
8969        type_: GstElementFactoryListType,
8970    ) -> gboolean;
8971
8972    //=========================================================================
8973    // GstFlagSet
8974    //=========================================================================
8975    pub fn gst_flagset_get_type() -> GType;
8976    pub fn gst_flagset_register(flags_type: GType) -> GType;
8977
8978    //=========================================================================
8979    // GstFraction
8980    //=========================================================================
8981    pub fn gst_fraction_get_type() -> GType;
8982
8983    //=========================================================================
8984    // GstFractionRange
8985    //=========================================================================
8986    pub fn gst_fraction_range_get_type() -> GType;
8987
8988    //=========================================================================
8989    // GstGhostPad
8990    //=========================================================================
8991    pub fn gst_ghost_pad_get_type() -> GType;
8992    pub fn gst_ghost_pad_new(name: *const c_char, target: *mut GstPad) -> *mut GstPad;
8993    pub fn gst_ghost_pad_new_from_template(
8994        name: *const c_char,
8995        target: *mut GstPad,
8996        templ: *mut GstPadTemplate,
8997    ) -> *mut GstPad;
8998    pub fn gst_ghost_pad_new_no_target(name: *const c_char, dir: GstPadDirection) -> *mut GstPad;
8999    pub fn gst_ghost_pad_new_no_target_from_template(
9000        name: *const c_char,
9001        templ: *mut GstPadTemplate,
9002    ) -> *mut GstPad;
9003    pub fn gst_ghost_pad_activate_mode_default(
9004        pad: *mut GstPad,
9005        parent: *mut GstObject,
9006        mode: GstPadMode,
9007        active: gboolean,
9008    ) -> gboolean;
9009    pub fn gst_ghost_pad_internal_activate_mode_default(
9010        pad: *mut GstPad,
9011        parent: *mut GstObject,
9012        mode: GstPadMode,
9013        active: gboolean,
9014    ) -> gboolean;
9015    pub fn gst_ghost_pad_construct(gpad: *mut GstGhostPad) -> gboolean;
9016    pub fn gst_ghost_pad_get_target(gpad: *mut GstGhostPad) -> *mut GstPad;
9017    pub fn gst_ghost_pad_set_target(gpad: *mut GstGhostPad, newtarget: *mut GstPad) -> gboolean;
9018
9019    //=========================================================================
9020    // GstInt64Range
9021    //=========================================================================
9022    pub fn gst_int64_range_get_type() -> GType;
9023
9024    //=========================================================================
9025    // GstIntRange
9026    //=========================================================================
9027    pub fn gst_int_range_get_type() -> GType;
9028
9029    //=========================================================================
9030    // GstMetaFactory
9031    //=========================================================================
9032    #[cfg(feature = "v1_28")]
9033    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9034    pub fn gst_meta_factory_get_type() -> GType;
9035    #[cfg(feature = "v1_28")]
9036    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9037    pub fn gst_meta_factory_load(factoryname: *const c_char) -> *const GstMetaInfo;
9038    #[cfg(feature = "v1_28")]
9039    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9040    pub fn gst_meta_factory_register(
9041        plugin: *mut GstPlugin,
9042        meta_info: *const GstMetaInfo,
9043    ) -> gboolean;
9044
9045    //=========================================================================
9046    // GstObject
9047    //=========================================================================
9048    pub fn gst_object_get_type() -> GType;
9049    pub fn gst_object_check_uniqueness(list: *mut glib::GList, name: *const c_char) -> gboolean;
9050    pub fn gst_object_default_deep_notify(
9051        object: *mut gobject::GObject,
9052        orig: *mut GstObject,
9053        pspec: *mut gobject::GParamSpec,
9054        excluded_props: *mut *mut c_char,
9055    );
9056    pub fn gst_object_ref_sink(object: gpointer) -> gpointer;
9057    pub fn gst_object_replace(oldobj: *mut *mut GstObject, newobj: *mut GstObject) -> gboolean;
9058    pub fn gst_object_add_control_binding(
9059        object: *mut GstObject,
9060        binding: *mut GstControlBinding,
9061    ) -> gboolean;
9062    #[cfg(feature = "v1_28")]
9063    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9064    pub fn gst_object_call_async(
9065        object: *mut GstObject,
9066        func: GstObjectCallAsyncFunc,
9067        user_data: gpointer,
9068    );
9069    pub fn gst_object_default_error(
9070        source: *mut GstObject,
9071        error: *const glib::GError,
9072        debug: *const c_char,
9073    );
9074    pub fn gst_object_get_control_binding(
9075        object: *mut GstObject,
9076        property_name: *const c_char,
9077    ) -> *mut GstControlBinding;
9078    pub fn gst_object_get_control_rate(object: *mut GstObject) -> GstClockTime;
9079    pub fn gst_object_get_g_value_array(
9080        object: *mut GstObject,
9081        property_name: *const c_char,
9082        timestamp: GstClockTime,
9083        interval: GstClockTime,
9084        n_values: c_uint,
9085        values: *mut gobject::GValue,
9086    ) -> gboolean;
9087    pub fn gst_object_get_name(object: *mut GstObject) -> *mut c_char;
9088    pub fn gst_object_get_parent(object: *mut GstObject) -> *mut GstObject;
9089    pub fn gst_object_get_path_string(object: *mut GstObject) -> *mut c_char;
9090    #[cfg(feature = "v1_28")]
9091    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9092    pub fn gst_object_get_toplevel(object: *mut GstObject) -> *mut GstObject;
9093    pub fn gst_object_get_value(
9094        object: *mut GstObject,
9095        property_name: *const c_char,
9096        timestamp: GstClockTime,
9097    ) -> *mut gobject::GValue;
9098    pub fn gst_object_get_value_array(
9099        object: *mut GstObject,
9100        property_name: *const c_char,
9101        timestamp: GstClockTime,
9102        interval: GstClockTime,
9103        n_values: c_uint,
9104        values: gpointer,
9105    ) -> gboolean;
9106    pub fn gst_object_has_active_control_bindings(object: *mut GstObject) -> gboolean;
9107    pub fn gst_object_has_ancestor(object: *mut GstObject, ancestor: *mut GstObject) -> gboolean;
9108    pub fn gst_object_has_as_ancestor(object: *mut GstObject, ancestor: *mut GstObject)
9109    -> gboolean;
9110    pub fn gst_object_has_as_parent(object: *mut GstObject, parent: *mut GstObject) -> gboolean;
9111    pub fn gst_object_ref(object: *mut GstObject) -> *mut GstObject;
9112    pub fn gst_object_remove_control_binding(
9113        object: *mut GstObject,
9114        binding: *mut GstControlBinding,
9115    ) -> gboolean;
9116    pub fn gst_object_set_control_binding_disabled(
9117        object: *mut GstObject,
9118        property_name: *const c_char,
9119        disabled: gboolean,
9120    );
9121    pub fn gst_object_set_control_bindings_disabled(object: *mut GstObject, disabled: gboolean);
9122    pub fn gst_object_set_control_rate(object: *mut GstObject, control_rate: GstClockTime);
9123    pub fn gst_object_set_name(object: *mut GstObject, name: *const c_char) -> gboolean;
9124    pub fn gst_object_set_parent(object: *mut GstObject, parent: *mut GstObject) -> gboolean;
9125    pub fn gst_object_suggest_next_sync(object: *mut GstObject) -> GstClockTime;
9126    pub fn gst_object_sync_values(object: *mut GstObject, timestamp: GstClockTime) -> gboolean;
9127    pub fn gst_object_unparent(object: *mut GstObject);
9128    pub fn gst_object_unref(object: *mut GstObject);
9129
9130    //=========================================================================
9131    // GstPad
9132    //=========================================================================
9133    pub fn gst_pad_get_type() -> GType;
9134    pub fn gst_pad_new(name: *const c_char, direction: GstPadDirection) -> *mut GstPad;
9135    pub fn gst_pad_new_from_static_template(
9136        templ: *mut GstStaticPadTemplate,
9137        name: *const c_char,
9138    ) -> *mut GstPad;
9139    pub fn gst_pad_new_from_template(
9140        templ: *mut GstPadTemplate,
9141        name: *const c_char,
9142    ) -> *mut GstPad;
9143    pub fn gst_pad_link_get_name(ret: GstPadLinkReturn) -> *const c_char;
9144    pub fn gst_pad_activate_mode(pad: *mut GstPad, mode: GstPadMode, active: gboolean) -> gboolean;
9145    pub fn gst_pad_add_probe(
9146        pad: *mut GstPad,
9147        mask: GstPadProbeType,
9148        callback: GstPadProbeCallback,
9149        user_data: gpointer,
9150        destroy_data: glib::GDestroyNotify,
9151    ) -> c_ulong;
9152    pub fn gst_pad_can_link(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> gboolean;
9153    pub fn gst_pad_chain(pad: *mut GstPad, buffer: *mut GstBuffer) -> GstFlowReturn;
9154    pub fn gst_pad_chain_list(pad: *mut GstPad, list: *mut GstBufferList) -> GstFlowReturn;
9155    pub fn gst_pad_check_reconfigure(pad: *mut GstPad) -> gboolean;
9156    pub fn gst_pad_create_stream_id(
9157        pad: *mut GstPad,
9158        parent: *mut GstElement,
9159        stream_id: *const c_char,
9160    ) -> *mut c_char;
9161    pub fn gst_pad_create_stream_id_printf(
9162        pad: *mut GstPad,
9163        parent: *mut GstElement,
9164        stream_id: *const c_char,
9165        ...
9166    ) -> *mut c_char;
9167    //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;
9168    pub fn gst_pad_event_default(
9169        pad: *mut GstPad,
9170        parent: *mut GstObject,
9171        event: *mut GstEvent,
9172    ) -> gboolean;
9173    pub fn gst_pad_forward(
9174        pad: *mut GstPad,
9175        forward: GstPadForwardFunction,
9176        user_data: gpointer,
9177    ) -> gboolean;
9178    pub fn gst_pad_get_allowed_caps(pad: *mut GstPad) -> *mut GstCaps;
9179    pub fn gst_pad_get_current_caps(pad: *mut GstPad) -> *mut GstCaps;
9180    pub fn gst_pad_get_direction(pad: *mut GstPad) -> GstPadDirection;
9181    pub fn gst_pad_get_element_private(pad: *mut GstPad) -> gpointer;
9182    pub fn gst_pad_get_last_flow_return(pad: *mut GstPad) -> GstFlowReturn;
9183    pub fn gst_pad_get_offset(pad: *mut GstPad) -> i64;
9184    pub fn gst_pad_get_pad_template(pad: *mut GstPad) -> *mut GstPadTemplate;
9185    pub fn gst_pad_get_pad_template_caps(pad: *mut GstPad) -> *mut GstCaps;
9186    pub fn gst_pad_get_parent_element(pad: *mut GstPad) -> *mut GstElement;
9187    pub fn gst_pad_get_peer(pad: *mut GstPad) -> *mut GstPad;
9188    pub fn gst_pad_get_range(
9189        pad: *mut GstPad,
9190        offset: u64,
9191        size: c_uint,
9192        buffer: *mut *mut GstBuffer,
9193    ) -> GstFlowReturn;
9194    #[cfg(feature = "v1_18")]
9195    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9196    pub fn gst_pad_get_single_internal_link(pad: *mut GstPad) -> *mut GstPad;
9197    pub fn gst_pad_get_sticky_event(
9198        pad: *mut GstPad,
9199        event_type: GstEventType,
9200        idx: c_uint,
9201    ) -> *mut GstEvent;
9202    pub fn gst_pad_get_stream(pad: *mut GstPad) -> *mut GstStream;
9203    pub fn gst_pad_get_stream_id(pad: *mut GstPad) -> *mut c_char;
9204    pub fn gst_pad_get_task_state(pad: *mut GstPad) -> GstTaskState;
9205    pub fn gst_pad_has_current_caps(pad: *mut GstPad) -> gboolean;
9206    pub fn gst_pad_is_active(pad: *mut GstPad) -> gboolean;
9207    pub fn gst_pad_is_blocked(pad: *mut GstPad) -> gboolean;
9208    pub fn gst_pad_is_blocking(pad: *mut GstPad) -> gboolean;
9209    pub fn gst_pad_is_linked(pad: *mut GstPad) -> gboolean;
9210    pub fn gst_pad_iterate_internal_links(pad: *mut GstPad) -> *mut GstIterator;
9211    pub fn gst_pad_iterate_internal_links_default(
9212        pad: *mut GstPad,
9213        parent: *mut GstObject,
9214    ) -> *mut GstIterator;
9215    pub fn gst_pad_link(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> GstPadLinkReturn;
9216    pub fn gst_pad_link_full(
9217        srcpad: *mut GstPad,
9218        sinkpad: *mut GstPad,
9219        flags: GstPadLinkCheck,
9220    ) -> GstPadLinkReturn;
9221    pub fn gst_pad_link_maybe_ghosting(src: *mut GstPad, sink: *mut GstPad) -> gboolean;
9222    pub fn gst_pad_link_maybe_ghosting_full(
9223        src: *mut GstPad,
9224        sink: *mut GstPad,
9225        flags: GstPadLinkCheck,
9226    ) -> gboolean;
9227    pub fn gst_pad_mark_reconfigure(pad: *mut GstPad);
9228    pub fn gst_pad_needs_reconfigure(pad: *mut GstPad) -> gboolean;
9229    pub fn gst_pad_pause_task(pad: *mut GstPad) -> gboolean;
9230    pub fn gst_pad_peer_query(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
9231    pub fn gst_pad_peer_query_accept_caps(pad: *mut GstPad, caps: *mut GstCaps) -> gboolean;
9232    pub fn gst_pad_peer_query_caps(pad: *mut GstPad, filter: *mut GstCaps) -> *mut GstCaps;
9233    pub fn gst_pad_peer_query_convert(
9234        pad: *mut GstPad,
9235        src_format: GstFormat,
9236        src_val: i64,
9237        dest_format: GstFormat,
9238        dest_val: *mut i64,
9239    ) -> gboolean;
9240    pub fn gst_pad_peer_query_duration(
9241        pad: *mut GstPad,
9242        format: GstFormat,
9243        duration: *mut i64,
9244    ) -> gboolean;
9245    pub fn gst_pad_peer_query_position(
9246        pad: *mut GstPad,
9247        format: GstFormat,
9248        cur: *mut i64,
9249    ) -> gboolean;
9250    pub fn gst_pad_proxy_query_accept_caps(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
9251    pub fn gst_pad_proxy_query_caps(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
9252    pub fn gst_pad_pull_range(
9253        pad: *mut GstPad,
9254        offset: u64,
9255        size: c_uint,
9256        buffer: *mut *mut GstBuffer,
9257    ) -> GstFlowReturn;
9258    pub fn gst_pad_push(pad: *mut GstPad, buffer: *mut GstBuffer) -> GstFlowReturn;
9259    pub fn gst_pad_push_event(pad: *mut GstPad, event: *mut GstEvent) -> gboolean;
9260    pub fn gst_pad_push_list(pad: *mut GstPad, list: *mut GstBufferList) -> GstFlowReturn;
9261    pub fn gst_pad_query(pad: *mut GstPad, query: *mut GstQuery) -> gboolean;
9262    pub fn gst_pad_query_accept_caps(pad: *mut GstPad, caps: *mut GstCaps) -> gboolean;
9263    pub fn gst_pad_query_caps(pad: *mut GstPad, filter: *mut GstCaps) -> *mut GstCaps;
9264    pub fn gst_pad_query_convert(
9265        pad: *mut GstPad,
9266        src_format: GstFormat,
9267        src_val: i64,
9268        dest_format: GstFormat,
9269        dest_val: *mut i64,
9270    ) -> gboolean;
9271    pub fn gst_pad_query_default(
9272        pad: *mut GstPad,
9273        parent: *mut GstObject,
9274        query: *mut GstQuery,
9275    ) -> gboolean;
9276    pub fn gst_pad_query_duration(
9277        pad: *mut GstPad,
9278        format: GstFormat,
9279        duration: *mut i64,
9280    ) -> gboolean;
9281    pub fn gst_pad_query_position(pad: *mut GstPad, format: GstFormat, cur: *mut i64) -> gboolean;
9282    pub fn gst_pad_remove_probe(pad: *mut GstPad, id: c_ulong);
9283    pub fn gst_pad_send_event(pad: *mut GstPad, event: *mut GstEvent) -> gboolean;
9284    pub fn gst_pad_set_activate_function_full(
9285        pad: *mut GstPad,
9286        activate: GstPadActivateFunction,
9287        user_data: gpointer,
9288        notify: glib::GDestroyNotify,
9289    );
9290    pub fn gst_pad_set_activatemode_function_full(
9291        pad: *mut GstPad,
9292        activatemode: GstPadActivateModeFunction,
9293        user_data: gpointer,
9294        notify: glib::GDestroyNotify,
9295    );
9296    pub fn gst_pad_set_active(pad: *mut GstPad, active: gboolean) -> gboolean;
9297    pub fn gst_pad_set_chain_function_full(
9298        pad: *mut GstPad,
9299        chain: GstPadChainFunction,
9300        user_data: gpointer,
9301        notify: glib::GDestroyNotify,
9302    );
9303    pub fn gst_pad_set_chain_list_function_full(
9304        pad: *mut GstPad,
9305        chainlist: GstPadChainListFunction,
9306        user_data: gpointer,
9307        notify: glib::GDestroyNotify,
9308    );
9309    pub fn gst_pad_set_element_private(pad: *mut GstPad, priv_: gpointer);
9310    pub fn gst_pad_set_event_full_function_full(
9311        pad: *mut GstPad,
9312        event: GstPadEventFullFunction,
9313        user_data: gpointer,
9314        notify: glib::GDestroyNotify,
9315    );
9316    pub fn gst_pad_set_event_function_full(
9317        pad: *mut GstPad,
9318        event: GstPadEventFunction,
9319        user_data: gpointer,
9320        notify: glib::GDestroyNotify,
9321    );
9322    pub fn gst_pad_set_getrange_function_full(
9323        pad: *mut GstPad,
9324        get: GstPadGetRangeFunction,
9325        user_data: gpointer,
9326        notify: glib::GDestroyNotify,
9327    );
9328    pub fn gst_pad_set_iterate_internal_links_function_full(
9329        pad: *mut GstPad,
9330        iterintlink: GstPadIterIntLinkFunction,
9331        user_data: gpointer,
9332        notify: glib::GDestroyNotify,
9333    );
9334    pub fn gst_pad_set_link_function_full(
9335        pad: *mut GstPad,
9336        link: GstPadLinkFunction,
9337        user_data: gpointer,
9338        notify: glib::GDestroyNotify,
9339    );
9340    pub fn gst_pad_set_offset(pad: *mut GstPad, offset: i64);
9341    pub fn gst_pad_set_query_function_full(
9342        pad: *mut GstPad,
9343        query: GstPadQueryFunction,
9344        user_data: gpointer,
9345        notify: glib::GDestroyNotify,
9346    );
9347    pub fn gst_pad_set_unlink_function_full(
9348        pad: *mut GstPad,
9349        unlink: GstPadUnlinkFunction,
9350        user_data: gpointer,
9351        notify: glib::GDestroyNotify,
9352    );
9353    pub fn gst_pad_start_task(
9354        pad: *mut GstPad,
9355        func: GstTaskFunction,
9356        user_data: gpointer,
9357        notify: glib::GDestroyNotify,
9358    ) -> gboolean;
9359    pub fn gst_pad_sticky_events_foreach(
9360        pad: *mut GstPad,
9361        foreach_func: GstPadStickyEventsForeachFunction,
9362        user_data: gpointer,
9363    );
9364    pub fn gst_pad_stop_task(pad: *mut GstPad) -> gboolean;
9365    pub fn gst_pad_store_sticky_event(pad: *mut GstPad, event: *mut GstEvent) -> GstFlowReturn;
9366    pub fn gst_pad_unlink(srcpad: *mut GstPad, sinkpad: *mut GstPad) -> gboolean;
9367    pub fn gst_pad_use_fixed_caps(pad: *mut GstPad);
9368
9369    //=========================================================================
9370    // GstPadTemplate
9371    //=========================================================================
9372    pub fn gst_pad_template_get_type() -> GType;
9373    pub fn gst_pad_template_new(
9374        name_template: *const c_char,
9375        direction: GstPadDirection,
9376        presence: GstPadPresence,
9377        caps: *mut GstCaps,
9378    ) -> *mut GstPadTemplate;
9379    pub fn gst_pad_template_new_from_static_pad_template_with_gtype(
9380        pad_template: *mut GstStaticPadTemplate,
9381        pad_type: GType,
9382    ) -> *mut GstPadTemplate;
9383    pub fn gst_pad_template_new_with_gtype(
9384        name_template: *const c_char,
9385        direction: GstPadDirection,
9386        presence: GstPadPresence,
9387        caps: *mut GstCaps,
9388        pad_type: GType,
9389    ) -> *mut GstPadTemplate;
9390    pub fn gst_pad_template_get_caps(templ: *mut GstPadTemplate) -> *mut GstCaps;
9391    #[cfg(feature = "v1_18")]
9392    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9393    pub fn gst_pad_template_get_documentation_caps(templ: *mut GstPadTemplate) -> *mut GstCaps;
9394    pub fn gst_pad_template_pad_created(templ: *mut GstPadTemplate, pad: *mut GstPad);
9395    #[cfg(feature = "v1_18")]
9396    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9397    pub fn gst_pad_template_set_documentation_caps(templ: *mut GstPadTemplate, caps: *mut GstCaps);
9398
9399    //=========================================================================
9400    // GstParamArray
9401    //=========================================================================
9402    pub fn gst_param_spec_array_get_type() -> GType;
9403
9404    //=========================================================================
9405    // GstParamFraction
9406    //=========================================================================
9407    pub fn gst_param_spec_fraction_get_type() -> GType;
9408
9409    //=========================================================================
9410    // GstPipeline
9411    //=========================================================================
9412    pub fn gst_pipeline_get_type() -> GType;
9413    pub fn gst_pipeline_new(name: *const c_char) -> *mut GstElement;
9414    pub fn gst_pipeline_auto_clock(pipeline: *mut GstPipeline);
9415    pub fn gst_pipeline_get_auto_flush_bus(pipeline: *mut GstPipeline) -> gboolean;
9416    pub fn gst_pipeline_get_bus(pipeline: *mut GstPipeline) -> *mut GstBus;
9417    pub fn gst_pipeline_get_clock(pipeline: *mut GstPipeline) -> *mut GstClock;
9418    #[cfg(feature = "v1_24")]
9419    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9420    pub fn gst_pipeline_get_configured_latency(pipeline: *mut GstPipeline) -> GstClockTime;
9421    pub fn gst_pipeline_get_delay(pipeline: *mut GstPipeline) -> GstClockTime;
9422    pub fn gst_pipeline_get_latency(pipeline: *mut GstPipeline) -> GstClockTime;
9423    pub fn gst_pipeline_get_pipeline_clock(pipeline: *mut GstPipeline) -> *mut GstClock;
9424    #[cfg(feature = "v1_24")]
9425    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9426    pub fn gst_pipeline_is_live(pipeline: *mut GstPipeline) -> gboolean;
9427    pub fn gst_pipeline_set_auto_flush_bus(pipeline: *mut GstPipeline, auto_flush: gboolean);
9428    pub fn gst_pipeline_set_clock(pipeline: *mut GstPipeline, clock: *mut GstClock) -> gboolean;
9429    pub fn gst_pipeline_set_delay(pipeline: *mut GstPipeline, delay: GstClockTime);
9430    pub fn gst_pipeline_set_latency(pipeline: *mut GstPipeline, latency: GstClockTime);
9431    pub fn gst_pipeline_use_clock(pipeline: *mut GstPipeline, clock: *mut GstClock);
9432
9433    //=========================================================================
9434    // GstPlugin
9435    //=========================================================================
9436    pub fn gst_plugin_get_type() -> GType;
9437    pub fn gst_plugin_list_free(list: *mut glib::GList);
9438    pub fn gst_plugin_load_by_name(name: *const c_char) -> *mut GstPlugin;
9439    pub fn gst_plugin_load_file(
9440        filename: *const c_char,
9441        error: *mut *mut glib::GError,
9442    ) -> *mut GstPlugin;
9443    pub fn gst_plugin_register_static(
9444        major_version: c_int,
9445        minor_version: c_int,
9446        name: *const c_char,
9447        description: *const c_char,
9448        init_func: GstPluginInitFunc,
9449        version: *const c_char,
9450        license: *const c_char,
9451        source: *const c_char,
9452        package: *const c_char,
9453        origin: *const c_char,
9454    ) -> gboolean;
9455    pub fn gst_plugin_register_static_full(
9456        major_version: c_int,
9457        minor_version: c_int,
9458        name: *const c_char,
9459        description: *const c_char,
9460        init_full_func: GstPluginInitFullFunc,
9461        version: *const c_char,
9462        license: *const c_char,
9463        source: *const c_char,
9464        package: *const c_char,
9465        origin: *const c_char,
9466        user_data: gpointer,
9467    ) -> gboolean;
9468    pub fn gst_plugin_add_dependency(
9469        plugin: *mut GstPlugin,
9470        env_vars: *mut *const c_char,
9471        paths: *mut *const c_char,
9472        names: *mut *const c_char,
9473        flags: GstPluginDependencyFlags,
9474    );
9475    pub fn gst_plugin_add_dependency_simple(
9476        plugin: *mut GstPlugin,
9477        env_vars: *const c_char,
9478        paths: *const c_char,
9479        names: *const c_char,
9480        flags: GstPluginDependencyFlags,
9481    );
9482    #[cfg(feature = "v1_24")]
9483    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9484    pub fn gst_plugin_add_status_error(plugin: *mut GstPlugin, message: *const c_char);
9485    #[cfg(feature = "v1_24")]
9486    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9487    pub fn gst_plugin_add_status_info(plugin: *mut GstPlugin, message: *const c_char);
9488    #[cfg(feature = "v1_24")]
9489    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9490    pub fn gst_plugin_add_status_warning(plugin: *mut GstPlugin, message: *const c_char);
9491    pub fn gst_plugin_get_cache_data(plugin: *mut GstPlugin) -> *const GstStructure;
9492    pub fn gst_plugin_get_description(plugin: *mut GstPlugin) -> *const c_char;
9493    pub fn gst_plugin_get_filename(plugin: *mut GstPlugin) -> *const c_char;
9494    pub fn gst_plugin_get_license(plugin: *mut GstPlugin) -> *const c_char;
9495    pub fn gst_plugin_get_name(plugin: *mut GstPlugin) -> *const c_char;
9496    pub fn gst_plugin_get_origin(plugin: *mut GstPlugin) -> *const c_char;
9497    pub fn gst_plugin_get_package(plugin: *mut GstPlugin) -> *const c_char;
9498    #[cfg(feature = "v1_30")]
9499    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
9500    pub fn gst_plugin_get_registry(plugin: *mut GstPlugin) -> *mut GstRegistry;
9501    pub fn gst_plugin_get_release_date_string(plugin: *mut GstPlugin) -> *const c_char;
9502    pub fn gst_plugin_get_source(plugin: *mut GstPlugin) -> *const c_char;
9503    #[cfg(feature = "v1_24")]
9504    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9505    pub fn gst_plugin_get_status_errors(plugin: *mut GstPlugin) -> *mut *mut c_char;
9506    #[cfg(feature = "v1_24")]
9507    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9508    pub fn gst_plugin_get_status_infos(plugin: *mut GstPlugin) -> *mut *mut c_char;
9509    #[cfg(feature = "v1_24")]
9510    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
9511    pub fn gst_plugin_get_status_warnings(plugin: *mut GstPlugin) -> *mut *mut c_char;
9512    pub fn gst_plugin_get_version(plugin: *mut GstPlugin) -> *const c_char;
9513    pub fn gst_plugin_is_loaded(plugin: *mut GstPlugin) -> gboolean;
9514    pub fn gst_plugin_load(plugin: *mut GstPlugin) -> *mut GstPlugin;
9515    pub fn gst_plugin_set_cache_data(plugin: *mut GstPlugin, cache_data: *mut GstStructure);
9516    #[cfg(feature = "v1_30")]
9517    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
9518    pub fn gst_plugin_set_static_features_flag(plugin: *mut GstPlugin);
9519
9520    //=========================================================================
9521    // GstPluginFeature
9522    //=========================================================================
9523    pub fn gst_plugin_feature_get_type() -> GType;
9524    pub fn gst_plugin_feature_list_copy(list: *mut glib::GList) -> *mut glib::GList;
9525    pub fn gst_plugin_feature_list_debug(list: *mut glib::GList);
9526    pub fn gst_plugin_feature_list_free(list: *mut glib::GList);
9527    pub fn gst_plugin_feature_rank_compare_func(p1: gconstpointer, p2: gconstpointer) -> c_int;
9528    pub fn gst_plugin_feature_check_version(
9529        feature: *mut GstPluginFeature,
9530        min_major: c_uint,
9531        min_minor: c_uint,
9532        min_micro: c_uint,
9533    ) -> gboolean;
9534    pub fn gst_plugin_feature_get_plugin(feature: *mut GstPluginFeature) -> *mut GstPlugin;
9535    pub fn gst_plugin_feature_get_plugin_name(feature: *mut GstPluginFeature) -> *const c_char;
9536    pub fn gst_plugin_feature_get_rank(feature: *mut GstPluginFeature) -> c_uint;
9537    pub fn gst_plugin_feature_load(feature: *mut GstPluginFeature) -> *mut GstPluginFeature;
9538    pub fn gst_plugin_feature_set_rank(feature: *mut GstPluginFeature, rank: c_uint);
9539
9540    //=========================================================================
9541    // GstProxyPad
9542    //=========================================================================
9543    pub fn gst_proxy_pad_get_type() -> GType;
9544    pub fn gst_proxy_pad_chain_default(
9545        pad: *mut GstPad,
9546        parent: *mut GstObject,
9547        buffer: *mut GstBuffer,
9548    ) -> GstFlowReturn;
9549    pub fn gst_proxy_pad_chain_list_default(
9550        pad: *mut GstPad,
9551        parent: *mut GstObject,
9552        list: *mut GstBufferList,
9553    ) -> GstFlowReturn;
9554    pub fn gst_proxy_pad_getrange_default(
9555        pad: *mut GstPad,
9556        parent: *mut GstObject,
9557        offset: u64,
9558        size: c_uint,
9559        buffer: *mut *mut GstBuffer,
9560    ) -> GstFlowReturn;
9561    pub fn gst_proxy_pad_iterate_internal_links_default(
9562        pad: *mut GstPad,
9563        parent: *mut GstObject,
9564    ) -> *mut GstIterator;
9565    pub fn gst_proxy_pad_get_internal(pad: *mut GstProxyPad) -> *mut GstProxyPad;
9566
9567    //=========================================================================
9568    // GstRegistry
9569    //=========================================================================
9570    pub fn gst_registry_get_type() -> GType;
9571    pub fn gst_registry_fork_is_enabled() -> gboolean;
9572    pub fn gst_registry_fork_set_enabled(enabled: gboolean);
9573    pub fn gst_registry_get() -> *mut GstRegistry;
9574    pub fn gst_registry_add_feature(
9575        registry: *mut GstRegistry,
9576        feature: *mut GstPluginFeature,
9577    ) -> gboolean;
9578    pub fn gst_registry_add_plugin(registry: *mut GstRegistry, plugin: *mut GstPlugin) -> gboolean;
9579    pub fn gst_registry_check_feature_version(
9580        registry: *mut GstRegistry,
9581        feature_name: *const c_char,
9582        min_major: c_uint,
9583        min_minor: c_uint,
9584        min_micro: c_uint,
9585    ) -> gboolean;
9586    pub fn gst_registry_feature_filter(
9587        registry: *mut GstRegistry,
9588        filter: GstPluginFeatureFilter,
9589        first: gboolean,
9590        user_data: gpointer,
9591    ) -> *mut glib::GList;
9592    pub fn gst_registry_find_feature(
9593        registry: *mut GstRegistry,
9594        name: *const c_char,
9595        type_: GType,
9596    ) -> *mut GstPluginFeature;
9597    pub fn gst_registry_find_plugin(
9598        registry: *mut GstRegistry,
9599        name: *const c_char,
9600    ) -> *mut GstPlugin;
9601    pub fn gst_registry_get_feature_list(
9602        registry: *mut GstRegistry,
9603        type_: GType,
9604    ) -> *mut glib::GList;
9605    pub fn gst_registry_get_feature_list_by_plugin(
9606        registry: *mut GstRegistry,
9607        name: *const c_char,
9608    ) -> *mut glib::GList;
9609    pub fn gst_registry_get_feature_list_cookie(registry: *mut GstRegistry) -> u32;
9610    pub fn gst_registry_get_plugin_list(registry: *mut GstRegistry) -> *mut glib::GList;
9611    pub fn gst_registry_lookup(
9612        registry: *mut GstRegistry,
9613        filename: *const c_char,
9614    ) -> *mut GstPlugin;
9615    pub fn gst_registry_lookup_feature(
9616        registry: *mut GstRegistry,
9617        name: *const c_char,
9618    ) -> *mut GstPluginFeature;
9619    pub fn gst_registry_plugin_filter(
9620        registry: *mut GstRegistry,
9621        filter: GstPluginFilter,
9622        first: gboolean,
9623        user_data: gpointer,
9624    ) -> *mut glib::GList;
9625    pub fn gst_registry_remove_feature(registry: *mut GstRegistry, feature: *mut GstPluginFeature);
9626    pub fn gst_registry_remove_plugin(registry: *mut GstRegistry, plugin: *mut GstPlugin);
9627    pub fn gst_registry_scan_path(registry: *mut GstRegistry, path: *const c_char) -> gboolean;
9628
9629    //=========================================================================
9630    // GstSharedTaskPool
9631    //=========================================================================
9632    #[cfg(feature = "v1_20")]
9633    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9634    pub fn gst_shared_task_pool_get_type() -> GType;
9635    #[cfg(feature = "v1_20")]
9636    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9637    pub fn gst_shared_task_pool_new() -> *mut GstTaskPool;
9638    #[cfg(feature = "v1_20")]
9639    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9640    pub fn gst_shared_task_pool_get_max_threads(pool: *mut GstSharedTaskPool) -> c_uint;
9641    #[cfg(feature = "v1_20")]
9642    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9643    pub fn gst_shared_task_pool_set_max_threads(pool: *mut GstSharedTaskPool, max_threads: c_uint);
9644
9645    //=========================================================================
9646    // GstStream
9647    //=========================================================================
9648    pub fn gst_stream_get_type() -> GType;
9649    pub fn gst_stream_new(
9650        stream_id: *const c_char,
9651        caps: *mut GstCaps,
9652        type_: GstStreamType,
9653        flags: GstStreamFlags,
9654    ) -> *mut GstStream;
9655    pub fn gst_stream_get_caps(stream: *mut GstStream) -> *mut GstCaps;
9656    pub fn gst_stream_get_stream_flags(stream: *mut GstStream) -> GstStreamFlags;
9657    pub fn gst_stream_get_stream_id(stream: *mut GstStream) -> *const c_char;
9658    pub fn gst_stream_get_stream_type(stream: *mut GstStream) -> GstStreamType;
9659    pub fn gst_stream_get_tags(stream: *mut GstStream) -> *mut GstTagList;
9660    pub fn gst_stream_set_caps(stream: *mut GstStream, caps: *mut GstCaps);
9661    pub fn gst_stream_set_stream_flags(stream: *mut GstStream, flags: GstStreamFlags);
9662    pub fn gst_stream_set_stream_type(stream: *mut GstStream, stream_type: GstStreamType);
9663    pub fn gst_stream_set_tags(stream: *mut GstStream, tags: *mut GstTagList);
9664
9665    //=========================================================================
9666    // GstStreamCollection
9667    //=========================================================================
9668    pub fn gst_stream_collection_get_type() -> GType;
9669    pub fn gst_stream_collection_new(upstream_id: *const c_char) -> *mut GstStreamCollection;
9670    pub fn gst_stream_collection_add_stream(
9671        collection: *mut GstStreamCollection,
9672        stream: *mut GstStream,
9673    ) -> gboolean;
9674    pub fn gst_stream_collection_get_size(collection: *mut GstStreamCollection) -> c_uint;
9675    pub fn gst_stream_collection_get_stream(
9676        collection: *mut GstStreamCollection,
9677        index: c_uint,
9678    ) -> *mut GstStream;
9679    pub fn gst_stream_collection_get_upstream_id(
9680        collection: *mut GstStreamCollection,
9681    ) -> *const c_char;
9682
9683    //=========================================================================
9684    // GstSystemClock
9685    //=========================================================================
9686    pub fn gst_system_clock_get_type() -> GType;
9687    #[cfg(feature = "v1_30")]
9688    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
9689    pub fn gst_system_clock_new(name: *const c_char, clock_type: GstClockType) -> *mut GstClock;
9690    pub fn gst_system_clock_obtain() -> *mut GstClock;
9691    pub fn gst_system_clock_set_default(new_clock: *mut GstClock);
9692
9693    //=========================================================================
9694    // GstTask
9695    //=========================================================================
9696    pub fn gst_task_get_type() -> GType;
9697    pub fn gst_task_new(
9698        func: GstTaskFunction,
9699        user_data: gpointer,
9700        notify: glib::GDestroyNotify,
9701    ) -> *mut GstTask;
9702    pub fn gst_task_cleanup_all();
9703    pub fn gst_task_get_pool(task: *mut GstTask) -> *mut GstTaskPool;
9704    pub fn gst_task_get_state(task: *mut GstTask) -> GstTaskState;
9705    pub fn gst_task_join(task: *mut GstTask) -> gboolean;
9706    pub fn gst_task_pause(task: *mut GstTask) -> gboolean;
9707    #[cfg(feature = "v1_18")]
9708    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9709    pub fn gst_task_resume(task: *mut GstTask) -> gboolean;
9710    pub fn gst_task_set_enter_callback(
9711        task: *mut GstTask,
9712        enter_func: GstTaskThreadFunc,
9713        user_data: gpointer,
9714        notify: glib::GDestroyNotify,
9715    );
9716    pub fn gst_task_set_leave_callback(
9717        task: *mut GstTask,
9718        leave_func: GstTaskThreadFunc,
9719        user_data: gpointer,
9720        notify: glib::GDestroyNotify,
9721    );
9722    pub fn gst_task_set_lock(task: *mut GstTask, mutex: *mut glib::GRecMutex);
9723    pub fn gst_task_set_pool(task: *mut GstTask, pool: *mut GstTaskPool);
9724    pub fn gst_task_set_state(task: *mut GstTask, state: GstTaskState) -> gboolean;
9725    pub fn gst_task_start(task: *mut GstTask) -> gboolean;
9726    pub fn gst_task_stop(task: *mut GstTask) -> gboolean;
9727
9728    //=========================================================================
9729    // GstTaskPool
9730    //=========================================================================
9731    pub fn gst_task_pool_get_type() -> GType;
9732    pub fn gst_task_pool_new() -> *mut GstTaskPool;
9733    pub fn gst_task_pool_cleanup(pool: *mut GstTaskPool);
9734    #[cfg(feature = "v1_20")]
9735    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
9736    pub fn gst_task_pool_dispose_handle(pool: *mut GstTaskPool, id: gpointer);
9737    pub fn gst_task_pool_join(pool: *mut GstTaskPool, id: gpointer);
9738    pub fn gst_task_pool_prepare(pool: *mut GstTaskPool, error: *mut *mut glib::GError);
9739    pub fn gst_task_pool_push(
9740        pool: *mut GstTaskPool,
9741        func: GstTaskPoolFunction,
9742        user_data: gpointer,
9743        error: *mut *mut glib::GError,
9744    ) -> gpointer;
9745
9746    //=========================================================================
9747    // GstTracer
9748    //=========================================================================
9749    pub fn gst_tracer_get_type() -> GType;
9750    pub fn gst_tracer_register(
9751        plugin: *mut GstPlugin,
9752        name: *const c_char,
9753        type_: GType,
9754    ) -> gboolean;
9755
9756    //=========================================================================
9757    // GstTracerFactory
9758    //=========================================================================
9759    pub fn gst_tracer_factory_get_type() -> GType;
9760    pub fn gst_tracer_factory_get_list() -> *mut glib::GList;
9761    pub fn gst_tracer_factory_get_tracer_type(factory: *mut GstTracerFactory) -> GType;
9762
9763    //=========================================================================
9764    // GstTracerRecord
9765    //=========================================================================
9766    pub fn gst_tracer_record_get_type() -> GType;
9767    pub fn gst_tracer_record_new(
9768        name: *const c_char,
9769        firstfield: *const c_char,
9770        ...
9771    ) -> *mut GstTracerRecord;
9772    pub fn gst_tracer_record_log(self_: *mut GstTracerRecord, ...);
9773
9774    //=========================================================================
9775    // GstTypeFindFactory
9776    //=========================================================================
9777    pub fn gst_type_find_factory_get_type() -> GType;
9778    pub fn gst_type_find_factory_get_list() -> *mut glib::GList;
9779    pub fn gst_type_find_factory_call_function(
9780        factory: *mut GstTypeFindFactory,
9781        find: *mut GstTypeFind,
9782    );
9783    pub fn gst_type_find_factory_get_caps(factory: *mut GstTypeFindFactory) -> *mut GstCaps;
9784    pub fn gst_type_find_factory_get_extensions(
9785        factory: *mut GstTypeFindFactory,
9786    ) -> *const *const c_char;
9787    pub fn gst_type_find_factory_has_function(factory: *mut GstTypeFindFactory) -> gboolean;
9788
9789    //=========================================================================
9790    // GstValueArray
9791    //=========================================================================
9792    pub fn gst_value_array_get_type() -> GType;
9793    pub fn gst_value_array_append_and_take_value(
9794        value: *mut gobject::GValue,
9795        append_value: *mut gobject::GValue,
9796    );
9797    pub fn gst_value_array_append_value(
9798        value: *mut gobject::GValue,
9799        append_value: *const gobject::GValue,
9800    );
9801    pub fn gst_value_array_get_size(value: *const gobject::GValue) -> c_uint;
9802    pub fn gst_value_array_get_value(
9803        value: *const gobject::GValue,
9804        index: c_uint,
9805    ) -> *const gobject::GValue;
9806    #[cfg(feature = "v1_18")]
9807    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9808    pub fn gst_value_array_init(
9809        value: *mut gobject::GValue,
9810        prealloc: c_uint,
9811    ) -> *mut gobject::GValue;
9812    pub fn gst_value_array_prepend_value(
9813        value: *mut gobject::GValue,
9814        prepend_value: *const gobject::GValue,
9815    );
9816
9817    //=========================================================================
9818    // GstValueList
9819    //=========================================================================
9820    pub fn gst_value_list_get_type() -> GType;
9821    pub fn gst_value_list_append_and_take_value(
9822        value: *mut gobject::GValue,
9823        append_value: *mut gobject::GValue,
9824    );
9825    pub fn gst_value_list_append_value(
9826        value: *mut gobject::GValue,
9827        append_value: *const gobject::GValue,
9828    );
9829    pub fn gst_value_list_concat(
9830        dest: *mut gobject::GValue,
9831        value1: *const gobject::GValue,
9832        value2: *const gobject::GValue,
9833    );
9834    pub fn gst_value_list_get_size(value: *const gobject::GValue) -> c_uint;
9835    pub fn gst_value_list_get_value(
9836        value: *const gobject::GValue,
9837        index: c_uint,
9838    ) -> *const gobject::GValue;
9839    #[cfg(feature = "v1_18")]
9840    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
9841    pub fn gst_value_list_init(
9842        value: *mut gobject::GValue,
9843        prealloc: c_uint,
9844    ) -> *mut gobject::GValue;
9845    pub fn gst_value_list_merge(
9846        dest: *mut gobject::GValue,
9847        value1: *const gobject::GValue,
9848        value2: *const gobject::GValue,
9849    );
9850    pub fn gst_value_list_prepend_value(
9851        value: *mut gobject::GValue,
9852        prepend_value: *const gobject::GValue,
9853    );
9854
9855    //=========================================================================
9856    // GstValueUniqueList
9857    //=========================================================================
9858    #[cfg(feature = "v1_28")]
9859    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9860    pub fn gst_value_unique_list_get_type() -> GType;
9861    #[cfg(feature = "v1_28")]
9862    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9863    pub fn gst_value_unique_list_append_and_take_value(
9864        value: *mut gobject::GValue,
9865        append_value: *mut gobject::GValue,
9866    );
9867    #[cfg(feature = "v1_28")]
9868    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9869    pub fn gst_value_unique_list_append_value(
9870        value: *mut gobject::GValue,
9871        append_value: *const gobject::GValue,
9872    );
9873    #[cfg(feature = "v1_28")]
9874    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9875    pub fn gst_value_unique_list_concat(
9876        dest: *mut gobject::GValue,
9877        value1: *const gobject::GValue,
9878        value2: *const gobject::GValue,
9879    );
9880    #[cfg(feature = "v1_28")]
9881    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9882    pub fn gst_value_unique_list_get_size(value: *const gobject::GValue) -> c_uint;
9883    #[cfg(feature = "v1_28")]
9884    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9885    pub fn gst_value_unique_list_get_value(
9886        value: *const gobject::GValue,
9887        index: c_uint,
9888    ) -> *const gobject::GValue;
9889    #[cfg(feature = "v1_28")]
9890    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
9891    pub fn gst_value_unique_list_prepend_value(
9892        value: *mut gobject::GValue,
9893        prepend_value: *const gobject::GValue,
9894    );
9895
9896    //=========================================================================
9897    // GstChildProxy
9898    //=========================================================================
9899    pub fn gst_child_proxy_get_type() -> GType;
9900    pub fn gst_child_proxy_child_added(
9901        parent: *mut GstChildProxy,
9902        child: *mut gobject::GObject,
9903        name: *const c_char,
9904    );
9905    pub fn gst_child_proxy_child_removed(
9906        parent: *mut GstChildProxy,
9907        child: *mut gobject::GObject,
9908        name: *const c_char,
9909    );
9910    pub fn gst_child_proxy_get(object: *mut GstChildProxy, first_property_name: *const c_char, ...);
9911    pub fn gst_child_proxy_get_child_by_index(
9912        parent: *mut GstChildProxy,
9913        index: c_uint,
9914    ) -> *mut gobject::GObject;
9915    pub fn gst_child_proxy_get_child_by_name(
9916        parent: *mut GstChildProxy,
9917        name: *const c_char,
9918    ) -> *mut gobject::GObject;
9919    #[cfg(feature = "v1_22")]
9920    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
9921    pub fn gst_child_proxy_get_child_by_name_recurse(
9922        child_proxy: *mut GstChildProxy,
9923        name: *const c_char,
9924    ) -> *mut gobject::GObject;
9925    pub fn gst_child_proxy_get_children_count(parent: *mut GstChildProxy) -> c_uint;
9926    pub fn gst_child_proxy_get_property(
9927        object: *mut GstChildProxy,
9928        name: *const c_char,
9929        value: *mut gobject::GValue,
9930    );
9931    //pub fn gst_child_proxy_get_valist(object: *mut GstChildProxy, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
9932    pub fn gst_child_proxy_lookup(
9933        object: *mut GstChildProxy,
9934        name: *const c_char,
9935        target: *mut *mut gobject::GObject,
9936        pspec: *mut *mut gobject::GParamSpec,
9937    ) -> gboolean;
9938    pub fn gst_child_proxy_set(object: *mut GstChildProxy, first_property_name: *const c_char, ...);
9939    pub fn gst_child_proxy_set_property(
9940        object: *mut GstChildProxy,
9941        name: *const c_char,
9942        value: *const gobject::GValue,
9943    );
9944    //pub fn gst_child_proxy_set_valist(object: *mut GstChildProxy, first_property_name: *const c_char, var_args: /*Unimplemented*/va_list);
9945
9946    //=========================================================================
9947    // GstPreset
9948    //=========================================================================
9949    pub fn gst_preset_get_type() -> GType;
9950    pub fn gst_preset_get_app_dir() -> *const c_char;
9951    pub fn gst_preset_set_app_dir(app_dir: *const c_char) -> gboolean;
9952    pub fn gst_preset_delete_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9953    pub fn gst_preset_get_meta(
9954        preset: *mut GstPreset,
9955        name: *const c_char,
9956        tag: *const c_char,
9957        value: *mut *mut c_char,
9958    ) -> gboolean;
9959    pub fn gst_preset_get_preset_names(preset: *mut GstPreset) -> *mut *mut c_char;
9960    #[cfg(feature = "v1_30")]
9961    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
9962    pub fn gst_preset_get_property(
9963        preset: *mut GstPreset,
9964        name: *const c_char,
9965        prop: *const c_char,
9966        value: *mut gobject::GValue,
9967    ) -> gboolean;
9968    #[cfg(feature = "v1_30")]
9969    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
9970    pub fn gst_preset_get_property_alternatives(
9971        preset: *mut GstPreset,
9972        name: *const c_char,
9973        prop: *const c_char,
9974    ) -> *mut *mut c_char;
9975    pub fn gst_preset_get_property_names(preset: *mut GstPreset) -> *mut *mut c_char;
9976    pub fn gst_preset_is_editable(preset: *mut GstPreset) -> gboolean;
9977    pub fn gst_preset_load_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9978    pub fn gst_preset_rename_preset(
9979        preset: *mut GstPreset,
9980        old_name: *const c_char,
9981        new_name: *const c_char,
9982    ) -> gboolean;
9983    pub fn gst_preset_save_preset(preset: *mut GstPreset, name: *const c_char) -> gboolean;
9984    pub fn gst_preset_set_meta(
9985        preset: *mut GstPreset,
9986        name: *const c_char,
9987        tag: *const c_char,
9988        value: *const c_char,
9989    ) -> gboolean;
9990
9991    //=========================================================================
9992    // GstTagSetter
9993    //=========================================================================
9994    pub fn gst_tag_setter_get_type() -> GType;
9995    //pub fn gst_tag_setter_add_tag_valist(setter: *mut GstTagSetter, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
9996    //pub fn gst_tag_setter_add_tag_valist_values(setter: *mut GstTagSetter, mode: GstTagMergeMode, tag: *const c_char, var_args: /*Unimplemented*/va_list);
9997    pub fn gst_tag_setter_add_tag_value(
9998        setter: *mut GstTagSetter,
9999        mode: GstTagMergeMode,
10000        tag: *const c_char,
10001        value: *const gobject::GValue,
10002    );
10003    pub fn gst_tag_setter_add_tag_values(
10004        setter: *mut GstTagSetter,
10005        mode: GstTagMergeMode,
10006        tag: *const c_char,
10007        ...
10008    );
10009    pub fn gst_tag_setter_add_tags(
10010        setter: *mut GstTagSetter,
10011        mode: GstTagMergeMode,
10012        tag: *const c_char,
10013        ...
10014    );
10015    pub fn gst_tag_setter_get_tag_list(setter: *mut GstTagSetter) -> *const GstTagList;
10016    pub fn gst_tag_setter_get_tag_merge_mode(setter: *mut GstTagSetter) -> GstTagMergeMode;
10017    pub fn gst_tag_setter_merge_tags(
10018        setter: *mut GstTagSetter,
10019        list: *const GstTagList,
10020        mode: GstTagMergeMode,
10021    );
10022    pub fn gst_tag_setter_reset_tags(setter: *mut GstTagSetter);
10023    pub fn gst_tag_setter_set_tag_merge_mode(setter: *mut GstTagSetter, mode: GstTagMergeMode);
10024
10025    //=========================================================================
10026    // GstTocSetter
10027    //=========================================================================
10028    pub fn gst_toc_setter_get_type() -> GType;
10029    pub fn gst_toc_setter_get_toc(setter: *mut GstTocSetter) -> *mut GstToc;
10030    pub fn gst_toc_setter_reset(setter: *mut GstTocSetter);
10031    pub fn gst_toc_setter_set_toc(setter: *mut GstTocSetter, toc: *mut GstToc);
10032
10033    //=========================================================================
10034    // GstURIHandler
10035    //=========================================================================
10036    pub fn gst_uri_handler_get_type() -> GType;
10037    pub fn gst_uri_handler_get_protocols(handler: *mut GstURIHandler) -> *const *const c_char;
10038    pub fn gst_uri_handler_get_uri(handler: *mut GstURIHandler) -> *mut c_char;
10039    pub fn gst_uri_handler_get_uri_type(handler: *mut GstURIHandler) -> GstURIType;
10040    pub fn gst_uri_handler_set_uri(
10041        handler: *mut GstURIHandler,
10042        uri: *const c_char,
10043        error: *mut *mut glib::GError,
10044    ) -> gboolean;
10045
10046    //=========================================================================
10047    // Other functions
10048    //=========================================================================
10049    pub fn gst_calculate_linear_regression(
10050        xy: *const GstClockTime,
10051        temp: *mut GstClockTime,
10052        n: c_uint,
10053        m_num: *mut GstClockTime,
10054        m_denom: *mut GstClockTime,
10055        b: *mut GstClockTime,
10056        xbase: *mut GstClockTime,
10057        r_squared: *mut c_double,
10058    ) -> gboolean;
10059    #[cfg(feature = "v1_28")]
10060    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10061    pub fn gst_call_async(func: GstCallAsyncFunc, user_data: gpointer);
10062    #[cfg(feature = "v1_28")]
10063    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10064    pub fn gst_check_version(major: c_uint, minor: c_uint, micro: c_uint) -> gboolean;
10065    #[cfg(feature = "v1_18_3")]
10066    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
10067    pub fn gst_clear_buffer(buf_ptr: *mut *mut GstBuffer);
10068    #[cfg(feature = "v1_18_3")]
10069    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
10070    pub fn gst_clear_buffer_list(list_ptr: *mut *mut GstBufferList);
10071    #[cfg(feature = "v1_18_3")]
10072    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
10073    pub fn gst_clear_caps(caps_ptr: *mut *mut GstCaps);
10074    #[cfg(feature = "v1_24")]
10075    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
10076    pub fn gst_clear_context(context_ptr: *mut *mut GstContext);
10077    #[cfg(feature = "v1_18_3")]
10078    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
10079    pub fn gst_clear_event(event_ptr: *mut *mut GstEvent);
10080    #[cfg(feature = "v1_18_3")]
10081    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
10082    pub fn gst_clear_message(msg_ptr: *mut *mut GstMessage);
10083    #[cfg(feature = "v1_16")]
10084    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
10085    pub fn gst_clear_mini_object(object_ptr: *mut *mut GstMiniObject);
10086    #[cfg(feature = "v1_16")]
10087    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
10088    pub fn gst_clear_object(object_ptr: *mut *mut GstObject);
10089    #[cfg(feature = "v1_24")]
10090    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
10091    pub fn gst_clear_promise(promise_ptr: *mut *mut GstPromise);
10092    #[cfg(feature = "v1_18_3")]
10093    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
10094    pub fn gst_clear_query(query_ptr: *mut *mut GstQuery);
10095    #[cfg(feature = "v1_24")]
10096    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
10097    pub fn gst_clear_sample(sample_ptr: *mut *mut GstSample);
10098    #[cfg(feature = "v1_16")]
10099    #[cfg_attr(docsrs, doc(cfg(feature = "v1_16")))]
10100    pub fn gst_clear_structure(structure_ptr: *mut *mut GstStructure);
10101    #[cfg(feature = "v1_18_3")]
10102    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
10103    pub fn gst_clear_tag_list(taglist_ptr: *mut *mut GstTagList);
10104    #[cfg(feature = "v1_18_3")]
10105    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18_3")))]
10106    pub fn gst_clear_uri(uri_ptr: *mut *mut GstUri);
10107    #[cfg(feature = "v1_28")]
10108    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10109    pub fn gst_cpuid_supports_arm_neon() -> gboolean;
10110    #[cfg(feature = "v1_28")]
10111    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10112    pub fn gst_cpuid_supports_arm_neon64() -> gboolean;
10113    #[cfg(feature = "v1_30")]
10114    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
10115    pub fn gst_cpuid_supports_riscv_v() -> gboolean;
10116    #[cfg(feature = "v1_28")]
10117    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10118    pub fn gst_cpuid_supports_x86_3dnow() -> gboolean;
10119    #[cfg(feature = "v1_28")]
10120    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10121    pub fn gst_cpuid_supports_x86_avx() -> gboolean;
10122    #[cfg(feature = "v1_28")]
10123    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10124    pub fn gst_cpuid_supports_x86_avx2() -> gboolean;
10125    #[cfg(feature = "v1_28")]
10126    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10127    pub fn gst_cpuid_supports_x86_mmx() -> gboolean;
10128    #[cfg(feature = "v1_28")]
10129    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10130    pub fn gst_cpuid_supports_x86_mmxext() -> gboolean;
10131    #[cfg(feature = "v1_28")]
10132    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10133    pub fn gst_cpuid_supports_x86_sse2() -> gboolean;
10134    #[cfg(feature = "v1_28")]
10135    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10136    pub fn gst_cpuid_supports_x86_sse3() -> gboolean;
10137    #[cfg(feature = "v1_28")]
10138    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10139    pub fn gst_cpuid_supports_x86_sse4_1() -> gboolean;
10140    #[cfg(feature = "v1_28")]
10141    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10142    pub fn gst_cpuid_supports_x86_sse4_2() -> gboolean;
10143    #[cfg(feature = "v1_28")]
10144    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10145    pub fn gst_cpuid_supports_x86_ssse3() -> gboolean;
10146    pub fn gst_debug_add_log_function(
10147        func: GstLogFunction,
10148        user_data: gpointer,
10149        notify: glib::GDestroyNotify,
10150    );
10151    pub fn gst_debug_add_ring_buffer_logger(max_size_per_thread: c_uint, thread_timeout: c_uint);
10152    pub fn gst_debug_bin_to_dot_data(
10153        bin: *mut GstBin,
10154        details: GstDebugGraphDetails,
10155    ) -> *mut c_char;
10156    pub fn gst_debug_bin_to_dot_file(
10157        bin: *mut GstBin,
10158        details: GstDebugGraphDetails,
10159        file_name: *const c_char,
10160    );
10161    pub fn gst_debug_bin_to_dot_file_with_ts(
10162        bin: *mut GstBin,
10163        details: GstDebugGraphDetails,
10164        file_name: *const c_char,
10165    );
10166    pub fn gst_debug_construct_term_color(colorinfo: c_uint) -> *mut c_char;
10167    pub fn gst_debug_construct_win_color(colorinfo: c_uint) -> c_int;
10168    pub fn gst_debug_get_all_categories() -> *mut glib::GSList;
10169    pub fn gst_debug_get_color_mode() -> GstDebugColorMode;
10170    pub fn gst_debug_get_default_threshold() -> GstDebugLevel;
10171    pub fn gst_debug_get_stack_trace(flags: GstStackTraceFlags) -> *mut c_char;
10172    pub fn gst_debug_is_active() -> gboolean;
10173    pub fn gst_debug_is_colored() -> gboolean;
10174    pub fn gst_debug_log(
10175        category: *mut GstDebugCategory,
10176        level: GstDebugLevel,
10177        file: *const c_char,
10178        function: *const c_char,
10179        line: c_int,
10180        object: *mut gobject::GObject,
10181        format: *const c_char,
10182        ...
10183    );
10184    pub fn gst_debug_log_default(
10185        category: *mut GstDebugCategory,
10186        level: GstDebugLevel,
10187        file: *const c_char,
10188        function: *const c_char,
10189        line: c_int,
10190        object: *mut gobject::GObject,
10191        message: *mut GstDebugMessage,
10192        user_data: gpointer,
10193    );
10194    #[cfg(feature = "v1_18")]
10195    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
10196    pub fn gst_debug_log_get_line(
10197        category: *mut GstDebugCategory,
10198        level: GstDebugLevel,
10199        file: *const c_char,
10200        function: *const c_char,
10201        line: c_int,
10202        object: *mut gobject::GObject,
10203        message: *mut GstDebugMessage,
10204    ) -> *mut c_char;
10205    #[cfg(feature = "v1_22")]
10206    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
10207    pub fn gst_debug_log_id(
10208        category: *mut GstDebugCategory,
10209        level: GstDebugLevel,
10210        file: *const c_char,
10211        function: *const c_char,
10212        line: c_int,
10213        id: *const c_char,
10214        format: *const c_char,
10215        ...
10216    );
10217    #[cfg(feature = "v1_22")]
10218    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
10219    pub fn gst_debug_log_id_literal(
10220        category: *mut GstDebugCategory,
10221        level: GstDebugLevel,
10222        file: *const c_char,
10223        function: *const c_char,
10224        line: c_int,
10225        id: *const c_char,
10226        message_string: *const c_char,
10227    );
10228    #[cfg(feature = "v1_28")]
10229    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10230    pub fn gst_debug_log_id_literal_with_context(
10231        ctx: *mut GstLogContext,
10232        level: GstDebugLevel,
10233        file: *const c_char,
10234        function: *const c_char,
10235        line: c_int,
10236        id: *const c_char,
10237        message: *const c_char,
10238    );
10239    //#[cfg(feature = "v1_22")]
10240    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
10241    //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);
10242    #[cfg(feature = "v1_28")]
10243    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10244    pub fn gst_debug_log_id_with_context(
10245        ctx: *mut GstLogContext,
10246        level: GstDebugLevel,
10247        file: *const c_char,
10248        function: *const c_char,
10249        line: c_int,
10250        id: *const c_char,
10251        format: *const c_char,
10252        ...
10253    );
10254    //#[cfg(feature = "v1_28")]
10255    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10256    //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);
10257    #[cfg(feature = "v1_20")]
10258    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
10259    pub fn gst_debug_log_literal(
10260        category: *mut GstDebugCategory,
10261        level: GstDebugLevel,
10262        file: *const c_char,
10263        function: *const c_char,
10264        line: c_int,
10265        object: *mut gobject::GObject,
10266        message_string: *const c_char,
10267    );
10268    #[cfg(feature = "v1_28")]
10269    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10270    pub fn gst_debug_log_literal_with_context(
10271        ctx: *mut GstLogContext,
10272        level: GstDebugLevel,
10273        file: *const c_char,
10274        function: *const c_char,
10275        line: c_int,
10276        object: *mut gobject::GObject,
10277        message: *const c_char,
10278    );
10279    //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);
10280    #[cfg(feature = "v1_28")]
10281    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10282    pub fn gst_debug_log_with_context(
10283        ctx: *mut GstLogContext,
10284        level: GstDebugLevel,
10285        file: *const c_char,
10286        function: *const c_char,
10287        line: c_int,
10288        object: *mut gobject::GObject,
10289        format: *const c_char,
10290        ...
10291    );
10292    //#[cfg(feature = "v1_28")]
10293    //#[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10294    //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);
10295    #[cfg(feature = "v1_26")]
10296    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
10297    pub fn gst_debug_print_object(ptr: gconstpointer) -> *mut c_char;
10298    #[cfg(feature = "v1_26")]
10299    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
10300    pub fn gst_debug_print_segment(segment: *const GstSegment) -> *mut c_char;
10301    pub fn gst_debug_print_stack_trace();
10302    pub fn gst_debug_remove_log_function(func: GstLogFunction) -> c_uint;
10303    pub fn gst_debug_remove_log_function_by_data(data: gpointer) -> c_uint;
10304    pub fn gst_debug_remove_ring_buffer_logger();
10305    pub fn gst_debug_ring_buffer_logger_get_logs() -> *mut *mut c_char;
10306    pub fn gst_debug_set_active(active: gboolean);
10307    pub fn gst_debug_set_color_mode(mode: GstDebugColorMode);
10308    pub fn gst_debug_set_color_mode_from_string(mode: *const c_char);
10309    pub fn gst_debug_set_colored(colored: gboolean);
10310    pub fn gst_debug_set_default_threshold(level: GstDebugLevel);
10311    pub fn gst_debug_set_threshold_for_name(name: *const c_char, level: GstDebugLevel);
10312    pub fn gst_debug_set_threshold_from_string(list: *const c_char, reset: gboolean);
10313    pub fn gst_debug_unset_threshold_for_name(name: *const c_char);
10314    pub fn gst_deinit();
10315    pub fn gst_dynamic_type_register(plugin: *mut GstPlugin, type_: GType) -> gboolean;
10316    pub fn gst_error_get_message(domain: glib::GQuark, code: c_int) -> *mut c_char;
10317    pub fn gst_filename_to_uri(
10318        filename: *const c_char,
10319        error: *mut *mut glib::GError,
10320    ) -> *mut c_char;
10321    pub fn gst_flow_get_name(ret: GstFlowReturn) -> *const c_char;
10322    pub fn gst_flow_to_quark(ret: GstFlowReturn) -> glib::GQuark;
10323    pub fn gst_formats_contains(formats: *const GstFormat, format: GstFormat) -> gboolean;
10324    pub fn gst_get_main_executable_path() -> *const c_char;
10325    pub fn gst_info_strdup_printf(format: *const c_char, ...) -> *mut c_char;
10326    //pub fn gst_info_strdup_vprintf(format: *const c_char, args: /*Unimplemented*/va_list) -> *mut c_char;
10327    //pub fn gst_info_vasprintf(result: *mut *mut c_char, format: *const c_char, args: /*Unimplemented*/va_list) -> c_int;
10328    pub fn gst_init(argc: *mut c_int, argv: *mut *mut *mut c_char);
10329    pub fn gst_init_check(
10330        argc: *mut c_int,
10331        argv: *mut *mut *mut c_char,
10332        error: *mut *mut glib::GError,
10333    ) -> gboolean;
10334    pub fn gst_init_get_option_group() -> *mut glib::GOptionGroup;
10335    pub fn gst_is_caps_features(obj: gconstpointer) -> gboolean;
10336    pub fn gst_is_initialized() -> gboolean;
10337    pub fn gst_make_element_message_details(name: *const c_char, ...) -> *mut GstStructure;
10338    pub fn gst_param_spec_array(
10339        name: *const c_char,
10340        nick: *const c_char,
10341        blurb: *const c_char,
10342        element_spec: *mut gobject::GParamSpec,
10343        flags: gobject::GParamFlags,
10344    ) -> *mut gobject::GParamSpec;
10345    pub fn gst_param_spec_fraction(
10346        name: *const c_char,
10347        nick: *const c_char,
10348        blurb: *const c_char,
10349        min_num: c_int,
10350        min_denom: c_int,
10351        max_num: c_int,
10352        max_denom: c_int,
10353        default_num: c_int,
10354        default_denom: c_int,
10355        flags: gobject::GParamFlags,
10356    ) -> *mut gobject::GParamSpec;
10357    pub fn gst_parent_buffer_meta_api_get_type() -> GType;
10358    pub fn gst_parse_bin_from_description(
10359        bin_description: *const c_char,
10360        ghost_unlinked_pads: gboolean,
10361        error: *mut *mut glib::GError,
10362    ) -> *mut GstBin;
10363    pub fn gst_parse_bin_from_description_full(
10364        bin_description: *const c_char,
10365        ghost_unlinked_pads: gboolean,
10366        context: *mut GstParseContext,
10367        flags: GstParseFlags,
10368        error: *mut *mut glib::GError,
10369    ) -> *mut GstElement;
10370    pub fn gst_parse_launch(
10371        pipeline_description: *const c_char,
10372        error: *mut *mut glib::GError,
10373    ) -> *mut GstElement;
10374    pub fn gst_parse_launch_full(
10375        pipeline_description: *const c_char,
10376        context: *mut GstParseContext,
10377        flags: GstParseFlags,
10378        error: *mut *mut glib::GError,
10379    ) -> *mut GstElement;
10380    pub fn gst_parse_launchv(
10381        argv: *mut *const c_char,
10382        error: *mut *mut glib::GError,
10383    ) -> *mut GstElement;
10384    pub fn gst_parse_launchv_full(
10385        argv: *mut *const c_char,
10386        context: *mut GstParseContext,
10387        flags: GstParseFlags,
10388        error: *mut *mut glib::GError,
10389    ) -> *mut GstElement;
10390    pub fn gst_print(format: *const c_char, ...);
10391    pub fn gst_printerr(format: *const c_char, ...);
10392    pub fn gst_printerrln(format: *const c_char, ...);
10393    pub fn gst_println(format: *const c_char, ...);
10394    pub fn gst_protection_filter_systems_by_available_decryptors(
10395        system_identifiers: *mut *const c_char,
10396    ) -> *mut *mut c_char;
10397    pub fn gst_protection_meta_api_get_type() -> GType;
10398    pub fn gst_protection_select_system(system_identifiers: *mut *const c_char) -> *const c_char;
10399    pub fn gst_reference_timestamp_meta_api_get_type() -> GType;
10400    pub fn gst_segtrap_is_enabled() -> gboolean;
10401    pub fn gst_segtrap_set_enabled(enabled: gboolean);
10402    pub fn gst_tag_exists(tag: *const c_char) -> gboolean;
10403    pub fn gst_tag_get_description(tag: *const c_char) -> *const c_char;
10404    pub fn gst_tag_get_flag(tag: *const c_char) -> GstTagFlag;
10405    pub fn gst_tag_get_nick(tag: *const c_char) -> *const c_char;
10406    pub fn gst_tag_get_type(tag: *const c_char) -> GType;
10407    pub fn gst_tag_is_fixed(tag: *const c_char) -> gboolean;
10408    pub fn gst_tag_merge_strings_with_comma(
10409        dest: *mut gobject::GValue,
10410        src: *const gobject::GValue,
10411    );
10412    pub fn gst_tag_merge_use_first(dest: *mut gobject::GValue, src: *const gobject::GValue);
10413    pub fn gst_tag_register(
10414        name: *const c_char,
10415        flag: GstTagFlag,
10416        type_: GType,
10417        nick: *const c_char,
10418        blurb: *const c_char,
10419        func: GstTagMergeFunc,
10420    );
10421    pub fn gst_tag_register_static(
10422        name: *const c_char,
10423        flag: GstTagFlag,
10424        type_: GType,
10425        nick: *const c_char,
10426        blurb: *const c_char,
10427        func: GstTagMergeFunc,
10428    );
10429    #[cfg(feature = "v1_30")]
10430    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
10431    pub fn gst_trace_event(format: *mut GstTraceFormat, values: *const GstTraceValue);
10432    #[cfg(feature = "v1_30")]
10433    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
10434    pub fn gst_trace_span_begin(
10435        format: *mut GstTraceFormat,
10436        values: *const GstTraceValue,
10437    ) -> GstTraceSpanId;
10438    #[cfg(feature = "v1_30")]
10439    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
10440    pub fn gst_trace_span_end(span_id: GstTraceSpanId);
10441    #[cfg(feature = "v1_30")]
10442    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
10443    pub fn gst_trace_span_end_and_clear(span_id: *mut GstTraceSpanId);
10444    #[cfg(feature = "v1_18")]
10445    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
10446    pub fn gst_tracing_get_active_tracers() -> *mut glib::GList;
10447    pub fn gst_tracing_register_hook(
10448        tracer: *mut GstTracer,
10449        detail: *const c_char,
10450        func: gobject::GCallback,
10451    );
10452    #[cfg(feature = "v1_18")]
10453    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
10454    pub fn gst_type_is_plugin_api(type_: GType, flags: *mut GstPluginAPIFlags) -> gboolean;
10455    #[cfg(feature = "v1_18")]
10456    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
10457    pub fn gst_type_mark_as_plugin_api(type_: GType, flags: GstPluginAPIFlags);
10458    pub fn gst_update_registry() -> gboolean;
10459    pub fn gst_util_array_binary_search(
10460        array: gpointer,
10461        num_elements: c_uint,
10462        element_size: size_t,
10463        search_func: glib::GCompareDataFunc,
10464        mode: GstSearchMode,
10465        search_data: gconstpointer,
10466        user_data: gpointer,
10467    ) -> gpointer;
10468    #[cfg(feature = "v1_24")]
10469    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
10470    pub fn gst_util_ceil_log2(v: u32) -> c_uint;
10471    pub fn gst_util_double_to_fraction(src: c_double, dest_n: *mut c_int, dest_d: *mut c_int);
10472    pub fn gst_util_dump_buffer(buf: *mut GstBuffer);
10473    pub fn gst_util_dump_mem(mem: *const u8, size: c_uint);
10474    #[cfg(feature = "v1_24")]
10475    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
10476    pub fn gst_util_filename_compare(a: *const c_char, b: *const c_char) -> c_int;
10477    #[cfg(feature = "v1_26")]
10478    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
10479    pub fn gst_util_floor_log2(v: u32) -> c_uint;
10480    pub fn gst_util_fraction_add(
10481        a_n: c_int,
10482        a_d: c_int,
10483        b_n: c_int,
10484        b_d: c_int,
10485        res_n: *mut c_int,
10486        res_d: *mut c_int,
10487    ) -> gboolean;
10488    pub fn gst_util_fraction_compare(a_n: c_int, a_d: c_int, b_n: c_int, b_d: c_int) -> c_int;
10489    pub fn gst_util_fraction_multiply(
10490        a_n: c_int,
10491        a_d: c_int,
10492        b_n: c_int,
10493        b_d: c_int,
10494        res_n: *mut c_int,
10495        res_d: *mut c_int,
10496    ) -> gboolean;
10497    #[cfg(feature = "v1_26")]
10498    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
10499    pub fn gst_util_fraction_multiply_int64(
10500        a_n: i64,
10501        a_d: i64,
10502        b_n: i64,
10503        b_d: i64,
10504        res_n: *mut i64,
10505        res_d: *mut i64,
10506    ) -> gboolean;
10507    pub fn gst_util_fraction_to_double(src_n: c_int, src_d: c_int, dest: *mut c_double);
10508    pub fn gst_util_gdouble_to_guint64(value: c_double) -> u64;
10509    pub fn gst_util_get_object_array(
10510        object: *mut gobject::GObject,
10511        name: *const c_char,
10512        array: *mut *mut gobject::GValueArray,
10513    ) -> gboolean;
10514    pub fn gst_util_get_timestamp() -> GstClockTime;
10515    pub fn gst_util_greatest_common_divisor(a: c_int, b: c_int) -> c_int;
10516    pub fn gst_util_greatest_common_divisor_int64(a: i64, b: i64) -> i64;
10517    pub fn gst_util_group_id_next() -> c_uint;
10518    pub fn gst_util_guint64_to_gdouble(value: u64) -> c_double;
10519    pub fn gst_util_seqnum_compare(s1: u32, s2: u32) -> i32;
10520    pub fn gst_util_seqnum_next() -> u32;
10521    pub fn gst_util_set_object_arg(
10522        object: *mut gobject::GObject,
10523        name: *const c_char,
10524        value: *const c_char,
10525    );
10526    pub fn gst_util_set_object_array(
10527        object: *mut gobject::GObject,
10528        name: *const c_char,
10529        array: *const gobject::GValueArray,
10530    ) -> gboolean;
10531    pub fn gst_util_set_value_from_string(value: *mut gobject::GValue, value_str: *const c_char);
10532    #[cfg(feature = "v1_24")]
10533    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
10534    pub fn gst_util_simplify_fraction(
10535        numerator: *mut c_int,
10536        denominator: *mut c_int,
10537        n_terms: c_uint,
10538        threshold: c_uint,
10539    );
10540    pub fn gst_util_uint64_scale(val: u64, num: u64, denom: u64) -> u64;
10541    pub fn gst_util_uint64_scale_ceil(val: u64, num: u64, denom: u64) -> u64;
10542    pub fn gst_util_uint64_scale_int(val: u64, num: c_int, denom: c_int) -> u64;
10543    pub fn gst_util_uint64_scale_int_ceil(val: u64, num: c_int, denom: c_int) -> u64;
10544    pub fn gst_util_uint64_scale_int_round(val: u64, num: c_int, denom: c_int) -> u64;
10545    pub fn gst_util_uint64_scale_round(val: u64, num: u64, denom: u64) -> u64;
10546    pub fn gst_value_can_compare(
10547        value1: *const gobject::GValue,
10548        value2: *const gobject::GValue,
10549    ) -> gboolean;
10550    pub fn gst_value_can_intersect(
10551        value1: *const gobject::GValue,
10552        value2: *const gobject::GValue,
10553    ) -> gboolean;
10554    pub fn gst_value_can_subtract(
10555        minuend: *const gobject::GValue,
10556        subtrahend: *const gobject::GValue,
10557    ) -> gboolean;
10558    pub fn gst_value_can_union(
10559        value1: *const gobject::GValue,
10560        value2: *const gobject::GValue,
10561    ) -> gboolean;
10562    pub fn gst_value_compare(
10563        value1: *const gobject::GValue,
10564        value2: *const gobject::GValue,
10565    ) -> c_int;
10566    pub fn gst_value_deserialize(dest: *mut gobject::GValue, src: *const c_char) -> gboolean;
10567    #[cfg(feature = "v1_20")]
10568    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
10569    pub fn gst_value_deserialize_with_pspec(
10570        dest: *mut gobject::GValue,
10571        src: *const c_char,
10572        pspec: *mut gobject::GParamSpec,
10573    ) -> gboolean;
10574    pub fn gst_value_fixate(dest: *mut gobject::GValue, src: *const gobject::GValue) -> gboolean;
10575    pub fn gst_value_fraction_multiply(
10576        product: *mut gobject::GValue,
10577        factor1: *const gobject::GValue,
10578        factor2: *const gobject::GValue,
10579    ) -> gboolean;
10580    pub fn gst_value_fraction_subtract(
10581        dest: *mut gobject::GValue,
10582        minuend: *const gobject::GValue,
10583        subtrahend: *const gobject::GValue,
10584    ) -> gboolean;
10585    pub fn gst_value_get_bitmask(value: *const gobject::GValue) -> u64;
10586    pub fn gst_value_get_caps(value: *const gobject::GValue) -> *const GstCaps;
10587    pub fn gst_value_get_caps_features(value: *const gobject::GValue) -> *const GstCapsFeatures;
10588    pub fn gst_value_get_double_range_max(value: *const gobject::GValue) -> c_double;
10589    pub fn gst_value_get_double_range_min(value: *const gobject::GValue) -> c_double;
10590    pub fn gst_value_get_flagset_flags(value: *const gobject::GValue) -> c_uint;
10591    pub fn gst_value_get_flagset_mask(value: *const gobject::GValue) -> c_uint;
10592    pub fn gst_value_get_fraction_denominator(value: *const gobject::GValue) -> c_int;
10593    pub fn gst_value_get_fraction_numerator(value: *const gobject::GValue) -> c_int;
10594    pub fn gst_value_get_fraction_range_max(
10595        value: *const gobject::GValue,
10596    ) -> *const gobject::GValue;
10597    pub fn gst_value_get_fraction_range_min(
10598        value: *const gobject::GValue,
10599    ) -> *const gobject::GValue;
10600    pub fn gst_value_get_int64_range_max(value: *const gobject::GValue) -> i64;
10601    pub fn gst_value_get_int64_range_min(value: *const gobject::GValue) -> i64;
10602    pub fn gst_value_get_int64_range_step(value: *const gobject::GValue) -> i64;
10603    pub fn gst_value_get_int_range_max(value: *const gobject::GValue) -> c_int;
10604    pub fn gst_value_get_int_range_min(value: *const gobject::GValue) -> c_int;
10605    pub fn gst_value_get_int_range_step(value: *const gobject::GValue) -> c_int;
10606    pub fn gst_value_get_structure(value: *const gobject::GValue) -> *const GstStructure;
10607    #[cfg(feature = "v1_28")]
10608    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
10609    pub fn gst_value_hash(value: *const gobject::GValue, res: *mut c_uint) -> gboolean;
10610    pub fn gst_value_init_and_copy(dest: *mut gobject::GValue, src: *const gobject::GValue);
10611    pub fn gst_value_intersect(
10612        dest: *mut gobject::GValue,
10613        value1: *const gobject::GValue,
10614        value2: *const gobject::GValue,
10615    ) -> gboolean;
10616    pub fn gst_value_is_fixed(value: *const gobject::GValue) -> gboolean;
10617    pub fn gst_value_is_subset(
10618        value1: *const gobject::GValue,
10619        value2: *const gobject::GValue,
10620    ) -> gboolean;
10621    pub fn gst_value_register(table: *const GstValueTable);
10622    pub fn gst_value_serialize(value: *const gobject::GValue) -> *mut c_char;
10623    pub fn gst_value_set_bitmask(value: *mut gobject::GValue, bitmask: u64);
10624    pub fn gst_value_set_caps(value: *mut gobject::GValue, caps: *const GstCaps);
10625    pub fn gst_value_set_caps_features(
10626        value: *mut gobject::GValue,
10627        features: *const GstCapsFeatures,
10628    );
10629    pub fn gst_value_set_double_range(value: *mut gobject::GValue, start: c_double, end: c_double);
10630    pub fn gst_value_set_flagset(value: *mut gobject::GValue, flags: c_uint, mask: c_uint);
10631    pub fn gst_value_set_fraction(
10632        value: *mut gobject::GValue,
10633        numerator: c_int,
10634        denominator: c_int,
10635    );
10636    pub fn gst_value_set_fraction_range(
10637        value: *mut gobject::GValue,
10638        start: *const gobject::GValue,
10639        end: *const gobject::GValue,
10640    );
10641    pub fn gst_value_set_fraction_range_full(
10642        value: *mut gobject::GValue,
10643        numerator_start: c_int,
10644        denominator_start: c_int,
10645        numerator_end: c_int,
10646        denominator_end: c_int,
10647    );
10648    pub fn gst_value_set_int64_range(value: *mut gobject::GValue, start: i64, end: i64);
10649    pub fn gst_value_set_int64_range_step(
10650        value: *mut gobject::GValue,
10651        start: i64,
10652        end: i64,
10653        step: i64,
10654    );
10655    pub fn gst_value_set_int_range(value: *mut gobject::GValue, start: c_int, end: c_int);
10656    pub fn gst_value_set_int_range_step(
10657        value: *mut gobject::GValue,
10658        start: c_int,
10659        end: c_int,
10660        step: c_int,
10661    );
10662    pub fn gst_value_set_structure(value: *mut gobject::GValue, structure: *const GstStructure);
10663    pub fn gst_value_subtract(
10664        dest: *mut gobject::GValue,
10665        minuend: *const gobject::GValue,
10666        subtrahend: *const gobject::GValue,
10667    ) -> gboolean;
10668    #[cfg(feature = "v1_30")]
10669    #[cfg_attr(docsrs, doc(cfg(feature = "v1_30")))]
10670    pub fn gst_value_take_structure(value: *mut gobject::GValue, structure: *mut GstStructure);
10671    pub fn gst_value_union(
10672        dest: *mut gobject::GValue,
10673        value1: *const gobject::GValue,
10674        value2: *const gobject::GValue,
10675    ) -> gboolean;
10676    pub fn gst_version(
10677        major: *mut c_uint,
10678        minor: *mut c_uint,
10679        micro: *mut c_uint,
10680        nano: *mut c_uint,
10681    );
10682    pub fn gst_version_string() -> *mut c_char;
10683
10684}