www.pudn.com > AVS.rar > loopfilter.h


/************************************************************************* 
 AVS1-P2视频解码器源码 
 版权所有:联合信源数字音视频技术(北京)有限公司, (c) 2005-2006  
 
 AVS1-P2 Video Decoder Source Code 
 (c) Copyright, NSCC All Rights Reserved, 2005-2006 
 ************************************************************************* 
 Distributed under the terms of the GNU General Public License as 
 published by the Free Software Foundation; either version 2 of the 
 License, or (at your option) any later version. 
 
 This program is distributed in the hope that it will be useful, 
 but WITHOUT ANY WARRANTY; without even the implied warranty of 
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 GNU General Public License for more details. 
 
 You should have received a copy of the GNU General Public License 
 along with this program; if not, write to the Free Software 
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
*************************************************************************/ 
/************************************************************************* 
  文件名称:	loopfilter.h 
  描    述: loopfilter.cpp 的申明文件 
*************************************************************************/ 
/************************************************************************* 
  Revision History 
  data          Modification                                    Author 
  2005-4-6      Created                                          jthou 
 *************************************************************************/ 
#ifndef _LOOPFILTER_H_ 
#define _LOOPFILTER_H_ 
#include "define.h" 
//const table ------------------------------------ 
static const byte ALPHA_TABLE[64] =  
{ 
   0,  0,  0,  0,  0,  0,  1,  1, 
   1,  1,  1,  2,  2,  2,  3,  3, 
   4,  4,  5,  5,  6,  7,  8,  9, 
  10, 11, 12, 13, 15, 16, 18, 20, 
  22, 24, 26, 28, 30, 33, 33, 35, 
  35, 36, 37, 37, 39, 39, 42, 44, 
  46, 48, 50, 52, 53, 54, 55, 56, 
  57, 58, 59, 60, 61, 62, 63, 64 
}; 
 
static const byte BETA_TABLE[64] =  
{ 
   0,  0,  0,  0,  0,  0,  1,  1, 
   1,  1,  1,  1,  1,  2,  2,  2, 
   2,  2,  3,  3,  3,  3,  4,  4, 
   4,  4,  5,  5,  5,  5,  6,  6, 
   6,  7,  7,  7,  8,  8,  8,  9, 
   9, 10, 10, 11, 11, 12, 13, 14, 
  15, 16, 17, 18, 19, 20, 21, 22, 
  23, 23, 24, 24, 25, 25, 26, 27 
}; 
 
static const byte CLIP_TABLE[64] =  
{ 
  0, 0, 0, 0, 0, 0, 0, 0, 
  0, 0, 0, 0, 0, 0, 0, 0, 
  1, 1, 1, 1, 1, 1, 1, 1,  
  1, 1, 1, 1, 1, 1, 2, 2, 
  2, 2, 2, 2, 2, 2, 3, 3, 
  3, 3, 3, 3, 3, 4, 4, 4, 
  5, 5, 5, 6, 6, 6, 7, 7, 
  7, 7, 8, 8, 8, 9, 9, 9 
}; 
 
//functions------------------------------------------ 
void DeblockMb_BsV00_Luma(AVS_INT Bs, MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, AVS_INT iImgType, AVS_INT iAlphaOffset, AVS_INT iBetaOffset, AVS_BYTE* pImgData, AVS_INT iStride); 
void DeblockMb_BsV10_Luma(AVS_INT Bs, MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, AVS_INT iImgType, AVS_INT iAlphaOffset, AVS_INT iBetaOffset, AVS_BYTE* pImgData, AVS_INT iStride); 
void DeblockMb_BsV01_Luma(AVS_INT Bs, MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, AVS_INT iImgType, AVS_INT iAlphaOffset, AVS_INT iBetaOffset, AVS_BYTE* pImgData, AVS_INT iStride); 
void DeblockMb_BsV11_Luma(AVS_INT Bs, MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, AVS_INT iImgType, AVS_INT iAlphaOffset, AVS_INT iBetaOffset, AVS_BYTE* pImgData, AVS_INT iStride); 
void DeblockMb_BsH00_Luma(AVS_INT Bs, MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, AVS_INT iImgType, AVS_INT iAlphaOffset, AVS_INT iBetaOffset, AVS_BYTE* pImgData, AVS_INT iStride); 
void DeblockMb_BsH01_Luma(AVS_INT Bs, MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, AVS_INT iImgType, AVS_INT iAlphaOffset, AVS_INT iBetaOffset, AVS_BYTE* pImgData, AVS_INT iStride); 
void DeblockMb_BsH10_Luma(AVS_INT Bs, MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, AVS_INT iImgType, AVS_INT iAlphaOffset, AVS_INT iBetaOffset, AVS_BYTE* pImgData, AVS_INT iStride); 
void DeblockMb_BsH11_Luma(AVS_INT Bs, MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, AVS_INT iImgType, AVS_INT iAlphaOffset, AVS_INT iBetaOffset, AVS_BYTE* pImgData, AVS_INT iStride); 
void DeblockMb_BsV00_Chroma(AVS_INT Bs, MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, AVS_INT iImgType, AVS_INT iAlphaOffset, AVS_INT iBetaOffset, AVS_BYTE* pImgData, AVS_INT iStride); 
void DeblockMb_BsV10_Chroma(AVS_INT Bs, MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, AVS_INT iImgType, AVS_INT iAlphaOffset, AVS_INT iBetaOffset, AVS_BYTE* pImgData, AVS_INT iStride); 
void DeblockMb_BsH00_Chroma(AVS_INT Bs, MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, AVS_INT iImgType, AVS_INT iAlphaOffset, AVS_INT iBetaOffset, AVS_BYTE* pImgData, AVS_INT iStride); 
void DeblockMb_BsH01_Chroma(AVS_INT Bs, MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, AVS_INT iImgType, AVS_INT iAlphaOffset, AVS_INT iBetaOffset, AVS_BYTE* pImgData, AVS_INT iStride); 
 
void DeblockOneMacroBlock(MBINFO* pMbInfo, AVS_DWORD dwMbIndex, AVS_DWORD dwMbWidth, STREAMINFO* pStrmInfo, VIDEODATA* pCurrVD); 
 
#endif