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