/** * * File Name: armVCM4P2_SetPredDir.c * OpenMAX DL: v1.0.2 * Revision: 9641 * Date: Thursday, February 7, 2008 * * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. * * * * Description: * Contains module for detecting the prediction direction * */ #include "omxtypes.h" #include "armOMX.h" #include "armVC.h" #include "armCOMM.h" /** * Function: armVCM4P2_SetPredDir * * Description: * Performs detecting the prediction direction * * Remarks: * * Parameters: * [in] blockIndex block index indicating the component type and * position as defined in subclause 6.1.3.8, of ISO/IEC * 14496-2. Furthermore, indexes 6 to 9 indicate the * alpha blocks spatially corresponding to luminance * blocks 0 to 3 in the same macroblock. * [in] pCoefBufRow pointer to the coefficient row buffer * [in] pQpBuf pointer to the quantization parameter buffer * [out] predQP quantization parameter of the predictor block * [out] predDir indicates the prediction direction which takes one * of the following values: * OMX_VC_HORIZONTAL predict horizontally * OMX_VC_VERTICAL predict vertically * * Return Value: * Standard OMXResult result. See enumeration for possible result codes. * */ OMXResult armVCM4P2_SetPredDir( OMX_INT blockIndex, OMX_S16 *pCoefBufRow, OMX_S16 *pCoefBufCol, OMX_INT *predDir, OMX_INT *predQP, const OMX_U8 *pQpBuf ) { OMX_U8 blockDCLeft; OMX_U8 blockDCTop; OMX_U8 blockDCTopLeft; if (blockIndex == 3) { blockDCTop = *(pCoefBufCol - 8); } else { blockDCTop = *pCoefBufRow; } blockDCLeft = *pCoefBufCol; blockDCTopLeft = *(pCoefBufRow - 8); if (armAbs(blockDCLeft - blockDCTopLeft) < armAbs(blockDCTopLeft \ - blockDCTop)) { *predDir = OMX_VC_VERTICAL; *predQP = pQpBuf[1]; } else { *predDir = OMX_VC_HORIZONTAL; *predQP = pQpBuf[0]; } return OMX_Sts_NoErr; } /*End of File*/