From bc5f784d34a5315748b56cecb4674f4e546da2cd Mon Sep 17 00:00:00 2001 From: kevmay01 Date: Thu, 30 Aug 2018 12:34:39 +0100 Subject: IVGCVSW-1770: Refactor ModelToINetworkConverter to allow conversion of HAL1.1 operators Change-Id: I9b10f0a9c88344df108b2325c0233f9660fa6b7c --- ModelToINetworkConverter.hpp | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'ModelToINetworkConverter.hpp') diff --git a/ModelToINetworkConverter.hpp b/ModelToINetworkConverter.hpp index f0e28970..6fdcf6bd 100644 --- a/ModelToINetworkConverter.hpp +++ b/ModelToINetworkConverter.hpp @@ -33,13 +33,28 @@ enum class ConversionResult UnsupportedFeature }; +struct HalVersion_1_0 +{ + using Model = ::android::hardware::neuralnetworks::V1_0::Model; +}; + +#if defined(ARMNN_ANDROID_NN_V1_1) +struct HalVersion_1_1 +{ + using Model = ::android::hardware::neuralnetworks::V1_1::Model; +}; +#endif + // A helper performing the conversion from an AndroidNN driver Model representation, // to an armnn::INetwork object +template class ModelToINetworkConverter { public: + using HalModel = typename HalVersion::Model; + ModelToINetworkConverter(armnn::Compute compute, - const ::android::hardware::neuralnetworks::V1_0::Model& model, + const HalModel& model, const std::set& forcedUnsupportedOperations); ConversionResult GetConversionResult() const { return m_ConversionResult; } @@ -52,6 +67,10 @@ public: private: void Convert(); +#if defined(ARMNN_ANDROID_NN_V1_1) + bool ConvertOperation(const ::android::hardware::neuralnetworks::V1_1::Operation& operation); +#endif + bool ConvertOperation(const ::android::hardware::neuralnetworks::V1_0::Operation& operation); bool ConvertAdd(const ::android::hardware::neuralnetworks::V1_0::Operation& operation); @@ -112,7 +131,7 @@ private: const Operand* GetOutputOperand(const ::android::hardware::neuralnetworks::V1_0::Operation& operation, uint32_t outputIndex) const; - template + template bool GetInputScalar(const ::android::hardware::neuralnetworks::V1_0::Operation& operation, uint32_t inputIndex, OperandType type, T& outValue) const; @@ -172,9 +191,9 @@ private: // Input data - armnn::Compute m_Compute; - const ::android::hardware::neuralnetworks::V1_0::Model& m_Model; - const std::set& m_ForcedUnsupportedOperations; + armnn::Compute m_Compute; + const HalModel& m_Model; + const std::set& m_ForcedUnsupportedOperations; // Output data armnn::INetworkPtr m_Network; -- cgit v1.2.1