Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Side by Side Diff: media/filters/video_frame_stream_unittest.cc

Issue 297553002: Add callback in VideoDecoder and AudioDecoder to return decoded frames. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698