passing test! but had to remove FromDataBytes

This commit is contained in:
Breval Ferrari 2025-03-19 01:12:34 -04:00
parent b94421a223
commit 19c6ee71d5
No known key found for this signature in database
GPG key ID: F71E304D6400AB8E

View file

@ -8,7 +8,7 @@ use derive_new::new;
use symphonia::{
core::{
audio::Signal,
codecs::Decoder,
codecs::{Decoder, CODEC_TYPE_NULL},
conv::FromSample,
errors::Error,
formats::FormatReader,
@ -70,30 +70,15 @@ impl Audio {
&Default::default(),
)?
.format;
let decoder = registry.make(&Default::default(), &Default::default())?;
Ok(Audio::new(reader, decoder))
}
}
impl TryFromDataBytes for Audio {
type Error = Error;
type Format = Hint;
fn try_from_data_bytes(
bytes: crate::Bytes,
format: Self::Format,
_crop: crate::Crop,
) -> Result<Self, Self::Error>
where
Self: Sized,
{
let registry = default::get_codecs();
let probe = default::get_probe();
let mediasource = io::Cursor::new(bytes);
let mss = MediaSourceStream::new(Box::new(mediasource), Default::default());
let reader = probe
.format(&format, mss, &Default::default(), &Default::default())?
.format;
let decoder = registry.make(&Default::default(), &Default::default())?;
let decoder = registry.make(
&reader
.tracks()
.iter()
.find(|t| t.codec_params.codec != CODEC_TYPE_NULL)
.map(|t| &t.codec_params)
.unwrap_or(&Default::default()),
&Default::default(),
)?;
Ok(Audio::new(reader, decoder))
}
}
@ -185,16 +170,20 @@ mod tests {
#[test]
fn open_sample_file() {
assert_eq!(
Ok(include_bytes!("../../../testing material/sound/sample-3s.mp3").to_vec()),
Audio::open(
get_project_root()
.expect("can't find project root!")
.join("testing material")
.join("sound")
.join("sample-3s.mp3")
)
.map(|audio| audio.into_data_bytes())
);
let original =
&include_bytes!("../../../testing material/sound/sample-3s.mp3")[52079 - 51826..];
let result = Audio::open(
get_project_root()
.expect("can't find project root!")
.join("testing material")
.join("sound")
.join("sample-3s.mp3"),
)
.map(|audio| audio.into_data_bytes());
dbg!(original.len());
if let Ok(ref r) = result {
dbg!(r.len());
}
assert_eq!(Ok(original), result.as_ref().map(Vec::as_slice));
}
}