| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>audiobuffersource-negative-playbackrate-interpolated-loop</title> |
| <script src="../resources/js-test.js"></script> |
| <script src="resources/audio-testing.js"></script> |
| <script src="resources/audiobuffersource-testing.js"></script> |
| |
| <script> |
| |
| var sampleRate = 44100.0; |
| var sourceFrames = 128; |
| var renderFrames = 10; |
| var testSpacingFrames = 0; |
| var startLoop = 100 / sampleRate; |
| var loopDuration = (renderFrames / 2) / sampleRate; |
| var endLoop = startLoop + loopDuration; |
| |
| var tests = [{ |
| description:"Test looping playback at -0.75 playbackRate", |
| offsetFrame:0, |
| renderFrames:renderFrames, |
| expected:[104,103.25,102.5,101.75,101,100.25,102,103.75,103,102.25], |
| }]; |
| |
| function go() { |
| jsTestIsAsync = true; |
| |
| context = new webkitOfflineAudioContext(1, renderFrames, sampleRate); |
| |
| var bufferSource = context.createBufferSource(); |
| bufferSource.buffer = createRamp(context, 0, 127, sourceFrames); |
| |
| bufferSource.connect(context.destination); |
| bufferSource.playbackRate.value = -0.75; |
| bufferSource.loop = true; |
| bufferSource.loopStart = startLoop; |
| bufferSource.loopEnd = endLoop; |
| bufferSource.start(0, startLoop, loopDuration); |
| bufferSource.stop(loopDuration * 2); |
| |
| context.oncomplete = checkAllTests; |
| context.startRendering(); |
| } |
| |
| </script> |
| </head> |
| <body onload="go()"> |
| </body> |
| </html> |