Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Side by Side Diff: media/cast/logging/encoding_event_subscriber.cc

Issue 241833002: Cast: Limit number of events/packets in EncodingEventSubscriber protos. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698