| 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 |