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

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

Issue 1544313002: Convert Pass()→std::move() in //media (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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/stats_event_subscriber.h"
6
5 #include <stddef.h> 7 #include <stddef.h>
6 #include <stdint.h> 8 #include <stdint.h>
9 #include <utility>
7 10
8 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
10 #include "base/rand_util.h" 13 #include "base/rand_util.h"
11 #include "base/test/simple_test_tick_clock.h" 14 #include "base/test/simple_test_tick_clock.h"
12 #include "base/time/tick_clock.h" 15 #include "base/time/tick_clock.h"
13 #include "base/values.h" 16 #include "base/values.h"
14 #include "media/cast/cast_environment.h" 17 #include "media/cast/cast_environment.h"
15 #include "media/cast/logging/logging_defines.h" 18 #include "media/cast/logging/logging_defines.h"
16 #include "media/cast/logging/stats_event_subscriber.h"
17 #include "media/cast/test/fake_receiver_time_offset_estimator.h" 19 #include "media/cast/test/fake_receiver_time_offset_estimator.h"
18 #include "media/cast/test/fake_single_thread_task_runner.h" 20 #include "media/cast/test/fake_single_thread_task_runner.h"
19 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
20 22
21 namespace { 23 namespace {
22 const int kReceiverOffsetSecs = 100; 24 const int kReceiverOffsetSecs = 100;
23 } 25 }
24 26
25 namespace media { 27 namespace media {
26 namespace cast { 28 namespace cast {
27 29
28 class StatsEventSubscriberTest : public ::testing::Test { 30 class StatsEventSubscriberTest : public ::testing::Test {
29 protected: 31 protected:
30 StatsEventSubscriberTest() 32 StatsEventSubscriberTest()
31 : sender_clock_(new base::SimpleTestTickClock()), 33 : sender_clock_(new base::SimpleTestTickClock()),
32 task_runner_(new test::FakeSingleThreadTaskRunner(sender_clock_)), 34 task_runner_(new test::FakeSingleThreadTaskRunner(sender_clock_)),
33 cast_environment_(new CastEnvironment( 35 cast_environment_(
34 scoped_ptr<base::TickClock>(sender_clock_).Pass(), 36 new CastEnvironment(scoped_ptr<base::TickClock>(sender_clock_),
35 task_runner_, 37 task_runner_,
36 task_runner_, 38 task_runner_,
37 task_runner_)), 39 task_runner_)),
38 fake_offset_estimator_( 40 fake_offset_estimator_(
39 base::TimeDelta::FromSeconds(kReceiverOffsetSecs)) { 41 base::TimeDelta::FromSeconds(kReceiverOffsetSecs)) {
40 receiver_clock_.Advance(base::TimeDelta::FromSeconds(kReceiverOffsetSecs)); 42 receiver_clock_.Advance(base::TimeDelta::FromSeconds(kReceiverOffsetSecs));
41 cast_environment_->logger()->Subscribe(&fake_offset_estimator_); 43 cast_environment_->logger()->Subscribe(&fake_offset_estimator_);
42 } 44 }
43 45
44 ~StatsEventSubscriberTest() override { 46 ~StatsEventSubscriberTest() override {
45 if (subscriber_.get()) 47 if (subscriber_.get())
46 cast_environment_->logger()->Unsubscribe(subscriber_.get()); 48 cast_environment_->logger()->Unsubscribe(subscriber_.get());
47 cast_environment_->logger()->Unsubscribe(&fake_offset_estimator_); 49 cast_environment_->logger()->Unsubscribe(&fake_offset_estimator_);
(...skipping 30 matching lines...) Expand all
78 int num_frames = StatsEventSubscriber::kMaxFrameInfoMapSize + 50; 80 int num_frames = StatsEventSubscriber::kMaxFrameInfoMapSize + 50;
79 int dropped_frames = 0; 81 int dropped_frames = 0;
80 base::TimeTicks start_time = sender_clock_->NowTicks(); 82 base::TimeTicks start_time = sender_clock_->NowTicks();
81 // Drop half the frames during the encode step. 83 // Drop half the frames during the encode step.
82 for (int i = 0; i < num_frames; i++) { 84 for (int i = 0; i < num_frames; i++) {
83 scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent()); 85 scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent());
84 capture_begin_event->timestamp = sender_clock_->NowTicks(); 86 capture_begin_event->timestamp = sender_clock_->NowTicks();
85 capture_begin_event->type = FRAME_CAPTURE_BEGIN; 87 capture_begin_event->type = FRAME_CAPTURE_BEGIN;
86 capture_begin_event->media_type = VIDEO_EVENT; 88 capture_begin_event->media_type = VIDEO_EVENT;
87 capture_begin_event->rtp_timestamp = rtp_timestamp; 89 capture_begin_event->rtp_timestamp = rtp_timestamp;
88 cast_environment_->logger()->DispatchFrameEvent(capture_begin_event.Pass()); 90 cast_environment_->logger()->DispatchFrameEvent(
91 std::move(capture_begin_event));
89 92
90 AdvanceClocks(base::TimeDelta::FromMicroseconds(10)); 93 AdvanceClocks(base::TimeDelta::FromMicroseconds(10));
91 scoped_ptr<FrameEvent> capture_end_event(new FrameEvent()); 94 scoped_ptr<FrameEvent> capture_end_event(new FrameEvent());
92 capture_end_event->timestamp = sender_clock_->NowTicks(); 95 capture_end_event->timestamp = sender_clock_->NowTicks();
93 capture_end_event->type = FRAME_CAPTURE_END; 96 capture_end_event->type = FRAME_CAPTURE_END;
94 capture_end_event->media_type = VIDEO_EVENT; 97 capture_end_event->media_type = VIDEO_EVENT;
95 capture_end_event->rtp_timestamp = rtp_timestamp; 98 capture_end_event->rtp_timestamp = rtp_timestamp;
96 cast_environment_->logger()->DispatchFrameEvent(capture_end_event.Pass()); 99 cast_environment_->logger()->DispatchFrameEvent(
100 std::move(capture_end_event));
97 101
98 if (i % 2 == 0) { 102 if (i % 2 == 0) {
99 AdvanceClocks(base::TimeDelta::FromMicroseconds(10)); 103 AdvanceClocks(base::TimeDelta::FromMicroseconds(10));
100 scoped_ptr<FrameEvent> encode_event(new FrameEvent()); 104 scoped_ptr<FrameEvent> encode_event(new FrameEvent());
101 encode_event->timestamp = sender_clock_->NowTicks(); 105 encode_event->timestamp = sender_clock_->NowTicks();
102 encode_event->type = FRAME_ENCODED; 106 encode_event->type = FRAME_ENCODED;
103 encode_event->media_type = VIDEO_EVENT; 107 encode_event->media_type = VIDEO_EVENT;
104 encode_event->rtp_timestamp = rtp_timestamp; 108 encode_event->rtp_timestamp = rtp_timestamp;
105 encode_event->frame_id = frame_id; 109 encode_event->frame_id = frame_id;
106 encode_event->size = 1024; 110 encode_event->size = 1024;
107 encode_event->key_frame = true; 111 encode_event->key_frame = true;
108 encode_event->target_bitrate = 5678; 112 encode_event->target_bitrate = 5678;
109 encode_event->encoder_cpu_utilization = 9.10; 113 encode_event->encoder_cpu_utilization = 9.10;
110 encode_event->idealized_bitrate_utilization = 11.12; 114 encode_event->idealized_bitrate_utilization = 11.12;
111 cast_environment_->logger()->DispatchFrameEvent(encode_event.Pass()); 115 cast_environment_->logger()->DispatchFrameEvent(std::move(encode_event));
112 } else if (i < extra_frames) { 116 } else if (i < extra_frames) {
113 dropped_frames++; 117 dropped_frames++;
114 } 118 }
115 AdvanceClocks(base::TimeDelta::FromMicroseconds(34567)); 119 AdvanceClocks(base::TimeDelta::FromMicroseconds(34567));
116 rtp_timestamp += 90; 120 rtp_timestamp += 90;
117 frame_id++; 121 frame_id++;
118 } 122 }
119 123
120 base::TimeTicks end_time = sender_clock_->NowTicks(); 124 base::TimeTicks end_time = sender_clock_->NowTicks();
121 125
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 encode_event->timestamp = sender_clock_->NowTicks(); 169 encode_event->timestamp = sender_clock_->NowTicks();
166 encode_event->type = FRAME_ENCODED; 170 encode_event->type = FRAME_ENCODED;
167 encode_event->media_type = VIDEO_EVENT; 171 encode_event->media_type = VIDEO_EVENT;
168 encode_event->rtp_timestamp = rtp_timestamp; 172 encode_event->rtp_timestamp = rtp_timestamp;
169 encode_event->frame_id = frame_id; 173 encode_event->frame_id = frame_id;
170 encode_event->size = size; 174 encode_event->size = size;
171 encode_event->key_frame = true; 175 encode_event->key_frame = true;
172 encode_event->target_bitrate = 5678; 176 encode_event->target_bitrate = 5678;
173 encode_event->encoder_cpu_utilization = 9.10; 177 encode_event->encoder_cpu_utilization = 9.10;
174 encode_event->idealized_bitrate_utilization = 11.12; 178 encode_event->idealized_bitrate_utilization = 11.12;
175 cast_environment_->logger()->DispatchFrameEvent(encode_event.Pass()); 179 cast_environment_->logger()->DispatchFrameEvent(std::move(encode_event));
176 last_event_time = sender_clock_->NowTicks(); 180 last_event_time = sender_clock_->NowTicks();
177 181
178 AdvanceClocks(base::TimeDelta::FromMicroseconds(35678)); 182 AdvanceClocks(base::TimeDelta::FromMicroseconds(35678));
179 rtp_timestamp += 90; 183 rtp_timestamp += 90;
180 frame_id++; 184 frame_id++;
181 } 185 }
182 186
183 base::TimeTicks end_time = sender_clock_->NowTicks(); 187 base::TimeTicks end_time = sender_clock_->NowTicks();
184 188
185 StatsEventSubscriber::StatsMap stats_map; 189 StatsEventSubscriber::StatsMap stats_map;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 uint32_t frame_id = 0; 226 uint32_t frame_id = 0;
223 int num_frames = 10; 227 int num_frames = 10;
224 base::TimeTicks start_time = sender_clock_->NowTicks(); 228 base::TimeTicks start_time = sender_clock_->NowTicks();
225 for (int i = 0; i < num_frames; i++) { 229 for (int i = 0; i < num_frames; i++) {
226 scoped_ptr<FrameEvent> decode_event(new FrameEvent()); 230 scoped_ptr<FrameEvent> decode_event(new FrameEvent());
227 decode_event->timestamp = receiver_clock_.NowTicks(); 231 decode_event->timestamp = receiver_clock_.NowTicks();
228 decode_event->type = FRAME_DECODED; 232 decode_event->type = FRAME_DECODED;
229 decode_event->media_type = VIDEO_EVENT; 233 decode_event->media_type = VIDEO_EVENT;
230 decode_event->rtp_timestamp = rtp_timestamp; 234 decode_event->rtp_timestamp = rtp_timestamp;
231 decode_event->frame_id = frame_id; 235 decode_event->frame_id = frame_id;
232 cast_environment_->logger()->DispatchFrameEvent(decode_event.Pass()); 236 cast_environment_->logger()->DispatchFrameEvent(std::move(decode_event));
233 237
234 AdvanceClocks(base::TimeDelta::FromMicroseconds(36789)); 238 AdvanceClocks(base::TimeDelta::FromMicroseconds(36789));
235 rtp_timestamp += 90; 239 rtp_timestamp += 90;
236 frame_id++; 240 frame_id++;
237 } 241 }
238 242
239 base::TimeTicks end_time = sender_clock_->NowTicks(); 243 base::TimeTicks end_time = sender_clock_->NowTicks();
240 244
241 StatsEventSubscriber::StatsMap stats_map; 245 StatsEventSubscriber::StatsMap stats_map;
242 subscriber_->GetStatsInternal(&stats_map); 246 subscriber_->GetStatsInternal(&stats_map);
(...skipping 19 matching lines...) Expand all
262 base::TimeDelta delay = base::TimeDelta::FromMilliseconds(delay_ms); 266 base::TimeDelta delay = base::TimeDelta::FromMilliseconds(delay_ms);
263 if (delay_ms > 0) 267 if (delay_ms > 0)
264 late_frames++; 268 late_frames++;
265 scoped_ptr<FrameEvent> playout_event(new FrameEvent()); 269 scoped_ptr<FrameEvent> playout_event(new FrameEvent());
266 playout_event->timestamp = receiver_clock_.NowTicks(); 270 playout_event->timestamp = receiver_clock_.NowTicks();
267 playout_event->type = FRAME_PLAYOUT; 271 playout_event->type = FRAME_PLAYOUT;
268 playout_event->media_type = VIDEO_EVENT; 272 playout_event->media_type = VIDEO_EVENT;
269 playout_event->rtp_timestamp = rtp_timestamp; 273 playout_event->rtp_timestamp = rtp_timestamp;
270 playout_event->frame_id = frame_id; 274 playout_event->frame_id = frame_id;
271 playout_event->delay_delta = delay; 275 playout_event->delay_delta = delay;
272 cast_environment_->logger()->DispatchFrameEvent(playout_event.Pass()); 276 cast_environment_->logger()->DispatchFrameEvent(std::move(playout_event));
273 277
274 AdvanceClocks(base::TimeDelta::FromMicroseconds(37890)); 278 AdvanceClocks(base::TimeDelta::FromMicroseconds(37890));
275 rtp_timestamp += 90; 279 rtp_timestamp += 90;
276 frame_id++; 280 frame_id++;
277 } 281 }
278 282
279 StatsEventSubscriber::StatsMap stats_map; 283 StatsEventSubscriber::StatsMap stats_map;
280 subscriber_->GetStatsInternal(&stats_map); 284 subscriber_->GetStatsInternal(&stats_map);
281 285
282 StatsEventSubscriber::StatsMap::iterator it = stats_map.find( 286 StatsEventSubscriber::StatsMap::iterator it = stats_map.find(
283 StatsEventSubscriber::NUM_FRAMES_LATE); 287 StatsEventSubscriber::NUM_FRAMES_LATE);
284 ASSERT_TRUE(it != stats_map.end()); 288 ASSERT_TRUE(it != stats_map.end());
285 289
286 EXPECT_DOUBLE_EQ(it->second, late_frames); 290 EXPECT_DOUBLE_EQ(it->second, late_frames);
287 } 291 }
288 292
289 TEST_F(StatsEventSubscriberTest, E2ELatency) { 293 TEST_F(StatsEventSubscriberTest, E2ELatency) {
290 Init(VIDEO_EVENT); 294 Init(VIDEO_EVENT);
291 295
292 uint32_t rtp_timestamp = 0; 296 uint32_t rtp_timestamp = 0;
293 uint32_t frame_id = 0; 297 uint32_t frame_id = 0;
294 int num_frames = 10; 298 int num_frames = 10;
295 base::TimeDelta total_latency; 299 base::TimeDelta total_latency;
296 for (int i = 0; i < num_frames; i++) { 300 for (int i = 0; i < num_frames; i++) {
297 scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent()); 301 scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent());
298 capture_begin_event->timestamp = sender_clock_->NowTicks(); 302 capture_begin_event->timestamp = sender_clock_->NowTicks();
299 capture_begin_event->type = FRAME_CAPTURE_BEGIN; 303 capture_begin_event->type = FRAME_CAPTURE_BEGIN;
300 capture_begin_event->media_type = VIDEO_EVENT; 304 capture_begin_event->media_type = VIDEO_EVENT;
301 capture_begin_event->rtp_timestamp = rtp_timestamp; 305 capture_begin_event->rtp_timestamp = rtp_timestamp;
302 cast_environment_->logger()->DispatchFrameEvent(capture_begin_event.Pass()); 306 cast_environment_->logger()->DispatchFrameEvent(
307 std::move(capture_begin_event));
303 308
304 int latency_micros = 100000 + base::RandInt(-5000, 50000); 309 int latency_micros = 100000 + base::RandInt(-5000, 50000);
305 base::TimeDelta latency = base::TimeDelta::FromMicroseconds(latency_micros); 310 base::TimeDelta latency = base::TimeDelta::FromMicroseconds(latency_micros);
306 AdvanceClocks(latency); 311 AdvanceClocks(latency);
307 312
308 int delay_micros = base::RandInt(-50000, 50000); 313 int delay_micros = base::RandInt(-50000, 50000);
309 base::TimeDelta delay = base::TimeDelta::FromMilliseconds(delay_micros); 314 base::TimeDelta delay = base::TimeDelta::FromMilliseconds(delay_micros);
310 total_latency += latency; 315 total_latency += latency;
311 316
312 scoped_ptr<FrameEvent> playout_event(new FrameEvent()); 317 scoped_ptr<FrameEvent> playout_event(new FrameEvent());
313 playout_event->timestamp = receiver_clock_.NowTicks(); 318 playout_event->timestamp = receiver_clock_.NowTicks();
314 playout_event->type = FRAME_PLAYOUT; 319 playout_event->type = FRAME_PLAYOUT;
315 playout_event->media_type = VIDEO_EVENT; 320 playout_event->media_type = VIDEO_EVENT;
316 playout_event->rtp_timestamp = rtp_timestamp; 321 playout_event->rtp_timestamp = rtp_timestamp;
317 playout_event->frame_id = frame_id; 322 playout_event->frame_id = frame_id;
318 playout_event->delay_delta = delay; 323 playout_event->delay_delta = delay;
319 cast_environment_->logger()->DispatchFrameEvent(playout_event.Pass()); 324 cast_environment_->logger()->DispatchFrameEvent(std::move(playout_event));
320 325
321 rtp_timestamp += 90; 326 rtp_timestamp += 90;
322 frame_id++; 327 frame_id++;
323 } 328 }
324 329
325 StatsEventSubscriber::StatsMap stats_map; 330 StatsEventSubscriber::StatsMap stats_map;
326 subscriber_->GetStatsInternal(&stats_map); 331 subscriber_->GetStatsInternal(&stats_map);
327 332
328 StatsEventSubscriber::StatsMap::iterator it = 333 StatsEventSubscriber::StatsMap::iterator it =
329 stats_map.find(StatsEventSubscriber::AVG_E2E_LATENCY_MS); 334 stats_map.find(StatsEventSubscriber::AVG_E2E_LATENCY_MS);
(...skipping 21 matching lines...) Expand all
351 int num_packets_rtx_rejected = 0; 356 int num_packets_rtx_rejected = 0;
352 357
353 base::TimeTicks sender_encoded_time = sender_clock_->NowTicks(); 358 base::TimeTicks sender_encoded_time = sender_clock_->NowTicks();
354 base::TimeTicks receiver_encoded_time = receiver_clock_.NowTicks(); 359 base::TimeTicks receiver_encoded_time = receiver_clock_.NowTicks();
355 scoped_ptr<FrameEvent> encode_event(new FrameEvent()); 360 scoped_ptr<FrameEvent> encode_event(new FrameEvent());
356 encode_event->timestamp = sender_encoded_time; 361 encode_event->timestamp = sender_encoded_time;
357 encode_event->type = FRAME_ENCODED; 362 encode_event->type = FRAME_ENCODED;
358 encode_event->media_type = VIDEO_EVENT; 363 encode_event->media_type = VIDEO_EVENT;
359 encode_event->rtp_timestamp = rtp_timestamp; 364 encode_event->rtp_timestamp = rtp_timestamp;
360 encode_event->frame_id = 0; 365 encode_event->frame_id = 0;
361 cast_environment_->logger()->DispatchFrameEvent(encode_event.Pass()); 366 cast_environment_->logger()->DispatchFrameEvent(std::move(encode_event));
362 367
363 // Every 2nd packet will be retransmitted once. 368 // Every 2nd packet will be retransmitted once.
364 // Every 4th packet will be retransmitted twice. 369 // Every 4th packet will be retransmitted twice.
365 // Every 8th packet will be retransmitted 3 times + 1 rejected retransmission. 370 // Every 8th packet will be retransmitted 3 times + 1 rejected retransmission.
366 for (int i = 0; i < num_packets; i++) { 371 for (int i = 0; i < num_packets; i++) {
367 int size = 1000 + base::RandInt(-100, 100); 372 int size = 1000 + base::RandInt(-100, 100);
368 total_size += size; 373 total_size += size;
369 374
370 scoped_ptr<PacketEvent> send_event(new PacketEvent()); 375 scoped_ptr<PacketEvent> send_event(new PacketEvent());
371 send_event->timestamp = sender_clock_->NowTicks(); 376 send_event->timestamp = sender_clock_->NowTicks();
372 send_event->type = PACKET_SENT_TO_NETWORK; 377 send_event->type = PACKET_SENT_TO_NETWORK;
373 send_event->media_type = VIDEO_EVENT; 378 send_event->media_type = VIDEO_EVENT;
374 send_event->rtp_timestamp = rtp_timestamp; 379 send_event->rtp_timestamp = rtp_timestamp;
375 send_event->frame_id = 0; 380 send_event->frame_id = 0;
376 send_event->packet_id = i; 381 send_event->packet_id = i;
377 send_event->max_packet_id = num_packets - 1; 382 send_event->max_packet_id = num_packets - 1;
378 send_event->size = size; 383 send_event->size = size;
379 cast_environment_->logger()->DispatchPacketEvent(send_event.Pass()); 384 cast_environment_->logger()->DispatchPacketEvent(std::move(send_event));
380 385
381 num_packets_transmitted++; 386 num_packets_transmitted++;
382 total_queueing_latency += sender_clock_->NowTicks() - sender_encoded_time; 387 total_queueing_latency += sender_clock_->NowTicks() - sender_encoded_time;
383 388
384 int latency_micros = 20000 + base::RandInt(-10000, 10000); 389 int latency_micros = 20000 + base::RandInt(-10000, 10000);
385 base::TimeDelta latency = base::TimeDelta::FromMicroseconds(latency_micros); 390 base::TimeDelta latency = base::TimeDelta::FromMicroseconds(latency_micros);
386 // Latency is only recorded for packets that aren't retransmitted. 391 // Latency is only recorded for packets that aren't retransmitted.
387 if (i % 2 != 0) { 392 if (i % 2 != 0) {
388 total_network_latency += latency; 393 total_network_latency += latency;
389 total_packet_latency += 394 total_packet_latency +=
(...skipping 10 matching lines...) Expand all
400 if (i % 2 == 0) { 405 if (i % 2 == 0) {
401 scoped_ptr<PacketEvent> retransmit_event(new PacketEvent()); 406 scoped_ptr<PacketEvent> retransmit_event(new PacketEvent());
402 retransmit_event->timestamp = receiver_clock_.NowTicks(); 407 retransmit_event->timestamp = receiver_clock_.NowTicks();
403 retransmit_event->type = PACKET_RETRANSMITTED; 408 retransmit_event->type = PACKET_RETRANSMITTED;
404 retransmit_event->media_type = VIDEO_EVENT; 409 retransmit_event->media_type = VIDEO_EVENT;
405 retransmit_event->rtp_timestamp = rtp_timestamp; 410 retransmit_event->rtp_timestamp = rtp_timestamp;
406 retransmit_event->frame_id = 0; 411 retransmit_event->frame_id = 0;
407 retransmit_event->packet_id = i; 412 retransmit_event->packet_id = i;
408 retransmit_event->max_packet_id = num_packets - 1; 413 retransmit_event->max_packet_id = num_packets - 1;
409 retransmit_event->size = size; 414 retransmit_event->size = size;
410 cast_environment_->logger()->DispatchPacketEvent(retransmit_event.Pass()); 415 cast_environment_->logger()->DispatchPacketEvent(
416 std::move(retransmit_event));
411 417
412 retransmit_total_size += size; 418 retransmit_total_size += size;
413 num_packets_transmitted++; 419 num_packets_transmitted++;
414 num_packets_retransmitted++; 420 num_packets_retransmitted++;
415 } 421 }
416 422
417 // Retransmission 2. 423 // Retransmission 2.
418 AdvanceClocks(base::TimeDelta::FromMicroseconds(13456)); 424 AdvanceClocks(base::TimeDelta::FromMicroseconds(13456));
419 if (i % 4 == 0) { 425 if (i % 4 == 0) {
420 scoped_ptr<PacketEvent> retransmit_event(new PacketEvent()); 426 scoped_ptr<PacketEvent> retransmit_event(new PacketEvent());
421 retransmit_event->timestamp = receiver_clock_.NowTicks(); 427 retransmit_event->timestamp = receiver_clock_.NowTicks();
422 retransmit_event->type = PACKET_RETRANSMITTED; 428 retransmit_event->type = PACKET_RETRANSMITTED;
423 retransmit_event->media_type = VIDEO_EVENT; 429 retransmit_event->media_type = VIDEO_EVENT;
424 retransmit_event->rtp_timestamp = rtp_timestamp; 430 retransmit_event->rtp_timestamp = rtp_timestamp;
425 retransmit_event->frame_id = 0; 431 retransmit_event->frame_id = 0;
426 retransmit_event->packet_id = i; 432 retransmit_event->packet_id = i;
427 retransmit_event->max_packet_id = num_packets - 1; 433 retransmit_event->max_packet_id = num_packets - 1;
428 retransmit_event->size = size; 434 retransmit_event->size = size;
429 cast_environment_->logger()->DispatchPacketEvent(retransmit_event.Pass()); 435 cast_environment_->logger()->DispatchPacketEvent(
436 std::move(retransmit_event));
430 437
431 retransmit_total_size += size; 438 retransmit_total_size += size;
432 num_packets_transmitted++; 439 num_packets_transmitted++;
433 num_packets_retransmitted++; 440 num_packets_retransmitted++;
434 } 441 }
435 442
436 // Retransmission 3. 443 // Retransmission 3.
437 AdvanceClocks(base::TimeDelta::FromMicroseconds(14567)); 444 AdvanceClocks(base::TimeDelta::FromMicroseconds(14567));
438 if (i % 8 == 0) { 445 if (i % 8 == 0) {
439 scoped_ptr<PacketEvent> retransmit_event(new PacketEvent()); 446 scoped_ptr<PacketEvent> retransmit_event(new PacketEvent());
440 retransmit_event->timestamp = receiver_clock_.NowTicks(); 447 retransmit_event->timestamp = receiver_clock_.NowTicks();
441 retransmit_event->type = PACKET_RETRANSMITTED; 448 retransmit_event->type = PACKET_RETRANSMITTED;
442 retransmit_event->media_type = VIDEO_EVENT; 449 retransmit_event->media_type = VIDEO_EVENT;
443 retransmit_event->rtp_timestamp = rtp_timestamp; 450 retransmit_event->rtp_timestamp = rtp_timestamp;
444 retransmit_event->frame_id = 0; 451 retransmit_event->frame_id = 0;
445 retransmit_event->packet_id = i; 452 retransmit_event->packet_id = i;
446 retransmit_event->max_packet_id = num_packets - 1; 453 retransmit_event->max_packet_id = num_packets - 1;
447 retransmit_event->size = size; 454 retransmit_event->size = size;
448 cast_environment_->logger()->DispatchPacketEvent(retransmit_event.Pass()); 455 cast_environment_->logger()->DispatchPacketEvent(
456 std::move(retransmit_event));
449 457
450 scoped_ptr<PacketEvent> reject_event(new PacketEvent()); 458 scoped_ptr<PacketEvent> reject_event(new PacketEvent());
451 reject_event->timestamp = receiver_clock_.NowTicks(); 459 reject_event->timestamp = receiver_clock_.NowTicks();
452 reject_event->type = PACKET_RTX_REJECTED; 460 reject_event->type = PACKET_RTX_REJECTED;
453 reject_event->media_type = VIDEO_EVENT; 461 reject_event->media_type = VIDEO_EVENT;
454 reject_event->rtp_timestamp = rtp_timestamp; 462 reject_event->rtp_timestamp = rtp_timestamp;
455 reject_event->frame_id = 0; 463 reject_event->frame_id = 0;
456 reject_event->packet_id = i; 464 reject_event->packet_id = i;
457 reject_event->max_packet_id = num_packets - 1; 465 reject_event->max_packet_id = num_packets - 1;
458 reject_event->size = size; 466 reject_event->size = size;
459 cast_environment_->logger()->DispatchPacketEvent(reject_event.Pass()); 467 cast_environment_->logger()->DispatchPacketEvent(std::move(reject_event));
460 468
461 retransmit_total_size += size; 469 retransmit_total_size += size;
462 num_packets_transmitted++; 470 num_packets_transmitted++;
463 num_packets_retransmitted++; 471 num_packets_retransmitted++;
464 num_packets_rtx_rejected++; 472 num_packets_rtx_rejected++;
465 } 473 }
466 474
467 scoped_ptr<PacketEvent> receive_event(new PacketEvent()); 475 scoped_ptr<PacketEvent> receive_event(new PacketEvent());
468 receive_event->timestamp = received_time; 476 receive_event->timestamp = received_time;
469 receive_event->type = PACKET_RECEIVED; 477 receive_event->type = PACKET_RECEIVED;
470 receive_event->media_type = VIDEO_EVENT; 478 receive_event->media_type = VIDEO_EVENT;
471 receive_event->rtp_timestamp = rtp_timestamp; 479 receive_event->rtp_timestamp = rtp_timestamp;
472 receive_event->frame_id = 0; 480 receive_event->frame_id = 0;
473 receive_event->packet_id = i; 481 receive_event->packet_id = i;
474 receive_event->max_packet_id = num_packets - 1; 482 receive_event->max_packet_id = num_packets - 1;
475 receive_event->size = size; 483 receive_event->size = size;
476 cast_environment_->logger()->DispatchPacketEvent(receive_event.Pass()); 484 cast_environment_->logger()->DispatchPacketEvent(std::move(receive_event));
477 485
478 num_packets_received++; 486 num_packets_received++;
479 } 487 }
480 488
481 base::TimeTicks end_time = sender_clock_->NowTicks(); 489 base::TimeTicks end_time = sender_clock_->NowTicks();
482 base::TimeDelta duration = end_time - start_time; 490 base::TimeDelta duration = end_time - start_time;
483 491
484 StatsEventSubscriber::StatsMap stats_map; 492 StatsEventSubscriber::StatsMap stats_map;
485 subscriber_->GetStatsInternal(&stats_map); 493 subscriber_->GetStatsInternal(&stats_map);
486 494
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 // 10 Frames with encode time in the bucket of "15-19"ms. 575 // 10 Frames with encode time in the bucket of "15-19"ms.
568 for (int i = 0; i < 10; ++i) { 576 for (int i = 0; i < 10; ++i) {
569 ++frame_id; 577 ++frame_id;
570 ++rtp_timestamp; 578 ++rtp_timestamp;
571 579
572 scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent()); 580 scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent());
573 capture_begin_event->timestamp = sender_clock_->NowTicks(); 581 capture_begin_event->timestamp = sender_clock_->NowTicks();
574 capture_begin_event->type = FRAME_CAPTURE_BEGIN; 582 capture_begin_event->type = FRAME_CAPTURE_BEGIN;
575 capture_begin_event->media_type = VIDEO_EVENT; 583 capture_begin_event->media_type = VIDEO_EVENT;
576 capture_begin_event->rtp_timestamp = rtp_timestamp; 584 capture_begin_event->rtp_timestamp = rtp_timestamp;
577 cast_environment_->logger()->DispatchFrameEvent(capture_begin_event.Pass()); 585 cast_environment_->logger()->DispatchFrameEvent(
586 std::move(capture_begin_event));
578 587
579 AdvanceClocks(base::TimeDelta::FromMilliseconds(10)); 588 AdvanceClocks(base::TimeDelta::FromMilliseconds(10));
580 scoped_ptr<FrameEvent> capture_end_event(new FrameEvent()); 589 scoped_ptr<FrameEvent> capture_end_event(new FrameEvent());
581 capture_end_event->timestamp = sender_clock_->NowTicks(); 590 capture_end_event->timestamp = sender_clock_->NowTicks();
582 capture_end_event->type = FRAME_CAPTURE_END; 591 capture_end_event->type = FRAME_CAPTURE_END;
583 capture_end_event->media_type = VIDEO_EVENT; 592 capture_end_event->media_type = VIDEO_EVENT;
584 capture_end_event->rtp_timestamp = rtp_timestamp; 593 capture_end_event->rtp_timestamp = rtp_timestamp;
585 cast_environment_->logger()->DispatchFrameEvent(capture_end_event.Pass()); 594 cast_environment_->logger()->DispatchFrameEvent(
595 std::move(capture_end_event));
586 596
587 AdvanceClocks(base::TimeDelta::FromMilliseconds(15)); 597 AdvanceClocks(base::TimeDelta::FromMilliseconds(15));
588 scoped_ptr<FrameEvent> encode_event(new FrameEvent()); 598 scoped_ptr<FrameEvent> encode_event(new FrameEvent());
589 encode_event->timestamp = sender_clock_->NowTicks(); 599 encode_event->timestamp = sender_clock_->NowTicks();
590 encode_event->type = FRAME_ENCODED; 600 encode_event->type = FRAME_ENCODED;
591 encode_event->media_type = VIDEO_EVENT; 601 encode_event->media_type = VIDEO_EVENT;
592 encode_event->rtp_timestamp = rtp_timestamp; 602 encode_event->rtp_timestamp = rtp_timestamp;
593 encode_event->frame_id = frame_id; 603 encode_event->frame_id = frame_id;
594 encode_event->size = 1024; 604 encode_event->size = 1024;
595 encode_event->key_frame = true; 605 encode_event->key_frame = true;
596 encode_event->target_bitrate = 5678; 606 encode_event->target_bitrate = 5678;
597 encode_event->encoder_cpu_utilization = 9.10; 607 encode_event->encoder_cpu_utilization = 9.10;
598 encode_event->idealized_bitrate_utilization = 11.12; 608 encode_event->idealized_bitrate_utilization = 11.12;
599 cast_environment_->logger()->DispatchFrameEvent(encode_event.Pass()); 609 cast_environment_->logger()->DispatchFrameEvent(std::move(encode_event));
600 } 610 }
601 611
602 // Send 3 packets for the last frame. 612 // Send 3 packets for the last frame.
603 // Queueing latencies are 100ms, 200ms and 300ms. 613 // Queueing latencies are 100ms, 200ms and 300ms.
604 for (int i = 0; i < 3; ++i) { 614 for (int i = 0; i < 3; ++i) {
605 AdvanceClocks(base::TimeDelta::FromMilliseconds(100)); 615 AdvanceClocks(base::TimeDelta::FromMilliseconds(100));
606 scoped_ptr<PacketEvent> send_event(new PacketEvent()); 616 scoped_ptr<PacketEvent> send_event(new PacketEvent());
607 send_event->timestamp = sender_clock_->NowTicks(); 617 send_event->timestamp = sender_clock_->NowTicks();
608 send_event->type = PACKET_SENT_TO_NETWORK; 618 send_event->type = PACKET_SENT_TO_NETWORK;
609 send_event->media_type = VIDEO_EVENT; 619 send_event->media_type = VIDEO_EVENT;
610 send_event->rtp_timestamp = rtp_timestamp; 620 send_event->rtp_timestamp = rtp_timestamp;
611 send_event->frame_id = 0; 621 send_event->frame_id = 0;
612 send_event->packet_id = i; 622 send_event->packet_id = i;
613 send_event->max_packet_id = 2; 623 send_event->max_packet_id = 2;
614 send_event->size = 123; 624 send_event->size = 123;
615 cast_environment_->logger()->DispatchPacketEvent(send_event.Pass()); 625 cast_environment_->logger()->DispatchPacketEvent(std::move(send_event));
616 } 626 }
617 627
618 // Receive 3 packets for the last frame. 628 // Receive 3 packets for the last frame.
619 // Network latencies are 100ms, 200ms and 300ms. 629 // Network latencies are 100ms, 200ms and 300ms.
620 // Packet latencies are 400ms. 630 // Packet latencies are 400ms.
621 AdvanceClocks(base::TimeDelta::FromMilliseconds(100)); 631 AdvanceClocks(base::TimeDelta::FromMilliseconds(100));
622 for (int i = 0; i < 3; ++i) { 632 for (int i = 0; i < 3; ++i) {
623 scoped_ptr<PacketEvent> receive_event(new PacketEvent()); 633 scoped_ptr<PacketEvent> receive_event(new PacketEvent());
624 receive_event->timestamp = receiver_clock_.NowTicks(); 634 receive_event->timestamp = receiver_clock_.NowTicks();
625 receive_event->type = PACKET_RECEIVED; 635 receive_event->type = PACKET_RECEIVED;
626 receive_event->media_type = VIDEO_EVENT; 636 receive_event->media_type = VIDEO_EVENT;
627 receive_event->rtp_timestamp = rtp_timestamp; 637 receive_event->rtp_timestamp = rtp_timestamp;
628 receive_event->frame_id = 0; 638 receive_event->frame_id = 0;
629 receive_event->packet_id = i; 639 receive_event->packet_id = i;
630 receive_event->max_packet_id = 2; 640 receive_event->max_packet_id = 2;
631 receive_event->size = 123; 641 receive_event->size = 123;
632 cast_environment_->logger()->DispatchPacketEvent(receive_event.Pass()); 642 cast_environment_->logger()->DispatchPacketEvent(std::move(receive_event));
633 } 643 }
634 644
635 scoped_ptr<FrameEvent> playout_event(new FrameEvent()); 645 scoped_ptr<FrameEvent> playout_event(new FrameEvent());
636 playout_event->timestamp = receiver_clock_.NowTicks(); 646 playout_event->timestamp = receiver_clock_.NowTicks();
637 playout_event->type = FRAME_PLAYOUT; 647 playout_event->type = FRAME_PLAYOUT;
638 playout_event->media_type = VIDEO_EVENT; 648 playout_event->media_type = VIDEO_EVENT;
639 playout_event->rtp_timestamp = rtp_timestamp; 649 playout_event->rtp_timestamp = rtp_timestamp;
640 playout_event->frame_id = frame_id; 650 playout_event->frame_id = frame_id;
641 playout_event->delay_delta = base::TimeDelta::FromMilliseconds(100); 651 playout_event->delay_delta = base::TimeDelta::FromMilliseconds(100);
642 cast_environment_->logger()->DispatchFrameEvent(playout_event.Pass()); 652 cast_environment_->logger()->DispatchFrameEvent(std::move(playout_event));
643 653
644 StatsEventSubscriber::SimpleHistogram* histogram; 654 StatsEventSubscriber::SimpleHistogram* histogram;
645 scoped_ptr<base::ListValue> values; 655 scoped_ptr<base::ListValue> values;
646 656
647 histogram = subscriber_->GetHistogramForTesting( 657 histogram = subscriber_->GetHistogramForTesting(
648 StatsEventSubscriber::CAPTURE_LATENCY_MS_HISTO); 658 StatsEventSubscriber::CAPTURE_LATENCY_MS_HISTO);
649 ASSERT_TRUE(histogram); 659 ASSERT_TRUE(histogram);
650 values = histogram->GetHistogram().Pass(); 660 values = histogram->GetHistogram();
651 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "10-14", 10)); 661 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "10-14", 10));
652 662
653 histogram = subscriber_->GetHistogramForTesting( 663 histogram = subscriber_->GetHistogramForTesting(
654 StatsEventSubscriber::ENCODE_TIME_MS_HISTO); 664 StatsEventSubscriber::ENCODE_TIME_MS_HISTO);
655 ASSERT_TRUE(histogram); 665 ASSERT_TRUE(histogram);
656 values = histogram->GetHistogram().Pass(); 666 values = histogram->GetHistogram();
657 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "15-19", 10)); 667 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "15-19", 10));
658 668
659 histogram = subscriber_->GetHistogramForTesting( 669 histogram = subscriber_->GetHistogramForTesting(
660 StatsEventSubscriber::QUEUEING_LATENCY_MS_HISTO); 670 StatsEventSubscriber::QUEUEING_LATENCY_MS_HISTO);
661 ASSERT_TRUE(histogram); 671 ASSERT_TRUE(histogram);
662 values = histogram->GetHistogram().Pass(); 672 values = histogram->GetHistogram();
663 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "100-119", 1)); 673 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "100-119", 1));
664 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "200-219", 1)); 674 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "200-219", 1));
665 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "300-319", 1)); 675 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "300-319", 1));
666 676
667 histogram = subscriber_->GetHistogramForTesting( 677 histogram = subscriber_->GetHistogramForTesting(
668 StatsEventSubscriber::NETWORK_LATENCY_MS_HISTO); 678 StatsEventSubscriber::NETWORK_LATENCY_MS_HISTO);
669 ASSERT_TRUE(histogram); 679 ASSERT_TRUE(histogram);
670 values = histogram->GetHistogram().Pass(); 680 values = histogram->GetHistogram();
671 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "100-119", 1)); 681 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "100-119", 1));
672 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "200-219", 1)); 682 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "200-219", 1));
673 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "300-319", 1)); 683 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "300-319", 1));
674 684
675 histogram = subscriber_->GetHistogramForTesting( 685 histogram = subscriber_->GetHistogramForTesting(
676 StatsEventSubscriber::PACKET_LATENCY_MS_HISTO); 686 StatsEventSubscriber::PACKET_LATENCY_MS_HISTO);
677 ASSERT_TRUE(histogram); 687 ASSERT_TRUE(histogram);
678 values = histogram->GetHistogram().Pass(); 688 values = histogram->GetHistogram();
679 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "400-419", 3)); 689 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "400-419", 3));
680 690
681 histogram = subscriber_->GetHistogramForTesting( 691 histogram = subscriber_->GetHistogramForTesting(
682 StatsEventSubscriber::LATE_FRAME_MS_HISTO); 692 StatsEventSubscriber::LATE_FRAME_MS_HISTO);
683 ASSERT_TRUE(histogram); 693 ASSERT_TRUE(histogram);
684 values = histogram->GetHistogram().Pass(); 694 values = histogram->GetHistogram();
685 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "100-119", 1)); 695 EXPECT_TRUE(CheckHistogramHasValue(values.get(), "100-119", 1));
686 } 696 }
687 697
688 } // namespace cast 698 } // namespace cast
689 } // namespace media 699 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/logging/stats_event_subscriber.cc ('k') | media/cast/net/cast_transport_sender_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698