88 if((t << 1) > size) mask = ~mask;
94 0, 640, 1184, 1748, 2298, 2426, 2554, 3066, 3578, 4106, 4618, 5196, 5708
102 static int vlc_initialized = 0;
110 static VLC_TYPE dscf0_table[560][2];
111 static VLC_TYPE dscf1_table[598][2];
114 static VLC_TYPE codes_table[5708][2];
142 if(vlc_initialized)
return 0;
145 band_vlc.
table = band_table;
151 q1_vlc.
table = q1_table;
156 q9up_vlc.
table = q9up_table;
162 scfi_vlc[0].
table = scfi0_table;
167 scfi_vlc[1].
table = scfi1_table;
173 dscf_vlc[0].
table = dscf0_table;
178 dscf_vlc[1].
table = dscf1_table;
184 q3_vlc[0].
table = q3_0_table;
190 q3_vlc[1].
table = q3_1_table;
197 for(i = 0; i < 2; i++){
204 q2_vlc[i].
table = &codes_table[vlc_offsets[2+i]];
210 quant_vlc[0][i].
table = &codes_table[vlc_offsets[4+i]];
215 quant_vlc[1][i].
table = &codes_table[vlc_offsets[6+i]];
220 quant_vlc[2][i].
table = &codes_table[vlc_offsets[8+i]];
225 quant_vlc[3][i].
table = &codes_table[vlc_offsets[10+i]];
226 quant_vlc[3][i].
table_allocated = vlc_offsets[11+i] - vlc_offsets[10+i];
240 int *got_frame_ptr,
AVPacket *avpkt)
242 const uint8_t *buf = avpkt->
data;
243 int buf_size = avpkt->
size;
246 int i, j, k, ch, cnt, res,
t;
249 int maxband, keyframe;
262 memset(c->
Q, 0,
sizeof(c->
Q));
272 if(maxband > 32) maxband -= 33;
280 last[0] = last[1] = 0;
281 for(i = maxband - 1; i >= 0; i--){
282 for(ch = 0; ch < 2; ch++){
284 if(last[ch] > 15) last[ch] -= 17;
285 bands[i].
res[ch] = last[ch];
292 for(i = 0; i < maxband; i++)
293 if(bands[i].res[0] || bands[i].res[1])
297 for(i = maxband - 1; i >= 0; i--)
298 if(bands[i].res[0] || bands[i].res[1]){
299 bands[i].
msf = mask & 1;
304 for(i = maxband; i < c->
maxbands; i++)
305 bands[i].res[0] = bands[i].res[1] = 0;
308 for(i = 0; i < 32; i++)
312 for(i = 0; i < maxband; i++){
313 if(bands[i].res[0] || bands[i].res[1]){
314 cnt = !!bands[i].
res[0] + !!bands[i].
res[1] - 1;
316 t =
get_vlc2(gb, scfi_vlc[cnt].table, scfi_vlc[cnt].
bits, 1);
317 if(bands[i].res[0]) bands[i].
scfi[0] = t >> (2 * cnt);
318 if(bands[i].res[1]) bands[i].
scfi[1] = t & 3;
323 for(i = 0; i < maxband; i++){
324 for(ch = 0; ch < 2; ch++){
325 if(!bands[i].res[ch])
continue;
334 bands[i].
scf_idx[ch][0] = ((bands[i].
scf_idx[ch][2] + t - 25) & 0x7F) - 6;
336 for(j = 0; j < 2; j++){
337 if((bands[i].scfi[ch] << j) & 2)
338 bands[i].scf_idx[ch][j + 1] = bands[i].scf_idx[ch][j];
343 bands[i].
scf_idx[ch][j + 1] = ((bands[i].
scf_idx[ch][j] + t - 25) & 0x7F) - 6;
350 for(ch = 0; ch < 2; ch++){
351 res = bands[i].
res[ch];
363 for(k = 0; k < SAMPLES_PER_BAND / 2; k++, t <<= 1)
364 c->
Q[ch][off + j + k] = (t & 0x20000) ? (
get_bits1(gb) << 1) - 1 : 0;
381 c->
Q[ch][off + j + 1] = t >> 4;
382 c->
Q[ch][off + j + 0] = (t & 8) ? (t & 0xF) - 16 : (t & 0xF);
392 c->
Q[ch][off + j] =
t;
393 cnt = (cnt >> 1) +
FFABS(c->
Q[ch][off + j]);
400 c->
Q[ch][off + j] <<= res - 9;
401 c->
Q[ch][off + j] |=
get_bits(gb, res - 9);
403 c->
Q[ch][off + j] -= (1 << (res - 2)) - 1;