| Index: media/filters/chunk_demuxer.cc
|
| diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
|
| index 0c5608943725b41383b8aa278b056c792dbecf60..28940fb2eb44816ba80376502eee840f48d6a15a 100644
|
| --- a/media/filters/chunk_demuxer.cc
|
| +++ b/media/filters/chunk_demuxer.cc
|
| @@ -129,7 +129,7 @@ class SourceState {
|
| TimeDelta* timestamp_offset);
|
|
|
| // Aborts the current append sequence and resets the parser.
|
| - void Abort();
|
| + void Abort(base::TimeDelta timestamp_offset);
|
|
|
| // Calls Remove(|start|, |end|, |duration|) on all
|
| // ChunkDemuxerStreams managed by this object.
|
| @@ -314,8 +314,12 @@ bool SourceState::Append(const uint8* data, size_t length,
|
| return err;
|
| }
|
|
|
| -void SourceState::Abort() {
|
| +void SourceState::Abort(base::TimeDelta timestamp_offset) {
|
| + DCHECK(!timestamp_offset_during_append_);
|
| + timestamp_offset_during_append_ = ×tamp_offset;
|
| stream_parser_->Flush();
|
| + timestamp_offset_during_append_ = NULL;
|
| +
|
| frame_processor_->Reset();
|
| parsing_media_segment_ = false;
|
| }
|
| @@ -1275,12 +1279,13 @@ void ChunkDemuxer::AppendData(const std::string& id,
|
| host_->AddBufferedTimeRange(ranges.start(i), ranges.end(i));
|
| }
|
|
|
| -void ChunkDemuxer::Abort(const std::string& id) {
|
| +void ChunkDemuxer::Abort(const std::string& id,
|
| + base::TimeDelta timestamp_offset) {
|
| DVLOG(1) << "Abort(" << id << ")";
|
| base::AutoLock auto_lock(lock_);
|
| DCHECK(!id.empty());
|
| CHECK(IsValidId(id));
|
| - source_state_map_[id]->Abort();
|
| + source_state_map_[id]->Abort(timestamp_offset);
|
| }
|
|
|
| void ChunkDemuxer::Remove(const std::string& id, TimeDelta start,
|
|
|