Skip to main content

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