1/** 2 * 3 * File Name: omxVCM4P10_SADQuar_16x.c 4 * OpenMAX DL: v1.0.2 5 * Revision: 9641 6 * Date: Thursday, February 7, 2008 7 * 8 * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. 9 * 10 * 11 * Description: 12 * This function will calculate SAD of pSrc with average of two Ref blocks 13 * of 16x16 or 16x8 14 * 15 */ 16 17#include "omxtypes.h" 18#include "armOMX.h" 19#include "omxVC.h" 20 21#include "armVC.h" 22#include "armCOMM.h" 23 24/** 25 * Function: omxVCM4P10_SADQuar_16x (6.3.5.4.4) 26 * 27 * Description: 28 * This function calculates the SAD between one block (pSrc) and the average 29 * of the other two (pSrcRef0 and pSrcRef1) for 16x16 or 16x8 blocks. 30 * Rounding is applied according to the convention (a+b+1)>>1. 31 * 32 * Input Arguments: 33 * 34 * pSrc - Pointer to the original block; must be aligned on a 16-byte 35 * boundary. 36 * pSrcRef0 - Pointer to reference block 0 37 * pSrcRef1 - Pointer to reference block 1 38 * iSrcStep - Step of the original block buffer; must be a multiple of 16 39 * iRefStep0 - Step of reference block 0 40 * iRefStep1 - Step of reference block 1 41 * iHeight - Height of the block; must be equal to either 8 or 16 42 * 43 * Output Arguments: 44 * 45 * pDstSAD -Pointer of result SAD 46 * 47 * Return Value: 48 * OMX_Sts_NoErr, if the function runs without error. 49 * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs: 50 * - iHeight is not equal to either 8 or 16. 51 * - One of more of the following pointers is NULL: pSrc, pSrcRef0, 52 * pSrcRef1, pDstSAD. 53 * - iSrcStep is not a multiple of 16 54 * - Any alignment restrictions are violated 55 * 56 */ 57OMXResult omxVCM4P10_SADQuar_16x( 58 const OMX_U8* pSrc, 59 const OMX_U8* pSrcRef0, 60 const OMX_U8* pSrcRef1, 61 OMX_U32 iSrcStep, 62 OMX_U32 iRefStep0, 63 OMX_U32 iRefStep1, 64 OMX_U32* pDstSAD, 65 OMX_U32 iHeight 66) 67{ 68 /* check for argument error */ 69 armRetArgErrIf(pSrc == NULL, OMX_Sts_BadArgErr) 70 armRetArgErrIf(pSrcRef0 == NULL, OMX_Sts_BadArgErr) 71 armRetArgErrIf(pSrcRef1 == NULL, OMX_Sts_BadArgErr) 72 armRetArgErrIf(pDstSAD == NULL, OMX_Sts_BadArgErr) 73 armRetArgErrIf((iHeight != 16) && (iHeight != 8), OMX_Sts_BadArgErr) 74 armRetArgErrIf(armNot16ByteAligned(pSrc), OMX_Sts_BadArgErr) 75 armRetArgErrIf((iSrcStep == 0) || (iSrcStep & 15), OMX_Sts_BadArgErr) 76 77 78 return armVCM4P10_SADQuar 79 (pSrc, pSrcRef0, pSrcRef1, iSrcStep, 80 iRefStep0, iRefStep1, pDstSAD, iHeight, 16); 81} 82 83/***************************************************************************** 84 * END OF FILE 85 *****************************************************************************/ 86 87