/* /////////////////////////////////////////////////////////////////////////// // // INTEL CORPORATION PROPRIETARY INFORMATION // This software is supplied under the terms of a license agreement or // nondisclosure agreement with Intel Corporation and may not be copied // or disclosed except in accordance with the terms of that agreement. // Copyright(c) 2001-2009 Intel Corporation. All Rights Reserved. // // Intel(R) Integrated Performance Primitives // Video Coding (ippVC) // */ #if !defined( __IPPVC_H__ ) || defined( _OWN_BLDPCS ) #define __IPPVC_H__ #if defined (_WIN32_WCE) && defined (_M_IX86) && defined (__stdcall) #define _IPP_STDCALL_CDECL #undef __stdcall #endif #ifndef __IPPDEFS_H__ #include "ippdefs.h" #endif #ifdef __cplusplus extern "C" { #endif /* //////////////////////////////////////////////////////////////////////////// // Structures and definitions // //////////////////////////////////////////////////////////////////////////// */ #if !defined( _OWN_BLDPCS ) /* flags for motion compensation */ #define IPPVC_VLC_FORBIDDEN 0xf0f1 #define IPPVC_ESCAPE 0x00ff #define IPPVC_ENDOFBLOCK 0x00fe #define IPPVC_FRAME_PICTURE 0x0003 typedef enum _IPPVC_ESCAPE_FLAG { IPPVC_EF_NONE = 0x0, IPPVC_EF_REVERSIBLE_VLC = 0x1, IPPVC_EF_SHORT_HEADER = 0x2 } IPPVC_ESCAPE_FLAG; typedef enum _IPPVC_MC_APX { IPPVC_MC_APX_FF = 0x0, IPPVC_MC_APX_FH = 0x4, IPPVC_MC_APX_HF = 0x8, IPPVC_MC_APX_HH = 0x0c } IPPVC_MC_APX; typedef enum _IPPVC_MV_TYPE { IPPVC_MV_FIELD = 0x0, IPPVC_MV_FRAME = 0x1 } IPPVC_MV_TYPE; typedef enum _IppvcFrameFieldFlag { IPPVC_FRAME = 0x0, IPPVC_TOP_FIELD = 0x1, IPPVC_BOTTOM_FIELD = 0x2 }IppvcFrameFieldFlag; /* VL code longer than 8 bits */ typedef struct _IppVCHuffmanSpec_32u { Ipp32u code; /* right justified */ Ipp32u len; } IppVCHuffmanSpec_32u; typedef Ipp32s IppVCHuffmanSpec_32s ; /* Motion Vector */ typedef struct _IppMotionVector { Ipp16s dx; Ipp16s dy; } IppMotionVector; typedef enum { IPP_4x4_VERT = 0, IPP_4x4_HOR = 1, IPP_4x4_DC = 2, IPP_4x4_DIAG_DL = 3, IPP_4x4_DIAG_DR = 4, IPP_4x4_VR = 5, IPP_4x4_HD = 6, IPP_4x4_VL = 7, IPP_4x4_HU = 8, /* these modes are not supported by all h264 prediction functions. read the manual for details. */ IPP_4x4_DC_TOP = 9, IPP_4x4_DC_LEFT = 10, IPP_4x4_DC_128 = 11 } IppIntra4x4PredMode_H264; typedef enum { IPP_8x8_VERT = 0, IPP_8x8_HOR = 1, IPP_8x8_DC = 2, IPP_8x8_DIAG_DL = 3, IPP_8x8_DIAG_DR = 4, IPP_8x8_VR = 5, IPP_8x8_HD = 6, IPP_8x8_VL = 7, IPP_8x8_HU = 8, /* these modes are not supported by all h264 prediction functions. read the manual for details. */ IPP_8x8_DC_TOP = 9, IPP_8x8_DC_LEFT = 10, IPP_8x8_DC_128 = 11 } IppIntra8x8PredMode_H264; typedef IppIntra8x8PredMode_H264 IppIntra8x8PredMode_AVS; typedef enum { IPP_16X16_VERT = 0, IPP_16X16_HOR = 1, IPP_16X16_DC = 2, IPP_16X16_PLANE = 3, /* these modes are not supported by all h264 prediction functions. read the manual for details. */ IPP_16X16_DC_TOP = 4, IPP_16X16_DC_LEFT = 5, IPP_16X16_DC_128 = 6 } IppIntra16x16PredMode_H264; typedef struct _IppiFilterDeblock_16u { Ipp16u* pSrcDstPlane; /* Pointer to the left upper pixel of macroblock. and resultant samples. */ Ipp32s srcDstStep; /* Plane step (pitch). */ Ipp16u* pAlpha; /* Alpha Thresholds */ Ipp16u* pBeta; /* Beta Thresholds */ Ipp16u* pThresholds; /* Thresholds (Tc0) */ Ipp8u* pBs; /* BS parameters */ Ipp32s bitDepth; /* number of bits of plane's sample (range - [8..14]) */ } IppiFilterDeblock_16u; typedef struct _IppiFilterDeblock_8u { Ipp8u* pSrcDstPlane; /* Pointer to the left upper pixel of macroblock. and resultant samples. */ Ipp32s srcDstStep; /* Plane step (pitch). */ Ipp8u* pAlpha; /* Alpha Thresholds */ Ipp8u* pBeta; /* Beta Thresholds */ Ipp8u* pThresholds; /* Thresholds (Tc0) */ Ipp8u* pBs; /* BS parameters */ } IppiFilterDeblock_8u; typedef struct _IppVCInterpolate_8u { const Ipp8u* pSrc; /* Pointer to the source. */ Ipp32s srcStep; /* Step of the pointer pSrc (source array) in bytes. */ Ipp8u* pDst; /* Pointer to the destination. */ Ipp32s dstStep; /* Step of the pointer pDst (destination array) in bytes. */ Ipp32s dx; /* Fractional parts of the motion vector */ Ipp32s dy; /* in 1/4 pel units (0, 1, 2, or 3). */ IppiSize roiSize; /* Flag that specifies the region of interest (could be 16, 8, 4 or 2 in each dimension). */ Ipp32s roundControl; /* Reserved for VC1 using. */ } IppVCInterpolate_8u; typedef struct _IppVCInterpolate_16u { const Ipp16u* pSrc; /* Pointer to the source. */ Ipp32s srcStep; /* Step of the pointer pSrc (source array) in bytes. */ Ipp16u* pDst; /* Pointer to the destination. */ Ipp32s dstStep; /* Step of the pointer pDst (destination array) in bytes. */ Ipp32s dx; /* Fractional parts of the motion vector */ Ipp32s dy; /* in 1/4 pel units (0, 1, 2, or 3). */ IppiSize roiSize; /* Flag that specifies the region of interest (could be 16, 8, 4 or 2 in each dimension). */ Ipp32s bitDepth; /* Number of significant bits in Ipp16u sample. */ } IppVCInterpolate_16u; typedef struct _IppVCInterpolateBlock_8u { const Ipp8u *pSrc[2]; /* pointers to reference image planes */ Ipp32s srcStep; /* step of the reference image planes */ Ipp8u *pDst[2]; /* pointers to destination image planes */ Ipp32s dstStep; /* step of the destination image planes */ IppiSize sizeFrame; /* dimensions of the reference image planes */ IppiSize sizeBlock; /* dimensions of the block to be interpolated */ IppiPoint pointBlockPos; /* current position of the block in the being interpolated image */ IppiPoint pointVector; /* relative difference between current position and reference data to be used */ } IppVCInterpolateBlock_8u; typedef struct _IppVCInterpolateBlock_16u { const Ipp16u *pSrc[2]; /* pointers to reference image planes */ Ipp32s srcStep; /* step of the reference image planes */ Ipp16u *pDst[2]; /* pointers to destination image planes */ Ipp32s dstStep; /* step of the destination image planes */ IppiSize sizeFrame; /* dimensions of the reference image planes */ IppiSize sizeBlock; /* dimensions of the block to be interpolated */ IppiPoint pointBlockPos; /* current position of the block in the being interpolated image */ IppiPoint pointVector; /* relative difference between current position and reference data to be used */ Ipp32s bitDepth; /* data capacity depth in range 8..14 */ } IppVCInterpolateBlock_16u; typedef struct _IppVCInterpolateBlockIC_8u { const Ipp8u *pSrc; /* Pointer to the source. */ Ipp32s srcStep; /* Step of the pointer pSrc (source array) in bytes. */ Ipp8u *pDst; /* Pointer to the destination. */ Ipp32s dstStep; /* Step of the pointer pDst (destination array) in bytes. */ Ipp8u *pLUTTop; /* pointer to top Intensity Compensation LUT table */ Ipp8u *pLUTBottom; /* pointer to bottom Intensity Compensation LUT table */ IppiSize sizeFrame; /* dimensions of the reference image plane */ IppiSize sizeBlock; /* dimensions of the block to be interpolated */ IppiPoint pointRefBlockPos; /* position inside reference frame. Which was calculated as sum of current position and integer part of motion vector */ IppiPoint pointVectorQuarterPix; /* quarter part of MV */ Ipp32u oppositePadding; /* flag that specified padding correspondence between current frame and reference frame */ Ipp32u fieldPrediction; /* flag that specified prediction type for current MB progressive or field */ Ipp32u roundControl; /* indicates type of rounding for the current frame */ Ipp32u isPredBottom; /* flag that specified type of reference field in case of interlace reference picture - top or bottom */ } IppVCInterpolateBlockIC_8u; typedef struct _IppiBidir_16u { const Ipp16u * pSrc1; Ipp32s srcStep1; const Ipp16u* pSrc2; Ipp32s srcStep2; Ipp16u* pDst; Ipp32s dstStep; IppiSize roiSize; Ipp32s bitDepth; } IppVCBidir_16u; typedef struct _IppiMBReconstructHigh_32s16u { Ipp32s** ppSrcDstCoeff; /* Pointer to the order of blocks of residual coefficients for this macroblock */ Ipp16u* pSrcDstPlane; /* Pointer to macroblock that is reconstructed in current plane. This macroblock should contain inter prediction samples if exist.*/ Ipp32s srcDstStep; /* Plane step. */ Ipp32u cbp; /* Coded block pattern. */ Ipp32s qp; /* quantizer */ Ipp16s* pQuantTable; /* Pointer to the quantization table for plane */ Ipp32s bypassFlag; /* Flag enabling lossless coding (reserved for future use). */ Ipp32s bitDepth; /* Number of significant bits in Ipp16u sample. */ } IppiReconstructHighMB_32s16u; typedef struct _IppiReconstructHighMB_16s8u { Ipp16s** ppSrcDstCoeff; /* Pointer to the order of blocks of residual coefficients for this macroblock */ Ipp8u* pSrcDstPlane; /* Pointer to macroblock that is reconstructed in current plane. This macroblock should contain inter prediction samples if exist.*/ Ipp32s srcDstStep; /* Plane step. */ Ipp32u cbp; /* Coded block pattern. */ Ipp32s qp; /* quantizer */ Ipp16s* pQuantTable; /* Pointer to the quantization table for plane */ Ipp32s bypassFlag; /* Flag enabling lossless coding (reserved for future use). */ } IppiReconstructHighMB_16s8u; typedef enum { IPP_CHROMA_DC = 0, IPP_CHROMA_HOR = 1, IPP_CHROMA_VERT = 2, IPP_CHROMA_PLANE = 3, /* these modes are not supported by all h264 prediction functions. read the manual for details. */ IPP_CHROMA_DC_TOP = 4, IPP_CHROMA_DC_LEFT = 5, IPP_CHROMA_DC_128 = 6 } IppIntraChromaPredMode_H264; typedef IppIntraChromaPredMode_H264 IppIntraChromaPredMode_AVS; enum { IPPVC_LEFT_EDGE = 0x1, IPPVC_RIGHT_EDGE = 0x2, IPPVC_TOP_EDGE = 0x4, IPPVC_BOTTOM_EDGE = 0x8, IPPVC_TOP_LEFT_EDGE = 0x10, IPPVC_TOP_RIGHT_EDGE = 0x20 }; #define IPPVC_CBP_1ST_CHROMA_DC_BITPOS 17 #define IPPVC_CBP_1ST_CHROMA_AC_BITPOS 19 #define IPPVC_CBP_CHROMA_DC (0x3< 0. // ippStsSizeErr Indicates an error when width or height of images is // less than or equal to zero // ippStsOutOfRangeErr Indicates an error when numWarpingPoints or // warpingAccuracy are out of valid diapason. */ IPPAPI(IppStatus, ippiWarpInit_MPEG4, ( IppiWarpSpec_MPEG4* pSpec, const int* pDU, const int* pDV, int numWarpingPoints, int spriteType, int warpingAccuracy, int roundingType, int quarterSample, int fcode, const IppiRect* spriteRect, const IppiRect* vopRect)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiWarpGetSize_MPEG4 // // Purpose: // Return size of IppiWarpSpec_MPEG4 structure // // Parameters: // pSpecSize Pointer to the resulting size of the structure // IppiWarpSpec_MPEG4. // Returns: // ippStsNoErr No error. // ippStsNullPtrErr Indicates an error when pointer pSpecSize is NULL. */ IPPAPI(IppStatus, ippiWarpGetSize_MPEG4, ( int* pSpecSize)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiWarpLuma_MPEG4_8u_C1R // // Purpose: // Warp an arbitrary luma rectangular region according motion parameters // stored in IppiWarpSpec_MPEG4 structure // // Parameters: // pSrcY Pointer to the origin of the source plane. // srcStep Step in bytes through the source plane // pDst Pointer to the destination region. // dstStep Step in bytes through the destination plane // dstRect The rectangular destination region // pSpec Pointer to the structure with motion parameters. // Returns: // ippStsNoErr No error. // ippStsNullPtrErr Indicates an error when at least one pointer is NULL. */ IPPAPI(IppStatus, ippiWarpLuma_MPEG4_8u_C1R, ( const Ipp8u* pSrcY, int srcStepY, Ipp8u* pDstY, int dstStepY, const IppiRect* dstRect, const IppiWarpSpec_MPEG4* pSpec)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiWarpChroma_MPEG4_8u_P2R // // Purpose: // Warp an arbitrary chroma rectangular region according motion parameters // stored in IppiWarpSpec_MPEG4 structure // // Parameters: // pSrcCb Pointer to the origin of the first source plane. // srcStepCb Step in bytes through the first source plane // pSrcCr Pointer to the origin of the second source plane. // srcStepCr Step in bytes through the second source plane // pDstCb Pointer to the first destination plane. // dstStepCb Step in bytes through the first destination plane // pDstCr Pointer to the second destination plane. // dstStepCr Step in bytes through the second destination plane // dstRect The rectangular destination region // pSpec Pointer to the structure with motion parameters. // Returns: // ippStsNoErr No error. // ippStsNullPtrErr Indicates an error when at least one pointer is NULL. */ IPPAPI(IppStatus, ippiWarpChroma_MPEG4_8u_P2R, ( const Ipp8u* pSrcCb, int srcStepCb, const Ipp8u* pSrcCr, int srcStepCr, Ipp8u* pDstCb, int dstStepCb, Ipp8u* pDstCr, int dstStepCr, const IppiRect* dstRect, const IppiWarpSpec_MPEG4* pSpec)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiCalcGlobalMV_MPEG4 // // Purpose: // Calculate a Global Motion Vector for one macroblock according motion // parameters stored in IppiWarpSpec_MPEG4 structure // // Parameters: // xOffset The left coordinate of top-left corner of luma 16x16 block // yOffset The top coordinate of top-left corner of luma 16x16 block // pGMV Pointer to the resulting motion vector. // pSpec Pointer to the structure with motion parameters. // Returns: // ippStsNoErr No error. // ippStsNullPtrErr Indicates an error when at least one pointer is NULL. */ IPPAPI(IppStatus, ippiCalcGlobalMV_MPEG4, ( int xOffset, int yOffset, IppMotionVector* pGMV, const IppiWarpSpec_MPEG4* pSpec)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiChangeSpriteBrightness_MPEG4_8u_C1IR // // Purpose: // Change brightness after sprite warping // // Parameters: // pSrcDst Pointer to the video plane. // srcDstStep Step in bytes through the video plane // width The width of the video plane // height The height of the video plane // brightnessChangeFactor Factor for changing brightness; valid in diapason // [-112; 1648] // Returns: // ippStsNoErr No error. // ippStsNullPtrErr Indicates an error when at least one pointer is NULL. // ippStsOutOfRangeErrIndicates an error when brightnessChangeFactor is out // of valid diapason. */ IPPAPI(IppStatus, ippiChangeSpriteBrightness_MPEG4_8u_C1IR, ( Ipp8u* pSrcDst, int srcDstStep, int width, int height, int brightnessChangeFactor)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiCopy8x8QP_MPEG4_8u_C1R // ippiCopy16x8QP_MPEG4_8u_C1R // ippiCopy16x16QP_MPEG4_8u_C1R // // Purpose: // Copy fixed sizes blocks with quarter-pixel accuracy // // Parameters: // pSrc Pointer to the source block. // srcStep Step in bytes through the source plane. // pDst Pointer to the destination block. // dstStep Step in bytes through the destination plane. // acc Parameter that determines quarter-pixel accuracy. // rounding Parameter that determines type of rounding for pixel // interpolation; may be 0 or 1 // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiCopy8x8QP_MPEG4_8u_C1R, ( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, int acc, int rounding)) IPPAPI(IppStatus, ippiCopy16x8QP_MPEG4_8u_C1R, ( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, int acc, int rounding)) IPPAPI(IppStatus, ippiCopy16x16QP_MPEG4_8u_C1R, ( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, int acc, int rounding)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiOBMC8x8HP_MPEG4_8u_C1R // ippiOBMC16x16HP_MPEG4_8u_C1R // ippiOBMC8x8QP_MPEG4_8u_C1R // // Purpose: // Performs the OBMC for a block with half-pixel and quarter pixel accuracy // // Parameters: // pSrc Pointer to the first pixel of the reference macroblock. // srcStep Width of the source plane. // pDst Pointer to the first pixel of the destination macroblock. // dstStep Width of the destination plane. // pMVCur Pointer to the motion vector for the current block. // pMVLeft Pointer to the motion vector for left block. // pMVRight Pointer to the motion vector for right block. // pMVAbove Pointer to the motion vector for above block. // pMVBelow Pointer to the motion vector for bellow block. // rounding Parameter specifying type of rounding according to 7.6.2.1 // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr One of the specified pointers is NULL. */ IPPAPI(IppStatus, ippiOBMC8x8HP_MPEG4_8u_C1R, ( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, const IppMotionVector* pMVCur, const IppMotionVector* pMVLeft, const IppMotionVector* pMVRight, const IppMotionVector* pMVAbove, const IppMotionVector* pMVBelow, int rounding)) IPPAPI(IppStatus, ippiOBMC16x16HP_MPEG4_8u_C1R, ( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, const IppMotionVector* pMVCur, const IppMotionVector* pMVLeft, const IppMotionVector* pMVRight, const IppMotionVector* pMVAbove, const IppMotionVector* pMVBelow, int rounding)) IPPAPI(IppStatus, ippiOBMC8x8QP_MPEG4_8u_C1R, ( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, const IppMotionVector* pMVCur, const IppMotionVector* pMVLeft, const IppMotionVector* pMVRight, const IppMotionVector* pMVAbove, const IppMotionVector* pMVBelow, int rounding)) /* /////////////////////////////////////////////////////////////////////////// // H.264 Video Decoder Functions //////////////////////////////////////////////////////////////////////////// */ /*//////////////////////////////////////////////////////////////////////////// // Name: // ippiPredictIntra_4x4_H264_8u_C1IR // // Purpose: // Performs intra prediction for a 4x4 luma component. // // Parameters: // pSrcDst - pointer to the source and destination array // srcDstStep - Step (in bytes) of the source and destination array, // predMode - prediction mode, valid range [0, 8] // avilability - flag that specifies the availability of // the samples for prediction. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsStepErr srcDstStep is less than 4 // ippStsOutOfRangeErr predMode is out of range [0,8] */ IPPAPI(IppStatus, ippiPredictIntra_4x4_H264_8u_C1IR, ( Ipp8u* pSrcDst, Ipp32s srcdstStep, IppIntra4x4PredMode_H264 predMode, Ipp32s availability)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiPredictIntra_16x16_H264_8u_C1IR // // Purpose: // Performs intra prediction for a 16x16 luma component. // // Parameters: // pSrcDst - pointer to the source and destination array // srcDstStep - Step (in bytes) of the source and destination array, // predMode - prediction mode, valid range [0,3] // avilability - flag that specifies the availability of // the samples for prediction. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsStepErr srcDstStep is less than 16 // ippStsOutOfRangeErr predMode is out of range [0,3] */ IPPAPI(IppStatus, ippiPredictIntra_16x16_H264_8u_C1IR, ( Ipp8u* pSrcDst, Ipp32s srcdstStep, IppIntra16x16PredMode_H264 predMode, Ipp32s availability)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiPredictIntraChroma8x8_H264_8u_C1IR // // Purpose: // Perform intra prediction for an 8x8 chroma component. // // Parameters: // pSrcDst - pointer to the source and destination array // srcDstStep - Step (in bytes) of the source and destination array, // predMode - prediction mode, valid range [0,3] // avilability - flag that specifies the availability of // the samples for prediction. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsStepErr srcDstStep is less than 8 // ippStsOutOfRangeErr predMode is out of range [0,3] */ IPPAPI(IppStatus, ippiPredictIntraChroma8x8_H264_8u_C1IR, ( Ipp8u* pSrcDst, Ipp32s srcdstStep, IppIntraChromaPredMode_H264 predMode, Ipp32s availability)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformDequantLumaDC_H264_16s_C1I // ippiTransformDequantChromaDC_H264_16s_C1I // // Purpose: // Perform integer inverse transformation and dequantization // for 4x4 luma DC coefficients, // and 2x2 chroma DC coefficients respectively. // // Parameters: // pSrcDst - pointer to initial coefficients and resultant DC, // QP - quantization parameter. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 1 or greater than 51 */ IPPAPI(IppStatus, ippiTransformDequantLumaDC_H264_16s_C1I, ( Ipp16s* pSrcDst, Ipp32s QP)) IPPAPI(IppStatus, ippiTransformDequantChromaDC_H264_16s_C1I, ( Ipp16s* pSrcDst, Ipp32s QP)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDequantTransformResidual_H264_16s_C1I // // Purpose: // Places a DC coefficient (if any) to its place, // Performs dequantization, integer inverse transformation and // shift by 6 bits for 4x4 block of residuals. // // Parameters: // pSrcDst - pointer to the initial coefficients and resultant residuals, // step - step (in bytes) of the source and destination array, // pDC - pointer to the DC coefficient. If it is set to NULL, than // Inter 4x4 Inverse quantization is performed on the DC // coefficient in the top left corner of the macroblock, // otherwise function just gets it in the specified location; // AC - flag that is not zero, if at least one AC coefficient exists, // and equals zero otherwise. // QP - quantization parameter. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 1 or greater than 51 // ippStsStepErr step is less than 8 respectively */ IPPAPI(IppStatus, ippiDequantTransformResidual_H264_16s_C1I, ( Ipp16s* pSrcDst, Ipp32s step, Ipp16s* pDC, Ipp32s AC, Ipp32s QP)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDequantTransformResidualAndAdd_H264_16s_C1I // // Purpose: // Places a DC coefficient (if any) to its place, // Performs dequantization, integer inverse transformation and // shift by 6 bits for 4x4 block of residuals // with subsequent intra prediction or motion // compensation. // // // Parameters: // pPred - pointer to the reference 4x4 block, which is used for intra // prediction or motion compensation. // pSrcDst - pointer to the initial coefficients and resultant residuals (4x4 // block) - array of size 16. // pDC - pointer to the DC coefficient. In the case of Intra 4x4 // macroblock type pDC is set to NULL. // pDst - pointer to the destination 4x4 block. // PredStep - reference frame step in bytes. // DstStep - destination frame step in bytes. // QP - quantization parameter // AC - flag that is not equal to zero, if at least one AC coefficient // exists, and is equal to zero otherwise. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 1 or greater than 51 // */ IPPAPI(IppStatus, ippiDequantTransformResidualAndAdd_H264_16s_C1I,( const Ipp8u* pPred, Ipp16s* pSrcDst, Ipp16s* pDC, Ipp8u* pDst, Ipp32s PredStep, Ipp32s DstStep, Ipp32s QP, Ipp32s AC)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDeblockingLuma_VerEdge_H264_8u_C1IR // // Purpose: // Performs deblocking filtering on the vertical edges of the // luma macroblock(16x16) in accordance with 8.7.2. of H.264 standard // // Parameters: // pSrcDst - pointer to the initial and resultant coefficients, // srcdstStep - step of the arrays, // pAlpha - array of size 2 of Alpha Thresholds(values for external // and internal vertical edge) // pBeta - array of size 2 of Beta Thresholds(values for external // and internal vertical edge) // pTresholds - array of size 16 of Thresholds (TC0)(values for // the left edge of each 4x4 block) // pBS - array of size 16 of BS parameters // // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation // and Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL */ IPPAPI(IppStatus, ippiFilterDeblockingLuma_VerEdge_H264_8u_C1IR, ( Ipp8u* pSrcDst, Ipp32s srcdstStep, const Ipp8u* pAlpha, const Ipp8u* pBeta, const Ipp8u* pThresholds, const Ipp8u* pBs)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDeblockingLuma_VerEdge_MBAFF_H264_8u_C1IR // // Purpose: // Performs deblocking filtering on the vertical edges of the // luma macroblock(16x16) in accordance with 8.7.2. of H.264 standard // // Parameters: // pSrcDst - pointer to the initial and resultant coefficients, // srcdstStep - step of the arrays, // nAlpha - Alpha Threshold (value for external vertical edge) // nBeta - Beta Threshold (value for external vertical edge) // pTresholds - array of size 16 of Thresholds // pBS - array of size 16 of BS parameters // // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation // and Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL */ IPPAPI(IppStatus, ippiFilterDeblockingLuma_VerEdge_MBAFF_H264_8u_C1IR, ( Ipp8u* pSrcDst, Ipp32s srcdstStep, Ipp32u nAlpha, Ipp32u nBeta, const Ipp8u* pThresholds, const Ipp8u* pBs)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDeblockingLuma_HorEdge_H264_8u_C1IR // // Purpose: // Performs deblocking filtering on the horizontal edges of the // luma macroblock(16x16) in accordance with 8.7.2. of H.264 standard // // Parameters: // pSrcDst - pointer to the initial and resultant coefficients, // srcdstStep - step of the arrays, // pAlpha - array of size 2 of Alpha Thresholds(values for external // and internal vertical edge) // pBeta - array of size 2 of Beta Thresholds(values for external // and internal vertical edge) // pTresholds - array of size 16 of Thresholds (TC0)(values for // the left edge of each 4x4 block) // pBS - array of size 16 of BS parameters // // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL */ IPPAPI(IppStatus, ippiFilterDeblockingLuma_HorEdge_H264_8u_C1IR, ( Ipp8u* pSrcDst, Ipp32s srcdstStep, const Ipp8u* pAlpha, const Ipp8u* pBeta, const Ipp8u* pThresholds, const Ipp8u* pBS)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDeblockingChroma_VerEdge_H264_8u_C1IR // // Purpose: // Performs deblocking filtering on the vertical edges of the // chroma macroblock(8x8) in accordance with 8.7.2. of the H.264 standard // // Parameters: // pSrcDst - pointer to the initial and resultant coefficients, // srcdstStep - step of the arrays, // pAlpha - array of size 2 of Alpha Thresholds(values for // external and internal vertical edge) // pBeta - array of size 2 of Beta Thresholds(values for // external and internal vertical edge) // pTresholds - array of size 16 of Thresholds (TC0)(values for // the left edge of each 2x2 block) // pBS - array of size 16 of BS parameters // // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL */ IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_H264_8u_C1IR, ( Ipp8u* pSrcDst, Ipp32s srcdstStep, const Ipp8u* pAlpha, const Ipp8u* pBeta, const Ipp8u* pThresholds, const Ipp8u* pBS)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDeblockingChroma_VerEdge_H264_8u_C2IR // // Purpose: // Performs deblocking filtering on the vertical edges of the // NV12 chroma macroblock(16x8) in accordance with 8.7.2. of the H.264 standard // // Parameters: // pSrcDst - pointer to the initial and resultant coefficients in NV12 format (UV...UV), // srcdstStep - step of the arrays, // pAlpha - array of size 2 of Alpha Thresholds(values for // external and internal vertical edge) // pBeta - array of size 2 of Beta Thresholds(values for // external and internal vertical edge) // pTresholds - array of size 16 of Thresholds (TC0)(values for // the left edge of each 4x2 block) // pBS - array of size 16 of BS parameters // // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL */ IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_H264_8u_C2IR, ( Ipp8u* pSrcDst, Ipp32u srcdstStep, const Ipp8u* pAlpha, const Ipp8u* pBeta, const Ipp8u* pThresholds, const Ipp8u* pBS)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDeblockingChroma_VerEdge_MBAFF_H264_8u_C1IR // // Purpose: // Performs deblocking filtering on the vertical edges of the // chroma macroblock(8x8) in accordance with 8.7.2. of the H.264 standard // // Parameters: // pSrcDst - pointer to the initial and resultant coefficients, // srcdstStep - step of the arrays, // nAlpha - Alpha Threshold (value for external vertical edge) // nBeta - Beta Threshold (value for external vertical edge) // pTresholds - array of size 16 of Thresholds // pBS - array of size 16 of BS parameters // // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL */ IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_MBAFF_H264_8u_C1IR, ( Ipp8u* pSrcDst, Ipp32s srcdstStep, Ipp32u nAlpha, Ipp32u nBeta, const Ipp8u* pThresholds, const Ipp8u* pBS)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDeblockingChroma_HorEdge_H264_8u_C1IR // // Purpose: // Performs deblocking filtering on the horizontal edges of the // chroma macroblock(8x8) in accordance with 8.7.2. of H.264 standard // // Parameters: // pSrcDst - pointer to the initial and resultant coefficients, // srcdstStep - step of the arrays, // pAlpha - array of size 2 of Alpha Thresholds (values for // external and internal horizontal edge) // pBeta - array of size 2 of Beta Thresholds (values for // external and internal horizontal edge) // pTresholds - array of size 16 of Thresholds (TC0) (values for // the upper edge of each 2x2 block) // pBS - array of size 16 of BS parameters (values for // external and internal horizontal edge) // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL */ IPPAPI(IppStatus, ippiFilterDeblockingChroma_HorEdge_H264_8u_C1IR, ( Ipp8u* pSrcDst, Ipp32s srcdstStep, const Ipp8u* pAlpha, const Ipp8u* pBeta, const Ipp8u* pThresholds, const Ipp8u* pBS)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDeblockingChroma_HorEdge_H264_8u_C2IR // // Purpose: // Performs deblocking filtering on the horizontal edges of the // chroma macroblock in NV12 format (16x8) in accordance with 8.7.2. of H.264 standard // // Parameters: // pSrcDst - pointer to the initial and resultant coefficients in NV12 format (UV...UV), // srcdstStep - step of the arrays, // pAlpha - array of size 2 of Alpha Thresholds (values for // external and internal horizontal edge) // pBeta - array of size 2 of Beta Thresholds (values for // external and internal horizontal edge) // pTresholds - array of size 16 of Thresholds (TC0) (values for // the upper edge of each 4x2 block) // pBS - array of size 16 of BS parameters (values for // external and internal horizontal edge) // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL */ IPPAPI(IppStatus, ippiFilterDeblockingChroma_HorEdge_H264_8u_C2IR, ( Ipp8u* pSrcDst, Ipp32u srcdstStep, const Ipp8u* pAlpha, const Ipp8u* pBeta, const Ipp8u* pThresholds, const Ipp8u* pBS)) IPPAPI(IppStatus, ippiFilterDeblockingLumaVerEdge_H264_16u_C1IR, ( const IppiFilterDeblock_16u * pDeblockInfo)) IPPAPI(IppStatus, ippiFilterDeblockingLumaVerEdgeMBAFF_H264_16u_C1IR, ( const IppiFilterDeblock_16u * pDeblockInfo)) IPPAPI(IppStatus, ippiFilterDeblockingLumaHorEdge_H264_16u_C1IR, ( const IppiFilterDeblock_16u * pDeblockInfo)) IPPAPI(IppStatus, ippiFilterDeblockingChromaVerEdge_H264_16u_C1IR, ( const IppiFilterDeblock_16u * pDeblockInfo)) IPPAPI(IppStatus, ippiFilterDeblockingChromaVerEdgeMBAFF_H264_16u_C1IR, ( const IppiFilterDeblock_16u * pDeblockInfo)) IPPAPI(IppStatus, ippiFilterDeblockingChromaHorEdge_H264_16u_C1IR, ( const IppiFilterDeblock_16u * pDeblockInfo)) IPPAPI(IppStatus, ippiFilterDeblockingChroma422VerEdge_H264_16u_C1IR, ( const IppiFilterDeblock_16u * pDeblockInfo)) IPP_DEPRECATED("This function is obsolete and not supported any more") \ IPPAPI(IppStatus, ippiFilterDeblockingChroma422VerEdgeMBAFF_H264_16u_C1IR, ( const IppiFilterDeblock_16u * pDeblockInfo)) IPPAPI(IppStatus, ippiFilterDeblockingChroma422HorEdge_H264_16u_C1IR, ( const IppiFilterDeblock_16u * pDeblockInfo)) IPPAPI(IppStatus, ippiFilterDeblockingChroma422VerEdge_H264_8u_C1IR, ( const IppiFilterDeblock_8u * pDeblockInfo)) IPP_DEPRECATED("This function is obsolete and not supported any more") \ IPPAPI(IppStatus, ippiFilterDeblockingChroma422VerEdgeMBAFF_H264_8u_C1IR, ( const IppiFilterDeblock_8u * pDeblockInfo)) IPPAPI(IppStatus, ippiFilterDeblockingChroma422HorEdge_H264_8u_C1IR, ( const IppiFilterDeblock_8u * pDeblockInfo)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateLuma_H264_8u_C1R // ippiInterpolateLumaTop_H264_8u_C1R // ippiInterpolateLumaBottom_H264_8u_C1R // // ippiInterpolateLuma_H264_16u_C1R // ippiInterpolateLumaTop_H264_16u_C1R // ippiInterpolateLumaBottom_H264_16u_C1R // // Purpose: // Performs interpolation for motion estimation of the luma component. // // Parameters: // pSrc - pointer to the source, // srcStep - step of the source buffer in bytes // pDst - pointer to destination (should be 16-bytes aligned), // dstStep - step of the destination buffer in bytes, // dx, dy - fractional parts of the motion vector in // 1/4 pel units (0, 1, 2, or 3), // outPixels - Number of pixels by which the data specified by pSrc reaches over the // frame top boundary. // roiSize - flag that specifies the dimensions of // the ROI(could be 16, 8 or 4 in each dimension). // // or // // interpolateInfo - pointer on IppVCInterpolate_16u structure. // outPixels - Number of pixels by which the data specified by pSrc reaches over the // frame top boundary. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // ippStsBadArg dx or dy is out of range [0, 3] // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, or 4 */ IPPAPI(IppStatus, ippiInterpolateLuma_H264_8u_C1R, ( const Ipp8u* pSrc, Ipp32s srcStep, Ipp8u* pDst, Ipp32s dstStep, Ipp32s dx, Ipp32s dy, IppiSize roiSize)) IPPAPI(IppStatus, ippiInterpolateLumaTop_H264_8u_C1R, ( const Ipp8u* pSrc, Ipp32s srcStep, Ipp8u* pDst, Ipp32s dstStep, Ipp32s dx, Ipp32s dy, Ipp32s outPixels, IppiSize roiSize)) IPPAPI(IppStatus, ippiInterpolateLumaBottom_H264_8u_C1R, ( const Ipp8u* pSrc, Ipp32s srcStep, Ipp8u* pDst, Ipp32s dstStep, Ipp32s dx, Ipp32s dy, Ipp32s outPixels, IppiSize roiSize)) IPPAPI(IppStatus, ippiInterpolateLuma_H264_16u_C1R, ( const IppVCInterpolate_16u * interpolateInfo)) IPPAPI(IppStatus, ippiInterpolateLumaTop_H264_16u_C1R, ( const IppVCInterpolate_16u * interpolateInfo, Ipp32s outPixels)) IPPAPI(IppStatus, ippiInterpolateLumaBottom_H264_16u_C1R, ( const IppVCInterpolate_16u * interpolateInfo, Ipp32s outPixels)) IPPAPI(IppStatus, ippiInterpolateBlock_H264_8u_P2P1R, ( const Ipp8u *pSrc1, const Ipp8u *pSrc2, Ipp8u *pDst, Ipp32u uWidth, Ipp32u uHeight, Ipp32s pitch)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateLumaBlock_H264_8u_P1R // // ippiInterpolateLumaBlock_H264_16u_P1R // // Purpose: // Performs interpolation for motion estimation of the luminance component. // // Parameters: // interpolateInfo - pointer to a structure having interpolation parameters // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, or 4 */ IPPAPI(IppStatus, ippiInterpolateLumaBlock_H264_8u_P1R, (const IppVCInterpolateBlock_8u *interpolateInfo)) IPPAPI(IppStatus, ippiInterpolateLumaBlock_H264_16u_P1R, (const IppVCInterpolateBlock_16u *interpolateInfo)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateChroma_H264_8u_C1R // ippiInterpolateChromaTop_H264_8u_C1R // ippiInterpolateChromaBottom_H264_8u_C1R // // ippiInterpolateChroma_H264_16u_C1R // ippiInterpolateChromaTop_H264_16u_C1R // ippiInterpolateChromaBottom_H264_16u_C1R // // Purpose: // Performs interpolation for motion estimation of the chroma component. // // Parameters: // pSrc - pointer to the source, // srcStep - step of the source buffer in bytes // pDst - pointer to destination // dstStep - step of the destination buffer in bytes, // dx, dy - fractional parts of the motion vector in // 1/8 pel units (0, 1, .., 7), // outPixels - Number of pixels by which the data specified by pSrc reaches over the // frame top boundary. // roiSiaze - flag that specifies the dimensions of // the ROI(could be 16, 8, 4 or 2 in each dimension). // // or // // interpolateInfo - pointer on IppVCInterpolate_16u structure. // outPixels - Number of pixels by which the data specified by pSrc reaches over the // frame top boundary. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // ippStsBadArg dx or dy is out of range [0,7] // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, 4 or 2 */ IPPAPI(IppStatus, ippiInterpolateChroma_H264_8u_C1R, ( const Ipp8u* pSrc, Ipp32s srcStep, Ipp8u* pDst, Ipp32s dstStep, Ipp32s dx, Ipp32s dy, IppiSize roiSize)) IPPAPI(IppStatus, ippiInterpolateChromaTop_H264_8u_C1R, ( const Ipp8u* pSrc, Ipp32s srcStep, Ipp8u* pDst, Ipp32s dstStep, Ipp32s dx, Ipp32s dy, Ipp32s outPixels, IppiSize roiSize)) IPPAPI(IppStatus, ippiInterpolateChromaBottom_H264_8u_C1R, ( const Ipp8u* pSrc, Ipp32s srcStep, Ipp8u* pDst, Ipp32s dstStep, Ipp32s dx, Ipp32s dy, Ipp32s outPixels, IppiSize roiSize)) IPPAPI(IppStatus, ippiInterpolateChroma_H264_16u_C1R, ( const IppVCInterpolate_16u * interpolateInfo)) IPPAPI(IppStatus, ippiInterpolateChromaTop_H264_16u_C1R, ( const IppVCInterpolate_16u * interpolateInfo, Ipp32s outPixels)) IPPAPI(IppStatus, ippiInterpolateChromaBottom_H264_16u_C1R, ( const IppVCInterpolate_16u * interpolateInfo, Ipp32s outPixels)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateChroma_H264_8u_C2P2R // // Purpose: // The function performs interpolation for motion estimation of the chrominance // component according H.264 standart. Clone of ippiInterpolateChroma_H264_8u_C1R, // but source image is chominance part of NV12 plane // NV12 Plane // YY YY YY YY // YY YY YY YY // UV UV UV UV - chominance part of NV12 plane. // // Parameters: // pSrcUV - pointer to the source (chrominance part of NV12 plane). // srcStep - step of the source buffer in bytes // pDstU - the pointer to the destination buffer for interpolated U coefficients // pDstV - the pointer to the destination buffer for interpolated V coefficients // dstStep - step of the destination U & V buffers in bytes, // dx, dy - fractional parts of the motion vector in // 1/8 pel units (0, 1, .., 7), // outPixels - Number of pixels by which the data specified by pSrc reaches over the // frame top boundary. // roi - value that specifies the dimensions of // the ROI(could be 16, 8, 4 or 2 in each dimension). */ IPPAPI(IppStatus, ippiInterpolateChroma_H264_8u_C2P2R, ( const Ipp8u *pSrcUV, Ipp32s srcStep, Ipp8u *pDstU, Ipp8u *pDstV, Ipp32s dstStep, Ipp32s dx, Ipp32s dy, IppiSize roi)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateChromaBlock_H264_8u_P2R // // ippiInterpolateChromaBlock_H264_16u_P2R // // Purpose: // Performs interpolation for motion estimation of the chrominance component. // // Parameters: // interpolateInfo - pointer to a structure having interpolation parameters // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, 4 or 2 */ IPPAPI(IppStatus, ippiInterpolateChromaBlock_H264_8u_P2R, (const IppVCInterpolateBlock_8u *interpolateInfo)) IPPAPI(IppStatus, ippiInterpolateChromaBlock_H264_16u_P2R, (const IppVCInterpolateBlock_16u *interpolateInfo)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateChromaBlock_H264_8u_C2P2R // // Purpose: // The function performs interpolation for motion estimation of the chrominance // component according H.264 standart. Clone of ippiInterpolateChromaBlock_H264_8u_P2R, // but source image is chominance part of NV12 plane. // NV12 Plane // YY YY YY YY // YY YY YY YY // UV UV UV UV - chominance part of NV12 plane. // // Parameters: // interpolateInfo - pointer to a structure having interpolation parameters // Note: // (in the IppVCInterpolateBlock_8u structure) // pSrc[0] the pointer to the source block ( chrominance part of NV12 plane). // pSrc[1] ignored. // 0...UV UV UV UV // 1...UV UV UV UV // ... // 4...UV UV UV UV // // pDst[0] = pDstU - the pointer to the destination buffer for interpolated U coefficients. // pDst[1] = pDstV - the pointer to the destination buffer for interpolated V coefficients. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, 4 or 2 */ IPPAPI(IppStatus, ippiInterpolateChromaBlock_H264_8u_C2P2R, (const IppVCInterpolateBlock_8u *interpolateInfo)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiWeightedAverage_H264_8u_C1IR // // Purpose: // Averages two blocks with weights (for weighted bi-directional // predictions) in accordance with 8.4.2.3.2 of the H.264 standard. // dst = Clip( ( w1*src1 + w2*src2 + (1<<(shift-1)) )>>shift + offset ) // // Parameters: // pSrc1 - pointer to 1st source (output of preceding functions), // pSrc2Dst - pointer to 2nd source and result // srcDstStep - step value in bytes, // weight1, weight2 - weights, // shift - shift, // offset - offset, // roiSize - flag that specifies the dimensions of the ROI // (could be 16, 8 or 4 in each dimension). // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // ippStsStepErr srcDstStep is less than roi.width // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiWeightedAverage_H264_8u_C1IR, ( const Ipp8u* pSrc1, Ipp8u* pSrc2Dst, Ipp32s srcDstStep, Ipp32s weight1, Ipp32s weight2, Ipp32s shift, Ipp32s offset, IppiSize roiSize)) IPPAPI(IppStatus, ippiUniDirWeightBlock_H264_8u_C1R, ( Ipp8u *pSrcDst, Ipp32u srcDstStep, Ipp32u ulog2wd, Ipp32s iWeight, Ipp32s iOffset, IppiSize roi )) IPPAPI(IppStatus, ippiUniDirWeightBlock_H264_8u_C1IR, ( Ipp8u *pSrcDst, Ipp32u srcDstStep, Ipp32u ulog2wd, Ipp32s iWeight, Ipp32s iOffset, IppiSize roi )) IPPAPI(IppStatus, ippiBiDirWeightBlock_H264_8u_P2P1R,( const Ipp8u *pSrc1, const Ipp8u *pSrc2, Ipp8u *pDst, Ipp32u srcStep, Ipp32u dstStep, Ipp32u ulog2wd, Ipp32s iWeight1, Ipp32s iOffset1, Ipp32s iWeight2, Ipp32s iOffset2, IppiSize roi )) IPPAPI(IppStatus, ippiBiDirWeightBlockImplicit_H264_8u_P2P1R, ( const Ipp8u *pSrc1, const Ipp8u *pSrc2, Ipp8u *pDst, Ipp32u srcStep, Ipp32u dstStep, Ipp32s iWeight1, Ipp32s iWeight2, IppiSize roi )) IPPAPI(IppStatus, ippiBidir_H264_16u_P2P1R, ( const IppVCBidir_16u * bidirInfo)) IPPAPI(IppStatus, ippiBidirWeightImplicit_H264_16u_P2P1R, ( const IppVCBidir_16u * bidirInfo, Ipp32s iWeight1, Ipp32s iWeight2)) IPPAPI(IppStatus, ippiBidirWeight_H264_16u_P2P1R, ( const IppVCBidir_16u * bidirInfo, Ipp32u ulog2wd, Ipp32s iWeight1, Ipp32s iOffset1, Ipp32s iWeight2, Ipp32s iOffset2)) IPPAPI(IppStatus, ippiUnidirWeight_H264_16u_IP2P1R, ( Ipp16u *pSrcDst, Ipp32u srcDstStep, Ipp32u ulog2wd, Ipp32s iWeight, Ipp32s iOffset, IppiSize roi, Ipp32s bitDepth)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformPrediction_H264_8u16s_C1 // // Purpose: // // Parameters: // pSrc - pointer to source, // step - source step in bytes, // pDst - pointer to destination // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiTransformPrediction_H264_8u16s_C1, ( const Ipp8u *pSrc, Ipp32s step, Ipp16s *pDst)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDequantTransformResidual_SISP_H264_16s_C1I // // Purpose: // // Parameters: // pSrcDst - pointer to working data, // pPredictBlock - // pDC - // AC - // qp - // qs - // Switch - // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiDequantTransformResidual_SISP_H264_16s_C1I, ( Ipp16s* pSrcDst, const Ipp16s* pPredictBlock, const Ipp16s* pDC, Ipp32s AC, Ipp32s qp, Ipp32s qs, Ipp32s Switch)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformDequantChromaDC_SISP_H264_16s_C1I // // Purpose: // The function performs integer inverse transformation and // dequantization for 2x2 chroma DC coefficients. // It used for SI & SP frames. // // Parameters: // pSrcDst - pointer to working data, // pDCpredict - // qp - // qs - // Switch - // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiTransformDequantChromaDC_SISP_H264_16s_C1I, ( Ipp16s* pSrcDst, const Ipp16s* pDCpredict, Ipp32s qp, Ipp32s qs, Ipp32s Switch)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructLumaIntraMB_H264_16s8u_C1R // // Purpose: // Reconstruct Intra Luma macroblock // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstYPlane - pointer to current MB which will be reconstructed // srcdstYStep - plane step // pMBIntraTypes - pointer to intra types for each subblock // cbp4x4 - coded block pattern // QP - quantizer // edgeType - MB eadge type // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiReconstructLumaIntraMB_H264_16s8u_C1R, (Ipp16s **ppSrcCoeff, Ipp8u *pSrcDstYPlane, Ipp32s srcdstYStep, const IppIntra4x4PredMode_H264 *pMBIntraTypes, const Ipp32u cbp4x4, const Ipp32u QP, const Ipp8u edgeType)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructChromaInterMB_H264_16s8u_P2R // // Purpose: // Reconstruct Inter Chroma macroblock // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstUPlane - pointer to current U plane which will be reconstructed // pSrcDstVPlane - pointer to current V plane which will be reconstructed // srcdstUVStep - plane step // cbp4x4 - coded block pattern // ChromaQP - chroma quantizer // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39 // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiReconstructChromaInterMB_H264_16s8u_P2R, (Ipp16s **ppSrcCoeff, Ipp8u *pSrcDstUPlane, Ipp8u *pSrcDstVPlane, const Ipp32u srcdstStep, const Ipp32u cbp4x4, const Ipp32u ChromaQP)) IPPAPI(IppStatus, ippiReconstructLumaIntraHalfMB_H264_16s8u_C1R, (Ipp16s **ppSrcCoeff, Ipp8u *pSrcDstYPlane, Ipp32s srcdstYStep, IppIntra4x4PredMode_H264 *pMBIntraTypes, Ipp32u cbp4x2, Ipp32u QP, Ipp8u edgeType)) IPPAPI(IppStatus, ippiReconstructChromaIntraHalfsMB_H264_16s8u_P2R, (Ipp16s **ppSrcCoeff, Ipp8u *pSrcDstUPlane, Ipp8u *pSrcDstVPlane, Ipp32u srcdstUVStep, IppIntraChromaPredMode_H264 intra_chroma_mode, Ipp32u cbp4x4, Ipp32u ChromaQP, Ipp8u edge_type_top, Ipp8u edge_type_bottom)) IPPAPI(IppStatus, ippiReconstructChromaIntraHalvesMB_H264_16s8u_P2R, (Ipp16s **ppSrcCoeff, Ipp8u *pSrcDstUPlane, Ipp8u *pSrcDstVPlane, Ipp32u srcdstUVStep, IppIntraChromaPredMode_H264 intra_chroma_mode, Ipp32u cbp4x4, Ipp32u ChromaQP, Ipp8u edge_type_top, Ipp8u edge_type_bottom)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructChromaIntraMB_H264_16s8u_P2R // // Purpose: // Reconstruct Intra Chroma macroblock // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstUPlane - pointer to current U plane which will be reconstructed // pSrcDstVPlane - pointer to current V plane which will be reconstructed // srcdstUVStep - plane step // intra_chroma_mode - intra mode // cbp4x4 - coded block pattern // ChromaQP - chroma quantizer // edge_type - edge type // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39 // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiReconstructChromaIntraMB_H264_16s8u_P2R, (Ipp16s **ppSrcCoeff, Ipp8u *pSrcDstUPlane, Ipp8u *pSrcDstVPlane, const Ipp32u srcdstUVStep, const IppIntraChromaPredMode_H264 intra_chroma_mode, const Ipp32u cbp4x4, const Ipp32u ChromaQP, const Ipp8u edge_type)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructLumaInterMB_H264_16s8u_C1R // // Purpose: // Reconstruct Inter Luma macroblock // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstYPlane - pointer to current Y plane which will be reconstructed // srcdsYStep - plane step // cbp4x4 - coded block pattern // QP - quantizer // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiReconstructLumaInterMB_H264_16s8u_C1R, (Ipp16s **ppSrcCoeff, Ipp8u *pSrcDstYPlane, Ipp32u srcdstYStep, Ipp32u cbp4x4, Ipp32s QP)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructLumaIntra16x16MB_H264_16s8u_C1R // // Purpose: // Reconstruct Intra 16x16 Luma macroblock // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstYPlane - pointer to current Y plane which will be reconstructed // srcdstYStep - plane step // intra_luma_mode - intra mode // cbp4x4 - coded block pattern // QP - quantizer // edge_type - edge type // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiReconstructLumaIntra16x16MB_H264_16s8u_C1R, (Ipp16s **ppSrcCoeff, Ipp8u *pSrcDstYPlane, Ipp32u srcdstYStep, const IppIntra16x16PredMode_H264 intra_luma_mode, const Ipp32u cbp4x4, const Ipp32u QP, const Ipp8u edge_type)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructLumaIntra_16x16MB_H264_16s8u_C1R // // Purpose: // Reconstruct Intra 16x16 Luma macroblock for high profile // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstYPlane - pointer to current Y plane which will be reconstructed // srcdstYStep - plane step // intra_luma_mode - intra mode // cbp4x4 - coded block pattern // QP - quantizer // edge_type - edge type // pQuantTable - pointer to quantization table // bypass_flag - enable lossless coding when qpprime_y is zero // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // */ IPPAPI(IppStatus, ippiReconstructLumaIntra_16x16MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff, Ipp8u *pSrcDstYPlane, Ipp32u srcdstYStep, IppIntra16x16PredMode_H264 intra_luma_mode, Ipp32u cbp4x4, Ipp32u QP, Ipp8u edge_type, const Ipp16s *pQuantTable, Ipp8u bypass_flag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructLumaIntra4x4MB_H264_16s8u_C1R // // Purpose: // Reconstruct Intra 4x4 Luma macroblock for high profile // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstYPlane - pointer to current Y plane which will be reconstructed // srcdstYStep - plane step // pMBIntraTypes - pointer to intra types for each subblock // cbp4x4 - coded block pattern // QP - quantizer // edge_type - edge type // pQuantTable - pointer to quantization table // bypass_flag - enable lossless coding when qpprime_y is zero // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // */ IPPAPI(IppStatus, ippiReconstructLumaIntra4x4MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff, Ipp8u *pSrcDstYPlane, Ipp32s srcdstYStep, IppIntra4x4PredMode_H264 *pMBIntraTypes, Ipp32u cbp4x4, Ipp32u QP, Ipp8u edgeType, const Ipp16s *pQuantTable, Ipp8u bypass_flag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructLumaInter4x4MB_H264_16s8u_C1R // // Purpose: // Reconstruct Inter 4x4 Luma macroblock for high profile // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstYPlane - pointer to current Y plane which will be reconstructed // srcdstYStep - plane step // cbp4x4 - coded block pattern // QP - quantizer // pQuantTable - pointer to quantization table // bypass_flag - enable lossless coding when qpprime_y is zero // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // */ IPPAPI(IppStatus, ippiReconstructLumaInter4x4MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff, Ipp8u *pSrcDstYPlane, Ipp32u srcdstYStep, Ipp32u cbp4x4, Ipp32s QP, const Ipp16s *pQuantTable, Ipp8u bypass_flag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructChromaInter4x4MB_H264_16s8u_P2R // // Purpose: // Reconstruct Inter Chroma 4x4 macroblock for high profile // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstUPlane - pointer to current U plane which will be reconstructed // pSrcDstVPlane - pointer to current V plane which will be reconstructed // srcdstUVStep - plane step // cbp4x4 - coded block pattern // chromaQPU - chroma quantizer for U plane // chromaQPV - chroma quantizer for V plane // edge_type - edge type // pQuantTableU - pointer to quantization table for U plane // pQuantTableV - pointer to quantization table for V plane // bypass_flag - enable lossless coding when qpprime_y is zero // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39 // // Notes: // */ IPPAPI(IppStatus, ippiReconstructChromaInter4x4MB_H264_16s8u_P2R, (Ipp16s **ppSrcDstCoeff, Ipp8u *pSrcDstUPlane, Ipp8u *pSrcDstVPlane, Ipp32u srcdstUVStep, Ipp32u cbp4x4, Ipp32u chromaQPU, Ipp32u chromaQPV, const Ipp16s *pQuantTableU, const Ipp16s *pQuantTableV, Ipp8u bypass_flag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructChromaIntra4x4MB_H264_16s8u_P2R // // Purpose: // Reconstruct Intra Chroma 4x4 macroblock for high profile // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstUPlane - pointer to current U plane which will be reconstructed // pSrcDstVPlane - pointer to current V plane which will be reconstructed // srcdstUVStep - plane step // intra_chroma_mode - intra mode // cbp4x4 - coded block pattern // edge_type - edge type // chromaQPU - chroma quantizer for U plane // chromaQPV - chroma quantizer for V plane // pQuantTableU - pointer to quantization table for U plane // pQuantTableV - pointer to quantization table for V plane // bypass_flag - enable lossless coding when qpprime_y is zero // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39 // // Notes: */ IPPAPI(IppStatus, ippiReconstructChromaIntra4x4MB_H264_16s8u_P2R, (Ipp16s **ppSrcDstCoeff, Ipp8u *pSrcDstUPlane, Ipp8u *pSrcDstVPlane, Ipp32u srcdstUVStep, IppIntraChromaPredMode_H264 intra_chroma_mode, Ipp32u cbp4x4, Ipp32u chromaQPU, Ipp32u chromaQPV, Ipp8u edge_type, const Ipp16s *pQuantTableU, const Ipp16s *pQuantTableV, Ipp8u bypass_flag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructLumaIntra8x8MB_H264_16s8u_C1R // // Purpose: // Reconstruct Intra 8x8 Luma macroblock for high profile // // Parameters: // ppSrcCoeff - pointer to 8x8 block of coefficients, if it's non zero(will be update by function) // pSrcDstYPlane - pointer to current Y plane which will be reconstructed // srcdstYStep - plane step // pMBIntraTypes - pointer to intra types for each subblock // cbp8x8 - coded block pattern // QP - quantizer // edge_type - edge type // pQuantTable - pointer to quantization table // bypass_flag - enable lossless coding when qpprime_y is zero // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // */ IPPAPI(IppStatus, ippiReconstructLumaIntra8x8MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff, Ipp8u *pSrcDstYPlane, Ipp32s srcdstYStep, IppIntra8x8PredMode_H264 *pMBIntraTypes, Ipp32u cbp8x8, Ipp32u QP, Ipp8u edgeType, const Ipp16s *pQuantTable, Ipp8u bypass_flag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructLumaInter8x8MB_H264_16s8u_C1R // // Purpose: // Reconstruct Inter 8x8 Luma macroblock for high profile // // Parameters: // ppSrcCoeff - pointer to 8x8 block of coefficients, if it's non zero(will be update by function) // pSrcDstYPlane - pointer to current Y plane which will be reconstructed // srcdstYStep - plane step // cbp8x8 - coded block pattern // QP - quantizer // pQuantTable - pointer to quantization table // bypass_flag - enable lossless coding when qpprime_y is zero // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // */ IPPAPI(IppStatus, ippiReconstructLumaInter8x8MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff, Ipp8u *pSrcDstYPlane, Ipp32u srcdstYStep, Ipp32u cbp8x8, Ipp32s QP, const Ipp16s *pQuantTable, Ipp8u bypass_flag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructLumaIntraHalf4x4MB_H264_16s8u_C1R // // Purpose: // Reconstruct Intra 4x4 Luma macroblock for high profile in MBAFF mode // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstYPlane - pointer to current Y plane which will be reconstructed // pMBIntraTypes - pointer to intra types for each subblock // cbp4x2 - coded block pattern // QP - quantizer // edge_type - edge type // pQuantTable - pointer to quantization table // bypass_flag - enable lossless coding when qpprime_y is zero // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // */ IPPAPI(IppStatus, ippiReconstructLumaIntraHalf4x4MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff, Ipp8u *pSrcDstYPlane, Ipp32s srcdstYStep, IppIntra4x4PredMode_H264 *pMBIntraTypes, Ipp32u cbp4x2, Ipp32u QP, Ipp8u edgeType, const Ipp16s *pQuantTable, Ipp8u bypass_flag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructLumaIntraHalf8x8MB_H264_16s8u_C1R // // Purpose: // Reconstruct Intra 8x8 Luma macroblock for high profile in MBAFF mode // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstYPlane - pointer to current Y plane which will be reconstructed // pMBIntraTypes - pointer to intra types for each subblock // cbp8x2 - coded block pattern // QP - quantizer // edge_type - edge type // pQuantTable - pointer to quantization table // bypass_flag - enable lossless coding when qpprime_y is zero // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // */ IPPAPI(IppStatus, ippiReconstructLumaIntraHalf8x8MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff, Ipp8u *pSrcDstYPlane, Ipp32s srcdstYStep, IppIntra8x8PredMode_H264 *pMBIntraTypes, Ipp32u cbp8x2, Ipp32u QP, Ipp8u edgeType, const Ipp16s *pQuantTable, Ipp8u bypass_flag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructChromaIntra4x4MB_H264_16s8u_P2R // // Purpose: // Reconstruct Intra Chroma 4x4 macroblock for high profile in MBAFF mode // // Parameters: // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pSrcDstUPlane - pointer to current U plane which will be reconstructed // pSrcDstVPlane - pointer to current V plane which will be reconstructed // srcdstUVStep - plane step // intra_chroma_mode - intra mode // cbp4x4 - coded block pattern // edge_type_top - edge type top // edge_type_bottom - edge type bottom // chromaQPU - chroma quantizer for U plane // chromaQPV - chroma quantizer for V plane // pQuantTableU - pointer to quantization table for U plane // pQuantTableV - pointer to quantization table for V plane // bypass_flag - enable lossless coding when qpprime_y is zero // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrcDst is NULL // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39 // // Notes: */ IPPAPI(IppStatus, ippiReconstructChromaIntraHalfs4x4MB_H264_16s8u_P2R, (Ipp16s **ppSrcDstCoeff, Ipp8u *pSrcDstUPlane, Ipp8u *pSrcDstVPlane, Ipp32u srcdstUVStep, IppIntraChromaPredMode_H264 intra_chroma_mode, Ipp32u cbp4x4, Ipp32u chromaQPU, Ipp32u chromaQPV, Ipp8u edge_type_top, Ipp8u edge_type_bottom, const Ipp16s *pQuantTableU, const Ipp16s *pQuantTableV, Ipp8u bypass_flag)) IPPAPI(IppStatus, ippiReconstructChromaIntraHalves4x4MB_H264_16s8u_P2R, (Ipp16s **ppSrcDstCoeff, Ipp8u *pSrcDstUPlane, Ipp8u *pSrcDstVPlane, Ipp32u srcdstUVStep, IppIntraChromaPredMode_H264 intra_chroma_mode, Ipp32u cbp4x4, Ipp32u chromaQPU, Ipp32u chromaQPV, Ipp8u edge_type_top, Ipp8u edge_type_bottom, const Ipp16s *pQuantTableU, const Ipp16s *pQuantTableV, Ipp8u bypass_flag)) IPPAPI(IppStatus, ippiReconstructChromaIntra4x4_H264High_32s16u_IP2R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo[2], IppIntraChromaPredMode_H264 intraChromaMode, Ipp32u edgeType)) IPPAPI(IppStatus, ippiReconstructChromaIntraHalf4x4_H264High_32s16u_IP2R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo[2], IppIntraChromaPredMode_H264 intraChromaMode, Ipp32u edgeTypeTop, Ipp32u edgeTypeBottom)) IPPAPI(IppStatus, ippiReconstructChromaInter4x4_H264High_32s16u_IP2R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo[2])) IPPAPI(IppStatus, ippiReconstructChroma422Intra4x4_H264High_32s16u_IP2R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo[2], IppIntraChromaPredMode_H264 intraChromaMode, Ipp32u edgeType, Ipp32u levelScaleDCU, Ipp32u levelScaleDCV)) IPPAPI(IppStatus, ippiReconstructChroma422IntraHalf4x4_H264High_32s16u_IP2R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo[2], IppIntraChromaPredMode_H264 intraChromaMode, Ipp32u edgeTypeTop, Ipp32u edgeTypeBottom, Ipp32u levelScaleDCU, Ipp32u levelScaleDCV)) IPPAPI(IppStatus, ippiReconstructChroma422Inter4x4_H264High_32s16u_IP2R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo[2], Ipp32u levelScaleDCU, Ipp32u levelScaleDCV)) IPPAPI(IppStatus, ippiReconstructLumaIntra4x4_H264High_32s16u_IP1R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo, const IppIntra4x4PredMode_H264 *pMBIntraTypes, Ipp32s edgeType)) IPPAPI(IppStatus, ippiReconstructLumaIntraHalf4x4_H264High_32s16u_IP1R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo, const IppIntra4x4PredMode_H264 *pMBIntraTypes, Ipp32u edgeType)) IPPAPI(IppStatus, ippiReconstructLumaIntra8x8_H264High_32s16u_IP1R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo, IppIntra8x8PredMode_H264 *pMBIntraTypes, Ipp32u edgeType)) IPPAPI(IppStatus, ippiReconstructLumaIntraHalf8x8_H264High_32s16u_IP1R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo, IppIntra8x8PredMode_H264 *pMBIntraTypes, Ipp32u edgeType)) IPPAPI(IppStatus, ippiReconstructLumaIntra16x16_H264High_32s16u_IP1R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo, IppIntra16x16PredMode_H264 intraLumaMode, Ipp32u edgeType)) IPPAPI(IppStatus, ippiReconstructLumaInter4x4_H264High_32s16u_IP1R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo)) IPPAPI(IppStatus, ippiReconstructLumaInter8x8_H264High_32s16u_IP1R, ( const IppiReconstructHighMB_32s16u * pReconstructInfo)) IPPAPI(IppStatus, ippiReconstructChroma422Intra4x4_H264High_16s8u_IP2R, ( const IppiReconstructHighMB_16s8u * pReconstructInfo[2], IppIntraChromaPredMode_H264 intraChromaMode, Ipp32u edgeType, Ipp32u levelScaleDCU, Ipp32u levelScaleDCV)) IPPAPI(IppStatus, ippiReconstructChroma422IntraHalf4x4_H264High_16s8u_IP2R, ( const IppiReconstructHighMB_16s8u * pReconstructInfo[2], IppIntraChromaPredMode_H264 intraChromaMode, Ipp32u edgeTypeTop, Ipp32u edgeTypeBottom, Ipp32u levelScaleDCU, Ipp32u levelScaleDCV)) IPPAPI(IppStatus, ippiReconstructChroma422Inter4x4_H264High_16s8u_IP2R, ( const IppiReconstructHighMB_16s8u * pReconstructInfo[2], Ipp32u levelScaleDCU, Ipp32u levelScaleDCV)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateBlock_H264_8u_P3P1R // // Purpose: interpolation block nHeight x nWidth // // // Parameters: // pSrc0 - pointer to first source // pSrc1 - pointer to second source // pDst - pointer to destination // nWidth - block width // nHeight - block height // iPitchSrc0 - first source pitch // iPitchSrc1 - second source pitch // iPitchDst - destination pitch // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrc0 or pSrc1 or pDst is NULL // Notes: // */ IPPAPI(IppStatus, ippiInterpolateBlock_H264_8u_P3P1R, ( const Ipp8u *pSrc1, const Ipp8u *pSrc2, Ipp8u *pDst, Ipp32u uWidth, Ipp32u uHeight, Ipp32s iPitchSrc1, Ipp32s iPitchSrc2, Ipp32s iPitchDst)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiBiDirWeightBlock_H264_8u_P3P1R // // Purpose: Apply specified weighting and offset to all samples of the blocks, // and combine them. // Sw = clip( (S0*weight0 + S1*weight1 + round) >> (ulog2wd+1) + // ((offset0 + offset1 + 1)>>1) ) // // Parameters: // pSrc1 - pointer to first source // pSrc2 - pointer to second source // pDst - pointer to destination // nWidth - block width // nHeight - block height // nSrcPitch1 - first source pitch // nSrcPitch2 - second source pitch // nDstPitch - destination pitch // ulog2wd - log2 weight denominator // iWeight1 - weight coefficient for first source // iOffset1 - offset for first source // iWeight2 - weight coefficient for second source // iOffset2 - offset for second source // roi - block size // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrc1 or pSrc2 or pDst is NULL // Notes: // */ IPPAPI(IppStatus, ippiBiDirWeightBlock_H264_8u_P3P1R,( const Ipp8u *pSrc1, const Ipp8u *pSrc2, Ipp8u *pDst, Ipp32u nSrcPitch1, Ipp32u nSrcPitch2, Ipp32u nDstPitch, Ipp32u ulog2wd, Ipp32s iWeight1, Ipp32s iOffset1, Ipp32s iWeight2, Ipp32s iOffset2, IppiSize roi )) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiBiDirWeightBlockImplicit_H264_8u_P3P1R // // Purpose: Implicit bidir prediction weighting using simplified weighting with // no offsets. // Sw = clip((S0*weight0 + S1*weight1 + 32) >> 6)) // // Parameters: // pDst - pointer to destination // nWidth - block width // nHeight - block height // nSrcPitch1 - first source pitch // nSrcPitch2 - second source pitch // nDstPitch - destination pitch // iWeight1 - weight coefficient for first source // iWeight2 - weight coefficient for second source // roi - block size // // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pSrc0 or pSrc1 or pDst is NULL // Notes: // */ IPPAPI(IppStatus, ippiBiDirWeightBlockImplicit_H264_8u_P3P1R,(const Ipp8u *pSrc1, const Ipp8u *pSrc2, Ipp8u *pDst, Ipp32u nSrcPitch1, Ipp32u nSrcPitch2, Ipp32u nDstPitch, Ipp32s iWeight1, Ipp32s iWeight2, IppiSize roi )) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDecodeCAVLCChromaDcCoeffs_H264_1u16s // // Purpose: Decode Chroma DC coefficients CAVLC coded // // Parameters: // ppBitStream - double pointer to current dword in bitstream(will be updated by function) // pOffset - pointer to offset in current dword(will be updated by function) // pNumCoeff - output number of coefficients // ppPosCoefbuf - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // pTblCoeffToken - chroma DC CoeffToken Table // ppTblTotalZerosCR - chroma DC TotalZeros Tables // ppTblRunBefore - RunBefore Tables // // Returns: // ippStsNoErr No error // ippStsNullPtrErr if a pointer is NULL // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiDecodeCAVLCChromaDcCoeffs_H264_1u16s, (Ipp32u **ppBitStream, Ipp32s *pOffset, Ipp16s *pNumCoeff, Ipp16s **ppDstCoeffs, const Ipp32s *pTblCoeffToken, const Ipp32s **ppTblTotalZerosCR, const Ipp32s **ppTblRunBefore)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDecodeCAVLCCoeffs_H264_1u16s // // Purpose: // Decode any non Chroma DC coefficients CAVLC coded // // Parameters: // ppBitStream - double pointer to current dword in bitstream(will be updated by function) // pOffset - pointer to offset in current dword(will be updated by function) // pNumCoeff - output number of coefficients // ppPosCoefbuf - pointer to 4x4 block of coefficients, if it's non zero(will be update by function) // uVLCSelect - predictor on number of CoeffToken Table // uMaxNumCoeff - maximum coefficients in block(16 for Intra16x16, 15 for the rest) // pTblCoeffToken - CoeffToken Tables // ppTblTotalZeros - TotalZeros Tables // ppTblRunBefore - RunBefore Tables // pScanMatrix - inverse scan matrix for coefficients in block // // Returns: // ippStsNoErr No error // ippStsNullPtrErr if a pointer is NULL // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiDecodeCAVLCCoeffs_H264_1u16s, (Ipp32u **ppBitStream, Ipp32s *pOffset, Ipp16s *pNumCoeff, Ipp16s **ppDstCoeffs, Ipp32u uVLCSelect, Ipp16s uMaxNumCoeff, const Ipp32s **ppTblCoeffToken, const Ipp32s **ppTblTotalZeros, const Ipp32s **ppTblRunBefore, const Ipp32s *pScanMatrix)) IPPAPI(IppStatus, ippiDecodeExpGolombOne_H264_1u16s, (Ipp32u **ppBitStream, Ipp32s *pBitOffset, Ipp16s *pDst, Ipp8u isSigned)) IPPAPI(IppStatus, ippiDecodeExpGolombOne_H264_1u32s, (Ipp32u **ppBitStream, Ipp32s *pBitOffset, Ipp32s *pDst, Ipp32s isSigned)) IPPAPI(IppStatus,ippiDecodeCAVLCChroma422DcCoeffs_H264_1u16s,(Ipp32u **ppBitStream, Ipp32s *pBitOffset, Ipp16s *pNumCoeff, Ipp16s **ppDstCoeffs, const Ipp32s *pTblCoeffToken, const Ipp32s **ppTblTotalZerosCR, const Ipp32s **ppTblRunBefore)) IPPAPI(IppStatus, ippiDecodeCAVLCCoeffs_H264_1u32s, (Ipp32u **ppBitStream, Ipp32s *pBitOffset, Ipp16s *pNumCoeff, Ipp32s **ppDstCoeffs, Ipp32u uVLCSelect, Ipp16s uMaxNumCoeff, const Ipp32s **ppTblCoeffToken, const Ipp32s **ppTblTotalZeros, const Ipp32s **ppTblRunBefore, const Ipp32s *pScanMatrix)) IPPAPI(IppStatus, ippiDecodeCAVLCChromaDcCoeffs_H264_1u32s, (Ipp32u **ppBitStream, Ipp32s *pBitOffset, Ipp16s *pNumCoeff, Ipp32s **ppDstCoeffs, const Ipp32s *pTblCoeffToken, const Ipp32s **ppTblTotalZerosCR, const Ipp32s **ppTblRunBefore)) IPPAPI(IppStatus, ippiDecodeCAVLCChroma422DcCoeffs_H264_1u32s,(Ipp32u **ppBitStream, Ipp32s *pBitOffset, Ipp16s *pNumCoeff, Ipp32s **ppDstCoeffs, const Ipp32s *pTblCoeffToken, const Ipp32s **ppTblTotalZerosCR, const Ipp32s **ppTblRunBefore)) IPPAPI(IppStatus, ippiExpandPlane_H264_8u_C1R, ( Ipp8u *StartPtr, Ipp32u uFrameWidth, Ipp32u uFrameHeight, Ipp32u uPitch, Ipp32u uPels, IppvcFrameFieldFlag uFrameFieldFlag)) /* /////////////////////////////////////////////////////////////////////////// // H.264 Video Encoder Functions //////////////////////////////////////////////////////////////////////////// */ /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiEncodeCoeffsCAVLC_H264_16s // ippiEncodeCoeffsCAVLC_H264_32s // // Purpose: Calculates characteristics of 4X4 block for CAVLC encoding. // // Parameters: // pSrc Pointer to 4x4 block - array of size 16. // AC Flag, equal to zero in the cases of Luma Intra 16x16 AC block // or Chroma AC block, and is not equal to zero otherwise. // pScanMatrix Scan matrix for coefficients in block (array of size 16). // Count Position of the last non-zero block coefficient in the scanning sequence. // Traling_One The number of trailing ones transform coefficient levels // in a range[0;3]. This argument is calculated by the function. // Traling_One_Signs Code that describes signs of trailing ones. // (Trailing_One 1 - i)-bit in this code corresponds to a sign // of i-trailing one in the current block. In this code 1 indicates // negative value, 0 positive value. This argument is calculated // by the function. // NumOutCoeffs The number of non-zero coefficients in block (including trailing // ones). This argument is calculated by the function. // TotalZeros The number of zero coefficients in block (except trailing zeros). This // argument is calculated by the function. // pLevels Pointer to an array of size 16 that contains non-zero quantized // coefficients of the current block (except trailing ones) in reverse scan // matrix order. // pRuns Pointer to an array of size 16 that contains runs before non-zero // quantized coefficients (including trailing ones) of the current block in // reverse scan matrix order (except run before the first non-zero // coefficient in block, which can be calculated using TotalZeros). // // Returns: // ippStsNoErr No error // ippStsNullPtrErr if a pointer is NULL // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiEncodeCoeffsCAVLC_H264_16s, ( const Ipp16s *pSrc, Ipp8u AC, const Ipp32s *pScanMatrix, Ipp8u Count, Ipp8u *Trailing_Ones, Ipp8u *Trailing_One_Signs, Ipp8u *NumOutCoeffs, Ipp8u *TotalZeros, Ipp16s *Levels, Ipp8u *Runs)) IPPAPI(IppStatus, ippiEncodeCoeffsCAVLC_H264_32s ,( const Ipp32s* pSrc, Ipp32s AC, const Ipp32s* pScanMatrix, Ipp32s Count, Ipp8u* Trailing_Ones, Ipp8u* Trailing_One_Signs, Ipp8u* NumOutCoeffs, Ipp8u* TotalZeroes, Ipp32s* Levels, Ipp8u* Runs)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiEncodeChromaDcCoeffsCAVLC_H264_16s // // Purpose: Calculates characteristics of 2X2 Chroma DC for CAVLC encoding. // // Parameters: // pSrc Pointer to 2x2 block - array of size 4. // Traling_One The number of trailing ones transform coefficient levels // in a range[0;3]. This argument is calculated by the function. // Traling_One_Signs Code that describes signs of trailing ones. // (Trailing_One 1 - i)-bit in this code corresponds to a sign // of i-trailing one in the current block. In this code 1 indicates // negative value, 0 positive value. This argument is calculated // by the function. // NumOutCoeffs The number of non-zero coefficients in block (including trailing // ones). This argument is calculated by the function. // TotalZeros The number of zero coefficients in block (except trailing zeros). This // argument is calculated by the function. // pLevels Pointer to an array of size 4 that contains non-zero quantized // coefficients of the current block (except trailing ones) in reverse scan // matrix order. // pRuns Pointer to an array of size 4 that contains runs before non-zero // quantized coefficients (including trailing ones) of the current block in // reverse scan matrix order (except run before the first non-zero // coefficient in block, which can be calculated using TotalZeros). // // Returns: // ippStsNoErr No error // ippStsNullPtrErr if a pointer is NULL // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiEncodeChromaDcCoeffsCAVLC_H264_16s, ( const Ipp16s *pSrc, Ipp8u *pTrailingOnes, Ipp8u *pTrailingOneSigns, Ipp8u *pNumOutCoeffs, Ipp8u *pTotalZeros, Ipp16s *pLevels, Ipp8u *pRuns)) /* // Name: // ippiTransformQuantChromaDC_H264_16s_C1I // // Purpose: This function performs forward transform (if it's necessary) and quantization // for 2x2 DC Croma block // // Parameters: // pSrcDst Pointer to 2x2 chroma DC block - source & destination array of size 4 // pTBlock Pointer to 2x2 transformed chroma DC block - source or destination array of size 4 // QPCroma Quantization parameter for chroma. It's in range [0,39] // NumLevels Pointer to value, which contains: a negative value of a number of non-zero // elements in block after quantization (in the case of the first quantized element // in block is not equal zero) // a number of non-zero elements in block after quantization (in the case of the // first quantized element in block is equal zero) // This value is calculated by function. // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise. // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 // if transforming process is not used. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pointers are NULL // ippStsOutOfRangeErr QPCroma >39 // ippStsScaleRangeErr if any coefficient after quantization > MAX_CAVLC_LEVEL_VALUE */ IPPAPI(IppStatus, ippiTransformQuantChromaDC_H264_16s_C1I, ( Ipp16s* pSrcDst, Ipp16s* pTBlock, Ipp32s QPCroma, Ipp8s* pNumLevels, Ipp8u intra, Ipp8u needTransform)) /* // Name: // ippiTransformQuantLumaDC_H264_16s_C1I // // Purpose: // This function performs forward transform (if it's necessary) and quantization // for 4x4 DC Luma block. // // Parameters: // pSrcDst Pointer to 4x4 luma DC block - source & destination array of size 4 // pTBlock Pointer to 4x4 transformed luma DC block - source or destination array of size 4 // QP Quantization parameter for luma. It's in range [0,51] // NumLevels Pointer to value, which contains: // a negative value of a number of non-zero elements in block after // quantization (in the case of the first quantized element in block is not equal zero) // a number of non-zero elements in block after quantization (in the case // of the first quantized element in block is equal zero) // This value is calculated by function. // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 if transforming process is not used. // pScanMatrix Scan matrix for coefficients in block (array of size 16) // LastCoeff Position of the last non-zero coefficient in block after quantization. This value is calculated by function. // // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pointers are NULL // ippStsOutOfRangeErr QP >51 or QP<0 // ippStsScaleRangeErr if any coefficient after quantization > MAX_CAVLC_LEVEL_VALUE */ IPPAPI(IppStatus, ippiTransformQuantLumaDC_H264_16s_C1I, ( Ipp16s* pSrcDst, Ipp16s* pTBlock, Ipp32s QP, Ipp8s* pNumLevels, Ipp8u needTransform, const Ipp16s* pScanMatrix, Ipp8u* pLastCoeff)) /* // Name: // ippiTransformQuantResidual_H264_16s_C1I // // Purpose: // This function performs forward transform and quantization for 4x4 residual block. // // Parameters: // pSrcDst Pointer to 4x4 residual block - source & destination array of size 16 // QP Quantization parameter for luma or for chroma. It's in range [0,51] or [0,39] // NumLevels Pointer to value, which contains: // a negative value of a number of non-zero elements in block after quantization // (in the case of the first quantized element in block is not equal zero) // a number of non-zero elements in block after quantization (in the case // of the first quantized element in block is equal zero) // This value is calculated by function. // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise. // pScanMatrix Scan matrix for coefficients in block (array of size 16) // LastCoeff Position of the last non-zero coefficient in block after quantization. This value is calculated by function. // // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pointers are NULL // ippStsOutOfRangeErr QP >51 or QP<0 // ippStsScaleRangeErr if any coefficient after quantization > MAX_CAVLC_LEVEL_VALUE */ IPPAPI(IppStatus, ippiTransformQuantResidual_H264_16s_C1I , ( Ipp16s* pSrcDst, Ipp32s QP, Ipp8s* pNumLevels, Ipp8u intra, const Ipp16s* pScanMatrix, Ipp8u* pLastCoeff)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiYCrCb411ToYCbCr422_5MBDV_16s8u_P3C2R // ippiYCrCb411ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R // ippiYCrCb411ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R // ippiYCrCb411ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R // ippiYCrCb411ToYCbCr422_16x4x5MB_DV_16s8u_P3C2R // // Purpose: // Convert a YCrCb411 macro blocks to the YCbCr422 macro blocks. // Reduce size of dst image in 1/2/4/8 times accordingly. // // Parameters: // pSrc array of pointers to the five source macro blocks // pDst array of pointers to the five destination macro blocks // dstStep step for the destination image // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pSrc pDst is NULL */ IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep )) IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep )) IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep )) IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5] )) IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_16x4x5MB_DV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstPitch ) ) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiYCrCb411ToYCbCr422_EdgeDV_16s8u_P3C2R // ippiYCrCb411ToYCbCr422_ZoomOut2_EdgeDV_16s8u_P3C2R // ippiYCrCb411ToYCbCr422_ZoomOut4_EdgeDV_16s8u_P3C2R // ippiYCrCb411ToYCbCr422_ZoomOut8_EdgeDV_16s8u_P3C2R // ippiYCrCb411ToYCbCr422_8x8MB_DV_16s8u_P3C2R // // Purpose: // Converts a YCrCb411 macro block to the YCbCr422 macro block at the right edge of destination image. // Reduce size of dst image in 1/2/4/8 times accordingly. // // Parameters: // pSrc pointer to the source macro block // pDst pointer to the destination macro block // dstStep step for the destination image // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pSrc pDst is NULL */ IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_EdgeDV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstStep )) IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut2_EdgeDV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstStep )) IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut4_EdgeDV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstStep )) IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut8_EdgeDV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstStep )) IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_8x8MB_DV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstPitch ) ) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiYCrCb420ToYCbCr422_5MBDV_16s8u_P3C2R // ippiYCrCb420ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R // ippiYCrCb420ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R // ippiYCrCb420ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R // ippiYCrCb420ToYCbCr422_8x8x5MB_DV_16s8u_P3C2R // // Purpose: // Convert a YCrCb420 macro blocks to the YCbCr422 macro blocks. // Reduce size of dst image in 1/2/4/8 times accordingly. // // Parameters: // pSrc array of pointers to the five source macro blocks // pDst array of pointers to the five destination macro blocks // dstStep step for the destination image // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pSrc pDst is NULL */ IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep )) IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep )) IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep )) IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep )) IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_8x8x5MB_DV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstPitch ) ) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiYCrCb422ToYCbCr422_5MBDV_16s8u_P3C2R // ippiYCrCb422ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R // ippiYCrCb422ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R // ippiYCrCb422ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R // ippiYCrCb422ToYCbCr422_8x4x5MB_DV_16s8u_P3C2R // ippiYCrCb422ToYCbCr422_10HalvesMB16x8_DV100_16s8u_P3C2R // // Purpose: // Convert a YCrCb422 macro blocks to the YCbCr422 macro blocks. // Reduce size of dst image in 1/2/4/8 times accordingly. // // Parameters: // pSrc array of pointers to the five source macro blocks // pDst array of pointers to the five destination macro blocks // dstStep step for the destination image // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pSrc pDst is NULL */ IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep )) IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep )) IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep )) IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5] )) IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_8x4x5MB_DV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ) ) IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_10HalvesMB16x8_DV100_16s8u_P3C2R, (const Ipp16s* pSrc, Ipp8u* pDst[10], int dstStep ) ) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDeinterlaceFilterTriangle_8u_C1R // // Purpose: // This function deinterlaces video plane. // The function performs triangle filtering of the image to remove interlacing // flicker effect that arises when analogue interlaced TV data is // viewed on a computer monitor. // // Parameters: // pSrc Pointer to the source video plane. // srcStep Step through the source video plane. // pDst Pointer to the destination video plane. // dstStep Step through the destination video plane. // roiSize Size of ROI. Height should be greater than 3. // centerWeight Weight of filtered pixel, must lie within the range from 0 to 256. // layout Plane layout, required when the plane is only a part of the frame. // Takes the following values: // IPP_UPPER for the first slice // IPP_CENTER for the middle slices // IPP_LOWER for the last slice // IPP_LOWER && IPP_UPPER && IPP_CENTER for the image that is not sliced. // // Returns: // ippStsNoErr Indicates no error. // ippStsNullPtrErr Indicates an error when at least one input pointer is NULL. // ippStsSizeErr Indicates an error when roiSize has a field with zero or negative value. // ippStsBadArgErr Indicates invalid argument. */ IPPAPI(IppStatus, ippiDeinterlaceFilterTriangle_8u_C1R, ( const Ipp8u* pSrc, Ipp32s srcStep, Ipp8u* pDst, Ipp32s dstStep, IppiSize roiSize, Ipp32u centerWeight, Ipp32u layout)) /* ///////////////////////////////////////////////////////////////////////////// // General Color Conversion ///////////////////////////////////////////////////////////////////////////// */ /* //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Name: ippiCbYCr422ToYCbCr420Rotate_8u_C2P3R // Purpose: Converts a 2-channel YUY2 image to the I420(IYUV) image // Return: // ippStsNoErr Ok // ippStsNullPtrErr One or more pointers are NULL // ippStsSizeErr if srcRoi.width < 2 || srcRoi.height < 2 // ippStsDoubleSize If srcRoi.width and srcRoi.height are not multiples of 2, // the function reduces the values to the nearest multiples of 2. // Arguments: // pSrc pointer to the source image // srcStep step for the source image // pDst array of pointers to the components of the destination image // dstStep array of steps values for every component // srcRoi region of interest of src image to be processed, in pixels, // and roi of dst image you must calculate. // rotation rotation control parameter; must be of // the following pre-defined values: // IPPVC_ROTATE_90CCW, IPPVC_ROTATE_90CW, // IPPVC_ROTATE_180 or IPPVC_ROTATE_DISABLE, */ IPPAPI(IppStatus,ippiCbYCr422ToYCbCr420_Rotate_8u_C2P3R,(const Ipp8u* pSrc, int srcStep, IppiSize srcRoi,Ipp8u *pDst[3], int dstStep[3], int rotation )) IPPAPI(IppStatus,ippiCbYCr422ToYCbCr420_Rotate_8u_P3R,(const Ipp8u* pSrc[3], int srcStep[3], IppiSize srcRoi,Ipp8u *pDst[3], int dstStep[3], int rotation )) /* //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Name: ippiResizeCCRotate_8u_C2R // Description: synthesizes a low-resolution preview image for // high-resolution video or still capture applications. // combines scale reduction(2:1,4:1 or 8:1), color space // conversion and rotation into a a single function // Input Arguments: // pSrc pointer to the source image. Input byte ordering is Cb Y Cr Y. // srcStep step for the source image // pDst pointer to the destination image // dstStep step for the destination image // srcRoi region of interest of src image to be processed, in pixels, // and roi of dst image you must calculate. // zoomFactor parameter, indicating downscale factor, takes values 2, 4 or 8 for 2:1,4:1,and 8:1 downscale respectively. // interpolation type of interpolation to // perform resampling of the input image // The following are currently supported: // IPPI_INTER_NN nearest neighbor interpolation // IPPI_INTER_LINEAR linear interpolation // colorConversion color conversion control parameter, // must be set to one of the following // pre-defined values: // IPPVC_CbYCr422ToBGR565 // IPPVC_CbYCr422ToBGR565 // rotation rotation control parameter,must be of // the following pre-defined values: // IPPVC_ROTATE_90CCW, IPPVC_ROTATE_90CW, // IPPVC_ROTATE_180 or IPPVC_ROTATE_DISABLE, // Output Arguments: pDst pointer to the start of the buffer // containing the, resized, color-converted, // and rotated output image. // // Returns: // ippStsNoErr Ok // ippStsNullPtrErr one or more pointers are NULL // ippStsSizeErr srcRoi.width < zoomFactor // ippStsSizeErr srcRoi.height < zoomFactor // ippStsInterpolationErr invalid values of the interpolation control parameter. // ippStsResizeFactorErr invalid values of the zoomFactor control parameter. // ippStsBadArgErr invalid values of the rotation control parameter. // ippStsDoubleSize if srcRoi.width and srcRoi.height are not multiples of 2, // the function reduces the values to the nearest multiples of 2. */ IPPAPI(IppStatus, ippiResizeCCRotate_8u_C2R,(const Ipp8u* pSrc, int srcStep, IppiSize srcRoi, Ipp16u *pDst,int dstStep, int zoomFactor,int interpolation,int colorConversion,int rotation )) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiGenScaleLevel8x8_H264_8u16s_D2 // // Purpose: // Performs quantization including 8x8 transform normalization // // Parameters: // pSrcInvScaleMatrix - Pointer to an original inverse scaling matrix for 8x8 transform. // SrcStep - Step of the pSrcInvScaleMatrix in bytes. // pDstInvScaleMatrix - Pointer to a destination inverse scaling matrix -- array of size 64. // pDstScaleMatrix - Pointer to a destination forward scaling matrix - array of size 64. // Qp_rem - Reminder from an integer division of quantization parameter by 6. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr at least one of the pointers is NULL // ippStsQPErr Qp_rem is less than 0 or greater than 5 // */ IPPAPI(IppStatus, ippiGenScaleLevel8x8_H264_8u16s_D2, ( const Ipp8u *pSrcInvScaleMatrix, int SrcStep, Ipp16s *pDstInvScaleMatrix, Ipp16s *pDstScaleMatrix, int Qp_rem)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformLuma8x8Fwd_H264_16s_C1I // // Purpose: // Performs forward 8x8 transform for a 8x8 Luma block without normalization. // // Parameters: // pSrcDst - pointer to the initial 8x8 Luma block and resultant coefficients // (array of size 64). // Returns: // ippStsNoErr No error // ippStsNullPtrErr at least one of the pointers is NULL */ IPPAPI(IppStatus, ippiTransformLuma8x8Fwd_H264_16s_C1I, (Ipp16s *pSrcDst)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiQuantLuma8x8_H264_16s_C1 // ippiQuantLuma8x8_H264_32s_C1 // // Purpose: // Performs quantization including 8x8 transform normalization // // Parameters: // pSrc - Pointer to Luma block coefficients - array of size 64. // pDst - Pointer to quantized and normalized coefficients - // array of size 64. // Qp6 - Quantization parameter divided by 6 // Intra - Flag, 1 if the slice is intra and 0 otherwise. // pScanMatrix - Pointer to a scan matrix for the coefficients in the block (array // of size 64) // pScaleLevels - Pointer to a scale level matrix taking into account 8x8 transform // normalization. // pNumLevels - Pointer to a value which contains: // - a negative value of a number of non-zero elements in block after // quantization (when the first quantized element in block is not equal // to zero), // - a number of non-zero elements in block after quantization (when // the first quantized element in block is equal to zero). // pLastCoeff - Position of the last (in order of pScanMatrix) non-zero coefficient // in block after quantization. This value is calculated by the function. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr at least one of the pointers is NULL // ippStsQPErr Qp6 is less than 0 or greater than 8 // // NOTE: // pSrc and pDst will usually point to the same memory region! */ IPPAPI(IppStatus, ippiQuantLuma8x8_H264_16s_C1, ( const Ipp16s *pSrc, Ipp16s *pDst, int Qp6, int Intra, const Ipp16s *pScanMatrix, const Ipp16s *pScaleLevels, int *pNumLevels, int *pLastCoeff)) IPPAPI(IppStatus, ippiQuantLuma8x8_H264_32s_C1, ( const Ipp32s* pSrc, Ipp32s* pDst, Ipp32s Qp6, Ipp32s Intra, const Ipp16s* pScanMatrix, const Ipp16s* pScaleLevels, Ipp32s* pNumLevels, Ipp32s* pLastCoeff)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiQuantLuma8x8Inv_H264_16s_C1I // ippiQuantInvLuma8x8_H264_32s_C1I // // Purpose: // Performs dequantization including inverse 8x8 transform normalization // // Parameters: // pSrcDst - Pointer to a Luma block coefficients - source and destination // array of size 64. // Qp6 - Quantization parameter divided by 6 // pInvLevelScale - Pointer to an inverse scale levels matrix. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr at least one of the pointers is NULL // ippStsQPErr Qp6 is less than 0 or greater than 8 or // */ IPPAPI(IppStatus, ippiQuantLuma8x8Inv_H264_16s_C1I, ( Ipp16s *pSrcDst, int Qp6, const Ipp16s *pInvLevelScale)) IPPAPI(IppStatus, ippiQuantInvLuma8x8_H264_32s_C1I, ( Ipp32s* pSrcDst, Ipp32s Qp6, const Ipp16s* pInvLevelScale)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformLuma8x8InvAddPred_H264_16s8u_C1R // // Purpose: // Performs inverse 8x8 transform for a 8x8 Luma block with subsequent intra // prediction or motion compensation, coefficients are assumed to be pre-normalized. // // Parameters: // pPred - pointer to the reference 8x8 block, which is used for intra // prediction or motion compensation. // PredStep - reference frame step in bytes. // pSrcDst - pointer to the initial coefficients and buffer for the computations // (8x8 block) - array of size 64. // pDst - pointer to the destination 8x8 block. // DstStep - destination frame step in bytes. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr at least one of the pointers is NULL // */ IPPAPI(IppStatus, ippiTransformLuma8x8InvAddPred_H264_16s8u_C1R, ( const Ipp8u *pPred, int PredStep, Ipp16s *pSrcDst, Ipp8u *pDst, int DstStep)) /*/////////////////////////////////////////////////////////////////////// // Name: // ippiQuantWeightBlockInv_DV_16s_C1I // // Purpose: // The function performs de quantization and de weighting at one block according to DV standard. // // Parameters: // pSrcDs - pointer to the source & destination 8x8 block. // pQuantInvTable - pointer to an array that contains values of quantification table for the current block. // pWeightInvTable - Pointer to an array that contains values of weight table for the current block. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr at least one of the pointers is NULL // */ IPPAPI(IppStatus, ippiQuantWeightBlockInv_DV_16s_C1I, ( Ipp16s *pSrcDst, const Ipp16s *pQuantInvTable, const Ipp16s *pWeightInvTable)) /*/////////////////////////////////////////////////////////////////////// // Name: // ippiQuantWeightBlockInv_DV100_16s_C1I // // Purpose: // The function performs de quantization and de weighting at one block according to DV100 standard. // // Parameters: // pSrcDs - pointer to the source & destination 8x8 block. // pWeightInvTable - Pointer to an array that contains values of weight table for the current block. // quantValue - value of quantization parameter for the current block. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr at least one of the pointers is NULL // */ IPPAPI(IppStatus, ippiQuantWeightBlockInv_DV100_16s_C1I, ( Ipp16s *pSrcDst, const Ipp16s *pWeightInvTable, Ipp32s quantValue)) /*/////////////////////////////////////////////////////////////////////// // Name: // ippiDCT8x4x2To4x4Inv_DV_16s_C1I // // Purpose: The function performs inverse discrete cosines transform at 2x4x8 block. After // that create block 4x4: first, values in rows are average in pairs; // second, values in columns are average in pairs too. And we got new values // of block 4x4. // Values calculated for new 4x4 block stored in series (in a row) in memory. // // // Parameters: // pSrcDst - pointer to the source & destination 2x4x8 block. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr at least one of the pointers is NULL // */ IPPAPI(IppStatus, ippiDCT8x4x2To4x4Inv_DV_16s_C1I, ( Ipp16s *pSrcDst)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransform8x8Inv_VC1_16s_C1R // ippiTransform4x8Inv_VC1_16s_C1R // ippiTransform8x4Inv_VC1_16s_C1R // ippiTransform4x4Inv_VC1_16s_C1R // ippiTransform8x8Inv_VC1_16s_C1IR // ippiTransform4x8Inv_VC1_16s_C1IR // ippiTransform8x4Inv_VC1_16s_C1IR // ippiTransform4x4Inv_VC1_16s_C1IR // // Purpose: // Performs inverse transform of 8x8/4x8/8x4/4x4 block according to VC-1 // standard // // Parameters: // pSrc Pointer to the source block. // srcStep Step in bytes through the source plane. // pDst Pointer to the destination block. // dstStep Step in bytes through the destination plane. // srcSizeNZ The size of top-left rectangle which contains non-zero // coefficients // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiTransform8x8Inv_VC1_16s_C1R, ( const Ipp16s *pSrc, int srcStep, Ipp16s *pDst, int dstStep, IppiSize srcSizeNZ)) IPPAPI(IppStatus, ippiTransform4x4Inv_VC1_16s_C1R, ( const Ipp16s *pSrc, int srcStep, Ipp16s *pDst, int dstStep, IppiSize srcSizeNZ)) IPPAPI(IppStatus, ippiTransform8x4Inv_VC1_16s_C1R, ( const Ipp16s *pSrc, int srcStep, Ipp16s *pDst, int dstStep, IppiSize srcSizeNZ)) IPPAPI(IppStatus, ippiTransform4x8Inv_VC1_16s_C1R, ( const Ipp16s *pSrc, int srcStep, Ipp16s *pDst, int dstStep, IppiSize srcSizeNZ)) IPPAPI(IppStatus, ippiTransform8x8Inv_VC1_16s_C1IR, ( Ipp16s *pSrcDst, int srcDstStep, IppiSize srcSizeNZ)) IPPAPI(IppStatus, ippiTransform4x4Inv_VC1_16s_C1IR, ( Ipp16s *pSrcDst, int srcDstStep, IppiSize srcSizeNZ)) IPPAPI(IppStatus, ippiTransform8x4Inv_VC1_16s_C1IR, ( Ipp16s *pSrcDst, int srcDstStep, IppiSize srcSizeNZ)) IPPAPI(IppStatus, ippiTransform4x8Inv_VC1_16s_C1IR, ( Ipp16s *pSrcDst, int srcDstStep, IppiSize srcSizeNZ)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateQPBilinear_VC1_8u_C1R // // Purpose: // Performs bilinear quarter-pel interpolation for NxM block in // accordance with 8.3.6.5.1 of VC-1 standard // // Parameters: // pParams Pointer to structure which contains parameters for interpolation: // pSrc Pointer to the source block. // srcStep Step in bytes through the source plane. // pDst Pointer to the destination block. // dstStep Step in bytes through the destination plane. // dx, dy Fractional parts of the motion vector in 1/4 pel units // (0, 1, 2, or 3). // roiSize BlockSize. It should be equal 4x4, 8x4, 8x8, 16x16 // roundControl Frame level rounding control value as describe in section // 8.3.7 of of VC-1 standard // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiInterpolateQPBilinear_VC1_8u_C1R, ( const IppVCInterpolate_8u* pParams)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateQPBilinear_VC1_8u_C2R // // Purpose: // Performs bilinear quarter-pel interpolation for NxM block in // accordance with 8.3.6.5.1 of VC-1 standard for NV12 chroma format // // Parameters: // pParams Pointer to structure which contains parameters for interpolation: // pSrc Pointer to the source block. // srcStep Step in bytes through the source plane. // pDst Pointer to the destination block. // dstStep Step in bytes through the destination plane. // dx, dy Fractional parts of the motion vector in 1/4 pel units // (0, 1, 2, or 3). // roiSize BlockSize. It should be equal 4x4, 8x4, 8x8 // roundControl Frame level rounding control value as describe in section // 8.3.7 of of VC-1 standard // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiInterpolateQPBilinear_VC1_8u_C2R, ( const IppVCInterpolate_8u* pParams)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateICBilinearBlock_VC1_8u_C1R // // Purpose: // Performs intensity compensation and bilinear quarter-pel interpolation for motion estimation of the // luma or chroma component using entire motion vector. // // Parameters: // interpolateInfo Pointer to an instance of the structure holding interpolation // parameters. // pSrc pointer to start of reference field (or pointer to start of reference frame in the case of reference frame) // srcStep step of the reference frame // pDst pointer to destination MB // dstStep step of destination buffer // sizeFrame dimensions of the reference image planes // sizeBlock dimensions of the block to be interpolated. Maximum size is 16 in all dimensions. // pointRefBlockPos position inside reference frame. Which was calculated as sum of current position and integer part of motion vector // pointVectorQuarterPix quarter part of MV // pLUTTop pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M] // and applied for pixels of top field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field. // If both pointers are equal to 0, no then Intensity Compensation is applied for this field. // pLUTBottom pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M] // and applied for pixels of bottom field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field // // OppositePadding flag that specified padding correspondence between current frame and reference frame. // fieldPrediction flag that specified Prediction type for current MB. // RoundControl indicate type of rounding for the current frame. Defined according to 8.3.7 of [SMPTE 421M]. RoundControl can be equal 0 or 1. // isPredBottom flag that specified type of reference field in case of interlace reference picture. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiInterpolateICBilinearBlock_VC1_8u_C1R,( const IppVCInterpolateBlockIC_8u* pParams)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateICBilinearBlock_VC1_8u_C2R // // Purpose: // Performs intensity compensation and bilinear quarter-pel interpolation for motion estimation of the // chroma component in NV12 format using entire motion vector. // // Parameters: // interpolateInfo Pointer to an instance of the structure holding interpolation // parameters. // pSrc pointer to start of reference field (or pointer to start of reference frame in the case of reference frame) // srcStep step of the reference frame // pDst pointer to destination MB // dstStep step of destination buffer // sizeFrame dimensions of the reference image planes // sizeBlock dimensions of the block to be interpolated. Maximum size is 16x8 (in NV12 format, that means 8x8 for each chroma plane). // pointRefBlockPos position inside reference frame. Which was calculated as sum of current position and integer part of motion vector // pointVectorQuarterPix quarter part of MV // pLUTTop pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M] // and applied for pixels of top field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field. // If both pointers are equal to 0, no then Intensity Compensation is applied for this field. // pLUTBottom pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M] // and applied for pixels of bottom field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field // // OppositePadding flag that specified padding correspondence between current frame and reference frame. // fieldPrediction flag that specified Prediction type for current MB. // RoundControl indicate type of rounding for the current frame. Defined according to 8.3.7 of [SMPTE 421M]. RoundControl can be equal 0 or 1. // isPredBottom flag that specified type of reference field in case of interlace reference picture. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiInterpolateICBilinearBlock_VC1_8u_C2R,( const IppVCInterpolateBlockIC_8u* pParams)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateQPBicubic_VC1_8u_C1R // // Purpose: // Performs bicubic quarter-pel interpolation for NxM block in // accordance with 8.3.6.5.2 of VC-1 standard // // Parameters: // pParams Pointer to structure which contains parameters for interpolation: // pSrc Pointer to the source block. // srcStep Step in bytes through the source plane. // pDst Pointer to the destination block. // dstStep Step in bytes through the destination plane. // dx, dy Fractional parts of the motion vector in 1/4 pel units // (0, 1, 2, or 3). // roiSize BlockSize. It should be equal 4x4, 8x4, 8x8, 16x16 // roundControl Frame level rounding control value as describe in section // 8.3.7 of of VC-1 standard // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiInterpolateQPBicubic_VC1_8u_C1R, ( const IppVCInterpolate_8u* pParams)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateICBicubicBlock_VC1_8u_C1R // // Purpose: // Performs intensity compensation and bicubic quarter-pel interpolation for motion estimation of the // luma component using entire motion vector. // // Parameters: // interpolateInfo Pointer to an instance of the structure holding interpolation // parameters. // pSrc pointer to start of reference field (or pointer to start of reference frame in the case of reference frame) // srcStep step of the reference frame // pDst pointer to destination MB // dstStep step of destination buffer // sizeFrame dimensions of the reference image planes // sizeBlock dimensions of the block to be interpolated. Maximum size is 16 in all dimensions. // pointRefBlockPos position inside reference frame. Which was calculated as sum of current position and integer part of motion vector // pointVectorQuarterPix quarter part of MV // pLUTTop pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M] // and applied for pixels of top field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field. // If both pointers are equal to 0, no then Intensity Compensation is applied for this field. // pLUTBottom pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M] // and applied for pixels of bottom field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field // // OppositePadding flag that specified padding correspondence between current frame and reference frame. // fieldPrediction flag that specified Prediction type for current MB. // RoundControl indicate type of rounding for the current frame. Defined according to 8.3.7 of [SMPTE 421M]. RoundControl can be equal 0 or 1. // isPredBottom flag that specified type of reference field in case of interlace reference picture. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiInterpolateICBicubicBlock_VC1_8u_C1R, ( const IppVCInterpolateBlockIC_8u* pParams)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiSmoothingLuma_VerEdge_VC1_16s8u_C1R // // Purpose: // Performs smoothing filtering on the vertical edge (internal or external) // of the luma 16X16 macroblocks. (SMPTE 421M, 8.5) // // Parameters: // pSrcLeft Pointer to the first pixel of the column of the left top block of the left macroblock, from which the smoothing will start. // srcLeftStep Step for transfer to the next row in the left macroblock // pSrcRight Pointer to the first pixel of the top left block of the right macroblock // srcRightStep Step for transfer to the next row in the right macroblock // pDst Pointer to the first pixel of the right macroblock in the Y-Plane. // dstStep Y-plane step (in bytes). // fieldNeighbourFlag Indicates the field macroblock property(2 bits): // if (fieldNeighbourFlag & VC1_FIELD_LEFT_MB) - the left macroblock is field decoded // if (fieldNeighbourFlag & VC1_FIELD_RIGHT_MB) - the right macroblock is field decoded // edgeDisableFlag flag which indicates: // if (edgeDisableFlag & VC1_EDGE_HALF_1) then the upper vertical edge is disabled for smoothing // if (edgeDisableFlag & VC1_EDGE_HALF_2) then the bottom vertical edge is disabled for smoothing // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiSmoothingLuma_VerEdge_VC1_16s8u_C1R, (Ipp16s* pSrcLeft, Ipp32s srcLeftStep, Ipp16s* pSrcRight, Ipp32s srcRightStep, Ipp8u* pDst, Ipp32s dstStep, Ipp32u fieldNeighbourFlag, Ipp32u edgeDisableFlag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiSmoothingLuma_HorEdge_VC1_16s8u_C1R // // Purpose: // Performs smoothing filtering on the horizontal edge (internal or external) // of the luma 16X16 macroblocks. (SMPTE 421M, 8.5) // // Parameters: // pSrcUpper The pointer to the first pixel of the left bottom block row of the upper macroblock, from which the smoothing will start // srcUpperStep Step for transfer to the next row in the upper macroblock // pSrcBottom Pointer to the first pixel of the top left block of the bottom macroblock // srcBottomStep Step for transfer to the next row in the bottom macroblock // pDst Pointer to the first pixel of the bottom macroblock in the Y-Plane. // dstStep Y-plane step (in bytes). // edgeDisableFlag flag which indicates: // if (edgeDisableFlag & VC1_EDGE_HALF_1) then the left horizontal edge is disabled for smoothing // if (edgeDisableFlag & VC1_EDGE_HALF_2) then the right horizontal edge is disabled for smoothing // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiSmoothingLuma_HorEdge_VC1_16s8u_C1R, (Ipp16s* pSrcUpper, Ipp32s srcUpperStep, Ipp16s* pSrcBottom, Ipp32s srcBottomStep, Ipp8u* pDst, Ipp32s dstStep, Ipp32u edgeDisableFlag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiSmoothingChroma_HorEdge_VC1_16s8u_C1R // // Purpose: // Performs smoothing filtering on the horizontal edge (internal or external) // of the chroma 8x8 blocks. (SMPTE 421M, 8.5) // // Parameters: // pSrcUpper The pointer to the first pixel of the left bottom block row of the upper macroblock, from which the smoothing will start // srcUpperStep Step for transfer to the next row in the upper macroblock // pSrcBottom Pointer to the first pixel of the top left block of the bottom macroblock // srcBottomStep Step for transfer to the next row in the bottom macroblock // pDst Pointer to the first pixel of the bottom macroblock in the U- or V-Plane. // dstStep U- or V-plane step (in bytes). // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiSmoothingChroma_HorEdge_VC1_16s8u_C1R, (Ipp16s* pSrcUpper, Ipp32s srcUpperStep, Ipp16s* pSrcBottom, Ipp32s srcBottomStep, Ipp8u* pDst, Ipp32s dstStep)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiSmoothingChroma_HorEdge_VC1_16s8u_P2C2R // // Purpose: // Performs smoothing filtering on the horizontal edge (internal or external) // of the chroma 8x8 blocks in nv12 chroma format. (SMPTE 421M, 8.5) // // Parameters: // pSrcUpperU The pointer to the first pixel of the upper U block row // srcUpperStepU Step for transfer to the next row in the upper U block // pSrcBottomU Pointer to the first pixel of the top U block of the bottom macroblock // srcBottomStepU Step for transfer to the next row in the U bottom macroblock // pSrcUpperV The pointer to the first pixel of the upper V block row // srcUpperStepV Step for transfer to the next row in the upper V block // pSrcBottomV Pointer to the first pixel of the top V block of the bottom macroblock // srcBottomStepV Step for transfer to the next row in the V bottom macroblock // pDst Pointer to the first pixel of the bottom macroblock in the UV-Plane in nv12 format. // dstStep nv12 UV-plane step (in bytes). // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus,ippiSmoothingChroma_HorEdge_VC1_16s8u_P2C2R,(Ipp16s* pSrcUpperU, Ipp32u srcUpperStepU, Ipp16s* pSrcBottomU, Ipp32u srcBottomStepU, Ipp16s* pSrcUpperV, Ipp32u srcUpperStepV, Ipp16s* pSrcBottomV, Ipp32u srcBottomStepV, Ipp8u* pDst, Ipp32u dstStep)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiSmoothingChroma_VerEdge_VC1_16s8u_C1R // // Purpose: // Performs smoothing filtering on the vertical edge (internal or external) // of the chroma 8X8 blocks. (SMPTE 421M, 8.5) // // pSrcLeft Pointer to the first pixel of the column of the left block, from which the smoothing will start. // srcLeftStep Step for transfer to the next row in the left block // pSrcRight Pointer to the first pixel of the right block // srcRightStep Step for transfer to the next row in the right block // pDst Pointer to the first pixel of the right block in the U- or V-Plane. // dstStep U- or V-plane step (in bytes). // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiSmoothingChroma_VerEdge_VC1_16s8u_C1R, (Ipp16s* pSrcLeft, Ipp32s srcLeftStep, Ipp16s* pSrcRight, Ipp32s srcRightStep, Ipp8u* pDst, Ipp32s dstStep)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiSmoothingChroma_VerEdge_VC1_16s8u_P2C2R // // Purpose: // Performs smoothing filtering on the vertical edge (internal or external) // of the chroma 8X8 blocks in nv12 chroma format. (SMPTE 421M, 8.5) // // pSrcLeftU Pointer to the first pixel of the column of the left U difference block. // srcLeftStepU Step for transfer to the next row in the left U difference block // pSrcRightU Pointer to the first pixel of the right U difference block // srcRightStepU Step for transfer to the next row in the right U difference block // pSrcLeftV Pointer to the first pixel of the column of the left U difference block. // srcLeftStepV Step for transfer to the next row in the left U difference block // pSrcRightV Pointer to the first pixel of the right U difference block // srcRightStepV Step for transfer to the next row in the right U difference block // pDst Pointer to the first pixel of the right block in the UV-Plane in nv12 chroma format. // dstStep nv12 format UV-plane step (in bytes). // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus,ippiSmoothingChroma_VerEdge_VC1_16s8u_P2C2R, (Ipp16s* pSrcLeftU, Ipp32u srcLeftStepU, Ipp16s* pSrcRightU, Ipp32u srcRightStepU, Ipp16s* pSrcLeftV, Ipp32u srcLeftStepV, Ipp16s* pSrcRightV, Ipp32u srcRightStepV, Ipp8u* pDst, Ipp32u dstStep)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiQuantInvIntraUniform_VC1_16s_C1IR // ippiQuantInvIntraNonuniform_VC1_16s_C1IR // // Purpose: // Performs uniform and nonuniform dequantization process of 8x8 intra block // according to VC-1 standard (8.1.2.8 "Inverse AC Coefficient // Quantization" specification SMPTE 421M) // // pSrcDst - the pointer to the source & destination block. // srcDstStep - the step of the source & destination block. // doubleQuant - dequant coefficient. It should be in the range [2,62] // pDstSizeNZ - the pointer to a size of top left subblock with non-zero coefficients. This value is calculated by this function and could be used for inverse transformation. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr pSrcDst is NULL */ IPPAPI(IppStatus, ippiQuantInvIntraUniform_VC1_16s_C1IR, (Ipp16s* pSrcDst, Ipp32s srcDstStep, Ipp32s doubleQuant, IppiSize* pDstSizeNZ)) IPPAPI(IppStatus, ippiQuantInvIntraNonuniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep, Ipp32s doubleQuant, IppiSize* pDstSizeNZ)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiQuantInvInterUniform_VC1_16s_C1IR // ippiQuantInvInterNonuniform_VC1_16s_C1IR // // Purpose: // Performs uniform and nonuniform dequantization process of inter block // according to VC-1 standard // // pSrcDst - the pointer to the source & destination block. // srcDstStep - the step of the source & destination block. // doubleQuant - dequant coefficient. It should be in the range [2,62] // roiSize - the intra block size. It should be: 8x8, 8x4, 4x8 or 4x4. // pDstSizeNZ - the pointer to a size of top left subblock with non-zero coefficients. This value is calculated by this function and can be used for inverse transformation. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr pSrcDst pointer is NULL // ippStsSizeErr width or height is not equal with 8 or 4 */ IPPAPI(IppStatus, ippiQuantInvInterUniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep, Ipp32s doubleQuant, IppiSize roiSize, IppiSize* pDstSizeNZ)) IPPAPI(IppStatus, ippiQuantInvInterNonuniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep, Ipp32s doubleQuant, IppiSize roiSize, IppiSize* pDstSizeNZ)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiQuantInvIntraUniform_VC1_16s_C1R // ippiQuantInvIntraNonuniform_VC1_16s_C1R // // Purpose: // Performs uniform and nonuniform dequantization process of 8x8 intra block // according to VC-1 standard (8.1.2.8 "Inverse AC Coefficient // Quantization" specification SMPTE 421M) // // pSrc - the pointer to the source block. // pDst - the pointer to the destination block. // srcStep - the step of the source block. // dstStep - the step of the destination block. // doubleQuant - dequant coefficient. It should be in the range [2,62] // pDstSizeNZ - the pointer to a size of top left subblock with non-zero coefficients. This value is calculated by this function and could be used for inverse transformation. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiQuantInvIntraUniform_VC1_16s_C1R, (const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep, Ipp32s doubleQuant, IppiSize *pDstSizeNZ)) IPPAPI(IppStatus, ippiQuantInvIntraNonuniform_VC1_16s_C1R,(const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep, Ipp32s doubleQuant, IppiSize *pDstSizeNZ )) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiQuantInvInterUniform_VC1_16s_C1R // ippiQuantInvInterNonuniform_VC1_16s_C1R // // Purpose: // Performs uniform and nonuniform dequantization process of inter block // according to VC-1 standard // // pSrc - the pointer to the source block. // pDst - the pointer to the destination block. // srcStep - the step of the source block. // dstStep - the step of the destination block. // doubleQuant - dequant coefficient. It should be in the range [2,62] // roiSize - the inter block size. It should be: 8x8, 8x4, 4x8 or 4x4 // pDstSizeNZ - the pointer to a size of top left subblock with non-zero coefficients. This value is calculated by this function and could be used for inverse transformation. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL // ippStsSizeErr width or height is not equal with 8 or 4 */ IPPAPI(IppStatus, ippiQuantInvInterUniform_VC1_16s_C1R,(const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep, Ipp32s doubleQuant, IppiSize roiSize, IppiSize* pDstSizeNZ)) IPPAPI(IppStatus, ippiQuantInvInterNonuniform_VC1_16s_C1R,(const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep, Ipp32s doubleQuant, IppiSize roiSize, IppiSize* pDstSizeNZ)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDeblockingLuma_VerEdge_VC1_8u_C1IR // ippiFilterDeblockingLuma_HorEdge_VC1_8u_C1IR // ippiFilterDeblockingChroma_VerEdge_VC1_8u_C1IR // ippiFilterDeblockingChroma_HorEdge_VC1_8u_C1IR // // Purpose: // Luma deblocking functions perform deblocking filtering on the horizontal // and vertical edge (inner or external) of the luma 16x16 macroblock. (SMPTE 421M, 8.6) // // Chroma deblocking functions perform deblocking filtering on the horizontal // and vertical edge (inner or external) of the chroma 8x8 macroblock. (SMPTE 421M, 8.6) // // Parameters: // pSrcDst - Pointer to the first pixel of right block in the Y-Plane or U or V-Plane. // srcdstStep - Y-plane or U or V-Plane step (in bytes). // pQuant - Picture quantizer scale // EdgeDisableFlag - flag which indicates what part of block edge // is disabled for deblocking. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr Input pointer is NULL */ IPPAPI(IppStatus, ippiFilterDeblockingLuma_VerEdge_VC1_8u_C1IR,(Ipp8u* pSrcDst, Ipp32s pQuant, Ipp32s srcdstStep, Ipp32s edgeDisabledFlag)) IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_VC1_8u_C1IR,(Ipp8u* pSrcDst, Ipp32s pQuant, Ipp32s srcdstStep, Ipp32s edgeDisabledFlag)) IPPAPI(IppStatus,ippiFilterDeblockingLuma_HorEdge_VC1_8u_C1IR,(Ipp8u* pSrcDst, Ipp32s pQuant, Ipp32s srcdstStep, Ipp32s edgeDisabledFlag)) IPPAPI(IppStatus,ippiFilterDeblockingChroma_HorEdge_VC1_8u_C1IR,(Ipp8u* pSrcDst, Ipp32s pQuant, Ipp32s srcdstStep, Ipp32s edgeDisabledFlag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDeblockingChroma_VerEdge_VC1_8u_C2IR // ippiFilterDeblockingChroma_HorEdge_VC1_8u_C2IR // // Purpose: // // Chroma deblocking functions perform deblocking filtering on the horizontal // and vertical edge (inner or external) of the chroma macroblock in NV12 format. (SMPTE 421M, 8.6) // 0 UV UV UV UV UV UV UV UV // 1 UV UV UV UV ... UV // ... // 7 UV UV UV UV UV UV UV UV // Parameters: // pSrcDst - Pointer to the first pixel of right block in the UV-Plane. // srcdstStep - UV-Plane step (in bytes). // pQuant - Picture quantizer scale // EdgeDisableFlag - flag which indicates what part of block edge // is disabled for deblocking. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr Input pointer is NULL */ IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_VC1_8u_C2IR,(Ipp8u* pSrcDst,Ipp32u pQuant, Ipp32s srcdstStep, Ipp32u uEdgeDisabledFlag, Ipp32u vEdgeDisabledFlag)) IPPAPI(IppStatus, ippiFilterDeblockingChroma_HorEdge_VC1_8u_C2IR,(Ipp8u* pSrcDst,Ipp32u pQuant, Ipp32s srcdstStep, Ipp32u uEdgeDisabledFlag, Ipp32u vEdgeDisabledFlag)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiRangeMapping_VC1_8u_C1R // // Purpose: // Performs range map transformation according to VC-1 standard (6.2.15.1) // // Parameters: // pSrc - the pointer to the source block. Block coefficient could be in the range [0, 255] // srcStep - the step of the source block // pDst - the pointer to the destination block. // dstStep - the step of the destination block // rangeMapParam - parameter for range map. It should be in the range [0, 7]. // roiSize - size of source block. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL // ippStsOutOfRangeErr Indicates an error if rangeMapParam is out of the range [0,7]. */ IPPAPI(IppStatus, ippiRangeMapping_VC1_8u_C1R ,(Ipp8u* pSrc, Ipp32s srcStep, Ipp8u* pDst, Ipp32s dstStep, IppiSize roiSize, Ipp32s rangeMapParam)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiQuantIntraUniform_VC1_16s_C1IR // ippiQuantIntraNonuniform_VC1_16s_C1IR // // Purpose: // Performs uniform and nonuniform quantization process of 8x8 intra block // according to VC-1 standard (8.1.2.8 "Inverse AC Coefficient // Quantization" specification SMPTE 421M) // // pSrcDst - the pointer to the source & destination block. // srcDstStep - the step of the source & destination block. // doubleQuant - dequant coefficient. It should be in the range [2,62] // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiQuantIntraUniform_VC1_16s_C1IR, (Ipp16s* pSrcDst, Ipp32s srcDstStep, Ipp32s doubleQuant)) IPPAPI(IppStatus, ippiQuantIntraNonuniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep, Ipp32s doubleQuant)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiQuantInterUniform_VC1_16s_C1IR // ippiQuantInterNonuniform_VC1_16s_C1IR // // Purpose: // Performs uniform and nonuniform quantization process of inter block // according to VC-1 standard // // pSrcDst - the pointer to the source & destination block. // srcDstStep - the step of the source & destination block. // doubleQuant - dequant coefficient. It should be in the range [2,62] // roiSize - the intra block size. It should be: 8x8, 8x4, 4x8 or 4x4. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiQuantInterUniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep, Ipp32s doubleQuant, IppiSize roiSize)) IPPAPI(IppStatus, ippiQuantInterNonuniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep, Ipp32s doubleQuant, IppiSize roiSize)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransform8x8Fwd_VC1_16s_C1R // ippiTransform4x8Fwd_VC1_16s_C1R // ippiTransform8x4Fwd_VC1_16s_C1R // ippiTransform4x4Fwd_VC1_16s_C1R // ippiTransform8x8Fwd_VC1_16s_C1IR // ippiTransform4x8Fwd_VC1_16s_C1IR // ippiTransform8x4Fwd_VC1_16s_C1IR // ippiTransform4x4Fwd_VC1_16s_C1IR // // Purpose: // Performs forward transform of 8x8/4x8/8x4/4x4 block according to VC-1 // standard // // Parameters: // pSrc Pointer to the source block. // srcStep Step in bytes through the source plane. // pDst Pointer to the destination block. // dstStep Step in bytes through the destination plane. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiTransform8x8Fwd_VC1_16s_C1R, (const Ipp16s *pSrc, Ipp32s srcStep, Ipp16s *pDst, Ipp32s dstStep)) IPPAPI(IppStatus, ippiTransform4x4Fwd_VC1_16s_C1R, (const Ipp16s *pSrc, Ipp32s srcStep, Ipp16s *pDst, Ipp32s dstStep)) IPPAPI(IppStatus, ippiTransform8x4Fwd_VC1_16s_C1R, (const Ipp16s *pSrc, Ipp32s srcStep, Ipp16s *pDst, Ipp32s dstStep)) IPPAPI(IppStatus, ippiTransform4x8Fwd_VC1_16s_C1R, (const Ipp16s *pSrc, Ipp32s srcStep, Ipp16s *pDst, Ipp32s dstStep)) IPPAPI(IppStatus, ippiTransform8x8Fwd_VC1_16s_C1IR, (Ipp16s *pSrcDst, Ipp32s srcDstStep)) IPPAPI(IppStatus, ippiTransform4x4Fwd_VC1_16s_C1IR, (Ipp16s *pSrcDst, Ipp32s srcDstStep)) IPPAPI(IppStatus, ippiTransform8x4Fwd_VC1_16s_C1IR, (Ipp16s *pSrcDst, Ipp32s srcDstStep)) IPPAPI(IppStatus, ippiTransform4x8Fwd_VC1_16s_C1IR, (Ipp16s *pSrcDst, Ipp32s srcDstStep)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiHadamard8x8Sum_VC1_8u16s // ippiHadamard8x8Sum_VC1_16s // // Purpose: // Performs Hadamard transform H S H, were H - 8x8 Hadamard matrix, S - source 8x8 block // and calculates the sum of absolute values of transformed coefficients // (*pSum) = SUM(ABS(pDst[0]), ABS(pDst[1]),..,ABS(pDst[63])) // // Parameters: // pSrc Pointer to the source block. // srcStep Step in bytes through the source plane. // pDst Pointer to the destination block of the transformed coefficients. dstStep has the fixed lenght of 16 bytes // pSum Pointer to the sum of absolute values of transformed coefficients. // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI(IppStatus, ippiHadamard8x8Sum_VC1_8u16s,(Ipp8u* pSrc, Ipp32u srcStep, Ipp16s* pDst, Ipp32s* pSum)) IPPAPI(IppStatus, ippiHadamard8x8Sum_VC1_16s,(Ipp16s* pSrc, Ipp32u srcStep, Ipp16s* pDst, Ipp32s* pSum)) /* /////////////////////////////////////////////////////////////////////////// // Name: // // ippiSub4x4_8u16s_C1R // ippiSub4x4_16u16s_C1R // ippiSub8x8_16u16s_C1R // // Purpose: // Subtract two blocks and store the result in the third block. // // Parameters: // pSrc1 Pointer to the first source block. // src1Step Step in bytes through the first source plane. // pSrc2 Pointer to the second source block. // src2Step Step in bytes through the second source plane. // pDst Pointer to the destination block. // dstStep Step in bytes through the destination plane // // Returns: // ippStsNoErr No error. // ippStsNullPtrErr At least one input pointer is NULL */ IPPAPI( IppStatus, ippiSub4x4_8u16s_C1R, ( const Ipp8u* pSrc1, int src1Step, const Ipp8u* pSrc2, int src2Step, Ipp16s* pDst, int dstStep)) IPPAPI( IppStatus, ippiSub4x4_16u16s_C1R, ( const Ipp16u* pSrc1, int src1Step, const Ipp16u* pSrc2, int src2Step, Ipp16s* pDst, int dstStep)) IPPAPI( IppStatus, ippiSub8x8_16u16s_C1R, (const Ipp16u* pSrc1, Ipp32s src1Step, const Ipp16u* pSrc2, Ipp32s src2Step, Ipp16s* pDst, Ipp32s dstStep)) /* /////////////////////////////////////////////////////////////////////////// // Name: // // ippiSAD16x16_16u32s_C1R // // Purpose: // Evaluates sum of absolute difference between current and reference // 16X16 blocks. // // Parameters: // pSrc Pointer to the current block of specified size. // srcStep Step of the current block, specifying width of the block in bytes. // pRef Pointer to the reference block of specified size. // refStep Step of the reference block, specifying width of the block in bytes. // pSAD Pointer to the destination integer. // mcType MC type IPPVC_MC_APX. // // Returns: // ippStsNoErr Indicates no error. // ippStsNullPtrErr Indicates an error when at least one input pointer is NULL. // ippStsStepErr Indicates an error when srcCurStep or srcRefStep is less or equal to zero. */ IPPAPI( IppStatus, ippiSAD16x16_16u32s_C1R, (const Ipp16u* pSrc, Ipp32s srcStep, const Ipp16u* pRef, Ipp32s refStep, Ipp32s* pSAD, Ipp32s mcType)) /* /////////////////////////////////////////////////////////////////////////// // Name: // // ippiSAD4x4_16u32s_C1R // // Purpose: // Evaluates sum of absolute difference between current // and reference 4X4 blocks. // // Parameters: // pSrc Pointer to 4x4 block in the source plane. // srcStep Pitch of the source plane (in bytes). // pRef Pointer to 4x4 block in the reference plane. // refStep Pitch of the reference plane (in bytes). // pSAD Pointer to SAD value. // mcType MC type IPPVC_MC_APX; reserved and must be 0. // // Returns: // ippStsNoErr Indicates no error. // ippStsNullPtrErr Indicates an error when at least one input pointer is NULL. */ IPPAPI( IppStatus, ippiSAD4x4_16u32s_C1R, (const Ipp16u* pSrc, Ipp32s srcStep, const Ipp16u* pRef, Ipp32s refStep, Ipp32s* pSAD, Ipp32s mcType)) /* /////////////////////////////////////////////////////////////////////////// // Name: // // ippiSAD8x8_16u32s_C1R, // // Purpose: // Evaluates sum of absolute difference between current // and reference 8X8 blocks. // // Parameters: // pSrcCur Pointer to 8x8 block in the source plane. // srcCurStep Pitch of the source plane (in bytes). // pSrcRef Pointer to 8x8 block in the reference plane. // srcRefStep Pitch of the reference plane (in bytes). // pDst Pointer to store SAD value. // mcType MC type IPPVC_MC_APX. // // Returns: // ippStsNoErr Indicates no error. // ippStsNullPtrErr Indicates an error when at least one input pointer is NULL. */ IPPAPI( IppStatus, ippiSAD8x8_16u32s_C1R, (const Ipp16u* pSrcCur, Ipp32s srcCurStep, const Ipp16u* pSrcRef, Ipp32s srcRefStep, Ipp32s* pDst, Ipp32s mcType)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformQuantFwd4x4_H264_16s_C1 // ippiTransformQuantFwd4x4_H264_16s32s_C1 // // Purpose: // This function performs forward transform and quantization for 4x4 residual block. // // Parameters: // pSrcDst Pointer to 4x4 residual block - source & destination array of size 16 // QP Quantization parameter. // pNumCoeffs Pointer to value, which contains: // a negative value of a number of non-zero elements in block after quantization // (in the case of the first quantized element in block is not equal zero) // a number of non-zero elements in block after quantization (in the case // of the first quantized element in block is equal zero) // This value is calculated by function. // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise. // pScanMatrix Scan matrix for coefficients in block (array of size 16) // pLastCoeff Position of the last non-zero coefficient in block after quantization. // This value is calculated by function. // pScaleLevels pointer to Scale levels, if NULL, default is applied // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pointers are NULL // ippStsOutOfRangeErr QP >51 (87 for 16s32s) or QP<0 */ IPPAPI(IppStatus, ippiTransformQuantFwd4x4_H264_16s_C1, ( const Ipp16s *pSrc, Ipp16s *pDst, Ipp32s Qp6, Ipp32s *pNumCoeffs, Ipp32s Intra, const Ipp16s *pScanMatrix, Ipp32s *pLastCoeff, const Ipp16s *pScaleLevels)) IPPAPI(IppStatus, ippiTransformQuantFwd4x4_H264_16s32s_C1, ( const Ipp16s* pSrc, Ipp32s* pDst, Ipp32s QP, Ipp32s* pNumCoeffs, Ipp32s Intra, const Ipp16s* pScanMatrix, Ipp32s* pLastCoeff, const Ipp16s* pScaleLevels)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformQuantInvAddPred4x4_H264_16s_C1IR // ippiTransformQuantInvAddPred4x4_H264_32s_C1IR // // Purpose: // Places a DC coefficient (if any) to its place, // Performs dequantization, integer inverse transformation and // shift by 6 bits for 4x4 block of residuals // with subsequent intra prediction or motion // compensation. // // // Parameters: // pPred - pointer to the reference 4x4 block, which is used for intra // prediction or motion compensation. // predStep - reference frame step in bytes. // pSrcDst - pointer to the initial coefficients and resultant residuals (4x4 // block) - array of size 16. // pDC - pointer to the DC coefficient. In the case of Intra 4x4 // macroblock type pDC is set to NULL. // pDst - pointer to the destination 4x4 block. // dstStep - destination frame step in bytes. // QP - quantization parameter // AC - flag that is not equal to zero, if at least one AC coefficient // exists, and is equal to zero otherwise. // bitDepth - bit depth of pPred in range [1..14] // pScaleLevelsInv pointer to Scale levels, if NULL, default is applied // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pointers are NULL // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0 // bitDepth not in range [1..14] // */ IPPAPI(IppStatus, ippiTransformQuantInvAddPred4x4_H264_16s_C1IR, ( const Ipp8u* pPred, Ipp32s predStep, Ipp16s* pSrcDst, const Ipp16s* pDC, Ipp8u* pDst, Ipp32s dstStep, Ipp32s QP, Ipp32s AC, const Ipp16s* pScaleLevelsInv)) IPPAPI(IppStatus, ippiTransformQuantInvAddPred4x4_H264_32s_C1IR, ( const Ipp16u* pPred, Ipp32s predStep, Ipp32s* pSrcDst, const Ipp32s* pDC, Ipp16u* pDst, Ipp32s dstStep, Ipp32s QP, Ipp32s AC, Ipp32s bitDepth, const Ipp16s* pScaleLevelsInv)) /* // Name: // ippiTransformQuantFwdLumaDC4x4_H264_16s_C1I // ippiTransformQuantFwdLumaDC4x4_H264_32s_C1I // // Purpose: // This function performs forward transform (if it's necessary) and quantization // for 4x4 DC Luma block. // // Parameters: // pDCBuf Pointer to 4x4 luma DC block - source & destination array of size 4 // pTBuf Pointer to 4x4 transformed luma DC block - source or destination array of size 4 // QP Quantization parameter for luma // pNumCoeffs Pointer to value, which contains: // a negative value of a number of non-zero elements in block after // quantization (in the case of the first quantized element in block is not equal zero) // a number of non-zero elements in block after quantization (in the case // of the first quantized element in block is equal zero) // This value is calculated by function. // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 if transforming process is not used. // pScanMatrix Scan matrix for coefficients in block (array of size 16) // pLastCoeff Position of the last non-zero coefficient in block after quantization. This value is calculated by function. // pScaleLevels pointer to Scale levels, if NULL, default is applied // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pointers are NULL // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0 */ IPPAPI(IppStatus, ippiTransformQuantFwdLumaDC4x4_H264_16s_C1I, ( Ipp16s* pDCBuf, Ipp16s* pTBuf, Ipp32s QP, Ipp32s* pNumCoeffs, Ipp32s NeedTransform, const Ipp16s* pScanMatrix, Ipp32s* LastCoeff, const Ipp16s* pScaleLevels)) IPPAPI(IppStatus, ippiTransformQuantFwdLumaDC4x4_H264_32s_C1I, ( Ipp32s* pDCBuf, Ipp32s* pQBuf, Ipp32s QP, Ipp32s* NumCoeffs, Ipp32s Intra, const Ipp16s* pScanMatrix, Ipp32s* pLastCoeff, const Ipp16s* pScaleLevels)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformQuantInvLumaDC4x4_H264_16s_C1I // ippiTransformQuantInvLumaDC4x4_H264_32s_C1I // // Purpose: // Perform integer inverse transformation and dequantization // for 4x4 luma DC coefficients, // // Parameters: // pSrcDst - pointer to initial coefficients and resultant DC, // QP - quantization parameter. // pScaleLevels pointer to Scale levels, if NULL, default is applied // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pointers are NULL // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0 */ IPPAPI(IppStatus, ippiTransformQuantInvLumaDC4x4_H264_16s_C1I, ( Ipp16s* pSrcDst, Ipp32s QP, const Ipp16s* pScaleLevelsInv)) IPPAPI(IppStatus, ippiTransformQuantInvLumaDC4x4_H264_32s_C1I, ( Ipp32s* pSrcDst, Ipp32s QP, const Ipp16s* pScaleLevels)) /* // Name: // ippiTransformQuantFwdChromaDC2x2_H264_16s_C1I // ippiTransformQuantFwdChromaDC2x2_H264_32s_C1I // // Purpose: // This function performs forward transform (if it's necessary) and quantization // for 2x2 DC chroma block. // // Parameters: // pDCBuf Pointer to 2x2 chroma DC block - source & destination array of size 4 // pTBuf Pointer to 2x2 transformed chroma DC block - source or destination array of size 4 // QP Quantization parameter for chroma // pNumCoeffs Pointer to value, which contains: // a negative value of a number of non-zero elements in block after // quantization (in the case of the first quantized element in block is not equal zero) // a number of non-zero elements in block after quantization (in the case // of the first quantized element in block is equal zero) // This value is calculated by function. // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise. // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 if transforming process is not used. // pScaleLevels pointer to Scale levels, if NULL, default is applied // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pointers are NULL // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0 */ IPPAPI(IppStatus, ippiTransformQuantFwdChromaDC2x2_H264_16s_C1I, ( Ipp16s *pDCBuf, Ipp16s *pTBuf, Ipp32s QP, Ipp32s* pNumCoeffs, Ipp32s Intra, Ipp32s NeedTransform, const Ipp16s* pScaleLevels)) IPPAPI(IppStatus, ippiTransformQuantFwdChromaDC2x2_H264_32s_C1I, ( Ipp32s* pSrcDst, Ipp32s* pTBlock, Ipp32s QPChroma, Ipp32s* NumCoeffs, Ipp32s Intra, Ipp32s NeedTransform, const Ipp16s* pScaleLevels)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformQuantInvChromaDCx2_H264_16s_C1I // ippiTransformQuantInvChromaDCx2_H264_32s_C1I // // Purpose: // Perform integer inverse transformation and dequantization // for 2x2 chroma DC coefficients, // // Parameters: // pSrcDst - pointer to initial coefficients and resultant DC, // QP - quantization parameter. // pScaleLevels pointer to Scale levels, if NULL, default is applied // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pointers are NULL // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0 */ IPPAPI(IppStatus, ippiTransformQuantInvChromaDC2x2_H264_16s_C1I, ( Ipp16s* pSrcDst, Ipp32s QP, const Ipp16s *pScaleLevels)) IPPAPI(IppStatus, ippiTransformQuantInvChromaDC2x2_H264_32s_C1I, ( Ipp32s* pSrcDst, Ipp32s QP, const Ipp16s *pScaleLevels)) /* // Name: // ippiTransformQuantFwdChromaDC2x4_H264_16s_C1I // ippiTransformQuantFwdChromaDC2x4_H264_32s_C1I // // Purpose: // This function performs forward transform (if it's necessary) and quantization // for 2x4 DC chroma block. // // Parameters: // pDCBuf Pointer to 2x4 chroma DC block - source & destination array of size 6 // pTBuf Pointer to 2x4 transformed chroma DC block - source or destination array of size 6 // QP Quantization parameter for chroma // pNumCoeffs Pointer to value, which contains: // a negative value of a number of non-zero elements in block after // quantization (in the case of the first quantized element in block is not equal zero) // a number of non-zero elements in block after quantization (in the case // of the first quantized element in block is equal zero) // This value is calculated by function. // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise. // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 if transforming process is not used. // pScaleLevels pointer to Scale levels, if NULL, default is applied // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pointers are NULL // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0 */ IPPAPI(IppStatus, ippiTransformQuantFwdChromaDC2x4_H264_16s_C1I, ( Ipp16s *pDCBuf, Ipp16s *pTBuf, Ipp32s QPChroma, Ipp32s* NumCoeffs, Ipp32s Intra, Ipp32s NeedTransform, const Ipp16s* pScaleLevels)) IPPAPI(IppStatus, ippiTransformQuantFwdChromaDC2x4_H264_32s_C1I, ( Ipp32s *pDCBuf, Ipp32s *pTBuf, Ipp32s QPChroma, Ipp32s* NumCoeffs, Ipp32s Intra, Ipp32s NeedTransform, const Ipp16s* pScaleLevels)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformQuantInvChromaDC2x4_H264_16s_C1I // ippiTransformQuantInvChromaDC2x4_H264_32s_C1I // // Purpose: // Perform integer inverse transformation and dequantization // for 2x4 chroma DC coefficients, // // Parameters: // pSrcDst - pointer to initial coefficients and resultant DC, // QP - quantization parameter. // pScaleLevels pointer to Scale levels, if NULL, default is applied // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pointers are NULL // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0 */ IPPAPI(IppStatus, ippiTransformQuantInvChromaDC2x4_H264_16s_C1I, ( Ipp16s* pSrcDst, Ipp32s QPChroma, const Ipp16s* pScaleLevels)) IPPAPI(IppStatus, ippiTransformQuantInvChromaDC2x4_H264_32s_C1I, ( Ipp32s *pSrcDst, Ipp32s QPChroma, const Ipp16s* pScaleLevelsInv)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiGenScaleLevel4x4_H264_8u16s_C1 // // Purpose: // Performs generation of scale matrix // // Parameters: // pSrcScaleMatrix - Pointer to an original scaling matrix for 4x4 transform. // pDstInvScaleMatrix - Pointer to a destination inverse scaling matrix -- array of size 16. // pDstScaleMatrix - Pointer to a destination forward scaling matrix - array of size 16. // QpRem - Reminder from an integer division of quantization parameter by 6. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr at least one of the pointers is NULL // ippStsQPErr QpRem is less than 0 or greater than 5 // */ IPPAPI(IppStatus, ippiGenScaleLevel4x4_H264_8u16s_C1, ( const Ipp8u *pSrcScaleMatrix, Ipp16s *pDstInvScaleMatrix, Ipp16s *pDstScaleMatrix, Ipp32s QpRem)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiSAD16x16Blocks4x4_16u32u_C1R // ippiSAD16x16Blocks8x8_16u32u_C1R // // Purpose: // Evaluates partial sums of absolute differences // between current and reference 16X16 blocks. // // Parameters: // pSrc Pointer to 16x16 block in the source plane. // srcStep Pitch of the source plane (in bytes). // pRef Pointer to 16x16 block in the reference plane. // refStep Pitch of the reference plane (in bytes). // pDstSAD Pointer to array of size 16(for 4x4) or 4(for 8x8) to store SAD values. // mcType reserved and must be 0. // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // */ IPPAPI(IppStatus, ippiSAD16x16Blocks4x4_16u32u_C1R, ( const Ipp16u* pSrc, Ipp32s srcStep, const Ipp16u* pRef, Ipp32s refStep, Ipp32u* pDstSAD, Ipp32s mcType)) IPPAPI(IppStatus, ippiSAD16x16Blocks8x8_16u32u_C1R, ( const Ipp16u* pSrc, Ipp32s srcStep, const Ipp16u* pRef, Ipp32s refStep, Ipp32u* pDstSAD, Ipp32s mcType)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiSAD2x2xN_8u16u_C1R // // ippiSAD4x4xN_8u16u_C1R // ippiSAD4x4xNI_8u16u_C1R // // ippiSAD8x8xN_8u16u_C1R // ippiSAD8x8xNI_8u16u_C1R // // ippiSAD16x16xN_8u16u_C1R // ippiSAD16x16xNI_8u16u_C1R // // Purpose: // Evaluate series of sums of absolute differences // between current and reference blocks. // // Parameters: // pSrc Pointer to the current block in the source plane. // srcStep Pitch of the source plane (in bytes). // pRef Pointer to a block in the reference plane. // refStep Pitch of the reference plane (in bytes). // pSAD Pointer to array of size of numSAD to store SAD values. // numSAD Number of SAD values to evaluate. Should be product of 8. // pMinSADIndex Index of the lowest SAD value in the given array. // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // ippStsSizeErr numSAD is less than 8 // */ IPPAPI(IppStatus, ippiSAD2x2xN_8u16u_C1R, ( const Ipp8u *pSrc, Ipp32s srcStep, const Ipp8u *pRef, Ipp32s refStep, Ipp16u *pSAD, Ipp32s numSAD)) IPPAPI(IppStatus, ippiSAD4x4xN_8u16u_C1R, ( const Ipp8u *pSrc, Ipp32s srcStep, const Ipp8u *pRef, Ipp32s refStep, Ipp16u *pSAD, Ipp32s numSAD)) IPPAPI(IppStatus, ippiSAD4x4xNI_8u16u_C1R, ( const Ipp8u *pSrc, Ipp32s srcStep, const Ipp8u *pRef, Ipp32s refStep, Ipp16u *pSAD, Ipp32s numSAD, Ipp32u *pMinSADIndex)) IPPAPI(IppStatus, ippiSAD8x8xN_8u16u_C1R, ( const Ipp8u *pSrc, Ipp32s srcStep, const Ipp8u *pRef, Ipp32s refStep, Ipp16u *pSAD, Ipp32s numSAD)) IPPAPI(IppStatus, ippiSAD8x8xNI_8u16u_C1R, ( const Ipp8u *pSrc, Ipp32s srcStep, const Ipp8u *pRef, Ipp32s refStep, Ipp16u *pSAD, Ipp32s numSAD, Ipp32u *pMinSADIndex)) IPPAPI(IppStatus, ippiSAD16x16xN_8u16u_C1R, ( const Ipp8u *pSrc, Ipp32s srcStep, const Ipp8u *pRef, Ipp32s refStep, Ipp16u *pSAD, Ipp32s numSAD)) IPPAPI(IppStatus, ippiSAD16x16xNI_8u16u_C1R, ( const Ipp8u *pSrc, Ipp32s srcStep, const Ipp8u *pRef, Ipp32s refStep, Ipp16u *pSAD, Ipp32s numSAD, Ipp32u *pMinSADIndex)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiSumsDiff16x16Blocks4x4_16u32s_C1R // ippiSumsDiff8x8Blocks4x4_16u32s_C1R // // Purpose: // These functions evaluates difference between current and reference 4x4 blocks // and calculates sums of 4x4 residual blocks elements // Parameters: // pSrc Pointer block in current plane // srcStep Step of the current plane, specifying width of the plane in bytes. // pPred Pointer to reference block // predStep Step of the reference plane, specifying width of the plane in bytes. // pSums Pointer to array that contains sums of 4x4 difference blocks coefficients. // The array's filled by function. // pDiff If it isn't zero, pointer to array that will contain a sequence of 4x4 // residual blocks. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr one of the input pointers is NULL */ IPPAPI(IppStatus, ippiSumsDiff16x16Blocks4x4_16u32s_C1R, ( const Ipp16u* pSrc, Ipp32s srcStep, const Ipp16u* pPred, Ipp32s predStep, Ipp32s* pSums, Ipp16s* pDiff)) IPPAPI(IppStatus, ippiSumsDiff8x8Blocks4x4_16u32s_C1R, ( const Ipp16u* pSrc, Ipp32s srcStep, const Ipp16u* pPred, Ipp32s predStep, Ipp32s* pSums, Ipp16s* pDiff)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformFwdLuma8x8_H264_16s_C1 // ippiTransformFwdLuma8x8_H264_16s32s_C1 // // Purpose: // Performs forward 8x8 transform for a 8x8 Luma block without normalization. // // Parameters: // pSrc - pointer to the initial 8x8 Luma block and resultant coefficients // (array of size 64). // pDst - pointer to the resultant coefficients (array of size 64). // Returns: // ippStsNoErr No error // ippStsNullPtrErr at least one of the pointers is NULL */ IPPAPI(IppStatus, ippiTransformFwdLuma8x8_H264_16s32s_C1, ( const Ipp16s* pSrc, Ipp32s* pDst)) IPPAPI(IppStatus, ippiTransformFwdLuma8x8_H264_16s_C1, ( const Ipp16s* pSrc, Ipp16s* pDst)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformInvAddPredLuma8x8_H264_32s16u_C1R // // Purpose: // Performs inverse 8x8 transform for a 8x8 Luma block with subsequent intra // prediction or motion compensation, coefficients are assumed to be pre-normalized. // // Parameters: // pPred - pointer to the reference 8x8 block, which is used for intra // prediction or motion compensation. // predStep - reference frame step in bytes. // pSrcDst - pointer to the initial coefficients and buffer for the computations // (8x8 block) - array of size 64. // pDst - pointer to the destination 8x8 block. // dstStep - destination frame step in bytes. // bitDepth - bit depth of pPred in range [1..14] // // Returns: // ippStsNoErr No error // ippStsNullPtrErr pointers are NULL // */ IPPAPI(IppStatus, ippiTransformInvAddPredLuma8x8_H264_32s16u_C1R, ( const Ipp16u* pPred, Ipp32s predStep, Ipp32s* pSrcDst, Ipp16u* pDst, Ipp32s dstStep, Ipp32s bitDepth)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiEncodeCoeffsCAVLCChromaDC2x2_H264_32s // ippiEncodeCoeffsCAVLCChromaDC2x4_H264_16s // ippiEncodeCoeffsCAVLCChromaDC2x4_H264_32s // // Purpose: Calculates characteristics of 2x2 or 2X4 Chroma DC for CAVLC encoding. // // Parameters: // pSrc Pointer to 2x2 or 2x4 block - array of size 4 or 6. // pTraling_One The number of trailing ones transform coefficient levels // in a range[0;3]. This argument is calculated by the function. // pTraling_One_Signs Code that describes signs of trailing ones. // (Trailing_One 1 - i)-bit in this code corresponds to a sign // of i-trailing one in the current block. In this code 1 indicates // negative value, 0 positive value. This argument is calculated // by the function. // pNumOutCoeffs The number of non-zero coefficients in block (including trailing // ones). This argument is calculated by the function. // pTotalZeros The number of zero coefficients in block (except trailing zeros). This // argument is calculated by the function. // pLevels Pointer to an array of size 4 that contains non-zero quantized // coefficients of the current block (except trailing ones) in reverse scan // matrix order. // pRuns Pointer to an array of size 4 that contains runs before non-zero // quantized coefficients (including trailing ones) of the current block in // reverse scan matrix order (except run before the first non-zero // coefficient in block, which can be calculated using TotalZeros). // // Returns: // ippStsNoErr No error // ippStsNullPtrErr if a pointer is NULL // // Notes: // H.264 standard: JVT-G050. ITU-T Recommendation and // Final Draft International Standard of Joint Video Specification // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003. */ IPPAPI(IppStatus, ippiEncodeCoeffsCAVLCChromaDC2x2_H264_32s, ( const Ipp32s* pSrc, Ipp8u* pTrailingOnes, Ipp8u* pTrailingOneSigns, Ipp8u* pNumOutCoeffs, Ipp8u* pTotalZeroes, Ipp32s* pLevels, Ipp8u* pRuns)) IPPAPI(IppStatus, ippiEncodeCoeffsCAVLCChromaDC2x4_H264_16s, ( const Ipp16s *pSrc, Ipp8u *pTrailing_Ones, Ipp8u *pTrailing_One_Signs, Ipp8u *pNumOutCoeffs, Ipp8u *pTotalZeros, Ipp16s *pLevels, Ipp8u *pRuns)) IPPAPI(IppStatus, ippiEncodeCoeffsCAVLCChromaDC2x4_H264_32s, ( const Ipp32s *pSrc, Ipp8u *pTrailing_Ones, Ipp8u *pTrailing_One_Signs, Ipp8u *pNumOutCoeffs, Ipp8u *pTotalZeros, Ipp32s *pLevels, Ipp8u *Runs)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiInterpolateLumaBlock_AVS_8u_P1R // // Purpose: Performs interpolation for motion estimation of the luminance component. // // Parameters: // interpolateInfo - pointer to a structure having interpolation parameters // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers in the interpolateInfo structure is NULL // ippStsSizeErr if roi.width or roi.height take values other than 16 or 8 // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // */ IPPAPI(IppStatus, ippiInterpolateLumaBlock_AVS_8u_P1R,(const IppVCInterpolateBlock_8u *interpolateInfo)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiWeightPrediction_AVS_8u_C1R // // The function performs weighting of an interpolated block. The formulae is the following: // pDst[x] = (Ipp8u) Clip1(((pSrc[x] * scale + 16) >> 5) + shift); // where Clip1 is saturating to the Ipp8u range. // // Parameters: // pSrc source pointer to a block to weight // srcStep source block's step // pDst destination pointer to leave the weighted block // dstStep destination block's step // scale multiplication value // shift resulting shift // sizeBlock block size. Could be 16x16, 16x8, 8x16, 8x8 // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers in the interpolateInfo structure is NULL // ippStsSizeErr if sizeBlock.width or sizeBlock.height take values other than 16 or 8 // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // */ IPPAPI(IppStatus, ippiWeightPrediction_AVS_8u_C1R,(const Ipp8u *pSrc, Ipp32s srcStep, Ipp8u *pDst, Ipp32s dstStep, Ipp32u scale, Ipp32s shift, IppiSize sizeBlock)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructLumaIntra_AVS_16s8u_C1R // // Reconstructs Intra Luma macroblock. // // Parameters: // ppSrcCoeff pointer to the order of 8x8 blocks of residual coefficients // pSrcDstYPlane pointer to the current macroblock that is reconstructed in Y-plane // srcDstYStep Y-Plane step // pMBIntraTypes array of Intra_8x8 luma prediction modes for each subblock // pSrcNumCoeffs array of indices of the last coefficient in each subblock // cbp8x8 coded block pattern // QP quantization parameter // edgeType specifies the availability of the macroblocks used for prediction // // Returns: // ippStsNoErr Indicates no error. // ippStsNullPtrErr Indicates an error condition if at least one of the specified pointers is NULL. // ippStsOutOfRangeErr QP is less than 0 or greater than 63 // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // */ IPPAPI(IppStatus,ippiReconstructLumaIntra_AVS_16s8u_C1R,(Ipp16s **ppSrcCoeff, Ipp8u *pSrcDstYPlane, Ipp32s srcDstYStep, const IppIntra8x8PredMode_AVS *pMBIntraTypes, const Ipp32s *pSrcNumCoeffs, Ipp32u cbp8x8, Ipp32u QP, Ipp32u edgeType)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructLumaInter_AVS_16s8u_C1R // // Reconstructs Inter Luma macroblock. // // Parameters: // ppSrcCoeff pointer to the order of 8x8 blocks of residual coefficients // pSrcDstYPlane pointer to the current macroblock that is reconstructed in Y-plane // srcDstYStep Y-Plane step // pSrcNumCoeffs array of indices of the last coefficient in each subblock // cbp8x8 coded block pattern // QP quantization parameter // // Returns: // ippStsNoErr Indicates no error. // ippStsNullPtrErr Indicates an error condition if at least one of the specified pointers is NULL. // ippStsOutOfRangeErr QP is less than 0 or greater than 63 // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // */ IPPAPI(IppStatus,ippiReconstructLumaInter_AVS_16s8u_C1R,(Ipp16s **ppSrcCoeff, Ipp8u *pSrcDstYPlane, Ipp32s srcDstYStep, const Ipp32s *pSrcNumCoeffs, Ipp32u cbp8x8, Ipp32u QP)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructChromaIntra_AVS_16s8u_C1R // // Reconstructs Intra Chroma macroblock. // // Parameters: // ppSrcCoeff pointer to the order of 8x8 blocks of residual coefficients // pSrcDstUPlane pointer to the current macroblock that is reconstructed in U-plane // pSrcDstVPlane pointer to the current macroblock that is reconstructed in V-plane // srcDstUVStep chrominance planes step // predMode chrominance prediction mode for both subblock // pSrcNumCoeffs array of indices of the last coefficient in each subblock // cbp8x8 coded block pattern // chromaQP quantization parameter // edgeType specifies the availability of the macroblocks used for prediction // // Returns: // ippStsNoErr Indicates no error. // ippStsNullPtrErr Indicates an error condition if at least one of the specified pointers is NULL. // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // */ IPPAPI(IppStatus,ippiReconstructChromaIntra_AVS_16s8u_C1R,(Ipp16s **ppSrcCoeff, Ipp8u *pSrcDstUPlane, Ipp8u *pSrcDstVPlane, Ipp32s srcDstUVStep, const IppIntraChromaPredMode_AVS predMode, const Ipp32s *pSrcNumCoeffs, Ipp32u cbp8x8, Ipp32u chromaQP, Ipp32u edgeType)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiReconstructChromaInter_AVS_16s8u_C1R // // Reconstructs Inter Chroma macroblock. // // Parameters: // ppSrcCoeff pointer to the order of 8x8 blocks of residual coefficients // pSrcDstUPlane pointer to the current macroblock that is reconstructed in U-plane // pSrcDstVPlane pointer to the current macroblock that is reconstructed in V-plane // srcDstUVStep chrominance planes step // pSrcNumCoeffs array of indices of the last coefficient in each subblock // cbp8x8 coded block pattern // chromaQP quantization parameter // // Returns: // ippStsNoErr Indicates no error. // ippStsNullPtrErr Indicates an error condition if at least one of the specified pointers is NULL. // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // */ IPPAPI(IppStatus,ippiReconstructChromaInter_AVS_16s8u_C1R,(Ipp16s **ppSrcCoeff, Ipp8u *pSrcDstUPlane, Ipp8u *pSrcDstVPlane, Ipp32s srcDstUVStep, const Ipp32s *pSrcNumCoeffs, Ipp32u cbp8x8, Ipp32u chromaQP)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDeblockingLuma_VerEdge_AVS_8u_C1IR // ippiFilterDeblockingLuma_HorEdge_AVS_8u_C1IR // // Purpose: // Perform deblocking filtering on the vertical and horizontal edges of the luma 16x16 macroblock // // Parameters: // pDeblockInfo - Pointer to deblocking parameters, where, // pSrcDstPlane - Pointer to the initial and resultant coefficients. // srcDstStep - Step of the array. // pAlpha - Array of size 2 of Alpha Thresholds. // pBeta - Array of size 2 of Beta Thresholds. // pThresholds - Array of size 2 of Thresholds. // pBs - Array of size 4 of BS parameters // // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL */ IPPAPI(IppStatus,ippiFilterDeblockingLuma_VerEdge_AVS_8u_C1IR,(const IppiFilterDeblock_8u *pDeblockInfo)) IPPAPI(IppStatus,ippiFilterDeblockingLuma_HorEdge_AVS_8u_C1IR,(const IppiFilterDeblock_8u *pDeblockInfo)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDeblockingChroma_VerEdge_AVS_8u_C1IR // ippiFilterDeblockingChroma_HorEdge_AVS_8u_C1IR // // Purpose: // Perform deblocking filtering on the vertical and horizontal edges of the chroma 8x8 macroblock // // Parameters: // pDeblockInfo - Pointer to deblocking parameters. // pSrcDstPlane - Pointer to the initial and resultant coefficients. // srcdstStep - Step of the array. // pAlpha - Array of size 1 of Alpha Thresholds. // pBeta - Array of size 1 of Beta Thresholds. // pThresholds - Array of size 1 of Thresholds. // pBs - Array of size 2 of BS parameters. // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL */ IPPAPI(IppStatus,ippiFilterDeblockingChroma_VerEdge_AVS_8u_C1IR,(const IppiFilterDeblock_8u *pDeblockInfo)) IPPAPI(IppStatus,ippiFilterDeblockingChroma_HorEdge_AVS_8u_C1IR,(const IppiFilterDeblock_8u *pDeblockInfo)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDecodeLumaBlockIntra_AVS_1u16s // ippiDecodeLumaBlockInter_AVS_1u16s // // Purpose: // Decodes a luminance 8x8 block // // Parameters: // ppBitStream Double pointer to the current position in the bit stream // pBitOffset Pointer to offset between the bit pointed by pBitStream // and the start of the code // pNumCoeff Pointer to a variable to return the number of the last // decoded element in the block // pDstCoeffs Pointer to the decoded elements // scanType Type of reordering, can be 0 or 1 // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL */ IPPAPI(IppStatus, ippiDecodeLumaBlockIntra_AVS_1u16s,(Ipp32u **ppBitStream, Ipp32s *pBitOffset, Ipp32s *pNumCoeff, Ipp16s *pDstCoeffs, Ipp32u scanType)) IPPAPI(IppStatus, ippiDecodeLumaBlockInter_AVS_1u16s,(Ipp32u **ppBitStream, Ipp32s *pBitOffset, Ipp32s *pNumCoeff, Ipp16s *pDstCoeffs, Ipp32u scanType)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDecodeChromaBlock_AVS_1u16s // // Purpose: // Decodes a chrominance 8x8 block // // Parameters: // ppBitStream Double pointer to the current position in the bit stream // pBitOffset Pointer to offset between the bit pointed by pBitStream // and the start of the code // pNumCoeff Pointer to a variable to return the number of the last // decoded element in the block // pDstCoeffs Pointer to the decoded elements // scanType Type of reordering, can be 0 or 1 // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL */ IPPAPI(IppStatus, ippiDecodeChromaBlock_AVS_1u16s,(Ipp32u **ppBitStream, Ipp32s *pBitOffset, Ipp32s *pNumCoeff, Ipp16s *pDstCoeffs, Ipp32u scanType)) /* /////////////////////////////////////////////////////////////////////////// // Deinterlacing filter functions // /////////////////////////////////////////////////////////////////////////// // Name: // ippiDeinterlaceMedianThreshold_8u_C1R // // Purpose: // Median deinterlacing with threshold. // // For each pixel (x, y) in the ROI: // // if ((y & 1) != fieldNum || ((y == 0 || y == size.height - 1) && bCopyBorder)) { // pDst[x + y * dstStep] = pSrc[x + y * srcStep]; // } else { // m = MEDIAN(pSrc[x + (y - 1) * srcStep], // pSrc[x + y * srcStep], // pSrc[x + (y + 1) * srcStep]); // if (abs(m - pSrc[x + y * srcStep]) < threshold) { // pDst[x + y * dstStep] = pSrc[x + y * srcStep]; // } else { // pDst[x + y * dstStep] = m; // } // } // // Parameters: // pSrc - Pointer to the source image. // srcStep - Step in bytes through the source image buffer. // pDst - Pointer to the destination image. // dstStep - Step in bytes through the destination image buffer. // size - Size of the ROI in pixels. // threshold - Threshold value. // fieldNum - Field to process, 0 or 1. // bCopyBorder - Non-zero means copy border line to destination, // zero value means process border line like internal lines. // // Returns: // ippStsNoErr Indicates no error. Any other value indicates an error or a warning. // ippStsNullPtrErr Indicates an error if one of the specified pointers is NULL. // ippStsStepErr Indicates an error condition if step through the source/destination image buffer has a zero or negative value. // ippStsSizeErr Indicates an error condition if size has a field with zero or negative // */ IPPAPI(IppStatus, ippiDeinterlaceMedianThreshold_8u_C1R, (const Ipp8u *pSrc, int srcStep, Ipp8u *pDst, int dstStep, IppiSize size, int threshold, int fieldNum, int bCopyBorder)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDeinterlaceEdgeDetect_8u_C1R // // Purpose: // Generates image field using EdgeDetect filter. // For each pixel (x, y) in the ROI: // // if (((y == 0 && fieldNum == 0) || (y == size.height - 1 && fieldNum == 1)) && bCopyBound) { // pDst[x + y * dstStep] = pSrc[x + y * srcStep]; // } else { // y0 = y + fieldNum - 1; // y1 = y + fieldNum; // pDst[x + y*dstStep] = (Ipp8u)EDGE_DETECT(pSrc[x - 1 + y0 * srcStep], // pSrc[x + y0 * srcStep], // pSrc[x + 1 + y0 * srcStep], // pSrc[x - 1 + y1 * srcStep], // pSrc[x + y1 * srcStep], // pSrc[x + 1 + y1 * srcStep]); // } // // EDGE_DETECT is: // int EDGE_DETECT(int a0, int a1, int a2, int b0, int b1, int b2) { // int d0 = abs(a0 - b2); // int d1 = abs(a1 - b1); // int d2 = abs(a2 - b0); // if (d0 < d1 && d0 < d2) { // return (a0 + b2 + 1) >> 1; // } else // if (d1 < d0 && d1 < d2) { // return (a1 + b1 + 1) >> 1; // } else { // return (a2 + b0 + 1) >> 1; // } // } // // Parameters: // pSrc - Pointer to the source image. // srcStep - Step in bytes through the source image buffer (field). // pDst - Pointer to the destination image. // dstStep - Step in bytes through the destination image buffer (field). // size - Size of the ROI in pixels. // fieldNum - Field to generate, 0 or 1. // bCopyBorder - Non-zero means copy border line to destination, zero // value means process border line like internal lines. // // Returns: // ippStsNoErr Indicates no error. Any other value indicates an error or a warning. // ippStsNullPtrErr Indicates an error if one of the specified pointers is NULL. // ippStsStepErr Indicates an error condition if step through the source/destination image buffer has a zero or negative value. // ippStsSizeErr Indicates an error condition if size has a field with zero or negative value. // */ IPPAPI(IppStatus, ippiDeinterlaceEdgeDetect_8u_C1R, (const Ipp8u *pSrc, int srcStep, Ipp8u *pDst, int dstStep, IppiSize size, int fieldNum, int bCopyBorder)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDeinterlaceMotionAdaptive_8u_C1 // // Purpose: // Motion adaptive de-interlacing filter. Requires 4 input frames. // // Parameters: // pSrc - pointer to array of pointers to frames - 4 source plane pointers from subsequent frames // srcStep - distance between source plane rows, in bytes // pDst - pointer to destination plane // dstStep - distance between destination plane rows, in bytes // planeSize - size of the image plane in pixels // threshold - (default value: 12) tradeoff between flickering and residual combing // artifacts. Decrease the value of the threshold to reduce combing artifacts // on moving objects, but the flickering on the static region is increased. // Zero value corresponds to the bob-deinterlacing // topFirst - [range is 0, 1] - defines the field order of the videosequence. // Usage: // isTopFirst = 0 for bottom field first (bff); // isTopFirst = 1 for top field first (tff). // topField - [range is 0, 1] - defines the destination field that will be used to store processed interpolated field // copyField - [range is 0, 1] - copy unprocessed field from the source frame to the destination // artifactProtection - [range is 0, 1] - sets of the additional artifact protection, to suppress distortion. // // Returns: // ippStsNoErr Indicates no error. Any other value indicates an error or a warning. // ippStsSizeErr Incorrect input roiSize of the image // ippStsNullPtrErr Incorrect memory address // */ IPPAPI(IppStatus, ippiDeinterlaceMotionAdaptive_8u_C1, (const Ipp8u *pSrcPlane[4], int srcStep, Ipp8u *pDst, int dstStep, IppiSize planeSize, int threshold, int topFirst, int topField, int copyField, int artifactProtection)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDeinterlaceBlendInitAlloc_8u_C1 // // Purpose: // Initialization of parameters, allocation of internal temporary buffer // // Parameters: // planeSize - size of the image plane in pixels // blendThresh - array of 2 thresholds to determine "alpha" coefficients; // must be 0 <= blendThresh[0] <= blendThresh[1] <= 255 // blendConstants - array of 2 values for "alpha"; // blendConstants[i] corresponds to blendTresh[i], // must be 0.0 <= blendConstants[i] <= 1.0 for i=0,1 // ppState - pointer to pointer to an instance of the IppiDeinterlaceBlendState_8u_C1 structure, containing temporary buffer // // Returns: // ippStsOk No error, Ok // ippStsSizeErr Incorrect input size of the image // ippStsNullPtrErr Incorrect memory address // ippStsMemAllocErr Memory allocation error // */ IPPAPI(IppStatus, ippiDeinterlaceBlendInitAlloc_8u_C1, (IppiSize planeSize, int blendThresh[2], double blendConstants[2], IppiDeinterlaceBlendState_8u_C1 **ppState)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDeinterlaceBlend_8u_C1 // // Purpose: // Motion adaptive de-interlacing filter. Requires 3 input frames: previous, current, next. // // Parameters: // pSrcPlane - array of pointers to frames: [previous, // current, next] - 3 source plane pointers // srcStep - distance between source plane rows, in bytes // pDst - pointer to destination plane // dstStep - distance between destination plane rows, in bytes // planeSize - size of the image plane in pixels // topFirst - [range is 0, 1] - defines the field order of the videosequence. // Usage: // topFirst = 0 for bottom field first (bff); // topFirst = 1 for top field first (tff). // topField - [range is 0, 1] - defines the destination field that will be used to store processed interpolated field // copyField - [range is 0, 1] - copy unprocessed field from the source frame to the destination // pState - pointer to an instance of the IppiDeinterlaceBlendState_8u_C1 structure, containing temporary buffer // // Returns: // ippStsOk No error, Ok // ippStsSizeErr Incorrect input size of the image // ippStsNullPtrErr Incorrect memory address // */ IPPAPI(IppStatus, ippiDeinterlaceBlend_8u_C1, (const Ipp8u *pSrcPlane[3], int srcStep, Ipp8u *pDst, int dstStep, IppiSize planeSize, int topFirst, int topField, int copyField, IppiDeinterlaceBlendState_8u_C1 *pState)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDeinterlaceBlendFree_8u_C1 // // Purpose: // Free of memory, allocated by init function. // // Parameters: // pState - pointer to an instance of the IppiDeinterlaceBlendState_8u_C1 structure, containing temporary buffer // // Returns: // ippStsOk No error, Ok // ippStsNullPtrErr Incorrect memory address // */ IPPAPI(IppStatus, ippiDeinterlaceBlendFree_8u_C1, (IppiDeinterlaceBlendState_8u_C1 *pState)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDenoiseSmooth_8u_C1R // // Purpose: // Perform Spatial Noise Reduction filtering. // Algorithm uses conception spatial smoothing. Effective to smooth flat area. // // Parameters: // pSrc - pointer to source image origin // srcStep - distance in bytes between starts of consecutive lines in the source image. // pDst - pointer to destination image origin // dstStep - Distance in bytes between starts of consecutive lines in the destination image // size - size of the source image in pixels. // roi - Region of interest in the source image (of the IppiRest type). // Destination image has the same ROI // threshold - parameter of denoise algorithm describes what is detected as detail and // so keep from removing. Increasing of this parameter enlarges the filtration area. // pWorkBuffer- pointer to the external work buffer, has to be 2*(roi.height*roi.width) // // // Returns: // ippStsOk No error, Ok // ippStsSizeErr Incorrect input size of the image or ROI // ippStsNullPtrErr Incorrect memory address // */ IPPAPI(IppStatus, ippiFilterDenoiseSmooth_8u_C1R, (const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize size, IppiRect roi, int threshold, Ipp8u* pWorkBuffer)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDenoiseAdaptiveInitAlloc_8u_C1 // // Purpose: // Creates and initializes denoise specification structure. // // Parameters: // ppState - Pointer to pointer to the analysis specification structure to be created // roiSize - Size of the source image ROI in pixels which will be processed. // maskSize - parameter defines the region, which is used in current pixel transformation. // // Returns: // ippStsOk Indicates no error. Any other value indicates an error // ippStsSizeErr Indicates an error condition if roiSize or maskSize have a field with zero or // negative value // ippStsNullPtrErr Indicates an error when the specified // pointer is NULL // ippStsMemAllocErr Indicates an error when no memory is allocated. // */ IPPAPI(IppStatus, ippiFilterDenoiseAdaptiveInitAlloc_8u_C1, (IppiDenoiseAdaptiveState_8u_C1 **ppState, IppiSize roiSize, IppiSize maskSize)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDenoiseAdaptive_8u_C1R // // Purpose: // Perform Spatio-Temporal Adaptive Noise Reduction filtering. // The filter operates with previous, current and next frames // // Parameters: // pSrcPlane - array of pointers to frame: // pSrcPlane[0] - point to previous source image origin // pSrcPlane[1] - point to current source image origin // pSrcPlane[2] - point to next source image origin // srcStep - distance in bytes between starts of consecutive lines in the source image. // pDst - pointer to destination image origin // dstStep - Distance in bytes between starts of consecutive lines in the destination image // size - size of the source image in pixels. Destination image has the same size. // roi - Region of interest in the source image (of the IppiRect type). // Destination image has the same ROI. // maskSize - Size of the mask in pixels. // threshold - parameter of denoise algorithm describes what is detected as detail // and so keep from removing // blurType - type of blurring of noised pixel. Possible modes are // IPPVC_NOISE_BLUR0, // IPPVC_NOISE_BLUR1, // IPPVC_NOISE_BLUR2, // IPPVC_NOISE_BLUR3. See details in description. // pState - Pointer to the IppiDenoiseAdaptiveState_8u_C1 specification structure // // Returns: // ippStsOk No error, Ok // ippStsSizeErr Incorrect input size of the image origin or roi. // ippStsNullPtrErr Incorrect memory address // */ IPPAPI(IppStatus, ippiFilterDenoiseAdaptive_8u_C1R, (const Ipp8u* pSrcPlane[3], int srcStep, Ipp8u* pDst, int dstStep, IppiSize size, IppiRect roi, IppiSize maskSize, int threshold, IppvcNoiseBlurFlag blurFlag, IppiDenoiseAdaptiveState_8u_C1 *pState)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDenoiseAdaptiveFree // // Purpose: // Closes denoise specification structure. // // Parameters: // pState - Pointer to the denoise specification structure to be closed. // // Returns: // ippStsNoErr Indicates no error // ippStsNullPtrErr Indicates an error when the specified pointer is NULL. // */ IPPAPI(IppStatus, ippiFilterDenoiseAdaptiveFree_8u_C1, (IppiDenoiseAdaptiveState_8u_C1 *pState)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDenoiseMosquitoInitAlloc_8u_C1 // // Purpose: // Creates and initializes denoise specification structure. // // Parameters: // ppState - Pointer to pointer to the analysis specification structure to be created // roiSize - Size of the ROI in pixels. // // Returns: // ippStsOk Indicates no error. Any other value indicates an error // ippStsSizeErr Indicates an error condition if size has a field with zero or // negative value // ippStsNullPtrErr Indicates an error when the specified // pointer is NULL // ippStsMemAllocErr Indicates an error when no memory is allocated. // */ IPPAPI(IppStatus, ippiFilterDenoiseMosquitoInitAlloc_8u_C1, (IppiDenoiseMosquitoState_8u_C1 **ppState, IppiSize roiSize)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDenoiseMosquitoFree // // Purpose: // Closes denoise specification structure. // // Parameters: // pState - Pointer to the denoise specification structure to be closed. // // Returns: // ippStsNoErr Indicates no error // ippStsNullPtrErr Indicates an error when the specified pointer is NULL. // */ IPPAPI(IppStatus, ippiFilterDenoiseMosquitoFree_8u_C1, (IppiDenoiseMosquitoState_8u_C1 *pState)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiFilterDenoiseMosquito_8u_C1R // // Purpose: // Perform Spatio-Temporal Motion Adaptive Mosquito Noise Reduction filtering // // Parameters: // pSrcPlane - array of pointers to source image origin plane // pSrcPlane[0] - point to previous source image origin // pSrcPlane[1] - point to current source image origin // srcStep - distance in bytes between starts of consecutive lines in the source image. // pDst - pointer to destination image origin // dstStep - Distance in bytes between starts of consecutive lines in the destination image // size - size of the source image in pixels. Destination image has the same size. // roi - Region of interest in the source image (of the IppiRest type) // pState - Pointer to the denoise specification structure // // Returns: // ippStsOk No error, Ok // ippStsSizeErr Incorrect input size of the image or ROI // ippStsNullPtrErr Incorrect memory address // */ IPPAPI(IppStatus, ippiFilterDenoiseMosquito_8u_C1R, (const Ipp8u *pSrcPlane[2], int srcStep, Ipp8u* pDst, int dstStep, IppiSize size, IppiRect roi, IppiDenoiseMosquitoState_8u_C1 *pState)) /* CAST */ IPPAPI(IppStatus, ippiFilterDenoiseCASTInit, (IppDenoiseCAST *pInParam)) IPPAPI(IppStatus,ippiFilterDenoiseCASTYUV422_8u_C2R,(const Ipp8u* pSrcCur, const Ipp8u* pSrcPrev, int srcStep, const Ipp8u* pSrcEdge, int srcEdgeStep, IppiSize srcRoiSize, Ipp8u* pDst, int dstStep, Ipp8u* pHistoryWeight, IppDenoiseCAST *pInParam)) IPPAPI(IppStatus, ippiFilterDenoiseCAST_8u_C1R, (const Ipp8u* pSrcCur, const Ipp8u* pSrcPrev, int srcStep, const Ipp8u* pSrcEdge, int srcEdgeStep, IppiSize srcRoiSize, Ipp8u* pDst, int dstStep, Ipp8u* pHistoryWeight, IppDenoiseCAST *pInParam)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformResidual4x4Fwd_H264_16s_C1 // ippiTransformResidual4x4Fwd_H264_32s_C1 // // The function performs forward h264 transform on the block of 4x4. // // Parameters: // pSrc - pointer to a source block // pDst - pointer to a destination block // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // */ IPPAPI(IppStatus, ippiTransformResidual4x4Fwd_H264_16s_C1, (const Ipp16s *pSrc, Ipp16s *pDst)) IPPAPI(IppStatus, ippiTransformResidual4x4Fwd_H264_32s_C1, (const Ipp32s *pSrc, Ipp32s *pDst)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformResidual4x4Inv_H264_16s_C1 // ippiTransformResidual4x4Inv_H264_32s_C1 // // The function performs inverse h264 transform on the block of 4x4. // // Parameters: // pSrc - pointer to a source block // pDst - pointer to a destination block // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // */ IPPAPI(IppStatus, ippiTransformResidual4x4Inv_H264_16s_C1, (const Ipp16s *pSrc, Ipp16s *pDst)) IPPAPI(IppStatus, ippiTransformResidual4x4Inv_H264_32s_C1, (const Ipp32s *pSrc, Ipp32s *pDst)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiTransformQuant8x8Fwd_AVS_16s_C1 // // The function performs AVS forward transform and forward quantization on // on the block of 8x8. // // Parameters: // pSrc - pointer to a source block. // pDst - pointer to a destination block. // pNumCoeffs - pointer to a variable to return number of coefficients // in the regular scan order. // QP - quantization parameter. // roundMode - flag specifies the round mode. 1 means rounding for intra blocks, // all others mean rounding for inter block. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 63 // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // */ IPPAPI(IppStatus, ippiTransformQuant8x8Fwd_AVS_16s_C1, (const Ipp16s *pSrc, Ipp16s *pDst, Ipp32u *pNumCoeffs, Ipp32u QP, Ipp32u roundMode)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDisassembleLumaIntra_AVS_16s8u_C1R // // The function performs disassembling of AVS luminance macroblock 16x16. // The function performs the following step over every block 8x8 of the // macroblock: // finds the best prediction mode in pDstPlane for a block and saves // the mode into appropriate position in pPredModes array. // gets the residual between the predicted block and corresponding // block in pSrcPlane // does forward transformation and quantization of the residual and save // it to ppDstCoeff buffer, incrementing ppDstCoeff pointer and sets // the appropriate bit into the variable pointed by pLumaCBP. When block has // the zero residual after quantization, the pointer ppDstCoeff and variable // pointed by pLumaCBP are non changing. // performs the backward quantization, transforming of the residual and // adds to the predicted data in pDstPlane // // Parameters: // pSrcPlane - pointer to a source block. // srcStep - step of the source plane // pDstPLane - pointer to a destination block. // dstStep - step of the destination plane // ppDstCoeff - pointer to pointer to a buffer for coefficients // pPredModes - pointer to array of 4 to store prediction modes of blocks // pLumaCBP - pointer to a variable to return final CBP of the macroblock // QP - quantization parameter. // edgeType - flags of available neighbours. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 63 // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // */ IPPAPI(IppStatus, ippiDisassembleLumaIntra_AVS_16s8u_C1R, (const Ipp8u *pSrcPlane, Ipp32s srcStep, Ipp8u *pDstPlane, Ipp32s dstStep, Ipp16s **ppDstCoeff, IppIntra8x8PredMode_AVS *pPredModes, Ipp32u *pLumaCBP, Ipp32u QP, Ipp32u edgeType)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiDisassembleChroma420Intra_AVS_16s8u_C1R // // The function performs disassembling of AVS chrominance 420 macroblock 8x8 // The function performs the following step over every block 8x8 of the // macroblock: // finds the best prediction mode in pDstPlane for a block and saves // the mode into appropriate position in pPredModes array. // gets the residual between the predicted block and corresponding // block in pSrcPlane // does forward transformation and quantization of the residual and save // it to ppDstCoeff buffer, incrementing ppDstCoeff pointer and sets // the appropriate bit into the variable pointed by pChromaCBP. When block // has the zero residual after quantization, the pointer ppDstCoeff and // variable pointed by pChromaCBP are non changing. // performs the backward quantization, transforming of the residual and // adds to the predicted data in pDstPlane // // Parameters: // pSrcPlane - array of pointers pointer to a source block. // srcStep - step of the source plane // pDstPLane - array of pointer to a destination block. // dstStep - step of the destination plane // ppDstCoeff - pointer to pointer to a buffer for coefficients // pPredMode - pointer to a variable to store prediction mode of blocks // pChromaCBP - pointer to a variable to return final CBP of the macroblock // chromaQP - quantization parameter. // edgeType - flags of available neighbours. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr One of the pointers is NULL // ippStsOutOfRangeErr QP is less than 0 or greater than 51 // // Notes: // AVS China standard : GB/T 20090.2 - 2006 // */ IPPAPI(IppStatus, ippiDisassembleChroma420Intra_AVS_16s8u_C1R, (const Ipp8u *pSrcPlane[2], Ipp32s srcStep, Ipp8u *pDstPlane[2], Ipp32s dstStep, Ipp16s **ppDstCoeff, IppIntraChromaPredMode_AVS *pPredMode, Ipp32u *pChromaCBP, Ipp32u chromaQP, Ipp32u edgeType)) /* /////////////////////////////////////////////////////////////////////////// // Name: // ippiQuantizeResidual4x4Fwd_H264_16s_C1 // ippiQuantizeResidual4x4Fwd_H264_16s32s_C1 // ippiQuantizeResidual4x4Fwd_H264_32s_C1 // // Purpose: // These functions perform forward quantization for 4x4 residual block. // // Parameters: // pSrc Source array of size 16 // pDst Destination array of size 16 // pNumNonZeros Number of non-zero coefficients after the quantization // process // pLastNonZeros Ordinal number of last non-zero coefficient after the // quantization process in scan order // pQuantTable Pointer to a quantizing matrix, if NULL, the default one // is applied // pScanMatrix Scan matrix for coefficients in block (array of size 16) // QP Quantization parameter. // roundMode Flag that is equal 1 in the case of Intra slice, 0 otherwise. // // Returns: // ippStsNoErr No error // ippStsNullPtrErr A pointer is NULL // ippStsOutOfRangeErr QP > 51 (87 for 32s) or QP < 0 */ IPPAPI(IppStatus, ippiQuantizeResidual4x4Fwd_H264_16s_C1, (const Ipp16s *pSrc, Ipp16s *pDst, Ipp32u *pNumNonZeros, Ipp32u *pLastNonZero, const Ipp16s *pQuantTable, const Ipp16s *pScanMatrix, Ipp32s QP, Ipp32s roundMode)) IPPAPI(IppStatus, ippiQuantizeResidual4x4Fwd_H264_16s32s_C1, (const Ipp16s *pSrc, Ipp16s *pDst, Ipp32u *pNumNonZeros, Ipp32u *pLastNonZero, const Ipp32s *pQuantTable, const Ipp16s *pScanMatrix, Ipp32s QP, Ipp32s roundMode)) IPPAPI(IppStatus, ippiQuantizeResidual4x4Fwd_H264_32s_C1, (const Ipp32s *pSrc, Ipp32s *pDst, Ipp32u *pNumNonZeros, Ipp32u *pLastNonZero, const Ipp32s *pQuantTable, const Ipp16s *pScanMatrix, Ipp32s QP, Ipp32s roundMode)) #if defined __cplusplus } #endif #if defined (_IPP_STDCALL_CDECL) #undef _IPP_STDCALL_CDECL #define __stdcall __cdecl #endif #endif /* __IPPVC_H__ */ /* End of file ippvc.h*/