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

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: 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) receiver->ReceivePacket(packet.Pass());
miu 2014/12/04 04:18:55 style nit: Need newline before start of then-claus
hubbe 2014/12/05 23:57:20 Done.
394 }
395 CastReceiver* receiver;
396 };
397
398 PacketProxy packet_proxy;
399
390 // Cast receiver. 400 // Cast receiver.
401 scoped_ptr<CastTransportSender> transport_receiver(
402 new CastTransportSenderImpl(
403 NULL,
404 &testing_clock,
405 net::IPEndPoint(),
406 net::IPEndPoint(),
407 make_scoped_ptr(new base::DictionaryValue),
408 base::Bind(&UpdateCastTransportStatus),
409 base::Bind(&LogTransportEvents, receiver_env),
410 base::TimeDelta::FromSeconds(1),
411 task_runner,
412 base::Bind(&PacketProxy::ReceivePacket,
413 base::Unretained(&packet_proxy)),
414 &receiver_to_sender));
391 scoped_ptr<CastReceiver> cast_receiver( 415 scoped_ptr<CastReceiver> cast_receiver(
392 CastReceiver::Create(receiver_env, 416 CastReceiver::Create(receiver_env,
393 audio_receiver_config, 417 audio_receiver_config,
394 video_receiver_config, 418 video_receiver_config,
395 &receiver_to_sender)); 419 transport_receiver.get()));
420
421 packet_proxy.receiver = cast_receiver.get();
396 422
397 // Cast sender and transport sender. 423 // Cast sender and transport sender.
398 scoped_ptr<CastTransportSender> transport_sender( 424 scoped_ptr<CastTransportSender> transport_sender(
399 new CastTransportSenderImpl( 425 new CastTransportSenderImpl(
400 NULL, 426 NULL,
401 &testing_clock, 427 &testing_clock,
402 net::IPEndPoint(), 428 net::IPEndPoint(),
429 net::IPEndPoint(),
403 make_scoped_ptr(new base::DictionaryValue), 430 make_scoped_ptr(new base::DictionaryValue),
404 base::Bind(&UpdateCastTransportStatus), 431 base::Bind(&UpdateCastTransportStatus),
405 base::Bind(&LogTransportEvents, sender_env), 432 base::Bind(&LogTransportEvents, sender_env),
406 base::TimeDelta::FromSeconds(1), 433 base::TimeDelta::FromSeconds(1),
407 task_runner, 434 task_runner,
435 PacketReceiverCallback(),
408 &sender_to_receiver)); 436 &sender_to_receiver));
409 scoped_ptr<CastSender> cast_sender( 437 scoped_ptr<CastSender> cast_sender(
410 CastSender::Create(sender_env, transport_sender.get())); 438 CastSender::Create(sender_env, transport_sender.get()));
411 439
412 // Initialize network simulation model. 440 // Initialize network simulation model.
413 const bool use_network_simulation = 441 const bool use_network_simulation =
414 model.type() == media::cast::proto::INTERRUPTED_POISSON_PROCESS; 442 model.type() == media::cast::proto::INTERRUPTED_POISSON_PROCESS;
415 scoped_ptr<test::InterruptedPoissonProcess> ipp; 443 scoped_ptr<test::InterruptedPoissonProcess> ipp;
416 if (use_network_simulation) { 444 if (use_network_simulation) {
417 LOG(INFO) << "Running Poisson based network simulation."; 445 LOG(INFO) << "Running Poisson based network simulation.";
418 const IPPModel& ipp_model = model.ipp(); 446 const IPPModel& ipp_model = model.ipp();
419 std::vector<double> average_rates(ipp_model.average_rate_size()); 447 std::vector<double> average_rates(ipp_model.average_rate_size());
420 std::copy(ipp_model.average_rate().begin(), 448 std::copy(ipp_model.average_rate().begin(),
421 ipp_model.average_rate().end(), 449 ipp_model.average_rate().end(),
422 average_rates.begin()); 450 average_rates.begin());
423 ipp.reset(new test::InterruptedPoissonProcess( 451 ipp.reset(new test::InterruptedPoissonProcess(
424 average_rates, 452 average_rates,
425 ipp_model.coef_burstiness(), ipp_model.coef_variance(), 0)); 453 ipp_model.coef_burstiness(), ipp_model.coef_variance(), 0));
426 receiver_to_sender.Initialize( 454 receiver_to_sender.Initialize(
427 ipp->NewBuffer(128 * 1024).Pass(), 455 ipp->NewBuffer(128 * 1024).Pass(),
428 transport_sender->PacketReceiverForTesting(), 456 transport_sender->PacketReceiverForTesting(),
429 task_runner, &testing_clock); 457 task_runner, &testing_clock);
430 sender_to_receiver.Initialize( 458 sender_to_receiver.Initialize(
431 ipp->NewBuffer(128 * 1024).Pass(), 459 ipp->NewBuffer(128 * 1024).Pass(),
432 cast_receiver->packet_receiver(), task_runner, 460 transport_receiver->PacketReceiverForTesting(), task_runner,
433 &testing_clock); 461 &testing_clock);
434 } else { 462 } else {
435 LOG(INFO) << "No network simulation."; 463 LOG(INFO) << "No network simulation.";
436 receiver_to_sender.Initialize( 464 receiver_to_sender.Initialize(
437 scoped_ptr<test::PacketPipe>(), 465 scoped_ptr<test::PacketPipe>(),
438 transport_sender->PacketReceiverForTesting(), 466 transport_sender->PacketReceiverForTesting(),
439 task_runner, &testing_clock); 467 task_runner, &testing_clock);
440 sender_to_receiver.Initialize( 468 sender_to_receiver.Initialize(
441 scoped_ptr<test::PacketPipe>(), 469 scoped_ptr<test::PacketPipe>(),
442 cast_receiver->packet_receiver(), task_runner, 470 transport_receiver->PacketReceiverForTesting(), task_runner,
443 &testing_clock); 471 &testing_clock);
444 } 472 }
445 473
446 // Initialize a fake media source and a tracker to encoded video frames. 474 // Initialize a fake media source and a tracker to encoded video frames.
447 const bool quality_test = !metrics_output_path.empty(); 475 const bool quality_test = !metrics_output_path.empty();
448 FakeMediaSource media_source(task_runner, 476 FakeMediaSource media_source(task_runner,
449 &testing_clock, 477 &testing_clock,
450 video_sender_config, 478 video_sender_config,
451 quality_test); 479 quality_test);
452 scoped_ptr<EncodedVideoFrameTracker> video_frame_tracker; 480 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); 764 values.SetString("sim-id", sim_id);
737 765
738 std::string extra_data; 766 std::string extra_data;
739 base::JSONWriter::Write(&values, &extra_data); 767 base::JSONWriter::Write(&values, &extra_data);
740 768
741 // Run. 769 // Run.
742 media::cast::RunSimulation(source_path, log_output_path, metrics_output_path, 770 media::cast::RunSimulation(source_path, log_output_path, metrics_output_path,
743 yuv_output_path, extra_data, model); 771 yuv_output_path, extra_data, model);
744 return 0; 772 return 0;
745 } 773 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698