OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script src="/w3c/resources/testharness.js"></script> | 4 <script src="/w3c/resources/testharness.js"></script> |
5 <script src="/w3c/resources/testharnessreport.js"></script> | 5 <script src="/w3c/resources/testharnessreport.js"></script> |
6 <script src="mediasource-util.js"></script> | 6 <script src="mediasource-util.js"></script> |
7 <link rel='stylesheet' href='/w3c/resources/testharness.css'> | 7 <link rel='stylesheet' href='/w3c/resources/testharness.css'> |
8 </head> | 8 </head> |
9 <body> | 9 <body> |
10 <div id="log"></div> | 10 <div id="log"></div> |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 { | 149 { |
150 mediasource_testafterdataloaded(function(test, mediaElement, media
Source, segmentInfo, sourceBuffer, mediaData) | 150 mediasource_testafterdataloaded(function(test, mediaElement, media
Source, segmentInfo, sourceBuffer, mediaData) |
151 { | 151 { |
152 test.expectEvent(sourceBuffer, "updatestart"); | 152 test.expectEvent(sourceBuffer, "updatestart"); |
153 test.expectEvent(sourceBuffer, "update"); | 153 test.expectEvent(sourceBuffer, "update"); |
154 test.expectEvent(sourceBuffer, "updateend"); | 154 test.expectEvent(sourceBuffer, "updateend"); |
155 sourceBuffer.appendBuffer(mediaData); | 155 sourceBuffer.appendBuffer(mediaData); |
156 | 156 |
157 test.waitForExpectedEvents(function() | 157 test.waitForExpectedEvents(function() |
158 { | 158 { |
159 var duration = segmentInfo.duration.toFixed(3); | 159 var bufferedRangeEnd = segmentInfo.bufferedRangeEndBeforeE
ndOfStream.toFixed(3); |
160 var subType = MediaSourceUtil.getSubType(segmentInfo.type)
; | 160 var subType = MediaSourceUtil.getSubType(segmentInfo.type)
; |
161 | 161 |
162 assertBufferedEquals(sourceBuffer, "{ [0.000, " + duration
+ ") }", "Initial buffered range."); | 162 assertBufferedEquals(sourceBuffer, "{ [0.000, " + buffered
RangeEnd + ") }", "Initial buffered range."); |
163 callback(test, sourceBuffer, duration, subType); | 163 callback(test, sourceBuffer, bufferedRangeEnd, subType); |
164 }); | 164 }); |
165 }, description); | 165 }, description); |
166 }; | 166 }; |
167 | 167 |
168 function removeAndCheckBufferedRanges(test, sourceBuffer, start, end,
expected) | 168 function removeAndCheckBufferedRanges(test, sourceBuffer, start, end,
expected) |
169 { | 169 { |
170 test.expectEvent(sourceBuffer, "updatestart"); | 170 test.expectEvent(sourceBuffer, "updatestart"); |
171 test.expectEvent(sourceBuffer, "update"); | 171 test.expectEvent(sourceBuffer, "update"); |
172 test.expectEvent(sourceBuffer, "updateend"); | 172 test.expectEvent(sourceBuffer, "updateend"); |
173 sourceBuffer.remove(start, end); | 173 sourceBuffer.remove(start, end); |
174 | 174 |
175 test.waitForExpectedEvents(function() | 175 test.waitForExpectedEvents(function() |
176 { | 176 { |
177 assertBufferedEquals(sourceBuffer, expected, "Buffered ranges
after remove()."); | 177 assertBufferedEquals(sourceBuffer, expected, "Buffered ranges
after remove()."); |
178 test.done(); | 178 test.done(); |
179 }); | 179 }); |
180 } | 180 } |
181 | 181 |
182 removeAppendedDataTests(function(test, sourceBuffer, duration, subType
) | 182 removeAppendedDataTests(function(test, sourceBuffer, bufferedRangeEnd,
subType) |
183 { | 183 { |
184 removeAndCheckBufferedRanges(test, sourceBuffer, 0, Number.POSITIV
E_INFINITY, "{ }"); | 184 removeAndCheckBufferedRanges(test, sourceBuffer, 0, Number.POSITIV
E_INFINITY, "{ }"); |
185 }, "Test removing all appended data."); | 185 }, "Test removing all appended data."); |
186 | 186 |
187 removeAppendedDataTests(function(test, sourceBuffer, duration, subType
) | 187 removeAppendedDataTests(function(test, sourceBuffer, bufferedRangeEnd,
subType) |
188 { | 188 { |
189 var expectations = { | 189 var expectations = { |
190 webm: ("{ [3.187, " + duration + ") }"), | 190 webm: ("{ [3.187, " + bufferedRangeEnd + ") }"), |
191 mp4: ("{ [3.021, " + duration + ") }"), | 191 mp4: ("{ [3.021, " + bufferedRangeEnd + ") }"), |
192 }; | 192 }; |
193 | 193 |
194 // Note: Range doesn't start exactly at the end of the remove rang
e because there isn't | 194 // Note: Range doesn't start exactly at the end of the remove rang
e because there isn't |
195 // a keyframe there. The resulting range starts at the first keyfr
ame >= the end time. | 195 // a keyframe there. The resulting range starts at the first keyfr
ame >= the end time. |
196 removeAndCheckBufferedRanges(test, sourceBuffer, 0, 3, expectation
s[subType]); | 196 removeAndCheckBufferedRanges(test, sourceBuffer, 0, 3, expectation
s[subType]); |
197 }, "Test removing beginning of appended data."); | 197 }, "Test removing beginning of appended data."); |
198 | 198 |
199 removeAppendedDataTests(function(test, sourceBuffer, duration, subType
) | 199 removeAppendedDataTests(function(test, sourceBuffer, bufferedRangeEnd,
subType) |
200 { | 200 { |
201 var expectations = { | 201 var expectations = { |
202 webm: ("{ [0.000, 1.012) [3.187, " + duration + ") }"), | 202 webm: ("{ [0.000, 1.012) [3.187, " + bufferedRangeEnd + ") }"), |
203 mp4: ("{ [0.000, 1.022) [3.021, " + duration + ") }"), | 203 mp4: ("{ [0.000, 1.022) [3.021, " + bufferedRangeEnd + ") }"), |
204 }; | 204 }; |
205 | 205 |
206 // Note: The first resulting range ends slightly after start becau
se the removal algorithm only removes | 206 // Note: The first resulting range ends slightly after start becau
se the removal algorithm only removes |
207 // frames with a timestamp >= the start time. If a frame starts be
fore and ends after the remove() start | 207 // frames with a timestamp >= the start time. If a frame starts be
fore and ends after the remove() start |
208 // timestamp, then it stays in the buffer. | 208 // timestamp, then it stays in the buffer. |
209 removeAndCheckBufferedRanges(test, sourceBuffer, 1, 3, expectation
s[subType]); | 209 removeAndCheckBufferedRanges(test, sourceBuffer, 1, 3, expectation
s[subType]); |
210 }, "Test removing the middle of appended data."); | 210 }, "Test removing the middle of appended data."); |
211 | 211 |
212 removeAppendedDataTests(function(test, sourceBuffer, duration, subType
) | 212 removeAppendedDataTests(function(test, sourceBuffer, bufferedRangeEnd,
subType) |
213 { | 213 { |
214 var expectations = { | 214 var expectations = { |
215 webm: "{ [0.000, 1.012) }", | 215 webm: "{ [0.000, 1.012) }", |
216 mp4: "{ [0.000, 1.022) }", | 216 mp4: "{ [0.000, 1.022) }", |
217 }; | 217 }; |
218 | 218 |
219 removeAndCheckBufferedRanges(test, sourceBuffer, 1, Number.POSITIV
E_INFINITY, expectations[subType]); | 219 removeAndCheckBufferedRanges(test, sourceBuffer, 1, Number.POSITIV
E_INFINITY, expectations[subType]); |
220 }, "Test removing the end of appended data."); | 220 }, "Test removing the end of appended data."); |
221 </script> | 221 </script> |
222 </body> | 222 </body> |
223 </html> | 223 </html> |
OLD | NEW |