test_mediaElementAudioSourceNodeVideo.html (1529B)
1 <!DOCTYPE HTML> 2 <html> 3 <meta charset="utf-8"> 4 <head> 5 <title>Test MediaElementAudioSourceNode before "loadedmetadata"</title> 6 <script src="/tests/SimpleTest/SimpleTest.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 SimpleTest.waitForExplicitFinish(); 13 14 var video = document.createElement("video"); 15 function test() { 16 video.src = "audiovideo.mp4"; 17 18 var context = new AudioContext(); 19 var complete = false; 20 21 video.onended = () => { 22 if (complete) { 23 return; 24 } 25 26 complete = true; 27 ok(false, "Video ended without any samples seen"); 28 SimpleTest.finish(); 29 }; 30 31 video.ontimeupdate = () => { 32 info("Timeupdate: " + video.currentTime); 33 }; 34 35 var node = context.createMediaElementSource(video); 36 var sp = context.createScriptProcessor(2048, 1); 37 node.connect(sp); 38 39 // This test ensures we receive some nonzero samples when we capture to 40 // WebAudio before "loadedmetadata". 41 sp.onaudioprocess = e => { 42 if (complete) { 43 return; 44 } 45 46 var buf = e.inputBuffer.getChannelData(0); 47 for (var i = 0; i < buf.length; ++i) { 48 if (buf[i] != 0) { 49 complete = true; 50 ok(true, "Got non-zero samples"); 51 SimpleTest.finish(); 52 return; 53 } 54 } 55 }; 56 57 video.play(); 58 } 59 60 if (video.canPlayType("video/mp4")) { 61 test(); 62 } else { 63 ok(true, "MP4 not supported. Skipping."); 64 SimpleTest.finish(); 65 } 66 67 </script> 68 </pre> 69 </body> 70 </html>