Statistics
| Branch: | Revision:

ffmpeg / libavcodec / h263data.h @ 20646267

History | View | Annotate | Download (9.16 KB)

1
/**
2
 * @file h263data.h
3
 * H.263 tables.
4
 */
5

    
6

    
7
/* intra MCBPC, mb_type = (intra), then (intraq) */
8
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

    
11
/* inter MCBPC, mb_type = (inter), (intra), (interq), (intraq), (inter4v) */
12
/* Changed the tables for interq and inter4v+q, following the standard ** Juanjo ** */
13
const uint8_t inter_MCBPC_code[28] = { 
14
    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
    1, 0, 0, 0, /* Stuffing */
20
    2, 12, 14, 15,
21
};
22
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
};
31

    
32
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
                      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
    0, //stuffing
64
    MB_TYPE_INTRA4x4                | MB_TYPE_CBP,
65
    MB_TYPE_INTRA4x4                | MB_TYPE_CBP | MB_TYPE_QUANT,
66
};
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
const uint8_t cbpy_tab[16][2] =
76
{
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
const uint8_t mvtab[33][2] =
82
{
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
const uint16_t inter_vlc[103][2] = {
92
{ 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
const int8_t inter_level[102] = {
121
  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
const int8_t inter_run[102] = {
137
  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
const uint16_t intra_vlc_aic[103][2] = {
161
{  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
};
188

    
189
const int8_t intra_run_aic[102] = {
190
 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
const int8_t intra_level_aic[102] = {
206
 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
};
220

    
221
static RLTable rl_intra_aic = {
222
    102,
223
    58,
224
    intra_vlc_aic,
225
    intra_run_aic,
226
    intra_level_aic,
227
};
228

    
229
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
static const uint16_t h263_format[8][2] = {
246
    { 0, 0 },
247
    { 128, 96 },
248
    { 176, 144 },
249
    { 352, 288 },
250
    { 704, 576 },
251
    { 1408, 1152 },
252
};
253

    
254
uint8_t ff_aic_dc_scale_table[32]={
255
//  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
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
const uint8_t ff_h263_chroma_qscale_table[32]={
269
//  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

    
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
};
285