840d64aa12550f9b509f3c4fc30dbe74def0df81
[ffmpeg.git] / libavcodec / h263data.h
1
2 /* intra MCBPC, mb_type = (intra), then (intraq) */
3 const uint8_t intra_MCBPC_code[8] = { 1, 1, 2, 3, 1, 1, 2, 3 };
4 const uint8_t 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 and inter4v+q, following the standard ** Juanjo ** */
8 const uint8_t inter_MCBPC_code[25] = { 
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     1, /* Stuffing */
15     2, 12, 14, 15,
16 };
17 const uint8_t inter_MCBPC_bits[25] = { 
18     1, 4, 4, 6, 
19     5, 8, 8, 7,
20     3, 7, 7, 9,
21     6, 9, 9, 9,
22     3, 7, 7, 8,
23     9, /* Stuffing */
24     11, 13, 13, 13,
25 };
26
27 /* This is the old table 
28 static const uint8_t inter_MCBPC_code[20] = { 
29     1, 3, 2, 5, 
30     3, 4, 3, 3, 
31     0, 1, 2, 3,
32     4, 4, 3, 2,
33     2, 5, 4, 5,
34 };
35 static const uint8_t inter_MCBPC_bits[20] = { 
36     1, 4, 4, 6, 
37     5, 8, 8, 7,
38     12, 12, 12, 12,
39     6, 9, 9, 9,
40     3, 7, 7, 8,
41 };*/
42
43 const uint8_t cbpy_tab[16][2] =
44 {
45   {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
46   {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
47 };
48
49 const uint8_t mvtab[33][2] =
50 {
51   {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
52   {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
53   {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
54   {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
55   {2,12}
56 };
57
58 /* third non intra table */
59 const uint16_t inter_vlc[103][2] = {
60 { 0x2, 2 },{ 0xf, 4 },{ 0x15, 6 },{ 0x17, 7 },
61 { 0x1f, 8 },{ 0x25, 9 },{ 0x24, 9 },{ 0x21, 10 },
62 { 0x20, 10 },{ 0x7, 11 },{ 0x6, 11 },{ 0x20, 11 },
63 { 0x6, 3 },{ 0x14, 6 },{ 0x1e, 8 },{ 0xf, 10 },
64 { 0x21, 11 },{ 0x50, 12 },{ 0xe, 4 },{ 0x1d, 8 },
65 { 0xe, 10 },{ 0x51, 12 },{ 0xd, 5 },{ 0x23, 9 },
66 { 0xd, 10 },{ 0xc, 5 },{ 0x22, 9 },{ 0x52, 12 },
67 { 0xb, 5 },{ 0xc, 10 },{ 0x53, 12 },{ 0x13, 6 },
68 { 0xb, 10 },{ 0x54, 12 },{ 0x12, 6 },{ 0xa, 10 },
69 { 0x11, 6 },{ 0x9, 10 },{ 0x10, 6 },{ 0x8, 10 },
70 { 0x16, 7 },{ 0x55, 12 },{ 0x15, 7 },{ 0x14, 7 },
71 { 0x1c, 8 },{ 0x1b, 8 },{ 0x21, 9 },{ 0x20, 9 },
72 { 0x1f, 9 },{ 0x1e, 9 },{ 0x1d, 9 },{ 0x1c, 9 },
73 { 0x1b, 9 },{ 0x1a, 9 },{ 0x22, 11 },{ 0x23, 11 },
74 { 0x56, 12 },{ 0x57, 12 },{ 0x7, 4 },{ 0x19, 9 },
75 { 0x5, 11 },{ 0xf, 6 },{ 0x4, 11 },{ 0xe, 6 },
76 { 0xd, 6 },{ 0xc, 6 },{ 0x13, 7 },{ 0x12, 7 },
77 { 0x11, 7 },{ 0x10, 7 },{ 0x1a, 8 },{ 0x19, 8 },
78 { 0x18, 8 },{ 0x17, 8 },{ 0x16, 8 },{ 0x15, 8 },
79 { 0x14, 8 },{ 0x13, 8 },{ 0x18, 9 },{ 0x17, 9 },
80 { 0x16, 9 },{ 0x15, 9 },{ 0x14, 9 },{ 0x13, 9 },
81 { 0x12, 9 },{ 0x11, 9 },{ 0x7, 10 },{ 0x6, 10 },
82 { 0x5, 10 },{ 0x4, 10 },{ 0x24, 11 },{ 0x25, 11 },
83 { 0x26, 11 },{ 0x27, 11 },{ 0x58, 12 },{ 0x59, 12 },
84 { 0x5a, 12 },{ 0x5b, 12 },{ 0x5c, 12 },{ 0x5d, 12 },
85 { 0x5e, 12 },{ 0x5f, 12 },{ 0x3, 7 },
86 };
87
88 const int8_t inter_level[102] = {
89   1,  2,  3,  4,  5,  6,  7,  8,
90   9, 10, 11, 12,  1,  2,  3,  4,
91   5,  6,  1,  2,  3,  4,  1,  2,
92   3,  1,  2,  3,  1,  2,  3,  1,
93   2,  3,  1,  2,  1,  2,  1,  2,
94   1,  2,  1,  1,  1,  1,  1,  1,
95   1,  1,  1,  1,  1,  1,  1,  1,
96   1,  1,  1,  2,  3,  1,  2,  1,
97   1,  1,  1,  1,  1,  1,  1,  1,
98   1,  1,  1,  1,  1,  1,  1,  1,
99   1,  1,  1,  1,  1,  1,  1,  1,
100   1,  1,  1,  1,  1,  1,  1,  1,
101   1,  1,  1,  1,  1,  1,
102 };
103
104 const int8_t inter_run[102] = {
105   0,  0,  0,  0,  0,  0,  0,  0,
106   0,  0,  0,  0,  1,  1,  1,  1,
107   1,  1,  2,  2,  2,  2,  3,  3,
108   3,  4,  4,  4,  5,  5,  5,  6,
109   6,  6,  7,  7,  8,  8,  9,  9,
110  10, 10, 11, 12, 13, 14, 15, 16,
111  17, 18, 19, 20, 21, 22, 23, 24,
112  25, 26,  0,  0,  0,  1,  1,  2,
113   3,  4,  5,  6,  7,  8,  9, 10,
114  11, 12, 13, 14, 15, 16, 17, 18,
115  19, 20, 21, 22, 23, 24, 25, 26,
116  27, 28, 29, 30, 31, 32, 33, 34,
117  35, 36, 37, 38, 39, 40,
118 };
119
120 static RLTable rl_inter = {
121     102,
122     58,
123     inter_vlc,
124     inter_run,
125     inter_level,
126 };
127
128 const uint16_t intra_vlc_aic[103][2] = {
129 {  0x2,  2 }, {  0x6,  3 }, {  0xe,  4 }, {  0xc,  5 }, 
130 {  0xd,  5 }, { 0x10,  6 }, { 0x11,  6 }, { 0x12,  6 }, 
131 { 0x16,  7 }, { 0x1b,  8 }, { 0x20,  9 }, { 0x21,  9 }, 
132 { 0x1a,  9 }, { 0x1b,  9 }, { 0x1c,  9 }, { 0x1d,  9 }, 
133 { 0x1e,  9 }, { 0x1f,  9 }, { 0x23, 11 }, { 0x22, 11 }, 
134 { 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 }, 
135 { 0x53, 12 }, {  0xf,  4 }, { 0x14,  6 }, { 0x14,  7 }, 
136 { 0x1e,  8 }, {  0xf, 10 }, { 0x21, 11 }, { 0x50, 12 }, 
137 {  0xb,  5 }, { 0x15,  7 }, {  0xe, 10 }, {  0x9, 10 }, 
138 { 0x15,  6 }, { 0x1d,  8 }, {  0xd, 10 }, { 0x51, 12 }, 
139 { 0x13,  6 }, { 0x23,  9 }, {  0x7, 11 }, { 0x17,  7 }, 
140 { 0x22,  9 }, { 0x52, 12 }, { 0x1c,  8 }, {  0xc, 10 }, 
141 { 0x1f,  8 }, {  0xb, 10 }, { 0x25,  9 }, {  0xa, 10 }, 
142 { 0x24,  9 }, {  0x6, 11 }, { 0x21, 10 }, { 0x20, 10 }, 
143 {  0x8, 10 }, { 0x20, 11 }, {  0x7,  4 }, {  0xc,  6 }, 
144 { 0x10,  7 }, { 0x13,  8 }, { 0x11,  9 }, { 0x12,  9 }, 
145 {  0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 }, 
146 {  0xf,  6 }, { 0x13,  9 }, {  0x5, 10 }, { 0x25, 11 }, 
147 {  0xe,  6 }, { 0x14,  9 }, { 0x24, 11 }, {  0xd,  6 }, 
148 {  0x6, 10 }, { 0x5e, 12 }, { 0x11,  7 }, {  0x7, 10 }, 
149 { 0x13,  7 }, { 0x5d, 12 }, { 0x12,  7 }, { 0x5c, 12 }, 
150 { 0x14,  8 }, { 0x5b, 12 }, { 0x15,  8 }, { 0x1a,  8 }, 
151 { 0x19,  8 }, { 0x18,  8 }, { 0x17,  8 }, { 0x16,  8 }, 
152 { 0x19,  9 }, { 0x15,  9 }, { 0x16,  9 }, { 0x18,  9 }, 
153 { 0x17,  9 }, {  0x4, 11 }, {  0x5, 11 }, { 0x58, 12 }, 
154 { 0x59, 12 }, { 0x5a, 12 }, {  0x3,  7 },
155 };
156
157 const int8_t intra_run_aic[102] = {
158  0,  0,  0,  0,  0,  0,  0,  0, 
159  0,  0,  0,  0,  0,  0,  0,  0, 
160  0,  0,  0,  0,  0,  0,  0,  0, 
161  0,  1,  1,  1,  1,  1,  1,  1, 
162  2,  2,  2,  2,  3,  3,  3,  3, 
163  4,  4,  4,  5,  5,  5,  6,  6, 
164  7,  7,  8,  8,  9,  9, 10, 11, 
165 12, 13,  0,  0,  0,  0,  0,  0, 
166  0,  0,  0,  0,  1,  1,  1,  1, 
167  2,  2,  2,  3,  3,  3,  4,  4, 
168  5,  5,  6,  6,  7,  7,  8,  9, 
169 10, 11, 12, 13, 14, 15, 16, 17, 
170 18, 19, 20, 21, 22, 23, 
171 };
172
173 const int8_t intra_level_aic[102] = {
174  1,  2,  3,  4,  5,  6,  7,  8, 
175  9, 10, 11, 12, 13, 14, 15, 16, 
176 17, 18, 19, 20, 21, 22, 23, 24, 
177 25,  1,  2,  3,  4,  5,  6,  7, 
178  1,  2,  3,  4,  1,  2,  3,  4, 
179  1,  2,  3,  1,  2,  3,  1,  2, 
180  1,  2,  1,  2,  1,  2,  1,  1, 
181  1,  1,  1,  2,  3,  4,  5,  6, 
182  7,  8,  9, 10,  1,  2,  3,  4, 
183  1,  2,  3,  1,  2,  3,  1,  2, 
184  1,  2,  1,  2,  1,  2,  1,  1, 
185  1,  1,  1,  1,  1,  1,  1,  1, 
186  1,  1,  1,  1,  1,  1,
187 };
188
189 static RLTable rl_intra_aic = {
190     102,
191     58,
192     intra_vlc_aic,
193     intra_run_aic,
194     intra_level_aic,
195 };
196
197 static const uint16_t h263_format[8][2] = {
198     { 0, 0 },
199     { 128, 96 },
200     { 176, 144 },
201     { 352, 288 },
202     { 704, 576 },
203     { 1408, 1152 },
204 };
205
206 static uint8_t h263_aic_dc_scale_table[32]={
207 //  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
208     0, 2, 4, 6, 8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62
209 };
210