ffmpeg_the_third/codec/parameters/
borrowed_mut.rs1use std::marker::PhantomData;
2use std::ptr::NonNull;
3
4use crate::ffi::*;
5use crate::{AsMutPtr, AsPtr};
6
7pub struct ParametersMut<'p> {
8 ptr: NonNull<AVCodecParameters>,
9 _marker: PhantomData<&'p mut AVCodecParameters>,
10}
11
12impl<'p> ParametersMut<'p> {
13 pub unsafe fn from_raw(ptr: *mut AVCodecParameters) -> Option<Self> {
20 NonNull::new(ptr as *mut _).map(|ptr| Self {
21 ptr,
22 _marker: PhantomData,
23 })
24 }
25
26 pub fn as_ptr(&self) -> *const AVCodecParameters {
30 self.ptr.as_ptr()
31 }
32
33 pub fn as_mut_ptr(&mut self) -> *mut AVCodecParameters {
37 self.ptr.as_ptr()
38 }
39}
40
41impl<'p> AsPtr<AVCodecParameters> for ParametersMut<'p> {
42 fn as_ptr(&self) -> *const AVCodecParameters {
43 self.as_ptr()
44 }
45}
46
47impl<'p> AsMutPtr<AVCodecParameters> for ParametersMut<'p> {
48 fn as_mut_ptr(&mut self) -> *mut AVCodecParameters {
49 self.as_mut_ptr()
50 }
51}