Skip to main content

gstreamer_player/
player_video_overlay_video_renderer.rs

1// Take a look at the license at the top of the repository in the LICENSE file.
2
3use std::ptr;
4
5use glib::{prelude::*, translate::*};
6use libc::uintptr_t;
7
8use crate::{PlayerVideoOverlayVideoRenderer, ffi};
9
10impl PlayerVideoOverlayVideoRenderer {
11    /// ## `window_handle`
12    /// Window handle to use or [`None`]
13    pub unsafe fn new(window_handle: uintptr_t) -> PlayerVideoOverlayVideoRenderer {
14        unsafe {
15            assert_initialized_main_thread!();
16
17            from_glib_full(
18                ffi::gst_player_video_overlay_video_renderer_new(window_handle as *mut _) as *mut _,
19            )
20        }
21    }
22
23    pub unsafe fn with_handle_and_sink<P: IsA<gst::Element>>(
24        window_handle: uintptr_t,
25        video_sink: &P,
26    ) -> PlayerVideoOverlayVideoRenderer {
27        unsafe {
28            skip_assert_initialized!();
29
30            from_glib_full(ffi::gst_player_video_overlay_video_renderer_new_with_sink(
31                window_handle as *mut _,
32                video_sink.as_ref().to_glib_none().0,
33            ) as *mut _)
34        }
35    }
36
37    /// ## `window_handle`
38    /// Window handle to use or [`None`]
39    /// ## `video_sink`
40    /// the custom video_sink element to be set for the video renderer
41    #[doc(alias = "gst_player_video_overlay_video_renderer_new_with_sink")]
42    pub fn with_sink<P: IsA<gst::Element>>(video_sink: &P) -> PlayerVideoOverlayVideoRenderer {
43        skip_assert_initialized!();
44
45        unsafe {
46            from_glib_full(ffi::gst_player_video_overlay_video_renderer_new_with_sink(
47                ptr::null_mut(),
48                video_sink.as_ref().to_glib_none().0,
49            ) as *mut _)
50        }
51    }
52
53    ///
54    /// # Returns
55    ///
56    /// The currently set, platform specific window
57    /// handle
58    #[doc(alias = "get_window_handle")]
59    pub unsafe fn window_handle(&self) -> uintptr_t {
60        unsafe {
61            ffi::gst_player_video_overlay_video_renderer_get_window_handle(self.to_glib_none().0)
62                as uintptr_t
63        }
64    }
65
66    /// Sets the platform specific window handle into which the video
67    /// should be rendered
68    /// ## `window_handle`
69    /// handle referencing to the platform specific window
70    pub unsafe fn set_window_handle(&self, window_handle: uintptr_t) {
71        unsafe {
72            ffi::gst_player_video_overlay_video_renderer_set_window_handle(
73                self.to_glib_none().0,
74                window_handle as *mut _,
75            )
76        }
77    }
78}