annotate vp56data.c @ 3990:746a60ba3177 libavcodec

enable CMOV_IS_FAST as its faster or equal speed on every cpu (duron, athlon, PM, P3) from which ive seen benchmarks, it might be slower on P4 but noone has posted benchmarks ...
author michael
date Wed, 11 Oct 2006 12:23:40 +0000
parents c8c591fe26f8
children 6a10cc9adb8a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3695
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
1 /**
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
2 * @file vp56data.c
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
3 * VP5 and VP6 compatible video decoder (common data)
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
4 *
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
5 * Copyright (C) 2006 Aurelien Jacobs <aurel@gnuage.org>
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
6 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3695
diff changeset
7 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3695
diff changeset
8 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3695
diff changeset
9 * FFmpeg is free software; you can redistribute it and/or
3695
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
10 * modify it under the terms of the GNU Lesser General Public
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
11 * License as published by the Free Software Foundation; either
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
12 * version 2.1 of the License, or (at your option) any later version.
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
13 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3695
diff changeset
14 * FFmpeg is distributed in the hope that it will be useful,
3695
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
17 * Lesser General Public License for more details.
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
18 *
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
19 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3695
diff changeset
20 * License along with FFmpeg; if not, write to the Free Software
3695
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
22 */
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
23
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
24 #include <inttypes.h>
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
25 #include "vp56data.h"
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
26
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
27 const uint8_t vp56_b6to3[] = { 0, 0, 0, 0, 1, 2 };
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
28 const uint8_t vp56_b6to4[] = { 0, 0, 1, 1, 2, 3 };
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
29
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
30 const uint8_t vp56_coeff_parse_table[6][11] = {
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
31 { 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
32 { 145, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
33 { 140, 148, 173, 0, 0, 0, 0, 0, 0, 0, 0 },
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
34 { 135, 140, 155, 176, 0, 0, 0, 0, 0, 0, 0 },
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
35 { 130, 134, 141, 157, 180, 0, 0, 0, 0, 0, 0 },
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
36 { 129, 130, 133, 140, 153, 177, 196, 230, 243, 254, 254 },
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
37 };
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
38
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
39 const uint8_t vp56_def_mb_types_stats[3][10][2] = {
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
40 { { 69, 42 }, { 1, 2 }, { 1, 7 }, { 44, 42 }, { 6, 22 },
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
41 { 1, 3 }, { 0, 2 }, { 1, 5 }, { 0, 1 }, { 0, 0 }, },
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
42 { { 229, 8 }, { 1, 1 }, { 0, 8 }, { 0, 0 }, { 0, 0 },
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
43 { 1, 2 }, { 0, 1 }, { 0, 0 }, { 1, 1 }, { 0, 0 }, },
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
44 { { 122, 35 }, { 1, 1 }, { 1, 6 }, { 46, 34 }, { 0, 0 },
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
45 { 1, 2 }, { 0, 1 }, { 0, 1 }, { 1, 1 }, { 0, 0 }, },
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
46 };
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
47
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
48 const vp56_tree_t vp56_pva_tree[] = {
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
49 { 8, 0},
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
50 { 4, 1},
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
51 { 2, 2}, {-0}, {-1},
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
52 { 2, 3}, {-2}, {-3},
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
53 { 4, 4},
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
54 { 2, 5}, {-4}, {-5},
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
55 { 2, 6}, {-6}, {-7},
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
56 };
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
57
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
58 const vp56_tree_t vp56_pc_tree[] = {
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
59 { 4, 6},
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
60 { 2, 7}, {-0}, {-1},
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
61 { 4, 8},
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
62 { 2, 9}, {-2}, {-3},
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
63 { 2,10}, {-4}, {-5},
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
64 };
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
65
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
66 const uint8_t vp56_coeff_bias[] = { 5, 7, 11, 19, 35, 67 };
6795c9e5f983 VP5 and VP6 video decoder
aurel
parents:
diff changeset
67 const uint8_t vp56_coeff_bit_length[] = { 0, 1, 2, 3, 4, 10 };