From 489c65ae03b254ea845c15811d2040e2b12397db Mon Sep 17 00:00:00 2001 From: laurent Date: Thu, 29 Aug 2024 11:59:46 +0200 Subject: [PATCH] Add another example. --- examples/basic.rs | 26 +++++++++++++++++++++++ examples/benchmark/main.rs | 6 ------ src/lib.rs | 1 + examples/benchmark/audio.rs => src/wav.rs | 0 4 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 examples/basic.rs rename examples/benchmark/audio.rs => src/wav.rs (100%) diff --git a/examples/basic.rs b/examples/basic.rs new file mode 100644 index 0000000..d20d5c7 --- /dev/null +++ b/examples/basic.rs @@ -0,0 +1,26 @@ +use anyhow::Result; +use ogg_table::OggVorbisReader; + +fn main() -> Result<()> { + let ogg_filename = "foo.ogg"; + let start_time_sec = 314.15; + let duration_sec = 60.; + let (all_data, sample_rate) = { + let file = std::fs::File::open(ogg_filename)?; + let rdr = std::io::BufReader::new(file); + let mut ovr = OggVorbisReader::new(rdr)?; + let data = ovr.decode(0, 1000000000000)?; + (data, ovr.sample_rate()) + }; + let (selected_data, _sr) = + ogg_table::read_ogg_vorbis_sample(ogg_filename, start_time_sec, duration_sec)?; + let mut out_file = std::fs::File::create("foo1.wav")?; + ogg_table::wav::write_wav(&mut out_file, &selected_data[0], sample_rate)?; + + let start_in_samples = (start_time_sec * sample_rate as f64) as usize; + let len_in_samples = (duration_sec * sample_rate as f64) as usize; + let data = &all_data[0][start_in_samples..start_in_samples + len_in_samples]; + let mut out_file = std::fs::File::create("foo2.wav")?; + ogg_table::wav::write_wav(&mut out_file, &data, sample_rate)?; + Ok(()) +} diff --git a/examples/benchmark/main.rs b/examples/benchmark/main.rs index cac0cb4..5502fc3 100644 --- a/examples/benchmark/main.rs +++ b/examples/benchmark/main.rs @@ -1,8 +1,6 @@ use anyhow::Result; use ogg_table::OggVorbisReader; -mod audio; - fn main() -> Result<()> { for i in 0..5 { let start_time = std::time::Instant::now(); @@ -11,10 +9,6 @@ fn main() -> Result<()> { let mut ovr = OggVorbisReader::new(rdr)?; let data = ovr.decode(0, 1000000000000)?; println!("{i} {} {:?}", data[0].len(), start_time.elapsed()); - if false { - let mut out_file = std::fs::File::create("foo.wav")?; - audio::write_wav(&mut out_file, &data[0], 24000)?; - } } Ok(()) } diff --git a/src/lib.rs b/src/lib.rs index 0997d90..fdc755f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,6 +3,7 @@ use anyhow::Result; pub mod ogg; pub mod ogg_vorbis; pub mod vorbis; +pub mod wav; pub use ogg_vorbis::OggVorbisReader; diff --git a/examples/benchmark/audio.rs b/src/wav.rs similarity index 100% rename from examples/benchmark/audio.rs rename to src/wav.rs