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

Unified Diff: media/filters/chunk_demuxer_unittest.cc

Issue 178153004: Enable round-tripping and updating of WebSourceBufferImpl timestamp offset (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Initializes |user_specified_timestamp_offset_| to 0.0. Created 6 years, 10 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 d2c410da9c02c7040b36b8490254b88b8b8cd447..c9e32771262c47b405dda506f91311a351a11d50 100644
--- a/media/filters/chunk_demuxer_unittest.cc
+++ b/media/filters/chunk_demuxer_unittest.cc
@@ -491,6 +491,8 @@ class ChunkDemuxerTest : public testing::Test {
if (AddId(kSourceId, stream_flags) != ChunkDemuxer::kOk)
return false;
+ EXPECT_EQ(0.0, demuxer_->GetTimestampOffset(kSourceId));
+
AppendInitSegmentWithEncryptedInfo(
kSourceId, stream_flags,
is_audio_encrypted, is_video_encrypted);
@@ -2579,11 +2581,21 @@ TEST_F(ChunkDemuxerTest, ConfigChange_Seek) {
ASSERT_TRUE(video_config_1.Matches(video->video_decoder_config()));
}
+TEST_F(ChunkDemuxerTest, TimestampOffsetUserRoundTrips) {
+ ASSERT_TRUE(InitDemuxer(HAS_AUDIO));
+
+ // Set an offset value that has greater precision than base::TimeDelta
+ // microsecond granularity, and confirm that the exact value is returned
+ // when getting the offset.
+ double super_precise_offset = 99.123456789;
+ ASSERT_TRUE(demuxer_->SetTimestampOffset(kSourceId, super_precise_offset));
+ EXPECT_EQ(super_precise_offset, demuxer_->GetTimestampOffset(kSourceId));
+}
+
TEST_F(ChunkDemuxerTest, TimestampPositiveOffset) {
ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO));
- ASSERT_TRUE(demuxer_->SetTimestampOffset(
- kSourceId, base::TimeDelta::FromSeconds(30)));
+ ASSERT_TRUE(demuxer_->SetTimestampOffset(kSourceId, 30));
AppendCluster(GenerateCluster(0, 2));
Seek(base::TimeDelta::FromMilliseconds(30000));
@@ -2594,8 +2606,7 @@ TEST_F(ChunkDemuxerTest, TimestampPositiveOffset) {
TEST_F(ChunkDemuxerTest, TimestampNegativeOffset) {
ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO));
- ASSERT_TRUE(demuxer_->SetTimestampOffset(
- kSourceId, base::TimeDelta::FromSeconds(-1)));
+ ASSERT_TRUE(demuxer_->SetTimestampOffset(kSourceId, -1));
AppendCluster(GenerateCluster(1000, 2));
GenerateExpectedReads(0, 2);
@@ -2606,10 +2617,8 @@ TEST_F(ChunkDemuxerTest, TimestampOffsetSeparateStreams) {
std::string video_id = "video1";
ASSERT_TRUE(InitDemuxerAudioAndVideoSources(audio_id, video_id));
- ASSERT_TRUE(demuxer_->SetTimestampOffset(
- audio_id, base::TimeDelta::FromMilliseconds(-2500)));
- ASSERT_TRUE(demuxer_->SetTimestampOffset(
- video_id, base::TimeDelta::FromMilliseconds(-2500)));
+ ASSERT_TRUE(demuxer_->SetTimestampOffset(audio_id, -2.5));
+ ASSERT_TRUE(demuxer_->SetTimestampOffset(video_id, -2.5));
AppendCluster(audio_id, GenerateSingleStreamCluster(2500,
2500 + kAudioBlockDuration * 4, kAudioTrackNum, kAudioBlockDuration));
AppendCluster(video_id, GenerateSingleStreamCluster(2500,
@@ -2619,10 +2628,8 @@ TEST_F(ChunkDemuxerTest, TimestampOffsetSeparateStreams) {
Seek(base::TimeDelta::FromMilliseconds(27300));
- ASSERT_TRUE(demuxer_->SetTimestampOffset(
- audio_id, base::TimeDelta::FromMilliseconds(27300)));
- ASSERT_TRUE(demuxer_->SetTimestampOffset(
- video_id, base::TimeDelta::FromMilliseconds(27300)));
+ ASSERT_TRUE(demuxer_->SetTimestampOffset(audio_id, 27.3));
+ ASSERT_TRUE(demuxer_->SetTimestampOffset(video_id, 27.3));
AppendCluster(audio_id, GenerateSingleStreamCluster(
0, kAudioBlockDuration * 4, kAudioTrackNum, kAudioBlockDuration));
AppendCluster(video_id, GenerateSingleStreamCluster(
@@ -2639,14 +2646,12 @@ TEST_F(ChunkDemuxerTest, TimestampOffsetMidMediaSegment) {
AppendData(cluster->data(), cluster->size() - 13);
// Setting a timestamp should fail because we're in the middle of a cluster.
- ASSERT_FALSE(demuxer_->SetTimestampOffset(
- kSourceId, base::TimeDelta::FromSeconds(25)));
+ ASSERT_FALSE(demuxer_->SetTimestampOffset(kSourceId, 25));
demuxer_->Abort(kSourceId);
// After Abort(), setting a timestamp should succeed since we're no longer
// in the middle of a cluster
- ASSERT_TRUE(demuxer_->SetTimestampOffset(
- kSourceId, base::TimeDelta::FromSeconds(25)));
+ ASSERT_TRUE(demuxer_->SetTimestampOffset(kSourceId, 25));
}
TEST_F(ChunkDemuxerTest, WebMParsingMediaSegmentDetection) {
@@ -2677,7 +2682,7 @@ TEST_F(ChunkDemuxerTest, WebMParsingMediaSegmentDetection) {
AppendData(kBuffer + i, 1);
bool expected_return_value = kExpectedReturnValues[i];
EXPECT_EQ(expected_return_value, demuxer_->SetTimestampOffset(
- kSourceId, base::TimeDelta::FromSeconds(25)));
+ kSourceId, 25));
EXPECT_EQ(expected_return_value, demuxer_->SetSequenceMode(
kSourceId, true));
EXPECT_EQ(expected_return_value, demuxer_->SetSequenceMode(
@@ -2735,7 +2740,8 @@ TEST_F(ChunkDemuxerTest, DurationChange) {
TEST_F(ChunkDemuxerTest, DurationChangeTimestampOffset) {
ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO));
- ASSERT_TRUE(demuxer_->SetTimestampOffset(kSourceId, kDefaultDuration()));
+ ASSERT_TRUE(demuxer_->SetTimestampOffset(kSourceId,
+ kDefaultDuration().InSecondsF()));
EXPECT_CALL(host_, SetDuration(
kDefaultDuration() + base::TimeDelta::FromMilliseconds(

Powered by Google App Engine
This is Rietveld 408576698