Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Unified Diff: LayoutTests/http/tests/media/media-source/mediasource-buffered.html

Issue 552943002: MSE: Start letting SourceBuffer begin to do initialization segment received algorithm (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Updated to be part 1 of a 3-sided blink->chromium->blink set of changes Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: LayoutTests/http/tests/media/media-source/mediasource-buffered.html
diff --git a/LayoutTests/http/tests/media/media-source/mediasource-buffered.html b/LayoutTests/http/tests/media/media-source/mediasource-buffered.html
index 3c34916fe61c1548633907db5980338038184ba3..20ce8c89d3d1bd0d4e7e2848f13f2a4bbd362e11 100644
--- a/LayoutTests/http/tests/media/media-source/mediasource-buffered.html
+++ b/LayoutTests/http/tests/media/media-source/mediasource-buffered.html
@@ -38,7 +38,7 @@
{
mediaSource.addSourceBuffer(typeA);
mediaSource.addSourceBuffer(typeB);
- assert_equals(mediaSource.activeSourceBuffers.length, 2);
+ assert_equals(mediaSource.sourceBuffers.length, 2);
callback(test, mediaElement, mediaSource, dataA, dataB);
});
@@ -46,27 +46,54 @@
}, description);
};
- function appendData(test, mediaSource, dataA, dataB, callback)
+ function appendDataAndVerifyAddedToActiveSourceBuffers(test, mediaSource, dataA, dataB, swapAppendBufferOrder, forceParsingOrder, callback)
{
- var sourceBufferA = mediaSource.activeSourceBuffers[0];
- var sourceBufferB = mediaSource.activeSourceBuffers[1];
-
- test.expectEvent(sourceBufferA, 'update');
- test.expectEvent(sourceBufferA, 'updateend');
- sourceBufferA.appendBuffer(dataA);
+ // Verification here assumes no prior initialization segment received for any of mediaSource's sourceBuffers.
+ assert_equals(mediaSource.sourceBuffers.length, 2, 'mediaSource sourceBuffers length before appends');
+ assert_equals(mediaSource.activeSourceBuffers.length, 0, 'mediaSource activeSourceBuffers length before appends');
+ var sourceBufferA = mediaSource.sourceBuffers[0];
+ var sourceBufferB = mediaSource.sourceBuffers[1];
+
+ var firstBuffer = swapAppendBufferOrder ? sourceBufferB : sourceBufferA;
+ var firstData = swapAppendBufferOrder ? dataB : dataA;
+ var secondBuffer = swapAppendBufferOrder ? sourceBufferA : sourceBufferB;
+ var secondData = swapAppendBufferOrder ? dataA : dataB;
+
+ test.expectEvent(firstBuffer, 'update');
+ test.expectEvent(firstBuffer, 'updateend');
+ firstBuffer.appendBuffer(firstData);
+
+ var doSecondAppend = function()
+ {
+ test.expectEvent(secondBuffer, 'update');
+ test.expectEvent(secondBuffer, 'updateend');
+ secondBuffer.appendBuffer(secondData);
+ };
- test.expectEvent(sourceBufferB, 'update');
- test.expectEvent(sourceBufferB, 'updateend');
- sourceBufferB.appendBuffer(dataB);
+ if (forceParsingOrder) {
+ test.waitForExpectedEvents(function()
+ {
+ assert_equals(mediaSource.sourceBuffers.length, 2, 'mediaSource sourceBuffers length between completed appends');
+ assert_equals(mediaSource.activeSourceBuffers.length, 1, 'mediaSource activeSourceBuffers length between completed appends');
+ assert_equals(mediaSource.activeSourceBuffers[0], firstBuffer);
+ doSecondAppend();
+ });
+ } else {
+ doSecondAppend();
+ }
test.waitForExpectedEvents(function()
{
- callback();
+ assert_equals(mediaSource.sourceBuffers.length, 2, 'mediaSource sourceBuffers length after appends completed');
+ assert_equals(mediaSource.activeSourceBuffers.length, 2, 'mediaSource activeSourceBuffers length after appends completed');
+ assert_equals(mediaSource.activeSourceBuffers[0], sourceBufferA);
+ assert_equals(mediaSource.activeSourceBuffers[1], sourceBufferB);
+ callback();
});
}
mediaSourceDemuxedTest(function(test, mediaElement, mediaSource, dataA, dataB) {
- appendData(test, mediaSource, dataA, dataB, function()
+ appendDataAndVerifyAddedToActiveSourceBuffers(test, mediaSource, dataA, dataB, false, false, function()
{
assertBufferedEquals(mediaSource.activeSourceBuffers[0], expectationsA[subType], 'mediaSource.activeSourceBuffers[0]');
assertBufferedEquals(mediaSource.activeSourceBuffers[1], expectationsB[subType], 'mediaSource.activeSourceBuffers[1]');
@@ -82,6 +109,26 @@
});
}, 'Demuxed content with different lengths');
+ mediaSourceDemuxedTest(function(test, mediaElement, mediaSource, dataA, dataB) {
+ appendDataAndVerifyAddedToActiveSourceBuffers(test, mediaSource, dataA, dataB, false, true, function()
+ {
+ assertBufferedEquals(mediaSource.activeSourceBuffers[0], expectationsA[subType], 'mediaSource.activeSourceBuffers[0]');
+ assertBufferedEquals(mediaSource.activeSourceBuffers[1], expectationsB[subType], 'mediaSource.activeSourceBuffers[1]');
+ assertBufferedEquals(mediaElement, expectationsB[subType], 'mediaElement.buffered');
+ test.done();
+ });
+ }, 'Process first init segment for sourceBuffer[0] first');
+
+ mediaSourceDemuxedTest(function(test, mediaElement, mediaSource, dataA, dataB) {
+ appendDataAndVerifyAddedToActiveSourceBuffers(test, mediaSource, dataA, dataB, true, true, function()
+ {
+ assertBufferedEquals(mediaSource.activeSourceBuffers[0], expectationsA[subType], 'mediaSource.activeSourceBuffers[0]');
+ assertBufferedEquals(mediaSource.activeSourceBuffers[1], expectationsB[subType], 'mediaSource.activeSourceBuffers[1]');
+ assertBufferedEquals(mediaElement, expectationsB[subType], 'mediaElement.buffered');
+ test.done();
+ });
+ }, 'Process first init segment for sourceBuffer[1] first');
+
mediasource_test(function(test, mediaElement, mediaSource)
{
mediaElement.pause();
@@ -118,9 +165,8 @@
});
}, 'Muxed tracks with different lengths');
-
mediaSourceDemuxedTest(function(test, mediaElement, mediaSource, dataA, dataB) {
- appendData(test, mediaSource, dataA, dataB.subarray(0, 318), function()
+ appendDataAndVerifyAddedToActiveSourceBuffers(test, mediaSource, dataA, dataB.subarray(0, 318), false, false, function()
{
assertBufferedEquals(mediaSource.activeSourceBuffers[0], expectationsA[subType], 'mediaSource.activeSourceBuffers[0]');
assertBufferedEquals(mediaSource.activeSourceBuffers[1], '{ }', 'mediaSource.activeSourceBuffers[1]');
@@ -171,9 +217,7 @@
test.endOnEvent(mediaElement, 'ended');
var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE);
-
- // FIXME: verify activeSourceBuffers is empty until init segment with at least
- // one active track is appended.
+
assertBufferedEquals(mediaSource.sourceBuffers[0], '{ }', 'mediaSource.sourceBuffers[0]');
assertBufferedEquals(mediaElement, '{ }', 'mediaElement.buffered');
test.done();
@@ -183,9 +227,9 @@
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
{
var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init);
-
+
test.expectEvent(sourceBuffer, 'updateend', 'initSegment append ended.');
- sourceBuffer.appendBuffer(initSegment);
+ sourceBuffer.appendBuffer(initSegment);
test.waitForExpectedEvents(function()
{
assertBufferedEquals(mediaSource.sourceBuffers[0], '{ }', 'mediaSource.sourceBuffers[0]');
@@ -199,7 +243,7 @@
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
{
test.expectEvent(mediaSource.sourceBuffers, 'removesourcebuffer', 'SourceBuffer removed.');
- mediaSource.removeSourceBuffer(sourceBuffer);
+ mediaSource.removeSourceBuffer(sourceBuffer);
test.waitForExpectedEvents(function()
{

Powered by Google App Engine
This is Rietveld 408576698