diff options
Diffstat (limited to 'vorbis/vq/latticetune.c')
-rw-r--r-- | vorbis/vq/latticetune.c | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/vorbis/vq/latticetune.c b/vorbis/vq/latticetune.c deleted file mode 100644 index 193d4d1..0000000 --- a/vorbis/vq/latticetune.c +++ /dev/null @@ -1,163 +0,0 @@ -/******************************************************************** - * * - * 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: utility main for setting entropy encoding parameters - for lattice codebooks - - ********************************************************************/ - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <errno.h> -#include "bookutil.h" - -static int strrcmp_i(char *s,char *cmp){ - return(strncmp(s+strlen(s)-strlen(cmp),cmp,strlen(cmp))); -} - -/* This util takes a training-collected file listing codewords used in - LSP fitting, then generates new codeword lengths for maximally - efficient integer-bits entropy encoding. - - command line: - latticetune book.vqh input.vqd [unused_entriesp] - - latticetune produces book.vqh on stdout */ - -int main(int argc,char *argv[]){ - codebook *b; - static_codebook *c; - long *lengths; - long *hits; - - int entries=-1,dim=-1,guard=1; - FILE *in=NULL; - char *line,*name; - long j; - - if(argv[1]==NULL){ - fprintf(stderr,"Need a lattice codebook on the command line.\n"); - exit(1); - } - if(argv[2]==NULL){ - fprintf(stderr,"Need a codeword data file on the command line.\n"); - exit(1); - } - if(argv[3]!=NULL)guard=0; - - { - char *ptr; - char *filename=strdup(argv[1]); - - b=codebook_load(filename); - c=(static_codebook *)(b->c); - - ptr=strrchr(filename,'.'); - if(ptr){ - *ptr='\0'; - name=strdup(filename); - }else{ - name=strdup(filename); - } - } - - if(c->maptype!=1){ - fprintf(stderr,"Provided book is not a latticebook.\n"); - exit(1); - } - - entries=b->entries; - dim=b->dim; - - hits=_ogg_malloc(entries*sizeof(long)); - lengths=_ogg_calloc(entries,sizeof(long)); - for(j=0;j<entries;j++)hits[j]=guard; - - in=fopen(argv[2],"r"); - if(!in){ - fprintf(stderr,"Could not open input file %s\n",argv[2]); - exit(1); - } - - if(!strrcmp_i(argv[0],"latticetune")){ - long lines=0; - line=setup_line(in); - while(line){ - long code; - lines++; - if(!(lines&0xfff))spinnit("codewords so far...",lines); - - if(sscanf(line,"%ld",&code)==1) - hits[code]++; - - line=setup_line(in); - } - } - - /* now we simply count already collated by-entry data */ - if(!strrcmp_i(argv[0],"res0tune") || !strrcmp_i(argv[0],"res1tune")){ - - line=setup_line(in); - while(line){ - - /* code:hits\n */ - /* likely to have multiple listing for each code entry; must - accumulate */ - - char *pos=strchr(line,':'); - if(pos){ - long code=atol(line); - long val=atol(pos+1); - hits[code]+=val; - } - - line=setup_line(in); - } - } - - fclose(in); - - /* build the codeword lengths */ - build_tree_from_lengths0(entries,hits,lengths); - - c->lengthlist=lengths; - write_codebook(stdout,name,c); - - { - long bins=_book_maptype1_quantvals(c); - long i,k,base=c->lengthlist[0]; - for(i=0;i<entries;i++) - if(c->lengthlist[i]>base)base=c->lengthlist[i]; - - for(j=0;j<entries;j++){ - if(c->lengthlist[j]){ - int indexdiv=1; - fprintf(stderr,"%4ld: ",j); - for(k=0;k<c->dim;k++){ - int index= (j/indexdiv)%bins; - fprintf(stderr,"%+3.1f,", c->quantlist[index]*_float32_unpack(c->q_delta)+ - _float32_unpack(c->q_min)); - indexdiv*=bins; - } - fprintf(stderr,"\t|"); - for(k=0;k<base-c->lengthlist[j];k++)fprintf(stderr,"*"); - fprintf(stderr,"\n"); - } - } - } - - fprintf(stderr,"\r " - "\nDone.\n"); - exit(0); -} |