ffmpeg_the_third/filter/
pad.rs1use 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}