| Index: media/filters/chunk_demuxer.cc
|
| diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
|
| index 6322f5a97b99e91e8797eff90a6403869019bcb1..15d8b09148daaef9a6b621cef0788d6546d18614 100644
|
| --- a/media/filters/chunk_demuxer.cc
|
| +++ b/media/filters/chunk_demuxer.cc
|
| @@ -181,6 +181,9 @@ class ChunkDemuxerStream : public DemuxerStream {
|
| // Returns true if buffers were successfully added.
|
| bool Append(const StreamParser::BufferQueue& buffers);
|
|
|
| + // Signal to the stream that duration has changed to |duration|.
|
| + void OnSetDuration(base::TimeDelta duration);
|
| +
|
| // Returns the range of buffered data in this stream, capped at |duration|.
|
| Ranges<TimeDelta> GetBufferedRanges(base::TimeDelta duration) const;
|
|
|
| @@ -335,6 +338,11 @@ bool ChunkDemuxerStream::Append(const StreamParser::BufferQueue& buffers) {
|
| return true;
|
| }
|
|
|
| +void ChunkDemuxerStream::OnSetDuration(base::TimeDelta duration) {
|
| + base::AutoLock auto_lock(lock_);
|
| + stream_->OnSetDuration(duration);
|
| +}
|
| +
|
| Ranges<TimeDelta> ChunkDemuxerStream::GetBufferedRanges(
|
| base::TimeDelta duration) const {
|
| base::AutoLock auto_lock(lock_);
|
| @@ -824,6 +832,21 @@ void ChunkDemuxer::Abort(const std::string& id) {
|
| stream_parser_map_[id]->Flush();
|
| }
|
|
|
| +void ChunkDemuxer::SetDuration(base::TimeDelta duration) {
|
| + DVLOG(1) << "SetDuration(" << duration.InSecondsF() << ")";
|
| +
|
| + if (duration == duration_)
|
| + return;
|
| +
|
| + UpdateDuration(duration);
|
| +
|
| + if (audio_)
|
| + audio_->OnSetDuration(duration);
|
| +
|
| + if (video_)
|
| + video_->OnSetDuration(duration);
|
| +}
|
| +
|
| bool ChunkDemuxer::SetTimestampOffset(const std::string& id, TimeDelta offset) {
|
| DVLOG(1) << "SetTimestampOffset(" << id << ", " << offset.InSecondsF() << ")";
|
| CHECK(IsValidId(id));
|
|
|