00001 #pragma once
00002
00003
00004
00005 static unsigned char quanttbl[2][64] =
00006 {
00007 {
00008 16,
00009 11, 12,
00010 14, 12, 10,
00011 16, 14, 13, 14,
00012 18, 17, 16, 19, 24,
00013 40, 26, 24, 22, 22, 24,
00014 49, 35, 37, 29, 40, 58, 51,
00015 61, 30, 57, 51, 56, 55, 64, 72,
00016 92, 78, 64, 68, 87, 69, 55,
00017 56, 80, 109, 81, 87, 95,
00018 98, 103, 104, 103, 62,
00019 77, 113, 121, 112,
00020 100, 120, 92,
00021 101, 103,
00022 99
00023 },
00024 {
00025 17,
00026 18, 18,
00027 24, 21, 24,
00028 47, 26, 26, 47,
00029 99, 66, 56, 66, 99,
00030 99, 99, 99, 99, 99, 99,
00031 99, 99, 99, 99, 99, 99, 99,
00032 99, 99, 99, 99, 99, 99, 99, 99,
00033 99, 99, 99, 99, 99, 99, 99,
00034 99, 99, 99, 99, 99, 99,
00035 99, 99, 99, 99, 99,
00036 99, 99, 99, 99,
00037 99, 99, 99,
00038 99, 99,
00039 99
00040 }
00041 };
00042
00043 static unsigned char zigzagU[64] =
00044 {
00045 0,
00046 1, 0,
00047 0, 1, 2,
00048 3, 2, 1, 0,
00049 0, 1, 2, 3, 4,
00050 5, 4, 3, 2, 1, 0,
00051 0, 1, 2, 3, 4, 5, 6,
00052 7, 6, 5, 4, 3, 2, 1, 0,
00053 1, 2, 3, 4, 5, 6, 7,
00054 7, 6, 5, 4, 3, 2,
00055 3, 4, 5, 6, 7,
00056 7, 6, 5, 4,
00057 5, 6, 7,
00058 7, 6,
00059 7,
00060 };
00061
00062 static unsigned char zigzagV[64] =
00063 {
00064 0,
00065 0, 1,
00066 2, 1, 0,
00067 0, 1, 2, 3,
00068 4, 3, 2, 1, 0,
00069 0, 1, 2, 3, 4, 5,
00070 6, 5, 4, 3, 2, 1, 0,
00071 0, 1, 2, 3, 4, 5, 6, 7,
00072 7, 6, 5, 4, 3, 2, 1,
00073 2, 3, 4, 5, 6, 7,
00074 7, 6, 5, 4, 3,
00075 4, 5, 6, 7,
00076 7, 6, 5,
00077 6, 7,
00078 7,
00079 };
00080
00081 static unsigned short DCVLC[2][12] =
00082 {
00083 {0, 2, 3, 4, 5, 6, 14, 30, 62, 126, 254, 510},
00084 {0, 1, 2, 6, 14, 30, 62, 126, 254, 510, 1022, 2046}
00085 };
00086
00087 static unsigned char DCVLC_Size[2][12] =
00088 {
00089 {2, 3, 3, 3, 3, 3, 4, 5, 6, 7, 8, 9},
00090 {2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
00091 };
00092
00093 static unsigned char DCVLC_NumByLength[2][16] =
00094 {
00095 {0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0},
00096 {0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0}
00097 };
00098
00099 static unsigned short ACVLC[2][16][11] =
00100 {
00101 {
00102 {10, 0, 1, 4, 11, 26, 120, 248, 1014, 65410, 65410},
00103 {0, 12, 27, 121, 502, 2038, 65412, 65413, 65414, 65415, 65416},
00104 {0, 28, 249, 1015, 4084, 65417, 65418, 65419, 65420, 65421, 65422},
00105 {0, 58, 503, 8181, 65423, 65424, 65425, 65426, 65427, 65428, 65429},
00106 {0, 59, 1016, 65430, 65431, 65432, 65433, 65434, 65435, 65436, 65437},
00107 {0, 122, 2039, 65438, 65439, 65440, 65441, 65442, 65443, 65444, 65445},
00108 {0, 123, 4086, 65446, 65447, 65448, 65449, 65450, 65451, 65452, 65453},
00109 {0, 250, 4087, 65454, 65455, 65456, 65457, 65458, 65459, 65460, 65461},
00110 {0, 504, 32704, 65462, 65463, 65464, 65465, 65466, 65467, 65468, 65469},
00111 {0, 505, 65470, 65471, 65472, 65473, 65474, 65475, 65476, 65477, 65478},
00112 {0, 506, 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486, 65487},
00113 {0, 1017, 65488, 65489, 65490, 65491, 65492, 65493, 65494, 65495, 65496},
00114 {0, 1018, 65497, 65498, 65499, 65500, 65501, 65502, 65503, 65504, 65505},
00115 {0, 2040, 65506, 65507, 65508, 65509, 65510, 65511, 65512, 65513, 65514},
00116 {0, 65515, 65516, 65517, 65518, 65519, 65520, 65521, 65522, 65523, 65524},
00117 {2041, 65525, 65526, 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534}
00118 },
00119 {
00120 {0, 1, 4, 10, 24, 25, 56, 120, 500, 1014, 4084},
00121 {0, 11, 57, 246, 501, 2038, 4085, 65416, 65417, 65418, 65419},
00122 {0, 26, 247, 1015, 4086, 32706, 65420, 65421, 65422, 65423, 65424},
00123 {0, 27, 248, 1016, 4087, 65425, 65426, 65427, 65428, 65429, 65430},
00124 {0, 58, 502, 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438},
00125 {0, 59, 1017, 65439, 65440, 65441, 65442, 65443, 65444, 65445, 65446},
00126 {0, 121, 2039, 65447, 65448, 65449, 65450, 65451, 65452, 65453, 65454},
00127 {0, 122, 2040, 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462},
00128 {0, 249, 65463, 65464, 65465, 65466, 65467, 65468, 65469, 65470, 65471},
00129 {0, 503, 65472, 65473, 65474, 65475, 65476, 65477, 65478, 65479, 65480},
00130 {0, 504, 65481, 65482, 65483, 65484, 65485, 65486, 65487, 65488, 65489},
00131 {0, 505, 65490, 65491, 65492, 65493, 65494, 65495, 65496, 65497, 65498},
00132 {0, 506, 65499, 65500, 65501, 65502, 65503, 65504, 65505, 65506, 65507},
00133 {0, 2041, 65508, 65509, 65510, 65511, 65512, 65513, 65514, 65515, 65516},
00134 {0, 16352, 65517, 65518, 65519, 65520, 65521, 65522, 65523, 65524, 65525},
00135 {1018, 32707, 65526, 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534}
00136 }
00137 };
00138
00139 static unsigned char ACVLC_Size[2][16][11] =
00140 {
00141 {
00142 {4, 2, 2, 3, 4, 5, 7, 8, 10, 16, 16},
00143 {0, 4, 5, 7, 9, 11, 16, 16, 16, 16, 16},
00144 {0, 5, 8, 10, 12, 16, 16, 16, 16, 16, 16},
00145 {0, 6, 9, 12, 16, 16, 16, 16, 16, 16, 16},
00146 {0, 6, 10, 16, 16, 16, 16, 16, 16, 16, 16},
00147 {0, 7, 11, 16, 16, 16, 16, 16, 16, 16, 16},
00148 {0, 7, 12, 16, 16, 16, 16, 16, 16, 16, 16},
00149 {0, 8, 12, 16, 16, 16, 16, 16, 16, 16, 16},
00150 {0, 9, 15, 16, 16, 16, 16, 16, 16, 16, 16},
00151 {0, 9, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00152 {0, 9, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00153 {0, 10, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00154 {0, 10, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00155 {0, 11, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00156 {0, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00157 {11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16}
00158 },
00159 {
00160 {2, 2, 3, 4, 5, 5, 6, 7, 9, 10, 12},
00161 {0, 4, 6, 8, 9, 11, 12, 16, 16, 16, 16},
00162 {0, 5, 8, 10, 12, 15, 16, 16, 16, 16, 16},
00163 {0, 5, 8, 10, 12, 16, 16, 16, 16, 16, 16},
00164 {0, 6, 9, 16, 16, 16, 16, 16, 16, 16, 16},
00165 {0, 6, 10, 16, 16, 16, 16, 16, 16, 16, 16},
00166 {0, 7, 11, 16, 16, 16, 16, 16, 16, 16, 16},
00167 {0, 7, 11, 16, 16, 16, 16, 16, 16, 16, 16},
00168 {0, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00169 {0, 9, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00170 {0, 9, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00171 {0, 9, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00172 {0, 9, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00173 {0, 11, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00174 {0, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16},
00175 {10, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16}
00176 }
00177 };
00178
00179 static unsigned char ACVLC_NumByLength[2][16] =
00180 {
00181 {0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125},
00182 {0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119}
00183 };
00184
00185 static unsigned char ACVLC_Data[2][162] =
00186 {
00187 {
00188 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,
00189 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,
00190 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xA1, 0x08,
00191 0x23, 0x42, 0xB1, 0xC1, 0x15, 0x52, 0xD1, 0xF0,
00192 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0A, 0x16,
00193 0x17, 0x18, 0x19, 0x1A, 0x25, 0x26, 0x27, 0x28,
00194 0x29, 0x2A, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
00195 0x3A, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
00196 0x4A, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
00197 0x5A, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
00198 0x6A, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
00199 0x7A, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
00200 0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
00201 0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
00202 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6,
00203 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3, 0xC4, 0xC5,
00204 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2, 0xD3, 0xD4,
00205 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xE1, 0xE2,
00206 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA,
00207 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8,
00208 0xF9, 0xFA
00209 },
00210 {
00211 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21,
00212 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,
00213 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91,
00214 0xA1, 0xB1, 0xC1, 0x09, 0x23, 0x33, 0x52, 0xF0,
00215 0x15, 0x62, 0x72, 0xD1, 0x0A, 0x16, 0x24, 0x34,
00216 0xE1, 0x25, 0xF1, 0x17, 0x18, 0x19, 0x1A, 0x26,
00217 0x27, 0x28, 0x29, 0x2A, 0x35, 0x36, 0x37, 0x38,
00218 0x39, 0x3A, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
00219 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
00220 0x59, 0x5A, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
00221 0x69, 0x6A, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
00222 0x79, 0x7A, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
00223 0x88, 0x89, 0x8A, 0x92, 0x93, 0x94, 0x95, 0x96,
00224 0x97, 0x98, 0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5,
00225 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4,
00226 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3,
00227 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2,
00228 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA,
00229 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
00230 0xEA, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8,
00231 0xF9, 0xFA
00232 }
00233 };