159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong/* ------------------------------------------------------------------ 259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * Copyright (C) 1998-2009 PacketVideo 359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * 459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * Licensed under the Apache License, Version 2.0 (the "License"); 559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * you may not use this file except in compliance with the License. 659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * You may obtain a copy of the License at 759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * 859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * http://www.apache.org/licenses/LICENSE-2.0 959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * 1059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * Unless required by applicable law or agreed to in writing, software 1159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * distributed under the License is distributed on an "AS IS" BASIS, 1259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 1359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * express or implied. 1459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * See the License for the specific language governing permissions 1559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * and limitations under the License. 1659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong * ------------------------------------------------------------------- 1759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong */ 1859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#ifndef _DCT_H_ 1959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#define _DCT_H_ 2059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 2159f566c4ec3dfc097ad8163523e522280b27e5c3James Dongconst static Int ColThInter[32] = {0, 0x1C, 0x4C, 0x6C, 0x9C, 0xBC, 0xEC, 0x10C, 2259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 0x13C, 0x15C, 0x18C, 0x1AC, 0x1DC, 0x1FC, 0x22C, 0x24C, 2359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 0x27C, 0x29C, 0x2CC, 0x2EC, 0x31C, 0x33C, 0x36C, 0x38C, 2459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 0x3BC, 0x3DC, 0x40C, 0x42C, 0x45C, 0x47C, 0x4AC, 0x4CC 2559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong }; 2659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 2759f566c4ec3dfc097ad8163523e522280b27e5c3James Dongconst static Int ColThIntra[32] = {0, 0x1C, 0x3C, 0x5C, 0x7C, 0x9C, 0xBC, 0xDC, 2859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 0xFC, 0x11C, 0x13C, 0x15C, 0x17C, 0x19C, 0x1BC, 0x1DC, 2959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 0x1FC, 0x21C, 0x23C, 0x25C, 0x27C, 0x29C, 0x2BC, 0x2DC, 3059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 0x2FC, 0x31C, 0x33C, 0x35C, 0x37C, 0x39C, 0x3BC, 0x3DC 3159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong }; 3259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 3359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong/******************************************************/ 3459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong/********** IDCT part **************************/ 3559f566c4ec3dfc097ad8163523e522280b27e5c3James Dongconst static unsigned char imask[8] = {128, 64, 32, 16, 8, 4, 2, 1}; 3659f566c4ec3dfc097ad8163523e522280b27e5c3James Dongconst static unsigned char mask[8] = {0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe}; 3759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 3859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#define W1 2841 /* 2048*sqrt(2)*cos(1*pi/16) */ 3959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#define W2 2676 /* 2048*sqrt(2)*cos(2*pi/16) */ 4059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#define W3 2408 /* 2048*sqrt(2)*cos(3*pi/16) */ 4159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#define W5 1609 /* 2048*sqrt(2)*cos(5*pi/16) */ 4259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#define W6 1108 /* 2048*sqrt(2)*cos(6*pi/16) */ 4359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#define W7 565 /* 2048*sqrt(2)*cos(7*pi/16) */ 4459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 4559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#ifdef __cplusplus 4659f566c4ec3dfc097ad8163523e522280b27e5c3James Dongextern "C" 4759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong{ 4859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#endif 4959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 5059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong /* Reduced input IDCT */ 5159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_col0(Short *blk); 5259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_col1(Short *blk); 5359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_col2(Short *blk); 5459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_col3(Short *blk); 5559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_col4(Short *blk); 5659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_col0x40(Short *blk); 5759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_col0x20(Short *blk); 5859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_col0x10(Short *blk); 5959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 6059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_rowInter(Short *srce, UChar *rec, Int lx); 6159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0Inter(Short *blk, UChar *rec, Int lx); 6259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row1Inter(Short *blk, UChar *rec, Int lx); 6359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row2Inter(Short *blk, UChar *rec, Int lx); 6459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row3Inter(Short *blk, UChar *rec, Int lx); 6559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row4Inter(Short *blk, UChar *rec, Int lx); 6659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0x40Inter(Short *blk, UChar *rec, Int lx); 6759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0x20Inter(Short *blk, UChar *rec, Int lx); 6859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0x10Inter(Short *blk, UChar *rec, Int lx); 6959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0xCCInter(Short *blk, UChar *rec, Int lx); 7059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_rowIntra(Short *srce, UChar *rec, Int lx); 7159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0Intra(Short *blk, UChar *rec, Int lx); 7259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row1Intra(Short *blk, UChar *rec, Int lx); 7359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row2Intra(Short *blk, UChar *rec, Int lx); 7459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row3Intra(Short *blk, UChar *rec, Int lx); 7559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row4Intra(Short *blk, UChar *rec, Int lx); 7659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0x40Intra(Short *blk, UChar *rec, Int lx); 7759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0x20Intra(Short *blk, UChar *rec, Int lx); 7859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0x10Intra(Short *blk, UChar *rec, Int lx); 7959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0xCCIntra(Short *blk, UChar *rec, Int lx); 8059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_rowzmv(Short *srce, UChar *rec, UChar *prev, Int lx); 8159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0zmv(Short *blk, UChar *rec, UChar *prev, Int lx); 8259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row1zmv(Short *blk, UChar *rec, UChar *prev, Int lx); 8359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row2zmv(Short *blk, UChar *rec, UChar *prev, Int lx); 8459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row3zmv(Short *blk, UChar *rec, UChar *prev, Int lx); 8559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row4zmv(Short *blk, UChar *rec, UChar *prev, Int lx); 8659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0x40zmv(Short *blk, UChar *rec, UChar *prev, Int lx); 8759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0x20zmv(Short *blk, UChar *rec, UChar *prev, Int lx); 8859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0x10zmv(Short *blk, UChar *rec, UChar *prev, Int lx); 8959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void idct_row0xCCzmv(Short *blk, UChar *rec, UChar *prev, Int lx); 9059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 9159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 9259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#ifdef __cplusplus 9359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong} 9459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#endif 9559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 9659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong/* Look-up table mapping to RIDCT from bitmap */ 9759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#ifdef SMALL_DCT 9859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 9959f566c4ec3dfc097ad8163523e522280b27e5c3James Dongstatic void (*const idctcolVCA[16])(Short*) = 10059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong{ 10159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_col0, &idct_col4, &idct_col3, &idct_col4, 10259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_col2, &idct_col4, &idct_col3, &idct_col4, 10359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_col1, &idct_col4, &idct_col3, &idct_col4, 10459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_col2, &idct_col4, &idct_col3, &idct_col4 10559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong}; 10659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 10759f566c4ec3dfc097ad8163523e522280b27e5c3James Dongstatic void (*const idctrowVCAInter[16])(Short*, UChar*, Int) = 10859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong{ 10959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row0Inter, &idct_row4Inter, &idct_row3Inter, &idct_row4Inter, 11059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row2Inter, &idct_row4Inter, &idct_row3Inter, &idct_row4Inter, 11159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row1Inter, &idct_row4Inter, &idct_row3Inter, &idct_row4Inter, 11259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row2Inter, &idct_row4Inter, &idct_row3Inter, &idct_row4Inter 11359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong}; 11459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 11559f566c4ec3dfc097ad8163523e522280b27e5c3James Dongstatic void (*const idctrowVCAzmv[16])(Short*, UChar*, UChar*, Int) = 11659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong{ 11759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row0zmv, &idct_row4zmv, &idct_row3zmv, &idct_row4zmv, 11859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row2zmv, &idct_row4zmv, &idct_row3zmv, &idct_row4zmv, 11959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row1zmv, &idct_row4zmv, &idct_row3zmv, &idct_row4zmv, 12059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row2zmv, &idct_row4zmv, &idct_row3zmv, &idct_row4zmv 12159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong}; 12259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 12359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 12459f566c4ec3dfc097ad8163523e522280b27e5c3James Dongstatic void (*const idctrowVCAIntra[16])(Short*, UChar*, Int) = 12559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong{ 12659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row0Intra, &idct_row4Intra, &idct_row3Intra, &idct_row4Intra, 12759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row2Intra, &idct_row4Intra, &idct_row3Intra, &idct_row4Intra, 12859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row1Intra, &idct_row4Intra, &idct_row3Intra, &idct_row4Intra, 12959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row2Intra, &idct_row4Intra, &idct_row3Intra, &idct_row4Intra 13059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong}; 13159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 13259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#else /* SMALL_DCT */ 13359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 13459f566c4ec3dfc097ad8163523e522280b27e5c3James Dongstatic void (*const idctcolVCA[16])(Short*) = 13559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong{ 13659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_col0, &idct_col0x10, &idct_col0x20, &idct_col4, 13759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_col0x40, &idct_col4, &idct_col3, &idct_col4, 13859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_col1, &idct_col4, &idct_col3, &idct_col4, 13959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_col2, &idct_col4, &idct_col3, &idct_col4 14059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong}; 14159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 14259f566c4ec3dfc097ad8163523e522280b27e5c3James Dongstatic void (*const idctrowVCAInter[16])(Short*, UChar*, Int) = 14359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong{ 14459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row0Inter, &idct_row0x10Inter, &idct_row0x20Inter, &idct_row4Inter, 14559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row0x40Inter, &idct_row4Inter, &idct_row3Inter, &idct_row4Inter, 14659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row1Inter, &idct_row4Inter, &idct_row3Inter, &idct_row4Inter, 14759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row2Inter, &idct_row4Inter, &idct_row3Inter, &idct_row4Inter 14859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong}; 14959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 15059f566c4ec3dfc097ad8163523e522280b27e5c3James Dongstatic void (*const idctrowVCAzmv[16])(Short*, UChar*, UChar*, Int) = 15159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong{ 15259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row0zmv, &idct_row0x10zmv, &idct_row0x20zmv, &idct_row4zmv, 15359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row0x40zmv, &idct_row4zmv, &idct_row3zmv, &idct_row4zmv, 15459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row1zmv, &idct_row4zmv, &idct_row3zmv, &idct_row4zmv, 15559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row2zmv, &idct_row4zmv, &idct_row3zmv, &idct_row4zmv 15659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong}; 15759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 15859f566c4ec3dfc097ad8163523e522280b27e5c3James Dongstatic void (*const idctrowVCAIntra[16])(Short*, UChar*, Int) = 15959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong{ 16059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row0Intra, &idct_row0x10Intra, &idct_row0x20Intra, &idct_row4Intra, 16159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row0x40Intra, &idct_row4Intra, &idct_row3Intra, &idct_row4Intra, 16259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row1Intra, &idct_row4Intra, &idct_row3Intra, &idct_row4Intra, 16359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong &idct_row2Intra, &idct_row4Intra, &idct_row3Intra, &idct_row4Intra 16459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong}; 16559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 16659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#endif /* SMALL_DCT */ 16759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 16859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#ifdef __cplusplus 16959f566c4ec3dfc097ad8163523e522280b27e5c3James Dongextern "C" 17059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong{ 17159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#endif 17259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong /* part in AppVCA_dct.c */ 17359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong//void Block1x1DCTzmv (Short *out,UChar *prev,UChar *cur,UChar *rec,Int lx,Int chroma); 17459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void Block1x1DCTwSub(Short *out, UChar *cur, UChar *prev, Int pitch_chroma); 17559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong void Block1x1DCTIntra(Short *out, UChar *cur, UChar *dummy1, Int pitch_chroma); 17659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong /* This part is in dct_aan.c */ 17759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong Void BlockDCT_AANwSub(Short *out, UChar *cur, UChar *prev, Int pitch_chroma); 17859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong Void Block4x4DCT_AANwSub(Short *out, UChar *cur, UChar *prev, Int pitch_chroma); 17959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong Void Block2x2DCT_AANwSub(Short *out, UChar *cur, UChar *prev, Int pitch_chroma); 18059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong//Void BlockDCT_AANzmv(Short *out,UChar *prev,UChar *cur,UChar *rec,Int ColTh,Int lx,Int chroma); 18159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong//Void Block4x4DCT_AANzmv(Short *out,UChar *prev,UChar *cur,UChar *rec,Int ColTh,Int lx,Int chroma); 18259f566c4ec3dfc097ad8163523e522280b27e5c3James Dong//Void Block2x2DCT_AANzmv(Short *out,UChar *prev,UChar *cur,UChar *rec,Int ColTh,Int lx,Int chroma); 18359f566c4ec3dfc097ad8163523e522280b27e5c3James Dong Void BlockDCT_AANIntra(Short *out, UChar *cur, UChar *dummy1, Int pitch_chroma); 18459f566c4ec3dfc097ad8163523e522280b27e5c3James Dong Void Block4x4DCT_AANIntra(Short *out, UChar *cur, UChar *dummy1, Int pitch_chroma); 18559f566c4ec3dfc097ad8163523e522280b27e5c3James Dong Void Block2x2DCT_AANIntra(Short *out, UChar *cur, UChar *dummy1, Int pitch_chroma); 18659f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 18759f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#ifdef __cplusplus 18859f566c4ec3dfc097ad8163523e522280b27e5c3James Dong} 18959f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#endif 19059f566c4ec3dfc097ad8163523e522280b27e5c3James Dong 19159f566c4ec3dfc097ad8163523e522280b27e5c3James Dong#endif //_DCT_H_ 192