annotate h263data.h @ 1655:c92147a61d97 libavcodec

rv20 (h263) b frame decoding support
author michael
date Thu, 04 Dec 2003 18:34:47 +0000
parents 835cf346975e
children 95b7ac3344df
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
1 /**
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
2 * @file h263data.h
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
3 * H.263 tables.
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
4 */
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
5
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
6
986e461dc072 Initial revision
glantau
parents:
diff changeset
7 /* intra MCBPC, mb_type = (intra), then (intraq) */
1482
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
8 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
9 const uint8_t intra_MCBPC_bits[9] = { 1, 3, 3, 3, 4, 6, 6, 6, 9 };
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
10
986e461dc072 Initial revision
glantau
parents:
diff changeset
11 /* 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
12 /* Changed the tables for interq and inter4v+q, following the standard ** Juanjo ** */
1482
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
13 const uint8_t inter_MCBPC_code[28] = {
144
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
14 1, 3, 2, 5,
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
15 3, 4, 3, 3,
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
16 3, 7, 6, 5,
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
17 4, 4, 3, 2,
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
18 2, 5, 4, 5,
1482
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
19 1, 0, 0, 0, /* Stuffing */
161
7ce36cf13055 - Added support to Inter4V+Q MBs to H.263 decoder.
pulento
parents: 144
diff changeset
20 2, 12, 14, 15,
144
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
21 };
1482
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
22 const uint8_t inter_MCBPC_bits[28] = {
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
23 1, 4, 4, 6, /* inter */
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
24 5, 8, 8, 7, /* intra */
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
25 3, 7, 7, 9, /* interQ */
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
26 6, 9, 9, 9, /* intraQ */
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
27 3, 7, 7, 8, /* inter4 */
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
28 9, 0, 0, 0, /* Stuffing */
b372ecde32a8 h263 stuffing decode fix
michaelni
parents: 1106
diff changeset
29 11, 13, 13, 13,/* inter4Q*/
144
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
30 };
cb5dabd00ba2 - Bug fix on inter MCBPC table for inter+q.
pulento
parents: 0
diff changeset
31
1655
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
32 static const uint8_t h263_mbtype_b_tab[15][2] = {
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
33 {1, 1},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
34 {3, 3},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
35 {1, 5},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
36 {4, 4},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
37 {5, 4},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
38 {6, 6},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
39 {2, 4},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
40 {3, 4},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
41 {7, 6},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
42 {4, 6},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
43 {5, 6},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
44 {1, 6},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
45 {1,10},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
46 {1, 7},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
47 {1, 8},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
48 };
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
49
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
50 static const int h263_mb_type_b_map[15]= {
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
51 MB_TYPE_DIRECT2 | MB_TYPE_L0L1,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
52 MB_TYPE_DIRECT2 | MB_TYPE_L0L1 | MB_TYPE_CBP,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
53 MB_TYPE_DIRECT2 | MB_TYPE_L0L1 | MB_TYPE_CBP | MB_TYPE_QUANT,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
54 MB_TYPE_L0,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
55 MB_TYPE_L0 | MB_TYPE_CBP,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
56 MB_TYPE_L0 | MB_TYPE_CBP | MB_TYPE_QUANT,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
57 MB_TYPE_L1,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
58 MB_TYPE_L1 | MB_TYPE_CBP,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
59 MB_TYPE_L1 | MB_TYPE_CBP | MB_TYPE_QUANT,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
60 MB_TYPE_L0L1,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
61 MB_TYPE_L0L1 | MB_TYPE_CBP,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
62 MB_TYPE_L0L1 | MB_TYPE_CBP | MB_TYPE_QUANT,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
63 0, //stuffing
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
64 MB_TYPE_INTRA | MB_TYPE_CBP,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
65 MB_TYPE_INTRA | MB_TYPE_CBP | MB_TYPE_QUANT,
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
66 };
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
67
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
68 const uint8_t cbpc_b_tab[4][2] = {
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
69 {0, 1},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
70 {2, 2},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
71 {7, 3},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
72 {6, 3},
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
73 };
c92147a61d97 rv20 (h263) b frame decoding support
michael
parents: 1644
diff changeset
74
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
75 const uint8_t cbpy_tab[16][2] =
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
76 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
77 {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
986e461dc072 Initial revision
glantau
parents:
diff changeset
78 {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
986e461dc072 Initial revision
glantau
parents:
diff changeset
79 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
80
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
81 const uint8_t mvtab[33][2] =
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
82 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
83 {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
986e461dc072 Initial revision
glantau
parents:
diff changeset
84 {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
986e461dc072 Initial revision
glantau
parents:
diff changeset
85 {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
986e461dc072 Initial revision
glantau
parents:
diff changeset
86 {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
986e461dc072 Initial revision
glantau
parents:
diff changeset
87 {2,12}
986e461dc072 Initial revision
glantau
parents:
diff changeset
88 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
89
986e461dc072 Initial revision
glantau
parents:
diff changeset
90 /* third non intra table */
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
91 const uint16_t inter_vlc[103][2] = {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
92 { 0x2, 2 },{ 0xf, 4 },{ 0x15, 6 },{ 0x17, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
93 { 0x1f, 8 },{ 0x25, 9 },{ 0x24, 9 },{ 0x21, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
94 { 0x20, 10 },{ 0x7, 11 },{ 0x6, 11 },{ 0x20, 11 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
95 { 0x6, 3 },{ 0x14, 6 },{ 0x1e, 8 },{ 0xf, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
96 { 0x21, 11 },{ 0x50, 12 },{ 0xe, 4 },{ 0x1d, 8 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
97 { 0xe, 10 },{ 0x51, 12 },{ 0xd, 5 },{ 0x23, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
98 { 0xd, 10 },{ 0xc, 5 },{ 0x22, 9 },{ 0x52, 12 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
99 { 0xb, 5 },{ 0xc, 10 },{ 0x53, 12 },{ 0x13, 6 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
100 { 0xb, 10 },{ 0x54, 12 },{ 0x12, 6 },{ 0xa, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
101 { 0x11, 6 },{ 0x9, 10 },{ 0x10, 6 },{ 0x8, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
102 { 0x16, 7 },{ 0x55, 12 },{ 0x15, 7 },{ 0x14, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
103 { 0x1c, 8 },{ 0x1b, 8 },{ 0x21, 9 },{ 0x20, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
104 { 0x1f, 9 },{ 0x1e, 9 },{ 0x1d, 9 },{ 0x1c, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
105 { 0x1b, 9 },{ 0x1a, 9 },{ 0x22, 11 },{ 0x23, 11 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
106 { 0x56, 12 },{ 0x57, 12 },{ 0x7, 4 },{ 0x19, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
107 { 0x5, 11 },{ 0xf, 6 },{ 0x4, 11 },{ 0xe, 6 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
108 { 0xd, 6 },{ 0xc, 6 },{ 0x13, 7 },{ 0x12, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
109 { 0x11, 7 },{ 0x10, 7 },{ 0x1a, 8 },{ 0x19, 8 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
110 { 0x18, 8 },{ 0x17, 8 },{ 0x16, 8 },{ 0x15, 8 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
111 { 0x14, 8 },{ 0x13, 8 },{ 0x18, 9 },{ 0x17, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
112 { 0x16, 9 },{ 0x15, 9 },{ 0x14, 9 },{ 0x13, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
113 { 0x12, 9 },{ 0x11, 9 },{ 0x7, 10 },{ 0x6, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
114 { 0x5, 10 },{ 0x4, 10 },{ 0x24, 11 },{ 0x25, 11 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
115 { 0x26, 11 },{ 0x27, 11 },{ 0x58, 12 },{ 0x59, 12 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
116 { 0x5a, 12 },{ 0x5b, 12 },{ 0x5c, 12 },{ 0x5d, 12 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
117 { 0x5e, 12 },{ 0x5f, 12 },{ 0x3, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
118 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
119
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
120 const int8_t inter_level[102] = {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
121 1, 2, 3, 4, 5, 6, 7, 8,
986e461dc072 Initial revision
glantau
parents:
diff changeset
122 9, 10, 11, 12, 1, 2, 3, 4,
986e461dc072 Initial revision
glantau
parents:
diff changeset
123 5, 6, 1, 2, 3, 4, 1, 2,
986e461dc072 Initial revision
glantau
parents:
diff changeset
124 3, 1, 2, 3, 1, 2, 3, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
125 2, 3, 1, 2, 1, 2, 1, 2,
986e461dc072 Initial revision
glantau
parents:
diff changeset
126 1, 2, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
127 1, 1, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
128 1, 1, 1, 2, 3, 1, 2, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
129 1, 1, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
130 1, 1, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
131 1, 1, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
132 1, 1, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
133 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
134 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
135
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
136 const int8_t inter_run[102] = {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
137 0, 0, 0, 0, 0, 0, 0, 0,
986e461dc072 Initial revision
glantau
parents:
diff changeset
138 0, 0, 0, 0, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
139 1, 1, 2, 2, 2, 2, 3, 3,
986e461dc072 Initial revision
glantau
parents:
diff changeset
140 3, 4, 4, 4, 5, 5, 5, 6,
986e461dc072 Initial revision
glantau
parents:
diff changeset
141 6, 6, 7, 7, 8, 8, 9, 9,
986e461dc072 Initial revision
glantau
parents:
diff changeset
142 10, 10, 11, 12, 13, 14, 15, 16,
986e461dc072 Initial revision
glantau
parents:
diff changeset
143 17, 18, 19, 20, 21, 22, 23, 24,
986e461dc072 Initial revision
glantau
parents:
diff changeset
144 25, 26, 0, 0, 0, 1, 1, 2,
986e461dc072 Initial revision
glantau
parents:
diff changeset
145 3, 4, 5, 6, 7, 8, 9, 10,
986e461dc072 Initial revision
glantau
parents:
diff changeset
146 11, 12, 13, 14, 15, 16, 17, 18,
986e461dc072 Initial revision
glantau
parents:
diff changeset
147 19, 20, 21, 22, 23, 24, 25, 26,
986e461dc072 Initial revision
glantau
parents:
diff changeset
148 27, 28, 29, 30, 31, 32, 33, 34,
986e461dc072 Initial revision
glantau
parents:
diff changeset
149 35, 36, 37, 38, 39, 40,
986e461dc072 Initial revision
glantau
parents:
diff changeset
150 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
151
986e461dc072 Initial revision
glantau
parents:
diff changeset
152 static RLTable rl_inter = {
986e461dc072 Initial revision
glantau
parents:
diff changeset
153 102,
986e461dc072 Initial revision
glantau
parents:
diff changeset
154 58,
986e461dc072 Initial revision
glantau
parents:
diff changeset
155 inter_vlc,
986e461dc072 Initial revision
glantau
parents:
diff changeset
156 inter_run,
986e461dc072 Initial revision
glantau
parents:
diff changeset
157 inter_level,
986e461dc072 Initial revision
glantau
parents:
diff changeset
158 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
159
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
160 const uint16_t intra_vlc_aic[103][2] = {
350
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
161 { 0x2, 2 }, { 0x6, 3 }, { 0xe, 4 }, { 0xc, 5 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
162 { 0xd, 5 }, { 0x10, 6 }, { 0x11, 6 }, { 0x12, 6 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
163 { 0x16, 7 }, { 0x1b, 8 }, { 0x20, 9 }, { 0x21, 9 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
164 { 0x1a, 9 }, { 0x1b, 9 }, { 0x1c, 9 }, { 0x1d, 9 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
165 { 0x1e, 9 }, { 0x1f, 9 }, { 0x23, 11 }, { 0x22, 11 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
166 { 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
167 { 0x53, 12 }, { 0xf, 4 }, { 0x14, 6 }, { 0x14, 7 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
168 { 0x1e, 8 }, { 0xf, 10 }, { 0x21, 11 }, { 0x50, 12 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
169 { 0xb, 5 }, { 0x15, 7 }, { 0xe, 10 }, { 0x9, 10 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
170 { 0x15, 6 }, { 0x1d, 8 }, { 0xd, 10 }, { 0x51, 12 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
171 { 0x13, 6 }, { 0x23, 9 }, { 0x7, 11 }, { 0x17, 7 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
172 { 0x22, 9 }, { 0x52, 12 }, { 0x1c, 8 }, { 0xc, 10 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
173 { 0x1f, 8 }, { 0xb, 10 }, { 0x25, 9 }, { 0xa, 10 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
174 { 0x24, 9 }, { 0x6, 11 }, { 0x21, 10 }, { 0x20, 10 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
175 { 0x8, 10 }, { 0x20, 11 }, { 0x7, 4 }, { 0xc, 6 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
176 { 0x10, 7 }, { 0x13, 8 }, { 0x11, 9 }, { 0x12, 9 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
177 { 0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
178 { 0xf, 6 }, { 0x13, 9 }, { 0x5, 10 }, { 0x25, 11 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
179 { 0xe, 6 }, { 0x14, 9 }, { 0x24, 11 }, { 0xd, 6 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
180 { 0x6, 10 }, { 0x5e, 12 }, { 0x11, 7 }, { 0x7, 10 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
181 { 0x13, 7 }, { 0x5d, 12 }, { 0x12, 7 }, { 0x5c, 12 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
182 { 0x14, 8 }, { 0x5b, 12 }, { 0x15, 8 }, { 0x1a, 8 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
183 { 0x19, 8 }, { 0x18, 8 }, { 0x17, 8 }, { 0x16, 8 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
184 { 0x19, 9 }, { 0x15, 9 }, { 0x16, 9 }, { 0x18, 9 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
185 { 0x17, 9 }, { 0x4, 11 }, { 0x5, 11 }, { 0x58, 12 },
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
186 { 0x59, 12 }, { 0x5a, 12 }, { 0x3, 7 },
248
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
187 };
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
188
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
189 const int8_t intra_run_aic[102] = {
350
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
190 0, 0, 0, 0, 0, 0, 0, 0,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
191 0, 0, 0, 0, 0, 0, 0, 0,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
192 0, 0, 0, 0, 0, 0, 0, 0,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
193 0, 1, 1, 1, 1, 1, 1, 1,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
194 2, 2, 2, 2, 3, 3, 3, 3,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
195 4, 4, 4, 5, 5, 5, 6, 6,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
196 7, 7, 8, 8, 9, 9, 10, 11,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
197 12, 13, 0, 0, 0, 0, 0, 0,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
198 0, 0, 0, 0, 1, 1, 1, 1,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
199 2, 2, 2, 3, 3, 3, 4, 4,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
200 5, 5, 6, 6, 7, 7, 8, 9,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
201 10, 11, 12, 13, 14, 15, 16, 17,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
202 18, 19, 20, 21, 22, 23,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
203 };
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
204
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
205 const int8_t intra_level_aic[102] = {
350
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
206 1, 2, 3, 4, 5, 6, 7, 8,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
207 9, 10, 11, 12, 13, 14, 15, 16,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
208 17, 18, 19, 20, 21, 22, 23, 24,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
209 25, 1, 2, 3, 4, 5, 6, 7,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
210 1, 2, 3, 4, 1, 2, 3, 4,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
211 1, 2, 3, 1, 2, 3, 1, 2,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
212 1, 2, 1, 2, 1, 2, 1, 1,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
213 1, 1, 1, 2, 3, 4, 5, 6,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
214 7, 8, 9, 10, 1, 2, 3, 4,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
215 1, 2, 3, 1, 2, 3, 1, 2,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
216 1, 2, 1, 2, 1, 2, 1, 1,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
217 1, 1, 1, 1, 1, 1, 1, 1,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
218 1, 1, 1, 1, 1, 1,
248
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
219 };
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
220
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
221 static RLTable rl_intra_aic = {
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
222 102,
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
223 58,
350
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
224 intra_vlc_aic,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
225 intra_run_aic,
6ebbecc10063 - Advanced Intra Coding (AIC) support for H.263+ encoder, just DC by now.
pulento
parents: 307
diff changeset
226 intra_level_aic,
248
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
227 };
56ee684c48bb - H.263+ decoder support for Advanded INTRA Coding (buggy)
pulento
parents: 161
diff changeset
228
1638
michael
parents: 1482
diff changeset
229 static const uint8_t wrong_run[102] = {
michael
parents: 1482
diff changeset
230 1, 2, 3, 5, 4, 10, 9, 8,
michael
parents: 1482
diff changeset
231 11, 15, 17, 16, 23, 22, 21, 20,
michael
parents: 1482
diff changeset
232 19, 18, 25, 24, 27, 26, 11, 7,
michael
parents: 1482
diff changeset
233 6, 1, 2, 13, 2, 2, 2, 2,
michael
parents: 1482
diff changeset
234 6, 12, 3, 9, 1, 3, 4, 3,
michael
parents: 1482
diff changeset
235 7, 4, 1, 1, 5, 5, 14, 6,
michael
parents: 1482
diff changeset
236 1, 7, 1, 8, 1, 1, 1, 1,
michael
parents: 1482
diff changeset
237 10, 1, 1, 5, 9, 17, 25, 24,
michael
parents: 1482
diff changeset
238 29, 33, 32, 41, 2, 23, 28, 31,
michael
parents: 1482
diff changeset
239 3, 22, 30, 4, 27, 40, 8, 26,
michael
parents: 1482
diff changeset
240 6, 39, 7, 38, 16, 37, 15, 10,
michael
parents: 1482
diff changeset
241 11, 12, 13, 14, 1, 21, 20, 18,
michael
parents: 1482
diff changeset
242 19, 2, 1, 34, 35, 36
michael
parents: 1482
diff changeset
243 };
michael
parents: 1482
diff changeset
244
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 498
diff changeset
245 static const uint16_t h263_format[8][2] = {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
246 { 0, 0 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
247 { 128, 96 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
248 { 176, 144 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
249 { 352, 288 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
250 { 704, 576 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
251 { 1408, 1152 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
252 };
498
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 457
diff changeset
253
1639
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
254 uint8_t ff_aic_dc_scale_table[32]={
498
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 457
diff changeset
255 // 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
256 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
257 };
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 457
diff changeset
258
1639
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
259 static const uint8_t modified_quant_tab[2][32]={
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
260 // 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
261 {
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
262 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
263 },{
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
264 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
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
265 }
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
266 };
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
267
1644
835cf346975e h263 loop filter
michael
parents: 1639
diff changeset
268 const uint8_t ff_h263_chroma_qscale_table[32]={
1639
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
269 // 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
270 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
271 };
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
272
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
273 const uint16_t ff_mba_max[6]={
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
274 47, 98, 395,1583,6335,9215
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
275 };
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
276
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
277 const uint8_t ff_mba_length[6]={
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
278 6, 7, 9, 11, 13, 14
3e2b774edce4 rv20 decoder
michael
parents: 1638
diff changeset
279 };
1644
835cf346975e h263 loop filter
michael
parents: 1639
diff changeset
280
835cf346975e h263 loop filter
michael
parents: 1639
diff changeset
281 const uint8_t ff_h263_loop_filter_strength[32]={
835cf346975e h263 loop filter
michael
parents: 1639
diff changeset
282 // 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
283 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
284 };
835cf346975e h263 loop filter
michael
parents: 1639
diff changeset
285