summaryrefslogtreecommitdiff
path: root/libavcodec/vp6.c
diff options
context:
space:
mode:
authorPeter Ross <pross@xvid.org>2008-06-22 13:20:41 +0000
committerAurelien Jacobs <aurel@gnuage.org>2008-06-22 13:20:41 +0000
commitd47f16074ff4678d0ea968318354fc8ca6e0ba90 (patch)
tree35888adfef0dcc87c6e8ee4c8027322c521a6c2b /libavcodec/vp6.c
parentd43cf68898cf577c76edd5483f52a63cefb667fb (diff)
vp6: ensure that huffman decoding table is sorted with descending symbol order
Previous code worked by pure luck with glibc qsort implementation. patch by Peter Ross pross _at_ xvid _dot_ org Originally committed as revision 13887 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/vp6.c')
-rw-r--r--libavcodec/vp6.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavcodec/vp6.c b/libavcodec/vp6.c
index 74c62ff66d..c1cd6fe64b 100644
--- a/libavcodec/vp6.c
+++ b/libavcodec/vp6.c
@@ -202,10 +202,11 @@ static void vp6_parse_vector_models(vp56_context_t *s)
model->vector_fdv[comp][node] = vp56_rac_gets_nn(c, 7);
}
+/* nodes must ascend by count, but with descending symbol order */
static int vp6_huff_cmp(const void *va, const void *vb)
{
const Node *a = va, *b = vb;
- return a->count >= b->count;
+ return (a->count - b->count)*16 + (b->sym - a->sym);
}
static void vp6_build_huff_tree(vp56_context_t *s, uint8_t coeff_model[],