1 /* ------------------------------------------------------------------ 2 * Copyright (C) 1998-2009 PacketVideo 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 * express or implied. 14 * See the License for the specific language governing permissions 15 * and limitations under the License. 16 * ------------------------------------------------------------------- 17 */ 18 /**************************************************************************************** 19 Portions of this file are derived from the following 3GPP standard: 20 21 3GPP TS 26.073 22 ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec 23 Available from http://www.3gpp.org 24 25 (C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC) 26 Permission to distribute, modify and use this file under the standard license 27 terms listed above has been obtained from the copyright holder. 28 ****************************************************************************************/ 29 /* 30 31 Pathname: .audio/gsm-amr/c/src/bitno_tab.c 32 33 ------------------------------------------------------------------------------ 34 REVISION HISTORY 35 36 Description: Define "const Word16 *bitno[N_MODES]" as "const Word16 *const 37 bitno[N_MODES]" 38 39 Description: Added #ifdef __cplusplus and removed "extern" from table 40 definition. 41 42 Description: Put "extern" back. 43 44 Who: Date: 45 Description: 46 47 ------------------------------------------------------------------------------ 48 INPUT AND OUTPUT DEFINITIONS 49 50 Inputs: 51 None 52 53 Local Stores/Buffers/Pointers Needed: 54 None 55 56 Global Stores/Buffers/Pointers Needed: 57 None 58 59 Outputs: 60 None 61 62 Pointers and Buffers Modified: 63 None 64 65 Local Stores Modified: 66 None 67 68 Global Stores Modified: 69 None 70 71 ------------------------------------------------------------------------------ 72 FUNCTION DESCRIPTION 73 74 File : bitno.tab 75 Purpose : Tables for bit2prm and prm2bit 76 77 ------------------------------------------------------------------------------ 78 REQUIREMENTS 79 80 None 81 82 ------------------------------------------------------------------------------ 83 REFERENCES 84 85 None 86 87 ------------------------------------------------------------------------------ 88 PSEUDO-CODE 89 90 91 ------------------------------------------------------------------------------ 92 RESOURCES USED 93 When the code is written for a specific target processor the 94 the resources used should be documented below. 95 96 STACK USAGE: [stack count for this module] + [variable to represent 97 stack usage for each subroutine called] 98 99 where: [stack usage variable] = stack usage for [subroutine 100 name] (see [filename].ext) 101 102 DATA MEMORY USED: x words 103 104 PROGRAM MEMORY USED: x words 105 106 CLOCK CYCLES: [cycle count equation for this module] + [variable 107 used to represent cycle count for each subroutine 108 called] 109 110 where: [cycle count variable] = cycle count for [subroutine 111 name] (see [filename].ext) 112 113 ------------------------------------------------------------------------------ 114 */ 115 116 117 /*---------------------------------------------------------------------------- 118 ; INCLUDES 119 ----------------------------------------------------------------------------*/ 120 #include "typedef.h" 121 #include "cnst.h" /* parameter sizes: MAX_PRM_SIZE */ 122 #include "mode.h" /* N_MODES */ 123 #include "bitno_tab.h" 124 125 126 /*--------------------------------------------------------------------------*/ 127 #ifdef __cplusplus 128 extern "C" 129 { 130 #endif 131 132 /*---------------------------------------------------------------------------- 133 ; MACROS 134 ; Define module specific macros here 135 ----------------------------------------------------------------------------*/ 136 137 138 /*---------------------------------------------------------------------------- 139 ; DEFINES 140 ; Include all pre-processor statements here. Include conditional 141 ; compile variables also. 142 ----------------------------------------------------------------------------*/ 143 144 /*---------------------------------------------------------------------------- 145 ; LOCAL FUNCTION DEFINITIONS 146 ; Function Prototype declaration 147 ----------------------------------------------------------------------------*/ 148 149 150 /*---------------------------------------------------------------------------- 151 ; LOCAL STORE/BUFFER/POINTER DEFINITIONS 152 ; Variable declaration - defined here and used outside this module 153 ----------------------------------------------------------------------------*/ 154 /* number of parameters per modes (values must be <= MAX_PRM_SIZE!) */ 155 const Word16 prmno[N_MODES] = 156 { 157 PRMNO_MR475, 158 PRMNO_MR515, 159 PRMNO_MR59, 160 PRMNO_MR67, 161 PRMNO_MR74, 162 PRMNO_MR795, 163 PRMNO_MR102, 164 PRMNO_MR122, 165 PRMNO_MRDTX 166 }; 167 168 /* number of parameters to first subframe per modes */ 169 const Word16 prmnofsf[N_MODES - 1] = 170 { 171 PRMNOFSF_MR475, 172 PRMNOFSF_MR515, 173 PRMNOFSF_MR59, 174 PRMNOFSF_MR67, 175 PRMNOFSF_MR74, 176 PRMNOFSF_MR795, 177 PRMNOFSF_MR102, 178 PRMNOFSF_MR122 179 }; 180 181 /* parameter sizes (# of bits), one table per mode */ 182 const Word16 bitno_MR475[PRMNO_MR475] = 183 { 184 8, 8, 7, /* LSP VQ */ 185 8, 7, 2, 8, /* first subframe */ 186 4, 7, 2, /* second subframe */ 187 4, 7, 2, 8, /* third subframe */ 188 4, 7, 2, /* fourth subframe */ 189 }; 190 191 const Word16 bitno_MR515[PRMNO_MR515] = 192 { 193 8, 8, 7, /* LSP VQ */ 194 8, 7, 2, 6, /* first subframe */ 195 4, 7, 2, 6, /* second subframe */ 196 4, 7, 2, 6, /* third subframe */ 197 4, 7, 2, 6, /* fourth subframe */ 198 }; 199 200 const Word16 bitno_MR59[PRMNO_MR59] = 201 { 202 8, 9, 9, /* LSP VQ */ 203 8, 9, 2, 6, /* first subframe */ 204 4, 9, 2, 6, /* second subframe */ 205 8, 9, 2, 6, /* third subframe */ 206 4, 9, 2, 6, /* fourth subframe */ 207 }; 208 209 const Word16 bitno_MR67[PRMNO_MR67] = 210 { 211 8, 9, 9, /* LSP VQ */ 212 8, 11, 3, 7, /* first subframe */ 213 4, 11, 3, 7, /* second subframe */ 214 8, 11, 3, 7, /* third subframe */ 215 4, 11, 3, 7, /* fourth subframe */ 216 }; 217 218 const Word16 bitno_MR74[PRMNO_MR74] = 219 { 220 8, 9, 9, /* LSP VQ */ 221 8, 13, 4, 7, /* first subframe */ 222 5, 13, 4, 7, /* second subframe */ 223 8, 13, 4, 7, /* third subframe */ 224 5, 13, 4, 7, /* fourth subframe */ 225 }; 226 227 const Word16 bitno_MR795[PRMNO_MR795] = 228 { 229 9, 9, 9, /* LSP VQ */ 230 8, 13, 4, 4, 5, /* first subframe */ 231 6, 13, 4, 4, 5, /* second subframe */ 232 8, 13, 4, 4, 5, /* third subframe */ 233 6, 13, 4, 4, 5, /* fourth subframe */ 234 }; 235 236 const Word16 bitno_MR102[PRMNO_MR102] = 237 { 238 8, 9, 9, /* LSP VQ */ 239 8, 1, 1, 1, 1, 10, 10, 7, 7, /* first subframe */ 240 5, 1, 1, 1, 1, 10, 10, 7, 7, /* second subframe */ 241 8, 1, 1, 1, 1, 10, 10, 7, 7, /* third subframe */ 242 5, 1, 1, 1, 1, 10, 10, 7, 7, /* fourth subframe */ 243 }; 244 245 const Word16 bitno_MR122[PRMNO_MR122] = 246 { 247 7, 8, 9, 8, 6, /* LSP VQ */ 248 9, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 5, /* first subframe */ 249 6, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 5, /* second subframe */ 250 9, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 5, /* third subframe */ 251 6, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 5 /* fourth subframe */ 252 }; 253 254 const Word16 bitno_MRDTX[PRMNO_MRDTX] = 255 { 256 3, 257 8, 9, 9, 258 6 259 }; 260 261 /* overall table with all parameter sizes for all modes */ 262 const Word16 * const bitno[N_MODES] = 263 { 264 bitno_MR475, 265 bitno_MR515, 266 bitno_MR59, 267 bitno_MR67, 268 bitno_MR74, 269 bitno_MR795, 270 bitno_MR102, 271 bitno_MR122, 272 bitno_MRDTX 273 }; 274 /*---------------------------------------------------------------------------- 275 ; EXTERNAL FUNCTION REFERENCES 276 ; Declare functions defined elsewhere and referenced in this module 277 ----------------------------------------------------------------------------*/ 278 279 280 /*---------------------------------------------------------------------------- 281 ; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES 282 ; Declare variables used in this module but defined elsewhere 283 ----------------------------------------------------------------------------*/ 284 285 286 /*--------------------------------------------------------------------------*/ 287 #ifdef __cplusplus 288 } 289 #endif 290 291 /*---------------------------------------------------------------------------- 292 ; FUNCTION CODE 293 ----------------------------------------------------------------------------*/ 294 295 /*---------------------------------------------------------------------------- 296 ; Define all local variables 297 ----------------------------------------------------------------------------*/ 298 299 300 /*---------------------------------------------------------------------------- 301 ; Function body here 302 ----------------------------------------------------------------------------*/ 303 304 305 /*---------------------------------------------------------------------------- 306 ; Return nothing or data or data pointer 307 ----------------------------------------------------------------------------*/ 308 309 310