Intel IPP Integration Wrappers Developer Guide and Reference

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

Image Processing Structures

IwiImage

The IwiImage is a base structure for IW image processing functions. This structure stores input and output data.

typedef struct _IwiImage
{
    void          *m_pBuffer;      // Pointer to the image buffer. Should NULL for any external buffer.
    void          *m_ptr;          // Pointer to the start of actual image data.
    IwSize         m_step;         // Distance, in bytes, between the starting points of consecutive lines in the source image memory.
    IwiSize        m_size;         // Image size, in pixels.
    IppDataType    m_dataType;     // Image pixel type.
    int            m_typeSize;     // Size of image pixel type, in bytes.
    int            m_channels;     // Number of image channels.
    IwiBorderSize  m_inMemSize;    // Memory border size around image data.
} IwiImage;

IwiTile

The IwiTile structure is a main structure for semi-automatic tiling operations. This structure provides main context for tiling across IW API and contains mostly values for complex pipelines tiling.

typedef struct _IwiTile
{
    IwiRoi            m_srcRoi;            // Absolute ROI for the source image
    IwiRoi            m_dstRoi;            // Absolute ROI for the destination image

    IwiPoint          m_untaintSrcPos;     // Absolute unaligned source ROI position
    IwiPoint          m_untaintDstPos;     // Absolute unaligned destination ROI position

    IwiRoi            m_boundSrcRoi;       // Relative ROI for the source image bounded to the buffer
    IwiRoi            m_boundDstRoi;       // Relative ROI for the destination image bounded to the buffer

    IwiSize           m_srcBufferSize;     // Actual source buffer size
    IwiSize           m_dstBufferSize;     // Actual destination buffer size

    IwiSize           m_srcImageSize;      // Full source image size
    IwiSize           m_dstImageSize;      // Full destination image size

    IwiSize           m_srcExImageSize;    // Source image size extended on parent InMem border size
    IwiSize           m_dstExImageSize;    // Destination image size extended on parent InMem border size

    IwiSize           m_maxTileSize;       // Maximum tile size

    IwiBorderType     m_borderType;        // Type of source image border
    IwiBorderSize     m_borderSize;        // Border required for the current operation
    IwiBorderSize     m_borderSizeAcc;     // Accumulated border size for current and parent operations
    IwiBorderSize     m_externalMem;       // Amount of memory required to process InMem border for current edge tile
    IwiBorderSize     m_externalMemAcc;    // Amount of memory required to process InMem border for all edge tiles

    IwiTileTransform  m_transformStruct;   // Transformation proxy functions and data structure

    int               m_initialized;       // Internal initialization states

    struct _IwiTile  *m_pChild;            // Next Tile in the pipeline
    struct _IwiTile  *m_pParent;           // Previous Tile in the pipeline

} IwiTile;

IwiBorderSize

The IwiBorderSize structure stores border sizes for image processing functions.

typedef struct {
    IwSize left;
    IwSize top;
    IwSize right;
    IwSize bottom;
} IwiBorderSize;

_IwiChDescriptor

The special channel descriptor _IwiChDescriptor specifies how to process non-standard channels configurations.

  • If the descriptor is not supported, the library returns an error.
  • If the descriptor is for different channels number, the library ignores it.
typedef enum _IwiChDescriptor
{
    iwiChDesc_None    = 0,          // Process all channels

    // C4 descriptors
    iwiChDesc_C4M1110 = 0x00004007, // Process only the first 3 channels as RGB. Equivalent to AC4 functions from the main Intel(R) IPP library.
    iwiChDesc_C4M1000 = 0x00004001, // Process only the first channel as gray-scale.
    iwiChDesc_C4M1001 = 0x00004009, // Process only the first channel and the last channel as gray-scale with alpha.
    iwiChDesc_C4M1XX0 = 0x00064001, // Process only the first channel as gray-scale and replicate it to remaining color channels.
    iwiChDesc_C4M1XX1 = 0x00064009  // Process only the first channel and the last channel as gray-scale with alpha and replicate gray-scale to remaining color channels.

} IwiChDescriptor;