Statistics
| Branch: | Revision:

ffmpeg / libavcodec / h263data.h @ 11e29a41

History | View | Annotate | Download (6.44 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 7af75e6c Michael Niedermayer
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 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 7af75e6c Michael Niedermayer
const uint8_t inter_MCBPC_code[28] = { 
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 7af75e6c Michael Niedermayer
    1, 0, 0, 0, /* Stuffing */
20 96815ce9 Juanjo
    2, 12, 14, 15,
21 4949028f Juanjo
};
22 7af75e6c Michael Niedermayer
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 4949028f Juanjo
};
31
32 0c1a9eda Zdenek Kabelac
const uint8_t cbpy_tab[16][2] =
33 de6d9b64 Fabrice Bellard
{
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 0c1a9eda Zdenek Kabelac
const uint8_t mvtab[33][2] =
39 de6d9b64 Fabrice Bellard
{
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 0c1a9eda Zdenek Kabelac
const uint16_t inter_vlc[103][2] = {
49 de6d9b64 Fabrice Bellard
{ 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 0c1a9eda Zdenek Kabelac
const int8_t inter_level[102] = {
78 de6d9b64 Fabrice Bellard
  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 0c1a9eda Zdenek Kabelac
const int8_t inter_run[102] = {
94 de6d9b64 Fabrice Bellard
  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 0c1a9eda Zdenek Kabelac
const uint16_t intra_vlc_aic[103][2] = {
118 ef5b1b5a Juanjo
{  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 d140623f Juanjo
};
145
146 0c1a9eda Zdenek Kabelac
const int8_t intra_run_aic[102] = {
147 ef5b1b5a Juanjo
 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 0c1a9eda Zdenek Kabelac
const int8_t intra_level_aic[102] = {
163 ef5b1b5a Juanjo
 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 d140623f Juanjo
};
177
178
static RLTable rl_intra_aic = {
179
    102,
180
    58,
181 ef5b1b5a Juanjo
    intra_vlc_aic,
182
    intra_run_aic,
183
    intra_level_aic,
184 d140623f Juanjo
};
185
186 0c1a9eda Zdenek Kabelac
static const uint16_t h263_format[8][2] = {
187 de6d9b64 Fabrice Bellard
    { 0, 0 },
188
    { 128, 96 },
189
    { 176, 144 },
190
    { 352, 288 },
191
    { 704, 576 },
192
    { 1408, 1152 },
193
};
194 8f8402e4 Michael Niedermayer
195 0c1a9eda Zdenek Kabelac
static uint8_t h263_aic_dc_scale_table[32]={
196 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
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
};