//! Dump the menu's three SE cues as decodable `RIFF`s, to prove `se_wave_riff` //! produces something ffmpeg actually accepts. //! //! cargo run -p sylpheed-formats --example se_wave_dump -- //! ffmpeg -i /move.riff move.wav use sylpheed_formats::media::{self, DirectorySource}; fn main() { let out = std::env::args().nth(1).unwrap_or_else(|| "/tmp".into()); let disc = std::env::var("SYLPHEED_DISC").expect("SYLPHEED_DISC"); let src = DirectorySource::new(&disc); for (name, off, pkts) in [ ("move", 0x1ec0usize, 4usize), ("back", 0x0ec0, 2), ("confirm", 0x5d6c0, 6), ] { match media::se_wave_riff(&src, "Static.slb", off, pkts, 1, 48000) { Ok(riff) => { let p = format!("{out}/{name}.riff"); std::fs::write(&p, &riff).unwrap(); println!("{p}: {} bytes ({pkts} packets at {off:#x})", riff.len()); } Err(e) => println!("{name}: ERROR {e}"), } } // The refusal path: a packet count the bank cannot satisfy. match media::se_wave_riff(&src, "Static.slb", 0x1ec0, 1 << 20, 1, 48000) { Ok(_) => println!("REFUSAL PATH FAILED — returned a short stream"), Err(e) => println!("refusal path ok: {e}"), } }