- H.263+ decoder support for Advanded INTRA Coding (buggy)
[ffmpeg.git] / libavcodec / h263data.h
1
2 /* intra MCBPC, mb_type = (intra), then (intraq) */
3 static const UINT8 intra_MCBPC_code[8] = { 1, 1, 2, 3, 1, 1, 2, 3 };
4 static 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) */
7 /* Changed the tables for interq and inter4v+q, following the standard ** Juanjo ** */
8 static const UINT8 inter_MCBPC_code[25] = { 
9     1, 3, 2, 5, 
10     3, 4, 3, 3, 
11     3, 7, 6, 5,
12     4, 4, 3, 2,
13     2, 5, 4, 5,
14     1, /* Stuffing */
15     2, 12, 14, 15,
16 };
17 static const UINT8 inter_MCBPC_bits[25] = { 
18     1, 4, 4, 6, 
19     5, 8, 8, 7,
20     3, 7, 7, 9,
21     6, 9, 9, 9,
22     3, 7, 7, 8,
23     9, /* Stuffing */
24     11, 13, 13, 13,
25 };
26
27 /* This is the old table 
28 static 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 };
35 static 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,
41 };*/
42
43 static 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
49 static 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 */
59 const 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
88 const 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
104 const 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
120 static RLTable rl_inter = {
121     102,
122     58,
123     inter_vlc,
124     inter_run,
125     inter_level,
126 };
127
128 /* table used for Advanced INTRA Coding, just RUN and LEVEL change */
129 const 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
145 const 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
161 static RLTable rl_intra_aic = {
162     102,
163     58,
164     inter_vlc,
165     inter_run_aic,
166     inter_level_aic,
167 };
168
169 static 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