OLD | NEW |
(Empty) | |
| 1 function fetchManifestAndData(test, manifestFilename, callback) |
| 2 { |
| 3 var baseURL = '/media/resources/media-source/'; |
| 4 var manifestURL = baseURL + manifestFilename; |
| 5 MediaSourceUtil.loadTextData(test, manifestURL, function(manifestText) |
| 6 { |
| 7 var manifest = JSON.parse(manifestText); |
| 8 |
| 9 assert_true(MediaSource.isTypeSupported(manifest.type), manifest.type +
" is supported."); |
| 10 |
| 11 var mediaURL = baseURL + manifest.url; |
| 12 MediaSourceUtil.loadBinaryData(test, mediaURL, function(mediaData) |
| 13 { |
| 14 callback(manifest.type, mediaData); |
| 15 }); |
| 16 }); |
| 17 } |
| 18 |
| 19 function appendBuffer(test, sourceBuffer, data) |
| 20 { |
| 21 test.expectEvent(sourceBuffer, "update"); |
| 22 test.expectEvent(sourceBuffer, "updateend"); |
| 23 sourceBuffer.appendBuffer(data); |
| 24 } |
| 25 |
| 26 function mediaSourceConfigChangeTest(directory, idA, idB, description) |
| 27 { |
| 28 var manifestFilenameA = directory + "/test-" + idA + "-manifest.json"; |
| 29 var manifestFilenameB = directory + "/test-" + idB + "-manifest.json"; |
| 30 mediasource_test(function(test, mediaElement, mediaSource) |
| 31 { |
| 32 mediaElement.pause(); |
| 33 test.failOnEvent(mediaElement, 'error'); |
| 34 test.endOnEvent(mediaElement, 'ended'); |
| 35 |
| 36 fetchManifestAndData(test, manifestFilenameA, function(typeA, dataA) |
| 37 { |
| 38 fetchManifestAndData(test, manifestFilenameB, function(typeB, dataB) |
| 39 { |
| 40 assert_equals(typeA, typeB, "Media format types match"); |
| 41 |
| 42 var sourceBuffer = mediaSource.addSourceBuffer(typeA); |
| 43 |
| 44 appendBuffer(test, sourceBuffer, dataA); |
| 45 |
| 46 test.waitForExpectedEvents(function() |
| 47 { |
| 48 // Add the second buffer starting at 0.5 second. |
| 49 sourceBuffer.timestampOffset = 0.5; |
| 50 appendBuffer(test, sourceBuffer, dataB); |
| 51 }); |
| 52 |
| 53 test.waitForExpectedEvents(function() |
| 54 { |
| 55 // Add the first buffer starting at 1 second. |
| 56 sourceBuffer.timestampOffset = 1; |
| 57 appendBuffer(test, sourceBuffer, dataA); |
| 58 }); |
| 59 |
| 60 test.waitForExpectedEvents(function() |
| 61 { |
| 62 // Add the second buffer starting at 1.5 second. |
| 63 sourceBuffer.timestampOffset = 1.5; |
| 64 appendBuffer(test, sourceBuffer, dataB); |
| 65 }); |
| 66 |
| 67 test.waitForExpectedEvents(function() |
| 68 { |
| 69 // Truncate the presentation to a duration of 2 seconds. |
| 70 mediaSource.duration = 2; |
| 71 mediaSource.endOfStream(); |
| 72 |
| 73 mediaElement.play(); |
| 74 }); |
| 75 }); |
| 76 }); |
| 77 }, description, { timeout: 10000 } ); |
| 78 }; |
OLD | NEW |