gstreamer/
proxy_pad.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::*};
6
7use crate::{ffi, Buffer, BufferList, FlowError, FlowSuccess, Pad, ProxyPad};
8
9impl ProxyPad {
10    #[doc(alias = "gst_proxy_pad_chain_default")]
11    pub fn chain_default<O: IsA<ProxyPad>>(
12        pad: &O,
13        parent: Option<&impl IsA<crate::Object>>,
14        buffer: Buffer,
15    ) -> Result<FlowSuccess, FlowError> {
16        skip_assert_initialized!();
17        unsafe {
18            try_from_glib(ffi::gst_proxy_pad_chain_default(
19                pad.as_ptr() as *mut ffi::GstPad,
20                parent.map(|p| p.as_ref()).to_glib_none().0,
21                buffer.into_glib_ptr(),
22            ))
23        }
24    }
25
26    #[doc(alias = "gst_proxy_pad_chain_list_default")]
27    pub fn chain_list_default<O: IsA<ProxyPad>>(
28        pad: &O,
29        parent: Option<&impl IsA<crate::Object>>,
30        list: BufferList,
31    ) -> Result<FlowSuccess, FlowError> {
32        skip_assert_initialized!();
33        unsafe {
34            try_from_glib(ffi::gst_proxy_pad_chain_list_default(
35                pad.as_ptr() as *mut ffi::GstPad,
36                parent.map(|p| p.as_ref()).to_glib_none().0,
37                list.into_glib_ptr(),
38            ))
39        }
40    }
41
42    #[doc(alias = "gst_proxy_pad_getrange_default")]
43    pub fn getrange_default<O: IsA<ProxyPad>>(
44        pad: &O,
45        parent: Option<&impl IsA<crate::Object>>,
46        offset: u64,
47        size: u32,
48    ) -> Result<Buffer, FlowError> {
49        skip_assert_initialized!();
50        unsafe {
51            let mut buffer = ptr::null_mut();
52            FlowSuccess::try_from_glib(ffi::gst_proxy_pad_getrange_default(
53                pad.as_ptr() as *mut ffi::GstPad,
54                parent.map(|p| p.as_ref()).to_glib_none().0,
55                offset,
56                size,
57                &mut buffer,
58            ))
59            .map(|_| from_glib_full(buffer))
60        }
61    }
62
63    #[doc(alias = "gst_proxy_pad_iterate_internal_links_default")]
64    pub fn iterate_internal_links_default<O: IsA<ProxyPad>>(
65        pad: &O,
66        parent: Option<&impl IsA<crate::Object>>,
67    ) -> Option<crate::Iterator<Pad>> {
68        skip_assert_initialized!();
69        unsafe {
70            from_glib_full(ffi::gst_proxy_pad_iterate_internal_links_default(
71                pad.as_ptr() as *mut ffi::GstPad,
72                parent.map(|p| p.as_ref()).to_glib_none().0,
73            ))
74        }
75    }
76}