DSP buffer problem in NRT

Hello!
I’m using FMOD Core API in C++ and I’m trying to use NOSOUND_NRT processing to capture audio data for ffmpeg encoding in best quality as fast as possible (using DSP read callbacks).

The problem I encountered is that FMOD manages DSP buffers internally in another thread (even in NRT mode), so if I advance too much in a short amount of time using FMOD::System::update, the audio quality will degrade due to (what I assume is) internal buffer overflows. Due to the nature of my problem I cannot just increase dspBufferSize or/and numbuffers to a random number since it’s just guessing if it’s enough for a random very-fast system.

Is there a way to forcefully clear internal buffers or/and reliably know when advancing a system will not degrade quality?

Hi,

Could I grab your FMOD Version? Would it be possible to share the code so I can try and reproduce the issue on my side? It can be uploaded to your profile.

We also have an Core API example for writing output to a .mp3 file: "C:\Program Files (x86)\FMOD SoundSystem\FMOD Studio API Windows\api\core\examples\plugins\output_mp3.cpp" which may have some useful information. Rather than using a custom DSP you can create a custom output plugin: FMOD Engine | Core Api System - System::Setoutputbyplugin.

The mixer takes 10ms~ to update so you could try only calling the system->update() only after 10ms? (Abnormal sound when using FMOD_OPENUSER - #4 by jeff_fmod).