Inter Prediction

Note that the functions with _16u_ and _8u_ data types use the following structures respectively:

typedef struct _IppVCInterpolate_16u
{
    const Ipp16u* pSrc;
    Ipp32s      srcStep;
    Ipp16u*     pDst;
    Ipp32s      dstStep;
    Ipp32s      dx;
    Ipp32s      dy;
    IppiSize    roiSize;
    Ipp32s      bitDepth;
} IppVCInterpolate_16u;

typedef struct _IppVCInterpolate_8u
{
    const Ipp8u* pSrc;
    Ipp32s      srcStep;
    Ipp8u*      pDst;
    Ipp32s      dstStep;
    Ipp32s      dx;
    Ipp32s      dy;
    IppiSize    roiSize;
    Ipp32s      roundControl;
} IppVCInterpolate_8u;

where

pSrc

Pointer to the source.

srcStep

Distance in items between starts of the consecutive lines in the source image.

pDst

Pointer to the destination.

dstStep

Distance in items between starts of the consecutive lines in the destination image.

dx, dy

Fractional parts of the motion vector in 1/4 pel units for luma (0, 1, 2, or 3) and 1/8 pel units for chroma (0, 1, ..., 7)

roiSize

Flag that specifies the dimensions of the region of interest. See structure IppiSize.

roundControl

Frame level rounding control value as described in section 8.3.7 of [SMPTE421M], should be equal to 0 or 1. (For VC1 only, reserved for H.264.)

bitDepth

Number of bits of the plane sample with the range [8.. 14].

typedef struct _IppVCBidir_16u
{
    const Ipp16u*  pSrc1;
    Ipp32s   srcStep1;
    const Ipp16u*  pSrc2;
    Ipp32s   srcStep2;
    Ipp16u*  pDst;
    Ipp32s   dstStep;
    IppiSize roi;
    Ipp32s   bitDepth;
} IppVCBidir_16u;
 
typedef struct _IppVCBidir_8u
{
    const Ipp8u*  pSrc1;
    Ipp32s   srcStep1;
    const Ipp8u*  pSrc2;
    Ipp32s   srcStep2;
    Ipp8u*  pDst;
    Ipp32s   dstStep;
    IppiSize roiSize;
} IppVCBidir_8u;

where

pSrc1

Pointer to the first input block

srcStep1

Distance in items between starts of the consecutive lines in the first input block.

pSrc2

Pointer to the second input block.

srcStep2

Distance in items between starts of the consecutive lines in the second input block.

pDst

Pointer to the first output block.

dstStep

Distance in items between starts of the consecutive lines in the destination block.

roiSize

Flag that specifies the dimensions of the region of interest. See structure IppiSize.

bitDepth

Number of bits of the plane sample with range [8.. 14].

The InterpolateLumaBlock_H264 and InterpolateChromaBlock_H264 functions use the following structures:


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 
                            					image being interpolated */
    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 _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
                            					image being interpolated */
    IppiPoint pointVector;	   /* relative difference between current
                            					position and reference data to be used */
} IppVCInterpolateBlock_8u;

where

pSrc

Array of pointers to reference planes; InterpolateLumaBlock_H264 uses only first pointer of the array, InterpolateChromaBlock_H264 uses both pointers.

srcStep

Stride of the reference planes (the distance between the nearest image lines)

pDst

Array of pointers to destination buffers; InterpolateLumaBlock_H264 uses only first pointer of the array, InterpolateChromaBlock_H264 uses both pointers. The array should be big enough to hold the interpolated block.

dstStep

Stride of the destination buffer (the distance between the nearest image lines)

sizeFrame

Dimensions of the reference planes that are pointed to by the source pointers

sizeBlock

Dimentions of the block to interpolate

pointBlockPos

Current position of the block in the frame under reconstruction

pointVector

Motion vector

bitDepth

Bit capacity of data that is being processed.


Submit feedback on this help topic

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