@@ -289,34 +289,33 @@ private int OnAudioUpdated(IntPtr framePtr, int frameSize)
289
289
290
290
private void OnAudioFilterRead ( float [ ] data , int channels )
291
291
{
292
- var remaining = data . Length ;
292
+ var dataOffset = 0 ;
293
293
var lastFrameSize = _lastAudioFrame . Length - _lastAudioFrameOffset ;
294
- if ( remaining >= lastFrameSize ) {
295
- Buffer . BlockCopy ( _lastAudioFrame , _lastAudioFrameOffset , data , 0 , lastFrameSize ) ;
296
- remaining - = lastFrameSize ;
294
+ if ( data . Length >= lastFrameSize ) {
295
+ Buffer . BlockCopy ( _lastAudioFrame , _lastAudioFrameOffset , data , dataOffset , lastFrameSize ) ;
296
+ dataOffset + = lastFrameSize ;
297
297
_lastAudioFrame = new float [ 0 ] ;
298
298
_lastAudioFrameOffset = 0 ;
299
299
300
300
lock ( _audioQueue ) {
301
- while ( remaining > 0 && _audioQueue . Count > 0 ) {
301
+ while ( dataOffset < data . Length && _audioQueue . Count > 0 ) {
302
302
var frame = _audioQueue . Dequeue ( ) ;
303
- if ( frame . Length <= remaining ) {
304
- Buffer . BlockCopy ( frame , 0 , data , data . Length - remaining , frame . Length ) ;
305
- remaining - = frame . Length ;
303
+ if ( frame . Length <= data . Length - dataOffset ) {
304
+ Buffer . BlockCopy ( frame , 0 , data , dataOffset , frame . Length ) ;
305
+ dataOffset + = frame . Length ;
306
306
307
307
} else {
308
- Buffer . BlockCopy ( frame , 0 , data , data . Length - remaining , remaining ) ;
308
+ Buffer . BlockCopy ( frame , 0 , data , dataOffset , data . Length - dataOffset ) ;
309
309
_lastAudioFrame = frame ;
310
- _lastAudioFrameOffset = remaining ;
311
- remaining = 0 ;
310
+ _lastAudioFrameOffset = data . Length - dataOffset ;
311
+ dataOffset = data . Length ;
312
312
}
313
313
}
314
314
}
315
315
316
316
} else {
317
- Buffer . BlockCopy ( _lastAudioFrame , _lastAudioFrameOffset , data , 0 , remaining ) ;
318
- _lastAudioFrameOffset += remaining ;
319
- Logger . Info ( $ "No audio de-queue, copied { remaining } from last frame ({ _lastAudioFrame . Length - remaining } ).") ;
317
+ Buffer . BlockCopy ( _lastAudioFrame , _lastAudioFrameOffset , data , 0 , data . Length ) ;
318
+ _lastAudioFrameOffset += data . Length ;
320
319
}
321
320
}
322
321
0 commit comments