gstreamer_rtsp_server/auto/
rtsp_session_media.rs1use crate::{ffi, RTSPMedia, RTSPStreamTransport};
7use glib::{prelude::*, translate::*};
8
9glib::wrapper! {
10 #[doc(alias = "GstRTSPSessionMedia")]
11 pub struct RTSPSessionMedia(Object<ffi::GstRTSPSessionMedia, ffi::GstRTSPSessionMediaClass>);
12
13 match fn {
14 type_ => || ffi::gst_rtsp_session_media_get_type(),
15 }
16}
17
18impl RTSPSessionMedia {
19 pub const NONE: Option<&'static RTSPSessionMedia> = None;
20
21 #[doc(alias = "gst_rtsp_session_media_new")]
22 pub fn new(path: &str, media: impl IsA<RTSPMedia>) -> RTSPSessionMedia {
23 skip_assert_initialized!();
24 unsafe {
25 from_glib_full(ffi::gst_rtsp_session_media_new(
26 path.to_glib_none().0,
27 media.upcast().into_glib_ptr(),
28 ))
29 }
30 }
31}
32
33unsafe impl Send for RTSPSessionMedia {}
34unsafe impl Sync for RTSPSessionMedia {}
35
36pub trait RTSPSessionMediaExt: IsA<RTSPSessionMedia> + 'static {
37 #[doc(alias = "gst_rtsp_session_media_get_base_time")]
43 #[doc(alias = "get_base_time")]
44 fn base_time(&self) -> Option<gst::ClockTime> {
45 unsafe {
46 from_glib(ffi::gst_rtsp_session_media_get_base_time(
47 self.as_ref().to_glib_none().0,
48 ))
49 }
50 }
51
52 #[doc(alias = "gst_rtsp_session_media_get_media")]
53 #[doc(alias = "get_media")]
54 fn media(&self) -> Option<RTSPMedia> {
55 unsafe {
56 from_glib_none(ffi::gst_rtsp_session_media_get_media(
57 self.as_ref().to_glib_none().0,
58 ))
59 }
60 }
61
62 #[doc(alias = "gst_rtsp_session_media_get_rtpinfo")]
63 #[doc(alias = "get_rtpinfo")]
64 fn rtpinfo(&self) -> Option<glib::GString> {
65 unsafe {
66 from_glib_full(ffi::gst_rtsp_session_media_get_rtpinfo(
67 self.as_ref().to_glib_none().0,
68 ))
69 }
70 }
71
72 #[doc(alias = "gst_rtsp_session_media_get_transport")]
79 #[doc(alias = "get_transport")]
80 fn transport(&self, idx: u32) -> Option<RTSPStreamTransport> {
81 unsafe {
82 from_glib_none(ffi::gst_rtsp_session_media_get_transport(
83 self.as_ref().to_glib_none().0,
84 idx,
85 ))
86 }
87 }
88
89 #[doc(alias = "gst_rtsp_session_media_get_transports")]
90 #[doc(alias = "get_transports")]
91 fn transports(&self) -> Vec<RTSPStreamTransport> {
92 unsafe {
93 FromGlibPtrContainer::from_glib_full(ffi::gst_rtsp_session_media_get_transports(
94 self.as_ref().to_glib_none().0,
95 ))
96 }
97 }
98
99 #[doc(alias = "gst_rtsp_session_media_matches")]
100 fn matches(&self, path: &str) -> Option<i32> {
101 unsafe {
102 let mut matched = std::mem::MaybeUninit::uninit();
103 let ret = from_glib(ffi::gst_rtsp_session_media_matches(
104 self.as_ref().to_glib_none().0,
105 path.to_glib_none().0,
106 matched.as_mut_ptr(),
107 ));
108 if ret {
109 Some(matched.assume_init())
110 } else {
111 None
112 }
113 }
114 }
115
116 #[doc(alias = "gst_rtsp_session_media_set_state")]
122 fn set_state(&self, state: gst::State) -> Result<(), glib::error::BoolError> {
123 unsafe {
124 glib::result_from_gboolean!(
125 ffi::gst_rtsp_session_media_set_state(
126 self.as_ref().to_glib_none().0,
127 state.into_glib()
128 ),
129 "Failed to set state of session media"
130 )
131 }
132 }
133
134 }
139
140impl<O: IsA<RTSPSessionMedia>> RTSPSessionMediaExt for O {}