use {
super::define::epsi_stream_type,
bytesio::{bytes_errors::BytesWriteError, bytes_writer::BytesWriter},
};
pub fn pcr_write(pcr_result: &mut BytesWriter, pcr: i64) -> Result<(), BytesWriteError> {
let pcr_base: i64 = pcr / 300;
let pcr_ext: i64 = pcr % 300;
pcr_result.write_u8((pcr_base >> 25) as u8)?;
pcr_result.write_u8((pcr_base >> 17) as u8)?;
pcr_result.write_u8((pcr_base >> 9) as u8)?;
pcr_result.write_u8((pcr_base >> 1) as u8)?;
pcr_result.write_u8(((pcr_base & 0x01) << 7) as u8 | 0x7E | ((pcr_ext >> 8) & 0x01) as u8)?;
pcr_result.write_u8((pcr_ext & 0xFF) as u8)?;
Ok(())
}
pub fn is_steam_type_video(stream_type: u8) -> bool {
matches!(stream_type, epsi_stream_type::PSI_STREAM_H264)
}
pub fn is_steam_type_audio(stream_type: u8) -> bool {
matches!(
stream_type,
epsi_stream_type::PSI_STREAM_AUDIO_OPUS
| epsi_stream_type::PSI_STREAM_AAC
| epsi_stream_type::PSI_STREAM_MP3
| epsi_stream_type::PSI_STREAM_MPEG4_AAC
)
}