~ubuntu-branches/ubuntu/jaunty/xvidcap/jaunty-proposed

« back to all changes in this revision

Viewing changes to ffmpeg/libavcodec/h263data.h

  • Committer: Bazaar Package Importer
  • Author(s): John Dong
  • Date: 2008-02-25 15:47:12 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20080225154712-qvr11ekcea4c9ry8
Tags: 1.1.6-0.1ubuntu1
* Merge from debian-multimedia (LP: #120003), Ubuntu Changes:
 - For ffmpeg-related build-deps, remove cvs from package names.
 - Standards-Version 3.7.3
 - Maintainer Spec

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * copyright (c) 2000,2001 Fabrice Bellard
 
3
 * H263+ support
 
4
 * copyright (c) 2001 Juan J. Sierralta P.
 
5
 * copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
 
6
 *
 
7
 * This file is part of FFmpeg.
 
8
 *
 
9
 * FFmpeg is free software; you can redistribute it and/or
 
10
 * modify it under the terms of the GNU Lesser General Public
 
11
 * License as published by the Free Software Foundation; either
 
12
 * version 2.1 of the License, or (at your option) any later version.
 
13
 *
 
14
 * FFmpeg is distributed in the hope that it will be useful,
 
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
17
 * Lesser General Public License for more details.
 
18
 *
 
19
 * You should have received a copy of the GNU Lesser General Public
 
20
 * License along with FFmpeg; if not, write to the Free Software
 
21
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
22
 */
 
23
 
1
24
/**
2
25
 * @file h263data.h
3
26
 * H.263 tables.
10
33
 
11
34
/* inter MCBPC, mb_type = (inter), (intra), (interq), (intraq), (inter4v) */
12
35
/* 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, 
 
36
const uint8_t inter_MCBPC_code[28] = {
 
37
    1, 3, 2, 5,
 
38
    3, 4, 3, 3,
16
39
    3, 7, 6, 5,
17
40
    4, 4, 3, 2,
18
41
    2, 5, 4, 5,
19
42
    1, 0, 0, 0, /* Stuffing */
20
43
    2, 12, 14, 15,
21
44
};
22
 
const uint8_t inter_MCBPC_bits[28] = { 
 
45
const uint8_t inter_MCBPC_bits[28] = {
23
46
    1, 4, 4, 6, /* inter  */
24
47
    5, 8, 8, 7, /* intra  */
25
48
    3, 7, 7, 9, /* interQ */
29
52
    11, 13, 13, 13,/* inter4Q*/
30
53
};
31
54
 
 
55
static const uint8_t h263_mbtype_b_tab[15][2] = {
 
56
 {1, 1},
 
57
 {3, 3},
 
58
 {1, 5},
 
59
 {4, 4},
 
60
 {5, 4},
 
61
 {6, 6},
 
62
 {2, 4},
 
63
 {3, 4},
 
64
 {7, 6},
 
65
 {4, 6},
 
66
 {5, 6},
 
67
 {1, 6},
 
68
 {1,10},
 
69
 {1, 7},
 
70
 {1, 8},
 
71
};
 
72
 
 
73
static const int h263_mb_type_b_map[15]= {
 
74
    MB_TYPE_DIRECT2 | MB_TYPE_L0L1,
 
75
    MB_TYPE_DIRECT2 | MB_TYPE_L0L1 | MB_TYPE_CBP,
 
76
    MB_TYPE_DIRECT2 | MB_TYPE_L0L1 | MB_TYPE_CBP | MB_TYPE_QUANT,
 
77
                      MB_TYPE_L0                                 | MB_TYPE_16x16,
 
78
                      MB_TYPE_L0   | MB_TYPE_CBP                 | MB_TYPE_16x16,
 
79
                      MB_TYPE_L0   | MB_TYPE_CBP | MB_TYPE_QUANT | MB_TYPE_16x16,
 
80
                      MB_TYPE_L1                                 | MB_TYPE_16x16,
 
81
                      MB_TYPE_L1   | MB_TYPE_CBP                 | MB_TYPE_16x16,
 
82
                      MB_TYPE_L1   | MB_TYPE_CBP | MB_TYPE_QUANT | MB_TYPE_16x16,
 
83
                      MB_TYPE_L0L1                               | MB_TYPE_16x16,
 
84
                      MB_TYPE_L0L1 | MB_TYPE_CBP                 | MB_TYPE_16x16,
 
85
                      MB_TYPE_L0L1 | MB_TYPE_CBP | MB_TYPE_QUANT | MB_TYPE_16x16,
 
86
    0, //stuffing
 
87
    MB_TYPE_INTRA4x4                | MB_TYPE_CBP,
 
88
    MB_TYPE_INTRA4x4                | MB_TYPE_CBP | MB_TYPE_QUANT,
 
89
};
 
90
 
 
91
static const uint8_t cbpc_b_tab[4][2] = {
 
92
{0, 1},
 
93
{2, 2},
 
94
{7, 3},
 
95
{6, 3},
 
96
};
 
97
 
32
98
const uint8_t cbpy_tab[16][2] =
33
99
{
34
100
  {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
114
180
    inter_level,
115
181
};
116
182
 
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 }, 
 
183
static const uint16_t intra_vlc_aic[103][2] = {
 
184
{  0x2,  2 }, {  0x6,  3 }, {  0xe,  4 }, {  0xc,  5 },
 
185
{  0xd,  5 }, { 0x10,  6 }, { 0x11,  6 }, { 0x12,  6 },
 
186
{ 0x16,  7 }, { 0x1b,  8 }, { 0x20,  9 }, { 0x21,  9 },
 
187
{ 0x1a,  9 }, { 0x1b,  9 }, { 0x1c,  9 }, { 0x1d,  9 },
 
188
{ 0x1e,  9 }, { 0x1f,  9 }, { 0x23, 11 }, { 0x22, 11 },
 
189
{ 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 },
 
190
{ 0x53, 12 }, {  0xf,  4 }, { 0x14,  6 }, { 0x14,  7 },
 
191
{ 0x1e,  8 }, {  0xf, 10 }, { 0x21, 11 }, { 0x50, 12 },
 
192
{  0xb,  5 }, { 0x15,  7 }, {  0xe, 10 }, {  0x9, 10 },
 
193
{ 0x15,  6 }, { 0x1d,  8 }, {  0xd, 10 }, { 0x51, 12 },
 
194
{ 0x13,  6 }, { 0x23,  9 }, {  0x7, 11 }, { 0x17,  7 },
 
195
{ 0x22,  9 }, { 0x52, 12 }, { 0x1c,  8 }, {  0xc, 10 },
 
196
{ 0x1f,  8 }, {  0xb, 10 }, { 0x25,  9 }, {  0xa, 10 },
 
197
{ 0x24,  9 }, {  0x6, 11 }, { 0x21, 10 }, { 0x20, 10 },
 
198
{  0x8, 10 }, { 0x20, 11 }, {  0x7,  4 }, {  0xc,  6 },
 
199
{ 0x10,  7 }, { 0x13,  8 }, { 0x11,  9 }, { 0x12,  9 },
 
200
{  0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 },
 
201
{  0xf,  6 }, { 0x13,  9 }, {  0x5, 10 }, { 0x25, 11 },
 
202
{  0xe,  6 }, { 0x14,  9 }, { 0x24, 11 }, {  0xd,  6 },
 
203
{  0x6, 10 }, { 0x5e, 12 }, { 0x11,  7 }, {  0x7, 10 },
 
204
{ 0x13,  7 }, { 0x5d, 12 }, { 0x12,  7 }, { 0x5c, 12 },
 
205
{ 0x14,  8 }, { 0x5b, 12 }, { 0x15,  8 }, { 0x1a,  8 },
 
206
{ 0x19,  8 }, { 0x18,  8 }, { 0x17,  8 }, { 0x16,  8 },
 
207
{ 0x19,  9 }, { 0x15,  9 }, { 0x16,  9 }, { 0x18,  9 },
 
208
{ 0x17,  9 }, {  0x4, 11 }, {  0x5, 11 }, { 0x58, 12 },
143
209
{ 0x59, 12 }, { 0x5a, 12 }, {  0x3,  7 },
144
210
};
145
211
 
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, 
 
212
static const int8_t intra_run_aic[102] = {
 
213
 0,  0,  0,  0,  0,  0,  0,  0,
 
214
 0,  0,  0,  0,  0,  0,  0,  0,
 
215
 0,  0,  0,  0,  0,  0,  0,  0,
 
216
 0,  1,  1,  1,  1,  1,  1,  1,
 
217
 2,  2,  2,  2,  3,  3,  3,  3,
 
218
 4,  4,  4,  5,  5,  5,  6,  6,
 
219
 7,  7,  8,  8,  9,  9, 10, 11,
 
220
12, 13,  0,  0,  0,  0,  0,  0,
 
221
 0,  0,  0,  0,  1,  1,  1,  1,
 
222
 2,  2,  2,  3,  3,  3,  4,  4,
 
223
 5,  5,  6,  6,  7,  7,  8,  9,
 
224
10, 11, 12, 13, 14, 15, 16, 17,
 
225
18, 19, 20, 21, 22, 23,
160
226
};
161
227
 
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, 
 
228
static const int8_t intra_level_aic[102] = {
 
229
 1,  2,  3,  4,  5,  6,  7,  8,
 
230
 9, 10, 11, 12, 13, 14, 15, 16,
 
231
17, 18, 19, 20, 21, 22, 23, 24,
 
232
25,  1,  2,  3,  4,  5,  6,  7,
 
233
 1,  2,  3,  4,  1,  2,  3,  4,
 
234
 1,  2,  3,  1,  2,  3,  1,  2,
 
235
 1,  2,  1,  2,  1,  2,  1,  1,
 
236
 1,  1,  1,  2,  3,  4,  5,  6,
 
237
 7,  8,  9, 10,  1,  2,  3,  4,
 
238
 1,  2,  3,  1,  2,  3,  1,  2,
 
239
 1,  2,  1,  2,  1,  2,  1,  1,
 
240
 1,  1,  1,  1,  1,  1,  1,  1,
175
241
 1,  1,  1,  1,  1,  1,
176
242
};
177
243
 
183
249
    intra_level_aic,
184
250
};
185
251
 
 
252
static const uint8_t wrong_run[102] = {
 
253
 1,  2,  3,  5,  4, 10,  9,  8,
 
254
11, 15, 17, 16, 23, 22, 21, 20,
 
255
19, 18, 25, 24, 27, 26, 11,  7,
 
256
 6,  1,  2, 13,  2,  2,  2,  2,
 
257
 6, 12,  3,  9,  1,  3,  4,  3,
 
258
 7,  4,  1,  1,  5,  5, 14,  6,
 
259
 1,  7,  1,  8,  1,  1,  1,  1,
 
260
10,  1,  1,  5,  9, 17, 25, 24,
 
261
29, 33, 32, 41,  2, 23, 28, 31,
 
262
 3, 22, 30,  4, 27, 40,  8, 26,
 
263
 6, 39,  7, 38, 16, 37, 15, 10,
 
264
11, 12, 13, 14,  1, 21, 20, 18,
 
265
19,  2,  1, 34, 35, 36
 
266
};
 
267
 
186
268
static const uint16_t h263_format[8][2] = {
187
269
    { 0, 0 },
188
270
    { 128, 96 },
192
274
    { 1408, 1152 },
193
275
};
194
276
 
195
 
static uint8_t h263_aic_dc_scale_table[32]={
 
277
const uint8_t ff_aic_dc_scale_table[32]={
196
278
//  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
279
    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
280
};
199
281
 
 
282
static const uint8_t modified_quant_tab[2][32]={
 
283
//  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
 
284
{
 
285
    0, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9,10,11,12,13,14,15,16,17,18,18,19,20,21,22,23,24,25,26,27,28
 
286
},{
 
287
    0, 2, 3, 4, 5, 6, 7, 8, 9,10,11,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,31,31,26
 
288
}
 
289
};
 
290
 
 
291
const uint8_t ff_h263_chroma_qscale_table[32]={
 
292
//  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
 
293
    0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 9,10,10,11,11,12,12,12,13,13,13,14,14,14,14,14,15,15,15,15,15
 
294
};
 
295
 
 
296
const uint16_t ff_mba_max[6]={
 
297
     47,  98, 395,1583,6335,9215
 
298
};
 
299
 
 
300
const uint8_t ff_mba_length[7]={
 
301
      6,   7,   9,  11,  13,  14,  14
 
302
};
 
303
 
 
304
const uint8_t ff_h263_loop_filter_strength[32]={
 
305
//  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
 
306
    0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9,10,10,10,11,11,11,12,12,12
 
307
};
 
308