- Bug fix on inter MCBPC table for inter+q.
[ffmpeg.git] / libavcodec / h263data.h
1
2 /* intra MCBPC, mb_type = (intra), then (intraq) */
3 static const UINT8 intra_MCBPC_code[8] = { 1, 1, 2, 3, 1, 1, 2, 3 };
4 static const UINT8 intra_MCBPC_bits[8] = { 1, 3, 3, 3, 4, 6, 6, 6 };
5
6 /* inter MCBPC, mb_type = (inter), (intra), (interq), (intraq), (inter4v) */
7 /* Changed the tables for interq, following the standard ** Juanjo ** */
8 static const UINT8 inter_MCBPC_code[20] = { 
9     1, 3, 2, 5, 
10     3, 4, 3, 3, 
11     3, 7, 6, 5,
12     4, 4, 3, 2,
13     2, 5, 4, 5,
14 };
15 static const UINT8 inter_MCBPC_bits[20] = { 
16     1, 4, 4, 6, 
17     5, 8, 8, 7,
18     3, 7, 7, 9,
19     6, 9, 9, 9,
20     3, 7, 7, 8,
21 };
22
23 /* This is the old table 
24 static const UINT8 inter_MCBPC_code[20] = { 
25     1, 3, 2, 5, 
26     3, 4, 3, 3, 
27     0, 1, 2, 3,
28     4, 4, 3, 2,
29     2, 5, 4, 5,
30 };
31 static const UINT8 inter_MCBPC_bits[20] = { 
32     1, 4, 4, 6, 
33     5, 8, 8, 7,
34     12, 12, 12, 12,
35     6, 9, 9, 9,
36     3, 7, 7, 8,
37 };*/
38
39 static const UINT8 cbpy_tab[16][2] =
40 {
41   {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
42   {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
43 };
44
45 static const UINT8 mvtab[33][2] =
46 {
47   {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
48   {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
49   {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
50   {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
51   {2,12}
52 };
53
54 /* third non intra table */
55 const UINT16 inter_vlc[103][2] = {
56 { 0x2, 2 },{ 0xf, 4 },{ 0x15, 6 },{ 0x17, 7 },
57 { 0x1f, 8 },{ 0x25, 9 },{ 0x24, 9 },{ 0x21, 10 },
58 { 0x20, 10 },{ 0x7, 11 },{ 0x6, 11 },{ 0x20, 11 },
59 { 0x6, 3 },{ 0x14, 6 },{ 0x1e, 8 },{ 0xf, 10 },
60 { 0x21, 11 },{ 0x50, 12 },{ 0xe, 4 },{ 0x1d, 8 },
61 { 0xe, 10 },{ 0x51, 12 },{ 0xd, 5 },{ 0x23, 9 },
62 { 0xd, 10 },{ 0xc, 5 },{ 0x22, 9 },{ 0x52, 12 },
63 { 0xb, 5 },{ 0xc, 10 },{ 0x53, 12 },{ 0x13, 6 },
64 { 0xb, 10 },{ 0x54, 12 },{ 0x12, 6 },{ 0xa, 10 },
65 { 0x11, 6 },{ 0x9, 10 },{ 0x10, 6 },{ 0x8, 10 },
66 { 0x16, 7 },{ 0x55, 12 },{ 0x15, 7 },{ 0x14, 7 },
67 { 0x1c, 8 },{ 0x1b, 8 },{ 0x21, 9 },{ 0x20, 9 },
68 { 0x1f, 9 },{ 0x1e, 9 },{ 0x1d, 9 },{ 0x1c, 9 },
69 { 0x1b, 9 },{ 0x1a, 9 },{ 0x22, 11 },{ 0x23, 11 },
70 { 0x56, 12 },{ 0x57, 12 },{ 0x7, 4 },{ 0x19, 9 },
71 { 0x5, 11 },{ 0xf, 6 },{ 0x4, 11 },{ 0xe, 6 },
72 { 0xd, 6 },{ 0xc, 6 },{ 0x13, 7 },{ 0x12, 7 },
73 { 0x11, 7 },{ 0x10, 7 },{ 0x1a, 8 },{ 0x19, 8 },
74 { 0x18, 8 },{ 0x17, 8 },{ 0x16, 8 },{ 0x15, 8 },
75 { 0x14, 8 },{ 0x13, 8 },{ 0x18, 9 },{ 0x17, 9 },
76 { 0x16, 9 },{ 0x15, 9 },{ 0x14, 9 },{ 0x13, 9 },
77 { 0x12, 9 },{ 0x11, 9 },{ 0x7, 10 },{ 0x6, 10 },
78 { 0x5, 10 },{ 0x4, 10 },{ 0x24, 11 },{ 0x25, 11 },
79 { 0x26, 11 },{ 0x27, 11 },{ 0x58, 12 },{ 0x59, 12 },
80 { 0x5a, 12 },{ 0x5b, 12 },{ 0x5c, 12 },{ 0x5d, 12 },
81 { 0x5e, 12 },{ 0x5f, 12 },{ 0x3, 7 },
82 };
83
84 const INT8 inter_level[102] = {
85   1,  2,  3,  4,  5,  6,  7,  8,
86   9, 10, 11, 12,  1,  2,  3,  4,
87   5,  6,  1,  2,  3,  4,  1,  2,
88   3,  1,  2,  3,  1,  2,  3,  1,
89   2,  3,  1,  2,  1,  2,  1,  2,
90   1,  2,  1,  1,  1,  1,  1,  1,
91   1,  1,  1,  1,  1,  1,  1,  1,
92   1,  1,  1,  2,  3,  1,  2,  1,
93   1,  1,  1,  1,  1,  1,  1,  1,
94   1,  1,  1,  1,  1,  1,  1,  1,
95   1,  1,  1,  1,  1,  1,  1,  1,
96   1,  1,  1,  1,  1,  1,  1,  1,
97   1,  1,  1,  1,  1,  1,
98 };
99
100 const INT8 inter_run[102] = {
101   0,  0,  0,  0,  0,  0,  0,  0,
102   0,  0,  0,  0,  1,  1,  1,  1,
103   1,  1,  2,  2,  2,  2,  3,  3,
104   3,  4,  4,  4,  5,  5,  5,  6,
105   6,  6,  7,  7,  8,  8,  9,  9,
106  10, 10, 11, 12, 13, 14, 15, 16,
107  17, 18, 19, 20, 21, 22, 23, 24,
108  25, 26,  0,  0,  0,  1,  1,  2,
109   3,  4,  5,  6,  7,  8,  9, 10,
110  11, 12, 13, 14, 15, 16, 17, 18,
111  19, 20, 21, 22, 23, 24, 25, 26,
112  27, 28, 29, 30, 31, 32, 33, 34,
113  35, 36, 37, 38, 39, 40,
114 };
115
116 static RLTable rl_inter = {
117     102,
118     58,
119     inter_vlc,
120     inter_run,
121     inter_level,
122 };
123
124 static const UINT16 h263_format[8][2] = {
125     { 0, 0 },
126     { 128, 96 },
127     { 176, 144 },
128     { 352, 288 },
129     { 704, 576 },
130     { 1408, 1152 },
131 };
132