Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/callback_helpers.h" | 6 #include "base/callback_helpers.h" |
| 7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
| 8 #include "media/base/gmock_callback_support.h" | 8 #include "media/base/gmock_callback_support.h" |
| 9 #include "media/base/mock_filters.h" | 9 #include "media/base/mock_filters.h" |
| 10 #include "media/base/test_helpers.h" | 10 #include "media/base/test_helpers.h" |
| 11 #include "media/filters/decoder_stream.h" | 11 #include "media/filters/decoder_stream.h" |
| 12 #include "media/filters/fake_demuxer_stream.h" | 12 #include "media/filters/fake_demuxer_stream.h" |
| 13 #include "media/filters/fake_video_decoder.h" | 13 #include "media/filters/fake_video_decoder.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 15 |
| 16 using ::testing::_; | 16 using ::testing::_; |
| 17 using ::testing::Assign; | 17 using ::testing::Assign; |
| 18 using ::testing::Invoke; | 18 using ::testing::Invoke; |
| 19 using ::testing::NiceMock; | 19 using ::testing::NiceMock; |
| 20 using ::testing::Return; | 20 using ::testing::Return; |
| 21 using ::testing::SaveArg; | 21 using ::testing::SaveArg; |
| 22 | 22 |
| 23 static const int kNumConfigs = 3; | 23 static const int kNumConfigs = 3; |
| 24 static const int kNumBuffersInOneConfig = 5; | 24 static const int kNumBuffersInOneConfig = 5; |
| 25 | 25 |
| 26 namespace media { | 26 namespace media { |
| 27 | 27 |
| 28 struct VideoFrameStreamTestParams { | 28 struct VideoFrameStreamTestParams { |
| 29 VideoFrameStreamTestParams(bool is_encrypted, | 29 VideoFrameStreamTestParams(bool is_encrypted, |
| 30 bool enable_get_decode_output, | |
| 31 int decoding_delay, | 30 int decoding_delay, |
| 32 int parallel_decoding) | 31 int parallel_decoding) |
| 33 : is_encrypted(is_encrypted), | 32 : is_encrypted(is_encrypted), |
| 34 enable_get_decode_output(enable_get_decode_output), | |
| 35 decoding_delay(decoding_delay), | 33 decoding_delay(decoding_delay), |
| 36 parallel_decoding(parallel_decoding) {} | 34 parallel_decoding(parallel_decoding) {} |
| 37 | 35 |
| 38 bool is_encrypted; | 36 bool is_encrypted; |
| 39 bool enable_get_decode_output; | |
| 40 int decoding_delay; | 37 int decoding_delay; |
| 41 int parallel_decoding; | 38 int parallel_decoding; |
| 42 }; | 39 }; |
| 43 | 40 |
| 44 class VideoFrameStreamTest | 41 class VideoFrameStreamTest |
| 45 : public testing::Test, | 42 : public testing::Test, |
| 46 public testing::WithParamInterface<VideoFrameStreamTestParams> { | 43 public testing::WithParamInterface<VideoFrameStreamTestParams> { |
| 47 public: | 44 public: |
| 48 VideoFrameStreamTest() | 45 VideoFrameStreamTest() |
| 49 : demuxer_stream_(new FakeDemuxerStream(kNumConfigs, | 46 : demuxer_stream_(new FakeDemuxerStream(kNumConfigs, |
| 50 kNumBuffersInOneConfig, | 47 kNumBuffersInOneConfig, |
| 51 GetParam().is_encrypted)), | 48 GetParam().is_encrypted)), |
| 52 decryptor_(new NiceMock<MockDecryptor>()), | 49 decryptor_(new NiceMock<MockDecryptor>()), |
| 53 decoder_(new FakeVideoDecoder(GetParam().decoding_delay, | 50 decoder_(new FakeVideoDecoder(GetParam().decoding_delay, |
| 54 GetParam().enable_get_decode_output, | |
| 55 GetParam().parallel_decoding)), | 51 GetParam().parallel_decoding)), |
| 56 is_initialized_(false), | 52 is_initialized_(false), |
| 57 num_decoded_frames_(0), | 53 num_decoded_frames_(0), |
| 58 pending_initialize_(false), | 54 pending_initialize_(false), |
| 59 pending_read_(false), | 55 pending_read_(false), |
| 60 pending_reset_(false), | 56 pending_reset_(false), |
| 61 pending_stop_(false), | 57 pending_stop_(false), |
| 62 total_bytes_decoded_(0), | 58 total_bytes_decoded_(0), |
| 63 has_no_key_(false) { | 59 has_no_key_(false) { |
| 64 ScopedVector<VideoDecoder> decoders; | 60 ScopedVector<VideoDecoder> decoders; |
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 340 bool has_no_key_; | 336 bool has_no_key_; |
| 341 | 337 |
| 342 private: | 338 private: |
| 343 DISALLOW_COPY_AND_ASSIGN(VideoFrameStreamTest); | 339 DISALLOW_COPY_AND_ASSIGN(VideoFrameStreamTest); |
| 344 }; | 340 }; |
| 345 | 341 |
| 346 INSTANTIATE_TEST_CASE_P( | 342 INSTANTIATE_TEST_CASE_P( |
| 347 Clear, | 343 Clear, |
| 348 VideoFrameStreamTest, | 344 VideoFrameStreamTest, |
| 349 ::testing::Values( | 345 ::testing::Values( |
| 350 VideoFrameStreamTestParams(false, false, 0, 1), | 346 VideoFrameStreamTestParams(false, 0, 1), |
| 351 VideoFrameStreamTestParams(false, false, 3, 1), | 347 VideoFrameStreamTestParams(false, 3, 1), |
| 352 VideoFrameStreamTestParams(false, false, 7, 1))); | 348 VideoFrameStreamTestParams(false, 7, 1))); |
|
xhwang
2014/06/05 21:53:51
Add a case where parallel_decoding > decoding_dela
Sergey Ulanov
2014/06/06 22:49:41
There are some below, line 360.
| |
| 353 INSTANTIATE_TEST_CASE_P( | |
| 354 Clear_GetDecodeOutput, | |
| 355 VideoFrameStreamTest, | |
| 356 ::testing::Values( | |
| 357 VideoFrameStreamTestParams(false, true, 0, 1), | |
| 358 VideoFrameStreamTestParams(false, true, 3, 1), | |
| 359 VideoFrameStreamTestParams(false, true, 7, 1))); | |
| 360 INSTANTIATE_TEST_CASE_P( | 349 INSTANTIATE_TEST_CASE_P( |
| 361 Encrypted, | 350 Encrypted, |
| 362 VideoFrameStreamTest, | 351 VideoFrameStreamTest, |
| 363 ::testing::Values( | 352 ::testing::Values( |
| 364 VideoFrameStreamTestParams(true, false, 7, 1))); | 353 VideoFrameStreamTestParams(true, 7, 1))); |
| 365 INSTANTIATE_TEST_CASE_P( | |
| 366 Encrypted_GetDecodeOutput, | |
| 367 VideoFrameStreamTest, | |
| 368 ::testing::Values( | |
| 369 VideoFrameStreamTestParams(true, true, 7, 1))); | |
| 370 | 354 |
| 371 INSTANTIATE_TEST_CASE_P( | 355 INSTANTIATE_TEST_CASE_P( |
| 372 Clear_Parallel, | 356 Clear_Parallel, |
| 373 VideoFrameStreamTest, | 357 VideoFrameStreamTest, |
| 374 ::testing::Values( | 358 ::testing::Values( |
| 375 VideoFrameStreamTestParams(false, false, 0, 3), | 359 VideoFrameStreamTestParams(false, 0, 3), |
| 376 VideoFrameStreamTestParams(false, false, 2, 3))); | 360 VideoFrameStreamTestParams(false, 2, 3))); |
| 377 | 361 |
| 378 | 362 |
| 379 TEST_P(VideoFrameStreamTest, Initialization) { | 363 TEST_P(VideoFrameStreamTest, Initialization) { |
| 380 Initialize(); | 364 Initialize(); |
| 381 } | 365 } |
| 382 | 366 |
| 383 TEST_P(VideoFrameStreamTest, ReadOneFrame) { | 367 TEST_P(VideoFrameStreamTest, ReadOneFrame) { |
| 384 Initialize(); | 368 Initialize(); |
| 385 Read(); | 369 Read(); |
| 386 } | 370 } |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 700 // The error must surface from Read() as DECODE_ERROR. | 684 // The error must surface from Read() as DECODE_ERROR. |
| 701 while (last_read_status_ == VideoFrameStream::OK) { | 685 while (last_read_status_ == VideoFrameStream::OK) { |
| 702 ReadOneFrame(); | 686 ReadOneFrame(); |
| 703 message_loop_.RunUntilIdle(); | 687 message_loop_.RunUntilIdle(); |
| 704 EXPECT_FALSE(pending_read_); | 688 EXPECT_FALSE(pending_read_); |
| 705 } | 689 } |
| 706 EXPECT_EQ(VideoFrameStream::DECODE_ERROR, last_read_status_); | 690 EXPECT_EQ(VideoFrameStream::DECODE_ERROR, last_read_status_); |
| 707 } | 691 } |
| 708 | 692 |
| 709 } // namespace media | 693 } // namespace media |
| OLD | NEW |