| Index: media/filters/chunk_demuxer.cc
|
| diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
|
| index d641ded72c00e74a3fd48b9805c1e5f319cf9efa..364c55825a25393a5a705f0d62a39ef9bc984b71 100644
|
| --- a/media/filters/chunk_demuxer.cc
|
| +++ b/media/filters/chunk_demuxer.cc
|
| @@ -614,6 +614,11 @@ bool SourceState::OnNewConfigs(
|
| DVLOG(1) << "Failed to add audio track to frame processor.";
|
| return false;
|
| }
|
| +
|
| + audio_->UpdateRangeRemovalCB(
|
| + base::Bind(&FrameProcessor::OnRangeRemoval,
|
| + base::Unretained(frame_processor_.get()),
|
| + FrameProcessor::kAudioTrackId));
|
| }
|
|
|
| frame_processor_->OnPossibleAudioConfigUpdate(audio_config);
|
| @@ -642,6 +647,11 @@ bool SourceState::OnNewConfigs(
|
| DVLOG(1) << "Failed to add video track to frame processor.";
|
| return false;
|
| }
|
| +
|
| + video_->UpdateRangeRemovalCB(
|
| + base::Bind(&FrameProcessor::OnRangeRemoval,
|
| + base::Unretained(frame_processor_.get()),
|
| + FrameProcessor::kVideoTrackId));
|
| }
|
|
|
| success &= video_->UpdateVideoConfig(video_config, log_cb_);
|
| @@ -659,6 +669,9 @@ bool SourceState::OnNewConfigs(
|
| << itr->first << " to frame processor.";
|
| break;
|
| }
|
| + text_stream->UpdateRangeRemovalCB(
|
| + base::Bind(&FrameProcessor::OnRangeRemoval,
|
| + base::Unretained(frame_processor_.get()), itr->first));
|
| text_stream->UpdateTextConfig(itr->second, log_cb_);
|
| text_stream_map_[itr->first] = text_stream;
|
| new_text_track_cb_.Run(text_stream, itr->second);
|
| @@ -686,8 +699,11 @@ bool SourceState::OnNewConfigs(
|
| StreamParser::TrackId new_id = config_itr->first;
|
| if (new_id != old_id) {
|
| if (frame_processor_->UpdateTrack(old_id, new_id)) {
|
| + text_stream->UpdateRangeRemovalCB(
|
| + base::Bind(&FrameProcessor::OnRangeRemoval,
|
| + base::Unretained(frame_processor_.get()), new_id));
|
| text_stream_map_.clear();
|
| - text_stream_map_[config_itr->first] = text_stream;
|
| + text_stream_map_[new_id] = text_stream;
|
| } else {
|
| success &= false;
|
| MEDIA_LOG(ERROR, log_cb_)
|
| @@ -976,6 +992,13 @@ void ChunkDemuxerStream::UpdateTextConfig(const TextTrackConfig& config,
|
| stream_.reset(new SourceBufferStream(config, log_cb, splice_frames_enabled_));
|
| }
|
|
|
| +void ChunkDemuxerStream::UpdateRangeRemovalCB(
|
| + const SourceBufferStream::NotifyRangeRemovalCB& range_removal_cb) {
|
| + DCHECK(!range_removal_cb.is_null());
|
| + base::AutoLock auto_lock(lock_);
|
| + stream_->set_range_removal_cb(range_removal_cb);
|
| +}
|
| +
|
| void ChunkDemuxerStream::MarkEndOfStream() {
|
| base::AutoLock auto_lock(lock_);
|
| stream_->MarkEndOfStream();
|
|
|