1d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/* ------------------------------------------------------------------
2d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * Copyright (C) 1998-2009 PacketVideo
3d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber *
4d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * you may not use this file except in compliance with the License.
6d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * You may obtain a copy of the License at
7d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber *
8d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber *
10d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * Unless required by applicable law or agreed to in writing, software
11d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * express or implied.
14d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * See the License for the specific language governing permissions
15d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * and limitations under the License.
16d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * -------------------------------------------------------------------
17d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber */
18d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*
19d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
20d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
21d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber   PacketVideo Corp.
22d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber   MP3 Decoder Library
23d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
24d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber   Filename: pvmp3_mpeg2_get_scale_data.cpp
25d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
26d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber     Date: 09/21/2007
27d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
28d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
29d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber REVISION HISTORY
30d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
31d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
32d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber Description:
33d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
34d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
35d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber INPUT AND OUTPUT DEFINITIONS
36d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
37d9618f23226f46c752e56f712bc4b505117d8b4bAndreas HuberInput
38d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    mp3SideInfo     *si,                    side information
39d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    int32           gr,                     granule
40d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    int32           ch,                     channel
41d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    mp3Header       *info,                  mp3 header information
42d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    uint32          *scalefac_buffer,
43d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    uint32          *scalefac_IIP_buffer,
44d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    tbits           *pMainData               bit stream Data
45d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
46d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber Returns
47d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
48d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    uint32          *scalefac_buffer,       acquired scale band data
49d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    uint32          *scalefac_IIP_buffer,   auxiliary scale data
50d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
51d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
52d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
53d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber FUNCTION DESCRIPTION
54d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
55d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    get scale data for mpeg2 layer III LSF extension
56d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
57d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
58d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber REQUIREMENTS
59d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
60d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
61d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
62d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber REFERENCES
63d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
64d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber [1] ISO MPEG Audio Subgroup Software Simulation Group (1996)
65d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber     ISO 13818-3 MPEG-2 Audio Decoder - Lower Sampling Frequency Extension
66d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
67d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
68d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber PSEUDO-CODE
69d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
70d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
71d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber*/
72d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
73d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
74d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
75d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; INCLUDES
76d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
77d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
78d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#include "pvmp3_mpeg2_get_scale_data.h"
79d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#include "pvmp3_getbits.h"
80d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
81d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
82d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
83d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; MACROS
84d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Define module specific macros here
85d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
86d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
87d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
88d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
89d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; DEFINES
90d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Include all pre-processor statements here. Include conditional
91d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; compile variables also.
92d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
93d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
94d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
95d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; LOCAL FUNCTION DEFINITIONS
96d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Function Prototype declaration
97d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
98d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
99d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
100d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; LOCAL STORE/BUFFER/POINTER DEFINITIONS
101d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Variable declaration - defined here and used outside this module
102d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
103d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
104d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberconst uint32 nr_of_sfb_block[6][3][4] =
105d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{   {{ 6,  5, 5, 5}, {  9,  9,  9, 9}, { 6,  9,  9, 9}},
106d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {{ 6,  5, 7, 3}, {  9,  9, 12, 6}, { 6,  9, 12, 6}},
107d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {{11, 10, 0, 0}, { 18, 18,  0, 0}, {15, 18,  0, 0}},
108d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {{ 7,  7, 7, 0}, { 12, 12, 12, 0}, { 6, 15, 12, 0}},
109d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {{ 6,  6, 6, 3}, { 12,  9,  9, 6}, { 6, 12,  9, 6}},
110d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {{ 8,  8, 5, 0}, { 15, 12,  9, 0}, { 6, 18,  9, 0}}
111d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber};
112d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
113d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
114d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; EXTERNAL FUNCTION REFERENCES
115d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Declare functions defined elsewhere and referenced in this module
116d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
117d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
118d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
119d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
120d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Declare variables used in this module but defined elsewhere
121d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
122d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
123d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
124d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE
125d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
126d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
127d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubervoid pvmp3_mpeg2_get_scale_data(mp3SideInfo *si,
128d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                                int32        gr,
129d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                                int32        ch,
130d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                                mp3Header   *info,
131d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                                uint32      *scalefac_buffer,
132d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                                uint32      *scalefac_IIP_buffer,
133d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                                tmp3Bits    *pMainData)
134d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{
135d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    int16 i;
136d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    int16 j;
137d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    int16 k;
138d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    int16 blocktypenumber = 0;
139d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    int16 blocknumber = 0;
140d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
141d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    granuleInfo *gr_info = &(si->ch[ch].gran[gr]);
14284333e0475bc911adc16417f4ca327c975cf6c36Andreas Huber    uint32 scalefac_comp, int_scalefac_comp, new_slen[4] = { 0,0,0,0 };
143d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
144d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    scalefac_comp =  gr_info->scalefac_compress;
145d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
146d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
147d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
148d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    if ((((info->mode_ext &1)) && (ch == 1)))
149d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
150d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        /*   intensity_scale = scalefac_comp %2; */
151d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        int_scalefac_comp = scalefac_comp >> 1;
152d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
153d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        if (int_scalefac_comp  < 180)
154d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        {
155d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[0] = int_scalefac_comp  / 36;
156d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[1] = (int_scalefac_comp % 36) / 6;
157d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[2] = int_scalefac_comp % 6;
158d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            blocknumber = 3;
159d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        }
160d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        else if (int_scalefac_comp  < 244)
161d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        {
162d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            int_scalefac_comp -= 180;
163d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[0] = (int_scalefac_comp & 63) >> 4;
164d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[1] = (int_scalefac_comp & 15) >> 2;
165d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[2] =  int_scalefac_comp &  3;
166d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            blocknumber = 4;
167d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        }
168d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        else if (int_scalefac_comp  <= 255)
169d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        {
170d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            int_scalefac_comp -= 244;
171d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[0] = (int_scalefac_comp) / 3;
172d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[1] = (int_scalefac_comp) % 3;
173d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[2] = 0;
174d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            blocknumber = 5;
175d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        }
176d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        new_slen[3] = 0;
177d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        si->ch[ch].gran[gr].preflag = 0;
178d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    }
179d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    else
180d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
181d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        if (scalefac_comp < 400)
182d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        {
183d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[0] = (scalefac_comp >> 4) / 5;
184d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[1] = (scalefac_comp >> 4) % 5;
185d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[2] = (scalefac_comp & 15) >> 2 ;
186d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[3] = (scalefac_comp & 3);
187d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            si->ch[ch].gran[gr].preflag = 0;
188d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
189d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            blocknumber = 0;
190d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        }
191d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        else if (scalefac_comp  < 500)
192d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        {
193d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            scalefac_comp -= 400;
194d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[0] = (scalefac_comp >> 2) / 5;
195d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[1] = (scalefac_comp >> 2) % 5;
196d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[2] = scalefac_comp  & 3;
197d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[3] = 0;
198d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            si->ch[ch].gran[gr].preflag = 0;
199d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            blocknumber = 1;
200d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        }
201d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        else if (scalefac_comp  < 512)
202d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        {
203d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            scalefac_comp -= 500;
204d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[0] = scalefac_comp / 3;
205d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[1] = scalefac_comp % 3;
206d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[2] = 0 ;
207d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            new_slen[3] = 0;
208d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            si->ch[ch].gran[gr].preflag = 1;
209d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            blocknumber = 2;
210d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        }
211d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    }
212d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
213d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    if (gr_info->block_type == 2)
214d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
215d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        if (gr_info->mixed_block_flag)
216d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        {
217d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            blocktypenumber = 2;
218d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        }
219d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        else
220d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        {
221d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            blocktypenumber = 1;
222d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        }
223d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    }
224d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
225d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    k = 0;
226d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    for (i = 0; i < 4; i++)
227d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
228d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        if (new_slen[i])
229d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        {
230d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            for (j = 0; j < (int16)nr_of_sfb_block[blocknumber][blocktypenumber][i]; j++)
231d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            {
232d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                scalefac_buffer[k] =  getNbits(pMainData, new_slen[i]);
233d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                scalefac_IIP_buffer[k] = (1L << new_slen[i]) - 1;
234d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                k++;
235d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            }
236d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        }
237d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        else
238d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        {
239d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            for (j = 0; j < (int16)nr_of_sfb_block[blocknumber][blocktypenumber][i]; j++)
240d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            {
241d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                scalefac_buffer[k]     = 0;
242d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                scalefac_IIP_buffer[k] = 0;
243d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                k++;
244d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            }
245d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        }
246d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    }
247d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber}
248