File: mediasource-invalid-codec.html

package info (click to toggle)
thunderbird 1%3A68.10.0-1~deb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 2,754,812 kB
  • sloc: cpp: 5,411,679; javascript: 4,161,772; ansic: 2,639,702; python: 763,064; java: 346,606; xml: 266,623; asm: 265,884; sh: 117,270; lisp: 41,340; makefile: 23,560; perl: 18,042; objc: 5,277; yacc: 1,778; ada: 1,681; pascal: 1,673; lex: 1,417; cs: 879; exp: 527; awk: 495; php: 436; ruby: 221; sed: 69; csh: 27
file content (45 lines) | stat: -rw-r--r-- 1,976 bytes parent folder | download | duplicates (28)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>SourceBuffer handling of invalid codecs in the initialization segment</title>
    <link rel="author" title="Alicia Boya GarcĂ­a" href="mailto:aboya@igalia.com">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="mediasource-util.js"></script>
</head>
<body>
<div id="log"></div>
<script>
    function testInvalidCodec(test, mediaElement, mediaSource, mediaType, url) {
        assert_true(MediaSource.isTypeSupported(mediaType), `Media type not supported in this browser: isTypeSupported('${mediaType}')`);

        MediaSourceUtil.loadBinaryData(test, url, (mediaData) => {
            _testInvalidCodecWithData(test, mediaElement, mediaSource, mediaType, mediaData);
        });
    }

    function _testInvalidCodecWithData(test, mediaElement, mediaSource, mediaType, mediaData) {
        const sourceBuffer = mediaSource.addSourceBuffer(mediaType);
        sourceBuffer.appendBuffer(mediaData);
        test.expectEvent(sourceBuffer, 'error', 'Append ended with error');
        test.waitForExpectedEvents(() => {
            test.done();
        })
    }

    // These test cases provide a typical media MIME type, but the actual files have been mangled to declare a different,
    // unsupported, fictitious codec (MP4 fourcc: 'zzzz', WebM codec id 'V_ZZZ'). The browser should report a parsing
    // error.

    mediasource_test((test, mediaElement, mediaSource) => {
        testInvalidCodec(test, mediaElement, mediaSource, 'video/mp4;codecs="avc1.4D4001"', 'mp4/invalid-codec.mp4');
    }, 'Test an MP4 with an invalid codec results in an error.');

    mediasource_test((test, mediaElement, mediaSource) => {
        testInvalidCodec(test, mediaElement, mediaSource, 'video/webm; codecs="vp8"', 'webm/invalid-codec.webm');
    }, 'Test a WebM with an invalid codec results in an error.');

</script>
</body>
</html>