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