]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/blob - libavcodec/h263data.h
per file doxy
[frescor/ffmpeg.git] / libavcodec / h263data.h
1 /**
2  * @file h263data.h
3  * H.263 tables.
4  */
5
6
7 /* intra MCBPC, mb_type = (intra), then (intraq) */
8 const uint8_t intra_MCBPC_code[8] = { 1, 1, 2, 3, 1, 1, 2, 3 };
9 const uint8_t intra_MCBPC_bits[8] = { 1, 3, 3, 3, 4, 6, 6, 6 };
10
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[25] = { 
14     1, 3, 2, 5, 
15     3, 4, 3, 3, 
16     3, 7, 6, 5,
17     4, 4, 3, 2,
18     2, 5, 4, 5,
19     1, /* Stuffing */
20     2, 12, 14, 15,
21 };
22 const uint8_t inter_MCBPC_bits[25] = { 
23     1, 4, 4, 6, 
24     5, 8, 8, 7,
25     3, 7, 7, 9,
26     6, 9, 9, 9,
27     3, 7, 7, 8,
28     9, /* Stuffing */
29     11, 13, 13, 13,
30 };
31
32 /* This is the old table 
33 static const uint8_t inter_MCBPC_code[20] = { 
34     1, 3, 2, 5, 
35     3, 4, 3, 3, 
36     0, 1, 2, 3,
37     4, 4, 3, 2,
38     2, 5, 4, 5,
39 };
40 static const uint8_t inter_MCBPC_bits[20] = { 
41     1, 4, 4, 6, 
42     5, 8, 8, 7,
43     12, 12, 12, 12,
44     6, 9, 9, 9,
45     3, 7, 7, 8,
46 };*/
47
48 const uint8_t cbpy_tab[16][2] =
49 {
50   {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
51   {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
52 };
53
54 const uint8_t mvtab[33][2] =
55 {
56   {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
57   {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
58   {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
59   {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
60   {2,12}
61 };
62
63 /* third non intra table */
64 const uint16_t inter_vlc[103][2] = {
65 { 0x2, 2 },{ 0xf, 4 },{ 0x15, 6 },{ 0x17, 7 },
66 { 0x1f, 8 },{ 0x25, 9 },{ 0x24, 9 },{ 0x21, 10 },
67 { 0x20, 10 },{ 0x7, 11 },{ 0x6, 11 },{ 0x20, 11 },
68 { 0x6, 3 },{ 0x14, 6 },{ 0x1e, 8 },{ 0xf, 10 },
69 { 0x21, 11 },{ 0x50, 12 },{ 0xe, 4 },{ 0x1d, 8 },
70 { 0xe, 10 },{ 0x51, 12 },{ 0xd, 5 },{ 0x23, 9 },
71 { 0xd, 10 },{ 0xc, 5 },{ 0x22, 9 },{ 0x52, 12 },
72 { 0xb, 5 },{ 0xc, 10 },{ 0x53, 12 },{ 0x13, 6 },
73 { 0xb, 10 },{ 0x54, 12 },{ 0x12, 6 },{ 0xa, 10 },
74 { 0x11, 6 },{ 0x9, 10 },{ 0x10, 6 },{ 0x8, 10 },
75 { 0x16, 7 },{ 0x55, 12 },{ 0x15, 7 },{ 0x14, 7 },
76 { 0x1c, 8 },{ 0x1b, 8 },{ 0x21, 9 },{ 0x20, 9 },
77 { 0x1f, 9 },{ 0x1e, 9 },{ 0x1d, 9 },{ 0x1c, 9 },
78 { 0x1b, 9 },{ 0x1a, 9 },{ 0x22, 11 },{ 0x23, 11 },
79 { 0x56, 12 },{ 0x57, 12 },{ 0x7, 4 },{ 0x19, 9 },
80 { 0x5, 11 },{ 0xf, 6 },{ 0x4, 11 },{ 0xe, 6 },
81 { 0xd, 6 },{ 0xc, 6 },{ 0x13, 7 },{ 0x12, 7 },
82 { 0x11, 7 },{ 0x10, 7 },{ 0x1a, 8 },{ 0x19, 8 },
83 { 0x18, 8 },{ 0x17, 8 },{ 0x16, 8 },{ 0x15, 8 },
84 { 0x14, 8 },{ 0x13, 8 },{ 0x18, 9 },{ 0x17, 9 },
85 { 0x16, 9 },{ 0x15, 9 },{ 0x14, 9 },{ 0x13, 9 },
86 { 0x12, 9 },{ 0x11, 9 },{ 0x7, 10 },{ 0x6, 10 },
87 { 0x5, 10 },{ 0x4, 10 },{ 0x24, 11 },{ 0x25, 11 },
88 { 0x26, 11 },{ 0x27, 11 },{ 0x58, 12 },{ 0x59, 12 },
89 { 0x5a, 12 },{ 0x5b, 12 },{ 0x5c, 12 },{ 0x5d, 12 },
90 { 0x5e, 12 },{ 0x5f, 12 },{ 0x3, 7 },
91 };
92
93 const int8_t inter_level[102] = {
94   1,  2,  3,  4,  5,  6,  7,  8,
95   9, 10, 11, 12,  1,  2,  3,  4,
96   5,  6,  1,  2,  3,  4,  1,  2,
97   3,  1,  2,  3,  1,  2,  3,  1,
98   2,  3,  1,  2,  1,  2,  1,  2,
99   1,  2,  1,  1,  1,  1,  1,  1,
100   1,  1,  1,  1,  1,  1,  1,  1,
101   1,  1,  1,  2,  3,  1,  2,  1,
102   1,  1,  1,  1,  1,  1,  1,  1,
103   1,  1,  1,  1,  1,  1,  1,  1,
104   1,  1,  1,  1,  1,  1,  1,  1,
105   1,  1,  1,  1,  1,  1,  1,  1,
106   1,  1,  1,  1,  1,  1,
107 };
108
109 const int8_t inter_run[102] = {
110   0,  0,  0,  0,  0,  0,  0,  0,
111   0,  0,  0,  0,  1,  1,  1,  1,
112   1,  1,  2,  2,  2,  2,  3,  3,
113   3,  4,  4,  4,  5,  5,  5,  6,
114   6,  6,  7,  7,  8,  8,  9,  9,
115  10, 10, 11, 12, 13, 14, 15, 16,
116  17, 18, 19, 20, 21, 22, 23, 24,
117  25, 26,  0,  0,  0,  1,  1,  2,
118   3,  4,  5,  6,  7,  8,  9, 10,
119  11, 12, 13, 14, 15, 16, 17, 18,
120  19, 20, 21, 22, 23, 24, 25, 26,
121  27, 28, 29, 30, 31, 32, 33, 34,
122  35, 36, 37, 38, 39, 40,
123 };
124
125 static RLTable rl_inter = {
126     102,
127     58,
128     inter_vlc,
129     inter_run,
130     inter_level,
131 };
132
133 const uint16_t intra_vlc_aic[103][2] = {
134 {  0x2,  2 }, {  0x6,  3 }, {  0xe,  4 }, {  0xc,  5 }, 
135 {  0xd,  5 }, { 0x10,  6 }, { 0x11,  6 }, { 0x12,  6 }, 
136 { 0x16,  7 }, { 0x1b,  8 }, { 0x20,  9 }, { 0x21,  9 }, 
137 { 0x1a,  9 }, { 0x1b,  9 }, { 0x1c,  9 }, { 0x1d,  9 }, 
138 { 0x1e,  9 }, { 0x1f,  9 }, { 0x23, 11 }, { 0x22, 11 }, 
139 { 0x57, 12 }, { 0x56, 12 }, { 0x55, 12 }, { 0x54, 12 }, 
140 { 0x53, 12 }, {  0xf,  4 }, { 0x14,  6 }, { 0x14,  7 }, 
141 { 0x1e,  8 }, {  0xf, 10 }, { 0x21, 11 }, { 0x50, 12 }, 
142 {  0xb,  5 }, { 0x15,  7 }, {  0xe, 10 }, {  0x9, 10 }, 
143 { 0x15,  6 }, { 0x1d,  8 }, {  0xd, 10 }, { 0x51, 12 }, 
144 { 0x13,  6 }, { 0x23,  9 }, {  0x7, 11 }, { 0x17,  7 }, 
145 { 0x22,  9 }, { 0x52, 12 }, { 0x1c,  8 }, {  0xc, 10 }, 
146 { 0x1f,  8 }, {  0xb, 10 }, { 0x25,  9 }, {  0xa, 10 }, 
147 { 0x24,  9 }, {  0x6, 11 }, { 0x21, 10 }, { 0x20, 10 }, 
148 {  0x8, 10 }, { 0x20, 11 }, {  0x7,  4 }, {  0xc,  6 }, 
149 { 0x10,  7 }, { 0x13,  8 }, { 0x11,  9 }, { 0x12,  9 }, 
150 {  0x4, 10 }, { 0x27, 11 }, { 0x26, 11 }, { 0x5f, 12 }, 
151 {  0xf,  6 }, { 0x13,  9 }, {  0x5, 10 }, { 0x25, 11 }, 
152 {  0xe,  6 }, { 0x14,  9 }, { 0x24, 11 }, {  0xd,  6 }, 
153 {  0x6, 10 }, { 0x5e, 12 }, { 0x11,  7 }, {  0x7, 10 }, 
154 { 0x13,  7 }, { 0x5d, 12 }, { 0x12,  7 }, { 0x5c, 12 }, 
155 { 0x14,  8 }, { 0x5b, 12 }, { 0x15,  8 }, { 0x1a,  8 }, 
156 { 0x19,  8 }, { 0x18,  8 }, { 0x17,  8 }, { 0x16,  8 }, 
157 { 0x19,  9 }, { 0x15,  9 }, { 0x16,  9 }, { 0x18,  9 }, 
158 { 0x17,  9 }, {  0x4, 11 }, {  0x5, 11 }, { 0x58, 12 }, 
159 { 0x59, 12 }, { 0x5a, 12 }, {  0x3,  7 },
160 };
161
162 const int8_t intra_run_aic[102] = {
163  0,  0,  0,  0,  0,  0,  0,  0, 
164  0,  0,  0,  0,  0,  0,  0,  0, 
165  0,  0,  0,  0,  0,  0,  0,  0, 
166  0,  1,  1,  1,  1,  1,  1,  1, 
167  2,  2,  2,  2,  3,  3,  3,  3, 
168  4,  4,  4,  5,  5,  5,  6,  6, 
169  7,  7,  8,  8,  9,  9, 10, 11, 
170 12, 13,  0,  0,  0,  0,  0,  0, 
171  0,  0,  0,  0,  1,  1,  1,  1, 
172  2,  2,  2,  3,  3,  3,  4,  4, 
173  5,  5,  6,  6,  7,  7,  8,  9, 
174 10, 11, 12, 13, 14, 15, 16, 17, 
175 18, 19, 20, 21, 22, 23, 
176 };
177
178 const int8_t intra_level_aic[102] = {
179  1,  2,  3,  4,  5,  6,  7,  8, 
180  9, 10, 11, 12, 13, 14, 15, 16, 
181 17, 18, 19, 20, 21, 22, 23, 24, 
182 25,  1,  2,  3,  4,  5,  6,  7, 
183  1,  2,  3,  4,  1,  2,  3,  4, 
184  1,  2,  3,  1,  2,  3,  1,  2, 
185  1,  2,  1,  2,  1,  2,  1,  1, 
186  1,  1,  1,  2,  3,  4,  5,  6, 
187  7,  8,  9, 10,  1,  2,  3,  4, 
188  1,  2,  3,  1,  2,  3,  1,  2, 
189  1,  2,  1,  2,  1,  2,  1,  1, 
190  1,  1,  1,  1,  1,  1,  1,  1, 
191  1,  1,  1,  1,  1,  1,
192 };
193
194 static RLTable rl_intra_aic = {
195     102,
196     58,
197     intra_vlc_aic,
198     intra_run_aic,
199     intra_level_aic,
200 };
201
202 static const uint16_t h263_format[8][2] = {
203     { 0, 0 },
204     { 128, 96 },
205     { 176, 144 },
206     { 352, 288 },
207     { 704, 576 },
208     { 1408, 1152 },
209 };
210
211 static uint8_t h263_aic_dc_scale_table[32]={
212 //  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
213     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
214 };
215