use crate::sys::ESStreamInfo;
use derive_builder::Builder;
use serde::Serialize;
pub type CESStreamInfo = ESStreamInfo;

pub(crate) fn is_video_key_frame(info: &CESStreamInfo) -> bool {
    info.streamType == 0 && info.frameType == 0
}
#[derive(Clone)]
pub struct EsPkg {
    pub info: ESStreamInfo,
    pub payload: Vec<u8>,
}

#[derive(Builder, Serialize)]
#[builder(setter(into))]
pub struct MpegtsMuxerConfig {
    #[serde(default)]
    #[builder(default)]
    use_time_stamp: bool,
}
#[derive(Builder, Serialize)]
#[builder(setter(into))]
pub struct FlvMuxerConfig {
    #[serde(default)]
    #[builder(default)]
    use_flv_enhance: bool,
}

#[cfg(test)]
mod tests {
    use std::mem::zeroed;

    use super::*;
    #[test]
    fn test_case_default() {
        assert_eq!(ESStreamInfo::default(), CESStreamInfo::default());
        assert_eq!(ESStreamInfo::default(), { unsafe { zeroed() } });
    }
}