summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/on2/h264dec/omxdl/arm_neon/vc/api/armVC.h
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/codecs/on2/h264dec/omxdl/arm_neon/vc/api/armVC.h')
-rwxr-xr-xmedia/libstagefright/codecs/on2/h264dec/omxdl/arm_neon/vc/api/armVC.h1153
1 files changed, 0 insertions, 1153 deletions
diff --git a/media/libstagefright/codecs/on2/h264dec/omxdl/arm_neon/vc/api/armVC.h b/media/libstagefright/codecs/on2/h264dec/omxdl/arm_neon/vc/api/armVC.h
deleted file mode 100755
index 35b510b..0000000
--- a/media/libstagefright/codecs/on2/h264dec/omxdl/arm_neon/vc/api/armVC.h
+++ /dev/null
@@ -1,1153 +0,0 @@
-/**
- *
- * File Name: armVC.h
- * OpenMAX DL: v1.0.2
- * Revision: 12290
- * Date: Wednesday, April 9, 2008
- *
- * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
- *
- *
- *
- * File: armVideo.h
- * Brief: Declares API's/Basic Data types used across the OpenMAX Video domain
- *
- */
-
-
-#ifndef _armVideo_H_
-#define _armVideo_H_
-
-#include "omxVC.h"
-#include "armCOMM_Bitstream.h"
-
-/**
- * ARM specific state structure to hold Motion Estimation information.
- */
-
-struct m4p2_MESpec
-{
- OMXVCM4P2MEParams MEParams;
- OMXVCM4P2MEMode MEMode;
-};
-
-struct m4p10_MESpec
-{
- OMXVCM4P10MEParams MEParams;
- OMXVCM4P10MEMode MEMode;
-};
-
-typedef struct m4p2_MESpec ARMVCM4P2_MESpec;
-typedef struct m4p10_MESpec ARMVCM4P10_MESpec;
-
-/**
- * Function: armVCM4P2_CompareMV
- *
- * Description:
- * Performs comparision of motion vectors and SAD's to decide the
- * best MV and SAD
- *
- * Remarks:
- *
- * Parameters:
- * [in] mvX x coordinate of the candidate motion vector
- * [in] mvY y coordinate of the candidate motion vector
- * [in] candSAD Candidate SAD
- * [in] bestMVX x coordinate of the best motion vector
- * [in] bestMVY y coordinate of the best motion vector
- * [in] bestSAD best SAD
- *
- * Return Value:
- * OMX_INT -- 1 to indicate that the current sad is the best
- * 0 to indicate that it is NOT the best SAD
- */
-
-OMX_INT armVCM4P2_CompareMV (
- OMX_S16 mvX,
- OMX_S16 mvY,
- OMX_INT candSAD,
- OMX_S16 bestMVX,
- OMX_S16 bestMVY,
- OMX_INT bestSAD);
-
-/**
- * Function: armVCM4P2_ACDCPredict
- *
- * Description:
- * Performs adaptive DC/AC coefficient prediction for an intra block. Prior
- * to the function call, prediction direction (predDir) should be selected
- * as specified in subclause 7.4.3.1 of ISO/IEC 14496-2.
- *
- * Remarks:
- *
- * Parameters:
- * [in] pSrcDst pointer to the coefficient buffer which contains
- * the quantized coefficient residuals (PQF) of the
- * current block
- * [in] pPredBufRow pointer to the coefficient row buffer
- * [in] pPredBufCol pointer to the coefficient column buffer
- * [in] curQP quantization parameter of the current block. curQP
- * may equal to predQP especially when the current
- * block and the predictor block are in the same
- * macroblock.
- * [in] predQP quantization parameter of the predictor block
- * [in] predDir indicates the prediction direction which takes one
- * of the following values:
- * OMX_VIDEO_HORIZONTAL predict horizontally
- * OMX_VIDEO_VERTICAL predict vertically
- * [in] ACPredFlag a flag indicating if AC prediction should be
- * performed. It is equal to ac_pred_flag in the bit
- * stream syntax of MPEG-4
- * [in] videoComp video component type (luminance, chrominance or
- * alpha) of the current block
- * [in] flag This flag defines the if one wants to use this functions to
- * calculate PQF (set 1, prediction) or QF (set 0, reconstruction)
- * [out] pPreACPredict pointer to the predicted coefficients buffer.
- * Filled ONLY if it is not NULL
- * [out] pSrcDst pointer to the coefficient buffer which contains
- * the quantized coefficients (QF) of the current
- * block
- * [out] pPredBufRow pointer to the updated coefficient row buffer
- * [out] pPredBufCol pointer to the updated coefficient column buffer
- * [out] pSumErr pointer to the updated sum of the difference
- * between predicted and unpredicted coefficients
- * If this is NULL, do not update
- *
- * Return Value:
- * Standard OMXResult result. See enumeration for possible result codes.
- *
- */
-
-OMXResult armVCM4P2_ACDCPredict(
- OMX_S16 * pSrcDst,
- OMX_S16 * pPreACPredict,
- OMX_S16 * pPredBufRow,
- OMX_S16 * pPredBufCol,
- OMX_INT curQP,
- OMX_INT predQP,
- OMX_INT predDir,
- OMX_INT ACPredFlag,
- OMXVCM4P2VideoComponent videoComp,
- OMX_U8 flag,
- OMX_INT *pSumErr
-);
-
-/**
- * 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_VIDEO_HORIZONTAL predict horizontally
- * OMX_VIDEO_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
-);
-
-/**
- * Function: armVCM4P2_EncodeVLCZigzag_Intra
- *
- * Description:
- * Performs zigzag scanning and VLC encoding for one intra block.
- *
- * Remarks:
- *
- * Parameters:
- * [in] ppBitStream pointer to the pointer to the current byte in
- * the bit stream
- * [in] pBitOffset pointer to the bit position in the byte pointed
- * by *ppBitStream. Valid within 0 to 7.
- * [in] pQDctBlkCoef pointer to the quantized DCT coefficient
- * [in] predDir AC prediction direction, which is used to decide
- * the zigzag scan pattern. This takes one of the
- * following values:
- * OMX_VIDEO_NONE AC prediction not used.
- * Performs classical zigzag
- * scan.
- * OMX_VIDEO_HORIZONTAL Horizontal prediction.
- * Performs alternate-vertical
- * zigzag scan.
- * OMX_VIDEO_VERTICAL Vertical prediction.
- * Performs alternate-horizontal
- * zigzag scan.
- * [in] pattern block pattern which is used to decide whether
- * this block is encoded
- * [in] start start indicates whether the encoding begins with 0th element
- * or 1st.
- * [out] ppBitStream *ppBitStream is updated after the block is encoded,
- * so that it points to the current byte in the bit
- * stream buffer.
- * [out] pBitOffset *pBitOffset is updated so that it points to the
- * current bit position in the byte pointed by
- * *ppBitStream.
- *
- * Return Value:
- * Standard OMXResult result. See enumeration for possible result codes.
- *
- */
-
-OMXResult armVCM4P2_EncodeVLCZigzag_Intra(
- OMX_U8 **ppBitStream,
- OMX_INT *pBitOffset,
- const OMX_S16 *pQDctBlkCoef,
- OMX_U8 predDir,
- OMX_U8 pattern,
- OMX_INT shortVideoHeader,
- OMX_U8 start
-);
-
-/**
- * Function: armVCM4P2_DecodeVLCZigzag_Intra
- *
- * Description:
- * Performs VLC decoding and inverse zigzag scan for one intra coded block.
- *
- * Remarks:
- *
- * Parameters:
- * [in] ppBitStream pointer to the pointer to the current byte in
- * the bitstream buffer
- * [in] pBitOffset pointer to the bit position in the byte pointed
- * to by *ppBitStream. *pBitOffset is valid within
- * [0-7].
- * [in] predDir AC prediction direction which is used to decide
- * the zigzag scan pattern. It takes one of the
- * following values:
- * OMX_VIDEO_NONE AC prediction not used;
- * perform classical zigzag scan;
- * OMX_VIDEO_HORIZONTAL Horizontal prediction;
- * perform alternate-vertical
- * zigzag scan;
- * OMX_VIDEO_VERTICAL Vertical prediction;
- * thus perform
- * alternate-horizontal
- * zigzag scan.
- * [in] videoComp video component type (luminance, chrominance or
- * alpha) of the current block
- * [in] shortVideoHeader binary flag indicating presence of short_video_header; escape modes 0-3 are used if shortVideoHeader==0,
- * and escape mode 4 is used when shortVideoHeader==1.
- * [in] start start indicates whether the encoding begins with 0th element
- * or 1st.
- * [out] ppBitStream *ppBitStream is updated after the block is
- * decoded, so that it points to the current byte
- * in the bit stream buffer
- * [out] pBitOffset *pBitOffset is updated so that it points to the
- * current bit position in the byte pointed by
- * *ppBitStream
- * [out] pDst pointer to the coefficient buffer of current
- * block. Should be 32-bit aligned
- *
- * Return Value:
- * Standard OMXResult result. See enumeration for possible result codes.
- *
- */
-
-OMXResult armVCM4P2_DecodeVLCZigzag_Intra(
- const OMX_U8 ** ppBitStream,
- OMX_INT * pBitOffset,
- OMX_S16 * pDst,
- OMX_U8 predDir,
- OMX_INT shortVideoHeader,
- OMX_U8 start
-);
-
-/**
- * Function: armVCM4P2_FillVLDBuffer
- *
- * Description:
- * Performs filling of the coefficient buffer according to the run, level
- * and sign, also updates the index
- *
- * Parameters:
- * [in] storeRun Stored Run value (count of zeros)
- * [in] storeLevel Stored Level value (non-zero value)
- * [in] sign Flag indicating the sign of level
- * [in] last status of the last flag
- * [in] pIndex pointer to coefficient index in 8x8 matrix
- * [out] pIndex pointer to updated coefficient index in 8x8
- * matrix
- * [in] pZigzagTable pointer to the zigzag tables
- * [out] pDst pointer to the coefficient buffer of current
- * block. Should be 32-bit aligned
- * Return Value:
- * Standard OMXResult result. See enumeration for possible result codes.
- *
- */
-
-OMXResult armVCM4P2_FillVLDBuffer(
- OMX_U32 storeRun,
- OMX_S16 * pDst,
- OMX_S16 storeLevel,
- OMX_U8 sign,
- OMX_U8 last,
- OMX_U8 * index,
- const OMX_U8 * pZigzagTable
-);
-
-/**
- * Function: armVCM4P2_GetVLCBits
- *
- * Description:
- * Performs escape mode decision based on the run, run+, level, level+ and
- * last combinations.
- *
- * Remarks:
- *
- * Parameters:
- * [in] ppBitStream pointer to the pointer to the current byte in
- * the bit stream
- * [in] pBitOffset pointer to the bit position in the byte pointed
- * by *ppBitStream. Valid within 0 to 7
- * [in] shortVideoHeader binary flag indicating presence of short_video_header; escape modes 0-3 are used if shortVideoHeader==0,
- * and escape mode 4 is used when shortVideoHeader==1.
- * [in] start start indicates whether the encoding begins with
- * 0th element or 1st.
- * [in/out] pLast pointer to last status flag
- * [in] runBeginSingleLevelEntriesL0 The run value from which level
- * will be equal to 1: last == 0
- * [in] IndexBeginSingleLevelEntriesL0 Array index in the VLC table
- * pointing to the
- * runBeginSingleLevelEntriesL0
- * [in] runBeginSingleLevelEntriesL1 The run value from which level
- * will be equal to 1: last == 1
- * [in] IndexBeginSingleLevelEntriesL1 Array index in the VLC table
- * pointing to the
- * runBeginSingleLevelEntriesL0
- * [in] pRunIndexTableL0 Run Index table defined in
- * armVCM4P2_Huff_Tables_VLC.c for last == 0
- * [in] pVlcTableL0 VLC table for last == 0
- * [in] pRunIndexTableL1 Run Index table defined in
- * armVCM4P2_Huff_Tables_VLC.c for last == 1
- * [in] pVlcTableL1 VLC table for last == 1
- * [in] pLMAXTableL0 Level MAX table defined in
- * armVCM4P2_Huff_Tables_VLC.c for last == 0
- * [in] pLMAXTableL1 Level MAX table defined in
- * armVCM4P2_Huff_Tables_VLC.c for last == 1
- * [in] pRMAXTableL0 Run MAX table defined in
- * armVCM4P2_Huff_Tables_VLC.c for last == 0
- * [in] pRMAXTableL1 Run MAX table defined in
- * armVCM4P2_Huff_Tables_VLC.c for last == 1
- * [out]pDst pointer to the coefficient buffer of current
- * block. Should be 32-bit aligned
- *
- * Return Value:
- * Standard OMXResult result. See enumeration for possible result codes.
- *
- */
-
-OMXResult armVCM4P2_GetVLCBits (
- const OMX_U8 **ppBitStream,
- OMX_INT * pBitOffset,
- OMX_S16 * pDst,
- OMX_INT shortVideoHeader,
- OMX_U8 start,
- OMX_U8 * pLast,
- OMX_U8 runBeginSingleLevelEntriesL0,
- OMX_U8 maxIndexForMultipleEntriesL0,
- OMX_U8 maxRunForMultipleEntriesL1,
- OMX_U8 maxIndexForMultipleEntriesL1,
- const OMX_U8 * pRunIndexTableL0,
- const ARM_VLC32 *pVlcTableL0,
- const OMX_U8 * pRunIndexTableL1,
- const ARM_VLC32 *pVlcTableL1,
- const OMX_U8 * pLMAXTableL0,
- const OMX_U8 * pLMAXTableL1,
- const OMX_U8 * pRMAXTableL0,
- const OMX_U8 * pRMAXTableL1,
- const OMX_U8 * pZigzagTable
-);
-
-/**
- * Function: armVCM4P2_PutVLCBits
- *
- * Description:
- * Checks the type of Escape Mode and put encoded bits for
- * quantized DCT coefficients.
- *
- * Remarks:
- *
- * Parameters:
- * [in] ppBitStream pointer to the pointer to the current byte in
- * the bit stream
- * [in] pBitOffset pointer to the bit position in the byte pointed
- * by *ppBitStream. Valid within 0 to 7
- * [in] shortVideoHeader binary flag indicating presence of short_video_header; escape modes 0-3 are used if shortVideoHeader==0,
- * and escape mode 4 is used when shortVideoHeader==1.
- * [in] start start indicates whether the encoding begins with
- * 0th element or 1st.
- * [in] maxStoreRunL0 Max store possible (considering last and inter/intra)
- * for last = 0
- * [in] maxStoreRunL1 Max store possible (considering last and inter/intra)
- * for last = 1
- * [in] maxRunForMultipleEntriesL0
- * The run value after which level
- * will be equal to 1:
- * (considering last and inter/intra status) for last = 0
- * [in] maxRunForMultipleEntriesL1
- * The run value after which level
- * will be equal to 1:
- * (considering last and inter/intra status) for last = 1
- * [in] pRunIndexTableL0 Run Index table defined in
- * armVCM4P2_Huff_Tables_VLC.c for last == 0
- * [in] pVlcTableL0 VLC table for last == 0
- * [in] pRunIndexTableL1 Run Index table defined in
- * armVCM4P2_Huff_Tables_VLC.c for last == 1
- * [in] pVlcTableL1 VLC table for last == 1
- * [in] pLMAXTableL0 Level MAX table defined in
- * armVCM4P2_Huff_Tables_VLC.c for last == 0
- * [in] pLMAXTableL1 Level MAX table defined in
- * armVCM4P2_Huff_Tables_VLC.c for last == 1
- * [in] pRMAXTableL0 Run MAX table defined in
- * armVCM4P2_Huff_Tables_VLC.c for last == 0
- * [in] pRMAXTableL1 Run MAX table defined in
- * armVCM4P2_Huff_Tables_VLC.c for last == 1
- * [out] pQDctBlkCoef pointer to the quantized DCT coefficient
- * [out] ppBitStream *ppBitStream is updated after the block is encoded
- * so that it points to the current byte in the bit
- * stream buffer.
- * [out] pBitOffset *pBitOffset is updated so that it points to the
- * current bit position in the byte pointed by
- * *ppBitStream.
- *
- * Return Value:
- * Standard OMXResult result. See enumeration for possible result codes.
- *
- */
-
-
-OMXResult armVCM4P2_PutVLCBits (
- OMX_U8 **ppBitStream,
- OMX_INT * pBitOffset,
- const OMX_S16 *pQDctBlkCoef,
- OMX_INT shortVideoHeader,
- OMX_U8 start,
- OMX_U8 maxStoreRunL0,
- OMX_U8 maxStoreRunL1,
- OMX_U8 maxRunForMultipleEntriesL0,
- OMX_U8 maxRunForMultipleEntriesL1,
- const OMX_U8 * pRunIndexTableL0,
- const ARM_VLC32 *pVlcTableL0,
- const OMX_U8 * pRunIndexTableL1,
- const ARM_VLC32 *pVlcTableL1,
- const OMX_U8 * pLMAXTableL0,
- const OMX_U8 * pLMAXTableL1,
- const OMX_U8 * pRMAXTableL0,
- const OMX_U8 * pRMAXTableL1,
- const OMX_U8 * pZigzagTable
-);
-/**
- * Function: armVCM4P2_FillVLCBuffer
- *
- * Description:
- * Performs calculating the VLC bits depending on the escape type and insert
- * the same in the bitstream
- *
- * Remarks:
- *
- * Parameters:
- * [in] ppBitStream pointer to the pointer to the current byte in
- * the bit stream
- * [in] pBitOffset pointer to the bit position in the byte pointed
- * by *ppBitStream. Valid within 0 to 7
- * [in] run Run value (count of zeros) to be encoded
- * [in] level Level value (non-zero value) to be encoded
- * [in] runPlus Calculated as runPlus = run - (RMAX + 1)
- * [in] levelPlus Calculated as
- * levelPlus = sign(level)*[abs(level) - LMAX]
- * [in] fMode Flag indicating the escape modes
- * [in] last status of the last flag
- * [in] maxRunForMultipleEntries
- * The run value after which level will be equal to 1:
- * (considering last and inter/intra status)
- * [in] pRunIndexTable Run Index table defined in
- * armVCM4P2_Huff_tables_VLC.h
- * [in] pVlcTable VLC table defined in armVCM4P2_Huff_tables_VLC.h
- * [out] ppBitStream *ppBitStream is updated after the block is encoded
- * so that it points to the current byte in the bit
- * stream buffer.
- * [out] pBitOffset *pBitOffset is updated so that it points to the
- * current bit position in the byte pointed by
- * *ppBitStream.
- *
- * Return Value:
- * Standard OMXResult result. See enumeration for possible result codes.
- *
- */
-
-OMXResult armVCM4P2_FillVLCBuffer (
- OMX_U8 **ppBitStream,
- OMX_INT * pBitOffset,
- OMX_U32 run,
- OMX_S16 level,
- OMX_U32 runPlus,
- OMX_S16 levelPlus,
- OMX_U8 fMode,
- OMX_U8 last,
- OMX_U8 maxRunForMultipleEntries,
- const OMX_U8 *pRunIndexTable,
- const ARM_VLC32 *pVlcTable
-);
-
-/**
- * Function: armVCM4P2_CheckVLCEscapeMode
- *
- * Description:
- * Performs escape mode decision based on the run, run+, level, level+ and
- * last combinations.
- *
- * Remarks:
- *
- * Parameters:
- * [in] run Run value (count of zeros) to be encoded
- * [in] level Level value (non-zero value) to be encoded
- * [in] runPlus Calculated as runPlus = run - (RMAX + 1)
- * [in] levelPlus Calculated as
- * levelPlus = sign(level)*[abs(level) - LMAX]
- * [in] maxStoreRun Max store possible (considering last and inter/intra)
- * [in] maxRunForMultipleEntries
- * The run value after which level
- * will be equal to 1:
- * (considering last and inter/intra status)
- * [in] shortVideoHeader binary flag indicating presence of short_video_header; escape modes 0-3 are used if shortVideoHeader==0,
- * and escape mode 4 is used when shortVideoHeader==1.
- * [in] pRunIndexTable Run Index table defined in
- * armVCM4P2_Huff_Tables_VLC.c
- * (considering last and inter/intra status)
- *
- *
- * Return Value:
- * Returns an Escape mode which can take values from 0 to 3
- * 0 --> no escape mode, 1 --> escape type 1,
- * 1 --> escape type 2, 3 --> escape type 3, check section 7.4.1.3
- * in the MPEG ISO standard.
- *
- */
-
-OMX_U8 armVCM4P2_CheckVLCEscapeMode(
- OMX_U32 run,
- OMX_U32 runPlus,
- OMX_S16 level,
- OMX_S16 levelPlus,
- OMX_U8 maxStoreRun,
- OMX_U8 maxRunForMultipleEntries,
- OMX_INT shortVideoHeader,
- const OMX_U8 *pRunIndexTable
-);
-
-
-/**
- * Function: armVCM4P2_BlockMatch_Integer
- *
- * Description:
- * Performs a 16x16 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.
- *
- * Remarks:
- *
- * Parameters:
- * [in] pSrcRefBuf pointer to the reference Y plane; points to the reference MB that
- * corresponds to the location of the current macroblock in the current
- * plane.
- * [in] refWidth width of the reference plane
- * [in] pRefRect pointer to the valid rectangular in reference plane. Relative to image origin.
- * It's not limited to the image boundary, but depended on the padding. For example,
- * if you pad 4 pixels outside the image border, then the value for left border
- * can be -4
- * [in] pSrcCurrBuf pointer to the current macroblock extracted from original plane (linear array,
- * 256 entries); must be aligned on an 8-byte boundary.
- * [in] pCurrPointPos position of the current macroblock in the current plane
- * [in] pSrcPreMV pointer to predicted motion vector; NULL indicates no predicted MV
- * [in] pSrcPreSAD pointer to SAD associated with the predicted MV (referenced by pSrcPreMV)
- * [in] searchRange search range for 16X16 integer block,the units of it is full pixel,the search range
- * is the same in all directions.It is in inclusive of the boundary and specified in
- * terms of integer pixel units.
- * [in] pMESpec vendor-specific motion estimation specification structure; must have been allocated
- * and then initialized using omxVCM4P2_MEInit prior to calling the block matching
- * function.
- * [in] BlockSize MacroBlock Size i.e either 16x16 or 8x8.
- * [out] pDstMV pointer to estimated MV
- * [out] pDstSAD pointer to minimum SAD
- *
- * Return Value:
- * OMX_Sts_NoErr ¨C no error.
- * OMX_Sts_BadArgErr ¨C bad arguments
- *
- */
-
-OMXResult armVCM4P2_BlockMatch_Integer(
- 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
-);
-
-/**
- * Function: armVCM4P2_BlockMatch_Half
- *
- * Description:
- * Performs a 16x16 block match with half-pixel resolution. Returns the estimated
- * motion vector and associated minimum SAD. This function estimates the half-pixel
- * motion vector by interpolating the integer resolution motion vector referenced
- * by the input parameter pSrcDstMV, i.e., the initial integer MV is generated
- * externally. The input parameters pSrcRefBuf and pSearchPointRefPos should be
- * shifted by the winning MV of 16x16 integer search prior to calling BlockMatch_Half_16x16.
- * The function BlockMatch_Integer_16x16 may be used for integer motion estimation.
- *
- * Remarks:
- *
- * Parameters:
- * [in] pSrcRefBuf pointer to the reference Y plane; points to the reference MB
- * that corresponds to the location of the current macroblock in
- * the current plane.
- * [in] refWidth width of the reference plane
- * [in] pRefRect reference plane valid region rectangle
- * [in] pSrcCurrBuf pointer to the current macroblock extracted from original plane
- * (linear array, 256 entries); must be aligned on an 8-byte boundary.
- * [in] pSearchPointRefPos position of the starting point for half pixel search (specified
- * in terms of integer pixel units) in the reference plane.
- * [in] rndVal rounding control bit for half pixel motion estimation;
- * 0=rounding control disabled; 1=rounding control enabled
- * [in] pSrcDstMV pointer to the initial MV estimate; typically generated during a prior
- * 16X16 integer search and its unit is half pixel.
- * [in] BlockSize MacroBlock Size i.e either 16x16 or 8x8.
- * [out]pSrcDstMV pointer to estimated MV
- * [out]pDstSAD pointer to minimum SAD
- *
- * Return Value:
- * OMX_Sts_NoErr ¨C no error
- * OMX_Sts_BadArgErr ¨C bad arguments
- *
- */
-
-OMXResult armVCM4P2_BlockMatch_Half(
- const OMX_U8 *pSrcRefBuf,
- OMX_INT refWidth,
- const OMXRect *pRefRect,
- const OMX_U8 *pSrcCurrBuf,
- const OMXVCM4P2Coordinate *pSearchPointRefPos,
- OMX_INT rndVal,
- OMXVCMotionVector *pSrcDstMV,
- OMX_INT *pDstSAD,
- OMX_U8 BlockSize
-);
-/**
- * Function: armVCM4P2_PadMV
- *
- * Description:
- * Performs motion vector padding for a macroblock.
- *
- * Remarks:
- *
- * Parameters:
- * [in] pSrcDstMV pointer to motion vector buffer of the current
- * macroblock
- * [in] pTransp pointer to transparent status buffer of the
- * current macroblock
- * [out] pSrcDstMV pointer to motion vector buffer in which the
- * motion vectors have been padded
- * Return Value:
- * Standard OMXResult result. See enumeration for possible result codes.
- *
- */
-
-OMXResult armVCM4P2_PadMV(
- OMXVCMotionVector * pSrcDstMV,
- OMX_U8 * pTransp
-);
-
-/*
- * H.264 Specific Declarations
- */
-/* Defines */
-#define ARM_M4P10_Q_OFFSET (15)
-
-
-/* Dequant tables */
-
-extern const OMX_U8 armVCM4P10_PosToVCol4x4[16];
-extern const OMX_U8 armVCM4P10_PosToVCol2x2[4];
-extern const OMX_U8 armVCM4P10_VMatrix[6][3];
-extern const OMX_U32 armVCM4P10_MFMatrix[6][3];
-
-
-/*
- * Description:
- * This function perform the work required by the OpenMAX
- * DecodeCoeffsToPair function and DecodeChromaDCCoeffsToPair.
- * Since most of the code is common we share it here.
- *
- * Parameters:
- * [in] ppBitStream Double pointer to current byte in bit stream buffer
- * [in] pOffset Pointer to current bit position in the byte pointed
- * to by *ppBitStream
- * [in] sMaxNumCoeff Maximum number of non-zero coefficients in current
- * block (4,15 or 16)
- * [in] nTable Table number (0 to 4) according to the five columns
- * of Table 9-5 in the H.264 spec
- * [out] ppBitStream *ppBitStream is updated after each block is decoded
- * [out] pOffset *pOffset is updated after each block is decoded
- * [out] pNumCoeff Pointer to the number of nonzero coefficients in
- * this block
- * [out] ppPosCoefbuf Double pointer to destination residual
- * coefficient-position pair buffer
- * Return Value:
- * Standard omxError result. See enumeration for possible result codes.
-
- */
-
-OMXResult armVCM4P10_DecodeCoeffsToPair(
- const OMX_U8** ppBitStream,
- OMX_S32* pOffset,
- OMX_U8* pNumCoeff,
- OMX_U8**ppPosCoefbuf,
- OMX_INT nTable,
- OMX_INT sMaxNumCoeff
- );
-
-/*
- * Description:
- * Perform DC style intra prediction, averaging upper and left block
- *
- * Parameters:
- * [in] pSrcLeft Pointer to the buffer of 16 left coefficients:
- * p[x, y] (x = -1, y = 0..3)
- * [in] pSrcAbove Pointer to the buffer of 16 above coefficients:
- * p[x,y] (x = 0..3, y = -1)
- * [in] leftStep Step of left coefficient buffer
- * [in] dstStep Step of the destination buffer
- * [in] availability Neighboring 16x16 MB availability flag
- * [out] pDst Pointer to the destination buffer
- *
- * Return Value:
- * None
- */
-
-void armVCM4P10_PredictIntraDC4x4(
- const OMX_U8* pSrcLeft,
- const OMX_U8 *pSrcAbove,
- OMX_U8* pDst,
- OMX_INT leftStep,
- OMX_INT dstStep,
- OMX_S32 availability
-);
-
-/*
- * Description
- * Unpack a 4x4 block of coefficient-residual pair values
- *
- * Parameters:
- * [in] ppSrc Double pointer to residual coefficient-position pair
- * buffer output by CALVC decoding
- * [out] ppSrc *ppSrc is updated to the start of next non empty block
- * [out] pDst Pointer to unpacked 4x4 block
- */
-
-void armVCM4P10_UnpackBlock4x4(
- const OMX_U8 **ppSrc,
- OMX_S16* pDst
-);
-
-/*
- * Description
- * Unpack a 2x2 block of coefficient-residual pair values
- *
- * Parameters:
- * [in] ppSrc Double pointer to residual coefficient-position pair
- * buffer output by CALVC decoding
- * [out] ppSrc *ppSrc is updated to the start of next non empty block
- * [out] pDst Pointer to unpacked 4x4 block
- */
-
-void armVCM4P10_UnpackBlock2x2(
- const OMX_U8 **ppSrc,
- OMX_S16* pDst
-);
-
-/*
- * Description
- * Deblock one boundary pixel
- *
- * Parameters:
- * [in] pQ0 Pointer to pixel q0
- * [in] Step Step between pixels q0 and q1
- * [in] tC0 Edge threshold value
- * [in] alpha alpha threshold value
- * [in] beta beta threshold value
- * [in] bS deblocking strength
- * [in] ChromaFlag True for chroma blocks
- * [out] pQ0 Deblocked pixels
- *
- */
-
-void armVCM4P10_DeBlockPixel(
- OMX_U8 *pQ0, /* pointer to the pixel q0 */
- int Step, /* step between pixels q0 and q1 */
- int tC0, /* edge threshold value */
- int alpha, /* alpha */
- int beta, /* beta */
- int bS, /* deblocking strength */
- int ChromaFlag
-);
-
-/**
- * Function: armVCM4P10_InterpolateHalfHor_Luma
- *
- * Description:
- * This function performs interpolation for horizontal 1/2-pel positions
- *
- * Remarks:
- *
- * [in] pSrc Pointer to top-left corner of block used to interpolate
- in the reconstructed frame plane
- * [in] iSrcStep Step of the source buffer.
- * [in] iDstStep Step of the destination(interpolation) buffer.
- * [in] iWidth Width of the current block
- * [in] iHeight Height of the current block
- * [out] pDst Pointer to the interpolation buffer of the 1/2-pel
- *
- * Return Value:
- * Standard OMXResult value.
- *
- */
-
-OMXResult armVCM4P10_InterpolateHalfHor_Luma(
- const OMX_U8* pSrc,
- OMX_U32 iSrcStep,
- OMX_U8* pDst,
- OMX_U32 iDstStep,
- OMX_U32 iWidth,
- OMX_U32 iHeight
-);
-
-/**
- * Function: armVCM4P10_InterpolateHalfVer_Luma
- *
- * Description:
- * This function performs interpolation for vertical 1/2-pel positions
- * around a full-pel position.
- *
- * Remarks:
- *
- * [in] pSrc Pointer to top-left corner of block used to interpolate
- * in the reconstructed frame plane
- * [in] iSrcStep Step of the source buffer.
- * [in] iDstStep Step of the destination(interpolation) buffer.
- * [in] iWidth Width of the current block
- * [in] iHeight Height of the current block
- * [out] pDst Pointer to the interpolation buffer of the 1/2-pel
- *
- * Return Value:
- * Standard OMXResult value.
- *
- */
-
-OMXResult armVCM4P10_InterpolateHalfVer_Luma(
- const OMX_U8* pSrc,
- OMX_U32 iSrcStep,
- OMX_U8* pDst,
- OMX_U32 iDstStep,
- OMX_U32 iWidth,
- OMX_U32 iHeight
-);
-
-/**
- * Function: armVCM4P10_InterpolateHalfDiag_Luma
- *
- * Description:
- * This function performs interpolation for (1/2, 1/2) positions
- * around a full-pel position.
- *
- * Remarks:
- *
- * [in] pSrc Pointer to top-left corner of block used to interpolate
- * in the reconstructed frame plane
- * [in] iSrcStep Step of the source buffer.
- * [in] iDstStep Step of the destination(interpolation) buffer.
- * [in] iWidth Width of the current block
- * [in] iHeight Height of the current block
- * [out] pDst Pointer to the interpolation buffer of the (1/2,1/2)-pel
- *
- * Return Value:
- * Standard OMXResult value.
- *
- */
-
-OMXResult armVCM4P10_InterpolateHalfDiag_Luma(
- const OMX_U8* pSrc,
- OMX_U32 iSrcStep,
- OMX_U8* pDst,
- OMX_U32 iDstStep,
- OMX_U32 iWidth,
- OMX_U32 iHeight
-);
-
-/*
- * Description:
- * Transform Residual 4x4 Coefficients
- *
- * Parameters:
- * [in] pSrc Source 4x4 block
- * [out] pDst Destination 4x4 block
- *
- */
-
-void armVCM4P10_TransformResidual4x4(OMX_S16* pDst, OMX_S16 *pSrc);
-
-/*
- * Description:
- * Forward Transform Residual 4x4 Coefficients
- *
- * Parameters:
- * [in] pSrc Source 4x4 block
- * [out] pDst Destination 4x4 block
- *
- */
-
-void armVCM4P10_FwdTransformResidual4x4(OMX_S16* pDst, OMX_S16 *pSrc);
-
-OMX_INT armVCM4P10_CompareMotionCostToMV (
- OMX_S16 mvX,
- OMX_S16 mvY,
- OMXVCMotionVector diffMV,
- OMX_INT candSAD,
- OMXVCMotionVector *bestMV,
- OMX_U32 nLamda,
- OMX_S32 *pBestCost);
-
-/**
- * Function: armVCCOMM_SAD
- *
- * Description:
- * This function calculate the SAD for NxM blocks.
- *
- * Remarks:
- *
- * [in] pSrcOrg Pointer to the original block
- * [in] iStepOrg Step of the original block buffer
- * [in] pSrcRef Pointer to the reference block
- * [in] iStepRef Step of the reference block buffer
- * [in] iHeight Height of the block
- * [in] iWidth Width of the block
- * [out] pDstSAD Pointer of result SAD
- *
- * Return Value:
- * Standard OMXResult value.
- *
- */
-OMXResult armVCCOMM_SAD(
- const OMX_U8* pSrcOrg,
- OMX_U32 iStepOrg,
- const OMX_U8* pSrcRef,
- OMX_U32 iStepRef,
- OMX_S32* pDstSAD,
- OMX_U32 iHeight,
- OMX_U32 iWidth);
-
-/**
- * Function: armVCCOMM_Average
- *
- * Description:
- * This function calculates the average of two blocks and stores the result.
- *
- * Remarks:
- *
- * [in] pPred0 Pointer to the top-left corner of reference block 0
- * [in] pPred1 Pointer to the top-left corner of reference block 1
- * [in] iPredStep0 Step of reference block 0
- * [in] iPredStep1 Step of reference block 1
- * [in] iDstStep Step of the destination buffer
- * [in] iWidth Width of the blocks
- * [in] iHeight Height of the blocks
- * [out] pDstPred Pointer to the destination buffer
- *
- * Return Value:
- * Standard OMXResult value.
- *
- */
- OMXResult armVCCOMM_Average (
- const OMX_U8* pPred0,
- const OMX_U8* pPred1,
- OMX_U32 iPredStep0,
- OMX_U32 iPredStep1,
- OMX_U8* pDstPred,
- OMX_U32 iDstStep,
- OMX_U32 iWidth,
- OMX_U32 iHeight
-);
-
-/**
- * Function: armVCM4P10_SADQuar
- *
- * Description:
- * This function calculates the SAD between one block (pSrc) and the
- * average of the other two (pSrcRef0 and pSrcRef1)
- *
- * Remarks:
- *
- * [in] pSrc Pointer to the original block
- * [in] pSrcRef0 Pointer to reference block 0
- * [in] pSrcRef1 Pointer to reference block 1
- * [in] iSrcStep Step of the original block buffer
- * [in] iRefStep0 Step of reference block 0
- * [in] iRefStep1 Step of reference block 1
- * [in] iHeight Height of the block
- * [in] iWidth Width of the block
- * [out] pDstSAD Pointer of result SAD
- *
- * Return Value:
- * Standard OMXResult value.
- *
- */
-OMXResult armVCM4P10_SADQuar(
- const OMX_U8* pSrc,
- const OMX_U8* pSrcRef0,
- const OMX_U8* pSrcRef1,
- OMX_U32 iSrcStep,
- OMX_U32 iRefStep0,
- OMX_U32 iRefStep1,
- OMX_U32* pDstSAD,
- OMX_U32 iHeight,
- OMX_U32 iWidth
-);
-
-/**
- * Function: armVCM4P10_Interpolate_Chroma
- *
- * Description:
- * This function performs interpolation for chroma components.
- *
- * Remarks:
- *
- * [in] pSrc Pointer to top-left corner of block used to
- * interpolate in the reconstructed frame plane
- * [in] iSrcStep Step of the source buffer.
- * [in] iDstStep Step of the destination(interpolation) buffer.
- * [in] iWidth Width of the current block
- * [in] iHeight Height of the current block
- * [in] dx Fractional part of horizontal motion vector
- * component in 1/8 pixel unit (0~7)
- * [in] dy Fractional part of vertical motion vector
- * component in 1/8 pixel unit (0~7)
- * [out] pDst Pointer to the interpolation buffer
- *
- * Return Value:
- * Standard OMXResult value.
- *
- */
- OMXResult armVCM4P10_Interpolate_Chroma(
- OMX_U8 *pSrc,
- OMX_U32 iSrcStep,
- OMX_U8 *pDst,
- OMX_U32 iDstStep,
- OMX_U32 iWidth,
- OMX_U32 iHeight,
- OMX_U32 dx,
- OMX_U32 dy
-);
-
-/**
- * Function: armVCM4P10_Interpolate_Luma
- *
- * Description:
- * This function performs interpolation for luma components.
- *
- * Remarks:
- *
- * [in] pSrc Pointer to top-left corner of block used to
- * interpolate in the reconstructed frame plane
- * [in] iSrcStep Step of the source buffer.
- * [in] iDstStep Step of the destination(interpolation) buffer.
- * [in] iWidth Width of the current block
- * [in] iHeight Height of the current block
- * [in] dx Fractional part of horizontal motion vector
- * component in 1/4 pixel unit (0~3)
- * [in] dy Fractional part of vertical motion vector
- * component in 1/4 pixel unit (0~3)
- * [out] pDst Pointer to the interpolation buffer
- *
- * Return Value:
- * Standard OMXResult value.
- *
- */
-
- OMXResult armVCM4P10_Interpolate_Luma(
- const OMX_U8 *pSrc,
- OMX_U32 iSrcStep,
- OMX_U8 *pDst,
- OMX_U32 iDstStep,
- OMX_U32 iWidth,
- OMX_U32 iHeight,
- OMX_U32 dx,
- OMX_U32 dy
-);
-
-/**
- * Function: omxVCH264_DequantTransformACFromPair_U8_S16_C1_DLx
- *
- * Description:
- * Reconstruct the 4x4 residual block from coefficient-position pair buffer,
- * perform dequantisation and integer inverse transformation for 4x4 block of
- * residuals and update the pair buffer pointer to next non-empty block.
- *
- * Remarks:
- *
- * Parameters:
- * [in] ppSrc Double pointer to residual coefficient-position
- * pair buffer output by CALVC decoding
- * [in] pDC Pointer to the DC coefficient of this block, NULL
- * if it doesn't exist
- * [in] QP Quantization parameter
- * [in] AC Flag indicating if at least one non-zero coefficient exists
- * [out] pDst pointer to the reconstructed 4x4 block data
- *
- * Return Value:
- * Standard omxError result. See enumeration for possible result codes.
- *
- */
-
-OMXResult armVCM4P10_DequantTransformACFromPair_U8_S16_C1_DLx(
- OMX_U8 **ppSrc,
- OMX_S16 *pDst,
- OMX_INT QP,
- OMX_S16* pDC,
- int AC
-);
-
-#endif /*_armVideo_H_*/
-
-/*End of File*/
-