OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 DISALLOW_COPY_AND_ASSIGN(TestPacketSender); | 83 DISALLOW_COPY_AND_ASSIGN(TestPacketSender); |
84 }; | 84 }; |
85 | 85 |
86 class PeerVideoSender : public VideoSender { | 86 class PeerVideoSender : public VideoSender { |
87 public: | 87 public: |
88 PeerVideoSender( | 88 PeerVideoSender( |
89 scoped_refptr<CastEnvironment> cast_environment, | 89 scoped_refptr<CastEnvironment> cast_environment, |
90 const VideoSenderConfig& video_config, | 90 const VideoSenderConfig& video_config, |
91 const CreateVideoEncodeAcceleratorCallback& create_vea_cb, | 91 const CreateVideoEncodeAcceleratorCallback& create_vea_cb, |
92 const CreateVideoEncodeMemoryCallback& create_video_encode_mem_cb, | 92 const CreateVideoEncodeMemoryCallback& create_video_encode_mem_cb, |
93 const CastInitializationCallback& cast_initialization_cb, | |
94 transport::CastTransportSender* const transport_sender) | 93 transport::CastTransportSender* const transport_sender) |
95 : VideoSender(cast_environment, | 94 : VideoSender(cast_environment, |
96 video_config, | 95 video_config, |
97 create_vea_cb, | 96 create_vea_cb, |
98 create_video_encode_mem_cb, | 97 create_video_encode_mem_cb, |
99 cast_initialization_cb, | |
100 transport_sender) {} | 98 transport_sender) {} |
101 using VideoSender::OnReceivedCastFeedback; | 99 using VideoSender::OnReceivedCastFeedback; |
102 }; | 100 }; |
103 } // namespace | 101 } // namespace |
104 | 102 |
105 class VideoSenderTest : public ::testing::Test { | 103 class VideoSenderTest : public ::testing::Test { |
106 protected: | 104 protected: |
107 VideoSenderTest() { | 105 VideoSenderTest() { |
108 testing_clock_ = new base::SimpleTestTickClock(); | 106 testing_clock_ = new base::SimpleTestTickClock(); |
109 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); | 107 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 if (external) { | 155 if (external) { |
158 scoped_ptr<VideoEncodeAccelerator> fake_vea( | 156 scoped_ptr<VideoEncodeAccelerator> fake_vea( |
159 new test::FakeVideoEncodeAccelerator(task_runner_)); | 157 new test::FakeVideoEncodeAccelerator(task_runner_)); |
160 video_sender_.reset( | 158 video_sender_.reset( |
161 new PeerVideoSender(cast_environment_, | 159 new PeerVideoSender(cast_environment_, |
162 video_config, | 160 video_config, |
163 base::Bind(&CreateVideoEncodeAccelerator, | 161 base::Bind(&CreateVideoEncodeAccelerator, |
164 task_runner_, | 162 task_runner_, |
165 base::Passed(&fake_vea)), | 163 base::Passed(&fake_vea)), |
166 base::Bind(&CreateSharedMemory), | 164 base::Bind(&CreateSharedMemory), |
167 base::Bind(&VideoSenderTest::InitializationResult, | |
168 base::Unretained(this)), | |
169 transport_sender_.get())); | 165 transport_sender_.get())); |
170 } else { | 166 } else { |
171 video_sender_.reset( | 167 video_sender_.reset( |
172 new PeerVideoSender(cast_environment_, | 168 new PeerVideoSender(cast_environment_, |
173 video_config, | 169 video_config, |
174 CreateDefaultVideoEncodeAcceleratorCallback(), | 170 CreateDefaultVideoEncodeAcceleratorCallback(), |
175 CreateDefaultVideoEncodeMemoryCallback(), | 171 CreateDefaultVideoEncodeMemoryCallback(), |
176 base::Bind(&VideoSenderTest::InitializationResult, | |
177 base::Unretained(this)), | |
178 transport_sender_.get())); | 172 transport_sender_.get())); |
179 } | 173 } |
| 174 ASSERT_EQ(STATUS_VIDEO_INITIALIZED, video_sender_->InitializationResult()); |
180 } | 175 } |
181 | 176 |
182 scoped_refptr<media::VideoFrame> GetNewVideoFrame() { | 177 scoped_refptr<media::VideoFrame> GetNewVideoFrame() { |
183 gfx::Size size(kWidth, kHeight); | 178 gfx::Size size(kWidth, kHeight); |
184 scoped_refptr<media::VideoFrame> video_frame = | 179 scoped_refptr<media::VideoFrame> video_frame = |
185 media::VideoFrame::CreateFrame( | 180 media::VideoFrame::CreateFrame( |
186 VideoFrame::I420, size, gfx::Rect(size), size, base::TimeDelta()); | 181 VideoFrame::I420, size, gfx::Rect(size), size, base::TimeDelta()); |
187 PopulateVideoFrame(video_frame, kPixelValue); | 182 PopulateVideoFrame(video_frame, kPixelValue); |
188 return video_frame; | 183 return video_frame; |
189 } | 184 } |
190 | 185 |
191 void RunTasks(int during_ms) { | 186 void RunTasks(int during_ms) { |
192 for (int i = 0; i < during_ms; ++i) { | 187 for (int i = 0; i < during_ms; ++i) { |
193 // Call process the timers every 1 ms. | 188 // Call process the timers every 1 ms. |
194 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(1)); | 189 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(1)); |
195 task_runner_->RunTasks(); | 190 task_runner_->RunTasks(); |
196 } | 191 } |
197 } | 192 } |
198 | 193 |
199 void InitializationResult(CastInitializationStatus result) { | |
200 EXPECT_EQ(STATUS_VIDEO_INITIALIZED, result); | |
201 } | |
202 | |
203 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. | 194 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
204 TestPacketSender transport_; | 195 TestPacketSender transport_; |
205 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; | 196 scoped_ptr<transport::CastTransportSenderImpl> transport_sender_; |
206 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 197 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
207 scoped_ptr<PeerVideoSender> video_sender_; | 198 scoped_ptr<PeerVideoSender> video_sender_; |
208 scoped_refptr<CastEnvironment> cast_environment_; | 199 scoped_refptr<CastEnvironment> cast_environment_; |
209 | 200 |
210 DISALLOW_COPY_AND_ASSIGN(VideoSenderTest); | 201 DISALLOW_COPY_AND_ASSIGN(VideoSenderTest); |
211 }; | 202 }; |
212 | 203 |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 // Empty the pipeline. | 353 // Empty the pipeline. |
363 RunTasks(100); | 354 RunTasks(100); |
364 // Should have sent at least 7 packets. | 355 // Should have sent at least 7 packets. |
365 EXPECT_LE( | 356 EXPECT_LE( |
366 7, | 357 7, |
367 transport_.number_of_rtp_packets() + transport_.number_of_rtcp_packets()); | 358 transport_.number_of_rtp_packets() + transport_.number_of_rtcp_packets()); |
368 } | 359 } |
369 | 360 |
370 } // namespace cast | 361 } // namespace cast |
371 } // namespace media | 362 } // namespace media |
OLD | NEW |