test_AbortAfterPartialMediaSegment.html (1720B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>MSE: can properly resume after a partial media segment header followed by abort </title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <script type="text/javascript" src="mediasource.js"></script> 7 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 8 </head> 9 <body> 10 <pre id="test"> 11 <script class="testbody" type="text/javascript"> 12 13 SimpleTest.waitForExplicitFinish(); 14 15 const VIDEO_CODEC_STRING = 'video/webm; codecs="vp09.00.51.08.01.01.01.01"'; 16 17 const logError = (error) => { 18 console.error(error, error.message); 19 ok(false, "should not reach here"); 20 }; 21 22 runWithMSE(async (ms, v) => { 23 await once(ms, "sourceopen"); 24 25 const supported = MediaSource.isTypeSupported(VIDEO_CODEC_STRING); 26 if (!supported) { 27 ok(true, "vp9 isn't supported on this platform, abort"); 28 SimpleTest.finish(); 29 return; 30 } 31 const sb = ms.addSourceBuffer(VIDEO_CODEC_STRING); 32 33 const arrayBuffer = await fetchWithXHR("1516754.webm"); 34 info("- append init segment, a media segment and a partial media segment header -"); 35 sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 87355 + 3000)); 36 37 info("- wait for updateend -"); 38 await once(sb, "updateend"); 39 40 // start seeking. 41 v.currentTime = 11; 42 v.addEventListener("seeked", () => { 43 info("- seek completed -"); 44 SimpleTest.finish(); 45 }); 46 47 sb.abort(); 48 49 info("- append init segment -"); 50 sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 3150)); 51 info("- wait for updateend -"); 52 await once(sb, "updateend"); 53 info("- append media segment 10-15s -"); 54 sb.appendBuffer(new Uint8Array(arrayBuffer, 159968, 72931)); 55 56 // We now wait for seek to complete 57 }); 58 59 </script> 60 </pre> 61 </body> 62 </html>