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#[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
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 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#[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#[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#[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 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 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 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 pub fn gst_play_state_get_type() -> GType;
405 pub fn gst_play_state_get_name(state: GstPlayState) -> *const c_char;
406
407 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 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 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 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 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 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 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 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 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 pub fn gst_play_video_renderer_get_type() -> GType;
663
664}