1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2017 Arm Ltd. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker #pragma once 6*89c4ff92SAndroid Build Coastguard Worker 7*89c4ff92SAndroid Build Coastguard Worker #include "armnn/Types.hpp" 8*89c4ff92SAndroid Build Coastguard Worker #include "armnn/NetworkFwd.hpp" 9*89c4ff92SAndroid Build Coastguard Worker #include "armnn/Tensor.hpp" 10*89c4ff92SAndroid Build Coastguard Worker #include "armnn/INetwork.hpp" 11*89c4ff92SAndroid Build Coastguard Worker 12*89c4ff92SAndroid Build Coastguard Worker #include <memory> 13*89c4ff92SAndroid Build Coastguard Worker #include <map> 14*89c4ff92SAndroid Build Coastguard Worker #include <vector> 15*89c4ff92SAndroid Build Coastguard Worker 16*89c4ff92SAndroid Build Coastguard Worker namespace armnnDeserializer 17*89c4ff92SAndroid Build Coastguard Worker { 18*89c4ff92SAndroid Build Coastguard Worker struct BindingPointInfo 19*89c4ff92SAndroid Build Coastguard Worker { 20*89c4ff92SAndroid Build Coastguard Worker armnn::LayerBindingId m_BindingId; 21*89c4ff92SAndroid Build Coastguard Worker armnn::TensorInfo m_TensorInfo; 22*89c4ff92SAndroid Build Coastguard Worker }; 23*89c4ff92SAndroid Build Coastguard Worker 24*89c4ff92SAndroid Build Coastguard Worker class IDeserializer; 25*89c4ff92SAndroid Build Coastguard Worker using IDeserializerPtr = std::unique_ptr<IDeserializer, void(*)(IDeserializer* parser)>; 26*89c4ff92SAndroid Build Coastguard Worker 27*89c4ff92SAndroid Build Coastguard Worker class IDeserializer 28*89c4ff92SAndroid Build Coastguard Worker { 29*89c4ff92SAndroid Build Coastguard Worker public: 30*89c4ff92SAndroid Build Coastguard Worker static IDeserializer* CreateRaw(); 31*89c4ff92SAndroid Build Coastguard Worker static IDeserializerPtr Create(); 32*89c4ff92SAndroid Build Coastguard Worker static void Destroy(IDeserializer* parser); 33*89c4ff92SAndroid Build Coastguard Worker 34*89c4ff92SAndroid Build Coastguard Worker /// Create an input network from binary file contents 35*89c4ff92SAndroid Build Coastguard Worker armnn::INetworkPtr CreateNetworkFromBinary(const std::vector<uint8_t>& binaryContent); 36*89c4ff92SAndroid Build Coastguard Worker 37*89c4ff92SAndroid Build Coastguard Worker /// Create an input network from a binary input stream 38*89c4ff92SAndroid Build Coastguard Worker armnn::INetworkPtr CreateNetworkFromBinary(std::istream& binaryContent); 39*89c4ff92SAndroid Build Coastguard Worker 40*89c4ff92SAndroid Build Coastguard Worker /// Retrieve binding info (layer id and tensor info) for the network input identified by 41*89c4ff92SAndroid Build Coastguard Worker /// the given layer name and layers id 42*89c4ff92SAndroid Build Coastguard Worker BindingPointInfo GetNetworkInputBindingInfo(unsigned int layerId, const std::string& name) const; 43*89c4ff92SAndroid Build Coastguard Worker 44*89c4ff92SAndroid Build Coastguard Worker /// Retrieve binding info (layer id and tensor info) for the network output identified by 45*89c4ff92SAndroid Build Coastguard Worker /// the given layer name and layers id 46*89c4ff92SAndroid Build Coastguard Worker BindingPointInfo GetNetworkOutputBindingInfo(unsigned int layerId, const std::string& name) const; 47*89c4ff92SAndroid Build Coastguard Worker 48*89c4ff92SAndroid Build Coastguard Worker private: 49*89c4ff92SAndroid Build Coastguard Worker IDeserializer(); 50*89c4ff92SAndroid Build Coastguard Worker ~IDeserializer(); 51*89c4ff92SAndroid Build Coastguard Worker 52*89c4ff92SAndroid Build Coastguard Worker class DeserializerImpl; 53*89c4ff92SAndroid Build Coastguard Worker std::unique_ptr<DeserializerImpl> pDeserializerImpl; 54*89c4ff92SAndroid Build Coastguard Worker }; 55*89c4ff92SAndroid Build Coastguard Worker } //namespace armnnDeserializer