Title: [109665] trunk/Source/WebCore
Revision
109665
Author
[email protected]
Date
2012-03-03 14:30:23 -0800 (Sat, 03 Mar 2012)

Log Message

Simplified discreteTimeConstantForSampleRate
https://bugs.webkit.org/show_bug.cgi?id=78051

Remove hardcoded constant and simplify computation of discrete
time constant.

Patch by Raymond Toy <[email protected]> on 2012-03-03
Reviewed by Chris Rogers.

No new tests needed.  Covered by existing AudioParam tests.

* platform/audio/AudioUtilities.cpp:
(WebCore::AudioUtilities::discreteTimeConstantForSampleRate):
Simplify formula.
* platform/audio/AudioUtilities.h:
(AudioUtilities): Update function signature.
* platform/audio/DynamicsCompressorKernel.cpp:
(WebCore::DynamicsCompressorKernel::DynamicsCompressorKernel):
cast to float to avoid warnings.
* webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::valuesForTimeRangeImpl): cast to
float to avoid warnings.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (109664 => 109665)


--- trunk/Source/WebCore/ChangeLog	2012-03-03 19:26:39 UTC (rev 109664)
+++ trunk/Source/WebCore/ChangeLog	2012-03-03 22:30:23 UTC (rev 109665)
@@ -1,3 +1,27 @@
+2012-03-03  Raymond Toy  <[email protected]>
+
+        Simplified discreteTimeConstantForSampleRate
+        https://bugs.webkit.org/show_bug.cgi?id=78051
+
+        Remove hardcoded constant and simplify computation of discrete
+        time constant.
+        
+        Reviewed by Chris Rogers.
+
+        No new tests needed.  Covered by existing AudioParam tests.
+
+        * platform/audio/AudioUtilities.cpp:
+        (WebCore::AudioUtilities::discreteTimeConstantForSampleRate):
+        Simplify formula.
+        * platform/audio/AudioUtilities.h:
+        (AudioUtilities): Update function signature.
+        * platform/audio/DynamicsCompressorKernel.cpp:
+        (WebCore::DynamicsCompressorKernel::DynamicsCompressorKernel):
+        cast to float to avoid warnings.
+        * webaudio/AudioParamTimeline.cpp:
+        (WebCore::AudioParamTimeline::valuesForTimeRangeImpl): cast to
+        float to avoid warnings.
+
 2012-03-03  Anders Carlsson  <[email protected]>
 
         Fix build with newer versions of clang.

Modified: trunk/Source/WebCore/platform/audio/AudioUtilities.cpp (109664 => 109665)


--- trunk/Source/WebCore/platform/audio/AudioUtilities.cpp	2012-03-03 19:26:39 UTC (rev 109664)
+++ trunk/Source/WebCore/platform/audio/AudioUtilities.cpp	2012-03-03 22:30:23 UTC (rev 109665)
@@ -49,11 +49,9 @@
     return 20 * log10f(linear);
 }
 
-float discreteTimeConstantForSampleRate(float timeConstant, float sampleRate)
+double discreteTimeConstantForSampleRate(double timeConstant, double sampleRate)
 {
-    // hardcoded value is temporary build fix for Windows.
-    // FIXME: replace hardcode 2.718282 with M_E until the correct MathExtras.h solution is determined.
-    return 1 - powf(1 / 2.718282f, 1 / (sampleRate * timeConstant));
+    return 1 - exp(-1 / (sampleRate * timeConstant));
 }
 
 size_t timeToSampleFrame(double time, double sampleRate)

Modified: trunk/Source/WebCore/platform/audio/AudioUtilities.h (109664 => 109665)


--- trunk/Source/WebCore/platform/audio/AudioUtilities.h	2012-03-03 19:26:39 UTC (rev 109664)
+++ trunk/Source/WebCore/platform/audio/AudioUtilities.h	2012-03-03 22:30:23 UTC (rev 109665)
@@ -36,7 +36,7 @@
 // timeConstant is the time it takes a first-order linear time-invariant system
 // to reach the value 1 - 1/e (around 63.2%) given a step input response.
 // discreteTimeConstantForSampleRate() will return the discrete time-constant for the specific sampleRate.
-float discreteTimeConstantForSampleRate(float timeConstant, float sampleRate);
+double discreteTimeConstantForSampleRate(double timeConstant, double sampleRate);
 
 // Convert the time to a sample frame at the given sample rate.
 size_t timeToSampleFrame(double time, double sampleRate);

Modified: trunk/Source/WebCore/platform/audio/DynamicsCompressorKernel.cpp (109664 => 109665)


--- trunk/Source/WebCore/platform/audio/DynamicsCompressorKernel.cpp	2012-03-03 19:26:39 UTC (rev 109664)
+++ trunk/Source/WebCore/platform/audio/DynamicsCompressorKernel.cpp	2012-03-03 22:30:23 UTC (rev 109665)
@@ -68,7 +68,7 @@
     // Initializes most member variables
     reset();
 
-    m_meteringReleaseK = discreteTimeConstantForSampleRate(meteringReleaseTimeConstant, sampleRate);
+    m_meteringReleaseK = static_cast<float>(discreteTimeConstantForSampleRate(meteringReleaseTimeConstant, sampleRate));
 }
 
 void DynamicsCompressorKernel::setNumberOfChannels(unsigned numberOfChannels)

Modified: trunk/Source/WebCore/webaudio/AudioParamTimeline.cpp (109664 => 109665)


--- trunk/Source/WebCore/webaudio/AudioParamTimeline.cpp	2012-03-03 19:26:39 UTC (rev 109664)
+++ trunk/Source/WebCore/webaudio/AudioParamTimeline.cpp	2012-03-03 22:30:23 UTC (rev 109665)
@@ -279,7 +279,7 @@
                     // Exponential approach to target value with given time constant.
                     float targetValue = event.value();
                     float timeConstant = event.timeConstant();
-                    float discreteTimeConstant = AudioUtilities::discreteTimeConstantForSampleRate(timeConstant, controlRate);
+                    float discreteTimeConstant = static_cast<float>(AudioUtilities::discreteTimeConstantForSampleRate(timeConstant, controlRate));
 
                     for (; writeIndex < fillToFrame; ++writeIndex) {
                         values[writeIndex] = value;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to