| 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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   85  |   85  | 
|   86 function createAndStartMediaRecorder(stream, mimeType, slice) { |   86 function createAndStartMediaRecorder(stream, mimeType, slice) { | 
|   87   return new Promise(function(resolve, reject) { |   87   return new Promise(function(resolve, reject) { | 
|   88     document.getElementById('video').src = URL.createObjectURL(stream); |   88     document.getElementById('video').src = URL.createObjectURL(stream); | 
|   89     var recorder = new MediaRecorder(stream, {'mimeType' : mimeType}); |   89     var recorder = new MediaRecorder(stream, {'mimeType' : mimeType}); | 
|   90     console.log('Recorder object created, mimeType = ' + mimeType); |   90     console.log('Recorder object created, mimeType = ' + mimeType); | 
|   91     if (slice != undefined) { |   91     if (slice != undefined) { | 
|   92       recorder.start(slice); |   92       recorder.start(slice); | 
|   93       console.log('Recorder started with time slice', slice); |   93       console.log('Recorder started with time slice', slice); | 
|   94     } else { |   94     } else { | 
|   95       recorder.start(); |   95       recorder.start(0); | 
|   96     } |   96     } | 
|   97     resolve(recorder); |   97     resolve(recorder); | 
|   98   }); |   98   }); | 
|   99 } |   99 } | 
|  100  |  100  | 
|  101 function createMediaRecorder(stream, mimeType) { |  101 function createMediaRecorder(stream, mimeType) { | 
|  102   return new Promise(function(resolve, reject) { |  102   return new Promise(function(resolve, reject) { | 
|  103     var recorder = new MediaRecorder(stream, {'mimeType' : mimeType}); |  103     var recorder = new MediaRecorder(stream, {'mimeType' : mimeType}); | 
|  104     console.log('Recorder object created.'); |  104     console.log('Recorder object created.'); | 
|  105     resolve(recorder); |  105     resolve(recorder); | 
|  106   }); |  106   }); | 
|  107 } |  107 } | 
|  108  |  108  | 
|  109 // Tests that the MediaRecorder's start() function will cause the |state| to be |  109 // Tests that the MediaRecorder's start(0) function will cause the |state| to be | 
|  110 // 'recording' and that a 'start' event is fired. |  110 // 'recording' and that a 'start' event is fired. | 
|  111 function testStartAndRecorderState() { |  111 function testStartAndRecorderState() { | 
|  112   var startEventReceived = false; |  112   var startEventReceived = false; | 
|  113   navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |  113   navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 
|  114       .then(function(stream) { |  114       .then(function(stream) { | 
|  115         return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |  115         return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); | 
|  116       }) |  116       }) | 
|  117       .then(function(recorder) { |  117       .then(function(recorder) { | 
|  118         recorder = recorder; |  118         recorder = recorder; | 
|  119         recorder.onstart = function(event) { |  119         recorder.onstart = function(event) { | 
|  120           startEventReceived = true; |  120           startEventReceived = true; | 
|  121           assertEquals('recording', recorder.state); |  121           assertEquals('recording', recorder.state); | 
|  122         }; |  122         }; | 
|  123         recorder.start(); |  123         recorder.start(0); | 
|  124       }) |  124       }) | 
|  125       .then(function() { |  125       .then(function() { | 
|  126         return waitFor('Make sure the start event was received', |  126         return waitFor('Make sure the start event was received', | 
|  127             function() { |  127             function() { | 
|  128               return startEventReceived; |  128               return startEventReceived; | 
|  129             }); |  129             }); | 
|  130       }) |  130       }) | 
|  131       .catch(function(err) { |  131       .catch(function(err) { | 
|  132         return failTest(err.toString()); |  132         return failTest(err.toString()); | 
|  133       }) |  133       }) | 
| (...skipping 24 matching lines...) Expand all  Loading... | 
|  158             }); |  158             }); | 
|  159       }) |  159       }) | 
|  160       .catch(function(err) { |  160       .catch(function(err) { | 
|  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() 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(codec) { | 
|  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) : ""; |  175   const mimeType = codec ? "video/webm;codecs=" + String(codec) : ""; | 
|  176   navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |  176   navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 
|  177       .then(function(stream) { |  177       .then(function(stream) { | 
|  178         return createAndStartMediaRecorder(stream, mimeType); |  178         return createAndStartMediaRecorder(stream, mimeType); | 
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  422         return setupPeerConnection(localStream); |  422         return setupPeerConnection(localStream); | 
|  423       }) |  423       }) | 
|  424       .then(function(remoteStream) { |  424       .then(function(remoteStream) { | 
|  425         return createMediaRecorder(remoteStream, mimeType); |  425         return createMediaRecorder(remoteStream, mimeType); | 
|  426       }) |  426       }) | 
|  427       .then(function(recorder) { |  427       .then(function(recorder) { | 
|  428         recorder.ondataavailable = function(event) { |  428         recorder.ondataavailable = function(event) { | 
|  429           timeStamps.push(event.timeStamp); |  429           timeStamps.push(event.timeStamp); | 
|  430           videoSize += event.data.size; |  430           videoSize += event.data.size; | 
|  431         }; |  431         }; | 
|  432         recorder.start(); |  432         recorder.start(0); | 
|  433       }) |  433       }) | 
|  434       .then(function() { |  434       .then(function() { | 
|  435         return waitFor('Making sure the recording has data', |  435         return waitFor('Making sure the recording has data', | 
|  436             function() { |  436             function() { | 
|  437               return videoSize > 0 && timeStamps.length > 100; |  437               return videoSize > 0 && timeStamps.length > 100; | 
|  438             }); |  438             }); | 
|  439       }) |  439       }) | 
|  440       .catch(function(err) { |  440       .catch(function(err) { | 
|  441         return failTest(err.toString()); |  441         return failTest(err.toString()); | 
|  442       }) |  442       }) | 
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  493   oscillator.type = 'sine'; |  493   oscillator.type = 'sine'; | 
|  494   oscillator.frequency.value = FREQUENCY; |  494   oscillator.frequency.value = FREQUENCY; | 
|  495   var dest = context.createMediaStreamDestination(); |  495   var dest = context.createMediaStreamDestination(); | 
|  496   dest.channelCount = 2; |  496   dest.channelCount = 2; | 
|  497   oscillator.connect(dest); |  497   oscillator.connect(dest); | 
|  498   createMediaRecorder(dest.stream, DEFAULT_RECORDER_MIME_TYPE) |  498   createMediaRecorder(dest.stream, DEFAULT_RECORDER_MIME_TYPE) | 
|  499       .then(function(recorder) { |  499       .then(function(recorder) { | 
|  500         recorder.ondataavailable = function(event) { |  500         recorder.ondataavailable = function(event) { | 
|  501           audioSize += event.data.size; |  501           audioSize += event.data.size; | 
|  502         }; |  502         }; | 
|  503         recorder.start(); |  503         recorder.start(0); | 
|  504         oscillator.start(); |  504         oscillator.start(); | 
|  505         context.startRendering(); |  505         context.startRendering(); | 
|  506       }) |  506       }) | 
|  507       .then(function() { |  507       .then(function() { | 
|  508         return waitFor('Make sure the recording has data', |  508         return waitFor('Make sure the recording has data', | 
|  509             function() { |  509             function() { | 
|  510               return audioSize > 0; |  510               return audioSize > 0; | 
|  511             }); |  511             }); | 
|  512       }) |  512       }) | 
|  513       .catch(function(err) { |  513       .catch(function(err) { | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
|  540   var errorEventReceived = false; |  540   var errorEventReceived = false; | 
|  541   navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |  541   navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 
|  542       .then(function(stream) { |  542       .then(function(stream) { | 
|  543         theStream = stream; |  543         theStream = stream; | 
|  544         return createMediaRecorder(stream); |  544         return createMediaRecorder(stream); | 
|  545       }) |  545       }) | 
|  546       .then(function(recorder) { |  546       .then(function(recorder) { | 
|  547         recorder.onerror = function(event) { |  547         recorder.onerror = function(event) { | 
|  548           errorEventReceived = true; |  548           errorEventReceived = true; | 
|  549         }; |  549         }; | 
|  550         recorder.start(); |  550         recorder.start(0); | 
|  551         // Add a new track, copy of an existing one for simplicity. |  551         // Add a new track, copy of an existing one for simplicity. | 
|  552         theStream.addTrack(theStream.getTracks()[1].clone()); |  552         theStream.addTrack(theStream.getTracks()[1].clone()); | 
|  553       }) |  553       }) | 
|  554       .then(function() { |  554       .then(function() { | 
|  555         return waitFor('Waiting for the Error Event', |  555         return waitFor('Waiting for the Error Event', | 
|  556             function() { |  556             function() { | 
|  557               return errorEventReceived; |  557               return errorEventReceived; | 
|  558             }); |  558             }); | 
|  559       }) |  559       }) | 
|  560       .catch(function(err) { |  560       .catch(function(err) { | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
|  572   var errorEventReceived = false; |  572   var errorEventReceived = false; | 
|  573   navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |  573   navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 
|  574       .then(function(stream) { |  574       .then(function(stream) { | 
|  575         theStream = stream; |  575         theStream = stream; | 
|  576         return createMediaRecorder(stream); |  576         return createMediaRecorder(stream); | 
|  577       }) |  577       }) | 
|  578       .then(function(recorder) { |  578       .then(function(recorder) { | 
|  579         recorder.onerror = function(event) { |  579         recorder.onerror = function(event) { | 
|  580           errorEventReceived = true; |  580           errorEventReceived = true; | 
|  581         }; |  581         }; | 
|  582         recorder.start(); |  582         recorder.start(0); | 
|  583         theStream.removeTrack(theStream.getTracks()[1]); |  583         theStream.removeTrack(theStream.getTracks()[1]); | 
|  584       }) |  584       }) | 
|  585       .then(function() { |  585       .then(function() { | 
|  586         return waitFor('Waiting for the Error Event', |  586         return waitFor('Waiting for the Error Event', | 
|  587             function() { |  587             function() { | 
|  588               return errorEventReceived; |  588               return errorEventReceived; | 
|  589             }); |  589             }); | 
|  590       }) |  590       }) | 
|  591       .catch(function(err) { |  591       .catch(function(err) { | 
|  592         return failTest(err.toString()); |  592         return failTest(err.toString()); | 
|  593       }) |  593       }) | 
|  594       .then(function() { |  594       .then(function() { | 
|  595         reportTestSuccess(); |  595         reportTestSuccess(); | 
|  596       }); |  596       }); | 
|  597 } |  597 } | 
|  598  |  598  | 
|  599 </script> |  599 </script> | 
|  600 </body> |  600 </body> | 
|  601 </html> |  601 </html> | 
| OLD | NEW |