diff options
author | Monty <xiphmont@xiph.org> | 2001-01-22 01:38:52 +0000 |
---|---|---|
committer | Monty <xiphmont@xiph.org> | 2001-01-22 01:38:52 +0000 |
commit | aa7a3d9b4e84e85a18512c98aa14aeefb2f3e129 (patch) | |
tree | 5b63fe7552399b0b82d55bff51962a971e27b9b6 /vq/latticebuild.c | |
parent | 49d32ead8d9981c316cbcb6abb84716b81bec57f (diff) | |
download | libvorbis-git-aa7a3d9b4e84e85a18512c98aa14aeefb2f3e129.tar.gz |
Initial beta 4 merge
Monty
svn path=/trunk/vorbis/; revision=1191
Diffstat (limited to 'vq/latticebuild.c')
-rw-r--r-- | vq/latticebuild.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/vq/latticebuild.c b/vq/latticebuild.c index dc9befc4..cd5735a5 100644 --- a/vq/latticebuild.c +++ b/vq/latticebuild.c @@ -12,7 +12,7 @@ ******************************************************************** function: utility main for building codebooks from lattice descriptions - last mod: $Id: latticebuild.c,v 1.8 2000/11/08 03:23:23 xiphmont Exp $ + last mod: $Id: latticebuild.c,v 1.9 2001/01/22 01:38:51 xiphmont Exp $ ********************************************************************/ @@ -57,7 +57,7 @@ static int ilog(unsigned int v){ int main(int argc,char *argv[]){ codebook b; static_codebook c; - float *quantlist; + double *quantlist; long *hits; int entries=-1,dim=-1,quantvals=-1,addmul=-1,sequencep=0; @@ -98,7 +98,7 @@ int main(int argc,char *argv[]){ line=get_line(in); if(sscanf(line,"%d %d %d %d",&quantvals,&dim,&addmul,&sequencep)!=4){ if(sscanf(line,"%d %d %d",&quantvals,&dim,&addmul)!=3){ - fprintf(stderr,"Syntax error reading book file (line 1)\n"); + fprintf(stderr,"Syntax error reading description file (line 1)\n"); exit(1); } } @@ -110,24 +110,29 @@ int main(int argc,char *argv[]){ c.q_sequencep=sequencep; c.quantlist=_ogg_calloc(quantvals,sizeof(long)); - quantlist=_ogg_malloc(sizeof(long)*c.dim*c.entries); + quantlist=_ogg_malloc(sizeof(double)*c.dim*c.entries); hits=_ogg_malloc(c.entries*sizeof(long)); for(j=0;j<entries;j++)hits[j]=1; for(j=0;j<entries;j++)c.lengthlist[j]=1; reset_next_value(); - setup_line(in); - for(j=0;j<quantvals;j++){ - if(get_line_value(in,quantlist+j)==-1){ + line=setup_line(in); + for(j=0;j<quantvals;j++){ + char *temp; + if(!line || sscanf(line,"%lf",quantlist+j)!=1){ fprintf(stderr,"Ran out of data on line 2 of description file\n"); exit(1); } + temp=strchr(line,','); + if(!temp)temp=strchr(line,' '); + if(temp)temp++; + line=temp; } /* gen a real quant list from the more easily human-grokked input */ { - float min=quantlist[0]; - float mindel=-1; + double min=quantlist[0]; + double mindel=-1; int fac=1; for(j=1;j<quantvals;j++)if(quantlist[j]<min)min=quantlist[j]; for(j=0;j<quantvals;j++) @@ -138,9 +143,10 @@ int main(int argc,char *argv[]){ j=0; while(j<quantvals){ for(j=0;j<quantvals;j++){ - float test=(quantlist[j]-min)/(mindel/fac); - if( fabs(rint(test)-test)>.000001) break; + double test=fac*(quantlist[j]-min)/mindel; + if( fabs(rint(test)-test)>.00001f) break; } + if(fac>100)break; if(j<quantvals)fac++; } |