| 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 // This program benchmarks the theoretical throughput of the cast library. | 5 // This program benchmarks the theoretical throughput of the cast library. | 
| 6 // It runs using a fake clock, simulated network and fake codecs. This allows | 6 // It runs using a fake clock, simulated network and fake codecs. This allows | 
| 7 // tests to run much faster than real time. | 7 // tests to run much faster than real time. | 
| 8 // To run the program, run: | 8 // To run the program, run: | 
| 9 // $ ./out/Release/cast_benchmarks | tee benchmarkoutput.asc | 9 // $ ./out/Release/cast_benchmarks | tee benchmarkoutput.asc | 
| 10 // This may take a while, when it is done, you can view the data with | 10 // This may take a while, when it is done, you can view the data with | 
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 251             base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs); | 251             base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs); | 
| 252     video_sender_config_.max_bitrate = 4000000; | 252     video_sender_config_.max_bitrate = 4000000; | 
| 253     video_sender_config_.min_bitrate = 4000000; | 253     video_sender_config_.min_bitrate = 4000000; | 
| 254     video_sender_config_.start_bitrate = 4000000; | 254     video_sender_config_.start_bitrate = 4000000; | 
| 255     video_sender_config_.codec = video_codec; | 255     video_sender_config_.codec = video_codec; | 
| 256 | 256 | 
| 257     video_receiver_config_ = GetDefaultVideoReceiverConfig(); | 257     video_receiver_config_ = GetDefaultVideoReceiverConfig(); | 
| 258     video_receiver_config_.rtp_max_delay_ms = kTargetPlayoutDelayMs; | 258     video_receiver_config_.rtp_max_delay_ms = kTargetPlayoutDelayMs; | 
| 259     video_receiver_config_.codec = video_codec; | 259     video_receiver_config_.codec = video_codec; | 
| 260 | 260 | 
| 261     frame_duration_ = base::TimeDelta::FromSeconds(1) / | 261     DCHECK_GT(video_sender_config_.max_frame_rate, 0); | 
| 262         video_sender_config_.max_frame_rate; | 262     frame_duration_ = base::TimeDelta::FromSecondsD( | 
|  | 263         1.0 / video_sender_config_.max_frame_rate); | 
| 263   } | 264   } | 
| 264 | 265 | 
| 265   void SetSenderClockSkew(double skew, base::TimeDelta offset) { | 266   void SetSenderClockSkew(double skew, base::TimeDelta offset) { | 
| 266     testing_clock_sender_->SetSkew(skew, offset); | 267     testing_clock_sender_->SetSkew(skew, offset); | 
| 267     task_runner_sender_->SetSkew(1.0 / skew); | 268     task_runner_sender_->SetSkew(1.0 / skew); | 
| 268   } | 269   } | 
| 269 | 270 | 
| 270   void SetReceiverClockSkew(double skew, base::TimeDelta offset) { | 271   void SetReceiverClockSkew(double skew, base::TimeDelta offset) { | 
| 271     testing_clock_receiver_->SetSkew(skew, offset); | 272     testing_clock_receiver_->SetSkew(skew, offset); | 
| 272     task_runner_receiver_->SetSkew(1.0 / skew); | 273     task_runner_receiver_->SetSkew(1.0 / skew); | 
| 273   } | 274   } | 
| 274 | 275 | 
| 275   void Create(const MeasuringPoint& p); | 276   void Create(const MeasuringPoint& p); | 
| 276 | 277 | 
| 277   void ReceivePacket(std::unique_ptr<Packet> packet) { | 278   void ReceivePacket(std::unique_ptr<Packet> packet) { | 
| 278     cast_receiver_->ReceivePacket(std::move(packet)); | 279     cast_receiver_->ReceivePacket(std::move(packet)); | 
| 279   } | 280   } | 
| 280 | 281 | 
| 281   virtual ~RunOneBenchmark() { | 282   virtual ~RunOneBenchmark() { | 
| 282     cast_sender_.reset(); | 283     cast_sender_.reset(); | 
| 283     cast_receiver_.reset(); | 284     cast_receiver_.reset(); | 
| 284     task_runner_->RunTasks(); | 285     task_runner_->RunTasks(); | 
| 285   } | 286   } | 
| 286 | 287 | 
| 287   base::TimeDelta VideoTimestamp(int frame_number) { | 288   base::TimeDelta VideoTimestamp(int frame_number) { | 
| 288     return (frame_number * base::TimeDelta::FromSeconds(1)) / | 289     return frame_number * base::TimeDelta::FromSecondsD( | 
| 289         video_sender_config_.max_frame_rate; | 290                               1.0 / video_sender_config_.max_frame_rate); | 
| 290   } | 291   } | 
| 291 | 292 | 
| 292   void SendFakeVideoFrame() { | 293   void SendFakeVideoFrame() { | 
| 293     // NB: Blackframe with timestamp | 294     // NB: Blackframe with timestamp | 
| 294     cast_sender_->video_frame_input()->InsertRawVideoFrame( | 295     cast_sender_->video_frame_input()->InsertRawVideoFrame( | 
| 295         media::VideoFrame::CreateColorFrame(gfx::Size(2, 2), | 296         media::VideoFrame::CreateColorFrame(gfx::Size(2, 2), | 
| 296         0x00, 0x80, 0x80, VideoTimestamp(frames_sent_)), | 297         0x00, 0x80, 0x80, VideoTimestamp(frames_sent_)), | 
| 297         testing_clock_sender_->NowTicks()); | 298         testing_clock_sender_->NowTicks()); | 
| 298     frames_sent_++; | 299     frames_sent_++; | 
| 299   } | 300   } | 
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 403 | 404 | 
| 404   bool SimpleGood() { | 405   bool SimpleGood() { | 
| 405     return frames_lost() <= 1 && late_frames() <= 1 && | 406     return frames_lost() <= 1 && late_frames() <= 1 && | 
| 406            video_bandwidth() > desired_video_bitrate() * 0.8 && | 407            video_bandwidth() > desired_video_bitrate() * 0.8 && | 
| 407            video_bandwidth() < desired_video_bitrate() * 1.2; | 408            video_bandwidth() < desired_video_bitrate() * 1.2; | 
| 408   } | 409   } | 
| 409 | 410 | 
| 410  private: | 411  private: | 
| 411   FrameReceiverConfig audio_receiver_config_; | 412   FrameReceiverConfig audio_receiver_config_; | 
| 412   FrameReceiverConfig video_receiver_config_; | 413   FrameReceiverConfig video_receiver_config_; | 
| 413   AudioSenderConfig audio_sender_config_; | 414   FrameSenderConfig audio_sender_config_; | 
| 414   VideoSenderConfig video_sender_config_; | 415   FrameSenderConfig video_sender_config_; | 
| 415 | 416 | 
| 416   base::TimeTicks start_time_; | 417   base::TimeTicks start_time_; | 
| 417 | 418 | 
| 418   // These run in "test time" | 419   // These run in "test time" | 
| 419   base::SimpleTestTickClock testing_clock_; | 420   base::SimpleTestTickClock testing_clock_; | 
| 420   scoped_refptr<FakeSingleThreadTaskRunner> task_runner_; | 421   scoped_refptr<FakeSingleThreadTaskRunner> task_runner_; | 
| 421 | 422 | 
| 422   // These run on the sender timeline. | 423   // These run on the sender timeline. | 
| 423   test::SkewedTickClock* testing_clock_sender_; | 424   test::SkewedTickClock* testing_clock_sender_; | 
| 424   scoped_refptr<test::SkewedSingleThreadTaskRunner> task_runner_sender_; | 425   scoped_refptr<test::SkewedSingleThreadTaskRunner> task_runner_sender_; | 
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 727   media::cast::CastBenchmark benchmark; | 728   media::cast::CastBenchmark benchmark; | 
| 728   if (getenv("PROFILE_FILE")) { | 729   if (getenv("PROFILE_FILE")) { | 
| 729     std::string profile_file(getenv("PROFILE_FILE")); | 730     std::string profile_file(getenv("PROFILE_FILE")); | 
| 730     base::debug::StartProfiling(profile_file); | 731     base::debug::StartProfiling(profile_file); | 
| 731     benchmark.Run(); | 732     benchmark.Run(); | 
| 732     base::debug::StopProfiling(); | 733     base::debug::StopProfiling(); | 
| 733   } else { | 734   } else { | 
| 734     benchmark.Run(); | 735     benchmark.Run(); | 
| 735   } | 736   } | 
| 736 } | 737 } | 
| OLD | NEW | 
|---|