From 19c6ee71d5531deb3f8712827f1593f6c40b128e Mon Sep 17 00:00:00 2001 From: Breval Ferrari Date: Wed, 19 Mar 2025 01:12:34 -0400 Subject: [PATCH] passing test! but had to remove FromDataBytes --- bingus/src/snd/simphonia.rs | 61 +++++++++++++++---------------------- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/bingus/src/snd/simphonia.rs b/bingus/src/snd/simphonia.rs index 7c4430a..52a1b9c 100644 --- a/bingus/src/snd/simphonia.rs +++ b/bingus/src/snd/simphonia.rs @@ -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 - 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)); } }