<!DOCTYPE html>

<!--
Test up mixing from stereo 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 OfflineAudioContext(6, sampleRate * toneLengthSeconds, sampleRate);
    var toneBuffer = createToneBuffer(context, 440, toneLengthSeconds, 2); 

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

runTest();
</script>

</body>
</html>
