Files

52 lines
893 B
C

#ifndef __XMEDIA_SVP_QUANTIZE_H__
#define __XMEDIA_SVP_QUANTIZE_H__
#include <math.h>
#include "xmedia_svp.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
xmedia_float scale;
xmedia_s32 zp;
} quanlize_param;
/**
* @brief 量化(浮点到定点)
*
* @param data
* @param scale
* @param zp
* @return xmedia_u8
*/
static inline xmedia_u8 quantize(xmedia_float data, xmedia_float scale, xmedia_s32 zp)
{
return STD_MIN(255, STD_MAX(0, round(data / scale + zp)));
}
/**
* @brief 反量化(定点到浮点)
*
* @param data
* @param scale
* @param zp
* @return xmedia_float
*/
static inline xmedia_float dequantize(xmedia_u8 data, xmedia_float scale, xmedia_s32 zp)
{
return (xmedia_float)(scale * (data - zp));
}
static inline xmedia_float desigmoid(xmedia_float x)
{
return (-log((1.f / (x + 1e-8)) - 1.f));
}
#ifdef __cplusplus
}
#endif
#endif