gstreamer_pbutils_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;
17use gstreamer_audio_sys as gst_audio;
18use gstreamer_sys as gst;
19use gstreamer_video_sys as gst_video;
20
21#[cfg(unix)]
22#[allow(unused_imports)]
23use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
24#[allow(unused_imports)]
25use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
26#[allow(unused_imports)]
27use std::ffi::{
28    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
29};
30
31#[allow(unused_imports)]
32use glib::{gboolean, gconstpointer, gpointer, GType};
33
34// Aliases
35pub type GstDiscovererAudioInfoClass = gobject::GObjectClass;
36pub type GstDiscovererContainerInfoClass = gobject::GObjectClass;
37pub type GstDiscovererInfoClass = gobject::GObjectClass;
38pub type GstDiscovererStreamInfoClass = gobject::GObjectClass;
39pub type GstDiscovererSubtitleInfoClass = gobject::GObjectClass;
40pub type GstDiscovererVideoInfoClass = gobject::GObjectClass;
41pub type GstEncodingTargetClass = gobject::GObjectClass;
42
43// Enums
44pub type GstAudioVisualizerShader = c_int;
45pub const GST_AUDIO_VISUALIZER_SHADER_NONE: GstAudioVisualizerShader = 0;
46pub const GST_AUDIO_VISUALIZER_SHADER_FADE: GstAudioVisualizerShader = 1;
47pub const GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_UP: GstAudioVisualizerShader = 2;
48pub const GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_DOWN: GstAudioVisualizerShader = 3;
49pub const GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_LEFT: GstAudioVisualizerShader = 4;
50pub const GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_RIGHT: GstAudioVisualizerShader = 5;
51pub const GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_OUT: GstAudioVisualizerShader = 6;
52pub const GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_HORIZ_IN: GstAudioVisualizerShader = 7;
53pub const GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_OUT: GstAudioVisualizerShader = 8;
54pub const GST_AUDIO_VISUALIZER_SHADER_FADE_AND_MOVE_VERT_IN: GstAudioVisualizerShader = 9;
55
56pub type GstDiscovererResult = c_int;
57pub const GST_DISCOVERER_OK: GstDiscovererResult = 0;
58pub const GST_DISCOVERER_URI_INVALID: GstDiscovererResult = 1;
59pub const GST_DISCOVERER_ERROR: GstDiscovererResult = 2;
60pub const GST_DISCOVERER_TIMEOUT: GstDiscovererResult = 3;
61pub const GST_DISCOVERER_BUSY: GstDiscovererResult = 4;
62pub const GST_DISCOVERER_MISSING_PLUGINS: GstDiscovererResult = 5;
63
64pub type GstInstallPluginsReturn = c_int;
65pub const GST_INSTALL_PLUGINS_SUCCESS: GstInstallPluginsReturn = 0;
66pub const GST_INSTALL_PLUGINS_NOT_FOUND: GstInstallPluginsReturn = 1;
67pub const GST_INSTALL_PLUGINS_ERROR: GstInstallPluginsReturn = 2;
68pub const GST_INSTALL_PLUGINS_PARTIAL_SUCCESS: GstInstallPluginsReturn = 3;
69pub const GST_INSTALL_PLUGINS_USER_ABORT: GstInstallPluginsReturn = 4;
70pub const GST_INSTALL_PLUGINS_CRASHED: GstInstallPluginsReturn = 100;
71pub const GST_INSTALL_PLUGINS_INVALID: GstInstallPluginsReturn = 101;
72pub const GST_INSTALL_PLUGINS_STARTED_OK: GstInstallPluginsReturn = 200;
73pub const GST_INSTALL_PLUGINS_INTERNAL_FAILURE: GstInstallPluginsReturn = 201;
74pub const GST_INSTALL_PLUGINS_HELPER_MISSING: GstInstallPluginsReturn = 202;
75pub const GST_INSTALL_PLUGINS_INSTALL_IN_PROGRESS: GstInstallPluginsReturn = 203;
76
77// Constants
78pub const GST_ENCODING_CATEGORY_CAPTURE: &[u8] = b"capture\0";
79pub const GST_ENCODING_CATEGORY_DEVICE: &[u8] = b"device\0";
80pub const GST_ENCODING_CATEGORY_FILE_EXTENSION: &[u8] = b"file-extension\0";
81pub const GST_ENCODING_CATEGORY_ONLINE_SERVICE: &[u8] = b"online-service\0";
82pub const GST_ENCODING_CATEGORY_STORAGE_EDITING: &[u8] = b"storage-editing\0";
83
84// Flags
85pub type GstDiscovererSerializeFlags = c_uint;
86pub const GST_DISCOVERER_SERIALIZE_BASIC: GstDiscovererSerializeFlags = 0;
87pub const GST_DISCOVERER_SERIALIZE_CAPS: GstDiscovererSerializeFlags = 1;
88pub const GST_DISCOVERER_SERIALIZE_TAGS: GstDiscovererSerializeFlags = 2;
89pub const GST_DISCOVERER_SERIALIZE_MISC: GstDiscovererSerializeFlags = 4;
90pub const GST_DISCOVERER_SERIALIZE_ALL: GstDiscovererSerializeFlags = 7;
91
92pub type GstPbUtilsCapsDescriptionFlags = c_uint;
93pub const GST_PBUTILS_CAPS_DESCRIPTION_FLAG_CONTAINER: GstPbUtilsCapsDescriptionFlags = 1;
94pub const GST_PBUTILS_CAPS_DESCRIPTION_FLAG_AUDIO: GstPbUtilsCapsDescriptionFlags = 2;
95pub const GST_PBUTILS_CAPS_DESCRIPTION_FLAG_VIDEO: GstPbUtilsCapsDescriptionFlags = 4;
96pub const GST_PBUTILS_CAPS_DESCRIPTION_FLAG_IMAGE: GstPbUtilsCapsDescriptionFlags = 8;
97pub const GST_PBUTILS_CAPS_DESCRIPTION_FLAG_SUBTITLE: GstPbUtilsCapsDescriptionFlags = 16;
98pub const GST_PBUTILS_CAPS_DESCRIPTION_FLAG_TAG: GstPbUtilsCapsDescriptionFlags = 32;
99pub const GST_PBUTILS_CAPS_DESCRIPTION_FLAG_GENERIC: GstPbUtilsCapsDescriptionFlags = 64;
100#[cfg(feature = "v1_22")]
101#[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
102pub const GST_PBUTILS_CAPS_DESCRIPTION_FLAG_METADATA: GstPbUtilsCapsDescriptionFlags = 128;
103
104// Callbacks
105pub type GstAudioVisualizerShaderFunc = Option<
106    unsafe extern "C" fn(
107        *mut GstAudioVisualizer,
108        *const gst_video::GstVideoFrame,
109        *mut gst_video::GstVideoFrame,
110    ),
111>;
112pub type GstInstallPluginsResultFunc =
113    Option<unsafe extern "C" fn(GstInstallPluginsReturn, gpointer)>;
114
115// Records
116#[derive(Copy, Clone)]
117#[repr(C)]
118pub struct GstAudioVisualizerClass {
119    pub parent_class: gst::GstElementClass,
120    pub setup: Option<unsafe extern "C" fn(*mut GstAudioVisualizer) -> gboolean>,
121    pub render: Option<
122        unsafe extern "C" fn(
123            *mut GstAudioVisualizer,
124            *mut gst::GstBuffer,
125            *mut gst_video::GstVideoFrame,
126        ) -> gboolean,
127    >,
128    pub decide_allocation:
129        Option<unsafe extern "C" fn(*mut GstAudioVisualizer, *mut gst::GstQuery) -> gboolean>,
130}
131
132impl ::std::fmt::Debug for GstAudioVisualizerClass {
133    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
134        f.debug_struct(&format!("GstAudioVisualizerClass @ {self:p}"))
135            .field("setup", &self.setup)
136            .field("render", &self.render)
137            .field("decide_allocation", &self.decide_allocation)
138            .finish()
139    }
140}
141
142#[repr(C)]
143#[allow(dead_code)]
144pub struct _GstAudioVisualizerPrivate {
145    _data: [u8; 0],
146    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
147}
148
149pub type GstAudioVisualizerPrivate = _GstAudioVisualizerPrivate;
150
151#[derive(Copy, Clone)]
152#[repr(C)]
153pub struct GstDiscovererClass {
154    pub parentclass: gobject::GObjectClass,
155    pub finished: Option<unsafe extern "C" fn(*mut GstDiscoverer)>,
156    pub starting: Option<unsafe extern "C" fn(*mut GstDiscoverer)>,
157    pub discovered: Option<
158        unsafe extern "C" fn(*mut GstDiscoverer, *mut GstDiscovererInfo, *const glib::GError),
159    >,
160    pub source_setup: Option<unsafe extern "C" fn(*mut GstDiscoverer, *mut gst::GstElement)>,
161    pub load_serialize_info:
162        Option<unsafe extern "C" fn(*mut GstDiscoverer, *mut c_char) -> *mut GstDiscovererInfo>,
163    pub _reserved: [gpointer; 3],
164}
165
166impl ::std::fmt::Debug for GstDiscovererClass {
167    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
168        f.debug_struct(&format!("GstDiscovererClass @ {self:p}"))
169            .field("parentclass", &self.parentclass)
170            .field("finished", &self.finished)
171            .field("starting", &self.starting)
172            .field("discovered", &self.discovered)
173            .field("source_setup", &self.source_setup)
174            .field("load_serialize_info", &self.load_serialize_info)
175            .field("_reserved", &self._reserved)
176            .finish()
177    }
178}
179
180#[repr(C)]
181#[allow(dead_code)]
182pub struct _GstDiscovererPrivate {
183    _data: [u8; 0],
184    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
185}
186
187pub type GstDiscovererPrivate = _GstDiscovererPrivate;
188
189#[repr(C)]
190#[allow(dead_code)]
191pub struct _GstEncodingAudioProfileClass {
192    _data: [u8; 0],
193    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
194}
195
196pub type GstEncodingAudioProfileClass = _GstEncodingAudioProfileClass;
197
198#[repr(C)]
199#[allow(dead_code)]
200pub struct _GstEncodingContainerProfileClass {
201    _data: [u8; 0],
202    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
203}
204
205pub type GstEncodingContainerProfileClass = _GstEncodingContainerProfileClass;
206
207#[repr(C)]
208#[allow(dead_code)]
209pub struct _GstEncodingProfileClass {
210    _data: [u8; 0],
211    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
212}
213
214pub type GstEncodingProfileClass = _GstEncodingProfileClass;
215
216#[repr(C)]
217#[allow(dead_code)]
218pub struct _GstEncodingVideoProfileClass {
219    _data: [u8; 0],
220    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
221}
222
223pub type GstEncodingVideoProfileClass = _GstEncodingVideoProfileClass;
224
225#[repr(C)]
226#[allow(dead_code)]
227pub struct GstInstallPluginsContext {
228    _data: [u8; 0],
229    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
230}
231
232impl ::std::fmt::Debug for GstInstallPluginsContext {
233    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
234        f.debug_struct(&format!("GstInstallPluginsContext @ {self:p}"))
235            .finish()
236    }
237}
238
239// Classes
240#[derive(Copy, Clone)]
241#[repr(C)]
242pub struct GstAudioVisualizer {
243    pub parent: gst::GstElement,
244    pub req_spf: c_uint,
245    pub vinfo: gst_video::GstVideoInfo,
246    pub ainfo: gst_audio::GstAudioInfo,
247    pub priv_: *mut GstAudioVisualizerPrivate,
248}
249
250impl ::std::fmt::Debug for GstAudioVisualizer {
251    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
252        f.debug_struct(&format!("GstAudioVisualizer @ {self:p}"))
253            .field("parent", &self.parent)
254            .field("req_spf", &self.req_spf)
255            .field("vinfo", &self.vinfo)
256            .field("ainfo", &self.ainfo)
257            .finish()
258    }
259}
260
261#[derive(Copy, Clone)]
262#[repr(C)]
263pub struct GstDiscoverer {
264    pub parent: gobject::GObject,
265    pub priv_: *mut GstDiscovererPrivate,
266    pub _reserved: [gpointer; 4],
267}
268
269impl ::std::fmt::Debug for GstDiscoverer {
270    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
271        f.debug_struct(&format!("GstDiscoverer @ {self:p}"))
272            .field("parent", &self.parent)
273            .finish()
274    }
275}
276
277#[repr(C)]
278#[allow(dead_code)]
279pub struct GstDiscovererAudioInfo {
280    _data: [u8; 0],
281    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
282}
283
284impl ::std::fmt::Debug for GstDiscovererAudioInfo {
285    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
286        f.debug_struct(&format!("GstDiscovererAudioInfo @ {self:p}"))
287            .finish()
288    }
289}
290
291#[repr(C)]
292#[allow(dead_code)]
293pub struct GstDiscovererContainerInfo {
294    _data: [u8; 0],
295    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
296}
297
298impl ::std::fmt::Debug for GstDiscovererContainerInfo {
299    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
300        f.debug_struct(&format!("GstDiscovererContainerInfo @ {self:p}"))
301            .finish()
302    }
303}
304
305#[repr(C)]
306#[allow(dead_code)]
307pub struct GstDiscovererInfo {
308    _data: [u8; 0],
309    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
310}
311
312impl ::std::fmt::Debug for GstDiscovererInfo {
313    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
314        f.debug_struct(&format!("GstDiscovererInfo @ {self:p}"))
315            .finish()
316    }
317}
318
319#[repr(C)]
320#[allow(dead_code)]
321pub struct GstDiscovererStreamInfo {
322    _data: [u8; 0],
323    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
324}
325
326impl ::std::fmt::Debug for GstDiscovererStreamInfo {
327    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
328        f.debug_struct(&format!("GstDiscovererStreamInfo @ {self:p}"))
329            .finish()
330    }
331}
332
333#[repr(C)]
334#[allow(dead_code)]
335pub struct GstDiscovererSubtitleInfo {
336    _data: [u8; 0],
337    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
338}
339
340impl ::std::fmt::Debug for GstDiscovererSubtitleInfo {
341    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
342        f.debug_struct(&format!("GstDiscovererSubtitleInfo @ {self:p}"))
343            .finish()
344    }
345}
346
347#[repr(C)]
348#[allow(dead_code)]
349pub struct GstDiscovererVideoInfo {
350    _data: [u8; 0],
351    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
352}
353
354impl ::std::fmt::Debug for GstDiscovererVideoInfo {
355    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
356        f.debug_struct(&format!("GstDiscovererVideoInfo @ {self:p}"))
357            .finish()
358    }
359}
360
361#[repr(C)]
362#[allow(dead_code)]
363pub struct GstEncodingAudioProfile {
364    _data: [u8; 0],
365    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
366}
367
368impl ::std::fmt::Debug for GstEncodingAudioProfile {
369    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
370        f.debug_struct(&format!("GstEncodingAudioProfile @ {self:p}"))
371            .finish()
372    }
373}
374
375#[repr(C)]
376#[allow(dead_code)]
377pub struct GstEncodingContainerProfile {
378    _data: [u8; 0],
379    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
380}
381
382impl ::std::fmt::Debug for GstEncodingContainerProfile {
383    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
384        f.debug_struct(&format!("GstEncodingContainerProfile @ {self:p}"))
385            .finish()
386    }
387}
388
389#[repr(C)]
390#[allow(dead_code)]
391pub struct GstEncodingProfile {
392    _data: [u8; 0],
393    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
394}
395
396impl ::std::fmt::Debug for GstEncodingProfile {
397    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
398        f.debug_struct(&format!("GstEncodingProfile @ {self:p}"))
399            .finish()
400    }
401}
402
403#[repr(C)]
404#[allow(dead_code)]
405pub struct GstEncodingTarget {
406    _data: [u8; 0],
407    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
408}
409
410impl ::std::fmt::Debug for GstEncodingTarget {
411    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
412        f.debug_struct(&format!("GstEncodingTarget @ {self:p}"))
413            .finish()
414    }
415}
416
417#[repr(C)]
418#[allow(dead_code)]
419pub struct GstEncodingVideoProfile {
420    _data: [u8; 0],
421    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
422}
423
424impl ::std::fmt::Debug for GstEncodingVideoProfile {
425    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
426        f.debug_struct(&format!("GstEncodingVideoProfile @ {self:p}"))
427            .finish()
428    }
429}
430
431extern "C" {
432
433    //=========================================================================
434    // GstAudioVisualizerShader
435    //=========================================================================
436    pub fn gst_audio_visualizer_shader_get_type() -> GType;
437
438    //=========================================================================
439    // GstDiscovererResult
440    //=========================================================================
441    pub fn gst_discoverer_result_get_type() -> GType;
442
443    //=========================================================================
444    // GstInstallPluginsReturn
445    //=========================================================================
446    pub fn gst_install_plugins_return_get_type() -> GType;
447    pub fn gst_install_plugins_return_get_name(ret: GstInstallPluginsReturn) -> *const c_char;
448
449    //=========================================================================
450    // GstDiscovererSerializeFlags
451    //=========================================================================
452    pub fn gst_discoverer_serialize_flags_get_type() -> GType;
453
454    //=========================================================================
455    // GstPbUtilsCapsDescriptionFlags
456    //=========================================================================
457    #[cfg(feature = "v1_20")]
458    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
459    pub fn gst_pb_utils_caps_description_flags_get_type() -> GType;
460
461    //=========================================================================
462    // GstInstallPluginsContext
463    //=========================================================================
464    pub fn gst_install_plugins_context_get_type() -> GType;
465    pub fn gst_install_plugins_context_new() -> *mut GstInstallPluginsContext;
466    pub fn gst_install_plugins_context_copy(
467        ctx: *mut GstInstallPluginsContext,
468    ) -> *mut GstInstallPluginsContext;
469    pub fn gst_install_plugins_context_free(ctx: *mut GstInstallPluginsContext);
470    pub fn gst_install_plugins_context_set_confirm_search(
471        ctx: *mut GstInstallPluginsContext,
472        confirm_search: gboolean,
473    );
474    pub fn gst_install_plugins_context_set_desktop_id(
475        ctx: *mut GstInstallPluginsContext,
476        desktop_id: *const c_char,
477    );
478    pub fn gst_install_plugins_context_set_startup_notification_id(
479        ctx: *mut GstInstallPluginsContext,
480        startup_id: *const c_char,
481    );
482    pub fn gst_install_plugins_context_set_xid(ctx: *mut GstInstallPluginsContext, xid: c_uint);
483
484    //=========================================================================
485    // GstAudioVisualizer
486    //=========================================================================
487    pub fn gst_audio_visualizer_get_type() -> GType;
488
489    //=========================================================================
490    // GstDiscoverer
491    //=========================================================================
492    pub fn gst_discoverer_get_type() -> GType;
493    pub fn gst_discoverer_new(
494        timeout: gst::GstClockTime,
495        error: *mut *mut glib::GError,
496    ) -> *mut GstDiscoverer;
497    pub fn gst_discoverer_discover_uri(
498        discoverer: *mut GstDiscoverer,
499        uri: *const c_char,
500        error: *mut *mut glib::GError,
501    ) -> *mut GstDiscovererInfo;
502    pub fn gst_discoverer_discover_uri_async(
503        discoverer: *mut GstDiscoverer,
504        uri: *const c_char,
505    ) -> gboolean;
506    pub fn gst_discoverer_start(discoverer: *mut GstDiscoverer);
507    pub fn gst_discoverer_stop(discoverer: *mut GstDiscoverer);
508
509    //=========================================================================
510    // GstDiscovererAudioInfo
511    //=========================================================================
512    pub fn gst_discoverer_audio_info_get_type() -> GType;
513    pub fn gst_discoverer_audio_info_get_bitrate(info: *const GstDiscovererAudioInfo) -> c_uint;
514    pub fn gst_discoverer_audio_info_get_channel_mask(info: *const GstDiscovererAudioInfo) -> u64;
515    pub fn gst_discoverer_audio_info_get_channels(info: *const GstDiscovererAudioInfo) -> c_uint;
516    pub fn gst_discoverer_audio_info_get_depth(info: *const GstDiscovererAudioInfo) -> c_uint;
517    pub fn gst_discoverer_audio_info_get_language(
518        info: *const GstDiscovererAudioInfo,
519    ) -> *const c_char;
520    pub fn gst_discoverer_audio_info_get_max_bitrate(info: *const GstDiscovererAudioInfo)
521        -> c_uint;
522    pub fn gst_discoverer_audio_info_get_sample_rate(info: *const GstDiscovererAudioInfo)
523        -> c_uint;
524
525    //=========================================================================
526    // GstDiscovererContainerInfo
527    //=========================================================================
528    pub fn gst_discoverer_container_info_get_type() -> GType;
529    pub fn gst_discoverer_container_info_get_streams(
530        info: *mut GstDiscovererContainerInfo,
531    ) -> *mut glib::GList;
532    #[cfg(feature = "v1_20")]
533    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
534    pub fn gst_discoverer_container_info_get_tags(
535        info: *const GstDiscovererContainerInfo,
536    ) -> *const gst::GstTagList;
537
538    //=========================================================================
539    // GstDiscovererInfo
540    //=========================================================================
541    pub fn gst_discoverer_info_get_type() -> GType;
542    pub fn gst_discoverer_info_from_variant(variant: *mut glib::GVariant)
543        -> *mut GstDiscovererInfo;
544    pub fn gst_discoverer_info_copy(ptr: *mut GstDiscovererInfo) -> *mut GstDiscovererInfo;
545    pub fn gst_discoverer_info_get_audio_streams(info: *mut GstDiscovererInfo) -> *mut glib::GList;
546    pub fn gst_discoverer_info_get_container_streams(
547        info: *mut GstDiscovererInfo,
548    ) -> *mut glib::GList;
549    pub fn gst_discoverer_info_get_duration(info: *const GstDiscovererInfo) -> gst::GstClockTime;
550    pub fn gst_discoverer_info_get_live(info: *const GstDiscovererInfo) -> gboolean;
551    pub fn gst_discoverer_info_get_misc(info: *const GstDiscovererInfo)
552        -> *const gst::GstStructure;
553    pub fn gst_discoverer_info_get_missing_elements_installer_details(
554        info: *const GstDiscovererInfo,
555    ) -> *mut *const c_char;
556    pub fn gst_discoverer_info_get_result(info: *const GstDiscovererInfo) -> GstDiscovererResult;
557    pub fn gst_discoverer_info_get_seekable(info: *const GstDiscovererInfo) -> gboolean;
558    pub fn gst_discoverer_info_get_stream_info(
559        info: *mut GstDiscovererInfo,
560    ) -> *mut GstDiscovererStreamInfo;
561    pub fn gst_discoverer_info_get_stream_list(info: *mut GstDiscovererInfo) -> *mut glib::GList;
562    pub fn gst_discoverer_info_get_streams(
563        info: *mut GstDiscovererInfo,
564        streamtype: GType,
565    ) -> *mut glib::GList;
566    pub fn gst_discoverer_info_get_subtitle_streams(
567        info: *mut GstDiscovererInfo,
568    ) -> *mut glib::GList;
569    pub fn gst_discoverer_info_get_tags(info: *const GstDiscovererInfo) -> *const gst::GstTagList;
570    pub fn gst_discoverer_info_get_toc(info: *const GstDiscovererInfo) -> *const gst::GstToc;
571    pub fn gst_discoverer_info_get_uri(info: *const GstDiscovererInfo) -> *const c_char;
572    pub fn gst_discoverer_info_get_video_streams(info: *mut GstDiscovererInfo) -> *mut glib::GList;
573    pub fn gst_discoverer_info_to_variant(
574        info: *mut GstDiscovererInfo,
575        flags: GstDiscovererSerializeFlags,
576    ) -> *mut glib::GVariant;
577
578    //=========================================================================
579    // GstDiscovererStreamInfo
580    //=========================================================================
581    pub fn gst_discoverer_stream_info_get_type() -> GType;
582    pub fn gst_discoverer_stream_info_list_free(infos: *mut glib::GList);
583    pub fn gst_discoverer_stream_info_get_caps(
584        info: *mut GstDiscovererStreamInfo,
585    ) -> *mut gst::GstCaps;
586    pub fn gst_discoverer_stream_info_get_misc(
587        info: *mut GstDiscovererStreamInfo,
588    ) -> *const gst::GstStructure;
589    pub fn gst_discoverer_stream_info_get_next(
590        info: *mut GstDiscovererStreamInfo,
591    ) -> *mut GstDiscovererStreamInfo;
592    pub fn gst_discoverer_stream_info_get_previous(
593        info: *mut GstDiscovererStreamInfo,
594    ) -> *mut GstDiscovererStreamInfo;
595    pub fn gst_discoverer_stream_info_get_stream_id(
596        info: *mut GstDiscovererStreamInfo,
597    ) -> *const c_char;
598    #[cfg(feature = "v1_20")]
599    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
600    pub fn gst_discoverer_stream_info_get_stream_number(
601        info: *mut GstDiscovererStreamInfo,
602    ) -> c_int;
603    pub fn gst_discoverer_stream_info_get_stream_type_nick(
604        info: *mut GstDiscovererStreamInfo,
605    ) -> *const c_char;
606    pub fn gst_discoverer_stream_info_get_tags(
607        info: *mut GstDiscovererStreamInfo,
608    ) -> *const gst::GstTagList;
609    pub fn gst_discoverer_stream_info_get_toc(
610        info: *mut GstDiscovererStreamInfo,
611    ) -> *const gst::GstToc;
612
613    //=========================================================================
614    // GstDiscovererSubtitleInfo
615    //=========================================================================
616    pub fn gst_discoverer_subtitle_info_get_type() -> GType;
617    pub fn gst_discoverer_subtitle_info_get_language(
618        info: *const GstDiscovererSubtitleInfo,
619    ) -> *const c_char;
620
621    //=========================================================================
622    // GstDiscovererVideoInfo
623    //=========================================================================
624    pub fn gst_discoverer_video_info_get_type() -> GType;
625    pub fn gst_discoverer_video_info_get_bitrate(info: *const GstDiscovererVideoInfo) -> c_uint;
626    pub fn gst_discoverer_video_info_get_depth(info: *const GstDiscovererVideoInfo) -> c_uint;
627    pub fn gst_discoverer_video_info_get_framerate_denom(
628        info: *const GstDiscovererVideoInfo,
629    ) -> c_uint;
630    pub fn gst_discoverer_video_info_get_framerate_num(
631        info: *const GstDiscovererVideoInfo,
632    ) -> c_uint;
633    pub fn gst_discoverer_video_info_get_height(info: *const GstDiscovererVideoInfo) -> c_uint;
634    pub fn gst_discoverer_video_info_get_max_bitrate(info: *const GstDiscovererVideoInfo)
635        -> c_uint;
636    pub fn gst_discoverer_video_info_get_par_denom(info: *const GstDiscovererVideoInfo) -> c_uint;
637    pub fn gst_discoverer_video_info_get_par_num(info: *const GstDiscovererVideoInfo) -> c_uint;
638    pub fn gst_discoverer_video_info_get_width(info: *const GstDiscovererVideoInfo) -> c_uint;
639    pub fn gst_discoverer_video_info_is_image(info: *const GstDiscovererVideoInfo) -> gboolean;
640    pub fn gst_discoverer_video_info_is_interlaced(info: *const GstDiscovererVideoInfo)
641        -> gboolean;
642
643    //=========================================================================
644    // GstEncodingAudioProfile
645    //=========================================================================
646    pub fn gst_encoding_audio_profile_get_type() -> GType;
647    pub fn gst_encoding_audio_profile_new(
648        format: *mut gst::GstCaps,
649        preset: *const c_char,
650        restriction: *mut gst::GstCaps,
651        presence: c_uint,
652    ) -> *mut GstEncodingAudioProfile;
653
654    //=========================================================================
655    // GstEncodingContainerProfile
656    //=========================================================================
657    pub fn gst_encoding_container_profile_get_type() -> GType;
658    pub fn gst_encoding_container_profile_new(
659        name: *const c_char,
660        description: *const c_char,
661        format: *mut gst::GstCaps,
662        preset: *const c_char,
663    ) -> *mut GstEncodingContainerProfile;
664    pub fn gst_encoding_container_profile_add_profile(
665        container: *mut GstEncodingContainerProfile,
666        profile: *mut GstEncodingProfile,
667    ) -> gboolean;
668    pub fn gst_encoding_container_profile_contains_profile(
669        container: *mut GstEncodingContainerProfile,
670        profile: *mut GstEncodingProfile,
671    ) -> gboolean;
672    pub fn gst_encoding_container_profile_get_profiles(
673        profile: *mut GstEncodingContainerProfile,
674    ) -> *const glib::GList;
675
676    //=========================================================================
677    // GstEncodingProfile
678    //=========================================================================
679    pub fn gst_encoding_profile_get_type() -> GType;
680    pub fn gst_encoding_profile_find(
681        targetname: *const c_char,
682        profilename: *const c_char,
683        category: *const c_char,
684    ) -> *mut GstEncodingProfile;
685    pub fn gst_encoding_profile_from_discoverer(
686        info: *mut GstDiscovererInfo,
687    ) -> *mut GstEncodingProfile;
688    #[cfg(feature = "v1_26")]
689    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
690    pub fn gst_encoding_profile_from_string(string: *const c_char) -> *mut GstEncodingProfile;
691    pub fn gst_encoding_profile_copy(self_: *mut GstEncodingProfile) -> *mut GstEncodingProfile;
692    pub fn gst_encoding_profile_get_allow_dynamic_output(
693        profile: *mut GstEncodingProfile,
694    ) -> gboolean;
695    pub fn gst_encoding_profile_get_description(profile: *mut GstEncodingProfile) -> *const c_char;
696    #[cfg(feature = "v1_20")]
697    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
698    pub fn gst_encoding_profile_get_element_properties(
699        self_: *mut GstEncodingProfile,
700    ) -> *mut gst::GstStructure;
701    pub fn gst_encoding_profile_get_file_extension(
702        profile: *mut GstEncodingProfile,
703    ) -> *const c_char;
704    pub fn gst_encoding_profile_get_format(profile: *mut GstEncodingProfile) -> *mut gst::GstCaps;
705    pub fn gst_encoding_profile_get_input_caps(
706        profile: *mut GstEncodingProfile,
707    ) -> *mut gst::GstCaps;
708    pub fn gst_encoding_profile_get_name(profile: *mut GstEncodingProfile) -> *const c_char;
709    pub fn gst_encoding_profile_get_presence(profile: *mut GstEncodingProfile) -> c_uint;
710    pub fn gst_encoding_profile_get_preset(profile: *mut GstEncodingProfile) -> *const c_char;
711    pub fn gst_encoding_profile_get_preset_name(profile: *mut GstEncodingProfile) -> *const c_char;
712    pub fn gst_encoding_profile_get_restriction(
713        profile: *mut GstEncodingProfile,
714    ) -> *mut gst::GstCaps;
715    #[cfg(feature = "v1_18")]
716    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
717    pub fn gst_encoding_profile_get_single_segment(profile: *mut GstEncodingProfile) -> gboolean;
718    pub fn gst_encoding_profile_get_type_nick(profile: *mut GstEncodingProfile) -> *const c_char;
719    pub fn gst_encoding_profile_is_enabled(profile: *mut GstEncodingProfile) -> gboolean;
720    pub fn gst_encoding_profile_is_equal(
721        a: *mut GstEncodingProfile,
722        b: *mut GstEncodingProfile,
723    ) -> gboolean;
724    pub fn gst_encoding_profile_set_allow_dynamic_output(
725        profile: *mut GstEncodingProfile,
726        allow_dynamic_output: gboolean,
727    );
728    pub fn gst_encoding_profile_set_description(
729        profile: *mut GstEncodingProfile,
730        description: *const c_char,
731    );
732    #[cfg(feature = "v1_20")]
733    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
734    pub fn gst_encoding_profile_set_element_properties(
735        self_: *mut GstEncodingProfile,
736        element_properties: *mut gst::GstStructure,
737    );
738    pub fn gst_encoding_profile_set_enabled(profile: *mut GstEncodingProfile, enabled: gboolean);
739    pub fn gst_encoding_profile_set_format(
740        profile: *mut GstEncodingProfile,
741        format: *mut gst::GstCaps,
742    );
743    pub fn gst_encoding_profile_set_name(profile: *mut GstEncodingProfile, name: *const c_char);
744    pub fn gst_encoding_profile_set_presence(profile: *mut GstEncodingProfile, presence: c_uint);
745    pub fn gst_encoding_profile_set_preset(profile: *mut GstEncodingProfile, preset: *const c_char);
746    pub fn gst_encoding_profile_set_preset_name(
747        profile: *mut GstEncodingProfile,
748        preset_name: *const c_char,
749    );
750    pub fn gst_encoding_profile_set_restriction(
751        profile: *mut GstEncodingProfile,
752        restriction: *mut gst::GstCaps,
753    );
754    #[cfg(feature = "v1_18")]
755    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
756    pub fn gst_encoding_profile_set_single_segment(
757        profile: *mut GstEncodingProfile,
758        single_segment: gboolean,
759    );
760    #[cfg(feature = "v1_26")]
761    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
762    pub fn gst_encoding_profile_to_string(profile: *mut GstEncodingProfile) -> *mut c_char;
763
764    //=========================================================================
765    // GstEncodingTarget
766    //=========================================================================
767    pub fn gst_encoding_target_get_type() -> GType;
768    pub fn gst_encoding_target_new(
769        name: *const c_char,
770        category: *const c_char,
771        description: *const c_char,
772        profiles: *const glib::GList,
773    ) -> *mut GstEncodingTarget;
774    pub fn gst_encoding_target_load(
775        name: *const c_char,
776        category: *const c_char,
777        error: *mut *mut glib::GError,
778    ) -> *mut GstEncodingTarget;
779    pub fn gst_encoding_target_load_from_file(
780        filepath: *const c_char,
781        error: *mut *mut glib::GError,
782    ) -> *mut GstEncodingTarget;
783    pub fn gst_encoding_target_add_profile(
784        target: *mut GstEncodingTarget,
785        profile: *mut GstEncodingProfile,
786    ) -> gboolean;
787    pub fn gst_encoding_target_get_category(target: *mut GstEncodingTarget) -> *const c_char;
788    pub fn gst_encoding_target_get_description(target: *mut GstEncodingTarget) -> *const c_char;
789    pub fn gst_encoding_target_get_name(target: *mut GstEncodingTarget) -> *const c_char;
790    #[cfg(feature = "v1_18")]
791    #[cfg_attr(docsrs, doc(cfg(feature = "v1_18")))]
792    pub fn gst_encoding_target_get_path(target: *mut GstEncodingTarget) -> *const c_char;
793    pub fn gst_encoding_target_get_profile(
794        target: *mut GstEncodingTarget,
795        name: *const c_char,
796    ) -> *mut GstEncodingProfile;
797    pub fn gst_encoding_target_get_profiles(target: *mut GstEncodingTarget) -> *const glib::GList;
798    pub fn gst_encoding_target_save(
799        target: *mut GstEncodingTarget,
800        error: *mut *mut glib::GError,
801    ) -> gboolean;
802    pub fn gst_encoding_target_save_to_file(
803        target: *mut GstEncodingTarget,
804        filepath: *const c_char,
805        error: *mut *mut glib::GError,
806    ) -> gboolean;
807
808    //=========================================================================
809    // GstEncodingVideoProfile
810    //=========================================================================
811    pub fn gst_encoding_video_profile_get_type() -> GType;
812    pub fn gst_encoding_video_profile_new(
813        format: *mut gst::GstCaps,
814        preset: *const c_char,
815        restriction: *mut gst::GstCaps,
816        presence: c_uint,
817    ) -> *mut GstEncodingVideoProfile;
818    pub fn gst_encoding_video_profile_get_pass(prof: *mut GstEncodingVideoProfile) -> c_uint;
819    pub fn gst_encoding_video_profile_get_variableframerate(
820        prof: *mut GstEncodingVideoProfile,
821    ) -> gboolean;
822    pub fn gst_encoding_video_profile_set_pass(prof: *mut GstEncodingVideoProfile, pass: c_uint);
823    pub fn gst_encoding_video_profile_set_variableframerate(
824        prof: *mut GstEncodingVideoProfile,
825        variableframerate: gboolean,
826    );
827
828    //=========================================================================
829    // Other functions
830    //=========================================================================
831    pub fn gst_codec_utils_aac_caps_set_level_and_profile(
832        caps: *mut gst::GstCaps,
833        audio_config: *const u8,
834        len: c_uint,
835    ) -> gboolean;
836    pub fn gst_codec_utils_aac_get_channels(audio_config: *const u8, len: c_uint) -> c_uint;
837    pub fn gst_codec_utils_aac_get_index_from_sample_rate(rate: c_uint) -> c_int;
838    pub fn gst_codec_utils_aac_get_level(audio_config: *const u8, len: c_uint) -> *const c_char;
839    pub fn gst_codec_utils_aac_get_profile(audio_config: *const u8, len: c_uint) -> *const c_char;
840    pub fn gst_codec_utils_aac_get_sample_rate(audio_config: *const u8, len: c_uint) -> c_uint;
841    pub fn gst_codec_utils_aac_get_sample_rate_from_index(sr_idx: c_uint) -> c_uint;
842    #[cfg(feature = "v1_26")]
843    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
844    pub fn gst_codec_utils_av1_create_av1c_from_caps(
845        caps: *mut gst::GstCaps,
846    ) -> *mut gst::GstBuffer;
847    #[cfg(feature = "v1_26")]
848    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
849    pub fn gst_codec_utils_av1_create_caps_from_av1c(
850        av1c: *mut gst::GstBuffer,
851    ) -> *mut gst::GstCaps;
852    #[cfg(feature = "v1_26")]
853    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
854    pub fn gst_codec_utils_av1_get_level(seq_level_idx: u8) -> *const c_char;
855    #[cfg(feature = "v1_26")]
856    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
857    pub fn gst_codec_utils_av1_get_seq_level_idx(level: *const c_char) -> u8;
858    #[cfg(feature = "v1_22")]
859    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
860    pub fn gst_codec_utils_caps_from_mime_codec(codecs_field: *const c_char) -> *mut gst::GstCaps;
861    #[cfg(feature = "v1_20")]
862    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
863    pub fn gst_codec_utils_caps_get_mime_codec(caps: *mut gst::GstCaps) -> *mut c_char;
864    pub fn gst_codec_utils_h264_caps_set_level_and_profile(
865        caps: *mut gst::GstCaps,
866        sps: *const u8,
867        len: c_uint,
868    ) -> gboolean;
869    pub fn gst_codec_utils_h264_get_level(sps: *const u8, len: c_uint) -> *const c_char;
870    pub fn gst_codec_utils_h264_get_level_idc(level: *const c_char) -> u8;
871    pub fn gst_codec_utils_h264_get_profile(sps: *const u8, len: c_uint) -> *const c_char;
872    #[cfg(feature = "v1_20")]
873    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
874    pub fn gst_codec_utils_h264_get_profile_flags_level(
875        codec_data: *const u8,
876        len: c_uint,
877        profile: *mut u8,
878        flags: *mut u8,
879        level: *mut u8,
880    ) -> gboolean;
881    pub fn gst_codec_utils_h265_caps_set_level_tier_and_profile(
882        caps: *mut gst::GstCaps,
883        profile_tier_level: *const u8,
884        len: c_uint,
885    ) -> gboolean;
886    pub fn gst_codec_utils_h265_get_level(
887        profile_tier_level: *const u8,
888        len: c_uint,
889    ) -> *const c_char;
890    pub fn gst_codec_utils_h265_get_level_idc(level: *const c_char) -> u8;
891    pub fn gst_codec_utils_h265_get_profile(
892        profile_tier_level: *const u8,
893        len: c_uint,
894    ) -> *const c_char;
895    pub fn gst_codec_utils_h265_get_tier(
896        profile_tier_level: *const u8,
897        len: c_uint,
898    ) -> *const c_char;
899    #[cfg(feature = "v1_26")]
900    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
901    pub fn gst_codec_utils_h266_caps_set_level_tier_and_profile(
902        caps: *mut gst::GstCaps,
903        decoder_configuration: *const u8,
904        len: c_uint,
905    ) -> gboolean;
906    #[cfg(feature = "v1_26")]
907    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
908    pub fn gst_codec_utils_h266_get_level(ptl_record: *const u8, len: c_uint) -> *const c_char;
909    #[cfg(feature = "v1_26")]
910    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
911    pub fn gst_codec_utils_h266_get_level_idc(level: *const c_char) -> u8;
912    #[cfg(feature = "v1_26")]
913    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
914    pub fn gst_codec_utils_h266_get_profile(ptl_record: *const u8, len: c_uint) -> *const c_char;
915    #[cfg(feature = "v1_26")]
916    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
917    pub fn gst_codec_utils_h266_get_tier(ptl_record: *const u8, len: c_uint) -> *const c_char;
918    pub fn gst_codec_utils_mpeg4video_caps_set_level_and_profile(
919        caps: *mut gst::GstCaps,
920        vis_obj_seq: *const u8,
921        len: c_uint,
922    ) -> gboolean;
923    pub fn gst_codec_utils_mpeg4video_get_level(
924        vis_obj_seq: *const u8,
925        len: c_uint,
926    ) -> *const c_char;
927    pub fn gst_codec_utils_mpeg4video_get_profile(
928        vis_obj_seq: *const u8,
929        len: c_uint,
930    ) -> *const c_char;
931    pub fn gst_codec_utils_opus_create_caps(
932        rate: u32,
933        channels: u8,
934        channel_mapping_family: u8,
935        stream_count: u8,
936        coupled_count: u8,
937        channel_mapping: *const u8,
938    ) -> *mut gst::GstCaps;
939    pub fn gst_codec_utils_opus_create_caps_from_header(
940        header: *mut gst::GstBuffer,
941        comments: *mut gst::GstBuffer,
942    ) -> *mut gst::GstCaps;
943    pub fn gst_codec_utils_opus_create_header(
944        rate: u32,
945        channels: u8,
946        channel_mapping_family: u8,
947        stream_count: u8,
948        coupled_count: u8,
949        channel_mapping: *const u8,
950        pre_skip: u16,
951        output_gain: i16,
952    ) -> *mut gst::GstBuffer;
953    pub fn gst_codec_utils_opus_parse_caps(
954        caps: *mut gst::GstCaps,
955        rate: *mut u32,
956        channels: *mut u8,
957        channel_mapping_family: *mut u8,
958        stream_count: *mut u8,
959        coupled_count: *mut u8,
960        channel_mapping: *mut [u8; 256],
961    ) -> gboolean;
962    pub fn gst_codec_utils_opus_parse_header(
963        header: *mut gst::GstBuffer,
964        rate: *mut u32,
965        channels: *mut u8,
966        channel_mapping_family: *mut u8,
967        stream_count: *mut u8,
968        coupled_count: *mut u8,
969        channel_mapping: *mut [u8; 256],
970        pre_skip: *mut u16,
971        output_gain: *mut i16,
972    ) -> gboolean;
973    pub fn gst_encoding_list_all_targets(categoryname: *const c_char) -> *mut glib::GList;
974    pub fn gst_encoding_list_available_categories() -> *mut glib::GList;
975    pub fn gst_install_plugins_async(
976        details: *const *const c_char,
977        ctx: *mut GstInstallPluginsContext,
978        func: GstInstallPluginsResultFunc,
979        user_data: gpointer,
980    ) -> GstInstallPluginsReturn;
981    pub fn gst_install_plugins_installation_in_progress() -> gboolean;
982    pub fn gst_install_plugins_supported() -> gboolean;
983    pub fn gst_install_plugins_sync(
984        details: *const *const c_char,
985        ctx: *mut GstInstallPluginsContext,
986    ) -> GstInstallPluginsReturn;
987    pub fn gst_is_missing_plugin_message(msg: *mut gst::GstMessage) -> gboolean;
988    pub fn gst_missing_decoder_installer_detail_new(
989        decode_caps: *const gst::GstCaps,
990    ) -> *mut c_char;
991    pub fn gst_missing_decoder_message_new(
992        element: *mut gst::GstElement,
993        decode_caps: *const gst::GstCaps,
994    ) -> *mut gst::GstMessage;
995    pub fn gst_missing_element_installer_detail_new(factory_name: *const c_char) -> *mut c_char;
996    pub fn gst_missing_element_message_new(
997        element: *mut gst::GstElement,
998        factory_name: *const c_char,
999    ) -> *mut gst::GstMessage;
1000    pub fn gst_missing_encoder_installer_detail_new(
1001        encode_caps: *const gst::GstCaps,
1002    ) -> *mut c_char;
1003    pub fn gst_missing_encoder_message_new(
1004        element: *mut gst::GstElement,
1005        encode_caps: *const gst::GstCaps,
1006    ) -> *mut gst::GstMessage;
1007    pub fn gst_missing_plugin_message_get_description(msg: *mut gst::GstMessage) -> *mut c_char;
1008    pub fn gst_missing_plugin_message_get_installer_detail(
1009        msg: *mut gst::GstMessage,
1010    ) -> *mut c_char;
1011    #[cfg(feature = "v1_26")]
1012    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
1013    pub fn gst_missing_plugin_message_get_stream_id(msg: *mut gst::GstMessage) -> *const c_char;
1014    #[cfg(feature = "v1_26")]
1015    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
1016    pub fn gst_missing_plugin_message_set_stream_id(
1017        msg: *mut gst::GstMessage,
1018        stream_id: *const c_char,
1019    );
1020    pub fn gst_missing_uri_sink_installer_detail_new(protocol: *const c_char) -> *mut c_char;
1021    pub fn gst_missing_uri_sink_message_new(
1022        element: *mut gst::GstElement,
1023        protocol: *const c_char,
1024    ) -> *mut gst::GstMessage;
1025    pub fn gst_missing_uri_source_installer_detail_new(protocol: *const c_char) -> *mut c_char;
1026    pub fn gst_missing_uri_source_message_new(
1027        element: *mut gst::GstElement,
1028        protocol: *const c_char,
1029    ) -> *mut gst::GstMessage;
1030    pub fn gst_pb_utils_add_codec_description_to_tag_list(
1031        taglist: *mut gst::GstTagList,
1032        codec_tag: *const c_char,
1033        caps: *const gst::GstCaps,
1034    ) -> gboolean;
1035    #[cfg(feature = "v1_20")]
1036    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1037    pub fn gst_pb_utils_get_caps_description_flags(
1038        caps: *const gst::GstCaps,
1039    ) -> GstPbUtilsCapsDescriptionFlags;
1040    pub fn gst_pb_utils_get_codec_description(caps: *const gst::GstCaps) -> *mut c_char;
1041    pub fn gst_pb_utils_get_decoder_description(caps: *const gst::GstCaps) -> *mut c_char;
1042    pub fn gst_pb_utils_get_element_description(factory_name: *const c_char) -> *mut c_char;
1043    pub fn gst_pb_utils_get_encoder_description(caps: *const gst::GstCaps) -> *mut c_char;
1044    #[cfg(feature = "v1_20")]
1045    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
1046    pub fn gst_pb_utils_get_file_extension_from_caps(caps: *const gst::GstCaps) -> *mut c_char;
1047    pub fn gst_pb_utils_get_sink_description(protocol: *const c_char) -> *mut c_char;
1048    pub fn gst_pb_utils_get_source_description(protocol: *const c_char) -> *mut c_char;
1049    pub fn gst_pb_utils_init();
1050    pub fn gst_plugins_base_version(
1051        major: *mut c_uint,
1052        minor: *mut c_uint,
1053        micro: *mut c_uint,
1054        nano: *mut c_uint,
1055    );
1056    pub fn gst_plugins_base_version_string() -> *mut c_char;
1057
1058}