| |
| RUN(video.src = URL.createObjectURL(source)) |
| EVENT(sourceopen) |
| Append the init segment in two chunks |
| RUN(sourceBuffer = source.addSourceBuffer(loader.type())) |
| Divide the init segment in two. |
| RUN(random = randomNumber(1, 271)) |
| RUN(partial1 = loader.initSegment().slice(0, random)) |
| RUN(partial2 = loader.initSegment().slice(random)) |
| RUN(sourceBuffer.appendBuffer(partial1)) |
| EVENT(update) |
| RUN(sourceBuffer.appendBuffer(partial2)) |
| EVENT(loadedmetadata) |
| EVENT(update) |
| Append the two partial media segments in reverse order. Separated with an abort |
| RUN(sourceBuffer.appendBuffer(loader.mediaSegment(1).slice(0, 65677))) |
| EVENT(update) |
| RUN(sourceBuffer.abort()) |
| EXPECTED (sourceBuffer.buffered.length == '1') OK |
| EXPECTED (sourceBuffer.buffered.end(0) == '82.981') OK |
| RUN(sourceBuffer.appendBuffer(loader.mediaSegment(0).slice(0, 65677))) |
| EVENT(update) |
| EXPECTED (sourceBuffer.buffered.length == '2') OK |
| EXPECTED (sourceBuffer.buffered.end(0) == '6.041') OK |
| EXPECTED (sourceBuffer.buffered.end(1) == '82.981') OK |
| Clean sourcebuffer of all content. |
| RUN(sourceBuffer.remove(0, 100)) |
| EVENT(update) |
| Clean sourcebuffer of all content. |
| Ensure an init segment is accepted right after an aborted partial media segment |
| RUN(sourceBuffer.abort()) |
| RUN(sourceBuffer.remove(0, 100)) |
| EVENT(update) |
| RUN(sourceBuffer.appendBuffer(loader.mediaSegment(1).slice(0, 65677))) |
| EVENT(update) |
| RUN(sourceBuffer.abort()) |
| EXPECTED (sourceBuffer.buffered.length == '1') OK |
| EXPECTED (sourceBuffer.buffered.end(0) == '82.981') OK |
| RUN(sourceBuffer.appendBuffer(loader.initSegment())) |
| EVENT(update) |
| RUN(sourceBuffer.appendBuffer(loader.mediaSegment(0).slice(0, 65677))) |
| EVENT(update) |
| EXPECTED (sourceBuffer.buffered.length == '2') OK |
| EXPECTED (sourceBuffer.buffered.end(0) == '6.041') OK |
| EXPECTED (sourceBuffer.buffered.end(1) == '82.981') OK |
| Clean sourcebuffer of all content. |
| RUN(sourceBuffer.abort()) |
| RUN(sourceBuffer.remove(0, 100)) |
| EVENT(update) |
| Same as above without waiting for the first append to complete. This is not a deterministic speced behaviour |
| RUN(sourceBuffer.appendBuffer(loader.mediaSegment(1).slice(0, 65677))) |
| EVENT(updatestart) |
| RUN(sourceBuffer.abort()) |
| RUN(sourceBuffer.appendBuffer(loader.initSegment())) |
| EVENT(update) |
| RUN(sourceBuffer.appendBuffer(loader.mediaSegment(0).slice(0, 65677))) |
| EVENT(update) |
| EXPECTED (sourceBuffer.buffered.length == '1') OK |
| EXPECTED (sourceBuffer.buffered.end(0) == '6.041') OK |
| END OF TEST |
| |