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

Side by Side Diff: media/cast/test/simulator.cc

Issue 765643006: Cast: Make receiver use cast_transport (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix end2end test Created 6 years 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 // Simulate end to end streaming. 5 // Simulate end to end streaming.
6 // 6 //
7 // Input: 7 // Input:
8 // --source= 8 // --source=
9 // WebM used as the source of video and audio frames. 9 // WebM used as the source of video and audio frames.
10 // --output= 10 // --output=
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 // Video receiver config. 380 // Video receiver config.
381 FrameReceiverConfig video_receiver_config = 381 FrameReceiverConfig video_receiver_config =
382 GetDefaultVideoReceiverConfig(); 382 GetDefaultVideoReceiverConfig();
383 video_receiver_config.rtp_max_delay_ms = 383 video_receiver_config.rtp_max_delay_ms =
384 video_sender_config.max_playout_delay.InMilliseconds(); 384 video_sender_config.max_playout_delay.InMilliseconds();
385 385
386 // Loopback transport. 386 // Loopback transport.
387 LoopBackTransport receiver_to_sender(receiver_env); 387 LoopBackTransport receiver_to_sender(receiver_env);
388 LoopBackTransport sender_to_receiver(sender_env); 388 LoopBackTransport sender_to_receiver(sender_env);
389 389
390 struct PacketProxy {
391 PacketProxy() : receiver(NULL) {}
392 void ReceivePacket(scoped_ptr<Packet> packet) {
393 if (receiver)
394 receiver->ReceivePacket(packet.Pass());
395 }
396 CastReceiver* receiver;
397 };
398
399 PacketProxy packet_proxy;
400
390 // Cast receiver. 401 // Cast receiver.
402 scoped_ptr<CastTransportSender> transport_receiver(
403 new CastTransportSenderImpl(
404 NULL,
405 &testing_clock,
406 net::IPEndPoint(),
407 net::IPEndPoint(),
408 make_scoped_ptr(new base::DictionaryValue),
409 base::Bind(&UpdateCastTransportStatus),
410 base::Bind(&LogTransportEvents, receiver_env),
411 base::TimeDelta::FromSeconds(1),
412 task_runner,
413 base::Bind(&PacketProxy::ReceivePacket,
414 base::Unretained(&packet_proxy)),
415 &receiver_to_sender));
391 scoped_ptr<CastReceiver> cast_receiver( 416 scoped_ptr<CastReceiver> cast_receiver(
392 CastReceiver::Create(receiver_env, 417 CastReceiver::Create(receiver_env,
393 audio_receiver_config, 418 audio_receiver_config,
394 video_receiver_config, 419 video_receiver_config,
395 &receiver_to_sender)); 420 transport_receiver.get()));
421
422 packet_proxy.receiver = cast_receiver.get();
396 423
397 // Cast sender and transport sender. 424 // Cast sender and transport sender.
398 scoped_ptr<CastTransportSender> transport_sender( 425 scoped_ptr<CastTransportSender> transport_sender(
399 new CastTransportSenderImpl( 426 new CastTransportSenderImpl(
400 NULL, 427 NULL,
401 &testing_clock, 428 &testing_clock,
402 net::IPEndPoint(), 429 net::IPEndPoint(),
430 net::IPEndPoint(),
403 make_scoped_ptr(new base::DictionaryValue), 431 make_scoped_ptr(new base::DictionaryValue),
404 base::Bind(&UpdateCastTransportStatus), 432 base::Bind(&UpdateCastTransportStatus),
405 base::Bind(&LogTransportEvents, sender_env), 433 base::Bind(&LogTransportEvents, sender_env),
406 base::TimeDelta::FromSeconds(1), 434 base::TimeDelta::FromSeconds(1),
407 task_runner, 435 task_runner,
436 PacketReceiverCallback(),
408 &sender_to_receiver)); 437 &sender_to_receiver));
409 scoped_ptr<CastSender> cast_sender( 438 scoped_ptr<CastSender> cast_sender(
410 CastSender::Create(sender_env, transport_sender.get())); 439 CastSender::Create(sender_env, transport_sender.get()));
411 440
412 // Initialize network simulation model. 441 // Initialize network simulation model.
413 const bool use_network_simulation = 442 const bool use_network_simulation =
414 model.type() == media::cast::proto::INTERRUPTED_POISSON_PROCESS; 443 model.type() == media::cast::proto::INTERRUPTED_POISSON_PROCESS;
415 scoped_ptr<test::InterruptedPoissonProcess> ipp; 444 scoped_ptr<test::InterruptedPoissonProcess> ipp;
416 if (use_network_simulation) { 445 if (use_network_simulation) {
417 LOG(INFO) << "Running Poisson based network simulation."; 446 LOG(INFO) << "Running Poisson based network simulation.";
418 const IPPModel& ipp_model = model.ipp(); 447 const IPPModel& ipp_model = model.ipp();
419 std::vector<double> average_rates(ipp_model.average_rate_size()); 448 std::vector<double> average_rates(ipp_model.average_rate_size());
420 std::copy(ipp_model.average_rate().begin(), 449 std::copy(ipp_model.average_rate().begin(),
421 ipp_model.average_rate().end(), 450 ipp_model.average_rate().end(),
422 average_rates.begin()); 451 average_rates.begin());
423 ipp.reset(new test::InterruptedPoissonProcess( 452 ipp.reset(new test::InterruptedPoissonProcess(
424 average_rates, 453 average_rates,
425 ipp_model.coef_burstiness(), ipp_model.coef_variance(), 0)); 454 ipp_model.coef_burstiness(), ipp_model.coef_variance(), 0));
426 receiver_to_sender.Initialize( 455 receiver_to_sender.Initialize(
427 ipp->NewBuffer(128 * 1024).Pass(), 456 ipp->NewBuffer(128 * 1024).Pass(),
428 transport_sender->PacketReceiverForTesting(), 457 transport_sender->PacketReceiverForTesting(),
429 task_runner, &testing_clock); 458 task_runner, &testing_clock);
430 sender_to_receiver.Initialize( 459 sender_to_receiver.Initialize(
431 ipp->NewBuffer(128 * 1024).Pass(), 460 ipp->NewBuffer(128 * 1024).Pass(),
432 cast_receiver->packet_receiver(), task_runner, 461 transport_receiver->PacketReceiverForTesting(), task_runner,
433 &testing_clock); 462 &testing_clock);
434 } else { 463 } else {
435 LOG(INFO) << "No network simulation."; 464 LOG(INFO) << "No network simulation.";
436 receiver_to_sender.Initialize( 465 receiver_to_sender.Initialize(
437 scoped_ptr<test::PacketPipe>(), 466 scoped_ptr<test::PacketPipe>(),
438 transport_sender->PacketReceiverForTesting(), 467 transport_sender->PacketReceiverForTesting(),
439 task_runner, &testing_clock); 468 task_runner, &testing_clock);
440 sender_to_receiver.Initialize( 469 sender_to_receiver.Initialize(
441 scoped_ptr<test::PacketPipe>(), 470 scoped_ptr<test::PacketPipe>(),
442 cast_receiver->packet_receiver(), task_runner, 471 transport_receiver->PacketReceiverForTesting(), task_runner,
443 &testing_clock); 472 &testing_clock);
444 } 473 }
445 474
446 // Initialize a fake media source and a tracker to encoded video frames. 475 // Initialize a fake media source and a tracker to encoded video frames.
447 const bool quality_test = !metrics_output_path.empty(); 476 const bool quality_test = !metrics_output_path.empty();
448 FakeMediaSource media_source(task_runner, 477 FakeMediaSource media_source(task_runner,
449 &testing_clock, 478 &testing_clock,
450 video_sender_config, 479 video_sender_config,
451 quality_test); 480 quality_test);
452 scoped_ptr<EncodedVideoFrameTracker> video_frame_tracker; 481 scoped_ptr<EncodedVideoFrameTracker> video_frame_tracker;
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 values.SetString("sim-id", sim_id); 765 values.SetString("sim-id", sim_id);
737 766
738 std::string extra_data; 767 std::string extra_data;
739 base::JSONWriter::Write(&values, &extra_data); 768 base::JSONWriter::Write(&values, &extra_data);
740 769
741 // Run. 770 // Run.
742 media::cast::RunSimulation(source_path, log_output_path, metrics_output_path, 771 media::cast::RunSimulation(source_path, log_output_path, metrics_output_path,
743 yuv_output_path, extra_data, model); 772 yuv_output_path, extra_data, model);
744 return 0; 773 return 0;
745 } 774 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698