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