| 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 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 | 196 |
| 197 double bitrate; | 197 double bitrate; |
| 198 double latency; | 198 double latency; |
| 199 double percent_packet_drop; | 199 double percent_packet_drop; |
| 200 }; | 200 }; |
| 201 | 201 |
| 202 class RunOneBenchmark { | 202 class RunOneBenchmark { |
| 203 public: | 203 public: |
| 204 RunOneBenchmark() | 204 RunOneBenchmark() |
| 205 : start_time_(), | 205 : start_time_(), |
| 206 testing_clock_(base::TimeTicks() + |
| 207 base::TimeDelta::FromMilliseconds(kStartMillisecond)), |
| 206 task_runner_(new test::FakeSingleThreadTaskRunner(&testing_clock_)), | 208 task_runner_(new test::FakeSingleThreadTaskRunner(&testing_clock_)), |
| 207 testing_clock_sender_(new test::SkewedTickClock(&testing_clock_)), | 209 testing_clock_sender_(new test::SkewedTickClock(&testing_clock_)), |
| 208 task_runner_sender_( | 210 task_runner_sender_( |
| 209 new test::SkewedSingleThreadTaskRunner(task_runner_)), | 211 new test::SkewedSingleThreadTaskRunner(task_runner_)), |
| 210 testing_clock_receiver_(new test::SkewedTickClock(&testing_clock_)), | 212 testing_clock_receiver_(new test::SkewedTickClock(&testing_clock_)), |
| 211 task_runner_receiver_( | 213 task_runner_receiver_( |
| 212 new test::SkewedSingleThreadTaskRunner(task_runner_)), | 214 new test::SkewedSingleThreadTaskRunner(task_runner_)), |
| 213 cast_environment_sender_(new CastEnvironment( | 215 cast_environment_sender_(new CastEnvironment( |
| 214 scoped_ptr<base::TickClock>(testing_clock_sender_), | 216 scoped_ptr<base::TickClock>(testing_clock_sender_), |
| 215 task_runner_sender_, | 217 task_runner_sender_, |
| 216 task_runner_sender_, | 218 task_runner_sender_, |
| 217 task_runner_sender_)), | 219 task_runner_sender_)), |
| 218 cast_environment_receiver_(new CastEnvironment( | 220 cast_environment_receiver_(new CastEnvironment( |
| 219 scoped_ptr<base::TickClock>(testing_clock_receiver_), | 221 scoped_ptr<base::TickClock>(testing_clock_receiver_), |
| 220 task_runner_receiver_, | 222 task_runner_receiver_, |
| 221 task_runner_receiver_, | 223 task_runner_receiver_, |
| 222 task_runner_receiver_)), | 224 task_runner_receiver_)), |
| 223 receiver_to_sender_(cast_environment_receiver_), | 225 receiver_to_sender_(cast_environment_receiver_), |
| 224 sender_to_receiver_(cast_environment_sender_), | 226 sender_to_receiver_(cast_environment_sender_), |
| 225 video_bytes_encoded_(0), | 227 video_bytes_encoded_(0), |
| 226 audio_bytes_encoded_(0), | 228 audio_bytes_encoded_(0), |
| 227 frames_sent_(0) { | 229 frames_sent_(0) {} |
| 228 testing_clock_.Advance( | |
| 229 base::TimeDelta::FromMilliseconds(kStartMillisecond)); | |
| 230 } | |
| 231 | 230 |
| 232 void Configure(Codec video_codec, | 231 void Configure(Codec video_codec, |
| 233 Codec audio_codec) { | 232 Codec audio_codec) { |
| 234 audio_sender_config_ = GetDefaultAudioSenderConfig(); | 233 audio_sender_config_ = GetDefaultAudioSenderConfig(); |
| 235 audio_sender_config_.min_playout_delay = | 234 audio_sender_config_.min_playout_delay = |
| 236 audio_sender_config_.max_playout_delay = | 235 audio_sender_config_.max_playout_delay = |
| 237 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs); | 236 base::TimeDelta::FromMilliseconds(kTargetPlayoutDelayMs); |
| 238 audio_sender_config_.codec = audio_codec; | 237 audio_sender_config_.codec = audio_codec; |
| 239 | 238 |
| 240 audio_receiver_config_ = GetDefaultAudioReceiverConfig(); | 239 audio_receiver_config_ = GetDefaultAudioReceiverConfig(); |
| (...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 717 media::cast::CastBenchmark benchmark; | 716 media::cast::CastBenchmark benchmark; |
| 718 if (getenv("PROFILE_FILE")) { | 717 if (getenv("PROFILE_FILE")) { |
| 719 std::string profile_file(getenv("PROFILE_FILE")); | 718 std::string profile_file(getenv("PROFILE_FILE")); |
| 720 base::debug::StartProfiling(profile_file); | 719 base::debug::StartProfiling(profile_file); |
| 721 benchmark.Run(); | 720 benchmark.Run(); |
| 722 base::debug::StopProfiling(); | 721 base::debug::StopProfiling(); |
| 723 } else { | 722 } else { |
| 724 benchmark.Run(); | 723 benchmark.Run(); |
| 725 } | 724 } |
| 726 } | 725 } |
| OLD | NEW |