| <!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> |