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

Side by Side Diff: media/cast/sender/video_sender_unittest.cc

Issue 439863003: Cast: Use fixed bitrate and set it once for hardware encoder (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments Created 6 years, 4 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.cc ('k') | media/cast/test/fake_video_encode_accelerator.h » ('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 #include <stdint.h> 5 #include <stdint.h>
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 video_config.min_bitrate = 1000000; 167 video_config.min_bitrate = 1000000;
168 video_config.start_bitrate = 1000000; 168 video_config.start_bitrate = 1000000;
169 video_config.max_qp = 56; 169 video_config.max_qp = 56;
170 video_config.min_qp = 0; 170 video_config.min_qp = 0;
171 video_config.max_frame_rate = 30; 171 video_config.max_frame_rate = 30;
172 video_config.max_number_of_video_buffers_used = 1; 172 video_config.max_number_of_video_buffers_used = 1;
173 video_config.codec = CODEC_VIDEO_VP8; 173 video_config.codec = CODEC_VIDEO_VP8;
174 174
175 if (external) { 175 if (external) {
176 scoped_ptr<VideoEncodeAccelerator> fake_vea( 176 scoped_ptr<VideoEncodeAccelerator> fake_vea(
177 new test::FakeVideoEncodeAccelerator(task_runner_)); 177 new test::FakeVideoEncodeAccelerator(task_runner_,
178 &stored_bitrates_));
178 video_sender_.reset( 179 video_sender_.reset(
179 new PeerVideoSender(cast_environment_, 180 new PeerVideoSender(cast_environment_,
180 video_config, 181 video_config,
181 base::Bind(&CreateVideoEncodeAccelerator, 182 base::Bind(&CreateVideoEncodeAccelerator,
182 task_runner_, 183 task_runner_,
183 base::Passed(&fake_vea)), 184 base::Passed(&fake_vea)),
184 base::Bind(&CreateSharedMemory), 185 base::Bind(&CreateSharedMemory),
185 transport_sender_.get())); 186 transport_sender_.get()));
186 } else { 187 } else {
187 video_sender_.reset( 188 video_sender_.reset(
(...skipping 26 matching lines...) Expand all
214 215
215 void RunTasks(int during_ms) { 216 void RunTasks(int during_ms) {
216 task_runner_->Sleep(base::TimeDelta::FromMilliseconds(during_ms)); 217 task_runner_->Sleep(base::TimeDelta::FromMilliseconds(during_ms));
217 } 218 }
218 219
219 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. 220 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
220 TestPacketSender transport_; 221 TestPacketSender transport_;
221 scoped_ptr<CastTransportSenderImpl> transport_sender_; 222 scoped_ptr<CastTransportSenderImpl> transport_sender_;
222 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; 223 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
223 scoped_ptr<PeerVideoSender> video_sender_; 224 scoped_ptr<PeerVideoSender> video_sender_;
225 std::vector<uint32> stored_bitrates_;
224 scoped_refptr<CastEnvironment> cast_environment_; 226 scoped_refptr<CastEnvironment> cast_environment_;
225 int last_pixel_value_; 227 int last_pixel_value_;
226 228
227 DISALLOW_COPY_AND_ASSIGN(VideoSenderTest); 229 DISALLOW_COPY_AND_ASSIGN(VideoSenderTest);
228 }; 230 };
229 231
230 TEST_F(VideoSenderTest, BuiltInEncoder) { 232 TEST_F(VideoSenderTest, BuiltInEncoder) {
231 InitEncoder(false); 233 InitEncoder(false);
232 scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame(); 234 scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame();
233 235
234 const base::TimeTicks capture_time = testing_clock_->NowTicks(); 236 const base::TimeTicks capture_time = testing_clock_->NowTicks();
235 video_sender_->InsertRawVideoFrame(video_frame, capture_time); 237 video_sender_->InsertRawVideoFrame(video_frame, capture_time);
236 238
237 task_runner_->RunTasks(); 239 task_runner_->RunTasks();
238 EXPECT_LE(1, transport_.number_of_rtp_packets()); 240 EXPECT_LE(1, transport_.number_of_rtp_packets());
239 EXPECT_LE(1, transport_.number_of_rtcp_packets()); 241 EXPECT_LE(1, transport_.number_of_rtcp_packets());
240 } 242 }
241 243
242 TEST_F(VideoSenderTest, ExternalEncoder) { 244 TEST_F(VideoSenderTest, ExternalEncoder) {
243 InitEncoder(true); 245 InitEncoder(true);
244 task_runner_->RunTasks(); 246 task_runner_->RunTasks();
245 247
246 scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame(); 248 scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame();
247 249
248 const base::TimeTicks capture_time = testing_clock_->NowTicks(); 250 const base::TimeTicks capture_time = testing_clock_->NowTicks();
249 video_sender_->InsertRawVideoFrame(video_frame, capture_time); 251 video_sender_->InsertRawVideoFrame(video_frame, capture_time);
252 task_runner_->RunTasks();
253 video_sender_->InsertRawVideoFrame(video_frame, capture_time);
254 task_runner_->RunTasks();
255 video_sender_->InsertRawVideoFrame(video_frame, capture_time);
256 task_runner_->RunTasks();
250 257
251 task_runner_->RunTasks(); 258 // Fixed bitrate is used for external encoder. Bitrate is only once
259 // to the encoder.
260 EXPECT_EQ(1u, stored_bitrates_.size());
252 261
253 // We need to run the task to cleanup the GPU instance. 262 // We need to run the task to cleanup the GPU instance.
254 video_sender_.reset(NULL); 263 video_sender_.reset(NULL);
255 task_runner_->RunTasks(); 264 task_runner_->RunTasks();
256 } 265 }
257 266
258 TEST_F(VideoSenderTest, RtcpTimer) { 267 TEST_F(VideoSenderTest, RtcpTimer) {
259 InitEncoder(false); 268 InitEncoder(false);
260 269
261 scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame(); 270 scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame();
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 video_sender_->OnReceivedCastFeedback(cast_feedback); 525 video_sender_->OnReceivedCastFeedback(cast_feedback);
517 526
518 transport_.SetPause(false); 527 transport_.SetPause(false);
519 RunTasks(33); 528 RunTasks(33);
520 // Only one packet should be retransmitted. 529 // Only one packet should be retransmitted.
521 EXPECT_EQ(1, transport_.number_of_rtp_packets()); 530 EXPECT_EQ(1, transport_.number_of_rtp_packets());
522 } 531 }
523 532
524 } // namespace cast 533 } // namespace cast
525 } // namespace media 534 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/sender/video_sender.cc ('k') | media/cast/test/fake_video_encode_accelerator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698