//==============================================================================
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								// Copyright (c) 2019-2021 Qualcomm Technologies, Inc.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// All Rights Reserved.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Confidential and Proprietary - Qualcomm Technologies, Inc.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//==============================================================================
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifndef SNPE_UDO_BASE_H 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define SNPE_UDO_BASE_H 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  <stdint.h> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Provide values to use for API version.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define API_VERSION_MAJOR 1 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# define API_VERSION_MINOR 6 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define API_VERSION_TEENY 0 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** @addtogroup c_plus_plus_apis C++
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								@ {  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Defines a bitmask of enum values.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  uint32_t  SnpeUdo_Bitmask_t ; 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_Bitmask_t  Udo_Bitmask_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// A string of characters, rather than an array of bytes.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// Assumed to be UTF-8.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  char *  SnpeUdo_String_t ; 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_String_t  Udo_String_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// The maximum allowable length of a SnpeUdo_String_t in bytes,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// including null terminator. SNPE will truncate strings longer
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								// than this.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define SNPE_UDO_MAX_STRING_SIZE 1024 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  An  enum  which  holds  the  various  error  types . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  The  error  types  are  divided  to  classes  : 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  0  -  99     :  generic  errors 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  100  -  200  :  errors  related  to  configuration 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  enum 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// No Error
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_NO_ERROR                     =  0 ,           UDO_NO_ERROR                     =  0 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Unsupported value for core type
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_WRONG_CORE                   =  1 ,           UDO_WRONG_CORE                   =  1 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Invalid attribute/argument passed into UDO API
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_INVALID_ARGUMENT             =  2 ,           UDO_INVALID_ARGUMENT             =  2 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Unsupported feature error
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_UNSUPPORTED_FEATURE          =  3 ,           UDO_UNSUPPORTED_FEATURE          =  3 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Error relating to memory allocation
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_MEM_ALLOC_ERROR              =  4 ,           UDO_MEM_ALLOC_ERROR              =  4 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /* Configuration Specific errors */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// No op with given attributes available in library
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_WRONG_OPERATION              =  100 ,         UDO_WRONG_OPERATION              =  100 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Unsupported value for core type in UDO configuration
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_WRONG_CORE_TYPE              =  101 ,         UDO_WRONG_CORE_TYPE              =  101 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Wrong number of params in UDO definition
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_WRONG_NUM_OF_PARAMS          =  102 ,         UDO_WRONG_NUM_OF_PARAMS          =  102 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Wrong number of dimensions for tensor(s) in UDO definition
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_WRONG_NUM_OF_DIMENSIONS      =  103 ,         UDO_WRONG_NUM_OF_DIMENSIONS      =  103 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Wrong number of input tensors in UDO definition
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_WRONG_NUM_OF_INPUTS          =  104 ,         UDO_WRONG_NUM_OF_INPUTS          =  104 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Wrong number of output tensors in UDO definition
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_WRONG_NUM_OF_OUTPUTS         =  105 ,         UDO_WRONG_NUM_OF_OUTPUTS         =  105 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SNPE_UDO_PROGRAM_CACHE_NOT_FOUND      =  106 ,         UDO_PROGRAM_CACHE_NOT_FOUND      =  106 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SNPE_UDO_UNKNOWN_ERROR                =  0xFFFFFFFF ,  UDO_UNKNOWN_ERROR                =  0xFFFFFFFF 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_ErrorType_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_ErrorType_t  Udo_ErrorType_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  An  enum  which  holds  the  various  data  types . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  Designed  to  be  used  as  single  values  or  combined  into  a  bitfield  parameter 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  ( 0x1 ,  0x2 ,  0x4 ,  etc ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  \ n  FIXED_XX  types  are  targeted  for  data  in  tensors . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  \ n  UINT  /  INT  types  are  targeted  for  scalar  params 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  enum 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data type: 16-bit floating point
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_FLOAT_16        =  0x01 ,         UDO_DATATYPE_FLOAT_16        =  0x01 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data type: 32-bit floating point
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_FLOAT_32        =  0x02 ,         UDO_DATATYPE_FLOAT_32        =  0x02 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data type: 4-bit fixed point
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_FIXED_4         =  0x04 ,         UDO_DATATYPE_FIXED_4         =  0x04 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data type: 8-bit fixed point
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_FIXED_8         =  0x08 ,         UDO_DATATYPE_FIXED_8         =  0x08 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data type: 16-bit fixed point
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_FIXED_16        =  0x10 ,         UDO_DATATYPE_FIXED_16        =  0x10 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data type: 32-bit fixed point
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_FIXED_32        =  0x20 ,         UDO_DATATYPE_FIXED_32        =  0x20 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data type: 8-bit unsigned integer
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_UINT_8          =  0x100 ,        UDO_DATATYPE_UINT_8          =  0x100 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data type: 16-bit unsigned integer
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_UINT_16         =  0x200 ,        UDO_DATATYPE_UINT_16         =  0x200 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data type: 32-bit unsigned integer
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_UINT_32         =  0x400 ,        UDO_DATATYPE_UINT_32         =  0x400 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data type: 8-bit signed integer
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_INT_8           =  0x1000 ,       UDO_DATATYPE_INT_8           =  0x1000 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data type: 16-bit signed integer
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_INT_16          =  0x2000 ,       UDO_DATATYPE_INT_16          =  0x2000 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data type: 32-bit signed integer
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_INT_32          =  0x4000 ,       UDO_DATATYPE_INT_32          =  0x4000 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SNPE_UDO_DATATYPE_LAST            =  0xFFFFFFFF ,   UDO_DATATYPE_LAST            =  0xFFFFFFFF 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_DataType_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_DataType_t  Udo_DataType_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  An  enum  which  holds  the  various  layouts . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  Designed  to  be  used  as  single  values  or  combined  into  a  bitfield  parameter 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  ( 0x1 ,  0x2 ,  0x4 ,  etc ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  enum 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data layout (4D): NHWC (batch-height-width-channel)
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_LAYOUT_NHWC              =  0x01 ,         UDO_LAYOUT_NHWC              =  0x01 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data layout (4D): NCHW (batch-channel-height-width)
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_LAYOUT_NCHW              =  0x02 ,         UDO_LAYOUT_NCHW              =  0x02 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// data layout (5D): NDHWC (batch-dimension-height-width-channel)
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_LAYOUT_NDHWC             =  0x04 ,         UDO_LAYOUT_NDHWC             =  0x04 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SNPE_UDO_LAYOUT_GPU_OPTIMAL1      =  0x08 ,         UDO_LAYOUT_GPU_OPTIMAL1      =  0x08 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SNPE_UDO_LAYOUT_GPU_OPTIMAL2      =  0x10 ,         UDO_LAYOUT_GPU_OPTIMAL2      =  0x10 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SNPE_UDO_LAYOUT_DSP_OPTIMAL1      =  0x11 ,         UDO_LAYOUT_DSP_OPTIMAL1      =  0x11 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SNPE_UDO_LAYOUT_DSP_OPTIMAL2      =  0x12 ,         UDO_LAYOUT_DSP_OPTIMAL2      =  0x12 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   // Indicates no data will be allocated for this tensor.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   // Used to specify optional inputs/outputs positionally.
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_LAYOUT_NULL              =  0x13 ,         UDO_LAYOUT_NULL              =  0x13 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SNPE_UDO_LAYOUT_LAST              =  0xFFFFFFFF ,   UDO_LAYOUT_LAST              =  0xFFFFFFFF 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_TensorLayout_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_TensorLayout_t  Udo_TensorLayout_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  An  enum  which  holds  the  UDO  library  Core  type  . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  Designed  to  be  used  as  single  values  or  combined  into  a  bitfield  parameter 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  ( 0x1 ,  0x2 ,  0x4 ,  etc ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  enum 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Library target IP Core is undefined
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_CORETYPE_UNDEFINED    =  0x00 ,           UDO_CORETYPE_UNDEFINED    =  0x00 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Library target IP Core is CPU
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_CORETYPE_CPU          =  0x01 ,           UDO_CORETYPE_CPU          =  0x01 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Library target IP Core is GPU
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_CORETYPE_GPU          =  0x02 ,           UDO_CORETYPE_GPU          =  0x02 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Library target IP Core is DSP
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_CORETYPE_DSP          =  0x04 ,           UDO_CORETYPE_DSP          =  0x04 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SNPE_UDO_CORETYPE_LAST         =  0xFFFFFFFF ,     UDO_CORETYPE_LAST         =  0xFFFFFFFF 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_CoreType_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_CoreType_t  Udo_CoreType_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  An  enum  to  specify  the  parameter  type  :  Scalar  or  Tensor 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  enum 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// UDO static param type: scalar
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_PARAMTYPE_SCALAR  =  0x00 ,          UDO_PARAMTYPE_SCALAR  =  0x00 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// UDO static param type: string
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_PARAMTYPE_STRING  =  0x01 ,          UDO_PARAMTYPE_STRING  =  0x01 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// UDO static param type: tensor
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_PARAMTYPE_TENSOR  =  0x02 ,          UDO_PARAMTYPE_TENSOR  =  0x02 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SNPE_UDO_PARAMTYPE_LAST    =  0xFFFFFFFF ,    UDO_PARAMTYPE_LAST    =  0xFFFFFFFF 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_ParamType_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_ParamType_t  Udo_ParamType_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  *  An  enum  to  specify  quantization  type 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  enum 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Tensor Quantization type: NONE. Signifies unquantized tensor data
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_QUANTIZATION_NONE    =  0x00 ,          UDO_QUANTIZATION_NONE    =  0x00 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Tensor Quantization type: Tensorflow-style
  
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								   SNPE_UDO_QUANTIZATION_TF      =  0x01 ,          UDO_QUANTIZATION_TF      =  0x01 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SNPE_UDO_QUANTIZATION_QMN     =  0x02 ,          UDO_QUANTIZATION_QMN     =  0x02 , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SNPE_UDO_QUANTIZATION_LAST    =  0xFFFFFFFF ,    UDO_QUANTIZATION_LAST    =  0xFFFFFFFF 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_QuantizationType_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_QuantizationType_t  Udo_QuantizationType_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  which  is  used  to  provide  a  version  number  using  3  values  :  major ,  minor ,  teeny 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// version field: major - for backward-incompatible changes
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t  major ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// version field: minor - for backward-compatible feature updates
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t  minor ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// version field: teeny - for minor bug-fixes and clean-up
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t  teeny ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_Version_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_Version_t  Udo_Version_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  returned  from  version  query ,  contains  the  Library  version  and  API  version 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Version of UDO library. Controlled by users
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_Version_t  libVersion ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Version of SNPE UDO API used in compiling library. Determined by SNPE
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_Version_t  apiVersion ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_LibVersion_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  returned  from  version  query ,  contains  the  package  version 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Version of UDO API used in package.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   Udo_Version_t  apiVersion ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  Udo_PkgVersion_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  union  to  hold  the  value  of  a  generic  type .  Allows  defining  a  parameter  struct 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  in  a  generic  way ,  with  a  " value "  location  that  holds  the  data  regardless  of  the  type . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  union 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// value type: float
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   float     floatValue ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// value type: unsigned 32-bit integer
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t  uint32Value ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// value type: signed 32-bit integer
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   int32_t   int32Value ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// value type: unsigned 16-bit integer
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint16_t  uint16Value ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// value type: signed 16-bit integer
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   int16_t   int16Value ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// value type: unsigned 8-bit integer
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint8_t   uint8Value ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// value type: signed 8-bit integer
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   int8_t    int8Value ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_Value_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_Value_t  Udo_Value_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  which  defines  a  scalar  parameter  :  name ,  data  type ,  and  union  of  values 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// The parameter data type : float, int, etc.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_DataType_t   dataType ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// a union of specified type which holds the data
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_Value_t  dataValue ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_ScalarParam_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_ScalarParam_t  Udo_ScalarParam_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  which  defines  the  quantization  parameters  in  case  of  Tensorflow  style  quantization 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// minimum value of the quantization range of data
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   float  minValue ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// maximum value of the quantization range of data
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   float  maxValue ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_TFQuantize_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_TFQuantize_t  Udo_TFQuantize_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  which  defines  the  quantization  type ,  and  union  of  supported  quantization  structs 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// quantization type (only TF-style currently supported)
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_QuantizationType_t  quantizeType ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   union 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   { 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     /// TF-style min-max quantization ranges
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								     SnpeUdo_TFQuantize_t  TFParams ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   } ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_QuantizeParams_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_QuantizeParams_t  Udo_QuantizeParams_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  which  defines  the  datatype  associated  with  a  specified  core - type 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  This  should  be  used  to  denote  the  datatypes  for  a  single  tensor  info ,  depending 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  on  the  intended  execution  core . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /// The IP Core
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    SnpeUdo_CoreType_t      coreType ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /// The associated datatype for this coreType
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    SnpeUdo_DataType_t        dataType ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_PerCoreDatatype_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_PerCoreDatatype_t  Udo_PerCoreDatatype_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  which  defines  a  tensor  parameter  :  name ,  data  type ,  layout ,  quantization ,  more . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *         Also  holds  a  pointer  to  the  tensor  data . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// The maximum allowable dimensions of the tensor. The memory held in
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// _tensorData_ is guaranteed to be large enough for this.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t *                 maxDimensions ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// The current dimensions of the tensor. An operation may modify the current
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// dimensions of its output, to indicate cases where the output has been
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// "resized".
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Note that for static parameters, the current and max dimensions must
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// match.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t *                 currDimensions ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Quantization params applicable to the tensor. Currently only supports
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Tensorflow quantization style.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_QuantizeParams_t  quantizeParams ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Number of dimensions to the tensor: 3D, 4D, etc.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t                  tensorRank ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// The parameter data type: float, int, etc.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_DataType_t        dataType ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// The tensor layout type: NCHW, NHWC, etc.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_TensorLayout_t    layout ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Opaque pointer to tensor data. User may be required to re-interpret the pointer
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// based on core-specific definitions.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   void *                     tensorData ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_TensorParam_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_TensorParam_t  Udo_TensorParam_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  which  defines  tensor  information  for  activation  tensors  only 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  It  describes  an  activation  tensor  object  using  its  name ,  the  intended  layout  and  the  datatype 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  it  will  take  depending  on  the  intended  runtime  core .  The  repeated  field  indicates  that 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  that  the  tensor  info  describes  several  input / output  activation  tensors ,  which  all  share  the 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  aforementioned  properties . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /// The tensor name
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    SnpeUdo_String_t     tensorName ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /// The tensor layout type: NCHW, NHWC, etc.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    SnpeUdo_TensorLayout_t    layout ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /// The per core datatype: {SNPE_UDO_DATATYPE, SNPE_UDO_CORE_TYPE}
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    SnpeUdo_PerCoreDatatype_t *  perCoreDatatype ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /// A boolean field indicating that this tensorinfo will be repeated e.x for ops such as Concat or Split
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    bool  repeated ; 
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    /// A boolean field indicating whether input is static or not.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    bool  isStatic ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_TensorInfo_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_TensorInfo_t  Udo_TensorInfo_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  struct  which  defines  a  UDO  parameter  -  a  union  of  scalar ,  tensor  and  string  parameters 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Type is scalar or tensor
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  SnpeUdo_ParamType_t  paramType ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  /// The param name, for example : "offset", "activation_type"
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  SnpeUdo_String_t     paramName ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  union 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  { 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /// scalar param value
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    SnpeUdo_ScalarParam_t  scalarParam ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /// tensor param value
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    SnpeUdo_TensorParam_t  tensorParam ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /// string param value
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    SnpeUdo_String_t       stringParam ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  } ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_Param_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_Param_t  Udo_Param_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  which  defines  Operation  information  which  is  specific  for  IP  core  ( CPU ,  GPU ,  DSP  . . . ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// The IP Core
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_CoreType_t      udoCoreType ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Bitmask, defines supported internal calculation types (like FLOAT_32, etc)
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Based on SnpeUdo_DataType
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_Bitmask_t       operationCalculationTypes ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_OpCoreInfo_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_OpCoreInfo_t  Udo_OpCoreInfo_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  which  defines  the  common  and  core - specific  Operation  information 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Operation type
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_String_t       operationType ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// A bitmask describing which IP Cores (CPU, GPU, DSP ...) support this operation
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Translated based on SnpeUdo_CoreType
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_Bitmask_t      supportedByCores ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Number of static parameters defined by the op
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t               numOfStaticParams ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Array of static parameters. Can be scalar or tensor params
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_Param_t *       staticParams ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Number of input tensors this op receives
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t               numOfInputs ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Array of input tensor names to this operation
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_String_t *       inputNames ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Number of output tensors this op receives
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t               numOfOutputs ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Array of output tensor names to this operation
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_String_t *       outputNames ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Number of cores that the op can execute on
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t               numOfCoreInfo ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Array of per-core information entries
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_OpCoreInfo_t *  opPerCoreInfo ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    /// Array of input tensor infos for this operation
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_TensorInfo_t *      inputInfos ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Array of output tensor infos for this operation
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_TensorInfo_t *      outputInfos ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_OperationInfo_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_OperationInfo_t  Udo_OperationInfo_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  which  provides  the  implementation  library  info  :  type ,  name 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Defines the IP Core that this implementation library is targeting
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_CoreType_t      udoCoreType ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// library name. will be looked at in the standard library path
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_String_t        libraryName ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_LibraryInfo_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_LibraryInfo_t  Udo_LibraryInfo_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  A  struct  returned  by  the  registration  library  and  contains  information  on  the  UDO  package  : 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  name ,  operations ,  libraries ,  etc . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// A string containing the package name
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_String_t          packageName ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// A bitmask describing supported IP cores (CPU, GPU, DSP ...)
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Translated based on SnpeUdo_CoreType
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_Bitmask_t         supportedCoreTypes ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// The number of implementation libraries in the package
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t                 numOfImplementationLib ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Array of implementation libraries names/types
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_LibraryInfo_t *    implementationLib ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// A string containing all operation types separated by space
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_String_t          operationsString ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Number of supported operations
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t                 numOfOperations ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Array of Operation info structs. Each entry describes one
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Operation (name, params, inputs, outputs)
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_OperationInfo_t *  operationsInfo ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_RegInfo_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_RegInfo_t  Udo_RegInfo_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*  @ brief  A  struct  returned  by  the  implementation  library  and  contains  information  on  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*  specific  library :  name ,  IP  Core ,  operations ,  etc . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Defines the IP Core that this implementation library is targeting
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_CoreType_t      udoCoreType ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// A string containing the package name
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_String_t        packageName ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// A string containing all operation types separated by space
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_String_t        operationsString ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Number of supported operations
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t               numOfOperations ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_ImpInfo_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_ImpInfo_t  Udo_ImpInfo_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/**
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  @ brief  This  struct  defines  an  operation .  It  is  used  for  validation 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  or  creation  of  an  operation . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  In  case  of  using  it  for  creation ,  the  static  params  which  are  tensors 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  contain  pointers  to  the  real  data  ( weights ,  for  example ) ,  and  input / output 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  tensors  also  include  pointers  to  the  buffers  used . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// The IP Core that the operation is defined for - CPU, GPU, DSP...
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_CoreType_t       udoCoreType ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Operation type
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_String_t         operationType ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// The number of static parameters provided in the staticParams array.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// this number has to match the number provided by the UDO Registration library information
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t                numOfStaticParams ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Array of static parameters
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_Param_t *         staticParams ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// The number of input parameters provided in inputs array.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// this number has to match the number provided by the UDO Registration library information
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t                numOfInputs ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Array of input tensors, providing layout, data type, sizes, etc
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// When used to create an operation, also contains the initial location of the data
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_TensorParam_t *   inputs ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// The number of output parameters provided in inputs array.
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// this number has to match the number provided by the UDO Registration library information
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   uint32_t                numOfOutputs ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// Array of output tensors, providing layout, data type, sizes, etc
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   /// When used to create an operation, also contains the initial location of the data
  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								   SnpeUdo_TensorParam_t *   outputs ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  SnpeUdo_OpDefinition_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								typedef  SnpeUdo_OpDefinition_t  Udo_OpDefinition_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								/** @} */  /* end_addtogroup c_plus_plus_apis C++ */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif  //SNPE_UDO_BASE_H