1#![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
33pub 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#[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#[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#[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 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 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 #[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 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 pub fn gst_play_state_get_type() -> GType;
430 pub fn gst_play_state_get_name(state: GstPlayState) -> *const c_char;
431
432 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 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 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 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 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 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 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 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 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 pub fn gst_play_video_renderer_get_type() -> GType;
694
695}