Rate This Document
Findability
Accuracy
Completeness
Readability

Convert

Converts image pixel values from one data type to another.

The function interface declaration is as follows:

  • Converting the unsigned integer to the unsigned integer type:

    HmppResult HMPPI_Convert_8u16u_C1R(const uint8_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u16u_C3R(const uint8_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u16u_C4R(const uint8_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u16u_AC4R(const uint8_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u8u_C1R(const uint16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u8u_C3R(const uint16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u8u_C4R(const uint16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u8u_AC4R(const uint16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u32u_C1R(const uint16_t *src, int32_t srcStep, uint32_t *dst, int32_t dstStep, HmppiSize roiSize);

  • Converting the unsigned integer to the signed integer type:

    HmppResult HMPPI_Convert_8u16s_C1R(const uint8_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u16s_C3R(const uint8_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u16s_C4R(const uint8_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u16s_AC4R(const uint8_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u32s_C1R(const uint8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u32s_C3R(const uint8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u32s_C4R(const uint8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u32s_AC4R(const uint8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u32s_C1R(const uint16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u32s_C3R(const uint16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u32s_C4R(const uint16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u32s_AC4R(const uint16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

  • Converting the unsigned integer to the floating-point type:

    HmppResult HMPPI_Convert_8u32f_C1R(const uint8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u32f_C3R(const uint8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u32f_C4R(const uint8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8u32f_AC4R(const uint8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u32f_C1R(const uint16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u32f_C3R(const uint16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u32f_AC4R(const uint16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16u32f_C4R(const uint16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_32u32f_C1R(const uint32_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

  • Converting the signed integer to the unsigned integer type:

    HmppResult HMPPI_Convert_8s8u_C1Rs(const int8_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8s16u_C1Rs(const int8_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8s32u_C1Rs(const int8_t *src, int32_t srcStep, uint32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s8u_C1R(const int16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s8u_C3R(const int16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s8u_C4R(const int16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s8u_AC4R(const int16_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s16u_C1Rs(const int16_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s32u_C1Rs(const int16_t *src, int32_t srcStep, uint32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_32s8u_C1R(const int32_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_32s8u_C3R(const int32_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_32s8u_AC4R(const int32_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_32s8u_C4R(const int32_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_32s32u_C1Rs(const int32_t *src, int32_t srcStep, uint32_t *dst, int32_t dstStep, HmppiSize roiSize);

  • Converting the signed integer to the signed integer type:

    HmppResult HMPPI_Convert_8s16s_C1R(const int8_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8s32s_C1R(const int8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8s32s_C3R(const int8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8s32s_C4R(const int8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8s32s_AC4R(const int8_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s32s_C1R(const int16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s32s_C3R(const int16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s32s_AC4R(const int16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s32s_C4R(const int16_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_32s8s_C1R(const int32_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_32s8s_C3R(const int32_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_32s8s_AC4R(const int32_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_32s8s_C4R(const int32_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize);

  • Converting the signed integer to the floating-point type:

    HmppResult HMPPI_Convert_8s32f_C1R(const int8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8s64f_C1R(constint8_t*src, int32_tsrcStep, double*dst, int32_tdstStep, HmppiSizeroiSize);

    HmppResult HMPPI_Convert_8s32f_C3R(const int8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8s32f_C4R(const int8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_8s32f_AC4R(const int8_t *src, int32_t srcStep, float* dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s32f_C1R(const int16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s32f_C3R(const int16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s32f_AC4R(const int16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_16s32f_C4R(const int16_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

    HmppResult HMPPI_Convert_32s32f_C1R(const int32_t *src, int32_t srcStep, float *dst, int32_t dstStep, HmppiSize roiSize);

  • Converting the floating-point to the unsigned integer type:

    HmppResult HMPPI_Convert_32f8u_C1R(const float *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f8u_C3R(const float *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f8u_AC4R(const float *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f8u_C4R(const float *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f16u_C1R(const float *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f16u_C3R(const float *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f16u_AC4R(const float *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f16u_C4R(const float *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  • Converting the floating-point to the signed integer type:

    HmppResult HMPPI_Convert_32f8s_C1R(const float *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f8s_C3R(const float *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f8s_AC4R(const float *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f8s_C4R(const float *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f16s_C1R(const float *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f16s_C3R(const float *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f16s_AC4R(const float *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

    HmppResult HMPPI_Convert_32f16s_C4R(const float *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode);

  • Conversion between signed integers with scaling:

    HmppResult HMPPI_Convert_16s8s_C1R_S(const int16_t *src, int32_t srcStep, int8_t* dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_32s16s_C1R_S(const int32_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  • Conversion between unsigned integers with scaling:

    HmppResult HMPPI_Convert_32u8u_C1R_S(const uint32_t *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_32u16u_C1R_S(const uint32_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  • Converting the signed integer with scaling to the unsigned integer type:

    HmppResult HMPPI_Convert_32s16u_C1R_S(const int32_t *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  • Converting the unsigned integer to the signed integer type with scaling:

    HmppResult HMPPI_Convert_8u8s_C1R_S(const uint8_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_16u8s_C1R_S(const uint16_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_16u16s_C1R_S(const uint16_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_32u8s_C1R_S(const uint32_t *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_32u16s_C1R_S(const uint32_t *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_32u32s_C1R_S(const uint32_t *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  • Conversion between floating-point and integer types with scaling:

    HmppResult HMPPI_Convert_32f8u_C1R_S(const float *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_32f8s_C1R_S(const float *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_32f16u_C1R_S(const float *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_32f16s_C1R_S(const float *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_32f32u_C1R_S(const float *src, int32_t srcStep, uint32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_32f32s_C1R_S(const float *src, int32_t srcStep, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_64f8u_C1R_S(const double *src, int32_t srcStep, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_64f8s_C1R_S(const double *src, int32_t srcStep, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_64f16u_C1R_S(const double *src, int32_t srcStep, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

    HmppResult HMPPI_Convert_64f16s_C1R_S(const double *src, int32_t srcStep, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

  • In-place conversion between floating-point and unsigned integer types with scaling:

    HmppResult HMPPI_Convert_32f32u_C1IR_S(uint32_t *srcDst, int32_t srcDstStep, HmppiSize roiSize, HmppRoundMode roundMode, double scale);

Parameters

Parameter

Description

Value Range

Input/Output

src

Pointer to the source vector

The value cannot be NULL.

Input

srcStep

Distance between starts of consecutive lines in the source image, in bytes

(0, INT_MAX]

Input

dst

Pointer to the destination vector

The value cannot be NULL.

Output

srcDst

Pointer to the source image ROI

The value cannot be NULL.

Input/Output

dstStep

Distance between starts of consecutive lines in the destination image, in bytes

(0, INT_MAX]

Input

srcDstStep

Distance between starts of consecutive lines in the source image, in bytes

The value must be zero or a positive integer.

Input

roiSize

Size of the ROI of the source and destination images, in pixels

roiSize.width ∈ (0, INT_MAX], roiSize.height ∈ (0, INT_MAX]

Input

scale

Scale factor

[INT_MIN, INT_MAX]

Input

roundMode

HMPP_RND_ZERO: specifies that floating-point values are truncated to zero.

0

Input

HMPP_RND_NEAR: specifies that floating-point values are rounded to the nearest even integer when the decimal part is 0.5. Otherwise, the floating-point values are rounded to the nearest integer.

1

Input

HMPP_RND_FINANCIAL: specifies that floating point values are rounded down to the nearest integer when the decimal part is less than 0.5, or rounded up to the nearest integer when the decimal part is greater than or equal to 0.5.

2

Input

Return Value

  • Success: HMPP_STS_NO_ERR
  • Failure: An error code is returned.

Error Codes

Error Code

Description

HMPP_STS_NULL_PTR_ERR

The value of src or dst is NULL.

HMPP_STS_SIZE_ERR

The value of roiSize is 0 or negative.

HMPP_STS_STEP_ERR

The value of srcStep or dstStep is zero or negative.

HMPP_STS_NOT_EVEN_STEP_ERR

The value of srcStep or dstStep cannot be exactly divided by the byte length of the data type to which src or dst belongs.

HMPP_STS_NOT_SUPPORTED_MODE_ERR

The input rounding mode is not supported.

HMPP_STS_ROI_ERR

roiSize.width > Step

Example

#define SRC_BUFFER_SIZE_T 28
#define DST_BUFFER_SIZE_T 28

int ConvertExample(){
    int32_t i;
    HmppiSize roi = {5,4};
    float dst[DST_BUFFER_SIZE_T] = {0.0f};
    uint8_t src[SRC_BUFFER_SIZE_T] = { 1, 2, 4, 8, 16, 8, 4, 
                                       1, 2, 4, 8, 16, 8, 4, 
                                       1, 2, 4, 8, 16, 8, 4, 
                                       1, 2, 4, 8, 16, 8, 4,};
    int32_t srcStep = 7 * sizeof(uint8_t);
    int32_t dstStep = 7 * sizeof(float);
    HmppResult result = HMPPI_Convert_8u32f_C1R(src, srcStep, dst, dstStep, roi);
    printf("result = %d \ndst =", result);
    for (i = 0; i < DST_BUFFER_SIZE_T; i++) {
        printf(" %f  ", dst[i]);
    }
    return 0;
}

Output:

result = 0
dst = 1.000000  2.000000  4.000000  8.000000  16.000000  0.000000  0.000000  1.000000  2.000000  4.000000  8.000000  16.000000  0.000000  0.000000 1.000000  2.000000  4.000000  8.000000  16.000000  0.000000  0.000000 1.000000  2.000000  4.000000  8.000000  16.000000  0.000000  0.000000