| Index: third_party/WebKit/Source/platform/audio/DynamicsCompressorKernel.cpp
|
| diff --git a/third_party/WebKit/Source/platform/audio/DynamicsCompressorKernel.cpp b/third_party/WebKit/Source/platform/audio/DynamicsCompressorKernel.cpp
|
| index 6adb6c6b1149bc4b7806a8bea340e8ea91a61640..e44afaefbf369e5c0adfa7907101ba1336627c18 100644
|
| --- a/third_party/WebKit/Source/platform/audio/DynamicsCompressorKernel.cpp
|
| +++ b/third_party/WebKit/Source/platform/audio/DynamicsCompressorKernel.cpp
|
| @@ -94,7 +94,8 @@ void DynamicsCompressorKernel::setPreDelayTime(float preDelayTime) {
|
| }
|
|
|
| // Exponential curve for the knee.
|
| -// It is 1st derivative matched at m_linearThreshold and asymptotically approaches the value m_linearThreshold + 1 / k.
|
| +// It is 1st derivative matched at m_linearThreshold and asymptotically
|
| +// approaches the value m_linearThreshold + 1 / k.
|
| float DynamicsCompressorKernel::kneeCurve(float x, float k) {
|
| // Linear up to threshold.
|
| if (x < m_linearThreshold)
|
| @@ -150,7 +151,8 @@ float DynamicsCompressorKernel::kAtSlope(float desiredSlope) {
|
| float k = 5;
|
|
|
| for (int i = 0; i < 15; ++i) {
|
| - // A high value for k will more quickly asymptotically approach a slope of 0.
|
| + // A high value for k will more quickly asymptotically approach a slope of
|
| + // 0.
|
| float slope = slopeAt(x, k);
|
|
|
| if (slope < desiredSlope) {
|
| @@ -251,8 +253,9 @@ void DynamicsCompressorKernel::process(
|
| float y3 = releaseFrames * releaseZone3;
|
| float y4 = releaseFrames * releaseZone4;
|
|
|
| - // All of these coefficients were derived for 4th order polynomial curve fitting where the y values
|
| - // match the evenly spaced x values as follows: (y1 : x == 0, y2 : x == 1, y3 : x == 2, y4 : x == 3)
|
| + // All of these coefficients were derived for 4th order polynomial curve
|
| + // fitting where the y values match the evenly spaced x values as follows:
|
| + // (y1 : x == 0, y2 : x == 1, y3 : x == 2, y4 : x == 3)
|
| float a = 0.9999999999999998f * y1 + 1.8432219684323923e-16f * y2 -
|
| 1.9373394351676423e-16f * y3 + 8.824516011816245e-18f * y4;
|
| float b = -1.5788320352845888f * y1 + 2.3305837032074286f * y2 -
|
| @@ -267,7 +270,8 @@ void DynamicsCompressorKernel::process(
|
| // x ranges from 0 -> 3 0 1 2 3
|
| // -15 -10 -5 0db
|
|
|
| - // y calculates adaptive release frames depending on the amount of compression.
|
| + // y calculates adaptive release frames depending on the amount of
|
| + // compression.
|
|
|
| setPreDelayTime(preDelayTime);
|
|
|
| @@ -296,13 +300,15 @@ void DynamicsCompressorKernel::process(
|
| // Deal with envelopes
|
| // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
| - // envelopeRate is the rate we slew from current compressor level to the desired level.
|
| - // The exact rate depends on if we're attacking or releasing and by how much.
|
| + // envelopeRate is the rate we slew from current compressor level to the
|
| + // desired level. The exact rate depends on if we're attacking or
|
| + // releasing and by how much.
|
| float envelopeRate;
|
|
|
| bool isReleasing = scaledDesiredGain > m_compressorGain;
|
|
|
| - // compressionDiffDb is the difference between current compression level and the desired level.
|
| + // compressionDiffDb is the difference between current compression level and
|
| + // the desired level.
|
| float compressionDiffDb =
|
| linearToDecibels(m_compressorGain / scaledDesiredGain);
|
|
|
| @@ -316,7 +322,8 @@ void DynamicsCompressorKernel::process(
|
| if (std::isinf(compressionDiffDb))
|
| compressionDiffDb = -1;
|
|
|
| - // Adaptive release - higher compression (lower compressionDiffDb) releases faster.
|
| + // Adaptive release - higher compression (lower compressionDiffDb)
|
| + // releases faster.
|
|
|
| // Contain within range: -12 -> 0 then scale to go from 0 -> 3
|
| float x = compressionDiffDb;
|
| @@ -324,7 +331,8 @@ void DynamicsCompressorKernel::process(
|
| x = 0.25f * (x + 12);
|
|
|
| // Compute adaptive release curve using 4th order polynomial.
|
| - // Normal values for the polynomial coefficients would create a monotonically increasing function.
|
| + // Normal values for the polynomial coefficients would create a
|
| + // monotonically increasing function.
|
| float x2 = x * x;
|
| float x3 = x2 * x;
|
| float x4 = x2 * x2;
|
| @@ -369,7 +377,8 @@ void DynamicsCompressorKernel::process(
|
| while (loopFrames--) {
|
| float compressorInput = 0;
|
|
|
| - // Predelay signal, computing compression amount from un-delayed version.
|
| + // Predelay signal, computing compression amount from un-delayed
|
| + // version.
|
| for (unsigned i = 0; i < numberOfChannels; ++i) {
|
| float* delayBuffer = m_preDelayBuffers[i]->data();
|
| float undelayedSource = sourceChannels[i][frameIndex];
|
| @@ -387,9 +396,10 @@ void DynamicsCompressorKernel::process(
|
| float absInput = scaledInput > 0 ? scaledInput : -scaledInput;
|
|
|
| // Put through shaping curve.
|
| - // This is linear up to the threshold, then enters a "knee" portion followed by the "ratio" portion.
|
| - // The transition from the threshold to the knee is smooth (1st derivative matched).
|
| - // The transition from the knee to the ratio portion is smooth (1st derivative matched).
|
| + // This is linear up to the threshold, then enters a "knee" portion
|
| + // followed by the "ratio" portion. The transition from the threshold
|
| + // to the knee is smooth (1st derivative matched). The transition from
|
| + // the knee to the ratio portion is smooth (1st derivative matched).
|
| float shapedInput = saturate(absInput, k);
|
|
|
| float attenuation = absInput <= 0.0001f ? 1 : shapedInput / absInput;
|
| @@ -423,7 +433,8 @@ void DynamicsCompressorKernel::process(
|
| compressorGain = std::min(1.0f, compressorGain);
|
| }
|
|
|
| - // Warp pre-compression gain to smooth out sharp exponential transition points.
|
| + // Warp pre-compression gain to smooth out sharp exponential transition
|
| + // points.
|
| float postWarpCompressorGain = sinf(piOverTwoFloat * compressorGain);
|
|
|
| // Calculate total gain using master gain and effect blend.
|
|
|