⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 omxvcm4p10_invtransformresidualandadd.c

📁 The OpenMAX DL (Development Layer) APIs contain a comprehensive set of audio, video, signal processi
💻 C
字号:
/** *  * File Name:  omxVCM4P10_InvTransformResidualAndAdd.c * OpenMAX DL: v1.0.2 * Revision:   10586 * Date:       Wednesday, March 5, 2008 *  * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. *  *  * Description: * This function will inverse integer 4x4 transform *  */#include "omxtypes.h"#include "armOMX.h"#include "omxVC.h"#include "armCOMM.h"#include "armVC.h"/** * Function:  omxVCM4P10_InvTransformResidualAndAdd   (6.3.5.7.1) * * Description: * This function performs inverse an 4x4 integer transformation to produce  * the difference signal and then adds the difference to the prediction to get  * the reconstructed signal.  * * Input Arguments: *    *   pSrcPred - Pointer to prediction signal.  4-byte alignment required.  *   pDequantCoeff - Pointer to the transformed coefficients.  8-byte  *            alignment required.  *   iSrcPredStep - Step of the prediction buffer; must be a multiple of 4.  *   iDstReconStep - Step of the destination reconstruction buffer; must be a  *            multiple of 4.  *   bAC - Indicate whether there is AC coefficients in the coefficients  *            matrix.  * * Output Arguments: *    *   pDstRecon -Pointer to the destination reconstruction buffer.  4-byte  *            alignment required.  * * Return Value: *     *    OMX_Sts_NoErr - no error  *    OMX_Sts_BadArgErr - bad arguments; returned if any of the following  *              conditions are true:  *    -    at least one of the following pointers is NULL:  *            pSrcPred, pDequantCoeff, pDstRecon  *    -    pSrcPred is not aligned on a 4-byte boundary  *    -    iSrcPredStep or iDstReconStep is not a multiple of 4.  *    -    pDequantCoeff is not aligned on an 8-byte boundary  * */OMXResult omxVCM4P10_InvTransformResidualAndAdd(	const OMX_U8* 	pSrcPred, 	const OMX_S16* 	pDequantCoeff, 	OMX_U8* 	pDstRecon,	OMX_U32 	iSrcPredStep, 	OMX_U32		iDstReconStep, 	OMX_U8		bAC){    OMX_INT     i, j;    OMX_S16     In[16], Out[16];    OMX_S32     Value;    /* check for argument error */    armRetArgErrIf(pSrcPred == NULL, OMX_Sts_BadArgErr)    armRetArgErrIf(armNot4ByteAligned(pSrcPred), OMX_Sts_BadArgErr)    armRetArgErrIf(pDequantCoeff == NULL, OMX_Sts_BadArgErr)    armRetArgErrIf(armNot8ByteAligned(pDequantCoeff), OMX_Sts_BadArgErr)    armRetArgErrIf(pDstRecon == NULL, OMX_Sts_BadArgErr)    armRetArgErrIf(armNot4ByteAligned(pDstRecon), OMX_Sts_BadArgErr)    armRetArgErrIf(bAC > 1, OMX_Sts_BadArgErr)    armRetArgErrIf(iSrcPredStep == 0 || iSrcPredStep & 3, OMX_Sts_BadArgErr)    armRetArgErrIf(iDstReconStep == 0 || iDstReconStep & 3, OMX_Sts_BadArgErr)    if (bAC)    {        for (i = 0; i < 16; i++)        {            In[i] = pDequantCoeff [i];        }    }    else    {        /* Copy DC */        In[0] = pDequantCoeff [0];            for (i = 1; i < 16; i++)        {            In[i] = 0;        }    }    /* Residual Transform */    armVCM4P10_TransformResidual4x4 (Out, In);            for (j = 0; j < 4; j++)    {        for (i = 0; i < 4; i++)        {            /* Add predition */            Value = (OMX_S32) Out [j * 4 + i] + pSrcPred [j * iSrcPredStep + i];                        /* Saturate Value to OMX_U8 */            Value = armClip (0, 255, Value);            pDstRecon[j * iDstReconStep + i] = (OMX_U8) Value;        }    }    return OMX_Sts_NoErr;}/***************************************************************************** *                              END OF FILE *****************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -