content/media/webaudio/test/test_bug964376.html

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:82d49bd3e192
1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <title>Test repeating audio is not distorted</title>
5 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
6 <script type="text/javascript" src="webaudio.js"></script>
7 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
8 </head>
9 <body>
10 <pre id="test">
11 <script class="testbody" type="text/javascript">
12
13 function gcd(a, b) {
14 if (b === 0) {
15 return a;
16 }
17 return gcd(b, a % b);
18 }
19
20 var SAMPLE_PLACEMENT = 128;
21
22 var gTest = {
23 length: 2048,
24 numberOfChannels: 1,
25
26 createGraph: function(context) {
27 var freq = Math.round(context.sampleRate / SAMPLE_PLACEMENT);
28 var dur = context.sampleRate / gcd(freq, context.sampleRate);
29 var buffer = context.createBuffer(1, dur, context.sampleRate);
30
31 for (var i = 0; i < context.sampleRate; ++i) {
32 buffer.getChannelData(0)[i] = Math.sin(freq * 2 * Math.PI * i / context.sampleRate);
33 }
34
35 var source = context.createBufferSource();
36 source.buffer = buffer;
37 source.loop = true;
38 source.playbackRate.setValueAtTime(0.5, SAMPLE_PLACEMENT / context.sampleRate);
39 source.start(0);
40
41 return source;
42 },
43
44 createExpectedBuffers: function(context) {
45 var freq = Math.round(context.sampleRate / SAMPLE_PLACEMENT);
46 var expectedBuffer = context.createBuffer(1, 2048, context.sampleRate);
47 var c = expectedBuffer.getChannelData(0);
48 for (var i = 0; i < c.length; ++i) {
49 if (i < SAMPLE_PLACEMENT) {
50 c[i] = Math.sin(freq * 2 * Math.PI * i / context.sampleRate);
51 } else {
52 c[i] = Math.sin(freq / 2 * 2 * Math.PI * (i + SAMPLE_PLACEMENT) / context.sampleRate);
53 }
54 }
55
56 return expectedBuffer;
57 },
58 };
59
60 runTest();
61 </script>
62 </pre>
63 </body>
64 </html>

mercurial