📄 quantim.h
字号:
#ifndef QUANTIM_H
#define QUANTIM_H
#include <crblib/inc.h>
#include <crblib/memutil.h>
#include "image.h"
#include "coder.h"
// types :
extern char * qtype_names[];
#define QTYPE_DEADZONE 0
#define QTYPE_ESZZ 1
#define QTYPE_MAX 1
// todo : adaptives and type_best
// flags : (encoder only)
#define QFLAG_UNIFORM 0
#define QFLAG_SEEKSTOP (1<<0)
#define QFLAG_FIDDLE (1<<1)
// <>
typedef struct _quantInfo {
int nquants,qtype; // nquants == 0 is quantizer == 1.0
float quantizers[0];
} quantInfo;
#define quantInfoSize(qi) (sizeof(quantInfo) + ((qi)->nquants)*sizeof(float))
#define newQI(quantizers) AllocMem(sizeof(quantInfo) + (quantizers)*sizeof(float),MEMF_CLEAR)
extern quantInfo * findQuantizers(int qtype,int qflags,double quant_target,
imageFloat *imF,int levels,int stoplen,coder *coder_template); // used by non-uniform only
// 'quantInfo' can just be free()'ed or written to a file, or etc.
extern void quantizeImage(image *im,int levels,quantInfo *qi);
extern void dequantizeImage(image *im,int levels,quantInfo *qi);
extern void quantizeImageF(image *im,imageFloat *imF,int levels,quantInfo *qi);
extern void dequantizeImageF(image *im,imageFloat *imF,int levels,quantInfo *qi);
extern quantInfo * doTransQuantIm(image *im,int levels,int transformN,
int qtype,int qflags,double q,
int stoplen,const coder *coder_template);
extern void deTransQuantIm(image *im,int levels,int transformN,quantInfo *qi);
/****** these trans-wavelet routines are the suggested entry point into the API : *********/
extern wavelet * makeTransQuantWavelet(image *im,int levels,int transformN,
int qtype,int qflags,double q,
int stoplen,const coder *coder_template);
extern void deTransQuantWavelet(wavelet * w);
#endif // QUANTIM_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -