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

Unified Diff: media/filters/chunk_demuxer.cc

Issue 11471006: Log MediaSource parsing errors to the MediaLog so they can appear in chrome:media-internals. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nit. Created 8 years 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/chunk_demuxer_unittest.cc » ('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 c3cbbb78850a0dcf1b22d6909042538ab79b0998..6af84a31b4fc0d46d75138ae9fe6aec0c865bedc 100644
--- a/media/filters/chunk_demuxer.cc
+++ b/media/filters/chunk_demuxer.cc
@@ -107,6 +107,7 @@ static const SupportedTypeInfo kSupportedTypeInfo[] = {
// and |has_video| are undefined.
static bool IsSupported(const std::string& type,
std::vector<std::string>& codecs,
+ const LogCB& log_cb,
ParserFactoryFunction* factory_function,
bool* has_audio,
bool* has_video) {
@@ -133,8 +134,11 @@ static bool IsSupported(const std::string& type,
}
}
- if (!found_codec)
+ if (!found_codec) {
+ MEDIA_LOG(log_cb) << "Codec '" << codecs[j]
+ <<"' is not supported for '" << type << "'";
return false;
+ }
switch (codec_type) {
case DemuxerStream::AUDIO:
@@ -144,8 +148,8 @@ static bool IsSupported(const std::string& type,
*has_video = true;
break;
default:
- DVLOG(1) << "Unsupported codec type '"<< codec_type << "' for "
- << codecs[j];
+ MEDIA_LOG(log_cb) << "Unsupported codec type '"<< codec_type
+ << "' for " << codecs[j];
return false;
}
}
@@ -167,8 +171,10 @@ class ChunkDemuxerStream : public DemuxerStream {
typedef std::deque<ReadCB> ReadCBQueue;
typedef std::deque<base::Closure> ClosureQueue;
- explicit ChunkDemuxerStream(const AudioDecoderConfig& audio_config);
- explicit ChunkDemuxerStream(const VideoDecoderConfig& video_config);
+ ChunkDemuxerStream(const AudioDecoderConfig& audio_config,
+ const LogCB& log_cb);
+ ChunkDemuxerStream(const VideoDecoderConfig& video_config,
+ const LogCB& log_cb);
void StartWaitingForSeek();
void Seek(TimeDelta time);
@@ -248,18 +254,20 @@ class ChunkDemuxerStream : public DemuxerStream {
DISALLOW_IMPLICIT_CONSTRUCTORS(ChunkDemuxerStream);
};
-ChunkDemuxerStream::ChunkDemuxerStream(const AudioDecoderConfig& audio_config)
+ChunkDemuxerStream::ChunkDemuxerStream(const AudioDecoderConfig& audio_config,
+ const LogCB& log_cb)
: type_(AUDIO),
state_(RETURNING_DATA_FOR_READS),
end_of_stream_(false) {
- stream_.reset(new SourceBufferStream(audio_config));
+ stream_.reset(new SourceBufferStream(audio_config, log_cb));
}
-ChunkDemuxerStream::ChunkDemuxerStream(const VideoDecoderConfig& video_config)
+ChunkDemuxerStream::ChunkDemuxerStream(const VideoDecoderConfig& video_config,
+ const LogCB& log_cb)
: type_(VIDEO),
state_(RETURNING_DATA_FOR_READS),
end_of_stream_(false) {
- stream_.reset(new SourceBufferStream(video_config));
+ stream_.reset(new SourceBufferStream(video_config, log_cb));
}
void ChunkDemuxerStream::StartWaitingForSeek() {
@@ -533,11 +541,13 @@ bool ChunkDemuxerStream::GetNextBuffer_Locked(
}
ChunkDemuxer::ChunkDemuxer(const base::Closure& open_cb,
- const NeedKeyCB& need_key_cb)
+ const NeedKeyCB& need_key_cb,
+ const LogCB& log_cb)
: state_(WAITING_FOR_INIT),
host_(NULL),
open_cb_(open_cb),
- need_key_cb_(need_key_cb) {
+ need_key_cb_(need_key_cb),
+ log_cb_(log_cb) {
DCHECK(!open_cb_.is_null());
DCHECK(!need_key_cb_.is_null());
}
@@ -662,8 +672,11 @@ ChunkDemuxer::Status ChunkDemuxer::AddId(const std::string& id,
bool has_audio = false;
bool has_video = false;
ParserFactoryFunction factory_function = NULL;
- if (!IsSupported(type, codecs, &factory_function, &has_audio, &has_video))
+ std::string error;
+ if (!IsSupported(type, codecs, log_cb_, &factory_function, &has_audio,
+ &has_video)) {
return kNotSupported;
+ }
if ((has_audio && !source_id_audio_.empty()) ||
(has_video && !source_id_video_.empty()))
@@ -696,7 +709,8 @@ ChunkDemuxer::Status ChunkDemuxer::AddId(const std::string& id,
base::Bind(&ChunkDemuxer::OnNeedKey, base::Unretained(this)),
base::Bind(&ChunkDemuxer::OnNewMediaSegment, base::Unretained(this), id),
base::Bind(&ChunkDemuxer::OnEndOfMediaSegment,
- base::Unretained(this), id));
+ base::Unretained(this), id),
+ log_cb_);
stream_parser_map_[id] = stream_parser.release();
SourceInfo info = { base::TimeDelta(), true };
@@ -1046,13 +1060,23 @@ bool ChunkDemuxer::OnNewConfigs(bool has_audio, bool has_video,
// specified in AddId() or more configs after a stream is initialized.
// Only allow a single audio config for now.
if (has_audio != audio_config.IsValidConfig()) {
- DVLOG(1) << "OnNewConfigs() : Got unexpected audio config.";
+ MEDIA_LOG(log_cb_)
+ << "Initialization segment"
+ << (audio_config.IsValidConfig() ? " has" : " does not have")
+ << " an audio track, but the mimetype"
+ << (has_audio ? " specifies" : " does not specify")
+ << " an audio codec.";
return false;
}
// Only allow a single video config for now.
if (has_video != video_config.IsValidConfig()) {
- DVLOG(1) << "OnNewConfigs() : Got unexpected video config.";
+ MEDIA_LOG(log_cb_)
+ << "Initialization segment"
+ << (video_config.IsValidConfig() ? " has" : " does not have")
+ << " a video track, but the mimetype"
+ << (has_video ? " specifies" : " does not specify")
+ << " a video codec.";
return false;
}
@@ -1061,7 +1085,7 @@ bool ChunkDemuxer::OnNewConfigs(bool has_audio, bool has_video,
if (audio_) {
success &= audio_->UpdateAudioConfig(audio_config);
} else {
- audio_ = new ChunkDemuxerStream(audio_config);
+ audio_ = new ChunkDemuxerStream(audio_config, log_cb_);
}
}
@@ -1069,7 +1093,7 @@ bool ChunkDemuxer::OnNewConfigs(bool has_audio, bool has_video,
if (video_) {
success &= video_->UpdateVideoConfig(video_config);
} else {
- video_ = new ChunkDemuxerStream(video_config);
+ video_ = new ChunkDemuxerStream(video_config, log_cb_);
}
}
« no previous file with comments | « media/filters/chunk_demuxer.h ('k') | media/filters/chunk_demuxer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698