| Index: media/filters/chunk_demuxer.cc
|
| diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc
|
| index 72c7ef43e5c772dab9759c09a5bee78601370f0e..6ba9a1387a862e3d3516e28cb19d5818c3a540ac 100644
|
| --- a/media/filters/chunk_demuxer.cc
|
| +++ b/media/filters/chunk_demuxer.cc
|
| @@ -94,11 +94,10 @@ class SourceState {
|
| typedef base::Callback<void(
|
| ChunkDemuxerStream*, const TextTrackConfig&)> NewTextTrackCB;
|
|
|
| - SourceState(
|
| - scoped_ptr<StreamParser> stream_parser,
|
| - scoped_ptr<FrameProcessor> frame_processor, const LogCB& log_cb,
|
| - const CreateDemuxerStreamCB& create_demuxer_stream_cb,
|
| - const scoped_refptr<MediaLog>& media_log);
|
| + SourceState(scoped_ptr<StreamParser> stream_parser,
|
| + scoped_ptr<FrameProcessor> frame_processor,
|
| + const CreateDemuxerStreamCB& create_demuxer_stream_cb,
|
| + const scoped_refptr<MediaLog>& media_log);
|
|
|
| ~SourceState();
|
|
|
| @@ -234,7 +233,6 @@ class SourceState {
|
| TextStreamMap text_stream_map_; // |this| owns the map's stream pointers.
|
|
|
| scoped_ptr<FrameProcessor> frame_processor_;
|
| - LogCB log_cb_;
|
| scoped_refptr<MediaLog> media_log_;
|
| StreamParser::InitCB init_cb_;
|
|
|
| @@ -256,7 +254,6 @@ class SourceState {
|
|
|
| SourceState::SourceState(scoped_ptr<StreamParser> stream_parser,
|
| scoped_ptr<FrameProcessor> frame_processor,
|
| - const LogCB& log_cb,
|
| const CreateDemuxerStreamCB& create_demuxer_stream_cb,
|
| const scoped_refptr<MediaLog>& media_log)
|
| : create_demuxer_stream_cb_(create_demuxer_stream_cb),
|
| @@ -267,7 +264,6 @@ SourceState::SourceState(scoped_ptr<StreamParser> stream_parser,
|
| audio_(NULL),
|
| video_(NULL),
|
| frame_processor_(frame_processor.release()),
|
| - log_cb_(log_cb),
|
| media_log_(media_log),
|
| auto_update_timestamp_offset_(false) {
|
| DCHECK(!create_demuxer_stream_cb_.is_null());
|
| @@ -297,7 +293,7 @@ void SourceState::Init(
|
| new_text_track_cb_.is_null(), encrypted_media_init_data_cb,
|
| base::Bind(&SourceState::OnNewMediaSegment, base::Unretained(this)),
|
| base::Bind(&SourceState::OnEndOfMediaSegment, base::Unretained(this)),
|
| - log_cb_);
|
| + media_log_);
|
| }
|
|
|
| void SourceState::SetSequenceMode(bool sequence_mode) {
|
| @@ -333,7 +329,7 @@ bool SourceState::Append(
|
| // append window and timestamp offset pointer. See http://crbug.com/351454.
|
| bool result = stream_parser_->Parse(data, length);
|
| if (!result) {
|
| - MEDIA_LOG(ERROR, log_cb_)
|
| + MEDIA_LOG(ERROR, media_log_)
|
| << __FUNCTION__ << ": stream parsing failed."
|
| << " Data size=" << length
|
| << " append_window_start=" << append_window_start.InSecondsF()
|
| @@ -571,7 +567,7 @@ bool SourceState::OnNewConfigs(
|
| // Signal an error if we get configuration info for stream types that weren't
|
| // specified in AddId() or more configs after a stream is initialized.
|
| if (allow_audio != audio_config.IsValidConfig()) {
|
| - MEDIA_LOG(ERROR, log_cb_)
|
| + MEDIA_LOG(ERROR, media_log_)
|
| << "Initialization segment"
|
| << (audio_config.IsValidConfig() ? " has" : " does not have")
|
| << " an audio track, but the mimetype"
|
| @@ -581,7 +577,7 @@ bool SourceState::OnNewConfigs(
|
| }
|
|
|
| if (allow_video != video_config.IsValidConfig()) {
|
| - MEDIA_LOG(ERROR, log_cb_)
|
| + MEDIA_LOG(ERROR, media_log_)
|
| << "Initialization segment"
|
| << (video_config.IsValidConfig() ? " has" : " does not have")
|
| << " a video track, but the mimetype"
|
| @@ -616,7 +612,7 @@ bool SourceState::OnNewConfigs(
|
| }
|
|
|
| frame_processor_->OnPossibleAudioConfigUpdate(audio_config);
|
| - success &= audio_->UpdateAudioConfig(audio_config, log_cb_);
|
| + success &= audio_->UpdateAudioConfig(audio_config, media_log_);
|
| }
|
|
|
| if (video_config.IsValidConfig()) {
|
| @@ -643,7 +639,7 @@ bool SourceState::OnNewConfigs(
|
| }
|
| }
|
|
|
| - success &= video_->UpdateVideoConfig(video_config, log_cb_);
|
| + success &= video_->UpdateVideoConfig(video_config, media_log_);
|
| }
|
|
|
| typedef StreamParser::TextTrackConfigMap::const_iterator TextConfigItr;
|
| @@ -654,11 +650,11 @@ bool SourceState::OnNewConfigs(
|
| create_demuxer_stream_cb_.Run(DemuxerStream::TEXT);
|
| if (!frame_processor_->AddTrack(itr->first, text_stream)) {
|
| success &= false;
|
| - MEDIA_LOG(ERROR, log_cb_) << "Failed to add text track ID "
|
| - << itr->first << " to frame processor.";
|
| + MEDIA_LOG(ERROR, media_log_) << "Failed to add text track ID "
|
| + << itr->first << " to frame processor.";
|
| break;
|
| }
|
| - text_stream->UpdateTextConfig(itr->second, log_cb_);
|
| + text_stream->UpdateTextConfig(itr->second, media_log_);
|
| text_stream_map_[itr->first] = text_stream;
|
| new_text_track_cb_.Run(text_stream, itr->second);
|
| }
|
| @@ -666,7 +662,8 @@ bool SourceState::OnNewConfigs(
|
| const size_t text_count = text_stream_map_.size();
|
| if (text_configs.size() != text_count) {
|
| success &= false;
|
| - MEDIA_LOG(ERROR, log_cb_) << "The number of text track configs changed.";
|
| + MEDIA_LOG(ERROR, media_log_)
|
| + << "The number of text track configs changed.";
|
| } else if (text_count == 1) {
|
| TextConfigItr config_itr = text_configs.begin();
|
| TextStreamMap::iterator stream_itr = text_stream_map_.begin();
|
| @@ -678,7 +675,7 @@ bool SourceState::OnNewConfigs(
|
| old_config.id());
|
| if (!new_config.Matches(old_config)) {
|
| success &= false;
|
| - MEDIA_LOG(ERROR, log_cb_)
|
| + MEDIA_LOG(ERROR, media_log_)
|
| << "New text track config does not match old one.";
|
| } else {
|
| StreamParser::TrackId old_id = stream_itr->first;
|
| @@ -689,7 +686,7 @@ bool SourceState::OnNewConfigs(
|
| text_stream_map_[config_itr->first] = text_stream;
|
| } else {
|
| success &= false;
|
| - MEDIA_LOG(ERROR, log_cb_)
|
| + MEDIA_LOG(ERROR, media_log_)
|
| << "Error remapping single text track number";
|
| }
|
| }
|
| @@ -701,7 +698,7 @@ bool SourceState::OnNewConfigs(
|
| text_stream_map_.find(config_itr->first);
|
| if (stream_itr == text_stream_map_.end()) {
|
| success &= false;
|
| - MEDIA_LOG(ERROR, log_cb_)
|
| + MEDIA_LOG(ERROR, media_log_)
|
| << "Unexpected text track configuration for track ID "
|
| << config_itr->first;
|
| break;
|
| @@ -712,9 +709,9 @@ bool SourceState::OnNewConfigs(
|
| TextTrackConfig old_config = stream->text_track_config();
|
| if (!new_config.Matches(old_config)) {
|
| success &= false;
|
| - MEDIA_LOG(ERROR, log_cb_) << "New text track config for track ID "
|
| - << config_itr->first
|
| - << " does not match old one.";
|
| + MEDIA_LOG(ERROR, media_log_) << "New text track config for track ID "
|
| + << config_itr->first
|
| + << " does not match old one.";
|
| break;
|
| }
|
| }
|
| @@ -924,8 +921,9 @@ void ChunkDemuxerStream::OnNewMediaSegment(DecodeTimestamp start_timestamp) {
|
| stream_->OnNewMediaSegment(start_timestamp);
|
| }
|
|
|
| -bool ChunkDemuxerStream::UpdateAudioConfig(const AudioDecoderConfig& config,
|
| - const LogCB& log_cb) {
|
| +bool ChunkDemuxerStream::UpdateAudioConfig(
|
| + const AudioDecoderConfig& config,
|
| + const scoped_refptr<MediaLog>& media_log) {
|
| DCHECK(config.IsValidConfig());
|
| DCHECK_EQ(type_, AUDIO);
|
| base::AutoLock auto_lock(lock_);
|
| @@ -942,15 +940,16 @@ bool ChunkDemuxerStream::UpdateAudioConfig(const AudioDecoderConfig& config,
|
| splice_frames_enabled_ && codec_supported;
|
|
|
| stream_.reset(
|
| - new SourceBufferStream(config, log_cb, splice_frames_enabled_));
|
| + new SourceBufferStream(config, media_log, splice_frames_enabled_));
|
| return true;
|
| }
|
|
|
| return stream_->UpdateAudioConfig(config);
|
| }
|
|
|
| -bool ChunkDemuxerStream::UpdateVideoConfig(const VideoDecoderConfig& config,
|
| - const LogCB& log_cb) {
|
| +bool ChunkDemuxerStream::UpdateVideoConfig(
|
| + const VideoDecoderConfig& config,
|
| + const scoped_refptr<MediaLog>& media_log) {
|
| DCHECK(config.IsValidConfig());
|
| DCHECK_EQ(type_, VIDEO);
|
| base::AutoLock auto_lock(lock_);
|
| @@ -958,20 +957,22 @@ bool ChunkDemuxerStream::UpdateVideoConfig(const VideoDecoderConfig& config,
|
| if (!stream_) {
|
| DCHECK_EQ(state_, UNINITIALIZED);
|
| stream_.reset(
|
| - new SourceBufferStream(config, log_cb, splice_frames_enabled_));
|
| + new SourceBufferStream(config, media_log, splice_frames_enabled_));
|
| return true;
|
| }
|
|
|
| return stream_->UpdateVideoConfig(config);
|
| }
|
|
|
| -void ChunkDemuxerStream::UpdateTextConfig(const TextTrackConfig& config,
|
| - const LogCB& log_cb) {
|
| +void ChunkDemuxerStream::UpdateTextConfig(
|
| + const TextTrackConfig& config,
|
| + const scoped_refptr<MediaLog>& media_log) {
|
| DCHECK_EQ(type_, TEXT);
|
| base::AutoLock auto_lock(lock_);
|
| DCHECK(!stream_);
|
| DCHECK_EQ(state_, UNINITIALIZED);
|
| - stream_.reset(new SourceBufferStream(config, log_cb, splice_frames_enabled_));
|
| + stream_.reset(
|
| + new SourceBufferStream(config, media_log, splice_frames_enabled_));
|
| }
|
|
|
| void ChunkDemuxerStream::MarkEndOfStream() {
|
| @@ -1103,7 +1104,6 @@ void ChunkDemuxerStream::CompletePendingReadIfPossible_Locked() {
|
| ChunkDemuxer::ChunkDemuxer(
|
| const base::Closure& open_cb,
|
| const EncryptedMediaInitDataCB& encrypted_media_init_data_cb,
|
| - const LogCB& log_cb,
|
| const scoped_refptr<MediaLog>& media_log,
|
| bool splice_frames_enabled)
|
| : state_(WAITING_FOR_INIT),
|
| @@ -1112,7 +1112,6 @@ ChunkDemuxer::ChunkDemuxer(
|
| open_cb_(open_cb),
|
| encrypted_media_init_data_cb_(encrypted_media_init_data_cb),
|
| enable_text_(false),
|
| - log_cb_(log_cb),
|
| media_log_(media_log),
|
| duration_(kNoTimestamp()),
|
| user_specified_duration_(-1),
|
| @@ -1252,9 +1251,8 @@ ChunkDemuxer::Status ChunkDemuxer::AddId(const std::string& id,
|
|
|
| bool has_audio = false;
|
| bool has_video = false;
|
| - scoped_ptr<media::StreamParser> stream_parser(
|
| - StreamParserFactory::Create(type, codecs, log_cb_,
|
| - &has_audio, &has_video));
|
| + scoped_ptr<media::StreamParser> stream_parser(StreamParserFactory::Create(
|
| + type, codecs, media_log_, &has_audio, &has_video));
|
|
|
| if (!stream_parser)
|
| return ChunkDemuxer::kNotSupported;
|
| @@ -1273,12 +1271,10 @@ ChunkDemuxer::Status ChunkDemuxer::AddId(const std::string& id,
|
| new FrameProcessor(base::Bind(&ChunkDemuxer::IncreaseDurationIfNecessary,
|
| base::Unretained(this))));
|
|
|
| - scoped_ptr<SourceState> source_state(
|
| - new SourceState(stream_parser.Pass(),
|
| - frame_processor.Pass(), log_cb_,
|
| - base::Bind(&ChunkDemuxer::CreateDemuxerStream,
|
| - base::Unretained(this)),
|
| - media_log_));
|
| + scoped_ptr<SourceState> source_state(new SourceState(
|
| + stream_parser.Pass(), frame_processor.Pass(),
|
| + base::Bind(&ChunkDemuxer::CreateDemuxerStream, base::Unretained(this)),
|
| + media_log_));
|
|
|
| SourceState::NewTextTrackCB new_text_track_cb;
|
|
|
| @@ -1661,7 +1657,7 @@ void ChunkDemuxer::OnSourceInitDone(
|
| if (!params.timeline_offset.is_null()) {
|
| if (!timeline_offset_.is_null() &&
|
| params.timeline_offset != timeline_offset_) {
|
| - MEDIA_LOG(ERROR, log_cb_)
|
| + MEDIA_LOG(ERROR, media_log_)
|
| << "Timeline offset is not the same across all SourceBuffers.";
|
| ReportError_Locked(DEMUXER_ERROR_COULD_NOT_OPEN);
|
| return;
|
|
|