| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/atomic_sequence_num.h" | 9 #include "base/atomic_sequence_num.h" |
| 10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 } | 141 } |
| 142 std::string params_json; | 142 std::string params_json; |
| 143 base::JSONWriter::Write(event.params, ¶ms_json); | 143 base::JSONWriter::Write(event.params, ¶ms_json); |
| 144 return EventTypeToString(event.type) + " " + params_json; | 144 return EventTypeToString(event.type) + " " + params_json; |
| 145 } | 145 } |
| 146 | 146 |
| 147 MediaLog::MediaLog() : id_(g_media_log_count.GetNext()) {} | 147 MediaLog::MediaLog() : id_(g_media_log_count.GetNext()) {} |
| 148 | 148 |
| 149 MediaLog::~MediaLog() {} | 149 MediaLog::~MediaLog() {} |
| 150 | 150 |
| 151 void MediaLog::AddEvent(scoped_ptr<MediaLogEvent> event) {} | 151 void MediaLog::AddEvent(std::unique_ptr<MediaLogEvent> event) {} |
| 152 | 152 |
| 153 std::string MediaLog::GetLastErrorMessage() { | 153 std::string MediaLog::GetLastErrorMessage() { |
| 154 return ""; | 154 return ""; |
| 155 } | 155 } |
| 156 | 156 |
| 157 scoped_ptr<MediaLogEvent> MediaLog::CreateEvent(MediaLogEvent::Type type) { | 157 std::unique_ptr<MediaLogEvent> MediaLog::CreateEvent(MediaLogEvent::Type type) { |
| 158 scoped_ptr<MediaLogEvent> event(new MediaLogEvent); | 158 std::unique_ptr<MediaLogEvent> event(new MediaLogEvent); |
| 159 event->id = id_; | 159 event->id = id_; |
| 160 event->type = type; | 160 event->type = type; |
| 161 event->time = base::TimeTicks::Now(); | 161 event->time = base::TimeTicks::Now(); |
| 162 return event; | 162 return event; |
| 163 } | 163 } |
| 164 | 164 |
| 165 scoped_ptr<MediaLogEvent> MediaLog::CreateBooleanEvent( | 165 std::unique_ptr<MediaLogEvent> MediaLog::CreateBooleanEvent( |
| 166 MediaLogEvent::Type type, | 166 MediaLogEvent::Type type, |
| 167 const std::string& property, | 167 const std::string& property, |
| 168 bool value) { | 168 bool value) { |
| 169 scoped_ptr<MediaLogEvent> event(CreateEvent(type)); | 169 std::unique_ptr<MediaLogEvent> event(CreateEvent(type)); |
| 170 event->params.SetBoolean(property, value); | 170 event->params.SetBoolean(property, value); |
| 171 return event; | 171 return event; |
| 172 } | 172 } |
| 173 | 173 |
| 174 scoped_ptr<MediaLogEvent> MediaLog::CreateStringEvent( | 174 std::unique_ptr<MediaLogEvent> MediaLog::CreateStringEvent( |
| 175 MediaLogEvent::Type type, | 175 MediaLogEvent::Type type, |
| 176 const std::string& property, | 176 const std::string& property, |
| 177 const std::string& value) { | 177 const std::string& value) { |
| 178 scoped_ptr<MediaLogEvent> event(CreateEvent(type)); | 178 std::unique_ptr<MediaLogEvent> event(CreateEvent(type)); |
| 179 event->params.SetString(property, value); | 179 event->params.SetString(property, value); |
| 180 return event; | 180 return event; |
| 181 } | 181 } |
| 182 | 182 |
| 183 scoped_ptr<MediaLogEvent> MediaLog::CreateTimeEvent( | 183 std::unique_ptr<MediaLogEvent> MediaLog::CreateTimeEvent( |
| 184 MediaLogEvent::Type type, | 184 MediaLogEvent::Type type, |
| 185 const std::string& property, | 185 const std::string& property, |
| 186 base::TimeDelta value) { | 186 base::TimeDelta value) { |
| 187 scoped_ptr<MediaLogEvent> event(CreateEvent(type)); | 187 std::unique_ptr<MediaLogEvent> event(CreateEvent(type)); |
| 188 if (value.is_max()) | 188 if (value.is_max()) |
| 189 event->params.SetString(property, "unknown"); | 189 event->params.SetString(property, "unknown"); |
| 190 else | 190 else |
| 191 event->params.SetDouble(property, value.InSecondsF()); | 191 event->params.SetDouble(property, value.InSecondsF()); |
| 192 return event; | 192 return event; |
| 193 } | 193 } |
| 194 | 194 |
| 195 scoped_ptr<MediaLogEvent> MediaLog::CreateLoadEvent(const std::string& url) { | 195 std::unique_ptr<MediaLogEvent> MediaLog::CreateLoadEvent( |
| 196 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::LOAD)); | 196 const std::string& url) { |
| 197 std::unique_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::LOAD)); |
| 197 event->params.SetString("url", url); | 198 event->params.SetString("url", url); |
| 198 return event; | 199 return event; |
| 199 } | 200 } |
| 200 | 201 |
| 201 scoped_ptr<MediaLogEvent> MediaLog::CreateSeekEvent(float seconds) { | 202 std::unique_ptr<MediaLogEvent> MediaLog::CreateSeekEvent(float seconds) { |
| 202 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::SEEK)); | 203 std::unique_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::SEEK)); |
| 203 event->params.SetDouble("seek_target", seconds); | 204 event->params.SetDouble("seek_target", seconds); |
| 204 return event; | 205 return event; |
| 205 } | 206 } |
| 206 | 207 |
| 207 scoped_ptr<MediaLogEvent> MediaLog::CreatePipelineStateChangedEvent( | 208 std::unique_ptr<MediaLogEvent> MediaLog::CreatePipelineStateChangedEvent( |
| 208 PipelineImpl::State state) { | 209 PipelineImpl::State state) { |
| 209 scoped_ptr<MediaLogEvent> event( | 210 std::unique_ptr<MediaLogEvent> event( |
| 210 CreateEvent(MediaLogEvent::PIPELINE_STATE_CHANGED)); | 211 CreateEvent(MediaLogEvent::PIPELINE_STATE_CHANGED)); |
| 211 event->params.SetString("pipeline_state", | 212 event->params.SetString("pipeline_state", |
| 212 PipelineImpl::GetStateString(state)); | 213 PipelineImpl::GetStateString(state)); |
| 213 return event; | 214 return event; |
| 214 } | 215 } |
| 215 | 216 |
| 216 scoped_ptr<MediaLogEvent> MediaLog::CreatePipelineErrorEvent( | 217 std::unique_ptr<MediaLogEvent> MediaLog::CreatePipelineErrorEvent( |
| 217 PipelineStatus error) { | 218 PipelineStatus error) { |
| 218 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::PIPELINE_ERROR)); | 219 std::unique_ptr<MediaLogEvent> event( |
| 220 CreateEvent(MediaLogEvent::PIPELINE_ERROR)); |
| 219 event->params.SetInteger("pipeline_error", error); | 221 event->params.SetInteger("pipeline_error", error); |
| 220 return event; | 222 return event; |
| 221 } | 223 } |
| 222 | 224 |
| 223 scoped_ptr<MediaLogEvent> MediaLog::CreateVideoSizeSetEvent( | 225 std::unique_ptr<MediaLogEvent> MediaLog::CreateVideoSizeSetEvent( |
| 224 size_t width, size_t height) { | 226 size_t width, |
| 225 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::VIDEO_SIZE_SET)); | 227 size_t height) { |
| 228 std::unique_ptr<MediaLogEvent> event( |
| 229 CreateEvent(MediaLogEvent::VIDEO_SIZE_SET)); |
| 226 event->params.SetInteger("width", width); | 230 event->params.SetInteger("width", width); |
| 227 event->params.SetInteger("height", height); | 231 event->params.SetInteger("height", height); |
| 228 return event; | 232 return event; |
| 229 } | 233 } |
| 230 | 234 |
| 231 scoped_ptr<MediaLogEvent> MediaLog::CreateBufferedExtentsChangedEvent( | 235 std::unique_ptr<MediaLogEvent> MediaLog::CreateBufferedExtentsChangedEvent( |
| 232 int64_t start, | 236 int64_t start, |
| 233 int64_t current, | 237 int64_t current, |
| 234 int64_t end) { | 238 int64_t end) { |
| 235 scoped_ptr<MediaLogEvent> event( | 239 std::unique_ptr<MediaLogEvent> event( |
| 236 CreateEvent(MediaLogEvent::BUFFERED_EXTENTS_CHANGED)); | 240 CreateEvent(MediaLogEvent::BUFFERED_EXTENTS_CHANGED)); |
| 237 // These values are headed to JS where there is no int64_t so we use a double | 241 // These values are headed to JS where there is no int64_t so we use a double |
| 238 // and accept loss of precision above 2^53 bytes (8 Exabytes). | 242 // and accept loss of precision above 2^53 bytes (8 Exabytes). |
| 239 event->params.SetDouble("buffer_start", start); | 243 event->params.SetDouble("buffer_start", start); |
| 240 event->params.SetDouble("buffer_current", current); | 244 event->params.SetDouble("buffer_current", current); |
| 241 event->params.SetDouble("buffer_end", end); | 245 event->params.SetDouble("buffer_end", end); |
| 242 return event; | 246 return event; |
| 243 } | 247 } |
| 244 | 248 |
| 245 void MediaLog::AddLogEvent(MediaLogLevel level, const std::string& message) { | 249 void MediaLog::AddLogEvent(MediaLogLevel level, const std::string& message) { |
| 246 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogLevelToEventType(level))); | 250 std::unique_ptr<MediaLogEvent> event( |
| 251 CreateEvent(MediaLogLevelToEventType(level))); |
| 247 event->params.SetString(MediaLogLevelToString(level), message); | 252 event->params.SetString(MediaLogLevelToString(level), message); |
| 248 AddEvent(std::move(event)); | 253 AddEvent(std::move(event)); |
| 249 } | 254 } |
| 250 | 255 |
| 251 void MediaLog::SetStringProperty( | 256 void MediaLog::SetStringProperty( |
| 252 const std::string& key, const std::string& value) { | 257 const std::string& key, const std::string& value) { |
| 253 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::PROPERTY_CHANGE)); | 258 std::unique_ptr<MediaLogEvent> event( |
| 259 CreateEvent(MediaLogEvent::PROPERTY_CHANGE)); |
| 254 event->params.SetString(key, value); | 260 event->params.SetString(key, value); |
| 255 AddEvent(std::move(event)); | 261 AddEvent(std::move(event)); |
| 256 } | 262 } |
| 257 | 263 |
| 258 void MediaLog::SetDoubleProperty( | 264 void MediaLog::SetDoubleProperty( |
| 259 const std::string& key, double value) { | 265 const std::string& key, double value) { |
| 260 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::PROPERTY_CHANGE)); | 266 std::unique_ptr<MediaLogEvent> event( |
| 267 CreateEvent(MediaLogEvent::PROPERTY_CHANGE)); |
| 261 event->params.SetDouble(key, value); | 268 event->params.SetDouble(key, value); |
| 262 AddEvent(std::move(event)); | 269 AddEvent(std::move(event)); |
| 263 } | 270 } |
| 264 | 271 |
| 265 void MediaLog::SetBooleanProperty( | 272 void MediaLog::SetBooleanProperty( |
| 266 const std::string& key, bool value) { | 273 const std::string& key, bool value) { |
| 267 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::PROPERTY_CHANGE)); | 274 std::unique_ptr<MediaLogEvent> event( |
| 275 CreateEvent(MediaLogEvent::PROPERTY_CHANGE)); |
| 268 event->params.SetBoolean(key, value); | 276 event->params.SetBoolean(key, value); |
| 269 AddEvent(std::move(event)); | 277 AddEvent(std::move(event)); |
| 270 } | 278 } |
| 271 | 279 |
| 272 LogHelper::LogHelper(MediaLog::MediaLogLevel level, | 280 LogHelper::LogHelper(MediaLog::MediaLogLevel level, |
| 273 const scoped_refptr<MediaLog>& media_log) | 281 const scoped_refptr<MediaLog>& media_log) |
| 274 : level_(level), media_log_(media_log) { | 282 : level_(level), media_log_(media_log) { |
| 275 DCHECK(media_log_.get()); | 283 DCHECK(media_log_.get()); |
| 276 } | 284 } |
| 277 | 285 |
| 278 LogHelper::~LogHelper() { | 286 LogHelper::~LogHelper() { |
| 279 media_log_->AddLogEvent(level_, stream_.str()); | 287 media_log_->AddLogEvent(level_, stream_.str()); |
| 280 } | 288 } |
| 281 | 289 |
| 282 } //namespace media | 290 } //namespace media |
| OLD | NEW |