| /* | |
| * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved. | |
| * | |
| * Use of this source code is governed by a BSD-style license | |
| * that can be found in the LICENSE file in the root of the source | |
| * tree. An additional intellectual property rights grant can be found | |
| * in the file PATENTS. All contributing project authors may | |
| * be found in the AUTHORS file in the root of the source tree. | |
| */ | |
| #ifndef API_TEST_MOCK_VIDEO_DECODER_H_ | |
| #define API_TEST_MOCK_VIDEO_DECODER_H_ | |
| #include <cstdint> | |
| #include <optional> | |
| #include "api/video/encoded_image.h" | |
| #include "api/video/video_frame.h" | |
| #include "api/video_codecs/video_decoder.h" | |
| #include "test/gmock.h" | |
| namespace webrtc { | |
| using testing::_; | |
| class MockDecodedImageCallback : public DecodedImageCallback { | |
| public: | |
| MOCK_METHOD(int32_t, | |
| Decoded, | |
| (VideoFrame & decoded_image), // NOLINT | |
| (override)); | |
| MOCK_METHOD(int32_t, | |
| Decoded, | |
| (VideoFrame & decoded_image, // NOLINT | |
| int64_t decode_time_ms), | |
| (override)); | |
| MOCK_METHOD(void, | |
| Decoded, | |
| (VideoFrame & decoded_image, // NOLINT | |
| std::optional<int32_t> decode_time_ms, | |
| std::optional<uint8_t> qp), | |
| (override)); | |
| }; | |
| class MockVideoDecoder : public VideoDecoder { | |
| public: | |
| MockVideoDecoder() { | |
| // Make `Configure` succeed by default, so that individual tests that | |
| // verify other methods wouldn't need to stub `Configure`. | |
| ON_CALL(*this, Configure).WillByDefault(testing::Return(true)); | |
| // TODO(bugs.webrtc.org/15444): Remove once all tests have been migrated to | |
| // expecting calls Decode without a missing_frames param. | |
| ON_CALL(*this, Decode(_, _)) | |
| .WillByDefault([this](const EncodedImage& input_image, | |
| int64_t render_time_ms) { | |
| return Decode(input_image, /*missing_frames=*/false, render_time_ms); | |
| }); | |
| } | |
| ~MockVideoDecoder() override { Destruct(); } | |
| MOCK_METHOD(bool, Configure, (const Settings& settings), (override)); | |
| MOCK_METHOD(int32_t, | |
| Decode, | |
| (const EncodedImage& input_image, int64_t render_time_ms), | |
| (override)); | |
| MOCK_METHOD(int32_t, | |
| Decode, | |
| (const EncodedImage& input_image, | |
| bool missing_frames, | |
| int64_t render_time_ms)); | |
| MOCK_METHOD(int32_t, | |
| RegisterDecodeCompleteCallback, | |
| (DecodedImageCallback * callback), | |
| (override)); | |
| MOCK_METHOD(int32_t, Release, (), (override)); | |
| // Special utility method that allows a test to monitor/verify when | |
| // destruction of the decoder instance occurs. | |
| MOCK_METHOD(void, Destruct, (), ()); | |
| }; | |
| } // namespace webrtc | |
| #endif // API_TEST_MOCK_VIDEO_DECODER_H_ |