content/media/webaudio/test/test_bug964376.html

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     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">
    13 function gcd(a, b) {
    14   if (b === 0) {
    15     return a;
    16   }
    17   return gcd(b, a % b);
    18 }
    20 var SAMPLE_PLACEMENT = 128;
    22 var gTest = {
    23   length: 2048,
    24   numberOfChannels: 1,
    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);
    31     for (var i = 0; i < context.sampleRate; ++i) {
    32       buffer.getChannelData(0)[i] = Math.sin(freq * 2 * Math.PI * i / context.sampleRate);
    33     }
    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);
    41     return source;
    42   },
    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     }
    56     return expectedBuffer;
    57   },
    58 };
    60 runTest();
    61 </script>
    62 </pre>
    63 </body>
    64 </html>

mercurial