There is a 'check` that probably shouldn’t be there at the end of the method:
EVoiceCaptureState::Type FVoiceCaptureWindows::GetVoiceData(uint8* OutVoiceBuffer, const uint32 InVoiceBufferSize, uint32& OutBytesWritten, uint64& OutSampleClockCounter)
{
EVoiceCaptureState::Type NewMicState = VoiceCaptureState;
OutBytesWritten = 0;
if (VoiceCaptureState == EVoiceCaptureState::Ok ||
VoiceCaptureState == EVoiceCaptureState::Stopping)
{
if (InVoiceBufferSize >= (uint32) UncompressedAudioBuffer.Num())
{
OutBytesWritten = UncompressedAudioBuffer.Num();
FMemory::Memcpy(OutVoiceBuffer, UncompressedAudioBuffer.GetData(), OutBytesWritten);
VoiceCaptureState = EVoiceCaptureState::NoData;
UncompressedAudioBuffer.Reset();
OutSampleClockCounter = CurrentSampleStart;
}
else
{
NewMicState = EVoiceCaptureState::BufferTooSmall;
}
}
check(OutBytesWritten > 0);
return NewMicState;
}
If the buffer is too small, it will trigger the assert in development builds.