gstreamer_play_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_sys as gst;
18use gstreamer_video_sys as gst_video;
19
20#[cfg(unix)]
21#[allow(unused_imports)]
22use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
23#[allow(unused_imports)]
24use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
25#[allow(unused_imports)]
26use std::ffi::{
27    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
28};
29
30#[allow(unused_imports)]
31use glib::{gboolean, gconstpointer, gpointer, GType};
32
33// Enums
34pub type GstPlayColorBalanceType = c_int;
35pub const GST_PLAY_COLOR_BALANCE_HUE: GstPlayColorBalanceType = 3;
36pub const GST_PLAY_COLOR_BALANCE_BRIGHTNESS: GstPlayColorBalanceType = 0;
37pub const GST_PLAY_COLOR_BALANCE_SATURATION: GstPlayColorBalanceType = 2;
38pub const GST_PLAY_COLOR_BALANCE_CONTRAST: GstPlayColorBalanceType = 1;
39
40pub type GstPlayError = c_int;
41pub const GST_PLAY_ERROR_FAILED: GstPlayError = 0;
42
43pub type GstPlayMessage = c_int;
44pub const GST_PLAY_MESSAGE_URI_LOADED: GstPlayMessage = 0;
45pub const GST_PLAY_MESSAGE_POSITION_UPDATED: GstPlayMessage = 1;
46pub const GST_PLAY_MESSAGE_DURATION_CHANGED: GstPlayMessage = 2;
47pub const GST_PLAY_MESSAGE_STATE_CHANGED: GstPlayMessage = 3;
48pub const GST_PLAY_MESSAGE_BUFFERING: GstPlayMessage = 4;
49pub const GST_PLAY_MESSAGE_END_OF_STREAM: GstPlayMessage = 5;
50pub const GST_PLAY_MESSAGE_ERROR: GstPlayMessage = 6;
51pub const GST_PLAY_MESSAGE_WARNING: GstPlayMessage = 7;
52pub const GST_PLAY_MESSAGE_VIDEO_DIMENSIONS_CHANGED: GstPlayMessage = 8;
53pub const GST_PLAY_MESSAGE_MEDIA_INFO_UPDATED: GstPlayMessage = 9;
54pub const GST_PLAY_MESSAGE_VOLUME_CHANGED: GstPlayMessage = 10;
55pub const GST_PLAY_MESSAGE_MUTE_CHANGED: GstPlayMessage = 11;
56pub const GST_PLAY_MESSAGE_SEEK_DONE: GstPlayMessage = 12;
57
58pub type GstPlaySnapshotFormat = c_int;
59pub const GST_PLAY_THUMBNAIL_RAW_NATIVE: GstPlaySnapshotFormat = 0;
60pub const GST_PLAY_THUMBNAIL_RAW_xRGB: GstPlaySnapshotFormat = 1;
61pub const GST_PLAY_THUMBNAIL_RAW_BGRx: GstPlaySnapshotFormat = 2;
62pub const GST_PLAY_THUMBNAIL_JPG: GstPlaySnapshotFormat = 3;
63pub const GST_PLAY_THUMBNAIL_PNG: GstPlaySnapshotFormat = 4;
64
65pub type GstPlayState = c_int;
66pub const GST_PLAY_STATE_STOPPED: GstPlayState = 0;
67pub const GST_PLAY_STATE_BUFFERING: GstPlayState = 1;
68pub const GST_PLAY_STATE_PAUSED: GstPlayState = 2;
69pub const GST_PLAY_STATE_PLAYING: GstPlayState = 3;
70
71// Records
72#[repr(C)]
73#[allow(dead_code)]
74pub struct _GstPlayAudioInfoClass {
75    _data: [u8; 0],
76    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
77}
78
79pub type GstPlayAudioInfoClass = _GstPlayAudioInfoClass;
80
81#[repr(C)]
82#[allow(dead_code)]
83pub struct _GstPlayClass {
84    _data: [u8; 0],
85    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
86}
87
88pub type GstPlayClass = _GstPlayClass;
89
90#[repr(C)]
91#[allow(dead_code)]
92pub struct _GstPlayMediaInfoClass {
93    _data: [u8; 0],
94    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
95}
96
97pub type GstPlayMediaInfoClass = _GstPlayMediaInfoClass;
98
99#[repr(C)]
100#[allow(dead_code)]
101pub struct _GstPlaySignalAdapterClass {
102    _data: [u8; 0],
103    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
104}
105
106pub type GstPlaySignalAdapterClass = _GstPlaySignalAdapterClass;
107
108#[repr(C)]
109#[allow(dead_code)]
110pub struct _GstPlayStreamInfoClass {
111    _data: [u8; 0],
112    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
113}
114
115pub type GstPlayStreamInfoClass = _GstPlayStreamInfoClass;
116
117#[repr(C)]
118#[allow(dead_code)]
119pub struct _GstPlaySubtitleInfoClass {
120    _data: [u8; 0],
121    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
122}
123
124pub type GstPlaySubtitleInfoClass = _GstPlaySubtitleInfoClass;
125
126#[repr(C)]
127#[allow(dead_code)]
128pub struct _GstPlayVideoInfoClass {
129    _data: [u8; 0],
130    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
131}
132
133pub type GstPlayVideoInfoClass = _GstPlayVideoInfoClass;
134
135#[repr(C)]
136#[allow(dead_code)]
137pub struct _GstPlayVideoOverlayVideoRendererClass {
138    _data: [u8; 0],
139    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
140}
141
142pub type GstPlayVideoOverlayVideoRendererClass = _GstPlayVideoOverlayVideoRendererClass;
143
144#[derive(Copy, Clone)]
145#[repr(C)]
146pub struct GstPlayVideoRendererInterface {
147    pub parent_iface: gobject::GTypeInterface,
148    pub create_video_sink: Option<
149        unsafe extern "C" fn(*mut GstPlayVideoRenderer, *mut GstPlay) -> *mut gst::GstElement,
150    >,
151}
152
153impl ::std::fmt::Debug for GstPlayVideoRendererInterface {
154    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
155        f.debug_struct(&format!("GstPlayVideoRendererInterface @ {self:p}"))
156            .field("parent_iface", &self.parent_iface)
157            .field("create_video_sink", &self.create_video_sink)
158            .finish()
159    }
160}
161
162#[derive(Copy, Clone)]
163#[repr(C)]
164pub struct GstPlayVisualization {
165    pub name: *mut c_char,
166    pub description: *mut c_char,
167}
168
169impl ::std::fmt::Debug for GstPlayVisualization {
170    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
171        f.debug_struct(&format!("GstPlayVisualization @ {self:p}"))
172            .field("name", &self.name)
173            .field("description", &self.description)
174            .finish()
175    }
176}
177
178// Classes
179#[repr(C)]
180#[allow(dead_code)]
181pub struct GstPlay {
182    _data: [u8; 0],
183    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
184}
185
186impl ::std::fmt::Debug for GstPlay {
187    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
188        f.debug_struct(&format!("GstPlay @ {self:p}")).finish()
189    }
190}
191
192#[repr(C)]
193#[allow(dead_code)]
194pub struct GstPlayAudioInfo {
195    _data: [u8; 0],
196    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
197}
198
199impl ::std::fmt::Debug for GstPlayAudioInfo {
200    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
201        f.debug_struct(&format!("GstPlayAudioInfo @ {self:p}"))
202            .finish()
203    }
204}
205
206#[repr(C)]
207#[allow(dead_code)]
208pub struct GstPlayMediaInfo {
209    _data: [u8; 0],
210    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
211}
212
213impl ::std::fmt::Debug for GstPlayMediaInfo {
214    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
215        f.debug_struct(&format!("GstPlayMediaInfo @ {self:p}"))
216            .finish()
217    }
218}
219
220#[repr(C)]
221#[allow(dead_code)]
222pub struct GstPlaySignalAdapter {
223    _data: [u8; 0],
224    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
225}
226
227impl ::std::fmt::Debug for GstPlaySignalAdapter {
228    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
229        f.debug_struct(&format!("GstPlaySignalAdapter @ {self:p}"))
230            .finish()
231    }
232}
233
234#[repr(C)]
235#[allow(dead_code)]
236pub struct GstPlayStreamInfo {
237    _data: [u8; 0],
238    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
239}
240
241impl ::std::fmt::Debug for GstPlayStreamInfo {
242    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
243        f.debug_struct(&format!("GstPlayStreamInfo @ {self:p}"))
244            .finish()
245    }
246}
247
248#[repr(C)]
249#[allow(dead_code)]
250pub struct GstPlaySubtitleInfo {
251    _data: [u8; 0],
252    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
253}
254
255impl ::std::fmt::Debug for GstPlaySubtitleInfo {
256    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
257        f.debug_struct(&format!("GstPlaySubtitleInfo @ {self:p}"))
258            .finish()
259    }
260}
261
262#[repr(C)]
263#[allow(dead_code)]
264pub struct GstPlayVideoInfo {
265    _data: [u8; 0],
266    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
267}
268
269impl ::std::fmt::Debug for GstPlayVideoInfo {
270    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
271        f.debug_struct(&format!("GstPlayVideoInfo @ {self:p}"))
272            .finish()
273    }
274}
275
276#[repr(C)]
277#[allow(dead_code)]
278pub struct GstPlayVideoOverlayVideoRenderer {
279    _data: [u8; 0],
280    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
281}
282
283impl ::std::fmt::Debug for GstPlayVideoOverlayVideoRenderer {
284    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
285        f.debug_struct(&format!("GstPlayVideoOverlayVideoRenderer @ {self:p}"))
286            .finish()
287    }
288}
289
290// Interfaces
291#[repr(C)]
292#[allow(dead_code)]
293pub struct GstPlayVideoRenderer {
294    _data: [u8; 0],
295    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
296}
297
298impl ::std::fmt::Debug for GstPlayVideoRenderer {
299    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
300        write!(f, "GstPlayVideoRenderer @ {self:p}")
301    }
302}
303
304extern "C" {
305
306    //=========================================================================
307    // GstPlayColorBalanceType
308    //=========================================================================
309    pub fn gst_play_color_balance_type_get_type() -> GType;
310    pub fn gst_play_color_balance_type_get_name(type_: GstPlayColorBalanceType) -> *const c_char;
311
312    //=========================================================================
313    // GstPlayError
314    //=========================================================================
315    pub fn gst_play_error_get_type() -> GType;
316    pub fn gst_play_error_get_name(error: GstPlayError) -> *const c_char;
317    pub fn gst_play_error_quark() -> glib::GQuark;
318
319    //=========================================================================
320    // GstPlayMessage
321    //=========================================================================
322    pub fn gst_play_message_get_type() -> GType;
323    pub fn gst_play_message_get_name(message_type: GstPlayMessage) -> *const c_char;
324    #[cfg(feature = "v1_26")]
325    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
326    pub fn gst_play_message_get_stream_id(msg: *mut gst::GstMessage) -> *const c_char;
327    #[cfg(feature = "v1_26")]
328    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
329    pub fn gst_play_message_get_uri(msg: *mut gst::GstMessage) -> *const c_char;
330    #[cfg(feature = "v1_26")]
331    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
332    pub fn gst_play_message_parse_buffering(msg: *mut gst::GstMessage, percent: *mut c_uint);
333    pub fn gst_play_message_parse_buffering_percent(
334        msg: *mut gst::GstMessage,
335        percent: *mut c_uint,
336    );
337    #[cfg(feature = "v1_26")]
338    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
339    pub fn gst_play_message_parse_duration_changed(
340        msg: *mut gst::GstMessage,
341        duration: *mut gst::GstClockTime,
342    );
343    pub fn gst_play_message_parse_duration_updated(
344        msg: *mut gst::GstMessage,
345        duration: *mut gst::GstClockTime,
346    );
347    pub fn gst_play_message_parse_error(
348        msg: *mut gst::GstMessage,
349        error: *mut *mut glib::GError,
350        details: *mut *mut gst::GstStructure,
351    );
352    #[cfg(feature = "v1_26")]
353    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
354    pub fn gst_play_message_parse_error_missing_plugin(
355        msg: *mut gst::GstMessage,
356        descriptions: *mut *mut *mut c_char,
357        installer_details: *mut *mut *mut c_char,
358    ) -> gboolean;
359    pub fn gst_play_message_parse_media_info_updated(
360        msg: *mut gst::GstMessage,
361        info: *mut *mut GstPlayMediaInfo,
362    );
363    pub fn gst_play_message_parse_muted_changed(msg: *mut gst::GstMessage, muted: *mut gboolean);
364    pub fn gst_play_message_parse_position_updated(
365        msg: *mut gst::GstMessage,
366        position: *mut gst::GstClockTime,
367    );
368    #[cfg(feature = "v1_26")]
369    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
370    pub fn gst_play_message_parse_seek_done(
371        msg: *mut gst::GstMessage,
372        position: *mut gst::GstClockTime,
373    );
374    pub fn gst_play_message_parse_state_changed(
375        msg: *mut gst::GstMessage,
376        state: *mut GstPlayState,
377    );
378    pub fn gst_play_message_parse_type(msg: *mut gst::GstMessage, type_: *mut GstPlayMessage);
379    #[cfg(feature = "v1_26")]
380    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
381    pub fn gst_play_message_parse_uri_loaded(msg: *mut gst::GstMessage, uri: *mut *mut c_char);
382    pub fn gst_play_message_parse_video_dimensions_changed(
383        msg: *mut gst::GstMessage,
384        width: *mut c_uint,
385        height: *mut c_uint,
386    );
387    pub fn gst_play_message_parse_volume_changed(msg: *mut gst::GstMessage, volume: *mut c_double);
388    pub fn gst_play_message_parse_warning(
389        msg: *mut gst::GstMessage,
390        error: *mut *mut glib::GError,
391        details: *mut *mut gst::GstStructure,
392    );
393    #[cfg(feature = "v1_26")]
394    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
395    pub fn gst_play_message_parse_warning_missing_plugin(
396        msg: *mut gst::GstMessage,
397        descriptions: *mut *mut *mut c_char,
398        installer_details: *mut *mut *mut c_char,
399    ) -> gboolean;
400
401    //=========================================================================
402    // GstPlayState
403    //=========================================================================
404    pub fn gst_play_state_get_type() -> GType;
405    pub fn gst_play_state_get_name(state: GstPlayState) -> *const c_char;
406
407    //=========================================================================
408    // GstPlayVisualization
409    //=========================================================================
410    pub fn gst_play_visualization_get_type() -> GType;
411    pub fn gst_play_visualization_copy(
412        vis: *const GstPlayVisualization,
413    ) -> *mut GstPlayVisualization;
414    pub fn gst_play_visualization_free(vis: *mut GstPlayVisualization);
415
416    //=========================================================================
417    // GstPlay
418    //=========================================================================
419    pub fn gst_play_get_type() -> GType;
420    pub fn gst_play_new(video_renderer: *mut GstPlayVideoRenderer) -> *mut GstPlay;
421    #[cfg(feature = "v1_24")]
422    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
423    pub fn gst_play_config_get_pipeline_dump_in_error_details(
424        config: *const gst::GstStructure,
425    ) -> gboolean;
426    pub fn gst_play_config_get_position_update_interval(config: *const gst::GstStructure)
427        -> c_uint;
428    pub fn gst_play_config_get_seek_accurate(config: *const gst::GstStructure) -> gboolean;
429    pub fn gst_play_config_get_user_agent(config: *const gst::GstStructure) -> *mut c_char;
430    #[cfg(feature = "v1_24")]
431    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
432    pub fn gst_play_config_set_pipeline_dump_in_error_details(
433        config: *mut gst::GstStructure,
434        value: gboolean,
435    );
436    pub fn gst_play_config_set_position_update_interval(
437        config: *mut gst::GstStructure,
438        interval: c_uint,
439    );
440    pub fn gst_play_config_set_seek_accurate(config: *mut gst::GstStructure, accurate: gboolean);
441    pub fn gst_play_config_set_user_agent(config: *mut gst::GstStructure, agent: *const c_char);
442    pub fn gst_play_get_audio_streams(info: *const GstPlayMediaInfo) -> *mut glib::GList;
443    pub fn gst_play_get_subtitle_streams(info: *const GstPlayMediaInfo) -> *mut glib::GList;
444    pub fn gst_play_get_video_streams(info: *const GstPlayMediaInfo) -> *mut glib::GList;
445    pub fn gst_play_is_play_message(msg: *mut gst::GstMessage) -> gboolean;
446    pub fn gst_play_visualizations_free(viss: *mut *mut GstPlayVisualization);
447    pub fn gst_play_visualizations_get() -> *mut *mut GstPlayVisualization;
448    pub fn gst_play_get_audio_video_offset(play: *mut GstPlay) -> i64;
449    pub fn gst_play_get_color_balance(
450        play: *mut GstPlay,
451        type_: GstPlayColorBalanceType,
452    ) -> c_double;
453    pub fn gst_play_get_config(play: *mut GstPlay) -> *mut gst::GstStructure;
454    pub fn gst_play_get_current_audio_track(play: *mut GstPlay) -> *mut GstPlayAudioInfo;
455    pub fn gst_play_get_current_subtitle_track(play: *mut GstPlay) -> *mut GstPlaySubtitleInfo;
456    pub fn gst_play_get_current_video_track(play: *mut GstPlay) -> *mut GstPlayVideoInfo;
457    pub fn gst_play_get_current_visualization(play: *mut GstPlay) -> *mut c_char;
458    pub fn gst_play_get_duration(play: *mut GstPlay) -> gst::GstClockTime;
459    pub fn gst_play_get_media_info(play: *mut GstPlay) -> *mut GstPlayMediaInfo;
460    pub fn gst_play_get_message_bus(play: *mut GstPlay) -> *mut gst::GstBus;
461    pub fn gst_play_get_multiview_flags(play: *mut GstPlay) -> gst_video::GstVideoMultiviewFlags;
462    pub fn gst_play_get_multiview_mode(
463        play: *mut GstPlay,
464    ) -> gst_video::GstVideoMultiviewFramePacking;
465    pub fn gst_play_get_mute(play: *mut GstPlay) -> gboolean;
466    pub fn gst_play_get_pipeline(play: *mut GstPlay) -> *mut gst::GstElement;
467    pub fn gst_play_get_position(play: *mut GstPlay) -> gst::GstClockTime;
468    pub fn gst_play_get_rate(play: *mut GstPlay) -> c_double;
469    pub fn gst_play_get_subtitle_uri(play: *mut GstPlay) -> *mut c_char;
470    pub fn gst_play_get_subtitle_video_offset(play: *mut GstPlay) -> i64;
471    pub fn gst_play_get_uri(play: *mut GstPlay) -> *mut c_char;
472    pub fn gst_play_get_video_snapshot(
473        play: *mut GstPlay,
474        format: GstPlaySnapshotFormat,
475        config: *const gst::GstStructure,
476    ) -> *mut gst::GstSample;
477    pub fn gst_play_get_volume(play: *mut GstPlay) -> c_double;
478    pub fn gst_play_has_color_balance(play: *mut GstPlay) -> gboolean;
479    pub fn gst_play_pause(play: *mut GstPlay);
480    pub fn gst_play_play(play: *mut GstPlay);
481    pub fn gst_play_seek(play: *mut GstPlay, position: gst::GstClockTime);
482    pub fn gst_play_set_audio_track(play: *mut GstPlay, stream_index: c_int) -> gboolean;
483    pub fn gst_play_set_audio_track_enabled(play: *mut GstPlay, enabled: gboolean);
484    #[cfg(feature = "v1_26")]
485    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
486    pub fn gst_play_set_audio_track_id(play: *mut GstPlay, stream_id: *const c_char) -> gboolean;
487    pub fn gst_play_set_audio_video_offset(play: *mut GstPlay, offset: i64);
488    pub fn gst_play_set_color_balance(
489        play: *mut GstPlay,
490        type_: GstPlayColorBalanceType,
491        value: c_double,
492    );
493    pub fn gst_play_set_config(play: *mut GstPlay, config: *mut gst::GstStructure) -> gboolean;
494    pub fn gst_play_set_multiview_flags(
495        play: *mut GstPlay,
496        flags: gst_video::GstVideoMultiviewFlags,
497    );
498    pub fn gst_play_set_multiview_mode(
499        play: *mut GstPlay,
500        mode: gst_video::GstVideoMultiviewFramePacking,
501    );
502    pub fn gst_play_set_mute(play: *mut GstPlay, val: gboolean);
503    pub fn gst_play_set_rate(play: *mut GstPlay, rate: c_double);
504    pub fn gst_play_set_subtitle_track(play: *mut GstPlay, stream_index: c_int) -> gboolean;
505    pub fn gst_play_set_subtitle_track_enabled(play: *mut GstPlay, enabled: gboolean);
506    #[cfg(feature = "v1_26")]
507    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
508    pub fn gst_play_set_subtitle_track_id(play: *mut GstPlay, stream_id: *const c_char)
509        -> gboolean;
510    pub fn gst_play_set_subtitle_uri(play: *mut GstPlay, uri: *const c_char);
511    pub fn gst_play_set_subtitle_video_offset(play: *mut GstPlay, offset: i64);
512    #[cfg(feature = "v1_26")]
513    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
514    pub fn gst_play_set_track_ids(
515        play: *mut GstPlay,
516        audio_stream_id: *const c_char,
517        video_stream_id: *const c_char,
518        subtitle_stream_id: *const c_char,
519    ) -> gboolean;
520    pub fn gst_play_set_uri(play: *mut GstPlay, uri: *const c_char);
521    pub fn gst_play_set_video_track(play: *mut GstPlay, stream_index: c_int) -> gboolean;
522    pub fn gst_play_set_video_track_enabled(play: *mut GstPlay, enabled: gboolean);
523    #[cfg(feature = "v1_26")]
524    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
525    pub fn gst_play_set_video_track_id(play: *mut GstPlay, stream_id: *const c_char) -> gboolean;
526    pub fn gst_play_set_visualization(play: *mut GstPlay, name: *const c_char) -> gboolean;
527    pub fn gst_play_set_visualization_enabled(play: *mut GstPlay, enabled: gboolean);
528    pub fn gst_play_set_volume(play: *mut GstPlay, val: c_double);
529    pub fn gst_play_stop(play: *mut GstPlay);
530
531    //=========================================================================
532    // GstPlayAudioInfo
533    //=========================================================================
534    pub fn gst_play_audio_info_get_type() -> GType;
535    pub fn gst_play_audio_info_get_bitrate(info: *const GstPlayAudioInfo) -> c_int;
536    pub fn gst_play_audio_info_get_channels(info: *const GstPlayAudioInfo) -> c_int;
537    pub fn gst_play_audio_info_get_language(info: *const GstPlayAudioInfo) -> *const c_char;
538    pub fn gst_play_audio_info_get_max_bitrate(info: *const GstPlayAudioInfo) -> c_int;
539    pub fn gst_play_audio_info_get_sample_rate(info: *const GstPlayAudioInfo) -> c_int;
540
541    //=========================================================================
542    // GstPlayMediaInfo
543    //=========================================================================
544    pub fn gst_play_media_info_get_type() -> GType;
545    pub fn gst_play_media_info_get_audio_streams(info: *const GstPlayMediaInfo)
546        -> *mut glib::GList;
547    pub fn gst_play_media_info_get_container_format(info: *const GstPlayMediaInfo)
548        -> *const c_char;
549    pub fn gst_play_media_info_get_duration(info: *const GstPlayMediaInfo) -> gst::GstClockTime;
550    pub fn gst_play_media_info_get_image_sample(
551        info: *const GstPlayMediaInfo,
552    ) -> *mut gst::GstSample;
553    pub fn gst_play_media_info_get_number_of_audio_streams(info: *const GstPlayMediaInfo)
554        -> c_uint;
555    pub fn gst_play_media_info_get_number_of_streams(info: *const GstPlayMediaInfo) -> c_uint;
556    pub fn gst_play_media_info_get_number_of_subtitle_streams(
557        info: *const GstPlayMediaInfo,
558    ) -> c_uint;
559    pub fn gst_play_media_info_get_number_of_video_streams(info: *const GstPlayMediaInfo)
560        -> c_uint;
561    pub fn gst_play_media_info_get_stream_list(info: *const GstPlayMediaInfo) -> *mut glib::GList;
562    pub fn gst_play_media_info_get_subtitle_streams(
563        info: *const GstPlayMediaInfo,
564    ) -> *mut glib::GList;
565    pub fn gst_play_media_info_get_tags(info: *const GstPlayMediaInfo) -> *mut gst::GstTagList;
566    pub fn gst_play_media_info_get_title(info: *const GstPlayMediaInfo) -> *const c_char;
567    pub fn gst_play_media_info_get_uri(info: *const GstPlayMediaInfo) -> *const c_char;
568    pub fn gst_play_media_info_get_video_streams(info: *const GstPlayMediaInfo)
569        -> *mut glib::GList;
570    pub fn gst_play_media_info_is_live(info: *const GstPlayMediaInfo) -> gboolean;
571    pub fn gst_play_media_info_is_seekable(info: *const GstPlayMediaInfo) -> gboolean;
572
573    //=========================================================================
574    // GstPlaySignalAdapter
575    //=========================================================================
576    pub fn gst_play_signal_adapter_get_type() -> GType;
577    pub fn gst_play_signal_adapter_new(play: *mut GstPlay) -> *mut GstPlaySignalAdapter;
578    pub fn gst_play_signal_adapter_new_sync_emit(play: *mut GstPlay) -> *mut GstPlaySignalAdapter;
579    pub fn gst_play_signal_adapter_new_with_main_context(
580        play: *mut GstPlay,
581        context: *mut glib::GMainContext,
582    ) -> *mut GstPlaySignalAdapter;
583    pub fn gst_play_signal_adapter_get_play(adapter: *mut GstPlaySignalAdapter) -> *mut GstPlay;
584
585    //=========================================================================
586    // GstPlayStreamInfo
587    //=========================================================================
588    pub fn gst_play_stream_info_get_type() -> GType;
589    pub fn gst_play_stream_info_get_caps(info: *const GstPlayStreamInfo) -> *mut gst::GstCaps;
590    pub fn gst_play_stream_info_get_codec(info: *const GstPlayStreamInfo) -> *const c_char;
591    pub fn gst_play_stream_info_get_index(info: *const GstPlayStreamInfo) -> c_int;
592    #[cfg(feature = "v1_26")]
593    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
594    pub fn gst_play_stream_info_get_stream_id(info: *const GstPlayStreamInfo) -> *const c_char;
595    pub fn gst_play_stream_info_get_stream_type(info: *const GstPlayStreamInfo) -> *const c_char;
596    pub fn gst_play_stream_info_get_tags(info: *const GstPlayStreamInfo) -> *mut gst::GstTagList;
597
598    //=========================================================================
599    // GstPlaySubtitleInfo
600    //=========================================================================
601    pub fn gst_play_subtitle_info_get_type() -> GType;
602    pub fn gst_play_subtitle_info_get_language(info: *const GstPlaySubtitleInfo) -> *const c_char;
603
604    //=========================================================================
605    // GstPlayVideoInfo
606    //=========================================================================
607    pub fn gst_play_video_info_get_type() -> GType;
608    pub fn gst_play_video_info_get_bitrate(info: *const GstPlayVideoInfo) -> c_int;
609    pub fn gst_play_video_info_get_framerate(
610        info: *const GstPlayVideoInfo,
611        fps_n: *mut c_int,
612        fps_d: *mut c_int,
613    );
614    pub fn gst_play_video_info_get_height(info: *const GstPlayVideoInfo) -> c_int;
615    pub fn gst_play_video_info_get_max_bitrate(info: *const GstPlayVideoInfo) -> c_int;
616    pub fn gst_play_video_info_get_pixel_aspect_ratio(
617        info: *const GstPlayVideoInfo,
618        par_n: *mut c_uint,
619        par_d: *mut c_uint,
620    );
621    pub fn gst_play_video_info_get_width(info: *const GstPlayVideoInfo) -> c_int;
622
623    //=========================================================================
624    // GstPlayVideoOverlayVideoRenderer
625    //=========================================================================
626    pub fn gst_play_video_overlay_video_renderer_get_type() -> GType;
627    pub fn gst_play_video_overlay_video_renderer_new(
628        window_handle: gpointer,
629    ) -> *mut GstPlayVideoRenderer;
630    pub fn gst_play_video_overlay_video_renderer_new_with_sink(
631        window_handle: gpointer,
632        video_sink: *mut gst::GstElement,
633    ) -> *mut GstPlayVideoRenderer;
634    pub fn gst_play_video_overlay_video_renderer_expose(
635        self_: *mut GstPlayVideoOverlayVideoRenderer,
636    );
637    pub fn gst_play_video_overlay_video_renderer_get_render_rectangle(
638        self_: *mut GstPlayVideoOverlayVideoRenderer,
639        x: *mut c_int,
640        y: *mut c_int,
641        width: *mut c_int,
642        height: *mut c_int,
643    );
644    pub fn gst_play_video_overlay_video_renderer_get_window_handle(
645        self_: *mut GstPlayVideoOverlayVideoRenderer,
646    ) -> gpointer;
647    pub fn gst_play_video_overlay_video_renderer_set_render_rectangle(
648        self_: *mut GstPlayVideoOverlayVideoRenderer,
649        x: c_int,
650        y: c_int,
651        width: c_int,
652        height: c_int,
653    );
654    pub fn gst_play_video_overlay_video_renderer_set_window_handle(
655        self_: *mut GstPlayVideoOverlayVideoRenderer,
656        window_handle: gpointer,
657    );
658
659    //=========================================================================
660    // GstPlayVideoRenderer
661    //=========================================================================
662    pub fn gst_play_video_renderer_get_type() -> GType;
663
664}