Statistics
| Branch: | Revision:

ffmpeg / libavcodec / h263data.h @ 186447f8

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