www.pudn.com > wavecode.rar > quantim.h
#ifndef QUANTIM_H #define QUANTIM_H #include#include #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