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 #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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |