5 <title>SourceBuffer handling of invalid codecs in the initialization segment
</title>
6 <link rel=
"author" title=
"Alicia Boya GarcĂa" href=
"mailto:aboya@igalia.com">
7 <script src=
"/resources/testharness.js"></script>
8 <script src=
"/resources/testharnessreport.js"></script>
9 <script src=
"mediasource-util.js"></script>
14 function testInvalidCodec(test
, mediaElement
, mediaSource
, mediaType
, url
) {
15 assert_true(MediaSource
.isTypeSupported(mediaType
), `Media type not supported in this browser: isTypeSupported('${mediaType}')`);
17 MediaSourceUtil
.loadBinaryData(test
, url
, (mediaData
) => {
18 _testInvalidCodecWithData(test
, mediaElement
, mediaSource
, mediaType
, mediaData
);
22 function _testInvalidCodecWithData(test
, mediaElement
, mediaSource
, mediaType
, mediaData
) {
23 const sourceBuffer
= mediaSource
.addSourceBuffer(mediaType
);
24 sourceBuffer
.appendBuffer(mediaData
);
25 test
.expectEvent(sourceBuffer
, 'error', 'Append ended with error');
26 test
.waitForExpectedEvents(() => {
31 // These test cases provide a typical media MIME type, but the actual files have been mangled to declare a different,
32 // unsupported, fictitious codec (MP4 fourcc: 'zzzz', WebM codec id 'V_ZZZ'). The browser should report a parsing
35 mediasource_test((test
, mediaElement
, mediaSource
) => {
36 testInvalidCodec(test
, mediaElement
, mediaSource
, 'video/mp4;codecs="avc1.4D4001"', 'mp4/invalid-codec.mp4');
37 }, 'Test an MP4 with an invalid codec results in an error.');
39 mediasource_test((test
, mediaElement
, mediaSource
) => {
40 testInvalidCodec(test
, mediaElement
, mediaSource
, 'video/webm; codecs="vp8"', 'webm/invalid-codec.webm');
41 }, 'Test a WebM with an invalid codec results in an error.');