| Index: webrtc/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc
|
| diff --git a/webrtc/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc b/webrtc/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc
|
| index d4c4de61592dbdf33fc861d9d2403dc06ea7e1d2..5bcbb9b1b31262f5e5514569316ff612403e7b36 100644
|
| --- a/webrtc/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc
|
| +++ b/webrtc/modules/video_coding/codecs/vp8/test/vp8_impl_unittest.cc
|
| @@ -13,6 +13,7 @@
|
| #include <memory>
|
|
|
| #include "webrtc/base/checks.h"
|
| +#include "webrtc/base/optional.h"
|
| #include "webrtc/base/timeutils.h"
|
| #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
|
| #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h"
|
| @@ -88,7 +89,7 @@ bool Vp8UnitTestEncodeCompleteCallback::EncodeComplete() {
|
|
|
| class Vp8UnitTestDecodeCompleteCallback : public webrtc::DecodedImageCallback {
|
| public:
|
| - explicit Vp8UnitTestDecodeCompleteCallback(VideoFrame* frame)
|
| + explicit Vp8UnitTestDecodeCompleteCallback(rtc::Optional<VideoFrame>* frame)
|
| : decoded_frame_(frame), decode_complete(false) {}
|
| int32_t Decoded(VideoFrame& frame) override;
|
| int32_t Decoded(VideoFrame& frame, int64_t decode_time_ms) override {
|
| @@ -98,7 +99,7 @@ class Vp8UnitTestDecodeCompleteCallback : public webrtc::DecodedImageCallback {
|
| bool DecodeComplete();
|
|
|
| private:
|
| - VideoFrame* decoded_frame_;
|
| + rtc::Optional<VideoFrame>* decoded_frame_;
|
| bool decode_complete;
|
| };
|
|
|
| @@ -111,7 +112,7 @@ bool Vp8UnitTestDecodeCompleteCallback::DecodeComplete() {
|
| }
|
|
|
| int Vp8UnitTestDecodeCompleteCallback::Decoded(VideoFrame& image) {
|
| - *decoded_frame_ = image;
|
| + *decoded_frame_ = rtc::Optional<VideoFrame>(image);
|
| decode_complete = true;
|
| return 0;
|
| }
|
| @@ -184,8 +185,8 @@ class TestVp8Impl : public ::testing::Test {
|
| int64_t startTime = rtc::TimeMillis();
|
| while (rtc::TimeMillis() - startTime < kMaxWaitDecTimeMs) {
|
| if (decode_complete_callback_->DecodeComplete()) {
|
| - return CalcBufferSize(kI420, decoded_frame_.width(),
|
| - decoded_frame_.height());
|
| + return CalcBufferSize(kI420, decoded_frame_->width(),
|
| + decoded_frame_->height());
|
| }
|
| }
|
| return 0;
|
| @@ -202,7 +203,7 @@ class TestVp8Impl : public ::testing::Test {
|
| std::unique_ptr<VideoEncoder> encoder_;
|
| std::unique_ptr<VideoDecoder> decoder_;
|
| EncodedImage encoded_frame_;
|
| - VideoFrame decoded_frame_;
|
| + rtc::Optional<VideoFrame> decoded_frame_;
|
| VideoCodec codec_inst_;
|
| TemporalLayersFactory tl_factory_;
|
| };
|
| @@ -252,10 +253,11 @@ TEST_F(TestVp8Impl, MAYBE_AlignedStrideEncodeDecode) {
|
| EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK,
|
| decoder_->Decode(encoded_frame_, false, NULL));
|
| EXPECT_GT(WaitForDecodedFrame(), 0u);
|
| + ASSERT_TRUE(decoded_frame_);
|
| // Compute PSNR on all planes (faster than SSIM).
|
| - EXPECT_GT(I420PSNR(input_frame_.get(), &decoded_frame_), 36);
|
| - EXPECT_EQ(kTestTimestamp, decoded_frame_.timestamp());
|
| - EXPECT_EQ(kTestNtpTimeMs, decoded_frame_.ntp_time_ms());
|
| + EXPECT_GT(I420PSNR(input_frame_.get(), &*decoded_frame_), 36);
|
| + EXPECT_EQ(kTestTimestamp, decoded_frame_->timestamp());
|
| + EXPECT_EQ(kTestNtpTimeMs, decoded_frame_->ntp_time_ms());
|
| }
|
|
|
| #if defined(WEBRTC_ANDROID)
|
| @@ -280,7 +282,8 @@ TEST_F(TestVp8Impl, MAYBE_DecodeWithACompleteKeyFrame) {
|
| encoded_frame_._frameType = kVideoFrameKey;
|
| EXPECT_EQ(WEBRTC_VIDEO_CODEC_OK,
|
| decoder_->Decode(encoded_frame_, false, NULL));
|
| - EXPECT_GT(I420PSNR(input_frame_.get(), &decoded_frame_), 36);
|
| + ASSERT_TRUE(decoded_frame_);
|
| + EXPECT_GT(I420PSNR(input_frame_.get(), &*decoded_frame_), 36);
|
| }
|
|
|
| } // namespace webrtc
|
|
|