xref: /aosp_15_r20/external/webrtc/api/test/mock_video_decoder.h (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker  *  Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
3*d9f75844SAndroid Build Coastguard Worker  *
4*d9f75844SAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker  */
10*d9f75844SAndroid Build Coastguard Worker 
11*d9f75844SAndroid Build Coastguard Worker #ifndef API_TEST_MOCK_VIDEO_DECODER_H_
12*d9f75844SAndroid Build Coastguard Worker #define API_TEST_MOCK_VIDEO_DECODER_H_
13*d9f75844SAndroid Build Coastguard Worker 
14*d9f75844SAndroid Build Coastguard Worker #include <utility>
15*d9f75844SAndroid Build Coastguard Worker 
16*d9f75844SAndroid Build Coastguard Worker #include "api/video_codecs/video_decoder.h"
17*d9f75844SAndroid Build Coastguard Worker #include "test/gmock.h"
18*d9f75844SAndroid Build Coastguard Worker 
19*d9f75844SAndroid Build Coastguard Worker namespace webrtc {
20*d9f75844SAndroid Build Coastguard Worker 
21*d9f75844SAndroid Build Coastguard Worker class MockDecodedImageCallback : public DecodedImageCallback {
22*d9f75844SAndroid Build Coastguard Worker  public:
23*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(int32_t,
24*d9f75844SAndroid Build Coastguard Worker               Decoded,
25*d9f75844SAndroid Build Coastguard Worker               (VideoFrame & decoded_image),  // NOLINT
26*d9f75844SAndroid Build Coastguard Worker               (override));
27*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(int32_t,
28*d9f75844SAndroid Build Coastguard Worker               Decoded,
29*d9f75844SAndroid Build Coastguard Worker               (VideoFrame & decoded_image,  // NOLINT
30*d9f75844SAndroid Build Coastguard Worker                int64_t decode_time_ms),
31*d9f75844SAndroid Build Coastguard Worker               (override));
32*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(void,
33*d9f75844SAndroid Build Coastguard Worker               Decoded,
34*d9f75844SAndroid Build Coastguard Worker               (VideoFrame & decoded_image,  // NOLINT
35*d9f75844SAndroid Build Coastguard Worker                absl::optional<int32_t> decode_time_ms,
36*d9f75844SAndroid Build Coastguard Worker                absl::optional<uint8_t> qp),
37*d9f75844SAndroid Build Coastguard Worker               (override));
38*d9f75844SAndroid Build Coastguard Worker };
39*d9f75844SAndroid Build Coastguard Worker 
40*d9f75844SAndroid Build Coastguard Worker class MockVideoDecoder : public VideoDecoder {
41*d9f75844SAndroid Build Coastguard Worker  public:
MockVideoDecoder()42*d9f75844SAndroid Build Coastguard Worker   MockVideoDecoder() {
43*d9f75844SAndroid Build Coastguard Worker     // Make `Configure` succeed by default, so that individual tests that
44*d9f75844SAndroid Build Coastguard Worker     // verify other methods wouldn't need to stub `Configure`.
45*d9f75844SAndroid Build Coastguard Worker     ON_CALL(*this, Configure).WillByDefault(testing::Return(true));
46*d9f75844SAndroid Build Coastguard Worker   }
47*d9f75844SAndroid Build Coastguard Worker 
~MockVideoDecoder()48*d9f75844SAndroid Build Coastguard Worker   ~MockVideoDecoder() override { Destruct(); }
49*d9f75844SAndroid Build Coastguard Worker 
50*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(bool, Configure, (const Settings& settings), (override));
51*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(int32_t,
52*d9f75844SAndroid Build Coastguard Worker               Decode,
53*d9f75844SAndroid Build Coastguard Worker               (const EncodedImage& input_image,
54*d9f75844SAndroid Build Coastguard Worker                bool missing_frames,
55*d9f75844SAndroid Build Coastguard Worker                int64_t render_time_ms),
56*d9f75844SAndroid Build Coastguard Worker               (override));
57*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(int32_t,
58*d9f75844SAndroid Build Coastguard Worker               RegisterDecodeCompleteCallback,
59*d9f75844SAndroid Build Coastguard Worker               (DecodedImageCallback * callback),
60*d9f75844SAndroid Build Coastguard Worker               (override));
61*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(int32_t, Release, (), (override));
62*d9f75844SAndroid Build Coastguard Worker 
63*d9f75844SAndroid Build Coastguard Worker   // Special utility method that allows a test to monitor/verify when
64*d9f75844SAndroid Build Coastguard Worker   // destruction of the decoder instance occurs.
65*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(void, Destruct, (), ());
66*d9f75844SAndroid Build Coastguard Worker };
67*d9f75844SAndroid Build Coastguard Worker 
68*d9f75844SAndroid Build Coastguard Worker }  // namespace webrtc
69*d9f75844SAndroid Build Coastguard Worker 
70*d9f75844SAndroid Build Coastguard Worker #endif  // API_TEST_MOCK_VIDEO_DECODER_H_
71