| Index: media/filters/pipeline_integration_test.cc
|
| diff --git a/media/filters/pipeline_integration_test.cc b/media/filters/pipeline_integration_test.cc
|
| index eddf00e924a553df282d8fb2b367150a625267be..0bf998da0cf3b786cec0cb1161ac9f1d5ba7b9a2 100644
|
| --- a/media/filters/pipeline_integration_test.cc
|
| +++ b/media/filters/pipeline_integration_test.cc
|
| @@ -305,15 +305,17 @@ class MockMediaSource {
|
| kSourceId, file_data_->data() + current_position_, size,
|
| base::TimeDelta(), kInfiniteDuration(), ×tamp_offset);
|
| current_position_ += size;
|
| + last_timestamp_offset_ = timestamp_offset;
|
| }
|
|
|
| - void AppendAtTime(const base::TimeDelta& timestampOffset,
|
| - const uint8* pData, int size) {
|
| - base::TimeDelta timestamp_offset = timestampOffset;
|
| + void AppendAtTime(base::TimeDelta timestamp_offset,
|
| + const uint8* pData,
|
| + int size) {
|
| CHECK(!chunk_demuxer_->IsParsingMediaSegment(kSourceId));
|
| chunk_demuxer_->AppendData(kSourceId, pData, size,
|
| base::TimeDelta(), kInfiniteDuration(),
|
| ×tamp_offset);
|
| + last_timestamp_offset_ = timestamp_offset;
|
| }
|
|
|
| void EndOfStream() {
|
| @@ -369,6 +371,10 @@ class MockMediaSource {
|
| need_key_cb_.Run(type, init_data);
|
| }
|
|
|
| + base::TimeDelta last_timestamp_offset() const {
|
| + return last_timestamp_offset_;
|
| + }
|
| +
|
| private:
|
| base::FilePath file_path_;
|
| scoped_refptr<DecoderBuffer> file_data_;
|
| @@ -378,6 +384,7 @@ class MockMediaSource {
|
| ChunkDemuxer* chunk_demuxer_;
|
| scoped_ptr<Demuxer> owned_chunk_demuxer_;
|
| Demuxer::NeedKeyCB need_key_cb_;
|
| + base::TimeDelta last_timestamp_offset_;
|
| };
|
|
|
| class PipelineIntegrationTest
|
| @@ -725,6 +732,23 @@ TEST_F(PipelineIntegrationTest, MediaSource_MP3) {
|
| EXPECT_TRUE(WaitUntilOnEnded());
|
| }
|
|
|
| +TEST_F(PipelineIntegrationTest, MediaSource_MP3_TimestampOffset) {
|
| + MockMediaSource source("sfx.mp3", kMP3, kAppendWholeFile);
|
| + StartPipelineWithMediaSource(&source);
|
| + EXPECT_EQ(339, source.last_timestamp_offset().InMilliseconds());
|
| +
|
| + scoped_refptr<DecoderBuffer> second_file = ReadTestDataFile("sfx.mp3");
|
| + source.AppendAtTime(base::TimeDelta::FromMilliseconds(-10),
|
| + second_file->data(),
|
| + second_file->data_size());
|
| + EXPECT_EQ(669, source.last_timestamp_offset().InMilliseconds());
|
| + ASSERT_EQ(1u, pipeline_->GetBufferedTimeRanges().size());
|
| + source.EndOfStream();
|
| +
|
| + Play();
|
| +
|
| + EXPECT_TRUE(WaitUntilOnEnded());
|
| +}
|
|
|
| TEST_F(PipelineIntegrationTest, MediaSource_MP3_Icecast) {
|
| MockMediaSource source("icy_sfx.mp3", kMP3, kAppendWholeFile);
|
|
|