Statistics
| Branch: | Revision:

ffmpeg / libavcodec / h263data.h @ 20646267

History | View | Annotate | Download (9.16 KB)

1 983e3246 Michael Niedermayer
/**
2
 * @file h263data.h
3
 * H.263 tables.
4
 */
5
6 de6d9b64 Fabrice Bellard
7
/* intra MCBPC, mb_type = (intra), then (intraq) */
8 7af75e6c Michael Niedermayer
const uint8_t intra_MCBPC_code[9] = { 1, 1, 2, 3, 1, 1, 2, 3, 1 };
9
const uint8_t intra_MCBPC_bits[9] = { 1, 3, 3, 3, 4, 6, 6, 6, 9 };
10 de6d9b64 Fabrice Bellard
11
/* inter MCBPC, mb_type = (inter), (intra), (interq), (intraq), (inter4v) */
12 96815ce9 Juanjo
/* Changed the tables for interq and inter4v+q, following the standard ** Juanjo ** */
13 7af75e6c Michael Niedermayer
const uint8_t inter_MCBPC_code[28] = { 
14 4949028f Juanjo
    1, 3, 2, 5, 
15
    3, 4, 3, 3, 
16
    3, 7, 6, 5,
17
    4, 4, 3, 2,
18
    2, 5, 4, 5,
19 7af75e6c Michael Niedermayer
    1, 0, 0, 0, /* Stuffing */
20 96815ce9 Juanjo
    2, 12, 14, 15,
21 4949028f Juanjo
};
22 7af75e6c Michael Niedermayer
const uint8_t inter_MCBPC_bits[28] = { 
23
    1, 4, 4, 6, /* inter  */
24
    5, 8, 8, 7, /* intra  */
25
    3, 7, 7, 9, /* interQ */
26
    6, 9, 9, 9, /* intraQ */
27
    3, 7, 7, 8, /* inter4 */
28
    9, 0, 0, 0, /* Stuffing */
29
    11, 13, 13, 13,/* inter4Q*/
30 4949028f Juanjo
};
31
32 b40cd4e0 Michael Niedermayer
static const uint8_t h263_mbtype_b_tab[15][2] = {
33
 {1, 1}, 
34
 {3, 3}, 
35
 {1, 5}, 
36
 {4, 4},
37
 {5, 4},
38
 {6, 6},
39
 {2, 4},
40
 {3, 4},
41
 {7, 6},
42
 {4, 6},
43
 {5, 6},
44
 {1, 6},
45
 {1,10},
46
 {1, 7},
47
 {1, 8},
48
};
49
50
static const int h263_mb_type_b_map[15]= {
51
    MB_TYPE_DIRECT2 | MB_TYPE_L0L1,
52
    MB_TYPE_DIRECT2 | MB_TYPE_L0L1 | MB_TYPE_CBP,
53
    MB_TYPE_DIRECT2 | MB_TYPE_L0L1 | MB_TYPE_CBP | MB_TYPE_QUANT,
54 8135f8df Michael Niedermayer
                      MB_TYPE_L0                                 | MB_TYPE_16x16,
55
                      MB_TYPE_L0   | MB_TYPE_CBP                 | MB_TYPE_16x16,
56
                      MB_TYPE_L0   | MB_TYPE_CBP | MB_TYPE_QUANT | MB_TYPE_16x16,
57
                      MB_TYPE_L1                                 | MB_TYPE_16x16,
58
                      MB_TYPE_L1   | MB_TYPE_CBP                 | MB_TYPE_16x16,
59
                      MB_TYPE_L1   | MB_TYPE_CBP | MB_TYPE_QUANT | MB_TYPE_16x16,
60
                      MB_TYPE_L0L1                               | MB_TYPE_16x16,
61
                      MB_TYPE_L0L1 | MB_TYPE_CBP                 | MB_TYPE_16x16,
62
                      MB_TYPE_L0L1 | MB_TYPE_CBP | MB_TYPE_QUANT | MB_TYPE_16x16,
63 b40cd4e0 Michael Niedermayer
    0, //stuffing
64 bb198e19 Michael Niedermayer
    MB_TYPE_INTRA4x4                | MB_TYPE_CBP,
65
    MB_TYPE_INTRA4x4                | MB_TYPE_CBP | MB_TYPE_QUANT,
66 b40cd4e0 Michael Niedermayer
};
67
68
const uint8_t cbpc_b_tab[4][2] = {
69
{0, 1},
70
{2, 2},
71
{7, 3},
72
{6, 3},
73
};
74
75 0c1a9eda Zdenek Kabelac
const uint8_t cbpy_tab[16][2] =
76 de6d9b64 Fabrice Bellard
{
77
  {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
78
  {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
79
};
80
81 0c1a9eda Zdenek Kabelac
const uint8_t mvtab[33][2] =
82 de6d9b64 Fabrice Bellard
{
83
  {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
84
  {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
85
  {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
86
  {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
87
  {2,12}
88
};
89
90
/* third non intra table */
91 0c1a9eda Zdenek Kabelac
const uint16_t inter_vlc[103][2] = {
92 de6d9b64 Fabrice Bellard
{ 0x2, 2 },{ 0xf, 4 },{ 0x15, 6 },{ 0x17, 7 },
93
{ 0x1f, 8 },{ 0x25, 9 },{ 0x24, 9 },{ 0x21, 10 },
94
{ 0x20, 10 },{ 0x7, 11 },{ 0x6, 11 },{ 0x20, 11 },
95
{ 0x6, 3 },{ 0x14, 6 },{ 0x1e, 8 },{ 0xf, 10 },
96
{ 0x21, 11 },{ 0x50, 12 },{ 0xe, 4 },{ 0x1d, 8 },
97
{ 0xe, 10 },{ 0x51, 12 },{ 0xd, 5 },{ 0x23, 9 },
98
{ 0xd, 10 },{ 0xc, 5 },{ 0x22, 9 },{ 0x52, 12 },
99
{ 0xb, 5 },{ 0xc, 10 },{ 0x53, 12 },{ 0x13, 6 },
100
{ 0xb, 10 },{ 0x54, 12 },{ 0x12, 6 },{ 0xa, 10 },
101
{ 0x11, 6 },{ 0x9, 10 },{ 0x10, 6 },{ 0x8, 10 },
102
{ 0x16, 7 },{ 0x55, 12 },{ 0x15, 7 },{ 0x14, 7 },
103
{ 0x1c, 8 },{ 0x1b, 8 },{ 0x21, 9 },{ 0x20, 9 },
104
{ 0x1f, 9 },{ 0x1e, 9 },{ 0x1d, 9 },{ 0x1c, 9 },
105
{ 0x1b, 9 },{ 0x1a, 9 },{ 0x22, 11 },{ 0x23, 11 },
106
{ 0x56, 12 },{ 0x57, 12 },{ 0x7, 4 },{ 0x19, 9 },
107
{ 0x5, 11 },{ 0xf, 6 },{ 0x4, 11 },{ 0xe, 6 },
108
{ 0xd, 6 },{ 0xc, 6 },{ 0x13, 7 },{ 0x12, 7 },
109
{ 0x11, 7 },{ 0x10, 7 },{ 0x1a, 8 },{ 0x19, 8 },
110
{ 0x18, 8 },{ 0x17, 8 },{ 0x16, 8 },{ 0x15, 8 },
111
{ 0x14, 8 },{ 0x13, 8 },{ 0x18, 9 },{ 0x17, 9 },
112
{ 0x16, 9 },{ 0x15, 9 },{ 0x14, 9 },{ 0x13, 9 },
113
{ 0x12, 9 },{ 0x11, 9 },{ 0x7, 10 },{ 0x6, 10 },
114
{ 0x5, 10 },{ 0x4, 10 },{ 0x24, 11 },{ 0x25, 11 },
115
{ 0x26, 11 },{ 0x27, 11 },{ 0x58, 12 },{ 0x59, 12 },
116
{ 0x5a, 12 },{ 0x5b, 12 },{ 0x5c, 12 },{ 0x5d, 12 },
117
{ 0x5e, 12 },{ 0x5f, 12 },{ 0x3, 7 },
118
};
119
120 0c1a9eda Zdenek Kabelac
const int8_t inter_level[102] = {
121 de6d9b64 Fabrice Bellard
  1,  2,  3,  4,  5,  6,  7,  8,
122
  9, 10, 11, 12,  1,  2,  3,  4,
123
  5,  6,  1,  2,  3,  4,  1,  2,
124
  3,  1,  2,  3,  1,  2,  3,  1,
125
  2,  3,  1,  2,  1,  2,  1,  2,
126
  1,  2,  1,  1,  1,  1,  1,  1,
127
  1,  1,  1,  1,  1,  1,  1,  1,
128
  1,  1,  1,  2,  3,  1,  2,  1,
129
  1,  1,  1,  1,  1,  1,  1,  1,
130
  1,  1,  1,  1,  1,  1,  1,  1,
131
  1,  1,  1,  1,  1,  1,  1,  1,
132
  1,  1,  1,  1,  1,  1,  1,  1,
133
  1,  1,  1,  1,  1,  1,
134
};
135
136 0c1a9eda Zdenek Kabelac
const int8_t inter_run[102] = {
137 de6d9b64 Fabrice Bellard
  0,  0,  0,  0,  0,  0,  0,  0,
138
  0,  0,  0,  0,  1,  1,  1,  1,
139
  1,  1,  2,  2,  2,  2,  3,  3,
140
  3,  4,  4,  4,  5,  5,  5,  6,
141
  6,  6,  7,  7,  8,  8,  9,  9,
142
 10, 10, 11, 12, 13, 14, 15, 16,
143
 17, 18, 19, 20, 21, 22, 23, 24,
144
 25, 26,  0,  0,  0,  1,  1,  2,
145
  3,  4,  5,  6,  7,  8,  9, 10,
146
 11, 12, 13, 14, 15, 16, 17, 18,
147
 19, 20, 21, 22, 23, 24, 25, 26,
148
 27, 28, 29, 30, 31, 32, 33, 34,
149
 35, 36, 37, 38, 39, 40,
150
};
151
152
static RLTable rl_inter = {
153
    102,
154
    58,
155
    inter_vlc,
156
    inter_run,
157
    inter_level,
158
};
159
160 0c1a9eda Zdenek Kabelac
const uint16_t intra_vlc_aic[103][2] = {
161 ef5b1b5a Juanjo
{  0x2,  2 }, {  0x6,  3 }, {  0xe,  4 }, {  0xc,  5 }, 
162
{  0xd,  5 }, { 0x10,  6 }, { 0x11,  6 }, { 0x12,  6 }, 
163
{ 0x16,  7 }, { 0x1b,  8 }, { 0x20,  9 }, { 0x21,  9 }, 
164
{ 0x1a,  9 }, { 0x1b,  9 }, { 0x1c,  9 }, { 0x1d,  9 }, 
165
{ 0x1e,  9 }, { 0x1f,  9 }, { 0x23, 11 }, { 0x22, 11 }, 
166
{ 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 }, 
167
{ 0x53, 12 }, {  0xf,  4 }, { 0x14,  6 }, { 0x14,  7 }, 
168
{ 0x1e,  8 }, {  0xf, 10 }, { 0x21, 11 }, { 0x50, 12 }, 
169
{  0xb,  5 }, { 0x15,  7 }, {  0xe, 10 }, {  0x9, 10 }, 
170
{ 0x15,  6 }, { 0x1d,  8 }, {  0xd, 10 }, { 0x51, 12 }, 
171
{ 0x13,  6 }, { 0x23,  9 }, {  0x7, 11 }, { 0x17,  7 }, 
172
{ 0x22,  9 }, { 0x52, 12 }, { 0x1c,  8 }, {  0xc, 10 }, 
173
{ 0x1f,  8 }, {  0xb, 10 }, { 0x25,  9 }, {  0xa, 10 }, 
174
{ 0x24,  9 }, {  0x6, 11 }, { 0x21, 10 }, { 0x20, 10 }, 
175
{  0x8, 10 }, { 0x20, 11 }, {  0x7,  4 }, {  0xc,  6 }, 
176
{ 0x10,  7 }, { 0x13,  8 }, { 0x11,  9 }, { 0x12,  9 }, 
177
{  0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 }, 
178
{  0xf,  6 }, { 0x13,  9 }, {  0x5, 10 }, { 0x25, 11 }, 
179
{  0xe,  6 }, { 0x14,  9 }, { 0x24, 11 }, {  0xd,  6 }, 
180
{  0x6, 10 }, { 0x5e, 12 }, { 0x11,  7 }, {  0x7, 10 }, 
181
{ 0x13,  7 }, { 0x5d, 12 }, { 0x12,  7 }, { 0x5c, 12 }, 
182
{ 0x14,  8 }, { 0x5b, 12 }, { 0x15,  8 }, { 0x1a,  8 }, 
183
{ 0x19,  8 }, { 0x18,  8 }, { 0x17,  8 }, { 0x16,  8 }, 
184
{ 0x19,  9 }, { 0x15,  9 }, { 0x16,  9 }, { 0x18,  9 }, 
185
{ 0x17,  9 }, {  0x4, 11 }, {  0x5, 11 }, { 0x58, 12 }, 
186
{ 0x59, 12 }, { 0x5a, 12 }, {  0x3,  7 },
187 d140623f Juanjo
};
188
189 0c1a9eda Zdenek Kabelac
const int8_t intra_run_aic[102] = {
190 ef5b1b5a Juanjo
 0,  0,  0,  0,  0,  0,  0,  0, 
191
 0,  0,  0,  0,  0,  0,  0,  0, 
192
 0,  0,  0,  0,  0,  0,  0,  0, 
193
 0,  1,  1,  1,  1,  1,  1,  1, 
194
 2,  2,  2,  2,  3,  3,  3,  3, 
195
 4,  4,  4,  5,  5,  5,  6,  6, 
196
 7,  7,  8,  8,  9,  9, 10, 11, 
197
12, 13,  0,  0,  0,  0,  0,  0, 
198
 0,  0,  0,  0,  1,  1,  1,  1, 
199
 2,  2,  2,  3,  3,  3,  4,  4, 
200
 5,  5,  6,  6,  7,  7,  8,  9, 
201
10, 11, 12, 13, 14, 15, 16, 17, 
202
18, 19, 20, 21, 22, 23, 
203
};
204
205 0c1a9eda Zdenek Kabelac
const int8_t intra_level_aic[102] = {
206 ef5b1b5a Juanjo
 1,  2,  3,  4,  5,  6,  7,  8, 
207
 9, 10, 11, 12, 13, 14, 15, 16, 
208
17, 18, 19, 20, 21, 22, 23, 24, 
209
25,  1,  2,  3,  4,  5,  6,  7, 
210
 1,  2,  3,  4,  1,  2,  3,  4, 
211
 1,  2,  3,  1,  2,  3,  1,  2, 
212
 1,  2,  1,  2,  1,  2,  1,  1, 
213
 1,  1,  1,  2,  3,  4,  5,  6, 
214
 7,  8,  9, 10,  1,  2,  3,  4, 
215
 1,  2,  3,  1,  2,  3,  1,  2, 
216
 1,  2,  1,  2,  1,  2,  1,  1, 
217
 1,  1,  1,  1,  1,  1,  1,  1, 
218
 1,  1,  1,  1,  1,  1,
219 d140623f Juanjo
};
220
221
static RLTable rl_intra_aic = {
222
    102,
223
    58,
224 ef5b1b5a Juanjo
    intra_vlc_aic,
225
    intra_run_aic,
226
    intra_level_aic,
227 d140623f Juanjo
};
228
229 3e8a5124 Michael Niedermayer
static const uint8_t wrong_run[102] = {
230
 1,  2,  3,  5,  4, 10,  9,  8, 
231
11, 15, 17, 16, 23, 22, 21, 20, 
232
19, 18, 25, 24, 27, 26, 11,  7,  
233
 6,  1,  2, 13,  2,  2,  2,  2, 
234
 6, 12,  3,  9,  1,  3,  4,  3, 
235
 7,  4,  1,  1,  5,  5, 14,  6, 
236
 1,  7,  1,  8,  1,  1,  1,  1, 
237
10,  1,  1,  5,  9, 17, 25, 24, 
238
29, 33, 32, 41,  2, 23, 28, 31,  
239
 3, 22, 30,  4, 27, 40,  8, 26,  
240
 6, 39,  7, 38, 16, 37, 15, 10, 
241
11, 12, 13, 14,  1, 21, 20, 18, 
242
19,  2,  1, 34, 35, 36
243
};
244
245 0c1a9eda Zdenek Kabelac
static const uint16_t h263_format[8][2] = {
246 de6d9b64 Fabrice Bellard
    { 0, 0 },
247
    { 128, 96 },
248
    { 176, 144 },
249
    { 352, 288 },
250
    { 704, 576 },
251
    { 1408, 1152 },
252
};
253 8f8402e4 Michael Niedermayer
254 68b94c35 Michael Niedermayer
uint8_t ff_aic_dc_scale_table[32]={
255 8f8402e4 Michael Niedermayer
//  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
256
    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
257
};
258
259 68b94c35 Michael Niedermayer
static const uint8_t modified_quant_tab[2][32]={
260
//  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
261
{
262
    0, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9,10,11,12,13,14,15,16,17,18,18,19,20,21,22,23,24,25,26,27,28
263
},{
264
    0, 2, 3, 4, 5, 6, 7, 8, 9,10,11,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,31,31,26
265
}   
266
};
267
268 332f9ac4 Michael Niedermayer
const uint8_t ff_h263_chroma_qscale_table[32]={
269 68b94c35 Michael Niedermayer
//  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
270
    0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 9,10,10,11,11,12,12,12,13,13,13,14,14,14,14,14,15,15,15,15,15
271
};
272
273
const uint16_t ff_mba_max[6]={
274
     47,  98, 395,1583,6335,9215
275
};
276
277
const uint8_t ff_mba_length[6]={
278
      6,   7,   9,  11,  13,  14
279
};
280 332f9ac4 Michael Niedermayer
281
const uint8_t ff_h263_loop_filter_strength[32]={
282
//  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
283
    0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9,10,10,10,11,11,11,12,12,12
284
};