blob: 519a952a07cd7f4d6b2963b96d82b9b10c56cf68 [file] [edit]
<!DOCTYPE html>
<html>
<head>
<script src="video-test.js"></script>
<script>
function AV1ParameterSetToString(set) {
if (!set)
return '{ null }';
return `{ ${set.codecName}, ${set.profile}, ${set.level}, ${set.tier}, ${set.bitDepth}, ${set.monochrome}, ${set.chromaSubsampling}, ${set.colorPrimaries}, ${set.transferCharacteristics}, ${set.matrixCoefficients}, videoFullRangeFlag:${set.videoFullRangeFlag} }`;
}
function isEqualAV1ParameterSet(setA, setB) {
if ((setA === null) != (setB === null))
return false;
return setA.codecName === setB.codecName
&& setA.profile === setB.profile
&& setA.level === setB.level
&& setA.tier === setB.tier
&& setA.bitDepth === setB.bitDepth
&& setA.monochrome === setB.monochrome
&& setA.chromaSubsampling === setB.chromaSubsampling
&& setA.colorPrimaries === setB.colorPrimaries
&& setA.transferCharacteristics === setB.transferCharacteristics
&& setA.matrixCoefficients === setB.matrixCoefficients
&& setA.videoFullRangeFlag === setB.videoFullRangeFlag;
}
function makeAV1ParameterSet(codecName, profile, level, tier, bitDepth, monochrome, chromaSubsampling, colorPrimaries, transferCharacteristics, matrixCoefficients, videoFullRangeFlag)
{
return {
codecName: codecName,
profile: profile,
level: level,
tier: tier,
bitDepth: bitDepth,
monochrome: monochrome,
chromaSubsampling: chromaSubsampling,
colorPrimaries: colorPrimaries,
transferCharacteristics: transferCharacteristics,
matrixCoefficients: matrixCoefficients,
videoFullRangeFlag: videoFullRangeFlag
};
}
function testExpectedAV1ParameterSet(testFuncString, expected)
{
let observed = eval(testFuncString);
let success = isEqualAV1ParameterSet(observed, expected);
reportExpected(success, testFuncString, '===', AV1ParameterSetToString(expected), AV1ParameterSetToString(observed));
}
window.addEventListener('load', event => {
testExpected('internals.parseAV1CodecParameters("bad-parameter")', null);
testExpected('internals.parseAV1CodecParameters("av01")', null);
testExpectedAV1ParameterSet('internals.parseAV1CodecParameters("av01.0.01M.08")',
makeAV1ParameterSet('av01', "Main", "Level_2_1", "Main", 8, 0, 110, 1, 1, 1, "VideoRange"));
testExpectedAV1ParameterSet('internals.parseAV1CodecParameters("av01.0.04M.10.0.112.09.16.09.0")',
makeAV1ParameterSet('av01', "Main", "Level_3_0", "Main", 10, 0, 112, 9, 16, 9, "VideoRange"));
testExpected('internals.parseAV1CodecParameters("av01.4.01M.08")', null);
testExpected('internals.parseAV1CodecParameters("av01.0.24M.08")', null);
testExpected('internals.parseAV1CodecParameters("av01.0.01V.08")', null);
testExpected('internals.parseAV1CodecParameters("av01.0.01M.13")', null);
testExpected('internals.parseAV1CodecParameters("av01.0.01M.10.2.112.09.16.09.0")', null);
testExpected('internals.parseAV1CodecParameters("av01.0.01M.10.0.101.09.16.09.0")', null);
testExpected('internals.parseAV1CodecParameters("av01.0.01M.10.0.112.03.16.09.0")', null);
testExpected('internals.parseAV1CodecParameters("av01.0.01M.10.0.112.09.03.09.0")', null);
testExpected('internals.parseAV1CodecParameters("av01.0.01M.10.0.112.09.16.03.0")', null);
testExpected('internals.parseAV1CodecParameters("av01.0.01M.10.0.112.09.16.09.2")', null);
endTest();
}, { once: true });
</script>
</head>
<body>
</body>
</html>