summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/on2/h264dec/omxdl/reference/vc/m4p10/src/omxVCM4P10_BlockMatch_Integer.c
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/codecs/on2/h264dec/omxdl/reference/vc/m4p10/src/omxVCM4P10_BlockMatch_Integer.c')
-rw-r--r--media/libstagefright/codecs/on2/h264dec/omxdl/reference/vc/m4p10/src/omxVCM4P10_BlockMatch_Integer.c196
1 files changed, 0 insertions, 196 deletions
diff --git a/media/libstagefright/codecs/on2/h264dec/omxdl/reference/vc/m4p10/src/omxVCM4P10_BlockMatch_Integer.c b/media/libstagefright/codecs/on2/h264dec/omxdl/reference/vc/m4p10/src/omxVCM4P10_BlockMatch_Integer.c
deleted file mode 100644
index f7764e1..0000000
--- a/media/libstagefright/codecs/on2/h264dec/omxdl/reference/vc/m4p10/src/omxVCM4P10_BlockMatch_Integer.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/**
- *
- * File Name: omxVCM4P10_BlockMatch_Integer.c
- * OpenMAX DL: v1.0.2
- * Revision: 9641
- * Date: Thursday, February 7, 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: omxVCM4P10_BlockMatch_Integer (6.3.5.2.1)
- *
- * Description:
- * Performs integer block match. Returns best MV and associated cost.
- *
- * Input Arguments:
- *
- * pSrcOrgY - Pointer to the top-left corner of the current block. If
- * iBlockWidth==4, 4-byte alignment required. If iBlockWidth==8,
- * 8-byte alignment required. If iBlockWidth==16, 16-byte alignment
- * required.
- * pSrcRefY - Pointer to the top-left corner of the co-located block in the
- * reference picture. If iBlockWidth==4, 4-byte alignment
- * required. If iBlockWidth==8, 8-byte alignment required. If
- * iBlockWidth==16, 16-byte alignment required.
- * nSrcOrgStep - Stride of the original picture plane, expressed in terms
- * of integer pixels; must be a multiple of iBlockWidth.
- * nSrcRefStep - Stride of the reference picture plane, expressed in terms
- * of integer pixels
- * pRefRect - pointer to the valid reference rectangle inside the reference
- * picture plane
- * nCurrPointPos - position of the current block in the current plane
- * iBlockWidth - Width of the current block, expressed in terms of integer
- * pixels; must be equal to either 4, 8, or 16.
- * iBlockHeight - Height of the current block, expressed in terms of
- * integer pixels; must be equal to either 4, 8, or 16.
- * nLamda - Lamda factor; used to compute motion cost
- * pMVPred - Predicted MV; used to compute motion cost, expressed in terms
- * of 1/4-pel units
- * pMVCandidate - Candidate MV; used to initialize the motion search,
- * expressed in terms of integer pixels
- * pMESpec - pointer to the ME specification structure
- *
- * Output Arguments:
- *
- * pDstBestMV - Best MV resulting from integer search, expressed in terms
- * of 1/4-pel units
- * pBestCost - Motion cost associated with the best MV; computed as
- * SAD+Lamda*BitsUsedByMV
- *
- * Return Value:
- * OMX_Sts_NoErr, if the function runs without error.
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - any of the following poitners are NULL:
- * pSrcOrgY, pSrcRefY, pRefRect, pMVPred, pMVCandidate, or pMESpec.
- * - Either iBlockWidth or iBlockHeight are values other than 4, 8, or 16.
- * - Any alignment restrictions are violated
- *
- */
-
- OMXResult omxVCM4P10_BlockMatch_Integer (
- const OMX_U8 *pSrcOrgY,
- OMX_S32 nSrcOrgStep,
- const OMX_U8 *pSrcRefY,
- OMX_S32 nSrcRefStep,
- const OMXRect *pRefRect,
- const OMXVCM4P2Coordinate *pCurrPointPos,
- OMX_U8 iBlockWidth,
- OMX_U8 iBlockHeight,
- OMX_U32 nLamda,
- const OMXVCMotionVector *pMVPred,
- const OMXVCMotionVector *pMVCandidate,
- OMXVCMotionVector *pBestMV,
- OMX_S32 *pBestCost,
- void *pMESpec
-)
-{
- /* Definitions and Initializations*/
- OMX_INT candSAD;
- OMX_INT fromX, toX, fromY, toY;
- /* Offset to the reference at the begining of the bounding box */
- const OMX_U8 *pTempSrcRefY, *pTempSrcOrgY;
- OMX_S16 x, y;
- OMXVCMotionVector diffMV;
- OMX_S32 nSearchRange;
- ARMVCM4P10_MESpec *armMESpec = (ARMVCM4P10_MESpec *) pMESpec;
-
- /* Argument error checks */
- armRetArgErrIf((iBlockWidth == 4) && (!armIs4ByteAligned(pSrcOrgY)), OMX_Sts_BadArgErr);
- armRetArgErrIf((iBlockWidth == 8) && (!armIs8ByteAligned(pSrcOrgY)), OMX_Sts_BadArgErr);
- armRetArgErrIf((iBlockWidth == 16) && (!armIs16ByteAligned(pSrcOrgY)), OMX_Sts_BadArgErr);
- armRetArgErrIf((iBlockWidth == 4) && (!armIs4ByteAligned(pSrcRefY)), OMX_Sts_BadArgErr);
- armRetArgErrIf((iBlockWidth == 8) && (!armIs8ByteAligned(pSrcRefY)), OMX_Sts_BadArgErr);
- armRetArgErrIf((iBlockWidth == 16) && (!armIs16ByteAligned(pSrcRefY)), OMX_Sts_BadArgErr);
- armRetArgErrIf(pSrcOrgY == NULL, OMX_Sts_BadArgErr);
- armRetArgErrIf(pSrcRefY == NULL, OMX_Sts_BadArgErr);
- armRetArgErrIf(pMVPred == NULL, OMX_Sts_BadArgErr);
- armRetArgErrIf(pMVCandidate == NULL, OMX_Sts_BadArgErr);
- armRetArgErrIf(pBestMV == NULL, OMX_Sts_BadArgErr);
- armRetArgErrIf(pBestCost == NULL, OMX_Sts_BadArgErr);
- armRetArgErrIf(((iBlockWidth!=4)&&(iBlockWidth!=8)&&(iBlockWidth!=16)) , OMX_Sts_BadArgErr);
- armRetArgErrIf(((iBlockHeight!=4)&&(iBlockHeight!=8)&&(iBlockHeight!=16)) , OMX_Sts_BadArgErr);
- armIgnore (pMESpec);
-
- if(iBlockWidth == 4)
- {
- nSearchRange = armMESpec->MEParams.searchRange4x4;
- }
- else if(iBlockWidth == 8)
- {
- nSearchRange = armMESpec->MEParams.searchRange8x8;
- }
- else
- {
- nSearchRange = armMESpec->MEParams.searchRange16x16;
- }
- /* Check for valid region */
- fromX = nSearchRange;
- toX = nSearchRange;
- fromY = nSearchRange;
- toY = nSearchRange;
-
- if ((pCurrPointPos->x - nSearchRange) < pRefRect->x)
- {
- fromX = pCurrPointPos->x - pRefRect->x;
- }
-
- if ((pCurrPointPos->x + iBlockWidth + nSearchRange) > (pRefRect->x + pRefRect->width))
- {
- toX = pRefRect->width - (pCurrPointPos->x - pRefRect->x) - iBlockWidth;
- }
-
- if ((pCurrPointPos->y - nSearchRange) < pRefRect->y)
- {
- fromY = pCurrPointPos->y - pRefRect->y;
- }
-
- if ((pCurrPointPos->y + iBlockWidth + nSearchRange) > (pRefRect->y + pRefRect->height))
- {
- toY = pRefRect->width - (pCurrPointPos->y - pRefRect->y) - iBlockWidth;
- }
-
- pBestMV->dx = -fromX * 4;
- pBestMV->dy = -fromY * 4;
- /* Initialize to max value as a start point */
- *pBestCost = 0x7fffffff;
-
- /* Looping on y- axis */
- for (y = -fromY; y <= toY; y++)
- {
- /* Looping on x- axis */
- for (x = -fromX; x <= toX; x++)
- {
- /* Positioning the pointer */
- pTempSrcRefY = pSrcRefY + (nSrcRefStep * y) + x;
- pTempSrcOrgY = pSrcOrgY;
-
- /* Calculate the SAD */
- armVCCOMM_SAD(
- pTempSrcOrgY,
- nSrcOrgStep,
- pTempSrcRefY,
- nSrcRefStep,
- &candSAD,
- iBlockHeight,
- iBlockWidth);
-
- diffMV.dx = (x * 4) - pMVPred->dx;
- diffMV.dy = (y * 4) - pMVPred->dy;
-
- /* Result calculations */
- armVCM4P10_CompareMotionCostToMV ((x * 4), (y * 4), diffMV, candSAD, pBestMV, nLamda, pBestCost);
-
- } /* End of x- axis */
- } /* End of y-axis */
-
- return OMX_Sts_NoErr;
-
-}
-
-/* End of file */