gstreamer/proxypad: Move default functions to extension trait

This commit is contained in:
Sebastian Dröge 2019-05-23 22:28:07 +02:00 committed by Sebastian Dröge
parent 86e969d964
commit b5dcbe3897
2 changed files with 46 additions and 18 deletions

View file

@ -187,6 +187,7 @@ mod object;
mod pad; mod pad;
mod parse_context; mod parse_context;
mod proxy_pad; mod proxy_pad;
pub use proxy_pad::ProxyPadExtManual;
mod tag_setter; mod tag_setter;
pub use bin::GstBinExtManual; pub use bin::GstBinExtManual;
pub use element::{ElementExtManual, ElementMessageType, NotifyWatchId}; pub use element::{ElementExtManual, ElementMessageType, NotifyWatchId};
@ -336,6 +337,7 @@ pub mod prelude {
pub use object::GstObjectExtManual; pub use object::GstObjectExtManual;
pub use pad::PadExtManual; pub use pad::PadExtManual;
pub use param_spec::GstParamSpecExt; pub use param_spec::GstParamSpecExt;
pub use proxy_pad::ProxyPadExtManual;
pub use tag_setter::TagSetterExtManual; pub use tag_setter::TagSetterExtManual;
pub use value::GstValueExt; pub use value::GstValueExt;

View file

@ -21,16 +21,42 @@ use glib::translate::{from_glib, from_glib_full, ToGlibPtr};
use gst_sys; use gst_sys;
impl ProxyPad { pub trait ProxyPadExtManual: 'static {
pub fn chain_default<P: IsA<ProxyPad>, Q: IsA<Object>>( fn proxy_pad_chain_default<P: IsA<Object>>(
pad: &P, &self,
parent: Option<&Q>, parent: Option<&P>,
buffer: Buffer,
) -> Result<FlowSuccess, FlowError>;
fn proxy_pad_chain_list_default<P: IsA<Object>>(
&self,
parent: Option<&P>,
list: BufferList,
) -> Result<FlowSuccess, FlowError>;
fn proxy_pad_getrange_default<P: IsA<Object>>(
&self,
parent: Option<&P>,
offset: u64,
size: u32,
) -> Result<Buffer, FlowError>;
fn proxy_pad_iterate_internal_links_default<P: IsA<Object>>(
&self,
parent: Option<&P>,
) -> Option<::Iterator<Pad>>;
}
impl<O: IsA<ProxyPad>> ProxyPadExtManual for O {
fn proxy_pad_chain_default<P: IsA<Object>>(
&self,
parent: Option<&P>,
buffer: Buffer, buffer: Buffer,
) -> Result<FlowSuccess, FlowError> { ) -> Result<FlowSuccess, FlowError> {
skip_assert_initialized!(); skip_assert_initialized!();
let ret: FlowReturn = unsafe { let ret: FlowReturn = unsafe {
from_glib(gst_sys::gst_proxy_pad_chain_default( 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, parent.map(|p| p.as_ref()).to_glib_none().0,
buffer.into_ptr(), buffer.into_ptr(),
)) ))
@ -38,15 +64,15 @@ impl ProxyPad {
ret.into_result() ret.into_result()
} }
pub fn chain_list_default<P: IsA<ProxyPad>, Q: IsA<Object>>( fn proxy_pad_chain_list_default<P: IsA<Object>>(
pad: &P, &self,
parent: Option<&Q>, parent: Option<&P>,
list: BufferList, list: BufferList,
) -> Result<FlowSuccess, FlowError> { ) -> Result<FlowSuccess, FlowError> {
skip_assert_initialized!(); skip_assert_initialized!();
let ret: FlowReturn = unsafe { let ret: FlowReturn = unsafe {
from_glib(gst_sys::gst_proxy_pad_chain_list_default( 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, parent.map(|p| p.as_ref()).to_glib_none().0,
list.into_ptr(), list.into_ptr(),
)) ))
@ -54,9 +80,9 @@ impl ProxyPad {
ret.into_result() ret.into_result()
} }
pub fn getrange_default<P: IsA<ProxyPad>, Q: IsA<Object>>( fn proxy_pad_getrange_default<P: IsA<Object>>(
pad: &P, &self,
parent: &Q, parent: Option<&P>,
offset: u64, offset: u64,
size: u32, size: u32,
) -> Result<Buffer, FlowError> { ) -> Result<Buffer, FlowError> {
@ -64,8 +90,8 @@ impl ProxyPad {
unsafe { unsafe {
let mut buffer = ptr::null_mut(); let mut buffer = ptr::null_mut();
let ret: FlowReturn = from_glib(gst_sys::gst_proxy_pad_getrange_default( 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.as_ref().to_glib_none().0, parent.map(|p| p.as_ref()).to_glib_none().0,
offset, offset,
size, size,
&mut buffer, &mut buffer,
@ -74,14 +100,14 @@ impl ProxyPad {
} }
} }
pub fn iterate_internal_links_default<P: IsA<ProxyPad>, Q: IsA<Object>>( fn proxy_pad_iterate_internal_links_default<P: IsA<Object>>(
pad: &P, &self,
parent: Option<&Q>, parent: Option<&P>,
) -> Option<::Iterator<Pad>> { ) -> Option<::Iterator<Pad>> {
skip_assert_initialized!(); skip_assert_initialized!();
unsafe { unsafe {
from_glib_full(gst_sys::gst_proxy_pad_iterate_internal_links_default( 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, parent.map(|p| p.as_ref()).to_glib_none().0,
)) ))
} }