This repository has been archived on 2024-06-01. You can view files and clone it, but cannot push or open issues or pull requests.
rustboyadvance-ng/src/plat/sdl2/audio.rs

41 lines
884 B
Rust
Raw Normal View History

use sdl2;
use sdl2::audio::{AudioQueue, AudioSpecDesired};
use rustboyadvance_ng::AudioInterface;
pub struct Sdl2AudioPlayer {
pub device: AudioQueue<i16>,
freq: i32,
}
impl AudioInterface for Sdl2AudioPlayer {
fn get_sample_rate(&self) -> i32 {
self.freq
}
fn play(&mut self, samples: &[i16]) {
self.device.queue(&samples);
}
}
pub fn create_audio_player(sdl: &sdl2::Sdl) -> Sdl2AudioPlayer {
let audio_subsystem = sdl.audio().unwrap();
let desired_spec = AudioSpecDesired {
freq: Some(44_100),
channels: Some(2), // stereo
samples: None,
};
let device = audio_subsystem
.open_queue::<i16, _>(None, &desired_spec)
.unwrap();
println!("Found audio device: {:?}", device.spec());
let freq = device.spec().freq;
device.resume();
Sdl2AudioPlayer { device, freq }
}