@@ -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.
696702fn 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+ }
0 commit comments