|
|
|
@ -1270,13 +1270,13 @@ static void neighbors(uint16 *x, int n, int *plow, int *phigh) |
|
|
|
|
// this has been repurposed so y is now the original index instead of y
|
|
|
|
|
typedef struct |
|
|
|
|
{ |
|
|
|
|
uint16 x,y; |
|
|
|
|
} stbv__point; |
|
|
|
|
uint16 x,id; |
|
|
|
|
} stbv__floor_ordering; |
|
|
|
|
|
|
|
|
|
static int STBV_CDECL point_compare(const void *p, const void *q) |
|
|
|
|
{ |
|
|
|
|
stbv__point *a = (stbv__point *) p; |
|
|
|
|
stbv__point *b = (stbv__point *) q; |
|
|
|
|
stbv__floor_ordering *a = (stbv__floor_ordering *) p; |
|
|
|
|
stbv__floor_ordering *b = (stbv__floor_ordering *) q; |
|
|
|
|
return a->x < b->x ? -1 : a->x > b->x; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -3874,7 +3874,7 @@ static int start_decoder(vorb *f) |
|
|
|
|
g->book_list[j] = get_bits(f,8); |
|
|
|
|
return error(f, VORBIS_feature_not_supported); |
|
|
|
|
} else { |
|
|
|
|
stbv__point p[31*8+2]; |
|
|
|
|
stbv__floor_ordering p[31*8+2]; |
|
|
|
|
Floor1 *g = &f->floor_config[i].floor1; |
|
|
|
|
int max_class = -1;
|
|
|
|
|
g->partitions = get_bits(f, 5); |
|
|
|
@ -3910,11 +3910,11 @@ static int start_decoder(vorb *f) |
|
|
|
|
// precompute the sorting
|
|
|
|
|
for (j=0; j < g->values; ++j) { |
|
|
|
|
p[j].x = g->Xlist[j]; |
|
|
|
|
p[j].y = j; |
|
|
|
|
p[j].id = j; |
|
|
|
|
} |
|
|
|
|
qsort(p, g->values, sizeof(p[0]), point_compare); |
|
|
|
|
for (j=0; j < g->values; ++j) |
|
|
|
|
g->sorted_order[j] = (uint8) p[j].y; |
|
|
|
|
g->sorted_order[j] = (uint8) p[j].id; |
|
|
|
|
// precompute the neighbors
|
|
|
|
|
for (j=2; j < g->values; ++j) { |
|
|
|
|
int low,hi; |
|
|
|
|