diff --git a/gstreamer/src/lib.rs b/gstreamer/src/lib.rs index ae35f5b8c..dc2a962a3 100644 --- a/gstreamer/src/lib.rs +++ b/gstreamer/src/lib.rs @@ -209,6 +209,7 @@ mod control_binding; mod control_source; mod parse_context; mod proxy_pad; +pub use proxy_pad::ProxyPadExtManual; mod tag_setter; pub use bin::GstBinExtManual; pub use element::{ElementExtManual, ElementMessageType, NotifyWatchId}; @@ -370,6 +371,7 @@ pub mod prelude { pub use pipeline::GstPipelineExtManual; pub use plugin::GstPluginExtManual; pub use plugin_feature::PluginFeatureExtManual; + pub use proxy_pad::ProxyPadExtManual; pub use tag_setter::TagSetterExtManual; pub use typefind::TypeFindImpl; pub use value::GstValueExt; diff --git a/gstreamer/src/proxy_pad.rs b/gstreamer/src/proxy_pad.rs index 457aa643b..ffce3c00b 100644 --- a/gstreamer/src/proxy_pad.rs +++ b/gstreamer/src/proxy_pad.rs @@ -21,16 +21,42 @@ use glib::translate::{from_glib, from_glib_full, ToGlibPtr}; use gst_sys; -impl ProxyPad { - pub fn chain_default, P: IsA>( - pad: &O, +pub trait ProxyPadExtManual: 'static { + fn chain_default>( + &self, + parent: Option<&P>, + buffer: Buffer, + ) -> Result; + + fn chain_list_default>( + &self, + parent: Option<&P>, + list: BufferList, + ) -> Result; + + fn getrange_default>( + &self, + parent: Option<&P>, + offset: u64, + size: u32, + ) -> Result; + + fn iterate_internal_links_default>( + &self, + parent: Option<&P>, + ) -> Option<::Iterator>; +} + +impl> ProxyPadExtManual for O { + fn chain_default>( + &self, parent: Option<&P>, buffer: Buffer, ) -> Result { skip_assert_initialized!(); let ret: FlowReturn = unsafe { from_glib(gst_sys::gst_proxy_pad_chain_default( - pad.as_ptr() as *mut gst_sys::GstPad, + self.as_ptr() as *mut gst_sys::GstPad, parent.map(|p| p.as_ref()).to_glib_none().0, buffer.into_ptr(), )) @@ -38,15 +64,15 @@ impl ProxyPad { ret.into_result() } - pub fn chain_list_default, P: IsA>( - pad: &O, + fn chain_list_default>( + &self, parent: Option<&P>, list: BufferList, ) -> Result { skip_assert_initialized!(); let ret: FlowReturn = unsafe { from_glib(gst_sys::gst_proxy_pad_chain_list_default( - pad.as_ptr() as *mut gst_sys::GstPad, + self.as_ptr() as *mut gst_sys::GstPad, parent.map(|p| p.as_ref()).to_glib_none().0, list.into_ptr(), )) @@ -54,8 +80,8 @@ impl ProxyPad { ret.into_result() } - pub fn getrange_default, P: IsA>( - pad: &O, + fn getrange_default>( + &self, parent: Option<&P>, offset: u64, size: u32, @@ -64,7 +90,7 @@ impl ProxyPad { unsafe { let mut buffer = ptr::null_mut(); let ret: FlowReturn = from_glib(gst_sys::gst_proxy_pad_getrange_default( - pad.as_ptr() as *mut gst_sys::GstPad, + self.as_ptr() as *mut gst_sys::GstPad, parent.map(|p| p.as_ref()).to_glib_none().0, offset, size, @@ -74,14 +100,14 @@ impl ProxyPad { } } - pub fn iterate_internal_links_default, P: IsA>( - pad: &O, + fn iterate_internal_links_default>( + &self, parent: Option<&P>, ) -> Option<::Iterator> { skip_assert_initialized!(); unsafe { from_glib_full(gst_sys::gst_proxy_pad_iterate_internal_links_default( - pad.as_ptr() as *mut gst_sys::GstPad, + self.as_ptr() as *mut gst_sys::GstPad, parent.map(|p| p.as_ref()).to_glib_none().0, )) }