private void OnAudioFilterRead(int id, float[] data, AudioOutput.AudioChannels audioChannel) { var samplesCount = _wrapper.NativeGetAudioSamples(IntPtr.Zero, 0, audioChannel); if (samplesCount >= data.Length) { if (!_audioDataHandle.IsAllocated) { _audioDataHandle = GCHandle.Alloc(data, GCHandleType.Pinned); } _wrapper.NativeGetAudioSamples(_audioDataHandle.AddrOfPinnedObject(), data.Length, audioChannel); _audioManager.SetOutputData(id, data); } if (_audioManager.OutputsDataUpdated) { _wrapper.NativeClearAudioSamples(data.Length); _audioManager.ResetOutputsData(); } }