📄 omxvccomm_limitmvtorect.c
字号:
/** * * File Name: omxVCCOMM_LimitMVToRect.c * OpenMAX DL: v1.0.2 * Revision: 10586 * Date: Wednesday, March 5, 2008 * * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. * * * * Description: * Contains module for limiting the MV * */ #include "omxtypes.h"#include "armOMX.h"#include "omxVC.h"#include "armCOMM.h"/** * Function: omxVCCOMM_LimitMVToRect (6.1.4.1.3) * * Description: * Limits the motion vector associated with the current block/macroblock to * prevent the motion compensated block/macroblock from moving outside a * bounding rectangle as shown in Figure 6-1. * * Input Arguments: * * pSrcMV - pointer to the motion vector associated with the current block * or macroblock * pRectVOPRef - pointer to the bounding rectangle * Xcoord, Ycoord - coordinates of the current block or macroblock * size - size of the current block or macroblock; must be equal to 8 or * 16. * * Output Arguments: * * pDstMV - pointer to the limited motion vector * * Return Value: * * OMX_Sts_NoErr - no error * OMX_Sts_BadArgErr - bad arguments. Returned if one or more of the * following conditions is true: * - at least one of the following pointers is NULL: * pSrcMV, pDstMV, or pRectVOPRef. * - size is not equal to either 8 or 16. * - the width or height of the bounding rectangle is less than * twice the block size. */OMXResult omxVCCOMM_LimitMVToRect( const OMXVCMotionVector * pSrcMV, OMXVCMotionVector *pDstMV, const OMXRect * pRectVOPRef, OMX_INT Xcoord, OMX_INT Ycoord, OMX_INT size){ /* Argument error checks */ armRetArgErrIf(pSrcMV == NULL, OMX_Sts_BadArgErr); armRetArgErrIf(pDstMV == NULL, OMX_Sts_BadArgErr); armRetArgErrIf(pRectVOPRef == NULL, OMX_Sts_BadArgErr); armRetArgErrIf((size != 8) && (size != 16), OMX_Sts_BadArgErr); armRetArgErrIf((pRectVOPRef->width < (2* size)), OMX_Sts_BadArgErr); armRetArgErrIf((pRectVOPRef->height < (2* size)), OMX_Sts_BadArgErr); pDstMV->dx = armMin (armMax (pSrcMV->dx, 2*pRectVOPRef->x - Xcoord), (2*pRectVOPRef->x + pRectVOPRef->width - Xcoord - size)); pDstMV->dy = armMin (armMax (pSrcMV->dy, 2*pRectVOPRef->y - Ycoord), (2*pRectVOPRef->y + pRectVOPRef->height - Ycoord - size)); return OMX_Sts_NoErr;}/* End of file */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -