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