| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/base/media_log.h" | 5 #include "media/base/media_log.h" |
| 6 | 6 |
| 7 #include "base/atomic_sequence_num.h" | 7 #include "base/atomic_sequence_num.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/scoped_ptr.h" | 9 #include "base/scoped_ptr.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 case MediaLogEvent::LOAD: | 28 case MediaLogEvent::LOAD: |
| 29 return "LOAD"; | 29 return "LOAD"; |
| 30 case MediaLogEvent::SEEK: | 30 case MediaLogEvent::SEEK: |
| 31 return "SEEK"; | 31 return "SEEK"; |
| 32 case MediaLogEvent::PLAY: | 32 case MediaLogEvent::PLAY: |
| 33 return "PLAY"; | 33 return "PLAY"; |
| 34 case MediaLogEvent::PAUSE: | 34 case MediaLogEvent::PAUSE: |
| 35 return "PAUSE"; | 35 return "PAUSE"; |
| 36 case MediaLogEvent::PIPELINE_STATE_CHANGED: | 36 case MediaLogEvent::PIPELINE_STATE_CHANGED: |
| 37 return "PIPELINE_STATE_CHANGED"; | 37 return "PIPELINE_STATE_CHANGED"; |
| 38 case MediaLogEvent::PIPELINE_ERROR: |
| 39 return "PIPELINE_ERROR"; |
| 40 case MediaLogEvent::VIDEO_SIZE_SET: |
| 41 return "VIDEO_SIZE_SET"; |
| 42 case MediaLogEvent::DURATION_SET: |
| 43 return "DURATION_SET"; |
| 44 case MediaLogEvent::TOTAL_BYTES_SET: |
| 45 return "TOTAL_BYTES_SET"; |
| 46 case MediaLogEvent::STREAMING_SET: |
| 47 return "STREAMING_SET"; |
| 48 case MediaLogEvent::LOADED_SET: |
| 49 return "LOADED_SET"; |
| 50 case MediaLogEvent::NETWORK_ACTIVITY_SET: |
| 51 return "NETWORK_ACTIVITY_SET"; |
| 52 case MediaLogEvent::ENDED: |
| 53 return "ENDED"; |
| 54 case MediaLogEvent::AUDIO_RENDERER_DISABLED: |
| 55 return "AUDIO_RENDERER_DISABLED"; |
| 38 case MediaLogEvent::BUFFERED_EXTENTS_CHANGED: | 56 case MediaLogEvent::BUFFERED_EXTENTS_CHANGED: |
| 39 return "BUFFERED_EXTENTS_CHANGED"; | 57 return "BUFFERED_EXTENTS_CHANGED"; |
| 40 } | 58 } |
| 41 NOTREACHED(); | 59 NOTREACHED(); |
| 42 return NULL; | 60 return NULL; |
| 43 } | 61 } |
| 44 | 62 |
| 45 const char* MediaLog::PipelineStateToString(PipelineImpl::State state) { | 63 const char* MediaLog::PipelineStateToString(PipelineImpl::State state) { |
| 46 switch (state) { | 64 switch (state) { |
| 47 case PipelineImpl::kCreated: | 65 case PipelineImpl::kCreated: |
| (...skipping 24 matching lines...) Expand all Loading... |
| 72 return "stopping"; | 90 return "stopping"; |
| 73 case PipelineImpl::kStopped: | 91 case PipelineImpl::kStopped: |
| 74 return "stopped"; | 92 return "stopped"; |
| 75 case PipelineImpl::kError: | 93 case PipelineImpl::kError: |
| 76 return "error"; | 94 return "error"; |
| 77 } | 95 } |
| 78 NOTREACHED(); | 96 NOTREACHED(); |
| 79 return NULL; | 97 return NULL; |
| 80 } | 98 } |
| 81 | 99 |
| 100 const char* MediaLog::PipelineStatusToString(PipelineStatus status) { |
| 101 switch (status) { |
| 102 case PIPELINE_OK: |
| 103 return "pipeline: ok"; |
| 104 case PIPELINE_ERROR_URL_NOT_FOUND: |
| 105 return "pipeline: url not found"; |
| 106 case PIPELINE_ERROR_NETWORK: |
| 107 return "pipeline: network error"; |
| 108 case PIPELINE_ERROR_DECODE: |
| 109 return "pipeline: decode error"; |
| 110 case PIPELINE_ERROR_ABORT: |
| 111 return "pipeline: abort"; |
| 112 case PIPELINE_ERROR_INITIALIZATION_FAILED: |
| 113 return "pipeline: initialization failed"; |
| 114 case PIPELINE_ERROR_REQUIRED_FILTER_MISSING: |
| 115 return "pipeline: required filter missing"; |
| 116 case PIPELINE_ERROR_OUT_OF_MEMORY: |
| 117 return "pipeline: out of memory"; |
| 118 case PIPELINE_ERROR_COULD_NOT_RENDER: |
| 119 return "pipeline: could not render"; |
| 120 case PIPELINE_ERROR_READ: |
| 121 return "pipeline: read error"; |
| 122 case PIPELINE_ERROR_AUDIO_HARDWARE: |
| 123 return "pipeline: audio hardware error"; |
| 124 case PIPELINE_ERROR_OPERATION_PENDING: |
| 125 return "pipeline: operation pending"; |
| 126 case PIPELINE_ERROR_INVALID_STATE: |
| 127 return "pipeline: invalid state"; |
| 128 case DEMUXER_ERROR_COULD_NOT_OPEN: |
| 129 return "demuxer: could not open"; |
| 130 case DEMUXER_ERROR_COULD_NOT_PARSE: |
| 131 return "dumuxer: could not parse"; |
| 132 case DEMUXER_ERROR_NO_SUPPORTED_STREAMS: |
| 133 return "demuxer: no supported streams"; |
| 134 case DEMUXER_ERROR_COULD_NOT_CREATE_THREAD: |
| 135 return "demuxer: could not create thread"; |
| 136 case DATASOURCE_ERROR_URL_NOT_SUPPORTED: |
| 137 return "data source: url not supported"; |
| 138 } |
| 139 NOTREACHED(); |
| 140 return NULL; |
| 141 } |
| 142 |
| 82 MediaLog::MediaLog() { | 143 MediaLog::MediaLog() { |
| 83 id_ = media_log_count.GetNext(); | 144 id_ = media_log_count.GetNext(); |
| 84 } | 145 } |
| 85 | 146 |
| 86 MediaLog::~MediaLog() {} | 147 MediaLog::~MediaLog() {} |
| 87 | 148 |
| 88 void MediaLog::AddEvent(MediaLogEvent* event) { | 149 void MediaLog::AddEvent(MediaLogEvent* event) { |
| 89 scoped_ptr<MediaLogEvent> e(event); | 150 scoped_ptr<MediaLogEvent> e(event); |
| 90 } | 151 } |
| 91 | 152 |
| 92 MediaLogEvent* MediaLog::CreateEvent(MediaLogEvent::Type type) { | 153 MediaLogEvent* MediaLog::CreateEvent(MediaLogEvent::Type type) { |
| 93 scoped_ptr<MediaLogEvent> event(new MediaLogEvent); | 154 scoped_ptr<MediaLogEvent> event(new MediaLogEvent); |
| 94 event->id = id_; | 155 event->id = id_; |
| 95 event->type = type; | 156 event->type = type; |
| 96 event->time = base::Time::Now(); | 157 event->time = base::Time::Now(); |
| 97 return event.release(); | 158 return event.release(); |
| 98 } | 159 } |
| 99 | 160 |
| 161 MediaLogEvent* MediaLog::CreateBooleanEvent(MediaLogEvent::Type type, |
| 162 const char* property, bool value) { |
| 163 scoped_ptr<MediaLogEvent> event(CreateEvent(type)); |
| 164 event->params.SetBoolean(property, value); |
| 165 return event.release(); |
| 166 } |
| 167 |
| 168 MediaLogEvent* MediaLog::CreateIntegerEvent(MediaLogEvent::Type type, |
| 169 const char* property, int64 value) { |
| 170 scoped_ptr<MediaLogEvent> event(CreateEvent(type)); |
| 171 event->params.SetInteger(property, value); |
| 172 return event.release(); |
| 173 } |
| 174 |
| 175 MediaLogEvent* MediaLog::CreateTimeEvent(MediaLogEvent::Type type, |
| 176 const char* property, |
| 177 base::TimeDelta value) { |
| 178 scoped_ptr<MediaLogEvent> event(CreateEvent(type)); |
| 179 event->params.SetDouble(property, value.InSecondsF()); |
| 180 return event.release(); |
| 181 } |
| 182 |
| 100 MediaLogEvent* MediaLog::CreateLoadEvent(const std::string& url) { | 183 MediaLogEvent* MediaLog::CreateLoadEvent(const std::string& url) { |
| 101 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::LOAD)); | 184 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::LOAD)); |
| 102 event->params.SetString("url", url); | 185 event->params.SetString("url", url); |
| 103 return event.release(); | 186 return event.release(); |
| 104 } | 187 } |
| 105 | 188 |
| 106 MediaLogEvent* MediaLog::CreateSeekEvent(float seconds) { | 189 MediaLogEvent* MediaLog::CreateSeekEvent(float seconds) { |
| 107 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::SEEK)); | 190 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::SEEK)); |
| 108 event->params.SetDouble("seek_target", seconds); | 191 event->params.SetDouble("seek_target", seconds); |
| 109 return event.release(); | 192 return event.release(); |
| 110 } | 193 } |
| 111 | 194 |
| 112 MediaLogEvent* MediaLog::CreatePipelineStateChangedEvent( | 195 MediaLogEvent* MediaLog::CreatePipelineStateChangedEvent( |
| 113 PipelineImpl::State state) { | 196 PipelineImpl::State state) { |
| 114 scoped_ptr<MediaLogEvent> event( | 197 scoped_ptr<MediaLogEvent> event( |
| 115 CreateEvent(MediaLogEvent::PIPELINE_STATE_CHANGED)); | 198 CreateEvent(MediaLogEvent::PIPELINE_STATE_CHANGED)); |
| 116 event->params.SetString("pipeline_state", PipelineStateToString(state)); | 199 event->params.SetString("pipeline_state", PipelineStateToString(state)); |
| 117 return event.release(); | 200 return event.release(); |
| 118 } | 201 } |
| 119 | 202 |
| 203 MediaLogEvent* MediaLog::CreatePipelineErrorEvent(PipelineStatus error) { |
| 204 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::PIPELINE_ERROR)); |
| 205 event->params.SetString("pipeline_error", PipelineStatusToString(error)); |
| 206 return event.release(); |
| 207 } |
| 208 |
| 209 MediaLogEvent* MediaLog::CreateVideoSizeSetEvent(size_t width, size_t height) { |
| 210 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::VIDEO_SIZE_SET)); |
| 211 event->params.SetInteger("width", width); |
| 212 event->params.SetInteger("height", height); |
| 213 return event.release(); |
| 214 } |
| 215 |
| 120 MediaLogEvent* MediaLog::CreateBufferedExtentsChangedEvent( | 216 MediaLogEvent* MediaLog::CreateBufferedExtentsChangedEvent( |
| 121 size_t start, size_t current, size_t end) { | 217 size_t start, size_t current, size_t end) { |
| 122 scoped_ptr<MediaLogEvent> event( | 218 scoped_ptr<MediaLogEvent> event( |
| 123 CreateEvent(MediaLogEvent::BUFFERED_EXTENTS_CHANGED)); | 219 CreateEvent(MediaLogEvent::BUFFERED_EXTENTS_CHANGED)); |
| 124 event->params.SetInteger("buffer_start", start); | 220 event->params.SetInteger("buffer_start", start); |
| 125 event->params.SetInteger("buffer_current", current); | 221 event->params.SetInteger("buffer_current", current); |
| 126 event->params.SetInteger("buffer_end", end); | 222 event->params.SetInteger("buffer_end", end); |
| 127 return event.release(); | 223 return event.release(); |
| 128 } | 224 } |
| 129 | 225 |
| 130 } //namespace media | 226 } //namespace media |
| OLD | NEW |