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

📄 armvcm4p10_interpolatehalfdiag_luma.c

📁 The OpenMAX DL (Development Layer) APIs contain a comprehensive set of audio, video, signal processi
💻 C
字号:
/** *  * File Name:  armVCM4P10_InterpolateHalfDiag_Luma.c * OpenMAX DL: v1.0.2 * Revision:   10586 * Date:       Wednesday, March 5, 2008 *  * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. *  *  * Description: * This functions will help to calculate Half Pel luma interpolation *  */#include "omxtypes.h"#include "armOMX.h"#include "omxVC.h"#include "armCOMM.h"#include "armVC.h"/** * Function: armVCM4P10_InterpolateHalfDiag_Luma *  * Description: * This function performs interpolation for (1/2, 1/2)  positions  * around a full-pel position. * * 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 *  [out]   pDst        Pointer to the interpolation buffer of the (1/2,1/2)-pel * * Return Value: * Standard OMXResult value. * */OMXResult armVCM4P10_InterpolateHalfDiag_Luma(          const OMX_U8*     pSrc,         OMX_U32     iSrcStep,         OMX_U8*     pDst,         OMX_U32     iDstStep,        OMX_U32     iWidth,         OMX_U32     iHeight){    OMX_S32     HalfCoeff, pos;    OMX_S16     Buf [21 * 16];  /* 21 rows by 16 pixels per row */    OMX_U32     y, x;    /* check for argument error */    armRetArgErrIf(pSrc == NULL, OMX_Sts_BadArgErr)    armRetArgErrIf(pDst == NULL, OMX_Sts_BadArgErr)    /*     * Intermediate values will be 1/2 pel at Horizontal direction     * Starting at (0.5, -2) at top extending to (0.5, height + 3) at bottom     * Buf contains a 2D array of size (iWidth)X(iHeight + 5)     */    for (y = 0; y < iHeight + 5; y++)    {        for (x = 0; x < iWidth; x++)        {            pos = (y-2) * iSrcStep + x;            HalfCoeff =                 pSrc [pos - 2] -                 5 * pSrc [pos - 1] +                 20 * pSrc [pos] +                 20 * pSrc [pos + 1] -                 5 * pSrc [pos + 2] +                 pSrc [pos + 3];            Buf [y * iWidth + x] = (OMX_S16)HalfCoeff;        } /* x */    } /* y */    /* Vertical interpolate */    for (y = 0; y < iHeight; y++)    {        for (x = 0; x < iWidth; x++)        {            pos = y * iWidth + x;            HalfCoeff =                 Buf [pos] -                 5 * Buf [pos + 1 * iWidth] +                 20 * Buf [pos + 2 * iWidth] +                 20 * Buf [pos + 3 * iWidth] -                 5 * Buf [pos + 4 * iWidth] +                 Buf [pos + 5 * iWidth];            HalfCoeff = (HalfCoeff + 512) >> 10;            HalfCoeff = armClip(0, 255, HalfCoeff);            pDst [y * iDstStep + x] = (OMX_U8) HalfCoeff;        }    }            return OMX_Sts_NoErr;}

⌨️ 快捷键说明

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