Index: Source/core/platform/audio/SincResampler.cpp |
diff --git a/Source/core/platform/audio/SincResampler.cpp b/Source/core/platform/audio/SincResampler.cpp |
index 4faf98e111fa7501903ba1c5e3ca47fdd46c53c8..d429fbc978b55cd8f43e95279d310891a38611bd 100644 |
--- a/Source/core/platform/audio/SincResampler.cpp |
+++ b/Source/core/platform/audio/SincResampler.cpp |
@@ -45,15 +45,15 @@ using namespace std; |
// |
// |----------------|----------------------------------------------------------------|----------------| |
// |
-// blockSize + kernelSize / 2 |
+// blockSize + kernelSize / 2 |
// <--------------------------------------------------------------------------------> |
// r0 |
// |
-// kernelSize / 2 kernelSize / 2 kernelSize / 2 kernelSize / 2 |
+// kernelSize / 2 kernelSize / 2 kernelSize / 2 kernelSize / 2 |
// <---------------> <---------------> <---------------> <---------------> |
// r1 r2 r3 r4 |
-// |
-// blockSize |
+// |
+// blockSize |
// <--------------------------------------------------------------> |
// r5 |
@@ -132,13 +132,13 @@ void SincResampler::consumeSource(float* buffer, unsigned numberOfSourceFrames) |
ASSERT(m_sourceProvider); |
if (!m_sourceProvider) |
return; |
- |
+ |
// Wrap the provided buffer by an AudioBus for use by the source provider. |
RefPtr<AudioBus> bus = AudioBus::create(1, numberOfSourceFrames, false); |
// FIXME: Find a way to make the following const-correct: |
bus->setChannelMemory(0, buffer, numberOfSourceFrames); |
- |
+ |
m_sourceProvider->provideInput(bus.get(), numberOfSourceFrames); |
} |
@@ -153,14 +153,14 @@ public: |
, m_sourceFramesAvailable(numberOfSourceFrames) |
{ |
} |
- |
+ |
// Consumes samples from the in-memory buffer. |
virtual void provideInput(AudioBus* bus, size_t framesToProcess) |
{ |
ASSERT(m_source && bus); |
if (!m_source || !bus) |
return; |
- |
+ |
float* buffer = bus->channel(0)->mutableData(); |
// Clamp to number of frames available and zero-pad. |
@@ -174,7 +174,7 @@ public: |
m_sourceFramesAvailable -= framesToCopy; |
m_source += framesToCopy; |
} |
- |
+ |
private: |
const float* m_source; |
size_t m_sourceFramesAvailable; |
@@ -189,11 +189,11 @@ void SincResampler::process(const float* source, float* destination, unsigned nu |
unsigned numberOfDestinationFrames = static_cast<unsigned>(numberOfSourceFrames / m_scaleFactor); |
unsigned remaining = numberOfDestinationFrames; |
- |
+ |
while (remaining) { |
unsigned framesThisTime = min(remaining, m_blockSize); |
process(&sourceProvider, destination, framesThisTime); |
- |
+ |
destination += framesThisTime; |
remaining -= framesThisTime; |
} |
@@ -205,11 +205,11 @@ void SincResampler::process(AudioSourceProvider* sourceProvider, float* destinat |
ASSERT(isGood); |
if (!isGood) |
return; |
- |
+ |
m_sourceProvider = sourceProvider; |
unsigned numberOfDestinationFrames = framesToProcess; |
- |
+ |
// Setup various region pointers in the buffer (see diagram above). |
float* r0 = m_inputBuffer.data() + m_kernelSize / 2; |
float* r1 = m_inputBuffer.data(); |
@@ -224,7 +224,7 @@ void SincResampler::process(AudioSourceProvider* sourceProvider, float* destinat |
consumeSource(r0, m_blockSize + m_kernelSize / 2); |
m_isBufferPrimed = true; |
} |
- |
+ |
// Step (2) |
while (numberOfDestinationFrames) { |
@@ -235,7 +235,7 @@ void SincResampler::process(AudioSourceProvider* sourceProvider, float* destinat |
double virtualOffsetIndex = subsampleRemainder * m_numberOfKernelOffsets; |
int offsetIndex = static_cast<int>(virtualOffsetIndex); |
- |
+ |
float* k1 = m_kernelStorage.data() + offsetIndex * m_kernelSize; |
float* k2 = k1 + m_kernelSize; |
@@ -249,7 +249,7 @@ void SincResampler::process(AudioSourceProvider* sourceProvider, float* destinat |
// Figure out how much to weight each kernel's "convolution". |
double kernelInterpolationFactor = virtualOffsetIndex - offsetIndex; |
- // Generate a single output sample. |
+ // Generate a single output sample. |
int n = m_kernelSize; |
#define CONVOLVE_ONE_SAMPLE \ |
@@ -331,10 +331,10 @@ void SincResampler::process(AudioSourceProvider* sourceProvider, float* destinat |
} |
#else |
// FIXME: add ARM NEON optimizations for the following. The scalar code-path can probably also be optimized better. |
- |
+ |
// Optimize size 32 and size 64 kernels by unrolling the while loop. |
// A 20 - 30% speed improvement was measured in some cases by using this approach. |
- |
+ |
if (n == 32) { |
CONVOLVE_ONE_SAMPLE // 1 |
CONVOLVE_ONE_SAMPLE // 2 |