use crate::codec::Codec;
use anyhow::{Result, bail};
use std::pin::Pin;
use th_rs::define::TH_ESStreamInfo;
pub struct EncoderAAC {
codec: Pin<Box<Codec>>,
}
impl EncoderAAC {
pub fn new() -> Pin<Box<Self>> {
let pin_obj = Box::pin(Self {
codec: Codec::new("encoder-aac").expect("Init codec fail"),
});
pin_obj
}
pub fn write<'a>(self: &'a mut Pin<Box<Self>>, data: &[u8], info: &TH_ESStreamInfo) -> Result<&'a [u8]> {
let o_packet = self.codec.write(data, info)?;
match o_packet {
Some(packet) => {
Ok(packet.core().payload())
},
None => bail!("Continue input"),
}
}
}