Skip to content

Commit b49e376

Browse files
committed
Add timestamps
1 parent 0e78db7 commit b49e376

5 files changed

Lines changed: 24 additions & 34 deletions

File tree

src/backends/asio/device.rs

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,11 @@ impl AudioInputDevice for AsioDevice {
198198
let (tx, rx) = oneshot::channel::<oneshot::Sender<Callback>>();
199199
let mut callback = Some(callback);
200200

201+
let mut timestamp = Timestamp {
202+
samplerate: stream_config.samplerate,
203+
counter: 0,
204+
};
205+
201206
let callback_id = self.driver.add_callback(move |callback_info| unsafe {
202207
if let Ok(sender) = rx.try_recv() {
203208
sender.send(callback.take().unwrap()).unwrap();
@@ -206,10 +211,7 @@ impl AudioInputDevice for AsioDevice {
206211

207212
let buffer_index = callback_info.buffer_index as usize;
208213

209-
let timestamp = Timestamp {
210-
samplerate: 41000.0,
211-
counter: 0,
212-
};
214+
timestamp += input_stream.buffer_size as u64;
213215

214216
let context = AudioCallbackContext {
215217
stream_config,
@@ -282,6 +284,11 @@ impl AudioOutputDevice for AsioDevice {
282284
let (tx, rx) = oneshot::channel::<oneshot::Sender<Callback>>();
283285
let mut callback = Some(callback);
284286

287+
let mut timestamp = Timestamp {
288+
samplerate: stream_config.samplerate,
289+
counter: 0,
290+
};
291+
285292
let callback_id = self.driver.add_callback(move |callback_info| unsafe {
286293
if let Ok(sender) = rx.try_recv() {
287294
sender.send(callback.take().unwrap()).unwrap();
@@ -290,10 +297,7 @@ impl AudioOutputDevice for AsioDevice {
290297

291298
let buffer_index = callback_info.buffer_index as usize;
292299

293-
let timestamp = Timestamp {
294-
samplerate: 41000.0,
295-
counter: 0,
296-
};
300+
timestamp += output_stream.buffer_size as u64;
297301

298302
let context = AudioCallbackContext {
299303
stream_config,
@@ -366,6 +370,11 @@ impl AudioDuplexDevice for AsioDevice {
366370
let (tx, rx) = oneshot::channel::<oneshot::Sender<Callback>>();
367371
let mut callback = Some(callback);
368372

373+
let mut timestamp = Timestamp {
374+
samplerate: stream_config.samplerate,
375+
counter: 0,
376+
};
377+
369378
let callback_id = self.driver.add_callback(move |callback_info| unsafe {
370379
if let Ok(sender) = rx.try_recv() {
371380
sender.send(callback.take().unwrap()).unwrap();
@@ -374,10 +383,7 @@ impl AudioDuplexDevice for AsioDevice {
374383

375384
let buffer_index = callback_info.buffer_index as usize;
376385

377-
let timestamp = Timestamp {
378-
samplerate: 41000.0,
379-
counter: 0,
380-
};
386+
timestamp += output_stream.buffer_size as u64;
381387

382388
let input = create_input(
383389
&input_data_type,
@@ -695,16 +701,4 @@ fn f32_to_i32(f: f32) -> i32 {
695701
/// Helper function to convert from f32 to i24.
696702
fn f32_to_i24(f: f32) -> i32 {
697703
(f * 0x7FFFFF as f32) as i32
698-
}
699-
700-
// fn asio_ns_to_double(val: sys::bindings::asio_import::ASIOTimeStamp) -> f64 {
701-
// let two_raised_to_32 = 4294967296.0;
702-
// val.lo as f64 + val.hi as f64 * two_raised_to_32
703-
// }
704-
705-
// fn system_time_to_timestamp(system_time: asio::AsioTime) -> timestamp::Timestamp {
706-
// let systime_ns = asio_ns_to_double(system_time);
707-
// let secs = systime_ns as i64 / 1_000_000_000;
708-
// let nanos = (systime_ns as i64 - secs * 1_000_000_000) as u32;
709-
710-
// }
704+
}

src/backends/asio/mod.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
pub(crate) mod device;
2-
pub(crate) mod driver;
1+
mod device;
2+
mod driver;
33
pub use driver::AsioDriver;
4-
pub(crate) mod error;
5-
pub mod prelude;
6-
pub(crate) mod stream;
4+
mod error;
5+
mod stream;

src/backends/asio/prelude.rs

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/backends/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,5 +116,5 @@ pub fn default_output_device() -> impl AudioOutputDevice {
116116
// #[cfg(os_wasapi)]
117117
// return default_output_device_from(&wasapi::WasapiDriver);
118118
#[cfg(os_asio)]
119-
return default_output_device_from(&asio::driver::AsioDriver::new().unwrap());
119+
return default_output_device_from(&asio::AsioDriver::new().unwrap());
120120
}

src/prelude.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
#![allow(unused)]
22
//! Prelude module for `interflow`. Use as a star-import.
33
4-
#[cfg(os_asio)]
5-
pub use crate::backends::asio::prelude::*;
64
#[cfg(os_wasapi)]
75
pub use crate::backends::wasapi::prelude::*;
86
pub use crate::backends::*;

0 commit comments

Comments
 (0)