H.264

This section describes functions for decoding of video data in accordance with JVT-G050 ([JVTG050]) and ITUH264 ([ITUH264]) standards.

The use of some functions described in this section is demonstrated in Intel® IPP Samples downloadable from http://www.intel.com/cd/software/products/asmo-na/eng/220046.htm .

The following enumeration is used to indicate prediction modes of the Intra_4x4 prediction process for luma samples (8.3.1 of JVT-G050):

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 } IppIntra4x4PredMode_H264;

The table below shows the correspondence between prediction modes and constants of enum IppIntra4x4PredMode_H264.

Name of Constant Prediction Mode Chapter in JVT-G050
IPP_4x4_VERT Intra_4x4_Vertical 8.3.1.2.1
IPP_4x4_HOR Intra_4x4_Horizontal 8.3.1.2.2
IPP_4x4_DC Intra_4x4_DC 8.3.1.2.3
IPP_4x4_DIAG_DL Intra_4x4_Diagonal_Down_Left 8.3.1.2.4
IPP_4x4_DIAG_DR Intra_4x4_Diagonal_Down_Right 8.3.1.2.5
IPP_4x4_VR Intra_4x4_Vertical_Right 8.3.1.2.6
IPP_4x4_HD Intra_4x4_Horizontal_Down 8.3.1.2.7
IPP_4x4_VL Intra_4x4_Vertical_Left 8.3.1.2.8
IPP_4x4_HU Intra_4x4_Horizontal_Up 8.3.1.2.9

The following enumeration is used to indicate prediction modes of the Intra_16x16 prediction process for luma samples (8.3.2 of JVT-G050):

typedef enum { IPP_16X16_VERT = 0, IPP_16X16_HOR = 1, IPP_16X16_DC = 2, IPP_16X16_PLANE = 3, } IppIntra16x16PredMode_H264;

The table below shows the correspondence between prediction modes and constants of enum IppIntra16x16PredMode_H264.

Name of Constant Prediction Mode Chapter in JVT-G050
IPP_16X16_VERT Intra_16x16_Vertical 8.3.2.1
IPP_16X16_HOR Intra_16x16_Horizontal 8.3.2.2
IPP_16X16_DC Intra_16x16_DC 8.3.2.3
IPP_16X16_PLANE Intra_16x16_Plane 8.3.2.4

The following enumeration is used to indicate prediction modes of the intra prediction process for chroma samples (8.3.3 of JVT-G050):

typedef enum { IPP_CHROMA_DC = 0, IPP_CHROMA_HOR = 1, IPP_CHROMA_VERT = 2, IPP_CHROMA_PLANE = 3, } IppIntraChromaPredMode_H264;

The table below shows the correspondence between prediction modes and constants of enum IppIntraChromaPredMode_H264.

Name of Constant Prediction Mode Chapter in JVT-G050
IPP_CHROMA_DC Intra_Chroma_DC 8.3.3.1
IPP_CHROMA_HOR Intra_Chroma_Horizontal 8.3.3.2
IPP_CHROMA_VERT Intra_Chroma_Vertical 8.3.3.3
IPP_CHROMA_PLANE Intra_Chroma_Plane 8.3.3.4

The following enumeration is used to indicate availability of the corresponding positions for prediction in the picture:


typedef enum { IPP_UPPER = 1, IPP_LEFT = 2, IPP_CENTER = 4, IPP_RIGHT = 8, IPP_LOWER = 16, IPP_UPPER_LEFT = 32, IPP_UPPER_RIGHT = 64, IPP_LOWER_LEFT = 128, IPP_LOWER_RIGHT = 256, } IppLayoutFlag;

The following enumeration is used to indicate image type of the picture:

typedef enum _IPPVC_FRAME_FIELD_FLAG { IPPVC_FRAME = 0x0, IPPVC_TOP_FIELD = 0X1, IPPVC_BOTTOM_FIELD = 0x2 } IPPVC_FRAME_FIELD_FLAG;

H.264 Video Decoder Functions 

Function Short Name

Description

CAVLC Parsing

DecodeCAVLCCoeffs_H264

Decodes any non-chroma DC coefficients CAVLC coded.

DecodeCAVLCChromaDcCoeffs_H264, DecodeCAVLCChroma422DcCoeffs_H264

Decode chroma DC coefficients CAVLC coded.

DecodeExpGolombOne_H264

Decodes one Exp-Golomb code accordance to 9.1 H.264 standard.

Inverse Quantization and Inverse Transform

TransformDequantLumaDC_H264

Performs integer inverse transformation and dequantization for 4x4 luma DC coefficients.

TransformDequantChromaDC_H264

Performs integer inverse transformation and dequantization for 2x2 chroma DC coefficients.

TransformResidual4x4Inv_H264

Performs integer inverse transformation for a 4x4 block of residuals.

DequantTransformResidual_H264

Performs dequantization, integer inverse transformation, and shift for a 4x4 block of residuals.

DequantTransformResidualAndAdd_H264

Performs dequantization, integer inverse transformation, shift for a 4x4 block of residuals with subsequent intra prediction or motion compensation.

TransformPrediction_H264

Performs inverse transform of inter prediction samples for the current macroblock in decoding process for P macroblocks in SP slices or SI macroblocks.

DequantTransformResidual_SISP_H264

Performs integer inverse transformation and dequantization of one block in P macroblocks in SP slices or SI macroblocks.

TransformDequantChromaDC_SISP_H264

Performs integer inverse transformation and dequantization for 2x2 chroma DC coefficients in P macroblocks in SP slices or SI macroblocks.

Intra Prediction

PredictIntra_4x4_H264

Performs luma component prediction for intra 4x4 macroblock type.

PredictIntra_16x16_H264

Performs luma component prediction for intra 16x16 macroblock type.

PredictIntraChroma8x8_H264

Performs chroma component prediction for intra macroblock type.

Inter Prediction

ExpandPlane_H264

Expands the plane.

InterpolateLuma_H264

Performs interpolation for motion estimation of the luma component using fractional part of motion vector.

InterpolateLumaTop_H264

Performs interpolation for motion estimation of the luma component at the frame top boundary.

InterpolateLumaBottom_H264

Performs interpolation for motion estimation of the luma component at the frame bottom boundary.

InterpolateLumaBlock_H264

Performs interpolation for motion estimation of the luma component using entire motion vector.

InterpolateChroma_H264

Performs interpolation for motion estimation of the chroma component using fractional part of motion vector.

InterpolateChromaTop_H264

Performs interpolation for motion estimation of the chroma component at the frame top boundary.

InterpolateChromaBottom_H264

Performs interpolation for motion estimation of the chroma component at the frame bottom boundary.

InterpolateChromaBlock_H264

Performs interpolation for motion estimation of the chroma component using entire motion vector.

InterpolateBlock_H264, Bidir_H264

Calculate the average value for each source pair values in block.

WeightedAverage_H264

Averages two blocks with weights.

UniDirWeightBlock_H264, UnidirWeight_H264

Weigh source block.

BiDirWeightBlock_H264, BidirWeight_H264

Average two blocks with two weights and two offsets.

BiDirWeightBlockImplicit_H264, BidirWeightImplicit_H264

Average two blocks with weights if ulog2wd is equal to 5.

Macroblock Reconstruction

ReconstructChromaInterMB_H264

Reconstructs inter chroma macroblock.

ReconstructChromaIntraHalvesMB_H264

Reconstructs two halves of intra chroma macroblock.

ReconstructChromaIntraMB_H264

Reconstructs intra chroma macroblock.

ReconstructChromaInter4x4MB_H264, ReconstructChromaInter4x4_H264High

Reconstruct 4X4 inter chroma macroblock for high profile.

ReconstructChroma422Inter4x4_H264High

Reconstructs 4X4 inter chroma macroblock for 4:2:2 chroma mode.

ReconstructChromaIntraHalves4x4MB_H264, ReconstructChromaIntraHalf4x4_H264High

Reconstruct two independent halves of 4X4 intra chroma macroblock for high profile.

ReconstructChromaIntra4x4MB_H264, ReconstructChromaIntra4x4_H264High

Reconstruct 4X4 intra chroma macroblock for high profile.

ReconstructChroma422IntraHalf4x4_H264High

Reconstructs two independent halves of 4X4 intra chroma macroblock for 4:2:2 chroma mode.

ReconstructChroma422Intra4x4_H264High

Reconstructs 4X4 intra chroma macroblock for 4:2:2 chroma mode.

ReconstructLumaInterMB_H264

Reconstructs inter luma macroblock.

ReconstructLumaIntraHalfMB_H264

Reconstructs half of intra luma macroblock.

ReconstructLumaIntraMB_H264

Reconstructs intra luma macroblock.

ReconstructLumaInter4x4MB_H264, ReconstructLumaInter4x4_H264High

Reconstruct 4X4 inter luma macroblock for high profile.

ReconstructLumaIntraHalf4x4MB_H264, ReconstructLumaIntraHalf4x4_H264High

Reconstruct half of 4X4 intra luma macroblock for high profile.

ReconstructLumaIntra4x4MB_H264, ReconstructLumaIntra4x4_H264High

Reconstruct 4X4 intra luma macroblock for high profile.

ReconstructLumaInter8x8MB_H264, ReconstructLumaInter8x8_H264High

Reconstruct 8X8 inter luma macroblock for high profile.

ReconstructLumaIntraHalf8x8MB_H264, ReconstructLumaIntraHalf8x8_H264High

Reconstruct half of 8X8 intra luma macroblock for high profile.

ReconstructLumaIntra8x8MB_H264, ReconstructLumaIntra8x8_H264High

Reconstruct 8X8 intra luma macroblock for high profile.

ReconstructLumaIntra16x16MB_H264

Reconstructs intra 16X16 luma macroblock.

ReconstructLumaIntra_16x16MB_H264, ReconstructLumaIntra16x16_H264High

Reconstruct intra 16X16 luma macroblock for high profile.

Deblocking Filtering

FilterDeblockingLuma_VerEdge_H264

Performs deblocking filtering on the vertical edges of a luma 16x16 macroblock.

FilterDeblockingLuma_VerEdge_MBAFF_H264

Performs deblocking filtering on the external vertical edges of half of a 16x16 luma macroblock.

FilterDeblockingLuma_HorEdge_H264

Performs deblocking filtering on the horizontal edges of a luma 16x16 macroblock.

FilterDeblockingChroma_VerEdge_H264, FilterDeblockingChromaVerEdge_H264, FilterDeblockingChroma422VerEdge_H264

Perform deblocking filtering on the vertical edges of a chroma macroblock.

FilterDeblockingChroma_VerEdge_MBAFF_H264, FilterDeblockingChroma422VerEdgeMBAFF_H264

Perform deblocking filtering on the external vertical edges of half of an 8x8 chroma macroblock.

FilterDeblockingChroma_HorEdge_H264, FilterDeblockingChromaHorEdge_H264, FilterDeblockingChroma422HorEdge_H264

Perform deblocking filtering on the horizontal edges of a chroma macroblock.

H.264 Video Encoder Functions 

Function Short Name

Description

Edges Detection

EdgesDetect16x16

Detects edges inside a 16X16 block.

Calculation of Inter Predicted Blocks

InterpolateLuma_H264

Performs interpolation for motion estimation of the luma component.

InterpolateLumaTop_H264

Performs interpolation for motion estimation of the luma component at the frame top boundary.

InterpolateLumaBottom_H264

Performs interpolation for motion estimation of the luma component at the frame bottom boundary.

InterpolateChroma_H264

Performs interpolation for motion estimation of the chroma component.

InterpolateChromaTop_H264

Performs interpolation for motion estimation of the chroma component at the frame top boundary.

InterpolateChromaBottom_H264

Performs interpolation for motion estimation of the chroma component at the frame bottom boundary.

Calculation of Intra Predicted Blocks

PredictIntra_4x4_H264

Performs intra prediction for a 4x4 luma component.

PredictIntra_16x16_H264

Performs intra prediction for a 16x16 luma component.

PredictIntraChroma8x8_H264

Performs intra prediction for a 8x8 chroma component.

Estimation of Inter and Intra Predicted Blocks

SAD16x16

Evaluates sum of absolute difference between current and reference 16X16 blocks.

SAD16x8

Evaluates sum of absolute difference between current and reference 16X8 blocks.

SAD8x16

Evaluates sum of absolute difference between current and reference 8X16 blocks.

SAD8x8

Evaluates sum of absolute difference between current and reference 8X8 blocks.

SAD8x4

Evaluates sum of absolute difference between current and reference 8X4 blocks.

SAD4x8

Evaluates sum of absolute difference between current and reference 4X8 blocks.

SAD4x4

Evaluates sum of absolute difference between current and reference 4X4 blocks.

SAD16x16Blocks8x8

Evaluates four partial sums of absolute differences between current and reference 16X16 blocks.

SAD16x16Blocks4x4

Evaluates 16 partial sums of absolute differences between current and reference 16X16 blocks.

SATD16x16

Evaluates sum of absolute transformed differences between current and reference 16X16 blocks using 4x4 transform.

SATD16x8

Evaluates sum of absolute transformed differences between current and reference 16X8 blocks using 4x4 transform.

SATD8x16

Evaluates sum of absolute transformed differences between current and reference 8X16 blocks using 4x4 transform.

SATD8x8

Evaluates sum of absolute transformed differences between current and reference 8X8 blocks using 4x4 transform.

SATD8x4

Evaluates sum of absolute transformed differences between current and reference 8X4 blocks using 4x4 transform.

SATD4x8

Evaluates sum of absolute transformed differences between current and reference 4X8 blocks using 4x4 transform.

SATD4x4

Evaluates sum of absolute transformed differences between current and reference 4X4 blocks using 4x4 transform.

SAT8x8D

Evaluates sum of absolute transformed differences between current and reference 8X8 blocks using 8x8 transform.

Obtaining Residual and DC Blocks

GetDiff4x4

Calculates a residual 4x4 block in the cases of intra 4x4 luma block or inter luma block.

SumsDiff16x16Blocks4x4

Calculates a 4x4 DC luma block and 4x4 residual blocks in the case of an intra 16x16 luma block.

SumsDiff8x8Blocks4x4

Calculates a 2x2 DC chroma block and residual 4x4 chroma blocks.

Forward Transform and Quantization

TransformQuantChromaDC_H264

Performs forward transform and quantization for 2x2 DC chroma blocks.

TransformQuantLumaDC_H264

Performs forward transform and quantization for 4x4 DC luma blocks.

TransformResidual4x4Fwd_H264

Performs forward transform for 4X4 residual blocks.

QuantizeResidual4x4Fwd_H264

Performs forward quantization for 4X4 residual blocks.

TransformQuantResidual_H264

Performs forward transform and quantization for 4x4 residual blocks.

TransformLuma8x8Fwd_H264

Performs forward 8x8 transform for 8x8 luma blocks without normalization.

QuantLuma8x8_H264

Performs quantization for 8x8 luma block coefficients including 8x8 transform normalization.

GenScaleLevel8x8_H264

Generates ScaleLevel matrices for forward and inverse quantization including normalization for 8x8 forward and inverse transform.

CAVLC Functions

EncodeCoeffsCAVLC_H264

Calculates characteristics of 4X4 block for CAVLC encoding.

EncodeChromaDcCoeffsCAVLC_H264

Calculates characteristics of 2X2 chroma DC block for CAVLC encoding.

CABAC Functions

CABACGetSize_H264

Returns the size required for the CABAC state.

CABACGetContexts_H264

Copies contexts from the CABAC state structure.

CABACInit_H264

Initializes CABAC state and alignes bitstream to byte boundary by writing 1s.

CABACInitAlloc_H264

Allocates and initializes CABAC state and alignes bitstream to byte boundary by writing 1s.

CABACFree_H264

Releases CABAC state, allocated by ippiCABACInitAlloc_H264.

CABACSetStream_H264

Sets a new pointer for output stream.

CABACGetStreamSize_H264

Returns the number of bits in the bitstream.

CABACEncodeBin_H264

Encodes one bin with CABAC and writes it to the stream.

CABACEncodeBinBypass_H264

Encodes bin with CABAC using bypass encoding process and writes it to the stream.

CABACTerminateSlice_H264

Encodes bin with CABAC using bypass encoding process and writes it to the stream.

CABACEncodeResidualBlock_H264

Encodes bin with CABAC using bypass encoding process and writes it to the stream.

Inverse Quantization and Transform

TransformDequantLumaDC_H264

Performs integer inverse transformation and dequantization for 4x4 luma DC coefficients.

TransformDequantChromaDC_H264

Performs integer inverse transformation and dequantization for 2x2 chroma DC coefficients.

DequantTransformResidualAndAdd_H264

Performs dequantization, integer inverse transformation, shift for a 4x4 block of residuals with subsequent intra prediction or motion compensation.

QuantLuma8x8Inv_H264

Performs inverse quantization for 8x8 luma block coefficients including normalization of the following inverse 8x8 transform.

TransformLuma8x8InvAddPred_H264

Performs inverse 8x8 transform of 8x8 luma block coefficients with subsequent intra prediction or motion compensation.

Deblocking

FilterDeblockingLuma_VerEdge_H264

Performs deblocking filtering on the vertical edges of the luma 16x16 macroblock.

FilterDeblockingLuma_VerEdge_MBAFF_H264

Performs deblocking filtering on the vertical edges of half of the luma 16x16 macroblock.

FilterDeblockingLuma_HorEdge_H264

Performs deblocking filtering on the horizontal edges of the luma 16x16 macroblock.

FilterDeblockingChroma_VerEdge_H264, FilterDeblockingChroma422VerEdge_H264

Performs deblocking filtering on the vertical edges of the chroma 8x8 macroblock.

FilterDeblockingChroma_VerEdge_MBAFF_H264, FilterDeblockingChroma422VerEdgeMBAFF_H264

Performs deblocking filtering on the vertical edges of half of the chroma 8x8 macroblock.

FilterDeblockingChroma_HorEdge_H264, FilterDeblockingChroma422HorEdge_H264

Performs deblocking filtering on the horizontal edges of the chroma 8x8 macroblock.


Submit feedback on this help topic

Copyright © 2000 - 2010, Intel Corporation. All rights reserved.