OMXResult omxVCM4P10_DeblockLuma_I( OMX_U8* pSrcDst, OMX_S32 srcdstStep, const OMX_U8* pAlpha, const OMX_U8* pBeta, const OMX_U8* pThresholds, const OMX_U8 *pBS ) { OMXResult errorCode; armRetArgErrIf(pSrcDst == NULL, OMX_Sts_BadArgErr); armRetArgErrIf(armNot8ByteAligned(pSrcDst), OMX_Sts_BadArgErr); armRetArgErrIf(srcdstStep & 7, OMX_Sts_BadArgErr); armRetArgErrIf(pAlpha == NULL, OMX_Sts_BadArgErr); armRetArgErrIf(pBeta == NULL, OMX_Sts_BadArgErr); armRetArgErrIf(pThresholds == NULL, OMX_Sts_BadArgErr); armRetArgErrIf(armNot4ByteAligned(pThresholds), OMX_Sts_BadArgErr); armRetArgErrIf(pBS == NULL, OMX_Sts_BadArgErr); armRetArgErrIf(armNot4ByteAligned(pBS), OMX_Sts_BadArgErr); errorCode = omxVCM4P10_FilterDeblockingLuma_VerEdge_I( pSrcDst, srcdstStep, pAlpha, pBeta, pThresholds, pBS); armRetArgErrIf(errorCode != OMX_Sts_NoErr, errorCode) errorCode = omxVCM4P10_FilterDeblockingLuma_HorEdge_I( pSrcDst, srcdstStep, pAlpha+2, pBeta+2, pThresholds+16, pBS+16); return errorCode; }
OMXResult omxVCM4P10_DequantTransformResidualFromPairAndAdd( const OMX_U8 **ppSrc, const OMX_U8 *pPred, const OMX_S16 *pDC, OMX_U8 *pDst, OMX_INT predStep, OMX_INT dstStep, OMX_INT QP, OMX_INT AC ) { OMX_S16 pBuffer[16+4]; OMX_S16 *pDelta; int i,x,y; armRetArgErrIf(pPred == NULL, OMX_Sts_BadArgErr); armRetArgErrIf(armNot4ByteAligned(pPred),OMX_Sts_BadArgErr); armRetArgErrIf(pDst == NULL, OMX_Sts_BadArgErr); armRetArgErrIf(armNot4ByteAligned(pDst), OMX_Sts_BadArgErr); armRetArgErrIf(predStep & 3, OMX_Sts_BadArgErr); armRetArgErrIf(dstStep & 3, OMX_Sts_BadArgErr); armRetArgErrIf(AC!=0 && (QP<0), OMX_Sts_BadArgErr); armRetArgErrIf(AC!=0 && (QP>51), OMX_Sts_BadArgErr); armRetArgErrIf(AC!=0 && ppSrc==NULL, OMX_Sts_BadArgErr); armRetArgErrIf(AC!=0 && *ppSrc==NULL, OMX_Sts_BadArgErr); armRetArgErrIf(AC==0 && pDC==NULL, OMX_Sts_BadArgErr); pDelta = armAlignTo8Bytes(pBuffer); for (i=0; i<16; i++) { pDelta[i] = 0; } if (AC) { armVCM4P10_UnpackBlock4x4(ppSrc, pDelta); DequantLumaAC4x4(pDelta, QP); } if (pDC) { pDelta[0] = pDC[0]; } armVCM4P10_TransformResidual4x4(pDelta,pDelta); for (y=0; y<4; y++) { for (x=0; x<4; x++) { pDst[y*dstStep+x] = (OMX_U8)armClip(0,255,pPred[y*predStep+x] + pDelta[4*y+x]); } } return OMX_Sts_NoErr; }
OMXResult omxVCM4P10_TransformDequantChromaDCFromPair( const OMX_U8 **ppSrc, OMX_S16* pDst, OMX_INT QP ) { armRetArgErrIf(ppSrc == NULL, OMX_Sts_BadArgErr); armRetArgErrIf(*ppSrc == NULL, OMX_Sts_BadArgErr); armRetArgErrIf(pDst == NULL, OMX_Sts_BadArgErr); armRetArgErrIf(armNot4ByteAligned(pDst), OMX_Sts_BadArgErr); armRetArgErrIf(QP<0, OMX_Sts_BadArgErr); armRetArgErrIf(QP>51, OMX_Sts_BadArgErr); armVCM4P10_UnpackBlock2x2(ppSrc, pDst); InvTransformDC2x2(pDst); DequantChromaDC2x2(pDst, QP); return OMX_Sts_NoErr; }