예제 #1
0
void
AudioBufferInPlaceScale(float* aBlock,
                        float aScale,
                        uint32_t aSize)
{
  if (aScale == 1.0f) {
    return;
  }
#ifdef BUILD_ARM_NEON
  if (mozilla::supports_neon()) {
    AudioBufferInPlaceScale_NEON(aBlock, aScale, aSize);
    return;
  }
#endif

#ifdef USE_SSE2
  if (mozilla::supports_sse2()) {
    AudioBufferInPlaceScale_SSE(aBlock, aScale, aSize);
    return;
  }
#endif

  for (uint32_t i = 0; i < aSize; ++i) {
    *aBlock++ *= aScale;
  }
}
예제 #2
0
void
AudioBufferInPlaceScale(float* aBlock,
                        uint32_t aChannelCount,
                        float aScale,
                        uint32_t aSize)
{
    if (aScale == 1.0f) {
        return;
    }
#ifdef BUILD_ARM_NEON
    if (mozilla::supports_neon()) {
        AudioBufferInPlaceScale_NEON(aBlock, aChannelCount, aScale, aSize);
        return;
    }
#endif
    for (uint32_t i = 0; i < aSize * aChannelCount; ++i) {
        *aBlock++ *= aScale;
    }
}