ReconstructLumaInter4x4MB_H264, ReconstructLumaInter4x4_H264High

Reconstruct 4X4 inter luma macroblock for high profile.

Syntax

IppStatus ippiReconstructLumaInter4x4MB_H264_16s8u_C1R(Ipp16s** ppSrcDstCoeff, Ipp8u* pSrcDstYPlane, Ipp32u srcDstYStep, Ipp32u cbp4x4, Ipp32s QP, const Ipp16s* pQuantTable, Ipp8u bypassFlag);

IppStatus ippiReconstructLumaInter4x4_H264High_32s16u_IP1R(const IppiReconstructHighMB_32s16u* pReconstructInfo);

Parameters

ppSrcDstCoeff

Pointer to the order of 4x4 blocks of residual coefficients for this macroblock, which are taken as a result of Huffman decoding (4x4 luma blocks, if the block is not zero-filled) in the same order as is shown in Figure 6‑10 of [ITUH264]. Pointer is updated by the function and points to the blocks for the next macroblock.

pSrcDstYPlane

Pointer to the current macroblock that is reconstructed in current Y-plane. This macroblock must contain inter prediction samples.

srcDstStep

Plane step.

cbp4x4

Coded block pattern. If cbp4x4 & (1<<(1+i)) is not equal to 0 (0 ≤ i < 16), i-th 4x4 AC luma block is not zero-filled and it exists in ppSrcDstCoeff.

QP

Quantization parameter ( QPY in [ITUH264]). It must be within the range [0;51].

pQuantTable

Pointer to the quantization table (LevelScale(qP%6, i, j) in [ITUH264]).

bypassFlag

Flag enabling lossless coding.

pReconstructInfo

Pointer to the IppiReconstructHighMB_32s16u structure.

Description

The functions ippiReconstructLumaInter4x4MB_H264_16s8u_C1R and ippiReconstructLumaInter4x4_H264High_32s16u_IP1R are declared in the ippvc.h file. These functions reconstruct a 4x4 inter luma macroblock for high profile:

See below for the usage example of ippiReconstructLumaInter4x4MB_H264_16s8u_C1R.

Usage of ippiReconstructLumaInter4x4MB_H264  

{
    Ipp8u   planeY[16*16] = 
  { 0x9c, 0x92, 0x7f, 0x8b, 0x94, 0x22, 0x8a, 0xbc, 0xbb, 0x23, 0x60, 0xbb, 0x9a, 0xa9, 0x54, 0x48,
    0x13, 0xa3, 0x29, 0x8a, 0xba, 0x73, 0x65, 0x14, 0x9a, 0xc6, 0x34, 0xae, 0x2e, 0x5e, 0xbb, 0x38,
    0x70, 0x48, 0x5e, 0x68, 0xaf, 0x16, 0x22, 0x9a, 0x38, 0x6c, 0x54, 0x8f, 0x3e, 0x7f, 0x6a, 0x69,
    0x3e, 0x5e, 0x11, 0x7e, 0x08, 0x01, 0xb9, 0x8c, 0x76, 0x7b, 0x16, 0x87, 0xa5, 0xa4, 0xc6, 0x78,
    0xc3, 0x0a, 0x8a, 0x9d, 0x47, 0x0f, 0x9f, 0xa1, 0x90, 0x5f, 0x1d, 0x0b, 0x79, 0x36, 0x47, 0x79, 
    0x5a, 0x45, 0x28, 0x87, 0x28, 0x0f, 0x4a, 0xb3, 0x24, 0x83, 0x14, 0xa4, 0x56, 0x5c, 0x81, 0x0b,
    0x29, 0x61, 0xc1, 0x4b, 0x96, 0x33, 0x65, 0xa3, 0x9f, 0x3b, 0x08, 0x25, 0xa9, 0x5c, 0x44, 0x97,
    0x50, 0x2b, 0x77, 0x64, 0x59, 0x2c, 0xb6, 0x30, 0x24, 0x7b, 0x47, 0x6b, 0xaa, 0x85, 0xa3, 0xa2, 
    0x58, 0x66, 0x15, 0x31, 0x78, 0x7e, 0x3b, 0x20, 0x72, 0x25, 0xb3, 0x9a, 0x82, 0x13, 0x48, 0x53,
    0x61, 0x4f, 0x45, 0x0c, 0x69, 0xa2, 0xa1, 0x01, 0x62, 0x0f, 0x0a, 0x94, 0x17, 0x4b, 0x77, 0x41,
    0xa4, 0x59, 0x16, 0x17, 0x8e, 0x32, 0x61, 0x94, 0xbe, 0x1d, 0x22, 0x05, 0x11, 0x16, 0xb0, 0x4f,
    0x31, 0x97, 0x3e, 0x61, 0x92, 0x36, 0x13, 0x9c, 0x07, 0x27, 0x1a, 0x05, 0x5d, 0x82, 0x9b, 0x4e,
    0x94, 0x6f, 0x57, 0xc7, 0xb7, 0x99, 0x1e, 0x48, 0x33, 0x3f, 0x15, 0x9a, 0x30, 0x75, 0x03, 0x69,
    0x09, 0x86, 0x86, 0xb6, 0x53, 0x9d, 0x9b, 0x03, 0x9c, 0x80, 0xbf, 0x3a, 0x81, 0x0b, 0x59, 0xb5,
    0x6f, 0x81, 0x65, 0x29, 0xb7, 0x93, 0xb4, 0x2a, 0xbf, 0x05, 0x11, 0x53, 0x49, 0x92, 0x97, 0x3c,
    0x0d, 0xac, 0x8f, 0x5d, 0x88, 0x25, 0x99, 0x9b, 0x5e, 0x53, 0x5c, 0x07, 0x0f, 0x0c, 0x41, 0xc2
};

    Ipp32s  stepY = 16;
    Ipp16s  quantTable[16] = {22,12,34,50,34,33,46,21,18,19,34,28,28,31,15,3};
    Ipp16s  coef[16*16] = {
      12,-4, 0,  0, 0,-7, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0,
      0, 4, -5,  1, 0,-4, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0,
      0, 0, 10, -2,-1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0, 0, 7, -13, 2, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1,
      0, 0, -19, 6, 0, 0, 8,-4, 0, 0, 0, 1, 0, 0, 0, 0,
      0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
      0, 0, 25, -3,-2, 0, 0, 2,-1, 0,-2, 1, 0, 0, 0, 0,
      0, 0, -3,  0, 1,-2,-1, 0, 0, 0,-1, 0, 0, 0, 0, 0,
      0, 0, -1, -1, 1, 1, 2, 1,-2,-1, 0, 1, 0, 1, 0, 0,
      0, 0,  0,  0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1,-1,
      0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1, 1, 0,
      0, 0,  0,  0,-1, 0, 0, 0, 0, 0, 0, 0, 0,-1, 1, 0,
      0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
      0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  };

    Ipp32u  cbp4x4 = 0x0001fe00;
    Ipp32s  QP = 22;
    Ipp8u   bypass_flag = 0;
    IppStatus result;
    Ipp16s* pCoef;

    pCoef = coef;

    result = ippiReconstructLumaInter4x4MB_H264_16s8u_C1R(&pCoef,
                                                 planeY,
                                                 stepY,
                                                 cbp4x4,
                                                 QP,
                                                 quantTable,
                                                 bypass_flag);
  }

These functions are used in the H.264 decoder included into Intel IPP Samples. See introduction to H.264.

Return Values

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.


Submit feedback on this help topic

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