blob: 88e456ba262444590908cf2c4a825af3a4c3587f [file] [log] [blame]
Fabrice Bellardde6d9b62001-07-22 14:18:561
2/* intra MCBPC, mb_type = (intra), then (intraq) */
3static const UINT8 intra_MCBPC_code[8] = { 1, 1, 2, 3, 1, 1, 2, 3 };
4static 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) */
Juanjo96815ce2001-11-17 21:14:547/* Changed the tables for interq and inter4v+q, following the standard ** Juanjo ** */
8static const UINT8 inter_MCBPC_code[25] = {
Juanjo49490282001-11-03 00:49:539 1, 3, 2, 5,
10 3, 4, 3, 3,
11 3, 7, 6, 5,
12 4, 4, 3, 2,
13 2, 5, 4, 5,
Juanjo96815ce2001-11-17 21:14:5414 1, /* Stuffing */
15 2, 12, 14, 15,
Juanjo49490282001-11-03 00:49:5316};
Juanjo96815ce2001-11-17 21:14:5417static const UINT8 inter_MCBPC_bits[25] = {
Juanjo49490282001-11-03 00:49:5318 1, 4, 4, 6,
19 5, 8, 8, 7,
20 3, 7, 7, 9,
21 6, 9, 9, 9,
22 3, 7, 7, 8,
Juanjo96815ce2001-11-17 21:14:5423 9, /* Stuffing */
24 11, 13, 13, 13,
Juanjo49490282001-11-03 00:49:5325};
26
27/* This is the old table
Fabrice Bellardde6d9b62001-07-22 14:18:5628static 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};
35static 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,
Juanjo49490282001-11-03 00:49:5341};*/
Fabrice Bellardde6d9b62001-07-22 14:18:5642
43static 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
49static 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 */
59const 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
88const 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
104const 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
120static RLTable rl_inter = {
121 102,
122 58,
123 inter_vlc,
124 inter_run,
125 inter_level,
126};
127
Juanjod1406232002-02-18 19:33:27128/* table used for Advanced INTRA Coding, just RUN and LEVEL change */
129const INT8 inter_level_aic[102] = {
130 1, 1, 1, 1, 1, 1, 1, 1,
131 1, 3, 2, 1, 2, 2, 4, 5,
132 6, 7, 3, 2, 3, 4, 5, 2,
133 3, 4, 2, 3, 1, 2, 25, 1,
134 2, 24, 8, 2, 7, 4, 6, 1,
135 9, 23, 2, 3, 1, 10, 12, 11,
136 18, 17, 16, 15, 14, 13, 20, 19,
137 22, 21, 1, 1, 1, 1, 1, 1,
138 1, 2, 1, 1, 1, 3, 1, 1,
139 1, 1, 1, 1, 1, 4, 1, 1,
140 1, 1, 2, 2, 6, 5, 2, 2,
141 3, 7, 3, 4, 9, 8, 1, 1,
142 1, 2, 2, 2, 3, 10,
143};
144
145const INT8 inter_run_aic[102] = {
146 0, 1, 3, 5, 7, 8, 9, 10,
147 11, 4, 9, 13, 0, 1, 1, 1,
148 1, 1, 0, 3, 2, 3, 0, 4,
149 3, 0, 5, 5, 2, 6, 0, 4,
150 7, 0, 0, 8, 0, 2, 0, 12,
151 0, 0, 2, 1, 6, 0, 0, 0,
152 0, 0, 0, 0, 0, 0, 0, 0,
153 0, 0, 0, 14, 20, 1, 19, 2,
154 3, 0, 5, 6, 4, 0, 9, 10,
155 11, 12, 13, 8, 7, 0, 17, 18,
156 16, 15, 2, 1, 0, 0, 4, 3,
157 1, 0, 2, 1, 0, 0, 21, 22,
158 23, 7, 6, 5, 3, 0,
159};
160
161static RLTable rl_intra_aic = {
162 102,
163 58,
164 inter_vlc,
165 inter_run_aic,
166 inter_level_aic,
167};
168
Fabrice Bellardde6d9b62001-07-22 14:18:56169static const UINT16 h263_format[8][2] = {
170 { 0, 0 },
171 { 128, 96 },
172 { 176, 144 },
173 { 352, 288 },
174 { 704, 576 },
175 { 1408, 1152 },
176};
177