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

📄 armvcm4p10_interpolate_chroma.c

📁 The OpenMAX DL (Development Layer) APIs contain a comprehensive set of audio, video, signal processi
💻 C
字号:
/** *  * File Name:  armVCM4P10_Interpolate_Chroma.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 calculate interpolation for chroma components *  */#include "omxtypes.h"#include "armOMX.h"#include "armCOMM.h"/** * Function: armVCM4P10_Interpolate_Chroma * * Description: * This function performs interpolation for chroma components. * * Remarks: * *  [in]    pSrc            Pointer to top-left corner of block used to  *                                              interpolate in the reconstructed frame plane *  [in]    iSrcStep    Step of the source buffer. *  [in]    iDstStep    Step of the destination(interpolation) buffer. *  [in]    iWidth      Width of the current block *  [in]    iHeight     Height of the current block *  [in]    dx              Fractional part of horizontal motion vector  *                                              component in 1/8 pixel unit (0~7)  *  [in]    dy              Fractional part of vertical motion vector  *                                              component in 1/8 pixel unit (0~7) *  [out]   pDst            Pointer to the interpolation buffer * * Return Value: * Standard OMXResult value. * */ OMXResult armVCM4P10_Interpolate_Chroma(        OMX_U8      *pSrc,        OMX_U32     iSrcStep,        OMX_U8      *pDst,        OMX_U32     iDstStep,        OMX_U32     iWidth,        OMX_U32     iHeight,        OMX_U32     dx,        OMX_U32     dy){    OMX_U32     EightMinusdx = 8 - dx;    OMX_U32     EightMinusdy = 8 - dy;    OMX_U32     ACoeff, BCoeff, CCoeff, DCoeff;    OMX_U32     x, y;    /* check for argument error */    armRetArgErrIf(pSrc == NULL, OMX_Sts_BadArgErr)    armRetArgErrIf(pDst == NULL, OMX_Sts_BadArgErr)    armRetArgErrIf(dx > 7, OMX_Sts_BadArgErr)    armRetArgErrIf(dy > 7, OMX_Sts_BadArgErr)    armRetArgErrIf(iSrcStep == 0, OMX_Sts_BadArgErr)    armRetArgErrIf(iDstStep == 0, OMX_Sts_BadArgErr)    armRetArgErrIf(iWidth == 0, OMX_Sts_BadArgErr)    armRetArgErrIf(iHeight == 0, OMX_Sts_BadArgErr)        /* if fractionl mv is not (0, 0) */    if (dx != 0 || dy != 0)    {        ACoeff = EightMinusdx * EightMinusdy;        BCoeff = dx * EightMinusdy;        CCoeff = EightMinusdx * dy;        DCoeff = dx * dy;        for (y = 0; y < iHeight; y++)        {            for (x = 0; x < iWidth; x++)            {                pDst [y * iDstStep + x] = (                    ACoeff * pSrc [y * iSrcStep + x] +                    BCoeff * pSrc [y * iSrcStep + x + 1] +                    CCoeff * pSrc [(y + 1) * iSrcStep + x] +                    DCoeff * pSrc [(y + 1) * iSrcStep + x + 1] +                    32) >> 6;            }        }    }    else    {        for (y = 0; y < iHeight; y++)        {            for (x = 0; x < iWidth; x++)            {                pDst [y * iDstStep + x] = pSrc [y * iSrcStep + x];            }        }    }    return OMX_Sts_NoErr;}/***************************************************************************** *                              END OF FILE *****************************************************************************/

⌨️ 快捷键说明

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