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