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

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

Issue 270493003: Cast: Deduplicate event types in cast library. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 7 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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 first_rtp_timestamp_(0u) {} 55 first_rtp_timestamp_(0u) {}
56 56
57 EncodingEventSubscriber::~EncodingEventSubscriber() { 57 EncodingEventSubscriber::~EncodingEventSubscriber() {
58 DCHECK(thread_checker_.CalledOnValidThread()); 58 DCHECK(thread_checker_.CalledOnValidThread());
59 } 59 }
60 60
61 void EncodingEventSubscriber::OnReceiveFrameEvent( 61 void EncodingEventSubscriber::OnReceiveFrameEvent(
62 const FrameEvent& frame_event) { 62 const FrameEvent& frame_event) {
63 DCHECK(thread_checker_.CalledOnValidThread()); 63 DCHECK(thread_checker_.CalledOnValidThread());
64 64
65 if (!ShouldProcessEvent(frame_event.type)) 65 if (event_media_type_ != frame_event.media_type)
66 return; 66 return;
67 67
68 RtpTimestamp relative_rtp_timestamp = 68 RtpTimestamp relative_rtp_timestamp =
69 GetRelativeRtpTimestamp(frame_event.rtp_timestamp); 69 GetRelativeRtpTimestamp(frame_event.rtp_timestamp);
70 FrameEventMap::iterator it = frame_event_map_.find(relative_rtp_timestamp); 70 FrameEventMap::iterator it = frame_event_map_.find(relative_rtp_timestamp);
71 linked_ptr<AggregatedFrameEvent> event_proto; 71 linked_ptr<AggregatedFrameEvent> event_proto;
72 72
73 // Look up existing entry. If not found, create a new entry and add to map. 73 // Look up existing entry. If not found, create a new entry and add to map.
74 if (it == frame_event_map_.end()) { 74 if (it == frame_event_map_.end()) {
75 event_proto.reset(new AggregatedFrameEvent); 75 event_proto.reset(new AggregatedFrameEvent);
76 event_proto->set_relative_rtp_timestamp(relative_rtp_timestamp); 76 event_proto->set_relative_rtp_timestamp(relative_rtp_timestamp);
77 frame_event_map_.insert( 77 frame_event_map_.insert(
78 std::make_pair(relative_rtp_timestamp, event_proto)); 78 std::make_pair(relative_rtp_timestamp, event_proto));
79 } else { 79 } else {
80 event_proto = it->second; 80 event_proto = it->second;
81 if (event_proto->event_type_size() >= kMaxEventsPerProto) { 81 if (event_proto->event_type_size() >= kMaxEventsPerProto) {
82 DVLOG(2) << "Too many events in frame " << frame_event.rtp_timestamp 82 DVLOG(2) << "Too many events in frame " << frame_event.rtp_timestamp
83 << ". Using new frame event proto."; 83 << ". Using new frame event proto.";
84 AddFrameEventToStorage(event_proto); 84 AddFrameEventToStorage(event_proto);
85 event_proto.reset(new AggregatedFrameEvent); 85 event_proto.reset(new AggregatedFrameEvent);
86 event_proto->set_relative_rtp_timestamp(relative_rtp_timestamp); 86 event_proto->set_relative_rtp_timestamp(relative_rtp_timestamp);
87 it->second = event_proto; 87 it->second = event_proto;
88 } 88 }
89 } 89 }
90 90
91 event_proto->add_event_type(ToProtoEventType(frame_event.type)); 91 event_proto->add_event_type(ToProtoEventType(frame_event.type));
92 event_proto->add_event_timestamp_ms( 92 event_proto->add_event_timestamp_ms(
93 (frame_event.timestamp - base::TimeTicks()).InMilliseconds()); 93 (frame_event.timestamp - base::TimeTicks()).InMilliseconds());
94 94
95 if (frame_event.type == kAudioFrameEncoded) { 95 if (frame_event.type == FRAME_ENCODED) {
96 event_proto->set_encoded_frame_size(frame_event.size); 96 event_proto->set_encoded_frame_size(frame_event.size);
97 } else if (frame_event.type == kVideoFrameEncoded) { 97 if (frame_event.media_type == VIDEO_EVENT) {
98 event_proto->set_encoded_frame_size(frame_event.size); 98 event_proto->set_encoded_frame_size(frame_event.size);
99 event_proto->set_key_frame(frame_event.key_frame); 99 event_proto->set_key_frame(frame_event.key_frame);
100 event_proto->set_target_bitrate(frame_event.target_bitrate); 100 event_proto->set_target_bitrate(frame_event.target_bitrate);
101 } else if (frame_event.type == kAudioPlayoutDelay || 101 }
102 frame_event.type == kVideoRenderDelay) { 102 } else if (frame_event.type == FRAME_PLAYOUT) {
103 event_proto->set_delay_millis(frame_event.delay_delta.InMilliseconds()); 103 event_proto->set_delay_millis(frame_event.delay_delta.InMilliseconds());
104 } 104 }
105 105
106 if (frame_event_map_.size() > kMaxMapSize) 106 if (frame_event_map_.size() > kMaxMapSize)
107 TransferFrameEvents(kNumMapEntriesToTransfer); 107 TransferFrameEvents(kNumMapEntriesToTransfer);
108 108
109 DCHECK(frame_event_map_.size() <= kMaxMapSize); 109 DCHECK(frame_event_map_.size() <= kMaxMapSize);
110 DCHECK(frame_event_storage_.size() <= max_frames_); 110 DCHECK(frame_event_storage_.size() <= max_frames_);
111 } 111 }
112 112
113 void EncodingEventSubscriber::OnReceivePacketEvent( 113 void EncodingEventSubscriber::OnReceivePacketEvent(
114 const PacketEvent& packet_event) { 114 const PacketEvent& packet_event) {
115 DCHECK(thread_checker_.CalledOnValidThread()); 115 DCHECK(thread_checker_.CalledOnValidThread());
116 116
117 if (!ShouldProcessEvent(packet_event.type)) 117 if (event_media_type_ != packet_event.media_type)
118 return; 118 return;
119 RtpTimestamp relative_rtp_timestamp = 119 RtpTimestamp relative_rtp_timestamp =
120 GetRelativeRtpTimestamp(packet_event.rtp_timestamp); 120 GetRelativeRtpTimestamp(packet_event.rtp_timestamp);
121 PacketEventMap::iterator it = 121 PacketEventMap::iterator it =
122 packet_event_map_.find(relative_rtp_timestamp); 122 packet_event_map_.find(relative_rtp_timestamp);
123 linked_ptr<AggregatedPacketEvent> event_proto; 123 linked_ptr<AggregatedPacketEvent> event_proto;
124 BasePacketEvent* base_packet_event_proto = NULL; 124 BasePacketEvent* base_packet_event_proto = NULL;
125 125
126 // Look up existing entry. If not found, create a new entry and add to map. 126 // Look up existing entry. If not found, create a new entry and add to map.
127 if (it == packet_event_map_.end()) { 127 if (it == packet_event_map_.end()) {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 metadata->set_first_rtp_timestamp(first_rtp_timestamp_); 201 metadata->set_first_rtp_timestamp(first_rtp_timestamp_);
202 metadata->set_num_frame_events(frame_event_storage_.size()); 202 metadata->set_num_frame_events(frame_event_storage_.size());
203 metadata->set_num_packet_events(packet_event_storage_.size()); 203 metadata->set_num_packet_events(packet_event_storage_.size());
204 metadata->set_reference_timestamp_ms_at_unix_epoch( 204 metadata->set_reference_timestamp_ms_at_unix_epoch(
205 (base::TimeTicks::UnixEpoch() - base::TimeTicks()).InMilliseconds()); 205 (base::TimeTicks::UnixEpoch() - base::TimeTicks()).InMilliseconds());
206 frame_events->swap(frame_event_storage_); 206 frame_events->swap(frame_event_storage_);
207 packet_events->swap(packet_event_storage_); 207 packet_events->swap(packet_event_storage_);
208 Reset(); 208 Reset();
209 } 209 }
210 210
211 bool EncodingEventSubscriber::ShouldProcessEvent(CastLoggingEvent event) {
212 return GetEventMediaType(event) == event_media_type_;
213 }
214
215 void EncodingEventSubscriber::TransferFrameEvents(size_t max_num_entries) { 211 void EncodingEventSubscriber::TransferFrameEvents(size_t max_num_entries) {
216 DCHECK(frame_event_map_.size() >= max_num_entries); 212 DCHECK(frame_event_map_.size() >= max_num_entries);
217 213
218 FrameEventMap::iterator it = frame_event_map_.begin(); 214 FrameEventMap::iterator it = frame_event_map_.begin();
219 for (size_t i = 0; 215 for (size_t i = 0;
220 i < max_num_entries && it != frame_event_map_.end(); 216 i < max_num_entries && it != frame_event_map_.end();
221 i++, ++it) { 217 i++, ++it) {
222 AddFrameEventToStorage(it->second); 218 AddFrameEventToStorage(it->second);
223 } 219 }
224 220
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 frame_event_storage_index_ = 0; 269 frame_event_storage_index_ = 0;
274 packet_event_map_.clear(); 270 packet_event_map_.clear();
275 packet_event_storage_.clear(); 271 packet_event_storage_.clear();
276 packet_event_storage_index_ = 0; 272 packet_event_storage_index_ = 0;
277 seen_first_rtp_timestamp_ = false; 273 seen_first_rtp_timestamp_ = false;
278 first_rtp_timestamp_ = 0u; 274 first_rtp_timestamp_ = 0u;
279 } 275 }
280 276
281 } // namespace cast 277 } // namespace cast
282 } // namespace media 278 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/logging/encoding_event_subscriber.h ('k') | media/cast/logging/encoding_event_subscriber_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698