use crate::{
error::Result,
ffi,
ffi::{AVPixelFormat, AVRational, AVSampleFormat},
shared::RetUpgrade,
};
use std::ffi::{c_double, c_int, c_void, CStr};
pub unsafe fn opt_set(
obj: *mut c_void,
name: &CStr,
val: &CStr,
search_flags: c_int,
) -> Result<()> {
unsafe { ffi::av_opt_set(obj, name.as_ptr(), val.as_ptr(), search_flags) }.upgrade()?;
Ok(())
}
pub unsafe fn opt_set_int(
obj: *mut c_void,
name: &CStr,
val: i64,
search_flags: c_int,
) -> Result<()> {
unsafe { ffi::av_opt_set_int(obj, name.as_ptr(), val, search_flags) }.upgrade()?;
Ok(())
}
pub unsafe fn opt_set_double(
obj: *mut c_void,
name: &CStr,
val: c_double,
search_flags: c_int,
) -> Result<()> {
unsafe { ffi::av_opt_set_double(obj, name.as_ptr(), val, search_flags) }.upgrade()?;
Ok(())
}
pub unsafe fn opt_set_q(
obj: *mut c_void,
name: &CStr,
val: AVRational,
search_flags: c_int,
) -> Result<()> {
unsafe { ffi::av_opt_set_q(obj, name.as_ptr(), val, search_flags) }.upgrade()?;
Ok(())
}
pub unsafe fn opt_set_bin(
obj: *mut c_void,
name: &CStr,
val: &[u8],
search_flags: c_int,
) -> Result<()> {
unsafe {
ffi::av_opt_set_bin(
obj,
name.as_ptr(),
val.as_ptr(),
val.len().try_into()?,
search_flags,
)
}
.upgrade()?;
Ok(())
}
pub unsafe fn opt_set_image_size(
obj: *mut c_void,
name: &CStr,
w: c_int,
h: c_int,
search_flags: c_int,
) -> Result<()> {
unsafe { ffi::av_opt_set_image_size(obj, name.as_ptr(), w, h, search_flags) }.upgrade()?;
Ok(())
}
pub unsafe fn opt_set_pixel_fmt(
obj: *mut c_void,
name: &CStr,
fmt: AVPixelFormat,
search_flags: c_int,
) -> Result<()> {
unsafe { ffi::av_opt_set_pixel_fmt(obj, name.as_ptr(), fmt, search_flags) }.upgrade()?;
Ok(())
}
pub unsafe fn opt_set_sample_fmt(
obj: *mut c_void,
name: &CStr,
fmt: AVSampleFormat,
search_flags: c_int,
) -> Result<()> {
unsafe { ffi::av_opt_set_sample_fmt(obj, name.as_ptr(), fmt, search_flags) }.upgrade()?;
Ok(())
}
pub unsafe fn opt_set_video_rate(
obj: *mut c_void,
name: &CStr,
val: AVRational,
search_flags: c_int,
) -> Result<()> {
unsafe { ffi::av_opt_set_video_rate(obj, name.as_ptr(), val, search_flags) }.upgrade()?;
Ok(())
}