Go to main content

man pages section 3: Multimedia Library Functions

Exit Print View

Updated: July 2017
 
 

mlib_ImageDataTypeConvert(3MLIB)

Name

mlib_ImageDataTypeConvert - data type conversion

Synopsis

cc [ flag... ] file... –lmlib [ library... ]
#include <mlib.h>

mlib_status mlib_ImageDataTypeConvert(mlib_image *dst, const mlib_image *src);

Description

The mlib_ImageDataTypeConvert() function converts between data types MLIB_BIT, MLIB_BYTE, MLIB_SHORT, MLIB_USHORT, MLIB_INT, MLIB_FLOAT, and MLIB_DOUBLE.

The input and output data images must have the same width, height, and number of channels. Conversion to a smaller pixel format clamps the source value to the dynamic range of the destination pixel.

See the following table for available variations of the data type conversion function.

Source Type
Dest. Type
Action
MLIB_BYTE
MLIB_BIT
(x > 0) ? 1 : 0
MLIB_SHORT
MLIB_BIT
(x > 0) ? 1 : 0
MLIB_USHORT
MLIB_BIT
(x > 0) ? 1 : 0
MLIB_INT
MLIB_BIT
(x > 0) ? 1 : 0
MLIB_FLOAT
MLIB_BIT
(x > 0) ? 1 : 0
MLIB_DOUBLE
MLIB_BIT
(x > 0) ? 1 : 0
MLIB_BIT
MLIB_BYTE
(x == 1) ? 1 : 0
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_BIT
MLIB_SHORT
(x == 1) ? 1 : 0
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_BIT
MLIB_USHORT
(x == 1) ? 1 : 0
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_BIT
MLIB_INT
(x == 1) ? 1 : 0
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_BIT
MLIB_FLOAT
(x == 1) ? 1.0 : 0.0
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_BIT
MLIB_DOUBLE
(x == 1) ? 1.0 : 0.0
MLIB_BYTE
MLIB_DOUBLE
(mlib_d64)x
MLIB_SHORT
MLIB_DOUBLE
(mlib_d64)x
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 defined as a macro: #define clamp(x, low, high) (((x) < (low)) ? (low) : (((x) > (high)) ? (high) : (x)))

Parameters

The function takes the following arguments:

dst

Pointer to destination image.

src

Pointer to source image.

Return Values

The function returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.

Attributes

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Committed
MT-Level
MT-Safe

See Also

mlib_ImageReformat(3MLIB), attributes(5)