Chromium Code Reviews| 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 |