audio_decoder_test_lib/
cvsd.rsuse fidl_fuchsia_media::*;
use std::path::Path;
use std::{fs, io};
use stream_processor_test::*;
pub struct CvsdStream {
data: Vec<u8>,
chunk_frames: usize,
}
impl CvsdStream {
pub fn from_file(filename: impl AsRef<Path>, chunk_frames: usize) -> io::Result<Self> {
Ok(CvsdStream { data: fs::read(filename)?, chunk_frames })
}
pub fn from_data(data: Vec<u8>, chunk_frames: usize) -> Self {
CvsdStream { data, chunk_frames }
}
}
impl ElementaryStream for CvsdStream {
fn format_details(&self, version_ordinal: u64) -> FormatDetails {
FormatDetails {
format_details_version_ordinal: Some(version_ordinal),
mime_type: Some(String::from("audio/cvsd")),
..Default::default()
}
}
fn is_access_units(&self) -> bool {
false
}
fn stream<'a>(&'a self) -> Box<dyn Iterator<Item = ElementaryStreamChunk> + 'a> {
Box::new(self.data.chunks(self.chunk_frames).map(|frame| ElementaryStreamChunk {
start_access_unit: false,
known_end_access_unit: false,
data: frame.to_vec(),
significance: Significance::Audio(AudioSignificance::Encoded),
timestamp: None,
}))
}
}