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