stream_last_track/
stream_last_track.rs1mod common;
3
4use cd_da_reader::{CdReader, create_wav};
5
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 let output_dir = common::fresh_output_dir("stream_last_track")?;
8 let reader = CdReader::open_default()?;
9 let toc = reader.read_toc()?;
10
11 let last_audio = toc
12 .tracks
13 .iter()
14 .rev()
15 .find(|t| t.is_audio)
16 .ok_or("no audio tracks found")?;
17
18 println!("Streaming track {}...", last_audio.number);
19 let mut stream = reader.open_track_stream(&toc, last_audio.number)?;
20
21 let mut pcm = Vec::new();
22 while let Some(chunk) = stream.next_chunk()? {
23 pcm.extend_from_slice(&chunk);
24 }
25
26 let wav = create_wav(pcm);
27 let output_path = output_dir.join(format!("track{:02}.wav", last_audio.number));
28 std::fs::write(&output_path, wav)?;
29 println!("Saved {}", output_path.display());
30
31 Ok(())
32}