<!DOCTYPE html>

<!--
Test up mixing from mono to 5.1.
-->

<html>
<head>
<script type="text/javascript" src="resources/audio-testing.js"></script>
<script type="text/javascript" src="resources/mix-testing.js"></script>
</head>
<body>

<script>

function runTest() {
    if (!window.testRunner)
        return;

    testRunner.waitUntilDone();

    window.jsTestAsync = true;

    // Create offline audio context
    var sampleRate = 44100.0;
    var context = new webkitOfflineAudioContext(6, sampleRate * toneLengthSeconds, sampleRate);
    var toneBuffer = createToneBuffer(context, 440, toneLengthSeconds, 1); 

    var source = context.createBufferSource();
    source.buffer = toneBuffer;
    
    source.connect(context.destination);
    source.noteOn(0);
    
    context.oncomplete = finishAudioTest;
    context.startRendering();    
}

runTest();
</script>

</body>
</html>
