| Index: webrtc/media/engine/videodecodersoftwarefallbackwrapper_unittest.cc
|
| diff --git a/webrtc/media/engine/videodecodersoftwarefallbackwrapper_unittest.cc b/webrtc/media/engine/videodecodersoftwarefallbackwrapper_unittest.cc
|
| index 84a6a597316f5b7ebb4f3ea60a246f3827adc43e..b4fc7caf83643e3e0e7556a7cf9db722afc1a667 100644
|
| --- a/webrtc/media/engine/videodecodersoftwarefallbackwrapper_unittest.cc
|
| +++ b/webrtc/media/engine/videodecodersoftwarefallbackwrapper_unittest.cc
|
| @@ -19,9 +19,7 @@
|
| class VideoDecoderSoftwareFallbackWrapperTest : public ::testing::Test {
|
| protected:
|
| VideoDecoderSoftwareFallbackWrapperTest()
|
| - : fake_decoder_(new CountingFakeDecoder()),
|
| - fallback_wrapper_(kVideoCodecVP8,
|
| - std::unique_ptr<VideoDecoder>(fake_decoder_)) {}
|
| + : fallback_wrapper_(kVideoCodecVP8, &fake_decoder_) {}
|
|
|
| class CountingFakeDecoder : public VideoDecoder {
|
| public:
|
| @@ -63,41 +61,39 @@
|
| int release_count_ = 0;
|
| int reset_count_ = 0;
|
| };
|
| - // |fake_decoder_| is owned and released by |fallback_wrapper_|.
|
| - CountingFakeDecoder* fake_decoder_;
|
| + CountingFakeDecoder fake_decoder_;
|
| VideoDecoderSoftwareFallbackWrapper fallback_wrapper_;
|
| };
|
|
|
| TEST_F(VideoDecoderSoftwareFallbackWrapperTest, InitializesDecoder) {
|
| VideoCodec codec = {};
|
| fallback_wrapper_.InitDecode(&codec, 2);
|
| - EXPECT_EQ(1, fake_decoder_->init_decode_count_);
|
| + EXPECT_EQ(1, fake_decoder_.init_decode_count_);
|
|
|
| EncodedImage encoded_image;
|
| encoded_image._frameType = kVideoFrameKey;
|
| fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| - EXPECT_EQ(1, fake_decoder_->init_decode_count_)
|
| + EXPECT_EQ(1, fake_decoder_.init_decode_count_)
|
| << "Initialized decoder should not be reinitialized.";
|
| - EXPECT_EQ(1, fake_decoder_->decode_count_);
|
| + EXPECT_EQ(1, fake_decoder_.decode_count_);
|
| }
|
|
|
| TEST_F(VideoDecoderSoftwareFallbackWrapperTest,
|
| UsesFallbackDecoderAfterOnInitDecodeFailure) {
|
| VideoCodec codec = {};
|
| - fake_decoder_->init_decode_return_code_ =
|
| - WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
|
| - fallback_wrapper_.InitDecode(&codec, 2);
|
| - EXPECT_EQ(1, fake_decoder_->init_decode_count_);
|
| + fake_decoder_.init_decode_return_code_ = WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
|
| + fallback_wrapper_.InitDecode(&codec, 2);
|
| + EXPECT_EQ(1, fake_decoder_.init_decode_count_);
|
|
|
| EncodedImage encoded_image;
|
| encoded_image._frameType = kVideoFrameKey;
|
| fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| - EXPECT_EQ(2, fake_decoder_->init_decode_count_)
|
| + EXPECT_EQ(2, fake_decoder_.init_decode_count_)
|
| << "Should have attempted reinitializing the fallback decoder on "
|
| "keyframe.";
|
| // Unfortunately faking a VP8 frame is hard. Rely on no Decode -> using SW
|
| // decoder.
|
| - EXPECT_EQ(0, fake_decoder_->decode_count_)
|
| + EXPECT_EQ(0, fake_decoder_.decode_count_)
|
| << "Decoder used even though no InitDecode had succeeded.";
|
| }
|
|
|
| @@ -107,41 +103,41 @@
|
| fallback_wrapper_.InitDecode(&codec, 2);
|
| // Unfortunately faking a VP8 frame is hard. Rely on no Decode -> using SW
|
| // decoder.
|
| - fake_decoder_->decode_return_code_ = WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
|
| - EncodedImage encoded_image;
|
| - fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| - EXPECT_EQ(1, fake_decoder_->decode_count_);
|
| + fake_decoder_.decode_return_code_ = WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
|
| + EncodedImage encoded_image;
|
| + fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| + EXPECT_EQ(1, fake_decoder_.decode_count_);
|
|
|
| // Fail -> fake_decoder shouldn't be used anymore.
|
| fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| - EXPECT_EQ(1, fake_decoder_->decode_count_)
|
| + EXPECT_EQ(1, fake_decoder_.decode_count_)
|
| << "Decoder used even though fallback should be active.";
|
|
|
| // Should be able to recover on a keyframe.
|
| encoded_image._frameType = kVideoFrameKey;
|
| - fake_decoder_->decode_return_code_ = WEBRTC_VIDEO_CODEC_OK;
|
| - fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| - EXPECT_EQ(2, fake_decoder_->decode_count_)
|
| + fake_decoder_.decode_return_code_ = WEBRTC_VIDEO_CODEC_OK;
|
| + fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| + EXPECT_EQ(2, fake_decoder_.decode_count_)
|
| << "Wrapper did not try to decode a keyframe using registered decoder.";
|
|
|
| encoded_image._frameType = kVideoFrameDelta;
|
| fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| - EXPECT_EQ(3, fake_decoder_->decode_count_)
|
| + EXPECT_EQ(3, fake_decoder_.decode_count_)
|
| << "Decoder not used on future delta frames.";
|
| }
|
|
|
| TEST_F(VideoDecoderSoftwareFallbackWrapperTest, DoesNotFallbackOnEveryError) {
|
| VideoCodec codec = {};
|
| fallback_wrapper_.InitDecode(&codec, 2);
|
| - fake_decoder_->decode_return_code_ = WEBRTC_VIDEO_CODEC_ERROR;
|
| + fake_decoder_.decode_return_code_ = WEBRTC_VIDEO_CODEC_ERROR;
|
| EncodedImage encoded_image;
|
| EXPECT_EQ(
|
| - fake_decoder_->decode_return_code_,
|
| + fake_decoder_.decode_return_code_,
|
| fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1));
|
| - EXPECT_EQ(1, fake_decoder_->decode_count_);
|
| -
|
| - fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| - EXPECT_EQ(2, fake_decoder_->decode_count_)
|
| + EXPECT_EQ(1, fake_decoder_.decode_count_);
|
| +
|
| + fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| + EXPECT_EQ(2, fake_decoder_.decode_count_)
|
| << "Decoder should be active even though previous decode failed.";
|
| }
|
|
|
| @@ -149,15 +145,15 @@
|
| VideoCodec codec = {};
|
| fallback_wrapper_.InitDecode(&codec, 2);
|
| fallback_wrapper_.Release();
|
| - EXPECT_EQ(1, fake_decoder_->release_count_);
|
| -
|
| - fake_decoder_->decode_return_code_ = WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
|
| - EncodedImage encoded_image;
|
| - fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| - EXPECT_EQ(1, fake_decoder_->release_count_)
|
| + EXPECT_EQ(1, fake_decoder_.release_count_);
|
| +
|
| + fake_decoder_.decode_return_code_ = WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
|
| + EncodedImage encoded_image;
|
| + fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| + EXPECT_EQ(1, fake_decoder_.release_count_)
|
| << "Decoder should not be released during fallback.";
|
| fallback_wrapper_.Release();
|
| - EXPECT_EQ(2, fake_decoder_->release_count_);
|
| + EXPECT_EQ(2, fake_decoder_.release_count_);
|
| }
|
|
|
| // TODO(pbos): Fake a VP8 frame well enough to actually receive a callback from
|
| @@ -181,13 +177,13 @@
|
| VideoCodec codec = {};
|
| fallback_wrapper_.InitDecode(&codec, 2);
|
| fallback_wrapper_.RegisterDecodeCompleteCallback(&callback);
|
| - EXPECT_EQ(&callback, fake_decoder_->decode_complete_callback_);
|
| -
|
| - fake_decoder_->decode_return_code_ = WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
|
| + EXPECT_EQ(&callback, fake_decoder_.decode_complete_callback_);
|
| +
|
| + fake_decoder_.decode_return_code_ = WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
|
| EncodedImage encoded_image;
|
| fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| fallback_wrapper_.RegisterDecodeCompleteCallback(&callback2);
|
| - EXPECT_EQ(&callback2, fake_decoder_->decode_complete_callback_);
|
| + EXPECT_EQ(&callback2, fake_decoder_.decode_complete_callback_);
|
| }
|
|
|
| TEST_F(VideoDecoderSoftwareFallbackWrapperTest,
|
| @@ -195,7 +191,7 @@
|
| VideoCodec codec = {};
|
| fallback_wrapper_.InitDecode(&codec, 2);
|
|
|
| - fake_decoder_->decode_return_code_ = WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
|
| + fake_decoder_.decode_return_code_ = WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE;
|
| EncodedImage encoded_image;
|
| fallback_wrapper_.Decode(encoded_image, false, nullptr, nullptr, -1);
|
| // Hard coded expected value since libvpx is the software implementation name
|
|
|