inter_36_tab.cpp revision 1ead790eadd0e09a118308caccc7ac37d36f43f3
12c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* ------------------------------------------------------------------ 22c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Copyright (C) 1998-2009 PacketVideo 32c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 42c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Licensed under the Apache License, Version 2.0 (the "License"); 52c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * you may not use this file except in compliance with the License. 62c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * You may obtain a copy of the License at 72c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 82c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * http://www.apache.org/licenses/LICENSE-2.0 92c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Unless required by applicable law or agreed to in writing, software 112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * distributed under the License is distributed on an "AS IS" BASIS, 122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * express or implied. 142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * See the License for the specific language governing permissions 152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * and limitations under the License. 162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * ------------------------------------------------------------------- 172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent */ 182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**************************************************************************************** 192c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentPortions of this file are derived from the following 3GPP standard: 202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 3GPP TS 26.073 222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec 232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Available from http://www.3gpp.org 242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent(C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC) 262c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentPermission to distribute, modify and use this file under the standard license 272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentterms listed above has been obtained from the copyright holder. 282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent****************************************************************************************/ 292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent------------------------------------------------------------------------------ 312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Pathname: .audio/gsm-amr/c/src/inter_36_tab.c 332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Date: 02/01/2002 352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent------------------------------------------------------------------------------ 372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent REVISION HISTORY 382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Description: Changed tables from static const to just const. 402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Description: Added #ifdef __cplusplus and removed "extern" from table 422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent definition. Removed corresponding header file from Include 432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent section. 442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Description: Put "extern" back. 462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Description: 482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent------------------------------------------------------------------------------ 502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent INPUT AND OUTPUT DEFINITIONS 512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Inputs: 532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent None 542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Local Stores/Buffers/Pointers Needed: 562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent None 572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Global Stores/Buffers/Pointers Needed: 592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent None 602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Outputs: 622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent None 632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Pointers and Buffers Modified: 652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent None 662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Local Stores Modified: 682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent None 692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Global Stores Modified: 712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent None 722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent------------------------------------------------------------------------------ 742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent FUNCTION DESCRIPTION 752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent File : inter_36.tab 772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Purpose : Tables for interpolating the normalized correlation 782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent with 1/3 or 1/6 resolution. 792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent------------------------------------------------------------------------------ 822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent REQUIREMENTS 832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent None 852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent------------------------------------------------------------------------------ 872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent REFERENCES 882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent None 902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent------------------------------------------------------------------------------ 922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent PSEUDO-CODE 932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent------------------------------------------------------------------------------ 962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent RESOURCES USED 972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent When the code is written for a specific target processor the 982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent the resources used should be documented below. 992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent STACK USAGE: [stack count for this module] + [variable to represent 1012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent stack usage for each subroutine called] 1022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent where: [stack usage variable] = stack usage for [subroutine 1042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent name] (see [filename].ext) 1052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent DATA MEMORY USED: x words 1072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent PROGRAM MEMORY USED: x words 1092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent CLOCK CYCLES: [cycle count equation for this module] + [variable 1112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent used to represent cycle count for each subroutine 1122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent called] 1132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent where: [cycle count variable] = cycle count for [subroutine 1152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent name] (see [filename].ext) 1162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent------------------------------------------------------------------------------ 1182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent*/ 1192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*---------------------------------------------------------------------------- 1222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent; INCLUDES 1232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent----------------------------------------------------------------------------*/ 1242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "typedef.h" 1252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "cnst.h" 1262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "inter_36_tab.h" 1272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*--------------------------------------------------------------------------*/ 129#ifdef __cplusplus 130extern "C" 131{ 132#endif 133 134 /*---------------------------------------------------------------------------- 135 ; MACROS 136 ; Define module specific macros here 137 ----------------------------------------------------------------------------*/ 138 139 140 /*---------------------------------------------------------------------------- 141 ; DEFINES 142 ; Include all pre-processor statements here. Include conditional 143 ; compile variables also. 144 ----------------------------------------------------------------------------*/ 145#define UP_SAMP_MAX 6 146#define FIR_SIZE (UP_SAMP_MAX*L_INTER_SRCH+1) 147 148 /*---------------------------------------------------------------------------- 149 ; LOCAL FUNCTION DEFINITIONS 150 ; Function Prototype declaration 151 ----------------------------------------------------------------------------*/ 152 153 154 /*---------------------------------------------------------------------------- 155 ; LOCAL STORE/BUFFER/POINTER DEFINITIONS 156 ; Variable declaration - defined here and used outside this module 157 ----------------------------------------------------------------------------*/ 158 /* 1/6 resolution interpolation filter (-3 dB at 3600 Hz) */ 159 /* Note: The IS641 (7.4) 1/3 resolution filter is simply a subsampled 160 version of the 1/6 resolution filter, i.e. it uses 161 every second coefficient: 162 163 inter_3[k] = inter_6[2*k], 0 <= k <= 3*L_INTER_SRCH 164 */ 165 166 const Word16 inter_6[FIR_SIZE] = 167 { 168 29519, 169 28316, 24906, 19838, 13896, 7945, 2755, 170 -1127, -3459, -4304, -3969, -2899, -1561, 171 -336, 534, 970, 1023, 823, 516, 172 220, 0, -131, -194, -215, 0 173 }; 174 175 /*---------------------------------------------------------------------------- 176 ; EXTERNAL FUNCTION REFERENCES 177 ; Declare functions defined elsewhere and referenced in this module 178 ----------------------------------------------------------------------------*/ 179 180 181 /*---------------------------------------------------------------------------- 182 ; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES 183 ; Declare variables used in this module but defined elsewhere 184 ----------------------------------------------------------------------------*/ 185 186 187 /*--------------------------------------------------------------------------*/ 188#ifdef __cplusplus 189} 190#endif 191 192/*---------------------------------------------------------------------------- 193; FUNCTION CODE 194----------------------------------------------------------------------------*/ 195 196/*---------------------------------------------------------------------------- 197; Define all local variables 198----------------------------------------------------------------------------*/ 199 200 201/*---------------------------------------------------------------------------- 202; Function body here 203----------------------------------------------------------------------------*/ 204 205 206/*---------------------------------------------------------------------------- 207; Return nothing or data or data pointer 208----------------------------------------------------------------------------*/ 209 210 211 212 213 214