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

Unified Diff: media/filters/chunk_demuxer_unittest.cc

Issue 239343007: MSE: Make WebMClusterParser hold back buffers at or beyond buffer missing duration (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix some errors in comments. Created 6 years, 8 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
« no previous file with comments | « no previous file | media/formats/webm/webm_cluster_parser.h » ('j') | media/formats/webm/webm_cluster_parser.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/chunk_demuxer_unittest.cc
diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc
index e477eee1d982fb954978dfaedbd5e8127befb66e..06506c33e2ceff9954ba35510ad3403e077f2c45 100644
--- a/media/filters/chunk_demuxer_unittest.cc
+++ b/media/filters/chunk_demuxer_unittest.cc
@@ -1235,10 +1235,14 @@ TEST_P(ChunkDemuxerTest, SeekWhileParsingCluster) {
ExpectRead(DemuxerStream::AUDIO, 0);
ExpectRead(DemuxerStream::VIDEO, 0);
ExpectRead(DemuxerStream::AUDIO, kAudioBlockDuration);
- // Note: We skip trying to read a video buffer here because computing
- // the duration for this block relies on successfully parsing the last block
- // in the cluster the cluster.
- ExpectRead(DemuxerStream::AUDIO, 2 * kAudioBlockDuration);
+
+ // Note: No further reads are expected to be able to complete at this point.
+ // Video read cannot complete because computing the duration for the next
+ // video buffer relies on parsing the next video block or reaching cluster
+ // end. Audio read cannot complete because the next audio buffer, though
+ // parsed and having duration, is held back by the parser because it has
+ // timestamp (0.046s), which is higher than the currently held-back video
+ // buffer's timestamp (0.033s).
acolwell GONE FROM CHROMIUM 2014/04/23 22:36:39 nit: What is the purpose of this comment? It doesn
wolenetz 2014/04/25 20:04:21 Done.
Seek(base::TimeDelta::FromSeconds(5));
@@ -1766,24 +1770,20 @@ TEST_P(ChunkDemuxerTest, IncrementalClusterParsing) {
EXPECT_FALSE(video_read_done);
// Append data one byte at a time until the audio read completes.
+ // Initial (timestamp 0) audio and video reads should complete in the same
+ // iteration since neither buffer originally had an embedded duration, so were
+ // mutually holding back each other until enough data was available for the
+ // parser to determine durations for each.
acolwell GONE FROM CHROMIUM 2014/04/23 22:36:39 nit: I don't think it is worth having this here ei
wolenetz 2014/04/25 20:04:21 Done.
int i = 0;
for (; i < cluster->size() && !audio_read_done; ++i) {
+ EXPECT_FALSE(video_read_done);
acolwell GONE FROM CHROMIUM 2014/04/23 22:36:39 nit: Remove since this test really shouldn't conce
wolenetz 2014/04/25 20:04:21 Done.
AppendData(cluster->data() + i, 1);
message_loop_.RunUntilIdle();
}
EXPECT_TRUE(audio_read_done);
- EXPECT_FALSE(video_read_done);
- EXPECT_GT(i, 0);
- EXPECT_LT(i, cluster->size());
-
- // Append data one byte at a time until the video read completes.
- for (; i < cluster->size() && !video_read_done; ++i) {
- AppendData(cluster->data() + i, 1);
- message_loop_.RunUntilIdle();
- }
-
EXPECT_TRUE(video_read_done);
+ EXPECT_GT(i, 0);
EXPECT_LT(i, cluster->size());
audio_read_done = false;
« no previous file with comments | « no previous file | media/formats/webm/webm_cluster_parser.h » ('j') | media/formats/webm/webm_cluster_parser.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698