mediasource-addsourcebuffer.html (7438B)
1 <!DOCTYPE html> 2 <!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> 3 <html> 4 <head> 5 <title>MediaSource.addSourceBuffer() test cases</title> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="mediasource-util.js"></script> 9 </head> 10 <body> 11 <div id="log"></div> 12 <script> 13 mediasource_test(function(test, mediaElement, mediaSource) 14 { 15 mediaSource.endOfStream(); 16 assert_throws_dom("InvalidStateError", 17 function() { mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); }, 18 "addSourceBuffer() threw an exception when in 'ended' state."); 19 test.done(); 20 }, "Test addSourceBuffer() in 'ended' state."); 21 22 mediasource_test(function(test, mediaElement, mediaSource) 23 { 24 assert_throws_js(TypeError, 25 function() { mediaSource.addSourceBuffer(""); }, 26 "addSourceBuffer() threw an exception when passed an empty string."); 27 test.done(); 28 }, "Test addSourceBuffer() with empty type"); 29 30 mediasource_test(function(test, mediaElement, mediaSource) 31 { 32 assert_throws_dom("NotSupportedError", 33 function() { mediaSource.addSourceBuffer(null); }, 34 "addSourceBuffer() threw an exception when passed null."); 35 test.done(); 36 }, "Test addSourceBuffer() with null"); 37 38 mediasource_test(function(test, mediaElement, mediaSource) 39 { 40 assert_throws_dom("NotSupportedError", 41 function() { mediaSource.addSourceBuffer("invalidType"); }, 42 "addSourceBuffer() threw an exception for an unsupported type."); 43 test.done(); 44 }, "Test addSourceBuffer() with unsupported type"); 45 46 mediasource_test(function(test, mediaElement, mediaSource) 47 { 48 var mimetype = 'video/webm;codecs="vp8,vorbis"'; 49 50 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is supported"); 51 52 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); 53 assert_true(sourceBuffer != null, "New SourceBuffer returned"); 54 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceBuffer is in mediaSource.sourceBuffers"); 55 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBuffer is not in mediaSource.activeSourceBuffers"); 56 test.done(); 57 }, "Test addSourceBuffer() with Vorbis and VP8"); 58 59 mediasource_test(function(test, mediaElement, mediaSource) 60 { 61 var videoMimetype = 'video/webm;codecs="vp8"'; 62 var audioMimetype = 'audio/webm;codecs="vorbis"'; 63 64 assert_true(MediaSource.isTypeSupported(videoMimetype), videoMimetype + " is supported"); 65 assert_true(MediaSource.isTypeSupported(audioMimetype), audioMimetype + " is supported"); 66 67 var sourceBufferA = mediaSource.addSourceBuffer(videoMimetype); 68 var sourceBufferB = mediaSource.addSourceBuffer(audioMimetype); 69 assert_equals(mediaSource.sourceBuffers[0], sourceBufferA, "sourceBufferA is in mediaSource.sourceBuffers"); 70 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBufferA is not in mediaSource.activeSourceBuffers"); 71 assert_equals(mediaSource.sourceBuffers[1], sourceBufferB, "sourceBufferB is in mediaSource.sourceBuffers"); 72 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBufferB is not in mediaSource.activeSourceBuffers"); 73 test.done(); 74 }, "Test addSourceBuffer() with Vorbis and VP8 in separate SourceBuffers"); 75 76 mediasource_test(function(test, mediaElement, mediaSource) 77 { 78 var mimetype = MediaSourceUtil.VIDEO_ONLY_TYPE; 79 80 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is supported"); 81 82 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); 83 assert_true(sourceBuffer != null, "New SourceBuffer returned"); 84 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceBuffer is in mediaSource.sourceBuffers"); 85 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBuffer is not in mediaSource.activeSourceBuffers"); 86 test.done(); 87 }, "Test addSourceBuffer() video only"); 88 89 mediasource_test(function(test, mediaElement, mediaSource) 90 { 91 var mimetype = MediaSourceUtil.AUDIO_ONLY_TYPE; 92 93 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is supported"); 94 95 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); 96 assert_true(sourceBuffer != null, "New SourceBuffer returned"); 97 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceBuffer is in mediaSource.sourceBuffers"); 98 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBuffer is not in mediaSource.activeSourceBuffers"); 99 test.done(); 100 }, "Test addSourceBuffer() audio only"); 101 102 mediasource_test(function(test, mediaElement, mediaSource) 103 { 104 var mimetype = 'video/mp4;codecs="avc1.4D4001,mp4a.40.2"'; 105 106 assert_true(MediaSource.isTypeSupported(mimetype), mimetype + " is supported"); 107 108 var sourceBuffer = mediaSource.addSourceBuffer(mimetype); 109 assert_true(sourceBuffer != null, "New SourceBuffer returned"); 110 assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceBuffer is in mediaSource.sourceBuffers"); 111 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBuffer is not in mediaSource.activeSourceBuffers"); 112 test.done(); 113 }, "Test addSourceBuffer() with AAC and H.264"); 114 115 mediasource_test(function(test, mediaElement, mediaSource) 116 { 117 var videoMimetype = 'video/mp4;codecs="avc1.4D4001"'; 118 var audioMimetype = 'audio/mp4;codecs="mp4a.40.2"'; 119 120 assert_true(MediaSource.isTypeSupported(videoMimetype), videoMimetype + " is supported"); 121 assert_true(MediaSource.isTypeSupported(audioMimetype), audioMimetype + " is supported"); 122 123 var sourceBufferA = mediaSource.addSourceBuffer(videoMimetype); 124 var sourceBufferB = mediaSource.addSourceBuffer(audioMimetype); 125 assert_equals(mediaSource.sourceBuffers[0], sourceBufferA, "sourceBufferA is in mediaSource.sourceBuffers"); 126 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBufferA is not in mediaSource.activeSourceBuffers"); 127 assert_equals(mediaSource.sourceBuffers[1], sourceBufferB, "sourceBufferB is in mediaSource.sourceBuffers"); 128 assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBufferB is not in mediaSource.activeSourceBuffers"); 129 test.done(); 130 }, "Test addSourceBuffer() with AAC and H.264 in separate SourceBuffers"); 131 </script> 132 </body> 133 </html>