1f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/* ------------------------------------------------------------------
2f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * Copyright (C) 1998-2009 PacketVideo
3f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber *
4f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * you may not use this file except in compliance with the License.
6f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * You may obtain a copy of the License at
7f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber *
8f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber *
10f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * Unless required by applicable law or agreed to in writing, software
11f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * express or implied.
14f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * See the License for the specific language governing permissions
15f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * and limitations under the License.
16f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber * -------------------------------------------------------------------
17f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber */
18f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*
19f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
20f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Filename: get_sbr_startfreq.c
21f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
22f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
23f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber REVISION HISTORY
24f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
25f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
26f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Who:                                   Date: MM/DD/YYYY
27f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber Description:
28f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
29f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
30f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber INPUT AND OUTPUT DEFINITIONS
31f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
32f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
33f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
34f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
35f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber FUNCTION DESCRIPTION
36f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
37f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
38f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
39f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber REQUIREMENTS
40f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
41f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
42f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
43f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber REFERENCES
44f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
45f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberSC 29 Software Copyright Licencing Disclaimer:
46f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
47f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberThis software module was originally developed by
48f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber  Coding Technologies
49f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
50f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberand edited by
51f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber  -
52f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
53f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberin the course of development of the ISO/IEC 13818-7 and ISO/IEC 14496-3
54f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberstandards for reference purposes and its performance may not have been
55f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberoptimized. This software module is an implementation of one or more tools as
56f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberspecified by the ISO/IEC 13818-7 and ISO/IEC 14496-3 standards.
57f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberISO/IEC gives users free license to this software module or modifications
58f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberthereof for use in products claiming conformance to audiovisual and
59f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberimage-coding related ITU Recommendations and/or ISO/IEC International
60f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberStandards. ISO/IEC gives users the same free license to this software module or
61f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Hubermodifications thereof for research purposes and further ISO/IEC standardisation.
62f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberThose intending to use this software module in products are advised that its
63f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberuse may infringe existing patents. ISO/IEC have no liability for use of this
64f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Hubersoftware module or modifications thereof. Copyright is not released for
65f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberproducts that do not conform to audiovisual and image-coding related ITU
66f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberRecommendations and/or ISO/IEC International Standards.
67f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberThe original developer retains full right to modify and use the code for its
68f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberown purpose, assign or donate the code to a third party and to inhibit third
69f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberparties from using the code for products that do not conform to audiovisual and
70f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberimage-coding related ITU Recommendations and/or ISO/IEC International Standards.
71f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberThis copyright notice must be included in all copies or derivative works.
72f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberCopyright (c) ISO/IEC 2002.
73f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
74f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
75f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber PSEUDO-CODE
76f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
77f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber------------------------------------------------------------------------------
78f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber*/
79f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
80f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
81f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
82f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; INCLUDES
83f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
84f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber#include    "get_sbr_startfreq.h"
85f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
86f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
87f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; MACROS
88f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Define module specific macros here
89f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
90f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
91f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
92f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
93f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; DEFINES
94f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Include all pre-processor statements here. Include conditional
95f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; compile variables also.
96f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
97f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
98f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
99f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; LOCAL FUNCTION DEFINITIONS
100f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Function Prototype declaration
101f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
102f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
103f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
104f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; LOCAL STORE/BUFFER/POINTER DEFINITIONS
105f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Variable declaration - defined here and used outside this module
106f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
107f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huberconst Int v_offset[7][16] =
108f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber{
109f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    { -8, -7, -6, -5, -4, -3, -2, -1,  0,  1,  2,  3,  4,  5,  6,  7},
110f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    { -5, -4, -3, -2, -1,  0,  1,  2,  3,  4,  5,  6,  7,  9, 11, 13},
111f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    { -5, -3, -2, -1,  0,  1,  2,  3,  4,  5,  6,  7,  9, 11, 13, 16},
112f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    { -6, -4, -2, -1,  0,  1,  2,  3,  4,  5,  6,  7,  9, 11, 13, 16},
113f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    { -4, -2, -1,  0,  1,  2,  3,  4,  5,  6,  7,  9, 11, 13, 16, 20},
114f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    { -2, -1,  0,  1,  2,  3,  4,  5,  6,  7,  9, 11, 13, 16, 20, 24},
115f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    { 0,  1,  2,  3,  4,  5,  6,  7,  9, 11, 13, 16, 20, 24, 28, 33}
116f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber};
117f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
118f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
119f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; EXTERNAL FUNCTION REFERENCES
120f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Declare functions defined elsewhere and referenced in this module
121f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
122f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
123f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
124f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
125f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; Declare variables used in this module but defined elsewhere
126f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
127f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
128f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber/*----------------------------------------------------------------------------
129f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber; FUNCTION CODE
130f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber----------------------------------------------------------------------------*/
131f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
132f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas HuberInt get_sbr_startfreq(const Int32 fs,
133f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber                      const Int32 start_freq)
134f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber{
135f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    Int k0_min = 0;
136f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    Int32 index;
137f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
138f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
139f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    switch (fs)
140f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    {
141f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        case 16000:
142f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            index = 0;
143f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            k0_min = 24;
144f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            break;
145f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        case 22050:
146f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            index = 1;
147f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            k0_min = 17;
148f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            break;
149f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        case 24000:
150f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            index = 2;
151f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            k0_min = 16;
152f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            break;
153f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        case 32000:
154f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            index = 3;
155f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            k0_min = 16;
156f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            break;
157f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        case 44100:
158f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            index = 4;
159f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            k0_min = 12;
160f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            break;
161f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        case 48000:
162f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            index = 4;
163f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            k0_min = 11;
164f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            break;
165f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        case 64000:
166f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            index = 4;
167f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            k0_min = 10;
168f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            break;
169f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        case 88200:
170f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        case 96000:
171f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            index = 5;
172f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            k0_min = 7;
173f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            break;
174f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
175f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber        default:
176f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber            index = 6;
177f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    }
178f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber    return (k0_min + v_offset[index][start_freq]);
179f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
180f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber}
181f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
182f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
183f44de515d3b6098a0b585865c1a0c7b20d3075a6Andreas Huber
184