Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: third_party/WebKit/LayoutTests/webaudio/audioparam-setValueCurve-copy.html

Issue 2016563002: AudioParam.setValueCurveAtTime() should copy the curve data (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address review comments Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/webaudio/audioparam-setValueCurve-copy-expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <!doctype html>
2 <html>
3 <head>
4 <script src="../resources/js-test.js"></script>
5 <script src="resources/compatibility.js"></script>
6 <script src="resources/audio-testing.js"></script>
7 <script src="resources/panner-formulas.js"></script>
8 <title>Test setValueCurveAtTime Copies the Curve Data</title>
9 </head>
10
11 <body>
12 <script>
13 description("Test setValueCurveAtTime Copies the Curve Data");
14 window.jsTestIsAsync = true;
15
16 var sampleRate = 48000;
17 var renderFrames = 1024;
18 var renderDuration = renderFrames / sampleRate;
19
20 var audit = Audit.createTaskRunner();
21
22 // Test that changing the curve array to setValueCurveAtTime doesn't
23 // change the automation output.
24 audit.defineTask("test-copy", function (done) {
25 // Two-channel context; channel 0 is the test result, and channel 1 is
26 // the expected result.
27 var context = new OfflineAudioContext(2, renderFrames, sampleRate);
28
29 var source = context.createBufferSource();
30 source.buffer = createConstantBuffer(context, 1, 1);
31 source.loop = true;
32
33 // Create two gain nodes. gainRef is the reference with the expected
34 // automation results. gainTest is the test which will have the curve
35 // modified.
36 var gainTest = context.createGain();
37 var gainRef = context.createGain();
38
39 var merger = context.createChannelMerger(2);
40
41 // The actual curve data can be anything, but we use this for
42 // simplicity.
43 var curveData = [1, 0];
44 var curveRef = Float32Array.from(curveData);
45 var curveTest = Float32Array.from(curveData);
46
47 // Create the graph.
48 source.connect(gainTest);
49 source.connect(gainRef);
50 gainTest.connect(merger, 0, 0);
51 gainRef.connect(merger, 0, 1);
52 merger.connect(context.destination);
53
54 // Initialize the gains.
55 gainTest.gain.setValueAtTime(0, 0);
56 gainRef.gain.setValueAtTime(0, 0);
57
58 // Set up the value curve. At this point curveTest and curveRef are the
59 // same.
60 gainTest.gain.setValueCurveAtTime(curveTest, 0, renderDuration);
61 gainRef.gain.setValueCurveAtTime(curveRef, 0, renderDuration);
62
63 // After rendering has started, modify curveTest.
64 context.suspend(128 / sampleRate).then(function () {
65 // Change the values of curve now. Any transformation is ok as long
66 // as curveTest changes. We do this to make it really obvious.
67 for (var k = 0; k < curveTest.length; ++k)
68 curveTest[k] = 100 * curveTest[k] + 1;
69 }).then(context.resume.bind(context));
70
71 // Start the test!
72 source.start();
73
74 context.startRendering().then(function (resultBuffer) {
75 var testData = resultBuffer.getChannelData(0);
76 var refData = resultBuffer.getChannelData(1);
77
78 // The test result and the reference should be identical since
79 // changing the curve data should not affect the automation.
80 var success = Should("setValueCurve output", testData).beEqualToArray( refData);
81
82 if (success)
83 testPassed("Changing the curve data did not change the result.");
84 else
85 testFailed("Changing the curve data unexpectedly changed the result. ");
86 }).then(done);
87 });
88
89 audit.defineTask("finish", function (done) {
90 finishJSTest();
91 done();
92 });
93
94 audit.runTasks();
95 </script>
96 </body>
97 </html>
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/webaudio/audioparam-setValueCurve-copy-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698