summaryrefslogtreecommitdiff
path: root/per.rs
diff options
context:
space:
mode:
Diffstat (limited to 'per.rs')
-rw-r--r--per.rs49
1 files changed, 49 insertions, 0 deletions
diff --git a/per.rs b/per.rs
new file mode 100644
index 0000000..6435978
--- /dev/null
+++ b/per.rs
@@ -0,0 +1,49 @@
+use std::path::Path;
+use std::rt::io::io_error;
+use std::task::{SingleThreaded, spawn_sched};
+
+use oss::*;
+//use mp3lame::*;
+mod oss;
+//mod mp3lame;
+
+static DSP_FILES: &'static [&'static str] = &["/dev/dsp", "/dev/dsp1"];
+static DSP_SPEEDS: [int, ..2] = [44100i, 48000i];
+
+#[fixed_stack_segment]
+fn main() {
+ //let ctx = LameContext::new();
+ let mut foo = None;
+ for file_name in DSP_FILES.iter() {
+ match OssDevice::new(&Path(file_name.as_slice())) {
+ Some(x) => { foo = Some(x); break }
+ None => {}
+ }
+ };
+ let dsp = match foo {
+ Some(x) => x,
+ None => fail!("Unable to open dsp device")
+ };
+ dsp.reset();
+ dsp.set_format();
+ dsp.set_stereo();
+ let mut speed: int = 0;
+ for dsp_speed in DSP_SPEEDS.iter() {
+ do io_error::cond.trap(|_| {speed = 0}).inside {
+ dsp.set_speed(*dsp_speed);
+ speed = *dsp_speed;
+ }
+ if speed != 0 {
+ break;
+ }
+ }
+ println(fmt!("Sample rate: %d Hz", speed));
+ let (port, chan) = stream::<~[u8]>();
+ do spawn_sched(SingleThreaded) {
+ dsp.read_all(&chan);
+ }
+ loop {
+ let buffer = port.recv();
+ println(fmt!("Read buffer of length %u", buffer.len()));
+ }
+}