Statistics
| Branch: | Revision:

ffmpeg / libavcodec / h263data.h @ 5917d17c

History | View | Annotate | Download (6.55 KB)

1

    
2
/* intra MCBPC, mb_type = (intra), then (intraq) */
3
const UINT8 intra_MCBPC_code[8] = { 1, 1, 2, 3, 1, 1, 2, 3 };
4
const UINT8 intra_MCBPC_bits[8] = { 1, 3, 3, 3, 4, 6, 6, 6 };
5

    
6
/* inter MCBPC, mb_type = (inter), (intra), (interq), (intraq), (inter4v) */
7
/* Changed the tables for interq and inter4v+q, following the standard ** Juanjo ** */
8
const UINT8 inter_MCBPC_code[25] = { 
9
    1, 3, 2, 5, 
10
    3, 4, 3, 3, 
11
    3, 7, 6, 5,
12
    4, 4, 3, 2,
13
    2, 5, 4, 5,
14
    1, /* Stuffing */
15
    2, 12, 14, 15,
16
};
17
const UINT8 inter_MCBPC_bits[25] = { 
18
    1, 4, 4, 6, 
19
    5, 8, 8, 7,
20
    3, 7, 7, 9,
21
    6, 9, 9, 9,
22
    3, 7, 7, 8,
23
    9, /* Stuffing */
24
    11, 13, 13, 13,
25
};
26

    
27
/* This is the old table 
28
static const UINT8 inter_MCBPC_code[20] = { 
29
    1, 3, 2, 5, 
30
    3, 4, 3, 3, 
31
    0, 1, 2, 3,
32
    4, 4, 3, 2,
33
    2, 5, 4, 5,
34
};
35
static const UINT8 inter_MCBPC_bits[20] = { 
36
    1, 4, 4, 6, 
37
    5, 8, 8, 7,
38
    12, 12, 12, 12,
39
    6, 9, 9, 9,
40
    3, 7, 7, 8,
41
};*/
42

    
43
const UINT8 cbpy_tab[16][2] =
44
{
45
  {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
46
  {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
47
};
48

    
49
const UINT8 mvtab[33][2] =
50
{
51
  {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
52
  {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
53
  {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
54
  {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
55
  {2,12}
56
};
57

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

    
88
const INT8 inter_level[102] = {
89
  1,  2,  3,  4,  5,  6,  7,  8,
90
  9, 10, 11, 12,  1,  2,  3,  4,
91
  5,  6,  1,  2,  3,  4,  1,  2,
92
  3,  1,  2,  3,  1,  2,  3,  1,
93
  2,  3,  1,  2,  1,  2,  1,  2,
94
  1,  2,  1,  1,  1,  1,  1,  1,
95
  1,  1,  1,  1,  1,  1,  1,  1,
96
  1,  1,  1,  2,  3,  1,  2,  1,
97
  1,  1,  1,  1,  1,  1,  1,  1,
98
  1,  1,  1,  1,  1,  1,  1,  1,
99
  1,  1,  1,  1,  1,  1,  1,  1,
100
  1,  1,  1,  1,  1,  1,  1,  1,
101
  1,  1,  1,  1,  1,  1,
102
};
103

    
104
const INT8 inter_run[102] = {
105
  0,  0,  0,  0,  0,  0,  0,  0,
106
  0,  0,  0,  0,  1,  1,  1,  1,
107
  1,  1,  2,  2,  2,  2,  3,  3,
108
  3,  4,  4,  4,  5,  5,  5,  6,
109
  6,  6,  7,  7,  8,  8,  9,  9,
110
 10, 10, 11, 12, 13, 14, 15, 16,
111
 17, 18, 19, 20, 21, 22, 23, 24,
112
 25, 26,  0,  0,  0,  1,  1,  2,
113
  3,  4,  5,  6,  7,  8,  9, 10,
114
 11, 12, 13, 14, 15, 16, 17, 18,
115
 19, 20, 21, 22, 23, 24, 25, 26,
116
 27, 28, 29, 30, 31, 32, 33, 34,
117
 35, 36, 37, 38, 39, 40,
118
};
119

    
120
static RLTable rl_inter = {
121
    102,
122
    58,
123
    inter_vlc,
124
    inter_run,
125
    inter_level,
126
};
127

    
128
const UINT16 intra_vlc_aic[103][2] = {
129
{  0x2,  2 }, {  0x6,  3 }, {  0xe,  4 }, {  0xc,  5 }, 
130
{  0xd,  5 }, { 0x10,  6 }, { 0x11,  6 }, { 0x12,  6 }, 
131
{ 0x16,  7 }, { 0x1b,  8 }, { 0x20,  9 }, { 0x21,  9 }, 
132
{ 0x1a,  9 }, { 0x1b,  9 }, { 0x1c,  9 }, { 0x1d,  9 }, 
133
{ 0x1e,  9 }, { 0x1f,  9 }, { 0x23, 11 }, { 0x22, 11 }, 
134
{ 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 }, 
135
{ 0x53, 12 }, {  0xf,  4 }, { 0x14,  6 }, { 0x14,  7 }, 
136
{ 0x1e,  8 }, {  0xf, 10 }, { 0x21, 11 }, { 0x50, 12 }, 
137
{  0xb,  5 }, { 0x15,  7 }, {  0xe, 10 }, {  0x9, 10 }, 
138
{ 0x15,  6 }, { 0x1d,  8 }, {  0xd, 10 }, { 0x51, 12 }, 
139
{ 0x13,  6 }, { 0x23,  9 }, {  0x7, 11 }, { 0x17,  7 }, 
140
{ 0x22,  9 }, { 0x52, 12 }, { 0x1c,  8 }, {  0xc, 10 }, 
141
{ 0x1f,  8 }, {  0xb, 10 }, { 0x25,  9 }, {  0xa, 10 }, 
142
{ 0x24,  9 }, {  0x6, 11 }, { 0x21, 10 }, { 0x20, 10 }, 
143
{  0x8, 10 }, { 0x20, 11 }, {  0x7,  4 }, {  0xc,  6 }, 
144
{ 0x10,  7 }, { 0x13,  8 }, { 0x11,  9 }, { 0x12,  9 }, 
145
{  0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 }, 
146
{  0xf,  6 }, { 0x13,  9 }, {  0x5, 10 }, { 0x25, 11 }, 
147
{  0xe,  6 }, { 0x14,  9 }, { 0x24, 11 }, {  0xd,  6 }, 
148
{  0x6, 10 }, { 0x5e, 12 }, { 0x11,  7 }, {  0x7, 10 }, 
149
{ 0x13,  7 }, { 0x5d, 12 }, { 0x12,  7 }, { 0x5c, 12 }, 
150
{ 0x14,  8 }, { 0x5b, 12 }, { 0x15,  8 }, { 0x1a,  8 }, 
151
{ 0x19,  8 }, { 0x18,  8 }, { 0x17,  8 }, { 0x16,  8 }, 
152
{ 0x19,  9 }, { 0x15,  9 }, { 0x16,  9 }, { 0x18,  9 }, 
153
{ 0x17,  9 }, {  0x4, 11 }, {  0x5, 11 }, { 0x58, 12 }, 
154
{ 0x59, 12 }, { 0x5a, 12 }, {  0x3,  7 },
155
};
156

    
157
const INT8 intra_run_aic[102] = {
158
 0,  0,  0,  0,  0,  0,  0,  0, 
159
 0,  0,  0,  0,  0,  0,  0,  0, 
160
 0,  0,  0,  0,  0,  0,  0,  0, 
161
 0,  1,  1,  1,  1,  1,  1,  1, 
162
 2,  2,  2,  2,  3,  3,  3,  3, 
163
 4,  4,  4,  5,  5,  5,  6,  6, 
164
 7,  7,  8,  8,  9,  9, 10, 11, 
165
12, 13,  0,  0,  0,  0,  0,  0, 
166
 0,  0,  0,  0,  1,  1,  1,  1, 
167
 2,  2,  2,  3,  3,  3,  4,  4, 
168
 5,  5,  6,  6,  7,  7,  8,  9, 
169
10, 11, 12, 13, 14, 15, 16, 17, 
170
18, 19, 20, 21, 22, 23, 
171
};
172

    
173
const INT8 intra_level_aic[102] = {
174
 1,  2,  3,  4,  5,  6,  7,  8, 
175
 9, 10, 11, 12, 13, 14, 15, 16, 
176
17, 18, 19, 20, 21, 22, 23, 24, 
177
25,  1,  2,  3,  4,  5,  6,  7, 
178
 1,  2,  3,  4,  1,  2,  3,  4, 
179
 1,  2,  3,  1,  2,  3,  1,  2, 
180
 1,  2,  1,  2,  1,  2,  1,  1, 
181
 1,  1,  1,  2,  3,  4,  5,  6, 
182
 7,  8,  9, 10,  1,  2,  3,  4, 
183
 1,  2,  3,  1,  2,  3,  1,  2, 
184
 1,  2,  1,  2,  1,  2,  1,  1, 
185
 1,  1,  1,  1,  1,  1,  1,  1, 
186
 1,  1,  1,  1,  1,  1,
187
};
188

    
189
static RLTable rl_intra_aic = {
190
    102,
191
    58,
192
    intra_vlc_aic,
193
    intra_run_aic,
194
    intra_level_aic,
195
};
196

    
197
static const UINT16 h263_format[8][2] = {
198
    { 0, 0 },
199
    { 128, 96 },
200
    { 176, 144 },
201
    { 352, 288 },
202
    { 704, 576 },
203
    { 1408, 1152 },
204
};
205

    
206
static UINT8 h263_aic_dc_scale_table[32]={
207
//  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
208
    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
209
};
210