Title: [267357] trunk
Revision
267357
Author
[email protected]
Date
2020-09-21 12:51:02 -0700 (Mon, 21 Sep 2020)

Log Message

Vectorize linearRampToValueAtTime processing in AudioParamTimeline
https://bugs.webkit.org/show_bug.cgi?id=216788

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

* web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime-expected.txt:
* web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-expected.txt:
* web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime-expected.txt:
* web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation-expected.txt:
* web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt:

Source/WebCore:

Vectorize linearRampToValueAtTime processing in AudioParamTimeline. This patch is based on
the Blink implementation at [1] but updated to use VectorMath to work on more platforms.

We were failing some tests due to precision issues in our linearRampToValueAtTime implementation.
Those tests are now passing since our implementation matches Blink's more closely.

[1] https://github.com/chromium/chromium/blob/master/third_party/blink/renderer/modules/webaudio/audio_param_timeline.cc

No new tests, rebaselined existing tests.

* Modules/webaudio/AudioParamTimeline.cpp:
(WebCore::AudioParamTimeline::valuesForTimeRangeImpl):
(WebCore::AudioParamTimeline::processLinearRamp):
* Modules/webaudio/AudioParamTimeline.h:

LayoutTests:

* webaudio/AudioParam/audioparam-cancel-and-hold-expected.txt:
* webaudio/AudioParam/audioparam-negative-exponentialRamp-expected.txt:
* webaudio/AudioParam/audioparam-setTargetAtTime-continuous-expected.txt:
Rebaseline existing tests now that more checks are passing.

* webaudio/audioparam-linearRampToValueAtTime-expected.txt: Removed.
* webaudio/audioparam-linearRampToValueAtTime.html: Removed.
Drop outdated test. This test was imported into WPT and now resides at:
- imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime.html

Modified Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (267356 => 267357)


--- trunk/LayoutTests/ChangeLog	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/ChangeLog	2020-09-21 19:51:02 UTC (rev 267357)
@@ -1,5 +1,22 @@
 2020-09-21  Chris Dumez  <[email protected]>
 
+        Vectorize linearRampToValueAtTime processing in AudioParamTimeline
+        https://bugs.webkit.org/show_bug.cgi?id=216788
+
+        Reviewed by Darin Adler.
+
+        * webaudio/AudioParam/audioparam-cancel-and-hold-expected.txt:
+        * webaudio/AudioParam/audioparam-negative-exponentialRamp-expected.txt:
+        * webaudio/AudioParam/audioparam-setTargetAtTime-continuous-expected.txt:
+        Rebaseline existing tests now that more checks are passing.
+
+        * webaudio/audioparam-linearRampToValueAtTime-expected.txt: Removed.
+        * webaudio/audioparam-linearRampToValueAtTime.html: Removed.
+        Drop outdated test. This test was imported into WPT and now resides at:
+        - imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime.html
+
+2020-09-21  Chris Dumez  <[email protected]>
+
         AnalyserNode's getByteFrequencyData() / getFloatFrequencyData() should only do FFT analysis once per render quantum
         https://bugs.webkit.org/show_bug.cgi?id=216735
 

Modified: trunk/LayoutTests/TestExpectations (267356 => 267357)


--- trunk/LayoutTests/TestExpectations	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/TestExpectations	2020-09-21 19:51:02 UTC (rev 267357)
@@ -324,7 +324,6 @@
 webaudio/MediaStreamAudioSource/mediastreamaudiosourcenode.html [ Skip ]
 
 # Webaudio tests that are flaky.
-imported/w3c/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv.html [ Pass Failure ]
 imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-stereo-panner.html [ Pass Failure ]
 
 # Values in FAIL lines differ from machine to machine, we should be able to unskip them once they pass.

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (267356 => 267357)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2020-09-21 19:51:02 UTC (rev 267357)
@@ -1,3 +1,18 @@
+2020-09-21  Chris Dumez  <[email protected]>
+
+        Vectorize linearRampToValueAtTime processing in AudioParamTimeline
+        https://bugs.webkit.org/show_bug.cgi?id=216788
+
+        Reviewed by Darin Adler.
+
+        Rebaseline WPT tests now that more checks are passing.
+
+        * web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime-expected.txt:
+        * web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-expected.txt:
+        * web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime-expected.txt:
+        * web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation-expected.txt:
+        * web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt:
+
 2020-09-21  Sam Sneddon  <[email protected]>
 
         Increase the maximum number of open files for wpt's servers

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime-expected.txt (267356 => 267357)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime-expected.txt	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-linearRampToValueAtTime-expected.txt	2020-09-21 19:51:02 UTC (rev 267357)
@@ -4,106 +4,106 @@
 PASS Audit report 
 PASS > [test] AudioParam linearRampToValueAtTime() functionality 
 PASS   Number of tests started and ended at the correct time is equal to 100. 
-PASS   Max error for test 0 at offset 1254 is less than or equal to 0.000001865. 
-PASS   Max error for test 1 at offset 2561 is less than or equal to 0.000001865. 
-PASS   Max error for test 2 at offset 2731 is less than or equal to 0.000001865. 
-PASS   Max error for test 3 at offset 3980 is less than or equal to 0.000001865. 
-PASS   Max error for test 4 at offset 6599 is less than or equal to 0.000001865. 
-PASS   Max error for test 5 at offset 6700 is less than or equal to 0.000001865. 
-PASS   Max error for test 6 at offset 9245 is less than or equal to 0.000001865. 
-PASS   Max error for test 7 at offset 10568 is less than or equal to 0.000001865. 
-PASS   Max error for test 8 at offset 10669 is less than or equal to 0.000001865. 
-PASS   Max error for test 9 at offset 13219 is less than or equal to 0.000001865. 
-PASS   Max error for test 10 at offset 14468 is less than or equal to 0.000001865. 
-PASS   Max error for test 11 at offset 14638 is less than or equal to 0.000001865. 
-PASS   Max error for test 12 at offset 17114 is less than or equal to 0.000001865. 
-PASS   Max error for test 13 at offset 18437 is less than or equal to 0.000001865. 
-PASS   Max error for test 14 at offset 18607 is less than or equal to 0.000001865. 
-PASS   Max error for test 15 at offset 21083 is less than or equal to 0.000001865. 
-PASS   Max error for test 16 at offset 22480 is less than or equal to 0.000001865. 
-PASS   Max error for test 17 at offset 22576 is less than or equal to 0.000001865. 
-PASS   Max error for test 18 at offset 25121 is less than or equal to 0.000001865. 
-PASS   Max error for test 19 at offset 26444 is less than or equal to 0.000001865. 
-PASS   Max error for test 20 at offset 26545 is less than or equal to 0.000001865. 
-PASS   Max error for test 21 at offset 29090 is less than or equal to 0.000001865. 
-PASS   Max error for test 22 at offset 29117 is less than or equal to 0.000001865. 
-PASS   Max error for test 23 at offset 30514 is less than or equal to 0.000001865. 
-PASS   Max error for test 24 at offset 32990 is less than or equal to 0.000001865. 
-PASS   Max error for test 25 at offset 34313 is less than or equal to 0.000001865. 
-PASS   Max error for test 26 at offset 34483 is less than or equal to 0.000001865. 
-PASS   Max error for test 27 at offset 36959 is less than or equal to 0.000001865. 
-PASS   Max error for test 28 at offset 37129 is less than or equal to 0.000001865. 
-PASS   Max error for test 29 at offset 38452 is less than or equal to 0.000001865. 
-PASS   Max error for test 30 at offset 40997 is less than or equal to 0.000001865. 
-PASS   Max error for test 31 at offset 42320 is less than or equal to 0.000001865. 
-PASS   Max error for test 32 at offset 42421 is less than or equal to 0.000001865. 
-PASS   Max error for test 33 at offset 44966 is less than or equal to 0.000001865. 
-PASS   Max error for test 34 at offset 45067 is less than or equal to 0.000001865. 
-PASS   Max error for test 35 at offset 46390 is less than or equal to 0.000001865. 
-PASS   Max error for test 36 at offset 48866 is less than or equal to 0.000001865. 
-PASS   Max error for test 37 at offset 49036 is less than or equal to 0.000001865. 
-PASS   Max error for test 38 at offset 50359 is less than or equal to 0.000001865. 
-PASS   Max error for test 39 at offset 52835 is less than or equal to 0.000001865. 
-PASS   Max error for test 40 at offset 53005 is less than or equal to 0.000001865. 
-PASS   Max error for test 41 at offset 54328 is less than or equal to 0.000001865. 
-PASS   Max error for test 42 at offset 56873 is less than or equal to 0.000001865. 
-PASS   Max error for test 43 at offset 56974 is less than or equal to 0.000001865. 
-PASS   Max error for test 44 at offset 59519 is less than or equal to 0.000001865. 
-PASS   Max error for test 45 at offset 60842 is less than or equal to 0.000001865. 
-PASS   Max error for test 46 at offset 60943 is less than or equal to 0.000001865. 
-PASS   Max error for test 47 at offset 62266 is less than or equal to 0.000001865. 
-PASS   Max error for test 48 at offset 64742 is less than or equal to 0.000001865. 
-PASS   Max error for test 49 at offset 64912 is less than or equal to 0.000001865. 
-PASS   Max error for test 50 at offset 67388 is less than or equal to 0.000001865. 
-PASS   Max error for test 51 at offset 68703 is less than or equal to 0.000001865. 
-PASS   Max error for test 52 at offset 70111 is less than or equal to 0.000001865. 
-PASS   Max error for test 53 at offset 71434 is less than or equal to 0.000001865. 
-PASS   Max error for test 54 at offset 71519 is less than or equal to 0.000001865. 
-PASS   Max error for test 55 at offset 72842 is less than or equal to 0.000001865. 
-PASS   Max error for test 56 at offset 75318 is less than or equal to 0.000001865. 
-PASS   Max error for test 57 at offset 76641 is less than or equal to 0.000001865. 
-PASS   Max error for test 58 at offset 78049 is less than or equal to 0.000001865. 
-PASS   Max error for test 59 at offset 78134 is less than or equal to 0.000001865. 
-PASS   Max error for test 60 at offset 79457 is less than or equal to 0.000001865. 
-PASS   Max error for test 61 at offset 80780 is less than or equal to 0.000001865. 
-PASS   Max error for test 62 at offset 83256 is less than or equal to 0.000001865. 
-PASS   Max error for test 63 at offset 84579 is less than or equal to 0.000001865. 
-PASS   Max error for test 64 at offset 84749 is less than or equal to 0.000001865. 
-PASS   Max error for test 65 at offset 86072 is less than or equal to 0.000001865. 
-PASS   Max error for test 66 at offset 87395 is less than or equal to 0.000001865. 
-PASS   Max error for test 67 at offset 89956 is less than or equal to 0.000001865. 
-PASS   Max error for test 68 at offset 91194 is less than or equal to 0.000001865. 
-PASS   Max error for test 69 at offset 92517 is less than or equal to 0.000001865. 
-PASS   Max error for test 70 at offset 92687 is less than or equal to 0.000001865. 
-PASS   Max error for test 71 at offset 94010 is less than or equal to 0.000001865. 
-PASS   Max error for test 72 at offset 96571 is less than or equal to 0.000001865. 
-PASS   Max error for test 73 at offset 97894 is less than or equal to 0.000001865. 
-PASS   Max error for test 74 at offset 99132 is less than or equal to 0.000001865. 
-PASS   Max error for test 75 at offset 100536 is less than or equal to 0.000001865. 
-PASS   Max error for test 76 at offset 100552 is less than or equal to 0.000001865. 
-PASS   Max error for test 77 at offset 103190 is less than or equal to 0.000001865. 
-PASS   Max error for test 78 at offset 104505 is less than or equal to 0.000001865. 
-PASS   Max error for test 79 at offset 104598 is less than or equal to 0.000001865. 
-PASS   Max error for test 80 at offset 105921 is less than or equal to 0.000001865. 
-PASS   Max error for test 81 at offset 108474 is less than or equal to 0.000001865. 
-PASS   Max error for test 82 at offset 108567 is less than or equal to 0.000001865. 
-PASS   Max error for test 83 at offset 111128 is less than or equal to 0.000001865. 
-PASS   Max error for test 84 at offset 112443 is less than or equal to 0.000001865. 
-PASS   Max error for test 85 at offset 112459 is less than or equal to 0.000001865. 
-PASS   Max error for test 86 at offset 115097 is less than or equal to 0.000001865. 
-PASS   Max error for test 87 at offset 115182 is less than or equal to 0.000001865. 
+PASS   Max error for test 0 at offset 1277 is less than or equal to 0.000001865. 
+PASS   Max error for test 1 at offset 1532 is less than or equal to 0.000001865. 
+PASS   Max error for test 2 at offset 3838 is less than or equal to 0.000001865. 
+PASS   Max error for test 3 at offset 5246 is less than or equal to 0.000001865. 
+PASS   Max error for test 4 at offset 5501 is less than or equal to 0.000001865. 
+PASS   Max error for test 5 at offset 7164 is less than or equal to 0.000001865. 
+PASS   Max error for test 6 at offset 8317 is less than or equal to 0.000001865. 
+PASS   Max error for test 7 at offset 9470 is less than or equal to 0.000001865. 
+PASS   Max error for test 8 at offset 11133 is less than or equal to 0.000001865. 
+PASS   Max error for test 9 at offset 13181 is less than or equal to 0.000001865. 
+PASS   Max error for test 10 at offset 13439 is less than or equal to 0.000001865. 
+PASS   Max error for test 11 at offset 15102 is less than or equal to 0.000001865. 
+PASS   Max error for test 12 at offset 16255 is less than or equal to 0.000001865. 
+PASS   Max error for test 13 at offset 17918 is less than or equal to 0.000001865. 
+PASS   Max error for test 14 at offset 19071 is less than or equal to 0.000001865. 
+PASS   Max error for test 15 at offset 20734 is less than or equal to 0.000001865. 
+PASS   Max error for test 16 at offset 22398 is less than or equal to 0.000001865. 
+PASS   Max error for test 17 at offset 23550 is less than or equal to 0.000001865. 
+PASS   Max error for test 18 at offset 24060 is less than or equal to 0.000001865. 
+PASS   Max error for test 19 at offset 26366 is less than or equal to 0.000001865. 
+PASS   Max error for test 20 at offset 26876 is less than or equal to 0.000001865. 
+PASS   Max error for test 21 at offset 28029 is less than or equal to 0.000001865. 
+PASS   Max error for test 22 at offset 30333 is less than or equal to 0.000001865. 
+PASS   Max error for test 23 at offset 30845 is less than or equal to 0.000001865. 
+PASS   Max error for test 24 at offset 31998 is less than or equal to 0.000001865. 
+PASS   Max error for test 25 at offset 33661 is less than or equal to 0.000001865. 
+PASS   Max error for test 26 at offset 34814 is less than or equal to 0.000001865. 
+PASS   Max error for test 27 at offset 35967 is less than or equal to 0.000001865. 
+PASS   Max error for test 28 at offset 37630 is less than or equal to 0.000001865. 
+PASS   Max error for test 29 at offset 38783 is less than or equal to 0.000001865. 
+PASS   Max error for test 30 at offset 40446 is less than or equal to 0.000001865. 
+PASS   Max error for test 31 at offset 41599 is less than or equal to 0.000001865. 
+PASS   Max error for test 32 at offset 43262 is less than or equal to 0.000001865. 
+PASS   Max error for test 33 at offset 44415 is less than or equal to 0.000001865. 
+PASS   Max error for test 34 at offset 46078 is less than or equal to 0.000001865. 
+PASS   Max error for test 35 at offset 47231 is less than or equal to 0.000001865. 
+PASS   Max error for test 36 at offset 48894 is less than or equal to 0.000001865. 
+PASS   Max error for test 37 at offset 50047 is less than or equal to 0.000001865. 
+PASS   Max error for test 38 at offset 50557 is less than or equal to 0.000001865. 
+PASS   Max error for test 39 at offset 52863 is less than or equal to 0.000001865. 
+PASS   Max error for test 40 at offset 53373 is less than or equal to 0.000001865. 
+PASS   Max error for test 41 at offset 55164 is less than or equal to 0.000001865. 
+PASS   Max error for test 42 at offset 56189 is less than or equal to 0.000001865. 
+PASS   Max error for test 43 at offset 57852 is less than or equal to 0.000001865. 
+PASS   Max error for test 44 at offset 58495 is less than or equal to 0.000001865. 
+PASS   Max error for test 45 at offset 60796 is less than or equal to 0.000001865. 
+PASS   Max error for test 46 at offset 61311 is less than or equal to 0.000001865. 
+PASS   Max error for test 47 at offset 63484 is less than or equal to 0.000001865. 
+PASS   Max error for test 48 at offset 64255 is less than or equal to 0.000001865. 
+PASS   Max error for test 49 at offset 65918 is less than or equal to 0.000001865. 
+PASS   Max error for test 50 at offset 66428 is less than or equal to 0.000001865. 
+PASS   Max error for test 51 at offset 68604 is less than or equal to 0.000001865. 
+PASS   Max error for test 52 at offset 68988 is less than or equal to 0.000001865. 
+PASS   Max error for test 53 at offset 71420 is less than or equal to 0.000001865. 
+PASS   Max error for test 54 at offset 72573 is less than or equal to 0.000001865. 
+PASS   Max error for test 55 at offset 73981 is less than or equal to 0.000001865. 
+PASS   Max error for test 56 at offset 75389 is less than or equal to 0.000001865. 
+PASS   Max error for test 57 at offset 76542 is less than or equal to 0.000001865. 
+PASS   Max error for test 58 at offset 76925 is less than or equal to 0.000001865. 
+PASS   Max error for test 59 at offset 79358 is less than or equal to 0.000001865. 
+PASS   Max error for test 60 at offset 80511 is less than or equal to 0.000001865. 
+PASS   Max error for test 61 at offset 81919 is less than or equal to 0.000001865. 
+PASS   Max error for test 62 at offset 83327 is less than or equal to 0.000001865. 
+PASS   Max error for test 63 at offset 84092 is less than or equal to 0.000001865. 
+PASS   Max error for test 64 at offset 85245 is less than or equal to 0.000001865. 
+PASS   Max error for test 65 at offset 86653 is less than or equal to 0.000001865. 
+PASS   Max error for test 66 at offset 87806 is less than or equal to 0.000001865. 
+PASS   Max error for test 67 at offset 88828 is less than or equal to 0.000001865. 
+PASS   Max error for test 68 at offset 90367 is less than or equal to 0.000001865. 
+PASS   Max error for test 69 at offset 92413 is less than or equal to 0.000001865. 
+PASS   Max error for test 70 at offset 93183 is less than or equal to 0.000001865. 
+PASS   Max error for test 71 at offset 95229 is less than or equal to 0.000001865. 
+PASS   Max error for test 72 at offset 95484 is less than or equal to 0.000001865. 
+PASS   Max error for test 73 at offset 96765 is less than or equal to 0.000001865. 
+PASS   Max error for test 74 at offset 98300 is less than or equal to 0.000001865. 
+PASS   Max error for test 75 at offset 100477 is less than or equal to 0.000001865. 
+PASS   Max error for test 76 at offset 100732 is less than or equal to 0.000001865. 
+PASS   Max error for test 77 at offset 102015 is less than or equal to 0.000001865. 
+PASS   Max error for test 78 at offset 103933 is less than or equal to 0.000001865. 
+PASS   Max error for test 79 at offset 105724 is less than or equal to 0.000001865. 
+PASS   Max error for test 80 at offset 106239 is less than or equal to 0.000001865. 
+PASS   Max error for test 81 at offset 108415 is less than or equal to 0.000001865. 
+PASS   Max error for test 82 at offset 109055 is less than or equal to 0.000001865. 
+PASS   Max error for test 83 at offset 111101 is less than or equal to 0.000001865. 
+PASS   Max error for test 84 at offset 111356 is less than or equal to 0.000001865. 
+PASS   Max error for test 85 at offset 112764 is less than or equal to 0.000001865. 
+PASS   Max error for test 86 at offset 114047 is less than or equal to 0.000001865. 
+PASS   Max error for test 87 at offset 116220 is less than or equal to 0.000001865. 
 PASS   Max error for test 88 at offset 116426 is less than or equal to 0.000001865. 
-PASS   Max error for test 89 at offset 119064 is less than or equal to 0.000001865. 
-PASS   Max error for test 90 at offset 120375 is less than or equal to 0.000001865. 
+PASS   Max error for test 89 at offset 119039 is less than or equal to 0.000001865. 
+PASS   Max error for test 90 at offset 120322 is less than or equal to 0.000001865. 
 PASS   Max error for test 91 at offset 120395 is less than or equal to 0.000001865. 
-PASS   Max error for test 92 at offset 121718 is less than or equal to 0.000001865. 
-PASS   Max error for test 93 at offset 124360 is less than or equal to 0.000001865. 
-PASS   Max error for test 94 at offset 125663 is less than or equal to 0.000001865. 
-PASS   Max error for test 95 at offset 126993 is less than or equal to 0.000001865. 
-PASS   Max error for test 96 at offset 128330 is less than or equal to 0.000001865. 
-PASS   Max error for test 97 at offset 129581 is less than or equal to 0.000001865. 
-PASS   Max error for test 98 at offset 129709 is less than or equal to 0.000001865. 
-PASS   Max error for test 99 at offset 131537 is less than or equal to 0.000001865. 
+PASS   Max error for test 92 at offset 123004 is less than or equal to 0.000001865. 
+PASS   Max error for test 93 at offset 124287 is less than or equal to 0.000001865. 
+PASS   Max error for test 94 at offset 125570 is less than or equal to 0.000001865. 
+PASS   Max error for test 95 at offset 126593 is less than or equal to 0.000001865. 
+PASS   Max error for test 96 at offset 128255 is less than or equal to 0.000001865. 
+PASS   Max error for test 97 at offset 128895 is less than or equal to 0.000001865. 
+PASS   Max error for test 98 at offset 130815 is less than or equal to 0.000001865. 
+PASS   Max error for test 99 at offset 132223 is less than or equal to 0.000001865. 
 PASS   Number of failed tests with an acceptable relative tolerance of 0.000001865 is equal to 0. 
 PASS < [test] All assertions passed. (total 102 assertions) 
 PASS # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-expected.txt (267356 => 267357)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-expected.txt	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-panner-expected.txt	2020-09-21 19:51:02 UTC (rev 267357)
@@ -23,7 +23,7 @@
 PASS   k-rate positionX: a-rate node:positionX.linearRampToValueAtTime(1000,0.08) did not throw an exception. 
 PASS   k-rate positionX: Output of k-rate PannerNode is identical to the array [expected array]. 
 PASS   k-rate positionX: Output of a-rate PannerNode is identical to the array [expected array]. 
-PASS   k-rate positionX: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 635 different values). 
+PASS   k-rate positionX: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 638 different values). 
 PASS   k-rate positionX k-rate output [0: 127] contains only the constant 0.00005495094956131652. 
 PASS   k-rate positionX k-rate output [128: 255] contains only the constant 0.001247443608008325. 
 PASS   k-rate positionX k-rate output [256: 383] contains only the constant 0.0006243652314879. 
@@ -38,7 +38,7 @@
 PASS   k-rate positionY: a-rate node:positionY.linearRampToValueAtTime(1000,0.08) did not throw an exception. 
 PASS   k-rate positionY: Output of k-rate PannerNode is identical to the array [expected array]. 
 PASS   k-rate positionY: Output of a-rate PannerNode is identical to the array [expected array]. 
-PASS   k-rate positionY: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 636 different values). 
+PASS   k-rate positionY: Difference between a-rate and k-rate PannerNode is not constantly 0 (contains 638 different values). 
 PASS   k-rate positionY k-rate output [0: 127] contains only the constant 0.15397992730140686. 
 PASS   k-rate positionY k-rate output [128: 255] contains only the constant 0.0008113961666822433. 
 PASS   k-rate positionY k-rate output [256: 383] contains only the constant 0.0004070003633387387. 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime-expected.txt (267356 => 267357)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime-expected.txt	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime-expected.txt	2020-09-21 19:51:02 UTC (rev 267357)
@@ -5,7 +5,7 @@
 PASS > [test] Test setValueAtTime with startTime in the past 
 PASS   Test[0:127] contains only the constant 1. 
 PASS   Reference[0:127] contains only the constant 1. 
-PASS   Test[128:] is identical to the array [expected array]. 
+PASS   Test[128:] is identical to the array [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15...]. 
 PASS < [test] All assertions passed. (total 3 assertions) 
 PASS # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation-expected.txt (267356 => 267357)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation-expected.txt	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation-expected.txt	2020-09-21 19:51:02 UTC (rev 267357)
@@ -11,13 +11,8 @@
 PASS   Output of bandpass filter with frequency automation equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0.0000046455,"relativeThreshold":0}. 
 PASS < [automate-freq] All assertions passed. (total 1 assertions) 
 PASS > [automate-q]  
-FAIL X Output of bandpass filter with Q automation does not equal [0,0.013114781118929386,0.047823384404182434,0.09765293449163437,0.15657125413417816,0.21899054944515228,0.27981746196746826,0.3345244824886322,0.379226952791214,0.4107542335987091,0.4267079830169678,0.42550167441368103,0.40637844800949097,0.3694050908088684,0.31544122099876404,0.24608469009399414...] with an element-wise tolerance of {"absoluteThreshold":9.8348e-7,"relativeThreshold":0}.
-	Index	Actual			Expected		AbsError		RelError		Test threshold
-	[252]	5.2270841598510742e-1	5.2270942926406860e-1	1.0132789611816406e-6	1.9385128801067413e-6	9.8348000000000007e-7
-	Max AbsError of 1.0132789611816406e-6 at index of 252.
-	Max RelError of 1.9385128801067413e-6 at index of 252.
- assert_true: expected true got false
-FAIL < [automate-q] 1 out of 1 assertions were failed. assert_true: expected true got false
+PASS   Output of bandpass filter with Q automation equals [expected array] with an element-wise tolerance of {"absoluteThreshold":9.8348e-7,"relativeThreshold":0}. 
+PASS < [automate-q] All assertions passed. (total 1 assertions) 
 PASS > [automate-gain]  
 PASS   Output of lowshelf filter with gain automation equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0.000027657,"relativeThreshold":0}. 
 PASS < [automate-gain] All assertions passed. (total 1 assertions) 
@@ -30,5 +25,5 @@
 PASS > [modulation]  
 PASS   Output of bandpass filter with sinusoidal modulation of bandpass center frequency equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0.000039787,"relativeThreshold":0}. 
 PASS < [modulation] All assertions passed. (total 1 assertions) 
-FAIL # AUDIT TASK RUNNER FINISHED: 1 out of 6 tasks were failed. assert_true: expected true got false
+PASS # AUDIT TASK RUNNER FINISHED: 6 tasks ran successfully. 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt (267356 => 267357)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv-expected.txt	2020-09-21 19:51:02 UTC (rev 267357)
@@ -3,7 +3,7 @@
 PASS Executing "test" 
 PASS Audit report 
 PASS > [test] Test convolver with real-time context 
-FAIL X SNR is not greater than or equal to 83. Got 77.00623887904952. assert_true: expected true got false
-FAIL < [test] 1 out of 1 assertions were failed. assert_true: expected true got false
-FAIL # AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed. assert_true: expected true got false
+PASS   SNR is greater than or equal to 83. 
+PASS < [test] All assertions passed. (total 1 assertions) 
+PASS # AUDIT TASK RUNNER FINISHED: 1 tasks ran successfully. 
 

Modified: trunk/LayoutTests/webaudio/AudioParam/audioparam-cancel-and-hold-expected.txt (267356 => 267357)


--- trunk/LayoutTests/webaudio/AudioParam/audioparam-cancel-and-hold-expected.txt	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/webaudio/AudioParam/audioparam-cancel-and-hold-expected.txt	2020-09-21 19:51:02 UTC (rev 267357)
@@ -18,21 +18,10 @@
 PASS Executing "linear, cancel, linear, cancel, linear" 
 PASS Audit report 
 PASS > [linear] Cancel linearRampToValueAtTime 
-FAIL X linearRampToValueAtTime: linearRampToValue(0, 0.5) up to time 0.25 does not equal [0,0.0020833334419876337,0.004166666883975267,0.0062500000931322575,0.008333333767950535,0.010416666977107525,0.012500000186264515,0.014583333395421505,0.01666666753590107,0.01875000074505806,0.02083333395421505,0.02291666716337204,0.02500000037252903,0.02708333358168602,0.02916666679084301,0.03125...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.
-	Index	Actual			Expected		AbsError		RelError		Test threshold
-	[715]	9.9000853300094604e-1	9.9000847339630127e-1	5.9604644775390625e-8	6.0206196590330427e-8	0.0000000000000000e+0
-	[816]	9.8571431636810303e-1	9.8571425676345825e-1	5.9604644775390625e-8	6.0468481982901817e-8	0.0000000000000000e+0
-	[879]	9.8303568363189697e-1	9.8303574323654175e-1	5.9604644775390625e-8	6.0633242672487782e-8	0.0000000000000000e+0
-	[1264]	9.6666663885116577e-1	9.6666669845581055e-1	5.9604644775390625e-8	6.1659975326144279e-8	0.0000000000000000e+0
-	[1368]	9.6224492788314819e-1	9.6224486827850342e-1	5.9604644775390625e-8	6.1943323098231583e-8	0.0000000000000000e+0
-	...and 1140 more errors.
-	Max AbsError of 5.9604644775390625e-8 at index of 715.
-	Max RelError of 1.1671811990452458e-7 at index of 11989.
-	[11989]	5.1067179441452026e-1	5.1067173480987549e-1	5.9604644775390625e-8	1.1671811990452458e-7	0.0000000000000000e+0
- assert_true: expected true got false
+PASS   linearRampToValueAtTime: linearRampToValue(0, 0.5) up to time 0.25 equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
 PASS   Cancelling linearRampToValueAtTime: linearRampToValue(0, 0.5) at time 0.25 contains only the constant 0.5102040767669678. 
 PASS   Expected value for cancelling linearRampToValueAtTime: linearRampToValue(0, 0.5) at time 0.25 is 0.5102040767669678 within an error of 0.000083998. 
-FAIL < [linear] 1 out of 3 assertions were failed. assert_true: expected true got false
+PASS < [linear] All assertions passed. (total 3 assertions) 
 PASS > [exponential] Cancel exponentialRampAtTime 
 PASS   exponentialRampToValue(0.001, 0.5) up to time 0.25 equals [expected array] with an element-wise tolerance of {"absoluteThreshold":5.9605e-8,"relativeThreshold":0}. 
 PASS   Cancelling exponentialRampToValue(0.001, 0.5) at time 0.25 contains only the constant 0.033932220190763474. 
@@ -59,90 +48,35 @@
 PASS   Expected value for cancelling setTargetAtTime(0, 0.01, 0.1) at time 0.25 is 0.09071795642375946 within an error of 0.000001232. 
 PASS < [initial setTarget] All assertions passed. (total 3 assertions) 
 PASS > [post cancel: Linear] LinearRamp after cancelling 
-FAIL X Post cancellation linearRampToValueAtTime: linearRampToValue(0, 0.5) up to time 0.25 does not equal [0,0.0020833334419876337,0.004166666883975267,0.0062500000931322575,0.008333333767950535,0.010416666977107525,0.012500000186264515,0.014583333395421505,0.01666666753590107,0.01875000074505806,0.02083333395421505,0.02291666716337204,0.02500000037252903,0.02708333358168602,0.02916666679084301,0.03125...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.
-	Index	Actual			Expected		AbsError		RelError		Test threshold
-	[715]	9.9000853300094604e-1	9.9000847339630127e-1	5.9604644775390625e-8	6.0206196590330427e-8	0.0000000000000000e+0
-	[816]	9.8571431636810303e-1	9.8571425676345825e-1	5.9604644775390625e-8	6.0468481982901817e-8	0.0000000000000000e+0
-	[879]	9.8303568363189697e-1	9.8303574323654175e-1	5.9604644775390625e-8	6.0633242672487782e-8	0.0000000000000000e+0
-	[1264]	9.6666663885116577e-1	9.6666669845581055e-1	5.9604644775390625e-8	6.1659975326144279e-8	0.0000000000000000e+0
-	[1368]	9.6224492788314819e-1	9.6224486827850342e-1	5.9604644775390625e-8	6.1943323098231583e-8	0.0000000000000000e+0
-	...and 1140 more errors.
-	Max AbsError of 5.9604644775390625e-8 at index of 715.
-	Max RelError of 1.1671811990452458e-7 at index of 11989.
-	[11989]	5.1067179441452026e-1	5.1067173480987549e-1	5.9604644775390625e-8	1.1671811990452458e-7	0.0000000000000000e+0
- assert_true: expected true got false
+PASS   Post cancellation linearRampToValueAtTime: linearRampToValue(0, 0.5) up to time 0.25 equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
 PASS   Cancelling Post cancellation linearRampToValueAtTime: linearRampToValue(0, 0.5) at time 0.25 contains only the constant 0.5102040767669678. 
 PASS   Expected value for cancelling Post cancellation linearRampToValueAtTime: linearRampToValue(0, 0.5) at time 0.25 is 0.5102040767669678 within an error of 0.000083998. 
 PASS   Post linearRamp(2, 0.375) equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
-FAIL < [post cancel: Linear] 1 out of 4 assertions were failed. assert_true: expected true got false
+PASS < [post cancel: Linear] All assertions passed. (total 4 assertions) 
 PASS > [post cancel: Exponential] ExponentialRamp after cancelling 
-FAIL X Post cancel exponentialRampToValueAtTime: linearRampToValue(0, 0.5) up to time 0.25 does not equal [0,0.0020833334419876337,0.004166666883975267,0.0062500000931322575,0.008333333767950535,0.010416666977107525,0.012500000186264515,0.014583333395421505,0.01666666753590107,0.01875000074505806,0.02083333395421505,0.02291666716337204,0.02500000037252903,0.02708333358168602,0.02916666679084301,0.03125...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.
-	Index	Actual			Expected		AbsError		RelError		Test threshold
-	[715]	9.9000853300094604e-1	9.9000847339630127e-1	5.9604644775390625e-8	6.0206196590330427e-8	0.0000000000000000e+0
-	[816]	9.8571431636810303e-1	9.8571425676345825e-1	5.9604644775390625e-8	6.0468481982901817e-8	0.0000000000000000e+0
-	[879]	9.8303568363189697e-1	9.8303574323654175e-1	5.9604644775390625e-8	6.0633242672487782e-8	0.0000000000000000e+0
-	[1264]	9.6666663885116577e-1	9.6666669845581055e-1	5.9604644775390625e-8	6.1659975326144279e-8	0.0000000000000000e+0
-	[1368]	9.6224492788314819e-1	9.6224486827850342e-1	5.9604644775390625e-8	6.1943323098231583e-8	0.0000000000000000e+0
-	...and 1140 more errors.
-	Max AbsError of 5.9604644775390625e-8 at index of 715.
-	Max RelError of 1.1671811990452458e-7 at index of 11989.
-	[11989]	5.1067179441452026e-1	5.1067173480987549e-1	5.9604644775390625e-8	1.1671811990452458e-7	0.0000000000000000e+0
- assert_true: expected true got false
+PASS   Post cancel exponentialRampToValueAtTime: linearRampToValue(0, 0.5) up to time 0.25 equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
 PASS   Cancelling Post cancel exponentialRampToValueAtTime: linearRampToValue(0, 0.5) at time 0.25 contains only the constant 0.5102040767669678. 
 PASS   Expected value for cancelling Post cancel exponentialRampToValueAtTime: linearRampToValue(0, 0.5) at time 0.25 is 0.5102040767669678 within an error of 0.000083998. 
 PASS   Post exponentialRamp(2, 0.375) equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
-FAIL < [post cancel: Exponential] 1 out of 4 assertions were failed. assert_true: expected true got false
+PASS < [post cancel: Exponential] All assertions passed. (total 4 assertions) 
 PASS > [post cancel: ValueCurve]  
-FAIL X Post cancel setValueCurveAtTime: linearRampToValue(0, 0.5) up to time 0.25 does not equal [0,0.0020833334419876337,0.004166666883975267,0.0062500000931322575,0.008333333767950535,0.010416666977107525,0.012500000186264515,0.014583333395421505,0.01666666753590107,0.01875000074505806,0.02083333395421505,0.02291666716337204,0.02500000037252903,0.02708333358168602,0.02916666679084301,0.03125...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.
-	Index	Actual			Expected		AbsError		RelError		Test threshold
-	[715]	9.9000853300094604e-1	9.9000847339630127e-1	5.9604644775390625e-8	6.0206196590330427e-8	0.0000000000000000e+0
-	[816]	9.8571431636810303e-1	9.8571425676345825e-1	5.9604644775390625e-8	6.0468481982901817e-8	0.0000000000000000e+0
-	[879]	9.8303568363189697e-1	9.8303574323654175e-1	5.9604644775390625e-8	6.0633242672487782e-8	0.0000000000000000e+0
-	[1264]	9.6666663885116577e-1	9.6666669845581055e-1	5.9604644775390625e-8	6.1659975326144279e-8	0.0000000000000000e+0
-	[1368]	9.6224492788314819e-1	9.6224486827850342e-1	5.9604644775390625e-8	6.1943323098231583e-8	0.0000000000000000e+0
-	...and 1140 more errors.
-	Max AbsError of 5.9604644775390625e-8 at index of 715.
-	Max RelError of 1.1671811990452458e-7 at index of 11989.
-	[11989]	5.1067179441452026e-1	5.1067173480987549e-1	5.9604644775390625e-8	1.1671811990452458e-7	0.0000000000000000e+0
- assert_true: expected true got false
+PASS   Post cancel setValueCurveAtTime: linearRampToValue(0, 0.5) up to time 0.25 equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
 PASS   Cancelling Post cancel setValueCurveAtTime: linearRampToValue(0, 0.5) at time 0.25 contains only the constant 0.5102040767669678. 
 PASS   Expected value for cancelling Post cancel setValueCurveAtTime: linearRampToValue(0, 0.5) at time 0.25 is 0.5102040767669678 within an error of 0.000083998. 
 PASS   Post setValueCurve([0.125,2], 0.375, 0.125) equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0.000083998,"relativeThreshold":0}. 
-FAIL < [post cancel: ValueCurve] 1 out of 4 assertions were failed. assert_true: expected true got false
+PASS < [post cancel: ValueCurve] All assertions passed. (total 4 assertions) 
 PASS > [post cancel: setTarget]  
-FAIL X Post cancel setTargetAtTime: linearRampToValue(0, 0.5) up to time 0.25 does not equal [0,0.0020833334419876337,0.004166666883975267,0.0062500000931322575,0.008333333767950535,0.010416666977107525,0.012500000186264515,0.014583333395421505,0.01666666753590107,0.01875000074505806,0.02083333395421505,0.02291666716337204,0.02500000037252903,0.02708333358168602,0.02916666679084301,0.03125...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.
-	Index	Actual			Expected		AbsError		RelError		Test threshold
-	[715]	9.9000853300094604e-1	9.9000847339630127e-1	5.9604644775390625e-8	6.0206196590330427e-8	0.0000000000000000e+0
-	[816]	9.8571431636810303e-1	9.8571425676345825e-1	5.9604644775390625e-8	6.0468481982901817e-8	0.0000000000000000e+0
-	[879]	9.8303568363189697e-1	9.8303574323654175e-1	5.9604644775390625e-8	6.0633242672487782e-8	0.0000000000000000e+0
-	[1264]	9.6666663885116577e-1	9.6666669845581055e-1	5.9604644775390625e-8	6.1659975326144279e-8	0.0000000000000000e+0
-	[1368]	9.6224492788314819e-1	9.6224486827850342e-1	5.9604644775390625e-8	6.1943323098231583e-8	0.0000000000000000e+0
-	...and 1140 more errors.
-	Max AbsError of 5.9604644775390625e-8 at index of 715.
-	Max RelError of 1.1671811990452458e-7 at index of 11989.
-	[11989]	5.1067179441452026e-1	5.1067173480987549e-1	5.9604644775390625e-8	1.1671811990452458e-7	0.0000000000000000e+0
- assert_true: expected true got false
+PASS   Post cancel setTargetAtTime: linearRampToValue(0, 0.5) up to time 0.25 equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
 PASS   Cancelling Post cancel setTargetAtTime: linearRampToValue(0, 0.5) at time 0.25 contains only the constant 0.5102040767669678. 
 PASS   Expected value for cancelling Post cancel setTargetAtTime: linearRampToValue(0, 0.5) at time 0.25 is 0.5102040767669678 within an error of 0.000083998. 
 PASS   Post setTargetAtTime(0.125, 0.375, 0.1) equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0.000084037,"relativeThreshold":0}. 
-FAIL < [post cancel: setTarget] 1 out of 4 assertions were failed. assert_true: expected true got false
+PASS < [post cancel: setTarget] All assertions passed. (total 4 assertions) 
 PASS > [post cancel: setValue]  
-FAIL X Post cancel setValueAtTime: linearRampToValue(0, 0.5) up to time 0.25 does not equal [0,0.0020833334419876337,0.004166666883975267,0.0062500000931322575,0.008333333767950535,0.010416666977107525,0.012500000186264515,0.014583333395421505,0.01666666753590107,0.01875000074505806,0.02083333395421505,0.02291666716337204,0.02500000037252903,0.02708333358168602,0.02916666679084301,0.03125...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.
-	Index	Actual			Expected		AbsError		RelError		Test threshold
-	[715]	9.9000853300094604e-1	9.9000847339630127e-1	5.9604644775390625e-8	6.0206196590330427e-8	0.0000000000000000e+0
-	[816]	9.8571431636810303e-1	9.8571425676345825e-1	5.9604644775390625e-8	6.0468481982901817e-8	0.0000000000000000e+0
-	[879]	9.8303568363189697e-1	9.8303574323654175e-1	5.9604644775390625e-8	6.0633242672487782e-8	0.0000000000000000e+0
-	[1264]	9.6666663885116577e-1	9.6666669845581055e-1	5.9604644775390625e-8	6.1659975326144279e-8	0.0000000000000000e+0
-	[1368]	9.6224492788314819e-1	9.6224486827850342e-1	5.9604644775390625e-8	6.1943323098231583e-8	0.0000000000000000e+0
-	...and 1140 more errors.
-	Max AbsError of 5.9604644775390625e-8 at index of 715.
-	Max RelError of 1.1671811990452458e-7 at index of 11989.
-	[11989]	5.1067179441452026e-1	5.1067173480987549e-1	5.9604644775390625e-8	1.1671811990452458e-7	0.0000000000000000e+0
- assert_true: expected true got false
+PASS   Post cancel setValueAtTime: linearRampToValue(0, 0.5) up to time 0.25 equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
 PASS   Cancelling Post cancel setValueAtTime: linearRampToValue(0, 0.5) at time 0.25 contains only the constant 0.5102040767669678. 
 PASS   Expected value for cancelling Post cancel setValueAtTime: linearRampToValue(0, 0.5) at time 0.25 is 0.5102040767669678 within an error of 0.000083998. 
 PASS   Post setValueAtTime(0.125, 0.375) equals [0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
-FAIL < [post cancel: setValue] 1 out of 4 assertions were failed. assert_true: expected true got false
+PASS < [post cancel: setValue] All assertions passed. (total 4 assertions) 
 PASS > [cancel future setTarget]  
 PASS   After cancelling future setTarget event, output contains only the constant 0.5. 
 PASS < [cancel future setTarget] All assertions passed. (total 1 assertions) 
@@ -156,18 +90,7 @@
 PASS   After cancelling current setValueCurve event starting now, output contains only the constant 0.5. 
 PASS < [cancel setValueCurve now] All assertions passed. (total 1 assertions) 
 PASS > [linear, cancel, linear, cancel, linear] Schedules 3 linear ramps, cancelling 2 of them, so that we end up with 2 cancel events next to each other 
-FAIL X 1st linearRamp: linearRampToValue(0, 0.5) up to time 0.25 does not equal [0,0.0020833334419876337,0.004166666883975267,0.0062500000931322575,0.008333333767950535,0.010416666977107525,0.012500000186264515,0.014583333395421505,0.01666666753590107,0.01875000074505806,0.02083333395421505,0.02291666716337204,0.02500000037252903,0.02708333358168602,0.02916666679084301,0.03125...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}.
-	Index	Actual			Expected		AbsError		RelError		Test threshold
-	[715]	9.9000853300094604e-1	9.9000847339630127e-1	5.9604644775390625e-8	6.0206196590330427e-8	0.0000000000000000e+0
-	[816]	9.8571431636810303e-1	9.8571425676345825e-1	5.9604644775390625e-8	6.0468481982901817e-8	0.0000000000000000e+0
-	[879]	9.8303568363189697e-1	9.8303574323654175e-1	5.9604644775390625e-8	6.0633242672487782e-8	0.0000000000000000e+0
-	[1264]	9.6666663885116577e-1	9.6666669845581055e-1	5.9604644775390625e-8	6.1659975326144279e-8	0.0000000000000000e+0
-	[1368]	9.6224492788314819e-1	9.6224486827850342e-1	5.9604644775390625e-8	6.1943323098231583e-8	0.0000000000000000e+0
-	...and 1140 more errors.
-	Max AbsError of 5.9604644775390625e-8 at index of 715.
-	Max RelError of 1.1671811990452458e-7 at index of 11989.
-	[11989]	5.1067179441452026e-1	5.1067173480987549e-1	5.9604644775390625e-8	1.1671811990452458e-7	0.0000000000000000e+0
- assert_true: expected true got false
+PASS   1st linearRamp: linearRampToValue(0, 0.5) up to time 0.25 equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
 PASS   Cancelling 1st linearRamp: linearRampToValue(0, 0.5) at time 0.25 contains only the constant 0.5102040767669678. 
 PASS   Expected value for cancelling 1st linearRamp: linearRampToValue(0, 0.5) at time 0.25 is 0.5102040767669678 within an error of 0. 
 PASS   2nd linearRamp(2, 0.5) equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
@@ -174,6 +97,6 @@
 PASS   Cancelling 2nd linearRamp(2, 0.5) at time 0.375 contains only the constant 1.2551020383834839. 
 PASS   Expected value for cancelling 2nd linearRamp(2, 0.5) at time 0.375 is 1.2551020383834839 within an error of 0. 
 PASS   3rd linearRamp(0, 0.5) equals [expected array] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
-FAIL < [linear, cancel, linear, cancel, linear] 1 out of 7 assertions were failed. assert_true: expected true got false
-FAIL # AUDIT TASK RUNNER FINISHED: 7 out of 16 tasks were failed. assert_true: expected true got false
+PASS < [linear, cancel, linear, cancel, linear] All assertions passed. (total 7 assertions) 
+PASS # AUDIT TASK RUNNER FINISHED: 16 tasks ran successfully. 
 

Modified: trunk/LayoutTests/webaudio/AudioParam/audioparam-negative-exponentialRamp-expected.txt (267356 => 267357)


--- trunk/LayoutTests/webaudio/AudioParam/audioparam-negative-exponentialRamp-expected.txt	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/webaudio/AudioParam/audioparam-negative-exponentialRamp-expected.txt	2020-09-21 19:51:02 UTC (rev 267357)
@@ -35,10 +35,10 @@
 PASS > [propagate]  
 FAIL X Exponential ramp from -1 to 1 after the end of the linear ramp: Expected -1 for all values but found 1500 unexpected values: 
 	Index	Actual
-	[0]	-0.997999906539917
-	[1]	-0.997999906539917
-	[2]	-0.997999906539917
-	[3]	-0.997999906539917
+	[0]	-0.9980001449584961
+	[1]	-0.9980001449584961
+	[2]	-0.9980001449584961
+	[3]	-0.9980001449584961
 	...and 1496 more errors. assert_true: expected true got false
 PASS   Exponential ramp after end of ramp contains only the constant 1. 
 FAIL < [propagate] 1 out of 2 assertions were failed. assert_true: expected true got false

Modified: trunk/LayoutTests/webaudio/AudioParam/audioparam-setTargetAtTime-continuous-expected.txt (267356 => 267357)


--- trunk/LayoutTests/webaudio/AudioParam/audioparam-setTargetAtTime-continuous-expected.txt	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/webaudio/AudioParam/audioparam-setTargetAtTime-continuous-expected.txt	2020-09-21 19:51:02 UTC (rev 267357)
@@ -13,7 +13,7 @@
 	[0]	0.0000000000000000e+0	1.0000000000000000e+0	1.0000000000000000e+0	1.0000000000000000e+0	1.2676500000000001e-6
 	[1]	8.8028167374432087e-4	1.0004401408450705e+0	9.9955985917132617e-1	9.9912010560371878e-1	1.2676500000000001e-6
 	[2]	1.7605633474886417e-3	1.0008802816901408e+0	9.9911971834265212e-1	9.9824098508113712e-1	1.2676500000000001e-6
-	[3]	2.6408450212329626e-3	1.0013204225352113e+0	9.9867957751397829e-1	9.9736263741176212e-1	1.2676500000000001e-6
+	[3]	2.6408447884023190e-3	1.0013204225352113e+0	9.9867957774680893e-1	9.9736263764428568e-1	1.2676500000000001e-6
 	[4]	3.5211266949772835e-3	1.0017605633802817e+0	9.9823943668530446e-1	9.9648506157689443e-1	1.2676500000000001e-6
 	...and 2267 more errors.
 	Max AbsError of 1.0000000000000000e+0 at index of 0.
@@ -26,14 +26,14 @@
 PASS   Delayed linear ramp: SetTarget part equals [expected array] with an element-wise tolerance of {"absoluteThreshold":3.43632e-7,"relativeThreshold":0}. 
 FAIL X Delayed linear ramp does not equal [0.44932896411722156,0.45015029411504087,0.4509716241128601,0.4517929541106794,0.45261428410849863,0.45343561410631794,0.4542569441041372,0.45507827410195645,0.45589960409977576,0.45672093409759495,0.4575422640954142,0.4583635940932335,0.45918492409105277,0.460006254088872,0.46082758408669133,0.4616489140845106...] with an element-wise tolerance of {"absoluteThreshold":0.00000107972,"relativeThreshold":0}.
 	Index	Actual			Expected		AbsError		RelError		Test threshold
-	[0]	3.3802816271781921e-1	4.4932896411722156e-1	1.1130080139940235e-1	2.4770448888838165e-1	1.0797199999999999e-6
-	[1]	3.3890846371650696e-1	4.5015029411504087e-1	1.1124183039853391e-1	2.4712153219232338e-1	1.0797199999999999e-6
+	[0]	3.3802819252014160e-1	4.4932896411722156e-1	1.1130077159707996e-1	2.4770442256209341e-1	1.0797199999999999e-6
+	[1]	3.3890849351882935e-1	4.5015029411504087e-1	1.1124180059621153e-1	2.4712146598705201e-1	1.0797199999999999e-6
 	[2]	3.3978873491287231e-1	4.5097162411286013e-1	1.1118288919998781e-1	2.4654076499536740e-1	1.0797199999999999e-6
-	[3]	3.4066900610923767e-1	4.5179295411067938e-1	1.1112394800144171e-1	2.4596210939185822e-1	1.0797199999999999e-6
+	[3]	3.4066903591156006e-1	4.5179295411067938e-1	1.1112391819911932e-1	2.4596204342730055e-1	1.0797199999999999e-6
 	[4]	3.4154930710792542e-1	4.5261428410849863e-1	1.1106497700057322e-1	2.4538548804162183e-1	1.0797199999999999e-6
 	...and 1883 more errors.
-	Max AbsError of 1.1130080139940235e-1 at index of 0.
-	Max RelError of 2.4770448888838165e-1 at index of 0.
+	Max AbsError of 1.1130077159707996e-1 at index of 0.
+	Max RelError of 2.4770442256209341e-1 at index of 0.
  assert_true: expected true got false
 PASS   Delayed linear ramp: Tail part equals [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2...] with an element-wise tolerance of {"absoluteThreshold":0,"relativeThreshold":0}. 
 FAIL < [delayed linear ramp] 1 out of 4 assertions were failed. assert_true: expected true got false

Deleted: trunk/LayoutTests/webaudio/audioparam-linearRampToValueAtTime-expected.txt (267356 => 267357)


--- trunk/LayoutTests/webaudio/audioparam-linearRampToValueAtTime-expected.txt	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/webaudio/audioparam-linearRampToValueAtTime-expected.txt	2020-09-21 19:51:02 UTC (rev 267357)
@@ -1,11 +0,0 @@
-Test AudioParam linearRampToValueAtTime() functionality.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-PASS All 100 tests started and ended at the correct time.
-PASS All 100 tests passed within an acceptable tolerance.
-PASS AudioParam linearRampToValueAtTime() test passed.
-PASS successfullyParsed is true
-
-TEST COMPLETE
-

Deleted: trunk/LayoutTests/webaudio/audioparam-linearRampToValueAtTime.html (267356 => 267357)


--- trunk/LayoutTests/webaudio/audioparam-linearRampToValueAtTime.html	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/LayoutTests/webaudio/audioparam-linearRampToValueAtTime.html	2020-09-21 19:51:02 UTC (rev 267357)
@@ -1,60 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<script src=""
-<script src=""
-<script src=""
-</head>
-
-<body>
-<div id="description"></div>
-<div id="console"></div>
-
-<script>
-description("Test AudioParam linearRampToValueAtTime() functionality.");
-
-// Play a long DC signal out through an AudioGainNode, and call setValueAtTime() and
-// linearRampToValueAtTime() at regular intervals to set the starting and ending values for a
-// linear ramp. Each time interval has a ramp with a different starting and ending value so
-// that there is a discontinuity at each time interval boundary.  The discontinuity is for
-// testing timing.  Also, we alternate between an increasing and decreasing ramp for each
-// interval.
-
-// Number of tests to run.
-var numberOfTests = 100;
-
-// Max allowed difference between the rendered data and the expected result.
-var maxAllowedError = 6.5e-7;
-
-// Set the gain node value to the specified value at the specified time.
-function setValue(value, time)
-{
-    gainNode.gain.setValueAtTime(value, time);
-}
-
-// Generate a linear ramp ending at time |endTime| with an ending value of |value|.
-function generateRamp(value, startTime, endTime)
-{
-    // |startTime| is ignored because the linear ramp uses the value from the setValueAtTime() call above.
-    gainNode.gain.linearRampToValueAtTime(value, endTime)
-}
-
-function runTest()
-{
-    createAudioGraphAndTest(numberOfTests,
-                            1,
-                            setValue,
-                            generateRamp,
-                            "linearRampToValueAtTime()",
-                            maxAllowedError,
-                            createLinearRampArray);
-}
-
-runTest();
-successfullyParsed = true;
-  
-</script>
-
-<script src=""
-</body>
-</html>

Modified: trunk/Source/WebCore/ChangeLog (267356 => 267357)


--- trunk/Source/WebCore/ChangeLog	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/Source/WebCore/ChangeLog	2020-09-21 19:51:02 UTC (rev 267357)
@@ -1,5 +1,27 @@
 2020-09-21  Chris Dumez  <[email protected]>
 
+        Vectorize linearRampToValueAtTime processing in AudioParamTimeline
+        https://bugs.webkit.org/show_bug.cgi?id=216788
+
+        Reviewed by Darin Adler.
+
+        Vectorize linearRampToValueAtTime processing in AudioParamTimeline. This patch is based on
+        the Blink implementation at [1] but updated to use VectorMath to work on more platforms.
+
+        We were failing some tests due to precision issues in our linearRampToValueAtTime implementation.
+        Those tests are now passing since our implementation matches Blink's more closely.
+
+        [1] https://github.com/chromium/chromium/blob/master/third_party/blink/renderer/modules/webaudio/audio_param_timeline.cc
+
+        No new tests, rebaselined existing tests.
+
+        * Modules/webaudio/AudioParamTimeline.cpp:
+        (WebCore::AudioParamTimeline::valuesForTimeRangeImpl):
+        (WebCore::AudioParamTimeline::processLinearRamp):
+        * Modules/webaudio/AudioParamTimeline.h:
+
+2020-09-21  Chris Dumez  <[email protected]>
+
         AnalyserNode's getByteFrequencyData() / getFloatFrequencyData() should only do FFT analysis once per render quantum
         https://bugs.webkit.org/show_bug.cgi?id=216735
 

Modified: trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp (267356 => 267357)


--- trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp	2020-09-21 19:51:02 UTC (rev 267357)
@@ -417,18 +417,9 @@
         fillToFrame = std::min(fillToFrame, numberOfValues);
 
         // First handle linear and exponential ramps which require looking ahead to the next event.
-        if (nextEventType == ParamEvent::LinearRampToValue) {
-            for (; writeIndex < fillToFrame; ++writeIndex) {
-                // Since deltaTime is a double, 1/deltaTime can easily overflow a float. Thus, if deltaTime
-                // is close enough to zero (less than float min), treat it as zero.
-                float k = deltaTime.value() <= std::numeric_limits<float>::min() ? 0 : 1 / deltaTime.value();
-                float x = (currentFrame * samplingPeriod - time1.value()) * k;
-                float valueDelta = value2 - value1;
-                value = value1 + valueDelta * x;
-                values[writeIndex] = value;
-                ++currentFrame;
-            }
-        } else if (nextEventType == ParamEvent::ExponentialRampToValue) {
+        if (nextEventType == ParamEvent::LinearRampToValue)
+            processLinearRamp(values, writeIndex, fillToFrame, value, value1, value2, deltaTime, time1, samplingPeriod, currentFrame);
+        else if (nextEventType == ParamEvent::ExponentialRampToValue) {
             if (value1 <= 0 || value2 <= 0) {
                 // Handle negative values error case by propagating previous value.
                 for (; writeIndex < fillToFrame; ++writeIndex)
@@ -630,6 +621,59 @@
     return value;
 }
 
+void AudioParamTimeline::processLinearRamp(float* values, unsigned& writeIndex, unsigned fillToFrame, float& value, float value1, float value2, Seconds deltaTime, Seconds time1, double samplingPeriod, size_t& currentFrame)
+{
+    float valueDelta = value2 - value1;
+    // Since deltaTime is a double, 1/deltaTime can easily overflow a float. Thus, if deltaTime
+    // is close enough to zero (less than float min), treat it as zero.
+    float k = deltaTime.value() <= std::numeric_limits<float>::min() ? 0 : 1 / deltaTime.value();
+
+    unsigned fillToFrameTrunc = writeIndex + ((fillToFrame - writeIndex) / 4) * 4;
+    if (fillToFrameTrunc > writeIndex) {
+        // Minimize in-loop operations. Calculate starting value and increment.
+        // Next step: value += inc.
+        //  value = value1 + (currentFrame/sampleRate - time1) * k * (value2 - value1);
+        //  inc = 4 / sampleRate * k * (value2 - value1);
+        // Resolve recursion by expanding constants to achieve a 4-step loop unrolling.
+        //  value = value1 + ((currentFrame/sampleRate - time1) + i * sampleFrameTimeIncr) * k * (value2 - value1), i in 0..3
+        values[writeIndex] = 0;
+        values[writeIndex + 1] = 1;
+        values[writeIndex + 2] = 2;
+        values[writeIndex + 3] = 3;
+        float scalar = samplingPeriod;
+        VectorMath::vsmul(values + writeIndex, 1, &scalar, values + writeIndex, 1, 4);
+        scalar = currentFrame * samplingPeriod - time1.value();
+        VectorMath::vsadd(values + writeIndex, 1, &scalar, values + writeIndex, 1, 4);
+        scalar = k * valueDelta;
+        VectorMath::vsmul(values + writeIndex, 1, &scalar, values + writeIndex, 1, 4);
+        VectorMath::vsadd(values + writeIndex, 1, &value1, values + writeIndex, 1, 4);
+
+        float inc = 4 * samplingPeriod * k * valueDelta;
+
+        // Truncate loop steps to multiple of 4.
+        unsigned fillToFrameTrunc = writeIndex + ((fillToFrame - writeIndex) / 4) * 4;
+        // Compute final frame.
+        currentFrame += fillToFrameTrunc - writeIndex;
+
+        // Process 4 loop steps.
+        writeIndex += 4;
+        for (; writeIndex < fillToFrameTrunc; writeIndex += 4)
+            VectorMath::vsadd(values + writeIndex - 4, 1, &inc, values + writeIndex, 1, 4);
+    }
+    // Update |value| with the last value computed so that the .value attribute of the AudioParam gets
+    // the correct linear ramp value, in case the following loop doesn't execute.
+    if (writeIndex >= 1)
+        value = values[writeIndex - 1];
+
+    // Serially process remaining values.
+    for (; writeIndex < fillToFrame; ++writeIndex) {
+        float x = (currentFrame * samplingPeriod - time1.value()) * k;
+        value = value1 + valueDelta * x;
+        values[writeIndex] = value;
+        ++currentFrame;
+    }
+}
+
 void AudioParamTimeline::processSetTarget(float* values, unsigned& writeIndex, unsigned fillToFrame, float& value, float target, float discreteTimeConstant)
 {
     if (fillToFrame > writeIndex) {

Modified: trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.h (267356 => 267357)


--- trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.h	2020-09-21 19:34:38 UTC (rev 267356)
+++ trunk/Source/WebCore/Modules/webaudio/AudioParamTimeline.h	2020-09-21 19:51:02 UTC (rev 267357)
@@ -162,6 +162,7 @@
     float valueCurveAtTime(Seconds t, Seconds time1, Seconds duration, const float* curveData, size_t curveLength);
     void handleCancelValues(ParamEvent&, ParamEvent* nextEvent, float& value2, Seconds& time2, ParamEvent::Type& nextEventType);
     bool isEventCurrent(const ParamEvent&, const ParamEvent* nextEvent, size_t currentFrame, double sampleRate) const;
+    void processLinearRamp(float* values, unsigned& writeIndex, unsigned fillToFrame, float& value, float value1, float value2, Seconds deltaTime, Seconds time1, double samplingPeriod, size_t& currentFrame);
     void processSetTarget(float* values, unsigned& writeIndex, unsigned fillToFrame, float& value, float target, float discreteTimeConstant);
 
     Vector<UniqueRef<ParamEvent>> m_events;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to