@@ -261,17 +261,22 @@ private int OnAudioUpdated(IntPtr framePtr, int frameSize)
261
261
unsafe {
262
262
var src = ( short * ) framePtr ;
263
263
var frame = new float [ frameSize * 2 ] ;
264
+ var min = 0f ;
265
+ var max = 0f ;
264
266
for ( var i = 0 ; i < frameSize ; i ++ ) {
265
- frame [ i * 2 ] = src [ i ] * ( float ) ( 1.0 / 32768.0 ) ;
267
+ frame [ i * 2 ] = src [ i ] / 32768f ;
266
268
frame [ i * 2 + 1 ] = frame [ i * 2 ] ; // duplicate - assuming input channels = 1, and output channels = 2.
269
+ min = System . Math . Min ( min , frame [ i * 2 ] ) ;
270
+ max = System . Math . Max ( max , frame [ i * 2 ] ) ;
267
271
}
268
272
lock ( _audioQueue ) {
269
- if ( _audioQueue . Count < _maximalQueueSize ) {
270
- _audioQueue . Enqueue ( frame ) ;
271
- Logger . Info ( $ "Queueing audio sample ({ frameSize } ).") ;
272
-
273
- } else {
274
- Logger . Info ( $ "Skipping audio sample queue because it's full.") ;
273
+ if ( _audioQueue . Count >= _maximalQueueSize ) {
274
+ _audioQueue . Clear ( ) ;
275
+ Logger . Error ( "Clearing full audio frame queue." ) ;
276
+ }
277
+ _audioQueue . Enqueue ( frame ) ;
278
+ if ( min < - 0.1f || max > 0.1f ) {
279
+ Logger . Info ( $ "Queueing audio sample ({ frameSize } ). [{ System . Math . Round ( min , 4 ) } { System . Math . Round ( max , 4 ) } ]") ;
275
280
}
276
281
}
277
282
}
@@ -285,6 +290,8 @@ private void OnAudioFilterRead(float[] data, int channels)
285
290
if ( remaining >= lastFrameSize ) {
286
291
Buffer . BlockCopy ( _lastAudioFrame , _lastAudioFrameOffset , data , 0 , lastFrameSize ) ;
287
292
remaining -= lastFrameSize ;
293
+ _lastAudioFrame = new float [ 0 ] ;
294
+ _lastAudioFrameOffset = 0 ;
288
295
289
296
lock ( _audioQueue ) {
290
297
var i = 0 ;
@@ -302,7 +309,10 @@ private void OnAudioFilterRead(float[] data, int channels)
302
309
remaining = 0 ;
303
310
}
304
311
}
305
- Logger . Info ( $ "Dequeued { i } audio samples, written { data . Length - remaining } , remaining { remaining } .") ;
312
+ if ( _audioQueue . Count >= _maximalQueueSize ) {
313
+ _audioQueue . Clear ( ) ;
314
+ Logger . Info ( $ "Dequeued { i } audio samples, written { data . Length - remaining } , remaining { remaining } , clearing queue!") ;
315
+ }
306
316
}
307
317
308
318
} else {
0 commit comments