With the MP3 decoder done, we're now ready to play some music. We'll create a new module, called player, which we will add at the top of main.rs:
mod player;
We'll start this module by creating a new player.rs file with the following import statements:
use std::fs::File; use std::io::BufReader; use std::path::{Path, PathBuf}; use std::sync::{Arc, Condvar, Mutex}; use std::thread; use crossbeam::sync::SegQueue; use pulse_simple::Playback; use mp3::Mp3Decoder; use self::Action::*;
We'll also create some constants:
const BUFFER_SIZE: usize = 1000; const DEFAULT_RATE: u32 = 44100;
The buffer size is the number of samples we'll decode and play to avoid having slowdowns when playing the song and also to avoid using 100% of the CPU by constantly reading and decoding the data at the same time as playing. The default rate will be used...