| Index: media/base/media_log.cc
|
| diff --git a/media/base/media_log.cc b/media/base/media_log.cc
|
| index 15bca418cec6939953eebb2de2253c80ee1a877a..ddf2c33450443fafc53d162ce6576b619c53d9ca 100644
|
| --- a/media/base/media_log.cc
|
| +++ b/media/base/media_log.cc
|
| @@ -35,6 +35,32 @@ const char* MediaLog::EventTypeToString(MediaLogEvent::Type type) {
|
| return "PAUSE";
|
| case MediaLogEvent::PIPELINE_STATE_CHANGED:
|
| return "PIPELINE_STATE_CHANGED";
|
| + case MediaLogEvent::PIPELINE_ERROR:
|
| + return "PIPELINE_ERROR";
|
| + case MediaLogEvent::VIDEO_SIZE_SET:
|
| + return "VIDEO_SIZE_SET";
|
| + case MediaLogEvent::TIME_SET:
|
| + return "TIME_SET";
|
| + case MediaLogEvent::DURATION_SET:
|
| + return "DURATION_SET";
|
| + case MediaLogEvent::BUFFERED_TIME_SET:
|
| + return "BUFFERED_TIME_SET";
|
| + case MediaLogEvent::TOTAL_BYTES_SET:
|
| + return "TOTAL_BYTES_SET";
|
| + case MediaLogEvent::BUFFERED_BYTES_SET:
|
| + return "BUFFERED_BYTES_SET";
|
| + case MediaLogEvent::STREAMING_SET:
|
| + return "STREAMING_SET";
|
| + case MediaLogEvent::LOADED_SET:
|
| + return "LOADED_SET";
|
| + case MediaLogEvent::NETWORK_ACTIVITY_SET:
|
| + return "NETWORK_ACTIVITY_SET";
|
| + case MediaLogEvent::CURRENT_READ_POSITION_SET:
|
| + return "CURRENT_READ_POSITION_SET";
|
| + case MediaLogEvent::ENDED:
|
| + return "ENDED";
|
| + case MediaLogEvent::AUDIO_RENDERER_DISABLED:
|
| + return "AUDIO_RENDERER_DISABLED";
|
| case MediaLogEvent::BUFFERED_EXTENTS_CHANGED:
|
| return "BUFFERED_EXTENTS_CHANGED";
|
| }
|
| @@ -79,6 +105,49 @@ const char* MediaLog::PipelineStateToString(PipelineImpl::State state) {
|
| return NULL;
|
| }
|
|
|
| +const char* MediaLog::PipelineStatusToString(PipelineStatus status) {
|
| + switch (status) {
|
| + case PIPELINE_OK:
|
| + return "pipeline: ok";
|
| + case PIPELINE_ERROR_URL_NOT_FOUND:
|
| + return "pipeline: url not found";
|
| + 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_REQUIRED_FILTER_MISSING:
|
| + return "pipeline: required filter missing";
|
| + case PIPELINE_ERROR_OUT_OF_MEMORY:
|
| + return "pipeline: out of memory";
|
| + case PIPELINE_ERROR_COULD_NOT_RENDER:
|
| + return "pipeline: could not render";
|
| + case PIPELINE_ERROR_READ:
|
| + return "pipeline: read error";
|
| + case PIPELINE_ERROR_AUDIO_HARDWARE:
|
| + return "pipeline: audio hardware error";
|
| + case PIPELINE_ERROR_OPERATION_PENDING:
|
| + return "pipeline: operation pending";
|
| + 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 "dumuxer: could not parse";
|
| + case DEMUXER_ERROR_NO_SUPPORTED_STREAMS:
|
| + return "demuxer: no supported streams";
|
| + case DEMUXER_ERROR_COULD_NOT_CREATE_THREAD:
|
| + return "demuxer: could not create thread";
|
| + case DATASOURCE_ERROR_URL_NOT_SUPPORTED:
|
| + return "data source: url not supported";
|
| + }
|
| + NOTREACHED();
|
| + return NULL;
|
| +}
|
| +
|
| MediaLog::MediaLog() {
|
| id_ = media_log_count.GetNext();
|
| }
|
| @@ -97,6 +166,28 @@ MediaLogEvent* MediaLog::CreateEvent(MediaLogEvent::Type type) {
|
| return event.release();
|
| }
|
|
|
| +MediaLogEvent* MediaLog::CreateBooleanEvent(MediaLogEvent::Type type,
|
| + const char* property, bool value) {
|
| + scoped_ptr<MediaLogEvent> event(CreateEvent(type));
|
| + event->params.SetBoolean(property, value);
|
| + return event.release();
|
| +}
|
| +
|
| +MediaLogEvent* MediaLog::CreateIntegerEvent(MediaLogEvent::Type type,
|
| + const char* property, int64 value) {
|
| + scoped_ptr<MediaLogEvent> event(CreateEvent(type));
|
| + event->params.SetInteger(property, value);
|
| + return event.release();
|
| +}
|
| +
|
| +MediaLogEvent* MediaLog::CreateTimeEvent(MediaLogEvent::Type type,
|
| + const char* property,
|
| + base::TimeDelta value) {
|
| + scoped_ptr<MediaLogEvent> event(CreateEvent(type));
|
| + event->params.SetDouble(property, value.InSecondsF());
|
| + return event.release();
|
| +}
|
| +
|
| MediaLogEvent* MediaLog::CreateLoadEvent(const std::string& url) {
|
| scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::LOAD));
|
| event->params.SetString("url", url);
|
| @@ -117,6 +208,19 @@ MediaLogEvent* MediaLog::CreatePipelineStateChangedEvent(
|
| return event.release();
|
| }
|
|
|
| +MediaLogEvent* MediaLog::CreatePipelineErrorEvent(PipelineStatus error) {
|
| + scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::PIPELINE_ERROR));
|
| + event->params.SetString("pipeline_error", PipelineStatusToString(error));
|
| + return event.release();
|
| +}
|
| +
|
| +MediaLogEvent* MediaLog::CreateVideoSizeSetEvent(size_t width, size_t height) {
|
| + scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::VIDEO_SIZE_SET));
|
| + event->params.SetInteger("width", width);
|
| + event->params.SetInteger("height", height);
|
| + return event.release();
|
| +}
|
| +
|
| MediaLogEvent* MediaLog::CreateBufferedExtentsChangedEvent(
|
| size_t start, size_t current, size_t end) {
|
| scoped_ptr<MediaLogEvent> event(
|
|
|