Intel IPP Integration Wrappers Developer Guide and Reference

ID 751823
Date 1/18/2023
Public
Document Table of Contents

Pipeline Tiling API

iwiTilePipeline_Init

Initializes a pipeline tiling root node for the IwiTile structure.

IW_DECL(IppStatus) iwiTilePipeline_Init(
    IwiTile                *pTile,             // [in] Pointer to IwiTile structure
    IwiSize                 tileSizeMax,       // [in] Maximum tile size for intermediate buffers size calculation
    IwiSize                 dstImageSize,      // [in] Destination image size for current operation
    const IwiBorderType    *pBorderType,       // [in] Border type for the current operation. NULL if operation doesn't have a border
    const IwiBorderSize    *pBorderSize,       // [in] Border size for the current operation. NULL if operation doesn't have a border
    const IwiTileTransform *pTransformStruct   // [in] Initialized transform structure if operation performs geometric transformation. NULL if operation doesn't perform transformation
);

iwiTilePipeline_InitChild

Initializes a pipeline tiling child node for the IwiTile structure.

IW_DECL(IppStatus) iwiTilePipeline_InitChild(
    IwiTile                *pTile,             // [in] Pointer to IwiTile structure
    IwiTile                *pParent,           // [in] Pointer to IwiTile structure of previous operation
    const IwiBorderType    *pBorderType,       // [in] Border type for the current operation. NULL if operation doesn't have a border
    const IwiBorderSize    *pBorderSize,       // [in] Border size for the current operation. NULL if operation doesn't have a border
    const IwiTileTransform *pTransformStruct   // [in] Initialized transform structure if operation performs geometric transformation. NULL if operation doesn't perform transformation
);

Releases allocated data from the IwiTile structure.

IW_DECL(void) iwiTilePipeline_Release(
    IwiTile *pTile  // [in] Pointer to IwiTile structure
);

iwiTilePipeline_GetDstBufferSize

Returns the size of the pipeline tiling intermediate buffer.

IW_DECL(IppStatus) iwiTilePipeline_GetDstBufferSize(
    const IwiTile   *pTile,         // [in]     Pointer to IwiTile structure
    IwiSize         *pDstSize       // [out]    Minimal required size of destination intermediate buffer
);

iwiTilePipeline_SetRoi

Sets current tile rectangle for the pipeline to process.

IW_DECL(IppStatus) iwiTilePipeline_SetRoi(
    IwiTile         *pTile,         // [in] Pointer to IwiTile structure
    IwiRoi           tileRoi        // [in] Tile offset and size
);

iwiTilePipeline_BuildBorder

This function builds the border for the current tile source buffer. This enables passing only InMem borders to the function, thus reducing possiblity of border conflicts on image boundary.

By default, this function is not applied to the first image in the pipeline, it is applied only to intermediate buffers, but it can be used manually to construct the border for it as well.

IW_DECL(IppStatus) iwiTilePipeline_BuildBorder(
    const IwiTile   *pTile,          // [in]     Pointer to the IwiTile structure for the current tile
    IwiImage        *pSrcImage,      // [in,out] Pointer to the source image for which the border is built
    IwiBorderType   *pBorder,        // [in,out] Extrapolation algorithm for out of image pixels. Updated InMem flags will be returned here.
    const Ipp64f    *pBorderVal      // [in]     Pointer to array of border values for ippBorderConst. One element for each channel. Can be NULL for any other border.
);

Calculates actual border parameter with InMem flags for the current tile absolute and relative offsets and sizes.

IW_DECL(IppStatus) iwiTilePipeline_GetTileBorder(
    const IwiTile   *pTile,         // [in]     Pointer to the IwiTile structure
    IwiBorderType   *pBorder        // [in,out] Pointer to the border type, actual tile border will be written here.
);

iwiTilePipeline_GetBoundedSrcRect

Checks for image and buffer boundaries for the source buffer and limits tile rectangle.

IW_DECL(IppStatus) iwiTilePipeline_GetBoundedSrcRoi(
    const IwiTile   *pTile,         // [in]     Pointer to IwiTile structure
    IwiRoi          *pBoundedRoi    // [out]    Pointer to ROI adjusted to source buffer boundaries
);

iwiTilePipeline_GetBoundedDstRect

Checks for image and buffer boundaries for the destination buffer and limits tile rectangle.

IW_DECL(IppStatus) iwiTilePipeline_GetBoundedDstRoi(
    const IwiTile   *pTile,         // [in]     Pointer to the IwiTile structure
    IwiRoi          *pBoundedRoi    // [out]    Pointer to ROI adjusted to destination buffer boundaries
);

iwiTilePipeline_GetMinTileSize

Returns minimal acceptable tile size of the current pipeline.

IW_DECL(IppStatus) iwiTilePipeline_GetMinTileSize(
    const IwiTile   *pTile,        // [in]      Pointer to the IwiTile structure
    IwiSize         *pMinTileSize  // [out]     Pointer to the minimal tile size for the current pipeline
);