Пример #1
0
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];
    }
  }
}
Пример #2
0
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;
        }
    }
}