Rate This Document
Findability
Accuracy
Completeness
Readability

ScaleC

Scales pixel values of an image and converts them to another bit depth.

The function interface declaration is as follows:

HmppResult HMPPI_ScaleC_8u_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u8s_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u16u_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u16s_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u32s_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u32f_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u64f_C1R(const uint8_t *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s8u_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s16u_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s16s_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s32s_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s32f_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s64f_C1R(const int8_t *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u8u_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u8s_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u16s_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u32s_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u32f_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u64f_C1R(const uint16_t *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s8u_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s8s_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s16u_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s32s_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s32f_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s64f_C1R(const int16_t *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s8u_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s8s_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s16u_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s16s_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s32f_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s64f_C1R(const int32_t *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f8u_C1R(const float *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f8s_C1R(const float *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f16u_C1R(const float *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f16s_C1R(const float *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f32s_C1R(const float *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f_C1R(const float *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f64f_C1R(const float *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f8u_C1R(const double *src, int32_t srcStep, double mVal, double aVal, uint8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f8s_C1R(const double *src, int32_t srcStep, double mVal, double aVal, int8_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f16u_C1R(const double *src, int32_t srcStep, double mVal, double aVal, uint16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f16s_C1R(const double *src, int32_t srcStep, double mVal, double aVal, int16_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f32s_C1R(const double *src, int32_t srcStep, double mVal, double aVal, int32_t *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f32f_C1R(const double *src, int32_t srcStep, double mVal, double aVal, float *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f_C1R(const double *src, int32_t srcStep, double mVal, double aVal, double *dst, int32_t dstStep, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8u_C1IR(uint8_t *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_8s_C1IR(int8_t *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16u_C1IR(uint16_t *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_16s_C1IR(int16_t *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32s_C1IR(int32_t *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_32f_C1IR(float *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

HmppResult HMPPI_ScaleC_64f_C1IR(double *srcDst, int32_t srcDstStep, double mVal, double aVal, HmppiSize roiSize, HmppHintAlgorithm hint);

Parameters

Parameter

Description

Value Range

Input/Output

src

Pointer to the source image ROI

The value cannot be NULL.

Input

srcStep

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

The value must be zero or a positive integer.

Input

dst

Pointer to the destination image ROI

The value cannot be NULL.

Input/output

dstStep

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

The value must be zero or a positive integer.

Input

srcDst

Pointer to the source and destination buffers

The value cannot be NULL.

Input/output

srcDstStep

Distance between the starts of consecutive lines in the source image and the destination image

The value must be zero or a positive integer.

Input

mVal

Multiplier value for scaling

The value must be double-precision.

Input

aVal

Scaling offset

The value must be double-precision.

Input

hint

Algorithmic implementation mode of the function

0 or 2

Input

roiSize

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

The value must be zero or a positive integer.

Input

Return Value

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

Error Codes

Error Code

Description

HMPP_STS_NULL_PTR_ERR

Null pointers exist in src and dst.

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_ROI_ERR

The product of the width of roiSize and the number of channels is greater than the step srcStep.

HMPP_STS_NOT_EVEN_STEP_ERR

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

HMPP_STS_BAD_ARG_ERR

This error code is returned when hint != 0 and hint != 2, indicating that the input parameter of the algorithm mode is invalid.

HMPP_STS_NO_ERR

No error occurs.

Example

#include <stdio.h>
#include "hmppi.h"
#include "hmpp_type.h"

void ScaleCExample()
{
    HmppiSize roi = {5, 7};

    uint8_t src[45] = {1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5,
                       1, 2, 3, 4, 5
                      };
    uint8_t dst[49] = {0};
    int32_t srcStep = 5 * sizeof(uint8_t);
    int32_t dstStep = 7 * sizeof(uint8_t);
    double aVal = 0.5;
    double mVal = 0.5;
    HmppHintAlgorithm hint = HMPP_ALGHINT_ACCURATE;

    (void)HMPPI_ScaleC_8u_C1R(src, srcStep, mVal, aVal, dst, dstStep, roi, hint);

    for (int i = 0; i < 7; i++) {
        for (int j = 0; j < 7; j++) {
            printf("%d ", dst[i * 7 + j]);
        }
        printf("\n");
    }
}

int main()
{
    ScaleCExample();
    return 0;
}

Output:

1 2 2 2 3 0 0
1 2 2 2 3 0 0
1 2 2 2 3 0 0
1 2 2 2 3 0 0
1 2 2 2 3 0 0
1 2 2 2 3 0 0
1 2 2 2 3 0 0