209 |
/* two dimensional inverse discrete cosine transform */ |
/* two dimensional inverse discrete cosine transform */ |
210 |
//void j_rev_dct(block) |
//void j_rev_dct(block) |
211 |
//short *block; |
//short *block; |
212 |
void idct_int32(short * const block) |
void |
213 |
|
idct_int32(short *const block) |
214 |
{ |
{ |
215 |
|
|
216 |
// idct_int32_init() must be called before the first call to this function! |
// idct_int32_init() must be called before the first call to this function! |
232 |
for (i=0; i<8; i++) // idct rows |
for (i=0; i<8; i++) // idct rows |
233 |
{ |
{ |
234 |
blk = block+(i<<3); |
blk = block+(i<<3); |
235 |
if (!((X1 = blk[4]<<11) | (X2 = blk[6]) | (X3 = blk[2]) | |
if (! |
236 |
(X4 = blk[1]) | (X5 = blk[7]) | (X6 = blk[5]) | (X7 = blk[3]))) |
((X1 = blk[4] << 11) | (X2 = blk[6]) | (X3 = blk[2]) | (X4 = |
237 |
{ |
blk[1]) | |
238 |
blk[0]=blk[1]=blk[2]=blk[3]=blk[4]=blk[5]=blk[6]=blk[7]=blk[0]<<3; |
(X5 = blk[7]) | (X6 = blk[5]) | (X7 = blk[3]))) { |
239 |
|
blk[0] = blk[1] = blk[2] = blk[3] = blk[4] = blk[5] = blk[6] = |
240 |
|
blk[7] = blk[0] << 3; |
241 |
continue; |
continue; |
242 |
} |
} |
243 |
|
|
289 |
{ |
{ |
290 |
blk = block + i; |
blk = block + i; |
291 |
// shortcut |
// shortcut |
292 |
if (!((X1 = (blk[8*4]<<8)) | (X2 = blk[8*6]) | (X3 = blk[8*2]) | |
if (! |
293 |
(X4 = blk[8*1]) | (X5 = blk[8*7]) | (X6 = blk[8*5]) | (X7 = blk[8*3]))) |
((X1 = (blk[8 * 4] << 8)) | (X2 = blk[8 * 6]) | (X3 = |
294 |
{ |
blk[8 * |
295 |
|
2]) | (X4 = |
296 |
|
blk[8 * |
297 |
|
1]) |
298 |
|
| (X5 = blk[8 * 7]) | (X6 = blk[8 * 5]) | (X7 = blk[8 * 3]))) { |
299 |
blk[8*0]=blk[8*1]=blk[8*2]=blk[8*3]=blk[8*4]= |
blk[8*0]=blk[8*1]=blk[8*2]=blk[8*3]=blk[8*4]= |
300 |
blk[8*5]=blk[8*6]=blk[8*7]=iclp[(blk[8*0]+32)>>6]; |
blk[8 * 5] = blk[8 * 6] = blk[8 * 7] = |
301 |
|
iclp[(blk[8 * 0] + 32) >> 6]; |
302 |
continue; |
continue; |
303 |
} |
} |
304 |
|
|
347 |
|
|
348 |
//void |
//void |
349 |
//idct_int32_init() |
//idct_int32_init() |
350 |
void idct_int32_init() |
void |
351 |
|
idct_int32_init() |
352 |
{ |
{ |
353 |
int i; |
int i; |
354 |
|
|