Title: [102733] trunk/Source/WebCore
- Revision
- 102733
- Author
- [email protected]
- Date
- 2011-12-13 20:56:56 -0800 (Tue, 13 Dec 2011)
Log Message
Optimize to not use pow() in the inner loop in AudioParamTimeline
https://bugs.webkit.org/show_bug.cgi?id=73530
Patch by James Wei <[email protected]> on 2011-12-13
Reviewed by Kenneth Russell.
No new tests.
* webaudio/AudioParamTimeline.cpp:
(WebCore:AudioParamTimeline:valuesForTimeRangeImpl):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (102732 => 102733)
--- trunk/Source/WebCore/ChangeLog 2011-12-14 04:49:56 UTC (rev 102732)
+++ trunk/Source/WebCore/ChangeLog 2011-12-14 04:56:56 UTC (rev 102733)
@@ -1,3 +1,15 @@
+2011-12-13 James Wei <[email protected]>
+
+ Optimize to not use pow() in the inner loop in AudioParamTimeline
+ https://bugs.webkit.org/show_bug.cgi?id=73530
+
+ Reviewed by Kenneth Russell.
+
+ No new tests.
+
+ * webaudio/AudioParamTimeline.cpp:
+ (WebCore:AudioParamTimeline:valuesForTimeRangeImpl):
+
2011-12-13 Hajime Morrita <[email protected]>
Unreviewed Chromium-Mac build fix trial.
Modified: trunk/Source/WebCore/webaudio/AudioParamTimeline.cpp (102732 => 102733)
--- trunk/Source/WebCore/webaudio/AudioParamTimeline.cpp 2011-12-14 04:49:56 UTC (rev 102732)
+++ trunk/Source/WebCore/webaudio/AudioParamTimeline.cpp 2011-12-14 04:56:56 UTC (rev 102733)
@@ -245,16 +245,13 @@
for (; writeIndex < fillToFrame; ++writeIndex)
values[writeIndex] = value;
} else {
- // Interpolate in log space.
- value1 = log2f(value1);
- value2 = log2f(value2);
-
- // FIXME: optimize to not use pow() in inner loop, this is just a simple exponential ramp.
+ float numSampleFrames = deltaTime * sampleRate;
+ // The value goes exponentially from value1 to value2 in a duration of deltaTime seconds (corresponding to numSampleFrames).
+ // Compute the per-sample multiplier.
+ float multiplier = powf(value2 / value1, 1 / numSampleFrames);
for (; writeIndex < fillToFrame; ++writeIndex) {
- float x = (currentTime - time1) * k;
- value = (1 - x) * value1 + x * value2;
- value = powf(2.0f, value);
values[writeIndex] = value;
+ value *= multiplier;
currentTime += sampleFrameTimeIncr;
}
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes