void AudioBlockPanStereoToStereo(const float aInputL[WEBAUDIO_BLOCK_SIZE], const float aInputR[WEBAUDIO_BLOCK_SIZE], float aGainL[WEBAUDIO_BLOCK_SIZE], float aGainR[WEBAUDIO_BLOCK_SIZE], bool aIsOnTheLeft[WEBAUDIO_BLOCK_SIZE], float aOutputL[WEBAUDIO_BLOCK_SIZE], float aOutputR[WEBAUDIO_BLOCK_SIZE]) { #ifdef BUILD_ARM_NEON if (mozilla::supports_neon()) { AudioBlockPanStereoToStereo_NEON(aInputL, aInputR, aGainL, aGainR, aIsOnTheLeft, aOutputL, aOutputR); return; } #endif uint32_t i; for (i = 0; i < WEBAUDIO_BLOCK_SIZE; i++) { if (aIsOnTheLeft[i]) { aOutputL[i] = aInputL[i] + aInputR[i] * aGainL[i]; aOutputR[i] = aInputR[i] * aGainR[i]; } else { aOutputL[i] = aInputL[i] * aGainL[i]; aOutputR[i] = aInputR[i] + aInputL[i] * aGainR[i]; } } }
void AudioBlockPanStereoToStereo(const float aInputL[WEBAUDIO_BLOCK_SIZE], const float aInputR[WEBAUDIO_BLOCK_SIZE], float aGainL, float aGainR, bool aIsOnTheLeft, float aOutputL[WEBAUDIO_BLOCK_SIZE], float aOutputR[WEBAUDIO_BLOCK_SIZE]) { #ifdef BUILD_ARM_NEON if (mozilla::supports_neon()) { AudioBlockPanStereoToStereo_NEON(aInputL, aInputR, aGainL, aGainR, aIsOnTheLeft, aOutputL, aOutputR); return; } #endif uint32_t i; if (aIsOnTheLeft) { for (i = 0; i < WEBAUDIO_BLOCK_SIZE; ++i) { *aOutputL++ = *aInputL++ + *aInputR * aGainL; *aOutputR++ = *aInputR++ * aGainR; } } else { for (i = 0; i < WEBAUDIO_BLOCK_SIZE; ++i) { *aOutputL++ = *aInputL * aGainL; *aOutputR++ = *aInputR++ + *aInputL++ * aGainR; } } }