X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=vq%2Fvqgen.h;h=688379ccdb1bab91dc222baf6fd7917220a08a78;hb=1ffc217cb77636d1a06939638d14c583e1e89525;hp=bbc942ee20813f3eecbcd925f4f373700fa9be94;hpb=f637dd7b71ce97b2e637b717b4d309e8c55f6b93;p=platform%2Fupstream%2Flibvorbis.git diff --git a/vq/vqgen.h b/vq/vqgen.h index bbc942e..688379c 100644 --- a/vq/vqgen.h +++ b/vq/vqgen.h @@ -1,69 +1,51 @@ /******************************************************************** * * - * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE. * - * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY * - * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE. * - * PLEASE READ THESE TERMS DISTRIBUTING. * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-1999 * - * by 1999 Monty and The XIPHOPHORUS Company * - * http://www.xiph.org/ * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * + * by the Xiph.Org Foundation http://www.xiph.org/ * * * + ******************************************************************** + + function: build a VQ codebook + ********************************************************************/ #ifndef _VQGEN_H_ #define _VQGEN_H_ typedef struct vqgen{ + int seeded; + int sorted; + int it; int elements; + int aux; + float mindist; + int centroid; /* point cache */ - double *pointlist; + float *pointlist; long points; long allocated; /* entries */ - double *entrylist; + float *entrylist; long *assigned; - double *bias; + float *bias; long entries; + float *max; + + float (*metric_func) (struct vqgen *v,float *entry,float *point); + float *(*weight_func) (struct vqgen *v,float *point); - double (*metric_func) (struct vqgen *v,double *entry,double *point); - double *(*weight_func) (struct vqgen *v,double *point); + FILE *asciipoints; } vqgen; -typedef struct vqbook{ - long dim; /* codebook dimensions (elements per vector) */ - long entries; /* codebook entries */ - - long min; /* packed 24 bit float; quant value 0 maps to minval */ - long delta; /* packed 24 bit float; val 1 - val 0 == delta */ - int quant; /* 0 < quant <= 16 */ - int sequencep; /* bitflag */ - - double *valuelist; /* list of dim*entries actual entry values */ - long *quantlist; /* list of dim*entries quantized entry values */ - long *codelist; /* list of bitstream codewords for each entry */ - long *lengthlist; /* codeword lengths in bits */ - - /* auxiliary encoding/decoding information */ - /* encode: provided pre-calculated partitioning tree */ - /* decode: hufftree */ - long *ptr0; - long *ptr1; - - /* auxiliary encoding information. Not used in decode */ - double *n; /* decision hyperplanes: sum(x_i*n_i)[0<=ipointlist+((v->elements+v->aux)*ptr); } -static inline double *_aux(vqgen *v,long ptr){ +static inline float *_aux(vqgen *v,long ptr){ return _point(v,ptr)+v->aux; } -static inline double *_now(vqgen *v,long ptr){ +static inline float *_now(vqgen *v,long ptr){ return v->entrylist+(v->elements*ptr); } -extern void vqgen_init(vqgen *v,int elements,int aux,int entries, - double (*metric)(vqgen *,double *, double *), - double *(*weight)(vqgen *,double *)); -extern void vqgen_addpoint(vqgen *v, double *p,double *aux); +extern void vqgen_init(vqgen *v, + int elements,int aux,int entries,float mindist, + float (*metric)(vqgen *,float *, float *), + float *(*weight)(vqgen *,float *),int centroid); +extern void vqgen_addpoint(vqgen *v, float *p,float *aux); -extern double vqgen_iterate(vqgen *v); +extern float vqgen_iterate(vqgen *v,int biasp); extern void vqgen_unquantize(vqgen *v,quant_meta *q); extern void vqgen_quantize(vqgen *v,quant_meta *q); -extern long float24_pack(double val); -extern double float24_unpack(long val); - -extern void vqsp_book(vqgen *v,vqbook *b,long *quantlist); -extern int vqenc_entry(vqbook *b,double *val); +extern void vqgen_cellmetric(vqgen *v); #endif