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