test_DifferentStreamStartTimes.html (1597B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>MSE: Mismatched stream start time playback test</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 runWithMSE(async (ms, el) => { 15 el.controls = true; 16 el.autoplay = true; 17 for (let i = 0; i <= 0.5; i += 0.1) { 18 const offset = i.toFixed(1); 19 20 info("----------------------"); 21 info("Running test for mismatched stream start times with offset of: " + offset); 22 info("----------------------"); 23 24 ms = new MediaSource(); 25 el.removeAttribute("src"); 26 el.src = URL.createObjectURL(ms); 27 28 await once(ms, "sourceopen"); 29 logEvents(el); 30 const videosb = ms.addSourceBuffer("video/mp4"); 31 ok(true, "Receive a sourceopen event"); 32 33 el.addEventListener("error", e => { 34 ok(false, `should not fire ${e.type} event`); 35 SimpleTest.finish(); 36 }); 37 38 let p = once(el, "loadedmetadata"); 39 await fetchAndLoad(videosb, "bipbop/bipbop_offset_" + offset + "-", ["init"], ".mp4"); 40 await p; 41 ok(true, "got loadedmetadata event"); 42 43 p = Promise.all(["loadeddata", "canplay", "play", "playing"].map(e => once(el, e))); 44 await fetchAndLoad(videosb, "bipbop/bipbop_offset_" + offset + "-", range(1, 2), ".m4s"); 45 el.play(); 46 await p; 47 } 48 ok(true, "got all required event"); 49 SimpleTest.finish(); 50 }); 51 </script> 52 </pre> 53 </body> 54 </html>