<!DOCTYPE html>
<html>
<head>
    <script src="video-test.js"></script>
    <script>
    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
        };
    }

    window.addEventListener('load', event => {
        testExpected('internals.createAV1CodecParametersString(makeAV1ParameterSet("av01", "Main", "Level_2_1", "Main", 8, 0, 110, 1, 1, 1, "VideoRange"))', "av01.0.01M.08");
        testExpected('internals.createAV1CodecParametersString(makeAV1ParameterSet("av01", "Main", "Level_3_0", "Main", 10, 0, 112, 9, 16, 9, "VideoRange"));', "av01.0.04M.10.0.112.09.16.09.0");
        testExpected('internals.createAV1CodecParametersString(makeAV1ParameterSet("av01", "Professional", "Level_7_3", "High", 12, 0, 0, 22, 18, 14, "FullRange"));', "av01.2.23H.12.0.000.22.18.14.1");
        endTest();
    }, { once: true });
    </script>
</head>
<body>
</body>
</html>
