Commit cc820173 authored by David Reid's avatar David Reid

Optimization to stereo panner.

parent 4d5433ae
...@@ -35,7 +35,7 @@ int main(int argc, char** argv) ...@@ -35,7 +35,7 @@ int main(int argc, char** argv)
} }
ma_engine_sound_set_pitch(&engine, &sound1, 0.75f); ma_engine_sound_set_pitch(&engine, &sound1, 0.75f);
ma_engine_sound_set_pan(&engine, &sound1, -1.0f); ma_engine_sound_set_pan(&engine, &sound1, 0.0f);
ma_engine_sound_set_looping(&engine, &sound1, MA_TRUE); ma_engine_sound_set_looping(&engine, &sound1, MA_TRUE);
ma_engine_sound_start(&engine, &sound1); ma_engine_sound_start(&engine, &sound1);
......
...@@ -510,29 +510,24 @@ MA_API ma_result ma_panner_init(const ma_panner_config* pConfig, ma_panner* pPan ...@@ -510,29 +510,24 @@ MA_API ma_result ma_panner_init(const ma_panner_config* pConfig, ma_panner* pPan
static void ma_stereo_pan_pcm_frames_f32(float* pFramesOut, const float* pFramesIn, ma_uint64 frameCount, float pan) static void ma_stereo_pan_pcm_frames_f32(float* pFramesOut, const float* pFramesIn, ma_uint64 frameCount, float pan)
{ {
float factorL0;
float factorR0;
float factorL1;
float factorR1;
ma_uint64 iFrame; ma_uint64 iFrame;
/* TODO: We can optimize this by removing some multiplies and adds. */
if (pan > 0) { if (pan > 0) {
factorL0 = 1.0f - pan; float factorL0 = 1.0f - pan;
factorR0 = 0.0f; float factorL1 = 0.0f + pan;
factorL1 = 0.0f + pan;
factorR1 = 1.0f; for (iFrame = 0; iFrame < frameCount; iFrame += 1) {
pFramesOut[iFrame*2 + 0] = (pFramesIn[iFrame*2 + 0] * factorL0);
pFramesOut[iFrame*2 + 1] = (pFramesIn[iFrame*2 + 0] * factorL1) + pFramesIn[iFrame*2 + 1];
}
} else { } else {
factorL0 = 1.0f; float factorR0 = 0.0f - pan;
factorR0 = 0.0f - pan; float factorR1 = 1.0f + pan;
factorL1 = 0.0f;
factorR1 = 1.0f + pan;
}
for (iFrame = 0; iFrame < frameCount; iFrame += 1) { for (iFrame = 0; iFrame < frameCount; iFrame += 1) {
pFramesOut[iFrame*2 + 0] = (pFramesIn[iFrame*2 + 0] * factorL0) + (pFramesIn[iFrame*2 + 1] * factorR0); pFramesOut[iFrame*2 + 0] = pFramesIn[iFrame*2 + 0] + (pFramesIn[iFrame*2 + 1] * factorR0);
pFramesOut[iFrame*2 + 1] = (pFramesIn[iFrame*2 + 0] * factorL1) + (pFramesIn[iFrame*2 + 1] * factorR1); pFramesOut[iFrame*2 + 1] = (pFramesIn[iFrame*2 + 1] * factorR1);
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment