Chromium Code Reviews| Index: media/filters/chunk_demuxer_unittest.cc |
| diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc |
| index 770f28423be05d6bf4cccd8e9d1c18aa38ff5971..6537c42c907edc4e9a8278d435fc6bb7294e6a29 100644 |
| --- a/media/filters/chunk_demuxer_unittest.cc |
| +++ b/media/filters/chunk_demuxer_unittest.cc |
| @@ -2943,6 +2943,45 @@ TEST_F(ChunkDemuxerTest, EmitBuffersDuringAbort) { |
| EXPECT_EQ(range_after_abort.start(0), range_before_abort.start(0)); |
| EXPECT_GT(range_after_abort.end(0), range_before_abort.end(0)); |
| } |
| + |
| +TEST_F(ChunkDemuxerTest, SeekCompleteDuringAbort) { |
| + EXPECT_CALL(*this, DemuxerOpened()); |
| + demuxer_->Initialize( |
| + &host_, CreateInitDoneCB(kInfiniteDuration(), PIPELINE_OK), true); |
| + EXPECT_EQ(ChunkDemuxer::kOk, AddIdForMp2tSource(kSourceId)); |
| + |
| + // For info: |
| + // DTS/PTS derived using dvbsnoop -s ts -if bear-1280x720.ts -tssubdecode |
| + // Video: first PES: |
| + // PTS: 126912 (0x0001efc0) [= 90 kHz-Timestamp: 0:00:01.4101] |
| + // DTS: 123909 (0x0001e405) [= 90 kHz-Timestamp: 0:00:01.3767] |
| + // Audio: first PES: |
| + // PTS: 126000 (0x0001ec30) [= 90 kHz-Timestamp: 0:00:01.4000] |
| + // DTS: 123910 (0x0001e406) [= 90 kHz-Timestamp: 0:00:01.3767] |
| + // Video: last PES: |
| + // PTS: 370155 (0x0005a5eb) [= 90 kHz-Timestamp: 0:00:04.1128] |
| + // DTS: 367152 (0x00059a30) [= 90 kHz-Timestamp: 0:00:04.0794] |
| + // Audio: last PES: |
| + // PTS: 353788 (0x000565fc) [= 90 kHz-Timestamp: 0:00:03.9309] |
| + |
| + scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile("bear-1280x720.ts"); |
| + AppendData(kSourceId, buffer->data(), buffer->data_size()); |
| + |
| + // Confirm we're in the middle of parsing a media segment. |
| + ASSERT_TRUE(demuxer_->IsParsingMediaSegment(kSourceId)); |
| + |
| + // Seek to a time corresponding to buffers that will be emitted during the |
| + // abort. |
| + Seek(base::TimeDelta::FromMilliseconds(4110)); |
| + |
|
wolenetz
2014/07/12 00:06:32
Hmm. Reviewing this post-commit, but it looks like
|
| + // Abort on the Mpeg2 TS parser triggers the emission of the last video |
| + // buffer which is pending in the stream parser. |
| + demuxer_->Abort(kSourceId, |
| + append_window_start_for_next_append_, |
| + append_window_end_for_next_append_, |
| + ×tamp_offset_map_[kSourceId]); |
| +} |
| + |
| #endif |
| #endif |