use std::ffi::CStr;

use crate::sys::codec_util_decode_frame_to_jpeg;
use crate::vec::CVecView;
use anyhow::Result;
pub fn decode_frame_to_jpeg(data: &[u8], vcodec_type: u32) -> Result<CVecView<u8>> {
    let mut err_buf = vec![0; 128];

    let ptr = unsafe {
        codec_util_decode_frame_to_jpeg(
            data.as_ptr().cast(),
            data.len() as _,
            vcodec_type as _,
            err_buf.as_mut_ptr().cast(),
            err_buf.len() as _,
        )
    };
    if ptr.is_null() {
        let err_msg = CStr::from_bytes_until_nul(&err_buf)?.to_str()?;
        anyhow::bail!("decode_frame_to_jpeg fail, error: {}", err_msg)
    }
    Ok(CVecView::from(ptr))
}