This tests the ability of the SourceBuffer to accept a new WebM Initialization Segment while still in the middle of parsing the Segment Element of the last Media Segment.

RUN(video.src = URL.createObjectURL(source))
EVENT(sourceopen)
RUN(source.duration = loader.duration())
RUN(sourceBuffer = source.addSourceBuffer(loader.type()))
RUN(sourceBuffer.appendBuffer(loader.initSegment()))
EVENT(update)
Append a media segment.
RUN(sourceBuffer.appendBuffer(loader.mediaSegment(0)))
EVENT(update)
Append a new Initialization Segment.
RUN(sourceBuffer.appendBuffer(loader.initSegment()))
EVENT(update)
Append a media segment.
RUN(sourceBuffer.appendBuffer(loader.mediaSegment(1)))
EVENT(update)
END OF TEST

