OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/cast/logging/encoding_event_subscriber.h" | 5 #include "media/cast/logging/encoding_event_subscriber.h" |
6 | 6 |
7 #include <cstring> | 7 #include <cstring> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
44 // Look up existing entry. If not found, create a new entry and add to map. | 44 // Look up existing entry. If not found, create a new entry and add to map. |
45 if (it == frame_event_map_.end()) { | 45 if (it == frame_event_map_.end()) { |
46 event_proto.reset(new AggregatedFrameEvent); | 46 event_proto.reset(new AggregatedFrameEvent); |
47 event_proto->set_relative_rtp_timestamp(relative_rtp_timestamp); | 47 event_proto->set_relative_rtp_timestamp(relative_rtp_timestamp); |
48 frame_event_map_.insert( | 48 frame_event_map_.insert( |
49 std::make_pair(relative_rtp_timestamp, event_proto)); | 49 std::make_pair(relative_rtp_timestamp, event_proto)); |
50 } else { | 50 } else { |
51 event_proto = it->second; | 51 event_proto = it->second; |
52 } | 52 } |
53 | 53 |
54 event_proto->add_event_type(ToProtoEventType(frame_event.type)); | 54 if (event_proto->event_type_size() >= kMaxEventsPerProto) { |
Alpha Left Google
2014/04/21 18:14:04
I think we should keep as many as types as possibl
| |
55 event_proto->add_event_timestamp_ms( | 55 DVLOG(2) << "Too many events in frame " << frame_event.rtp_timestamp |
56 (frame_event.timestamp - base::TimeTicks()).InMilliseconds()); | 56 << ". Dropping frame event."; |
57 } else { | |
58 event_proto->add_event_type(ToProtoEventType(frame_event.type)); | |
59 event_proto->add_event_timestamp_ms( | |
60 (frame_event.timestamp - base::TimeTicks()).InMilliseconds()); | |
57 | 61 |
58 if (frame_event.type == kAudioFrameEncoded) { | 62 if (frame_event.type == kAudioFrameEncoded) { |
59 event_proto->set_encoded_frame_size(frame_event.size); | 63 event_proto->set_encoded_frame_size(frame_event.size); |
60 } else if (frame_event.type == kVideoFrameEncoded) { | 64 } else if (frame_event.type == kVideoFrameEncoded) { |
61 event_proto->set_encoded_frame_size(frame_event.size); | 65 event_proto->set_encoded_frame_size(frame_event.size); |
62 event_proto->set_key_frame(frame_event.key_frame); | 66 event_proto->set_key_frame(frame_event.key_frame); |
63 } else if (frame_event.type == kAudioPlayoutDelay || | 67 } else if (frame_event.type == kAudioPlayoutDelay || |
64 frame_event.type == kVideoRenderDelay) { | 68 frame_event.type == kVideoRenderDelay) { |
65 event_proto->set_delay_millis(frame_event.delay_delta.InMilliseconds()); | 69 event_proto->set_delay_millis(frame_event.delay_delta.InMilliseconds()); |
70 } | |
66 } | 71 } |
67 | |
68 TruncateFrameEventMapIfNeeded(); | 72 TruncateFrameEventMapIfNeeded(); |
69 } | 73 } |
70 | 74 |
71 DCHECK(frame_event_map_.size() <= max_frames_); | 75 DCHECK(frame_event_map_.size() <= max_frames_); |
72 } | 76 } |
73 | 77 |
74 void EncodingEventSubscriber::OnReceivePacketEvent( | 78 void EncodingEventSubscriber::OnReceivePacketEvent( |
75 const PacketEvent& packet_event) { | 79 const PacketEvent& packet_event) { |
76 DCHECK(thread_checker_.CalledOnValidThread()); | 80 DCHECK(thread_checker_.CalledOnValidThread()); |
77 | 81 |
(...skipping 22 matching lines...) Expand all Loading... | |
100 for (RepeatedPtrField<BasePacketEvent>::pointer_iterator it = | 104 for (RepeatedPtrField<BasePacketEvent>::pointer_iterator it = |
101 field->pointer_begin(); | 105 field->pointer_begin(); |
102 it != field->pointer_end(); | 106 it != field->pointer_end(); |
103 ++it) { | 107 ++it) { |
104 if ((*it)->packet_id() == packet_event.packet_id) { | 108 if ((*it)->packet_id() == packet_event.packet_id) { |
105 base_packet_event_proto = *it; | 109 base_packet_event_proto = *it; |
106 break; | 110 break; |
107 } | 111 } |
108 } | 112 } |
109 if (!base_packet_event_proto) { | 113 if (!base_packet_event_proto) { |
110 base_packet_event_proto = event_proto->add_base_packet_event(); | 114 if (event_proto->base_packet_event_size() >= kMaxPacketsPerFrame) { |
111 base_packet_event_proto->set_packet_id(packet_event.packet_id); | 115 DVLOG(3) << "Too many packets in AggregatedPacketEvent " |
116 << packet_event.rtp_timestamp << ". Dropping packet event."; | |
117 } else { | |
118 base_packet_event_proto = event_proto->add_base_packet_event(); | |
119 base_packet_event_proto->set_packet_id(packet_event.packet_id); | |
120 } | |
112 } | 121 } |
113 } | 122 } |
114 | 123 |
115 base_packet_event_proto->add_event_type( | 124 if (base_packet_event_proto) { |
116 ToProtoEventType(packet_event.type)); | 125 if (base_packet_event_proto->event_type_size() >= kMaxEventsPerProto) { |
117 base_packet_event_proto->add_event_timestamp_ms( | 126 DVLOG(3) << "Too many events in packet " |
118 (packet_event.timestamp - base::TimeTicks()).InMilliseconds()); | 127 << packet_event.rtp_timestamp << ", " |
128 << packet_event.packet_id << ". Dropping packet event."; | |
129 } else { | |
130 base_packet_event_proto->add_event_type( | |
131 ToProtoEventType(packet_event.type)); | |
132 base_packet_event_proto->add_event_timestamp_ms( | |
133 (packet_event.timestamp - base::TimeTicks()).InMilliseconds()); | |
134 } | |
135 } | |
119 | 136 |
120 TruncatePacketEventMapIfNeeded(); | 137 TruncatePacketEventMapIfNeeded(); |
121 } | 138 } |
122 | 139 |
123 DCHECK(packet_event_map_.size() <= max_frames_); | 140 DCHECK(packet_event_map_.size() <= max_frames_); |
124 } | 141 } |
125 | 142 |
126 void EncodingEventSubscriber::OnReceiveGenericEvent( | 143 void EncodingEventSubscriber::OnReceiveGenericEvent( |
127 const GenericEvent& generic_event) { | 144 const GenericEvent& generic_event) { |
128 DCHECK(thread_checker_.CalledOnValidThread()); | 145 DCHECK(thread_checker_.CalledOnValidThread()); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
175 | 192 |
176 void EncodingEventSubscriber::Reset() { | 193 void EncodingEventSubscriber::Reset() { |
177 frame_event_map_.clear(); | 194 frame_event_map_.clear(); |
178 packet_event_map_.clear(); | 195 packet_event_map_.clear(); |
179 seen_first_rtp_timestamp_ = false; | 196 seen_first_rtp_timestamp_ = false; |
180 first_rtp_timestamp_ = 0u; | 197 first_rtp_timestamp_ = 0u; |
181 } | 198 } |
182 | 199 |
183 } // namespace cast | 200 } // namespace cast |
184 } // namespace media | 201 } // namespace media |
OLD | NEW |