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

Side by Side Diff: media/cast/test/cast_benchmarks.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 // 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 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 } 145 }
146 146
147 void ResendFrameForKickstart(uint32 ssrc, uint32 frame_id) override { 147 void ResendFrameForKickstart(uint32 ssrc, uint32 frame_id) override {
148 transport_->ResendFrameForKickstart(ssrc, frame_id); 148 transport_->ResendFrameForKickstart(ssrc, frame_id);
149 } 149 }
150 150
151 PacketReceiverCallback PacketReceiverForTesting() override { 151 PacketReceiverCallback PacketReceiverForTesting() override {
152 return transport_->PacketReceiverForTesting(); 152 return transport_->PacketReceiverForTesting();
153 } 153 }
154 154
155 void AddValidSsrc(uint32 ssrc) override {
156 return transport_->AddValidSsrc(ssrc);
157 }
158
159 void SendRtcpFromRtpReceiver(
160 uint32 ssrc,
161 uint32 sender_ssrc,
162 const RtcpTimeData& time_data,
163 const RtcpCastMessage* cast_message,
164 base::TimeDelta target_delay,
165 const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events,
166 const RtpReceiverStatistics* rtp_receiver_statistics) override {
167 return transport_->SendRtcpFromRtpReceiver(ssrc,
168 sender_ssrc,
169 time_data,
170 cast_message,
171 target_delay,
172 rtcp_events,
173 rtp_receiver_statistics);
174 }
175
155 private: 176 private:
156 scoped_ptr<CastTransportSender> transport_; 177 scoped_ptr<CastTransportSender> transport_;
157 uint32 audio_ssrc_, video_ssrc_; 178 uint32 audio_ssrc_, video_ssrc_;
158 uint64* encoded_video_bytes_; 179 uint64* encoded_video_bytes_;
159 uint64* encoded_audio_bytes_; 180 uint64* encoded_audio_bytes_;
160 }; 181 };
161 182
162 struct MeasuringPoint { 183 struct MeasuringPoint {
163 MeasuringPoint(double bitrate_, double latency_, double percent_packet_drop_) 184 MeasuringPoint(double bitrate_, double latency_, double percent_packet_drop_)
164 : bitrate(bitrate_), 185 : bitrate(bitrate_),
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 testing_clock_sender_->SetSkew(skew, offset); 300 testing_clock_sender_->SetSkew(skew, offset);
280 task_runner_sender_->SetSkew(1.0 / skew); 301 task_runner_sender_->SetSkew(1.0 / skew);
281 } 302 }
282 303
283 void SetReceiverClockSkew(double skew, base::TimeDelta offset) { 304 void SetReceiverClockSkew(double skew, base::TimeDelta offset) {
284 testing_clock_receiver_->SetSkew(skew, offset); 305 testing_clock_receiver_->SetSkew(skew, offset);
285 task_runner_receiver_->SetSkew(1.0 / skew); 306 task_runner_receiver_->SetSkew(1.0 / skew);
286 } 307 }
287 308
288 void Create(const MeasuringPoint& p) { 309 void Create(const MeasuringPoint& p) {
289 cast_receiver_ = CastReceiver::Create(cast_environment_receiver_,
290 audio_receiver_config_,
291 video_receiver_config_,
292 &receiver_to_sender_);
293 net::IPEndPoint dummy_endpoint; 310 net::IPEndPoint dummy_endpoint;
294 transport_sender_.Init( 311 transport_sender_.Init(
295 new CastTransportSenderImpl( 312 new CastTransportSenderImpl(
296 NULL, 313 NULL,
297 testing_clock_sender_, 314 testing_clock_sender_,
298 dummy_endpoint, 315 dummy_endpoint,
316 dummy_endpoint,
299 make_scoped_ptr(new base::DictionaryValue), 317 make_scoped_ptr(new base::DictionaryValue),
300 base::Bind(&UpdateCastTransportStatus), 318 base::Bind(&UpdateCastTransportStatus),
301 base::Bind(&IgnoreRawEvents), 319 base::Bind(&IgnoreRawEvents),
302 base::TimeDelta::FromSeconds(1), 320 base::TimeDelta::FromSeconds(1),
303 task_runner_sender_, 321 task_runner_sender_,
322 PacketReceiverCallback(),
304 &sender_to_receiver_), 323 &sender_to_receiver_),
305 &video_bytes_encoded_, 324 &video_bytes_encoded_,
306 &audio_bytes_encoded_); 325 &audio_bytes_encoded_);
307 326
327 transport_receiver_.reset(
328 new CastTransportSenderImpl(
329 NULL,
330 testing_clock_receiver_,
331 dummy_endpoint,
332 dummy_endpoint,
333 make_scoped_ptr(new base::DictionaryValue),
334 base::Bind(&UpdateCastTransportStatus),
335 base::Bind(&IgnoreRawEvents),
336 base::TimeDelta::FromSeconds(1),
337 task_runner_receiver_,
338 base::Bind(&RunOneBenchmark::ReceivePacket, base::Unretained(this)),
339 &receiver_to_sender_));
340
341 cast_receiver_ = CastReceiver::Create(cast_environment_receiver_,
342 audio_receiver_config_,
343 video_receiver_config_,
344 transport_receiver_.get());
345
308 cast_sender_ = 346 cast_sender_ =
309 CastSender::Create(cast_environment_sender_, &transport_sender_); 347 CastSender::Create(cast_environment_sender_, &transport_sender_);
310 348
311 // Initializing audio and video senders. 349 // Initializing audio and video senders.
312 cast_sender_->InitializeAudio(audio_sender_config_, 350 cast_sender_->InitializeAudio(audio_sender_config_,
313 base::Bind(&AudioInitializationStatus)); 351 base::Bind(&AudioInitializationStatus));
314 cast_sender_->InitializeVideo(video_sender_config_, 352 cast_sender_->InitializeVideo(video_sender_config_,
315 base::Bind(&VideoInitializationStatus), 353 base::Bind(&VideoInitializationStatus),
316 CreateDefaultVideoEncodeAcceleratorCallback(), 354 CreateDefaultVideoEncodeAcceleratorCallback(),
317 CreateDefaultVideoEncodeMemoryCallback()); 355 CreateDefaultVideoEncodeMemoryCallback());
318 356
319 receiver_to_sender_.Initialize( 357 receiver_to_sender_.Initialize(
320 CreateSimplePipe(p).Pass(), 358 CreateSimplePipe(p).Pass(),
321 transport_sender_.PacketReceiverForTesting(), 359 transport_sender_.PacketReceiverForTesting(),
322 task_runner_, &testing_clock_); 360 task_runner_, &testing_clock_);
323 sender_to_receiver_.Initialize( 361 sender_to_receiver_.Initialize(
324 CreateSimplePipe(p).Pass(), cast_receiver_->packet_receiver(), 362 CreateSimplePipe(p).Pass(),
363 transport_receiver_->PacketReceiverForTesting(),
325 task_runner_, &testing_clock_); 364 task_runner_, &testing_clock_);
326 } 365 }
327 366
367 void ReceivePacket(scoped_ptr<Packet> packet) {
368 cast_receiver_->ReceivePacket(packet.Pass());
369 }
370
328 virtual ~RunOneBenchmark() { 371 virtual ~RunOneBenchmark() {
329 cast_sender_.reset(); 372 cast_sender_.reset();
330 cast_receiver_.reset(); 373 cast_receiver_.reset();
331 task_runner_->RunTasks(); 374 task_runner_->RunTasks();
332 } 375 }
333 376
334 void SendFakeVideoFrame() { 377 void SendFakeVideoFrame() {
335 frames_sent_++; 378 frames_sent_++;
336 cast_sender_->video_frame_input()->InsertRawVideoFrame( 379 cast_sender_->video_frame_input()->InsertRawVideoFrame(
337 media::VideoFrame::CreateBlackFrame(gfx::Size(2, 2)), 380 media::VideoFrame::CreateBlackFrame(gfx::Size(2, 2)),
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 // These run on the receiver timeline. 511 // These run on the receiver timeline.
469 test::SkewedTickClock* testing_clock_receiver_; 512 test::SkewedTickClock* testing_clock_receiver_;
470 scoped_refptr<test::SkewedSingleThreadTaskRunner> task_runner_receiver_; 513 scoped_refptr<test::SkewedSingleThreadTaskRunner> task_runner_receiver_;
471 514
472 scoped_refptr<CastEnvironment> cast_environment_sender_; 515 scoped_refptr<CastEnvironment> cast_environment_sender_;
473 scoped_refptr<CastEnvironment> cast_environment_receiver_; 516 scoped_refptr<CastEnvironment> cast_environment_receiver_;
474 517
475 LoopBackTransport receiver_to_sender_; 518 LoopBackTransport receiver_to_sender_;
476 LoopBackTransport sender_to_receiver_; 519 LoopBackTransport sender_to_receiver_;
477 CastTransportSenderWrapper transport_sender_; 520 CastTransportSenderWrapper transport_sender_;
521 scoped_ptr<CastTransportSender> transport_receiver_;
478 uint64 video_bytes_encoded_; 522 uint64 video_bytes_encoded_;
479 uint64 audio_bytes_encoded_; 523 uint64 audio_bytes_encoded_;
480 524
481 scoped_ptr<CastReceiver> cast_receiver_; 525 scoped_ptr<CastReceiver> cast_receiver_;
482 scoped_ptr<CastSender> cast_sender_; 526 scoped_ptr<CastSender> cast_sender_;
483 527
484 int frames_sent_; 528 int frames_sent_;
485 double available_bitrate_; 529 double available_bitrate_;
486 std::vector<std::pair<base::TimeTicks, base::TimeTicks> > audio_ticks_; 530 std::vector<std::pair<base::TimeTicks, base::TimeTicks> > audio_ticks_;
487 std::vector<std::pair<base::TimeTicks, base::TimeTicks> > video_ticks_; 531 std::vector<std::pair<base::TimeTicks, base::TimeTicks> > video_ticks_;
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 media::cast::CastBenchmark benchmark; 747 media::cast::CastBenchmark benchmark;
704 if (getenv("PROFILE_FILE")) { 748 if (getenv("PROFILE_FILE")) {
705 std::string profile_file(getenv("PROFILE_FILE")); 749 std::string profile_file(getenv("PROFILE_FILE"));
706 base::debug::StartProfiling(profile_file); 750 base::debug::StartProfiling(profile_file);
707 benchmark.Run(); 751 benchmark.Run();
708 base::debug::StopProfiling(); 752 base::debug::StopProfiling();
709 } else { 753 } else {
710 benchmark.Run(); 754 benchmark.Run();
711 } 755 }
712 } 756 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698