summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/on2/h264dec/omxdl/arm11/vc/api/omxVC.h
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/codecs/on2/h264dec/omxdl/arm11/vc/api/omxVC.h')
-rw-r--r--media/libstagefright/codecs/on2/h264dec/omxdl/arm11/vc/api/omxVC.h4381
1 files changed, 0 insertions, 4381 deletions
diff --git a/media/libstagefright/codecs/on2/h264dec/omxdl/arm11/vc/api/omxVC.h b/media/libstagefright/codecs/on2/h264dec/omxdl/arm11/vc/api/omxVC.h
deleted file mode 100644
index 7b3cc72..0000000
--- a/media/libstagefright/codecs/on2/h264dec/omxdl/arm11/vc/api/omxVC.h
+++ /dev/null
@@ -1,4381 +0,0 @@
-/**
- * File: omxVC.h
- * Brief: OpenMAX DL v1.0.2 - Video Coding library
- *
- * Copyright © 2005-2008 The Khronos Group Inc. All Rights Reserved.
- *
- * These materials are protected by copyright laws and contain material
- * proprietary to the Khronos Group, Inc. You may use these materials
- * for implementing Khronos specifications, without altering or removing
- * any trademark, copyright or other notice from the specification.
- *
- * Khronos Group makes no, and expressly disclaims any, representations
- * or warranties, express or implied, regarding these materials, including,
- * without limitation, any implied warranties of merchantability or fitness
- * for a particular purpose or non-infringement of any intellectual property.
- * Khronos Group makes no, and expressly disclaims any, warranties, express
- * or implied, regarding the correctness, accuracy, completeness, timeliness,
- * and reliability of these materials.
- *
- * Under no circumstances will the Khronos Group, or any of its Promoters,
- * Contributors or Members or their respective partners, officers, directors,
- * employees, agents or representatives be liable for any damages, whether
- * direct, indirect, special or consequential damages for lost revenues,
- * lost profits, or otherwise, arising from or in connection with these
- * materials.
- *
- * Khronos and OpenMAX are trademarks of the Khronos Group Inc.
- *
- */
-
-/* *****************************************************************************************/
-
-#ifndef _OMXVC_H_
-#define _OMXVC_H_
-
-#include "omxtypes.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* 6.1.1.1 Motion Vectors */
-/* In omxVC, motion vectors are represented as follows: */
-
-typedef struct {
- OMX_S16 dx;
- OMX_S16 dy;
-} OMXVCMotionVector;
-
-
-
-/**
- * Function: omxVCCOMM_Average_8x (6.1.3.1.1)
- *
- * Description:
- * This function calculates the average of two 8x4, 8x8, or 8x16 blocks. The
- * result is rounded according to (a+b+1)/2. The block average function can
- * be used in conjunction with half-pixel interpolation to obtain quarter
- * pixel motion estimates, as described in [ISO14496-10], subclause 8.4.2.2.1.
- *
- * Input Arguments:
- *
- * pPred0 - Pointer to the top-left corner of reference block 0
- * pPred1 - Pointer to the top-left corner of reference block 1
- * iPredStep0 - Step of reference block 0
- * iPredStep1 - Step of reference block 1
- * iDstStep - Step of the destination buffer.
- * iHeight - Height of the blocks
- *
- * Output Arguments:
- *
- * pDstPred - Pointer to the destination buffer. 8-byte aligned.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned under any of the following
- * conditions:
- * - one or more of the following pointers is NULL: pPred0, pPred1, or
- * pDstPred.
- * - pDstPred is not aligned on an 8-byte boundary.
- * - iPredStep0 <= 0 or iPredStep0 is not a multiple of 8.
- * - iPredStep1 <= 0 or iPredStep1 is not a multiple of 8.
- * - iDstStep <= 0 or iDstStep is not a multiple of 8.
- * - iHeight is not 4, 8, or 16.
- *
- */
-OMXResult omxVCCOMM_Average_8x (
- const OMX_U8 *pPred0,
- const OMX_U8 *pPred1,
- OMX_U32 iPredStep0,
- OMX_U32 iPredStep1,
- OMX_U8 *pDstPred,
- OMX_U32 iDstStep,
- OMX_U32 iHeight
-);
-
-
-
-/**
- * Function: omxVCCOMM_Average_16x (6.1.3.1.2)
- *
- * Description:
- * This function calculates the average of two 16x16 or 16x8 blocks. The
- * result is rounded according to (a+b+1)/2. The block average function can
- * be used in conjunction with half-pixel interpolation to obtain quarter
- * pixel motion estimates, as described in [ISO14496-10], subclause 8.4.2.2.1.
- *
- * Input Arguments:
- *
- * pPred0 - Pointer to the top-left corner of reference block 0
- * pPred1 - Pointer to the top-left corner of reference block 1
- * iPredStep0 - Step of reference block 0
- * iPredStep1 - Step of reference block 1
- * iDstStep - Step of the destination buffer
- * iHeight - Height of the blocks
- *
- * Output Arguments:
- *
- * pDstPred - Pointer to the destination buffer. 16-byte aligned.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned under any of the following
- * conditions:
- * - one or more of the following pointers is NULL: pPred0, pPred1, or
- * pDstPred.
- * - pDstPred is not aligned on a 16-byte boundary.
- * - iPredStep0 <= 0 or iPredStep0 is not a multiple of 16.
- * - iPredStep1 <= 0 or iPredStep1 is not a multiple of 16.
- * - iDstStep <= 0 or iDstStep is not a multiple of 16.
- * - iHeight is not 8 or 16.
- *
- */
-OMXResult omxVCCOMM_Average_16x (
- const OMX_U8 *pPred0,
- const OMX_U8 *pPred1,
- OMX_U32 iPredStep0,
- OMX_U32 iPredStep1,
- OMX_U8 *pDstPred,
- OMX_U32 iDstStep,
- OMX_U32 iHeight
-);
-
-
-
-/**
- * Function: omxVCCOMM_ExpandFrame_I (6.1.3.2.1)
- *
- * Description:
- * This function expands a reconstructed frame in-place. The unexpanded
- * source frame should be stored in a plane buffer with sufficient space
- * pre-allocated for edge expansion, and the input frame should be located in
- * the plane buffer center. This function executes the pixel expansion by
- * replicating source frame edge pixel intensities in the empty pixel
- * locations (expansion region) between the source frame edge and the plane
- * buffer edge. The width/height of the expansion regions on the
- * horizontal/vertical edges is controlled by the parameter iExpandPels.
- *
- * Input Arguments:
- *
- * pSrcDstPlane - pointer to the top-left corner of the frame to be
- * expanded; must be aligned on an 8-byte boundary.
- * iFrameWidth - frame width; must be a multiple of 8.
- * iFrameHeight -frame height; must be a multiple of 8.
- * iExpandPels - number of pixels to be expanded in the horizontal and
- * vertical directions; must be a multiple of 8.
- * iPlaneStep - distance, in bytes, between the start of consecutive lines
- * in the plane buffer; must be larger than or equal to
- * (iFrameWidth + 2 * iExpandPels).
- *
- * Output Arguments:
- *
- * pSrcDstPlane -Pointer to the top-left corner of the frame (NOT the
- * top-left corner of the plane); must be aligned on an 8-byte
- * boundary.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned under any of the following
- * conditions:
- * - pSrcDstPlane is NULL.
- * - pSrcDstPlane is not aligned on an 8-byte boundary.
- * - one of the following parameters is either equal to zero or is a
- * non-multiple of 8: iFrameHeight, iFrameWidth, iPlaneStep, or
- * iExpandPels.
- * - iPlaneStep < (iFrameWidth + 2 * iExpandPels).
- *
- */
-OMXResult omxVCCOMM_ExpandFrame_I (
- OMX_U8 *pSrcDstPlane,
- OMX_U32 iFrameWidth,
- OMX_U32 iFrameHeight,
- OMX_U32 iExpandPels,
- OMX_U32 iPlaneStep
-);
-
-
-
-/**
- * Function: omxVCCOMM_Copy8x8 (6.1.3.3.1)
- *
- * Description:
- * Copies the reference 8x8 block to the current block.
- *
- * Input Arguments:
- *
- * pSrc - pointer to the reference block in the source frame; must be
- * aligned on an 8-byte boundary.
- * step - distance between the starts of consecutive lines in the reference
- * frame, in bytes; must be a multiple of 8 and must be larger than
- * or equal to 8.
- *
- * Output Arguments:
- *
- * pDst - pointer to the destination block; must be aligned on an 8-byte
- * boundary.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned under any of the following
- * conditions:
- * - one or more of the following pointers is NULL: pSrc, pDst
- * - one or more of the following pointers is not aligned on an 8-byte
- * boundary: pSrc, pDst
- * - step <8 or step is not a multiple of 8.
- *
- */
-OMXResult omxVCCOMM_Copy8x8 (
- const OMX_U8 *pSrc,
- OMX_U8 *pDst,
- OMX_INT step
-);
-
-
-
-/**
- * Function: omxVCCOMM_Copy16x16 (6.1.3.3.2)
- *
- * Description:
- * Copies the reference 16x16 macroblock to the current macroblock.
- *
- * Input Arguments:
- *
- * pSrc - pointer to the reference macroblock in the source frame; must be
- * aligned on a 16-byte boundary.
- * step - distance between the starts of consecutive lines in the reference
- * frame, in bytes; must be a multiple of 16 and must be larger
- * than or equal to 16.
- *
- * Output Arguments:
- *
- * pDst - pointer to the destination macroblock; must be aligned on a
- * 16-byte boundary.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned under any of the following
- * conditions:
- * - one or more of the following pointers is NULL: pSrc, pDst
- * - one or more of the following pointers is not aligned on a 16-byte
- * boundary: pSrc, pDst
- * - step <16 or step is not a multiple of 16.
- *
- */
-OMXResult omxVCCOMM_Copy16x16 (
- const OMX_U8 *pSrc,
- OMX_U8 *pDst,
- OMX_INT step
-);
-
-
-
-/**
- * Function: omxVCCOMM_ComputeTextureErrorBlock_SAD (6.1.4.1.1)
- *
- * Description:
- * Computes texture error of the block; also returns SAD.
- *
- * Input Arguments:
- *
- * pSrc - pointer to the source plane; must be aligned on an 8-byte
- * boundary.
- * srcStep - step of the source plane
- * pSrcRef - pointer to the reference buffer, an 8x8 block; must be aligned
- * on an 8-byte boundary.
- *
- * Output Arguments:
- *
- * pDst - pointer to the destination buffer, an 8x8 block; must be aligned
- * on an 8-byte boundary.
- * pDstSAD - pointer to the Sum of Absolute Differences (SAD) value
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments
- * - At least one of the following
- * pointers is NULL: pSrc, pSrcRef, pDst and pDstSAD.
- * - pSrc is not 8-byte aligned.
- * - SrcStep <= 0 or srcStep is not a multiple of 8.
- * - pSrcRef is not 8-byte aligned.
- * - pDst is not 8-byte aligned.
- *
- */
-OMXResult omxVCCOMM_ComputeTextureErrorBlock_SAD (
- const OMX_U8 *pSrc,
- OMX_INT srcStep,
- const OMX_U8 *pSrcRef,
- OMX_S16 *pDst,
- OMX_INT *pDstSAD
-);
-
-
-
-/**
- * Function: omxVCCOMM_ComputeTextureErrorBlock (6.1.4.1.2)
- *
- * Description:
- * Computes the texture error of the block.
- *
- * Input Arguments:
- *
- * pSrc - pointer to the source plane. This should be aligned on an 8-byte
- * boundary.
- * srcStep - step of the source plane
- * pSrcRef - pointer to the reference buffer, an 8x8 block. This should be
- * aligned on an 8-byte boundary.
- *
- * Output Arguments:
- *
- * pDst - pointer to the destination buffer, an 8x8 block. This should be
- * aligned on an 8-byte boundary.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments:
- * - At least one of the following pointers is NULL:
- * pSrc, pSrcRef, pDst.
- * - pSrc is not 8-byte aligned.
- * - SrcStep <= 0 or srcStep is not a multiple of 8.
- * - pSrcRef is not 8-byte aligned.
- * - pDst is not 8-byte aligned
- *
- */
-OMXResult omxVCCOMM_ComputeTextureErrorBlock (
- const OMX_U8 *pSrc,
- OMX_INT srcStep,
- const OMX_U8 *pSrcRef,
- OMX_S16 *pDst
-);
-
-
-
-/**
- * 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
-);
-
-
-
-/**
- * Function: omxVCCOMM_SAD_16x (6.1.4.1.4)
- *
- * Description:
- * This function calculates the SAD for 16x16 and 16x8 blocks.
- *
- * Input Arguments:
- *
- * pSrcOrg - Pointer to the original block; must be aligned on a 16-byte
- * boundary.
- * iStepOrg - Step of the original block buffer
- * pSrcRef - Pointer to the reference block
- * iStepRef - Step of the reference block buffer
- * iHeight - Height of the block
- *
- * Output Arguments:
- *
- * pDstSAD - Pointer of result SAD
- *
- * 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:
- * pSrcOrg, pDstSAD, or pSrcRef
- * - pSrcOrg is not 16-byte aligned.
- * - iStepOrg <= 0 or iStepOrg is not a multiple of 16
- * - iStepRef <= 0 or iStepRef is not a multiple of 16
- * - iHeight is not 8 or 16
- *
- */
-OMXResult omxVCCOMM_SAD_16x (
- const OMX_U8 *pSrcOrg,
- OMX_U32 iStepOrg,
- const OMX_U8 *pSrcRef,
- OMX_U32 iStepRef,
- OMX_S32 *pDstSAD,
- OMX_U32 iHeight
-);
-
-
-
-/**
- * Function: omxVCCOMM_SAD_8x (6.1.4.1.5)
- *
- * Description:
- * This function calculates the SAD for 8x16, 8x8, 8x4 blocks.
- *
- * Input Arguments:
- *
- * pSrcOrg - Pointer to the original block; must be aligned on a 8-byte
- * boundary.
- * iStepOrg - Step of the original block buffer
- * pSrcRef - Pointer to the reference block
- * iStepRef - Step of the reference block buffer
- * iHeight - Height of the block
- *
- * Output Arguments:
- *
- * pDstSAD -Pointer of result SAD
- *
- * 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:
- * pSrcOrg, pDstSAD, or pSrcRef
- * - pSrcOrg is not 8-byte aligned.
- * - iStepOrg <= 0 or iStepOrg is not a multiple of 8
- * - iStepRef <= 0 or iStepRef is not a multiple of 8
- * - iHeight is not 4, 8 or 16
- *
- */
-OMXResult omxVCCOMM_SAD_8x (
- const OMX_U8 *pSrcOrg,
- OMX_U32 iStepOrg,
- const OMX_U8 *pSrcRef,
- OMX_U32 iStepRef,
- OMX_S32*pDstSAD,
- OMX_U32 iHeight
-);
-
-
-
-/* 6.2.1.1 Direction */
-/* The direction enumerator is used with functions that perform AC/DC prediction and zig-zag scan. */
-
-enum {
- OMX_VC_NONE = 0,
- OMX_VC_HORIZONTAL = 1,
- OMX_VC_VERTICAL = 2
-};
-
-
-
-/* 6.2.1.2 Bilinear Interpolation */
-/* The bilinear interpolation enumerator is used with motion estimation, motion compensation, and reconstruction functions. */
-
-enum {
- OMX_VC_INTEGER_PIXEL = 0, /* case a */
- OMX_VC_HALF_PIXEL_X = 1, /* case b */
- OMX_VC_HALF_PIXEL_Y = 2, /* case c */
- OMX_VC_HALF_PIXEL_XY = 3 /* case d */
-};
-
-
-
-/* 6.2.1.3 Neighboring Macroblock Availability */
-/* Neighboring macroblock availability is indicated using the following flags: */
-
-enum {
- OMX_VC_UPPER = 1, /** above macroblock is available */
- OMX_VC_LEFT = 2, /** left macroblock is available */
- OMX_VC_CENTER = 4,
- OMX_VC_RIGHT = 8,
- OMX_VC_LOWER = 16,
- OMX_VC_UPPER_LEFT = 32, /** above-left macroblock is available */
- OMX_VC_UPPER_RIGHT = 64, /** above-right macroblock is available */
- OMX_VC_LOWER_LEFT = 128,
- OMX_VC_LOWER_RIGHT = 256
-};
-
-
-
-/* 6.2.1.4 Video Components */
-/* A data type that enumerates video components is defined as follows: */
-
-typedef enum {
- OMX_VC_LUMINANCE, /** Luminance component */
- OMX_VC_CHROMINANCE /** chrominance component */
-} OMXVCM4P2VideoComponent;
-
-
-
-/* 6.2.1.5 MacroblockTypes */
-/* A data type that enumerates macroblock types is defined as follows: */
-
-typedef enum {
- OMX_VC_INTER = 0, /** P picture or P-VOP */
- OMX_VC_INTER_Q = 1, /** P picture or P-VOP */
- OMX_VC_INTER4V = 2, /** P picture or P-VOP */
- OMX_VC_INTRA = 3, /** I and P picture, I- and P-VOP */
- OMX_VC_INTRA_Q = 4, /** I and P picture, I- and P-VOP */
- OMX_VC_INTER4V_Q = 5 /** P picture or P-VOP (H.263)*/
-} OMXVCM4P2MacroblockType;
-
-
-
-/* 6.2.1.6 Coordinates */
-/* Coordinates are represented as follows: */
-
-typedef struct {
- OMX_INT x;
- OMX_INT y;
-} OMXVCM4P2Coordinate;
-
-
-
-/* 6.2.1.7 Motion Estimation Algorithms */
-/* A data type that enumerates motion estimation search methods is defined as follows: */
-
-typedef enum {
- OMX_VC_M4P2_FAST_SEARCH = 0, /** Fast motion search */
- OMX_VC_M4P2_FULL_SEARCH = 1 /** Full motion search */
-} OMXVCM4P2MEMode;
-
-
-
-/* 6.2.1.8 Motion Estimation Parameters */
-/* A data structure containing control parameters for
- * motion estimation functions is defined as follows:
- */
-
-typedef struct {
- OMX_INT searchEnable8x8; /** enables 8x8 search */
- OMX_INT halfPelSearchEnable; /** enables half-pel resolution */
- OMX_INT searchRange; /** search range */
- OMX_INT rndVal; /** rounding control; 0-disabled, 1-enabled*/
-} OMXVCM4P2MEParams;
-
-
-
-/* 6.2.1.9 Macroblock Information */
-/* A data structure containing macroblock parameters for
- * motion estimation functions is defined as follows:
- */
-
-typedef struct {
- OMX_S32 sliceId; /* slice number */
- OMXVCM4P2MacroblockType mbType; /* MB type: OMX_VC_INTRA, OMX_VC_INTER, or OMX_VC_INTER4 */
- OMX_S32 qp; /* quantization parameter*/
- OMX_U32 cbpy; /* CBP Luma */
- OMX_U32 cbpc; /* CBP Chroma */
- OMXVCMotionVector pMV0[2][2]; /* motion vector, represented using 1/2-pel units,
- * pMV0[blocky][blockx] (blocky = 0~1, blockx =0~1)
- */
- OMXVCMotionVector pMVPred[2][2]; /* motion vector prediction, represented using 1/2-pel units,
- * pMVPred[blocky][blockx] (blocky = 0~1, blockx = 0~1)
- */
- OMX_U8 pPredDir[2][2]; /* AC prediction direction:
- * OMX_VC_NONE, OMX_VC_VERTICAL, OMX_VC_HORIZONTAL
- */
-} OMXVCM4P2MBInfo, *OMXVCM4P2MBInfoPtr;
-
-
-
-/**
- * Function: omxVCM4P2_FindMVpred (6.2.3.1.1)
- *
- * Description:
- * Predicts a motion vector for the current block using the procedure
- * specified in [ISO14496-2], subclause 7.6.5. The resulting predicted MV is
- * returned in pDstMVPred. If the parameter pDstMVPredME if is not NULL then
- * the set of three MV candidates used for prediction is also returned,
- * otherwise pDstMVPredMEis NULL upon return.
- *
- * Input Arguments:
- *
- * pSrcMVCurMB - pointer to the MV buffer associated with the current Y
- * macroblock; a value of NULL indicates unavailability.
- * pSrcCandMV1 - pointer to the MV buffer containing the 4 MVs associated
- * with the MB located to the left of the current MB; set to NULL
- * if there is no MB to the left.
- * pSrcCandMV2 - pointer to the MV buffer containing the 4 MVs associated
- * with the MB located above the current MB; set to NULL if there
- * is no MB located above the current MB.
- * pSrcCandMV3 - pointer to the MV buffer containing the 4 MVs associated
- * with the MB located to the right and above the current MB; set
- * to NULL if there is no MB located to the above-right.
- * iBlk - the index of block in the current macroblock
- * pDstMVPredME - MV candidate return buffer; if set to NULL then
- * prediction candidate MVs are not returned and pDstMVPredME will
- * be NULL upon function return; if pDstMVPredME is non-NULL then it
- * must point to a buffer containing sufficient space for three
- * return MVs.
- *
- * Output Arguments:
- *
- * pDstMVPred - pointer to the predicted motion vector
- * pDstMVPredME - if non-NULL upon input then pDstMVPredME points upon
- * return to a buffer containing the three motion vector candidates
- * used for prediction as specified in [ISO14496-2], subclause
- * 7.6.5, otherwise if NULL upon input then pDstMVPredME is NULL
- * upon output.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned under any of the following
- * conditions:
- * - the pointer pDstMVPred is NULL
- * - the parameter iBlk does not fall into the range 0 <= iBlk<=3
- *
- */
-OMXResult omxVCM4P2_FindMVpred (
- const OMXVCMotionVector *pSrcMVCurMB,
- const OMXVCMotionVector *pSrcCandMV1,
- const OMXVCMotionVector *pSrcCandMV2,
- const OMXVCMotionVector *pSrcCandMV3,
- OMXVCMotionVector *pDstMVPred,
- OMXVCMotionVector *pDstMVPredME,
- OMX_INT iBlk
-);
-
-
-
-/**
- * Function: omxVCM4P2_IDCT8x8blk (6.2.3.2.1)
- *
- * Description:
- * Computes a 2D inverse DCT for a single 8x8 block, as defined in
- * [ISO14496-2].
- *
- * Input Arguments:
- *
- * pSrc - pointer to the start of the linearly arranged IDCT input buffer;
- * must be aligned on a 16-byte boundary. According to
- * [ISO14496-2], the input coefficient values should lie within the
- * range [-2048, 2047].
- *
- * Output Arguments:
- *
- * pDst - pointer to the start of the linearly arranged IDCT output buffer;
- * must be aligned on a 16-byte boundary.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments:
- * - pSrc or pDst is NULL.
- * - pSrc or pDst is not 16-byte aligned.
- *
- */
-OMXResult omxVCM4P2_IDCT8x8blk (
- const OMX_S16 *pSrc,
- OMX_S16 *pDst
-);
-
-
-
-/**
- * Function: omxVCM4P2_MEGetBufSize (6.2.4.1.1)
- *
- * Description:
- * Computes the size, in bytes, of the vendor-specific specification
- * structure for the following motion estimation functions:
- * BlockMatch_Integer_8x8, BlockMatch_Integer_16x16, and MotionEstimationMB.
- *
- * Input Arguments:
- *
- * MEmode - motion estimation mode; available modes are defined by the
- * enumerated type OMXVCM4P2MEMode
- * pMEParams - motion estimation parameters
- *
- * Output Arguments:
- *
- * pSize - pointer to the number of bytes required for the specification
- * structure
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - one or more of the following is true:
- * - an invalid value was specified for the parameter MEmode
- * - a negative or zero value was specified for the
- * parameter pMEParams->searchRange
- *
- */
-OMXResult omxVCM4P2_MEGetBufSize (
- OMXVCM4P2MEMode MEmode,
- const OMXVCM4P2MEParams *pMEParams,
- OMX_U32 *pSize
-);
-
-
-
-/**
- * Function: omxVCM4P2_MEInit (6.2.4.1.2)
- *
- * Description:
- * Initializes the vendor-specific specification structure required for the
- * following motion estimation functions: BlockMatch_Integer_8x8,
- * BlockMatch_Integer_16x16, and MotionEstimationMB. Memory for the
- * specification structure *pMESpec must be allocated prior to calling the
- * function, and should be aligned on a 4-byte boundary. Following
- * initialization by this function, the vendor-specific structure *pMESpec
- * should contain an implementation-specific representation of all motion
- * estimation parameters received via the structure pMEParams, for example
- * rndVal, searchRange, etc. The number of bytes required for the
- * specification structure can be determined using the function
- * omxVCM4P2_MEGetBufSize.
- *
- * Input Arguments:
- *
- * MEmode - motion estimation mode; available modes are defined by the
- * enumerated type OMXVCM4P2MEMode
- * pMEParams - motion estimation parameters
- * pMESpec - pointer to the uninitialized ME specification structure
- *
- * Output Arguments:
- *
- * pMESpec - pointer to the initialized ME specification structure
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - one or more of the following is true:
- * - an invalid value was specified for the parameter MEmode
- * - a negative or zero value was specified for the
- * parameter pMEParams->searchRange
- *
- */
-OMXResult omxVCM4P2_MEInit (
- OMXVCM4P2MEMode MEmode,
- const OMXVCM4P2MEParams*pMEParams,
- void *pMESpec
-);
-
-
-
-/**
- * Function: omxVCM4P2_BlockMatch_Integer_16x16 (6.2.4.2.1)
- *
- * 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.
- *
- * Input Arguments:
- *
- * 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.
- * refWidth - width of the reference plane
- * pRefRect - pointer to the valid reference plane rectangle; coordinates
- * are specified relative to the image origin. Rectangle
- * boundaries may extend beyond image boundaries if the image has
- * been padded. For example, if padding extends 4 pixels beyond
- * frame border, then the value for the left border could be set to
- * -4.
- * pSrcCurrBuf - pointer to the current block in the current macroblock
- * buffer extracted from the original plane (linear array, 256
- * entries); must be aligned on a 16-byte boundary. The number of
- * bytes between lines (step) is 16.
- * pCurrPointPos - position of the current macroblock in the current plane
- * pSrcPreMV - pointer to predicted motion vector; NULL indicates no
- * predicted MV
- * pSrcPreSAD - pointer to SAD associated with the predicted MV (referenced
- * by pSrcPreMV); may be set to NULL if unavailable.
- * pMESpec - vendor-specific motion estimation specification structure;
- * must have been allocated and then initialized using
- * omxVCM4P2_MEInit prior to calling the block matching function.
- *
- * Output Arguments:
- *
- * pDstMV - pointer to estimated MV
- * pDstSAD - pointer to minimum SAD
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments. Returned if one of the following
- * conditions is true:
- * - at least one of the following pointers is NULL: pSrcRefBuf,
- * pRefRect, pSrcCurrBuff, pCurrPointPos, pDstMV, pDstSAD or
- * pMESpec, or
- * - pSrcCurrBuf is not 16-byte aligned
- *
- */
-OMXResult omxVCM4P2_BlockMatch_Integer_16x16 (
- 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
-);
-
-
-
-/**
- * Function: omxVCM4P2_BlockMatch_Integer_8x8 (6.2.4.2.2)
- *
- * Description:
- * Performs an 8x8 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.
- *
- * Input Arguments:
- *
- * pSrcRefBuf - pointer to the reference Y plane; points to the reference
- * block that corresponds to the location of the current 8x8 block
- * in the current plane.
- * refWidth - width of the reference plane
- * pRefRect - pointer to the valid reference plane rectangle; coordinates
- * are specified relative to the image origin. Rectangle
- * boundaries may extend beyond image boundaries if the image has
- * been padded.
- * pSrcCurrBuf - pointer to the current block in the current macroblock
- * buffer extracted from the original plane (linear array, 128
- * entries); must be aligned on an 8-byte boundary. The number of
- * bytes between lines (step) is 16 bytes.
- * pCurrPointPos - position of the current block in the current plane
- * pSrcPreMV - pointer to predicted motion vector; NULL indicates no
- * predicted MV
- * pSrcPreSAD - pointer to SAD associated with the predicted MV (referenced
- * by pSrcPreMV); may be set to NULL if unavailable.
- * pMESpec - vendor-specific motion estimation specification structure;
- * must have been allocated and then initialized using
- * omxVCM4P2_MEInit prior to calling the block matching function.
- *
- * Output Arguments:
- *
- * pDstMV - pointer to estimated MV
- * pDstSAD - pointer to minimum SAD
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments. Returned if one of the following
- * conditions is true:
- * - at least one of the following pointers is NULL: pSrcRefBuf,
- * pRefRect, pSrcCurrBuff, pCurrPointPos, pDstMV, pDstSAD or
- * pMESpec, or
- * - pSrcCurrBuf is not 8-byte aligned
- *
- */
-OMXResult omxVCM4P2_BlockMatch_Integer_8x8 (
- 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
-);
-
-
-
-/**
- * Function: omxVCM4P2_BlockMatch_Half_16x16 (6.2.4.2.3)
- *
- * 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.
- *
- * Input Arguments:
- *
- * pSrcRefBuf - pointer to the reference Y plane; points to the reference
- * macroblock that corresponds to the location of the current
- * macroblock in the current plane.
- * refWidth - width of the reference plane
- * pRefRect - reference plane valid region rectangle
- * pSrcCurrBuf - pointer to the current block in the current macroblock
- * buffer extracted from the original plane (linear array, 256
- * entries); must be aligned on a 16-byte boundary. The number of
- * bytes between lines (step) is 16.
- * pSearchPointRefPos - position of the starting point for half pixel
- * search (specified in terms of integer pixel units) in the
- * reference plane, i.e., the reference position pointed to by the
- * predicted motion vector.
- * rndVal - rounding control parameter: 0 - disabled; 1 - enabled.
- * pSrcDstMV - pointer to the initial MV estimate; typically generated
- * during a prior 16X16 integer search; specified in terms of
- * half-pixel units.
- *
- * Output Arguments:
- *
- * pSrcDstMV - pointer to estimated MV
- * pDstSAD - pointer to minimum SAD
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments. Returned if one of the following
- * conditions is true:
- * - at least one of the following pointers is NULL: pSrcRefBuf,
- * pRefRect, pSrcCurrBuff, pSearchPointRefPos, pSrcDstMV.
- * - pSrcCurrBuf is not 16-byte aligned, or
- *
- */
-OMXResult omxVCM4P2_BlockMatch_Half_16x16 (
- 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
-);
-
-
-
-/**
- * Function: omxVCM4P2_BlockMatch_Half_8x8 (6.2.4.2.4)
- *
- * Description:
- * Performs an 8x8 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
- * 8x8 integer search prior to calling BlockMatch_Half_8x8. The function
- * BlockMatch_Integer_8x8 may be used for integer motion estimation.
- *
- * Input Arguments:
- *
- * pSrcRefBuf - pointer to the reference Y plane; points to the reference
- * block that corresponds to the location of the current 8x8 block
- * in the current plane.
- * refWidth - width of the reference plane
- * pRefRect - reference plane valid region rectangle
- * pSrcCurrBuf - pointer to the current block in the current macroblock
- * buffer extracted from the original plane (linear array, 128
- * entries); must be aligned on a 8-byte boundary. The number of
- * bytes between lines (step) is 16.
- * pSearchPointRefPos - position of the starting point for half pixel
- * search (specified in terms of integer pixel units) in the
- * reference plane.
- * rndVal - rounding control parameter: 0 - disabled; 1 - enabled.
- * pSrcDstMV - pointer to the initial MV estimate; typically generated
- * during a prior 8x8 integer search, specified in terms of
- * half-pixel units.
- *
- * Output Arguments:
- *
- * pSrcDstMV - pointer to estimated MV
- * pDstSAD - pointer to minimum SAD
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments. Returned if one of the following
- * conditions is true:
- * - at least one of the following pointers is NULL:
- * pSrcRefBuf, pRefRect, pSrcCurrBuff, pSearchPointRefPos, pSrcDstMV
- * - pSrcCurrBuf is not 8-byte aligned
- *
- */
-OMXResult omxVCM4P2_BlockMatch_Half_8x8 (
- 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
-);
-
-
-
-/**
- * Function: omxVCM4P2_MotionEstimationMB (6.2.4.3.1)
- *
- * Description:
- * Performs motion search for a 16x16 macroblock. Selects best motion search
- * strategy from among inter-1MV, inter-4MV, and intra modes. Supports
- * integer and half pixel resolution.
- *
- * Input Arguments:
- *
- * pSrcCurrBuf - pointer to the top-left corner of the current MB in the
- * original picture plane; must be aligned on a 16-byte boundary.
- * The function does not expect source data outside the region
- * bounded by the MB to be available; for example it is not
- * necessary for the caller to guarantee the availability of
- * pSrcCurrBuf[-SrcCurrStep], i.e., the row of pixels above the MB
- * to be processed.
- * srcCurrStep - width of the original picture plane, in terms of full
- * pixels; must be a multiple of 16.
- * pSrcRefBuf - pointer to the reference Y plane; points to the reference
- * plane location corresponding to the location of the current
- * macroblock in the current plane; must be aligned on a 16-byte
- * boundary.
- * srcRefStep - width of the reference picture plane, in terms of full
- * pixels; must be a multiple of 16.
- * pRefRect - reference plane valid region rectangle, specified relative to
- * the image origin
- * pCurrPointPos - position of the current macroblock in the current plane
- * pMESpec - pointer to the vendor-specific motion estimation specification
- * structure; must be allocated and then initialized using
- * omxVCM4P2_MEInit prior to calling this function.
- * pMBInfo - array, of dimension four, containing pointers to information
- * associated with four nearby MBs:
- * - pMBInfo[0] - pointer to left MB information
- * - pMBInfo[1] - pointer to top MB information
- * - pMBInfo[2] - pointer to top-left MB information
- * - pMBInfo[3] - pointer to top-right MB information
- * Any pointer in the array may be set equal to NULL if the
- * corresponding MB doesn't exist. For each MB, the following structure
- * members are used:
- * - mbType - macroblock type, either OMX_VC_INTRA, OMX_VC_INTER, or
- * OMX_VC_INTER4V
- * - pMV0[2][2] - estimated motion vectors; represented
- * in 1/2 pixel units
- * - sliceID - number of the slice to which the MB belongs
- * pSrcDstMBCurr - pointer to information structure for the current MB.
- * The following entries should be set prior to calling the
- * function: sliceID - the number of the slice the to which the
- * current MB belongs. The structure elements cbpy and cbpc are
- * ignored.
- *
- * Output Arguments:
- *
- * pSrcDstMBCurr - pointer to updated information structure for the current
- * MB after MB-level motion estimation has been completed. The
- * following structure members are updated by the ME function:
- * - mbType - macroblock type: OMX_VC_INTRA, OMX_VC_INTER, or
- * OMX_VC_INTER4V.
- * - pMV0[2][2] - estimated motion vectors; represented in
- * terms of 1/2 pel units.
- * - pMVPred[2][2] - predicted motion vectors; represented
- * in terms of 1/2 pel units.
- * The structure members cbpy and cbpc are not updated by the function.
- * pDstSAD - pointer to the minimum SAD for INTER1V, or sum of minimum SADs
- * for INTER4V
- * pDstBlockSAD - pointer to an array of SAD values for each of the four
- * 8x8 luma blocks in the MB. The block SADs are in scan order for
- * each MB.
- *
- * 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: pSrcCurrBuf,
- * pSrcRefBuf, pRefRect, pCurrPointPos, pMBInter, pMBIntra,
- * pSrcDstMBCurr, or pDstSAD.
- *
- */
-OMXResult omxVCM4P2_MotionEstimationMB (
- const OMX_U8 *pSrcCurrBuf,
- OMX_S32 srcCurrStep,
- const OMX_U8 *pSrcRefBuf,
- OMX_S32 srcRefStep,
- const OMXRect*pRefRect,
- const OMXVCM4P2Coordinate *pCurrPointPos,
- void *pMESpec,
- const OMXVCM4P2MBInfoPtr *pMBInfo,
- OMXVCM4P2MBInfo *pSrcDstMBCurr,
- OMX_U16 *pDstSAD,
- OMX_U16 *pDstBlockSAD
-);
-
-
-
-/**
- * Function: omxVCM4P2_DCT8x8blk (6.2.4.4.1)
- *
- * Description:
- * Computes a 2D forward DCT for a single 8x8 block, as defined in
- * [ISO14496-2].
- *
- * Input Arguments:
- *
- * pSrc - pointer to the start of the linearly arranged input buffer; must
- * be aligned on a 16-byte boundary. Input values (pixel
- * intensities) are valid in the range [-255,255].
- *
- * Output Arguments:
- *
- * pDst - pointer to the start of the linearly arranged output buffer; must
- * be aligned on a 16-byte boundary.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments, returned if:
- * - pSrc or pDst is NULL.
- * - pSrc or pDst is not 16-byte aligned.
- *
- */
-OMXResult omxVCM4P2_DCT8x8blk (
- const OMX_S16 *pSrc,
- OMX_S16 *pDst
-);
-
-
-
-/**
- * Function: omxVCM4P2_QuantIntra_I (6.2.4.4.2)
- *
- * Description:
- * Performs quantization on intra block coefficients. This function supports
- * bits_per_pixel == 8.
- *
- * Input Arguments:
- *
- * pSrcDst - pointer to the input intra block coefficients; must be aligned
- * on a 16-byte boundary.
- * QP - quantization parameter (quantizer_scale).
- * blockIndex - block index indicating the component type and position,
- * valid in the range 0 to 5, as defined in [ISO14496-2], subclause
- * 6.1.3.8.
- * shortVideoHeader - binary flag indicating presence of
- * short_video_header; shortVideoHeader==1 selects linear intra DC
- * mode, and shortVideoHeader==0 selects non linear intra DC mode.
- *
- * Output Arguments:
- *
- * pSrcDst - pointer to the output (quantized) interblock coefficients.
- * When shortVideoHeader==1, AC coefficients are saturated on the
- * interval [-127, 127], and DC coefficients are saturated on the
- * interval [1, 254]. When shortVideoHeader==0, AC coefficients
- * are saturated on the interval [-2047, 2047].
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments:
- * - pSrcDst is NULL.
- * - blockIndex < 0 or blockIndex >= 10
- * - QP <= 0 or QP >= 32.
- *
- */
-OMXResult omxVCM4P2_QuantIntra_I (
- OMX_S16 *pSrcDst,
- OMX_U8 QP,
- OMX_INT blockIndex,
- OMX_INT shortVideoHeader
-);
-
-
-
-/**
- * Function: omxVCM4P2_QuantInter_I (6.2.4.4.3)
- *
- * Description:
- * Performs quantization on an inter coefficient block; supports
- * bits_per_pixel == 8.
- *
- * Input Arguments:
- *
- * pSrcDst - pointer to the input inter block coefficients; must be aligned
- * on a 16-byte boundary.
- * QP - quantization parameter (quantizer_scale)
- * shortVideoHeader - binary flag indicating presence of short_video_header;
- * shortVideoHeader==1 selects linear intra DC mode, and
- * shortVideoHeader==0 selects non linear intra DC mode.
- *
- * Output Arguments:
- *
- * pSrcDst - pointer to the output (quantized) interblock coefficients.
- * When shortVideoHeader==1, AC coefficients are saturated on the
- * interval [-127, 127], and DC coefficients are saturated on the
- * interval [1, 254]. When shortVideoHeader==0, AC coefficients
- * are saturated on the interval [-2047, 2047].
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments:
- * - pSrcDst is NULL.
- * - QP <= 0 or QP >= 32.
- *
- */
-OMXResult omxVCM4P2_QuantInter_I (
- OMX_S16 *pSrcDst,
- OMX_U8 QP,
- OMX_INT shortVideoHeader
-);
-
-
-
-/**
- * Function: omxVCM4P2_TransRecBlockCoef_intra (6.2.4.4.4)
- *
- * Description:
- * Quantizes the DCT coefficients, implements intra block AC/DC coefficient
- * prediction, and reconstructs the current intra block texture for prediction
- * on the next frame. Quantized row and column coefficients are returned in
- * the updated coefficient buffers.
- *
- * Input Arguments:
- *
- * pSrc - pointer to the pixels of current intra block; must be aligned on
- * an 8-byte boundary.
- * pPredBufRow - pointer to the coefficient row buffer containing
- * ((num_mb_per_row * 2 + 1) * 8) elements of type OMX_S16.
- * Coefficients are organized into blocks of eight as described
- * below (Internal Prediction Coefficient Update Procedures). The
- * DC coefficient is first, and the remaining buffer locations
- * contain the quantized AC coefficients. Each group of eight row
- * buffer elements combined with one element eight elements ahead
- * contains the coefficient predictors of the neighboring block
- * that is spatially above or to the left of the block currently to
- * be decoded. A negative-valued DC coefficient indicates that this
- * neighboring block is not INTRA-coded or out of bounds, and
- * therefore the AC and DC coefficients are invalid. Pointer must
- * be aligned on an 8-byte boundary.
- * pPredBufCol - pointer to the prediction coefficient column buffer
- * containing 16 elements of type OMX_S16. Coefficients are
- * organized as described in section 6.2.2.5. Pointer must be
- * aligned on an 8-byte boundary.
- * pSumErr - pointer to a flag indicating whether or not AC prediction is
- * required; AC prediction is enabled if *pSumErr >=0, but the
- * value is not used for coefficient prediction, i.e., the sum of
- * absolute differences starts from 0 for each call to this
- * function. Otherwise AC prediction is disabled if *pSumErr < 0 .
- * blockIndex - block index indicating the component type and position, as
- * defined in [ISO14496-2], subclause 6.1.3.8.
- * curQp - quantization parameter of the macroblock to which the current
- * block belongs
- * pQpBuf - pointer to a 2-element quantization parameter buffer; pQpBuf[0]
- * contains the quantization parameter associated with the 8x8
- * block left of the current block (QPa), and pQpBuf[1] contains
- * the quantization parameter associated with the 8x8 block above
- * the current block (QPc). In the event that the corresponding
- * block is outside of the VOP bound, the Qp value will not affect
- * the intra prediction process, as described in [ISO14496-2],
- * sub-clause 7.4.3.3, Adaptive AC Coefficient Prediction.
- * srcStep - width of the source buffer; must be a multiple of 8.
- * dstStep - width of the reconstructed destination buffer; must be a
- * multiple of 16.
- * shortVideoHeader - binary flag indicating presence of
- * short_video_header; shortVideoHeader==1 selects linear intra DC
- * mode, and shortVideoHeader==0 selects non linear intra DC mode.
- *
- * Output Arguments:
- *
- * pDst - pointer to the quantized DCT coefficient buffer; pDst[0] contains
- * the predicted DC coefficient; the remaining entries contain the
- * quantized AC coefficients (without prediction). The pointer
- * pDstmust be aligned on a 16-byte boundary.
- * pRec - pointer to the reconstructed texture; must be aligned on an
- * 8-byte boundary.
- * pPredBufRow - pointer to the updated coefficient row buffer
- * pPredBufCol - pointer to the updated coefficient column buffer
- * pPreACPredict - if prediction is enabled, the parameter points to the
- * start of the buffer containing the coefficient differences for
- * VLC encoding. The entry pPreACPredict[0]indicates prediction
- * direction for the current block and takes one of the following
- * values: OMX_VC_NONE (prediction disabled), OMX_VC_HORIZONTAL, or
- * OMX_VC_VERTICAL. The entries
- * pPreACPredict[1]-pPreACPredict[7]contain predicted AC
- * coefficients. If prediction is disabled (*pSumErr<0) then the
- * contents of this buffer are undefined upon return from the
- * function
- * pSumErr - pointer to the value of the accumulated AC coefficient errors,
- * i.e., sum of the absolute differences between predicted and
- * unpredicted AC coefficients
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - Bad arguments:
- * - At least one of the following pointers is NULL: pSrc, pDst, pRec,
- * pCoefBufRow, pCoefBufCol, pQpBuf, pPreACPredict, pSumErr.
- * - blockIndex < 0 or blockIndex >= 10;
- * - curQP <= 0 or curQP >= 32.
- * - srcStep, or dstStep <= 0 or not a multiple of 8.
- * - pDst is not 16-byte aligned: .
- * - At least one of the following pointers is not 8-byte aligned:
- * pSrc, pRec.
- *
- * Note: The coefficient buffers must be updated in accordance with the
- * update procedures defined in section in 6.2.2.
- *
- */
-OMXResult omxVCM4P2_TransRecBlockCoef_intra (
- const OMX_U8 *pSrc,
- OMX_S16 *pDst,
- OMX_U8 *pRec,
- OMX_S16 *pPredBufRow,
- OMX_S16 *pPredBufCol,
- OMX_S16 *pPreACPredict,
- OMX_INT *pSumErr,
- OMX_INT blockIndex,
- OMX_U8 curQp,
- const OMX_U8 *pQpBuf,
- OMX_INT srcStep,
- OMX_INT dstStep,
- OMX_INT shortVideoHeader
-);
-
-
-
-/**
- * Function: omxVCM4P2_TransRecBlockCoef_inter (6.2.4.4.5)
- *
- * Description:
- * Implements DCT, and quantizes the DCT coefficients of the inter block
- * while reconstructing the texture residual. There is no boundary check for
- * the bit stream buffer.
- *
- * Input Arguments:
- *
- * pSrc -pointer to the residuals to be encoded; must be aligned on an
- * 16-byte boundary.
- * QP - quantization parameter.
- * shortVideoHeader - binary flag indicating presence of short_video_header;
- * shortVideoHeader==1 selects linear intra DC mode, and
- * shortVideoHeader==0 selects non linear intra DC mode.
- *
- * Output Arguments:
- *
- * pDst - pointer to the quantized DCT coefficients buffer; must be aligned
- * on a 16-byte boundary.
- * pRec - pointer to the reconstructed texture residuals; must be aligned
- * on a 16-byte boundary.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments:
- * - At least one of the following pointers is either NULL or
- * not 16-byte aligned:
- * - pSrc
- * - pDst
- * - pRec
- * - QP <= 0 or QP >= 32.
- *
- */
-OMXResult omxVCM4P2_TransRecBlockCoef_inter (
- const OMX_S16 *pSrc,
- OMX_S16 *pDst,
- OMX_S16 *pRec,
- OMX_U8 QP,
- OMX_INT shortVideoHeader
-);
-
-
-
-/**
- * Function: omxVCM4P2_EncodeVLCZigzag_IntraDCVLC (6.2.4.5.2)
- *
- * Description:
- * Performs zigzag scan and VLC encoding of AC and DC coefficients for one
- * intra block. Two versions of the function (DCVLC and ACVLC) are provided
- * in order to support the two different methods of processing DC
- * coefficients, as described in [ISO14496-2], subclause 7.4.1.4, "Intra DC
- * Coefficient Decoding for the Case of Switched VLC Encoding".
- *
- * Input Arguments:
- *
- * ppBitStream - double pointer to the current byte in the bitstream
- * pBitOffset - pointer to the bit position in the byte pointed by
- * *ppBitStream. Valid within 0 to 7.
- * pQDctBlkCoef - pointer to the quantized DCT coefficient
- * predDir - AC prediction direction, which is used to decide the zigzag
- * scan pattern; takes one of the following values:
- * - OMX_VC_NONE - AC prediction not used.
- * Performs classical zigzag scan.
- * - OMX_VC_HORIZONTAL - Horizontal prediction.
- * Performs alternate-vertical zigzag scan.
- * - OMX_VC_VERTICAL - Vertical prediction.
- * Performs alternate-horizontal zigzag scan.
- * pattern - block pattern which is used to decide whether this block is
- * encoded
- * 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.
- * videoComp - video component type (luminance, chrominance) of the current
- * block
- *
- * Output Arguments:
- *
- * ppBitStream - *ppBitStream is updated after the block is encoded, so
- * that it points to the current byte in the bit stream buffer.
- * pBitOffset - *pBitOffset is updated so that it points to the current bit
- * position in the byte pointed by *ppBitStream.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - Bad arguments:
- * - At least one of the following pointers is NULL: ppBitStream,
- * *ppBitStream, pBitOffset, pQDctBlkCoef.
- * - *pBitOffset < 0, or *pBitOffset >7.
- * - PredDir is not one of: OMX_VC_NONE, OMX_VC_HORIZONTAL, or
- * OMX_VC_VERTICAL.
- * - VideoComp is not one component of enum OMXVCM4P2VideoComponent.
- *
- */
-OMXResult omxVCM4P2_EncodeVLCZigzag_IntraDCVLC (
- OMX_U8 **ppBitStream,
- OMX_INT *pBitOffset,
- const OMX_S16 *pQDctBlkCoef,
- OMX_U8 predDir,
- OMX_U8 pattern,
- OMX_INT shortVideoHeader,
- OMXVCM4P2VideoComponent videoComp
-);
-
-
-
-/**
- * Function: omxVCM4P2_EncodeVLCZigzag_IntraACVLC (6.2.4.5.2)
- *
- * Description:
- * Performs zigzag scan and VLC encoding of AC and DC coefficients for one
- * intra block. Two versions of the function (DCVLC and ACVLC) are provided
- * in order to support the two different methods of processing DC
- * coefficients, as described in [ISO14496-2], subclause 7.4.1.4, Intra DC
- * Coefficient Decoding for the Case of Switched VLC Encoding.
- *
- * Input Arguments:
- *
- * ppBitStream - double pointer to the current byte in the bitstream
- * pBitOffset - pointer to the bit position in the byte pointed by
- * *ppBitStream. Valid within 0 to 7.
- * pQDctBlkCoef - pointer to the quantized DCT coefficient
- * predDir - AC prediction direction, which is used to decide the zigzag
- * scan pattern; takes one of the following values:
- * - OMX_VC_NONE - AC prediction not used.
- * Performs classical zigzag scan.
- * - OMX_VC_HORIZONTAL - Horizontal prediction.
- * Performs alternate-vertical zigzag scan.
- * - OMX_VC_VERTICAL - Vertical prediction.
- * Performs alternate-horizontal zigzag scan.
- * pattern - block pattern which is used to decide whether this block is
- * encoded
- * 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.
- *
- * Output Arguments:
- *
- * ppBitStream - *ppBitStream is updated after the block is encoded, so
- * that it points to the current byte in the bit stream buffer.
- * pBitOffset - *pBitOffset is updated so that it points to the current bit
- * position in the byte pointed by *ppBitStream.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - Bad arguments:
- * - At least one of the following pointers is NULL: ppBitStream,
- * *ppBitStream, pBitOffset, pQDctBlkCoef.
- * - *pBitOffset < 0, or *pBitOffset >7.
- * - PredDir is not one of: OMX_VC_NONE, OMX_VC_HORIZONTAL, or
- * OMX_VC_VERTICAL.
- * - VideoComp is not one component of enum OMXVCM4P2VideoComponent.
- *
- */
-OMXResult omxVCM4P2_EncodeVLCZigzag_IntraACVLC (
- OMX_U8 **ppBitStream,
- OMX_INT *pBitOffset,
- const OMX_S16 *pQDctBlkCoef,
- OMX_U8 predDir,
- OMX_U8 pattern,
- OMX_INT shortVideoHeader
-);
-
-
-
-/**
- * Function: omxVCM4P2_EncodeVLCZigzag_Inter (6.2.4.5.3)
- *
- * Description:
- * Performs classical zigzag scanning and VLC encoding for one inter block.
- *
- * Input Arguments:
- *
- * ppBitStream - pointer to the pointer to the current byte in the bit
- * stream
- * pBitOffset - pointer to the bit position in the byte pointed by
- * *ppBitStream. Valid within 0 to 7
- * pQDctBlkCoef - pointer to the quantized DCT coefficient
- * pattern - block pattern which is used to decide whether this block is
- * encoded
- * 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.
- *
- * Output Arguments:
- *
- * ppBitStream - *ppBitStream is updated after the block is encoded so that
- * it points to the current byte in the bit stream buffer.
- * pBitOffset - *pBitOffset is updated so that it points to the current bit
- * position in the byte pointed by *ppBitStream.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - Bad arguments
- * - At least one of the pointers: is NULL: ppBitStream, *ppBitStream,
- * pBitOffset, pQDctBlkCoef
- * - *pBitOffset < 0, or *pBitOffset >7.
- *
- */
-OMXResult omxVCM4P2_EncodeVLCZigzag_Inter (
- OMX_U8 **ppBitStream,
- OMX_INT *pBitOffset,
- const OMX_S16 *pQDctBlkCoef,
- OMX_U8 pattern,
- OMX_INT shortVideoHeader
-);
-
-
-
-/**
- * Function: omxVCM4P2_EncodeMV (6.2.4.5.4)
- *
- * Description:
- * Predicts a motion vector for the current macroblock, encodes the
- * difference, and writes the output to the stream buffer. The input MVs
- * pMVCurMB, pSrcMVLeftMB, pSrcMVUpperMB, and pSrcMVUpperRightMB should lie
- * within the ranges associated with the input parameter fcodeForward, as
- * described in [ISO14496-2], subclause 7.6.3. This function provides a
- * superset of the functionality associated with the function
- * omxVCM4P2_FindMVpred.
- *
- * Input Arguments:
- *
- * ppBitStream - double pointer to the current byte in the bitstream buffer
- * pBitOffset - index of the first free (next available) bit in the stream
- * buffer referenced by *ppBitStream, valid in the range 0 to 7.
- * pMVCurMB - pointer to the current macroblock motion vector; a value of
- * NULL indicates unavailability.
- * pSrcMVLeftMB - pointer to the source left macroblock motion vector; a
- * value of NULLindicates unavailability.
- * pSrcMVUpperMB - pointer to source upper macroblock motion vector; a
- * value of NULL indicates unavailability.
- * pSrcMVUpperRightMB - pointer to source upper right MB motion vector; a
- * value of NULL indicates unavailability.
- * fcodeForward - an integer with values from 1 to 7; used in encoding
- * motion vectors related to search range, as described in
- * [ISO14496-2], subclause 7.6.3.
- * MBType - macro block type, valid in the range 0 to 5
- *
- * Output Arguments:
- *
- * ppBitStream - updated pointer to the current byte in the bit stream
- * buffer
- * pBitOffset - updated index of the next available bit position in stream
- * buffer referenced by *ppBitStream
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments
- * - At least one of the following pointers is NULL: ppBitStream,
- * *ppBitStream, pBitOffset, pMVCurMB
- * - *pBitOffset < 0, or *pBitOffset >7.
- * - fcodeForward <= 0, or fcodeForward > 7, or MBType < 0.
- *
- */
-OMXResult omxVCM4P2_EncodeMV (
- OMX_U8 **ppBitStream,
- OMX_INT *pBitOffset,
- const OMXVCMotionVector *pMVCurMB,
- const OMXVCMotionVector*pSrcMVLeftMB,
- const OMXVCMotionVector *pSrcMVUpperMB,
- const OMXVCMotionVector *pSrcMVUpperRightMB,
- OMX_INT fcodeForward,
- OMXVCM4P2MacroblockType MBType
-);
-
-
-
-/**
- * Function: omxVCM4P2_DecodePadMV_PVOP (6.2.5.1.1)
- *
- * Description:
- * Decodes and pads the four motion vectors associated with a non-intra P-VOP
- * macroblock. For macroblocks of type OMX_VC_INTER4V, the output MV is
- * padded as specified in [ISO14496-2], subclause 7.6.1.6. Otherwise, for
- * macroblocks of types other than OMX_VC_INTER4V, the decoded MV is copied to
- * all four output MV buffer entries.
- *
- * Input Arguments:
- *
- * ppBitStream - pointer to the pointer to the current byte in the bit
- * stream buffer
- * pBitOffset - pointer to the bit position in the byte pointed to by
- * *ppBitStream. *pBitOffset is valid within [0-7].
- * pSrcMVLeftMB, pSrcMVUpperMB, and pSrcMVUpperRightMB - pointers to the
- * motion vector buffers of the macroblocks specially at the left,
- * upper, and upper-right side of the current macroblock,
- * respectively; a value of NULL indicates unavailability. Note:
- * Any neighborhood macroblock outside the current VOP or video
- * packet or outside the current GOB (when short_video_header is
- * 1 ) for which gob_header_empty is 0 is treated as
- * transparent, according to [ISO14496-2], subclause 7.6.5.
- * fcodeForward - a code equal to vop_fcode_forward in MPEG-4 bit stream
- * syntax
- * MBType - the type of the current macroblock. If MBType is not equal to
- * OMX_VC_INTER4V, the destination motion vector buffer is still
- * filled with the same decoded vector.
- *
- * Output Arguments:
- *
- * ppBitStream - *ppBitStream is updated after the block is decoded, so
- * that it points to the current byte in the bit stream buffer
- * pBitOffset - *pBitOffset is updated so that it points to the current bit
- * position in the byte pointed by *ppBitStream
- * pDstMVCurMB - pointer to the motion vector buffer for the current
- * macroblock; contains four decoded motion vectors
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments:
- * - At least one of the following pointers is NULL:
- * ppBitStream, *ppBitStream, pBitOffset, pDstMVCurMB
- * - *pBitOffset exceeds [0,7]
- * - fcodeForward exceeds (0,7]
- * - MBType less than zero
- * - motion vector buffer is not 4-byte aligned.
- * OMX_Sts_Err - status error
- *
- */
-OMXResult omxVCM4P2_DecodePadMV_PVOP (
- const OMX_U8 **ppBitStream,
- OMX_INT *pBitOffset,
- OMXVCMotionVector *pSrcMVLeftMB,
- OMXVCMotionVector*pSrcMVUpperMB,
- OMXVCMotionVector *pSrcMVUpperRightMB,
- OMXVCMotionVector*pDstMVCurMB,
- OMX_INT fcodeForward,
- OMXVCM4P2MacroblockType MBType
-);
-
-
-
-/**
- * Function: omxVCM4P2_DecodeVLCZigzag_IntraDCVLC (6.2.5.2.2)
- *
- * Description:
- * Performs VLC decoding and inverse zigzag scan of AC and DC coefficients
- * for one intra block. Two versions of the function (DCVLC and ACVLC) are
- * provided in order to support the two different methods of processing DC
- * coefficients, as described in [ISO14496-2], subclause 7.4.1.4, Intra DC
- * Coefficient Decoding for the Case of Switched VLC Encoding.
- *
- * Input Arguments:
- *
- * ppBitStream - pointer to the pointer to the current byte in the
- * bitstream buffer
- * pBitOffset - pointer to the bit position in the current byte referenced
- * by *ppBitStream. The parameter *pBitOffset is valid in the
- * range [0-7].
- * Bit Position in one byte: |Most Least|
- * *pBitOffset |0 1 2 3 4 5 6 7|
- * predDir - AC prediction direction; used to select the zigzag scan
- * pattern; takes one of the following values:
- * - OMX_VC_NONE - AC prediction not used;
- * performs classical zigzag scan.
- * - OMX_VC_HORIZONTAL - Horizontal prediction;
- * performs alternate-vertical zigzag scan;
- * - OMX_VC_VERTICAL - Vertical prediction;
- * performs alternate-horizontal zigzag scan.
- * 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.
- * videoComp - video component type (luminance or chrominance) of the
- * current block
- *
- * Output Arguments:
- *
- * ppBitStream - *ppBitStream is updated after the block is decoded such
- * that it points to the current byte in the bit stream buffer
- * pBitOffset - *pBitOffset is updated such that it points to the current
- * bit position in the byte pointed by *ppBitStream
- * pDst - pointer to the coefficient buffer of current block; must be
- * 4-byte aligned.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments, if:
- * - At least one of the following pointers is NULL:
- * ppBitStream, *ppBitStream, pBitOffset, pDst
- * - *pBitOffset exceeds [0,7]
- * - preDir exceeds [0,2]
- * - pDst is not 4-byte aligned
- * OMX_Sts_Err - if:
- * - In DecodeVLCZigzag_IntraDCVLC, dc_size > 12
- * - At least one of mark bits equals zero
- * - Illegal stream encountered; code cannot be located in VLC table
- * - Forbidden code encountered in the VLC FLC table.
- * - The number of coefficients is greater than 64
- *
- */
-OMXResult omxVCM4P2_DecodeVLCZigzag_IntraDCVLC (
- const OMX_U8 **ppBitStream,
- OMX_INT *pBitOffset,
- OMX_S16 *pDst,
- OMX_U8 predDir,
- OMX_INT shortVideoHeader,
- OMXVCM4P2VideoComponent videoComp
-);
-
-
-
-/**
- * Function: omxVCM4P2_DecodeVLCZigzag_IntraACVLC (6.2.5.2.2)
- *
- * Description:
- * Performs VLC decoding and inverse zigzag scan of AC and DC coefficients
- * for one intra block. Two versions of the function (DCVLC and ACVLC) are
- * provided in order to support the two different methods of processing DC
- * coefficients, as described in [ISO14496-2], subclause 7.4.1.4, Intra DC
- * Coefficient Decoding for the Case of Switched VLC Encoding.
- *
- * Input Arguments:
- *
- * ppBitStream - pointer to the pointer to the current byte in the
- * bitstream buffer
- * pBitOffset - pointer to the bit position in the current byte referenced
- * by *ppBitStream. The parameter *pBitOffset is valid in the
- * range [0-7]. Bit Position in one byte: |Most Least| *pBitOffset
- * |0 1 2 3 4 5 6 7|
- * predDir - AC prediction direction; used to select the zigzag scan
- * pattern; takes one of the following values: OMX_VC_NONE - AC
- * prediction not used; performs classical zigzag scan.
- * OMX_VC_HORIZONTAL - Horizontal prediction; performs
- * alternate-vertical zigzag scan; OMX_VC_VERTICAL - Vertical
- * prediction; performs alternate-horizontal zigzag scan.
- * 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.
- * videoComp - video component type (luminance or chrominance) of the
- * current block
- *
- * Output Arguments:
- *
- * ppBitStream - *ppBitStream is updated after the block is decoded such
- * that it points to the current byte in the bit stream buffer
- * pBitOffset - *pBitOffset is updated such that it points to the current
- * bit position in the byte pointed by *ppBitStream
- * pDst - pointer to the coefficient buffer of current block; must be
- * 4-byte aligned.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments At least one of the following
- * pointers is NULL: ppBitStream, *ppBitStream, pBitOffset, pDst,
- * or At least one of the following conditions is true:
- * *pBitOffset exceeds [0,7], preDir exceeds [0,2], or pDst is
- * not 4-byte aligned
- * OMX_Sts_Err In DecodeVLCZigzag_IntraDCVLC, dc_size > 12 At least one of
- * mark bits equals zero Illegal stream encountered; code cannot
- * be located in VLC table Forbidden code encountered in the VLC
- * FLC table The number of coefficients is greater than 64
- *
- */
-OMXResult omxVCM4P2_DecodeVLCZigzag_IntraACVLC (
- const OMX_U8 **ppBitStream,
- OMX_INT *pBitOffset,
- OMX_S16 *pDst,
- OMX_U8 predDir,
- OMX_INT shortVideoHeader
-);
-
-
-
-/**
- * Function: omxVCM4P2_DecodeVLCZigzag_Inter (6.2.5.2.3)
- *
- * Description:
- * Performs VLC decoding and inverse zigzag scan for one inter-coded block.
- *
- * Input Arguments:
- *
- * ppBitStream - double pointer to the current byte in the stream buffer
- * pBitOffset - pointer to the next available bit in the current stream
- * byte referenced by *ppBitStream. The parameter *pBitOffset is
- * valid within the range [0-7].
- * 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.
- *
- * Output Arguments:
- *
- * ppBitStream - *ppBitStream is updated after the block is decoded such
- * that it points to the current byte in the stream buffer
- * pBitOffset - *pBitOffset is updated after decoding such that it points
- * to the next available bit in the stream byte referenced by
- * *ppBitStream
- * pDst - pointer to the coefficient buffer of current block; must be
- * 4-byte aligned.
- *
- * Return Value:
- *
- * OMX_Sts_BadArgErr - bad arguments:
- * - At least one of the following pointers is NULL:
- * ppBitStream, *ppBitStream, pBitOffset, pDst
- * - pDst is not 4-byte aligned
- * - *pBitOffset exceeds [0,7]
- * OMX_Sts_Err - status error, if:
- * - At least one mark bit is equal to zero
- * - Encountered an illegal stream code that cannot be found in the VLC table
- * - Encountered an illegal code in the VLC FLC table
- * - The number of coefficients is greater than 64
- *
- */
-OMXResult omxVCM4P2_DecodeVLCZigzag_Inter (
- const OMX_U8 **ppBitStream,
- OMX_INT *pBitOffset,
- OMX_S16 *pDst,
- OMX_INT shortVideoHeader
-);
-
-
-
-/**
- * Function: omxVCM4P2_QuantInvIntra_I (6.2.5.3.2)
- *
- * Description:
- * Performs the second inverse quantization mode on an intra/inter coded
- * block. Supports bits_per_pixel = 8. The output coefficients are clipped to
- * the range [-2048, 2047].
- *
- * Input Arguments:
- *
- * pSrcDst - pointer to the input (quantized) intra/inter block; must be
- * aligned on a 16-byte boundary.
- * QP - quantization parameter (quantizer_scale)
- * videoComp - video component type of the current block. Takes one of the
- * following flags: OMX_VC_LUMINANCE, OMX_VC_CHROMINANCE (intra
- * version only).
- * shortVideoHeader - binary flag indicating presence of short_video_header
- * (intra version only).
- *
- * Output Arguments:
- *
- * pSrcDst - pointer to the output (dequantized) intra/inter block
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; one or more of the following is
- * true:
- * - pSrcDst is NULL
- * - QP <= 0 or QP >=31
- * - videoComp is neither OMX_VC_LUMINANCE nor OMX_VC_CHROMINANCE.
- *
- */
-OMXResult omxVCM4P2_QuantInvIntra_I (
- OMX_S16 *pSrcDst,
- OMX_INT QP,
- OMXVCM4P2VideoComponent videoComp,
- OMX_INT shortVideoHeader
-);
-
-
-
-/**
- * Function: omxVCM4P2_QuantInvInter_I (6.2.5.3.2)
- *
- * Description:
- * Performs the second inverse quantization mode on an intra/inter coded
- * block. Supports bits_per_pixel = 8. The output coefficients are clipped to
- * the range [-2048, 2047].
- *
- * Input Arguments:
- *
- * pSrcDst - pointer to the input (quantized) intra/inter block; must be
- * aligned on a 16-byte boundary.
- * QP - quantization parameter (quantizer_scale)
- * videoComp - video component type of the current block. Takes one of the
- * following flags: OMX_VC_LUMINANCE, OMX_VC_CHROMINANCE (intra
- * version only).
- * shortVideoHeader - binary flag indicating presence of short_video_header
- * (intra version only).
- *
- * Output Arguments:
- *
- * pSrcDst - pointer to the output (dequantized) intra/inter block
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; one or more of the following is
- * true:
- * - pSrcDst is NULL
- * - QP <= 0 or QP >=31
- * - videoComp is neither OMX_VC_LUMINANCE nor OMX_VC_CHROMINANCE.
- *
- */
-OMXResult omxVCM4P2_QuantInvInter_I (
- OMX_S16 *pSrcDst,
- OMX_INT QP
-);
-
-
-
-/**
- * Function: omxVCM4P2_DecodeBlockCoef_Intra (6.2.5.4.1)
- *
- * Description:
- * Decodes the INTRA block coefficients. Inverse quantization, inversely
- * zigzag positioning, and IDCT, with appropriate clipping on each step, are
- * performed on the coefficients. The results are then placed in the output
- * frame/plane on a pixel basis. Note: This function will be used only when
- * at least one non-zero AC coefficient of current block exists in the bit
- * stream. The DC only condition will be handled in another function.
- *
- *
- * Input Arguments:
- *
- * ppBitStream - pointer to the pointer to the current byte in the bit
- * stream buffer. There is no boundary check for the bit stream
- * buffer.
- * pBitOffset - pointer to the bit position in the byte pointed to by
- * *ppBitStream. *pBitOffset is valid within [0-7].
- * step - width of the destination plane
- * pCoefBufRow - pointer to the coefficient row buffer; must be aligned on
- * an 8-byte boundary.
- * pCoefBufCol - pointer to the coefficient column buffer; must be aligned
- * on an 8-byte boundary.
- * curQP - quantization parameter of the macroblock which the current block
- * belongs to
- * pQPBuf - pointer to the quantization parameter buffer
- * blockIndex - block index indicating the component type and position as
- * defined in [ISO14496-2], subclause 6.1.3.8, Figure 6-5.
- * intraDCVLC - a code determined by intra_dc_vlc_thr and QP. This allows a
- * mechanism to switch between two VLC for coding of Intra DC
- * coefficients as per [ISO14496-2], Table 6-21.
- * ACPredFlag - a flag equal to ac_pred_flag (of luminance) indicating if
- * the ac coefficients of the first row or first column are
- * differentially coded for intra coded macroblock.
- * shortVideoHeader - binary flag indicating presence of
- * short_video_header; shortVideoHeader==1 selects linear intra DC
- * mode, and shortVideoHeader==0 selects non linear intra DC mode.
- *
- * Output Arguments:
- *
- * ppBitStream - *ppBitStream is updated after the block is decoded, so
- * that it points to the current byte in the bit stream buffer
- * pBitOffset - *pBitOffset is updated so that it points to the current bit
- * position in the byte pointed by *ppBitStream
- * pDst - pointer to the block in the destination plane; must be aligned on
- * an 8-byte boundary.
- * pCoefBufRow - pointer to the updated coefficient row buffer.
- * pCoefBufCol - pointer to the updated coefficient column buffer Note:
- * The coefficient buffers must be updated in accordance with the
- * update procedure defined in section 6.2.2.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments, if:
- * - At least one of the following pointers is NULL:
- * ppBitStream, *ppBitStream, pBitOffset, pCoefBufRow, pCoefBufCol,
- * pQPBuf, pDst.
- * - *pBitOffset exceeds [0,7]
- * - curQP exceeds (1, 31)
- * - blockIndex exceeds [0,5]
- * - step is not the multiple of 8
- * - a pointer alignment requirement was violated.
- * OMX_Sts_Err - status error. Refer to OMX_Sts_Err of DecodeVLCZigzag_Intra.
- *
- */
-OMXResult omxVCM4P2_DecodeBlockCoef_Intra (
- const OMX_U8 **ppBitStream,
- OMX_INT *pBitOffset,
- OMX_U8 *pDst,
- OMX_INT step,
- OMX_S16 *pCoefBufRow,
- OMX_S16 *pCoefBufCol,
- OMX_U8 curQP,
- const OMX_U8 *pQPBuf,
- OMX_INT blockIndex,
- OMX_INT intraDCVLC,
- OMX_INT ACPredFlag,
- OMX_INT shortVideoHeader
-);
-
-
-
-/**
- * Function: omxVCM4P2_DecodeBlockCoef_Inter (6.2.5.4.2)
- *
- * Description:
- * Decodes the INTER block coefficients. This function performs inverse
- * quantization, inverse zigzag positioning, and IDCT (with appropriate
- * clipping on each step) on the coefficients. The results (residuals) are
- * placed in a contiguous array of 64 elements. For INTER block, the output
- * buffer holds the residuals for further reconstruction.
- *
- * Input Arguments:
- *
- * ppBitStream - pointer to the pointer to the current byte in the bit
- * stream buffer. There is no boundary check for the bit stream
- * buffer.
- * pBitOffset - pointer to the bit position in the byte pointed to by
- * *ppBitStream. *pBitOffset is valid within [0-7]
- * QP - quantization parameter
- * shortVideoHeader - binary flag indicating presence of
- * short_video_header; shortVideoHeader==1 selects linear intra DC
- * mode, and shortVideoHeader==0 selects non linear intra DC mode.
- *
- * Output Arguments:
- *
- * ppBitStream - *ppBitStream is updated after the block is decoded, so
- * that it points to the current byte in the bit stream buffer
- * pBitOffset - *pBitOffset is updated so that it points to the current bit
- * position in the byte pointed by *ppBitStream
- * pDst - pointer to the decoded residual buffer (a contiguous array of 64
- * elements of OMX_S16 data type); must be aligned on a 16-byte
- * boundary.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments, if:
- * - At least one of the following pointers is Null:
- * ppBitStream, *ppBitStream, pBitOffset , pDst
- * - *pBitOffset exceeds [0,7]
- * - QP <= 0.
- * - pDst is not 16-byte aligned
- * OMX_Sts_Err - status error. Refer to OMX_Sts_Err of DecodeVLCZigzag_Inter .
- *
- */
-OMXResult omxVCM4P2_DecodeBlockCoef_Inter (
- const OMX_U8 **ppBitStream,
- OMX_INT *pBitOffset,
- OMX_S16 *pDst,
- OMX_INT QP,
- OMX_INT shortVideoHeader
-);
-
-
-
-/**
- * Function: omxVCM4P2_PredictReconCoefIntra (6.2.5.4.3)
- *
- * 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 [ISO14496-2], subclause 7.4.3.1.
- *
- * Input Arguments:
- *
- * pSrcDst - pointer to the coefficient buffer which contains the quantized
- * coefficient residuals (PQF) of the current block; must be
- * aligned on a 4-byte boundary. The output coefficients are
- * saturated to the range [-2048, 2047].
- * pPredBufRow - pointer to the coefficient row buffer; must be aligned on
- * a 4-byte boundary.
- * pPredBufCol - pointer to the coefficient column buffer; must be aligned
- * on a 4-byte boundary.
- * 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.
- * predQP - quantization parameter of the predictor block
- * predDir - indicates the prediction direction which takes one of the
- * following values: OMX_VC_HORIZONTAL - predict horizontally
- * OMX_VC_VERTICAL - predict vertically
- * 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
- * videoComp - video component type (luminance or chrominance) of the
- * current block
- *
- * Output Arguments:
- *
- * pSrcDst - pointer to the coefficient buffer which contains the quantized
- * coefficients (QF) of the current block
- * pPredBufRow - pointer to the updated coefficient row buffer
- * pPredBufCol - pointer to the updated coefficient column buffer Note:
- * Buffer update: Update the AC prediction buffer (both row and
- * column buffer).
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments, if:
- * - At least one of the pointers is NULL:
- * pSrcDst, pPredBufRow, or pPredBufCol.
- * - curQP <= 0,
- * - predQP <= 0,
- * - curQP >31,
- * - predQP > 31,
- * - preDir exceeds [1,2]
- * - pSrcDst, pPredBufRow, or pPredBufCol is not 4-byte aligned.
- *
- */
-OMXResult omxVCM4P2_PredictReconCoefIntra (
- OMX_S16 *pSrcDst,
- OMX_S16 *pPredBufRow,
- OMX_S16 *pPredBufCol,
- OMX_INT curQP,
- OMX_INT predQP,
- OMX_INT predDir,
- OMX_INT ACPredFlag,
- OMXVCM4P2VideoComponent videoComp
-);
-
-
-
-/**
- * Function: omxVCM4P2_MCReconBlock (6.2.5.5.1)
- *
- * Description:
- * Performs motion compensation prediction for an 8x8 block using
- * interpolation described in [ISO14496-2], subclause 7.6.2.
- *
- * Input Arguments:
- *
- * pSrc - pointer to the block in the reference plane.
- * srcStep - distance between the start of consecutive lines in the
- * reference plane, in bytes; must be a multiple of 8.
- * dstStep - distance between the start of consecutive lines in the
- * destination plane, in bytes; must be a multiple of 8.
- * pSrcResidue - pointer to a buffer containing the 16-bit prediction
- * residuals; must be 16-byte aligned. If the pointer is NULL, then
- * no prediction is done, only motion compensation, i.e., the block
- * is moved with interpolation.
- * predictType - bilinear interpolation type, as defined in section
- * 6.2.1.2.
- * rndVal - rounding control parameter: 0 - disabled; 1 - enabled.
- *
- * Output Arguments:
- *
- * pDst - pointer to the destination buffer; must be 8-byte aligned. If
- * prediction residuals are added then output intensities are
- * clipped to the range [0,255].
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned under any of the following
- * conditions:
- * - pDst is not 8-byte aligned.
- * - pSrcResidue is not 16-byte aligned.
- * - one or more of the following pointers is NULL: pSrc or pDst.
- * - either srcStep or dstStep is not a multiple of 8.
- * - invalid type specified for the parameter predictType.
- * - the parameter rndVal is not equal either to 0 or 1.
- *
- */
-OMXResult omxVCM4P2_MCReconBlock (
- const OMX_U8 *pSrc,
- OMX_INT srcStep,
- const OMX_S16 *pSrcResidue,
- OMX_U8 *pDst,
- OMX_INT dstStep,
- OMX_INT predictType,
- OMX_INT rndVal
-);
-
-
-
-/* 6.3.1.1 Intra 16x16 Prediction Modes */
-/* A data type that enumerates intra_16x16 macroblock prediction modes is defined as follows: */
-
-typedef enum {
- OMX_VC_16X16_VERT = 0, /** Intra_16x16_Vertical */
- OMX_VC_16X16_HOR = 1, /** Intra_16x16_Horizontal */
- OMX_VC_16X16_DC = 2, /** Intra_16x16_DC */
- OMX_VC_16X16_PLANE = 3 /** Intra_16x16_Plane */
-} OMXVCM4P10Intra16x16PredMode;
-
-
-
-/* 6.3.1.2 Intra 4x4 Prediction Modes */
-/* A data type that enumerates intra_4x4 macroblock prediction modes is defined as follows: */
-
-typedef enum {
- OMX_VC_4X4_VERT = 0, /** Intra_4x4_Vertical */
- OMX_VC_4X4_HOR = 1, /** Intra_4x4_Horizontal */
- OMX_VC_4X4_DC = 2, /** Intra_4x4_DC */
- OMX_VC_4X4_DIAG_DL = 3, /** Intra_4x4_Diagonal_Down_Left */
- OMX_VC_4X4_DIAG_DR = 4, /** Intra_4x4_Diagonal_Down_Right */
- OMX_VC_4X4_VR = 5, /** Intra_4x4_Vertical_Right */
- OMX_VC_4X4_HD = 6, /** Intra_4x4_Horizontal_Down */
- OMX_VC_4X4_VL = 7, /** Intra_4x4_Vertical_Left */
- OMX_VC_4X4_HU = 8 /** Intra_4x4_Horizontal_Up */
-} OMXVCM4P10Intra4x4PredMode;
-
-
-
-/* 6.3.1.3 Chroma Prediction Modes */
-/* A data type that enumerates intra chroma prediction modes is defined as follows: */
-
-typedef enum {
- OMX_VC_CHROMA_DC = 0, /** Intra_Chroma_DC */
- OMX_VC_CHROMA_HOR = 1, /** Intra_Chroma_Horizontal */
- OMX_VC_CHROMA_VERT = 2, /** Intra_Chroma_Vertical */
- OMX_VC_CHROMA_PLANE = 3 /** Intra_Chroma_Plane */
-} OMXVCM4P10IntraChromaPredMode;
-
-
-
-/* 6.3.1.4 Motion Estimation Modes */
-/* A data type that enumerates H.264 motion estimation modes is defined as follows: */
-
-typedef enum {
- OMX_VC_M4P10_FAST_SEARCH = 0, /** Fast motion search */
- OMX_VC_M4P10_FULL_SEARCH = 1 /** Full motion search */
-} OMXVCM4P10MEMode;
-
-
-
-/* 6.3.1.5 Macroblock Types */
-/* A data type that enumerates H.264 macroblock types is defined as follows: */
-
-typedef enum {
- OMX_VC_P_16x16 = 0, /* defined by [ISO14496-10] */
- OMX_VC_P_16x8 = 1,
- OMX_VC_P_8x16 = 2,
- OMX_VC_P_8x8 = 3,
- OMX_VC_PREF0_8x8 = 4,
- OMX_VC_INTER_SKIP = 5,
- OMX_VC_INTRA_4x4 = 8,
- OMX_VC_INTRA_16x16 = 9,
- OMX_VC_INTRA_PCM = 10
-} OMXVCM4P10MacroblockType;
-
-
-
-/* 6.3.1.6 Sub-Macroblock Types */
-/* A data type that enumerates H.264 sub-macroblock types is defined as follows: */
-
-typedef enum {
- OMX_VC_SUB_P_8x8 = 0, /* defined by [ISO14496-10] */
- OMX_VC_SUB_P_8x4 = 1,
- OMX_VC_SUB_P_4x8 = 2,
- OMX_VC_SUB_P_4x4 = 3
-} OMXVCM4P10SubMacroblockType;
-
-
-
-/* 6.3.1.7 Variable Length Coding (VLC) Information */
-
-typedef struct {
- OMX_U8 uTrailing_Ones; /* Trailing ones; 3 at most */
- OMX_U8 uTrailing_One_Signs; /* Trailing ones signal */
- OMX_U8 uNumCoeffs; /* Total number of non-zero coefs, including trailing ones */
- OMX_U8 uTotalZeros; /* Total number of zero coefs */
- OMX_S16 iLevels[16]; /* Levels of non-zero coefs, in reverse zig-zag order */
- OMX_U8 uRuns[16]; /* Runs for levels and trailing ones, in reverse zig-zag order */
-} OMXVCM4P10VLCInfo;
-
-
-
-/* 6.3.1.8 Macroblock Information */
-
-typedef struct {
- OMX_S32 sliceId; /* slice number */
- OMXVCM4P10MacroblockType mbType; /* MB type */
- OMXVCM4P10SubMacroblockType subMBType[4]; /* sub-block type */
- OMX_S32 qpy; /* qp for luma */
- OMX_S32 qpc; /* qp for chroma */
- OMX_U32 cbpy; /* CBP Luma */
- OMX_U32 cbpc; /* CBP Chroma */
- OMXVCMotionVector pMV0[4][4]; /* motion vector, represented using 1/4-pel units, pMV0[blocky][blockx] (blocky = 0~3, blockx =0~3) */
- OMXVCMotionVector pMVPred[4][4]; /* motion vector prediction, Represented using 1/4-pel units, pMVPred[blocky][blockx] (blocky = 0~3, blockx = 0~3) */
- OMX_U8 pRefL0Idx[4]; /* reference picture indices */
- OMXVCM4P10Intra16x16PredMode Intra16x16PredMode; /* best intra 16x16 prediction mode */
- OMXVCM4P10Intra4x4PredMode pIntra4x4PredMode[16]; /* best intra 4x4 prediction mode for each block, pMV0 indexed as above */
-} OMXVCM4P10MBInfo, *OMXVCM4P10MBInfoPtr;
-
-
-
-/* 6.3.1.9 Motion Estimation Parameters */
-
-typedef struct {
- OMX_S32 blockSplitEnable8x8; /* enables 16x8, 8x16, 8x8 */
- OMX_S32 blockSplitEnable4x4; /* enable splitting of 8x4, 4x8, 4x4 blocks */
- OMX_S32 halfSearchEnable;
- OMX_S32 quarterSearchEnable;
- OMX_S32 intraEnable4x4; /* 1=enable, 0=disable */
- OMX_S32 searchRange16x16; /* integer pixel units */
- OMX_S32 searchRange8x8;
- OMX_S32 searchRange4x4;
-} OMXVCM4P10MEParams;
-
-
-
-/**
- * Function: omxVCM4P10_PredictIntra_4x4 (6.3.3.1.1)
- *
- * Description:
- * Perform Intra_4x4 prediction for luma samples. If the upper-right block is
- * not available, then duplication work should be handled inside the function.
- * Users need not define them outside.
- *
- * Input Arguments:
- *
- * pSrcLeft - Pointer to the buffer of 4 left pixels:
- * p[x, y] (x = -1, y = 0..3)
- * pSrcAbove - Pointer to the buffer of 8 above pixels:
- * p[x,y] (x = 0..7, y =-1);
- * must be aligned on a 4-byte boundary.
- * pSrcAboveLeft - Pointer to the above left pixels: p[x,y] (x = -1, y = -1)
- * leftStep - Step of left pixel buffer; must be a multiple of 4.
- * dstStep - Step of the destination buffer; must be a multiple of 4.
- * predMode - Intra_4x4 prediction mode.
- * availability - Neighboring 4x4 block availability flag, refer to
- * "Neighboring Macroblock Availability" .
- *
- * Output Arguments:
- *
- * pDst - Pointer to the destination buffer; must be aligned on a 4-byte
- * boundary.
- *
- * Return Value:
- * If the function runs without error, it returns OMX_Sts_NoErr.
- * If one of the following cases occurs, the function returns
- * OMX_Sts_BadArgErr:
- * pDst is NULL.
- * dstStep < 4, or dstStep is not a multiple of 4.
- * leftStep is not a multiple of 4.
- * predMode is not in the valid range of enumeration
- * OMXVCM4P10Intra4x4PredMode.
- * predMode is OMX_VC_4x4_VERT, but availability doesn't set OMX_VC_UPPER
- * indicating p[x,-1] (x = 0..3) is not available.
- * predMode is OMX_VC_4x4_HOR, but availability doesn't set OMX_VC_LEFT
- * indicating p[-1,y] (y = 0..3) is not available.
- * predMode is OMX_VC_4x4_DIAG_DL, but availability doesn't set
- * OMX_VC_UPPER indicating p[x, -1] (x = 0..3) is not available.
- * predMode is OMX_VC_4x4_DIAG_DR, but availability doesn't set
- * OMX_VC_UPPER_LEFT or OMX_VC_UPPER or OMX_VC_LEFT indicating
- * p[x,-1] (x = 0..3), or p[-1,y] (y = 0..3) or p[-1,-1] is not
- * available.
- * predMode is OMX_VC_4x4_VR, but availability doesn't set
- * OMX_VC_UPPER_LEFT or OMX_VC_UPPER or OMX_VC_LEFT indicating
- * p[x,-1] (x = 0..3), or p[-1,y] (y = 0..3) or p[-1,-1] is not
- * available.
- * predMode is OMX_VC_4x4_HD, but availability doesn't set
- * OMX_VC_UPPER_LEFT or OMX_VC_UPPER or OMX_VC_LEFT indicating
- * p[x,-1] (x = 0..3), or p[-1,y] (y = 0..3) or p[-1,-1] is not
- * available.
- * predMode is OMX_VC_4x4_VL, but availability doesn't set OMX_VC_UPPER
- * indicating p[x,-1] (x = 0..3) is not available.
- * predMode is OMX_VC_4x4_HU, but availability doesn't set OMX_VC_LEFT
- * indicating p[-1,y] (y = 0..3) is not available.
- * availability sets OMX_VC_UPPER, but pSrcAbove is NULL.
- * availability sets OMX_VC_LEFT, but pSrcLeft is NULL.
- * availability sets OMX_VC_UPPER_LEFT, but pSrcAboveLeft is NULL.
- * either pSrcAbove or pDst is not aligned on a 4-byte boundary.
- *
- * Note:
- * pSrcAbove, pSrcAbove, pSrcAboveLeft may be invalid pointers if
- * they are not used by intra prediction as implied in predMode.
- *
- */
-OMXResult omxVCM4P10_PredictIntra_4x4 (
- const OMX_U8 *pSrcLeft,
- const OMX_U8 *pSrcAbove,
- const OMX_U8 *pSrcAboveLeft,
- OMX_U8 *pDst,
- OMX_INT leftStep,
- OMX_INT dstStep,
- OMXVCM4P10Intra4x4PredMode predMode,
- OMX_S32 availability
-);
-
-
-
-/**
- * Function: omxVCM4P10_PredictIntra_16x16 (6.3.3.1.2)
- *
- * Description:
- * Perform Intra_16x16 prediction for luma samples. If the upper-right block
- * is not available, then duplication work should be handled inside the
- * function. Users need not define them outside.
- *
- * Input Arguments:
- *
- * pSrcLeft - Pointer to the buffer of 16 left pixels: p[x, y] (x = -1, y =
- * 0..15)
- * pSrcAbove - Pointer to the buffer of 16 above pixels: p[x,y] (x = 0..15,
- * y= -1); must be aligned on a 16-byte boundary.
- * pSrcAboveLeft - Pointer to the above left pixels: p[x,y] (x = -1, y = -1)
- * leftStep - Step of left pixel buffer; must be a multiple of 16.
- * dstStep - Step of the destination buffer; must be a multiple of 16.
- * predMode - Intra_16x16 prediction mode, please refer to section 3.4.1.
- * availability - Neighboring 16x16 MB availability flag. Refer to
- * section 3.4.4.
- *
- * Output Arguments:
- *
- * pDst -Pointer to the destination buffer; must be aligned on a 16-byte
- * boundary.
- *
- * Return Value:
- * If the function runs without error, it returns OMX_Sts_NoErr.
- * If one of the following cases occurs, the function returns
- * OMX_Sts_BadArgErr:
- * pDst is NULL.
- * dstStep < 16. or dstStep is not a multiple of 16.
- * leftStep is not a multiple of 16.
- * predMode is not in the valid range of enumeration
- * OMXVCM4P10Intra16x16PredMode
- * predMode is OMX_VC_16X16_VERT, but availability doesn't set
- * OMX_VC_UPPER indicating p[x,-1] (x = 0..15) is not available.
- * predMode is OMX_VC_16X16_HOR, but availability doesn't set OMX_VC_LEFT
- * indicating p[-1,y] (y = 0..15) is not available.
- * predMode is OMX_VC_16X16_PLANE, but availability doesn't set
- * OMX_VC_UPPER_LEFT or OMX_VC_UPPER or OMX_VC_LEFT indicating
- * p[x,-1](x = 0..15), or p[-1,y] (y = 0..15), or p[-1,-1] is not
- * available.
- * availability sets OMX_VC_UPPER, but pSrcAbove is NULL.
- * availability sets OMX_VC_LEFT, but pSrcLeft is NULL.
- * availability sets OMX_VC_UPPER_LEFT, but pSrcAboveLeft is NULL.
- * either pSrcAbove or pDst is not aligned on a 16-byte boundary.
- *
- * Note:
- * pSrcAbove, pSrcAbove, pSrcAboveLeft may be invalid pointers if
- * they are not used by intra prediction implied in predMode.
- * Note:
- * OMX_VC_UPPER_RIGHT is not used in intra_16x16 luma prediction.
- *
- */
-OMXResult omxVCM4P10_PredictIntra_16x16 (
- const OMX_U8 *pSrcLeft,
- const OMX_U8 *pSrcAbove,
- const OMX_U8 *pSrcAboveLeft,
- OMX_U8 *pDst,
- OMX_INT leftStep,
- OMX_INT dstStep,
- OMXVCM4P10Intra16x16PredMode predMode,
- OMX_S32 availability
-);
-
-
-
-/**
- * Function: omxVCM4P10_PredictIntraChroma_8x8 (6.3.3.1.3)
- *
- * Description:
- * Performs intra prediction for chroma samples.
- *
- * Input Arguments:
- *
- * pSrcLeft - Pointer to the buffer of 8 left pixels: p[x, y] (x = -1, y=
- * 0..7).
- * pSrcAbove - Pointer to the buffer of 8 above pixels: p[x,y] (x = 0..7, y
- * = -1); must be aligned on an 8-byte boundary.
- * pSrcAboveLeft - Pointer to the above left pixels: p[x,y] (x = -1, y = -1)
- * leftStep - Step of left pixel buffer; must be a multiple of 8.
- * dstStep - Step of the destination buffer; must be a multiple of 8.
- * predMode - Intra chroma prediction mode, please refer to section 3.4.3.
- * availability - Neighboring chroma block availability flag, please refer
- * to "Neighboring Macroblock Availability".
- *
- * Output Arguments:
- *
- * pDst - Pointer to the destination buffer; must be aligned on an 8-byte
- * boundary.
- *
- * Return Value:
- * If the function runs without error, it returns OMX_Sts_NoErr.
- * If any of the following cases occurs, the function returns
- * OMX_Sts_BadArgErr:
- * pDst is NULL.
- * dstStep < 8 or dstStep is not a multiple of 8.
- * leftStep is not a multiple of 8.
- * predMode is not in the valid range of enumeration
- * OMXVCM4P10IntraChromaPredMode.
- * predMode is OMX_VC_CHROMA_VERT, but availability doesn't set
- * OMX_VC_UPPER indicating p[x,-1] (x = 0..7) is not available.
- * predMode is OMX_VC_CHROMA_HOR, but availability doesn't set OMX_VC_LEFT
- * indicating p[-1,y] (y = 0..7) is not available.
- * predMode is OMX_VC_CHROMA_PLANE, but availability doesn't set
- * OMX_VC_UPPER_LEFT or OMX_VC_UPPER or OMX_VC_LEFT indicating
- * p[x,-1](x = 0..7), or p[-1,y] (y = 0..7), or p[-1,-1] is not
- * available.
- * availability sets OMX_VC_UPPER, but pSrcAbove is NULL.
- * availability sets OMX_VC_LEFT, but pSrcLeft is NULL.
- * availability sets OMX_VC_UPPER_LEFT, but pSrcAboveLeft is NULL.
- * either pSrcAbove or pDst is not aligned on a 8-byte boundary.
- *
- * Note: pSrcAbove, pSrcAbove, pSrcAboveLeft may be invalid pointer if
- * they are not used by intra prediction implied in predMode.
- *
- * Note: OMX_VC_UPPER_RIGHT is not used in intra chroma prediction.
- *
- */
-OMXResult omxVCM4P10_PredictIntraChroma_8x8 (
- const OMX_U8 *pSrcLeft,
- const OMX_U8 *pSrcAbove,
- const OMX_U8 *pSrcAboveLeft,
- OMX_U8 *pDst,
- OMX_INT leftStep,
- OMX_INT dstStep,
- OMXVCM4P10IntraChromaPredMode predMode,
- OMX_S32 availability
-);
-
-
-
-/**
- * Function: omxVCM4P10_InterpolateLuma (6.3.3.2.1)
- *
- * Description:
- * Performs quarter-pixel interpolation for inter luma MB. It is assumed that
- * the frame is already padded when calling this function.
- *
- * Input Arguments:
- *
- * pSrc - Pointer to the source reference frame buffer
- * srcStep - reference frame step, in bytes; must be a multiple of roi.width
- * dstStep - destination frame step, in bytes; must be a multiple of
- * roi.width
- * dx - Fractional part of horizontal motion vector component in 1/4 pixel
- * unit; valid in the range [0,3]
- * dy - Fractional part of vertical motion vector y component in 1/4 pixel
- * unit; valid in the range [0,3]
- * roi - Dimension of the interpolation region; the parameters roi.width and
- * roi.height must be equal to either 4, 8, or 16.
- *
- * Output Arguments:
- *
- * pDst - Pointer to the destination frame buffer:
- * if roi.width==4, 4-byte alignment required
- * if roi.width==8, 8-byte alignment required
- * if roi.width==16, 16-byte alignment required
- *
- * Return Value:
- * If the function runs without error, it returns OMX_Sts_NoErr.
- * If one of the following cases occurs, the function returns
- * OMX_Sts_BadArgErr:
- * pSrc or pDst is NULL.
- * srcStep or dstStep < roi.width.
- * dx or dy is out of range [0,3].
- * roi.width or roi.height is out of range {4, 8, 16}.
- * roi.width is equal to 4, but pDst is not 4 byte aligned.
- * roi.width is equal to 8 or 16, but pDst is not 8 byte aligned.
- * srcStep or dstStep is not a multiple of 8.
- *
- */
-OMXResult omxVCM4P10_InterpolateLuma (
- const OMX_U8 *pSrc,
- OMX_S32 srcStep,
- OMX_U8 *pDst,
- OMX_S32 dstStep,
- OMX_S32 dx,
- OMX_S32 dy,
- OMXSize roi
-);
-
-
-
-/**
- * Function: omxVCM4P10_InterpolateChroma (6.3.3.2.2)
- *
- * Description:
- * Performs 1/8-pixel interpolation for inter chroma MB.
- *
- * Input Arguments:
- *
- * pSrc -Pointer to the source reference frame buffer
- * srcStep -Reference frame step in bytes
- * dstStep -Destination frame step in bytes; must be a multiple of
- * roi.width.
- * dx -Fractional part of horizontal motion vector component in 1/8 pixel
- * unit; valid in the range [0,7]
- * dy -Fractional part of vertical motion vector component in 1/8 pixel
- * unit; valid in the range [0,7]
- * roi -Dimension of the interpolation region; the parameters roi.width and
- * roi.height must be equal to either 2, 4, or 8.
- *
- * Output Arguments:
- *
- * pDst -Pointer to the destination frame buffer:
- * if roi.width==2, 2-byte alignment required
- * if roi.width==4, 4-byte alignment required
- * if roi.width==8, 8-byte alignment required
- *
- * Return Value:
- * If the function runs without error, it returns OMX_Sts_NoErr.
- * If one of the following cases occurs, the function returns
- * OMX_Sts_BadArgErr:
- * pSrc or pDst is NULL.
- * srcStep or dstStep < 8.
- * dx or dy is out of range [0-7].
- * roi.width or roi.height is out of range {2,4,8}.
- * roi.width is equal to 2, but pDst is not 2-byte aligned.
- * roi.width is equal to 4, but pDst is not 4-byte aligned.
- * roi.width is equal to 8, but pDst is not 8 byte aligned.
- * srcStep or dstStep is not a multiple of 8.
- *
- */
-OMXResult omxVCM4P10_InterpolateChroma (
- const OMX_U8 *pSrc,
- OMX_S32 srcStep,
- OMX_U8 *pDst,
- OMX_S32 dstStep,
- OMX_S32 dx,
- OMX_S32 dy,
- OMXSize roi
-);
-
-
-
-/**
- * Function: omxVCM4P10_FilterDeblockingLuma_VerEdge_I (6.3.3.3.1)
- *
- * Description:
- * Performs in-place deblock filtering on four vertical edges of the luma
- * macroblock (16x16).
- *
- * Input Arguments:
- *
- * pSrcDst - Pointer to the input macroblock; must be 16-byte aligned.
- * srcdstStep -Step of the arrays; must be a multiple of 16.
- * pAlpha -Array of size 2 of alpha thresholds (the first item is the alpha
- * threshold for the external vertical edge, and the second item is
- * for the internal vertical edge); per [ISO14496-10] alpha values
- * must be in the range [0,255].
- * pBeta -Array of size 2 of beta thresholds (the first item is the beta
- * threshold for the external vertical edge, and the second item is
- * for the internal vertical edge); per [ISO14496-10] beta values
- * must be in the range [0,18].
- * pThresholds -Array of size 16 of Thresholds (TC0) (values for the left
- * edge of each 4x4 block, arranged in vertical block order); must
- * be aligned on a 4-byte boundary.. Per [ISO14496-10] values must
- * be in the range [0,25].
- * pBS -Array of size 16 of BS parameters (arranged in vertical block
- * order); valid in the range [0,4] with the following
- * restrictions: i) pBS[i]== 4 may occur only for 0<=i<=3, ii)
- * pBS[i]== 4 if and only if pBS[i^3]== 4. Must be 4-byte aligned.
- *
- * Output Arguments:
- *
- * pSrcDst -Pointer to filtered output macroblock.
- *
- * Return Value:
- * If the function runs without error, it returns OMX_Sts_NoErr.
- * If one of the following cases occurs, the function returns
- * OMX_Sts_BadArgErr:
- * Either of the pointers in pSrcDst, pAlpha, pBeta, pThresholds, or pBS
- * is NULL.
- * Either pThresholds or pBS is not aligned on a 4-byte boundary.
- * pSrcDst is not 16-byte aligned.
- * srcdstStep is not a multiple of 16.
- * pAlpha[0] and/or pAlpha[1] is outside the range [0,255].
- * pBeta[0] and/or pBeta[1] is outside the range [0,18].
- * One or more entries in the table pThresholds[0..15]is outside of the
- * range [0,25].
- * pBS is out of range, i.e., one of the following conditions is true:
- * pBS[i]<0, pBS[i]>4, pBS[i]==4 for i>=4, or (pBS[i]==4 &&
- * pBS[i^3]!=4) for 0<=i<=3.
- *
- */
-OMXResult omxVCM4P10_FilterDeblockingLuma_VerEdge_I (
- OMX_U8 *pSrcDst,
- OMX_S32 srcdstStep,
- const OMX_U8 *pAlpha,
- const OMX_U8 *pBeta,
- const OMX_U8 *pThresholds,
- const OMX_U8 *pBS
-);
-
-
-
-/**
- * Function: omxVCM4P10_FilterDeblockingLuma_HorEdge_I (6.3.3.3.2)
- *
- * Description:
- * Performs in-place deblock filtering on four horizontal edges of the luma
- * macroblock (16x16).
- *
- * Input Arguments:
- *
- * pSrcDst - pointer to the input macroblock; must be 16-byte aligned.
- * srcdstStep - step of the arrays; must be a multiple of 16.
- * pAlpha - array of size 2 of alpha thresholds (the first item is the alpha
- * threshold for the external vertical edge, and the second item is
- * for the internal horizontal edge); per [ISO14496-10] alpha
- * values must be in the range [0,255].
- * pBeta - array of size 2 of beta thresholds (the first item is the beta
- * threshold for the external horizontal edge, and the second item
- * is for the internal horizontal edge). Per [ISO14496-10] beta
- * values must be in the range [0,18].
- * pThresholds - array of size 16 containing thresholds, TC0, for the top
- * horizontal edge of each 4x4 block, arranged in horizontal block
- * order; must be aligned on a 4-byte boundary. Per [ISO14496 10]
- * values must be in the range [0,25].
- * pBS - array of size 16 of BS parameters (arranged in horizontal block
- * order); valid in the range [0,4] with the following
- * restrictions: i) pBS[i]== 4 may occur only for 0<=i<=3, ii)
- * pBS[i]== 4 if and only if pBS[i^3]== 4. Must be 4-byte aligned.
- *
- * Output Arguments:
- *
- * pSrcDst -Pointer to filtered output macroblock.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr, if the function runs without error.
- *
- * OMX_Sts_BadArgErr, if one of the following cases occurs:
- * - one or more of the following pointers is NULL: pSrcDst, pAlpha,
- * pBeta, pThresholds, or pBS.
- * - either pThresholds or pBS is not aligned on a 4-byte boundary.
- * - pSrcDst is not 16-byte aligned.
- * - srcdstStep is not a multiple of 16.
- * - pAlpha[0] and/or pAlpha[1] is outside the range [0,255].
- * - pBeta[0] and/or pBeta[1] is outside the range [0,18].
- * - One or more entries in the table pThresholds[0..15] is
- * outside of the range [0,25].
- * - pBS is out of range, i.e., one of the following conditions is true:
- * pBS[i]<0, pBS[i]>4, pBS[i]==4 for i>=4, or
- * (pBS[i]==4 && pBS[i^3]!=4) for 0<=i<=3.
- *
- */
-OMXResult omxVCM4P10_FilterDeblockingLuma_HorEdge_I (
- OMX_U8 *pSrcDst,
- OMX_S32 srcdstStep,
- const OMX_U8 *pAlpha,
- const OMX_U8 *pBeta,
- const OMX_U8 *pThresholds,
- const OMX_U8 *pBS
-);
-
-
-
-/**
- * Function: omxVCM4P10_FilterDeblockingChroma_VerEdge_I (6.3.3.3.3)
- *
- * Description:
- * Performs in-place deblock filtering on four vertical edges of the chroma
- * macroblock (8x8).
- *
- * Input Arguments:
- *
- * pSrcDst - Pointer to the input macroblock; must be 8-byte aligned.
- * srcdstStep - Step of the arrays; must be a multiple of 8.
- * pAlpha - Array of size 2 of alpha thresholds (the first item is alpha
- * threshold for external vertical edge, and the second item is for
- * internal vertical edge); per [ISO14496-10] alpha values must be
- * in the range [0,255].
- * pBeta - Array of size 2 of beta thresholds (the first item is the beta
- * threshold for the external vertical edge, and the second item is
- * for the internal vertical edge); per [ISO14496-10] beta values
- * must be in the range [0,18].
- * pThresholds - Array of size 8 containing thresholds, TC0, for the left
- * vertical edge of each 4x2 chroma block, arranged in vertical
- * block order; must be aligned on a 4-byte boundary. Per
- * [ISO14496-10] values must be in the range [0,25].
- * pBS - Array of size 16 of BS parameters (values for each 2x2 chroma
- * block, arranged in vertical block order). This parameter is the
- * same as the pBS parameter passed into FilterDeblockLuma_VerEdge;
- * valid in the range [0,4] with the following restrictions: i)
- * pBS[i]== 4 may occur only for 0<=i<=3, ii) pBS[i]== 4 if and
- * only if pBS[i^3]== 4. Must be 4 byte aligned.
- *
- * Output Arguments:
- *
- * pSrcDst -Pointer to filtered output macroblock.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr, if the function runs without error.
- *
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - one or more of the following pointers is NULL: pSrcDst, pAlpha,
- * pBeta, pThresholds, or pBS.
- * - pSrcDst is not 8-byte aligned.
- * - srcdstStep is not a multiple of 8.
- * - pThresholds is not 4-byte aligned.
- * - pAlpha[0] and/or pAlpha[1] is outside the range [0,255].
- * - pBeta[0] and/or pBeta[1] is outside the range [0,18].
- * - One or more entries in the table pThresholds[0..7] is outside
- * of the range [0,25].
- * - pBS is out of range, i.e., one of the following conditions is true:
- * pBS[i]<0, pBS[i]>4, pBS[i]==4 for i>=4, or
- * (pBS[i]==4 && pBS[i^3]!=4) for 0<=i<=3.
- * - pBS is not 4-byte aligned.
- *
- */
-OMXResult omxVCM4P10_FilterDeblockingChroma_VerEdge_I (
- OMX_U8 *pSrcDst,
- OMX_S32 srcdstStep,
- const OMX_U8 *pAlpha,
- const OMX_U8 *pBeta,
- const OMX_U8 *pThresholds,
- const OMX_U8 *pBS
-);
-
-
-
-/**
- * Function: omxVCM4P10_FilterDeblockingChroma_HorEdge_I (6.3.3.3.4)
- *
- * Description:
- * Performs in-place deblock filtering on the horizontal edges of the chroma
- * macroblock (8x8).
- *
- * Input Arguments:
- *
- * pSrcDst - pointer to the input macroblock; must be 8-byte aligned.
- * srcdstStep - array step; must be a multiple of 8.
- * pAlpha - array of size 2 containing alpha thresholds; the first element
- * contains the threshold for the external horizontal edge, and the
- * second element contains the threshold for internal horizontal
- * edge. Per [ISO14496-10] alpha values must be in the range
- * [0,255].
- * pBeta - array of size 2 containing beta thresholds; the first element
- * contains the threshold for the external horizontal edge, and the
- * second element contains the threshold for the internal
- * horizontal edge. Per [ISO14496-10] beta values must be in the
- * range [0,18].
- * pThresholds - array of size 8 containing thresholds, TC0, for the top
- * horizontal edge of each 2x4 chroma block, arranged in horizontal
- * block order; must be aligned on a 4-byte boundary. Per
- * [ISO14496-10] values must be in the range [0,25].
- * pBS - array of size 16 containing BS parameters for each 2x2 chroma
- * block, arranged in horizontal block order; valid in the range
- * [0,4] with the following restrictions: i) pBS[i]== 4 may occur
- * only for 0<=i<=3, ii) pBS[i]== 4 if and only if pBS[i^3]== 4.
- * Must be 4-byte aligned.
- *
- * Output Arguments:
- *
- * pSrcDst -Pointer to filtered output macroblock.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr, if the function runs without error.
- *
- * OMX_Sts_BadArgErr, if one of the following cases occurs:
- * - any of the following pointers is NULL:
- * pSrcDst, pAlpha, pBeta, pThresholds, or pBS.
- * - pSrcDst is not 8-byte aligned.
- * - srcdstStep is not a multiple of 8.
- * - pThresholds is not 4-byte aligned.
- * - pAlpha[0] and/or pAlpha[1] is outside the range [0,255].
- * - pBeta[0] and/or pBeta[1] is outside the range [0,18].
- * - One or more entries in the table pThresholds[0..7] is outside
- * of the range [0,25].
- * - pBS is out of range, i.e., one of the following conditions is true:
- * pBS[i]<0, pBS[i]>4, pBS[i]==4 for i>=4, or
- * (pBS[i]==4 && pBS[i^3]!=4) for 0<=i<=3.
- * - pBS is not 4-byte aligned.
- *
- */
-OMXResult omxVCM4P10_FilterDeblockingChroma_HorEdge_I (
- OMX_U8 *pSrcDst,
- OMX_S32 srcdstStep,
- const OMX_U8 *pAlpha,
- const OMX_U8 *pBeta,
- const OMX_U8 *pThresholds,
- const OMX_U8 *pBS
-);
-
-
-
-/**
- * Function: omxVCM4P10_DeblockLuma_I (6.3.3.3.5)
- *
- * Description:
- * This function performs in-place deblock filtering the horizontal and
- * vertical edges of a luma macroblock (16x16).
- *
- * Input Arguments:
- *
- * pSrcDst - pointer to the input macroblock; must be 16-byte aligned.
- * srcdstStep - image width; must be a multiple of 16.
- * pAlpha - pointer to a 2x2 table of alpha thresholds, organized as
- * follows: {external vertical edge, internal vertical edge,
- * external horizontal edge, internal horizontal edge }. Per
- * [ISO14496-10] alpha values must be in the range [0,255].
- * pBeta - pointer to a 2x2 table of beta thresholds, organized as follows:
- * {external vertical edge, internal vertical edge, external
- * horizontal edge, internal horizontal edge }. Per [ISO14496-10]
- * beta values must be in the range [0,18].
- * pThresholds - pointer to a 16x2 table of threshold (TC0), organized as
- * follows: {values for the left or above edge of each 4x4 block,
- * arranged in vertical block order and then in horizontal block
- * order}; must be aligned on a 4-byte boundary. Per [ISO14496-10]
- * values must be in the range [0,25].
- * pBS - pointer to a 16x2 table of BS parameters arranged in scan block
- * order for vertical edges and then horizontal edges; valid in the
- * range [0,4] with the following restrictions: i) pBS[i]== 4 may
- * occur only for 0<=i<=3, ii) pBS[i]== 4 if and only if pBS[i^3]==
- * 4. Must be 4-byte aligned.
- *
- * Output Arguments:
- *
- * pSrcDst - pointer to filtered output macroblock.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments
- * - one or more of the following pointers is NULL: pSrcDst, pAlpha,
- * pBeta, pThresholds or pBS.
- * - pSrcDst is not 16-byte aligned.
- * - either pThresholds or pBS is not aligned on a 4-byte boundary.
- * - one or more entries in the table pAlpha[0..3] is outside the range
- * [0,255].
- * - one or more entries in the table pBeta[0..3] is outside the range
- * [0,18].
- * - one or more entries in the table pThresholds[0..31]is outside of
- * the range [0,25].
- * - pBS is out of range, i.e., one of the following conditions is true:
- * pBS[i]<0, pBS[i]>4, pBS[i]==4 for i>=4, or
- * (pBS[i]==4 && pBS[i^3]!=4) for 0<=i<=3.
- * - srcdstStep is not a multiple of 16.
- *
- */
-OMXResult omxVCM4P10_DeblockLuma_I (
- OMX_U8 *pSrcDst,
- OMX_S32 srcdstStep,
- const OMX_U8 *pAlpha,
- const OMX_U8 *pBeta,
- const OMX_U8 *pThresholds,
- const OMX_U8 *pBS
-);
-
-
-
-/**
- * Function: omxVCM4P10_DeblockChroma_I (6.3.3.3.6)
- *
- * Description:
- * Performs in-place deblocking filtering on all edges of the chroma
- * macroblock (16x16).
- *
- * Input Arguments:
- *
- * pSrcDst - pointer to the input macroblock; must be 8-byte aligned.
- * srcdstStep - step of the arrays; must be a multiple of 8.
- * pAlpha - pointer to a 2x2 array of alpha thresholds, organized as
- * follows: {external vertical edge, internal vertical edge,
- * external horizontal edge, internal horizontal edge }. Per
- * [ISO14496-10] alpha values must be in the range [0,255].
- * pBeta - pointer to a 2x2 array of Beta Thresholds, organized as follows:
- * { external vertical edge, internal vertical edge, external
- * horizontal edge, internal horizontal edge }. Per [ISO14496-10]
- * beta values must be in the range [0,18].
- * pThresholds - array of size 8x2 of Thresholds (TC0) (values for the left
- * or above edge of each 4x2 or 2x4 block, arranged in vertical
- * block order and then in horizontal block order); must be aligned
- * on a 4-byte boundary. Per [ISO14496-10] values must be in the
- * range [0,25].
- * pBS - array of size 16x2 of BS parameters (arranged in scan block order
- * for vertical edges and then horizontal edges); valid in the
- * range [0,4] with the following restrictions: i) pBS[i]== 4 may
- * occur only for 0<=i<=3, ii) pBS[i]== 4 if and only if pBS[i^3]==
- * 4. Must be 4-byte aligned.
- *
- * Output Arguments:
- *
- * pSrcDst - pointer to filtered output macroblock.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments
- * - one or more of the following pointers is NULL: pSrcDst, pAlpha,
- * pBeta, pThresholds, or pBS.
- * - pSrcDst is not 8-byte aligned.
- * - either pThresholds or pBS is not 4-byte aligned.
- * - one or more entries in the table pAlpha[0..3] is outside the range
- * [0,255].
- * - one or more entries in the table pBeta[0..3] is outside the range
- * [0,18].
- * - one or more entries in the table pThresholds[0..15]is outside of
- * the range [0,25].
- * - pBS is out of range, i.e., one of the following conditions is true:
- * pBS[i]<0, pBS[i]>4, pBS[i]==4 for i>=4, or
- * (pBS[i]==4 && pBS[i^3]!=4) for 0<=i<=3.
- * - srcdstStep is not a multiple of 8.
- *
- */
-OMXResult omxVCM4P10_DeblockChroma_I (
- OMX_U8 *pSrcDst,
- OMX_S32 srcdstStep,
- const OMX_U8 *pAlpha,
- const OMX_U8 *pBeta,
- const OMX_U8 *pThresholds,
- const OMX_U8 *pBS
-);
-
-
-
-/**
- * Function: omxVCM4P10_DecodeChromaDcCoeffsToPairCAVLC (6.3.4.1.1)
- *
- * Description:
- * Performs CAVLC decoding and inverse raster scan for a 2x2 block of
- * ChromaDCLevel. The decoded coefficients in the packed position-coefficient
- * buffer are stored in reverse zig-zag order, i.e., the first buffer element
- * contains the last non-zero postion-coefficient pair of the block. Within
- * each position-coefficient pair, the position entry indicates the
- * raster-scan position of the coefficient, while the coefficient entry
- * contains the coefficient value.
- *
- * Input Arguments:
- *
- * ppBitStream - Double pointer to current byte in bit stream buffer
- * pOffset - Pointer to current bit position in the byte pointed to by
- * *ppBitStream; valid in the range [0,7].
- *
- * Output Arguments:
- *
- * ppBitStream - *ppBitStream is updated after each block is decoded
- * pOffset - *pOffset is updated after each block is decoded
- * pNumCoeff - Pointer to the number of nonzero coefficients in this block
- * ppPosCoefBuf - Double pointer to destination residual
- * coefficient-position pair buffer. Buffer position
- * (*ppPosCoefBuf) is updated upon return, unless there are only
- * zero coefficients in the currently decoded block. In this case
- * the caller is expected to bypass the transform/dequantization of
- * the empty blocks.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr, if the function runs without error.
- *
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - ppBitStream or pOffset is NULL.
- * - ppPosCoefBuf or pNumCoeff is NULL.
- * OMX_Sts_Err - if one of the following is true:
- * - an illegal code is encountered in the bitstream
- *
- */
-OMXResult omxVCM4P10_DecodeChromaDcCoeffsToPairCAVLC (
- const OMX_U8 **ppBitStream,
- OMX_S32*pOffset,
- OMX_U8 *pNumCoeff,
- OMX_U8 **ppPosCoefbuf
-);
-
-
-
-/**
- * Function: omxVCM4P10_DecodeCoeffsToPairCAVLC (6.3.4.1.2)
- *
- * Description:
- * Performs CAVLC decoding and inverse zigzag scan for 4x4 block of
- * Intra16x16DCLevel, Intra16x16ACLevel, LumaLevel, and ChromaACLevel. Inverse
- * field scan is not supported. The decoded coefficients in the packed
- * position-coefficient buffer are stored in reverse zig-zag order, i.e., the
- * first buffer element contains the last non-zero postion-coefficient pair of
- * the block. Within each position-coefficient pair, the position entry
- * indicates the raster-scan position of the coefficient, while the
- * coefficient entry contains the coefficient value.
- *
- * Input Arguments:
- *
- * ppBitStream -Double pointer to current byte in bit stream buffer
- * pOffset - Pointer to current bit position in the byte pointed to by
- * *ppBitStream; valid in the range [0,7].
- * sMaxNumCoeff - Maximum the number of non-zero coefficients in current
- * block
- * sVLCSelect - VLC table selector, obtained from the number of non-zero
- * coefficients contained in the above and left 4x4 blocks. It is
- * equivalent to the variable nC described in H.264 standard table
- * 9 5, except its value can t be less than zero.
- *
- * Output Arguments:
- *
- * ppBitStream - *ppBitStream is updated after each block is decoded.
- * Buffer position (*ppPosCoefBuf) is updated upon return, unless
- * there are only zero coefficients in the currently decoded block.
- * In this case the caller is expected to bypass the
- * transform/dequantization of the empty blocks.
- * pOffset - *pOffset is updated after each block is decoded
- * pNumCoeff - Pointer to the number of nonzero coefficients in this block
- * ppPosCoefBuf - Double pointer to destination residual
- * coefficient-position pair buffer
- *
- * Return Value:
- * OMX_Sts_NoErr, if the function runs without error.
- *
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - ppBitStream or pOffset is NULL.
- * - ppPosCoefBuf or pNumCoeff is NULL.
- * - sMaxNumCoeff is not equal to either 15 or 16.
- * - sVLCSelect is less than 0.
- *
- * OMX_Sts_Err - if one of the following is true:
- * - an illegal code is encountered in the bitstream
- *
- */
-OMXResult omxVCM4P10_DecodeCoeffsToPairCAVLC (
- const OMX_U8 **ppBitStream,
- OMX_S32 *pOffset,
- OMX_U8 *pNumCoeff,
- OMX_U8 **ppPosCoefbuf,
- OMX_INT sVLCSelect,
- OMX_INT sMaxNumCoeff
-);
-
-
-
-/**
- * Function: omxVCM4P10_TransformDequantLumaDCFromPair (6.3.4.2.1)
- *
- * Description:
- * Reconstructs the 4x4 LumaDC block from the coefficient-position pair
- * buffer, performs integer inverse, and dequantization for 4x4 LumaDC
- * coefficients, and updates the pair buffer pointer to the next non-empty
- * block.
- *
- * Input Arguments:
- *
- * ppSrc - Double pointer to residual coefficient-position pair buffer
- * output by CALVC decoding
- * QP - Quantization parameter QpY
- *
- * Output Arguments:
- *
- * ppSrc - *ppSrc is updated to the start of next non empty block
- * pDst - Pointer to the reconstructed 4x4 LumaDC coefficients buffer; must
- * be aligned on a 8-byte boundary.
- *
- * Return Value:
- * OMX_Sts_NoErr, if the function runs without error.
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - ppSrc or pDst is NULL.
- * - pDst is not 8 byte aligned.
- * - QP is not in the range of [0-51].
- *
- */
-OMXResult omxVCM4P10_TransformDequantLumaDCFromPair (
- const OMX_U8 **ppSrc,
- OMX_S16 *pDst,
- OMX_INT QP
-);
-
-
-
-/**
- * Function: omxVCM4P10_TransformDequantChromaDCFromPair (6.3.4.2.2)
- *
- * Description:
- * Reconstruct the 2x2 ChromaDC block from coefficient-position pair buffer,
- * perform integer inverse transformation, and dequantization for 2x2 chroma
- * DC coefficients, and update the pair buffer pointer to next non-empty
- * block.
- *
- * Input Arguments:
- *
- * ppSrc - Double pointer to residual coefficient-position pair buffer
- * output by CALVC decoding
- * QP - Quantization parameter QpC
- *
- * Output Arguments:
- *
- * ppSrc - *ppSrc is updated to the start of next non empty block
- * pDst - Pointer to the reconstructed 2x2 ChromaDC coefficients buffer;
- * must be aligned on a 4-byte boundary.
- *
- * Return Value:
- * OMX_Sts_NoErr, if the function runs without error.
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - ppSrc or pDst is NULL.
- * - pDst is not 4-byte aligned.
- * - QP is not in the range of [0-51].
- *
- */
-OMXResult omxVCM4P10_TransformDequantChromaDCFromPair (
- const OMX_U8 **ppSrc,
- OMX_S16 *pDst,
- OMX_INT QP
-);
-
-
-
-/**
- * Function: omxVCM4P10_DequantTransformResidualFromPairAndAdd (6.3.4.2.3)
- *
- * Description:
- * Reconstruct the 4x4 residual block from coefficient-position pair buffer,
- * perform dequantization and integer inverse transformation for 4x4 block of
- * residuals with previous intra prediction or motion compensation data, and
- * update the pair buffer pointer to next non-empty block. If pDC == NULL,
- * there re 16 non-zero AC coefficients at most in the packed buffer starting
- * from 4x4 block position 0; If pDC != NULL, there re 15 non-zero AC
- * coefficients at most in the packet buffer starting from 4x4 block position
- * 1.
- *
- * Input Arguments:
- *
- * ppSrc - Double pointer to residual coefficient-position pair buffer
- * output by CALVC decoding
- * pPred - Pointer to the predicted 4x4 block; must be aligned on a 4-byte
- * boundary
- * predStep - Predicted frame step size in bytes; must be a multiple of 4
- * dstStep - Destination frame step in bytes; must be a multiple of 4
- * pDC - Pointer to the DC coefficient of this block, NULL if it doesn't
- * exist
- * QP - QP Quantization parameter. It should be QpC in chroma 4x4 block
- * decoding, otherwise it should be QpY.
- * AC - Flag indicating if at least one non-zero AC coefficient exists
- *
- * Output Arguments:
- *
- * pDst - pointer to the reconstructed 4x4 block data; must be aligned on a
- * 4-byte boundary
- *
- * Return Value:
- * OMX_Sts_NoErr, if the function runs without error.
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - pPred or pDst is NULL.
- * - pPred or pDst is not 4-byte aligned.
- * - predStep or dstStep is not a multiple of 4.
- * - AC !=0 and Qp is not in the range of [0-51] or ppSrc == NULL.
- * - AC ==0 && pDC ==NULL.
- *
- */
-OMXResult omxVCM4P10_DequantTransformResidualFromPairAndAdd (
- const OMX_U8 **ppSrc,
- const OMX_U8 *pPred,
- const OMX_S16 *pDC,
- OMX_U8 *pDst,
- OMX_INT predStep,
- OMX_INT dstStep,
- OMX_INT QP,
- OMX_INT AC
-);
-
-
-
-/**
- * Function: omxVCM4P10_MEGetBufSize (6.3.5.1.1)
- *
- * Description:
- * Computes the size, in bytes, of the vendor-specific specification
- * structure for the omxVCM4P10 motion estimation functions BlockMatch_Integer
- * and MotionEstimationMB.
- *
- * Input Arguments:
- *
- * MEmode - motion estimation mode; available modes are defined by the
- * enumerated type OMXVCM4P10MEMode
- * pMEParams -motion estimation parameters
- *
- * Output Arguments:
- *
- * pSize - pointer to the number of bytes required for the motion
- * estimation specification structure
- *
- * Return Value:
- * OMX_Sts_NoErr, if the function runs without error.
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - pMEParams or pSize is NULL.
- * - an invalid MEMode is specified.
- *
- */
-OMXResult omxVCM4P10_MEGetBufSize (
- OMXVCM4P10MEMode MEmode,
- const OMXVCM4P10MEParams *pMEParams,
- OMX_U32 *pSize
-);
-
-
-
-/**
- * Function: omxVCM4P10_MEInit (6.3.5.1.2)
- *
- * Description:
- * Initializes the vendor-specific specification structure required for the
- * omxVCM4P10 motion estimation functions: BlockMatch_Integer and
- * MotionEstimationMB. Memory for the specification structure *pMESpec must be
- * allocated prior to calling the function, and should be aligned on a 4-byte
- * boundary. The number of bytes required for the specification structure can
- * be determined using the function omxVCM4P10_MEGetBufSize. Following
- * initialization by this function, the vendor-specific structure *pMESpec
- * should contain an implementation-specific representation of all motion
- * estimation parameters received via the structure pMEParams, for example
- * searchRange16x16, searchRange8x8, etc.
- *
- * Input Arguments:
- *
- * MEmode - motion estimation mode; available modes are defined by the
- * enumerated type OMXVCM4P10MEMode
- * pMEParams - motion estimation parameters
- * pMESpec - pointer to the uninitialized ME specification structure
- *
- * Output Arguments:
- *
- * pMESpec - pointer to the initialized ME specification structure
- *
- * Return Value:
- * OMX_Sts_NoErr, if the function runs without error.
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - pMEParams or pSize is NULL.
- * - an invalid value was specified for the parameter MEmode
- * - a negative or zero value was specified for one of the search ranges
- * (e.g., pMBParams >searchRange8x8, pMEParams->searchRange16x16, etc.)
- * - either in isolation or in combination, one or more of the enables or
- * search ranges in the structure *pMEParams were configured such
- * that the requested behavior fails to comply with [ISO14496-10].
- *
- */
-OMXResult omxVCM4P10_MEInit (
- OMXVCM4P10MEMode MEmode,
- const OMXVCM4P10MEParams *pMEParams,
- void *pMESpec
-);
-
-
-
-/**
- * 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 pointers 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
-);
-
-
-
-/**
- * Function: omxVCM4P10_BlockMatch_Half (6.3.5.2.2)
- *
- * Description:
- * Performs a half-pel block match using results from a prior integer search.
- * Returns the best MV and associated cost. This function estimates the
- * half-pixel motion vector by interpolating the integer resolution motion
- * vector referenced by the input parameter pSrcDstBestMV, i.e., the initial
- * integer MV is generated externally. The function
- * omxVCM4P10_BlockMatch_Integer may be used for integer motion estimation.
- *
- * Input Arguments:
- *
- * pSrcOrgY - Pointer to the current position in original picture plane:
- * 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 in terms of full
- * pixels; must be a multiple of iBlockWidth.
- * nSrcRefStep - Stride of the reference picture plane in terms of full
- * pixels
- * iBlockWidth - Width of the current block in terms of full pixels; must
- * be equal to either 4, 8, or 16.
- * iBlockHeight - Height of the current block in terms of full pixels; must
- * be equal to either 4, 8, or 16.
- * nLamda - Lamda factor, used to compute motion cost
- * pMVPred - Predicted MV, represented in terms of 1/4-pel units; used to
- * compute motion cost
- * pSrcDstBestMV - The best MV resulting from a prior integer search,
- * represented in terms of 1/4-pel units
- *
- * Output Arguments:
- *
- * pSrcDstBestMV - Best MV resulting from the half-pel 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 pointers is NULL: pSrcOrgY, pSrcRefY,
- * pSrcDstBestMV, pMVPred, pBestCost
- * - iBlockWidth or iBlockHeight are equal to values other than 4, 8, or 16.
- * - Any alignment restrictions are violated
- *
- */
-OMXResult omxVCM4P10_BlockMatch_Half (
- const OMX_U8 *pSrcOrgY,
- OMX_S32 nSrcOrgStep,
- const OMX_U8 *pSrcRefY,
- OMX_S32 nSrcRefStep,
- OMX_U8 iBlockWidth,
- OMX_U8 iBlockHeight,
- OMX_U32 nLamda,
- const OMXVCMotionVector *pMVPred,
- OMXVCMotionVector *pSrcDstBestMV,
- OMX_S32 *pBestCost
-);
-
-
-
-/**
- * Function: omxVCM4P10_BlockMatch_Quarter (6.3.5.2.3)
- *
- * Description:
- * Performs a quarter-pel block match using results from a prior half-pel
- * search. Returns the best MV and associated cost. This function estimates
- * the quarter-pixel motion vector by interpolating the half-pel resolution
- * motion vector referenced by the input parameter pSrcDstBestMV, i.e., the
- * initial half-pel MV is generated externally. The function
- * omxVCM4P10_BlockMatch_Half may be used for half-pel motion estimation.
- *
- * Input Arguments:
- *
- * pSrcOrgY - Pointer to the current position in original picture plane:
- * 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 in terms of full
- * pixels; must be a multiple of iBlockWidth.
- * nSrcRefStep - Stride of the reference picture plane in terms of full
- * pixels
- * iBlockWidth - Width of the current block in terms of full pixels; must
- * be equal to either 4, 8, or 16.
- * iBlockHeight - Height of the current block in terms of full pixels; must
- * be equal to either 4, 8, or 16.
- * nLamda - Lamda factor, used to compute motion cost
- * pMVPred - Predicted MV, represented in terms of 1/4-pel units; used to
- * compute motion cost
- * pSrcDstBestMV - The best MV resulting from a prior half-pel search,
- * represented in terms of 1/4 pel units
- *
- * Output Arguments:
- *
- * pSrcDstBestMV - Best MV resulting from the quarter-pel 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:
- * - One or more of the following pointers is NULL:
- * pSrcOrgY, pSrcRefY, pSrcDstBestMV, pMVPred, pBestCost
- * - iBlockWidth or iBlockHeight are equal to values other than 4, 8, or 16.
- * - Any alignment restrictions are violated
- *
- */
-OMXResult omxVCM4P10_BlockMatch_Quarter (
- const OMX_U8 *pSrcOrgY,
- OMX_S32 nSrcOrgStep,
- const OMX_U8 *pSrcRefY,
- OMX_S32 nSrcRefStep,
- OMX_U8 iBlockWidth,
- OMX_U8 iBlockHeight,
- OMX_U32 nLamda,
- const OMXVCMotionVector *pMVPred,
- OMXVCMotionVector *pSrcDstBestMV,
- OMX_S32 *pBestCost
-);
-
-
-
-/**
- * Function: omxVCM4P10_MotionEstimationMB (6.3.5.3.1)
- *
- * Description:
- * Performs MB-level motion estimation and selects best motion estimation
- * strategy from the set of modes supported in baseline profile [ISO14496-10].
- *
- * Input Arguments:
- *
- * pSrcCurrBuf - Pointer to the current position in original picture plane;
- * 16-byte alignment required
- * pSrcRefBufList - Pointer to an array with 16 entries. Each entry points
- * to the top-left corner of the co-located MB in a reference
- * picture. The array is filled from low-to-high with valid
- * reference frame pointers; the unused high entries should be set
- * to NULL. Ordering of the reference frames should follow
- * [ISO14496-10] subclause 8.2.4 Decoding Process for Reference
- * Picture Lists. The entries must be 16-byte aligned.
- * pSrcRecBuf - Pointer to the top-left corner of the co-located MB in the
- * reconstructed picture; must be 16-byte aligned.
- * SrcCurrStep - Width of the original picture plane in terms of full
- * pixels; must be a multiple of 16.
- * SrcRefStep - Width of the reference picture plane in terms of full
- * pixels; must be a multiple of 16.
- * SrcRecStep - Width of the reconstructed picture plane in terms of full
- * pixels; must be a multiple of 16.
- * pRefRect - Pointer to the valid reference rectangle; relative to the
- * image origin.
- * pCurrPointPos - Position of the current macroblock in the current plane.
- * Lambda - Lagrange factor for computing the cost function
- * pMESpec - Pointer to the motion estimation specification structure; must
- * have been allocated and initialized prior to calling this
- * function.
- * pMBInter - Array, of dimension four, containing pointers to information
- * associated with four adjacent type INTER MBs (Left, Top,
- * Top-Left, Top-Right). Any pointer in the array may be set equal
- * to NULL if the corresponding MB doesn t exist or is not of type
- * INTER.
- * - pMBInter[0] - Pointer to left MB information
- * - pMBInter[1] - Pointer to top MB information
- * - pMBInter[2] - Pointer to top-left MB information
- * - pMBInter[3] - Pointer to top-right MB information
- * pMBIntra - Array, of dimension four, containing pointers to information
- * associated with four adjacent type INTRA MBs (Left, Top,
- * Top-Left, Top-Right). Any pointer in the array may be set equal
- * to NULL if the corresponding MB doesn t exist or is not of type
- * INTRA.
- * - pMBIntra[0] - Pointer to left MB information
- * - pMBIntra[1] - Pointer to top MB information
- * - pMBIntra[2] - Pointer to top-left MB information
- * - pMBIntra[3] - Pointer to top-right MB information
- * pSrcDstMBCurr - Pointer to information structure for the current MB.
- * The following entries should be set prior to calling the
- * function: sliceID - the number of the slice the to which the
- * current MB belongs.
- *
- * Output Arguments:
- *
- * pDstCost - Pointer to the minimum motion cost for the current MB.
- * pDstBlockSAD - Pointer to the array of SADs for each of the sixteen luma
- * 4x4 blocks in each MB. The block SADs are in scan order for
- * each MB. For implementations that cannot compute the SAD values
- * individually, the maximum possible value (0xffff) is returned
- * for each of the 16 block SAD entries.
- * pSrcDstMBCurr - Pointer to updated information structure for the current
- * MB after MB-level motion estimation has been completed. The
- * following fields are updated by the ME function. The following
- * parameter set quantifies the MB-level ME search results:
- * - MbType
- * - subMBType[4]
- * - pMV0[4][4]
- * - pMVPred[4][4]
- * - pRefL0Idx[4]
- * - Intra16x16PredMode
- * - pIntra4x4PredMode[4][4]
- *
- * Return Value:
- * OMX_Sts_NoErr, if the function runs without error.
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - One or more of the following pointers is NULL: pSrcCurrBuf,
- * pSrcRefBufList, pSrcRecBuf, pRefRect, pCurrPointPos, pMESpec,
- * pMBInter, pMBIntra,pSrcDstMBCurr, pDstCost, pSrcRefBufList[0]
- * - SrcRefStep, SrcRecStep are not multiples of 16
- * - iBlockWidth or iBlockHeight are values other than 4, 8, or 16.
- * - Any alignment restrictions are violated
- *
- */
-OMXResult omxVCM4P10_MotionEstimationMB (
- const OMX_U8 *pSrcCurrBuf,
- OMX_S32 SrcCurrStep,
- const OMX_U8 *pSrcRefBufList[15],
- OMX_S32 SrcRefStep,
- const OMX_U8 *pSrcRecBuf,
- OMX_S32 SrcRecStep,
- const OMXRect *pRefRect,
- const OMXVCM4P2Coordinate *pCurrPointPos,
- OMX_U32 Lambda,
- void *pMESpec,
- const OMXVCM4P10MBInfoPtr *pMBInter,
- const OMXVCM4P10MBInfoPtr *pMBIntra,
- OMXVCM4P10MBInfoPtr pSrcDstMBCurr,
- OMX_INT *pDstCost,
- OMX_U16 *pDstBlockSAD
-);
-
-
-
-/**
- * Function: omxVCM4P10_SAD_4x (6.3.5.4.1)
- *
- * Description:
- * This function calculates the SAD for 4x8 and 4x4 blocks.
- *
- * Input Arguments:
- *
- * pSrcOrg -Pointer to the original block; must be aligned on a 4-byte
- * boundary.
- * iStepOrg -Step of the original block buffer; must be a multiple of 4.
- * pSrcRef -Pointer to the reference block
- * iStepRef -Step of the reference block buffer
- * iHeight -Height of the block; must be equal to either 4 or 8.
- *
- * Output Arguments:
- *
- * pDstSAD -Pointer of result SAD
- *
- * Return Value:
- * OMX_Sts_NoErr, if the function runs without error.
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - One or more of the following pointers is NULL:
- * pSrcOrg, pSrcRef, or pDstSAD
- * - iHeight is not equal to either 4 or 8.
- * - iStepOrg is not a multiple of 4
- * - Any alignment restrictions are violated
- *
- */
-OMXResult omxVCM4P10_SAD_4x (
- const OMX_U8 *pSrcOrg,
- OMX_U32 iStepOrg,
- const OMX_U8 *pSrcRef,
- OMX_U32 iStepRef,
- OMX_S32 *pDstSAD,
- OMX_U32 iHeight
-);
-
-
-
-/**
- * Function: omxVCM4P10_SADQuar_4x (6.3.5.4.2)
- *
- * Description:
- * This function calculates the SAD between one block (pSrc) and the average
- * of the other two (pSrcRef0 and pSrcRef1) for 4x8 or 4x4 blocks. Rounding
- * is applied according to the convention (a+b+1)>>1.
- *
- * Input Arguments:
- *
- * pSrc - Pointer to the original block; must be aligned on a 4-byte
- * boundary.
- * pSrcRef0 - Pointer to reference block 0
- * pSrcRef1 - Pointer to reference block 1
- * iSrcStep - Step of the original block buffer; must be a multiple of 4.
- * iRefStep0 - Step of reference block 0
- * iRefStep1 - Step of reference block 1
- * iHeight - Height of the block; must be equal to either 4 or 8.
- *
- * Output Arguments:
- *
- * pDstSAD - Pointer of result SAD
- *
- * Return Value:
- * OMX_Sts_NoErr, if the function runs without error.
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - iHeight is not equal to either 4 or 8.
- * - One or more of the following pointers is NULL: pSrc, pSrcRef0,
- * pSrcRef1, pDstSAD.
- * - iSrcStep is not a multiple of 4
- * - Any alignment restrictions are violated
- *
- */
-OMXResult omxVCM4P10_SADQuar_4x (
- 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
-);
-
-
-
-/**
- * Function: omxVCM4P10_SADQuar_8x (6.3.5.4.3)
- *
- * Description:
- * This function calculates the SAD between one block (pSrc) and the average
- * of the other two (pSrcRef0 and pSrcRef1) for 8x16, 8x8, or 8x4 blocks.
- * Rounding is applied according to the convention (a+b+1)>>1.
- *
- * Input Arguments:
- *
- * pSrc - Pointer to the original block; must be aligned on an 8-byte
- * boundary.
- * pSrcRef0 - Pointer to reference block 0
- * pSrcRef1 - Pointer to reference block 1
- * iSrcStep - Step of the original block buffer; must be a multiple of 8.
- * iRefStep0 - Step of reference block 0
- * iRefStep1 - Step of reference block 1
- * iHeight - Height of the block; must be equal either 4, 8, or 16.
- *
- * Output Arguments:
- *
- * pDstSAD - Pointer of result SAD
- *
- * Return Value:
- * OMX_Sts_NoErr, if the function runs without error.
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - iHeight is not equal to either 4, 8, or 16.
- * - One or more of the following pointers is NULL: pSrc, pSrcRef0,
- * pSrcRef1, pDstSAD.
- * - iSrcStep is not a multiple of 8
- * - Any alignment restrictions are violated
- *
- */
-OMXResult omxVCM4P10_SADQuar_8x (
- 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
-);
-
-
-
-/**
- * Function: omxVCM4P10_SADQuar_16x (6.3.5.4.4)
- *
- * Description:
- * This function calculates the SAD between one block (pSrc) and the average
- * of the other two (pSrcRef0 and pSrcRef1) for 16x16 or 16x8 blocks.
- * Rounding is applied according to the convention (a+b+1)>>1.
- *
- * Input Arguments:
- *
- * pSrc - Pointer to the original block; must be aligned on a 16-byte
- * boundary.
- * pSrcRef0 - Pointer to reference block 0
- * pSrcRef1 - Pointer to reference block 1
- * iSrcStep - Step of the original block buffer; must be a multiple of 16
- * iRefStep0 - Step of reference block 0
- * iRefStep1 - Step of reference block 1
- * iHeight - Height of the block; must be equal to either 8 or 16
- *
- * Output Arguments:
- *
- * pDstSAD -Pointer of result SAD
- *
- * Return Value:
- * OMX_Sts_NoErr, if the function runs without error.
- * OMX_Sts_BadArgErr - bad arguments: if one of the following cases occurs:
- * - iHeight is not equal to either 8 or 16.
- * - One or more of the following pointers is NULL: pSrc, pSrcRef0,
- * pSrcRef1, pDstSAD.
- * - iSrcStep is not a multiple of 16
- * - Any alignment restrictions are violated
- *
- */
-OMXResult omxVCM4P10_SADQuar_16x (
- 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
-);
-
-
-
-/**
- * Function: omxVCM4P10_SATD_4x4 (6.3.5.4.5)
- *
- * Description:
- * This function calculates the sum of absolute transform differences (SATD)
- * for a 4x4 block by applying a Hadamard transform to the difference block
- * and then calculating the sum of absolute coefficient values.
- *
- * Input Arguments:
- *
- * pSrcOrg - Pointer to the original block; must be aligned on a 4-byte
- * boundary
- * iStepOrg - Step of the original block buffer; must be a multiple of 4
- * pSrcRef - Pointer to the reference block; must be aligned on a 4-byte
- * boundary
- * iStepRef - Step of the reference block buffer; must be a multiple of 4
- *
- * Output Arguments:
- *
- * pDstSAD - pointer to the resulting SAD
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned if any of the following
- * conditions are true:
- * - at least one of the following pointers is NULL:
- * pSrcOrg, pSrcRef, or pDstSAD either pSrcOrg
- * - pSrcRef is not aligned on a 4-byte boundary
- * - iStepOrg <= 0 or iStepOrg is not a multiple of 4
- * - iStepRef <= 0 or iStepRef is not a multiple of 4
- *
- */
-OMXResult omxVCM4P10_SATD_4x4 (
- const OMX_U8 *pSrcOrg,
- OMX_U32 iStepOrg,
- const OMX_U8 *pSrcRef,
- OMX_U32 iStepRef,
- OMX_U32 *pDstSAD
-);
-
-
-
-/**
- * Function: omxVCM4P10_InterpolateHalfHor_Luma (6.3.5.5.1)
- *
- * Description:
- * This function performs interpolation for two horizontal 1/2-pel positions
- * (-1/2,0) and (1/2, 0) - around a full-pel position.
- *
- * Input Arguments:
- *
- * pSrc - Pointer to the top-left corner of the block used to interpolate in
- * the reconstruction frame plane.
- * iSrcStep - Step of the source buffer.
- * iDstStep - Step of the destination(interpolation) buffer; must be a
- * multiple of iWidth.
- * iWidth - Width of the current block; must be equal to either 4, 8, or 16
- * iHeight - Height of the current block; must be equal to 4, 8, or 16
- *
- * Output Arguments:
- *
- * pDstLeft -Pointer to the interpolation buffer of the left -pel position
- * (-1/2, 0)
- * If iWidth==4, 4-byte alignment required.
- * If iWidth==8, 8-byte alignment required.
- * If iWidth==16, 16-byte alignment required.
- * pDstRight -Pointer to the interpolation buffer of the right -pel
- * position (1/2, 0)
- * If iWidth==4, 4-byte alignment required.
- * If iWidth==8, 8-byte alignment required.
- * If iWidth==16, 16-byte alignment required.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned if any of the following
- * conditions are true:
- * - at least one of the following pointers is NULL:
- * pSrc, pDstLeft, or pDstRight
- * - iWidth or iHeight have values other than 4, 8, or 16
- * - iWidth==4 but pDstLeft and/or pDstRight is/are not aligned on a 4-byte boundary
- * - iWidth==8 but pDstLeft and/or pDstRight is/are not aligned on a 8-byte boundary
- * - iWidth==16 but pDstLeft and/or pDstRight is/are not aligned on a 16-byte boundary
- * - any alignment restrictions are violated
- *
- */
-OMXResult omxVCM4P10_InterpolateHalfHor_Luma (
- const OMX_U8 *pSrc,
- OMX_U32 iSrcStep,
- OMX_U8 *pDstLeft,
- OMX_U8 *pDstRight,
- OMX_U32 iDstStep,
- OMX_U32 iWidth,
- OMX_U32 iHeight
-);
-
-
-
-/**
- * Function: omxVCM4P10_InterpolateHalfVer_Luma (6.3.5.5.2)
- *
- * Description:
- * This function performs interpolation for two vertical 1/2-pel positions -
- * (0, -1/2) and (0, 1/2) - around a full-pel position.
- *
- * Input Arguments:
- *
- * pSrc - Pointer to top-left corner of block used to interpolate in the
- * reconstructed frame plane
- * iSrcStep - Step of the source buffer.
- * iDstStep - Step of the destination (interpolation) buffer; must be a
- * multiple of iWidth.
- * iWidth - Width of the current block; must be equal to either 4, 8, or 16
- * iHeight - Height of the current block; must be equal to either 4, 8, or 16
- *
- * Output Arguments:
- *
- * pDstUp -Pointer to the interpolation buffer of the -pel position above
- * the current full-pel position (0, -1/2)
- * If iWidth==4, 4-byte alignment required.
- * If iWidth==8, 8-byte alignment required.
- * If iWidth==16, 16-byte alignment required.
- * pDstDown -Pointer to the interpolation buffer of the -pel position below
- * the current full-pel position (0, 1/2)
- * If iWidth==4, 4-byte alignment required.
- * If iWidth==8, 8-byte alignment required.
- * If iWidth==16, 16-byte alignment required.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned if any of the following
- * conditions are true:
- * - at least one of the following pointers is NULL:
- * pSrc, pDstUp, or pDstDown
- * - iWidth or iHeight have values other than 4, 8, or 16
- * - iWidth==4 but pDstUp and/or pDstDown is/are not aligned on a 4-byte boundary
- * - iWidth==8 but pDstUp and/or pDstDown is/are not aligned on a 8-byte boundary
- * - iWidth==16 but pDstUp and/or pDstDown is/are not aligned on a 16-byte boundary
- *
- */
-OMXResult omxVCM4P10_InterpolateHalfVer_Luma (
- const OMX_U8 *pSrc,
- OMX_U32 iSrcStep,
- OMX_U8 *pDstUp,
- OMX_U8 *pDstDown,
- OMX_U32 iDstStep,
- OMX_U32 iWidth,
- OMX_U32 iHeight
-);
-
-
-
-/**
- * Function: omxVCM4P10_Average_4x (6.3.5.5.3)
- *
- * Description:
- * This function calculates the average of two 4x4, 4x8 blocks. The result
- * is rounded according to (a+b+1)/2.
- *
- * Input Arguments:
- *
- * pPred0 - Pointer to the top-left corner of reference block 0
- * pPred1 - Pointer to the top-left corner of reference block 1
- * iPredStep0 - Step of reference block 0; must be a multiple of 4.
- * iPredStep1 - Step of reference block 1; must be a multiple of 4.
- * iDstStep - Step of the destination buffer; must be a multiple of 4.
- * iHeight - Height of the blocks; must be either 4 or 8.
- *
- * Output Arguments:
- *
- * pDstPred - Pointer to the destination buffer. 4-byte alignment required.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned if any of the following
- * conditions are true:
- * - at least one of the following pointers is NULL:
- * pPred0, pPred1, or pDstPred
- * - pDstPred is not aligned on a 4-byte boundary
- * - iPredStep0 <= 0 or iPredStep0 is not a multiple of 4
- * - iPredStep1 <= 0 or iPredStep1 is not a multiple of 4
- * - iDstStep <= 0 or iDstStep is not a multiple of 4
- * - iHeight is not equal to either 4 or 8
- *
- */
-OMXResult omxVCM4P10_Average_4x (
- const OMX_U8 *pPred0,
- const OMX_U8 *pPred1,
- OMX_U32 iPredStep0,
- OMX_U32 iPredStep1,
- OMX_U8 *pDstPred,
- OMX_U32 iDstStep,
- OMX_U32 iHeight
-);
-
-
-
-/**
- * Function: omxVCM4P10_TransformQuant_ChromaDC (6.3.5.6.1)
- *
- * Description:
- * This function performs 2x2 Hadamard transform of chroma DC coefficients
- * and then quantizes the coefficients.
- *
- * Input Arguments:
- *
- * pSrcDst - Pointer to the 2x2 array of chroma DC coefficients. 8-byte
- * alignment required.
- * iQP - Quantization parameter; must be in the range [0,51].
- * bIntra - Indicate whether this is an INTRA block. 1-INTRA, 0-INTER
- *
- * Output Arguments:
- *
- * pSrcDst - Pointer to transformed and quantized coefficients. 8-byte
- * alignment required.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned if any of the following
- * conditions are true:
- * - at least one of the following pointers is NULL:
- * pSrcDst
- * - pSrcDst is not aligned on an 8-byte boundary
- *
- */
-OMXResult omxVCM4P10_TransformQuant_ChromaDC (
- OMX_S16 *pSrcDst,
- OMX_U32 iQP,
- OMX_U8 bIntra
-);
-
-
-
-/**
- * Function: omxVCM4P10_TransformQuant_LumaDC (6.3.5.6.2)
- *
- * Description:
- * This function performs a 4x4 Hadamard transform of luma DC coefficients
- * and then quantizes the coefficients.
- *
- * Input Arguments:
- *
- * pSrcDst - Pointer to the 4x4 array of luma DC coefficients. 16-byte
- * alignment required.
- * iQP - Quantization parameter; must be in the range [0,51].
- *
- * Output Arguments:
- *
- * pSrcDst - Pointer to transformed and quantized coefficients. 16-byte
- * alignment required.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned if any of the following
- * conditions are true:
- * - at least one of the following pointers is NULL: pSrcDst
- * - pSrcDst is not aligned on an 16-byte boundary
- *
- */
-OMXResult omxVCM4P10_TransformQuant_LumaDC (
- OMX_S16 *pSrcDst,
- OMX_U32 iQP
-);
-
-
-
-/**
- * Function: omxVCM4P10_InvTransformDequant_LumaDC (6.3.5.6.3)
- *
- * Description:
- * This function performs inverse 4x4 Hadamard transform and then dequantizes
- * the coefficients.
- *
- * Input Arguments:
- *
- * pSrc - Pointer to the 4x4 array of the 4x4 Hadamard-transformed and
- * quantized coefficients. 16 byte alignment required.
- * iQP - Quantization parameter; must be in the range [0,51].
- *
- * Output Arguments:
- *
- * pDst - Pointer to inverse-transformed and dequantized coefficients.
- * 16-byte alignment required.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned if any of the following
- * conditions are true:
- * - at least one of the following pointers is NULL: pSrc
- * - pSrc or pDst is not aligned on a 16-byte boundary
- *
- */
-OMXResult omxVCM4P10_InvTransformDequant_LumaDC (
- const OMX_S16 *pSrc,
- OMX_S16 *pDst,
- OMX_U32 iQP
-);
-
-
-
-/**
- * Function: omxVCM4P10_InvTransformDequant_ChromaDC (6.3.5.6.4)
- *
- * Description:
- * This function performs inverse 2x2 Hadamard transform and then dequantizes
- * the coefficients.
- *
- * Input Arguments:
- *
- * pSrc - Pointer to the 2x2 array of the 2x2 Hadamard-transformed and
- * quantized coefficients. 8 byte alignment required.
- * iQP - Quantization parameter; must be in the range [0,51].
- *
- * Output Arguments:
- *
- * pDst - Pointer to inverse-transformed and dequantized coefficients.
- * 8-byte alignment required.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned if any of the following
- * conditions are true:
- * - at least one of the following pointers is NULL: pSrc
- * - pSrc or pDst is not aligned on an 8-byte boundary
- *
- */
-OMXResult omxVCM4P10_InvTransformDequant_ChromaDC (
- const OMX_S16 *pSrc,
- OMX_S16 *pDst,
- OMX_U32 iQP
-);
-
-
-
-/**
- * Function: omxVCM4P10_InvTransformResidualAndAdd (6.3.5.7.1)
- *
- * Description:
- * This function performs inverse an 4x4 integer transformation to produce
- * the difference signal and then adds the difference to the prediction to get
- * the reconstructed signal.
- *
- * Input Arguments:
- *
- * pSrcPred - Pointer to prediction signal. 4-byte alignment required.
- * pDequantCoeff - Pointer to the transformed coefficients. 8-byte
- * alignment required.
- * iSrcPredStep - Step of the prediction buffer; must be a multiple of 4.
- * iDstReconStep - Step of the destination reconstruction buffer; must be a
- * multiple of 4.
- * bAC - Indicate whether there is AC coefficients in the coefficients
- * matrix.
- *
- * Output Arguments:
- *
- * pDstRecon -Pointer to the destination reconstruction buffer. 4-byte
- * alignment required.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned if any of the following
- * conditions are true:
- * - at least one of the following pointers is NULL:
- * pSrcPred, pDequantCoeff, pDstRecon
- * - pSrcPred is not aligned on a 4-byte boundary
- * - iSrcPredStep or iDstReconStep is not a multiple of 4.
- * - pDequantCoeff is not aligned on an 8-byte boundary
- *
- */
-OMXResult omxVCM4P10_InvTransformResidualAndAdd (
- const OMX_U8 *pSrcPred,
- const OMX_S16 *pDequantCoeff,
- OMX_U8 *pDstRecon,
- OMX_U32 iSrcPredStep,
- OMX_U32 iDstReconStep,
- OMX_U8 bAC
-);
-
-
-
-/**
- * Function: omxVCM4P10_SubAndTransformQDQResidual (6.3.5.8.1)
- *
- * Description:
- * This function subtracts the prediction signal from the original signal to
- * produce the difference signal and then performs a 4x4 integer transform and
- * quantization. The quantized transformed coefficients are stored as
- * pDstQuantCoeff. This function can also output dequantized coefficients or
- * unquantized DC coefficients optionally by setting the pointers
- * pDstDeQuantCoeff, pDCCoeff.
- *
- * Input Arguments:
- *
- * pSrcOrg - Pointer to original signal. 4-byte alignment required.
- * pSrcPred - Pointer to prediction signal. 4-byte alignment required.
- * iSrcOrgStep - Step of the original signal buffer; must be a multiple of
- * 4.
- * iSrcPredStep - Step of the prediction signal buffer; must be a multiple
- * of 4.
- * pNumCoeff -Number of non-zero coefficients after quantization. If this
- * parameter is not required, it is set to NULL.
- * nThreshSAD - Zero-block early detection threshold. If this parameter is
- * not required, it is set to 0.
- * iQP - Quantization parameter; must be in the range [0,51].
- * bIntra - Indicates whether this is an INTRA block, either 1-INTRA or
- * 0-INTER
- *
- * Output Arguments:
- *
- * pDstQuantCoeff - Pointer to the quantized transformed coefficients.
- * 8-byte alignment required.
- * pDstDeQuantCoeff - Pointer to the dequantized transformed coefficients
- * if this parameter is not equal to NULL. 8-byte alignment
- * required.
- * pDCCoeff - Pointer to the unquantized DC coefficient if this parameter
- * is not equal to NULL.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned if any of the following
- * conditions are true:
- * - at least one of the following pointers is NULL:
- * pSrcOrg, pSrcPred, pNumCoeff, pDstQuantCoeff,
- * pDstDeQuantCoeff, pDCCoeff
- * - pSrcOrg is not aligned on a 4-byte boundary
- * - pSrcPred is not aligned on a 4-byte boundary
- * - iSrcOrgStep is not a multiple of 4
- * - iSrcPredStep is not a multiple of 4
- * - pDstQuantCoeff or pDstDeQuantCoeff is not aligned on an 8-byte boundary
- *
- */
-OMXResult omxVCM4P10_SubAndTransformQDQResidual (
- const OMX_U8 *pSrcOrg,
- const OMX_U8 *pSrcPred,
- OMX_U32 iSrcOrgStep,
- OMX_U32 iSrcPredStep,
- OMX_S16 *pDstQuantCoeff,
- OMX_S16 *pDstDeQuantCoeff,
- OMX_S16 *pDCCoeff,
- OMX_S8 *pNumCoeff,
- OMX_U32 nThreshSAD,
- OMX_U32 iQP,
- OMX_U8 bIntra
-);
-
-
-
-/**
- * Function: omxVCM4P10_GetVLCInfo (6.3.5.9.1)
- *
- * Description:
- * This function extracts run-length encoding (RLE) information from the
- * coefficient matrix. The results are returned in an OMXVCM4P10VLCInfo
- * structure.
- *
- * Input Arguments:
- *
- * pSrcCoeff - pointer to the transform coefficient matrix. 8-byte
- * alignment required.
- * pScanMatrix - pointer to the scan order definition matrix. For a luma
- * block the scan matrix should follow [ISO14496-10] section 8.5.4,
- * and should contain the values 0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13,
- * 10, 7, 11, 14, 15. For a chroma block, the scan matrix should
- * contain the values 0, 1, 2, 3.
- * bAC - indicates presence of a DC coefficient; 0 = DC coefficient
- * present, 1= DC coefficient absent.
- * MaxNumCoef - specifies the number of coefficients contained in the
- * transform coefficient matrix, pSrcCoeff. The value should be 16
- * for blocks of type LUMADC, LUMAAC, LUMALEVEL, and CHROMAAC. The
- * value should be 4 for blocks of type CHROMADC.
- *
- * Output Arguments:
- *
- * pDstVLCInfo - pointer to structure that stores information for
- * run-length coding.
- *
- * Return Value:
- *
- * OMX_Sts_NoErr - no error
- * OMX_Sts_BadArgErr - bad arguments; returned if any of the following
- * conditions are true:
- * - at least one of the following pointers is NULL:
- * pSrcCoeff, pScanMatrix, pDstVLCInfo
- * - pSrcCoeff is not aligned on an 8-byte boundary
- *
- */
-OMXResult omxVCM4P10_GetVLCInfo (
- const OMX_S16 *pSrcCoeff,
- const OMX_U8 *pScanMatrix,
- OMX_U8 bAC,
- OMX_U32 MaxNumCoef,
- OMXVCM4P10VLCInfo*pDstVLCInfo
-);
-
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /** end of #define _OMXVC_H_ */
-
-/** EOF */
-