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 <queue> | 5 #include <queue> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/test/launcher/unit_test_launcher.h" | 10 #include "base/test/launcher/unit_test_launcher.h" |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 virtual ~EndToEndFrameChecker() {} | 169 virtual ~EndToEndFrameChecker() {} |
170 | 170 |
171 FFmpegVideoDecoder decoder_; | 171 FFmpegVideoDecoder decoder_; |
172 std::queue<scoped_refptr<VideoFrame>> expectations_; | 172 std::queue<scoped_refptr<VideoFrame>> expectations_; |
173 int count_frames_checked_; | 173 int count_frames_checked_; |
174 | 174 |
175 DISALLOW_COPY_AND_ASSIGN(EndToEndFrameChecker); | 175 DISALLOW_COPY_AND_ASSIGN(EndToEndFrameChecker); |
176 }; | 176 }; |
177 | 177 |
178 void CreateFrameAndMemsetPlane(VideoFrameFactory* const video_frame_factory) { | 178 void CreateFrameAndMemsetPlane(VideoFrameFactory* const video_frame_factory) { |
179 auto video_frame = video_frame_factory->CreateFrame(base::TimeDelta()); | 179 const scoped_refptr<media::VideoFrame> video_frame = |
| 180 video_frame_factory->MaybeCreateFrame( |
| 181 gfx::Size(kVideoWidth, kVideoHeight), base::TimeDelta()); |
180 ASSERT_TRUE(video_frame.get()); | 182 ASSERT_TRUE(video_frame.get()); |
181 auto cv_pixel_buffer = video_frame->cv_pixel_buffer(); | 183 auto cv_pixel_buffer = video_frame->cv_pixel_buffer(); |
182 ASSERT_TRUE(cv_pixel_buffer); | 184 ASSERT_TRUE(cv_pixel_buffer); |
183 CVPixelBufferLockBaseAddress(cv_pixel_buffer, 0); | 185 CVPixelBufferLockBaseAddress(cv_pixel_buffer, 0); |
184 auto ptr = CVPixelBufferGetBaseAddressOfPlane(cv_pixel_buffer, 0); | 186 auto ptr = CVPixelBufferGetBaseAddressOfPlane(cv_pixel_buffer, 0); |
185 ASSERT_TRUE(ptr); | 187 ASSERT_TRUE(ptr); |
186 memset(ptr, 0xfe, CVPixelBufferGetBytesPerRowOfPlane(cv_pixel_buffer, 0) * | 188 memset(ptr, 0xfe, CVPixelBufferGetBytesPerRowOfPlane(cv_pixel_buffer, 0) * |
187 CVPixelBufferGetHeightOfPlane(cv_pixel_buffer, 0)); | 189 CVPixelBufferGetHeightOfPlane(cv_pixel_buffer, 0)); |
188 CVPixelBufferUnlockBaseAddress(cv_pixel_buffer, 0); | 190 CVPixelBufferUnlockBaseAddress(cv_pixel_buffer, 0); |
189 } | 191 } |
(...skipping 10 matching lines...) Expand all Loading... |
200 clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); | 202 clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); |
201 | 203 |
202 cast_environment_ = new CastEnvironment( | 204 cast_environment_ = new CastEnvironment( |
203 scoped_ptr<base::TickClock>(clock_).Pass(), | 205 scoped_ptr<base::TickClock>(clock_).Pass(), |
204 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(), | 206 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(), |
205 message_loop_.message_loop_proxy()); | 207 message_loop_.message_loop_proxy()); |
206 encoder_.reset(new H264VideoToolboxEncoder( | 208 encoder_.reset(new H264VideoToolboxEncoder( |
207 cast_environment_, | 209 cast_environment_, |
208 video_sender_config_, | 210 video_sender_config_, |
209 gfx::Size(kVideoWidth, kVideoHeight), | 211 gfx::Size(kVideoWidth, kVideoHeight), |
| 212 0u, |
210 base::Bind(&SaveOperationalStatus, &operational_status_))); | 213 base::Bind(&SaveOperationalStatus, &operational_status_))); |
211 message_loop_.RunUntilIdle(); | 214 message_loop_.RunUntilIdle(); |
212 EXPECT_EQ(STATUS_INITIALIZED, operational_status_); | 215 EXPECT_EQ(STATUS_INITIALIZED, operational_status_); |
213 } | 216 } |
214 | 217 |
215 void TearDown() override { | 218 void TearDown() override { |
216 encoder_.reset(); | 219 encoder_.reset(); |
217 message_loop_.RunUntilIdle(); | 220 message_loop_.RunUntilIdle(); |
218 } | 221 } |
219 | 222 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 message_loop_.RunUntilIdle(); | 300 message_loop_.RunUntilIdle(); |
298 | 301 |
299 EXPECT_EQ(5, checker->count_frames_checked()); | 302 EXPECT_EQ(5, checker->count_frames_checked()); |
300 } | 303 } |
301 #endif | 304 #endif |
302 | 305 |
303 TEST_F(H264VideoToolboxEncoderTest, CheckVideoFrameFactory) { | 306 TEST_F(H264VideoToolboxEncoderTest, CheckVideoFrameFactory) { |
304 auto video_frame_factory = encoder_->CreateVideoFrameFactory(); | 307 auto video_frame_factory = encoder_->CreateVideoFrameFactory(); |
305 ASSERT_TRUE(video_frame_factory.get()); | 308 ASSERT_TRUE(video_frame_factory.get()); |
306 CreateFrameAndMemsetPlane(video_frame_factory.get()); | 309 CreateFrameAndMemsetPlane(video_frame_factory.get()); |
| 310 // TODO(jfroy): Need to test that the encoder can encode VideoFrames provided |
| 311 // by the VideoFrameFactory. |
307 encoder_.reset(); | 312 encoder_.reset(); |
308 message_loop_.RunUntilIdle(); | 313 message_loop_.RunUntilIdle(); |
309 CreateFrameAndMemsetPlane(video_frame_factory.get()); | 314 CreateFrameAndMemsetPlane(video_frame_factory.get()); |
310 } | 315 } |
311 | 316 |
312 } // namespace cast | 317 } // namespace cast |
313 } // namespace media | 318 } // namespace media |
OLD | NEW |