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;
Function Short Name |
Description |
---|---|
CAVLC Parsing |
|
Decodes any non-chroma DC coefficients CAVLC coded. |
|
DecodeCAVLCChromaDcCoeffs_H264, DecodeCAVLCChroma422DcCoeffs_H264 |
Decode chroma DC coefficients CAVLC coded. |
Decodes one Exp-Golomb code accordance to 9.1 H.264 standard. |
|
Inverse Quantization and Inverse Transform |
|
Performs integer inverse transformation and dequantization for 4x4 luma DC coefficients. |
|
Performs integer inverse transformation and dequantization for 2x2 chroma DC coefficients. |
|
Performs integer inverse transformation for a 4x4 block of residuals. |
|
Performs dequantization, integer inverse transformation, and shift for a 4x4 block of residuals. |
|
Performs dequantization, integer inverse transformation, shift for a 4x4 block of residuals with subsequent intra prediction or motion compensation. |
|
Performs inverse transform of inter prediction samples for the current macroblock in decoding process for P macroblocks in SP slices or SI macroblocks. |
|
Performs integer inverse transformation and dequantization of one block in P macroblocks in SP slices or SI macroblocks. |
|
Performs integer inverse transformation and dequantization for 2x2 chroma DC coefficients in P macroblocks in SP slices or SI macroblocks. |
|
Intra Prediction |
|
Performs luma component prediction for intra 4x4 macroblock type. |
|
Performs luma component prediction for intra 16x16 macroblock type. |
|
Performs chroma component prediction for intra macroblock type. |
|
Inter Prediction |
|
Expands the plane. |
|
Performs interpolation for motion estimation of the luma component using fractional part of motion vector. |
|
Performs interpolation for motion estimation of the luma component at the frame top boundary. |
|
Performs interpolation for motion estimation of the luma component at the frame bottom boundary. |
|
Performs interpolation for motion estimation of the luma component using entire motion vector. |
|
Performs interpolation for motion estimation of the chroma component using fractional part of motion vector. |
|
Performs interpolation for motion estimation of the chroma component at the frame top boundary. |
|
Performs interpolation for motion estimation of the chroma component at the frame bottom boundary. |
|
Performs interpolation for motion estimation of the chroma component using entire motion vector. |
|
Calculate the average value for each source pair values in block. |
|
Averages two blocks with weights. |
|
Weigh source block. |
|
Average two blocks with two weights and two offsets. |
|
Average two blocks with weights if ulog2wd is equal to 5. |
|
Macroblock Reconstruction |
|
Reconstructs inter chroma macroblock. |
|
Reconstructs two halves of intra chroma macroblock. |
|
Reconstructs intra chroma macroblock. |
|
ReconstructChromaInter4x4MB_H264, ReconstructChromaInter4x4_H264High |
Reconstruct 4X4 inter chroma macroblock for high profile. |
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. |
Reconstructs two independent halves of 4X4 intra chroma macroblock for 4:2:2 chroma mode. |
|
Reconstructs 4X4 intra chroma macroblock for 4:2:2 chroma mode. |
|
Reconstructs inter luma macroblock. |
|
Reconstructs half of intra luma macroblock. |
|
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. |
Reconstructs intra 16X16 luma macroblock. |
|
ReconstructLumaIntra_16x16MB_H264, ReconstructLumaIntra16x16_H264High |
Reconstruct intra 16X16 luma macroblock for high profile. |
Deblocking Filtering |
|
Performs deblocking filtering on the vertical edges of a luma 16x16 macroblock. |
|
Performs deblocking filtering on the external vertical edges of half of a 16x16 luma macroblock. |
|
Performs deblocking filtering on the horizontal edges of a luma 16x16 macroblock. |
|
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. |
Perform deblocking filtering on the horizontal edges of a chroma macroblock. |
Function Short Name |
Description |
---|---|
Edges Detection |
|
Detects edges inside a 16X16 block. |
|
Calculation of Inter Predicted Blocks |
|
Performs interpolation for motion estimation of the luma component. |
|
Performs interpolation for motion estimation of the luma component at the frame top boundary. |
|
Performs interpolation for motion estimation of the luma component at the frame bottom boundary. |
|
Performs interpolation for motion estimation of the chroma component. |
|
Performs interpolation for motion estimation of the chroma component at the frame top boundary. |
|
Performs interpolation for motion estimation of the chroma component at the frame bottom boundary. |
|
Calculation of Intra Predicted Blocks |
|
Performs intra prediction for a 4x4 luma component. |
|
Performs intra prediction for a 16x16 luma component. |
|
Performs intra prediction for a 8x8 chroma component. |
|
Estimation of Inter and Intra Predicted Blocks |
|
Evaluates sum of absolute difference between current and reference 16X16 blocks. |
|
Evaluates sum of absolute difference between current and reference 16X8 blocks. |
|
Evaluates sum of absolute difference between current and reference 8X16 blocks. |
|
Evaluates sum of absolute difference between current and reference 8X8 blocks. |
|
Evaluates sum of absolute difference between current and reference 8X4 blocks. |
|
Evaluates sum of absolute difference between current and reference 4X8 blocks. |
|
Evaluates sum of absolute difference between current and reference 4X4 blocks. |
|
Evaluates four partial sums of absolute differences between current and reference 16X16 blocks. |
|
Evaluates 16 partial sums of absolute differences between current and reference 16X16 blocks. |
|
Evaluates sum of absolute transformed differences between current and reference 16X16 blocks using 4x4 transform. |
|
Evaluates sum of absolute transformed differences between current and reference 16X8 blocks using 4x4 transform. |
|
Evaluates sum of absolute transformed differences between current and reference 8X16 blocks using 4x4 transform. |
|
Evaluates sum of absolute transformed differences between current and reference 8X8 blocks using 4x4 transform. |
|
Evaluates sum of absolute transformed differences between current and reference 8X4 blocks using 4x4 transform. |
|
Evaluates sum of absolute transformed differences between current and reference 4X8 blocks using 4x4 transform. |
|
Evaluates sum of absolute transformed differences between current and reference 4X4 blocks using 4x4 transform. |
|
Evaluates sum of absolute transformed differences between current and reference 8X8 blocks using 8x8 transform. |
|
Obtaining Residual and DC Blocks |
|
Calculates a residual 4x4 block in the cases of intra 4x4 luma block or inter luma block. |
|
Calculates a 4x4 DC luma block and 4x4 residual blocks in the case of an intra 16x16 luma block. |
|
Calculates a 2x2 DC chroma block and residual 4x4 chroma blocks. |
|
Forward Transform and Quantization |
|
Performs forward transform and quantization for 2x2 DC chroma blocks. |
|
Performs forward transform and quantization for 4x4 DC luma blocks. |
|
Performs forward transform for 4X4 residual blocks. |
|
Performs forward quantization for 4X4 residual blocks. |
|
Performs forward transform and quantization for 4x4 residual blocks. |
|
Performs forward 8x8 transform for 8x8 luma blocks without normalization. |
|
Performs quantization for 8x8 luma block coefficients including 8x8 transform normalization. |
|
Generates ScaleLevel matrices for forward and inverse quantization including normalization for 8x8 forward and inverse transform. |
|
CAVLC Functions |
|
Calculates characteristics of 4X4 block for CAVLC encoding. |
|
Calculates characteristics of 2X2 chroma DC block for CAVLC encoding. |
|
CABAC Functions |
|
Returns the size required for the CABAC state. |
|
Copies contexts from the CABAC state structure. |
|
Initializes CABAC state and alignes bitstream to byte boundary by writing 1s. |
|
Allocates and initializes CABAC state and alignes bitstream to byte boundary by writing 1s. |
|
Releases CABAC state, allocated by ippiCABACInitAlloc_H264. |
|
Sets a new pointer for output stream. |
|
Returns the number of bits in the bitstream. |
|
Encodes one bin with CABAC and writes it to the stream. |
|
Encodes bin with CABAC using bypass encoding process and writes it to the stream. |
|
Encodes bin with CABAC using bypass encoding process and writes it to the stream. |
|
Encodes bin with CABAC using bypass encoding process and writes it to the stream. |
|
Inverse Quantization and Transform |
|
Performs integer inverse transformation and dequantization for 4x4 luma DC coefficients. |
|
Performs integer inverse transformation and dequantization for 2x2 chroma DC coefficients. |
|
Performs dequantization, integer inverse transformation, shift for a 4x4 block of residuals with subsequent intra prediction or motion compensation. |
|
Performs inverse quantization for 8x8 luma block coefficients including normalization of the following inverse 8x8 transform. |
|
Performs inverse 8x8 transform of 8x8 luma block coefficients with subsequent intra prediction or motion compensation. |
|
Deblocking |
|
Performs deblocking filtering on the vertical edges of the luma 16x16 macroblock. |
|
Performs deblocking filtering on the vertical edges of half of the luma 16x16 macroblock. |
|
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. |
Copyright © 2000 - 2010, Intel Corporation. All rights reserved.