blob: 25b75a09caaad08da0c10ad35082439cd88dbdc1 [file] [edit]
// META: global=window,dedicatedworker
// The VP9 codec string is defined by the "Codecs Parameter String" section of
// the VP Codec ISO Media File Format Binding, which constrains bit depth and
// chroma subsampling by profile: profile 0 is 8-bit 4:2:0, profile 1 is 8-bit
// 4:2:2/4:4:4, profile 2 is 10/12-bit 4:2:0 and profile 3 is 10/12-bit
// 4:2:2/4:4:4. A codec string that does not meet these constraints is not a
// valid codec string, so Check Configuration Support returns false.
const invalidCodecs = [
{comment: 'missing level and bit depth', codec: 'vp09.00'},
{comment: 'missing bit depth', codec: 'vp09.00.10'},
{comment: 'invalid bit depth', codec: 'vp09.00.10.09'},
{comment: 'profile 0 with 10-bit', codec: 'vp09.00.10.10'},
{comment: 'profile 0 with 12-bit', codec: 'vp09.00.10.12'},
{comment: 'profile 0 with 4:2:2', codec: 'vp09.00.10.08.02'},
{comment: 'profile 0 with 4:4:4', codec: 'vp09.00.10.08.03'},
{comment: 'profile 2 with 8-bit', codec: 'vp09.02.10.08'},
{comment: 'profile 2 with 4:2:2', codec: 'vp09.02.10.10.02'},
{comment: 'profile 2 with 4:4:4', codec: 'vp09.02.10.10.03'},
];
invalidCodecs.forEach(entry => {
promise_test(async t => {
const support = await VideoDecoder.isConfigSupported({codec: entry.codec});
assert_false(support.supported);
}, `VideoDecoder.isConfigSupported() doesn't support ${entry.codec} (${entry.comment})`);
promise_test(async t => {
const support = await VideoEncoder.isConfigSupported(
{codec: entry.codec, width: 320, height: 240});
assert_false(support.supported);
}, `VideoEncoder.isConfigSupported() doesn't support ${entry.codec} (${entry.comment})`);
});