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 <queue> | 7 #include <queue> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 | 48 |
49 void MediaTestSuite::Initialize() { | 49 void MediaTestSuite::Initialize() { |
50 base::TestSuite::Initialize(); | 50 base::TestSuite::Initialize(); |
51 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 51 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
52 command_line->AppendSwitch(switches::kEnableInbandTextTracks); | 52 command_line->AppendSwitch(switches::kEnableInbandTextTracks); |
53 media::InitializeMediaLibrary(); | 53 media::InitializeMediaLibrary(); |
54 } | 54 } |
55 | 55 |
56 } // namespace | 56 } // namespace |
57 | 57 |
58 int main(int argc, char** argv) { | |
59 { | |
60 base::AtExitManager at_exit_manager; | |
61 CHECK(VideoToolboxGlue::Get()) | |
62 << "VideoToolbox is not available. Requires OS X 10.8 or iOS 8.0."; | |
63 } | |
64 MediaTestSuite test_suite(argc, argv); | |
65 return base::LaunchUnitTests( | |
66 argc, argv, | |
67 base::Bind(&MediaTestSuite::Run, base::Unretained(&test_suite))); | |
68 } | |
69 | |
70 namespace media { | 58 namespace media { |
71 namespace cast { | 59 namespace cast { |
72 | 60 |
73 // See comment in end2end_unittest.cc for details on this value. | 61 // See comment in end2end_unittest.cc for details on this value. |
74 const double kVideoAcceptedPSNR = 38.0; | 62 const double kVideoAcceptedPSNR = 38.0; |
75 | 63 |
76 void SaveDecoderInitResult(bool* out_result, bool in_result) { | 64 void SaveDecoderInitResult(bool* out_result, bool in_result) { |
77 *out_result = in_result; | 65 *out_result = in_result; |
78 } | 66 } |
79 | 67 |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 | 203 |
216 private: | 204 private: |
217 bool IsOnBatteryPowerImpl() final { return false; } | 205 bool IsOnBatteryPowerImpl() final { return false; } |
218 }; | 206 }; |
219 | 207 |
220 class H264VideoToolboxEncoderTest : public ::testing::Test { | 208 class H264VideoToolboxEncoderTest : public ::testing::Test { |
221 protected: | 209 protected: |
222 H264VideoToolboxEncoderTest() = default; | 210 H264VideoToolboxEncoderTest() = default; |
223 | 211 |
224 void SetUp() final { | 212 void SetUp() final { |
| 213 CHECK(VideoToolboxGlue::Get()) |
| 214 << "VideoToolbox is not available. Requires OS X 10.8 or iOS 8.0."; |
225 clock_ = new base::SimpleTestTickClock(); | 215 clock_ = new base::SimpleTestTickClock(); |
226 clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); | 216 clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); |
227 | 217 |
228 power_source_ = new TestPowerSource(); | 218 power_source_ = new TestPowerSource(); |
229 power_monitor_.reset(new base::PowerMonitor( | 219 power_monitor_.reset(new base::PowerMonitor( |
230 std::unique_ptr<TestPowerSource>(power_source_))); | 220 std::unique_ptr<TestPowerSource>(power_source_))); |
231 | 221 |
232 cast_environment_ = new CastEnvironment( | 222 cast_environment_ = new CastEnvironment( |
233 std::unique_ptr<base::TickClock>(clock_), message_loop_.task_runner(), | 223 std::unique_ptr<base::TickClock>(clock_), message_loop_.task_runner(), |
234 message_loop_.task_runner(), message_loop_.task_runner()); | 224 message_loop_.task_runner(), message_loop_.task_runner()); |
(...skipping 22 matching lines...) Expand all Loading... |
257 video_sender_config_.codec = CODEC_VIDEO_H264; | 247 video_sender_config_.codec = CODEC_VIDEO_H264; |
258 const gfx::Size size(kVideoWidth, kVideoHeight); | 248 const gfx::Size size(kVideoWidth, kVideoHeight); |
259 frame_ = media::VideoFrame::CreateFrame( | 249 frame_ = media::VideoFrame::CreateFrame( |
260 PIXEL_FORMAT_I420, size, gfx::Rect(size), size, base::TimeDelta()); | 250 PIXEL_FORMAT_I420, size, gfx::Rect(size), size, base::TimeDelta()); |
261 PopulateVideoFrame(frame_.get(), 123); | 251 PopulateVideoFrame(frame_.get(), 123); |
262 } | 252 } |
263 | 253 |
264 static void TearDownTestCase() { frame_ = nullptr; } | 254 static void TearDownTestCase() { frame_ = nullptr; } |
265 | 255 |
266 static scoped_refptr<media::VideoFrame> frame_; | 256 static scoped_refptr<media::VideoFrame> frame_; |
267 static VideoSenderConfig video_sender_config_; | 257 static FrameSenderConfig video_sender_config_; |
268 | 258 |
269 base::SimpleTestTickClock* clock_; // Owned by CastEnvironment. | 259 base::SimpleTestTickClock* clock_; // Owned by CastEnvironment. |
270 base::MessageLoop message_loop_; | 260 base::MessageLoop message_loop_; |
271 scoped_refptr<CastEnvironment> cast_environment_; | 261 scoped_refptr<CastEnvironment> cast_environment_; |
272 std::unique_ptr<VideoEncoder> encoder_; | 262 std::unique_ptr<VideoEncoder> encoder_; |
273 OperationalStatus operational_status_; | 263 OperationalStatus operational_status_; |
274 TestPowerSource* power_source_; // Owned by the power monitor. | 264 TestPowerSource* power_source_; // Owned by the power monitor. |
275 std::unique_ptr<base::PowerMonitor> power_monitor_; | 265 std::unique_ptr<base::PowerMonitor> power_monitor_; |
276 | 266 |
277 private: | 267 private: |
278 DISALLOW_COPY_AND_ASSIGN(H264VideoToolboxEncoderTest); | 268 DISALLOW_COPY_AND_ASSIGN(H264VideoToolboxEncoderTest); |
279 }; | 269 }; |
280 | 270 |
281 // static | 271 // static |
282 scoped_refptr<media::VideoFrame> H264VideoToolboxEncoderTest::frame_; | 272 scoped_refptr<media::VideoFrame> H264VideoToolboxEncoderTest::frame_; |
283 VideoSenderConfig H264VideoToolboxEncoderTest::video_sender_config_; | 273 FrameSenderConfig H264VideoToolboxEncoderTest::video_sender_config_; |
284 | 274 |
285 TEST_F(H264VideoToolboxEncoderTest, CheckFrameMetadataSequence) { | 275 // Failed on mac_chromium_rel_ng trybot. http://crbug.com/627260 |
| 276 TEST_F(H264VideoToolboxEncoderTest, DISABLED_CheckFrameMetadataSequence) { |
286 scoped_refptr<MetadataRecorder> metadata_recorder(new MetadataRecorder()); | 277 scoped_refptr<MetadataRecorder> metadata_recorder(new MetadataRecorder()); |
287 VideoEncoder::FrameEncodedCallback cb = base::Bind( | 278 VideoEncoder::FrameEncodedCallback cb = base::Bind( |
288 &MetadataRecorder::CompareFrameWithExpected, metadata_recorder.get()); | 279 &MetadataRecorder::CompareFrameWithExpected, metadata_recorder.get()); |
289 | 280 |
290 metadata_recorder->PushExpectation( | 281 metadata_recorder->PushExpectation( |
291 FrameId::first(), FrameId::first(), | 282 FrameId::first(), FrameId::first(), |
292 RtpTimeTicks::FromTimeDelta(frame_->timestamp(), kVideoFrequency), | 283 RtpTimeTicks::FromTimeDelta(frame_->timestamp(), kVideoFrequency), |
293 clock_->NowTicks()); | 284 clock_->NowTicks()); |
294 EXPECT_TRUE(encoder_->EncodeVideoFrame(frame_, clock_->NowTicks(), cb)); | 285 EXPECT_TRUE(encoder_->EncodeVideoFrame(frame_, clock_->NowTicks(), cb)); |
295 base::RunLoop().RunUntilIdle(); | 286 base::RunLoop().RunUntilIdle(); |
296 | 287 |
297 for (FrameId frame_id = FrameId::first() + 1; | 288 for (FrameId frame_id = FrameId::first() + 1; |
298 frame_id < FrameId::first() + 10; ++frame_id) { | 289 frame_id < FrameId::first() + 10; ++frame_id) { |
299 AdvanceClockAndVideoFrameTimestamp(); | 290 AdvanceClockAndVideoFrameTimestamp(); |
300 metadata_recorder->PushExpectation( | 291 metadata_recorder->PushExpectation( |
301 frame_id, frame_id - 1, | 292 frame_id, frame_id - 1, |
302 RtpTimeTicks::FromTimeDelta(frame_->timestamp(), kVideoFrequency), | 293 RtpTimeTicks::FromTimeDelta(frame_->timestamp(), kVideoFrequency), |
303 clock_->NowTicks()); | 294 clock_->NowTicks()); |
304 EXPECT_TRUE(encoder_->EncodeVideoFrame(frame_, clock_->NowTicks(), cb)); | 295 EXPECT_TRUE(encoder_->EncodeVideoFrame(frame_, clock_->NowTicks(), cb)); |
305 } | 296 } |
306 | 297 |
307 encoder_.reset(); | 298 encoder_.reset(); |
308 base::RunLoop().RunUntilIdle(); | 299 base::RunLoop().RunUntilIdle(); |
309 | 300 |
310 EXPECT_EQ(10, metadata_recorder->count_frames_delivered()); | 301 EXPECT_EQ(10, metadata_recorder->count_frames_delivered()); |
311 } | 302 } |
312 | 303 |
313 #if defined(USE_PROPRIETARY_CODECS) | 304 #if defined(USE_PROPRIETARY_CODECS) |
314 TEST_F(H264VideoToolboxEncoderTest, CheckFramesAreDecodable) { | 305 // Failed on mac_chromium_rel_ng trybot. http://crbug.com/627260 |
| 306 TEST_F(H264VideoToolboxEncoderTest, DISABLED_CheckFramesAreDecodable) { |
315 VideoDecoderConfig config(kCodecH264, H264PROFILE_MAIN, frame_->format(), | 307 VideoDecoderConfig config(kCodecH264, H264PROFILE_MAIN, frame_->format(), |
316 COLOR_SPACE_UNSPECIFIED, frame_->coded_size(), | 308 COLOR_SPACE_UNSPECIFIED, frame_->coded_size(), |
317 frame_->visible_rect(), frame_->natural_size(), | 309 frame_->visible_rect(), frame_->natural_size(), |
318 EmptyExtraData(), Unencrypted()); | 310 EmptyExtraData(), Unencrypted()); |
319 scoped_refptr<EndToEndFrameChecker> checker(new EndToEndFrameChecker(config)); | 311 scoped_refptr<EndToEndFrameChecker> checker(new EndToEndFrameChecker(config)); |
320 | 312 |
321 VideoEncoder::FrameEncodedCallback cb = | 313 VideoEncoder::FrameEncodedCallback cb = |
322 base::Bind(&EndToEndFrameChecker::EncodeDone, checker.get()); | 314 base::Bind(&EndToEndFrameChecker::EncodeDone, checker.get()); |
323 for (FrameId frame_id = FrameId::first(); frame_id < FrameId::first() + 6; | 315 for (FrameId frame_id = FrameId::first(); frame_id < FrameId::first() + 6; |
324 ++frame_id) { | 316 ++frame_id) { |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 gfx::Size(kVideoWidth, kVideoHeight), base::TimeDelta())); | 405 gfx::Size(kVideoWidth, kVideoHeight), base::TimeDelta())); |
414 | 406 |
415 // After a power resume event, the factory should produce frames right away | 407 // After a power resume event, the factory should produce frames right away |
416 // because the encoder re-initializes on its own. | 408 // because the encoder re-initializes on its own. |
417 power_source_->GenerateResumeEvent(); | 409 power_source_->GenerateResumeEvent(); |
418 CreateFrameAndMemsetPlane(video_frame_factory.get()); | 410 CreateFrameAndMemsetPlane(video_frame_factory.get()); |
419 } | 411 } |
420 | 412 |
421 } // namespace cast | 413 } // namespace cast |
422 } // namespace media | 414 } // namespace media |
OLD | NEW |