#ifndef WELS_DEBLOCKING_H__
#define WELS_DEBLOCKING_H__
#include "decoder_context.h"
#include "deblocking_common.h"
namespace WelsDec {
void DeblockingInit (PDeblockingFunc pDeblockingFunc, int32_t iCpu);
void WelsDeblockingFilterSlice (PWelsDecoderContext pCtx, PDeblockingFilterMbFunc pDeblockMb);
void WelsDeblockingInitFilter (PWelsDecoderContext pCtx, SDeblockingFilter& pFilter, int32_t& iFilterIdc);
void WelsDeblockingFilterMB (PDqLayer pCurDqLayer, SDeblockingFilter& pFilter, int32_t& iFilterIdc,
PDeblockingFilterMbFunc pDeblockMb);
uint32_t DeblockingBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLayer pCurDqLayer, int32_t iEdge,
int32_t iNeighMb, int32_t iMbXy);
uint32_t DeblockingBSliceBsMarginalMBAvcbase (PDqLayer pCurDqLayer, int32_t iEdge, int32_t iNeighMb, int32_t iMbXy);
int32_t DeblockingAvailableNoInterlayer (PDqLayer pCurDqLayer, int32_t iFilterIdc);
void WelsDeblockingMb (PDqLayer pCurDqLayer, PDeblockingFilter pFilter, int32_t iBoundryFlag);
inline int8_t* GetPNzc (PDqLayer pCurDqLayer, int32_t iMbXy) {
if (pCurDqLayer->pDec != NULL && pCurDqLayer->pDec->pNzc != NULL) {
return pCurDqLayer->pDec->pNzc[iMbXy];
}
return pCurDqLayer->pNzc[iMbXy];
}
}
#endif