Chromium Code Reviews| Index: media/cast/logging/encoding_event_subscriber.cc |
| diff --git a/media/cast/logging/encoding_event_subscriber.cc b/media/cast/logging/encoding_event_subscriber.cc |
| index 10ced1a5cceee7e98f1ee853023291e1bc0c172c..c22efc9dc9c7110fe469f99f3fe4a3acafe6d89e 100644 |
| --- a/media/cast/logging/encoding_event_subscriber.cc |
| +++ b/media/cast/logging/encoding_event_subscriber.cc |
| @@ -51,20 +51,24 @@ void EncodingEventSubscriber::OnReceiveFrameEvent( |
| event_proto = it->second; |
| } |
| - event_proto->add_event_type(ToProtoEventType(frame_event.type)); |
| - event_proto->add_event_timestamp_ms( |
| - (frame_event.timestamp - base::TimeTicks()).InMilliseconds()); |
| - |
| - if (frame_event.type == kAudioFrameEncoded) { |
| - event_proto->set_encoded_frame_size(frame_event.size); |
| - } else if (frame_event.type == kVideoFrameEncoded) { |
| - event_proto->set_encoded_frame_size(frame_event.size); |
| - event_proto->set_key_frame(frame_event.key_frame); |
| - } else if (frame_event.type == kAudioPlayoutDelay || |
| - frame_event.type == kVideoRenderDelay) { |
| - event_proto->set_delay_millis(frame_event.delay_delta.InMilliseconds()); |
| + 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
|
| + DVLOG(2) << "Too many events in frame " << frame_event.rtp_timestamp |
| + << ". Dropping frame event."; |
| + } else { |
| + event_proto->add_event_type(ToProtoEventType(frame_event.type)); |
| + event_proto->add_event_timestamp_ms( |
| + (frame_event.timestamp - base::TimeTicks()).InMilliseconds()); |
| + |
| + if (frame_event.type == kAudioFrameEncoded) { |
| + event_proto->set_encoded_frame_size(frame_event.size); |
| + } else if (frame_event.type == kVideoFrameEncoded) { |
| + event_proto->set_encoded_frame_size(frame_event.size); |
| + event_proto->set_key_frame(frame_event.key_frame); |
| + } else if (frame_event.type == kAudioPlayoutDelay || |
| + frame_event.type == kVideoRenderDelay) { |
| + event_proto->set_delay_millis(frame_event.delay_delta.InMilliseconds()); |
| + } |
| } |
| - |
| TruncateFrameEventMapIfNeeded(); |
| } |
| @@ -107,15 +111,28 @@ void EncodingEventSubscriber::OnReceivePacketEvent( |
| } |
| } |
| if (!base_packet_event_proto) { |
| - base_packet_event_proto = event_proto->add_base_packet_event(); |
| - base_packet_event_proto->set_packet_id(packet_event.packet_id); |
| + if (event_proto->base_packet_event_size() >= kMaxPacketsPerFrame) { |
| + DVLOG(3) << "Too many packets in AggregatedPacketEvent " |
| + << packet_event.rtp_timestamp << ". Dropping packet event."; |
| + } else { |
| + base_packet_event_proto = event_proto->add_base_packet_event(); |
| + base_packet_event_proto->set_packet_id(packet_event.packet_id); |
| + } |
| } |
| } |
| - base_packet_event_proto->add_event_type( |
| - ToProtoEventType(packet_event.type)); |
| - base_packet_event_proto->add_event_timestamp_ms( |
| - (packet_event.timestamp - base::TimeTicks()).InMilliseconds()); |
| + if (base_packet_event_proto) { |
| + if (base_packet_event_proto->event_type_size() >= kMaxEventsPerProto) { |
| + DVLOG(3) << "Too many events in packet " |
| + << packet_event.rtp_timestamp << ", " |
| + << packet_event.packet_id << ". Dropping packet event."; |
| + } else { |
| + base_packet_event_proto->add_event_type( |
| + ToProtoEventType(packet_event.type)); |
| + base_packet_event_proto->add_event_timestamp_ms( |
| + (packet_event.timestamp - base::TimeTicks()).InMilliseconds()); |
| + } |
| + } |
| TruncatePacketEventMapIfNeeded(); |
| } |