Mercurial > hg > sv-dependency-builds
diff src/libvorbis-1.3.3/vq/vqgen.h @ 1:05aa0afa9217
Bring in flac, ogg, vorbis
author | Chris Cannam |
---|---|
date | Tue, 19 Mar 2013 17:37:49 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/libvorbis-1.3.3/vq/vqgen.h Tue Mar 19 17:37:49 2013 +0000 @@ -0,0 +1,85 @@ +/******************************************************************** + * * + * 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 OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + + function: build a VQ codebook + last mod: $Id: vqgen.h 16037 2009-05-26 21:10:58Z xiphmont $ + + ********************************************************************/ + +#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 */ + float *pointlist; + long points; + long allocated; + + /* entries */ + float *entrylist; + long *assigned; + float *bias; + long entries; + float *max; + + float (*metric_func) (struct vqgen *v,float *entry,float *point); + float *(*weight_func) (struct vqgen *v,float *point); + + FILE *asciipoints; +} vqgen; + +typedef struct { + long min; /* packed 24 bit float */ + long delta; /* packed 24 bit float */ + int quant; /* 0 < quant <= 16 */ + int sequencep; /* bitflag */ +} quant_meta; + +static inline float *_point(vqgen *v,long ptr){ + return v->pointlist+((v->elements+v->aux)*ptr); +} + +static inline float *_aux(vqgen *v,long ptr){ + return _point(v,ptr)+v->aux; +} + +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,float mindist, + float (*metric)(vqgen *,float *, float *), + float *(*weight)(vqgen *,float *),int centroid); +extern void vqgen_addpoint(vqgen *v, float *p,float *aux); + +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 void vqgen_cellmetric(vqgen *v); + +#endif + + + + +