Statistics
| Branch: | Revision:

ffmpeg / libavcodec / h263data.h @ 983e3246

History | View | Annotate | Download (6.63 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[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

    
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[25] = { 
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, /* Stuffing */
20
    2, 12, 14, 15,
21
};
22
const uint8_t inter_MCBPC_bits[25] = { 
23
    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
    9, /* Stuffing */
29
    11, 13, 13, 13,
30
};
31

    
32
/* This is the old table 
33
static const uint8_t inter_MCBPC_code[20] = { 
34
    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
static const uint8_t inter_MCBPC_bits[20] = { 
41
    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
};*/
47

    
48
const uint8_t cbpy_tab[16][2] =
49
{
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
const uint8_t mvtab[33][2] =
55
{
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
const uint16_t inter_vlc[103][2] = {
65
{ 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
const int8_t inter_level[102] = {
94
  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
const int8_t inter_run[102] = {
110
  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
const uint16_t intra_vlc_aic[103][2] = {
134
{  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
};
161

    
162
const int8_t intra_run_aic[102] = {
163
 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
const int8_t intra_level_aic[102] = {
179
 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
};
193

    
194
static RLTable rl_intra_aic = {
195
    102,
196
    58,
197
    intra_vlc_aic,
198
    intra_run_aic,
199
    intra_level_aic,
200
};
201

    
202
static const uint16_t h263_format[8][2] = {
203
    { 0, 0 },
204
    { 128, 96 },
205
    { 176, 144 },
206
    { 352, 288 },
207
    { 704, 576 },
208
    { 1408, 1152 },
209
};
210

    
211
static uint8_t h263_aic_dc_scale_table[32]={
212
//  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
};
215