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 "base/memory/ref_counted.h" | 5 #include "base/memory/ref_counted.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/test/simple_test_tick_clock.h" | 7 #include "base/test/simple_test_tick_clock.h" |
8 #include "base/time/tick_clock.h" | 8 #include "base/time/tick_clock.h" |
9 #include "media/cast/cast_environment.h" | 9 #include "media/cast/cast_environment.h" |
10 #include "media/cast/logging/encoding_event_subscriber.h" | 10 #include "media/cast/logging/encoding_event_subscriber.h" |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 void GetEventsAndReset() { | 57 void GetEventsAndReset() { |
58 event_subscriber_->GetEventsAndReset( | 58 event_subscriber_->GetEventsAndReset( |
59 &metadata_, &frame_events_, &packet_events_); | 59 &metadata_, &frame_events_, &packet_events_); |
60 first_rtp_timestamp_ = metadata_.first_rtp_timestamp(); | 60 first_rtp_timestamp_ = metadata_.first_rtp_timestamp(); |
61 } | 61 } |
62 | 62 |
63 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. | 63 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
64 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 64 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
65 scoped_refptr<CastEnvironment> cast_environment_; | 65 scoped_refptr<CastEnvironment> cast_environment_; |
66 scoped_ptr<EncodingEventSubscriber> event_subscriber_; | 66 scoped_ptr<EncodingEventSubscriber> event_subscriber_; |
67 FrameEventMap frame_events_; | 67 FrameEventList frame_events_; |
68 PacketEventMap packet_events_; | 68 PacketEventList packet_events_; |
69 LogMetadata metadata_; | 69 LogMetadata metadata_; |
70 RtpTimestamp first_rtp_timestamp_; | 70 RtpTimestamp first_rtp_timestamp_; |
71 }; | 71 }; |
72 | 72 |
73 TEST_F(EncodingEventSubscriberTest, FrameEventTruncating) { | 73 TEST_F(EncodingEventSubscriberTest, FrameEventTruncating) { |
74 Init(VIDEO_EVENT); | 74 Init(VIDEO_EVENT); |
75 | 75 |
76 base::TimeTicks now(testing_clock_->NowTicks()); | 76 base::TimeTicks now(testing_clock_->NowTicks()); |
77 | 77 |
78 // Entry with RTP timestamp 0 should get dropped. | 78 // Entry with RTP timestamp 0 should get dropped. |
79 for (int i = 0; i < 11; i++) { | 79 for (int i = 0; i < 11; i++) { |
80 cast_environment_->Logging()->InsertFrameEvent(now, | 80 cast_environment_->Logging()->InsertFrameEvent(now, |
81 kVideoFrameCaptured, | 81 kVideoFrameCaptured, |
82 i * 100, | 82 i * 100, |
83 /*frame_id*/ 0); | 83 /*frame_id*/ 0); |
84 cast_environment_->Logging()->InsertFrameEvent(now, | 84 cast_environment_->Logging()->InsertFrameEvent(now, |
85 kVideoFrameDecoded, | 85 kVideoFrameDecoded, |
86 i * 100, | 86 i * 100, |
87 /*frame_id*/ 0); | 87 /*frame_id*/ 0); |
88 } | 88 } |
89 | 89 |
90 GetEventsAndReset(); | 90 GetEventsAndReset(); |
91 | 91 |
92 ASSERT_EQ(10u, frame_events_.size()); | 92 ASSERT_EQ(10u, frame_events_.size()); |
93 EXPECT_EQ(100u, frame_events_.begin()->first); | 93 EXPECT_EQ(100u, frame_events_.front()->relative_rtp_timestamp()); |
94 EXPECT_EQ(1000u, frame_events_.rbegin()->first); | 94 EXPECT_EQ(1000u, frame_events_.back()->relative_rtp_timestamp()); |
95 } | 95 } |
96 | 96 |
97 TEST_F(EncodingEventSubscriberTest, PacketEventTruncating) { | 97 TEST_F(EncodingEventSubscriberTest, PacketEventTruncating) { |
98 Init(AUDIO_EVENT); | 98 Init(AUDIO_EVENT); |
99 | 99 |
100 base::TimeTicks now(testing_clock_->NowTicks()); | 100 base::TimeTicks now(testing_clock_->NowTicks()); |
101 | 101 |
102 // Entry with RTP timestamp 0 should get dropped. | 102 // Entry with RTP timestamp 0 should get dropped. |
103 for (int i = 0; i < 11; i++) { | 103 for (int i = 0; i < 11; i++) { |
104 cast_environment_->Logging()->InsertPacketEvent(now, | 104 cast_environment_->Logging()->InsertPacketEvent(now, |
105 kAudioPacketReceived, | 105 kAudioPacketReceived, |
106 /*rtp_timestamp*/ i * 100, | 106 /*rtp_timestamp*/ i * 100, |
107 /*frame_id*/ 0, | 107 /*frame_id*/ 0, |
108 /*packet_id*/ i, | 108 /*packet_id*/ i, |
109 /*max_packet_id*/ 10, | 109 /*max_packet_id*/ 10, |
110 /*size*/ 123); | 110 /*size*/ 123); |
111 } | 111 } |
112 | 112 |
113 GetEventsAndReset(); | 113 GetEventsAndReset(); |
114 | 114 |
115 ASSERT_EQ(10u, packet_events_.size()); | 115 ASSERT_EQ(10u, packet_events_.size()); |
116 EXPECT_EQ(100u, packet_events_.begin()->first); | 116 EXPECT_EQ(100u, packet_events_.front()->relative_rtp_timestamp()); |
117 EXPECT_EQ(1000u, packet_events_.rbegin()->first); | 117 EXPECT_EQ(1000u, packet_events_.back()->relative_rtp_timestamp()); |
118 } | 118 } |
119 | 119 |
120 TEST_F(EncodingEventSubscriberTest, EventFiltering) { | 120 TEST_F(EncodingEventSubscriberTest, EventFiltering) { |
121 Init(VIDEO_EVENT); | 121 Init(VIDEO_EVENT); |
122 | 122 |
123 base::TimeTicks now(testing_clock_->NowTicks()); | 123 base::TimeTicks now(testing_clock_->NowTicks()); |
124 RtpTimestamp rtp_timestamp = 100; | 124 RtpTimestamp rtp_timestamp = 100; |
125 cast_environment_->Logging()->InsertFrameEvent(now, | 125 cast_environment_->Logging()->InsertFrameEvent(now, |
126 kVideoFrameDecoded, | 126 kVideoFrameDecoded, |
127 rtp_timestamp, | 127 rtp_timestamp, |
128 /*frame_id*/ 0); | 128 /*frame_id*/ 0); |
129 | 129 |
130 // This is an AUDIO_EVENT and shouldn't be processed by the subscriber. | 130 // This is an AUDIO_EVENT and shouldn't be processed by the subscriber. |
131 cast_environment_->Logging()->InsertFrameEvent(now, | 131 cast_environment_->Logging()->InsertFrameEvent(now, |
132 kAudioFrameDecoded, | 132 kAudioFrameDecoded, |
133 rtp_timestamp, | 133 rtp_timestamp, |
134 /*frame_id*/ 0); | 134 /*frame_id*/ 0); |
135 | 135 |
136 GetEventsAndReset(); | 136 GetEventsAndReset(); |
137 | 137 |
138 FrameEventMap::iterator frame_it = frame_events_.find(0); | 138 ASSERT_EQ(1u, frame_events_.size()); |
139 ASSERT_TRUE(frame_it != frame_events_.end()); | 139 FrameEventList::iterator it = frame_events_.begin(); |
140 | 140 |
141 linked_ptr<AggregatedFrameEvent> frame_event = frame_it->second; | 141 linked_ptr<AggregatedFrameEvent> frame_event = *it; |
142 | 142 |
143 ASSERT_EQ(1, frame_event->event_type_size()); | 143 ASSERT_EQ(1, frame_event->event_type_size()); |
144 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, | 144 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, |
145 frame_event->event_type(0)); | 145 frame_event->event_type(0)); |
146 | 146 |
147 GetEventsAndReset(); | 147 GetEventsAndReset(); |
148 | 148 |
149 EXPECT_TRUE(packet_events_.empty()); | 149 EXPECT_TRUE(packet_events_.empty()); |
150 } | 150 } |
151 | 151 |
152 TEST_F(EncodingEventSubscriberTest, FrameEvent) { | 152 TEST_F(EncodingEventSubscriberTest, FrameEvent) { |
153 Init(VIDEO_EVENT); | 153 Init(VIDEO_EVENT); |
154 base::TimeTicks now(testing_clock_->NowTicks()); | 154 base::TimeTicks now(testing_clock_->NowTicks()); |
155 RtpTimestamp rtp_timestamp = 100; | 155 RtpTimestamp rtp_timestamp = 100; |
156 cast_environment_->Logging()->InsertFrameEvent(now, kVideoFrameDecoded, | 156 cast_environment_->Logging()->InsertFrameEvent(now, kVideoFrameDecoded, |
157 rtp_timestamp, | 157 rtp_timestamp, |
158 /*frame_id*/ 0); | 158 /*frame_id*/ 0); |
159 | 159 |
160 GetEventsAndReset(); | 160 GetEventsAndReset(); |
161 | 161 |
162 ASSERT_EQ(1u, frame_events_.size()); | 162 ASSERT_EQ(1u, frame_events_.size()); |
163 | 163 |
164 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 164 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
165 FrameEventMap::iterator it = frame_events_.find(relative_rtp_timestamp); | 165 FrameEventList::iterator it = frame_events_.begin(); |
166 ASSERT_TRUE(it != frame_events_.end()); | |
167 | 166 |
168 linked_ptr<AggregatedFrameEvent> event = it->second; | 167 linked_ptr<AggregatedFrameEvent> event = *it; |
169 | 168 |
170 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 169 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
171 | 170 |
172 ASSERT_EQ(1, event->event_type_size()); | 171 ASSERT_EQ(1, event->event_type_size()); |
173 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, event->event_type(0)); | 172 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, event->event_type(0)); |
174 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 173 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
175 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); | 174 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); |
176 | 175 |
177 EXPECT_EQ(0, event->encoded_frame_size()); | 176 EXPECT_EQ(0, event->encoded_frame_size()); |
178 EXPECT_EQ(0, event->delay_millis()); | 177 EXPECT_EQ(0, event->delay_millis()); |
179 | 178 |
180 GetEventsAndReset(); | 179 GetEventsAndReset(); |
181 EXPECT_TRUE(frame_events_.empty()); | 180 EXPECT_TRUE(frame_events_.empty()); |
182 } | 181 } |
183 | 182 |
184 TEST_F(EncodingEventSubscriberTest, FrameEventDelay) { | 183 TEST_F(EncodingEventSubscriberTest, FrameEventDelay) { |
185 Init(AUDIO_EVENT); | 184 Init(AUDIO_EVENT); |
186 base::TimeTicks now(testing_clock_->NowTicks()); | 185 base::TimeTicks now(testing_clock_->NowTicks()); |
187 RtpTimestamp rtp_timestamp = 100; | 186 RtpTimestamp rtp_timestamp = 100; |
188 int delay_ms = 100; | 187 int delay_ms = 100; |
189 cast_environment_->Logging()->InsertFrameEventWithDelay( | 188 cast_environment_->Logging()->InsertFrameEventWithDelay( |
190 now, kAudioPlayoutDelay, rtp_timestamp, | 189 now, kAudioPlayoutDelay, rtp_timestamp, |
191 /*frame_id*/ 0, base::TimeDelta::FromMilliseconds(delay_ms)); | 190 /*frame_id*/ 0, base::TimeDelta::FromMilliseconds(delay_ms)); |
192 | 191 |
193 GetEventsAndReset(); | 192 GetEventsAndReset(); |
194 | 193 |
195 ASSERT_EQ(1u, frame_events_.size()); | 194 ASSERT_EQ(1u, frame_events_.size()); |
196 | 195 |
197 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 196 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
198 FrameEventMap::iterator it = frame_events_.find(relative_rtp_timestamp); | 197 FrameEventList::iterator it = frame_events_.begin(); |
199 ASSERT_TRUE(it != frame_events_.end()); | |
200 | 198 |
201 linked_ptr<AggregatedFrameEvent> event = it->second; | 199 linked_ptr<AggregatedFrameEvent> event = *it; |
202 | 200 |
203 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 201 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
204 | 202 |
205 ASSERT_EQ(1, event->event_type_size()); | 203 ASSERT_EQ(1, event->event_type_size()); |
206 EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0)); | 204 EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0)); |
207 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 205 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
208 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); | 206 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); |
209 | 207 |
210 EXPECT_EQ(0, event->encoded_frame_size()); | 208 EXPECT_EQ(0, event->encoded_frame_size()); |
211 EXPECT_EQ(100, event->delay_millis()); | 209 EXPECT_EQ(100, event->delay_millis()); |
212 EXPECT_FALSE(event->has_key_frame()); | 210 EXPECT_FALSE(event->has_key_frame()); |
213 } | 211 } |
214 | 212 |
215 TEST_F(EncodingEventSubscriberTest, FrameEventSize) { | 213 TEST_F(EncodingEventSubscriberTest, FrameEventSize) { |
216 Init(VIDEO_EVENT); | 214 Init(VIDEO_EVENT); |
217 base::TimeTicks now(testing_clock_->NowTicks()); | 215 base::TimeTicks now(testing_clock_->NowTicks()); |
218 RtpTimestamp rtp_timestamp = 100; | 216 RtpTimestamp rtp_timestamp = 100; |
219 int size = 123; | 217 int size = 123; |
220 bool key_frame = true; | 218 bool key_frame = true; |
221 cast_environment_->Logging()->InsertEncodedFrameEvent( | 219 cast_environment_->Logging()->InsertEncodedFrameEvent( |
222 now, kVideoFrameEncoded, rtp_timestamp, | 220 now, kVideoFrameEncoded, rtp_timestamp, |
223 /*frame_id*/ 0, size, key_frame); | 221 /*frame_id*/ 0, size, key_frame); |
224 | 222 |
225 GetEventsAndReset(); | 223 GetEventsAndReset(); |
226 | 224 |
227 ASSERT_EQ(1u, frame_events_.size()); | 225 ASSERT_EQ(1u, frame_events_.size()); |
228 | 226 |
229 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 227 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
230 FrameEventMap::iterator it = frame_events_.find(relative_rtp_timestamp); | 228 FrameEventList::iterator it = frame_events_.begin(); |
231 ASSERT_TRUE(it != frame_events_.end()); | |
232 | 229 |
233 linked_ptr<AggregatedFrameEvent> event = it->second; | 230 linked_ptr<AggregatedFrameEvent> event = *it; |
234 | 231 |
235 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 232 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
236 | 233 |
237 ASSERT_EQ(1, event->event_type_size()); | 234 ASSERT_EQ(1, event->event_type_size()); |
238 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_ENCODED, event->event_type(0)); | 235 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_ENCODED, event->event_type(0)); |
239 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 236 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
240 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); | 237 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); |
241 | 238 |
242 EXPECT_EQ(size, event->encoded_frame_size()); | 239 EXPECT_EQ(size, event->encoded_frame_size()); |
243 EXPECT_EQ(0, event->delay_millis()); | 240 EXPECT_EQ(0, event->delay_millis()); |
(...skipping 19 matching lines...) Expand all Loading... |
263 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); | 260 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); |
264 base::TimeTicks now3(testing_clock_->NowTicks()); | 261 base::TimeTicks now3(testing_clock_->NowTicks()); |
265 cast_environment_->Logging()->InsertFrameEvent( | 262 cast_environment_->Logging()->InsertFrameEvent( |
266 now3, kAudioFrameDecoded, rtp_timestamp1, /*frame_id*/ 0); | 263 now3, kAudioFrameDecoded, rtp_timestamp1, /*frame_id*/ 0); |
267 | 264 |
268 GetEventsAndReset(); | 265 GetEventsAndReset(); |
269 | 266 |
270 ASSERT_EQ(2u, frame_events_.size()); | 267 ASSERT_EQ(2u, frame_events_.size()); |
271 | 268 |
272 RtpTimestamp relative_rtp_timestamp = rtp_timestamp1 - first_rtp_timestamp_; | 269 RtpTimestamp relative_rtp_timestamp = rtp_timestamp1 - first_rtp_timestamp_; |
273 FrameEventMap::iterator it = frame_events_.find(relative_rtp_timestamp); | 270 FrameEventList::iterator it = frame_events_.begin(); |
274 ASSERT_TRUE(it != frame_events_.end()); | |
275 | 271 |
276 linked_ptr<AggregatedFrameEvent> event = it->second; | 272 linked_ptr<AggregatedFrameEvent> event = *it; |
277 | 273 |
278 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 274 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
279 | 275 |
280 ASSERT_EQ(2, event->event_type_size()); | 276 ASSERT_EQ(2, event->event_type_size()); |
281 EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0)); | 277 EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0)); |
282 EXPECT_EQ(media::cast::proto::AUDIO_FRAME_DECODED, event->event_type(1)); | 278 EXPECT_EQ(media::cast::proto::AUDIO_FRAME_DECODED, event->event_type(1)); |
283 | 279 |
284 ASSERT_EQ(2, event->event_timestamp_ms_size()); | 280 ASSERT_EQ(2, event->event_timestamp_ms_size()); |
285 EXPECT_EQ(InMilliseconds(now1), event->event_timestamp_ms(0)); | 281 EXPECT_EQ(InMilliseconds(now1), event->event_timestamp_ms(0)); |
286 EXPECT_EQ(InMilliseconds(now3), event->event_timestamp_ms(1)); | 282 EXPECT_EQ(InMilliseconds(now3), event->event_timestamp_ms(1)); |
287 | 283 |
288 EXPECT_FALSE(event->has_key_frame()); | 284 EXPECT_FALSE(event->has_key_frame()); |
289 | 285 |
290 relative_rtp_timestamp = rtp_timestamp2 - first_rtp_timestamp_; | 286 relative_rtp_timestamp = rtp_timestamp2 - first_rtp_timestamp_; |
291 it = frame_events_.find(relative_rtp_timestamp); | 287 ++it; |
292 ASSERT_TRUE(it != frame_events_.end()); | |
293 | 288 |
294 event = it->second; | 289 event = *it; |
295 | 290 |
296 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 291 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
297 | 292 |
298 ASSERT_EQ(1, event->event_type_size()); | 293 ASSERT_EQ(1, event->event_type_size()); |
299 EXPECT_EQ(media::cast::proto::AUDIO_FRAME_ENCODED, event->event_type(0)); | 294 EXPECT_EQ(media::cast::proto::AUDIO_FRAME_ENCODED, event->event_type(0)); |
300 | 295 |
301 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 296 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
302 EXPECT_EQ(InMilliseconds(now2), event->event_timestamp_ms(0)); | 297 EXPECT_EQ(InMilliseconds(now2), event->event_timestamp_ms(0)); |
303 | 298 |
304 EXPECT_FALSE(event->has_key_frame()); | 299 EXPECT_FALSE(event->has_key_frame()); |
305 } | 300 } |
306 | 301 |
307 TEST_F(EncodingEventSubscriberTest, PacketEvent) { | 302 TEST_F(EncodingEventSubscriberTest, PacketEvent) { |
308 Init(AUDIO_EVENT); | 303 Init(AUDIO_EVENT); |
309 base::TimeTicks now(testing_clock_->NowTicks()); | 304 base::TimeTicks now(testing_clock_->NowTicks()); |
310 RtpTimestamp rtp_timestamp = 100; | 305 RtpTimestamp rtp_timestamp = 100; |
311 int packet_id = 2; | 306 int packet_id = 2; |
312 int size = 100; | 307 int size = 100; |
313 cast_environment_->Logging()->InsertPacketEvent( | 308 cast_environment_->Logging()->InsertPacketEvent( |
314 now, kAudioPacketReceived, rtp_timestamp, /*frame_id*/ 0, packet_id, | 309 now, kAudioPacketReceived, rtp_timestamp, /*frame_id*/ 0, packet_id, |
315 /*max_packet_id*/ 10, size); | 310 /*max_packet_id*/ 10, size); |
316 | 311 |
317 GetEventsAndReset(); | 312 GetEventsAndReset(); |
318 | 313 |
319 ASSERT_EQ(1u, packet_events_.size()); | 314 ASSERT_EQ(1u, packet_events_.size()); |
320 | 315 |
321 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 316 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
322 PacketEventMap::iterator it = packet_events_.find(relative_rtp_timestamp); | 317 PacketEventList::iterator it = packet_events_.begin(); |
323 ASSERT_TRUE(it != packet_events_.end()); | |
324 | 318 |
325 linked_ptr<AggregatedPacketEvent> event = it->second; | 319 linked_ptr<AggregatedPacketEvent> event = *it; |
326 | 320 |
327 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 321 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
328 | 322 |
329 ASSERT_EQ(1, event->base_packet_event_size()); | 323 ASSERT_EQ(1, event->base_packet_event_size()); |
330 const BasePacketEvent& base_event = event->base_packet_event(0); | 324 const BasePacketEvent& base_event = event->base_packet_event(0); |
331 EXPECT_EQ(packet_id, base_event.packet_id()); | 325 EXPECT_EQ(packet_id, base_event.packet_id()); |
332 ASSERT_EQ(1, base_event.event_type_size()); | 326 ASSERT_EQ(1, base_event.event_type_size()); |
333 EXPECT_EQ(media::cast::proto::AUDIO_PACKET_RECEIVED, | 327 EXPECT_EQ(media::cast::proto::AUDIO_PACKET_RECEIVED, |
334 base_event.event_type(0)); | 328 base_event.event_type(0)); |
335 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); | 329 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); |
(...skipping 25 matching lines...) Expand all Loading... |
361 /*frame_id*/ 0, | 355 /*frame_id*/ 0, |
362 packet_id, | 356 packet_id, |
363 /*max_packet_id*/ 10, | 357 /*max_packet_id*/ 10, |
364 size); | 358 size); |
365 | 359 |
366 GetEventsAndReset(); | 360 GetEventsAndReset(); |
367 | 361 |
368 ASSERT_EQ(1u, packet_events_.size()); | 362 ASSERT_EQ(1u, packet_events_.size()); |
369 | 363 |
370 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 364 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
371 PacketEventMap::iterator it = packet_events_.find(relative_rtp_timestamp); | 365 PacketEventList::iterator it = packet_events_.begin(); |
372 ASSERT_TRUE(it != packet_events_.end()); | |
373 | 366 |
374 linked_ptr<AggregatedPacketEvent> event = it->second; | 367 linked_ptr<AggregatedPacketEvent> event = *it; |
375 | 368 |
376 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 369 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
377 | 370 |
378 ASSERT_EQ(1, event->base_packet_event_size()); | 371 ASSERT_EQ(1, event->base_packet_event_size()); |
379 const BasePacketEvent& base_event = event->base_packet_event(0); | 372 const BasePacketEvent& base_event = event->base_packet_event(0); |
380 EXPECT_EQ(packet_id, base_event.packet_id()); | 373 EXPECT_EQ(packet_id, base_event.packet_id()); |
381 ASSERT_EQ(2, base_event.event_type_size()); | 374 ASSERT_EQ(2, base_event.event_type_size()); |
382 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_PACER, | 375 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_PACER, |
383 base_event.event_type(0)); | 376 base_event.event_type(0)); |
384 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_NETWORK, | 377 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_NETWORK, |
(...skipping 26 matching lines...) Expand all Loading... |
411 /*frame_id*/ 0, | 404 /*frame_id*/ 0, |
412 packet_id_2, | 405 packet_id_2, |
413 /*max_packet_id*/ 10, | 406 /*max_packet_id*/ 10, |
414 size); | 407 size); |
415 | 408 |
416 GetEventsAndReset(); | 409 GetEventsAndReset(); |
417 | 410 |
418 ASSERT_EQ(1u, packet_events_.size()); | 411 ASSERT_EQ(1u, packet_events_.size()); |
419 | 412 |
420 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 413 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
421 PacketEventMap::iterator it = packet_events_.find(relative_rtp_timestamp); | 414 PacketEventList::iterator it = packet_events_.begin(); |
422 ASSERT_TRUE(it != packet_events_.end()); | |
423 | 415 |
424 linked_ptr<AggregatedPacketEvent> event = it->second; | 416 linked_ptr<AggregatedPacketEvent> event = *it; |
425 | 417 |
426 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 418 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
427 | 419 |
428 ASSERT_EQ(2, event->base_packet_event_size()); | 420 ASSERT_EQ(2, event->base_packet_event_size()); |
429 const BasePacketEvent& base_event = event->base_packet_event(0); | 421 const BasePacketEvent& base_event = event->base_packet_event(0); |
430 EXPECT_EQ(packet_id_1, base_event.packet_id()); | 422 EXPECT_EQ(packet_id_1, base_event.packet_id()); |
431 ASSERT_EQ(1, base_event.event_type_size()); | 423 ASSERT_EQ(1, base_event.event_type_size()); |
432 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_PACER, | 424 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_PACER, |
433 base_event.event_type(0)); | 425 base_event.event_type(0)); |
434 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); | 426 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 /*frame_id*/ 0, | 459 /*frame_id*/ 0, |
468 packet_id_2, | 460 packet_id_2, |
469 /*max_packet_id*/ 10, | 461 /*max_packet_id*/ 10, |
470 size); | 462 size); |
471 | 463 |
472 GetEventsAndReset(); | 464 GetEventsAndReset(); |
473 | 465 |
474 ASSERT_EQ(2u, packet_events_.size()); | 466 ASSERT_EQ(2u, packet_events_.size()); |
475 | 467 |
476 RtpTimestamp relative_rtp_timestamp = rtp_timestamp_1 - first_rtp_timestamp_; | 468 RtpTimestamp relative_rtp_timestamp = rtp_timestamp_1 - first_rtp_timestamp_; |
477 PacketEventMap::iterator it = packet_events_.find(relative_rtp_timestamp); | 469 PacketEventList::iterator it = packet_events_.begin(); |
478 ASSERT_TRUE(it != packet_events_.end()); | |
479 | 470 |
480 linked_ptr<AggregatedPacketEvent> event = it->second; | 471 linked_ptr<AggregatedPacketEvent> event = *it; |
481 | 472 |
482 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 473 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
483 | 474 |
484 ASSERT_EQ(1, event->base_packet_event_size()); | 475 ASSERT_EQ(1, event->base_packet_event_size()); |
485 const BasePacketEvent& base_event = event->base_packet_event(0); | 476 const BasePacketEvent& base_event = event->base_packet_event(0); |
486 EXPECT_EQ(packet_id_1, base_event.packet_id()); | 477 EXPECT_EQ(packet_id_1, base_event.packet_id()); |
487 ASSERT_EQ(1, base_event.event_type_size()); | 478 ASSERT_EQ(1, base_event.event_type_size()); |
488 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_PACER, | 479 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_PACER, |
489 base_event.event_type(0)); | 480 base_event.event_type(0)); |
490 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); | 481 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); |
491 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); | 482 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); |
492 | 483 |
493 relative_rtp_timestamp = rtp_timestamp_2 - first_rtp_timestamp_; | 484 relative_rtp_timestamp = rtp_timestamp_2 - first_rtp_timestamp_; |
494 it = packet_events_.find(relative_rtp_timestamp); | 485 ++it; |
495 ASSERT_TRUE(it != packet_events_.end()); | 486 ASSERT_TRUE(it != packet_events_.end()); |
496 | 487 |
497 event = it->second; | 488 event = *it; |
498 | |
499 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 489 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
500 | 490 |
501 ASSERT_EQ(1, event->base_packet_event_size()); | 491 ASSERT_EQ(1, event->base_packet_event_size()); |
502 const BasePacketEvent& base_event_2 = event->base_packet_event(0); | 492 const BasePacketEvent& base_event_2 = event->base_packet_event(0); |
503 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); | 493 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); |
504 ASSERT_EQ(1, base_event_2.event_type_size()); | 494 ASSERT_EQ(1, base_event_2.event_type_size()); |
505 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_RETRANSMITTED, | 495 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_RETRANSMITTED, |
506 base_event_2.event_type(0)); | 496 base_event_2.event_type(0)); |
507 ASSERT_EQ(1, base_event_2.event_timestamp_ms_size()); | 497 ASSERT_EQ(1, base_event_2.event_timestamp_ms_size()); |
508 EXPECT_EQ(InMilliseconds(now2), base_event_2.event_timestamp_ms(0)); | 498 EXPECT_EQ(InMilliseconds(now2), base_event_2.event_timestamp_ms(0)); |
(...skipping 10 matching lines...) Expand all Loading... |
519 /*frame_id*/ 0); | 509 /*frame_id*/ 0); |
520 | 510 |
521 cast_environment_->Logging()->InsertFrameEvent(now, | 511 cast_environment_->Logging()->InsertFrameEvent(now, |
522 kVideoFrameReceived, | 512 kVideoFrameReceived, |
523 rtp_timestamp + 30, | 513 rtp_timestamp + 30, |
524 /*frame_id*/ 1); | 514 /*frame_id*/ 1); |
525 | 515 |
526 GetEventsAndReset(); | 516 GetEventsAndReset(); |
527 | 517 |
528 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); | 518 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); |
529 FrameEventMap::iterator it = frame_events_.find(0); | 519 FrameEventList::iterator it = frame_events_.begin(); |
530 ASSERT_NE(frame_events_.end(), it); | 520 ASSERT_NE(frame_events_.end(), it); |
| 521 EXPECT_EQ(0u, (*it)->relative_rtp_timestamp()); |
531 | 522 |
532 it = frame_events_.find(30); | 523 ++it; |
533 ASSERT_NE(frame_events_.end(), it); | 524 ASSERT_NE(frame_events_.end(), it); |
| 525 EXPECT_EQ(30u, (*it)->relative_rtp_timestamp()); |
534 | 526 |
535 rtp_timestamp = 67890; | 527 rtp_timestamp = 67890; |
536 | 528 |
537 cast_environment_->Logging()->InsertFrameEvent(now, | 529 cast_environment_->Logging()->InsertFrameEvent(now, |
538 kVideoFrameCaptured, | 530 kVideoFrameCaptured, |
539 rtp_timestamp, | 531 rtp_timestamp, |
540 /*frame_id*/ 0); | 532 /*frame_id*/ 0); |
541 GetEventsAndReset(); | 533 GetEventsAndReset(); |
542 | 534 |
543 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); | 535 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); |
(...skipping 10 matching lines...) Expand all Loading... |
554 /*frame_id*/ 0); | 546 /*frame_id*/ 0); |
555 | 547 |
556 // RtpTimestamp has now wrapped around. | 548 // RtpTimestamp has now wrapped around. |
557 cast_environment_->Logging()->InsertFrameEvent(now, | 549 cast_environment_->Logging()->InsertFrameEvent(now, |
558 kVideoFrameReceived, | 550 kVideoFrameReceived, |
559 rtp_timestamp + 30, | 551 rtp_timestamp + 30, |
560 /*frame_id*/ 1); | 552 /*frame_id*/ 1); |
561 | 553 |
562 GetEventsAndReset(); | 554 GetEventsAndReset(); |
563 | 555 |
564 FrameEventMap::iterator it = frame_events_.find(0); | 556 FrameEventList::iterator it = frame_events_.begin(); |
565 ASSERT_NE(frame_events_.end(), it); | 557 ASSERT_NE(frame_events_.end(), it); |
| 558 EXPECT_EQ(0u, (*it)->relative_rtp_timestamp()); |
566 | 559 |
567 it = frame_events_.find(30); | 560 ++it; |
568 ASSERT_NE(frame_events_.end(), it); | 561 ASSERT_NE(frame_events_.end(), it); |
| 562 EXPECT_EQ(30u, (*it)->relative_rtp_timestamp()); |
| 563 } |
| 564 |
| 565 TEST_F(EncodingEventSubscriberTest, MaxEventsPerProto) { |
| 566 Init(VIDEO_EVENT); |
| 567 RtpTimestamp rtp_timestamp = 100; |
| 568 for (int i = 0; i < kMaxEventsPerProto + 1; i++) { |
| 569 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), |
| 570 kVideoAckReceived, |
| 571 rtp_timestamp, |
| 572 /*frame_id*/ 0); |
| 573 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(30)); |
| 574 } |
| 575 |
| 576 GetEventsAndReset(); |
| 577 |
| 578 ASSERT_EQ(2u, frame_events_.size()); |
| 579 FrameEventList::iterator frame_it = frame_events_.begin(); |
| 580 ASSERT_TRUE(frame_it != frame_events_.end()); |
| 581 |
| 582 linked_ptr<AggregatedFrameEvent> frame_event = *frame_it; |
| 583 |
| 584 EXPECT_EQ(kMaxEventsPerProto, frame_event->event_type_size()); |
| 585 |
| 586 for (int i = 0; i < kMaxPacketsPerFrame + 1; i++) { |
| 587 cast_environment_->Logging()->InsertPacketEvent( |
| 588 testing_clock_->NowTicks(), |
| 589 kVideoPacketRetransmitted, |
| 590 rtp_timestamp, |
| 591 /*frame_id*/ 0, |
| 592 i, |
| 593 kMaxPacketsPerFrame, |
| 594 123); |
| 595 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(30)); |
| 596 } |
| 597 |
| 598 GetEventsAndReset(); |
| 599 |
| 600 PacketEventList::iterator packet_it = packet_events_.begin(); |
| 601 ASSERT_TRUE(packet_it != packet_events_.end()); |
| 602 |
| 603 linked_ptr<AggregatedPacketEvent> packet_event = *packet_it; |
| 604 |
| 605 EXPECT_EQ(kMaxPacketsPerFrame, |
| 606 packet_event->base_packet_event_size()); |
| 607 |
| 608 for (int j = 0; j < kMaxEventsPerProto + 1; j++) { |
| 609 cast_environment_->Logging()->InsertPacketEvent( |
| 610 testing_clock_->NowTicks(), |
| 611 kVideoPacketRetransmitted, |
| 612 rtp_timestamp, |
| 613 /*frame_id*/ 0, |
| 614 0, |
| 615 0, |
| 616 123); |
| 617 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(30)); |
| 618 } |
| 619 |
| 620 GetEventsAndReset(); |
| 621 |
| 622 packet_it = packet_events_.begin(); |
| 623 ASSERT_TRUE(packet_it != packet_events_.end()); |
| 624 |
| 625 packet_event = *packet_it; |
| 626 |
| 627 EXPECT_EQ(kMaxEventsPerProto, |
| 628 packet_event->base_packet_event(0).event_type_size()); |
569 } | 629 } |
570 | 630 |
571 } // namespace cast | 631 } // namespace cast |
572 } // namespace media | 632 } // namespace media |
OLD | NEW |