omxvcm4p2_blockmatch_integer_8x8.c

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

C
111
字号
/** *  * File Name:  omxVCM4P2_BlockMatch_Integer_8x8.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 for Block matching, a full search algorithm * is implemented *  */#include "omxtypes.h"#include "armOMX.h"#include "omxVC.h"#include "armVC.h"#include "armCOMM.h"/** * Function:  omxVCM4P2_BlockMatch_Integer_8x8   (6.2.4.2.2) * * Description: * Performs an 8x8 block search; estimates motion vector and associated  * minimum SAD.  Both the input and output motion vectors are represented  * using half-pixel units, and therefore a shift left or right by 1 bit may be  * required, respectively, to match the input or output MVs with other  * functions that either generate output MVs or expect input MVs represented  * using integer pixel units.  * * Input Arguments: *    *   pSrcRefBuf - pointer to the reference Y plane; points to the reference  *            block that corresponds to the location of the current 8x8 block  *            in the current plane.  *   refWidth - width of the reference plane  *   pRefRect - pointer to the valid reference plane rectangle; coordinates  *            are specified relative to the image origin.  Rectangle  *            boundaries may extend beyond image boundaries if the image has  *            been padded.  *   pSrcCurrBuf - pointer to the current block in the current macroblock  *            buffer extracted from the original plane (linear array, 128  *            entries); must be aligned on an 8-byte boundary.  The number of  *            bytes between lines (step) is 16 bytes.  *   pCurrPointPos - position of the current block in the current plane  *   pSrcPreMV - pointer to predicted motion vector; NULL indicates no  *            predicted MV  *   pSrcPreSAD - pointer to SAD associated with the predicted MV (referenced  *            by pSrcPreMV); may be set to NULL if unavailable.  *   pMESpec - vendor-specific motion estimation specification structure;  *            must have been allocated and then initialized using  *            omxVCM4P2_MEInit prior to calling the block matching function.  * * Output Arguments: *    *   pDstMV - pointer to estimated MV  *   pDstSAD - pointer to minimum SAD  * * Return Value: *     *    OMX_Sts_NoErr - no error  *    OMX_Sts_BadArgErr - bad arguments.  Returned if one of the following  *              conditions is true:  *    -    at least one of the following pointers is NULL: pSrcRefBuf,  *              pRefRect, pSrcCurrBuff, pCurrPointPos, pDstMV, pDstSAD or  *              pMESpec, or  *    -    pSrcCurrBuf is not 8-byte aligned  * */OMXResult omxVCM4P2_BlockMatch_Integer_8x8(     const OMX_U8 *pSrcRefBuf,     OMX_INT refWidth,     const OMXRect *pRefRect,     const OMX_U8 *pSrcCurrBuf,     const OMXVCM4P2Coordinate *pCurrPointPos,     const OMXVCMotionVector *pSrcPreMV,     const OMX_INT *pSrcPreSAD,     void *pMESpec,     OMXVCMotionVector *pDstMV,     OMX_INT *pDstSAD){   OMX_U8 BlockSize = 8;      /* Argument error checks */     armRetArgErrIf(!armIs8ByteAligned(pSrcCurrBuf), OMX_Sts_BadArgErr);      return ( armVCM4P2_BlockMatch_Integer(     pSrcRefBuf,     refWidth,     pRefRect,     pSrcCurrBuf,     pCurrPointPos,     pSrcPreMV,     pSrcPreSAD,     pMESpec,     pDstMV,     pDstSAD,     BlockSize)     );}/* End of file */

⌨️ 快捷键说明

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