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 |