1 /* 2 * Copyright (C) 2019 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 #ifndef ANDROID_ML_NN_RUNTIME_NEURAL_NETWORKS_EXTENSIONS_H 18 #define ANDROID_ML_NN_RUNTIME_NEURAL_NETWORKS_EXTENSIONS_H 19 20 #include "NeuralNetworks.h" 21 22 /****************************************************************** 23 * 24 * IMPORTANT NOTICE: 25 * 26 * This file is not intended for use by general developers -- only 27 * by OEM applications. 28 * 29 * Extensions source AND binary code relies on the definitions 30 * here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES. 31 * 32 * - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES) 33 * - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS 34 * - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY 35 * - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES 36 */ 37 38 __BEGIN_DECLS 39 40 #if __ANDROID_API__ >= __ANDROID_API_Q__ 41 42 /** 43 * Queries whether an extension is supported by the driver implementation of the specified device. 44 * 45 * @param device The representation of the specified device. 46 * @param extension The extension name. 47 * @param isExtensionSupported The boolean value indicating whether the extension is supported. 48 * 49 * @return ANEURALNETWORKS_NO_ERROR if successful. 50 * 51 * Available since API level 29. 52 */ 53 int ANeuralNetworksDevice_getExtensionSupport(const ANeuralNetworksDevice* device, 54 const char* extensionName, bool* isExtensionSupported) 55 __INTRODUCED_IN(29); 56 57 /** 58 * Creates an operand type from an extension name and an extension operand code. 59 * 60 * See {@link ANeuralNetworksModel} for information on multithreaded usage. 61 * 62 * Available since API level 29. 63 * 64 * @param model The model to contain the operand. 65 * @param extensionName The extension name. 66 * @param operandCodeWithinExtension The extension operand code. 67 * @param type The operand type. 68 * 69 * @return ANEURALNETWORKS_NO_ERROR if successful. 70 */ 71 int ANeuralNetworksModel_getExtensionOperandType(ANeuralNetworksModel* model, 72 const char* extensionName, 73 uint16_t operandCodeWithinExtension, int32_t* type) 74 __INTRODUCED_IN(29); 75 76 /** 77 * Creates an operation type from an extension name and an extension operation code. 78 * 79 * See {@link ANeuralNetworksModel} for information on multithreaded usage. 80 * 81 * Available since API level 29. 82 * 83 * @param model The model to contain the operation. 84 * @param extensionName The extension name. 85 * @param operationCodeWithinExtension The extension operation code. 86 * @param type The operation type. 87 * 88 * @return ANEURALNETWORKS_NO_ERROR if successful. 89 */ 90 int ANeuralNetworksModel_getExtensionOperationType(ANeuralNetworksModel* model, 91 const char* extensionName, 92 uint16_t operationCodeWithinExtension, 93 ANeuralNetworksOperationType* type) 94 __INTRODUCED_IN(29); 95 96 /** 97 * Sets extension operand parameters. 98 * 99 * Available since API level 29. 100 * 101 * @param model The model to be modified. 102 * @param index The index of the model operand we're setting. 103 * @param data A pointer to the extension operand data. 104 * The data does not have to outlive the call to this function. 105 * @param length The size in bytes of the data value. 106 * 107 * @return ANEURALNETWORKS_NO_ERROR if successful. 108 */ 109 int ANeuralNetworksModel_setOperandExtensionData(ANeuralNetworksModel* model, int32_t index, 110 const void* data, size_t length) 111 __INTRODUCED_IN(29); 112 113 #endif // __ANDROID_API__ >= __ANDROID_API_Q__ 114 115 __END_DECLS 116 117 #endif // ANDROID_ML_NN_RUNTIME_NEURAL_NETWORKS_EXTENSIONS_H 118