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