| Index: media/base/media_log.cc
|
| diff --git a/media/base/media_log.cc b/media/base/media_log.cc
|
| index e354ea03e8c05115636a2a9d0d2e9c759ee63ac9..0de1fd2b0867f88a21a5641ae025c3d1c0e222a8 100644
|
| --- a/media/base/media_log.cc
|
| +++ b/media/base/media_log.cc
|
| @@ -8,6 +8,7 @@
|
|
|
| #include "base/atomic_sequence_num.h"
|
| #include "base/json/json_writer.h"
|
| +#include "base/strings/string_util.h"
|
| #include "base/values.h"
|
|
|
| namespace media {
|
| @@ -168,42 +169,32 @@ std::string MediaLog::EventTypeToString(MediaLogEvent::Type type) {
|
| }
|
|
|
| std::string MediaLog::PipelineStatusToString(PipelineStatus status) {
|
| +#define STRINGIFY_STATUS_CASE(status) \
|
| + case status: \
|
| + return #status
|
| +
|
| switch (status) {
|
| - case PIPELINE_OK:
|
| - return "pipeline: ok";
|
| - case PIPELINE_ERROR_NETWORK:
|
| - return "pipeline: network error";
|
| - case PIPELINE_ERROR_DECODE:
|
| - return "pipeline: decode error";
|
| - case PIPELINE_ERROR_ABORT:
|
| - return "pipeline: abort";
|
| - case PIPELINE_ERROR_INITIALIZATION_FAILED:
|
| - return "pipeline: initialization failed";
|
| - case PIPELINE_ERROR_COULD_NOT_RENDER:
|
| - return "pipeline: could not render";
|
| - case PIPELINE_ERROR_EXTERNAL_RENDERER_FAILED:
|
| - return "pipeline: external renderer failed";
|
| - case PIPELINE_ERROR_READ:
|
| - return "pipeline: read error";
|
| - case PIPELINE_ERROR_INVALID_STATE:
|
| - return "pipeline: invalid state";
|
| - case DEMUXER_ERROR_COULD_NOT_OPEN:
|
| - return "demuxer: could not open";
|
| - case DEMUXER_ERROR_COULD_NOT_PARSE:
|
| - return "demuxer: could not parse";
|
| - case DEMUXER_ERROR_NO_SUPPORTED_STREAMS:
|
| - return "demuxer: no supported streams";
|
| - case DECODER_ERROR_NOT_SUPPORTED:
|
| - return "decoder: not supported";
|
| - case CHUNK_DEMUXER_ERROR_APPEND_FAILED:
|
| - return "chunk demuxer: append failed";
|
| - case CHUNK_DEMUXER_ERROR_EOS_STATUS_DECODE_ERROR:
|
| - return "chunk demuxer: application requested decode error on eos";
|
| - case CHUNK_DEMUXER_ERROR_EOS_STATUS_NETWORK_ERROR:
|
| - return "chunk demuxer: application requested network error on eos";
|
| - case AUDIO_RENDERER_ERROR:
|
| - return "audio renderer: output device reported an error";
|
| + STRINGIFY_STATUS_CASE(PIPELINE_OK);
|
| + STRINGIFY_STATUS_CASE(PIPELINE_ERROR_NETWORK);
|
| + STRINGIFY_STATUS_CASE(PIPELINE_ERROR_DECODE);
|
| + STRINGIFY_STATUS_CASE(PIPELINE_ERROR_ABORT);
|
| + STRINGIFY_STATUS_CASE(PIPELINE_ERROR_INITIALIZATION_FAILED);
|
| + STRINGIFY_STATUS_CASE(PIPELINE_ERROR_COULD_NOT_RENDER);
|
| + STRINGIFY_STATUS_CASE(PIPELINE_ERROR_EXTERNAL_RENDERER_FAILED);
|
| + STRINGIFY_STATUS_CASE(PIPELINE_ERROR_READ);
|
| + STRINGIFY_STATUS_CASE(PIPELINE_ERROR_INVALID_STATE);
|
| + STRINGIFY_STATUS_CASE(DEMUXER_ERROR_COULD_NOT_OPEN);
|
| + STRINGIFY_STATUS_CASE(DEMUXER_ERROR_COULD_NOT_PARSE);
|
| + STRINGIFY_STATUS_CASE(DEMUXER_ERROR_NO_SUPPORTED_STREAMS);
|
| + STRINGIFY_STATUS_CASE(DECODER_ERROR_NOT_SUPPORTED);
|
| + STRINGIFY_STATUS_CASE(CHUNK_DEMUXER_ERROR_APPEND_FAILED);
|
| + STRINGIFY_STATUS_CASE(CHUNK_DEMUXER_ERROR_EOS_STATUS_DECODE_ERROR);
|
| + STRINGIFY_STATUS_CASE(CHUNK_DEMUXER_ERROR_EOS_STATUS_NETWORK_ERROR);
|
| + STRINGIFY_STATUS_CASE(AUDIO_RENDERER_ERROR);
|
| }
|
| +
|
| +#undef STRINGIFY_STATUS_CASE
|
| +
|
| NOTREACHED();
|
| return NULL;
|
| }
|
| @@ -218,11 +209,33 @@ std::string MediaLog::MediaEventToLogString(const MediaLogEvent& event) {
|
| PipelineStatus status = static_cast<PipelineStatus>(error_code);
|
| return EventTypeToString(event.type) + " " + PipelineStatusToString(status);
|
| }
|
| +
|
| std::string params_json;
|
| base::JSONWriter::Write(event.params, ¶ms_json);
|
| return EventTypeToString(event.type) + " " + params_json;
|
| }
|
|
|
| +std::string MediaLog::MediaEventToMessageString(const MediaLogEvent& event) {
|
| + switch (event.type) {
|
| + case MediaLogEvent::PIPELINE_ERROR: {
|
| + int error_code = 0;
|
| + event.params.GetInteger("pipeline_error", &error_code);
|
| + DCHECK_NE(error_code, 0);
|
| + return PipelineStatusToString(static_cast<PipelineStatus>(error_code));
|
| + }
|
| + case MediaLogEvent::MEDIA_ERROR_LOG_ENTRY: {
|
| + std::string result = "";
|
| + if (event.params.GetString(MediaLogLevelToString(MEDIALOG_ERROR),
|
| + &result))
|
| + base::ReplaceChars(result, "\n", " ", &result);
|
| + return result;
|
| + }
|
| + default:
|
| + NOTREACHED();
|
| + return "";
|
| + }
|
| +}
|
| +
|
| std::string MediaLog::BufferingStateToString(BufferingState state) {
|
| switch (state) {
|
| case BUFFERING_HAVE_NOTHING:
|
| @@ -240,7 +253,7 @@ MediaLog::~MediaLog() {}
|
|
|
| void MediaLog::AddEvent(std::unique_ptr<MediaLogEvent> event) {}
|
|
|
| -std::string MediaLog::GetLastErrorMessage() {
|
| +std::string MediaLog::GetErrorMessage() {
|
| return "";
|
| }
|
|
|
|
|