Statistics
| Branch: | Revision:

ffmpeg / libavcodec / rv40vlc2.h @ 2912e87a

History | View | Annotate | Download (32.6 KB)

1
/*
2
 * RealVideo 4 decoder
3
 * copyright (c) 2007 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
/**
23
 * @file
24
 * RV40 VLC tables used for macroblock information decoding
25
 */
26

    
27
#ifndef AVCODEC_RV40VLC2_H
28
#define AVCODEC_RV40VLC2_H
29

    
30
#include <stdint.h>
31

    
32
/**
33
 * codes used for the first four block types
34
 */
35
//@{
36
#define AIC_TOP_BITS  8
37
#define AIC_TOP_SIZE 16
38
static const uint8_t rv40_aic_top_vlc_codes[AIC_TOP_SIZE] = {
39
 0x01, 0x05, 0x01, 0x00, 0x03, 0x3D, 0x1D, 0x02,
40
 0x04, 0x3C, 0x3F, 0x1C, 0x0D, 0x3E, 0x0C, 0x01
41
};
42

    
43
static const uint8_t rv40_aic_top_vlc_bits[AIC_TOP_SIZE] = {
44
 1, 4, 5, 5, 5, 7, 6, 5, 4, 7, 7, 6, 5, 7, 5, 3
45
};
46
//@}
47

    
48
/**
49
 * codes used for determining a pair of block types
50
 */
51
//@{
52
#define AIC_MODE2_NUM  20
53
#define AIC_MODE2_SIZE 81
54
#define AIC_MODE2_BITS  9
55

    
56
static const uint16_t aic_mode2_vlc_codes[AIC_MODE2_NUM][AIC_MODE2_SIZE] = {
57
{ 0x0001, 0x0001, 0x0005, 0x01F5, 0x0011, 0x0049, 0x0000, 0x0048, 0x004B,
58
  0x0035, 0x0003, 0x0034, 0x03C9, 0x01F4, 0x00C9, 0x004A, 0x0FD9, 0x03C8,
59
  0x0010, 0x0037, 0x0001, 0x00C8, 0x0075, 0x01F7, 0x00CB, 0x0074, 0x0002,
60
  0x01F6, 0x00CA, 0x01F1, 0x01F0, 0x1F81, 0x07F9, 0x1F80, 0x1F83, 0x07F8,
61
  0x0077, 0x00F5, 0x0036, 0x07FB, 0x0076, 0x1F82, 0x00F4, 0x00F7, 0x07FA,
62
  0x0071, 0x00F6, 0x03CB, 0x03CA, 0x0FD8, 0x00F1, 0x03F5, 0x1F8D, 0x07E5,
63
  0x0013, 0x0031, 0x00F0, 0x0FDB, 0x00F3, 0x07E4, 0x0030, 0x01F3, 0x07E7,
64
  0x03F4, 0x07E6, 0x0070, 0x3F19, 0x01F2, 0x3F18, 0x0FDA, 0x0033, 0x07E1,
65
  0x01FD, 0x01FC, 0x0073, 0x01FF, 0x0FC5, 0x0FC4, 0x0FC7, 0x03F7, 0x0072, },
66
{ 0x0005, 0x0005, 0x0005, 0x0079, 0x0005, 0x000D, 0x001D, 0x0078, 0x0069,
67
  0x0004, 0x0001, 0x0007, 0x0068, 0x001C, 0x001F, 0x0004, 0x006B, 0x000C,
68
  0x0004, 0x001E, 0x0006, 0x006A, 0x0015, 0x000F, 0x0014, 0x0017, 0x0007,
69
  0x0016, 0x000E, 0x0011, 0x0009, 0x00D1, 0x00D0, 0x0181, 0x00D3, 0x007B,
70
  0x0010, 0x0013, 0x0004, 0x00D2, 0x0007, 0x0319, 0x0008, 0x007A, 0x00DD,
71
  0x0019, 0x0006, 0x000B, 0x0065, 0x00DC, 0x0012, 0x0064, 0x0180, 0x00DF,
72
  0x0006, 0x0018, 0x0001, 0x00DE, 0x001D, 0x00D9, 0x001B, 0x0067, 0x000A,
73
  0x00D8, 0x00DB, 0x001C, 0x0318, 0x00DA, 0x0635, 0x0183, 0x0000, 0x00C5,
74
  0x0066, 0x0061, 0x0035, 0x00C4, 0x0182, 0x0634, 0x031B, 0x00C7, 0x001F, },
75
{ 0x0005, 0x0001, 0x001D, 0x01C1, 0x0035, 0x00F1, 0x006D, 0x00F0, 0x0049,
76
  0x0000, 0x0004, 0x0003, 0x00F3, 0x0048, 0x0034, 0x006C, 0x01C0, 0x01C3,
77
  0x0007, 0x0006, 0x0001, 0x006F, 0x0002, 0x004B, 0x006E, 0x001C, 0x0005,
78
  0x0069, 0x0068, 0x006B, 0x0037, 0x01C2, 0x00F2, 0x0395, 0x01CD, 0x00FD,
79
  0x006A, 0x0036, 0x0015, 0x01CC, 0x0014, 0x0394, 0x004A, 0x00FC, 0x00FF,
80
  0x0017, 0x0031, 0x00FE, 0x01CF, 0x0397, 0x00F9, 0x01CE, 0x0725, 0x0396,
81
  0x0016, 0x0030, 0x0075, 0x0724, 0x00F8, 0x0727, 0x0033, 0x0391, 0x0390,
82
  0x0011, 0x0032, 0x001F, 0x00FB, 0x0074, 0x0726, 0x00FA, 0x001E, 0x0077,
83
  0x0019, 0x0018, 0x0004, 0x0010, 0x003D, 0x0076, 0x0071, 0x0013, 0x0001, },
84
{ 0x000D, 0x0019, 0x0011, 0x0015, 0x0061, 0x0019, 0x0014, 0x01AD, 0x0060,
85
  0x0018, 0x0001, 0x0005, 0x001B, 0x0010, 0x0019, 0x0005, 0x0017, 0x0018,
86
  0x0016, 0x0004, 0x0004, 0x0013, 0x000C, 0x0012, 0x001A, 0x0018, 0x0005,
87
  0x000F, 0x001B, 0x0004, 0x001D, 0x0011, 0x001C, 0x0010, 0x000E, 0x001B,
88
  0x0013, 0x001F, 0x001A, 0x0029, 0x0005, 0x0063, 0x001E, 0x0009, 0x0062,
89
  0x0008, 0x0007, 0x0007, 0x0019, 0x0004, 0x001A, 0x0018, 0x006D, 0x0007,
90
  0x001B, 0x0007, 0x001A, 0x006C, 0x0006, 0x0012, 0x0005, 0x006F, 0x000B,
91
  0x006E, 0x0069, 0x001D, 0x0359, 0x0028, 0x002B, 0x002A, 0x001C, 0x00D5,
92
  0x0358, 0x001F, 0x0001, 0x001E, 0x0068, 0x00D4, 0x00D7, 0x0019, 0x0000, },
93
{ 0x00B9, 0x0061, 0x0060, 0x00B8, 0x02B5, 0x01AD, 0x00BB, 0x0AF5, 0x0151,
94
  0x0001, 0x0001, 0x0005, 0x0000, 0x0003, 0x0005, 0x0004, 0x0063, 0x0025,
95
  0x00BA, 0x0004, 0x0007, 0x0062, 0x00A5, 0x0024, 0x006D, 0x0002, 0x006C,
96
  0x02B4, 0x000D, 0x006F, 0x0027, 0x00A4, 0x0026, 0x01AC, 0x0150, 0x01AF,
97
  0x01AE, 0x0021, 0x006E, 0x02B7, 0x0020, 0x0153, 0x0023, 0x00A7, 0x0152,
98
  0x00A6, 0x0006, 0x000C, 0x0022, 0x01A9, 0x0019, 0x002D, 0x02B6, 0x01A8,
99
  0x000F, 0x0007, 0x000E, 0x00A1, 0x0069, 0x002C, 0x0001, 0x01AB, 0x00A0,
100
  0x02B1, 0x00A3, 0x002F, 0x0AF4, 0x02B0, 0x0AF7, 0x02B3, 0x0068, 0x015D,
101
  0x0AF6, 0x01AA, 0x0055, 0x015C, 0x02B2, 0x0579, 0x0578, 0x015F, 0x00A2, },
102
{ 0x0905, 0x013D, 0x013C, 0x0904, 0x121D, 0x049D, 0x049C, 0x243D, 0x0907,
103
  0x00ED, 0x0001, 0x0015, 0x0041, 0x013F, 0x0031, 0x0014, 0x025D, 0x025C,
104
  0x013E, 0x000D, 0x0000, 0x0040, 0x0139, 0x0043, 0x0030, 0x0017, 0x0033,
105
  0x0906, 0x0032, 0x0042, 0x00EC, 0x025F, 0x00EF, 0x025E, 0x049F, 0x0138,
106
  0x0901, 0x013B, 0x0259, 0x121C, 0x049E, 0x0900, 0x0258, 0x243C, 0x121F,
107
  0x0903, 0x003D, 0x00EE, 0x025B, 0x025A, 0x004D, 0x013A, 0x0902, 0x0245,
108
  0x00E9, 0x0016, 0x00E8, 0x0499, 0x0125, 0x0244, 0x004C, 0x0498, 0x090D,
109
  0x00EB, 0x003C, 0x0011, 0x049B, 0x049A, 0x0485, 0x00EA, 0x003F, 0x0124,
110
  0x090C, 0x003E, 0x0039, 0x0095, 0x0247, 0x0246, 0x0484, 0x0094, 0x0038, },
111
{ 0x0F09, 0x00CD, 0x01FD, 0x0791, 0x1E6D, 0x0790, 0x03D9, 0x3CD1, 0x3CD0,
112
  0x0075, 0x0001, 0x0001, 0x0035, 0x00CC, 0x0011, 0x0000, 0x03D8, 0x01FC,
113
  0x03DB, 0x0010, 0x0003, 0x00CF, 0x03DA, 0x00CE, 0x0074, 0x0034, 0x0077,
114
  0x0793, 0x0013, 0x0076, 0x0071, 0x03C5, 0x0070, 0x01FF, 0x0792, 0x01FE,
115
  0x01F9, 0x0037, 0x00C9, 0x0F08, 0x01F8, 0x03C4, 0x00C8, 0x0F0B, 0x079D,
116
  0x03C7, 0x0001, 0x0012, 0x0073, 0x00CB, 0x0005, 0x0036, 0x03C6, 0x0072,
117
  0x007D, 0x0002, 0x00CA, 0x079C, 0x01FB, 0x00F5, 0x0031, 0x079F, 0x0F0A,
118
  0x0F35, 0x079E, 0x01FA, 0x1E6C, 0x1E6F, 0x3CD3, 0x0799, 0x03C1, 0x1E6E,
119
  0x3CD2, 0x0030, 0x00F4, 0x007C, 0x03C0, 0x03C3, 0x0798, 0x01E5, 0x00F7, },
120
{ 0x01A5, 0x0001, 0x001D, 0x0021, 0x00A1, 0x000D, 0x0061, 0x06B9, 0x00A0,
121
  0x0060, 0x0001, 0x0005, 0x000C, 0x0020, 0x001C, 0x0004, 0x01A4, 0x01A7,
122
  0x00A3, 0x001F, 0x001E, 0x0023, 0x0022, 0x002D, 0x002C, 0x0063, 0x0062,
123
  0x1A81, 0x01A6, 0x01A1, 0x06B8, 0x06BB, 0x00A2, 0x06BA, 0x0D59, 0x06A5,
124
  0x01A0, 0x000F, 0x006D, 0x06A4, 0x002F, 0x00AD, 0x006C, 0x06A7, 0x00AC,
125
  0x0D58, 0x000E, 0x01A3, 0x00AF, 0x00AE, 0x006F, 0x01A2, 0x0D5B, 0x00A9,
126
  0x0019, 0x0001, 0x0009, 0x00A8, 0x006E, 0x002E, 0x0000, 0x01AD, 0x00AB,
127
  0x00AA, 0x0355, 0x0029, 0x1A80, 0x1A83, 0x1A82, 0x0354, 0x01AC, 0x0D5A,
128
  0x1A8D, 0x01AF, 0x0357, 0x0D45, 0x0D44, 0x0D47, 0x1A8C, 0x06A6, 0x06A1, },
129
{ 0x0001, 0x0011, 0x0005, 0x0775, 0x00F9, 0x00F8, 0x0031, 0x0030, 0x0049,
130
  0x00FB, 0x0010, 0x0033, 0x0EC9, 0x038D, 0x038C, 0x00FA, 0x038F, 0x0774,
131
  0x0048, 0x0032, 0x0000, 0x01D5, 0x00E5, 0x038E, 0x00E4, 0x0013, 0x000D,
132
  0x0389, 0x0777, 0x0388, 0x038B, 0x1DF9, 0x0EC8, 0x3BC9, 0x1DF8, 0x038A,
133
  0x03B5, 0x0776, 0x00E7, 0x3BC8, 0x01D4, 0x3BCB, 0x0ECB, 0x0771, 0x0ECA,
134
  0x01D7, 0x03B4, 0x01D6, 0x1DFB, 0x0EF5, 0x0770, 0x0EF4, 0x3BCA, 0x0773,
135
  0x00E6, 0x03B7, 0x004B, 0x1DFA, 0x03B6, 0x0EF7, 0x00E1, 0x0EF6, 0x0EF1,
136
  0x03B1, 0x01D1, 0x003D, 0x0EF0, 0x0772, 0x077D, 0x077C, 0x003C, 0x01D0,
137
  0x03B0, 0x01D3, 0x003F, 0x03B3, 0x01D2, 0x0EF3, 0x077F, 0x00E0, 0x004A, },
138
{ 0x0015, 0x0049, 0x0014, 0x07D1, 0x03FD, 0x03FC, 0x01C1, 0x01C0, 0x00F1,
139
  0x0017, 0x0001, 0x0001, 0x01C3, 0x0048, 0x004B, 0x0016, 0x0031, 0x01C2,
140
  0x004A, 0x0011, 0x0000, 0x01CD, 0x00F0, 0x01CC, 0x0075, 0x0010, 0x000D,
141
  0x03FF, 0x01CF, 0x01CE, 0x07D0, 0x0F81, 0x07D3, 0x1F1D, 0x0F80, 0x07D2,
142
  0x01C9, 0x03FE, 0x0074, 0x07DD, 0x00F3, 0x1F1C, 0x07DC, 0x03F9, 0x07DF,
143
  0x00F2, 0x00FD, 0x0077, 0x07DE, 0x07D9, 0x01C8, 0x07D8, 0x0F83, 0x03F8,
144
  0x0030, 0x0076, 0x0013, 0x0F82, 0x00FC, 0x03FB, 0x0033, 0x03FA, 0x03E5,
145
  0x03E4, 0x01CB, 0x0032, 0x1F1F, 0x03E7, 0x07DB, 0x07DA, 0x003D, 0x01CA,
146
  0x07C5, 0x03E6, 0x0071, 0x0F8D, 0x07C4, 0x1F1E, 0x0F8C, 0x03E1, 0x01F5, },
147
{ 0x0019, 0x0065, 0x0018, 0x0351, 0x0350, 0x0353, 0x0021, 0x0020, 0x0064,
148
  0x001D, 0x0005, 0x0005, 0x01A5, 0x0023, 0x0067, 0x0005, 0x0066, 0x0022,
149
  0x001B, 0x0004, 0x0001, 0x0004, 0x001C, 0x0061, 0x001A, 0x0005, 0x0004,
150
  0x0007, 0x002D, 0x0006, 0x002C, 0x01A4, 0x002F, 0x0352, 0x035D, 0x0060,
151
  0x0001, 0x002E, 0x001F, 0x035C, 0x0000, 0x06B1, 0x01A7, 0x0029, 0x01A6,
152
  0x0028, 0x0063, 0x0062, 0x035F, 0x01A1, 0x002B, 0x06B0, 0x06B3, 0x01A0,
153
  0x0003, 0x006D, 0x001E, 0x035E, 0x006C, 0x06B2, 0x0002, 0x01A3, 0x01A2,
154
  0x000D, 0x0005, 0x0007, 0x01AD, 0x006F, 0x002A, 0x006E, 0x0004, 0x0004,
155
  0x000C, 0x0007, 0x0006, 0x000F, 0x000E, 0x00D5, 0x0009, 0x0006, 0x0007, },
156
{ 0x0065, 0x0181, 0x0064, 0x36C9, 0x06D5, 0x0DB5, 0x0379, 0x0180, 0x0183,
157
  0x00D5, 0x001D, 0x001C, 0x0DB4, 0x0182, 0x0378, 0x00D4, 0x00D7, 0x06D4,
158
  0x0067, 0x001F, 0x0001, 0x00D6, 0x00D1, 0x018D, 0x0066, 0x0001, 0x0000,
159
  0x037B, 0x06D7, 0x037A, 0x0DB7, 0x36C8, 0x06D6, 0x0DB6, 0x1B79, 0x0DB1,
160
  0x018C, 0x0365, 0x00D0, 0x1B78, 0x00D3, 0x1B7B, 0x0364, 0x06D1, 0x06D0,
161
  0x018F, 0x018E, 0x00D2, 0x36CB, 0x0367, 0x0366, 0x06D3, 0x0DB0, 0x06D2,
162
  0x0361, 0x06DD, 0x0189, 0x36CA, 0x0360, 0x36F5, 0x0188, 0x0DB3, 0x36F4,
163
  0x0009, 0x0008, 0x0005, 0x06DC, 0x00DD, 0x018B, 0x00DC, 0x0004, 0x000B,
164
  0x018A, 0x0061, 0x0003, 0x0363, 0x00DF, 0x06DF, 0x0362, 0x000A, 0x001E, },
165
{ 0x001D, 0x0061, 0x000D, 0x0D55, 0x06B9, 0x06B8, 0x01A5, 0x0021, 0x0020,
166
  0x0023, 0x000C, 0x0060, 0x0D54, 0x00AD, 0x00AC, 0x0022, 0x00AF, 0x06BB,
167
  0x000F, 0x001C, 0x0001, 0x002D, 0x0063, 0x01A4, 0x000E, 0x0001, 0x0005,
168
  0x01A7, 0x06BA, 0x01A6, 0x06A5, 0x0D57, 0x0D56, 0x1ABD, 0x0D51, 0x00AE,
169
  0x002C, 0x00A9, 0x002F, 0x0D50, 0x01A1, 0x1ABC, 0x06A4, 0x06A7, 0x06A6,
170
  0x00A8, 0x06A1, 0x01A0, 0x1ABF, 0x0D53, 0x06A0, 0x0D52, 0x1ABE, 0x06A3,
171
  0x0062, 0x002E, 0x0009, 0x0D5D, 0x01A3, 0x0D5C, 0x006D, 0x00AB, 0x06A2,
172
  0x006C, 0x001F, 0x0001, 0x06AD, 0x0029, 0x01A2, 0x0028, 0x0004, 0x001E,
173
  0x01AD, 0x006F, 0x0000, 0x01AC, 0x01AF, 0x06AC, 0x00AA, 0x006E, 0x0019, },
174
{ 0x0019, 0x007D, 0x0018, 0x01B5, 0x000D, 0x01B4, 0x007C, 0x007F, 0x01B7,
175
  0x000C, 0x001B, 0x001A, 0x01B6, 0x000F, 0x00D5, 0x0019, 0x007E, 0x00D4,
176
  0x0018, 0x001B, 0x0001, 0x000E, 0x0011, 0x0009, 0x0005, 0x0005, 0x0005,
177
  0x00D7, 0x01B1, 0x0008, 0x01B0, 0x0079, 0x06FD, 0x0371, 0x0370, 0x00D6,
178
  0x0078, 0x01B3, 0x0010, 0x0373, 0x0013, 0x06FC, 0x007B, 0x007A, 0x00D1,
179
  0x00D0, 0x00D3, 0x0065, 0x0372, 0x06FF, 0x0064, 0x06FE, 0x037D, 0x00D2,
180
  0x00DD, 0x0067, 0x0004, 0x037C, 0x0012, 0x01B2, 0x0007, 0x0066, 0x01BD,
181
  0x0006, 0x0061, 0x0004, 0x01BC, 0x001A, 0x0060, 0x001D, 0x0004, 0x001C,
182
  0x0063, 0x0001, 0x0007, 0x000B, 0x0000, 0x0062, 0x000A, 0x0005, 0x0007, },
183
{ 0x0069, 0x0045, 0x0068, 0x04BD, 0x0255, 0x04BC, 0x00E5, 0x00E4, 0x0031,
184
  0x0030, 0x0019, 0x0001, 0x0121, 0x00E7, 0x00E6, 0x0033, 0x00E1, 0x00E0,
185
  0x006B, 0x0018, 0x0001, 0x0044, 0x0032, 0x0047, 0x006A, 0x001B, 0x0005,
186
  0x003D, 0x0046, 0x0015, 0x0041, 0x0120, 0x0123, 0x04BF, 0x0122, 0x0040,
187
  0x003C, 0x00E3, 0x0014, 0x0254, 0x0043, 0x0975, 0x012D, 0x00E2, 0x00ED,
188
  0x0042, 0x00EC, 0x004D, 0x0257, 0x0256, 0x0251, 0x04BE, 0x0974, 0x0250,
189
  0x00EF, 0x00EE, 0x004C, 0x04B9, 0x012C, 0x04B8, 0x004F, 0x04BB, 0x0253,
190
  0x003F, 0x0017, 0x0001, 0x0252, 0x00E9, 0x00E8, 0x00EB, 0x0000, 0x0003,
191
  0x0016, 0x0002, 0x0004, 0x004E, 0x003E, 0x00EA, 0x0049, 0x000D, 0x0007, },
192
{ 0x000D, 0x01BD, 0x000C, 0x0D31, 0x0D30, 0x0D33, 0x0359, 0x0358, 0x002D,
193
  0x0065, 0x001D, 0x001C, 0x0D32, 0x035B, 0x035A, 0x002C, 0x01BC, 0x0345,
194
  0x000F, 0x001F, 0x0001, 0x002F, 0x0064, 0x01BF, 0x0067, 0x0001, 0x0005,
195
  0x0066, 0x002E, 0x0061, 0x0029, 0x0695, 0x0694, 0x0697, 0x0696, 0x0060,
196
  0x01BE, 0x0D3D, 0x0028, 0x1A49, 0x0344, 0x1A48, 0x1A4B, 0x0D3C, 0x0691,
197
  0x002B, 0x01B9, 0x002A, 0x0D3F, 0x0690, 0x0347, 0x0D3E, 0x1A4A, 0x0346,
198
  0x00D5, 0x0341, 0x0063, 0x0D39, 0x0340, 0x0D38, 0x01B8, 0x0D3B, 0x0D3A,
199
  0x00D4, 0x0062, 0x0000, 0x0693, 0x01BB, 0x0343, 0x0342, 0x001E, 0x000E,
200
  0x006D, 0x0009, 0x0001, 0x006C, 0x00D7, 0x034D, 0x01BA, 0x0008, 0x0004, },
201
{ 0x0075, 0x00CD, 0x0035, 0x03C1, 0x03C0, 0x07F9, 0x03C3, 0x1F8D, 0x00CC,
202
  0x0074, 0x0011, 0x0010, 0x03C2, 0x0FD9, 0x01F1, 0x00CF, 0x03CD, 0x00CE,
203
  0x0034, 0x0001, 0x0001, 0x0037, 0x00C9, 0x00C8, 0x0036, 0x0000, 0x0001,
204
  0x0FD8, 0x03CC, 0x00CB, 0x01F0, 0x07F8, 0x03CF, 0x07FB, 0x07FA, 0x00CA,
205
  0x01F3, 0x03CE, 0x00F5, 0x0FDB, 0x00F4, 0x07E5, 0x07E4, 0x07E7, 0x01F2,
206
  0x07E6, 0x03C9, 0x01FD, 0x0FDA, 0x1F8C, 0x07E1, 0x1F8F, 0x1F8E, 0x03C8,
207
  0x03CB, 0x0077, 0x0076, 0x0FC5, 0x03CA, 0x07E0, 0x00F7, 0x0FC4, 0x03F5,
208
  0x00F6, 0x01FC, 0x0003, 0x03F4, 0x0071, 0x03F7, 0x00F1, 0x0013, 0x0031,
209
  0x0030, 0x0070, 0x0005, 0x0012, 0x0073, 0x01FF, 0x0072, 0x007D, 0x0002, },
210
{ 0x0061, 0x0055, 0x0060, 0x02C9, 0x02C8, 0x02CB, 0x0171, 0x00B5, 0x0054,
211
  0x0001, 0x0001, 0x0001, 0x0057, 0x0001, 0x0063, 0x001D, 0x0062, 0x0039,
212
  0x006D, 0x0000, 0x0005, 0x0038, 0x0056, 0x00B4, 0x006C, 0x0003, 0x001C,
213
  0x006F, 0x003B, 0x0002, 0x003A, 0x0170, 0x00B7, 0x0173, 0x0051, 0x006E,
214
  0x0025, 0x0050, 0x0069, 0x02CA, 0x0024, 0x0027, 0x0172, 0x00B6, 0x00B1,
215
  0x000D, 0x000C, 0x001F, 0x017D, 0x0026, 0x0068, 0x0053, 0x017C, 0x006B,
216
  0x001E, 0x000F, 0x0004, 0x017F, 0x006A, 0x02F5, 0x0019, 0x0021, 0x0052,
217
  0x02F4, 0x02F7, 0x0020, 0x0BCD, 0x05E5, 0x05E4, 0x0BCC, 0x0023, 0x00B0,
218
  0x02F6, 0x00B3, 0x0022, 0x02F1, 0x02F0, 0x0BCF, 0x0BCE, 0x017E, 0x005D, },
219
{ 0x00BD, 0x0025, 0x01A1, 0x0159, 0x0299, 0x00BC, 0x0024, 0x0505, 0x0504,
220
  0x01A0, 0x0001, 0x001D, 0x006D, 0x001C, 0x0001, 0x0005, 0x0027, 0x01A3,
221
  0x0158, 0x001F, 0x001E, 0x01A2, 0x0026, 0x0021, 0x000D, 0x0020, 0x0023,
222
  0x0298, 0x006C, 0x0022, 0x00BF, 0x00BE, 0x01AD, 0x002D, 0x029B, 0x00B9,
223
  0x01AC, 0x00B8, 0x01AF, 0x029A, 0x006F, 0x015B, 0x006E, 0x0285, 0x0284,
224
  0x01AE, 0x0019, 0x002C, 0x01A9, 0x01A8, 0x000C, 0x000F, 0x015A, 0x00BB,
225
  0x000E, 0x0000, 0x0069, 0x01AB, 0x0018, 0x01AA, 0x0004, 0x0055, 0x00BA,
226
  0x0507, 0x0145, 0x0054, 0x0506, 0x00A5, 0x0501, 0x00A4, 0x0057, 0x0500,
227
  0x0A05, 0x0144, 0x00A7, 0x0287, 0x0286, 0x0503, 0x0147, 0x0A04, 0x0146, },
228
{ 0x0759, 0x0041, 0x00E5, 0x03BD, 0x0E9D, 0x012D, 0x012C, 0x3A1D, 0x03BC,
229
  0x012F, 0x000D, 0x0040, 0x00E4, 0x03BF, 0x0043, 0x0042, 0x0758, 0x03BE,
230
  0x00E7, 0x0001, 0x0000, 0x003D, 0x00E6, 0x0015, 0x0014, 0x0017, 0x003C,
231
  0x743D, 0x012E, 0x03B9, 0x03B8, 0x0E9C, 0x03BB, 0x075B, 0x3A1C, 0x0E9F,
232
  0x0129, 0x00E1, 0x0128, 0x0E9E, 0x012B, 0x075A, 0x00E0, 0x0E99, 0x0745,
233
  0x3A1F, 0x03BA, 0x0744, 0x0E98, 0x1D0D, 0x03A5, 0x0E9B, 0x743C, 0x0E9A,
234
  0x012A, 0x004D, 0x00E3, 0x0E85, 0x01D5, 0x0E84, 0x004C, 0x0747, 0x1D0C,
235
  0x01D4, 0x003F, 0x0016, 0x0746, 0x03A4, 0x0741, 0x004F, 0x003E, 0x01D7,
236
  0x0740, 0x000C, 0x0011, 0x004E, 0x00E2, 0x00ED, 0x00EC, 0x0049, 0x0048, },
237
};
238

    
239
static const uint8_t aic_mode2_vlc_bits[AIC_MODE2_NUM][AIC_MODE2_SIZE] = {
240
{  1,  5,  4, 10,  6,  8,  5,  8,  8,
241
   7,  5,  7, 11, 10,  9,  8, 13, 11,
242
   6,  7,  3,  9,  8, 10,  9,  8,  5,
243
  10,  9, 10, 10, 14, 12, 14, 14, 12,
244
   8,  9,  7, 12,  8, 14,  9,  9, 12,
245
   8,  9, 11, 11, 13,  9, 11, 14, 12,
246
   6,  7,  9, 13,  9, 12,  7, 10, 12,
247
  11, 12,  8, 15, 10, 15, 13,  7, 12,
248
  10, 10,  8, 10, 13, 13, 13, 11,  8, },
249
{  4,  6,  5, 11,  8, 10,  7, 11,  9,
250
   4,  1,  4,  9,  7,  7,  5,  9, 10,
251
   6,  7,  4,  9,  9, 10,  9,  9,  6,
252
   9, 10,  9, 10, 12, 12, 13, 12, 11,
253
   9,  9,  8, 12,  8, 14, 10, 11, 12,
254
   7,  8, 10, 11, 12,  9, 11, 13, 12,
255
   6,  7,  8, 12,  9, 12,  7, 11, 10,
256
  12, 12,  9, 14, 12, 15, 13,  8, 12,
257
  11, 11, 10, 12, 13, 15, 14, 12,  9, },
258
{  5,  7,  6, 12,  9, 11,  8, 11, 10,
259
   7,  5,  7, 11, 10,  9,  8, 12, 12,
260
   5,  5,  1,  8,  7, 10,  8,  6,  4,
261
   8,  8,  8,  9, 12, 11, 13, 12, 11,
262
   8,  9,  8, 12,  8, 13, 10, 11, 11,
263
   8,  9, 11, 12, 13, 11, 12, 14, 13,
264
   8,  9, 10, 14, 11, 14,  9, 13, 13,
265
   8,  9,  6, 11, 10, 14, 11,  6, 10,
266
   6,  6,  4,  8,  9, 10, 10,  8,  5, },
267
{ 11,  7,  8, 10, 12,  9, 10, 14, 12,
268
   7,  1,  5,  7,  8,  6,  4, 10,  9,
269
  10,  5,  4,  8, 11,  8,  7,  6,  7,
270
  11,  6,  7,  8, 10,  8, 10, 11,  9,
271
  10,  8,  9, 13,  9, 12,  8, 11, 12,
272
  11,  4,  7,  8,  9,  6,  8, 12,  9,
273
   8,  5,  8, 12,  9, 10,  6, 12, 11,
274
  12, 12, 10, 15, 13, 13, 13, 10, 13,
275
  15, 10,  9, 10, 12, 13, 13, 10,  9, },
276
{ 11,  8,  8, 11, 13, 10, 11, 15, 12,
277
   7,  1,  4,  7,  7,  5,  4,  8,  9,
278
  11,  5,  5,  8, 11,  9,  8,  7,  8,
279
  13,  7,  8,  9, 11,  9, 10, 12, 10,
280
  10,  9,  8, 13,  9, 12,  9, 11, 12,
281
  11,  5,  7,  9, 10,  6,  9, 13, 10,
282
   7,  4,  7, 11,  8,  9,  5, 10, 11,
283
  13, 11,  9, 15, 13, 15, 13,  8, 12,
284
  15, 10, 10, 12, 13, 14, 14, 12, 11, },
285
{ 12,  9,  9, 12, 13, 11, 11, 14, 12,
286
   8,  2,  5,  7,  9,  6,  5, 10, 10,
287
   9,  4,  2,  7,  9,  7,  6,  5,  6,
288
  12,  6,  7,  8, 10,  8, 10, 11,  9,
289
  12,  9, 10, 13, 11, 12, 10, 14, 13,
290
  12,  6,  8, 10, 10,  7,  9, 12, 10,
291
   8,  5,  8, 11,  9, 10,  7, 11, 12,
292
   8,  6,  5, 11, 11, 11,  8,  6,  9,
293
  12,  6,  6,  8, 10, 10, 11,  8,  6, },
294
{ 13,  9, 10, 12, 14, 12, 11, 15, 15,
295
   8,  1,  5,  7,  9,  6,  5, 11, 10,
296
  11,  6,  5,  9, 11,  9,  8,  7,  8,
297
  12,  6,  8,  8, 11,  8, 10, 12, 10,
298
  10,  7,  9, 13, 10, 11,  9, 13, 12,
299
  11,  3,  6,  8,  9,  4,  7, 11,  8,
300
   8,  5,  9, 12, 10,  9,  7, 12, 13,
301
  13, 12, 10, 14, 14, 15, 12, 11, 14,
302
  15,  7,  9,  8, 11, 11, 12, 10,  9, },
303
{ 10,  5,  6,  9, 11,  7,  8, 12, 11,
304
   8,  1,  4,  7,  9,  6,  4, 10, 10,
305
  11,  6,  6,  9,  9,  9,  9,  8,  8,
306
  14, 10, 10, 12, 12, 11, 12, 13, 12,
307
  10,  7,  8, 12,  9, 11,  8, 12, 11,
308
  13,  7, 10, 11, 11,  8, 10, 13, 11,
309
   6,  3,  7, 11,  8,  9,  5, 10, 11,
310
  11, 11,  9, 14, 14, 14, 11, 10, 13,
311
  14, 10, 11, 13, 13, 13, 14, 12, 12, },
312
{  2,  5,  3, 11,  8,  8,  6,  6,  7,
313
   8,  5,  6, 12, 10, 10,  8, 10, 11,
314
   7,  6,  2,  9,  8, 10,  8,  5,  4,
315
  10, 11, 10, 10, 13, 12, 14, 13, 10,
316
  10, 11,  8, 14,  9, 14, 12, 11, 12,
317
   9, 10,  9, 13, 12, 11, 12, 14, 11,
318
   8, 10,  7, 13, 10, 12,  8, 12, 12,
319
  10,  9,  6, 12, 11, 11, 11,  6,  9,
320
  10,  9,  6, 10,  9, 12, 11,  8,  7, },
321
{  6,  8,  6, 12, 11, 11, 10, 10,  9,
322
   6,  1,  3, 10,  8,  8,  6,  7, 10,
323
   8,  6,  3, 10,  9, 10,  8,  6,  5,
324
  11, 10, 10, 12, 13, 12, 14, 13, 12,
325
  10, 11,  8, 12,  9, 14, 12, 11, 12,
326
   9,  9,  8, 12, 12, 10, 12, 13, 11,
327
   7,  8,  6, 13,  9, 11,  7, 11, 11,
328
  11, 10,  7, 14, 11, 12, 12,  7, 10,
329
  12, 11,  8, 13, 12, 14, 13, 11, 10, },
330
{  7, 10,  7, 13, 13, 13, 11, 11, 10,
331
   8,  5,  6, 12, 11, 10,  9, 10, 11,
332
   7,  5,  1,  9,  8, 10,  7,  4,  4,
333
   9, 11,  9, 11, 12, 11, 13, 13, 10,
334
   9, 11,  8, 13,  9, 14, 12, 11, 12,
335
  11, 10, 10, 13, 12, 11, 14, 14, 12,
336
   9, 10,  8, 13, 10, 14,  9, 12, 12,
337
   9,  7,  4, 12, 10, 11, 10,  6,  7,
338
   9,  7,  4,  9,  9, 11,  9,  7,  5, },
339
{  7,  9,  7, 14, 11, 12, 10,  9,  9,
340
   8,  5,  5, 12,  9, 10,  8,  8, 11,
341
   7,  5,  2,  8,  8,  9,  7,  4,  4,
342
  10, 11, 10, 12, 14, 11, 12, 13, 12,
343
   9, 10,  8, 13,  8, 13, 10, 11, 11,
344
   9,  9,  8, 14, 10, 10, 11, 12, 11,
345
  10, 11,  9, 14, 10, 14,  9, 12, 14,
346
   6,  6,  3, 11,  8,  9,  8,  3,  6,
347
   9,  7,  4, 10,  8, 11, 10,  6,  5, },
348
{  6,  8,  7, 13, 12, 12, 10,  9,  9,
349
   9,  7,  8, 13, 11, 11,  9, 11, 12,
350
   7,  6,  1,  9,  8, 10,  7,  5,  4,
351
  10, 12, 10, 12, 13, 13, 14, 13, 11,
352
   9, 11,  9, 13, 10, 14, 12, 12, 12,
353
  11, 12, 10, 14, 13, 12, 13, 14, 12,
354
   8,  9,  7, 13, 10, 13,  8, 11, 12,
355
   8,  6,  3, 12,  9, 10,  9,  4,  6,
356
  10,  8,  5, 10, 10, 12, 11,  8,  6, },
357
{  7, 10,  7, 12,  9, 12, 10, 10, 12,
358
   9,  7,  7, 12,  9, 11,  6, 10, 11,
359
   6,  6,  1,  9,  8,  9,  7,  4,  5,
360
  11, 12,  9, 12, 10, 14, 13, 13, 11,
361
  10, 12,  8, 13,  8, 14, 10, 10, 11,
362
  11, 11, 10, 13, 14, 10, 14, 13, 11,
363
  11, 10,  7, 13,  8, 12,  7, 10, 12,
364
   7, 10,  4, 12,  6, 10,  8,  5,  8,
365
  10,  7,  4,  9,  7, 10,  9,  6,  5, },
366
{  7,  9,  7, 13, 12, 13, 10, 10,  8,
367
   8,  5,  6, 11, 10, 10,  8, 10, 10,
368
   7,  5,  2,  9,  8,  9,  7,  5,  3,
369
   8,  9,  7,  9, 11, 11, 13, 11,  9,
370
   8, 10,  7, 12,  9, 14, 11, 10, 10,
371
   9, 10,  9, 12, 12, 12, 13, 14, 12,
372
  10, 10,  9, 13, 11, 13,  9, 13, 12,
373
   8,  7,  4, 12, 10, 10, 10,  6,  6,
374
   7,  6,  3,  9,  8, 10,  9,  6,  3, },
375
{  7, 10,  7, 13, 13, 13, 11, 11,  9,
376
   8,  6,  6, 13, 11, 11,  9, 10, 11,
377
   7,  6,  1,  9,  8, 10,  8,  5,  4,
378
   8,  9,  8,  9, 12, 12, 12, 12,  8,
379
  10, 13,  9, 14, 11, 14, 14, 13, 12,
380
   9, 10,  9, 13, 12, 11, 13, 14, 11,
381
   9, 11,  8, 13, 11, 13, 10, 13, 13,
382
   9,  8,  5, 12, 10, 11, 11,  6,  7,
383
   8,  7,  3,  8,  9, 11, 10,  7,  4, },
384
{  8,  9,  7, 11, 11, 12, 11, 14,  9,
385
   8,  6,  6, 11, 13, 10,  9, 11,  9,
386
   7,  5,  1,  7,  9,  9,  7,  5,  3,
387
  13, 11,  9, 10, 12, 11, 12, 12,  9,
388
  10, 11,  9, 13,  9, 12, 12, 12, 10,
389
  12, 11, 10, 13, 14, 12, 14, 14, 11,
390
  11,  8,  8, 13, 11, 12,  9, 13, 11,
391
   9, 10,  5, 11,  8, 11,  9,  6,  7,
392
   7,  8,  4,  6,  8, 10,  8,  8,  5, },
393
{  8, 10,  8, 13, 13, 13, 12, 11, 10,
394
   5,  1,  3, 10,  7,  8,  6,  8,  9,
395
   8,  7,  4,  9, 10, 11,  8,  7,  6,
396
   8,  9,  7,  9, 12, 11, 12, 10,  8,
397
   9, 10,  8, 13,  9,  9, 12, 11, 11,
398
   7,  7,  6, 12,  9,  8, 10, 12,  8,
399
   6,  7,  4, 12,  8, 13,  6,  9, 10,
400
  13, 13,  9, 15, 14, 14, 15,  9, 11,
401
  13, 11,  9, 13, 13, 15, 15, 12, 10, },
402
{ 10,  8,  9, 11, 12, 10,  8, 13, 13,
403
   9,  2,  5,  7,  5,  4,  3,  8,  9,
404
  11,  5,  5,  9,  8,  8,  6,  8,  8,
405
  12,  7,  8, 10, 10,  9,  8, 12, 10,
406
   9, 10,  9, 12,  7, 11,  7, 12, 12,
407
   9,  5,  8,  9,  9,  6,  6, 11, 10,
408
   6,  4,  7,  9,  5,  9,  3,  9, 10,
409
  13, 11,  9, 13, 10, 13, 10,  9, 13,
410
  14, 11, 10, 12, 12, 13, 11, 14, 11, },
411
{ 11,  7,  8, 10, 12,  9,  9, 14, 10,
412
   9,  4,  7,  8, 10,  7,  7, 11, 10,
413
   8,  2,  2,  6,  8,  5,  5,  5,  6,
414
  15,  9, 10, 10, 12, 10, 11, 14, 12,
415
   9,  8,  9, 12,  9, 11,  8, 12, 11,
416
  14, 10, 11, 12, 13, 10, 12, 15, 12,
417
   9,  7,  8, 12,  9, 12,  7, 11, 13,
418
   9,  6,  5, 11, 10, 11,  7,  6,  9,
419
  11,  4,  5,  7,  8,  8,  8,  7,  7, },
420
};
421
//@}
422

    
423
/**
424
 * Codes used for determining block type
425
 */
426
//@{
427
#define AIC_MODE1_NUM  90
428
#define AIC_MODE1_SIZE  9
429
#define AIC_MODE1_BITS  7
430

    
431
static const uint8_t aic_mode1_vlc_codes[AIC_MODE1_NUM][AIC_MODE1_SIZE] = {
432
 { 0x01, 0x01, 0x01, 0x11, 0x00, 0x09, 0x03, 0x10, 0x05,},
433
 { 0x09, 0x01, 0x01, 0x05, 0x11, 0x00, 0x03, 0x21, 0x20,},
434
 { 0x01, 0x01, 0x01, 0x11, 0x09, 0x10, 0x05, 0x00, 0x03,},
435
 { 0x01, 0x01, 0x00, 0x03, 0x21, 0x05, 0x09, 0x20, 0x11,},
436
 { 0x01, 0x09, 0x00, 0x29, 0x08, 0x15, 0x03, 0x0B, 0x28,},
437
 { 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x03, 0x02,},
438
 { 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x01, 0x09, 0x08,},
439
 { 0x01, 0x01, 0x01, 0x09, 0x01, 0x08, 0x00, 0x03, 0x05,},
440
 { 0x01, 0x01, 0x01, 0x00, 0x05, 0x11, 0x09, 0x10, 0x03,},
441
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
442

    
443
 { 0x01, 0x01, 0x01, 0x05, 0x01, 0x00, 0x03, 0x09, 0x08,},
444
 { 0x09, 0x01, 0x01, 0x05, 0x11, 0x00, 0x03, 0x21, 0x20,},
445
 { 0x01, 0x01, 0x01, 0x0D, 0x05, 0x04, 0x00, 0x07, 0x0C,},
446
 { 0x01, 0x01, 0x00, 0x05, 0x11, 0x03, 0x09, 0x21, 0x20,},
447
 { 0x05, 0x01, 0x01, 0x11, 0x00, 0x09, 0x03, 0x21, 0x20,},
448
 { 0x09, 0x01, 0x01, 0x00, 0x05, 0x01, 0x03, 0x11, 0x10,},
449
 { 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x03, 0x02,},
450
 { 0x01, 0x01, 0x01, 0x09, 0x00, 0x05, 0x01, 0x03, 0x08,},
451
 { 0x01, 0x01, 0x01, 0x09, 0x11, 0x05, 0x00, 0x10, 0x03,},
452
 { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
453

    
454
 { 0x01, 0x00, 0x01, 0x09, 0x08, 0x15, 0x14, 0x0B, 0x03,},
455
 { 0x0D, 0x01, 0x01, 0x05, 0x0C, 0x04, 0x01, 0x00, 0x07,},
456
 { 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x03, 0x01, 0x01,},
457
 { 0x05, 0x01, 0x01, 0x04, 0x19, 0x07, 0x18, 0x0D, 0x00,},
458
 { 0x11, 0x09, 0x01, 0x21, 0x05, 0x20, 0x01, 0x00, 0x03,},
459
 { 0x41, 0x01, 0x00, 0x05, 0x40, 0x03, 0x09, 0x21, 0x11,},
460
 { 0x29, 0x01, 0x00, 0x28, 0x09, 0x15, 0x03, 0x08, 0x0B,},
461
 { 0x01, 0x00, 0x01, 0x11, 0x09, 0x10, 0x05, 0x01, 0x03,},
462
 { 0x05, 0x01, 0x01, 0x04, 0x0D, 0x0C, 0x07, 0x00, 0x01,},
463
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
464

    
465
 { 0x01, 0x00, 0x03, 0x05, 0x11, 0x10, 0x25, 0x24, 0x13,},
466
 { 0x21, 0x01, 0x01, 0x00, 0x11, 0x03, 0x05, 0x20, 0x09,},
467
 { 0x01, 0x01, 0x01, 0x00, 0x09, 0x11, 0x10, 0x05, 0x03,},
468
 { 0x21, 0x05, 0x01, 0x01, 0x09, 0x00, 0x11, 0x20, 0x03,},
469
 { 0x05, 0x01, 0x00, 0x04, 0x01, 0x19, 0x07, 0x18, 0x0D,},
470
 { 0x11, 0x01, 0x00, 0x01, 0x09, 0x01, 0x03, 0x10, 0x05,},
471
 { 0x1D, 0x01, 0x05, 0x0D, 0x0C, 0x04, 0x00, 0x1C, 0x0F,},
472
 { 0x05, 0x19, 0x01, 0x04, 0x00, 0x18, 0x1B, 0x1A, 0x07,},
473
 { 0x09, 0x01, 0x00, 0x01, 0x05, 0x03, 0x11, 0x10, 0x01,},
474
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
475

    
476
 { 0x01, 0x00, 0x03, 0x41, 0x05, 0x40, 0x09, 0x11, 0x21,},
477
 { 0x05, 0x01, 0x01, 0x19, 0x04, 0x07, 0x00, 0x18, 0x0D,},
478
 { 0x01, 0x01, 0x01, 0x05, 0x01, 0x04, 0x01, 0x00, 0x03,},
479
 { 0x01, 0x05, 0x00, 0x0D, 0x01, 0x04, 0x07, 0x19, 0x18,},
480
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02,},
481
 { 0x31, 0x01, 0x05, 0x19, 0x04, 0x07, 0x00, 0x30, 0x0D,},
482
 { 0x01, 0x00, 0x03, 0x11, 0x01, 0x05, 0x01, 0x09, 0x10,},
483
 { 0x01, 0x05, 0x01, 0x11, 0x01, 0x10, 0x00, 0x03, 0x09,},
484
 { 0x01, 0x09, 0x00, 0x29, 0x03, 0x08, 0x28, 0x15, 0x0B,},
485
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
486

    
487
 { 0x01, 0x01, 0x00, 0x09, 0x15, 0x03, 0x08, 0x14, 0x0B,},
488
 { 0x11, 0x01, 0x01, 0x00, 0x09, 0x01, 0x03, 0x10, 0x05,},
489
 { 0x01, 0x00, 0x03, 0x25, 0x11, 0x05, 0x10, 0x24, 0x13,},
490
 { 0x11, 0x01, 0x00, 0x01, 0x09, 0x01, 0x05, 0x10, 0x03,},
491
 { 0x05, 0x01, 0x00, 0x0D, 0x0C, 0x04, 0x0F, 0x1D, 0x1C,},
492
 { 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x03, 0x02,},
493
 { 0x21, 0x01, 0x05, 0x09, 0x11, 0x00, 0x03, 0x41, 0x40,},
494
 { 0x05, 0x01, 0x00, 0x1D, 0x1C, 0x0D, 0x0C, 0x0F, 0x04,},
495
 { 0x05, 0x01, 0x00, 0x0D, 0x31, 0x04, 0x19, 0x30, 0x07,},
496
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
497

    
498
 { 0x01, 0x01, 0x00, 0x21, 0x05, 0x11, 0x03, 0x09, 0x20,},
499
 { 0x01, 0x01, 0x00, 0x11, 0x03, 0x05, 0x01, 0x09, 0x10,},
500
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02,},
501
 { 0x05, 0x01, 0x04, 0x19, 0x07, 0x0D, 0x00, 0x31, 0x30,},
502
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02,},
503
 { 0x05, 0x01, 0x01, 0x11, 0x09, 0x00, 0x03, 0x21, 0x20,},
504
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02,},
505
 { 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x01, 0x01, 0x02,},
506
 { 0x09, 0x01, 0x00, 0x29, 0x08, 0x15, 0x03, 0x28, 0x0B,},
507
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
508

    
509
 { 0x01, 0x01, 0x01, 0x05, 0x01, 0x04, 0x00, 0x01, 0x03,},
510
 { 0x09, 0x01, 0x00, 0x29, 0x28, 0x15, 0x08, 0x03, 0x0B,},
511
 { 0x01, 0x00, 0x01, 0x11, 0x05, 0x10, 0x09, 0x01, 0x03,},
512
 { 0x05, 0x04, 0x01, 0x1D, 0x0D, 0x0C, 0x1C, 0x00, 0x0F,},
513
 { 0x09, 0x11, 0x01, 0x41, 0x00, 0x40, 0x05, 0x03, 0x21,},
514
 { 0x0D, 0x05, 0x01, 0x1D, 0x1C, 0x0C, 0x04, 0x00, 0x0F,},
515
 { 0x41, 0x09, 0x01, 0x40, 0x00, 0x11, 0x05, 0x03, 0x21,},
516
 { 0x01, 0x01, 0x01, 0x05, 0x01, 0x04, 0x00, 0x01, 0x03,},
517
 { 0x05, 0x04, 0x01, 0x0D, 0x01, 0x0C, 0x07, 0x01, 0x00,},
518
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
519

    
520
 { 0x05, 0x04, 0x01, 0x07, 0x19, 0x31, 0x30, 0x0D, 0x00,},
521
 { 0x21, 0x01, 0x01, 0x00, 0x11, 0x09, 0x20, 0x05, 0x03,},
522
 { 0x05, 0x01, 0x01, 0x04, 0x07, 0x0D, 0x0C, 0x00, 0x01,},
523
 { 0x21, 0x09, 0x01, 0x00, 0x20, 0x05, 0x23, 0x22, 0x03,},
524
 { 0x31, 0x0D, 0x01, 0x19, 0x05, 0x30, 0x04, 0x07, 0x00,},
525
 { 0x31, 0x05, 0x01, 0x04, 0x19, 0x00, 0x0D, 0x30, 0x07,},
526
 { 0x31, 0x01, 0x00, 0x0D, 0x05, 0x19, 0x04, 0x30, 0x07,},
527
 { 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02, 0x01, 0x01,},
528
 { 0x01, 0x00, 0x01, 0x01, 0x05, 0x09, 0x08, 0x03, 0x01,},
529
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,},
530
};
531

    
532
static const uint8_t aic_mode1_vlc_bits[AIC_MODE1_NUM][AIC_MODE1_SIZE] = {
533
 {  1,  4,  2,  7,  4,  6,  4,  7,  5,},
534
 {  5,  1,  3,  4,  6,  3,  3,  7,  7,},
535
 {  1,  4,  2,  7,  6,  7,  5,  4,  4,},
536
 {  1,  3,  3,  3,  7,  4,  5,  7,  6,},
537
 {  2,  4,  2,  6,  4,  5,  2,  4,  6,},
538
 {  7,  2,  3,  4,  7,  1,  5,  7,  7,},
539
 {  5,  1,  3,  6,  5,  5,  2,  7,  7,},
540
 {  2,  5,  1,  7,  3,  7,  5,  5,  6,},
541
 {  2,  4,  1,  4,  5,  7,  6,  7,  4,},
542
 {  0,  0,  0,  0,  0,  0,  0,  0,  0,},
543

    
544
 {  2,  1,  3,  6,  5,  5,  5,  7,  7,},
545
 {  5,  1,  3,  4,  6,  3,  3,  7,  7,},
546
 {  4,  1,  2,  6,  5,  5,  4,  5,  6,},
547
 {  3,  1,  3,  4,  6,  3,  5,  7,  7,},
548
 {  4,  1,  3,  6,  3,  5,  3,  7,  7,},
549
 {  6,  1,  4,  4,  5,  2,  4,  7,  7,},
550
 {  7,  1,  5,  7,  4,  3,  2,  7,  7,},
551
 {  5,  3,  2,  7,  5,  6,  1,  5,  7,},
552
 {  4,  1,  2,  6,  7,  5,  4,  7,  4,},
553
 {  1,  0,  1,  0,  0,  0,  0,  0,  0,},
554

    
555
 {  3,  3,  1,  5,  5,  6,  6,  5,  3,},
556
 {  6,  2,  1,  5,  6,  5,  4,  4,  5,},
557
 {  6,  4,  1,  7,  6,  7,  6,  3,  2,},
558
 {  4,  3,  1,  4,  6,  4,  6,  5,  3,},
559
 {  6,  5,  1,  7,  4,  7,  3,  3,  3,},
560
 {  7,  2,  2,  3,  7,  2,  4,  6,  5,},
561
 {  6,  2,  2,  6,  4,  5,  2,  4,  4,},
562
 {  4,  4,  1,  7,  6,  7,  5,  2,  4,},
563
 {  5,  4,  1,  5,  6,  6,  5,  4,  2,},
564
 {  0,  0,  0,  0,  0,  0,  0,  0,  0,},
565

    
566
 {  2,  2,  2,  3,  5,  5,  6,  6,  5,},
567
 {  7,  1,  3,  3,  6,  3,  4,  7,  5,},
568
 {  2,  4,  1,  4,  6,  7,  7,  5,  4,},
569
 {  7,  4,  3,  1,  5,  3,  6,  7,  3,},
570
 {  4,  3,  3,  4,  1,  6,  4,  6,  5,},
571
 {  7,  4,  4,  2,  6,  1,  4,  7,  5,},
572
 {  5,  2,  3,  4,  4,  3,  2,  5,  4,},
573
 {  3,  5,  2,  3,  2,  5,  5,  5,  3,},
574
 {  6,  4,  4,  2,  5,  4,  7,  7,  1,},
575
 {  0,  0,  0,  0,  0,  0,  0,  0,  0,},
576

    
577
 {  2,  2,  2,  7,  3,  7,  4,  5,  6,},
578
 {  4,  1,  3,  6,  4,  4,  3,  6,  5,},
579
 {  2,  4,  1,  7,  3,  7,  6,  6,  6,},
580
 {  3,  4,  3,  5,  1,  4,  4,  6,  6,},
581
 {  4,  5,  2,  7,  1,  7,  3,  7,  7,},
582
 {  6,  2,  3,  5,  3,  3,  2,  6,  4,},
583
 {  4,  4,  4,  7,  2,  5,  1,  6,  7,},
584
 {  4,  5,  2,  7,  1,  7,  4,  4,  6,},
585
 {  2,  4,  2,  6,  2,  4,  6,  5,  4,},
586
 {  0,  0,  0,  0,  0,  0,  0,  0,  0,},
587

    
588
 {  1,  3,  3,  5,  6,  3,  5,  6,  5,},
589
 {  7,  1,  4,  4,  6,  2,  4,  7,  5,},
590
 {  2,  2,  2,  6,  5,  3,  5,  6,  5,},
591
 {  7,  4,  4,  2,  6,  1,  5,  7,  4,},
592
 {  3,  2,  2,  4,  4,  3,  4,  5,  5,},
593
 {  7,  2,  5,  3,  7,  1,  4,  7,  7,},
594
 {  6,  2,  3,  4,  5,  2,  2,  7,  7,},
595
 {  3,  2,  2,  5,  5,  4,  4,  4,  3,},
596
 {  3,  2,  2,  4,  6,  3,  5,  6,  3,},
597
 {  0,  0,  0,  0,  0,  0,  0,  0,  0,},
598

    
599
 {  1,  3,  3,  7,  4,  6,  3,  5,  7,},
600
 {  4,  1,  4,  7,  4,  5,  2,  6,  7,},
601
 {  2,  4,  1,  7,  5,  7,  3,  7,  7,},
602
 {  3,  2,  3,  5,  3,  4,  2,  6,  6,},
603
 {  3,  5,  4,  7,  2,  7,  1,  7,  7,},
604
 {  4,  1,  3,  6,  5,  3,  3,  7,  7,},
605
 {  4,  2,  5,  7,  3,  7,  1,  7,  7,},
606
 {  7,  4,  1,  7,  3,  7,  2,  5,  7,},
607
 {  4,  2,  2,  6,  4,  5,  2,  6,  4,},
608
 {  0,  0,  0,  0,  0,  0,  0,  0,  0,},
609

    
610
 {  3,  4,  1,  7,  6,  7,  6,  2,  6,},
611
 {  4,  2,  2,  6,  6,  5,  4,  2,  4,},
612
 {  4,  4,  1,  7,  5,  7,  6,  2,  4,},
613
 {  3,  3,  2,  5,  4,  4,  5,  2,  4,},
614
 {  4,  5,  2,  7,  2,  7,  3,  2,  6,},
615
 {  4,  3,  2,  5,  5,  4,  3,  2,  4,},
616
 {  7,  4,  2,  7,  2,  5,  3,  2,  6,},
617
 {  4,  6,  2,  7,  3,  7,  6,  1,  6,},
618
 {  5,  5,  1,  6,  4,  6,  5,  2,  4,},
619
 {  0,  0,  0,  0,  0,  0,  0,  0,  0,},
620

    
621
 {  3,  3,  2,  3,  5,  6,  6,  4,  2,},
622
 {  7,  1,  3,  3,  6,  5,  7,  4,  3,},
623
 {  5,  4,  1,  5,  5,  6,  6,  4,  2,},
624
 {  6,  4,  2,  2,  6,  3,  6,  6,  2,},
625
 {  6,  4,  2,  5,  3,  6,  3,  3,  2,},
626
 {  6,  3,  2,  3,  5,  2,  4,  6,  3,},
627
 {  6,  2,  2,  4,  3,  5,  3,  6,  3,},
628
 {  7,  5,  1,  7,  4,  7,  7,  3,  2,},
629
 {  5,  5,  2,  3,  6,  7,  7,  5,  1,},
630
 {  0,  0,  0,  0,  0,  0,  0,  0,  0,},
631
};
632

    
633
//@}
634

    
635
#define PBTYPE_ESCAPE 0xFF
636

    
637
/** tables used for P-frame macroblock type decoding */
638
//@{
639
#define NUM_PTYPE_VLCS 7
640
#define PTYPE_VLC_SIZE 8
641
#define PTYPE_VLC_BITS 7
642

    
643
static const uint8_t ptype_vlc_codes[NUM_PTYPE_VLCS][PTYPE_VLC_SIZE] = {
644
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
645
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
646
 { 0x0D, 0x05, 0x01, 0x04, 0x01, 0x00, 0x07, 0x0C },
647
 { 0x09, 0x11, 0x01, 0x00, 0x05, 0x03, 0x21, 0x20 },
648
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
649
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
650
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 }
651
};
652

    
653
static const uint8_t ptype_vlc_bits[NUM_PTYPE_VLCS][PTYPE_VLC_SIZE] = {
654
 { 1, 2, 3, 6, 5, 4, 7, 7 },
655
 { 3, 1, 2, 7, 6, 5, 4, 7 },
656
 { 5, 4, 1, 4, 3, 3, 4, 5 },
657
 { 4, 5, 2, 2, 3, 2, 6, 6 },
658
 { 5, 6, 1, 4, 2, 3, 7, 7 },
659
 { 5, 6, 1, 4, 3, 2, 7, 7 },
660
 { 6, 3, 2, 7, 5, 4, 1, 7 }
661
};
662

    
663
static const uint8_t ptype_vlc_syms[PTYPE_VLC_SIZE] = {
664
 0, 1, 2, 3, 8, 9, 11, PBTYPE_ESCAPE
665
};
666

    
667
/** reverse of ptype_vlc_syms */
668
static const uint8_t block_num_to_ptype_vlc_num[12] = {
669
 0, 1, 2, 3, 0, 0, 2, 0, 4, 5, 0, 6
670
};
671
//@}
672

    
673
/** tables used for P-frame macroblock type decoding */
674
//@{
675
#define NUM_BTYPE_VLCS 6
676
#define BTYPE_VLC_SIZE 7
677
#define BTYPE_VLC_BITS 6
678

    
679
static const uint8_t btype_vlc_codes[NUM_BTYPE_VLCS][BTYPE_VLC_SIZE] = {
680
 { 0x01, 0x05, 0x00, 0x03, 0x11, 0x09, 0x10 },
681
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
682
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
683
 { 0x09, 0x01, 0x00, 0x01, 0x05, 0x03, 0x08 },
684
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 },
685
 { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00 }
686
};
687

    
688
static const uint8_t btype_vlc_bits[NUM_BTYPE_VLCS][PTYPE_VLC_SIZE] = {
689
 { 2, 3, 2, 2, 5, 4, 5 },
690
 { 4, 1, 3, 2, 6, 5, 6 },
691
 { 6, 4, 1, 2, 5, 3, 6 },
692
 { 5, 3, 3, 1, 4, 3, 5 },
693
 { 6, 5, 3, 2, 4, 1, 6 },
694
 { 6, 5, 3, 1, 4, 2, 6 }
695
};
696

    
697
static const uint8_t btype_vlc_syms[BTYPE_VLC_SIZE] = {
698
 0, 1, 4, 5, 10, 7, PBTYPE_ESCAPE
699
};
700

    
701
/** reverse of btype_vlc_syms */
702
static const uint8_t block_num_to_btype_vlc_num[12] = {
703
 0, 1, 0, 0, 2, 3, 0, 5, 0, 0, 4, 0
704
};
705
//@}
706
#endif /* AVCODEC_RV40VLC2_H */