OLD | NEW |
| 1 // Extract & return the resolution string from a filename, if any. |
| 2 function resolutionFromFilename(filename) |
| 3 { |
| 4 resolution = filename.replace(/^.*[^0-9]([0-9]+x[0-9]+)[^0-9].*$/, "$1"); |
| 5 if (resolution != filename) { |
| 6 return resolution; |
| 7 } |
| 8 return ""; |
| 9 } |
| 10 |
1 function appendBuffer(test, sourceBuffer, data) | 11 function appendBuffer(test, sourceBuffer, data) |
2 { | 12 { |
3 test.expectEvent(sourceBuffer, "update"); | 13 test.expectEvent(sourceBuffer, "update"); |
4 test.expectEvent(sourceBuffer, "updateend"); | 14 test.expectEvent(sourceBuffer, "updateend"); |
5 sourceBuffer.appendBuffer(data); | 15 sourceBuffer.appendBuffer(data); |
6 } | 16 } |
7 | 17 |
8 function mediaSourceConfigChangeTest(directory, idA, idB, description) | 18 function mediaSourceConfigChangeTest(directory, idA, idB, description) |
9 { | 19 { |
10 var manifestFilenameA = directory + "/test-" + idA + "-manifest.json"; | 20 var manifestFilenameA = directory + "/test-" + idA + "-manifest.json"; |
11 var manifestFilenameB = directory + "/test-" + idB + "-manifest.json"; | 21 var manifestFilenameB = directory + "/test-" + idB + "-manifest.json"; |
12 mediasource_test(function(test, mediaElement, mediaSource) | 22 mediasource_test(function(test, mediaElement, mediaSource) |
13 { | 23 { |
14 mediaElement.pause(); | 24 mediaElement.pause(); |
15 test.failOnEvent(mediaElement, 'error'); | 25 test.failOnEvent(mediaElement, 'error'); |
16 test.endOnEvent(mediaElement, 'ended'); | 26 var expectResizeEvents = resolutionFromFilename(manifestFilenameA) != re
solutionFromFilename(manifestFilenameB); |
| 27 var expectedResizeEventCount = 0; |
17 | 28 |
18 MediaSourceUtil.fetchManifestAndData(test, manifestFilenameA, function(t
ypeA, dataA) | 29 MediaSourceUtil.fetchManifestAndData(test, manifestFilenameA, function(t
ypeA, dataA) |
19 { | 30 { |
20 MediaSourceUtil.fetchManifestAndData(test, manifestFilenameB, functi
on(typeB, dataB) | 31 MediaSourceUtil.fetchManifestAndData(test, manifestFilenameB, functi
on(typeB, dataB) |
21 { | 32 { |
22 assert_equals(typeA, typeB, "Media format types match"); | 33 assert_equals(typeA, typeB, "Media format types match"); |
23 | 34 |
24 var sourceBuffer = mediaSource.addSourceBuffer(typeA); | 35 var sourceBuffer = mediaSource.addSourceBuffer(typeA); |
25 | 36 |
26 appendBuffer(test, sourceBuffer, dataA); | 37 appendBuffer(test, sourceBuffer, dataA); |
27 | 38 |
28 test.waitForExpectedEvents(function() | 39 test.waitForExpectedEvents(function() |
29 { | 40 { |
30 // Add the second buffer starting at 0.5 second. | 41 // Add the second buffer starting at 0.5 second. |
31 sourceBuffer.timestampOffset = 0.5; | 42 sourceBuffer.timestampOffset = 0.5; |
32 appendBuffer(test, sourceBuffer, dataB); | 43 appendBuffer(test, sourceBuffer, dataB); |
| 44 ++expectedResizeEventCount; |
33 }); | 45 }); |
34 | 46 |
35 test.waitForExpectedEvents(function() | 47 test.waitForExpectedEvents(function() |
36 { | 48 { |
37 // Add the first buffer starting at 1 second. | 49 // Add the first buffer starting at 1 second. |
38 sourceBuffer.timestampOffset = 1; | 50 sourceBuffer.timestampOffset = 1; |
39 appendBuffer(test, sourceBuffer, dataA); | 51 appendBuffer(test, sourceBuffer, dataA); |
| 52 ++expectedResizeEventCount; |
40 }); | 53 }); |
41 | 54 |
42 test.waitForExpectedEvents(function() | 55 test.waitForExpectedEvents(function() |
43 { | 56 { |
44 // Add the second buffer starting at 1.5 second. | 57 // Add the second buffer starting at 1.5 second. |
45 sourceBuffer.timestampOffset = 1.5; | 58 sourceBuffer.timestampOffset = 1.5; |
46 appendBuffer(test, sourceBuffer, dataB); | 59 appendBuffer(test, sourceBuffer, dataB); |
| 60 ++expectedResizeEventCount; |
47 }); | 61 }); |
48 | 62 |
49 test.waitForExpectedEvents(function() | 63 test.waitForExpectedEvents(function() |
50 { | 64 { |
51 // Truncate the presentation to a duration of 2 seconds. | 65 // Truncate the presentation to a duration of 2 seconds. |
52 mediaSource.duration = 2; | 66 mediaSource.duration = 2; |
53 mediaSource.endOfStream(); | 67 mediaSource.endOfStream(); |
54 | 68 |
| 69 if (expectResizeEvents) { |
| 70 for (var i = 0; i < expectedResizeEventCount; ++i) { |
| 71 test.expectEvent(mediaElement, "resize"); |
| 72 } |
| 73 } |
| 74 test.expectEvent(mediaElement, "ended"); |
55 mediaElement.play(); | 75 mediaElement.play(); |
56 }); | 76 }); |
| 77 |
| 78 test.waitForExpectedEvents(function() { |
| 79 test.done(); |
| 80 }); |
57 }); | 81 }); |
58 }); | 82 }); |
59 }, description, { timeout: 10000 } ); | 83 }, description, { timeout: 10000 } ); |
60 }; | 84 }; |
OLD | NEW |