xref: /aosp_15_r20/external/armnn/samples/common/include/CVUtils/IFrameOutput.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 Frames output 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 IFrameOutput
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 Writes frame to the selected output
24*89c4ff92SAndroid Build Coastguard Worker          *
25*89c4ff92SAndroid Build Coastguard Worker          * @param frame container
26*89c4ff92SAndroid Build Coastguard Worker          */
27*89c4ff92SAndroid Build Coastguard Worker         virtual void WriteFrame(std::shared_ptr <FrameDataT>& frame) = 0;
28*89c4ff92SAndroid Build Coastguard Worker 
29*89c4ff92SAndroid Build Coastguard Worker         /**
30*89c4ff92SAndroid Build Coastguard Worker          * @brief Closes the frame output
31*89c4ff92SAndroid Build Coastguard Worker          */
32*89c4ff92SAndroid Build Coastguard Worker         virtual void Close() = 0;
33*89c4ff92SAndroid Build Coastguard Worker 
34*89c4ff92SAndroid Build Coastguard Worker         /**
35*89c4ff92SAndroid Build Coastguard Worker          * @brief Checks if the frame sink is ready to write.
36*89c4ff92SAndroid Build Coastguard Worker          *
37*89c4ff92SAndroid Build Coastguard Worker          * @return True if frame sink is ready, False otherwise
38*89c4ff92SAndroid Build Coastguard Worker          */
39*89c4ff92SAndroid Build Coastguard Worker         virtual bool IsReady() const = 0;
40*89c4ff92SAndroid Build Coastguard Worker 
41*89c4ff92SAndroid Build Coastguard Worker         /**
42*89c4ff92SAndroid Build Coastguard Worker          * @brief Default destructor
43*89c4ff92SAndroid Build Coastguard Worker          */
44*89c4ff92SAndroid Build Coastguard Worker         virtual ~IFrameOutput() = default;
45*89c4ff92SAndroid Build Coastguard Worker 
46*89c4ff92SAndroid Build Coastguard Worker     };
47*89c4ff92SAndroid Build Coastguard Worker 
48*89c4ff92SAndroid Build Coastguard Worker }// namespace common
49