Skip to content

Commit 979951f

Browse files
committed
Add rate listener to interleaved feedback example
1 parent 72e4156 commit 979951f

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

examples/feedback_interleaved.rs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use std::sync::{Arc, Mutex};
88
use coreaudio::audio_unit::audio_format::LinearPcmFlags;
99
use coreaudio::audio_unit::render_callback::{self, data};
1010
use coreaudio::audio_unit::{audio_unit_from_device_id, get_default_device_id, get_device_name};
11-
use coreaudio::audio_unit::{Element, SampleFormat, Scope, StreamFormat};
11+
use coreaudio::audio_unit::{Element, SampleFormat, Scope, StreamFormat, RateListener};
1212
use coreaudio::sys::*;
1313

1414
const SAMPLE_RATE: f64 = 44100.0;
@@ -73,6 +73,14 @@ fn main() -> Result<(), coreaudio::Error> {
7373
let producer_right = buffer_right.clone();
7474
let consumer_right = buffer_right.clone();
7575

76+
// Register a rate listener for playback
77+
let mut listener_pb = RateListener::new(output_device_id, None)?;
78+
listener_pb.register()?;
79+
80+
// Register a rate listener for capture
81+
let mut listener_cap = RateListener::new(input_device_id, None)?;
82+
listener_cap.register()?;
83+
7684
// seed roughly 1 second of data to create a delay in the feedback loop for easier testing
7785
for buffer in vec![buffer_left, buffer_right] {
7886
let mut buffer = buffer.lock().unwrap();
@@ -121,8 +129,14 @@ fn main() -> Result<(), coreaudio::Error> {
121129
Ok(())
122130
})?;
123131
output_audio_unit.start()?;
124-
125-
std::thread::sleep(std::time::Duration::from_millis(100000));
126-
132+
for _ in 0..1000 {
133+
std::thread::sleep(std::time::Duration::from_millis(100));
134+
if listener_cap.get_nbr_values() > 0 {
135+
println!("capture rate change: {:?}", listener_cap.drain_values());
136+
}
137+
if listener_pb.get_nbr_values() > 0 {
138+
println!("playback rate change: {:?}", listener_pb.drain_values());
139+
}
140+
}
127141
Ok(())
128142
}

0 commit comments

Comments
 (0)