xref: /aosp_15_r20/external/armnn/include/armnnDeserializer/IDeserializer.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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