static int huff_build10(VLC *vlc, uint8_t *len)
{
HuffEntry he[1024];
- uint32_t codes[1024];
- uint8_t bits[1024];
- uint16_t syms[1024];
uint32_t code;
int i;
code = 1;
for (i = 1023; i >= 0; i--) {
- codes[i] = code >> (32 - he[i].len);
- bits[i] = he[i].len;
- syms[i] = he[i].sym;
+ he[i].code = code >> (32 - he[i].len);
code += 0x80000000u >> (he[i].len - 1);
}
ff_free_vlc(vlc);
return ff_init_vlc_sparse(vlc, FFMIN(he[1023].len, 12), 1024,
- bits, sizeof(*bits), sizeof(*bits),
- codes, sizeof(*codes), sizeof(*codes),
- syms, sizeof(*syms), sizeof(*syms), 0);
+ &he[0].len, sizeof(he[0]), sizeof(he[0].len),
+ &he[0].code, sizeof(he[0]), sizeof(he[0].code),
+ &he[0].sym, sizeof(he[0]), sizeof(he[0].sym), 0);
}
static int huff_build12(VLC *vlc, uint8_t *len)
{
HuffEntry he[4096];
- uint32_t codes[4096];
- uint8_t bits[4096];
- uint16_t syms[4096];
uint32_t code;
int i;
code = 1;
for (i = 4095; i >= 0; i--) {
- codes[i] = code >> (32 - he[i].len);
- bits[i] = he[i].len;
- syms[i] = he[i].sym;
+ he[i].code = code >> (32 - he[i].len);
code += 0x80000000u >> (he[i].len - 1);
}
ff_free_vlc(vlc);
return ff_init_vlc_sparse(vlc, FFMIN(he[4095].len, 12), 4096,
- bits, sizeof(*bits), sizeof(*bits),
- codes, sizeof(*codes), sizeof(*codes),
- syms, sizeof(*syms), sizeof(*syms), 0);
+ &he[0].len, sizeof(he[0]), sizeof(he[0].len),
+ &he[0].code, sizeof(he[0]), sizeof(he[0].code),
+ &he[0].sym, sizeof(he[0]), sizeof(he[0].sym), 0);
}
static int huff_build(VLC *vlc, uint8_t *len)
{
HuffEntry he[256];
- uint32_t codes[256];
- uint8_t bits[256];
- uint8_t syms[256];
uint32_t code;
int i;
code = 1;
for (i = 255; i >= 0; i--) {
- codes[i] = code >> (32 - he[i].len);
- bits[i] = he[i].len;
- syms[i] = he[i].sym;
+ he[i].code = code >> (32 - he[i].len);
code += 0x80000000u >> (he[i].len - 1);
}
ff_free_vlc(vlc);
return ff_init_vlc_sparse(vlc, FFMIN(he[255].len, 12), 256,
- bits, sizeof(*bits), sizeof(*bits),
- codes, sizeof(*codes), sizeof(*codes),
- syms, sizeof(*syms), sizeof(*syms), 0);
+ &he[0].len, sizeof(he[0]), sizeof(he[0].len),
+ &he[0].code, sizeof(he[0]), sizeof(he[0].code),
+ &he[0].sym, sizeof(he[0]), sizeof(he[0].sym), 0);
}
static void magicyuv_median_pred16(uint16_t *dst, const uint16_t *src1,