1 /* 2 * Copyright (C) 2004-2010 NXP Software 3 * Copyright (C) 2010 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 /****************************************************************************************/ 19 /* */ 20 /* Header file defining the standard LifeVibes types for use in the application layer */ 21 /* interface of all LifeVibes modules */ 22 /* */ 23 /****************************************************************************************/ 24 25 #ifndef LVM_TYPES_H 26 #define LVM_TYPES_H 27 28 #ifdef __cplusplus 29 extern "C" { 30 #endif /* __cplusplus */ 31 32 #include <stdint.h> 33 34 /****************************************************************************************/ 35 /* */ 36 /* definitions */ 37 /* */ 38 /****************************************************************************************/ 39 40 #define LVM_NULL 0 /* NULL pointer */ 41 42 #define LVM_TRUE 1 /* Booleans */ 43 #define LVM_FALSE 0 44 45 #define LVM_MAXINT_8 127 /* Maximum positive integer size */ 46 #define LVM_MAXINT_16 32767 47 #define LVM_MAXINT_32 2147483647 48 #define LVM_MAXENUM 2147483647 49 50 #define LVM_MODULEID_MASK 0xFF00 /* Mask to extract the calling module ID from callbackId */ 51 #define LVM_EVENTID_MASK 0x00FF /* Mask to extract the callback event from callbackId */ 52 53 /* Memory table*/ 54 #define LVM_MEMREGION_PERSISTENT_SLOW_DATA 0 /* Offset to the instance memory region */ 55 #define LVM_MEMREGION_PERSISTENT_FAST_DATA 1 /* Offset to the persistent data memory region */ 56 #define LVM_MEMREGION_PERSISTENT_FAST_COEF 2 /* Offset to the persistent coefficient memory region */ 57 #define LVM_MEMREGION_TEMPORARY_FAST 3 /* Offset to temporary memory region */ 58 59 #define LVM_NR_MEMORY_REGIONS 4 /* Number of memory regions */ 60 61 /* Memory partition type */ 62 #define LVM_MEM_PARTITION0 0 /* 1st memory partition */ 63 #define LVM_MEM_PARTITION1 1 /* 2nd memory partition */ 64 #define LVM_MEM_PARTITION2 2 /* 3rd memory partition */ 65 #define LVM_MEM_PARTITION3 3 /* 4th memory partition */ 66 67 /* Use type */ 68 #define LVM_MEM_PERSISTENT 0 /* Persistent memory type */ 69 #define LVM_MEM_SCRATCH 4 /* Scratch memory type */ 70 71 /* Access type */ 72 #define LVM_MEM_INTERNAL 0 /* Internal (fast) access memory */ 73 #define LVM_MEM_EXTERNAL 8 /* External (slow) access memory */ 74 75 /* Platform specific */ 76 #define LVM_PERSISTENT (LVM_MEM_PARTITION0+LVM_MEM_PERSISTENT+LVM_MEM_INTERNAL) 77 #define LVM_PERSISTENT_DATA (LVM_MEM_PARTITION1+LVM_MEM_PERSISTENT+LVM_MEM_INTERNAL) 78 #define LVM_PERSISTENT_COEF (LVM_MEM_PARTITION2+LVM_MEM_PERSISTENT+LVM_MEM_INTERNAL) 79 #define LVM_SCRATCH (LVM_MEM_PARTITION3+LVM_MEM_SCRATCH+LVM_MEM_INTERNAL) 80 81 /****************************************************************************************/ 82 /* */ 83 /* Basic types */ 84 /* */ 85 /****************************************************************************************/ 86 87 typedef char LVM_CHAR; /* ASCII character */ 88 89 typedef int8_t LVM_INT8; /* Signed 8-bit word */ 90 typedef uint8_t LVM_UINT8; /* Unsigned 8-bit word */ 91 92 typedef int16_t LVM_INT16; /* Signed 16-bit word */ 93 typedef uint16_t LVM_UINT16; /* Unsigned 16-bit word */ 94 95 typedef int32_t LVM_INT32; /* Signed 32-bit word */ 96 typedef uint32_t LVM_UINT32; /* Unsigned 32-bit word */ 97 typedef int64_t LVM_INT64; /* Signed 64-bit word */ 98 99 #ifdef BUILD_FLOAT 100 101 #define LVM_MAXFLOAT 1.f 102 103 typedef float LVM_FLOAT; /* single precision floating point */ 104 105 // If NATIVE_FLOAT_BUFFER is defined, we expose effects as floating point format; 106 // otherwise we expose as integer 16 bit and translate to float for the effect libraries. 107 // Hence, NATIVE_FLOAT_BUFFER should only be enabled under BUILD_FLOAT compilation. 108 109 #define NATIVE_FLOAT_BUFFER 110 111 #endif // BUILD_FLOAT 112 113 // Select whether we expose int16_t or float buffers. 114 #ifdef NATIVE_FLOAT_BUFFER 115 116 #define EFFECT_BUFFER_FORMAT AUDIO_FORMAT_PCM_FLOAT 117 typedef float effect_buffer_t; 118 119 #else // NATIVE_FLOAT_BUFFER 120 121 #define EFFECT_BUFFER_FORMAT AUDIO_FORMAT_PCM_16_BIT 122 typedef int16_t effect_buffer_t; 123 124 #endif // NATIVE_FLOAT_BUFFER 125 126 #ifdef SUPPORT_MC 127 #define LVM_MAX_CHANNELS 8 // FCC_8 128 #else 129 #define LVM_MAX_CHANNELS 2 // FCC_2 130 #endif 131 132 /****************************************************************************************/ 133 /* */ 134 /* Standard Enumerated types */ 135 /* */ 136 /****************************************************************************************/ 137 138 /* Operating mode */ 139 typedef enum 140 { 141 LVM_MODE_OFF = 0, 142 LVM_MODE_ON = 1, 143 LVM_MODE_DUMMY = LVM_MAXENUM 144 } LVM_Mode_en; 145 146 147 /* Format */ 148 typedef enum 149 { 150 LVM_STEREO = 0, 151 LVM_MONOINSTEREO = 1, 152 LVM_MONO = 2, 153 #ifdef SUPPORT_MC 154 LVM_MULTICHANNEL = 3, 155 #endif 156 LVM_SOURCE_DUMMY = LVM_MAXENUM 157 } LVM_Format_en; 158 159 160 /* LVM sampling rates */ 161 typedef enum 162 { 163 LVM_FS_8000 = 0, 164 LVM_FS_11025 = 1, 165 LVM_FS_12000 = 2, 166 LVM_FS_16000 = 3, 167 LVM_FS_22050 = 4, 168 LVM_FS_24000 = 5, 169 LVM_FS_32000 = 6, 170 LVM_FS_44100 = 7, 171 LVM_FS_48000 = 8, 172 #ifdef HIGHER_FS 173 LVM_FS_88200 = 9, 174 LVM_FS_96000 = 10, 175 LVM_FS_176400 = 11, 176 LVM_FS_192000 = 12, 177 #endif 178 LVM_FS_INVALID = LVM_MAXENUM-1, 179 LVM_FS_DUMMY = LVM_MAXENUM 180 } LVM_Fs_en; 181 182 183 /* Memory Types */ 184 typedef enum 185 { 186 LVM_PERSISTENT_SLOW_DATA = LVM_MEMREGION_PERSISTENT_SLOW_DATA, 187 LVM_PERSISTENT_FAST_DATA = LVM_MEMREGION_PERSISTENT_FAST_DATA, 188 LVM_PERSISTENT_FAST_COEF = LVM_MEMREGION_PERSISTENT_FAST_COEF, 189 LVM_TEMPORARY_FAST = LVM_MEMREGION_TEMPORARY_FAST, 190 LVM_MEMORYTYPE_DUMMY = LVM_MAXENUM 191 } LVM_MemoryTypes_en; 192 193 194 /* Memory region definition */ 195 typedef struct 196 { 197 LVM_UINT32 Size; /* Region size in bytes */ 198 LVM_MemoryTypes_en Type; /* Region type */ 199 void *pBaseAddress; /* Pointer to the region base address */ 200 } LVM_MemoryRegion_st; 201 202 203 /* Memory table containing the region definitions */ 204 typedef struct 205 { 206 LVM_MemoryRegion_st Region[LVM_NR_MEMORY_REGIONS]; /* One definition for each region */ 207 } LVM_MemoryTable_st; 208 209 210 /****************************************************************************************/ 211 /* */ 212 /* Standard Function Prototypes */ 213 /* */ 214 /****************************************************************************************/ 215 typedef LVM_INT32 (*LVM_Callback)(void *pCallbackData, /* Pointer to the callback data structure */ 216 void *pGeneralPurpose, /* General purpose pointer (e.g. to a data structure needed in the callback) */ 217 LVM_INT16 GeneralPurpose ); /* General purpose variable (e.g. to be used as callback ID) */ 218 219 220 /****************************************************************************************/ 221 /* */ 222 /* End of file */ 223 /* */ 224 /****************************************************************************************/ 225 226 #ifdef __cplusplus 227 } 228 #endif /* __cplusplus */ 229 230 #endif /* LVM_TYPES_H */ 231