7 /* intra MCBPC, mb_type = (intra), then (intraq) */
8 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 };
11 /* inter MCBPC, mb_type = (inter), (intra), (interq), (intraq), (inter4v) */
12 /* Changed the tables for interq and inter4v+q, following the standard ** Juanjo ** */
13 const uint8_t inter_MCBPC_code[28] = {
19 1, 0, 0, 0, /* Stuffing */
22 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*/
32 const uint8_t cbpy_tab[16][2] =
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}
38 const uint8_t mvtab[33][2] =
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},
47 /* third non intra table */
48 const uint16_t inter_vlc[103][2] = {
49 { 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 },
77 const int8_t inter_level[102] = {
78 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,
93 const int8_t inter_run[102] = {
94 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,
109 static RLTable rl_inter = {
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 },
143 { 0x59, 12 }, { 0x5a, 12 }, { 0x3, 7 },
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,
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,
178 static RLTable rl_intra_aic = {
186 static const uint16_t h263_format[8][2] = {
195 static uint8_t h263_aic_dc_scale_table[32]={
196 // 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