Skip to content

Commit

Permalink
optimization: better use of CPU caches
Browse files Browse the repository at this point in the history
  • Loading branch information
RomanPudashkin committed Jun 11, 2024
1 parent b41d753 commit d43bacf
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions src/framework/audio/internal/worker/mixer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -423,11 +423,12 @@ void Mixer::mixOutputFromChannel(float* outBuffer, const float* inBuffer, unsign
return;
}

for (audioch_t audioChNum = 0; audioChNum < m_audioChannelsCount; ++audioChNum) {
for (samples_t s = 0; s < samplesCount; ++s) {
int idx = s * m_audioChannelsCount + audioChNum;
float sample = inBuffer[idx];
for (samples_t s = 0; s < samplesCount; ++s) {
size_t samplePos = s * m_audioChannelsCount;

for (audioch_t audioChNum = 0; audioChNum < m_audioChannelsCount; ++audioChNum) {
size_t idx = samplePos + audioChNum;
float sample = inBuffer[idx];
outBuffer[idx] += sample;

if (outBufferIsSilent && !RealIsNull(sample)) {
Expand Down Expand Up @@ -474,10 +475,11 @@ void Mixer::writeTrackToAuxBuffers(const float* trackBuffer, const AuxSendsParam
float* auxBuffer = aux.buffer.data();
float signalAmount = auxSend.signalAmount;

for (audioch_t audioChNum = 0; audioChNum < m_audioChannelsCount; ++audioChNum) {
for (samples_t s = 0; s < samplesPerChannel; ++s) {
int idx = s * m_audioChannelsCount + audioChNum;
for (samples_t s = 0; s < samplesPerChannel; ++s) {
size_t samplePos = s * m_audioChannelsCount;

for (audioch_t audioChNum = 0; audioChNum < m_audioChannelsCount; ++audioChNum) {
size_t idx = samplePos + audioChNum;
auxBuffer[idx] += trackBuffer[idx] * signalAmount;
}
}
Expand Down

0 comments on commit d43bacf

Please sign in to comment.