#![crate_type = "bin"]
#![crate_name="demo"]
extern crate sdl2;
extern crate sdl2_mixer;
use std::os;
fn main() {
let args = os::args();
if args.len() < 2 {
println!("Usage: ./demo audio.[mp3|wav|ogg]")
} else {
match dump_info(&Path::new(args[1].to_string())) {
_ => ()
}
}
}
fn dump_info(filename: &Path) -> Result<(), String> {
println!("linked version: {}", sdl2_mixer::get_linked_version());
sdl2::init(sdl2::INIT_AUDIO | sdl2::INIT_TIMER);
println!("inited => {}", sdl2_mixer::init(sdl2_mixer::INIT_MP3 | sdl2_mixer::INIT_FLAC |
sdl2_mixer::INIT_MOD | sdl2_mixer::INIT_FLUIDSYNTH |
sdl2_mixer::INIT_MODPLUG | sdl2_mixer::INIT_OGG).bits());
try!(sdl2_mixer::open_audio(sdl2_mixer::DEFAULT_FREQUENCY, 0x8010u16, 2, 1024));
sdl2_mixer::allocate_channels(0);
{
let n = sdl2_mixer::get_chunk_decoders_number();
println!("available chunk(sample) decoders: {}", n);
for i in range(0, n) {
println!("| decoder {} => {:}", i, sdl2_mixer::get_chunk_decoder(i));
}
}
{
let n = sdl2_mixer::get_music_decoders_number();
println!("available music decoders: {}", n);
for i in range(0, n) {
println!("| decoder {} => {:}", i, sdl2_mixer::get_music_decoder(i));
}
}
println!("query spec => {}", sdl2_mixer::query_spec());
let music = sdl2_mixer::Music::from_file(filename).unwrap();
sdl2_mixer::Music::hook_finished(|| { println!("play ends! from rust cb") });
println!("music => {:}", music);
println!("music type => {}", music.get_type());
println!("music volume => {}", sdl2_mixer::Music::get_volume());
println!("play => {}", music.play(1));
sdl2::timer::delay(10000);
println!("fading out ... {}", sdl2_mixer::Music::fade_out(4000));
sdl2::timer::delay(5000);
println!("fading in from pos ... {}", music.fade_in_from_pos(1, 10000, 100.0));
sdl2::timer::delay(5000);
sdl2_mixer::Music::halt();
sdl2::timer::delay(1000);
sdl2_mixer::quit();
sdl2::quit();
Ok(())
}