blob: e6bc81d35cba86a63d68cb0635e10e3c3d627cfe [file] [log] [blame] [edit]
<!DOCTYPE html>
<html>
<title>Test the AudioDecoder API.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/webcodecs/utils.js"></script>
<script>
const defaultConfig = {
codec: "opus",
sampleRate: 48000,
numberOfChannels: 2
};
function getFakeChunk() {
return new EncodedAudioChunk({
type:'key',
timestamp:0,
data:Uint8Array.of(0)
});
}
promise_test(t => {
// AudioDecoderInit lacks required fields.
assert_throws_js(TypeError, () => { new AudioDecoder({}); });
// AudioDecoderInit has required fields.
let decoder = new AudioDecoder(getDefaultCodecInit(t));
assert_equals(decoder.state, "unconfigured");
decoder.close();
return endAfterEventLoopTurn();
}, 'Test AudioDecoder construction');
promise_test(t => {
let decoder = new AudioDecoder(getDefaultCodecInit(t));
let badCodecsList = [
'', // Empty codec
'bogus', // Non exsitent codec
'vp8', // Video codec
'audio/webm; codecs="opus"' // Codec with mime type
]
testConfigurations(decoder, defaultConfig, badCodecsList);
return endAfterEventLoopTurn();
}, 'Test AudioDecoder.configure()');
promise_test(t => {
let decoder = new AudioDecoder(getDefaultCodecInit(t));
return testClosedCodec(t, decoder, defaultConfig, getFakeChunk());
}, 'Verify closed AudioDecoder operations');
promise_test(t => {
let decoder = new AudioDecoder(getDefaultCodecInit(t));
return testUnconfiguredCodec(t, decoder, getFakeChunk());
}, 'Verify unconfigured AudioDecoder operations');
</script>
</html>