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