Commit d4355e93 authored by Ted Meyer's avatar Ted Meyer Committed by Commit Bot

Clean up decoder stream error handling

This also changes the print behavior for media logs for media::Status
objects, since we're using them in more places now. They tend to be a
bit spammy in stdout.

Bug: 1141954

R=liberato

Change-Id: Ie40995eb10e8961233e333dc5aa7fdd7a02f6b3c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2504580Reviewed-by: default avatarXiaohan Wang <xhwang@chromium.org>
Reviewed-by: default avatarDale Curtis <dalecurtis@chromium.org>
Commit-Queue: Ted Meyer <tmathmeyer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#822093}
parent 9b230901
......@@ -32,10 +32,10 @@ std::string ToJSON(const media::MediaLogRecord* event) {
// TODO(tmathmeyer) replace this with a log-only EventHandler.
void Log(media::MediaLogRecord* event) {
if (event->type == media::MediaLogRecord::Type::kMediaStatus) {
LOG(ERROR) << "MediaEvent: " << ToJSON(event);
DVLOG(1) << "MediaEvent: " << ToJSON(event);
} else if (event->type == media::MediaLogRecord::Type::kMessage &&
event->params.HasKey("error")) {
LOG(ERROR) << "MediaEvent: " << ToJSON(event);
DVLOG(1) << "MediaEvent: " << ToJSON(event);
} else if (event->type != media::MediaLogRecord::Type::kMediaPropertyChange) {
DVLOG(1) << "MediaEvent: " << ToJSON(event);
}
......
......@@ -581,27 +581,23 @@ void DecoderStream<StreamType>::OnDecodeDone(
return;
default:
// TODO(liberato): Use |status| better, since it might not be a generic
// error anymore.
if (!decoder_produced_a_frame_ &&
base::FeatureList::IsEnabled(kFallbackAfterDecodeError)) {
pending_decode_requests_ = 0;
MEDIA_LOG(WARNING, media_log_)
<< GetStreamTypeString()
<< " decoder fallback after initial decode error.";
// Prevent all pending decode requests and outputs from those requests
// from being called back.
fallback_weak_factory_.InvalidateWeakPtrs();
std::string fallback_message =
GetStreamTypeString() +
" fallback to new decoder after initial decode error.";
FUNCTION_DVLOG(1) << ": " << fallback_message;
MEDIA_LOG(WARNING, media_log_) << fallback_message;
pending_decode_requests_ = 0;
state_ = STATE_REINITIALIZING_DECODER;
SelectDecoder();
} else {
std::string error_message = GetStreamTypeString() + " decode error!";
FUNCTION_DVLOG(1) << ": " << error_message;
MEDIA_LOG(ERROR, media_log_) << error_message;
media_log_->NotifyError(std::move(status));
MEDIA_LOG(ERROR, media_log_)
<< GetStreamTypeString() << " decode error!";
state_ = STATE_ERROR;
ClearOutputs();
if (read_cb_)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment