OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/big_endian.h" | 5 #include "base/big_endian.h" |
6 #include "base/debug/trace_event.h" | 6 #include "base/debug/trace_event.h" |
7 #include "media/cast/logging/logging_impl.h" | 7 #include "media/cast/logging/logging_impl.h" |
8 | 8 |
9 namespace media { | 9 namespace media { |
10 namespace cast { | 10 namespace cast { |
11 | 11 |
12 LoggingImpl::LoggingImpl(const CastLoggingConfig& config) | 12 // TODO(imcheng): Collapse LoggingRaw onto LoggingImpl. |
13 : config_(config), raw_(), stats_() { | 13 LoggingImpl::LoggingImpl() { |
14 // LoggingImpl can be constructed on any thread, but its methods should all be | 14 // LoggingImpl can be constructed on any thread, but its methods should all be |
15 // called on the same thread. | 15 // called on the same thread. |
16 thread_checker_.DetachFromThread(); | 16 thread_checker_.DetachFromThread(); |
17 } | 17 } |
18 | 18 |
19 LoggingImpl::~LoggingImpl() {} | 19 LoggingImpl::~LoggingImpl() {} |
20 | 20 |
21 void LoggingImpl::InsertFrameEvent(const base::TimeTicks& time_of_event, | 21 void LoggingImpl::InsertFrameEvent(const base::TimeTicks& time_of_event, |
22 CastLoggingEvent event, uint32 rtp_timestamp, | 22 CastLoggingEvent event, uint32 rtp_timestamp, |
23 uint32 frame_id) { | 23 uint32 frame_id) { |
24 DCHECK(thread_checker_.CalledOnValidThread()); | 24 DCHECK(thread_checker_.CalledOnValidThread()); |
25 if (config_.enable_raw_data_collection) { | 25 raw_.InsertFrameEvent(time_of_event, event, rtp_timestamp, frame_id); |
26 raw_.InsertFrameEvent(time_of_event, event, rtp_timestamp, frame_id); | |
27 } | |
28 if (config_.enable_stats_data_collection) { | |
29 stats_.InsertFrameEvent(time_of_event, event, rtp_timestamp, frame_id); | |
30 } | |
31 } | 26 } |
32 | 27 |
33 void LoggingImpl::InsertFrameEventWithSize(const base::TimeTicks& time_of_event, | 28 void LoggingImpl::InsertFrameEventWithSize(const base::TimeTicks& time_of_event, |
34 CastLoggingEvent event, | 29 CastLoggingEvent event, |
35 uint32 rtp_timestamp, | 30 uint32 rtp_timestamp, |
36 uint32 frame_id, int frame_size) { | 31 uint32 frame_id, int frame_size) { |
37 DCHECK(thread_checker_.CalledOnValidThread()); | 32 DCHECK(thread_checker_.CalledOnValidThread()); |
38 if (config_.enable_raw_data_collection) { | 33 raw_.InsertFrameEventWithSize(time_of_event, event, rtp_timestamp, frame_id, |
39 raw_.InsertFrameEventWithSize(time_of_event, event, rtp_timestamp, frame_id, | 34 frame_size); |
40 frame_size); | |
41 } | |
42 if (config_.enable_stats_data_collection) { | |
43 stats_.InsertFrameEventWithSize(time_of_event, event, rtp_timestamp, | |
44 frame_id, frame_size); | |
45 } | |
46 } | 35 } |
47 | 36 |
48 void LoggingImpl::InsertFrameEventWithDelay( | 37 void LoggingImpl::InsertFrameEventWithDelay( |
49 const base::TimeTicks& time_of_event, CastLoggingEvent event, | 38 const base::TimeTicks& time_of_event, CastLoggingEvent event, |
50 uint32 rtp_timestamp, uint32 frame_id, base::TimeDelta delay) { | 39 uint32 rtp_timestamp, uint32 frame_id, base::TimeDelta delay) { |
51 DCHECK(thread_checker_.CalledOnValidThread()); | 40 DCHECK(thread_checker_.CalledOnValidThread()); |
52 if (config_.enable_raw_data_collection) { | 41 raw_.InsertFrameEventWithDelay(time_of_event, event, rtp_timestamp, |
53 raw_.InsertFrameEventWithDelay(time_of_event, event, rtp_timestamp, | 42 frame_id, delay); |
54 frame_id, delay); | |
55 } | |
56 if (config_.enable_stats_data_collection) { | |
57 stats_.InsertFrameEventWithDelay(time_of_event, event, rtp_timestamp, | |
58 frame_id, delay); | |
59 } | |
60 } | 43 } |
61 | 44 |
62 void LoggingImpl::InsertSinglePacketEvent(const base::TimeTicks& time_of_event, | 45 void LoggingImpl::InsertSinglePacketEvent(const base::TimeTicks& time_of_event, |
63 CastLoggingEvent event, | 46 CastLoggingEvent event, |
64 const Packet& packet) { | 47 const Packet& packet) { |
65 DCHECK(thread_checker_.CalledOnValidThread()); | 48 DCHECK(thread_checker_.CalledOnValidThread()); |
66 | 49 |
67 // Parse basic properties. | 50 // Parse basic properties. |
68 uint32 rtp_timestamp; | 51 uint32 rtp_timestamp; |
69 uint16 packet_id, max_packet_id; | 52 uint16 packet_id, max_packet_id; |
(...skipping 25 matching lines...) Expand all Loading... |
95 InsertSinglePacketEvent(time_of_event, event, *it); | 78 InsertSinglePacketEvent(time_of_event, event, *it); |
96 } | 79 } |
97 } | 80 } |
98 | 81 |
99 void LoggingImpl::InsertPacketEvent(const base::TimeTicks& time_of_event, | 82 void LoggingImpl::InsertPacketEvent(const base::TimeTicks& time_of_event, |
100 CastLoggingEvent event, | 83 CastLoggingEvent event, |
101 uint32 rtp_timestamp, uint32 frame_id, | 84 uint32 rtp_timestamp, uint32 frame_id, |
102 uint16 packet_id, uint16 max_packet_id, | 85 uint16 packet_id, uint16 max_packet_id, |
103 size_t size) { | 86 size_t size) { |
104 DCHECK(thread_checker_.CalledOnValidThread()); | 87 DCHECK(thread_checker_.CalledOnValidThread()); |
105 if (config_.enable_raw_data_collection) { | 88 raw_.InsertPacketEvent(time_of_event, event, rtp_timestamp, frame_id, |
106 raw_.InsertPacketEvent(time_of_event, event, rtp_timestamp, frame_id, | 89 packet_id, max_packet_id, size); |
107 packet_id, max_packet_id, size); | |
108 } | |
109 if (config_.enable_stats_data_collection) { | |
110 stats_.InsertPacketEvent(time_of_event, event, rtp_timestamp, frame_id, | |
111 packet_id, max_packet_id, size); | |
112 } | |
113 } | 90 } |
114 | 91 |
115 void LoggingImpl::InsertGenericEvent(const base::TimeTicks& time_of_event, | 92 void LoggingImpl::InsertGenericEvent(const base::TimeTicks& time_of_event, |
116 CastLoggingEvent event, int value) { | 93 CastLoggingEvent event, int value) { |
117 DCHECK(thread_checker_.CalledOnValidThread()); | 94 DCHECK(thread_checker_.CalledOnValidThread()); |
118 if (config_.enable_raw_data_collection) { | 95 raw_.InsertGenericEvent(time_of_event, event, value); |
119 raw_.InsertGenericEvent(time_of_event, event, value); | |
120 } | |
121 if (config_.enable_stats_data_collection) { | |
122 stats_.InsertGenericEvent(time_of_event, event, value); | |
123 } | |
124 } | 96 } |
125 | 97 |
126 void LoggingImpl::AddRawEventSubscriber(RawEventSubscriber* subscriber) { | 98 void LoggingImpl::AddRawEventSubscriber(RawEventSubscriber* subscriber) { |
127 DCHECK(thread_checker_.CalledOnValidThread()); | 99 DCHECK(thread_checker_.CalledOnValidThread()); |
128 raw_.AddSubscriber(subscriber); | 100 raw_.AddSubscriber(subscriber); |
129 } | 101 } |
130 | 102 |
131 void LoggingImpl::RemoveRawEventSubscriber(RawEventSubscriber* subscriber) { | 103 void LoggingImpl::RemoveRawEventSubscriber(RawEventSubscriber* subscriber) { |
132 DCHECK(thread_checker_.CalledOnValidThread()); | 104 DCHECK(thread_checker_.CalledOnValidThread()); |
133 raw_.RemoveSubscriber(subscriber); | 105 raw_.RemoveSubscriber(subscriber); |
134 } | 106 } |
135 | 107 |
136 FrameStatsMap LoggingImpl::GetFrameStatsData(EventMediaType media_type) const { | |
137 DCHECK(thread_checker_.CalledOnValidThread()); | |
138 return stats_.GetFrameStatsData(media_type); | |
139 } | |
140 | |
141 PacketStatsMap LoggingImpl::GetPacketStatsData( | |
142 EventMediaType media_type) const { | |
143 DCHECK(thread_checker_.CalledOnValidThread()); | |
144 return stats_.GetPacketStatsData(media_type); | |
145 } | |
146 | |
147 GenericStatsMap LoggingImpl::GetGenericStatsData() const { | |
148 DCHECK(thread_checker_.CalledOnValidThread()); | |
149 return stats_.GetGenericStatsData(); | |
150 } | |
151 | |
152 void LoggingImpl::ResetStats() { | |
153 DCHECK(thread_checker_.CalledOnValidThread()); | |
154 stats_.Reset(); | |
155 } | |
156 | |
157 } // namespace cast | 108 } // namespace cast |
158 } // namespace media | 109 } // namespace media |
OLD | NEW |