xref: /aosp_15_r20/external/armnn/samples/common/include/CVUtils/IFrameReader.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #pragma once
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker #include <cstddef>
9*89c4ff92SAndroid Build Coastguard Worker #include <memory>
10*89c4ff92SAndroid Build Coastguard Worker 
11*89c4ff92SAndroid Build Coastguard Worker namespace common
12*89c4ff92SAndroid Build Coastguard Worker {
13*89c4ff92SAndroid Build Coastguard Worker /**
14*89c4ff92SAndroid Build Coastguard Worker  * @brief Frame source reader interface
15*89c4ff92SAndroid Build Coastguard Worker  *
16*89c4ff92SAndroid Build Coastguard Worker  * @tparam FrameDataT frame container data type
17*89c4ff92SAndroid Build Coastguard Worker  */
18*89c4ff92SAndroid Build Coastguard Worker template<typename FrameDataT> class IFrameReader
19*89c4ff92SAndroid Build Coastguard Worker {
20*89c4ff92SAndroid Build Coastguard Worker 
21*89c4ff92SAndroid Build Coastguard Worker public:
22*89c4ff92SAndroid Build Coastguard Worker     /**
23*89c4ff92SAndroid Build Coastguard Worker      * @brief Reads the next frame from the source
24*89c4ff92SAndroid Build Coastguard Worker      *
25*89c4ff92SAndroid Build Coastguard Worker      * @return pointer to the frame container
26*89c4ff92SAndroid Build Coastguard Worker      */
27*89c4ff92SAndroid Build Coastguard Worker     virtual std::shared_ptr <FrameDataT> ReadFrame() = 0;
28*89c4ff92SAndroid Build Coastguard Worker 
29*89c4ff92SAndroid Build Coastguard Worker     /**
30*89c4ff92SAndroid Build Coastguard Worker      * @brief Checks if the frame source has more frames to read.
31*89c4ff92SAndroid Build Coastguard Worker      *
32*89c4ff92SAndroid Build Coastguard Worker      * @param[in] frame the pointer to the last frame captured with the ReadFrame method could be used in
33*89c4ff92SAndroid Build Coastguard Worker      *                  implementation specific logic to check frames source state.
34*89c4ff92SAndroid Build Coastguard Worker      * @return True if frame source was exhausted, False otherwise
35*89c4ff92SAndroid Build Coastguard Worker      */
36*89c4ff92SAndroid Build Coastguard Worker     virtual bool IsExhausted(const std::shared_ptr <FrameDataT>& frame) const = 0;
37*89c4ff92SAndroid Build Coastguard Worker 
38*89c4ff92SAndroid Build Coastguard Worker     /**
39*89c4ff92SAndroid Build Coastguard Worker      * @brief Default destructor
40*89c4ff92SAndroid Build Coastguard Worker      */
41*89c4ff92SAndroid Build Coastguard Worker     virtual ~IFrameReader() = default;
42*89c4ff92SAndroid Build Coastguard Worker 
43*89c4ff92SAndroid Build Coastguard Worker };
44*89c4ff92SAndroid Build Coastguard Worker 
45*89c4ff92SAndroid Build Coastguard Worker }// namespace common