Chromium Code Reviews| Index: media/filters/chunk_demuxer.cc |
| diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc |
| index b7c4ca5be3be6c19410636cb2e36db1ff03c3deb..c0fb132b462e23d25b7c4f1907adacc51a843ff3 100644 |
| --- a/media/filters/chunk_demuxer.cc |
| +++ b/media/filters/chunk_demuxer.cc |
| @@ -1208,7 +1208,8 @@ bool ChunkDemuxer::IsValidId(const std::string& source_id) const { |
| } |
| void ChunkDemuxer::UpdateDuration(TimeDelta new_duration) { |
| - DCHECK(duration_ != new_duration); |
| + DCHECK(duration_ != new_duration || |
| + user_specified_duration_ != new_duration.InSecondsF()); |
| user_specified_duration_ = -1; |
| duration_ = new_duration; |
| host_->SetDuration(new_duration); |
| @@ -1248,8 +1249,12 @@ void ChunkDemuxer::DecreaseDurationIfNecessary() { |
| if (max_duration.is_zero()) |
| return; |
| - if (max_duration < duration_) |
| + // Note: be careful to also check |user_specified_duration_|, which may have |
| + // higher precision than |duration_|. |
| + if (max_duration < duration_ || |
| + max_duration.InSecondsF() < user_specified_duration_) { |
|
wolenetz
2016/12/16 00:56:51
good !!
chcunningham
2017/01/03 17:48:05
Acknowledged.
|
| UpdateDuration(max_duration); |
| + } |
| } |
| Ranges<TimeDelta> ChunkDemuxer::GetBufferedRanges() const { |