| Index: media/filters/chunk_demuxer.cc
|
| diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
|
| index 66eb09a011eb0c2f121d5fab0d69fbb79c001248..a81505429ff6f4cc81f6f4b3924f0e1fcb57b5a5 100644
|
| --- a/media/filters/chunk_demuxer.cc
|
| +++ b/media/filters/chunk_demuxer.cc
|
| @@ -120,9 +120,11 @@ void ChunkDemuxerStream::Remove(TimeDelta start, TimeDelta end,
|
| }
|
|
|
| bool ChunkDemuxerStream::EvictCodedFrames(DecodeTimestamp media_time,
|
| - size_t newDataSize) {
|
| + size_t eviction_size,
|
| + size_t* bytes_released) {
|
| base::AutoLock auto_lock(lock_);
|
| - return stream_->GarbageCollectIfNeeded(media_time, newDataSize);
|
| + return stream_->GarbageCollectIfNeeded(media_time, eviction_size,
|
| + bytes_released);
|
| }
|
|
|
| void ChunkDemuxerStream::OnSetDuration(TimeDelta duration) {
|
| @@ -318,6 +320,11 @@ void ChunkDemuxerStream::SetStreamMemoryLimit(size_t memory_limit) {
|
| stream_->set_memory_limit(memory_limit);
|
| }
|
|
|
| +size_t ChunkDemuxerStream::stream_memory_limit() const {
|
| + DCHECK(stream_);
|
| + return stream_->memory_limit();
|
| +}
|
| +
|
| void ChunkDemuxerStream::SetLiveness(Liveness liveness) {
|
| base::AutoLock auto_lock(lock_);
|
| liveness_ = liveness;
|
| @@ -736,12 +743,27 @@ void ChunkDemuxer::OnSelectedVideoTrackChanged(
|
| }
|
| }
|
|
|
| +void ChunkDemuxer::OnMemoryPressure(
|
| + base::TimeDelta currentMediaTime,
|
| + base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) {
|
| + if (memory_pressure_level <
|
| + base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE)
|
| + return;
|
| +
|
| + DecodeTimestamp media_time_dts =
|
| + DecodeTimestamp::FromPresentationTime(currentMediaTime);
|
| + base::AutoLock auto_lock(lock_);
|
| + for (const auto& itr : source_state_map_) {
|
| + itr.second->OnMemoryPressure(media_time_dts, memory_pressure_level);
|
| + }
|
| +}
|
| +
|
| bool ChunkDemuxer::EvictCodedFrames(const std::string& id,
|
| base::TimeDelta currentMediaTime,
|
| - size_t newDataSize) {
|
| + size_t eviction_size) {
|
| DVLOG(1) << __func__ << "(" << id << ")"
|
| << " media_time=" << currentMediaTime.InSecondsF()
|
| - << " newDataSize=" << newDataSize;
|
| + << " eviction_size=" << eviction_size;
|
| base::AutoLock auto_lock(lock_);
|
|
|
| // Note: The direct conversion from PTS to DTS is safe here, since we don't
|
| @@ -756,7 +778,7 @@ bool ChunkDemuxer::EvictCodedFrames(const std::string& id,
|
| LOG(WARNING) << __func__ << " stream " << id << " not found";
|
| return false;
|
| }
|
| - return itr->second->EvictCodedFrames(media_time_dts, newDataSize);
|
| + return itr->second->EvictCodedFrames(media_time_dts, eviction_size);
|
| }
|
|
|
| bool ChunkDemuxer::AppendData(const std::string& id,
|
|
|