1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 /* 18 19 Most of NeuralNetworks.h has been stripped for simplicity. 20 We don't need any of the function declarations since 21 we call them all through dlopen/dlsym. 22 Operation codes are pulled directly from serialized models. 23 24 */ 25 26 #ifndef MINIMAL_NEURAL_NETWORKS_H 27 #define MINIMAL_NEURAL_NETWORKS_H 28 29 #include <stdint.h> 30 31 typedef enum { 32 ANEURALNETWORKS_NO_ERROR = 0, 33 ANEURALNETWORKS_OUT_OF_MEMORY = 1, 34 ANEURALNETWORKS_INCOMPLETE = 2, 35 ANEURALNETWORKS_UNEXPECTED_NULL = 3, 36 ANEURALNETWORKS_BAD_DATA = 4, 37 ANEURALNETWORKS_OP_FAILED = 5, 38 ANEURALNETWORKS_BAD_STATE = 6, 39 ANEURALNETWORKS_UNMAPPABLE = 7, 40 ANEURALNETWORKS_OUTPUT_INSUFFICIENT_SIZE = 8, 41 ANEURALNETWORKS_UNAVAILABLE_DEVICE = 9, 42 } ResultCode; 43 44 typedef enum { 45 ANEURALNETWORKS_FLOAT32 = 0, 46 ANEURALNETWORKS_INT32 = 1, 47 ANEURALNETWORKS_UINT32 = 2, 48 ANEURALNETWORKS_TENSOR_FLOAT32 = 3, 49 ANEURALNETWORKS_TENSOR_INT32 = 4, 50 ANEURALNETWORKS_TENSOR_QUANT8_ASYMM = 5, 51 ANEURALNETWORKS_BOOL = 6, 52 ANEURALNETWORKS_TENSOR_QUANT16_SYMM = 7, 53 ANEURALNETWORKS_TENSOR_FLOAT16 = 8, 54 ANEURALNETWORKS_TENSOR_BOOL8 = 9, 55 ANEURALNETWORKS_FLOAT16 = 10, 56 ANEURALNETWORKS_TENSOR_QUANT8_SYMM_PER_CHANNEL = 11, 57 ANEURALNETWORKS_TENSOR_QUANT16_ASYMM = 12, 58 ANEURALNETWORKS_TENSOR_QUANT8_SYMM = 13, 59 } OperandCode; 60 61 typedef enum { 62 ANEURALNETWORKS_PREFER_LOW_POWER = 0, 63 ANEURALNETWORKS_PREFER_FAST_SINGLE_ANSWER = 1, 64 ANEURALNETWORKS_PREFER_SUSTAINED_SPEED = 2, 65 } PreferenceCode; 66 67 typedef struct ANeuralNetworksMemory ANeuralNetworksMemory; 68 typedef struct ANeuralNetworksModel ANeuralNetworksModel; 69 typedef struct ANeuralNetworksDevice ANeuralNetworksDevice; 70 typedef struct ANeuralNetworksCompilation ANeuralNetworksCompilation; 71 typedef struct ANeuralNetworksExecution ANeuralNetworksExecution; 72 typedef struct ANeuralNetworksEvent ANeuralNetworksEvent; 73 74 typedef int32_t ANeuralNetworksOperationType; 75 76 typedef struct ANeuralNetworksOperandType { 77 int32_t type; 78 uint32_t dimensionCount; 79 const uint32_t* dimensions; 80 float scale; 81 int32_t zeroPoint; 82 } ANeuralNetworksOperandType; 83 84 #endif // MINIMAL_NEURAL_NETWORKS_H 85