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 |