1000l to myself - get correct quantization for blocks 1 and 2
[ffmpeg.git] / libavcodec / indeo2data.h
1 /*
2  * Intel Indeo 2 codec
3  * copyright (c) 2005 Konstantin Shishkov
4  *
5  * This file is part of FFmpeg.
6  *
7  * FFmpeg is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * FFmpeg is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with FFmpeg; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20  */
21
22 #define IR2_CODES 143
23 static const uint16_t ir2_codes[IR2_CODES][2] = {
24 #ifdef ALT_BITSTREAM_READER_LE
25 {0x0000,  3}, {0x0004,  3}, {0x0006,  3}, {0x0001,  5},
26 {0x0009,  5}, {0x0019,  5}, {0x000D,  5}, {0x001D,  5},
27 {0x0023,  6}, {0x0013,  6}, {0x0033,  6}, {0x000B,  6},
28 {0x002B,  6}, {0x001B,  6}, {0x0007,  8}, {0x0087,  8},
29 {0x0027,  8}, {0x00A7,  8}, {0x0067,  8}, {0x00E7,  8},
30 {0x0097,  8}, {0x0057,  8}, {0x0037,  8}, {0x00B7,  8},
31 {0x00F7,  8}, {0x000F,  9}, {0x008F,  9}, {0x018F,  9},
32 {0x014F,  9}, {0x00CF,  9}, {0x002F,  9}, {0x012F,  9},
33 {0x01AF,  9}, {0x006F,  9}, {0x00EF,  9}, {0x01EF,  9},
34 {0x001F, 10}, {0x021F, 10}, {0x011F, 10}, {0x031F, 10},
35 {0x009F, 10}, {0x029F, 10}, {0x019F, 10}, {0x039F, 10},
36 {0x005F, 10}, {0x025F, 10}, {0x015F, 10}, {0x035F, 10},
37 {0x00DF, 10}, {0x02DF, 10}, {0x01DF, 10}, {0x03DF, 10},
38 {0x003F, 13}, {0x103F, 13}, {0x083F, 13}, {0x183F, 13},
39 {0x043F, 13}, {0x143F, 13}, {0x0C3F, 13}, {0x1C3F, 13},
40 {0x023F, 13}, {0x123F, 13}, {0x0A3F, 13}, {0x1A3F, 13},
41 {0x063F, 13}, {0x163F, 13}, {0x0E3F, 13}, {0x1E3F, 13},
42 {0x013F, 13}, {0x113F, 13}, {0x093F, 13}, {0x193F, 13},
43 {0x053F, 13}, {0x153F, 13}, {0x0D3F, 13}, {0x1D3F, 13},
44 {0x033F, 13}, {0x133F, 13}, {0x0B3F, 13}, {0x1B3F, 13},
45 {0x073F, 13}, {0x173F, 13}, {0x0F3F, 13}, {0x1F3F, 13},
46 {0x00BF, 13}, {0x10BF, 13}, {0x08BF, 13}, {0x18BF, 13},
47 {0x04BF, 13}, {0x14BF, 13}, {0x0CBF, 13}, {0x1CBF, 13},
48 {0x02BF, 13}, {0x12BF, 13}, {0x0ABF, 13}, {0x1ABF, 13},
49 {0x06BF, 13}, {0x16BF, 13}, {0x0EBF, 13}, {0x1EBF, 13},
50 {0x01BF, 13}, {0x11BF, 13}, {0x09BF, 13}, {0x19BF, 13},
51 {0x05BF, 13}, {0x15BF, 13}, {0x0DBF, 13}, {0x1DBF, 13},
52 {0x03BF, 13}, {0x13BF, 13}, {0x0BBF, 13}, {0x1BBF, 13},
53 {0x07BF, 13}, {0x17BF, 13}, {0x0FBF, 13}, {0x1FBF, 13},
54 {0x007F, 14}, {0x207F, 14}, {0x107F, 14}, {0x307F, 14},
55 {0x087F, 14}, {0x287F, 14}, {0x187F, 14}, {0x387F, 14},
56 {0x047F, 14}, {0x247F, 14}, {0x147F, 14}, {0x0002,  3},
57 {0x0011,  5}, {0x0005,  5}, {0x0015,  5}, {0x0003,  6},
58 {0x003B,  6}, {0x0047,  8}, {0x00C7,  8}, {0x0017,  8},
59 {0x00D7,  8}, {0x0077,  8}, {0x010F,  9}, {0x004F,  9},
60 {0x01CF,  9}, {0x00AF,  9}, {0x016F,  9},
61 #else
62     {0x0000,  3}, {0x0001,  3}, {0x0003,  3}, {0x0010,  5},
63     {0x0012,  5}, {0x0013,  5}, {0x0016,  5}, {0x0017,  5},
64     {0x0031,  6}, {0x0032,  6}, {0x0033,  6}, {0x0034,  6},
65     {0x0035,  6}, {0x0036,  6}, {0x00E0,  8}, {0x00E1,  8},
66     {0x00E4,  8}, {0x00E5,  8}, {0x00E6,  8}, {0x00E7,  8},
67     {0x00E9,  8}, {0x00EA,  8}, {0x00EC,  8}, {0x00ED,  8},
68     {0x00EF,  8}, {0x01E0,  9}, {0x01E2,  9}, {0x01E3,  9},
69     {0x01E5,  9}, {0x01E6,  9}, {0x01E8,  9}, {0x01E9,  9},
70     {0x01EB,  9}, {0x01EC,  9}, {0x01EE,  9}, {0x01EF,  9},
71     {0x03E0, 10}, {0x03E1, 10}, {0x03E2, 10}, {0x03E3, 10},
72     {0x03E4, 10}, {0x03E5, 10}, {0x03E6, 10}, {0x03E7, 10},
73     {0x03E8, 10}, {0x03E9, 10}, {0x03EA, 10}, {0x03EB, 10},
74     {0x03EC, 10}, {0x03ED, 10}, {0x03EE, 10}, {0x03EF, 10},
75     {0x1F80, 13}, {0x1F81, 13}, {0x1F82, 13}, {0x1F83, 13},
76     {0x1F84, 13}, {0x1F85, 13}, {0x1F86, 13}, {0x1F87, 13},
77     {0x1F88, 13}, {0x1F89, 13}, {0x1F8A, 13}, {0x1F8B, 13},
78     {0x1F8C, 13}, {0x1F8D, 13}, {0x1F8E, 13}, {0x1F8F, 13},
79     {0x1F90, 13}, {0x1F91, 13}, {0x1F92, 13}, {0x1F93, 13},
80     {0x1F94, 13}, {0x1F95, 13}, {0x1F96, 13}, {0x1F97, 13},
81     {0x1F98, 13}, {0x1F99, 13}, {0x1F9A, 13}, {0x1F9B, 13},
82     {0x1F9C, 13}, {0x1F9D, 13}, {0x1F9E, 13}, {0x1F9F, 13},
83     {0x1FA0, 13}, {0x1FA1, 13}, {0x1FA2, 13}, {0x1FA3, 13},
84     {0x1FA4, 13}, {0x1FA5, 13}, {0x1FA6, 13}, {0x1FA7, 13},
85     {0x1FA8, 13}, {0x1FA9, 13}, {0x1FAA, 13}, {0x1FAB, 13},
86     {0x1FAC, 13}, {0x1FAD, 13}, {0x1FAE, 13}, {0x1FAF, 13},
87     {0x1FB0, 13}, {0x1FB1, 13}, {0x1FB2, 13}, {0x1FB3, 13},
88     {0x1FB4, 13}, {0x1FB5, 13}, {0x1FB6, 13}, {0x1FB7, 13},
89     {0x1FB8, 13}, {0x1FB9, 13}, {0x1FBA, 13}, {0x1FBB, 13},
90     {0x1FBC, 13}, {0x1FBD, 13}, {0x1FBE, 13}, {0x1FBF, 13},
91     {0x3F80, 14}, {0x3F81, 14}, {0x3F82, 14}, {0x3F83, 14},
92     {0x3F84, 14}, {0x3F85, 14}, {0x3F86, 14}, {0x3F87, 14},
93     {0x3F88, 14}, {0x3F89, 14}, {0x3F8A, 14}, {0x0002,  3},
94     {0x0011,  5}, {0x0014,  5}, {0x0015,  5}, {0x0030,  6},
95     {0x0037,  6}, {0x00E2,  8}, {0x00E3,  8}, {0x00E8,  8},
96     {0x00EB,  8}, {0x00EE,  8}, {0x01E1,  9}, {0x01E4,  9},
97     {0x01E7,  9}, {0x01EA,  9}, {0x01ED,  9}
98 #endif
99 };
100
101 static const uint8_t ir2_luma_table[256] = {
102  0x80, 0x80, 0x84, 0x84, 0x7C, 0x7C, 0x7F, 0x85,
103  0x81, 0x7B, 0x85, 0x7F, 0x7B, 0x81, 0x8C, 0x8C,
104  0x74, 0x74, 0x83, 0x8D, 0x7D, 0x73, 0x8D, 0x83,
105  0x73, 0x7D, 0x77, 0x89, 0x89, 0x77, 0x89, 0x77,
106  0x77, 0x89, 0x8C, 0x95, 0x74, 0x6B, 0x95, 0x8C,
107  0x6B, 0x74, 0x7C, 0x90, 0x84, 0x70, 0x90, 0x7C,
108  0x70, 0x84, 0x96, 0x96, 0x6A, 0x6A, 0x82, 0x98,
109  0x7E, 0x68, 0x98, 0x82, 0x68, 0x7E, 0x97, 0xA2,
110  0x69, 0x5E, 0xA2, 0x97, 0x5E, 0x69, 0xA2, 0xA2,
111  0x5E, 0x5E, 0x8B, 0xA3, 0x75, 0x5D, 0xA3, 0x8B,
112  0x5D, 0x75, 0x71, 0x95, 0x8F, 0x6B, 0x95, 0x71,
113  0x6B, 0x8F, 0x78, 0x9D, 0x88, 0x63, 0x9D, 0x78,
114  0x63, 0x88, 0x7F, 0xA7, 0x81, 0x59, 0xA7, 0x7F,
115  0x59, 0x81, 0xA4, 0xB1, 0x5C, 0x4F, 0xB1, 0xA4,
116  0x4F, 0x5C, 0x96, 0xB1, 0x6A, 0x4F, 0xB1, 0x96,
117  0x4F, 0x6A, 0xB2, 0xB2, 0x4E, 0x4E, 0x65, 0x9B,
118  0x9B, 0x65, 0x9B, 0x65, 0x65, 0x9B, 0x89, 0xB4,
119  0x77, 0x4C, 0xB4, 0x89, 0x4C, 0x77, 0x6A, 0xA3,
120  0x96, 0x5D, 0xA3, 0x6A, 0x5D, 0x96, 0x73, 0xAC,
121  0x8D, 0x54, 0xAC, 0x73, 0x54, 0x8D, 0xB4, 0xC3,
122  0x4C, 0x3D, 0xC3, 0xB4, 0x3D, 0x4C, 0xA4, 0xC3,
123  0x5C, 0x3D, 0xC3, 0xA4, 0x3D, 0x5C, 0xC4, 0xC4,
124  0x3C, 0x3C, 0x96, 0xC6, 0x6A, 0x3A, 0xC6, 0x96,
125  0x3A, 0x6A, 0x7C, 0xBA, 0x84, 0x46, 0xBA, 0x7C,
126  0x46, 0x84, 0x5B, 0xAB, 0xA5, 0x55, 0xAB, 0x5B,
127  0x55, 0xA5, 0x63, 0xB4, 0x9D, 0x4C, 0xB4, 0x63,
128  0x4C, 0x9D, 0x86, 0xCA, 0x7A, 0x36, 0xCA, 0x86,
129  0x36, 0x7A, 0xB6, 0xD7, 0x4A, 0x29, 0xD7, 0xB6,
130  0x29, 0x4A, 0xC8, 0xD7, 0x38, 0x29, 0xD7, 0xC8,
131  0x29, 0x38, 0xA4, 0xD8, 0x5C, 0x28, 0xD8, 0xA4,
132  0x28, 0x5C, 0x6C, 0xC1, 0x94, 0x3F, 0xC1, 0x6C,
133  0x3F, 0x94, 0xD9, 0xD9, 0x27, 0x27, 0x80, 0x80
134 };