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