| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <title>MediaStream Recoder Browser Test (w/ MediaSource)</title> | 4 <title>MediaStream Recoder Browser Test (w/ MediaSource)</title> |
| 5 </head> | 5 </head> |
| 6 <body> | 6 <body> |
| 7 <div> Record Real-Time video content browser test.</div> | 7 <div> Record Real-Time video content browser test.</div> |
| 8 <video id="video" autoplay></video> | 8 <video id="video" autoplay></video> |
| 9 <video id="remoteVideo" autoplay></video> | 9 <video id="remoteVideo" autoplay></video> |
| 10 </body> | 10 </body> |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 return failTest(err.toString()); | 161 return failTest(err.toString()); |
| 162 }) | 162 }) |
| 163 .then(function() { | 163 .then(function() { |
| 164 reportTestSuccess(); | 164 reportTestSuccess(); |
| 165 }); | 165 }); |
| 166 } | 166 } |
| 167 | 167 |
| 168 // Tests that when MediaRecorder's start(0) function is called, some data is | 168 // Tests that when MediaRecorder's start(0) function is called, some data is |
| 169 // made available by media recorder via dataavailable events, containing non | 169 // made available by media recorder via dataavailable events, containing non |
| 170 // empty blob data. | 170 // empty blob data. |
| 171 function testStartAndDataAvailable(codec) { | 171 function testStartAndDataAvailable(mimeType) { |
| 172 var videoSize = 0; | 172 var videoSize = 0; |
| 173 var emptyBlobs = 0; | 173 var emptyBlobs = 0; |
| 174 var timeStamps = []; | 174 var timeStamps = []; |
| 175 const mimeType = codec ? "video/webm;codecs=" + String(codec) : ""; | |
| 176 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 175 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| 177 .then(function(stream) { | 176 .then(function(stream) { |
| 178 return createAndStartMediaRecorder(stream, mimeType); | 177 return createAndStartMediaRecorder(stream, mimeType); |
| 179 }) | 178 }) |
| 180 .then(function(recorder) { | 179 .then(function(recorder) { |
| 181 // Save history of Blobs received via dataavailable. | 180 // Save history of Blobs received via dataavailable. |
| 182 recorder.ondataavailable = function(event) { | 181 recorder.ondataavailable = function(event) { |
| 183 timeStamps.push(event.timeStamp); | 182 timeStamps.push(event.timeStamp); |
| 184 if (event.data.size > 0) | 183 if (event.data.size > 0) |
| 185 videoSize += event.data.size; | 184 videoSize += event.data.size; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 200 .catch(function(err) { | 199 .catch(function(err) { |
| 201 return failTest(err.toString()); | 200 return failTest(err.toString()); |
| 202 }) | 201 }) |
| 203 .then(function() { | 202 .then(function() { |
| 204 reportTestSuccess(); | 203 reportTestSuccess(); |
| 205 }); | 204 }); |
| 206 } | 205 } |
| 207 | 206 |
| 208 // Tests that when MediaRecorder's start(timeSlice) is called, some data | 207 // Tests that when MediaRecorder's start(timeSlice) is called, some data |
| 209 // available events are fired containing non empty blob data. | 208 // available events are fired containing non empty blob data. |
| 210 function testStartWithTimeSlice(codec) { | 209 function testStartWithTimeSlice(mimeType) { |
| 211 var videoSize = 0; | 210 var videoSize = 0; |
| 212 var emptyBlobs = 0; | 211 var emptyBlobs = 0; |
| 213 var timeStamps = []; | 212 var timeStamps = []; |
| 214 const mimeType = codec ? "video/webm;codecs=" + String(codec) : ""; | |
| 215 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 213 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| 216 .then(function(stream) { | 214 .then(function(stream) { |
| 217 return createAndStartMediaRecorder(stream, mimeType,
DEFAULT_TIME_SLICE); | 215 return createAndStartMediaRecorder(stream, mimeType, |
| 216 DEFAULT_TIME_SLICE); |
| 218 }) | 217 }) |
| 219 .then(function(recorder) { | 218 .then(function(recorder) { |
| 220 recorder.ondataavailable = function(event) { | 219 recorder.ondataavailable = function(event) { |
| 221 timeStamps.push(event.timeStamp); | 220 timeStamps.push(event.timeStamp); |
| 222 if (event.data.size > 0) | 221 if (event.data.size > 0) |
| 223 videoSize += event.data.size; | 222 videoSize += event.data.size; |
| 224 else | 223 else |
| 225 emptyBlobs += 1; | 224 emptyBlobs += 1; |
| 226 }; | 225 }; |
| 227 }) | 226 }) |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 .then(function(stream) { | 279 .then(function(stream) { |
| 281 return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); | 280 return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
| 282 }) | 281 }) |
| 283 .then(function(recorder) { | 282 .then(function(recorder) { |
| 284 assertThrows(function() {recorder.resume()}, 'Calling resume() in' + | 283 assertThrows(function() {recorder.resume()}, 'Calling resume() in' + |
| 285 ' inactive state should cause a DOM error'); | 284 ' inactive state should cause a DOM error'); |
| 286 }); | 285 }); |
| 287 } | 286 } |
| 288 | 287 |
| 289 // Tests that MediaRecorder sends data blobs when resume() is called. | 288 // Tests that MediaRecorder sends data blobs when resume() is called. |
| 290 function testResumeAndDataAvailable(codec) { | 289 function testResumeAndDataAvailable(mimeType) { |
| 291 var videoSize = 0; | 290 var videoSize = 0; |
| 292 var emptyBlobs = 0; | 291 var emptyBlobs = 0; |
| 293 const mimeType = codec ? "video/webm;codecs=" + String(codec) : ""; | |
| 294 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 292 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| 295 .then(function(stream) { | 293 .then(function(stream) { |
| 296 return createAndStartMediaRecorder(stream, mimeType); | 294 return createAndStartMediaRecorder(stream, mimeType); |
| 297 }) | 295 }) |
| 298 .then(function(recorder) { | 296 .then(function(recorder) { |
| 299 recorder.pause(); | 297 recorder.pause(); |
| 300 recorder.ondataavailable = function(event) { | 298 recorder.ondataavailable = function(event) { |
| 301 if (event.data.size > 0) { | 299 if (event.data.size > 0) { |
| 302 videoSize += event.data.size; | 300 videoSize += event.data.size; |
| 303 } else { | 301 } else { |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 .then(function(stream) { | 404 .then(function(stream) { |
| 407 return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); | 405 return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
| 408 }) | 406 }) |
| 409 .then(function(recorder) { | 407 .then(function(recorder) { |
| 410 assertThrows(function() {recorder.pause()}, 'Calling pause() in' + | 408 assertThrows(function() {recorder.pause()}, 'Calling pause() in' + |
| 411 ' inactive state should cause a DOM error'); | 409 ' inactive state should cause a DOM error'); |
| 412 }); | 410 }); |
| 413 } | 411 } |
| 414 | 412 |
| 415 // Tests that a remote peer connection stream can be successfully recorded. | 413 // Tests that a remote peer connection stream can be successfully recorded. |
| 416 function testRecordRemotePeerConnection(codec) { | 414 function testRecordRemotePeerConnection(mimeType) { |
| 417 var videoSize = 0; | 415 var videoSize = 0; |
| 418 var timeStamps = []; | 416 var timeStamps = []; |
| 419 const mimeType = codec ? "video/webm;codecs=" + String(codec) : ""; | |
| 420 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 417 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| 421 .then(function(localStream) { | 418 .then(function(localStream) { |
| 422 return setupPeerConnection(localStream); | 419 return setupPeerConnection(localStream); |
| 423 }) | 420 }) |
| 424 .then(function(remoteStream) { | 421 .then(function(remoteStream) { |
| 425 return createMediaRecorder(remoteStream, mimeType); | 422 return createMediaRecorder(remoteStream, mimeType); |
| 426 }) | 423 }) |
| 427 .then(function(recorder) { | 424 .then(function(recorder) { |
| 428 recorder.ondataavailable = function(event) { | 425 recorder.ondataavailable = function(event) { |
| 429 timeStamps.push(event.timeStamp); | 426 timeStamps.push(event.timeStamp); |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 return failTest(err.toString()); | 589 return failTest(err.toString()); |
| 593 }) | 590 }) |
| 594 .then(function() { | 591 .then(function() { |
| 595 reportTestSuccess(); | 592 reportTestSuccess(); |
| 596 }); | 593 }); |
| 597 } | 594 } |
| 598 | 595 |
| 599 </script> | 596 </script> |
| 600 </body> | 597 </body> |
| 601 </html> | 598 </html> |
| OLD | NEW |