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

Unified Diff: media/filters/chunk_demuxer_unittest.cc

Issue 10803019: Chrome-side implementation of media source timestamp offset (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix windows Created 8 years, 5 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: media/filters/chunk_demuxer_unittest.cc
diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc
index a05d2342e6945d832f9f3c29d8823571c92ae1ac..9d41121dad1307587586f7716d9ca95de964457f 100644
--- a/media/filters/chunk_demuxer_unittest.cc
+++ b/media/filters/chunk_demuxer_unittest.cc
@@ -1801,4 +1801,81 @@ TEST_F(ChunkDemuxerTest, TestEndOfStreamDuringSeek) {
end_of_stream_helper.CheckIfReadDonesWereCalled(true);
}
+TEST_F(ChunkDemuxerTest, TestTimestampPositiveOffset) {
+ ASSERT_TRUE(InitDemuxer(true, true, false));
+
+ demuxer_->SetTimestampOffset(kSourceId, 30);
acolwell GONE FROM CHROMIUM 2012/07/25 18:22:43 nit: ASSERT_TRUE() here and below.
vrk (LEFT CHROMIUM) 2012/07/25 22:56:50 Done.
+ scoped_ptr<Cluster> cluster(GenerateCluster(0, 2));
+ ASSERT_TRUE(AppendData(cluster->data(), cluster->size()));
+
+ scoped_refptr<DemuxerStream> audio =
+ demuxer_->GetStream(DemuxerStream::AUDIO);
+ scoped_refptr<DemuxerStream> video =
+ demuxer_->GetStream(DemuxerStream::VIDEO);
+
+ bool audio_read_done = false;
+ bool video_read_done = false;
+ audio->Read(base::Bind(&OnReadDone,
acolwell GONE FROM CHROMIUM 2012/07/25 18:22:43 nit: I think using GenerateExpectedReads(30000, 2,
vrk (LEFT CHROMIUM) 2012/07/25 22:56:50 Done.
+ base::TimeDelta::FromSeconds(30),
+ &audio_read_done));
+ video->Read(base::Bind(&OnReadDone,
+ base::TimeDelta::FromSeconds(30),
+ &video_read_done));
+
+ EXPECT_TRUE(audio_read_done);
+ EXPECT_TRUE(video_read_done);
+}
+
+TEST_F(ChunkDemuxerTest, TestTimestampNegativeOffset) {
+ ASSERT_TRUE(InitDemuxer(true, true, false));
+
+ demuxer_->SetTimestampOffset(kSourceId, -1);
+ scoped_ptr<Cluster> cluster = GenerateCluster(1000, 2);
+ ASSERT_TRUE(AppendData(cluster->data(), cluster->size()));
+
+ scoped_refptr<DemuxerStream> audio =
+ demuxer_->GetStream(DemuxerStream::AUDIO);
+ scoped_refptr<DemuxerStream> video =
+ demuxer_->GetStream(DemuxerStream::VIDEO);
+
+ bool audio_read_done = false;
+ bool video_read_done = false;
+ audio->Read(base::Bind(&OnReadDone,
acolwell GONE FROM CHROMIUM 2012/07/25 18:22:43 nit: ditto w/ different timestamp
vrk (LEFT CHROMIUM) 2012/07/25 22:56:50 Done.
+ base::TimeDelta::FromSeconds(0),
+ &audio_read_done));
+ video->Read(base::Bind(&OnReadDone,
+ base::TimeDelta::FromSeconds(0),
+ &video_read_done));
+
+ EXPECT_TRUE(audio_read_done);
+ EXPECT_TRUE(video_read_done);
+}
+
+TEST_F(ChunkDemuxerTest, TestTimestampOffsetSeparateStreams) {
+ std::string audio_id = "audio1";
+ std::string video_id = "video1";
+ ASSERT_TRUE(InitDemuxerAudioAndVideoSources(audio_id, video_id));
+
+ scoped_refptr<DemuxerStream> audio =
+ demuxer_->GetStream(DemuxerStream::AUDIO);
+ scoped_refptr<DemuxerStream> video =
+ demuxer_->GetStream(DemuxerStream::VIDEO);
+
+ scoped_ptr<Cluster> cluster_a(
+ GenerateSingleStreamCluster(
+ 2500, 2500 + kAudioBlockDuration * 4, kAudioTrackNum,
+ kAudioBlockDuration));
+
+ scoped_ptr<Cluster> cluster_v(
+ GenerateSingleStreamCluster(
+ 0, kVideoBlockDuration * 4, kVideoTrackNum, kVideoBlockDuration));
+
+ demuxer_->SetTimestampOffset(audio_id, -2.5f);
+ ASSERT_TRUE(AppendData(audio_id, cluster_a->data(), cluster_a->size()));
+ GenerateSingleStreamExpectedReads(0, 4, audio, kAudioBlockDuration);
+
+ demuxer_->SetTimestampOffset(video_id, 27.3f);
+ ASSERT_TRUE(AppendData(video_id, cluster_v->data(), cluster_v->size()));
+ GenerateSingleStreamExpectedReads(27300, 4, video, kVideoBlockDuration);
+}
} // namespace media
acolwell GONE FROM CHROMIUM 2012/07/25 18:22:43 nit: Add a test for rejecting an offset change mid
vrk (LEFT CHROMIUM) 2012/07/25 22:56:50 Good idea, done.

Powered by Google App Engine
This is Rietveld 408576698