Bug 1148103: P2. Add MP4 mediasource mochitests. r=karlt
authorJean-Yves Avenard <jyavenard@mozilla.com>
Fri, 10 Jul 2015 12:18:00 +0100
changeset 252262 40eefa29c76dd8ddb2b76c2919242ab6051023d6
parent 252261 233db46481d72fcd97f1716172b06f82f90c866a
child 252263 ac46c38d047ffcf447a8ea2ec3804b5d0aaf9ea5
push id62102
push userjyavenard@mozilla.com
push dateFri, 10 Jul 2015 11:21:47 +0000
treeherdermozilla-inbound@40eefa29c76d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerskarlt
bugs1148103
milestone42.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1148103: P2. Add MP4 mediasource mochitests. r=karlt This mostly replicates the webm tests using mp4 content. Minor functionality changes were applied as required: mostly related to webm bugs not applicable with mp4.
dom/media/mediasource/test/bipbop/bipbop2s.mp4
dom/media/mediasource/test/bipbop/bipbop2s.mp4^headers^
dom/media/mediasource/test/mochitest.ini
dom/media/mediasource/test/test_BufferedSeek_mp4.html
dom/media/mediasource/test/test_BufferingWait_mp4.html
dom/media/mediasource/test/test_DurationUpdated_mp4.html
dom/media/mediasource/test/test_EndOfStream_mp4.html
dom/media/mediasource/test/test_HaveMetadataUnbufferedSeek_mp4.html
dom/media/mediasource/test/test_LoadedMetadataFired_mp4.html
dom/media/mediasource/test/test_MediaSource_mp4.html
dom/media/mediasource/test/test_SeekableAfterEndOfStreamSplit_mp4.html
dom/media/mediasource/test/test_SeekableAfterEndOfStream_mp4.html
dom/media/mediasource/test/test_SeekableBeforeEndOfStreamSplit_mp4.html
dom/media/mediasource/test/test_SeekableBeforeEndOfStream_mp4.html
dom/media/mediasource/test/test_SplitAppendDelay_mp4.html
dom/media/mediasource/test/test_SplitAppend_mp4.html
dom/media/mediasource/test/test_TruncatedDuration_mp4.html
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4fd8b9cb6e1449c210e39c51c5e7a268c775d800
GIT binary patch
literal 48024
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
G+x`~_^hx*t
new file mode 100644
--- /dev/null
+++ b/dom/media/mediasource/test/bipbop/bipbop2s.mp4^headers^
@@ -0,0 +1,1 @@
+Cache-Control: no-store
--- a/dom/media/mediasource/test/mochitest.ini
+++ b/dom/media/mediasource/test/mochitest.ini
@@ -1,14 +1,15 @@
 [DEFAULT]
 skip-if = e10s || buildapp == 'b2g' # b2g( ReferenceError: MediaSource is not defined)
 support-files =
   mediasource.js
   seek.webm seek.webm^headers^
   seek_lowres.webm seek_lowres.webm^headers^
+  bipbop/bipbop2s.mp4 bipbop/bipbop2s.mp4^headers^
   bipbop/bipbopinit.mp4 bipbop/bipbop_audioinit.mp4 bipbop/bipbop_videoinit.mp4
   bipbop/bipbop1.m4s bipbop/bipbop_audio1.m4s bipbop/bipbop_video1.m4s
   bipbop/bipbop2.m4s bipbop/bipbop_audio2.m4s bipbop/bipbop_video2.m4s
   bipbop/bipbop3.m4s bipbop/bipbop_audio3.m4s bipbop/bipbop_video3.m4s
   bipbop/bipbop4.m4s bipbop/bipbop_audio4.m4s bipbop/bipbop_video4.m4s
   bipbop/bipbop5.m4s bipbop/bipbop_audio5.m4s bipbop/bipbop_video5.m4s
   bipbop/bipbop6.m4s bipbop/bipbop_audio6.m4s bipbop/bipbop_video6.m4s
   bipbop/bipbop7.m4s bipbop/bipbop_audio7.m4s bipbop/bipbop_video7.m4s
@@ -29,34 +30,62 @@ support-files =
   bipbop/bipbop8.m4s^headers^ bipbop/bipbop_audio8.m4s^headers^ bipbop/bipbop_video8.m4s^headers^
   bipbop/bipbop9.m4s^headers^ bipbop/bipbop_audio9.m4s^headers^ bipbop/bipbop_video9.m4s^headers^
   bipbop/bipbop10.m4s^headers^ bipbop/bipbop_audio10.m4s^headers^ bipbop/bipbop_video10.m4s^headers^
   bipbop/bipbop11.m4s^headers^ bipbop/bipbop_audio11.m4s^headers^ bipbop/bipbop_video11.m4s^headers^
   bipbop/bipbop12.m4s^headers^ bipbop/bipbop_video12.m4s^headers^
   bipbop/bipbop13.m4s^headers^ bipbop/bipbop_video13.m4s^headers^
 
 [test_BufferedSeek.html]
+[test_BufferedSeek_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_BufferingWait.html]
 skip-if = true # bug 1093133
+[test_BufferingWait_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_EndOfStream.html]
 skip-if = (toolkit == 'android' || buildapp == 'mulet') #timeout android/mulet only bug 1101187
+[test_EndOfStream_mp4.html]
+skip-if = (toolkit == 'android' || buildapp == 'mulet') || ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_DurationUpdated.html]
+[test_DurationUpdated_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_FrameSelection.html]
 [test_HaveMetadataUnbufferedSeek.html]
+[test_HaveMetadataUnbufferedSeek_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_LoadedMetadataFired.html]
+[test_LoadedMetadataFired_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_MediaSource.html]
+[test_MediaSource_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_MediaSource_disabled.html]
 [test_SeekableAfterEndOfStream.html]
+[test_SeekableAfterEndOfStream_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_SeekableAfterEndOfStreamSplit.html]
+[test_SeekableAfterEndOfStreamSplit_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_SeekableBeforeEndOfStream.html]
+[test_SeekableBeforeEndOfStream_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_SeekableBeforeEndOfStreamSplit.html]
+[test_SeekableBeforeEndOfStreamSplit_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_SeekTwice_mp4.html]
 skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_SetModeThrows.html]
 [test_SplitAppendDelay.html]
+[test_SplitAppendDelay_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_SplitAppend.html]
+[test_SplitAppend_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_TimestampOffset_mp4.html]
 skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_TruncatedDuration.html]
+[test_TruncatedDuration_mp4.html]
+skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
 [test_WaitingOnMissingData.html]
 skip-if = true # Disabled due to bug 1124493 and friends. WebM MSE is deprioritized.
 [test_WaitingOnMissingData_mp4.html]
 skip-if = ((os == "win" && os_version == "5.1") || (os != "win" && os != "mac")) # Only supported on osx and vista+
copy from dom/media/mediasource/test/test_BufferedSeek.html
copy to dom/media/mediasource/test/test_BufferedSeek_mp4.html
--- a/dom/media/mediasource/test/test_BufferedSeek.html
+++ b/dom/media/mediasource/test/test_BufferedSeek_mp4.html
@@ -11,32 +11,32 @@
 <script class="testbody" type="text/javascript">
 
 SimpleTest.waitForExplicitFinish();
 
 var updateCount = 0;
 
 runWithMSE(function (ms, v) {
   ms.addEventListener("sourceopen", function () {
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
       sb.appendBuffer(new Uint8Array(arrayBuffer));
       sb.addEventListener("updateend", function () {
         updateCount++;
         /* Ensure that we endOfStream on the first update event only as endOfStream can
            raise more if the duration of the last buffered range and the intial duration
            differ. See bug 1065207 */
         if (updateCount == 1) {
           ms.endOfStream();
         };
       });
     });
 
-    var target = 2;
+    var target = 1.3;
 
     v.addEventListener("loadedmetadata", function () {
       if (v.currentTime != target &&
           v.buffered.length &&
           target >= v.buffered.start(0) &&
           target < v.buffered.end(0)) {
         v.currentTime = target;
       }
copy from dom/media/mediasource/test/test_BufferingWait.html
copy to dom/media/mediasource/test/test_BufferingWait_mp4.html
--- a/dom/media/mediasource/test/test_BufferingWait.html
+++ b/dom/media/mediasource/test/test_BufferingWait_mp4.html
@@ -12,57 +12,54 @@
 SimpleTest.waitForExplicitFinish();
 
 var receivedSourceOpen = false;
 runWithMSE(function(ms, v) {
   ms.addEventListener("sourceopen", function() {
     ok(true, "Receive a sourceopen event");
     ok(!receivedSourceOpen, "Should only receive one sourceopen for this test");
     receivedSourceOpen = true;
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
     ok(sb, "Create a SourceBuffer");
 
     function waitUntilTime(targetTime) {
       return new Promise(function(resolve, reject) {
         v.addEventListener("waiting", function onwaiting() {
           info("Got a waiting event at " + v.currentTime);
           if (v.currentTime >= targetTime) {
             ok(true, "Reached target time of: " + targetTime);
             v.removeEventListener("waiting", onwaiting);
             resolve();
           }
         });
       });
     }
 
-    fetchWithXHR("seek.webm", function(arrayBuffer) {
-      sb.addEventListener('error', (e) => { ok(false, "Got Error: " + e); SimpleTest.finish(); });
-      loadSegment.bind(null, sb, new Uint8Array(arrayBuffer, 0, 318))().then(
-      loadSegment.bind(null, sb, new Uint8Array(arrayBuffer, 318, 25223-318))).then(
-      loadSegment.bind(null, sb, new Uint8Array(arrayBuffer, 25223, 46712-25223))).then(
-      /* Note - Missing |46712, 67833 - 46712| segment here corresponding to (0.8, 1.2] */
-      /* Note - Missing |67833, 88966 - 67833| segment here corresponding to (1.2, 1.6]  */
-      loadSegment.bind(null, sb, new Uint8Array(arrayBuffer, 88966))).then(function() {
-        var promise = waitUntilTime(0.7);
+    sb.addEventListener('error', (e) => { ok(false, "Got Error: " + e); SimpleTest.finish(); });
+    fetchAndLoad(sb, 'bipbop/bipbop', ['init'], '.mp4')
+    .then(fetchAndLoad.bind(null, sb, 'bipbop/bipbop', ['1'], '.m4s'))
+    .then(fetchAndLoad.bind(null, sb, 'bipbop/bipbop', ['2'], '.m4s'))
+    /* Note - Missing |bipbop3| segment here corresponding to (1.62, 2.41] */
+    /* Note - Missing |bipbop4| segment here corresponding to (2.41, 3.20]  */
+    .then(fetchAndLoad.bind(null, sb, 'bipbop/bipbop', ['5'], '.m4s'))
+    .then(function() {
+        var promise = waitUntilTime(1.4);
         info("Playing video. It should play for a bit, then fire 'waiting'");
         v.play();
         return promise;
       }).then(function() {
         window.firstStop = Date.now();
-        loadSegment(sb, new Uint8Array(arrayBuffer, 46712, 67833 - 46712));
-        return waitUntilTime(1.0);
+        fetchAndLoad(sb, 'bipbop/bipbop', ['3'], '.m4s');
+        return waitUntilTime(2.2);
       }).then(function() {
         var waitDuration = (Date.now() - window.firstStop) / 1000;
         ok(waitDuration < 15, "Should not spend an inordinate amount of time buffering: " + waitDuration);
-        SimpleTest.finish();
-        /* If we allow the rest of the stream to be played, we get stuck at
-           around 2s. See bug 1093133.
         once(v, 'ended', SimpleTest.finish.bind(SimpleTest));
-        return loadSegment(sb, new Uint8Array(arrayBuffer, 67833, 88966 - 67833));
-        */
-      });
-    });
+        return fetchAndLoad(sb, 'bipbop/bipbop', ['4'], '.m4s');
+      }).then(function() {
+        ms.endOfStream();
+      });;
   });
 });
 </script>
 </pre>
 </body>
 </html>
copy from dom/media/mediasource/test/test_DurationUpdated.html
copy to dom/media/mediasource/test/test_DurationUpdated_mp4.html
--- a/dom/media/mediasource/test/test_DurationUpdated.html
+++ b/dom/media/mediasource/test/test_DurationUpdated_mp4.html
@@ -12,48 +12,49 @@
 
 SimpleTest.waitForExplicitFinish();
 
 var updateCount = 0;
 var durationChangeCount = 0;
 
 runWithMSE(function (ms, v) {
   ms.addEventListener("sourceopen", function () {
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
-      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 318));
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
+      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 1395));
       sb.addEventListener("updateend", function () {
         updateCount++;
         if (updateCount == 1) {
           v.addEventListener("loadedmetadata", function () {
             v.addEventListener("durationchange", function () {
               durationChangeCount++;
             });
             // Set mediasource duration to 0, so future appendBuffer
             // will update the mediasource duration
             // setting ms.duration will fire updatestart/update/updateend
             // event as per w3c spec followed by a durationchange
             ms.duration = 0;
           });
         } else if (updateCount == 2) {
           // will fire updatestart/update/updateend
           // and a durationchange
-          sb.appendBuffer(new Uint8Array(arrayBuffer, 318));
+          sb.appendBuffer(new Uint8Array(arrayBuffer, 1395));
         } else if (updateCount == 3) {
           // this will not fire durationchange as new duration == old duration
           ms.endOfStream();
         }
       });
     });
   });
   ms.addEventListener("sourceended", function () {
-    // XXX: Duration should be exactly 4.0, see bug 1065207.
     is(durationChangeCount, 2, "durationchange not fired as many times as expected");
-    ok(Math.abs(v.duration - 4) <= 0.002, "Video has correct duration");
+    // The bipbop video doesn't start at 0. The old MSE code adjust the
+    // timestamps and ignore the audio track. The new one doesn't.
+    isfuzzy(v.duration, 1.696, 0.166, "Video has correct duration");
     SimpleTest.finish();
   });
 });
 
 </script>
 </pre>
 </body>
 </html>
copy from dom/media/mediasource/test/test_EndOfStream.html
copy to dom/media/mediasource/test/test_EndOfStream_mp4.html
--- a/dom/media/mediasource/test/test_EndOfStream.html
+++ b/dom/media/mediasource/test/test_EndOfStream_mp4.html
@@ -15,20 +15,20 @@ SimpleTest.waitForExplicitFinish();
 runWithMSE(function () {
   var ms = new MediaSource();
 
   var v = document.createElement("video");
   v.src = URL.createObjectURL(ms);
   document.body.appendChild(v);
 
   ms.addEventListener("sourceopen", function () {
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
-      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 88966));
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
+      sb.appendBuffer(new Uint8Array(arrayBuffer));
       var count = 0;
       sb.addEventListener("updateend", function () {
         ++count;
         if (count == 1) {
           setTimeout(function() {
                        var fail = false;
                        try {
                          ms.endOfStream();
copy from dom/media/mediasource/test/test_HaveMetadataUnbufferedSeek.html
copy to dom/media/mediasource/test/test_HaveMetadataUnbufferedSeek_mp4.html
--- a/dom/media/mediasource/test/test_HaveMetadataUnbufferedSeek.html
+++ b/dom/media/mediasource/test/test_HaveMetadataUnbufferedSeek_mp4.html
@@ -9,34 +9,36 @@
 <body>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 
 SimpleTest.waitForExplicitFinish();
 
 runWithMSE(function (ms, v) {
   ms.addEventListener("sourceopen", function () {
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
-      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 67833));
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
+      // 25819 is the offset of the first media segment's end
+      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 25819));
     });
 
-    var target = 2;
+    var target = 1.3;
 
     v.addEventListener("loadeddata", function onloadeddata() {
       v.removeEventListener("loadeddata", onloadeddata);
       ok(v.readyState >= v.HAVE_CURRENT_DATA, "readyState is >= CURRENT_DATA");
       v.currentTime = target;
     });
 
     v.addEventListener("seeking", function () {
       is(v.readyState, v.HAVE_METADATA, "readyState is HAVE_METADATA");
-      fetchWithXHR("seek.webm", function (arrayBuffer) {
-        sb.appendBuffer(new Uint8Array(arrayBuffer, 67833));
+      fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
+        // 25819 is the offset of the first media segment's end
+        sb.appendBuffer(new Uint8Array(arrayBuffer, 25819));
       });
     });
 
     v.addEventListener("seeked", function () {
       SimpleTest.finish();
     });
   });
 });
copy from dom/media/mediasource/test/test_LoadedMetadataFired.html
copy to dom/media/mediasource/test/test_LoadedMetadataFired_mp4.html
--- a/dom/media/mediasource/test/test_LoadedMetadataFired.html
+++ b/dom/media/mediasource/test/test_LoadedMetadataFired_mp4.html
@@ -9,27 +9,27 @@
 <body>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 
 SimpleTest.waitForExplicitFinish();
 
 runWithMSE(function (ms, v) {
   ms.addEventListener("sourceopen", function () {
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
 
     v.addEventListener("loadedmetadata", function () {
       ok(true, "Got loadedmetadata event");
-      is(v.videoWidth, 320, "videoWidth has correct initial value");
-      is(v.videoHeight, 240, "videoHeight has correct initial value");
+      is(v.videoWidth, 400, "videoWidth has correct initial value");
+      is(v.videoHeight, 300, "videoHeight has correct initial value");
       SimpleTest.finish();
     });
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
-      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 318));
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
+      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 1395));
       v.play();
     });
   });
 
 });
 
 </script>
 </pre>
copy from dom/media/mediasource/test/test_MediaSource.html
copy to dom/media/mediasource/test/test_MediaSource_mp4.html
--- a/dom/media/mediasource/test/test_MediaSource.html
+++ b/dom/media/mediasource/test/test_MediaSource_mp4.html
@@ -38,24 +38,24 @@ runWithMSE(function () {
   var loadedmetadataCount = 0;
   var updatestartCount = 0;
   var updateendCount = 0;
   var updateCount = 0;
 
   ms.addEventListener("sourceopen", function () {
     ok(true, "Receive a sourceopen event");
     is(ms.readyState, "open", "MediaSource must be in open state after sourceopen");
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
     ok(sb, "Create a SourceBuffer");
     is(ms.sourceBuffers.length, 1, "MediaSource.sourceBuffers is expected length");
     is(ms.sourceBuffers[0], sb, "SourceBuffer in list matches our SourceBuffer");
     is(ms.activeSourceBuffers.length, 0, "MediaSource.activeSourceBuffers is expected length");
 
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
       sb.appendBuffer(new Uint8Array(arrayBuffer));
       is(sb.updating, true, "SourceBuffer.updating is expected value after appendBuffer");
     });
 
     sb.addEventListener("update", function () {
       is(sb.updating, false, "SourceBuffer.updating is expected value in update event");
       updateCount++;
       /* Ensure that we endOfStream on the first update event only as endOfStream can
@@ -83,19 +83,20 @@ runWithMSE(function () {
     is(ms.readyState, "ended", "MediaSource must be in ended state after sourceended");
   });
 
   v.addEventListener("loadedmetadata", function () {
     loadedmetadataCount++;
   });
 
   v.addEventListener("ended", function () {
-    // XXX: Duration should be exactly 4.0, see bug 1065207.
-    ok(Math.abs(v.duration - 4) <= 0.002, "Video has correct duration");
-    ok(Math.abs(v.currentTime - 4) <= 0.002, "Video has played to end");
+    // The bipbop video doesn't start at 0. The old MSE code adjust the
+    // timestamps and ignore the audio track. The new one doesn't.
+    isfuzzy(v.duration, 1.696, 0.166, "Video has correct duration");
+    isfuzzy(v.currentTime, 1.696, 0.166, "Video has correct duration");
     // XXX: 2 update events can be received dueto duration differences, see bug 1065207.
     ok(updateCount == 1 || updateCount == 2, "update event received");
     ok(updateendCount == 1 || updateendCount == 2, "updateend event received");
     ok(updatestartCount == 1 || updatestartCount == 2, "updatestart event received");
     is(loadedmetadataCount, 1, "loadedmetadata event received");
     v.parentNode.removeChild(v);
     SimpleTest.finish();
   });
copy from dom/media/mediasource/test/test_SeekableAfterEndOfStreamSplit.html
copy to dom/media/mediasource/test/test_SeekableAfterEndOfStreamSplit_mp4.html
--- a/dom/media/mediasource/test/test_SeekableAfterEndOfStreamSplit.html
+++ b/dom/media/mediasource/test/test_SeekableAfterEndOfStreamSplit_mp4.html
@@ -9,33 +9,35 @@
 <body>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 
 SimpleTest.waitForExplicitFinish();
 
 runWithMSE(function (ms, v) {
   ms.addEventListener("sourceopen", function () {
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
-      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 25223));
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
+      // 25819 is the offset of the first media segment's end
+      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 25819));
       var updateCount = 0;
       sb.addEventListener("updateend", function () {
         updateCount++;
         if (updateCount == 1) {
-          sb.appendBuffer(new Uint8Array(arrayBuffer, 25223));
+          // 25819 is the offset of the first media segment's end
+          sb.appendBuffer(new Uint8Array(arrayBuffer, 25819));
         }
         else if (updateCount == 2) {
           ms.endOfStream();
         }
       });
     });
 
-    var target = 2;
+    var target = 1.3;
 
     v.addEventListener("loadedmetadata", function () {
       ok(v.seekable.length, "Resource is seekable");
       ok(v.seekable.length &&
           target >= v.seekable.start(0) &&
           target < v.seekable.end(0), "Target is within seekable range");
       SimpleTest.finish();
     });
copy from dom/media/mediasource/test/test_SeekableAfterEndOfStream.html
copy to dom/media/mediasource/test/test_SeekableAfterEndOfStream_mp4.html
--- a/dom/media/mediasource/test/test_SeekableAfterEndOfStream.html
+++ b/dom/media/mediasource/test/test_SeekableAfterEndOfStream_mp4.html
@@ -11,32 +11,32 @@
 <script class="testbody" type="text/javascript">
 
 SimpleTest.waitForExplicitFinish();
 
 var updateCount = 0;
 
 runWithMSE(function (ms, v) {
   ms.addEventListener("sourceopen", function () {
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
       sb.appendBuffer(new Uint8Array(arrayBuffer));
       sb.addEventListener("updateend", function () {
         updateCount++;
         /* Ensure that we endOfStream on the first update event only as endOfStream can
            raise more if the duration of the last buffered range and the intial duration
            differ. See bug 1065207 */
         if (updateCount == 1) {
           ms.endOfStream();
         };
       });
     });
 
-    var target = 2;
+    var target = 1.3;
 
     v.addEventListener("loadedmetadata", function () {
       ok(v.seekable.length, "Resource is seekable");
       ok(v.seekable.length &&
           target >= v.seekable.start(0) &&
           target < v.seekable.end(0), "Target is within seekable range");
       SimpleTest.finish();
     });
copy from dom/media/mediasource/test/test_SeekableBeforeEndOfStreamSplit.html
copy to dom/media/mediasource/test/test_SeekableBeforeEndOfStreamSplit_mp4.html
--- a/dom/media/mediasource/test/test_SeekableBeforeEndOfStreamSplit.html
+++ b/dom/media/mediasource/test/test_SeekableBeforeEndOfStreamSplit_mp4.html
@@ -9,27 +9,29 @@
 <body>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 
 SimpleTest.waitForExplicitFinish();
 
 runWithMSE(function (ms, v) {
   ms.addEventListener("sourceopen", function () {
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
-      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 25223));
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
+      // 25819 is the offset of the first media segment's end
+      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 25819));
       sb.addEventListener("updateend", function () {
         sb.removeEventListener('updateend', arguments.callee);
-        sb.appendBuffer(new Uint8Array(arrayBuffer, 25223));
+        // 25819 is the offset of the first media segment's end
+        sb.appendBuffer(new Uint8Array(arrayBuffer, 25819));
       });
     });
 
-    var target = 2;
+    var target = 1.3;
 
     v.addEventListener("loadedmetadata", function () {
       ok(v.seekable.length, "Resource is seekable");
       ok(v.seekable.length &&
           target >= v.seekable.start(0) &&
           target < v.seekable.end(0), "Target is within seekable range");
       SimpleTest.finish();
     });
copy from dom/media/mediasource/test/test_SeekableBeforeEndOfStream.html
copy to dom/media/mediasource/test/test_SeekableBeforeEndOfStream_mp4.html
--- a/dom/media/mediasource/test/test_SeekableBeforeEndOfStream.html
+++ b/dom/media/mediasource/test/test_SeekableBeforeEndOfStream_mp4.html
@@ -9,23 +9,23 @@
 <body>
 <pre id="test">
 <script class="testbody" type="text/javascript">
 
 SimpleTest.waitForExplicitFinish();
 
 runWithMSE(function (ms, v) {
   ms.addEventListener("sourceopen", function () {
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
       sb.appendBuffer(new Uint8Array(arrayBuffer));
     });
 
-    var target = 2;
+    var target = 1.3;
 
     v.addEventListener("loadedmetadata", function () {
       ok(v.seekable.length, "Resource is seekable");
       ok(v.seekable.length &&
           target >= v.seekable.start(0) &&
           target < v.seekable.end(0), "Target is within seekable range");
       SimpleTest.finish();
     });
copy from dom/media/mediasource/test/test_SplitAppendDelay.html
copy to dom/media/mediasource/test/test_SplitAppendDelay_mp4.html
--- a/dom/media/mediasource/test/test_SplitAppendDelay.html
+++ b/dom/media/mediasource/test/test_SplitAppendDelay_mp4.html
@@ -12,39 +12,40 @@
 
 SimpleTest.waitForExplicitFinish();
 SimpleTest.requestFlakyTimeout("untriaged");
 
 var updateCount = 0;
 
 runWithMSE(function (ms, v) {
   ms.addEventListener("sourceopen", function () {
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
-      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 318));
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
+      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 1395));
       sb.addEventListener("updateend", function () {
         updateCount++;
         if (updateCount == 1) {
           window.setTimeout(function () {
-            sb.appendBuffer(new Uint8Array(arrayBuffer, 318));
+            sb.appendBuffer(new Uint8Array(arrayBuffer, 1395));
           }, 1000);
         }
         else if (updateCount == 2) {
           ms.endOfStream();
         }
       });
       v.play();
     });
   });
 
   v.addEventListener("ended", function () {
-    // XXX: Duration should be exactly 4.0, see bug 1065207.
-    ok(Math.abs(v.duration - 4) <= 0.002, "Video has correct duration");
-    ok(Math.abs(v.currentTime - 4) <= 0.002, "Video has played to end");
+    // The bipbop video doesn't start at 0. The old MSE code adjust the
+    // timestamps and ignore the audio track. The new one doesn't.
+    isfuzzy(v.duration, 1.696, 0.166, "Video has correct duration");
+    isfuzzy(v.currentTime, 1.696, 0.166, "Video has played to end");
     SimpleTest.finish();
   });
 });
 
 </script>
 </pre>
 </body>
 </html>
copy from dom/media/mediasource/test/test_SplitAppend.html
copy to dom/media/mediasource/test/test_SplitAppend_mp4.html
--- a/dom/media/mediasource/test/test_SplitAppend.html
+++ b/dom/media/mediasource/test/test_SplitAppend_mp4.html
@@ -11,37 +11,38 @@
 <script class="testbody" type="text/javascript">
 
 SimpleTest.waitForExplicitFinish();
 
 var updateCount = 0;
 
 runWithMSE(function (ms, v) {
   ms.addEventListener("sourceopen", function () {
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
-      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 318));
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
+      sb.appendBuffer(new Uint8Array(arrayBuffer, 0, 1395));
       sb.addEventListener("updateend", function () {
         updateCount++;
         if (updateCount == 1) {
-          sb.appendBuffer(new Uint8Array(arrayBuffer, 318));
+          sb.appendBuffer(new Uint8Array(arrayBuffer, 1395));
         }
         else if (updateCount == 2) {
           ms.endOfStream();
         }
       });
       v.play();
     });
   });
 
   v.addEventListener("ended", function () {
-    // XXX: Duration should be exactly 4.0, see bug 1065207.
-    ok(Math.abs(v.duration - 4) <= 0.002, "Video has correct duration");
-    ok(Math.abs(v.currentTime - 4) <= 0.002, "Video has played to end");
+    // The bipbop video doesn't start at 0. The old MSE code adjust the
+    // timestamps and ignore the audio track. The new one doesn't.
+    isfuzzy(v.duration, 1.696, 0.166, "Video has correct duration");
+    isfuzzy(v.currentTime, 1.696, 0.166, "Video has played to end");
     SimpleTest.finish();
   });
 });
 
 </script>
 </pre>
 </body>
 </html>
copy from dom/media/mediasource/test/test_TruncatedDuration.html
copy to dom/media/mediasource/test/test_TruncatedDuration_mp4.html
--- a/dom/media/mediasource/test/test_TruncatedDuration.html
+++ b/dom/media/mediasource/test/test_TruncatedDuration_mp4.html
@@ -43,29 +43,32 @@ function do_seeked(e) {
   is(v._sb.buffered.length, 1, "One buffered range");
   // Truncated mediasource duration will cause the video element to seek.
   v.addEventListener("seeking", do_seeking, false);
 }
 
 function do_loaded(e) {
   var v = e.target;
   v.removeEventListener("loadeddata", do_loaded, false);
+  // mp4 metadata states 10s when we only have 1.6s worth of video.
+  v._ms.duration = v._sb.buffered.end(0);
+  is(v.duration, v._ms.duration, "current time updated with mediasource duration");
   v.currentTime = v.duration / 2;
   is(v.currentTime, v.duration / 2, "current time was updated");
   ok(v.seeking, "seeking is true");
   v.addEventListener("seeked", do_seeked, false);
 }
 
 runWithMSE(function (ms, v) {
   ms.addEventListener("sourceopen", function () {
-    var sb = ms.addSourceBuffer("video/webm");
+    var sb = ms.addSourceBuffer("video/mp4");
     v._sb = sb;
     v._ms = ms;
 
-    fetchWithXHR("seek.webm", function (arrayBuffer) {
+    fetchWithXHR("bipbop/bipbop2s.mp4", function (arrayBuffer) {
       sb.appendBuffer(new Uint8Array(arrayBuffer));
       v.addEventListener("loadeddata", do_loaded, false);
     });
   });
 });
 
 </script>
 </pre>