annotate h263data.h @ 10768:0e785b937073 libavcodec

The H.263 wrong_run table is only for encoding; only enable it in such cases. patch by avcoder, ffmpeg gmail com
author diego
date Mon, 04 Jan 2010 13:21:18 +0000
parents e9d9d946f213
children 4605bd2fdb7f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
1 /*
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
2 * copyright (c) 2000,2001 Fabrice Bellard
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
3 * H263+ support
8629
04423b2f6e0b cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 7760
diff changeset
4 * copyright (c) 2001 Juan J. Sierralta P
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
5 * copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
6 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
7 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
8 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
9 * FFmpeg is free software; you can redistribute it and/or
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
10 * modify it under the terms of the GNU Lesser General Public
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
11 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
12 * version 2.1 of the License, or (at your option) any later version.
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
13 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
14 * FFmpeg is distributed in the hope that it will be useful,
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
17 * Lesser General Public License for more details.
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
18 *
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
19 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3699
diff changeset
20 * License along with FFmpeg; if not, write to the Free Software
3699
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
22 */
c537a97eec66 Add official LGPL license headers to the files that were missing them.
diego
parents: 3187
diff changeset
23
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
24 /**
8718
e9d9d946f213 Use full internal pathname in doxygen @file directives.
diego
parents: 8629
diff changeset
25 * @file libavcodec/h263data.h
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
26 * H.263 tables.
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
27 */
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
28
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
29 #ifndef AVCODEC_H263DATA_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
30 #define AVCODEC_H263DATA_H
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 5162
diff changeset
31
5162
4394344397d8 include all prerequisites in header files
mru
parents: 4180
diff changeset
32 #include <stdint.h>
4394344397d8 include all prerequisites in header files
mru
parents: 4180
diff changeset
33 #include "mpegvideo.h"
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
34
986e461dc072 Initial revision
glantau
parents:
diff changeset
35 /* intra MCBPC, mb_type = (intra), then (intraq) */
1482
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
36 const uint8_t intra_MCBPC_code[9] = { 1, 1, 2, 3, 1, 1, 2, 3, 1 };
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
37 const uint8_t intra_MCBPC_bits[9] = { 1, 3, 3, 3, 4, 6, 6, 6, 9 };
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
38
986e461dc072 Initial revision
glantau
parents:
diff changeset
39 /* inter MCBPC, mb_type = (inter), (intra), (interq), (intraq), (inter4v) */
161
7ce36cf13055 - Added support to Inter4V+Q MBs to H.263 decoder.
pulento
parents: 144
diff changeset
40 /* Changed the tables for interq and inter4v+q, following the standard ** Juanjo ** */
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
41 const uint8_t inter_MCBPC_code[28] = {
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
42 1, 3, 2, 5,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
43 3, 4, 3, 3,
144
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
44 3, 7, 6, 5,
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
45 4, 4, 3, 2,
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
46 2, 5, 4, 5,
1482
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
47 1, 0, 0, 0, /* Stuffing */
161
7ce36cf13055 - Added support to Inter4V+Q MBs to H.263 decoder.
pulento
parents: 144
diff changeset
48 2, 12, 14, 15,
144
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
49 };
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
50 const uint8_t inter_MCBPC_bits[28] = {
1482
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
51 1, 4, 4, 6, /* inter */
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
52 5, 8, 8, 7, /* intra */
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
53 3, 7, 7, 9, /* interQ */
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
54 6, 9, 9, 9, /* intraQ */
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
55 3, 7, 7, 8, /* inter4 */
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
56 9, 0, 0, 0, /* Stuffing */
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
57 11, 13, 13, 13,/* inter4Q*/
144
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
58 };
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
59
1655
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
60 static const uint8_t h263_mbtype_b_tab[15][2] = {
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
61 {1, 1},
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
62 {3, 3},
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
63 {1, 5},
1655
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
64 {4, 4},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
65 {5, 4},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
66 {6, 6},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
67 {2, 4},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
68 {3, 4},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
69 {7, 6},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
70 {4, 6},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
71 {5, 6},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
72 {1, 6},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
73 {1,10},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
74 {1, 7},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
75 {1, 8},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
76 };
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
77
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
78 static const int h263_mb_type_b_map[15]= {
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
79 MB_TYPE_DIRECT2 | MB_TYPE_L0L1,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
80 MB_TYPE_DIRECT2 | MB_TYPE_L0L1 | MB_TYPE_CBP,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
81 MB_TYPE_DIRECT2 | MB_TYPE_L0L1 | MB_TYPE_CBP | MB_TYPE_QUANT,
1701
95b7ac3344df rv20 / h263 b frame fix
michael
parents: 1655
diff changeset
82 MB_TYPE_L0 | MB_TYPE_16x16,
95b7ac3344df rv20 / h263 b frame fix
michael
parents: 1655
diff changeset
83 MB_TYPE_L0 | MB_TYPE_CBP | MB_TYPE_16x16,
95b7ac3344df rv20 / h263 b frame fix
michael
parents: 1655
diff changeset
84 MB_TYPE_L0 | MB_TYPE_CBP | MB_TYPE_QUANT | MB_TYPE_16x16,
95b7ac3344df rv20 / h263 b frame fix
michael
parents: 1655
diff changeset
85 MB_TYPE_L1 | MB_TYPE_16x16,
95b7ac3344df rv20 / h263 b frame fix
michael
parents: 1655
diff changeset
86 MB_TYPE_L1 | MB_TYPE_CBP | MB_TYPE_16x16,
95b7ac3344df rv20 / h263 b frame fix
michael
parents: 1655
diff changeset
87 MB_TYPE_L1 | MB_TYPE_CBP | MB_TYPE_QUANT | MB_TYPE_16x16,
95b7ac3344df rv20 / h263 b frame fix
michael
parents: 1655
diff changeset
88 MB_TYPE_L0L1 | MB_TYPE_16x16,
95b7ac3344df rv20 / h263 b frame fix
michael
parents: 1655
diff changeset
89 MB_TYPE_L0L1 | MB_TYPE_CBP | MB_TYPE_16x16,
95b7ac3344df rv20 / h263 b frame fix
michael
parents: 1655
diff changeset
90 MB_TYPE_L0L1 | MB_TYPE_CBP | MB_TYPE_QUANT | MB_TYPE_16x16,
1655
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
91 0, //stuffing
1708
dea5b2946999 interlaced motion estimation
michael
parents: 1701
diff changeset
92 MB_TYPE_INTRA4x4 | MB_TYPE_CBP,
dea5b2946999 interlaced motion estimation
michael
parents: 1701
diff changeset
93 MB_TYPE_INTRA4x4 | MB_TYPE_CBP | MB_TYPE_QUANT,
1655
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
94 };
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
95
4180
85e1f5ceb97e make more tables static
mru
parents: 3947
diff changeset
96 static const uint8_t cbpc_b_tab[4][2] = {
1655
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
97 {0, 1},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
98 {2, 2},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
99 {7, 3},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
100 {6, 3},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
101 };
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
102
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
103 const uint8_t cbpy_tab[16][2] =
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
104 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
105 {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
986e461dc072 Initial revision
glantau
parents:
diff changeset
106 {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
986e461dc072 Initial revision
glantau
parents:
diff changeset
107 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
108
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
109 const uint8_t mvtab[33][2] =
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
110 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
111 {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
986e461dc072 Initial revision
glantau
parents:
diff changeset
112 {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
986e461dc072 Initial revision
glantau
parents:
diff changeset
113 {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
986e461dc072 Initial revision
glantau
parents:
diff changeset
114 {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
986e461dc072 Initial revision
glantau
parents:
diff changeset
115 {2,12}
986e461dc072 Initial revision
glantau
parents:
diff changeset
116 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
117
986e461dc072 Initial revision
glantau
parents:
diff changeset
118 /* third non intra table */
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
119 const uint16_t inter_vlc[103][2] = {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
120 { 0x2, 2 },{ 0xf, 4 },{ 0x15, 6 },{ 0x17, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
121 { 0x1f, 8 },{ 0x25, 9 },{ 0x24, 9 },{ 0x21, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
122 { 0x20, 10 },{ 0x7, 11 },{ 0x6, 11 },{ 0x20, 11 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
123 { 0x6, 3 },{ 0x14, 6 },{ 0x1e, 8 },{ 0xf, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
124 { 0x21, 11 },{ 0x50, 12 },{ 0xe, 4 },{ 0x1d, 8 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
125 { 0xe, 10 },{ 0x51, 12 },{ 0xd, 5 },{ 0x23, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
126 { 0xd, 10 },{ 0xc, 5 },{ 0x22, 9 },{ 0x52, 12 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
127 { 0xb, 5 },{ 0xc, 10 },{ 0x53, 12 },{ 0x13, 6 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
128 { 0xb, 10 },{ 0x54, 12 },{ 0x12, 6 },{ 0xa, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
129 { 0x11, 6 },{ 0x9, 10 },{ 0x10, 6 },{ 0x8, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
130 { 0x16, 7 },{ 0x55, 12 },{ 0x15, 7 },{ 0x14, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
131 { 0x1c, 8 },{ 0x1b, 8 },{ 0x21, 9 },{ 0x20, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
132 { 0x1f, 9 },{ 0x1e, 9 },{ 0x1d, 9 },{ 0x1c, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
133 { 0x1b, 9 },{ 0x1a, 9 },{ 0x22, 11 },{ 0x23, 11 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
134 { 0x56, 12 },{ 0x57, 12 },{ 0x7, 4 },{ 0x19, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
135 { 0x5, 11 },{ 0xf, 6 },{ 0x4, 11 },{ 0xe, 6 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
136 { 0xd, 6 },{ 0xc, 6 },{ 0x13, 7 },{ 0x12, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
137 { 0x11, 7 },{ 0x10, 7 },{ 0x1a, 8 },{ 0x19, 8 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
138 { 0x18, 8 },{ 0x17, 8 },{ 0x16, 8 },{ 0x15, 8 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
139 { 0x14, 8 },{ 0x13, 8 },{ 0x18, 9 },{ 0x17, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
140 { 0x16, 9 },{ 0x15, 9 },{ 0x14, 9 },{ 0x13, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
141 { 0x12, 9 },{ 0x11, 9 },{ 0x7, 10 },{ 0x6, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
142 { 0x5, 10 },{ 0x4, 10 },{ 0x24, 11 },{ 0x25, 11 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
143 { 0x26, 11 },{ 0x27, 11 },{ 0x58, 12 },{ 0x59, 12 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
144 { 0x5a, 12 },{ 0x5b, 12 },{ 0x5c, 12 },{ 0x5d, 12 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
145 { 0x5e, 12 },{ 0x5f, 12 },{ 0x3, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
146 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
147
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
148 const int8_t inter_level[102] = {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
149 1, 2, 3, 4, 5, 6, 7, 8,
986e461dc072 Initial revision
glantau
parents:
diff changeset
150 9, 10, 11, 12, 1, 2, 3, 4,
986e461dc072 Initial revision
glantau
parents:
diff changeset
151 5, 6, 1, 2, 3, 4, 1, 2,
986e461dc072 Initial revision
glantau
parents:
diff changeset
152 3, 1, 2, 3, 1, 2, 3, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
153 2, 3, 1, 2, 1, 2, 1, 2,
986e461dc072 Initial revision
glantau
parents:
diff changeset
154 1, 2, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
155 1, 1, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
156 1, 1, 1, 2, 3, 1, 2, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
157 1, 1, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
158 1, 1, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
159 1, 1, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
160 1, 1, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
161 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
162 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
163
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
164 const int8_t inter_run[102] = {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
165 0, 0, 0, 0, 0, 0, 0, 0,
986e461dc072 Initial revision
glantau
parents:
diff changeset
166 0, 0, 0, 0, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
167 1, 1, 2, 2, 2, 2, 3, 3,
986e461dc072 Initial revision
glantau
parents:
diff changeset
168 3, 4, 4, 4, 5, 5, 5, 6,
986e461dc072 Initial revision
glantau
parents:
diff changeset
169 6, 6, 7, 7, 8, 8, 9, 9,
986e461dc072 Initial revision
glantau
parents:
diff changeset
170 10, 10, 11, 12, 13, 14, 15, 16,
986e461dc072 Initial revision
glantau
parents:
diff changeset
171 17, 18, 19, 20, 21, 22, 23, 24,
986e461dc072 Initial revision
glantau
parents:
diff changeset
172 25, 26, 0, 0, 0, 1, 1, 2,
986e461dc072 Initial revision
glantau
parents:
diff changeset
173 3, 4, 5, 6, 7, 8, 9, 10,
986e461dc072 Initial revision
glantau
parents:
diff changeset
174 11, 12, 13, 14, 15, 16, 17, 18,
986e461dc072 Initial revision
glantau
parents:
diff changeset
175 19, 20, 21, 22, 23, 24, 25, 26,
986e461dc072 Initial revision
glantau
parents:
diff changeset
176 27, 28, 29, 30, 31, 32, 33, 34,
986e461dc072 Initial revision
glantau
parents:
diff changeset
177 35, 36, 37, 38, 39, 40,
986e461dc072 Initial revision
glantau
parents:
diff changeset
178 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
179
986e461dc072 Initial revision
glantau
parents:
diff changeset
180 static RLTable rl_inter = {
986e461dc072 Initial revision
glantau
parents:
diff changeset
181 102,
986e461dc072 Initial revision
glantau
parents:
diff changeset
182 58,
986e461dc072 Initial revision
glantau
parents:
diff changeset
183 inter_vlc,
986e461dc072 Initial revision
glantau
parents:
diff changeset
184 inter_run,
986e461dc072 Initial revision
glantau
parents:
diff changeset
185 inter_level,
986e461dc072 Initial revision
glantau
parents:
diff changeset
186 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
187
4180
85e1f5ceb97e make more tables static
mru
parents: 3947
diff changeset
188 static const uint16_t intra_vlc_aic[103][2] = {
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
189 { 0x2, 2 }, { 0x6, 3 }, { 0xe, 4 }, { 0xc, 5 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
190 { 0xd, 5 }, { 0x10, 6 }, { 0x11, 6 }, { 0x12, 6 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
191 { 0x16, 7 }, { 0x1b, 8 }, { 0x20, 9 }, { 0x21, 9 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
192 { 0x1a, 9 }, { 0x1b, 9 }, { 0x1c, 9 }, { 0x1d, 9 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
193 { 0x1e, 9 }, { 0x1f, 9 }, { 0x23, 11 }, { 0x22, 11 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
194 { 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
195 { 0x53, 12 }, { 0xf, 4 }, { 0x14, 6 }, { 0x14, 7 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
196 { 0x1e, 8 }, { 0xf, 10 }, { 0x21, 11 }, { 0x50, 12 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
197 { 0xb, 5 }, { 0x15, 7 }, { 0xe, 10 }, { 0x9, 10 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
198 { 0x15, 6 }, { 0x1d, 8 }, { 0xd, 10 }, { 0x51, 12 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
199 { 0x13, 6 }, { 0x23, 9 }, { 0x7, 11 }, { 0x17, 7 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
200 { 0x22, 9 }, { 0x52, 12 }, { 0x1c, 8 }, { 0xc, 10 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
201 { 0x1f, 8 }, { 0xb, 10 }, { 0x25, 9 }, { 0xa, 10 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
202 { 0x24, 9 }, { 0x6, 11 }, { 0x21, 10 }, { 0x20, 10 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
203 { 0x8, 10 }, { 0x20, 11 }, { 0x7, 4 }, { 0xc, 6 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
204 { 0x10, 7 }, { 0x13, 8 }, { 0x11, 9 }, { 0x12, 9 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
205 { 0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
206 { 0xf, 6 }, { 0x13, 9 }, { 0x5, 10 }, { 0x25, 11 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
207 { 0xe, 6 }, { 0x14, 9 }, { 0x24, 11 }, { 0xd, 6 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
208 { 0x6, 10 }, { 0x5e, 12 }, { 0x11, 7 }, { 0x7, 10 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
209 { 0x13, 7 }, { 0x5d, 12 }, { 0x12, 7 }, { 0x5c, 12 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
210 { 0x14, 8 }, { 0x5b, 12 }, { 0x15, 8 }, { 0x1a, 8 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
211 { 0x19, 8 }, { 0x18, 8 }, { 0x17, 8 }, { 0x16, 8 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
212 { 0x19, 9 }, { 0x15, 9 }, { 0x16, 9 }, { 0x18, 9 },
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
213 { 0x17, 9 }, { 0x4, 11 }, { 0x5, 11 }, { 0x58, 12 },
350
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
214 { 0x59, 12 }, { 0x5a, 12 }, { 0x3, 7 },
248
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
215 };
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
216
4180
85e1f5ceb97e make more tables static
mru
parents: 3947
diff changeset
217 static const int8_t intra_run_aic[102] = {
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
218 0, 0, 0, 0, 0, 0, 0, 0,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
219 0, 0, 0, 0, 0, 0, 0, 0,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
220 0, 0, 0, 0, 0, 0, 0, 0,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
221 0, 1, 1, 1, 1, 1, 1, 1,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
222 2, 2, 2, 2, 3, 3, 3, 3,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
223 4, 4, 4, 5, 5, 5, 6, 6,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
224 7, 7, 8, 8, 9, 9, 10, 11,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
225 12, 13, 0, 0, 0, 0, 0, 0,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
226 0, 0, 0, 0, 1, 1, 1, 1,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
227 2, 2, 2, 3, 3, 3, 4, 4,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
228 5, 5, 6, 6, 7, 7, 8, 9,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
229 10, 11, 12, 13, 14, 15, 16, 17,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
230 18, 19, 20, 21, 22, 23,
350
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
231 };
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
232
4180
85e1f5ceb97e make more tables static
mru
parents: 3947
diff changeset
233 static const int8_t intra_level_aic[102] = {
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
234 1, 2, 3, 4, 5, 6, 7, 8,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
235 9, 10, 11, 12, 13, 14, 15, 16,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
236 17, 18, 19, 20, 21, 22, 23, 24,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
237 25, 1, 2, 3, 4, 5, 6, 7,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
238 1, 2, 3, 4, 1, 2, 3, 4,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
239 1, 2, 3, 1, 2, 3, 1, 2,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
240 1, 2, 1, 2, 1, 2, 1, 1,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
241 1, 1, 1, 2, 3, 4, 5, 6,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
242 7, 8, 9, 10, 1, 2, 3, 4,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
243 1, 2, 3, 1, 2, 3, 1, 2,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
244 1, 2, 1, 2, 1, 2, 1, 1,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
245 1, 1, 1, 1, 1, 1, 1, 1,
350
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
246 1, 1, 1, 1, 1, 1,
248
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
247 };
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
248
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
249 static RLTable rl_intra_aic = {
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
250 102,
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
251 58,
350
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
252 intra_vlc_aic,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
253 intra_run_aic,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
254 intra_level_aic,
248
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
255 };
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
256
10768
0e785b937073 The H.263 wrong_run table is only for encoding; only enable it in such cases.
diego
parents: 8718
diff changeset
257 #if CONFIG_ENCODERS
1638
michael
parents: 1482
diff changeset
258 static const uint8_t wrong_run[102] = {
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
259 1, 2, 3, 5, 4, 10, 9, 8,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
260 11, 15, 17, 16, 23, 22, 21, 20,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
261 19, 18, 25, 24, 27, 26, 11, 7,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
262 6, 1, 2, 13, 2, 2, 2, 2,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
263 6, 12, 3, 9, 1, 3, 4, 3,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
264 7, 4, 1, 1, 5, 5, 14, 6,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
265 1, 7, 1, 8, 1, 1, 1, 1,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
266 10, 1, 1, 5, 9, 17, 25, 24,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
267 29, 33, 32, 41, 2, 23, 28, 31,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
268 3, 22, 30, 4, 27, 40, 8, 26,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
269 6, 39, 7, 38, 16, 37, 15, 10,
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
270 11, 12, 13, 14, 1, 21, 20, 18,
1638
michael
parents: 1482
diff changeset
271 19, 2, 1, 34, 35, 36
michael
parents: 1482
diff changeset
272 };
10768
0e785b937073 The H.263 wrong_run table is only for encoding; only enable it in such cases.
diego
parents: 8718
diff changeset
273 #endif
1638
michael
parents: 1482
diff changeset
274
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
275 static const uint16_t h263_format[8][2] = {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
276 { 0, 0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
277 { 128, 96 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
278 { 176, 144 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
279 { 352, 288 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
280 { 704, 576 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
281 { 1408, 1152 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
282 };
498
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 457
diff changeset
283
2753
ba8ecddf5598 adding a few const
michael
parents: 1708
diff changeset
284 const uint8_t ff_aic_dc_scale_table[32]={
498
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 457
diff changeset
285 // 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
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 457
diff changeset
286 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
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 457
diff changeset
287 };
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 457
diff changeset
288
1639
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
289 static const uint8_t modified_quant_tab[2][32]={
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
290 // 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
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
291 {
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
292 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
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
293 },{
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
294 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
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2753
diff changeset
295 }
1639
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
296 };
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
297
1644
835cf346975e h263 loop filter
michael
parents: 1639
diff changeset
298 const uint8_t ff_h263_chroma_qscale_table[32]={
1639
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
299 // 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
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
300 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
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
301 };
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
302
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
303 const uint16_t ff_mba_max[6]={
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
304 47, 98, 395,1583,6335,9215
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
305 };
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
306
3187
204080942ce2 out of array read fix
michael
parents: 2967
diff changeset
307 const uint8_t ff_mba_length[7]={
204080942ce2 out of array read fix
michael
parents: 2967
diff changeset
308 6, 7, 9, 11, 13, 14, 14
1639
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
309 };
1644
835cf346975e h263 loop filter
michael
parents: 1639
diff changeset
310
835cf346975e h263 loop filter
michael
parents: 1639
diff changeset
311 const uint8_t ff_h263_loop_filter_strength[32]={
835cf346975e h263 loop filter
michael
parents: 1639
diff changeset
312 // 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
835cf346975e h263 loop filter
michael
parents: 1639
diff changeset
313 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
835cf346975e h263 loop filter
michael
parents: 1639
diff changeset
314 };
835cf346975e h263 loop filter
michael
parents: 1639
diff changeset
315
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
316 #endif /* AVCODEC_H263DATA_H */