📄 wmv9_filters.h
字号:
/* <LIC_AMD_STD> * Copyright (C) 2003-2005 Advanced Micro Devices, Inc. All Rights Reserved. * * Unless otherwise designated in writing, this software and any related * documentation are the confidential proprietary information of AMD. * THESE MATERIALS ARE PROVIDED "AS IS" WITHOUT ANY * UNLESS OTHERWISE NOTED IN WRITING, EXPRESS OR IMPLIED WARRANTY OF ANY * KIND, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, * NONINFRINGEMENT, TITLE, FITNESS FOR ANY PARTICULAR PURPOSE AND IN NO * EVENT SHALL AMD OR ITS LICENSORS BE LIABLE FOR ANY DAMAGES WHATSOEVER. * * AMD does not assume any responsibility for any errors which may appear * in the Materials nor any responsibility to support or update the * Materials. AMD retains the right to modify the Materials at any time, * without notice, and is not obligated to provide such modified * Materials to you. AMD is not obligated to furnish, support, or make * any further information available to you. * </LIC_AMD_STD> *//* <CTL_AMD_STD> * File Id and RCS Info: * $Source: /home/cvs/travis/mae/env/wmv9_filters.h,v $ * $Id: wmv9_filters.h,v 1.15 2004/06/17 16:09:42 eswartz Exp $ * </CTL_AMD_STD> *//* <DOC_AMD_STD> * </DOC_AMD_STD> */#ifndef _wmv9_filters_h__#define _wmv9_filters_h__#include "mae_fe.h"// The below defines are the same in the WMV9 reference code.// So, lets define these only if they aren't already defined#ifndef __WMVDEC_API_H_#ifdef WINNT_ONLY typedef unsigned __int64 U64_WMV; typedef signed __int64 I64_WMV;#else typedef unsigned long long U64_WMV; typedef signed long long I64_WMV;#endiftypedef unsigned short U16_WMV;typedef unsigned char U8_WMV;typedef signed int I32_WMV;typedef signed short I16_WMV;typedef signed char I8_WMV;typedef signed long Bool_WMV;#endiftypedef unsigned int MAE_U32_WMV;enum { MAE_MB_1MV, MAE_MB_4MV, MAE_MB_FIELD };enum {MAE_XFORMMODE_8x8, MAE_XFORMMODE_8x4, MAE_XFORMMODE_4x8, MAE_XFORMMODE_MBSWITCH /*pseudo-mode*/, MAE_XFORMMODE_4x4};#define MAE_NUM_BLOCKS 8typedef struct { I8_WMV chFlag[6];} MAE_LOOPF_FLAG;typedef enum MAE_tagFrameType_WMV{// IFRAME_WMV = 0,// PFRAME_WMV MAE_IVOP = 0, MAE_PVOP, MAE_BVOP, MAE_SPRITE} MAE_tFrameType_WMV;typedef struct MAE_tagCWMVMBMode // MacroBlock Mode{ U8_WMV m_rgbCodedBlockPattern2 [MAE_NUM_BLOCKS]; // =0 if block is all 0s, =1 if any non-zero data I8_WMV m_rgcBlockXformMode [MAE_NUM_BLOCKS]; // Transform type for each block: 8x8, 8x4, 4x8, or 4x4 I8_WMV m_chMBMode; // Has something to do with MBMode ??????????????????????} MAE_CWMVMBMode;typedef struct MAE_tagWMVDecInternalMember{ MAE_U32_WMV m_uintNumMBX; // Width in MBs MAE_U32_WMV m_uintNumMBY; // Height in MBs I32_WMV m_iWidthPrevY, m_iWidthPrevUV; // Width in pixels I32_WMV m_iMBSizeXWidthPrevY; // MB size (16) * width of Y-Plane, for accessing MB data I32_WMV m_iBlkSizeXWidthPrevUV; // MB size (16) * width of Y-Plane, for accessing MB data I16_WMV *m_pXMotion, *m_pXMotionC; // ???????????? I16_WMV *m_pYMotion, *m_pYMotionC; // ???????????? I16_WMV *m_pIntraBlockRow0[3], *m_pIntraMBRowU0[2], *m_pIntraMBRowV0[2]; // Temp for MB rows I16_WMV *m_pIntraBlockRow1[4], *m_pIntraMBRowU1[3], *m_pIntraMBRowV1[3]; MAE_U32_WMV m_uiNumProcessors; // number of processors I32_WMV m_iWidthY; // Width in pixels ??????????????? I32_WMV m_iWidthUV; // Width in pixels ??????????????? I32_WMV m_iStepSize; // pquant MAE_LOOPF_FLAG * m_pLoopFilterFlags; // Flags used for filters MAE_tFrameType_WMV m_tFrmType; // ???????? IVOP, PVOP, BVOP ??????????????? I32_WMV m_iBetaRTMMismatchIndex; // ??????????????????? MAE_CWMVMBMode* m_rgmbmd; // pointer to current MB of CWMVMBMode U8_WMV *m_puchFilter8x8RowFlagY0; U8_WMV *m_puchFilter8x4RowFlagY0; U8_WMV *m_puchFilter8x8RowFlagU0; U8_WMV *m_puchFilter8x4RowFlagU0; U8_WMV *m_puchFilter8x8RowFlagV0; U8_WMV *m_puchFilter8x4RowFlagV0; U8_WMV *m_puchFilter8x8ColFlagY0; U8_WMV *m_puchFilter4x8ColFlagY0; U8_WMV *m_puchFilter8x8ColFlagU0; U8_WMV *m_puchFilter4x8ColFlagU0; U8_WMV *m_puchFilter8x8ColFlagV0; U8_WMV *m_puchFilter4x8ColFlagV0; // MAE specific Bool_WMV s_middle_edge_hack; Bool_WMV s_blk3_hack; Bool_WMV s_1MB_blk0_hack; Bool_WMV s_4x4_hack; } MAE_tWMVDecInternalMember;I32_WMV mae_min(I32_WMV in1, I32_WMV in2);void MAE_SetFilterStruct(MAE_tWMVDecInternalMember * MAE_pWMVDec, mae_fe_config *cfg, mae_fe_mb *mb);void MAE_OverlapMBRow (MAE_tWMVDecInternalMember * MAE_pWMVDec, I32_WMV imbY, U8_WMV *ppxliRecnY, U8_WMV *ppxliRecnU, U8_WMV *ppxliRecnV, I32_WMV iMBYEnd, I32_WMV iMBYStart, I32_WMV iThreadID);void MAE_g_OverlapBlockVerticalEdge (I16_WMV *pInOut, I32_WMV iStride);void MAE_g_OverlapBlockHorizontalEdge ( I16_WMV *pSrcTop, I16_WMV *pSrcCurr, I32_WMV iSrcStride, U8_WMV *pDst, I32_WMV iDstStride, Bool_WMV bTop, Bool_WMV bCurrent, Bool_WMV bWindup);void MAE_DeblockSLFrame_V9 (MAE_tWMVDecInternalMember *MAE_pWMVDec, U8_WMV* ppxliCurrY, U8_WMV* ppxliCurrU, U8_WMV* ppxliCurrV, U8_WMV* puchFilter8x8RowFlagY, U8_WMV* puchFilter8x8RowFlagU, U8_WMV* puchFilter8x8RowFlagV, U8_WMV* puchFilter8x4RowFlagY, U8_WMV* puchFilter8x4RowFlagU, U8_WMV* puchFilter8x4RowFlagV, U8_WMV* puchFilter8x8ColFlagY, U8_WMV* puchFilter8x8ColFlagU, U8_WMV* puchFilter8x8ColFlagV, U8_WMV* puchFilter4x8ColFlagY, U8_WMV* puchFilter4x8ColFlagU, U8_WMV* puchFilter4x8ColFlagV, MAE_LOOPF_FLAG* pLoopFilterFlag, MAE_U32_WMV uiMBStart, MAE_U32_WMV uiMBEnd);void MAE_GenerateRowLoopFilterFlags (MAE_tWMVDecInternalMember *MAE_pWMVDec, U8_WMV* puchFilterRowFlagY, U8_WMV* puchFilterRowFlagU, U8_WMV* puchFilterRowFlagV, U8_WMV* puchFilterRowFlagY2, U8_WMV* puchFilterRowFlagU2, U8_WMV* puchFilterRowFlagV2, MAE_LOOPF_FLAG* pLoopFilterFlag, I32_WMV iMBYStart, I32_WMV iMBYEnd, Bool_WMV bFirstRow);void MAE_GenerateColumnLoopFilterFlags (MAE_tWMVDecInternalMember *MAE_pWMVDec, U8_WMV* puchFilterColFlagY, U8_WMV* puchFilterColFlagU, U8_WMV* puchFilterColFlagV, U8_WMV* puchFilterColFlagY2, U8_WMV* puchFilterColFlagU2, U8_WMV* puchFilterColFlagV2, MAE_LOOPF_FLAG* pLoopFilterFlag, I32_WMV iMBHeight);void MAE_DeblockRows (MAE_tWMVDecInternalMember *MAE_pWMVDec, U8_WMV* ppxliY, U8_WMV* ppxliU, U8_WMV* ppxliV, I32_WMV iNumRows, U8_WMV* puchFilterFlagY, U8_WMV* puchFilterFlagU, U8_WMV* puchFilterFlagV);void MAE_DeblockColumns (MAE_tWMVDecInternalMember *MAE_pWMVDec, U8_WMV* ppxliY, U8_WMV* ppxliU, U8_WMV* ppxliV, I32_WMV iNumCols, I32_WMV iHeight, U8_WMV* puchFilterFlagY, U8_WMV* puchFilterFlagU, U8_WMV* puchFilterFlagV);void MAE_FilterRow (MAE_tWMVDecInternalMember *MAE_pWMVDec, U8_WMV* pRow, U8_WMV uchBitField, I32_WMV iPitch, I32_WMV iStepSize);void MAE_FilterColumn (MAE_tWMVDecInternalMember *MAE_pWMVDec, U8_WMV* pCol, U8_WMV uchBitField, I32_WMV iPitch, I32_WMV iStepSize);void MAE_g_FilterHorizontalEdgeV9(U8_WMV* pV5, I32_WMV iPixelDistance, I32_WMV iStepSize, I32_WMV iNumPixel);void MAE_g_FilterVerticalEdgeV9 (U8_WMV* pVhstart, I32_WMV iPixelDistance, I32_WMV iStepSize, I32_WMV iNumPixel);void MAE_ComputeLoopFilterFlags(MAE_tWMVDecInternalMember *MAE_pWMVDec);void MAE_ComputeMBLoopFilterFlags (MAE_tWMVDecInternalMember *MAE_pWMVDec, I32_WMV iMBX, I32_WMV iMBY, I8_WMV chMBMode, I8_WMV* pBlockXformMode, I8_WMV* pBlockXformModeTop, I8_WMV* pBlockXformModeLeft, U8_WMV *pCBPCurr, U8_WMV *pCBPTop, U8_WMV *pCBPLeft, Bool_WMV bTop, Bool_WMV bLeft);void MAE_DeblockSLFrame (MAE_tWMVDecInternalMember *MAE_pWMVDec, U8_WMV* ppxliY, U8_WMV* ppxliU, U8_WMV* ppxliV, Bool_WMV bMultiThread, MAE_U32_WMV iThreadID, I32_WMV iMBStartX, I32_WMV iMBEndX, I32_WMV iMBStartY, I32_WMV iMBEndY);void MAE_FilterEdgeShortTagMBRow(MAE_tWMVDecInternalMember *MAE_pWMVDec, U8_WMV* ppxlcCenter, I32_WMV iPixelDistance, I32_WMV iStepSize, I32_WMV iMBsPerRow, Bool_WMV bFirst, Bool_WMV bLast);void MAE_FilterEdgeShortTagBlockRow(MAE_tWMVDecInternalMember *MAE_pWMVDec, U8_WMV* ppxlcCenter, I32_WMV iPixelDistance, I32_WMV iStepSize, I32_WMV iBlocksPerRow, Bool_WMV bFirst, Bool_WMV bLast);void MAE_g_FilterHorizontalEdge_WMV(U8_WMV* pV5, I32_WMV iPixelDistance, I32_WMV iStepSize, I32_WMV iNumPixel);void MAE_g_FilterVerticalEdge_WMV(U8_WMV* pVhstart, I32_WMV iPixelDistance, I32_WMV iStepSize, I32_WMV iNumPixel);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -