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

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

Issue 387933005: Cast: Refactor RTCP handling (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix test Created 6 years, 5 months 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 | Annotate | Revision Log
« no previous file with comments | « media/cast/sender/video_sender_unittest.cc ('k') | media/cast/test/end2end_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 } 82 }
83 83
84 void AudioInitializationStatus(CastInitializationStatus status) { 84 void AudioInitializationStatus(CastInitializationStatus status) {
85 EXPECT_EQ(STATUS_AUDIO_INITIALIZED, status); 85 EXPECT_EQ(STATUS_AUDIO_INITIALIZED, status);
86 } 86 }
87 87
88 void VideoInitializationStatus(CastInitializationStatus status) { 88 void VideoInitializationStatus(CastInitializationStatus status) {
89 EXPECT_EQ(STATUS_VIDEO_INITIALIZED, status); 89 EXPECT_EQ(STATUS_VIDEO_INITIALIZED, status);
90 } 90 }
91 91
92 void IgnoreRawEvents(const std::vector<PacketEvent>& packet_events) { 92 void IgnoreRawEvents(const std::vector<PacketEvent>& packet_events,
93 const std::vector<FrameEvent>& frame_events) {
93 } 94 }
94 95
95 } // namespace 96 } // namespace
96 97
97 // Wraps a CastTransportSender and records some statistics about 98 // Wraps a CastTransportSender and records some statistics about
98 // the data that goes through it. 99 // the data that goes through it.
99 class CastTransportSenderWrapper : public CastTransportSender { 100 class CastTransportSenderWrapper : public CastTransportSender {
100 public: 101 public:
101 // Takes ownership of |transport|. 102 // Takes ownership of |transport|.
102 void Init(CastTransportSender* transport, 103 void Init(CastTransportSender* transport,
103 uint64* encoded_video_bytes, 104 uint64* encoded_video_bytes,
104 uint64* encoded_audio_bytes) { 105 uint64* encoded_audio_bytes) {
105 transport_.reset(transport); 106 transport_.reset(transport);
106 encoded_video_bytes_ = encoded_video_bytes; 107 encoded_video_bytes_ = encoded_video_bytes;
107 encoded_audio_bytes_ = encoded_audio_bytes; 108 encoded_audio_bytes_ = encoded_audio_bytes;
108 } 109 }
109 110
110 virtual void InitializeAudio( 111 virtual void InitializeAudio(
111 const CastTransportRtpConfig& config) OVERRIDE { 112 const CastTransportRtpConfig& config,
112 transport_->InitializeAudio(config); 113 const RtcpCastMessageCallback& cast_message_cb,
114 const RtcpRttCallback& rtt_cb) OVERRIDE {
115 transport_->InitializeAudio(config, cast_message_cb, rtt_cb);
113 } 116 }
114 117
115 virtual void InitializeVideo( 118 virtual void InitializeVideo(
116 const CastTransportRtpConfig& config) OVERRIDE { 119 const CastTransportRtpConfig& config,
117 transport_->InitializeVideo(config); 120 const RtcpCastMessageCallback& cast_message_cb,
118 } 121 const RtcpRttCallback& rtt_cb) OVERRIDE {
119 122 transport_->InitializeVideo(config, cast_message_cb, rtt_cb);
120 virtual void SetPacketReceiver(
121 const PacketReceiverCallback& packet_receiver) OVERRIDE {
122 transport_->SetPacketReceiver(packet_receiver);
123 } 123 }
124 124
125 virtual void InsertCodedAudioFrame( 125 virtual void InsertCodedAudioFrame(
126 const EncodedFrame& audio_frame) OVERRIDE { 126 const EncodedFrame& audio_frame) OVERRIDE {
127 *encoded_audio_bytes_ += audio_frame.data.size(); 127 *encoded_audio_bytes_ += audio_frame.data.size();
128 transport_->InsertCodedAudioFrame(audio_frame); 128 transport_->InsertCodedAudioFrame(audio_frame);
129 } 129 }
130 130
131 virtual void InsertCodedVideoFrame( 131 virtual void InsertCodedVideoFrame(
132 const EncodedFrame& video_frame) OVERRIDE { 132 const EncodedFrame& video_frame) OVERRIDE {
133 *encoded_video_bytes_ += video_frame.data.size(); 133 *encoded_video_bytes_ += video_frame.data.size();
134 transport_->InsertCodedVideoFrame(video_frame); 134 transport_->InsertCodedVideoFrame(video_frame);
135 } 135 }
136 136
137 virtual void SendRtcpFromRtpSender(uint32 packet_type_flags, 137 virtual void SendSenderReport(
138 uint32 ntp_seconds, 138 uint32 ssrc,
139 uint32 ntp_fraction, 139 base::TimeTicks current_time,
140 uint32 rtp_timestamp, 140 uint32 current_time_as_rtp_timestamp) OVERRIDE {
141 const RtcpDlrrReportBlock& dlrr, 141 transport_->SendSenderReport(ssrc,
142 uint32 sending_ssrc, 142 current_time,
143 const std::string& c_name) OVERRIDE { 143 current_time_as_rtp_timestamp);
144 transport_->SendRtcpFromRtpSender(packet_type_flags,
145 ntp_seconds,
146 ntp_fraction,
147 rtp_timestamp,
148 dlrr,
149 sending_ssrc,
150 c_name);
151 } 144 }
152 145
153 // Retransmission request. 146 // Retransmission request.
154 virtual void ResendPackets( 147 virtual void ResendPackets(
155 bool is_audio, 148 bool is_audio,
156 const MissingFramesAndPacketsMap& missing_packets, 149 const MissingFramesAndPacketsMap& missing_packets,
157 bool cancel_rtx_if_not_in_list, 150 bool cancel_rtx_if_not_in_list,
158 base::TimeDelta dedupe_window) OVERRIDE { 151 base::TimeDelta dedupe_window) OVERRIDE {
159 transport_->ResendPackets( 152 transport_->ResendPackets(
160 is_audio, missing_packets, cancel_rtx_if_not_in_list, dedupe_window); 153 is_audio, missing_packets, cancel_rtx_if_not_in_list, dedupe_window);
161 } 154 }
162 155
156 virtual PacketReceiverCallback PacketReceiverForTesting() OVERRIDE {
157 return transport_->PacketReceiverForTesting();
158 }
159
163 private: 160 private:
164 scoped_ptr<CastTransportSender> transport_; 161 scoped_ptr<CastTransportSender> transport_;
165 uint64* encoded_video_bytes_; 162 uint64* encoded_video_bytes_;
166 uint64* encoded_audio_bytes_; 163 uint64* encoded_audio_bytes_;
167 }; 164 };
168 165
169 struct MeasuringPoint { 166 struct MeasuringPoint {
170 MeasuringPoint(double bitrate_, double latency_, double percent_packet_drop_) 167 MeasuringPoint(double bitrate_, double latency_, double percent_packet_drop_)
171 : bitrate(bitrate_), 168 : bitrate(bitrate_),
172 latency(latency_), 169 latency(latency_),
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 testing_clock_receiver_->SetSkew(skew, offset); 288 testing_clock_receiver_->SetSkew(skew, offset);
292 task_runner_receiver_->SetSkew(1.0 / skew); 289 task_runner_receiver_->SetSkew(1.0 / skew);
293 } 290 }
294 291
295 void Create(const MeasuringPoint& p) { 292 void Create(const MeasuringPoint& p) {
296 cast_receiver_ = CastReceiver::Create(cast_environment_receiver_, 293 cast_receiver_ = CastReceiver::Create(cast_environment_receiver_,
297 audio_receiver_config_, 294 audio_receiver_config_,
298 video_receiver_config_, 295 video_receiver_config_,
299 &receiver_to_sender_); 296 &receiver_to_sender_);
300 net::IPEndPoint dummy_endpoint; 297 net::IPEndPoint dummy_endpoint;
301 transport_sender_.Init(new CastTransportSenderImpl( 298 transport_sender_.Init(
302 NULL, 299 new CastTransportSenderImpl(
303 testing_clock_sender_, 300 NULL,
304 dummy_endpoint, 301 testing_clock_sender_,
305 base::Bind(&UpdateCastTransportStatus), 302 dummy_endpoint,
306 base::Bind(&IgnoreRawEvents), 303 base::Bind(&UpdateCastTransportStatus),
307 base::TimeDelta::FromSeconds(1), 304 base::Bind(&IgnoreRawEvents),
308 task_runner_sender_, 305 base::TimeDelta::FromSeconds(1),
309 &sender_to_receiver_), 306 task_runner_sender_,
310 &video_bytes_encoded_, 307 &sender_to_receiver_),
311 &audio_bytes_encoded_); 308 &video_bytes_encoded_,
309 &audio_bytes_encoded_);
312 310
313 cast_sender_ = 311 cast_sender_ =
314 CastSender::Create(cast_environment_sender_, &transport_sender_); 312 CastSender::Create(cast_environment_sender_, &transport_sender_);
315 313
316 // Initializing audio and video senders. 314 // Initializing audio and video senders.
317 cast_sender_->InitializeAudio(audio_sender_config_, 315 cast_sender_->InitializeAudio(audio_sender_config_,
318 base::Bind(&AudioInitializationStatus)); 316 base::Bind(&AudioInitializationStatus));
319 cast_sender_->InitializeVideo(video_sender_config_, 317 cast_sender_->InitializeVideo(video_sender_config_,
320 base::Bind(&VideoInitializationStatus), 318 base::Bind(&VideoInitializationStatus),
321 CreateDefaultVideoEncodeAcceleratorCallback(), 319 CreateDefaultVideoEncodeAcceleratorCallback(),
322 CreateDefaultVideoEncodeMemoryCallback()); 320 CreateDefaultVideoEncodeMemoryCallback());
323 321
324 receiver_to_sender_.Initialize( 322 receiver_to_sender_.Initialize(
325 CreateSimplePipe(p).Pass(), cast_sender_->packet_receiver(), 323 CreateSimplePipe(p).Pass(),
324 transport_sender_.PacketReceiverForTesting(),
326 task_runner_, &testing_clock_); 325 task_runner_, &testing_clock_);
327 sender_to_receiver_.Initialize( 326 sender_to_receiver_.Initialize(
328 CreateSimplePipe(p).Pass(), cast_receiver_->packet_receiver(), 327 CreateSimplePipe(p).Pass(), cast_receiver_->packet_receiver(),
329 task_runner_, &testing_clock_); 328 task_runner_, &testing_clock_);
330 } 329 }
331 330
332 virtual ~RunOneBenchmark() { 331 virtual ~RunOneBenchmark() {
333 cast_sender_.reset(); 332 cast_sender_.reset();
334 cast_receiver_.reset(); 333 cast_receiver_.reset();
335 task_runner_->RunTasks(); 334 task_runner_->RunTasks();
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 media::cast::CastBenchmark benchmark; 706 media::cast::CastBenchmark benchmark;
708 if (getenv("PROFILE_FILE")) { 707 if (getenv("PROFILE_FILE")) {
709 std::string profile_file(getenv("PROFILE_FILE")); 708 std::string profile_file(getenv("PROFILE_FILE"));
710 base::debug::StartProfiling(profile_file); 709 base::debug::StartProfiling(profile_file);
711 benchmark.Run(); 710 benchmark.Run();
712 base::debug::StopProfiling(); 711 base::debug::StopProfiling();
713 } else { 712 } else {
714 benchmark.Run(); 713 benchmark.Run();
715 } 714 }
716 } 715 }
OLDNEW
« no previous file with comments | « media/cast/sender/video_sender_unittest.cc ('k') | media/cast/test/end2end_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698