|
|
|
@ -2133,47 +2133,7 @@ static void decode_residue(vorb *f, float *residue_buffers[], int ch, int n, int |
|
|
|
|
++class_set; |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
} else if (ch == 1) { |
|
|
|
|
while (pcount < part_read) { |
|
|
|
|
int z = r->begin + pcount*r->part_size; |
|
|
|
|
int c_inter = 0, p_inter = z; |
|
|
|
|
if (pass == 0) { |
|
|
|
|
Codebook *c = f->codebooks+r->classbook; |
|
|
|
|
int q; |
|
|
|
|
DECODE(q,f,c); |
|
|
|
|
if (q == EOP) goto done; |
|
|
|
|
#ifndef STB_VORBIS_DIVIDES_IN_RESIDUE |
|
|
|
|
part_classdata[0][class_set] = r->classdata[q]; |
|
|
|
|
#else |
|
|
|
|
for (i=classwords-1; i >= 0; --i) { |
|
|
|
|
classifications[0][i+pcount] = q % r->classifications; |
|
|
|
|
q /= r->classifications; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
for (i=0; i < classwords && pcount < part_read; ++i, ++pcount) { |
|
|
|
|
int z = r->begin + pcount*r->part_size; |
|
|
|
|
#ifndef STB_VORBIS_DIVIDES_IN_RESIDUE |
|
|
|
|
int c = part_classdata[0][class_set][i]; |
|
|
|
|
#else |
|
|
|
|
int c = classifications[0][pcount]; |
|
|
|
|
#endif |
|
|
|
|
int b = r->residue_books[c][pass]; |
|
|
|
|
if (b >= 0) { |
|
|
|
|
Codebook *book = f->codebooks + b; |
|
|
|
|
if (!codebook_decode_deinterleave_repeat(f, book, residue_buffers, ch, &c_inter, &p_inter, n, r->part_size)) |
|
|
|
|
goto done; |
|
|
|
|
} else { |
|
|
|
|
z += r->part_size; |
|
|
|
|
c_inter = 0; |
|
|
|
|
p_inter = z; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#ifndef STB_VORBIS_DIVIDES_IN_RESIDUE |
|
|
|
|
++class_set; |
|
|
|
|
#endif |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
} else if (ch > 2) { |
|
|
|
|
while (pcount < part_read) { |
|
|
|
|
int z = r->begin + pcount*r->part_size; |
|
|
|
|
int c_inter = z % ch, p_inter = z/ch; |
|
|
|
|