mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-12-04 05:21:02 -05:00
11038 lines
424 KiB
C
11038 lines
424 KiB
C
/* ///////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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<<IPPVC_CBP_1ST_CHROMA_DC_BITPOS)
|
|
#define IPPVC_CBP_CHROMA_AC (0xff<<IPPVC_CBP_1ST_CHROMA_AC_BITPOS)
|
|
#define IPPVC_CBP_LUMA_AC (0xffff<<IPPVC_CBP_1ST_LUMA_AC_BITPOS)
|
|
#define IPPVC_CBP_1ST_LUMA_AC_BITPOS 1
|
|
#define IPPVC_CBP_LUMA_DC 1
|
|
#define MAX_CAVLC_LEVEL_VALUE 2063
|
|
|
|
#define IPPVC_CBP_DC 1
|
|
#define IPPVC_CBP_1ST_AC_BITPOS 1
|
|
|
|
enum
|
|
{
|
|
IPPVC_MBTYPE_INTER = 0, /* P picture or P-VOP */
|
|
IPPVC_MBTYPE_INTER_Q = 1, /* P picture or P-VOP */
|
|
IPPVC_MBTYPE_INTER4V = 2, /* P picture or P-VOP */
|
|
IPPVC_MBTYPE_INTRA = 3, /* I and P picture, or I- and P-VOP */
|
|
IPPVC_MBTYPE_INTRA_Q = 4, /* I and P picture, or I- and P-VOP */
|
|
IPPVC_MBTYPE_INTER4V_Q = 5, /* P picture or P-VOP(H.263)*/
|
|
IPPVC_MBTYPE_DIRECT = 6, /* B picture or B-VOP (MPEG-4 only) */
|
|
IPPVC_MBTYPE_INTERPOLATE = 7, /* B picture or B-VOP */
|
|
IPPVC_MBTYPE_BACKWARD = 8, /* B picture or B-VOP */
|
|
IPPVC_MBTYPE_FORWARD = 9, /* B picture or B-VOP */
|
|
IPPVC_MB_STUFFING = 255
|
|
};
|
|
|
|
enum
|
|
{
|
|
IPPVC_SCAN_NONE = -1,
|
|
IPPVC_SCAN_ZIGZAG = 0,
|
|
IPPVC_SCAN_VERTICAL = 1,
|
|
IPPVC_SCAN_HORIZONTAL = 2
|
|
};
|
|
|
|
/* Block Type */
|
|
enum
|
|
{
|
|
IPPVC_BLOCK_LUMA = 0,
|
|
IPPVC_BLOCK_CHROMA = 1
|
|
};
|
|
|
|
/* Interpolation types */
|
|
enum
|
|
{
|
|
IPPVC_INTERP_NONE = 0,
|
|
IPPVC_INTERP_HORIZONTAL = 1,
|
|
IPPVC_INTERP_VERTICAL = 2,
|
|
IPPVC_INTERP_2D = 3
|
|
};
|
|
|
|
/* Sprite Type */
|
|
enum
|
|
{
|
|
IPPVC_SPRITE_STATIC = 1,
|
|
IPPVC_SPRITE_GMC = 2
|
|
};
|
|
|
|
typedef struct WarpSpec_MPEG4 IppiWarpSpec_MPEG4;
|
|
typedef struct QuantInvIntraSpec_MPEG4 IppiQuantInvIntraSpec_MPEG4;
|
|
typedef struct QuantInvInterSpec_MPEG4 IppiQuantInvInterSpec_MPEG4;
|
|
typedef struct QuantIntraSpec_MPEG4 IppiQuantIntraSpec_MPEG4;
|
|
typedef struct QuantInterSpec_MPEG4 IppiQuantInterSpec_MPEG4;
|
|
|
|
/* General Color Conversion Enumerated Types */
|
|
enum {
|
|
IPPVC_ROTATE_DISABLE = 0,
|
|
IPPVC_ROTATE_90CCW = 1,
|
|
IPPVC_ROTATE_90CW = 2,
|
|
IPPVC_ROTATE_180 = 3
|
|
};
|
|
enum
|
|
{
|
|
IPPVC_CbYCr422ToBGR565 = 0,
|
|
IPPVC_CbYCr422ToBGR555 = 1
|
|
};
|
|
|
|
/* enum used in VC1 deblocking and smoothing */
|
|
enum
|
|
{
|
|
IPPVC_EDGE_QUARTER_1 = 0x01,
|
|
IPPVC_EDGE_QUARTER_2 = 0x02,
|
|
IPPVC_EDGE_QUARTER_3 = 0x04,
|
|
IPPVC_EDGE_QUARTER_4 = 0x08,
|
|
IPPVC_EDGE_HALF_1 = IPPVC_EDGE_QUARTER_1 + IPPVC_EDGE_QUARTER_2,
|
|
IPPVC_EDGE_HALF_2 = IPPVC_EDGE_QUARTER_3 + IPPVC_EDGE_QUARTER_4,
|
|
IPPVC_EDGE_ALL = IPPVC_EDGE_HALF_1 + IPPVC_EDGE_HALF_2
|
|
};
|
|
|
|
/* deinterlacing structure */
|
|
typedef struct DeinterlaceBlendState_8u_C1 IppiDeinterlaceBlendState_8u_C1;
|
|
|
|
/* denoise structures & enums */
|
|
typedef enum _IppvcNoiseBlurFlag
|
|
{
|
|
IPPVC_NOISE_BLUR0 = 0x0,
|
|
IPPVC_NOISE_BLUR1 = 0x1,
|
|
IPPVC_NOISE_BLUR2 = 0x2,
|
|
IPPVC_NOISE_BLUR3 = 0x3
|
|
|
|
}IppvcNoiseBlurFlag;
|
|
|
|
struct DenoiseSmoothState;
|
|
typedef struct DenoiseSmoothState IppiDenoiseSmoothState_8u_C1;
|
|
|
|
struct DenoiseAdaptiveState;
|
|
typedef struct DenoiseAdaptiveState IppiDenoiseAdaptiveState_8u_C1;
|
|
|
|
struct DenoiseMNRState;
|
|
typedef struct DenoiseMNRState IppiDenoiseMosquitoState_8u_C1;
|
|
|
|
/* user-open structure */
|
|
typedef struct {
|
|
Ipp8u TemporalDifferenceThreshold; /* default 16 - range [0, 255] */
|
|
Ipp8u NumberOfMotionPixelsThreshold; /* default 0 - range [0, 16] */
|
|
Ipp8u StrongEdgeThreshold; /* default 8 - range [0, 255] */
|
|
Ipp8u BlockWidth; /* default 4 - range [1, 16] */
|
|
Ipp8u BlockHeight; /* default 4 - range [1, 16] */
|
|
Ipp8u EdgePixelWeight; /* default 128 - range [0, 255] */
|
|
Ipp8u NonEdgePixelWeight; /* default 16 - range [0, 255] */
|
|
Ipp8u GaussianThresholdY; /* default 12 */
|
|
Ipp8u GaussianThresholdUV; /* default 6 */
|
|
Ipp8u HistoryWeight; /* default 192 - range [0, 255] */
|
|
} IppDenoiseCAST;
|
|
|
|
#endif /* _OWN_BLDPCS */
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name: ippvcGetLibVersion
|
|
// Purpose: getting of the library version
|
|
// Returns: the structure of information about version of ippvc library
|
|
// Parameters:
|
|
//
|
|
// Notes: not necessary to release the returned structure
|
|
*/
|
|
|
|
IPPAPI( const IppLibraryVersion*, ippvcGetLibVersion, (void) )
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// MPEG-1 and MPEG-2 Video Decoding Functions
|
|
//////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* Variable Length Decoding Functions */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiHuffmanTableInitAlloc_32s
|
|
//
|
|
// Purpose:
|
|
// allocates memory and initializes the table that contains codes
|
|
// for macroblock address increment, macroblock type, macroblock pattern,
|
|
// or motion vectors.
|
|
//
|
|
// Parameters:
|
|
// pSrcTable Pointer to the source table
|
|
// ppDstSpec Pointer to pointer to the destination decoding table
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
// ippStsMemAllocErr No memory is allocated.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiHuffmanTableInitAlloc_32s, (
|
|
const Ipp32s* pSrcTable,
|
|
IppVCHuffmanSpec_32s** ppDstSpec))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiHuffmanRunLevelTableInitAlloc_32s
|
|
//
|
|
// Purpose:
|
|
// Allocates memory and initializes the table that contains Run-Level codes.
|
|
//
|
|
// Parameters:
|
|
// pSrcTable Pointer to the source table
|
|
// ppDstSpec Pointer to pointer to the destination decoding table
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
// ippStsMemAllocErr No memory is allocated.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiHuffmanRunLevelTableInitAlloc_32s, (
|
|
const Ipp32s* pSrcTable,
|
|
IppVCHuffmanSpec_32s** ppDstSpec))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffmanOne_1u32s
|
|
//
|
|
// Purpose:
|
|
// Decodes one code using a specified table
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Double pointer to the current position in the bit stream
|
|
// pOffset Pointer to offset between the bit pointed by pBitStream
|
|
// and the start of the code
|
|
// pDst Pointer to the destination result
|
|
// pDecodeTable Pointer to the decoding table
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
// ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffmanOne_1u32s, (
|
|
Ipp32u** ppBitStream,
|
|
int* pOffset,
|
|
Ipp32s* pDst,
|
|
const IppVCHuffmanSpec_32s* pDecodeTable))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeHuffmanPair_1u16s
|
|
//
|
|
// Purpose:
|
|
// Decodes one code using a specified table
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Double pointer to the current position in the bit stream
|
|
// pOffset Pointer to offset between the bit pointed by pBitStream
|
|
// and the start of the code
|
|
// pDecodeTable Pointer to the decoding table
|
|
// pFirst Pointer to the first destination result
|
|
// pSecond Pointer to the second destination result
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
// ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeHuffmanPair_1u16s, (
|
|
Ipp32u **ppBitStream,
|
|
Ipp32s *pOffset,
|
|
const IppVCHuffmanSpec_32s *pDecodeTable,
|
|
Ipp8s *pFirst,
|
|
Ipp16s *pSecond))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiReconstructDCTBlock_MPEG1_32s
|
|
//
|
|
// Purpose:
|
|
// Decodes 8x8 non-intra block using a table with Run-Level codes
|
|
// for MPEG-1 Standard, rearranges and performs inverse quantization.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Double pointer to the current position in the bitstream.
|
|
// pOffset Pointer to offset between the bit pointed by pBitStream
|
|
// and the start of the code
|
|
// pDCSizeTable Pointer to the table with DC coefficient,
|
|
// that is the first of the DCT coefficients
|
|
// pACTable Pointer to the table with Run-Level codes for
|
|
// all DCT coefficients but the first
|
|
// pScanMatrix Pointer to the matrix containing indices of elements
|
|
// in scanning sequence
|
|
// QP Quantizer scale factor which is read from the bitstream
|
|
// pQPMatrix Pointer to the weighting matrix imposed by the Standard
|
|
// or user-defined
|
|
// pDstBlock Pointer to the decoded elements
|
|
// pDstSize Pointer to the position of the last non-zero block coefficient
|
|
// in scanning sequence
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiReconstructDCTBlock_MPEG1_32s, (
|
|
Ipp32u** ppBitStream,
|
|
int* pOffset,
|
|
const Ipp32s* pDCSizeTable,
|
|
const Ipp32s* pACTable,
|
|
Ipp32s* pScanMatrix,
|
|
int QP,
|
|
Ipp16s* pQPMatrix,
|
|
Ipp16s* pDstBlock,
|
|
Ipp32s* pDstSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiReconstructDCTBlockIntra_MPEG1_32s
|
|
//
|
|
// Purpose:
|
|
// Decodes 8x8 intra block using a table with Run-Level codes
|
|
// for MPEG-1 Standard, rearranges and performs inverse quantization.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Double pointer to the current position in the bitstream.
|
|
// pOffset Pointer to offset between the bit pointed by pBitStream
|
|
// and the start of the code
|
|
// pDCSizeTable Pointer to the table with codes for DC coefficient,
|
|
// that is the first of the DCT coefficients
|
|
// pACTable Pointer to the table with Run-Level codes for
|
|
// all DCT coefficients but the first
|
|
// pScanMatrix Pointer to the scanning matrix imposed by the Standard
|
|
// or user-defined
|
|
// QP Quantizer scale factor which is read from the bitstream
|
|
// pQPMatrix Pointer to the weighting matrix imposed by the Standard
|
|
// or user-defined
|
|
// pDCPred Pointer to the value to be added to the DC coefficient
|
|
// pDstBlock Pointer to the decoded elements
|
|
// pDstSize Pointer to the position of the last non-zero block
|
|
// coefficient in scanning sequence
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiReconstructDCTBlockIntra_MPEG1_32s, (
|
|
Ipp32u** ppBitStream,
|
|
int* pOffset,
|
|
const Ipp32s* pDCSizeTable,
|
|
const Ipp32s* pACTable,
|
|
Ipp32s* pScanMatrix,
|
|
int QP,
|
|
Ipp16s* pQPMatrix,
|
|
Ipp16s* pDCPred,
|
|
Ipp16s* pDstBlock,
|
|
Ipp32s* pDstSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiReconstructDCTBlock_MPEG2_32s
|
|
//
|
|
// Purpose:
|
|
// Decodes 8x8 non-intra block using a table with Run-Level codes for
|
|
// MPEG-2 Standard, rearranges and performs inverse quantization.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Double pointer to the current position in the bitstream.
|
|
// pOffset Pointer to offset between the bit pointed by pBitStream
|
|
// and the start of the code
|
|
// pDCTable Pointer to the table with codes for DC coefficient,
|
|
// that is the first of the DCT coefficients
|
|
// pACTable Pointer to the table with Run-Level codes for
|
|
// all DCT coefficients but the first
|
|
// pScanMatrix Pointer to the matrix containing indices of elements
|
|
// in scanning sequence
|
|
// QP Quantizer scale factor which is read from the bitstream
|
|
// pQPMatrix Pointer to the weighting matrix imposed by the Standard
|
|
// or user-defined
|
|
// pDstBlock Pointer to the decoded elements
|
|
// pDstSize Pointer to the position of the last non-zero block
|
|
// coefficient in scanning sequence
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiReconstructDCTBlock_MPEG2_32s, (
|
|
Ipp32u** ppBitStream,
|
|
int* pOffset,
|
|
const IppVCHuffmanSpec_32s* pDCTable,
|
|
const IppVCHuffmanSpec_32s* pACTable,
|
|
Ipp32s* pScanMatrix,
|
|
int QP,
|
|
Ipp16s* pQPMatrix,
|
|
Ipp16s* pDstBlock,
|
|
Ipp32s* pDstSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiReconstructDCTBlockIntra_MPEG2_32s
|
|
//
|
|
// Purpose:
|
|
// Decodes 8x8 intra block using a table with Run-Level codes for
|
|
// MPEG-1 Standard, rearranges and performs inverse quantization.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Double pointer to the current position in the bitstream.
|
|
// pOffset Pointer to offset between the bit pointed by pBitStream
|
|
// and the start of the code
|
|
// pDCSizeTable Pointer to the table with codes for DC coefficient,
|
|
// that is the first of the DCT coefficients
|
|
// pACTable Pointer to the table with Run-Level codes for
|
|
// all DCT coefficients but the first
|
|
// pScanMatrix Pointer to the scanning matrix imposed by the Standard
|
|
// or user-defined
|
|
// QP Quantizer scale factor which is read from the bitstream
|
|
// pQPMatrix Pointer to the weighting matrix imposed by the Standard
|
|
// or user-defined
|
|
// pDCPred Pointer to the value to be added to the DC coefficient
|
|
// shiftDCVal Integer value, DC coefficient must be multiplied by
|
|
// 2**shiftDCVal
|
|
// pDstBlock Pointer to the decoded elements
|
|
// pDstSize Pointer to the position of the last non-zero block
|
|
// coefficient in scanning sequence
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiReconstructDCTBlockIntra_MPEG2_32s, (
|
|
Ipp32u** ppBitStream,
|
|
int* pOffset,
|
|
const IppVCHuffmanSpec_32s* pDCSizeTable,
|
|
const IppVCHuffmanSpec_32s* pACTable,
|
|
Ipp32s* pScanMatrix,
|
|
int QP,
|
|
Ipp16s* pQPMatrix,
|
|
Ipp16s* pDCPred,
|
|
Ipp32s shiftDCVal,
|
|
Ipp16s* pDstBlock,
|
|
Ipp32s* pDstSize))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiHuffmanTableFree_32s
|
|
//
|
|
// Purpose:
|
|
// Frees memory allocated for VLC table
|
|
//
|
|
// Parameters:
|
|
// pDecodeTable Pointer to the allocated table
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiHuffmanTableFree_32s, (IppVCHuffmanSpec_32s *pDecodeTable))
|
|
|
|
|
|
|
|
|
|
/* Inverse Quantization */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantInvIntra_MPEG2_16s_C1I
|
|
// ippiQuantInv_MPEG2_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// Performs inverse quantization for intra and non-intra frames
|
|
// respectively in accordance with the MPEG-2 Standard
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the block of DCT coefficients
|
|
// QP Quantizer scale factor which is read from the bitstream
|
|
// pQPMatrix Pointer to the weighting matrix imposed by the Standard
|
|
// or user-defined
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantInvIntra_MPEG2_16s_C1I, (
|
|
Ipp16s* pSrcDst,
|
|
int QP,
|
|
Ipp16s* pQPMatrix))
|
|
|
|
IPPAPI(IppStatus, ippiQuantInv_MPEG2_16s_C1I, (
|
|
Ipp16s* pSrcDst,
|
|
int QP,
|
|
Ipp16s* pQPMatrix))
|
|
|
|
|
|
|
|
|
|
/* Inverse Discrete Cosine Transformation */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCT8x8Inv_AANTransposed_16s_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs inverse DCT on a pre-transposed block
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the block of DCT coefficients
|
|
// pDst Pointer to the destination array
|
|
// dstStep Step through the destination array
|
|
// count Number of the last non-zero coefficient in zig-zag order
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
//
|
|
// Notes:
|
|
// This function is used for non-intra macroblocks
|
|
*/
|
|
|
|
IPPAPI(IppStatus,ippiDCT8x8Inv_AANTransposed_16s_C1R, (
|
|
const Ipp16s* pSrc,
|
|
Ipp16s* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s count))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCT8x8Inv_AANTransposed_16s8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs inverse DCT on a pre-transposed block and
|
|
// converts output to unsigned char format
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the block of DCT coefficients
|
|
// pDst Pointer to the destination array
|
|
// dstStep Step through the destination array
|
|
// count Number of the last non-zero coefficient in zig-zag order
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
//
|
|
// Notes:
|
|
// This function is used for non-intra macroblocks
|
|
*/
|
|
|
|
IPPAPI(IppStatus,ippiDCT8x8Inv_AANTransposed_16s8u_C1R, (
|
|
const Ipp16s* pSrc,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s count))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCT8x8Inv_AANTransposed_16s_P2C2R
|
|
//
|
|
// Purpose:
|
|
// Performs Inverse DCT on pre-transposed data of two input chroma blocks
|
|
// and joins the output data into one array
|
|
//
|
|
// Parameters:
|
|
// pSrcU Pointer to block of DCT coefficients for U component
|
|
// pSrcV Pointer to block of DCT coefficients for V component
|
|
// pDstUV Pointer to the destination array
|
|
// dstStep Step through the destination array
|
|
// countU Number of the last non-zero U coefficient in zig-zag order
|
|
// countV Number of the last non-zero V coefficient in zig-zag order
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
//
|
|
// Notes:
|
|
// This function is used for non-intra macroblocks
|
|
*/
|
|
|
|
IPPAPI(IppStatus,ippiDCT8x8Inv_AANTransposed_16s_P2C2R, (
|
|
const Ipp16s* pSrcU,
|
|
const Ipp16s* pSrcV,
|
|
Ipp16s* pDstUV,
|
|
Ipp32s dstStep,
|
|
Ipp32s countU,
|
|
Ipp32s countV))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCT8x8Inv_AANTransposed_16s8u_P2C2R
|
|
//
|
|
// Purpose:
|
|
// Performs inverse DCT on pre-transposed data of two input chroma
|
|
// blocks and joins the output data into one unsigned char array
|
|
//
|
|
// Parameters:
|
|
// pSrcU Pointer to block of DCT coefficients for U component
|
|
// pSrcV Pointer to block of DCT coefficients for V component
|
|
// pDstUV Pointer to the destination array
|
|
// dstStep Step through the destination array
|
|
// countU Number of the last non-zero U coefficient in zig-zag order
|
|
// countV Number of the last non-zero V coefficient in zig-zag order
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
//
|
|
// Notes:
|
|
// This function is used for non-intra macroblocks
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCT8x8Inv_AANTransposed_16s8u_P2C2R, (
|
|
const Ipp16s* pSrcU,
|
|
const Ipp16s* pSrcV,
|
|
Ipp8u* pDstUV,
|
|
Ipp32s dstStep,
|
|
Ipp32s countU,
|
|
Ipp32s countV))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCT8x8Fwd_8u16s_C2P2
|
|
//
|
|
// Purpose:
|
|
// The function performs forward discrete cosines transform at block 8x8
|
|
// of chrominance part of NV12 plane and after put results into separate
|
|
// blocks of 8x8 for U (Cb) and V (Cr) components.
|
|
//
|
|
// Parameters:
|
|
// pSrc - the pointer to the source block ( chrominance part of NV12 plane).
|
|
// 0 UV UV UV UV UV UV UV UV
|
|
// 1 UV UV UV UV ... UV
|
|
// ...
|
|
// 7 UV UV UV UV UV UV UV UV
|
|
//
|
|
// pSrc Pointer to block of DCT coefficients for U component
|
|
// srcStep Step of the current source block, specifying width of the plane
|
|
// in bytes.negative step works.
|
|
// pDstU - the pointer to the destination buffer for U coefficients of DCT
|
|
// pDstV - the pointer to the destination buffer for U coefficients of DCT
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus,ippiDCT8x8Fwd_8u16s_C2P2, (
|
|
const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
Ipp16s* pDstU,
|
|
Ipp16s* pDstV ))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCT8x8InvOrSet_16s8u_P2C2
|
|
//
|
|
// Purpose:
|
|
// The function performs inverse discrete cosines transform at block 8x8
|
|
// and after put results into chrominance part of NV12 plane. Or fill
|
|
// chrominance part of NV12 plane by constant values depends on flag parameter.
|
|
// Parameters:
|
|
// pSrcU - the pointer to the source of U(Cb) DCT coefficients
|
|
// pSrcV - the pointer to the source of U(Cb) DCT coefficients
|
|
// pDst - the pointer to the destination block ( chrominance part of NV12 plane).
|
|
// 0 UV UV UV UV UV UV UV UV
|
|
// 1 UV UV UV UV UV
|
|
// ...
|
|
// 7 UV UV UV UV UV UV UV UV
|
|
//
|
|
// dstStep Step of the current destination block, specifying width of the plane
|
|
// in bytes.negative step works.
|
|
// flag - Bits from 2 to 31 are reserved. Take into account only two low bits.
|
|
// (flag&0x03) == 0x00 - Do iDCT for U and V
|
|
// (flag&0x03) == 0x01 - Do iDCT for U and SET for V
|
|
// (flag&0x03) == 0x02 - Do SET for U and iDCT for V
|
|
// (flag&0x03) == 0x03 - Do SET for U and V
|
|
// SET means that destination blok fill by (pSrcU[0]/8) value for U
|
|
// or (pSrcV[0]/8) value for V.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCT8x8InvOrSet_16s8u_P2C2, (
|
|
const Ipp16s* pSrcU,
|
|
const Ipp16s* pSrcV,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s flag))
|
|
|
|
|
|
/* Motion Compensation */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiMC16x16_8u_C1, ippiMC16x8_8u_C1, ippiMC8x16_8u_C1,
|
|
// ippiMC8x8_8u_C1, ippiMC8x4_8u_C1, ippiMC4x8_8u_C1,
|
|
// ippiMC4x4_8u_C1, ippiMC2x4_8u_C1, ippiMC4x2_8u_C1,
|
|
// ippiMC2x2_8u_C1
|
|
//
|
|
// Purpose:
|
|
// Performs motion compensation for a predicted block of
|
|
// the correspondent size
|
|
//
|
|
// Parameters:
|
|
// pSrcRef Pointer to the reference intra block
|
|
// srcStep Step in bytes, specifying the width of
|
|
// the aligned reference frame
|
|
// pSrcYData Pointer to the data obtained after inverse DCT
|
|
// srcYDataStep Step in bytes, specifying the width of
|
|
// the aligned data after inverse DCT
|
|
// pDst Pointer to the destination predicted block
|
|
// dstStep Step in bytes, specifying the width of
|
|
// the aligned destination frame
|
|
// mcType Type of motion compensation, IPPVC_MC_APX
|
|
// roundControl Type of rounding for half-pixel approximation;
|
|
// may be 0 or 1
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiMC16x16_8u_C1,(
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcStep,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC16x8_8u_C1, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcStep,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC8x16_8u_C1, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcStep,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC8x8_8u_C1, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcStep,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC8x4_8u_C1, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcStep,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC4x8_8u_C1, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcStep,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC4x4_8u_C1, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcStep,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC2x4_8u_C1, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcStep,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC4x2_8u_C1, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcStep,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC2x2_8u_C1, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcStep,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiMC16x4_8u_C1
|
|
// ippiMC16x8UV_8u_C1
|
|
//
|
|
// Purpose:
|
|
// Performs motion compensation for a predicted UV block of
|
|
// the correspondent size
|
|
//
|
|
// Parameters:
|
|
// pSrcRef Pointer to the reference block
|
|
// srcStep Step in bytes, specifying the width of
|
|
// the aligned reference frame
|
|
// pSrcYData Pointer to the data obtained after inverse DCT
|
|
// srcYDataStep Step in bytes, specifying the width of
|
|
// the aligned data after inverse DCT
|
|
// pDst Pointer to the destination predicted block
|
|
// dstStep Step in bytes, specifying the width of
|
|
// the aligned destination frame
|
|
// mcType Type of motion compensation, IPPVC_MC_APX
|
|
// roundControl Type of rounding for half-pixel approximation;
|
|
// may be 0 or 1
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiMC16x4_8u_C1, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcStep,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC16x8UV_8u_C1, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcStep,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiMC16x16B_8u_C1, ippiMC16x8B_8u_C1, ippiMC8x16B_8u_C1,
|
|
// ippiMC8x8B_8u_C1, ippiMC8x4B_8u_C1, ippiMC4x8B_8u_C1,
|
|
// ippiMC4x4B_8u_C1, ippiMC2x4B_8u_C1, ippiMC4x2B_8u_C1,
|
|
// ippiMC2x2B_8u_C1
|
|
//
|
|
// Purpose:
|
|
// Performs motion compensation for a bi-predicted block of
|
|
// the correspondent size
|
|
//
|
|
// Parameters:
|
|
// pSrcRefB Pointer to the forward reference block
|
|
// srcStepF Step in bytes, specifying the width of
|
|
// the aligned forward reference frame
|
|
// mcTypeF Forward motion compensation type, IPPVC_MC_APX
|
|
// pSrcRefB Pointer to the backward reference block
|
|
// srcStepB Step in bytes, specifying the width of
|
|
// the aligned backward reference frame
|
|
// mcTypeB Backward motion compensation type, IPPVC_MC_APX
|
|
// pSrcYData Pointer to the data obtained after inverse DCT
|
|
// srcYDataStep Step in bytes, specifying the width of
|
|
// the aligned data after inverse DCT
|
|
// pDst Pointer to the destination predicted block
|
|
// dstStep Step in bytes, specifying the width of
|
|
// the aligned destination frame
|
|
// roundControl Type of rounding for half-pixel approximation;
|
|
// may be 0 or 1
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiMC16x16B_8u_C1, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcStepB,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC16x8B_8u_C1, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcStepB,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC8x16B_8u_C1, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcStepB,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC8x8B_8u_C1, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcStepB,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC8x4B_8u_C1, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcStepB,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC4x8B_8u_C1, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcStepB,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC4x4B_8u_C1, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcStepB,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC2x4B_8u_C1, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcStepB,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC4x2B_8u_C1, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcStepB,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC2x2B_8u_C1, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcStepB,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiMC16x4B_8u_C1
|
|
// ippiMC16x8BUV_8u_C1
|
|
//
|
|
// Purpose:
|
|
// Performs motion compensation for a bi-predicted UV block of
|
|
// the correspondent size
|
|
//
|
|
// Parameters:
|
|
// pSrcRefB Pointer to the forward reference block
|
|
// srcStepF Step in bytes, specifying the width of
|
|
// the aligned forward reference frame
|
|
// mcTypeF Forward motion compensation type, IPPVC_MC_APX
|
|
// pSrcRefB Pointer to the backward reference block
|
|
// srcStepB Step in bytes, specifying the width of
|
|
// the aligned backward reference frame
|
|
// mcTypeB Backward motion compensation type, IPPVC_MC_APX
|
|
// pSrcYData Pointer to the data obtained after inverse DCT
|
|
// srcYDataStep Step in bytes, specifying the width of
|
|
// the aligned data after inverse DCT
|
|
// pDst Pointer to the destination predicted block
|
|
// dstStep Step in bytes, specifying the width of
|
|
the aligned destination frame
|
|
// roundControl Type of rounding for half-pixel approximation;
|
|
// may be 0 or 1
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiMC16x4B_8u_C1, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcStepB,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC16x8BUV_8u_C1, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcStepB,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcYData,
|
|
Ipp32s srcYDataStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiMC8x8_16s8u_P2C2R
|
|
// ippiMC8x4_16s8u_P2C2R
|
|
//
|
|
// Purpose:
|
|
// Performs motion compensation for UV block (as a part of
|
|
// chrominance part of NV12 plane) of the correspondent size.
|
|
//
|
|
// Parameters:
|
|
// pSrcRef Pointer to the reference block
|
|
// srcStep Step in bytes, specifying the width of
|
|
// the aligned reference frame
|
|
// pSrcU Pointer to the U data obtained after inverse DCT
|
|
// pSrcV Pointer to the V data obtained after inverse DCT
|
|
// srcUVStep Step in bytes, specifying the width of
|
|
// the aligned data after inverse DCT
|
|
// pDst Pointer to the destination predicted block
|
|
// dstStep Step in bytes, specifying the width of
|
|
// the aligned destination frame
|
|
// mcType Type of motion compensation, IPPVC_MC_APX
|
|
// roundControl Type of rounding for half-pixel approximation;
|
|
// may be 0 or 1
|
|
//
|
|
// pSrcRef and pDst - the pointer to the chrominance part of NV12 plane.
|
|
// 0 UV UV UV UV UV UV UV UV
|
|
// 1 UV UV UV UV ... UV
|
|
// ...
|
|
// 7 UV UV UV UV UV UV UV UV
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
|
|
IPPAPI(IppStatus, ippiMC8x8_16s8u_P2C2R, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcRefStep,
|
|
const Ipp16s* pSrcU,
|
|
const Ipp16s* pSrcV,
|
|
Ipp32s srcUVStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC8x4_16s8u_P2C2R, (
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcRefStep,
|
|
const Ipp16s* pSrcU,
|
|
const Ipp16s* pSrcV,
|
|
Ipp32s srcUVStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiMC8x8B_16s8u_P2C2R
|
|
// ippiMC8x4B_16s8u_P2C2R
|
|
//
|
|
// Purpose:
|
|
// Performs motion compensation for a bi-predicted UV block (as a part of
|
|
// chrominance part of NV12 plane) of the correspondent size.
|
|
//
|
|
// Parameters:
|
|
// pSrcRefF Pointer to the forward reference block
|
|
// srcStepF Step in bytes, specifying the width of
|
|
// the aligned forward reference frame
|
|
// mcTypeF Forward motion compensation type, IPPVC_MC_APX
|
|
// pSrcRefB Pointer to the backward reference block
|
|
// srcStepB Step in bytes, specifying the width of
|
|
// the aligned backward reference frame
|
|
// mcTypeB Backward motion compensation type, IPPVC_MC_APX
|
|
// pSrcU Pointer to the U data obtained after inverse DCT
|
|
// pSrcV Pointer to the V data obtained after inverse DCT
|
|
// srcUVStep Step in bytes, specifying the width of
|
|
// the aligned data after inverse DCT
|
|
// pDst Pointer to the destination predicted block
|
|
// dstStep Step in bytes, specifying the width of
|
|
// the aligned destination frame
|
|
// roundControl Type of rounding for half-pixel approximation;
|
|
// may be 0 or 1
|
|
//
|
|
// pSrcRefF, pSrcRefB and pDst - the pointer to the chrominance part of NV12 plane.
|
|
// 0 UV UV UV UV UV UV UV UV
|
|
// 1 UV UV UV UV ... UV
|
|
// ...
|
|
// 7 UV UV UV UV UV UV UV UV
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiMC8x8B_16s8u_P2C2R, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcRefFStep,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcRefBStep,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcU,
|
|
const Ipp16s* pSrcV,
|
|
Ipp32s srcUVStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiMC8x4B_16s8u_P2C2R, (
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcRefFStep,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcRefBStep,
|
|
Ipp32s mcTypeB,
|
|
const Ipp16s* pSrcU,
|
|
const Ipp16s* pSrcV,
|
|
Ipp32s srcUVStep,
|
|
Ipp8u* pDst,
|
|
Ipp32s dstStep,
|
|
Ipp32s roundControl))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// MPEG-1 and MPEG-2 Video Encoding Functions
|
|
//////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* Motion Estimation and Compensation Functions */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiGetDiff16x16_8u16s_C1
|
|
// ippiGetDiff16x8_8u16s_C1
|
|
// ippiGetDiff8x8_8u16s_C1
|
|
// ippiGetDiff8x16_8u16s_C1
|
|
// ippiGetDiff8x4_8u16s_C1
|
|
//
|
|
// Purpose:
|
|
// Evaluates the difference between current predicted and reference blocks
|
|
// of the specified size in accordance with the type of motion compensation.
|
|
//
|
|
// Parameters:
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Step in bytes of the current block
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Step in bytes of the reference block
|
|
// pDstDiff Pointer to the destination block containing
|
|
// differences between current and reference blocks
|
|
// dstDiffStep Step in bytes through the destination block
|
|
// pDstPredictor Pointer to the block containing predictors
|
|
// dstPredictorStep Step in bytes through the predictor block
|
|
// mcType Type of the following motion compensation
|
|
// roundControl Type of rounding for half-pixel approximation;
|
|
// may be 0 or 1
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
//
|
|
// Notes:
|
|
// These operations are inverse to that performed by correspondent motion
|
|
// compensation functions
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiGetDiff16x16_8u16s_C1,(
|
|
const Ipp8u* pSrcCur,
|
|
Ipp32s srcCurStep,
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcRefStep,
|
|
Ipp16s* pDstDiff,
|
|
Ipp32s dstDiffStep,
|
|
Ipp16s* pDstPredictor,
|
|
Ipp32s dstPredictorStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiGetDiff16x8_8u16s_C1, (
|
|
const Ipp8u* pSrcCur,
|
|
Ipp32s srcCurStep,
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcRefStep,
|
|
Ipp16s* pDstDiff,
|
|
Ipp32s dstDiffStep,
|
|
Ipp16s* pDstPredictor,
|
|
Ipp32s dstPredictorStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiGetDiff8x8_8u16s_C1, (
|
|
const Ipp8u* pSrcCur,
|
|
Ipp32s srcCurStep,
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcRefStep,
|
|
Ipp16s* pDstDiff,
|
|
Ipp32s dstDiffStep,
|
|
Ipp16s* pDstPredictor,
|
|
Ipp32s dstPredictorStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiGetDiff8x16_8u16s_C1, (
|
|
const Ipp8u* pSrcCur,
|
|
Ipp32s srcCurStep,
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcRefStep,
|
|
Ipp16s* pDstDiff,
|
|
Ipp32s dstDiffStep,
|
|
Ipp16s* pDstPredictor,
|
|
Ipp32s dstPredictorStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiGetDiff8x4_8u16s_C1, (
|
|
const Ipp8u* pSrcCur,
|
|
Ipp32s srcCurStep,
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcRefStep,
|
|
Ipp16s* pDstDiff,
|
|
Ipp32s dstDiffStep,
|
|
Ipp16s* pDstPredictor,
|
|
Ipp32s dstPredictorStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
/* Motion Estimation and Compensation Functions for NV12 chroma format */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiGetDiff8x8_8u16s_C2P2
|
|
// ippiGetDiff8x4_8u16s_C2P2
|
|
//
|
|
// Purpose:
|
|
// Evaluates the difference between current predicted and reference blocks
|
|
// of the specified size in accordance with the type of motion compensation.
|
|
// Chroma is presented in NV12 format
|
|
//
|
|
// Parameters:
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Step in bytes of the current block
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Step in bytes of the reference block
|
|
// pDstDiffU Pointer to the destination block containing
|
|
// differences between current and reference blocks U-plane
|
|
// dstDiffStepU Step in bytes through the destination block for U-plane
|
|
// pDstDiffV Pointer to the destination block containing
|
|
// differences between current and reference blocks V-plane
|
|
// dstDiffStepV Step in bytes through the destination block for V-plane
|
|
// mcType Type of the following motion compensation
|
|
// roundControl Type of rounding for half-pixel approximation;
|
|
// may be 0 or 1
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
//
|
|
// Notes:
|
|
// These operations are inverse to that performed by correspondent motion
|
|
// compensation functions
|
|
*/
|
|
IPPAPI(IppStatus, ippiGetDiff8x4_8u16s_C2P2,(const Ipp8u *pSrcCur,Ipp32s srcCurStep,
|
|
const Ipp8u *pSrcRef,Ipp32s srcRefStep,
|
|
Ipp16s *pDstDiffU,Ipp32s dstDiffStepU,
|
|
Ipp16s *pDstDiffV,Ipp32s dstDiffStepV,
|
|
Ipp32s mcType,Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiGetDiff8x8_8u16s_C2P2,(const Ipp8u *pSrcCur,Ipp32s srcCurStep,
|
|
const Ipp8u *pSrcRef,Ipp32s srcRefStep,
|
|
Ipp16s *pDstDiffU,Ipp32s dstDiffStepU,
|
|
Ipp16s *pDstDiffV,Ipp32s dstDiffStepV,
|
|
Ipp32s mcType,Ipp32s roundControl))
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiGetDiff4x4_8u16s_C1
|
|
//
|
|
// Purpose:
|
|
// Evaluates the difference between current predicted and reference blocks
|
|
// of the specified size in accordance with the type of motion compensation.
|
|
//
|
|
// Parameters:
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Step in bytes of the current block
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Step in bytes of the reference block
|
|
// pDstDiff Pointer to the destination block containing
|
|
// differences between current and reference blocks
|
|
// dstDiffStep Step in bytes through the destination block
|
|
// pDstPredictor Reserved parameter (must be 0).
|
|
// dstPredictorStep Reserved parameter (must be 0).
|
|
// mcType Reserved parameter (must be 0).
|
|
// roundControl Reserved parameter (must be 0).
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
//
|
|
// Notes:
|
|
// These operations are inverse to that performed by correspondent motion
|
|
// compensation functions
|
|
*/
|
|
IPPAPI( IppStatus, ippiGetDiff4x4_8u16s_C1,(
|
|
const Ipp8u* pSrcCur,
|
|
Ipp32s srcCurStep,
|
|
const Ipp8u* pSrcRef,
|
|
Ipp32s srcRefStep,
|
|
Ipp16s* pDstDiff,
|
|
Ipp32s dstDiffStep,
|
|
Ipp16s* pDstPredictor,
|
|
Ipp32s dstPredictorStep,
|
|
Ipp32s mcType,
|
|
Ipp32s roundControl))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiGetDiff16x16B_8u16s_C1
|
|
//
|
|
// Purpose:
|
|
// Evaluates difference between current bi-predicted and mean of two
|
|
// reference blocks of the specified size in accordance with the type of
|
|
// motion compensation.
|
|
//
|
|
// Parameters:
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Step in bytes through the current block (stride1)
|
|
// pSrcRefF Pointer to the forward reference block
|
|
// srcRefStepF Step in bytes through the forward reference block
|
|
// (stride1)
|
|
// mcTypeF Forward motion compensation type
|
|
// pSrcRefB Pointer to the backward reference block
|
|
// srcRefStepB Step in bytes through the backward reference block
|
|
// (stride1)
|
|
// mcTypeB Backward motion compensation type
|
|
// pDstDiff Pointer to the destination block containing the
|
|
// differences between current and reference blocks
|
|
// dstDiffStep Step in bytes through the destination block
|
|
// roundControl Type of rounding for half-pixel approximation;
|
|
// may be 0 or 1
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
//
|
|
// Notes:
|
|
// These operations are inverse to that performed by correspondent motion
|
|
// compensation functions
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiGetDiff16x16B_8u16s_C1, (
|
|
const Ipp8u* pSrcCur,
|
|
Ipp32s srcCurStep,
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcRefStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcRefStepB,
|
|
Ipp32s mcTypeB,
|
|
Ipp16s* pDstDiff,
|
|
Ipp32s dstDiffStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiGetDiff16x8B_8u16s_C1, (
|
|
const Ipp8u* pSrcCur,
|
|
Ipp32s srcCurStep,
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcRefStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcRefStepB,
|
|
Ipp32s mcTypeB,
|
|
Ipp16s* pDstDiff,
|
|
Ipp32s dstDiffStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiGetDiff8x8B_8u16s_C1, (
|
|
const Ipp8u* pSrcCur,
|
|
Ipp32s srcCurStep,
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcRefStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcRefStepB,
|
|
Ipp32s mcTypeB,
|
|
Ipp16s* pDstDiff,
|
|
Ipp32s dstDiffStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiGetDiff8x16B_8u16s_C1, (
|
|
const Ipp8u* pSrcCur,
|
|
Ipp32s srcCurStep,
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcRefStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcRefStepB,
|
|
Ipp32s mcTypeB,
|
|
Ipp16s* pDstDiff,
|
|
Ipp32s dstDiffStep,
|
|
Ipp32s roundControl))
|
|
|
|
IPPAPI(IppStatus, ippiGetDiff8x4B_8u16s_C1, (
|
|
const Ipp8u* pSrcCur,
|
|
Ipp32s srcCurStep,
|
|
const Ipp8u* pSrcRefF,
|
|
Ipp32s srcRefStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pSrcRefB,
|
|
Ipp32s srcRefStepB,
|
|
Ipp32s mcTypeB,
|
|
Ipp16s* pDstDiff,
|
|
Ipp32s dstDiffStep,
|
|
Ipp32s roundControl))
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiGetDiff8x8B_8u16s_C2P2
|
|
// ippiGetDiff8x4B_8u16s_C2P2
|
|
//
|
|
// Purpose:
|
|
// Evaluates difference between current bi-predicted and mean of two
|
|
// reference blocks of the specified size in accordance with the type of
|
|
// motion compensation.
|
|
// Chroma is presented in NV12 format
|
|
//
|
|
// Parameters:
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Step in bytes through the current block (stride1)
|
|
// pSrcRefF Pointer to the forward reference block
|
|
// srcRefStepF Step in bytes through the forward reference block
|
|
// (stride1)
|
|
// mcTypeF Forward motion compensation type
|
|
// pSrcRefB Pointer to the backward reference block
|
|
// srcRefStepB Step in bytes through the backward reference block
|
|
// (stride1)
|
|
// mcTypeB Backward motion compensation type
|
|
// pDstDiffU Pointer to the destination block containing the
|
|
// differences between current and reference blocks U plane
|
|
// dstDiffStepU Step in bytes through the destination block for U plane
|
|
// pDstDiffV Pointer to the destination block containing the
|
|
// differences between current and reference blocks V plane
|
|
// dstDiffStepV Step in bytes through the destination block for V plane
|
|
// roundControl Type of rounding for half-pixel approximation;
|
|
// may be 0 or 1
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
//
|
|
// Notes:
|
|
// These operations are inverse to that performed by correspondent motion
|
|
// compensation functions
|
|
*/
|
|
IPPAPI(IppStatus, ippiGetDiff8x4B_8u16s_C2P2, (const Ipp8u *pSrcCur,Ipp32s srcCurStep,
|
|
const Ipp8u *pSrcRefF,Ipp32s srcRefStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u *pSrcRefB,Ipp32s srcRefStepB,
|
|
Ipp32s mcTypeB,
|
|
Ipp16s *pDstDiffU, Ipp32s dstDiffStepU,
|
|
Ipp16s *pDstDiffV, Ipp32s dstDiffStepV,
|
|
Ipp32s roundControl))
|
|
IPPAPI(IppStatus, ippiGetDiff8x8B_8u16s_C2P2, (const Ipp8u *pSrcCur, Ipp32s srcCurStep,
|
|
const Ipp8u *pSrcRefF,Ipp32s srcRefStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u *pSrcRefB,Ipp32s srcRefStepB,
|
|
Ipp32s mcTypeB,
|
|
Ipp16s *pDstDiffU, Ipp32s dstDiffStepU,
|
|
Ipp16s *pDstDiffV, Ipp32s dstDiffStepV,
|
|
Ipp32s roundControl))
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSAD16x16_8u32s
|
|
//
|
|
// Purpose:
|
|
// Evaluates the sum of absolute difference (SAD) between all elements of
|
|
// the current block and the corresponding elements of the reference block.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
// ippStsStepErr srcCurStep or srcRefStep is less than or equal to 0
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the current block
|
|
// srcStep Step in bytes through the current block
|
|
// pRef Pointer to the reference block
|
|
// refStep Step in bytes through the reference block
|
|
// mcType Type of motion compensation
|
|
// pSAD Pointer to the result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSAD16x16_8u32s, (
|
|
const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
const Ipp8u* pRef,
|
|
Ipp32s refStep,
|
|
Ipp32s* pSAD,
|
|
Ipp32s mcType))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSAD4x4_8u32s
|
|
//
|
|
// Purpose:
|
|
// Evaluates the sum of absolute difference (SAD) between all elements of
|
|
// the current block and the corresponding elements of the reference block.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
// ippStsStepErr srcCurStep or srcRefStep is less than or equal to 0
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the current block
|
|
// srcStep Step in bytes through the current block
|
|
// pRef Pointer to the reference block
|
|
// refStep Step in bytes through the reference block
|
|
// mcType reserved and must be 0.
|
|
// pSAD Pointer to the result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSAD4x4_8u32s,(const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
const Ipp8u* pRef,
|
|
Ipp32s refStep,
|
|
Ipp32s* pSAD,
|
|
Ipp32s mcType ))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// SAD16x16Blocks8x8_8u16u
|
|
//
|
|
// Purpose:
|
|
// Evaluates four partial sums of absolute differences
|
|
// between current and reference 16X16 blocks.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
//
|
|
// 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).
|
|
// pSAD Pointer to array of size 4 to store SAD values.
|
|
// mcType reserved and must be 0.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSAD16x16Blocks8x8_8u16u,(const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
const Ipp8u* pRef,
|
|
Ipp32s refStep,
|
|
Ipp16u* pDstSAD,
|
|
Ipp32s mcType ))
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// SAD16x16Blocks4x4_8u16u
|
|
//
|
|
// Purpose:
|
|
// Evaluates 16 partial sums of absolute differences
|
|
// between current and reference 16X16 blocks.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
//
|
|
// 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).
|
|
// pSAD Pointer to array of size 16 to store SAD values.
|
|
// mcType reserved and must be 0.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSAD16x16Blocks4x4_8u16u, (const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
const Ipp8u* pRef,
|
|
Ipp32s refStep,
|
|
Ipp16u* pDstSAD,
|
|
Ipp32s mcType))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSATD16x16_8u32s_C1R
|
|
// Purpose: Evaluates sum of absolute transformed differences between
|
|
current and reference 16x16 blocks
|
|
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSATD16x16_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSATD16x8_8u32s_C1R
|
|
// Purpose: Evaluates sum of absolute transformed differences between
|
|
current and reference 16x8 blocks
|
|
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSATD16x8_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSATD8x16_8u32s_C1R
|
|
// Purpose: Evaluates sum of absolute transformed differences between
|
|
current and reference 8x16 blocks
|
|
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSATD8x16_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSATD8x8_8u32s_C1R
|
|
// Purpose: Evaluates sum of absolute transformed differences between
|
|
current and reference 8x8 blocks
|
|
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSATD8x8_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSATD8x4_8u32s_C1R
|
|
// Purpose: Evaluates sum of absolute transformed differences between
|
|
current and reference 8x4 blocks
|
|
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSATD8x4_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSATD4x8_8u32s_C1R
|
|
// Purpose: Evaluates sum of absolute transformed differences between
|
|
current and reference 4x8 blocks
|
|
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSATD4x8_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSATD4x4_8u32s_C1R
|
|
// Purpose: Evaluates sum of absolute transformed differences between
|
|
current and reference 4x4 blocks
|
|
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSATD4x4_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSAT8x8D_8u32s_C1R
|
|
// Purpose: Evaluates sum of absolute transformed differences between
|
|
current and reference 8x8 blocks
|
|
|
|
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current 8x8 block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference 8x8 block
|
|
// srcRefStep Width of the reference plane
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSAT8x8D_8u32s_C1R, (
|
|
const Ipp8u* pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u* pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s* pDst))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSAT8x8D_16u32s_C1R
|
|
// Purpose: Evaluates sum of absolute transformed differences between
|
|
current and reference 8x8 blocks
|
|
|
|
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current 8x8 block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference 8x8 block
|
|
// srcRefStep Width of the reference plane
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSAT8x8D_16u32s_C1R, (
|
|
const Ipp16u* pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp16u* pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s* pDst))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSqrDiff16x16_8u32s
|
|
//
|
|
// Purpose:
|
|
// Evaluates the sum of square differences between all the elements of
|
|
// the current block and correspondent elements of the reference block.
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the current block
|
|
// srcStep Step in bytes through the current block
|
|
// pRef Pointer to the reference block
|
|
// refStep Step in bytes through the reference block
|
|
// mcType Type of motion compensation
|
|
// pSqrDiff Pointer to the result
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
// ippStsStepErr srcCurStep or srcRefStep is less than or equal to 0
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSqrDiff16x16_8u32s, (
|
|
const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
const Ipp8u* pRef,
|
|
Ipp32s refStep,
|
|
Ipp32s mcType,
|
|
Ipp32s* pSqrDiff))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSqrDiff16x16B_8u32s
|
|
//
|
|
// Purpose:
|
|
// Evaluates the sum of square differences between all the elements of
|
|
// the current block and the mean of correspondent elements of
|
|
// two reference blocks.
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the current block
|
|
// srcStep Step in bytes through the current block
|
|
// pRefF Pointer to the forward reference block
|
|
// refStepF Step in bytes through the forward reference block
|
|
// pRefB Pointer to the backward reference block
|
|
// refStepB Step in bytes through the backward reference block
|
|
// mcTypeF Forward motion compensation type
|
|
// mcTypeB Backward motion compensation type
|
|
// pSqrDiff Pointer to the result
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
// ippStsStepErr one of step values is less than or equal to 0
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSqrDiff16x16B_8u32s, (
|
|
const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
const Ipp8u* pRefF,
|
|
Ipp32s refStepF,
|
|
Ipp32s mcTypeF,
|
|
const Ipp8u* pRefB,
|
|
Ipp32s refStepB,
|
|
Ipp32s mcTypeB,
|
|
Ipp32s* pSqrDiff))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiVariance16x16_8u32s
|
|
//
|
|
// Purpose:
|
|
// Evaluates the variance of the current block
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the current block
|
|
// srcStep Step through the current block
|
|
// pVar Pointer to the variance
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr pSrc is NULL
|
|
// ippStsStepErr srcStep is less than or equal to 0
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiVariance16x16_8u32s, (
|
|
const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
Ipp32s* pVar))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiVarSum8x8_8u32s
|
|
//
|
|
// Purpose:
|
|
// Evaluates the variance and sum of 8x8 block of unsigned char values
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the source block
|
|
// srcStep Step through the source block (stride1)
|
|
// pVar Pointer to the variance
|
|
// pSum Pointer to the sum value
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr pSrc is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiVarSum8x8_8u32s_C1R, (
|
|
const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
Ipp32s* pVar,
|
|
Ipp32s* pSum))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiVarSum8x8_16s32s
|
|
//
|
|
// Purpose:
|
|
// Evaluates the variance and sum of 8x8 block of short integer values
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the source block
|
|
// srcStep Step through the source block (stride1)
|
|
// pVar Pointer to the variance
|
|
// pSum Pointer to the sum value
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr pSrc is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiVarSum8x8_16s32s_C1R, (
|
|
const Ipp16s* pSrc,
|
|
Ipp32s srcStep,
|
|
Ipp32s* pVar,
|
|
Ipp32s* pSum))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiVarMean8x8_8u32s
|
|
//
|
|
// Purpose:
|
|
// Evaluates the Variance and mean of 8x8 block of unsigned char values
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the source block
|
|
// srcStep Step through the source block (stride1)
|
|
// pVar Pointer to the variance
|
|
// pMean Pointer to the mean value
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr pSrc is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiVarMean8x8_8u32s_C1R, (
|
|
const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
Ipp32s* pVar,
|
|
Ipp32s* pMean))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiVarMean8x8_16s32s
|
|
//
|
|
// Purpose:
|
|
// Evaluates the variance and mean of 8x8 block of short integer values
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the source block
|
|
// srcStep Step through the source block (stride1)
|
|
// pVar Pointer to the variance
|
|
// pMean Pointer to the mean value
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr pSrc is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiVarMean8x8_16s32s_C1R, (
|
|
const Ipp16s* pSrc,
|
|
Ipp32s srcStep,
|
|
Ipp32s* pVar,
|
|
Ipp32s* pMean))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEdgesDetect16x16_8u_C1R
|
|
// ippiEdgesDetect16x16_16u_C1R
|
|
//
|
|
// Purpose:
|
|
// This function detects edges inside 16x16 block:
|
|
// finds pair of neighboring (horizontal and vertical) elements with
|
|
// difference is greater than EdgePelDifference.
|
|
// In the case of number of pairs is greater than EdgePelCount,
|
|
// edges are detected and flag (* pRes) is set to 1.
|
|
// Otherwise, edges aren't detected ((* pRes) is set to 0)
|
|
//
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to 16x16 block in current plan
|
|
// srcStep Step of the current plan, specifying width of the plane in bytes.
|
|
// EdgePelDifference The value for estimation of difference between neighboring elements.
|
|
// EdgePelCount The value for estimation of number of pairs with "big difference"
|
|
// pRes Pointers to output value. (*pRes) is equal 1 in
|
|
// the case of edges are detected and it is equal
|
|
// 0 in the case of edges aren't detected. I
|
|
//
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr one of the input pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEdgesDetect16x16_8u_C1R, (
|
|
const Ipp8u *pSrc,
|
|
Ipp32u srcStep,
|
|
Ipp8u EdgePelDifference,
|
|
Ipp8u EdgePelCount,
|
|
Ipp8u *pRes
|
|
))
|
|
|
|
IPPAPI(IppStatus, ippiEdgesDetect16x16_16u_C1R, (
|
|
const Ipp16u* pSrc,
|
|
Ipp32s srcStep,
|
|
Ipp32s EdgePelDifference,
|
|
Ipp32s EdgePelCount,
|
|
Ipp32s* pRes))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiVarMeanDiff16x16_8u32s_C1R
|
|
//
|
|
// Purpose:
|
|
// Evaluates the variances and means of four 8x8 blocks containing
|
|
// differences between two 16x16 blocks
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the current block 16x16
|
|
// srcStep Step in bytes through the current block
|
|
// pRef Pointer to the reference block 16x16
|
|
// refStep Step in bytes through the reference block
|
|
// pSrcSum Pointer to the sum of pixel values for the current block
|
|
// pVar Pointer to four element array that contains the variances
|
|
// pMean Pointer to four element array that contains the Mean values
|
|
// mcType Type of motion compensation
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr one of the input pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiVarMeanDiff16x16_8u32s_C1R, (
|
|
const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
const Ipp8u* pRef,
|
|
Ipp32s refStep,
|
|
Ipp32s* pSrcSum,
|
|
Ipp32s* pVar,
|
|
Ipp32s* pMean,
|
|
Ipp32s mcType))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiVarMeanDiff16x8_8u32s_C1R
|
|
//
|
|
// Purpose:
|
|
// Evaluates the variances and means of four 8x8 blocks containing
|
|
// differences between two 16x8 blocks
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the current block 16x16
|
|
// srcStep Step in bytes through the current block
|
|
// pRef Pointer to the reference block 16x16
|
|
// refStep Step in bytes through the reference block
|
|
// pSrcSum Pointer to the sum of pixel values for the current block
|
|
// pVar Pointer to four element array that contains the variances
|
|
// pMean Pointer to four element array that contains the Mean values
|
|
// mcType Type of motion compensation
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr one of the input pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiVarMeanDiff16x8_8u32s_C1R, (
|
|
const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
const Ipp8u* pRef,
|
|
Ipp32s refStep,
|
|
Ipp32s* pSrcSum,
|
|
Ipp32s* pVar,
|
|
Ipp32s* pMean,
|
|
Ipp32s mcType))
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSumsDiff16x16Blocks4x4_8u16s_C1, ippiSumsDiff16x16Blocks4x4_8u16s_C1
|
|
//
|
|
// 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.
|
|
// pDiff If it isn't zero, pointer to array that contains a sequence of 4x4
|
|
// residual blocks. The array's filled by function if pDiff isn't null.
|
|
// pSums Pointer to array that contains sums of 4x4 difference blocks coefficients.
|
|
// The array's filled by function.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr one of the input pointers is NULL
|
|
*/
|
|
IPPAPI(IppStatus, ippiSumsDiff16x16Blocks4x4_8u16s_C1,
|
|
(
|
|
const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
const Ipp8u* pPred,
|
|
Ipp32s predStep,
|
|
Ipp16s* pSums,
|
|
Ipp16s* pDiff
|
|
))
|
|
|
|
IPPAPI(IppStatus, ippiSumsDiff8x8Blocks4x4_8u16s_C1,
|
|
(
|
|
const Ipp8u* pSrc,
|
|
Ipp32s srcStep,
|
|
const Ipp8u* pPred,
|
|
Ipp32s predStep,
|
|
Ipp16s* pSums,
|
|
Ipp16s* pDiff
|
|
))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSumsDiff8x8Blocks4x4_8u16s_C2P2
|
|
//
|
|
// Purpose:
|
|
// These functions evaluates difference between current and reference 4x4 blocks and
|
|
// calculates sums of 4x4 residual blocks elements. Clone of ippiSumsDiff8x8Blocks4x4_8u16s_C1,
|
|
// 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 the pointer to the source block ( chrominance part of NV12 plane).
|
|
// 0...UV UV UV UV UV UV UV UV
|
|
// 1...UV UV UV UV ...
|
|
// ...
|
|
// 7...UV UV UV UV UV UV UV UV
|
|
// srcStep - Step of the current source block, specifying width of the plane in bytes.negative step works
|
|
// pPredU - Pointer to reference U block
|
|
// pPredPitchU - Step of the reference U plane, specifying width of the plane in bytes.
|
|
// pPredV - Pointer to reference V block
|
|
// pPredPitchV - Step of the reference V plane, specifying width of the plane in bytes.
|
|
// pDiffU - If it isn't zero, pointer to array that contains a sequence of 4x4 residual blocks. The array's filled by function if pDifUf isn't null.
|
|
// pDCU - Pointer to array that contains sums of 4x4 difference blocks coefficients. The array's filled by function.
|
|
// pDiffV - If it isn't zero, pointer to array that contains a sequence of 4x4 residual blocks. The array's filled by function if pDifUf isn't null.
|
|
// pDCV - Pointer to array that contains sums of 4x4 difference blocks coefficients. The array's filled by function.
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr one of the input pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSumsDiff8x8Blocks4x4_8u16s_C2P2,
|
|
(
|
|
const Ipp8u* pSrcUV,
|
|
Ipp32s srcStep,
|
|
const Ipp8u* pPredU,
|
|
Ipp32s predStepU,
|
|
const Ipp8u* pPredV,
|
|
Ipp32s predStepV,
|
|
Ipp16s* pSumsU,
|
|
Ipp16s* pDiffU,
|
|
Ipp16s* pSumsV,
|
|
Ipp16s* pDiffV
|
|
))
|
|
|
|
/* Quantization Functions */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantIntra_MPEG2_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// Performs quantization on DCT coefficients for intra block in-place with
|
|
// specified quantization matrix according to the MPEG-2 standard.
|
|
// Returns the number of last non-zero coefficient for
|
|
// future considerations. If pointer to inverse quantization matrix is NULL,
|
|
// the default matrix is used
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the block of DCT coefficients
|
|
// QP Quantizer
|
|
// pQPMatrix Pointer to the matrix of inverted quantization
|
|
// coefficients (floating point)
|
|
// pCount Pointer to the position of the last non-zero coefficient
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr pSrcDst is NULL
|
|
// ippStsDivByZeroErr QP is equal to 0
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantIntra_MPEG2_16s_C1I, (
|
|
Ipp16s* pSrcDst,
|
|
Ipp32s QP,
|
|
const Ipp32f* pQPMatrix,
|
|
Ipp32s* pCount))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuant_MPEG2_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// Performs quantization on DCT coefficients for non-intra block
|
|
// in-place with specified quantization matrix according to the
|
|
// MPEG-2 standard. Returns the number of last non-zero coefficient for
|
|
// future considerations. If pointer to inverse quantization matrix is NULL,
|
|
// the default matrix is used
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the block of DCT coefficients
|
|
// QP Quantizer
|
|
// pQPMatrix Pointer to the matrix of inverted quantization
|
|
// coefficients (floating point)
|
|
// pCount Pointer to the position of the last non-zero coefficient
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr pSrcDst is NULL
|
|
// ippStsDivByZeroErr QP is equal to 0
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuant_MPEG2_16s_C1I, (
|
|
Ipp16s* pSrcDst,
|
|
Ipp32s QP,
|
|
const Ipp32f* pQPMatrix,
|
|
Ipp32s* pCount))
|
|
|
|
|
|
|
|
|
|
/* Huffman Encoding Functions */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiCreateRLEncodeTable
|
|
//
|
|
// Purpose:
|
|
// Creates Run-Level Encode Table
|
|
//
|
|
// Parameters:
|
|
// pSrcTable Pointer to the source table
|
|
// ppDstSpec Double pointer to the destination table
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiCreateRLEncodeTable, (
|
|
const Ipp32s* pSrcTable,
|
|
IppVCHuffmanSpec_32s** ppDstSpec))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiPutIntraBlock
|
|
//
|
|
// Purpose:
|
|
// Encodes, rearranges and puts intra block into bitstream
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Double pointer to the current position in the bitstream.
|
|
// pOffset Pointer to offset between the bit pointed by pBitStream and
|
|
// the start of the code
|
|
// pSrcBlock Pointer to the block
|
|
// pDCPred Pointer to the value to be added to the DC coefficient
|
|
// pDCTable Pointer to the table with codes for DC coefficient,
|
|
// that is the first of the DCT coefficients
|
|
// pACTable Pointer to the table with Run-Level codes for
|
|
// AC coefficients, that is all DCT coefficients but the first
|
|
// pScanMatrix Pointer to the scanning matrix
|
|
// EOBLen Length of the block end code
|
|
// EOBCode Value of the block end code
|
|
// count Number of the last non-zero coefficient
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiPutIntraBlock, (
|
|
Ipp32u** ppBitStream,
|
|
int* pOffset,
|
|
Ipp16s* pSrcBlock,
|
|
Ipp32s* pDCPred,
|
|
IppVCHuffmanSpec_32u* pDCTable,
|
|
IppVCHuffmanSpec_32s* pACTable,
|
|
Ipp32s* pScanMatrix,
|
|
Ipp32s EOBLen,
|
|
Ipp32s EOBCode,
|
|
Ipp32s count))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiPutNonIntraBlock
|
|
// Purpose:
|
|
// Encodes, rearranges and puts non-intra block into bitstream
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Double pointer to the current position in the bitstream.
|
|
// pOffset Pointer to offset between the bit pointed by pBitStream and
|
|
// the start of the code
|
|
// pSrcBlock Pointer to the block
|
|
// pACTable Pointer to the table with Run-Level codes for
|
|
// AC coefficients, that is all DCT coefficients but the first
|
|
// pScanMatrix Pointer to the scanning matrix
|
|
// EOBLen Length of the block end code
|
|
// EOBCode Value of the block end code
|
|
// count Number of the last non-zero coefficient
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiPutNonIntraBlock, (
|
|
Ipp32u** pBitStream,
|
|
int* pOffset,
|
|
Ipp16s* pSrcBlock,
|
|
IppVCHuffmanSpec_32s* pACTable,
|
|
Ipp32s* pScanMatrix,
|
|
Ipp32s EOBLen,
|
|
Ipp32s EOBCode,
|
|
Ipp32s count))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Video Data Decoding Functions for DV
|
|
//////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiInitAllocHuffmanTable_DV_32u
|
|
//
|
|
// Purpose:
|
|
// Allocates memory and initializes the table with Run-Level codes for
|
|
// DCT coefficients
|
|
//
|
|
// Parameters:
|
|
// pSrcTable1 Pointer to the source table 1
|
|
// pSrcTable2 Pointer to the source table 2
|
|
// ppHuffTable Double pointer to the destination decoding table
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsMemAllocErr No memory is allocated.
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiInitAllocHuffmanTable_DV_32u, (
|
|
Ipp32s* pSrcTable1,
|
|
Ipp32s* pSrcTable2,
|
|
Ipp32u** ppHuffTable))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiFreeHuffmanTable_DV_32u
|
|
//
|
|
// Purpose:
|
|
// Frees the memory allocated for the VLC table
|
|
//
|
|
// Parameters:
|
|
// pHuffTable Pointer to the decoding table
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr pHuffTable is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiFreeHuffmanTable_DV_32u, (Ipp32u* pHuffTable))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiHuffmanDecodeSegment_DV_8u16s
|
|
//
|
|
// Purpose:
|
|
// Decodes DV video segment, rearranges block
|
|
// elements, multiplies first element by 128.
|
|
//
|
|
// Parameters:
|
|
// pStream Pointer to the bitstream
|
|
// pZigzagTables Pointer to the array of two scanning matrices
|
|
// pHuffTable Pointer to the decoding Huffman Table
|
|
// pBlock Pointer to decoded elements
|
|
// pBlockParam Pointer to the output parameters array [30]
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiHuffmanDecodeSegment_DV_8u16s, (
|
|
const Ipp8u* pStream,
|
|
const Ipp32u* pZigzagTables,
|
|
const Ipp32u* pHuffTable,
|
|
Ipp16s* pBlock,
|
|
Ipp32u* pBlockParam))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiHuffmanDecodeSegmentOnePass_DV_8u16s
|
|
//
|
|
// Purpose:
|
|
// Performs first pass of video segment decoding process. Rearranges block
|
|
// elements, multiplies first element by 128.
|
|
//
|
|
// Parameters:
|
|
// pStream Pointer to the bitstream
|
|
// pZigzagTables Pointer to the array of two scanning matrices
|
|
// pHuffTable Pointer to the decoding Huffman Table
|
|
// pBlock Pointer to decoded elements
|
|
// pBlockParam Pointer to the output parameters array [30]
|
|
// nNumCoeffs Max number of coefficients to extract
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiHuffmanDecodeSegmentOnePass_DV_8u16s, (
|
|
const Ipp8u* pStream,
|
|
const Ipp32u* pZigzagTables,
|
|
const Ipp32u* pHuffTable,
|
|
Ipp16s* pBlock,
|
|
Ipp32u* pBlockParam,
|
|
Ipp32s nNumCoeffs))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiHuffmanDecodeSegment_DV100_8u16s
|
|
//
|
|
// Purpose:
|
|
// Decodes DV100 video segment, rearranges block
|
|
// elements, multiplies first element by 128.
|
|
//
|
|
// Parameters:
|
|
// pStream Pointer to the bitstream
|
|
// pZigzagTable Pointer to the scanning matrix
|
|
// pHuffTable Pointer to the decoding Huffman Table
|
|
// pBlock Pointer to decoded elements
|
|
// pBlockParam Pointer to the output parameters array [40]
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiHuffmanDecodeSegment_DV100_8u16s, (
|
|
const Ipp8u* pStream,
|
|
const Ipp32u* pZigzagTable,
|
|
const Ipp32u* pHuffTable,
|
|
Ipp16s* pBlock,
|
|
Ipp32u* pBlockParam))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantInv_DV_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// Performs inverse quantization on a block
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the block
|
|
// pDequantTable Pointer to the dequantization table
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantInv_DV_16s_C1I, (Ipp16s* pSrcDst, Ipp16s* pDequantTable))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCT2x4x8Inv_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// Performs the inverse DCT for block of type 2
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the block
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr pSrcDst is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCT2x4x8Inv_16s_C1I, (Ipp16s* pSrcDst))
|
|
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Video Data Encoding Functions for DV
|
|
//////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDCT2x4x8Frw_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// Performs DCT for a block of type 2
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to block
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr pSrcDst is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDCT2x4x8Frw_16s_C1I, (Ipp16s* pSrcDst))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiCountZeros8x8_16s_C1
|
|
//
|
|
// Purpose:
|
|
// Evaluates number of zeros in a block
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to 8x8 block
|
|
// pCount Pointer the evaluated number of zeros
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr One of the pointers is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiCountZeros8x8_16s_C1, (Ipp16s* pSrc, Ipp32u* pCount))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Common Functions
|
|
//////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* ////////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiFrameFieldSAD16x16_8u32s_C1R
|
|
// ippiFrameFieldSAD16x16_16s32s_C1R
|
|
// Purpose: compute SAD between Frame and Field lines
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrc Pointer to the 16x16 block
|
|
// srcStep Width of the source plane
|
|
// pFrameSAD Pointer to result of Frame SAD
|
|
// pFieldSAD Pointer to result of Field SAD
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiFrameFieldSAD16x16_8u32s_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp32s* pFrameSAD,
|
|
Ipp32s* pFieldSAD))
|
|
|
|
IPPAPI(IppStatus, ippiFrameFieldSAD16x16_16s32s_C1R, (
|
|
const Ipp16s* pSrc,
|
|
int srcStep,
|
|
Ipp32s* pFrameSAD,
|
|
Ipp32s* pFieldSAD))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSAD16x8_8u32s_C1R
|
|
// Purpose: Computes SAD of two blocks 16x8
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// mcType Interpolate type
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSAD16x8_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst,
|
|
Ipp32s mcType))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSAD8x16_8u32s_C1R
|
|
// Purpose: Computes SAD of two blocks 8x16
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// mcType Reserved and must be 0.
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
|
|
|
|
IPPAPI(IppStatus, ippiSAD8x16_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst,
|
|
Ipp32s mcType))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSAD8x4_8u32s_C1R
|
|
// Purpose: Computes SAD of two blocks 8x4
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// mcType Reserved and must be 0.
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSAD8x4_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst,
|
|
Ipp32s mcType))
|
|
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSAD4x8_8u32s_C1R
|
|
// Purpose: Computes SAD of two blocks 4x8
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// mcType Reserved and must be 0.
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSAD4x8_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst,
|
|
Ipp32s mcType))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSSD8x8_8u32s_C1R
|
|
// Purpose: compute SSD of two blocks 8x8
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// mcType Interpolate type
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSSD8x8_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst,
|
|
Ipp32s mcType))
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////////////////////////
|
|
// Name: ippiSSD4x4_8u32s_C1R
|
|
// Purpose: compute SSD of two blocks 4x4
|
|
// Returns:
|
|
//
|
|
// ippStsNoErr No error
|
|
// ippStsNullPtrErr At least one of the pointers is NULL
|
|
// Arguments:
|
|
//
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width of the current plane
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width of the reference plane
|
|
// mcType Interpolate type
|
|
// pDst Pointer to result
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSSD4x4_8u32s_C1R, (
|
|
const Ipp8u *pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u *pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s *pDst,
|
|
Ipp32s mcType))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiScanFwd_16s_C1
|
|
//
|
|
// Purpose:
|
|
// Performs classical zigzag, alternate-horizontal, or alternate-vertical
|
|
// forward scan on a block.
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to input block (coefficients in the normal order).
|
|
// pDst Pointer to output block (coefficients in the scan order).
|
|
// countNonZero Number of non-zero coefficients in the block. Valid within
|
|
// the range 1 to 64.
|
|
// scan Type of the scan, takes one of the following values:
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
|
|
// IPPVC_SCAN_VERTICAL - alternate-vertical scan
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsOutOfRangeErr Indicates an error condition if countNonZero is out
|
|
// of the range [1, 64].
|
|
// Notes:
|
|
*/
|
|
IPPAPI(IppStatus, ippiScanFwd_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp16s* pDst,
|
|
int countNonZero,
|
|
int scan))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiScanInv_16s_C1
|
|
//
|
|
// Purpose:
|
|
// Performs classical zigzag, alternate-horizontal, or alternate-vertical
|
|
// inverse scan on a block stored in a compact buffer.
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to input block (coefficients in the scan order).
|
|
// pDst Pointer to output block (coefficients in the normal order).
|
|
// indxLastNonZero Index of the last non-zero coefficient. Valid within the
|
|
// range 0 to 63.
|
|
// scan Type of the scan, takes one of the following values:
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
|
|
// IPPVC_SCAN_VERTICAL - alternate-vertical scan
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsOutOfRangeErr Indicates an error condition if indxLastNonZero is
|
|
// out of the range [0, 63].
|
|
// Notes:
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiScanInv_16s_C1, (
|
|
const Ipp16s* pSrc,
|
|
Ipp16s* pDst,
|
|
int indxLastNonZero,
|
|
int scan))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSAD8x8_8u32s_C1R
|
|
//
|
|
// Purpose:
|
|
// Computes SAD.
|
|
//
|
|
// Parameters:
|
|
// pSrcCur Pointer to the current block
|
|
// srcCurStep Width in bytes of the current plane.
|
|
// pSrcRef Pointer to the reference block
|
|
// srcRefStep Width in bytes of the reference plane.
|
|
// mcType Type of motion compensation
|
|
// pDst Pointer to the output value
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSAD8x8_8u32s_C1R, (
|
|
const Ipp8u* pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u* pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s* pDst,
|
|
Ipp32s mcType))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSAD8x8_8u32s_C2R
|
|
//
|
|
// Purpose:
|
|
// Computes SAD for chrominance part of NV12 plane.
|
|
//
|
|
// Parameters:
|
|
// pSrcCur - the pointer to the current 8x8 block
|
|
// srcCurStep - Step of the current block, specifying width of the plane in bytes..
|
|
// pSrcRef - the pointer to the reference 8x8 block.
|
|
// srcRefStep - Step of the reference block, specifying width of the plane in bytes.
|
|
// pDstU - pointer to return value - calculated SAD for U(Cb).
|
|
// pDstV - pointer to return value - calculated SAD for V(Cr).
|
|
// mcType - type of motion compensation - IPPVC_MC_APX.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSAD8x8_8u32s_C2R, (
|
|
const Ipp8u* pSrcCur,
|
|
int srcCurStep,
|
|
const Ipp8u* pSrcRef,
|
|
int srcRefStep,
|
|
Ipp32s* pDstU,
|
|
Ipp32s* pDstV,
|
|
Ipp32s mcType))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiMeanAbsDev16x16_8u32s_C1R
|
|
// ippiMeanAbsDev8x8_8u32s_C1R
|
|
//
|
|
// Purpose:
|
|
// Computes mean absolute dev = sum(|Bij-M|).
|
|
//
|
|
// Parameters:
|
|
// pSrcCur Pointer to the block 16x16 or 8x8.
|
|
// srcStep Width in bytes of the source plane.
|
|
// pDst Pointer to the deviation value.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiMeanAbsDev16x16_8u32s_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp32s* pDst))
|
|
|
|
IPPAPI(IppStatus, ippiMeanAbsDev8x8_8u32s_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp32s* pDst))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSub8x8_16s8u_C1R
|
|
// ippiSub16x16_16s8u_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
|
|
// pSrcDst Pointer to the destination block.
|
|
// srcDstStep Step in bytes through the destination plane
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one input pointer is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSub8x8_8u16s_C1R, (
|
|
const Ipp8u* pSrc1,
|
|
int src1Step,
|
|
const Ipp8u* pSrc2,
|
|
int src2Step,
|
|
Ipp16s* pDst,
|
|
int dstStep))
|
|
|
|
IPPAPI(IppStatus, ippiSub16x16_8u16s_C1R, (
|
|
const Ipp8u* pSrc1,
|
|
int src1Step,
|
|
const Ipp8u* pSrc2,
|
|
int src2Step,
|
|
Ipp16s* pDst,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSubSAD8x8_16s8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Subtract two blocks and store the result in the third block and
|
|
// computes a SAD
|
|
//
|
|
// 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
|
|
// pSAD Pointer to the result of SAD
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one input pointer is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSubSAD8x8_8u16s_C1R, (
|
|
const Ipp8u* pSrc1,
|
|
int src1Step,
|
|
const Ipp8u* pSrc2,
|
|
int src2Step,
|
|
Ipp16s* pDst,
|
|
int dstStep,
|
|
Ipp32s* pSAD))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiCopy8x8_8u_C1R
|
|
// ippiCopy16x16_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Copy fixed sizes blocks
|
|
//
|
|
// 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, ippiCopy8x8_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep))
|
|
|
|
IPPAPI(IppStatus, ippiCopy16x16_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiAverage8x8_8u_C1IR
|
|
// ippiAverage16x16_8u_C1IR
|
|
//
|
|
// Purpose:
|
|
// Performs averaging of two blocks with rounding.
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the first source block.
|
|
// srcStep Step in bytes through the first source plane.
|
|
// pSrcDst Pointer to the second source/destination block.
|
|
// srcDstStep Step in bytes through the second plane.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one input pointer is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiAverage8x8_8u_C1IR, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pSrcDst,
|
|
int srcDstStep))
|
|
|
|
IPPAPI(IppStatus, ippiAverage16x16_8u_C1IR, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pSrcDst,
|
|
int srcDstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiAverage8x8_8u_C1R
|
|
// ippiAverage16x16_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs averaging of two blocks with rounding.
|
|
//
|
|
// 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 second plane.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one input pointer is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiAverage8x8_8u_C1R, (
|
|
const Ipp8u* pSrc1,
|
|
int src1Step,
|
|
const Ipp8u* pSrc2,
|
|
int src2Step,
|
|
Ipp8u* pDst,
|
|
int dstStep))
|
|
|
|
IPPAPI(IppStatus, ippiAverage16x16_8u_C1R, (
|
|
const Ipp8u* pSrc1,
|
|
int src1Step,
|
|
const Ipp8u* pSrc2,
|
|
int src2Step,
|
|
Ipp8u* pDst,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiCopy8x4HP_8u_C1R
|
|
// ippiCopy8x8HP_8u_C1R
|
|
// ippiCopy16x8HP_8u_C1R
|
|
// ippiCopy16x16HP_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Copy fixed sizes blocks with half-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 half-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, ippiCopy8x4HP_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
int acc,
|
|
int rounding))
|
|
|
|
IPPAPI(IppStatus, ippiCopy8x8HP_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
int acc,
|
|
int rounding))
|
|
|
|
IPPAPI(IppStatus, ippiCopy16x8HP_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
int acc,
|
|
int rounding))
|
|
|
|
IPPAPI(IppStatus, ippiCopy16x16HP_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
int acc,
|
|
int rounding))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiInterpolateAverage8x4_8u_C1IR
|
|
// ippiInterpolateAverage8x8_8u_C1IR
|
|
// ippiInterpolateAverage16x8_8u_C1IR
|
|
// ippiInterpolateAverage16x16_8u_C1IR
|
|
//
|
|
// Purpose:
|
|
// Interpolate source block according to half-pixel offset and
|
|
// average the result with destination block
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the source block.
|
|
// srcStep Step in bytes through the source plane.
|
|
// pSrcDst Pointer to the destination block.
|
|
// srcDstStep Step in bytes through the destination plane.
|
|
// acc Parameter that determines half-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, ippiInterpolateAverage8x4_8u_C1IR, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pSrcDst,
|
|
int srcDstStep,
|
|
int acc,
|
|
int rounding))
|
|
|
|
IPPAPI(IppStatus, ippiInterpolateAverage8x8_8u_C1IR, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
int acc,
|
|
int rounding))
|
|
|
|
IPPAPI(IppStatus, ippiInterpolateAverage16x8_8u_C1IR, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
int acc,
|
|
int rounding))
|
|
|
|
IPPAPI(IppStatus, ippiInterpolateAverage16x16_8u_C1IR, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
int acc,
|
|
int rounding))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiAdd8x8_16s8u_C1IRS
|
|
//
|
|
// Purpose:
|
|
// Add two blocks with saturation
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the source block.
|
|
// srcStep Step in bytes through the source plane
|
|
// pSrcDst Pointer to the second source/destination block.
|
|
// srcDstStep Step in bytes through the destination plane
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one input pointer is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiAdd8x8_16s8u_C1IRS, (
|
|
const Ipp16s* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pSrcDst,
|
|
int srcDstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiAdd8x8HP_16s8u_C1RS
|
|
//
|
|
// Purpose:
|
|
// Add interpolated with half-pixel accuracy prediction to difference with
|
|
// saturation
|
|
//
|
|
// Parameters:
|
|
// pSrc1 Pointer to the 16s source block.
|
|
// src1Step Step in bytes through the first source plane
|
|
// pSrc2 Pointer to the 8u 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, ippiAdd8x8HP_16s8u_C1RS, (
|
|
const Ipp16s* pSrc1,
|
|
int src1Step,
|
|
Ipp8u* pSrc2,
|
|
int src2Step,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
int acc,
|
|
int rounding))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiAddC8x8_16s8u_C1IR
|
|
//
|
|
// Purpose:
|
|
// Adds a constant to 8x8 block with saturation
|
|
//
|
|
// Parameters:
|
|
// value The constant value to add to block.
|
|
// pSrcDst Pointer to the source/destination block.
|
|
// srcDstStep Step in bytes through the destination block.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one input pointer is NULL
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiAddC8x8_16s8u_C1IR, (
|
|
Ipp16s value,
|
|
Ipp8u* pSrcDst,
|
|
int srcDstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// H.261 Functions
|
|
//////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiFilter8x8_H261_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs "loop" filtering on one block as specified in
|
|
// "ITU-T Recommendation H.261", subclause 3.2.3.
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the origin of the source block.
|
|
// srcStep Width in bytes of the source image plane.
|
|
// pDst Pointer to the origin of the destination block.
|
|
// dstStep Width in bytes of the destination image plane.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
*/
|
|
IPPAPI(IppStatus, ippiFilter8x8_H261_8u_C1R, (
|
|
Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCoeffsIntra_H261_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs decoding and, optionally, inverse scan of quantized DCT
|
|
// coefficients (DC and AC) for one Intra coded block. DC fixed length and
|
|
// AC VLC decoding processes are specified in "ITU-T Recommendation H.263,
|
|
// subclause 4.2.4.1".
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream
|
|
// buffer, updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream. Valid within the range [0, 7],
|
|
// updated by the function.
|
|
// pCoef Pointer to the output coefficients.
|
|
// pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
|
|
// the scanning order. If an error is detected while
|
|
// decoding a coefficient, the index of the last decoded
|
|
// coefficient is returned in *pIndxLastNonZero.
|
|
// *pIndxLastNonZero is set to -1 if there are no correctly
|
|
// decoded coefficients in the block.
|
|
// scan Type of the inverse scan, takes one of the following values:
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_NONE, indicating that no inverse scan is
|
|
// performed.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCErr Illegal VL code is detected through the stream
|
|
// processing.
|
|
*/
|
|
IPPAPI(IppStatus, ippiDecodeCoeffsIntra_H261_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoef,
|
|
int* pIndxLastNonZero,
|
|
int scan))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCoeffsInter_H261_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs decoding and, optionally, inverse scan of quantized DCT
|
|
// coefficients for one Inter coded block. Inter DCT VLC decoding process
|
|
// is specified in "ITU-T Recommendation H.261, subclause 4.2.4.1".
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream
|
|
// buffer, updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream. Valid within the range [0, 7],
|
|
// updated by the function.
|
|
// pCoef Pointer to the output coefficients.
|
|
// pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
|
|
// the scanning order. If an error is detected while
|
|
// decoding a coefficient, the index of the last decoded
|
|
// coefficient is returned in *pIndxLastNonZero.
|
|
// *pIndxLastNonZero is set to -1 if there are no correctly
|
|
// decoded coefficients in the block.
|
|
// scan Type of the inverse scan, takes one of the following values:
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_NONE, indicating that no inverse scan is
|
|
// performed.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCErr Illegal VL code is detected through the stream
|
|
// processing.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCoeffsInter_H261_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoef,
|
|
int* pIndxLastNonZero,
|
|
int scan))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiReconstructCoeffsIntra_H261_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs decoding, dequantization and inverse scan of
|
|
// DCT coefficients for one intra coded block.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream buffer,
|
|
// updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by *ppBitStream.
|
|
// Valid within the range [0, 7], updated by the function.
|
|
// pCoef Pointer to the output coefficients.
|
|
// pIndxLastNonZero Pointer to the index of the last non-zero coefficient in the scanning order.
|
|
// If an error is detected while decoding a coefficient, the index of the
|
|
// last decoded coefficient is returned in *pIndxLastNonZero. *pIndxLastNonZero
|
|
// is set to -1 if there are no correctly decoded coefficients in the block.
|
|
// QP Quantization parameter.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsQPErr QP is out of the range [1, 31].
|
|
// ippStsVLCErr Illegal VL code is detected through the stream
|
|
// processing.
|
|
*/
|
|
IPPAPI(IppStatus, ippiReconstructCoeffsIntra_H261_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoef,
|
|
int* pIndxLastNonZero,
|
|
int QP))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiReconstructCoeffsInter_H261_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs decoding, dequantization and inverse scan of
|
|
// DCT coefficients for one inter coded block.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream buffer,
|
|
// updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by *ppBitStream.
|
|
// Valid within the range [0, 7], updated by the function.
|
|
// pCoef Pointer to the output coefficients.
|
|
// pIndxLastNonZero Pointer to the index of the last non-zero coefficient in the scanning order.
|
|
// If an error is detected while decoding a coefficient, the index of the
|
|
// last decoded coefficient is returned in *pIndxLastNonZero. *pIndxLastNonZero
|
|
// is set to -1 if there are no correctly decoded coefficients in the block.
|
|
// QP Quantization parameter.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsQPErr QP is out of the range [1, 31].
|
|
// ippStsVLCErr Illegal VL code is detected through the stream
|
|
// processing.
|
|
*/
|
|
IPPAPI(IppStatus, ippiReconstructCoeffsInter_H261_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoef,
|
|
int* pIndxLastNonZero,
|
|
int QP))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeCoeffsIntra_H261_16s1u
|
|
//
|
|
// Purpose:
|
|
// Performs encoding of quantized DCT coefficients (DC and AC) in a scan
|
|
// order for one Intra coded block, and puts the codes into the bitstream.
|
|
// DC fixed length and AC VLC encoding processes are specified in "ITU-T
|
|
// Recommendation H.261, subclause 4.2.4.1".
|
|
//
|
|
// Parameters:
|
|
// pQCoef Pointer to the array of quantized DCT coefficients.
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream
|
|
// buffer, updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream. Valid within the range [0, 7],
|
|
// updated by the function.
|
|
// countNonZero Number of non-zero coefficients in the block.
|
|
// Valid within the range [1, 64].
|
|
// scan Type of the scan to be performed on the coefficients before
|
|
// encoding, takes one of the following values:
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_NONE, indicating that no scan is to be
|
|
// performed (the input coefficients are already in the scan
|
|
// order).
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsOutOfRangeErr countNonZero is out of the range [1, 64].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeCoeffsIntra_H261_16s1u, (
|
|
Ipp16s* pQCoef,
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
int countNonZero,
|
|
int scan))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeCoeffsInter_H261_16s1u
|
|
//
|
|
// Purpose:
|
|
// Performs encoding of quantized DCT coefficients in a scan order for one
|
|
// Inter coded block, and puts the codes into the bitstream. The encoding
|
|
// process is specified in "ITU-T Recommendation H.261, subclause 4.2.4.1".
|
|
//
|
|
// Parameters:
|
|
// pQCoef Pointer to the array of quantized DCT coefficients.
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream
|
|
// buffer, updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream. Valid within the range [0, 7],
|
|
// updated by the function.
|
|
// countNonZero Number of non-zero coefficients in the block.
|
|
// Valid within the range [1, 64].
|
|
// scan Type of the scan to be performed on the coefficients before
|
|
// encoding, takes one of the following values:
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_NONE, indicating that no scan is to be
|
|
// performed (the input coefficients are already in the scan
|
|
// order).
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsOutOfRangeErr countNonZero is out of the range [1, 64].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeCoeffsInter_H261_16s1u, (
|
|
Ipp16s* pQCoef,
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
int countNonZero,
|
|
int scan))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// H.263 Functions
|
|
//////////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeDCIntra_H263_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs fixed length decoding of the DC coefficient for one Intra coded
|
|
// block, as specified in "ITU-T Recommendation H.263, subclause 5.4.1."
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream
|
|
// buffer, updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream. Valid within the range [0, 7],
|
|
// updated by the function.
|
|
// pDC Pointer to the output coefficient.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCErr Illegal code is detected through the stream
|
|
// processing.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeDCIntra_H263_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pDC))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCoeffsIntra_H263_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs decoding and, optionally, inverse scan of quantized DCT
|
|
// coefficients for one Intra coded block. Intra AC VLC decoding process
|
|
// is specified in "ITU-T Recommendation H.263, subclause 5.4.2", and is
|
|
// modified as specified in the Recommendation, Annex T, clause T.4, when
|
|
// Modified Quantization mode is in use. When in Advanced Intra Coding
|
|
// mode, VLC Table I.2 from Annex I of the Recommendation is used for all
|
|
// Intra DC and Intra AC coefficients, otherwise Table 16 from the
|
|
// Recommendation is used to decode AC coefficients (starting from
|
|
// pCoef[1]) only.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream
|
|
// buffer, updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream. Valid within the range [0, 7],
|
|
// updated by the function.
|
|
// pCoef Pointer to the output coefficients.
|
|
// pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
|
|
// the scanning order. If an error is detected while
|
|
// decoding a coefficient, the index of the last decoded
|
|
// coefficient is returned in *pIndxLastNonZero.
|
|
// If there are no correctly decoded coefficients in the
|
|
// block, *pIndxLastNonZero is set to -1 when in Advanced
|
|
// Intra Coding mode, and to 0 otherwise.
|
|
// advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
|
|
// mode is in use, equal to 0 otherwise.
|
|
// modQuantFlag Flag equal to a non-zero value when Modified Quantization
|
|
// mode is in use, equal to 0 otherwise.
|
|
// scan Type of the inverse scan, takes one of the following values:
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
|
|
// IPPVC_SCAN_VERTICAL - alternate-vertical scan,
|
|
// IPPVC_SCAN_NONE, indicating that no inverse scan is
|
|
// performed.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCErr Illegal VL code is detected through the stream
|
|
// processing.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCoeffsIntra_H263_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoef,
|
|
int* pIndxLastNonZero,
|
|
int advIntraFlag,
|
|
int modQuantFlag,
|
|
int scan))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCoeffsInter_H263_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs decoding and, optionally, inverse scan of quantized DCT
|
|
// coefficients for one Inter coded block. Inter DCT VLC decoding process
|
|
// is specified in "ITU-T Recommendation H.263, subclause 5.4.2", and is
|
|
// modified as specified in the Recommendation, Annex T, clause T.4, when
|
|
// Modified Quantization mode is in use.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream
|
|
// buffer, updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream. Valid within the range [0, 7],
|
|
// updated by the function.
|
|
// pCoef Pointer to the output coefficients.
|
|
// pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
|
|
// the scanning order. If an error is detected while
|
|
// decoding a coefficient, the index of the last decoded
|
|
// coefficient is returned in *pIndxLastNonZero.
|
|
// *pIndxLastNonZero is set to -1 if there are no correctly
|
|
// decoded coefficients in the block.
|
|
// modQuantFlag Flag equal to a non-zero value when Modified Quantization
|
|
// mode is in use, equal to 0 otherwise.
|
|
// scan Type of the inverse scan, takes one of the following values:
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_NONE, indicating that no inverse scan is
|
|
// performed.
|
|
//
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCErr Illegal VL code is detected through the stream
|
|
// processing.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCoeffsInter_H263_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoef,
|
|
int* pIndxLastNonZero,
|
|
int modQuantFlag,
|
|
int scan))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantInvIntra_H263_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// This function performs inverse quantization on intra coded block.
|
|
// When (advIntraFlag == 0 && modQuantFlag == 0), the output coefficients
|
|
// other than pSrcDst[0] are saturated to lie in the range [-2048; 2047].
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the decoded DCT coefficient of the current
|
|
// block
|
|
// QP Quantization parameter.
|
|
// indxLastNonZero Index of the last non-zero coefficient, should be set
|
|
// to 63 if not known.
|
|
// advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
|
|
// mode is in use, equal to 0 otherwise.
|
|
// modQuantFlag Flag equal to a non-zero value when Modified Quantization
|
|
// mode is in use, equal to 0 otherwise.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one input pointer is NULL
|
|
// ippStsQPErr QP is out of the range [1, 31].
|
|
// ippStsOutOfRangeErr indxLastNonZero is negative.
|
|
//
|
|
// NOTE
|
|
// The function can be applied to a buffer of arbitrary size (indxLastNonZero
|
|
// can be any positive number), and can thus be used, for example, to process
|
|
// multiple blocks in one call. (In this case for any Intra block following
|
|
// the first one the Intra DC should be processed separately, if not in
|
|
// Advanced Intra mode).
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantInvIntra_H263_16s_C1I, (
|
|
Ipp16s* pSrcDst,
|
|
int indxLastNonZero,
|
|
int QP,
|
|
int advIntraFlag,
|
|
int modQuantFlag))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantInvInter_H263_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// This function performs inverse quantization on intra coded block.
|
|
// When (advIntraFlag == 0 && modQuantFlag == 0), the output coefficients
|
|
// other than pSrcDst[0] are saturated to lie in the range [-2048; 2047].
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the decoded DCT coefficient of the current
|
|
// block
|
|
// QP Quantization parameter.
|
|
// indxLastNonZero Index of the last non-zero coefficient, should be set
|
|
// to 63 if not known.
|
|
// modQuantFlag Flag equal to a non-zero value when Modified Quantization
|
|
// mode is in use, equal to 0 otherwise.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one input pointer is NULL
|
|
// ippStsQPErr QP is out of the range [1, 31]
|
|
// ippStsOutOfRangeErr indxLastNonZero is negative.
|
|
//
|
|
// NOTE
|
|
// The function can be applied to a buffer of arbitrary size (indxLastNonZero
|
|
// can be any positive number), and can thus be used, for example, to process
|
|
// multiple blocks in one call.
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantInvInter_H263_16s_C1I, (
|
|
Ipp16s* pSrcDst,
|
|
int indxLastNonZero,
|
|
int QP,
|
|
int modQuantFlag))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiAddBackPredPB_H263_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Calculates backward prediction for a B-block of a PB-frame and adds it
|
|
// to the block, previously reconstructed with forward prediction. All the
|
|
// operations are restricted to the bidirectionally-predicted part of the
|
|
// B-block, the area size is defined by srcRoiSize. The backward prediction
|
|
// is performed with pixel accuracy defined by acc, the sum of the forward
|
|
// and backward predictions for every pixel within srcRoiSize is divided
|
|
// by 2 (division by truncation). The bidirectional prediction procedure
|
|
// is specified in "ITU-T Recommendation H.263, Annex G, clause G.5".
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the origin of the source image (P-macroblock)
|
|
// region of interest (ROI).
|
|
// srcStep Width in bytes of the source image plane.
|
|
// srcRoiSize Size of the source ROI.
|
|
// pSrcDst Pointer to the origin of the source-destination image ROI
|
|
// (bidirectionally-predicted part of the block).
|
|
// srcDstStep Width in bytes of the source-destination image plane.
|
|
// acc Pixel accuracy for backward prediction: bit 0 (the least
|
|
// significant bit) contains the horizontal half-pixel offset,
|
|
// bit 1 - the vertical offset.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr The pointer is NULL.
|
|
// ippStsSizeErr srcRoiSize has a field with zero or negative value.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiAddBackPredPB_H263_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp8u* pSrcDst,
|
|
int srcDstStep,
|
|
int acc))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiResample_H263_8u_P3R
|
|
//
|
|
// Purpose:
|
|
// Resamples a YCbCr picture as specified in "ITU-T Recommendation H.263,
|
|
// Annex P". The destination picture region of interest (ROI) is mapped
|
|
// onto the source picture ROI as defined by warpParams, the pixels falling
|
|
// outside the source picture are treated according to fillMode.
|
|
//
|
|
// Parameters:
|
|
// pSrcY Pointer to the origin of the source image ROI in the
|
|
// luminance plane.
|
|
// srcYStep Width in bytes of the source image luminance (Y) plane.
|
|
// yRoiSize Size of the source and destination ROI in the luminance plane.
|
|
// pSrcCb Pointer to the origin of the source ROI in Cb chrominance
|
|
// plane.
|
|
// srcCbStep Width in bytes of the source image Cb chrominance plane.
|
|
// pSrcCr Pointer to the origin of the source ROI in Cr chrominance
|
|
// plane.
|
|
// srcCrStep Width in bytes of the source image Cr chrominance plane.
|
|
// pDstY Pointer to the origin of the destination image ROI in the
|
|
// luminance plane.
|
|
// dstYStep Width in bytes of the destination image luminance plane.
|
|
// pDstCb Pointer to the origin of the destination ROI in Cb
|
|
// chrominance plane.
|
|
// dstCbStep Width in bytes of the destination image Cb chrominance plane.
|
|
// pDstCr Pointer to the origin of the destination ROI in Cr
|
|
// chrominance plane.
|
|
// dstCrStep Width in bytes of the destination image Cr chrominance plane.
|
|
// warpParams Array of warping parameters - 4 pairs of motion vectors,
|
|
// describing, in the order they are stored in the array, how the
|
|
// upper left, upper right, lower left, and lower right corners
|
|
// of the destination ROI are mapped onto the source image.
|
|
// wda Warping displacement accuracy flag, if set to 0, pixel
|
|
// displacements are quantized to half-pixel accuracy, otherwise -
|
|
// to 1/16-pixel accuracy.
|
|
// fillMode Flag that defines the fill-mode action to be taken for the
|
|
// values of the source pixels for which the calculated location
|
|
// in the source image lies outside of the source image ROI.
|
|
// Takes one of the following values:
|
|
// 0, indicating color fill mode, the "outside" Y, Cb and Cr
|
|
// pixel values are set to fillColor[0], fillColor[1], and
|
|
// fillColor[2], respectively.
|
|
// 1 - black fill mode, the "outside" pixel values are set as follows:
|
|
// Y = 16, Cb = Cr = 128.
|
|
// 2 - gray fill mode, the "outside" pixel values are all set to 128.
|
|
// 3 - clip fill mode, the "outside" pixel values are extrapolated
|
|
// from the values of pixels at the ROI border, as specified in
|
|
// "ITU-T Recommendation H.263, Annex D".
|
|
// fillColor Array of fill color values used in color fill mode.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsSizeErr yRoiSize has a field which is odd or less than 4.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiResample_H263_8u_P3R, (
|
|
const Ipp8u* pSrcY,
|
|
int srcYStep,
|
|
IppiSize ySrcRoiSize,
|
|
const Ipp8u* pSrcCb,
|
|
int srcCbStep,
|
|
const Ipp8u* pSrcCr,
|
|
int srcCrStep,
|
|
Ipp8u* pDstY,
|
|
int dstYStep,
|
|
IppiSize yDstRoiSize,
|
|
Ipp8u* pDstCb,
|
|
int dstCbStep,
|
|
Ipp8u* pDstCr,
|
|
int dstCrStep,
|
|
IppMotionVector warpParams[4],
|
|
int wda,
|
|
int rounding,
|
|
int fillMode,
|
|
int fillColor[3]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiUpsampleFour_H263_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs factor-of-4 picture upsampling, as specified in
|
|
// "ITU-T Recommendation H.263, Annex P, subclause P.5.1".
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the origin of the source image region
|
|
// of interest (ROI).
|
|
// srcStep Width in bytes of the source image plane.
|
|
// srcRoiSize Size of the source ROI.
|
|
// pDst Pointer to the origin of the destination image ROI.
|
|
// dstStep Width in bytes of the destination image plane.
|
|
// rounding Rounding value used in pixel interpolation,
|
|
// can be 0 or 1.
|
|
// fillColor Fill color value used for the source pixels for which
|
|
// the calculated location in the source image lies outside
|
|
// of the source image ROI. When negative, "clip" fill-mode
|
|
// action is employed - the "outside" pixel values are
|
|
// extrapolated from the values of pixels at the ROI border,
|
|
// as specified in "ITU-T Recommendation H.263, Annex D".
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsSizeErr srcRoiSize has a field which is odd or less than 4.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiUpsampleFour_H263_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
int rounding,
|
|
int fillColor))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDownsampleFour_H263_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs factor-of-4 picture downsampling, as specified in
|
|
// "ITU-T Recommendation H.263, Annex P, subclause P.5.2".
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the origin of the source image region
|
|
// of interest (ROI).
|
|
// srcStep Width in bytes of the source image plane.
|
|
// srcRoiSize Size of the source ROI.
|
|
// pDst Pointer to the origin of the destination image ROI.
|
|
// dstStep Width in bytes of the destination image plane.
|
|
// rounding Rounding value used in pixel interpolation,
|
|
// can be 0 or 1.
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsSizeErr srcRoiSize has a field with zero or negative value.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDownsampleFour_H263_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
int rounding))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiSpatialInterpolation_H263_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs picture interpolation for 1-D or 2-D spatial scalability, as
|
|
// specified in "ITU-T Recommendation H.263, Annex O, clause O.6".
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the origin of the source image region
|
|
// of interest (ROI).
|
|
// srcStep Width in bytes of the source image plane.
|
|
// srcRoiSize Size of the source ROI.
|
|
// pDst Pointer to the origin of the destination image ROI.
|
|
// dstStep Width in bytes of the destination image plane.
|
|
// interpType Interpolation type, takes one of the following values:
|
|
// IPPVC_INTERP_HORIZONTAL, IPPVC_INTERP_VERTICAL, or
|
|
// IPPVC_INTERP_2D, indicating one-dimensional (1-D)
|
|
// horizontal, 1-D vertical, and 2-D interpolation,
|
|
// respectively.
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsSizeErr srcRoiSize has a field which is odd or less than 4.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiSpatialInterpolation_H263_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
IppiSize srcRoiSize,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
int interpType))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiUpsampleFour8x8_H263_16s_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs factor-of-4 upsampling of an 8x8 source block to a
|
|
// 16x16 destination block, as specified in
|
|
// "ITU-T Recommendation H.263, Annex Q, clause Q.6".
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the origin of the source 8x8 block.
|
|
// srcStep Width in bytes of the source image plane.
|
|
// pDst Pointer to the origin of the destination 16x16 block.
|
|
// dstStep Width in bytes of the destination image plane.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiUpsampleFour8x8_H263_16s_C1R, (
|
|
const Ipp16s* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDst,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDownsampleFour16x16_H263_16s_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs factor-of-4 downsampling of a 16x16 source block to an
|
|
// 8x8 destination block to be applied for the block encoding in
|
|
// Reduced-Resolution Update mode specified in "ITU-T Recommendation H.263,
|
|
// Annex Q.
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the origin of the source 16x16 block.
|
|
// srcStep Width in bytes of the source image plane.
|
|
// pDst Pointer to the origin of the destination 8x8 block.
|
|
// dstStep Width in bytes of the destination image plane.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDownsampleFour16x16_H263_16s_C1R, (
|
|
const Ipp16s* pSrc,
|
|
int srcStep,
|
|
Ipp16s* pDst,
|
|
int dstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiFilterDeblocking8x8HorEdge_H263_8u_C1IR
|
|
// ippiFilterDeblocking8x8VerEdge_H263_8u_C1IR
|
|
//
|
|
// Purpose:
|
|
// Perform deblocking filtering on bordering edges, horizontal and
|
|
// vertical respectively, of two adjacent 8x8 blocks, as specified in
|
|
// "ITU-T Recommendation H.263, Annex J, clause J.3"
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the first pixel of lower (HorEdge) or
|
|
// right (VerEdge) block.
|
|
// srcDstStep Width in bytes of the source and destination plane.
|
|
// QP Quantization parameter.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr pSrcDst pointer is NULL.
|
|
// ippStsQPErr QP is out of the range [1, 31].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiFilterDeblocking8x8HorEdge_H263_8u_C1IR, (
|
|
Ipp8u* pSrcDst,
|
|
int srcDstStep,
|
|
int QP))
|
|
|
|
IPPAPI(IppStatus, ippiFilterDeblocking8x8VerEdge_H263_8u_C1IR, (
|
|
Ipp8u* pSrcDst,
|
|
int srcDstStep,
|
|
int QP))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiFilterDeblocking16x16HorEdge_H263_8u_C1IR
|
|
// ippiFilterDeblocking16x16VerEdge_H263_8u_C1IR
|
|
//
|
|
// Purpose:
|
|
// Perform deblocking filtering on bordering edges, horizontal and
|
|
// vertical respectively, of two adjacent 16x16 blocks, as specified in
|
|
// "ITU-T Recommendation H.263, Annex Q, subclause Q.7.2"
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the first pixel of lower (HorEdge) or
|
|
// right (VerEdge) block.
|
|
// srcDstStep Width in bytes of the source and destination plane.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr pSrcDst pointer is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiFilterDeblocking16x16HorEdge_H263_8u_C1IR, (
|
|
Ipp8u* pSrcDst,
|
|
int srcDstStep))
|
|
|
|
IPPAPI(IppStatus, ippiFilterDeblocking16x16VerEdge_H263_8u_C1IR, (
|
|
Ipp8u* pSrcDst,
|
|
int srcDstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiFilterBlockBoundaryHorEdge_H263_8u_C1IR
|
|
// ippiFilterBlockBoundaryVerEdge_H263_8u_C1IR
|
|
//
|
|
// Purpose:
|
|
// Perform block boundary filtering on bordering edges, horizontal and
|
|
// vertical respectively, of two adjacent 16x16 blocks, as specified in
|
|
// "ITU-T Recommendation H.263, Annex Q, subclause Q.7.1".
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the origin of the lower (HorEdge) or the right
|
|
// (VerEdge) 16x16 block.
|
|
// srcDstStep Width in bytes of the image plane.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr The pointer is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiFilterBlockBoundaryHorEdge_H263_8u_C1IR, (
|
|
Ipp8u* pSrcDst,
|
|
int srcDstStep))
|
|
|
|
IPPAPI(IppStatus, ippiFilterBlockBoundaryVerEdge_H263_8u_C1IR, (
|
|
Ipp8u* pSrcDst,
|
|
int srcDstStep))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiReconstructCoeffsIntra_H263_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs decoding, dequantization and inverse scan of the DCT
|
|
// coefficients for one intra coded block. Intra DC decoding process is
|
|
// specified in "ITU-T Recommendation H.263, subclause 5.4.1".
|
|
// Intra AC VLC decoding process is specified in "ITU-T Recommendation H.263,
|
|
// subclause 5.4.2", and is modified as specified in the Recommendation,
|
|
// Annex T, clause T.4, when Modified Quantization mode is in use. When
|
|
// in Advanced Intra Coding mode, VLC Table I.2 from Annex I of the
|
|
// Recommendation is used for all Intra DC and Intra AC coefficients,
|
|
// otherwise Table 16 from the Recommendation is used to decode AC
|
|
// coefficients (starting from pCoef[1]) only. When not in Advanced Intra
|
|
// Coding mode, the dequantization processes for the Intra DC and for all
|
|
// other non-zero coefficients are specified in the Recommendation,
|
|
// subclause 6.2.1, otherwise all the coefficients are dequantized as
|
|
// specified in the Recommendation, Annex I, clause I.3. When not in
|
|
// Advanced Intra Coding mode and not in Modified Quantization mode, the
|
|
// output coefficients other than the Inta DC one are clipped to the range
|
|
// [-2048, 2047] (the Recommendation, subclause 6.2.2).
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream
|
|
// buffer, updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream. Valid within the range [0, 7],
|
|
// updated by the function.
|
|
// pCoef Pointer to the output coefficients.
|
|
// pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
|
|
// the scanning order. If an error is detected while
|
|
// decoding a coefficient, the index of the last decoded
|
|
// coefficient is returned in *pIndxLastNonZero.
|
|
// If there are no correctly decoded coefficients in the
|
|
// block, *pIndxLastNonZero is set to -1.
|
|
// cbp Coded block pattern, when set to 0 indicates that the
|
|
// block contains only Intra DC coefficient.
|
|
// QP Quantization parameter.
|
|
// advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
|
|
// mode is in use, equal to 0 otherwise.
|
|
// scan Type of the inverse scan, takes one of the following values:
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
|
|
// IPPVC_SCAN_VERTICAL - alternate-vertical scan.
|
|
// modQuantFlag Flag equal to a non-zero value when Modified Quantization
|
|
// mode is in use, equal to 0 otherwise.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCErr Illegal VL code is detected through the stream
|
|
// processing.
|
|
// ippStsQPErr QP is out of the range [1, 31].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiReconstructCoeffsIntra_H263_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoef,
|
|
int* pIndxLastNonZero,
|
|
int cbp,
|
|
int QP,
|
|
int advIntraFlag,
|
|
int scan,
|
|
int modQuantFlag))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiReconstructCoeffsInter_H263_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs decoding, dequantization and inverse zigzag scan of the DCT
|
|
// coefficients for one inter coded block. Inter DCT VLC decoding process
|
|
// is specified in "ITU-T Recommendation H.263, subclause 5.4.2", and is
|
|
// modified as specified in the Recommendation, Annex T, clause T.4, when
|
|
// Modified Quantization mode is in use. The dequantization process is
|
|
// specified in the Recommendation, subclause 6.2.1. When not in
|
|
// Modified Quantization mode, the output coefficients are clipped to the
|
|
// range [-2048, 2047] (the Recommendation, subclause 6.2.2).
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream
|
|
// buffer, updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream. Valid within the range [0, 7],
|
|
// updated by the function.
|
|
// pCoef Pointer to the output coefficients.
|
|
// pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
|
|
// the scanning order. If an error is detected while
|
|
// decoding a coefficient, the index of the last decoded
|
|
// coefficient is returned in *pIndxLastNonZero.
|
|
// If there are no correctly decoded coefficients in the
|
|
// block, *pIndxLastNonZero is set to -1.
|
|
// QP Quantization parameter.
|
|
// modQuantFlag Flag equal to a non-zero value when Modified Quantization
|
|
// mode is in use, equal to 0 otherwise.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No errors.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCErr Illegal VL code is detected through the stream
|
|
// processing.
|
|
// ippStsQPErr QP is out of the range [1, 31].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiReconstructCoeffsInter_H263_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoef,
|
|
int* pIndxLastNonZero,
|
|
int QP,
|
|
int modQuantFlag))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeDCIntra_H263_16s1u
|
|
//
|
|
// Purpose:
|
|
// Performs fixed length encoding of the DC coefficient for one Intra coded
|
|
// block and puts the code into the bitstream. Intra DC encoding process is
|
|
// specified in "ITU-T Recommendation H.263, subclause 5.4.1".
|
|
//
|
|
// Parameters:
|
|
// qDC Quantized DC coefficient.
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream
|
|
// buffer, updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream. Valid within the range [0, 7],
|
|
// updated by the function.
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeDCIntra_H263_16s1u, (
|
|
Ipp16s qDC,
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeCoeffsIntra_H263_16s1u
|
|
//
|
|
// Purpose:
|
|
// Performs encoding of the quantized AC coefficients in a scan order for
|
|
// one Intra coded block, and puts the codes into the bitstream. Intra AC
|
|
// VLC encoding process is specified in "ITU-T Recommendation H.263,
|
|
// subclause 5.4.2", and is modified as specified in the Recommendation,
|
|
// Annex T, clause T.4, when Modified Quantization mode is in use. When in
|
|
// Advanced Intra Coding mode, VLC Table I.2 from Annex I of the
|
|
// Recommendation is used for all Intra DC and Intra AC coefficients,
|
|
// otherwise Table 16 from the Recommendation is used to encode AC
|
|
// coefficients (starting from pQCoef[1]) only.
|
|
//
|
|
// Parameters:
|
|
// pQCoef Pointer to the array of quantized DCT coefficients.
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream
|
|
// buffer, updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream. Valid within the range [0, 7],
|
|
// updated by the function.
|
|
// countNonZero Number of non-zero coefficients in the block.
|
|
// Valid within the range [1, 64].
|
|
// advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
|
|
// mode is in use, equal to 0 otherwise.
|
|
// modQuantFlag Flag equal to a non-zero value when Modified Quantization
|
|
// mode is in use, equal to 0 otherwise.
|
|
// scan Type of the scan to be performed on the coefficients before
|
|
// encoding, takes one of the following values:
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
|
|
// IPPVC_SCAN_VERTICAL - alternate-vertical scan,
|
|
// IPPVC_SCAN_NONE, indicating that no scan is to be
|
|
// performed (the input coefficients are already in a scan
|
|
// order).
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsOutOfRangeErr countNonZero is out of the range [1, 64].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeCoeffsIntra_H263_16s1u, (
|
|
Ipp16s* pQCoef,
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
int countNonZero,
|
|
int advIntraFlag,
|
|
int modQuantFlag,
|
|
int scan))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeCoeffsInter_H263_16s1u
|
|
//
|
|
// Purpose:
|
|
// Performs encoding of the quantized DCT coefficients in a scan order for
|
|
// one Inter coded block, and puts the codes into the bitstream. Inter DCT
|
|
// VLC encoding process is specified in "ITU-T Recommendation H.263,
|
|
// subclause 5.4.2", and is modified as specified in the Recommendation,
|
|
// Annex T, clause T.4, when Modified Quantization mode is in use.
|
|
//
|
|
// Parameters:
|
|
// pQCoef Pointer to the array of quantized DCT coefficients.
|
|
// ppBitStream Pointer to pointer to the current byte in the bitstream
|
|
// buffer, updated by the function.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream. Valid within the range [0, 7],
|
|
// updated by the function.
|
|
// countNonZero Number of non-zero coefficients in the block.
|
|
// Valid within the range [1, 64].
|
|
// modQuantFlag Flag equal to a non-zero value when Modified Quantization
|
|
// mode is in use, equal to 0 otherwise.
|
|
// scan Type of the scan to be performed on the coefficients before
|
|
// encoding, takes one of the following values:
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_NONE, indicating that no scan is to be
|
|
// performed (the input coefficients are already in the scan
|
|
// order).
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one of the pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsOutOfRangeErr countNonZero is out of the range [1, 64].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeCoeffsInter_H263_16s1u, (
|
|
Ipp16s* pQCoef,
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
int countNonZero,
|
|
int modQuantFlag,
|
|
int scan))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantIntra_H263_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// Performs quantization on Intra coded block according to H.263 standard.
|
|
// The standard specifies dequantization process, while quantization
|
|
// decision levels are not defined. When not in Advanced Intra Coding mode,
|
|
// the Intra DC coefficient is dequantized using uniformly placed
|
|
// reconstruction levels with a step size of 8, and the other DCT
|
|
// coefficients are reconstructed using equally spaced levels with a
|
|
// central dead-zone around zero and with a step size of 2*QP
|
|
// ("ITU-T Recommendation H.263, subclauses 4.2.4, 6.2"). When in Advanced
|
|
// Intra Coding mode, all the block coefficients are dequantized using a
|
|
// reconstruction spacing without a dead-zone and with a step size of 2*QP
|
|
// ("ITU-T Recommendation H.263, Annex I, clause I.3"). When not in
|
|
// Modified Quantization mode, the quantized Intra DC coefficient (when not
|
|
// in Advanced Intra Coding mode) is clipped to the range [1, 254], and the
|
|
// other quantized coefficients (all coefficients, if in Advanced Intra
|
|
// Coding mode) are clipped to the range [-127, 127].
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the decoded DCT coefficient of the current
|
|
// block
|
|
// QP Quantization parameter.
|
|
// pCountNonZero Pointer to the number of non-zero coefficients after
|
|
// quantization
|
|
// advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
|
|
// mode is in use, equal to 0 otherwise.
|
|
// modQuantFlag Flag equal to a non-zero value when Modified Quantization
|
|
// mode is in use, equal to 0 otherwise.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one input pointer is NULL.
|
|
// ippStsQPErr QP is out of the range [1, 31].
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantIntra_H263_16s_C1I, (
|
|
Ipp16s* pSrcDst,
|
|
int QP,
|
|
int* pCountNonZero,
|
|
int advIntraFlag,
|
|
int modQuantFlag))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantInter_H263_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// Performs quantization on Inter coded block according to H.263 standard.
|
|
// The standard specifies dequantization process, while quantization
|
|
// decision levels are not defined. The DCT coefficients are reconstructed
|
|
// using equally spaced levels with a central dead-zone around zero and
|
|
// with a step size of 2*QP ("ITU-T Recommendation H.263, subclauses 4.2.4,
|
|
// 6.2"). When not in Modified Quantization mode, the quantized coefficients
|
|
// are clipped to the range [-127, 127].
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the decoded DCT coefficient of the current
|
|
// block
|
|
// QP Quantization parameter.
|
|
// pCountNonZero Pointer to the number of non-zero coefficients after
|
|
// quantization
|
|
// modQuantFlag Flag equal to a non-zero value when Modified Quantization
|
|
// mode is in use, equal to 0 otherwise.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one input pointer is NULL.
|
|
// ippStsQPErr QP is out of the range [1, 31].
|
|
//
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantInter_H263_16s_C1I, (
|
|
Ipp16s* pSrcDst,
|
|
int QP,
|
|
int* pCountNonZero,
|
|
int modQuantFlag))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// MPEG-4 Functions
|
|
//////////////////////////////////////////////////////////////////////////// */
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiFilterDeblocking8x8HorEdge_MPEG4_8u_C1IR
|
|
//
|
|
// Purpose:
|
|
// Performs deblocking filtering on a horizontal edge of two adjacent
|
|
// blocks in the reconstructed frame, which is described in Annex F.3.1.
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the first pixel of the lower block.
|
|
// step Width of the source and destination plane.
|
|
// QP Quantization parameter.
|
|
// THR1, THR2 Threshold values specifying the filter mode
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
// ippStsQPErr QP is out of range [1, 31].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiFilterDeblocking8x8HorEdge_MPEG4_8u_C1IR, (
|
|
Ipp8u* pSrcDst,
|
|
int step,
|
|
int QP,
|
|
int THR1,
|
|
int THR2))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiFilterDeblocking8x8VerEdge_MPEG4_8u_C1IR
|
|
//
|
|
// Purpose:
|
|
// Performs deblocking filtering on a vertical edge of two adjacent
|
|
// blocks in the reconstructed frame, which is described in Annex F.3.1.
|
|
//
|
|
// Parameters:
|
|
// pSrcDst Pointer to the first pixel of the right block.
|
|
// step Width of the source and destination plane.
|
|
// QP Quantization parameter.
|
|
// THR1,THR2 Threshold values specifying the filter mode
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
// ippStsQPErr QP is out of range [1, 31].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiFilterDeblocking8x8VerEdge_MPEG4_8u_C1IR, (
|
|
Ipp8u* pSrcDst,
|
|
int step,
|
|
int QP,
|
|
int THR1,
|
|
int THR2))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiFilterDeringingThreshold_MPEG4_8u_P3R
|
|
//
|
|
// Purpose:
|
|
// Computes threshold values of 6 blocks in one macroblock
|
|
// (4Y, Cb, Cr) for the deringing filter described in Annex F.3.2.1.
|
|
//
|
|
// Parameters:
|
|
// pSrcY Pointer to the first pixel of the first Y block
|
|
// in the current macroblock.
|
|
// stepY Width of the Y plane.
|
|
// pSrcCb Pointer to the first pixel of the Cb block
|
|
// stepCb Width of the Cb plane.
|
|
// pSrcCr Pointer to the first pixel of the Cr block
|
|
// stepCr Width of the Cr plane.
|
|
// threshold Array of 6 threshold values for each block
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiFilterDeringingThreshold_MPEG4_8u_P3R, (
|
|
const Ipp8u* pSrcY,
|
|
int stepY,
|
|
const Ipp8u* pSrcCb,
|
|
int stepCb,
|
|
const Ipp8u* pSrcCr,
|
|
int stepCr,
|
|
int threshold[6]))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiFilterDeringingSmooth8x8_MPEG4_8u_C1R
|
|
//
|
|
// Purpose:
|
|
// Performs index acquisition and adaptive smoothing
|
|
// (Annex F.3.2) of a block
|
|
//
|
|
// Parameters:
|
|
// pSrc Pointer to the first pixel of the source block
|
|
// srcStep Width of the source plane.
|
|
// pDst Pointer to the first pixel of the destination block
|
|
// dstStep Width of the destination plane.
|
|
// QP Quantization parameter.
|
|
// threshold Threshold values for block
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
// ippStsQPErr QP is out of range [1, 31].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiFilterDeringingSmooth8x8_MPEG4_8u_C1R, (
|
|
const Ipp8u* pSrc,
|
|
int srcStep,
|
|
Ipp8u* pDst,
|
|
int dstStep,
|
|
int QP,
|
|
int threshold))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeDCIntra_MPEG4_16s1u
|
|
//
|
|
// Purpose:
|
|
// Encodes one DC coefficient for intra coded block.
|
|
//
|
|
// Parameters:
|
|
// dcCoeff DC coefficient to be encoded
|
|
// ppBitStream Pointer to the pointer to the current byte in
|
|
// the bitstream, it is updated after encoding.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream, it is updated after encoding.
|
|
// blockType Indicates the type of block, takes one of the following
|
|
// values:
|
|
// IPPVC_BLOCK_LUMA - for luma and alpha blocks,
|
|
// IPPVC_BLOCK_CHROMA - for chroma blocks
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeDCIntra_MPEG4_16s1u, (
|
|
Ipp16s dcCoeff,
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
int blockType))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeCoeffsIntra_MPEG4_16s1u
|
|
//
|
|
// Purpose:
|
|
// Encodes DCT coefficients for intra coded block.
|
|
//
|
|
// Parameters:
|
|
// pCoeffs Pointer to the DCT coefficients
|
|
// ppBitStream Pointer to the pointer to the current byte in
|
|
// the bitstream, it is updated after encoding.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream, it is updated after encoding.
|
|
// countNonZero The number of nonzero coefficients
|
|
// rvlcFlag This is a flag which when set to '0' indicates that VLC
|
|
// tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
|
|
// when decoding DCT coefficients otherwise the RVLC tables
|
|
// B.23, B.24 and B.25 [ISO14496] will be used.
|
|
// noDCFlag This is a flag which when set to '0' indicates that
|
|
// pCoeffs will be encoded starting with zero element otherwise
|
|
// with first
|
|
// scan Type of the scan, takes one of the following values:
|
|
// IPPVC_SCAN_NONE, indicating do not perform scan,
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
|
|
// IPPVC_SCAN_VERTICAL - alternate-vertical scan
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeCoeffsIntra_MPEG4_16s1u, (
|
|
const Ipp16s* pCoeffs,
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
int countNonZero,
|
|
int rvlcFlag,
|
|
int noDCFlag,
|
|
int scan))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiEncodeCoeffsInter_MPEG4_16s1u
|
|
//
|
|
// Purpose:
|
|
// Encodes DCT coefficients for inter coded block..
|
|
//
|
|
// Parameters:
|
|
// pCoeffs Pointer to the DCT coefficients
|
|
// ppBitStream Pointer to the pointer to the current byte in
|
|
// the bitstream, it is updated after block decoding.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream, it is updated after block decoding.
|
|
// pCoeffs Pointer to the decoded DCT coefficient of the current
|
|
// block
|
|
// countNonZero The number of nonzero coefficients
|
|
// rvlcFlag This is a flag which when set to '0' indicates that VLC
|
|
// tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
|
|
// when decoding DCT coefficients otherwise the RVLC tables
|
|
// B.23, B.24 and B.25 [ISO14496] will be used.
|
|
// scan Type of the scan, takes one of the following values:
|
|
// IPPVC_SCAN_NONE, indicating do not perform scan,
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_VERTICAL - alternate-vertical scan
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiEncodeCoeffsInter_MPEG4_16s1u, (
|
|
const Ipp16s* pCoeffs,
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
int countNonZero,
|
|
int rvlcFlag,
|
|
int scan))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeDCIntra_MPEG4_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs VLC decoding of the DC coefficient for one intra coded block
|
|
// using Intra DC VLC.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to the pointer to the current byte in
|
|
// the bitstream, it is updated after block decoding.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream, it is updated after block decoding.
|
|
// pDst Pointer to the decoded DC coefficient of the current block
|
|
// blockType Indicates the type of block, takes one of the following
|
|
// values:
|
|
// IPPVC_BLOCK_LUMA - for luma and alpha blocks,
|
|
// IPPVC_BLOCK_CHROMA - for chroma blocks
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCCodeErr An illegal code is detected through the
|
|
// DC stream processing.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeDCIntra_MPEG4_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pDst,
|
|
int blockType))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCoeffsIntra_MPEG4_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs VLC decoding of the DCT coefficient for one intra coded block
|
|
// using Intra DC VLC.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to the pointer to the current byte in
|
|
// the bitstream, it is updated after block decoding.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream, it is updated after block decoding.
|
|
// pCoeffs Pointer to the decoded DCT coefficient of the current
|
|
// block
|
|
// pIndxLastNonZero Pointer to the index of last non zero coefficient.
|
|
// In case of error during decoding the index on wich
|
|
// error occurred will be stored in pIndxLastNonZero
|
|
// rvlcFlag This is a flag which when set to '0' indicates that VLC
|
|
// tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
|
|
// when decoding DCT coefficients otherwise the RVLC tables
|
|
// B.23, B.24 and B.25 [ISO14496] will be used.
|
|
// noDCFlag This is a flag which when set to '0' indicates that
|
|
// pCoeffs will be set starting with zero element otherwise
|
|
// with first
|
|
// scan Type of the scan, takes one of the following values:
|
|
// IPPVC_SCAN_NONE, indicating do not perform inverse scan,
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
|
|
// IPPVC_SCAN_VERTICAL - alternate-vertical scan
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCCodeErr An illegal code is detected through the
|
|
// DC stream processing.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCoeffsIntra_MPEG4_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoeffs,
|
|
int* pIndxLastNonZero,
|
|
int rvlcFlag,
|
|
int noDCFlag,
|
|
int scan))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCoeffsIntraRVLCBack_MPEG4_1u16s
|
|
//
|
|
// Purpose:
|
|
// Decodes DCT coefficients in backward direction for intra coded block
|
|
// using RVLC.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to the pointer to the current byte in
|
|
// the bitstream, it is updated after block decoding.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream, it is updated after block decoding.
|
|
// pCoeffs Pointer to the decoded DCT coefficient of the current
|
|
// block
|
|
// pIndxLastNonZero Pointer to the index of last non zero coefficient.
|
|
// In case of error during decoding the index on wich
|
|
// error occurred will be stored in pIndxLastNonZero
|
|
// noDCFlag This is a flag which when set to '0' indicates that
|
|
// pCoeffs will be set starting with zero element otherwise
|
|
// with first
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCCodeErr An illegal code is detected through the
|
|
// DC stream processing.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCoeffsIntraRVLCBack_MPEG4_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoeffs,
|
|
int* pIndxLastNonZero,
|
|
int noDCFlag))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCoeffsInter_MPEG4_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs VLC decoding of the DCT coefficient for one inter coded block
|
|
// using Inter DC VLC.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to the pointer to the current byte in
|
|
// the bitstream, it is updated after block decoding.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream, it is updated after block decoding.
|
|
// pCoeffs Pointer to the decoded DCT coefficient of the current
|
|
// block
|
|
// pIndxLastNonZero Pointer to the index of last non zero coefficient.
|
|
// In case of error during decoding the index on wich
|
|
// error occurred will be stored in pIndxLastNonZero
|
|
// rvlcFlag This is a flag which when set to '0' indicates that VLC
|
|
// tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
|
|
// when decoding DCT coefficients otherwise the RVLC tables
|
|
// B.23, B.24 and B.25 [ISO14496] will be used.
|
|
// scan Type of the scan, takes one of the following values:
|
|
// IPPVC_SCAN_NONE, indicating do not perform inverse scan,
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_VERTICAL - alternate-vertical scan
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCCodeErr An illegal code is detected through the
|
|
// DC stream processing.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCoeffsInter_MPEG4_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoeffs,
|
|
int* pIndxLastNonZero,
|
|
int rvlcFlag,
|
|
int scan))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiDecodeCoeffsInterRVLCBack_MPEG4_1u16s
|
|
//
|
|
// Purpose:
|
|
// Decodes DCT coefficients in backward direction for inter coded block
|
|
// using RVLC.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to the pointer to the current byte in
|
|
// the bitstream, it is updated after block decoding.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream, it is updated after block decoding.
|
|
// pCoeffs Pointer to the decoded DCT coefficient of the current
|
|
// block
|
|
// pIndxLastNonZero Pointer to the index of last non zero coefficient.
|
|
// In case of error during decoding the index on wich
|
|
// error occurred will be stored in pIndxLastNonZero
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCCodeErr An illegal code is detected through the
|
|
// DC stream processing.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiDecodeCoeffsInterRVLCBack_MPEG4_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoeffs,
|
|
int* pIndxLastNonZero))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiReconstructCoeffsInter_MPEG4_1u16s
|
|
//
|
|
// Purpose:
|
|
// Performs VLC decoding of the DCT coefficient for one inter coded block
|
|
// using Inter DC VLC.
|
|
//
|
|
// Parameters:
|
|
// ppBitStream Pointer to the pointer to the current byte in
|
|
// the bitstream, it is updated after block decoding.
|
|
// pBitOffset Pointer to the bit position in the byte pointed by
|
|
// *ppBitStream, it is updated after block decoding.
|
|
// pCoeffs Pointer to the decoded DCT coefficient of the current
|
|
// block
|
|
// pIndxLastNonZero Pointer to the index of last non zero coefficient.
|
|
// In case of error during decoding the index on wich
|
|
// error occurred will be stored in pIndxLastNonZero
|
|
// rvlcFlag This is a flag which when set to '0' indicates that VLC
|
|
// tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
|
|
// when decoding DCT coefficients otherwise the RVLC tables
|
|
// B.23, B.24 and B.25 [ISO14496] will be used.
|
|
// scan Type of the scan, takes one of the following values:
|
|
// IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
|
|
// IPPVC_SCAN_VERTICAL - alternate-vertical scan
|
|
// pQuantInvInterSpec Pointer to the structure IppiQuantInterSpec_16s which
|
|
// QP Quantization parameter.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr One of the specified pointers is NULL.
|
|
// ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
|
|
// ippStsVLCErr An illegal code is detected through the
|
|
// stream processing.
|
|
// ippStsQPErr Indicates an error condition if QP is out of the
|
|
// range [1; 2^(bitsPerPixel - 3) - 1]
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiReconstructCoeffsInter_MPEG4_1u16s, (
|
|
Ipp8u** ppBitStream,
|
|
int* pBitOffset,
|
|
Ipp16s* pCoeffs,
|
|
int* pIndxLastNonZero,
|
|
int rvlcFlag,
|
|
int scan,
|
|
const IppiQuantInvInterSpec_MPEG4* pQuantInvInterSpec,
|
|
int QP))
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantInvIntraInit_MPEG4
|
|
// ippiQuantInvInterInit_MPEG4
|
|
//
|
|
// Purpose:
|
|
// Initialize a IppiQuantInvIntraSpec_16s or IppiQuantInvInterSpec_MPEG4 for
|
|
// future usage in ippiQuantInvIntra_MPEG4_16s_C1I or
|
|
// ippiQuantInvInter_MPEG4_16s_C1I. If pQuantMatrix is NULL, the second
|
|
// quantization method will be used; otherwise, the first
|
|
//
|
|
// Parameters:
|
|
// pQuantMatrix Pointer to the quantization matrix size of 64.
|
|
// pSpec Pointer to the structure IppiQuantInvIntraSpec_16s or
|
|
// IppiQuantInvInterSpec_MPEG4 which will initialized.
|
|
// bitsPerPixel Video data precision used for saturation of result. This
|
|
// parameter is valid within the range [4; 12].
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr Indicates an error when pointer pSpec is NULL.
|
|
// ippStsOutOfRangeErrIndicates an error when bitsPerPixel is out of
|
|
// the range [4; 12].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantInvIntraInit_MPEG4, (
|
|
const Ipp8u* pQuantMatrix,
|
|
IppiQuantInvIntraSpec_MPEG4* pSpec,
|
|
int bitsPerPixel))
|
|
|
|
IPPAPI(IppStatus, ippiQuantInvInterInit_MPEG4, (
|
|
const Ipp8u* pQuantMatrix,
|
|
IppiQuantInvInterSpec_MPEG4* pSpec,
|
|
int bitsPerPixel))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantInvIntraGetSize_MPEG4
|
|
// ippiQuantInvInterGetSize_MPEG4
|
|
//
|
|
// Purpose:
|
|
// Return size of IppiQuantInvIntraSpec_MPEG4 or IppiQuantInvInterSpec_MPEG4.
|
|
//
|
|
// Parameters:
|
|
// pSpecSize Pointer to the resulting size of the structure
|
|
// IppiQuantInvIntraSpec_MPEG4 or IppiQuantInvInterSpec_MPEG4.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr Indicates an error when pointer pSpecSize is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantInvIntraGetSize_MPEG4, (
|
|
int* pSpecSize))
|
|
|
|
IPPAPI(IppStatus, ippiQuantInvInterGetSize_MPEG4, (
|
|
int* pSpecSize))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantInvIntra_MPEG4_16s_C1I
|
|
// ippiQuantInvInter_MPEG4_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// Perform inverse quantization. Output coefficients are saturated to lie
|
|
// in the range: [-2^(bitsPerPixel + 3); 2^(bitsPerPixel + 3) - 1]. If the
|
|
// index of last nonzero coefficient is known the parameter len may be set
|
|
// to indxLastNonZero + 1 otherwise the len should be set to 64
|
|
//
|
|
// Parameters:
|
|
// pCoeffs Pointer to the decoded DCT coefficient of the current
|
|
// block
|
|
// indxLastNonZero The index of last non zero coeff..
|
|
// pSpec Pointer to the structure IppiQuantInvIntraSpec_MPEG4 or
|
|
// IppiQuantInvInterSpec_MPEG4 which will initialized.
|
|
// QP Quantization parameter.
|
|
// blockType Indicates the type of block, takes one of the following
|
|
// values:
|
|
// IPPVC_BLOCK_LUMA - for luma and alpha blocks,
|
|
// IPPVC_BLOCK_CHROMA - for chroma blocks
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one input pointer is NULL
|
|
// ippStsQPErr Indicates an error condition if QP is out of the
|
|
// range [1; 2^(bitsPerPixel - 3) - 1]
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantInvIntra_MPEG4_16s_C1I, (
|
|
Ipp16s* pCoeffs,
|
|
int indxLastNonZero,
|
|
const IppiQuantInvIntraSpec_MPEG4* pSpec,
|
|
int QP,
|
|
int blockType))
|
|
|
|
IPPAPI(IppStatus, ippiQuantInvInter_MPEG4_16s_C1I, (
|
|
Ipp16s* pCoeffs,
|
|
int indxLastNonZero,
|
|
const IppiQuantInvInterSpec_MPEG4* pSpec,
|
|
int QP))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantIntraInit_MPEG4
|
|
// ippiQuantInterInit_MPEG4
|
|
//
|
|
// Purpose:
|
|
// Initialize a IppiQuantIntraSpec_MPEG4 or IppiQuantInterSpec_MPEG4 for
|
|
// future usage in ippiQuantIntra_MPEG4_16s_C1I or
|
|
// ippiQuantInter_MPEG4_16s_C1I. If pQuantMatrix is NULL, the second
|
|
// quantization method will be used; otherwise, the first
|
|
//
|
|
// Parameters:
|
|
// pQuantMatrix Pointer to the quantization matrix size of 64.
|
|
// pSpec Pointer to the structure IppiQuantIntraSpec_MPEG4 or
|
|
// IppiQuantInterSpec_MPEG4 which will initialized.
|
|
// bitsPerPixel Video data precision used for saturation of result. This
|
|
// parameter is valid within the range [4; 12].
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr Indicates an error when pointer pSpec is NULL.
|
|
// ippStsOutOfRangeErrIndicates an error when bitsPerPixel is out of
|
|
// the range [4; 12].
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantIntraInit_MPEG4, (
|
|
const Ipp8u* pQuantMatrix,
|
|
IppiQuantIntraSpec_MPEG4* pSpec,
|
|
int bitsPerPixel))
|
|
|
|
IPPAPI(IppStatus, ippiQuantInterInit_MPEG4, (
|
|
const Ipp8u* pQuantMatrix,
|
|
IppiQuantInterSpec_MPEG4* pSpec,
|
|
int bitsPerPixel))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantIntraGetSize_MPEG4
|
|
// ippiQuantInterGetSize_MPEG4
|
|
//
|
|
// Purpose:
|
|
// Return size of IppiQuantIntraSpec_MPEG4 or IppiQuantInterSpec_MPEG4.
|
|
//
|
|
// Parameters:
|
|
// pSpecSize Pointer to the resulting size of the structure
|
|
// IppiQuantIntraSpec_MPEG4 or IppiQuantInterSpec_MPEG4.
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr Indicates an error when pointer pSpecSize is NULL.
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantIntraGetSize_MPEG4, (
|
|
int* pSpecSize))
|
|
|
|
IPPAPI(IppStatus, ippiQuantInterGetSize_MPEG4, (
|
|
int* pSpecSize))
|
|
|
|
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiQuantIntra_MPEG4_16s_C1I
|
|
// ippiQuantInter_MPEG4_16s_C1I
|
|
//
|
|
// Purpose:
|
|
// Perform quantization. Output coefficients are saturated to lie in the
|
|
// range: [-2047; 2047]. Also these functions calculate the number of
|
|
// nonzero coefficients after quantization
|
|
//
|
|
// Parameters:
|
|
// pCoeffs Pointer to the decoded DCT coefficient of the current
|
|
// block
|
|
// pSpec Pointer to the structure IppiQuantIntraSpec_MPEG4 or
|
|
// IppiQuantInterSpec_MPEG4 which will initialized.
|
|
// QP Quantization parameter.
|
|
// pCountNonZero Pointer to the count of non zero coefficients.
|
|
// blockType Indicates the type of block, takes one of the following
|
|
// values:
|
|
// IPPVC_BLOCK_LUMA - for luma and alpha blocks,
|
|
// IPPVC_BLOCK_CHROMA - for chroma blocks
|
|
// len The number of coefficients to dequantize.
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr At least one input pointer is NULL
|
|
// ippStsQPErr Indicates an error condition if QP is out of the
|
|
// range [1; 2^(bitsPerPixel - 3) - 1]
|
|
*/
|
|
|
|
IPPAPI(IppStatus, ippiQuantIntra_MPEG4_16s_C1I, (
|
|
Ipp16s* pCoeffs,
|
|
const IppiQuantIntraSpec_MPEG4* pSpec,
|
|
int QP,
|
|
int* pCountNonZero,
|
|
int blockType))
|
|
|
|
IPPAPI(IppStatus, ippiQuantInter_MPEG4_16s_C1I, (
|
|
Ipp16s* pCoeffs,
|
|
const IppiQuantInterSpec_MPEG4* pSpec,
|
|
int QP,
|
|
int* pCountNonZero))
|
|
|
|
/* ///////////////////////////////////////////////////////////////////////////
|
|
// Name:
|
|
// ippiWarpInit_MPEG4
|
|
//
|
|
// Purpose:
|
|
// Init an IppiWarpSpec_MPEG4 structure for further usage in GMC or Sprite
|
|
// reconstruction
|
|
//
|
|
// Parameters:
|
|
// pSpec Pointer to the IppiWarpSpec_MPEG4 structure.
|
|
// pDU Pointer to array of the x-coordinate of warping points
|
|
// pDV Pointer to array of the y-coordinate of warping points
|
|
// numWarpingPoints The number of warping points, valid in [0-4].
|
|
// spriteType Indicates a sprite coding mode,
|
|
// IPPVC_SPRITE_STATIC - static sprites
|
|
// IPPVC_SPRITE_GMC - GMC(Global Motion Compensation)
|
|
// warpingAccuracy The accuracy of warping, valid in [0-3].
|
|
// roundingType Parameter that determines type of rounding for pixel
|
|
// approximation; may be 0 or 1
|
|
// quarterSample Parameter that indicates a quarter sample mode;
|
|
// may be 0 or 1.
|
|
// fcode Parameter that determines the range of motion vector,
|
|
// valid in diapason [1-7]
|
|
// spriteRect Parameter that determines rectangle region for Sprite
|
|
// (or ref VOP for GMC)
|
|
// vopRect Parameter that determines rectangle region for
|
|
// current VOP
|
|
//
|
|
// Returns:
|
|
// ippStsNoErr No error.
|
|
// ippStsNullPtrErr Indicates an error when pSpec is NULL or pDU,pDV are
|
|
// NULL for numWarpingPoints > 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*/
|