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

Unified Diff: media/filters/video_frame_stream_unittest.cc

Issue 2650823006: media: Pass CdmContext in decoder reinitialization (Closed)
Patch Set: Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/fake_video_decoder.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/video_frame_stream_unittest.cc
diff --git a/media/filters/video_frame_stream_unittest.cc b/media/filters/video_frame_stream_unittest.cc
index 8dedd93eea35be338e05f9a40f0ce884031bbe95..415233dea5e0821249c39b4ddd97139bb747037a 100644
--- a/media/filters/video_frame_stream_unittest.cc
+++ b/media/filters/video_frame_stream_unittest.cc
@@ -35,13 +35,16 @@ namespace media {
struct VideoFrameStreamTestParams {
VideoFrameStreamTestParams(bool is_encrypted,
+ bool has_decryptor,
int decoding_delay,
int parallel_decoding)
: is_encrypted(is_encrypted),
+ has_decryptor(has_decryptor),
decoding_delay(decoding_delay),
parallel_decoding(parallel_decoding) {}
bool is_encrypted;
+ bool has_decryptor;
int decoding_delay;
int parallel_decoding;
};
@@ -55,25 +58,6 @@ class VideoFrameStreamTest
kNumBuffersInOneConfig,
GetParam().is_encrypted)),
cdm_context_(new StrictMock<MockCdmContext>()),
- decryptor_(new NiceMock<MockDecryptor>()),
- decoder1_(
- new FakeVideoDecoder(GetParam().decoding_delay,
- GetParam().parallel_decoding,
- base::Bind(
- &VideoFrameStreamTest::OnBytesDecoded,
- base::Unretained(this)))),
- decoder2_(
- new FakeVideoDecoder(GetParam().decoding_delay,
- GetParam().parallel_decoding,
- base::Bind(
- &VideoFrameStreamTest::OnBytesDecoded,
- base::Unretained(this)))),
- decoder3_(
- new FakeVideoDecoder(GetParam().decoding_delay,
- GetParam().parallel_decoding,
- base::Bind(
- &VideoFrameStreamTest::OnBytesDecoded,
- base::Unretained(this)))),
is_initialized_(false),
num_decoded_frames_(0),
pending_initialize_(false),
@@ -82,6 +66,27 @@ class VideoFrameStreamTest
pending_stop_(false),
num_decoded_bytes_unreported_(0),
has_no_key_(false) {
+ int decoding_delay = GetParam().decoding_delay;
+ int parallel_decoding = GetParam().parallel_decoding;
+ BytesDecodedCB bytes_decoded_cb = base::Bind(
+ &VideoFrameStreamTest::OnBytesDecoded, base::Unretained(this));
+
+ decoder1_ = new FakeVideoDecoder(decoding_delay, parallel_decoding,
+ bytes_decoded_cb);
+ decoder2_ = new FakeVideoDecoder(decoding_delay, parallel_decoding,
+ bytes_decoded_cb);
+ decoder3_ = new FakeVideoDecoder(decoding_delay, parallel_decoding,
+ bytes_decoded_cb);
+
+ // TODO(xhwang): We should test the case where only certain decoder
+ // supports encrypted streams. Currently this is hard to test becasue we use
+ // parameterized tests which need to pass in all combinations.
+ if (GetParam().is_encrypted && !GetParam().has_decryptor) {
+ decoder1_->EnableEncryptedConfigSupport();
+ decoder2_->EnableEncryptedConfigSupport();
+ decoder3_->EnableEncryptedConfigSupport();
+ }
+
ScopedVector<VideoDecoder> decoders;
decoders.push_back(decoder1_);
decoders.push_back(decoder2_);
@@ -90,15 +95,19 @@ class VideoFrameStreamTest
video_frame_stream_.reset(new VideoFrameStream(
message_loop_.task_runner(), std::move(decoders), new MediaLog()));
+ if (GetParam().has_decryptor) {
+ decryptor_.reset(new NiceMock<MockDecryptor>());
+
+ // Decryptor can only decrypt (not decrypt-and-decode) so that
+ // DecryptingDemuxerStream will be used.
+ EXPECT_CALL(*decryptor_, InitializeVideoDecoder(_, _))
+ .WillRepeatedly(RunCallback<1>(false));
+ EXPECT_CALL(*decryptor_, Decrypt(_, _, _))
+ .WillRepeatedly(Invoke(this, &VideoFrameStreamTest::Decrypt));
+ }
+
EXPECT_CALL(*cdm_context_, GetDecryptor())
.WillRepeatedly(Return(decryptor_.get()));
-
- // Decryptor can only decrypt (not decrypt-and-decode) so that
- // DecryptingDemuxerStream will be used.
- EXPECT_CALL(*decryptor_, InitializeVideoDecoder(_, _))
- .WillRepeatedly(RunCallback<1>(false));
- EXPECT_CALL(*decryptor_, Decrypt(_, _, _))
- .WillRepeatedly(Invoke(this, &VideoFrameStreamTest::Decrypt));
}
~VideoFrameStreamTest() {
@@ -252,9 +261,10 @@ class VideoFrameStreamTest
break;
case DECRYPTOR_NO_KEY:
- if (GetParam().is_encrypted)
+ if (GetParam().is_encrypted && GetParam().has_decryptor) {
EXPECT_CALL(*this, OnWaitingForDecryptionKey());
- has_no_key_ = true;
+ has_no_key_ = true;
+ }
ReadOneFrame();
break;
@@ -385,27 +395,29 @@ class VideoFrameStreamTest
INSTANTIATE_TEST_CASE_P(
Clear,
VideoFrameStreamTest,
- ::testing::Values(
- VideoFrameStreamTestParams(false, 0, 1),
- VideoFrameStreamTestParams(false, 3, 1),
- VideoFrameStreamTestParams(false, 7, 1)));
+ ::testing::Values(VideoFrameStreamTestParams(false, false, 0, 1),
+ VideoFrameStreamTestParams(false, false, 3, 1),
+ VideoFrameStreamTestParams(false, false, 7, 1)));
INSTANTIATE_TEST_CASE_P(
- Encrypted,
+ EncryptedWithDecryptor,
VideoFrameStreamTest,
- ::testing::Values(
- VideoFrameStreamTestParams(true, 7, 1)));
+ ::testing::Values(VideoFrameStreamTestParams(true, true, 7, 1)));
INSTANTIATE_TEST_CASE_P(
- Clear_Parallel,
+ EncryptedWithoutDecryptor,
VideoFrameStreamTest,
- ::testing::Values(
- VideoFrameStreamTestParams(false, 0, 3),
- VideoFrameStreamTestParams(false, 2, 3)));
+ ::testing::Values(VideoFrameStreamTestParams(true, false, 7, 1)));
+INSTANTIATE_TEST_CASE_P(
+ Clear_Parallel,
+ VideoFrameStreamTest,
+ ::testing::Values(VideoFrameStreamTestParams(false, false, 0, 3),
+ VideoFrameStreamTestParams(false, false, 2, 3)));
TEST_P(VideoFrameStreamTest, Initialization) {
Initialize();
+ EXPECT_TRUE(is_initialized_);
}
TEST_P(VideoFrameStreamTest, AllDecoderInitializationFails) {
« no previous file with comments | « media/filters/fake_video_decoder.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698