Skip to main content

ffmpeg_the_third/filter/
pad.rs

1use std::marker::PhantomData;
2
3use crate::ffi::*;
4use crate::media;
5use crate::utils;
6
7pub struct Pad<'a> {
8    ptr: *const AVFilterPad,
9    idx: isize,
10
11    _marker: PhantomData<&'a ()>,
12}
13
14impl<'a> Pad<'a> {
15    pub unsafe fn wrap(ptr: *const AVFilterPad, idx: isize) -> Self {
16        Pad {
17            ptr,
18            idx,
19            _marker: PhantomData,
20        }
21    }
22
23    pub unsafe fn as_ptr(&self) -> *const AVFilterPad {
24        self.ptr
25    }
26
27    pub unsafe fn as_mut_ptr(&mut self) -> *mut AVFilterPad {
28        self.ptr as *mut _
29    }
30}
31
32impl<'a> Pad<'a> {
33    pub fn name(&self) -> Option<&str> {
34        unsafe {
35            let ptr = avfilter_pad_get_name(self.ptr, self.idx as i32);
36            utils::optional_str_from_c_ptr(ptr)
37        }
38    }
39
40    pub fn medium(&self) -> media::Type {
41        unsafe { media::Type::from(avfilter_pad_get_type(self.ptr, self.idx as i32)) }
42    }
43}