Chromium Code Reviews| Index: media/blink/multibuffer_reader.cc |
| diff --git a/media/blink/multibuffer_reader.cc b/media/blink/multibuffer_reader.cc |
| index 2a695ff6797f53078b417a48d5e221965dd35b95..1872110112e49c866cfc94a97e2228c0db8db96d 100644 |
| --- a/media/blink/multibuffer_reader.cc |
| +++ b/media/blink/multibuffer_reader.cc |
| @@ -24,6 +24,7 @@ MultiBufferReader::MultiBufferReader( |
| preload_low_(0), |
| max_buffer_forward_(0), |
| max_buffer_backward_(0), |
| + pinned_range_(0, 0), |
| pos_(start), |
| preload_pos_(-1), |
| loading_(true), |
| @@ -35,11 +36,10 @@ MultiBufferReader::MultiBufferReader( |
| } |
| MultiBufferReader::~MultiBufferReader() { |
| + PinRange(0, 0); |
| multibuffer_->RemoveReader(preload_pos_, this); |
| multibuffer_->IncrementMaxSize( |
| -block_ceil(max_buffer_forward_ + max_buffer_backward_)); |
| - multibuffer_->PinRange(block(pos_ - max_buffer_backward_), |
| - block_ceil(pos_ + max_buffer_forward_), -1); |
| multibuffer_->CleanupWriters(preload_pos_); |
| } |
| @@ -47,14 +47,8 @@ void MultiBufferReader::Seek(int64_t pos) { |
| DCHECK_GE(pos, 0); |
| if (pos == pos_) |
| return; |
| - // Use a rangemap to compute the diff in pinning. |
| - IntervalMap<MultiBuffer::BlockId, int32_t> tmp; |
| - tmp.IncrementInterval(block(pos_ - max_buffer_backward_), |
|
liberato (no reviews please)
2016/03/02 21:45:46
x -= y;
x += y;
// success! :)
hubbe
2016/03/02 22:10:15
que?
liberato (no reviews please)
2016/03/02 22:13:33
|pos_| vs |pos| . maybe time for me to increase t
hubbe
2016/03/02 22:22:54
Acknowledged.
|
| - block_ceil(pos_ + max_buffer_forward_), -1); |
| - tmp.IncrementInterval(block(pos - max_buffer_backward_), |
| - block_ceil(pos + max_buffer_forward_), 1); |
| - |
| - multibuffer_->PinRanges(tmp); |
| + PinRange(block(pos - max_buffer_backward_), |
| + block_ceil(pos + max_buffer_forward_)); |
| multibuffer_->RemoveReader(preload_pos_, this); |
| MultiBufferBlockId old_preload_pos = preload_pos_; |
| @@ -68,15 +62,10 @@ void MultiBufferReader::SetMaxBuffer(int64_t backward, int64_t forward) { |
| // Safe, because we know this doesn't actually prune the cache right away. |
| multibuffer_->IncrementMaxSize( |
| -block_ceil(max_buffer_forward_ + max_buffer_backward_)); |
| - // Use a rangemap to compute the diff in pinning. |
| - IntervalMap<MultiBuffer::BlockId, int32_t> tmp; |
| - tmp.IncrementInterval(block(pos_ - max_buffer_backward_), |
| - block_ceil(pos_ + max_buffer_forward_), -1); |
| max_buffer_backward_ = backward; |
| max_buffer_forward_ = forward; |
| - tmp.IncrementInterval(block(pos_ - max_buffer_backward_), |
| - block_ceil(pos_ + max_buffer_forward_), 1); |
| - multibuffer_->PinRanges(tmp); |
| + PinRange(block(pos_ - max_buffer_backward_), |
| + block_ceil(pos_ + max_buffer_forward_)); |
| multibuffer_->IncrementMaxSize( |
| block_ceil(max_buffer_forward_ + max_buffer_backward_)); |
| @@ -243,4 +232,15 @@ void MultiBufferReader::UpdateInternalState() { |
| CheckWait(); |
| } |
| +void MultiBufferReader::PinRange(MultiBuffer::BlockId begin, |
| + MultiBuffer::BlockId end) { |
| + // Use a rangemap to compute the diff in pinning. |
| + IntervalMap<MultiBuffer::BlockId, int32_t> tmp; |
| + tmp.IncrementInterval(pinned_range_.begin, pinned_range_.end, -1); |
| + tmp.IncrementInterval(begin, end, 1); |
| + multibuffer_->PinRanges(tmp); |
| + pinned_range_.begin = begin; |
| + pinned_range_.end = end; |
| +} |
| + |
| } // namespace media |