0
0

hi,

we have a voip application for which we are considering the use of fmod ex.

Currently, not using fmod, we basically do this:
We have some small ring buffer (e.g. 100ms) which is played back, and whenever a 20ms "block" of this buffer has been successfuly played, we are notified and refill it. It doesn’t usually happen that we have to fill multiple blocks in "one go" – except when the system is under heavy load. On a system without any load it is possible to achive playback with a total 40ms buffer.

Now, how to apply our problem to fmod ex?

Our first approach was basically taken from the "usercreatedsound" example, we fill the audio data into the memory in the pcmReadCallback. Although we could get fairly good latency by setting
[code:3prfgdrl]createsoundexinfo.decodebuffersize = getSampleRate() / 25;[/code:3prfgdrl] this still yielded in two calls of the callback very shortly after each other, instead of evenly spaced calls every 20ms. Also although the latency was "fairly good" it was not as good as our non-fmod based approach. Setting the decodebuffersize any lower resulted in break-up – obviously we were already pushing it with this value.

Our question basically here is – which tool within fmod is best suited for attacking our scenario? Low latency is an absolute requirement.

Some searching on the forum lead us to threads like this one:
http://52.88.2.202/forum/viewtopic.php?t=8124 – should we be doing this via a custom dsp? Currently we are reviewing the custom dsp example.

  • You must to post comments
0
0

The custom dsp is the lowest latency method. Using the stream system will mean yes, it calls the fill function twice, as it has to fill the front buffer first, then the back buffer almost immediately after.

  • You must to post comments
Showing 1 result
Your Answer

Please first to submit.