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 #ifndef MEDIA_BASE_MEDIA_LOG_H_ | 5 #ifndef MEDIA_BASE_MEDIA_LOG_H_ |
6 #define MEDIA_BASE_MEDIA_LOG_H_ | 6 #define MEDIA_BASE_MEDIA_LOG_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
| 11 #include <memory> |
11 #include <sstream> | 12 #include <sstream> |
12 #include <string> | 13 #include <string> |
13 | 14 |
14 #include "base/logging.h" | 15 #include "base/logging.h" |
15 #include "base/macros.h" | 16 #include "base/macros.h" |
16 #include "base/memory/ref_counted.h" | 17 #include "base/memory/ref_counted.h" |
17 #include "base/memory/scoped_ptr.h" | |
18 #include "media/base/media_export.h" | 18 #include "media/base/media_export.h" |
19 #include "media/base/media_log_event.h" | 19 #include "media/base/media_log_event.h" |
20 #include "media/base/pipeline_impl.h" | 20 #include "media/base/pipeline_impl.h" |
21 #include "media/base/pipeline_status.h" | 21 #include "media/base/pipeline_status.h" |
22 | 22 |
23 namespace media { | 23 namespace media { |
24 | 24 |
25 class MEDIA_EXPORT MediaLog : public base::RefCountedThreadSafe<MediaLog> { | 25 class MEDIA_EXPORT MediaLog : public base::RefCountedThreadSafe<MediaLog> { |
26 public: | 26 public: |
27 enum MediaLogLevel { | 27 enum MediaLogLevel { |
28 MEDIALOG_ERROR, | 28 MEDIALOG_ERROR, |
29 MEDIALOG_INFO, | 29 MEDIALOG_INFO, |
30 MEDIALOG_DEBUG, | 30 MEDIALOG_DEBUG, |
31 }; | 31 }; |
32 | 32 |
33 // Convert various enums to strings. | 33 // Convert various enums to strings. |
34 static std::string MediaLogLevelToString(MediaLogLevel level); | 34 static std::string MediaLogLevelToString(MediaLogLevel level); |
35 static MediaLogEvent::Type MediaLogLevelToEventType(MediaLogLevel level); | 35 static MediaLogEvent::Type MediaLogLevelToEventType(MediaLogLevel level); |
36 static std::string EventTypeToString(MediaLogEvent::Type type); | 36 static std::string EventTypeToString(MediaLogEvent::Type type); |
37 static std::string PipelineStatusToString(PipelineStatus status); | 37 static std::string PipelineStatusToString(PipelineStatus status); |
38 | 38 |
39 static std::string MediaEventToLogString(const MediaLogEvent& event); | 39 static std::string MediaEventToLogString(const MediaLogEvent& event); |
40 | 40 |
41 MediaLog(); | 41 MediaLog(); |
42 | 42 |
43 // Add an event to this log. Overriden by inheritors to actually do something | 43 // Add an event to this log. Overriden by inheritors to actually do something |
44 // with it. | 44 // with it. |
45 virtual void AddEvent(scoped_ptr<MediaLogEvent> event); | 45 virtual void AddEvent(std::unique_ptr<MediaLogEvent> event); |
46 | 46 |
47 // Retrieve an error message, if any. | 47 // Retrieve an error message, if any. |
48 virtual std::string GetLastErrorMessage(); | 48 virtual std::string GetLastErrorMessage(); |
49 | 49 |
50 // Helper methods to create events and their parameters. | 50 // Helper methods to create events and their parameters. |
51 scoped_ptr<MediaLogEvent> CreateEvent(MediaLogEvent::Type type); | 51 std::unique_ptr<MediaLogEvent> CreateEvent(MediaLogEvent::Type type); |
52 scoped_ptr<MediaLogEvent> CreateBooleanEvent( | 52 std::unique_ptr<MediaLogEvent> CreateBooleanEvent(MediaLogEvent::Type type, |
53 MediaLogEvent::Type type, const std::string& property, bool value); | 53 const std::string& property, |
54 scoped_ptr<MediaLogEvent> CreateStringEvent(MediaLogEvent::Type type, | 54 bool value); |
55 const std::string& property, | 55 std::unique_ptr<MediaLogEvent> CreateStringEvent(MediaLogEvent::Type type, |
56 const std::string& value); | 56 const std::string& property, |
57 scoped_ptr<MediaLogEvent> CreateTimeEvent(MediaLogEvent::Type type, | 57 const std::string& value); |
58 const std::string& property, | 58 std::unique_ptr<MediaLogEvent> CreateTimeEvent(MediaLogEvent::Type type, |
59 base::TimeDelta value); | 59 const std::string& property, |
60 scoped_ptr<MediaLogEvent> CreateLoadEvent(const std::string& url); | 60 base::TimeDelta value); |
61 scoped_ptr<MediaLogEvent> CreateSeekEvent(float seconds); | 61 std::unique_ptr<MediaLogEvent> CreateLoadEvent(const std::string& url); |
62 scoped_ptr<MediaLogEvent> CreatePipelineStateChangedEvent( | 62 std::unique_ptr<MediaLogEvent> CreateSeekEvent(float seconds); |
| 63 std::unique_ptr<MediaLogEvent> CreatePipelineStateChangedEvent( |
63 PipelineImpl::State state); | 64 PipelineImpl::State state); |
64 scoped_ptr<MediaLogEvent> CreatePipelineErrorEvent(PipelineStatus error); | 65 std::unique_ptr<MediaLogEvent> CreatePipelineErrorEvent(PipelineStatus error); |
65 scoped_ptr<MediaLogEvent> CreateVideoSizeSetEvent( | 66 std::unique_ptr<MediaLogEvent> CreateVideoSizeSetEvent(size_t width, |
66 size_t width, size_t height); | 67 size_t height); |
67 scoped_ptr<MediaLogEvent> CreateBufferedExtentsChangedEvent(int64_t start, | 68 std::unique_ptr<MediaLogEvent> CreateBufferedExtentsChangedEvent( |
68 int64_t current, | 69 int64_t start, |
69 int64_t end); | 70 int64_t current, |
| 71 int64_t end); |
70 | 72 |
71 // Report a log message at the specified log level. | 73 // Report a log message at the specified log level. |
72 void AddLogEvent(MediaLogLevel level, const std::string& message); | 74 void AddLogEvent(MediaLogLevel level, const std::string& message); |
73 | 75 |
74 // Report a property change without an accompanying event. | 76 // Report a property change without an accompanying event. |
75 void SetStringProperty(const std::string& key, const std::string& value); | 77 void SetStringProperty(const std::string& key, const std::string& value); |
76 void SetDoubleProperty(const std::string& key, double value); | 78 void SetDoubleProperty(const std::string& key, double value); |
77 void SetBooleanProperty(const std::string& key, bool value); | 79 void SetBooleanProperty(const std::string& key, bool value); |
78 | 80 |
79 protected: | 81 protected: |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 #define LIMITED_MEDIA_LOG(level, media_log, count, max) \ | 125 #define LIMITED_MEDIA_LOG(level, media_log, count, max) \ |
124 LAZY_STREAM(MEDIA_LOG(level, media_log), \ | 126 LAZY_STREAM(MEDIA_LOG(level, media_log), \ |
125 (count) < (max) && ((count)++ || true)) \ | 127 (count) < (max) && ((count)++ || true)) \ |
126 << (((count) == (max)) ? "(Log limit reached. Further similar entries " \ | 128 << (((count) == (max)) ? "(Log limit reached. Further similar entries " \ |
127 "may be suppressed): " \ | 129 "may be suppressed): " \ |
128 : "") | 130 : "") |
129 | 131 |
130 } // namespace media | 132 } // namespace media |
131 | 133 |
132 #endif // MEDIA_BASE_MEDIA_LOG_H_ | 134 #endif // MEDIA_BASE_MEDIA_LOG_H_ |
OLD | NEW |