mediaLib Library Functions mlib_ImageReformat(3MLIB)
NAME
mlib_ImageReformat - image data buffer reformat
SYNOPSIS
cc [ flag... ] file... -lmlib [ library... ]
#include
mlib_status mlib_ImageReformat(void **dstData, const void **srcData,
mlib_s32 numBands, mlib_s32 xSize, mlib_s32 ySize,
mlib_type dstDataType, const mlib_s32 *dstBandoffsets,
mlib_s32 dstScanlinestride, mlib_s32 dstPixelstride,
mlib_type srcDataType, const mlib_s32 *srcBandoffsets,
mlib_s32 srcScanlinestride, mlib_s32 srcPixelstride);
DESCRIPTION
The mlib_ImageReformat() function copies and casts, if
needed, an image from one buffer to another. The formats and data types of the two buffers may be different. dstPixel[x][y][i] = (dstDataType) srcPixel[x][y][i]where the values of a pixel at position (x, y) and in chan-
nel i are: srcPixel[x][y][i] = srcData[i][srcBandoffsets[i] + srcScanlinestride*y + srcPixelstride*x] dstPixel[x][y][i] = dstData[i][dstBandoffsets[i] + dstScanlinestride*y + dstPixelstride*x] It is the user's responsibility to make sure that the data buffers supplied are suitable for this operation. The srcData and dstData can have 1, 2, 3, or 4 channels, and they must have the same number of channels. The srcDataTypeand dstDataType can be MLIB_BYTE, MLIB_SHORT, MLIB_USHORT,
MLIB_INT, MLIB_FLOAT, or MLIB_DOUBLE.
The conversions between different data types are implemented as described in the following table: Source Type Dest. Type Action___________________________________________________________________________________
SunOS 5.11 Last change: 2 Mar 2007 1
mediaLib Library Functions mlib_ImageReformat(3MLIB)
MLIB_SHORT MLIB_BYTE (mlib_u8)clamp(x, 0, 255)
MLIB_USHORT MLIB_BYTE (mlib_u8)clamp(x, 0, 255)
___________________________________________________________________________________
MLIB_INT MLIB_BYTE (mlib_u8)clamp(x, 0, 255)
___________________________________________________________________________________
MLIB_FLOAT MLIB_BYTE (mlib_u8)clamp(x, 0, 255)
___________________________________________________________________________________
MLIB_DOUBLE MLIB_BYTE (mlib_u8)clamp(x, 0, 255)
___________________________________________________________________________________
MLIB_BYTE MLIB_SHORT (mlib_s16)x
___________________________________________________________________________________
MLIB_USHORT MLIB_SHORT (mlib_s16)clamp(x, -32768, 32767)
___________________________________________________________________________________
MLIB_INT MLIB_SHORT (mlib_s16)clamp(x, -32768, 32767)
___________________________________________________________________________________
MLIB_FLOAT MLIB_SHORT (mlib_s16)clamp(x, -32768, 32767)
___________________________________________________________________________________
MLIB_DOUBLE MLIB_SHORT (mlib_s16)clamp(x, -32768, 32767)
___________________________________________________________________________________
MLIB_BYTE MLIB_USHORT (mlib_u16)x
___________________________________________________________________________________
MLIB_SHORT MLIB_USHORT (mlib_u16)clamp(x, 0, 65535)
___________________________________________________________________________________
MLIB_INT MLIB_USHORT (mlib_u16)clamp(x, 0, 65535)
___________________________________________________________________________________
MLIB_FLOAT MLIB_USHORT (mlib_u16)clamp(x, 0, 65535)
___________________________________________________________________________________
MLIB_DOUBLE MLIB_USHORT (mlib_u16)clamp(x, 0, 65535)
___________________________________________________________________________________
MLIB_BYTE MLIB_INT (mlib_s32)x
___________________________________________________________________________________
MLIB_SHORT MLIB_INT (mlib_s32)x
___________________________________________________________________________________
MLIB_USHORT MLIB_INT (mlib_s32)x
___________________________________________________________________________________
MLIB_FLOAT MLIB_INT (mlib_s32)clamp(x, -2147483647-1, 2147483647)
___________________________________________________________________________________
MLIB_DOUBLE MLIB_INT (mlib_s32)clamp(x, -2147483647-1, 2147483647)
___________________________________________________________________________________
MLIB_BYTE MLIB_FLOAT (mlib_f32)x
___________________________________________________________________________________
MLIB_SHORT MLIB_FLOAT (mlib_f32)x
___________________________________________________________________________________
MLIB_USHORT MLIB_FLOAT (mlib_f32)x
___________________________________________________________________________________
MLIB_INT MLIB_FLOAT (mlib_f32)x
___________________________________________________________________________________
MLIB_DOUBLE MLIB_FLOAT (mlib_f32)x
___________________________________________________________________________________
MLIB_BYTE MLIB_DOUBLE (mlib_d64)x
___________________________________________________________________________________
MLIB_SHORT MLIB_DOUBLE (mlib_d64)x
SunOS 5.11 Last change: 2 Mar 2007 2
mediaLib Library Functions mlib_ImageReformat(3MLIB)
___________________________________________________________________________________
MLIB_USHORT MLIB_DOUBLE (mlib_d64)x
___________________________________________________________________________________
MLIB_INT MLIB_DOUBLE (mlib_d64)x
___________________________________________________________________________________
MLIB_FLOAT MLIB_DOUBLE (mlib_d64)x
The actions are defined in C-style pseudo-code. All type
casts follow the rules of standard C. clamp() can be definedas a macro: #define clamp(x, low, high) (((x) < (low)) ?
(low) : (((x) > (high)) ? (high) : (x)))PARAMETERS
The function takes the following arguments: dstData The pointer to the destination image data buffer. srcData The pointer to the source image data buffer. numBands The number of channels of the image data buffers. xSize The width of the image. ySize The height of the image. dstDataType The data type of the dstData buffer. dstBandoffsets The initial pixel's offsets in the dstData buffer in terms of destination data buffer elements. dstScanlinestride The scanline stride of the dstData buffer in terms of destination data buffer elements. dstPixelstride The pixel stride of the dstData buffer in terms of destination data buffer elements.SunOS 5.11 Last change: 2 Mar 2007 3
mediaLib Library Functions mlib_ImageReformat(3MLIB)
srcDataType The data type of the srcData buffer. srcBandoffsets The initial pixel's offsets in the srcData buffer in terms of source data buffer elements. srcScanlinestride The scanline stride of the srcData buffer in terms of source data buffer elements. srcPixelstride The pixel stride of the srcData bufferin terms of source data buffer ele-
ments.RETURN VALUES
The function returns MLIB_SUCCESS if successful. Otherwise
it returns MLIB_FAILURE.
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
| MT-Level | MT-Safe |
|_____________________________|_____________________________|
SEE ALSO
mlib_ImageDataTypeConvert(3MLIB), attributes(5)
SunOS 5.11 Last change: 2 Mar 2007 4