lib.rs 21.7 KB
Newer Older
1
// This file was generated by gir (https://github.com/gtk-rs/gir @ 7cca816)
2
// from gir-files (https://github.com/gtk-rs/gir-files @ ???)
3 4
// DO NOT EDIT

5
#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
6 7 8 9 10
#![allow(
    clippy::approx_constant,
    clippy::type_complexity,
    clippy::unreadable_literal
)]
11 12 13 14 15

extern crate glib_sys as glib;
extern crate gobject_sys as gobject;
extern crate gstreamer_sys as gst;
extern crate gstreamer_video_sys as gst_video;
16
extern crate libc;
17 18

#[allow(unused_imports)]
19 20 21 22
use libc::{
    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
    intptr_t, size_t, ssize_t, time_t, uintptr_t, FILE,
};
23 24

#[allow(unused_imports)]
25
use glib::{gboolean, gconstpointer, gpointer, GType};
26 27

// Enums
28 29 30 31 32
pub type GstPlayerColorBalanceType = c_int;
pub const GST_PLAYER_COLOR_BALANCE_HUE: GstPlayerColorBalanceType = 3;
pub const GST_PLAYER_COLOR_BALANCE_BRIGHTNESS: GstPlayerColorBalanceType = 0;
pub const GST_PLAYER_COLOR_BALANCE_SATURATION: GstPlayerColorBalanceType = 2;
pub const GST_PLAYER_COLOR_BALANCE_CONTRAST: GstPlayerColorBalanceType = 1;
33

Sebastian Dröge's avatar
Sebastian Dröge committed
34 35
pub type GstPlayerError = c_int;
pub const GST_PLAYER_ERROR_FAILED: GstPlayerError = 0;
36

37 38 39 40 41 42 43 44 45 46 47 48
pub type GstPlayerSnapshotFormat = c_int;
pub const GST_PLAYER_THUMBNAIL_RAW_NATIVE: GstPlayerSnapshotFormat = 0;
pub const GST_PLAYER_THUMBNAIL_RAW_xRGB: GstPlayerSnapshotFormat = 1;
pub const GST_PLAYER_THUMBNAIL_RAW_BGRx: GstPlayerSnapshotFormat = 2;
pub const GST_PLAYER_THUMBNAIL_JPG: GstPlayerSnapshotFormat = 3;
pub const GST_PLAYER_THUMBNAIL_PNG: GstPlayerSnapshotFormat = 4;

pub type GstPlayerState = c_int;
pub const GST_PLAYER_STATE_STOPPED: GstPlayerState = 0;
pub const GST_PLAYER_STATE_BUFFERING: GstPlayerState = 1;
pub const GST_PLAYER_STATE_PAUSED: GstPlayerState = 2;
pub const GST_PLAYER_STATE_PLAYING: GstPlayerState = 3;
49 50 51 52 53 54

// Callbacks
pub type GstPlayerSignalDispatcherFunc = Option<unsafe extern "C" fn(gpointer)>;

// Records
#[repr(C)]
55
pub struct _GstPlayerAudioInfoClass(c_void);
56

57
pub type GstPlayerAudioInfoClass = *mut _GstPlayerAudioInfoClass;
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
58

59
#[repr(C)]
60
pub struct _GstPlayerClass(c_void);
61

62
pub type GstPlayerClass = *mut _GstPlayerClass;
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
63

64
#[repr(C)]
65
pub struct _GstPlayerGMainContextSignalDispatcherClass(c_void);
66

67 68
pub type GstPlayerGMainContextSignalDispatcherClass =
    *mut _GstPlayerGMainContextSignalDispatcherClass;
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
69

70
#[repr(C)]
71
pub struct _GstPlayerMediaInfoClass(c_void);
72

73
pub type GstPlayerMediaInfoClass = *mut _GstPlayerMediaInfoClass;
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
74

75
#[repr(C)]
76
#[derive(Copy, Clone)]
77 78
pub struct GstPlayerSignalDispatcherInterface {
    pub parent_iface: gobject::GTypeInterface,
79 80 81 82 83 84 85 86 87
    pub dispatch: Option<
        unsafe extern "C" fn(
            *mut GstPlayerSignalDispatcher,
            *mut GstPlayer,
            GstPlayerSignalDispatcherFunc,
            gpointer,
            glib::GDestroyNotify,
        ),
    >,
88 89
}

Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
90 91
impl ::std::fmt::Debug for GstPlayerSignalDispatcherInterface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
92 93 94 95 96 97 98
        f.debug_struct(&format!(
            "GstPlayerSignalDispatcherInterface @ {:?}",
            self as *const _
        ))
        .field("parent_iface", &self.parent_iface)
        .field("dispatch", &self.dispatch)
        .finish()
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
99 100 101
    }
}

102
#[repr(C)]
103
pub struct _GstPlayerStreamInfoClass(c_void);
104

105
pub type GstPlayerStreamInfoClass = *mut _GstPlayerStreamInfoClass;
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
106

107
#[repr(C)]
108
pub struct _GstPlayerSubtitleInfoClass(c_void);
109

110
pub type GstPlayerSubtitleInfoClass = *mut _GstPlayerSubtitleInfoClass;
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
111

112
#[repr(C)]
113
pub struct _GstPlayerVideoInfoClass(c_void);
114

115
pub type GstPlayerVideoInfoClass = *mut _GstPlayerVideoInfoClass;
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
116

117
#[repr(C)]
118
pub struct _GstPlayerVideoOverlayVideoRendererClass(c_void);
119

120
pub type GstPlayerVideoOverlayVideoRendererClass = *mut _GstPlayerVideoOverlayVideoRendererClass;
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
121

122
#[repr(C)]
123
#[derive(Copy, Clone)]
124 125
pub struct GstPlayerVideoRendererInterface {
    pub parent_iface: gobject::GTypeInterface,
126 127 128
    pub create_video_sink: Option<
        unsafe extern "C" fn(*mut GstPlayerVideoRenderer, *mut GstPlayer) -> *mut gst::GstElement,
    >,
129 130
}

Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
131 132
impl ::std::fmt::Debug for GstPlayerVideoRendererInterface {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
133 134 135 136 137 138 139
        f.debug_struct(&format!(
            "GstPlayerVideoRendererInterface @ {:?}",
            self as *const _
        ))
        .field("parent_iface", &self.parent_iface)
        .field("create_video_sink", &self.create_video_sink)
        .finish()
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
140 141 142
    }
}

143
#[repr(C)]
144
#[derive(Copy, Clone)]
145 146 147 148 149
pub struct GstPlayerVisualization {
    pub name: *mut c_char,
    pub description: *mut c_char,
}

Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
150 151
impl ::std::fmt::Debug for GstPlayerVisualization {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
152
        f.debug_struct(&format!("GstPlayerVisualization @ {:?}", self as *const _))
153 154 155
            .field("name", &self.name)
            .field("description", &self.description)
            .finish()
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
156 157 158
    }
}

159 160 161 162
// Classes
#[repr(C)]
pub struct GstPlayer(c_void);

Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
163 164
impl ::std::fmt::Debug for GstPlayer {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
165
        f.debug_struct(&format!("GstPlayer @ {:?}", self as *const _))
166
            .finish()
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
167 168 169
    }
}

170 171 172
#[repr(C)]
pub struct GstPlayerAudioInfo(c_void);

Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
173 174
impl ::std::fmt::Debug for GstPlayerAudioInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
175
        f.debug_struct(&format!("GstPlayerAudioInfo @ {:?}", self as *const _))
176
            .finish()
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
177 178 179
    }
}

180 181 182
#[repr(C)]
pub struct GstPlayerGMainContextSignalDispatcher(c_void);

Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
183 184
impl ::std::fmt::Debug for GstPlayerGMainContextSignalDispatcher {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
185 186 187 188 189
        f.debug_struct(&format!(
            "GstPlayerGMainContextSignalDispatcher @ {:?}",
            self as *const _
        ))
        .finish()
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
190 191 192
    }
}

193 194 195
#[repr(C)]
pub struct GstPlayerMediaInfo(c_void);

Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
196 197
impl ::std::fmt::Debug for GstPlayerMediaInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
198
        f.debug_struct(&format!("GstPlayerMediaInfo @ {:?}", self as *const _))
199
            .finish()
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
200 201 202
    }
}

203 204 205
#[repr(C)]
pub struct GstPlayerStreamInfo(c_void);

Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
206 207
impl ::std::fmt::Debug for GstPlayerStreamInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
208
        f.debug_struct(&format!("GstPlayerStreamInfo @ {:?}", self as *const _))
209
            .finish()
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
210 211 212
    }
}

213 214 215
#[repr(C)]
pub struct GstPlayerSubtitleInfo(c_void);

Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
216 217
impl ::std::fmt::Debug for GstPlayerSubtitleInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
218
        f.debug_struct(&format!("GstPlayerSubtitleInfo @ {:?}", self as *const _))
219
            .finish()
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
220 221 222
    }
}

223 224 225
#[repr(C)]
pub struct GstPlayerVideoInfo(c_void);

Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
226 227
impl ::std::fmt::Debug for GstPlayerVideoInfo {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
228
        f.debug_struct(&format!("GstPlayerVideoInfo @ {:?}", self as *const _))
229
            .finish()
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
230 231 232
    }
}

233 234 235
#[repr(C)]
pub struct GstPlayerVideoOverlayVideoRenderer(c_void);

Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
236 237
impl ::std::fmt::Debug for GstPlayerVideoOverlayVideoRenderer {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
238 239 240 241 242
        f.debug_struct(&format!(
            "GstPlayerVideoOverlayVideoRenderer @ {:?}",
            self as *const _
        ))
        .finish()
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
243 244 245
    }
}

246 247 248
// Interfaces
#[repr(C)]
pub struct GstPlayerSignalDispatcher(c_void);
Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
249 250 251 252 253 254 255

impl ::std::fmt::Debug for GstPlayerSignalDispatcher {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GstPlayerSignalDispatcher @ {:?}", self as *const _)
    }
}

256 257 258
#[repr(C)]
pub struct GstPlayerVideoRenderer(c_void);

Guillaume Gomez's avatar
regen  
Guillaume Gomez committed
259 260 261 262 263 264
impl ::std::fmt::Debug for GstPlayerVideoRenderer {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        write!(f, "GstPlayerVideoRenderer @ {:?}", self as *const _)
    }
}

265 266 267 268 269 270
extern "C" {

    //=========================================================================
    // GstPlayerColorBalanceType
    //=========================================================================
    pub fn gst_player_color_balance_type_get_type() -> GType;
271 272 273
    pub fn gst_player_color_balance_type_get_name(
        type_: GstPlayerColorBalanceType,
    ) -> *const c_char;
274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291

    //=========================================================================
    // GstPlayerError
    //=========================================================================
    pub fn gst_player_error_get_type() -> GType;
    pub fn gst_player_error_get_name(error: GstPlayerError) -> *const c_char;
    pub fn gst_player_error_quark() -> glib::GQuark;

    //=========================================================================
    // GstPlayerState
    //=========================================================================
    pub fn gst_player_state_get_type() -> GType;
    pub fn gst_player_state_get_name(state: GstPlayerState) -> *const c_char;

    //=========================================================================
    // GstPlayerVisualization
    //=========================================================================
    pub fn gst_player_visualization_get_type() -> GType;
292 293 294
    pub fn gst_player_visualization_copy(
        vis: *const GstPlayerVisualization,
    ) -> *mut GstPlayerVisualization;
295 296 297 298 299 300
    pub fn gst_player_visualization_free(vis: *mut GstPlayerVisualization);

    //=========================================================================
    // GstPlayer
    //=========================================================================
    pub fn gst_player_get_type() -> GType;
301 302 303 304 305 306 307
    pub fn gst_player_new(
        video_renderer: *mut GstPlayerVideoRenderer,
        signal_dispatcher: *mut GstPlayerSignalDispatcher,
    ) -> *mut GstPlayer;
    pub fn gst_player_config_get_position_update_interval(
        config: *const gst::GstStructure,
    ) -> c_uint;
308 309
    pub fn gst_player_config_get_seek_accurate(config: *const gst::GstStructure) -> gboolean;
    pub fn gst_player_config_get_user_agent(config: *const gst::GstStructure) -> *mut c_char;
310 311 312 313
    pub fn gst_player_config_set_position_update_interval(
        config: *mut gst::GstStructure,
        interval: c_uint,
    );
314
    pub fn gst_player_config_set_seek_accurate(config: *mut gst::GstStructure, accurate: gboolean);
315 316 317 318 319 320 321
    pub fn gst_player_config_set_user_agent(config: *mut gst::GstStructure, agent: *const c_char);
    pub fn gst_player_get_audio_streams(info: *const GstPlayerMediaInfo) -> *mut glib::GList;
    pub fn gst_player_get_subtitle_streams(info: *const GstPlayerMediaInfo) -> *mut glib::GList;
    pub fn gst_player_get_video_streams(info: *const GstPlayerMediaInfo) -> *mut glib::GList;
    pub fn gst_player_visualizations_free(viss: *mut *mut GstPlayerVisualization);
    pub fn gst_player_visualizations_get() -> *mut *mut GstPlayerVisualization;
    pub fn gst_player_get_audio_video_offset(player: *mut GstPlayer) -> i64;
322 323 324 325
    pub fn gst_player_get_color_balance(
        player: *mut GstPlayer,
        type_: GstPlayerColorBalanceType,
    ) -> c_double;
326 327
    pub fn gst_player_get_config(player: *mut GstPlayer) -> *mut gst::GstStructure;
    pub fn gst_player_get_current_audio_track(player: *mut GstPlayer) -> *mut GstPlayerAudioInfo;
328 329 330
    pub fn gst_player_get_current_subtitle_track(
        player: *mut GstPlayer,
    ) -> *mut GstPlayerSubtitleInfo;
331 332 333 334
    pub fn gst_player_get_current_video_track(player: *mut GstPlayer) -> *mut GstPlayerVideoInfo;
    pub fn gst_player_get_current_visualization(player: *mut GstPlayer) -> *mut c_char;
    pub fn gst_player_get_duration(player: *mut GstPlayer) -> gst::GstClockTime;
    pub fn gst_player_get_media_info(player: *mut GstPlayer) -> *mut GstPlayerMediaInfo;
335 336 337 338 339 340
    pub fn gst_player_get_multiview_flags(
        player: *mut GstPlayer,
    ) -> gst_video::GstVideoMultiviewFlags;
    pub fn gst_player_get_multiview_mode(
        player: *mut GstPlayer,
    ) -> gst_video::GstVideoMultiviewFramePacking;
341 342 343 344 345
    pub fn gst_player_get_mute(player: *mut GstPlayer) -> gboolean;
    pub fn gst_player_get_pipeline(player: *mut GstPlayer) -> *mut gst::GstElement;
    pub fn gst_player_get_position(player: *mut GstPlayer) -> gst::GstClockTime;
    pub fn gst_player_get_rate(player: *mut GstPlayer) -> c_double;
    pub fn gst_player_get_subtitle_uri(player: *mut GstPlayer) -> *mut c_char;
346 347
    #[cfg(any(feature = "v1_16", feature = "dox"))]
    pub fn gst_player_get_subtitle_video_offset(player: *mut GstPlayer) -> i64;
348
    pub fn gst_player_get_uri(player: *mut GstPlayer) -> *mut c_char;
349 350 351 352 353
    pub fn gst_player_get_video_snapshot(
        player: *mut GstPlayer,
        format: GstPlayerSnapshotFormat,
        config: *const gst::GstStructure,
    ) -> *mut gst::GstSample;
354 355 356 357 358 359 360 361
    pub fn gst_player_get_volume(player: *mut GstPlayer) -> c_double;
    pub fn gst_player_has_color_balance(player: *mut GstPlayer) -> gboolean;
    pub fn gst_player_pause(player: *mut GstPlayer);
    pub fn gst_player_play(player: *mut GstPlayer);
    pub fn gst_player_seek(player: *mut GstPlayer, position: gst::GstClockTime);
    pub fn gst_player_set_audio_track(player: *mut GstPlayer, stream_index: c_int) -> gboolean;
    pub fn gst_player_set_audio_track_enabled(player: *mut GstPlayer, enabled: gboolean);
    pub fn gst_player_set_audio_video_offset(player: *mut GstPlayer, offset: i64);
362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378
    pub fn gst_player_set_color_balance(
        player: *mut GstPlayer,
        type_: GstPlayerColorBalanceType,
        value: c_double,
    );
    pub fn gst_player_set_config(
        player: *mut GstPlayer,
        config: *mut gst::GstStructure,
    ) -> gboolean;
    pub fn gst_player_set_multiview_flags(
        player: *mut GstPlayer,
        flags: gst_video::GstVideoMultiviewFlags,
    );
    pub fn gst_player_set_multiview_mode(
        player: *mut GstPlayer,
        mode: gst_video::GstVideoMultiviewFramePacking,
    );
379 380 381 382 383
    pub fn gst_player_set_mute(player: *mut GstPlayer, val: gboolean);
    pub fn gst_player_set_rate(player: *mut GstPlayer, rate: c_double);
    pub fn gst_player_set_subtitle_track(player: *mut GstPlayer, stream_index: c_int) -> gboolean;
    pub fn gst_player_set_subtitle_track_enabled(player: *mut GstPlayer, enabled: gboolean);
    pub fn gst_player_set_subtitle_uri(player: *mut GstPlayer, uri: *const c_char);
384 385
    #[cfg(any(feature = "v1_16", feature = "dox"))]
    pub fn gst_player_set_subtitle_video_offset(player: *mut GstPlayer, offset: i64);
386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407
    pub fn gst_player_set_uri(player: *mut GstPlayer, uri: *const c_char);
    pub fn gst_player_set_video_track(player: *mut GstPlayer, stream_index: c_int) -> gboolean;
    pub fn gst_player_set_video_track_enabled(player: *mut GstPlayer, enabled: gboolean);
    pub fn gst_player_set_visualization(player: *mut GstPlayer, name: *const c_char) -> gboolean;
    pub fn gst_player_set_visualization_enabled(player: *mut GstPlayer, enabled: gboolean);
    pub fn gst_player_set_volume(player: *mut GstPlayer, val: c_double);
    pub fn gst_player_stop(player: *mut GstPlayer);

    //=========================================================================
    // GstPlayerAudioInfo
    //=========================================================================
    pub fn gst_player_audio_info_get_type() -> GType;
    pub fn gst_player_audio_info_get_bitrate(info: *const GstPlayerAudioInfo) -> c_int;
    pub fn gst_player_audio_info_get_channels(info: *const GstPlayerAudioInfo) -> c_int;
    pub fn gst_player_audio_info_get_language(info: *const GstPlayerAudioInfo) -> *const c_char;
    pub fn gst_player_audio_info_get_max_bitrate(info: *const GstPlayerAudioInfo) -> c_int;
    pub fn gst_player_audio_info_get_sample_rate(info: *const GstPlayerAudioInfo) -> c_int;

    //=========================================================================
    // GstPlayerGMainContextSignalDispatcher
    //=========================================================================
    pub fn gst_player_g_main_context_signal_dispatcher_get_type() -> GType;
408 409 410
    pub fn gst_player_g_main_context_signal_dispatcher_new(
        application_context: *mut glib::GMainContext,
    ) -> *mut GstPlayerSignalDispatcher;
411 412 413 414 415

    //=========================================================================
    // GstPlayerMediaInfo
    //=========================================================================
    pub fn gst_player_media_info_get_type() -> GType;
416 417 418 419 420 421 422 423 424 425 426 427 428 429
    pub fn gst_player_media_info_get_audio_streams(
        info: *const GstPlayerMediaInfo,
    ) -> *mut glib::GList;
    pub fn gst_player_media_info_get_container_format(
        info: *const GstPlayerMediaInfo,
    ) -> *const c_char;
    pub fn gst_player_media_info_get_duration(info: *const GstPlayerMediaInfo)
        -> gst::GstClockTime;
    pub fn gst_player_media_info_get_image_sample(
        info: *const GstPlayerMediaInfo,
    ) -> *mut gst::GstSample;
    pub fn gst_player_media_info_get_number_of_audio_streams(
        info: *const GstPlayerMediaInfo,
    ) -> c_uint;
430
    pub fn gst_player_media_info_get_number_of_streams(info: *const GstPlayerMediaInfo) -> c_uint;
431 432 433 434 435 436 437 438 439 440 441 442
    pub fn gst_player_media_info_get_number_of_subtitle_streams(
        info: *const GstPlayerMediaInfo,
    ) -> c_uint;
    pub fn gst_player_media_info_get_number_of_video_streams(
        info: *const GstPlayerMediaInfo,
    ) -> c_uint;
    pub fn gst_player_media_info_get_stream_list(
        info: *const GstPlayerMediaInfo,
    ) -> *mut glib::GList;
    pub fn gst_player_media_info_get_subtitle_streams(
        info: *const GstPlayerMediaInfo,
    ) -> *mut glib::GList;
443 444 445
    pub fn gst_player_media_info_get_tags(info: *const GstPlayerMediaInfo) -> *mut gst::GstTagList;
    pub fn gst_player_media_info_get_title(info: *const GstPlayerMediaInfo) -> *const c_char;
    pub fn gst_player_media_info_get_uri(info: *const GstPlayerMediaInfo) -> *const c_char;
446 447 448
    pub fn gst_player_media_info_get_video_streams(
        info: *const GstPlayerMediaInfo,
    ) -> *mut glib::GList;
449 450 451 452 453 454 455 456 457 458
    pub fn gst_player_media_info_is_live(info: *const GstPlayerMediaInfo) -> gboolean;
    pub fn gst_player_media_info_is_seekable(info: *const GstPlayerMediaInfo) -> gboolean;

    //=========================================================================
    // GstPlayerStreamInfo
    //=========================================================================
    pub fn gst_player_stream_info_get_type() -> GType;
    pub fn gst_player_stream_info_get_caps(info: *const GstPlayerStreamInfo) -> *mut gst::GstCaps;
    pub fn gst_player_stream_info_get_codec(info: *const GstPlayerStreamInfo) -> *const c_char;
    pub fn gst_player_stream_info_get_index(info: *const GstPlayerStreamInfo) -> c_int;
459 460 461 462 463 464
    pub fn gst_player_stream_info_get_stream_type(
        info: *const GstPlayerStreamInfo,
    ) -> *const c_char;
    pub fn gst_player_stream_info_get_tags(
        info: *const GstPlayerStreamInfo,
    ) -> *mut gst::GstTagList;
465 466 467 468 469

    //=========================================================================
    // GstPlayerSubtitleInfo
    //=========================================================================
    pub fn gst_player_subtitle_info_get_type() -> GType;
470 471 472
    pub fn gst_player_subtitle_info_get_language(
        info: *const GstPlayerSubtitleInfo,
    ) -> *const c_char;
473 474 475 476 477 478

    //=========================================================================
    // GstPlayerVideoInfo
    //=========================================================================
    pub fn gst_player_video_info_get_type() -> GType;
    pub fn gst_player_video_info_get_bitrate(info: *const GstPlayerVideoInfo) -> c_int;
479 480 481 482 483
    pub fn gst_player_video_info_get_framerate(
        info: *const GstPlayerVideoInfo,
        fps_n: *mut c_int,
        fps_d: *mut c_int,
    );
484 485
    pub fn gst_player_video_info_get_height(info: *const GstPlayerVideoInfo) -> c_int;
    pub fn gst_player_video_info_get_max_bitrate(info: *const GstPlayerVideoInfo) -> c_int;
486 487 488 489 490
    pub fn gst_player_video_info_get_pixel_aspect_ratio(
        info: *const GstPlayerVideoInfo,
        par_n: *mut c_uint,
        par_d: *mut c_uint,
    );
491 492 493 494 495 496
    pub fn gst_player_video_info_get_width(info: *const GstPlayerVideoInfo) -> c_int;

    //=========================================================================
    // GstPlayerVideoOverlayVideoRenderer
    //=========================================================================
    pub fn gst_player_video_overlay_video_renderer_get_type() -> GType;
497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527
    pub fn gst_player_video_overlay_video_renderer_new(
        window_handle: gpointer,
    ) -> *mut GstPlayerVideoRenderer;
    pub fn gst_player_video_overlay_video_renderer_new_with_sink(
        window_handle: gpointer,
        video_sink: *mut gst::GstElement,
    ) -> *mut GstPlayerVideoRenderer;
    pub fn gst_player_video_overlay_video_renderer_expose(
        self_: *mut GstPlayerVideoOverlayVideoRenderer,
    );
    pub fn gst_player_video_overlay_video_renderer_get_render_rectangle(
        self_: *mut GstPlayerVideoOverlayVideoRenderer,
        x: *mut c_int,
        y: *mut c_int,
        width: *mut c_int,
        height: *mut c_int,
    );
    pub fn gst_player_video_overlay_video_renderer_get_window_handle(
        self_: *mut GstPlayerVideoOverlayVideoRenderer,
    ) -> gpointer;
    pub fn gst_player_video_overlay_video_renderer_set_render_rectangle(
        self_: *mut GstPlayerVideoOverlayVideoRenderer,
        x: c_int,
        y: c_int,
        width: c_int,
        height: c_int,
    );
    pub fn gst_player_video_overlay_video_renderer_set_window_handle(
        self_: *mut GstPlayerVideoOverlayVideoRenderer,
        window_handle: gpointer,
    );
528 529 530 531 532 533 534 535 536 537 538 539

    //=========================================================================
    // GstPlayerSignalDispatcher
    //=========================================================================
    pub fn gst_player_signal_dispatcher_get_type() -> GType;

    //=========================================================================
    // GstPlayerVideoRenderer
    //=========================================================================
    pub fn gst_player_video_renderer_get_type() -> GType;

}