omxvcm4p2_transrecblockcoef_inter.c

来自「The OpenMAX DL (Development Layer) APIs 」· C语言 代码 · 共 109 行

C
109
字号
/** *  * File Name:  omxVCM4P2_TransRecBlockCoef_inter.c * OpenMAX DL: v1.0.2 * Revision:   10586 * Date:       Wednesday, March 5, 2008 *  * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. *  *  * * Description: * Contains modules DCT->quant and reconstructing the inter texture data *  */ #include "omxtypes.h"#include "armOMX.h"#include "omxVC.h"#include "armCOMM.h"/** * Function:  omxVCM4P2_TransRecBlockCoef_inter   (6.2.4.4.5) * * Description: * Implements DCT, and quantizes the DCT coefficients of the inter block  * while reconstructing the texture residual. There is no boundary check for  * the bit stream buffer.  * * Input Arguments: *    *   pSrc -pointer to the residuals to be encoded; must be aligned on an  *            16-byte boundary.  *   QP - quantization parameter.  *   shortVideoHeader - binary flag indicating presence of short_video_header;  *                      shortVideoHeader==1 selects linear intra DC mode, and  *                      shortVideoHeader==0 selects non linear intra DC mode.  * * Output Arguments: *    *   pDst - pointer to the quantized DCT coefficients buffer; must be aligned  *            on a 16-byte boundary.  *   pRec - pointer to the reconstructed texture residuals; must be aligned  *            on a 16-byte boundary.  * * Return Value: *     *    OMX_Sts_NoErr - no error  *    OMX_Sts_BadArgErr - bad arguments: *    -    At least one of the following pointers is either NULL or  *         not 16-byte aligned:  *            - pSrc  *            - pDst *            - pRec *    -    QP <= 0 or QP >= 32.  * */OMXResult omxVCM4P2_TransRecBlockCoef_inter(     const OMX_S16 *pSrc,     OMX_S16 * pDst,     OMX_S16 * pRec,     OMX_U8 QP,     OMX_INT shortVideoHeader){    /* 64 elements are needed but to align it to 16 bytes need     8 more elements of padding */    OMX_S16 tempBuffer[72];    OMX_S16 *pTempBuffer;    OMX_INT i;            /* Aligning the local buffers */    pTempBuffer = armAlignTo16Bytes(tempBuffer);    /* Argument error checks */    armRetArgErrIf(pSrc == NULL, OMX_Sts_BadArgErr);    armRetArgErrIf(pRec == NULL, OMX_Sts_BadArgErr);    armRetArgErrIf(pDst == NULL, OMX_Sts_BadArgErr);    armRetArgErrIf(!armIs16ByteAligned(pSrc), OMX_Sts_BadArgErr);    armRetArgErrIf(!armIs16ByteAligned(pRec), OMX_Sts_BadArgErr);    armRetArgErrIf(!armIs16ByteAligned(pDst), OMX_Sts_BadArgErr);    armRetArgErrIf(((QP <= 0) || (QP >= 32)), OMX_Sts_BadArgErr);        omxVCM4P2_DCT8x8blk (pSrc, pDst);    omxVCM4P2_QuantInter_I(     pDst,     QP,     shortVideoHeader);    for (i = 0; i < 64; i++)    {        pTempBuffer[i] = pDst[i];    }    omxVCM4P2_QuantInvInter_I(     pTempBuffer,     QP);    omxVCM4P2_IDCT8x8blk (pTempBuffer, pRec);    return OMX_Sts_NoErr;}/* End of file */

⌨️ 快捷键说明

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