return (a->count - b->count)*16 + (b->sym - a->sym);
}
-static void vp6_build_huff_tree(VP56Context *s, uint8_t coeff_model[],
- const uint8_t *map, unsigned size, VLC *vlc)
+static int vp6_build_huff_tree(VP56Context *s, uint8_t coeff_model[],
+ const uint8_t *map, unsigned size, VLC *vlc)
{
Node nodes[2*VP6_MAX_HUFF_SIZE], *tmp = &nodes[size];
int a, b, i;
}
free_vlc(vlc);
- /* then build the huffman tree accodring to probabilities */
- ff_huff_build_tree(s->avctx, vlc, size, nodes, vp6_huff_cmp,
- FF_HUFFMAN_FLAG_HNODE_FIRST);
+ /* then build the huffman tree according to probabilities */
+ return ff_huff_build_tree(s->avctx, vlc, size, nodes, vp6_huff_cmp,
+ FF_HUFFMAN_FLAG_HNODE_FIRST);
}
static void vp6_parse_coeff_models(VP56Context *s)
}
AVCodec ff_vp6_decoder = {
- "vp6",
- AVMEDIA_TYPE_VIDEO,
- CODEC_ID_VP6,
- sizeof(VP56Context),
- vp6_decode_init,
- NULL,
- vp6_decode_free,
- ff_vp56_decode_frame,
- CODEC_CAP_DR1,
+ .name = "vp6",
+ .type = AVMEDIA_TYPE_VIDEO,
+ .id = CODEC_ID_VP6,
+ .priv_data_size = sizeof(VP56Context),
+ .init = vp6_decode_init,
+ .close = vp6_decode_free,
+ .decode = ff_vp56_decode_frame,
+ .capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("On2 VP6"),
};
/* flash version, not flipped upside-down */
AVCodec ff_vp6f_decoder = {
- "vp6f",
- AVMEDIA_TYPE_VIDEO,
- CODEC_ID_VP6F,
- sizeof(VP56Context),
- vp6_decode_init,
- NULL,
- vp6_decode_free,
- ff_vp56_decode_frame,
- CODEC_CAP_DR1,
+ .name = "vp6f",
+ .type = AVMEDIA_TYPE_VIDEO,
+ .id = CODEC_ID_VP6F,
+ .priv_data_size = sizeof(VP56Context),
+ .init = vp6_decode_init,
+ .close = vp6_decode_free,
+ .decode = ff_vp56_decode_frame,
+ .capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("On2 VP6 (Flash version)"),
};
/* flash version, not flipped upside-down, with alpha channel */
AVCodec ff_vp6a_decoder = {
- "vp6a",
- AVMEDIA_TYPE_VIDEO,
- CODEC_ID_VP6A,
- sizeof(VP56Context),
- vp6_decode_init,
- NULL,
- vp6_decode_free,
- ff_vp56_decode_frame,
- CODEC_CAP_DR1,
+ .name = "vp6a",
+ .type = AVMEDIA_TYPE_VIDEO,
+ .id = CODEC_ID_VP6A,
+ .priv_data_size = sizeof(VP56Context),
+ .init = vp6_decode_init,
+ .close = vp6_decode_free,
+ .decode = ff_vp56_decode_frame,
+ .capabilities = CODEC_CAP_DR1,
.long_name = NULL_IF_CONFIG_SMALL("On2 VP6 (Flash version, with alpha channel)"),
};