Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(469)

Unified Diff: media/filters/chunk_demuxer.cc

Issue 1089873006: WIP - MSE: Drop non-keyframes that lack keyframe dependency (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Checkpoint of WIP while I work on prereq https://codereview.chromium.org/1091293005/ Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/chunk_demuxer.h ('k') | media/filters/frame_processor.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
« no previous file with comments | « media/filters/chunk_demuxer.h ('k') | media/filters/frame_processor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698