1bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/* ///////////////////////////////////////////////////////////////////////
2bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//
3bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//               INTEL CORPORATION PROPRIETARY INFORMATION
4bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//  This software is supplied under the terms of a license agreement or
5bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//  nondisclosure agreement with Intel Corporation and may not be copied
6bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//  or disclosed except in accordance with the terms of that agreement.
7bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//        Copyright (c) 2008 Intel Corporation. All Rights Reserved.
8bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//
9bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//  Description: Contains tables for VLC decoding of syntax elements in simple
10bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//  or main profile of VC-1 bitstream.
11bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee//
12bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee*/
13bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
14bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#include "vc1parse.h"
15bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
16bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeconst uint8_t VC1_MVMODE_LOW_TBL[] =
17bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
18bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VC1_MVMODE_HPELBI_1MV,
19bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VC1_MVMODE_1MV,
20bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VC1_MVMODE_HPEL_1MV,
21bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VC1_MVMODE_MIXED_MV,
22bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VC1_MVMODE_INTENSCOMP
23bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee};
24bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
25bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeconst uint8_t VC1_MVMODE_HIGH_TBL[] =
26bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
27bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VC1_MVMODE_1MV,
28bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VC1_MVMODE_MIXED_MV,
29bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VC1_MVMODE_HPEL_1MV,
30bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VC1_MVMODE_HPELBI_1MV,
31bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    VC1_MVMODE_INTENSCOMP
32bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee};
33bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
34bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeconst int32_t VC1_BITPLANE_IMODE_TBL[] =
35bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
36bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 4, /* max bits */
37bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 1, /* total subtables */
38bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 4, /* subtable sizes */
39bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
40bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 0, /* 1-bit codes */
41bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 2, /* 2-bit codes */
42bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    2, VC1_BITPLANE_NORM2_MODE,
43bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    3, VC1_BITPLANE_NORM6_MODE,
44bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 3, /* 3-bit codes */
45bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    1, VC1_BITPLANE_DIFF2_MODE,
46bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    2, VC1_BITPLANE_ROWSKIP_MODE,
47bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    3, VC1_BITPLANE_COLSKIP_MODE,
48bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 2, /* 4-bit codes */
49bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    0, VC1_BITPLANE_RAW_MODE,
50bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    1, VC1_BITPLANE_DIFF6_MODE,
51bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee-1
52bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee};
53bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
54bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/* This VLC table is used for decoding of k in bitplane. */
55bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeconst int32_t VC1_BITPLANE_K_TBL[] =
56bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
57bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 13, /* max bits */
58bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 2,  /* total subtables */
59bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 6,7,/* subtable sizes */
60bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
61bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 1, /* 1-bit codes */
62bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    1,       0 ,
63bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 0, /* 2-bit codes */
64bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 0, /* 3-bit codes */
65bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 6, /* 4-bit codes */
66bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    2, 1,    3, 2,     4, 4,    5, 8,
67bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    6, 16,   7, 32,
68bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 0, /* 5-bit codes */
69bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 1, /* 6-bit codes */
70bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 1)| 1,     63,
71bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 0, /* 7-bit codes */
72bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 15, /* 8-bit codes */
73bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    0, 3,    1, 5,    2, 6,    3, 9,
74bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    4, 10,   5, 12,   6, 17,   7, 18,
75bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    8, 20,   9, 24,   10, 33,  11, 34,
76bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    12, 36,  13, 40,  14, 48,
77bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 6, /* 9-bit codes */
78bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 4)| 7,    31,
79bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 4)| 6,    47,
80bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 4)| 5,    55,
81bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 4)| 4,    59,
82bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
83bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 4)| 3,    61,
84bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 4)| 2,    62,
85bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 20, /* 10-bit codes */
86bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 11,  11,
87bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)|  7,  7 ,
88bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 13,  13,
89bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 14,  14,
90bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
91bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 19,  19,
92bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 21,  21,
93bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 22,  22,
94bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 25,  25,
95bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
96bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 26,  26,
97bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 28,  28,
98bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)|  3,  35,
99bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)|  5,  37,
100bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
101bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)|  6,  38,
102bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)|  9,  41,
103bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 10,  42,
104bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 12,  44,
105bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
106bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 17,  49,
107bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 18,  50,
108bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 20,  52,
109bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (1 << 6)| 24,  56,
110bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 0,  /* 11-bit codes */
111bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 0,  /* 12-bit codes */
112bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 15, /* 13-bit codes */
113bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)| 14,  15,
114bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)| 13,  23,
115bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)| 12,  27,
116bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)| 11,  29,
117bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
118bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)| 10,  30,
119bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)|  9,  39,
120bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)|  8,  43,
121bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)|  7,  45,
122bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
123bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)|  6,  46,
124bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)|  5,  51,
125bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)|  4,  53,
126bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)|  3,  54,
127bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
128bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)|  2,  57,
129bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)|  1,  58,
130bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    (3 << 8)|  0,  60,
131bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    -1
132bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee};
133bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
134bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/* This VLC table is used for decoding of BFRACTION. */
135bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeconst int32_t VC1_BFRACTION_TBL[] =
136bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
137bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 7,        /* max bits */
138bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 2,        /* total subtables */
139bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 3,4,    /* subtable sizes */
140bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 0,        /* 1-bit codes */
141bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 0,        /* 2-bit codes */
142bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 7,        /* 3-bit codes */
143bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    0x00,1,2,    0x01,1,3,    0x02,2,3,    0x03,1,4,
144bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    0x04,3,4,    0x05,1,5,    0x06,2,5,
145bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 0,        /* 4-bit codes */
146bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 0,        /* 5-bit codes */
147bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 0,        /* 6-bit codes */
148bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee 16,    /* 7-bit codes */
149bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    0x70, 3,5,    0x71, 4,5,    0x72, 1,6,    0x73, 5,6,
150bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    0x74, 1,7,    0x75, 2,7,    0x76, 3,7,    0x77, 4,7,
151bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    0x78, 5,7,    0x79, 6,7,    0x7A, 1,8,    0x7B, 3,8,
152bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    0x7C, 5,8,    0x7D, 7,8,
153bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    0x7E, VC1_BFRACTION_INVALID,VC1_BFRACTION_INVALID,
154bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    0x7F, VC1_BFRACTION_BI, VC1_BFRACTION_BI,
155bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
156bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    -1
157bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee};
158bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
159bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/* This table is used for VLC decoding of REFDIST. */
160bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeconst int32_t VC1_REFDIST_TBL[] =
161bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
162bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    16, /* Max bits. */
163bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     3, /* Total sub-tables. */
164bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee         5, 6, 5, /* Sub-table sizes. */
165bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
166bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     0, /* 1-bit codes. */
167bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     3, /* 2-bit codes. */
168bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee            0,  0,       1,  1,       2,  2,
169bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 3-bit codes. */
170bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee            6,  3,
171bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 4-bit codes. */
172bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee           14,  4,
173bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 5-bit codes. */
174bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee           30,  5,
175bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 6-bit codes. */
176bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee           62,  6,
177bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 7-bit codes. */
178bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee          126,  7,
179bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 8-bit codes. */
180bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee          254,  8,
181bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 9-bit codes. */
182bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee          510,  9,
183bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 10-bit codes. */
184bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee         1022, 10,
185bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 11-bit codes. */
186bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee         2046, 11,
187bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 12-bit codes. */
188bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee         4094, 12,
189bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 13-bit codes. */
190bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee         8190, 13,
191bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 14-bit codes. */
192bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee        16382, 14,
193bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 15-bit codes. */
194bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee        32766, 15,
195bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     1, /* 16-bit codes. */
196bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee        65534, 16,
197bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    -1  /* end of table. */
198bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee};
199