gstreamer_play/
config.rs
1use std::{mem, ops};
4
5use crate::ffi;
6use glib::translate::*;
7
8#[derive(Debug, Clone, PartialEq, Eq)]
9pub struct PlayConfig(gst::Structure);
10
11impl ops::Deref for PlayConfig {
12 type Target = gst::StructureRef;
13
14 #[inline]
15 fn deref(&self) -> &gst::StructureRef {
16 self.0.deref()
17 }
18}
19
20impl ops::DerefMut for PlayConfig {
21 #[inline]
22 fn deref_mut(&mut self) -> &mut gst::StructureRef {
23 self.0.deref_mut()
24 }
25}
26
27impl AsRef<gst::StructureRef> for PlayConfig {
28 #[inline]
29 fn as_ref(&self) -> &gst::StructureRef {
30 self.0.as_ref()
31 }
32}
33
34impl AsMut<gst::StructureRef> for PlayConfig {
35 #[inline]
36 fn as_mut(&mut self) -> &mut gst::StructureRef {
37 self.0.as_mut()
38 }
39}
40
41impl PlayConfig {
42 #[doc(alias = "get_position_update_interval")]
43 #[doc(alias = "gst_play_config_get_position_update_interval")]
44 pub fn position_update_interval(&self) -> u32 {
45 skip_assert_initialized!();
46 unsafe { ffi::gst_play_config_get_position_update_interval(self.0.to_glib_none().0) }
47 }
48
49 #[doc(alias = "gst_play_config_set_position_update_interval")]
50 pub fn set_position_update_interval(&mut self, interval: u32) {
51 skip_assert_initialized!();
52 unsafe {
53 ffi::gst_play_config_set_position_update_interval(
54 self.0.to_glib_none_mut().0,
55 interval,
56 );
57 }
58 }
59
60 #[doc(alias = "get_seek_accurate")]
61 pub fn is_seek_accurate(&self) -> bool {
62 skip_assert_initialized!();
63 unsafe {
64 from_glib(ffi::gst_play_config_get_seek_accurate(
65 self.0.to_glib_none().0,
66 ))
67 }
68 }
69
70 pub fn set_seek_accurate(&mut self, accurate: bool) {
71 skip_assert_initialized!();
72 self.set("accurate-seek", accurate);
75 }
76
77 #[doc(alias = "get_user_agent")]
78 #[doc(alias = "gst_play_config_get_user_agent")]
79 pub fn user_agent(&self) -> Option<String> {
80 skip_assert_initialized!();
81 unsafe { from_glib_full(ffi::gst_play_config_get_user_agent(self.0.to_glib_none().0)) }
82 }
83
84 #[doc(alias = "gst_play_config_set_user_agent")]
85 pub fn set_user_agent(&mut self, agent: &str) {
86 skip_assert_initialized!();
87 unsafe {
88 ffi::gst_play_config_set_user_agent(
89 self.0.to_glib_none_mut().0,
90 agent.to_glib_none().0,
91 );
92 }
93 }
94
95 #[cfg(feature = "v1_24")]
96 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
97 #[doc(alias = "gst_play_config_get_pipeline_dump_in_error_details")]
98 pub fn pipeline_dump_in_error_details(&self) -> bool {
99 skip_assert_initialized!();
100 unsafe {
101 from_glib(ffi::gst_play_config_get_pipeline_dump_in_error_details(
102 self.0.to_glib_none().0,
103 ))
104 }
105 }
106
107 #[cfg(feature = "v1_24")]
108 #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
109 #[doc(alias = "gst_play_config_set_pipeline_dump_in_error_details")]
110 pub fn set_pipeline_dump_in_error_details(&mut self, pipeline_dump_in_error_details: bool) {
111 skip_assert_initialized!();
112 unsafe {
113 ffi::gst_play_config_set_pipeline_dump_in_error_details(
114 self.0.to_glib_none_mut().0,
115 pipeline_dump_in_error_details.into_glib(),
116 );
117 }
118 }
119}
120
121impl IntoGlibPtr<*mut gst::ffi::GstStructure> for PlayConfig {
122 #[inline]
123 fn into_glib_ptr(self) -> *mut gst::ffi::GstStructure {
124 let mut s = mem::ManuallyDrop::new(self);
125 s.0.to_glib_none_mut().0
126 }
127}
128
129impl FromGlibPtrFull<*mut gst::ffi::GstStructure> for PlayConfig {
130 #[inline]
131 unsafe fn from_glib_full(ptr: *mut gst::ffi::GstStructure) -> Self {
132 PlayConfig(from_glib_full(ptr))
133 }
134}