| Index: third_party/WebKit/LayoutTests/webaudio/audiobuffersource-playbackrate.html
|
| diff --git a/third_party/WebKit/LayoutTests/webaudio/audiobuffersource-playbackrate.html b/third_party/WebKit/LayoutTests/webaudio/audiobuffersource-playbackrate.html
|
| deleted file mode 100644
|
| index d490ae22595ba341078349a52f4dea3420f0206c..0000000000000000000000000000000000000000
|
| --- a/third_party/WebKit/LayoutTests/webaudio/audiobuffersource-playbackrate.html
|
| +++ /dev/null
|
| @@ -1,118 +0,0 @@
|
| -<!DOCTYPE html>
|
| -<html>
|
| -<head>
|
| - <title>AudioBufferSourceNode - playbackRate test</title>
|
| - <script src="../resources/js-test.js"></script>
|
| - <script src="resources/compatibility.js"></script>
|
| - <script src="resources/audit-util.js"></script>
|
| - <script src="resources/audio-testing.js"></script>
|
| -</head>
|
| -<body>
|
| - <script>
|
| - description("Test if AudioBufferSourceNode.playbackRate can playback at different rates properly.");
|
| - window.jsTestIsAsync = true;
|
| -
|
| - // Any sample rate mutiple of 128 is valid for this test, but here it uses
|
| - // 48000Hz because it is a commonly used number that happens to be multiple
|
| - // of 128.
|
| - var sampleRate = 48000;
|
| -
|
| - // The test iterates over 60 pitches starting from 36. (MIDI pitch of C2)
|
| - var fundamentalPitch = 36;
|
| - var numberOfPitches = 60;
|
| -
|
| - var noteDuration = 0.025;
|
| - var totalDuration = noteDuration * numberOfPitches;
|
| -
|
| - // Test constraints for each octave.
|
| - var testConstraints = [{
|
| - thresholdSNR: 103.8508,
|
| - thresholdDiffULP: 0.3028
|
| - }, {
|
| - thresholdSNR: 103.8657,
|
| - thresholdDiffULP: 0.3029
|
| - }, {
|
| - thresholdSNR: 103.8141,
|
| - thresholdDiffULP: 0.3047
|
| - }, {
|
| - thresholdSNR: 103.6818,
|
| - thresholdDiffULP: 0.3262
|
| - }, {
|
| - thresholdSNR: 103.1514,
|
| - thresholdDiffULP: 0.3946
|
| - }];
|
| -
|
| - function pitchToFrequency(midiPitch) {
|
| - return 440 * Math.pow(2, (Math.floor(midiPitch) - 69) / 12);
|
| - }
|
| -
|
| - function pitchDiffToPlaybackRate(midiPitchDiff) {
|
| - return Math.pow(2, midiPitchDiff / 12);
|
| - }
|
| -
|
| - function createSineWaveBuffer(context, frequency, duration) {
|
| - var buffer = context.createBuffer(1, duration * sampleRate, sampleRate);
|
| - var data = buffer.getChannelData(0);
|
| - var omega = 2 * Math.PI * frequency / sampleRate;
|
| - for (var i = 0; i < data.length; i++)
|
| - data[i] = Math.sin(omega * i);
|
| -
|
| - return buffer;
|
| - }
|
| -
|
| - var context = new OfflineAudioContext(2, totalDuration * sampleRate, sampleRate);
|
| -
|
| - // This is the fundamental buffer for playbackRate modulation. The duration of
|
| - // this buffer is arbitrary but long enough to produce the sound without
|
| - // running short.
|
| - var fundamentalBuffer = createSineWaveBuffer(context, pitchToFrequency(fundamentalPitch), totalDuration);
|
| -
|
| - // A unit test consists of 2 sources: the 'actual' source runs a buffer with
|
| - // the playback rate modulated and the 'expected' source runs a mathmatically
|
| - // generated sound buffer.
|
| - function runUnitTest(context, noteStart, notePitch) {
|
| - var actualSrc = context.createBufferSource();
|
| - var expectedSrc = context.createBufferSource();
|
| - var merger = context.createChannelMerger(2);
|
| -
|
| - actualSrc.buffer = fundamentalBuffer;
|
| - expectedSrc.buffer = createSineWaveBuffer(context, pitchToFrequency(notePitch), noteDuration);
|
| - actualSrc.playbackRate.value = pitchDiffToPlaybackRate(notePitch - fundamentalPitch);
|
| -
|
| - actualSrc.connect(merger, 0, 0);
|
| - expectedSrc.connect(merger, 0, 1);
|
| - merger.connect(context.destination);
|
| -
|
| - actualSrc.start(noteStart);
|
| - actualSrc.stop(noteStart + noteDuration);
|
| - expectedSrc.start(noteStart);
|
| - expectedSrc.stop(noteStart + noteDuration);
|
| - }
|
| -
|
| - // Schedule tests up to 60 pitches above from the fundamental pitch.
|
| - for (var iteration = 0; iteration < numberOfPitches; iteration++)
|
| - runUnitTest(context, noteDuration * iteration, fundamentalPitch + iteration);
|
| -
|
| - // Once the rendering is complete, split the buffer into 5 octaves. Then
|
| - // perform the SNR and the maximum difference ULP check for each octave with
|
| - // different constraints.
|
| - context.startRendering().then(function (renderedBuffer) {
|
| - var actual = renderedBuffer.getChannelData(0);
|
| - var expected = renderedBuffer.getChannelData(1);
|
| - var octaveLength = Math.floor(noteDuration * 12 * sampleRate);
|
| -
|
| - for (var i = 0; i < numberOfPitches / 12; i++) {
|
| - var start = i * octaveLength, end = (i + 1) * octaveLength;
|
| - var octaveActual = actual.subarray(start, end);
|
| - var octaveExpected = expected.subarray(start, end);
|
| -
|
| - compareBuffersWithConstraints(octaveActual, octaveExpected, testConstraints[i]);
|
| - }
|
| -
|
| - finishJSTest();
|
| - });
|
| -
|
| - successfullyParsed = true;
|
| - </script>
|
| -</body>
|
| -</html>
|
|
|