Statistics
| Branch: | Revision:

ffmpeg / libavcodec / h263data.h @ 11e29a41

History | View | Annotate | Download (6.44 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
const uint8_t cbpy_tab[16][2] =
33
{
34
  {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
35
  {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
36
};
37

    
38
const uint8_t mvtab[33][2] =
39
{
40
  {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
41
  {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
42
  {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
43
  {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
44
  {2,12}
45
};
46

    
47
/* third non intra table */
48
const uint16_t inter_vlc[103][2] = {
49
{ 0x2, 2 },{ 0xf, 4 },{ 0x15, 6 },{ 0x17, 7 },
50
{ 0x1f, 8 },{ 0x25, 9 },{ 0x24, 9 },{ 0x21, 10 },
51
{ 0x20, 10 },{ 0x7, 11 },{ 0x6, 11 },{ 0x20, 11 },
52
{ 0x6, 3 },{ 0x14, 6 },{ 0x1e, 8 },{ 0xf, 10 },
53
{ 0x21, 11 },{ 0x50, 12 },{ 0xe, 4 },{ 0x1d, 8 },
54
{ 0xe, 10 },{ 0x51, 12 },{ 0xd, 5 },{ 0x23, 9 },
55
{ 0xd, 10 },{ 0xc, 5 },{ 0x22, 9 },{ 0x52, 12 },
56
{ 0xb, 5 },{ 0xc, 10 },{ 0x53, 12 },{ 0x13, 6 },
57
{ 0xb, 10 },{ 0x54, 12 },{ 0x12, 6 },{ 0xa, 10 },
58
{ 0x11, 6 },{ 0x9, 10 },{ 0x10, 6 },{ 0x8, 10 },
59
{ 0x16, 7 },{ 0x55, 12 },{ 0x15, 7 },{ 0x14, 7 },
60
{ 0x1c, 8 },{ 0x1b, 8 },{ 0x21, 9 },{ 0x20, 9 },
61
{ 0x1f, 9 },{ 0x1e, 9 },{ 0x1d, 9 },{ 0x1c, 9 },
62
{ 0x1b, 9 },{ 0x1a, 9 },{ 0x22, 11 },{ 0x23, 11 },
63
{ 0x56, 12 },{ 0x57, 12 },{ 0x7, 4 },{ 0x19, 9 },
64
{ 0x5, 11 },{ 0xf, 6 },{ 0x4, 11 },{ 0xe, 6 },
65
{ 0xd, 6 },{ 0xc, 6 },{ 0x13, 7 },{ 0x12, 7 },
66
{ 0x11, 7 },{ 0x10, 7 },{ 0x1a, 8 },{ 0x19, 8 },
67
{ 0x18, 8 },{ 0x17, 8 },{ 0x16, 8 },{ 0x15, 8 },
68
{ 0x14, 8 },{ 0x13, 8 },{ 0x18, 9 },{ 0x17, 9 },
69
{ 0x16, 9 },{ 0x15, 9 },{ 0x14, 9 },{ 0x13, 9 },
70
{ 0x12, 9 },{ 0x11, 9 },{ 0x7, 10 },{ 0x6, 10 },
71
{ 0x5, 10 },{ 0x4, 10 },{ 0x24, 11 },{ 0x25, 11 },
72
{ 0x26, 11 },{ 0x27, 11 },{ 0x58, 12 },{ 0x59, 12 },
73
{ 0x5a, 12 },{ 0x5b, 12 },{ 0x5c, 12 },{ 0x5d, 12 },
74
{ 0x5e, 12 },{ 0x5f, 12 },{ 0x3, 7 },
75
};
76

    
77
const int8_t inter_level[102] = {
78
  1,  2,  3,  4,  5,  6,  7,  8,
79
  9, 10, 11, 12,  1,  2,  3,  4,
80
  5,  6,  1,  2,  3,  4,  1,  2,
81
  3,  1,  2,  3,  1,  2,  3,  1,
82
  2,  3,  1,  2,  1,  2,  1,  2,
83
  1,  2,  1,  1,  1,  1,  1,  1,
84
  1,  1,  1,  1,  1,  1,  1,  1,
85
  1,  1,  1,  2,  3,  1,  2,  1,
86
  1,  1,  1,  1,  1,  1,  1,  1,
87
  1,  1,  1,  1,  1,  1,  1,  1,
88
  1,  1,  1,  1,  1,  1,  1,  1,
89
  1,  1,  1,  1,  1,  1,  1,  1,
90
  1,  1,  1,  1,  1,  1,
91
};
92

    
93
const int8_t inter_run[102] = {
94
  0,  0,  0,  0,  0,  0,  0,  0,
95
  0,  0,  0,  0,  1,  1,  1,  1,
96
  1,  1,  2,  2,  2,  2,  3,  3,
97
  3,  4,  4,  4,  5,  5,  5,  6,
98
  6,  6,  7,  7,  8,  8,  9,  9,
99
 10, 10, 11, 12, 13, 14, 15, 16,
100
 17, 18, 19, 20, 21, 22, 23, 24,
101
 25, 26,  0,  0,  0,  1,  1,  2,
102
  3,  4,  5,  6,  7,  8,  9, 10,
103
 11, 12, 13, 14, 15, 16, 17, 18,
104
 19, 20, 21, 22, 23, 24, 25, 26,
105
 27, 28, 29, 30, 31, 32, 33, 34,
106
 35, 36, 37, 38, 39, 40,
107
};
108

    
109
static RLTable rl_inter = {
110
    102,
111
    58,
112
    inter_vlc,
113
    inter_run,
114
    inter_level,
115
};
116

    
117
const uint16_t intra_vlc_aic[103][2] = {
118
{  0x2,  2 }, {  0x6,  3 }, {  0xe,  4 }, {  0xc,  5 }, 
119
{  0xd,  5 }, { 0x10,  6 }, { 0x11,  6 }, { 0x12,  6 }, 
120
{ 0x16,  7 }, { 0x1b,  8 }, { 0x20,  9 }, { 0x21,  9 }, 
121
{ 0x1a,  9 }, { 0x1b,  9 }, { 0x1c,  9 }, { 0x1d,  9 }, 
122
{ 0x1e,  9 }, { 0x1f,  9 }, { 0x23, 11 }, { 0x22, 11 }, 
123
{ 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 }, 
124
{ 0x53, 12 }, {  0xf,  4 }, { 0x14,  6 }, { 0x14,  7 }, 
125
{ 0x1e,  8 }, {  0xf, 10 }, { 0x21, 11 }, { 0x50, 12 }, 
126
{  0xb,  5 }, { 0x15,  7 }, {  0xe, 10 }, {  0x9, 10 }, 
127
{ 0x15,  6 }, { 0x1d,  8 }, {  0xd, 10 }, { 0x51, 12 }, 
128
{ 0x13,  6 }, { 0x23,  9 }, {  0x7, 11 }, { 0x17,  7 }, 
129
{ 0x22,  9 }, { 0x52, 12 }, { 0x1c,  8 }, {  0xc, 10 }, 
130
{ 0x1f,  8 }, {  0xb, 10 }, { 0x25,  9 }, {  0xa, 10 }, 
131
{ 0x24,  9 }, {  0x6, 11 }, { 0x21, 10 }, { 0x20, 10 }, 
132
{  0x8, 10 }, { 0x20, 11 }, {  0x7,  4 }, {  0xc,  6 }, 
133
{ 0x10,  7 }, { 0x13,  8 }, { 0x11,  9 }, { 0x12,  9 }, 
134
{  0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 }, 
135
{  0xf,  6 }, { 0x13,  9 }, {  0x5, 10 }, { 0x25, 11 }, 
136
{  0xe,  6 }, { 0x14,  9 }, { 0x24, 11 }, {  0xd,  6 }, 
137
{  0x6, 10 }, { 0x5e, 12 }, { 0x11,  7 }, {  0x7, 10 }, 
138
{ 0x13,  7 }, { 0x5d, 12 }, { 0x12,  7 }, { 0x5c, 12 }, 
139
{ 0x14,  8 }, { 0x5b, 12 }, { 0x15,  8 }, { 0x1a,  8 }, 
140
{ 0x19,  8 }, { 0x18,  8 }, { 0x17,  8 }, { 0x16,  8 }, 
141
{ 0x19,  9 }, { 0x15,  9 }, { 0x16,  9 }, { 0x18,  9 }, 
142
{ 0x17,  9 }, {  0x4, 11 }, {  0x5, 11 }, { 0x58, 12 }, 
143
{ 0x59, 12 }, { 0x5a, 12 }, {  0x3,  7 },
144
};
145

    
146
const int8_t intra_run_aic[102] = {
147
 0,  0,  0,  0,  0,  0,  0,  0, 
148
 0,  0,  0,  0,  0,  0,  0,  0, 
149
 0,  0,  0,  0,  0,  0,  0,  0, 
150
 0,  1,  1,  1,  1,  1,  1,  1, 
151
 2,  2,  2,  2,  3,  3,  3,  3, 
152
 4,  4,  4,  5,  5,  5,  6,  6, 
153
 7,  7,  8,  8,  9,  9, 10, 11, 
154
12, 13,  0,  0,  0,  0,  0,  0, 
155
 0,  0,  0,  0,  1,  1,  1,  1, 
156
 2,  2,  2,  3,  3,  3,  4,  4, 
157
 5,  5,  6,  6,  7,  7,  8,  9, 
158
10, 11, 12, 13, 14, 15, 16, 17, 
159
18, 19, 20, 21, 22, 23, 
160
};
161

    
162
const int8_t intra_level_aic[102] = {
163
 1,  2,  3,  4,  5,  6,  7,  8, 
164
 9, 10, 11, 12, 13, 14, 15, 16, 
165
17, 18, 19, 20, 21, 22, 23, 24, 
166
25,  1,  2,  3,  4,  5,  6,  7, 
167
 1,  2,  3,  4,  1,  2,  3,  4, 
168
 1,  2,  3,  1,  2,  3,  1,  2, 
169
 1,  2,  1,  2,  1,  2,  1,  1, 
170
 1,  1,  1,  2,  3,  4,  5,  6, 
171
 7,  8,  9, 10,  1,  2,  3,  4, 
172
 1,  2,  3,  1,  2,  3,  1,  2, 
173
 1,  2,  1,  2,  1,  2,  1,  1, 
174
 1,  1,  1,  1,  1,  1,  1,  1, 
175
 1,  1,  1,  1,  1,  1,
176
};
177

    
178
static RLTable rl_intra_aic = {
179
    102,
180
    58,
181
    intra_vlc_aic,
182
    intra_run_aic,
183
    intra_level_aic,
184
};
185

    
186
static const uint16_t h263_format[8][2] = {
187
    { 0, 0 },
188
    { 128, 96 },
189
    { 176, 144 },
190
    { 352, 288 },
191
    { 704, 576 },
192
    { 1408, 1152 },
193
};
194

    
195
static uint8_t h263_aic_dc_scale_table[32]={
196
//  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
197
    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
198
};
199