zenilib: zenilib/jni/external/libvorbis/vq/latticetune.c Source File

zenilib 0.5.3.0

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
latticetune.c
Go to the documentation of this file.
1 /********************************************************************
2 * *
3 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
4 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
5 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
6 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
7 * *
8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
9 * by the Xiph.Org Foundation http://www.xiph.org/ *
10 * *
11 ********************************************************************
12
13 function: utility main for setting entropy encoding parameters
14 for lattice codebooks
15 last mod: $Id: latticetune.c 16037 2009-05-26 21:10:58Z xiphmont $
16
17 ********************************************************************/
18
19 #include <stdlib.h>
20 #include <stdio.h>
21 #include <math.h>
22 #include <string.h>
23 #include <errno.h>
24 #include "bookutil.h"
25
26 static int strrcmp_i(char *s,char *cmp){
27 return(strncmp(s+strlen(s)-strlen(cmp),cmp,strlen(cmp)));
28 }
29
30 /* This util takes a training-collected file listing codewords used in
31 LSP fitting, then generates new codeword lengths for maximally
32 efficient integer-bits entropy encoding.
33
34 command line:
35 latticetune book.vqh input.vqd [unused_entriesp]
36
37 latticetune produces book.vqh on stdout */
38
39 int main(int argc,char *argv[]){
40 codebook *b;
41 static_codebook *c;
42 long *lengths;
43 long *hits;
44
45 int entries=-1,dim=-1,guard=1;
46 FILE *in=NULL;
47 char *line,*name;
48 long j;
49
50 if(argv[1]==NULL){
51 fprintf(stderr,"Need a lattice codebook on the command line.\n");
52 exit(1);
53 }
54 if(argv[2]==NULL){
55 fprintf(stderr,"Need a codeword data file on the command line.\n");
56 exit(1);
57 }
58 if(argv[3]!=NULL)guard=0;
59
60 {
61 char *ptr;
62 char *filename=strdup(argv[1]);
63
64 b=codebook_load(filename);
65 c=(static_codebook *)(b->c);
66
67 ptr=strrchr(filename,'.');
68 if(ptr){
69 *ptr='\0';
70 name=strdup(filename);
71 }else{
72 name=strdup(filename);
73 }
74 }
75
76 if(c->maptype!=1){
77 fprintf(stderr,"Provided book is not a latticebook.\n");
78 exit(1);
79 }
80
81 entries=b->entries;
82 dim=b->dim;
83
84 hits=_ogg_malloc(entries*sizeof(long));
85 lengths=_ogg_calloc(entries,sizeof(long));
86 for(j=0;j<entries;j++)hits[j]=guard;
87
88 in=fopen(argv[2],"r");
89 if(!in){
90 fprintf(stderr,"Could not open input file %s\n",argv[2]);
91 exit(1);
92 }
93
94 if(!strrcmp_i(argv[0],"latticetune")){
95 long lines=0;
96 line=setup_line(in);
97 while(line){
98 long code;
99 lines++;
100 if(!(lines&0xfff))spinnit("codewords so far...",lines);
101
102 if(sscanf(line,"%ld",&code)==1)
103 hits[code]++;
104
105 line=setup_line(in);
106 }
107 }
108
109 /* now we simply count already collated by-entry data */
110 if(!strrcmp_i(argv[0],"res0tune") || !strrcmp_i(argv[0],"res1tune")){
111
112 line=setup_line(in);
113 while(line){
114
115 /* code:hits\n */
116 /* likely to have multiple listing for each code entry; must
117 accumulate */
118
119 char *pos=strchr(line,':');
120 if(pos){
121 long code=atol(line);
122 long val=atol(pos+1);
123 hits[code]+=val;
124 }
125
126 line=setup_line(in);
127 }
128 }
129
130 fclose(in);
131
132 /* build the codeword lengths */
133 build_tree_from_lengths0(entries,hits,lengths);
134
135 c->lengthlist=lengths;
136 write_codebook(stdout,name,c);
137
138 {
139 long bins=_book_maptype1_quantvals(c);
140 long i,k,base=c->lengthlist[0];
141 for(i=0;i<entries;i++)
142 if(c->lengthlist[i]>base)base=c->lengthlist[i];
143
144 for(j=0;j<entries;j++){
145 if(c->lengthlist[j]){
146 int indexdiv=1;
147 fprintf(stderr,"%4ld: ",j);
148 for(k=0;k<c->dim;k++){
149 int index= (j/indexdiv)%bins;
150 fprintf(stderr,"%+3.1f,", c->quantlist[index]*_float32_unpack(c->q_delta)+
151 _float32_unpack(c->q_min));
152 indexdiv*=bins;
153 }
154 fprintf(stderr,"\t|");
155 for(k=0;k<base-c->lengthlist[j];k++)fprintf(stderr,"*");
156 fprintf(stderr,"\n");
157 }
158 }
159 }
160
161 fprintf(stderr,"\r "
162 "\nDone.\n");
163 exit(0);
164 }
val
GLuint const GLfloat * val
Definition: glew.h:2715
s
GLdouble s
Definition: glew.h:1376
codebook::dim
long dim
Definition: codebook.h:59
static_codebook
Definition: codebook.h:36
static_codebook::dim
long dim
Definition: codebook.h:37
main
int main(int argc, char **argv)
Definition: bootstrap.cpp:102
codebook::c
const static_codebook * c
Definition: codebook.h:62
strdup
char * strdup(const char *inStr)
Definition: strdup.c:6
NULL
#define NULL
Definition: ftobjs.h:61
k
int32_t k
Definition: e_log.c:102
in
GLuint in
Definition: glew.h:10672
j
int32_t j
Definition: e_log.c:102
write_codebook
void write_codebook(FILE *out, char *name, const static_codebook *c)
Definition: bookutil.c:437
name
EGLImageKHR EGLint * name
Definition: eglext.h:284
lengths
GLsizei const GLchar const GLint * lengths
Definition: glew.h:1830
build_tree_from_lengths0
void build_tree_from_lengths0(int vals, long *hist, long *lengths)
Definition: bookutil.c:407
static_codebook::lengthlist
long * lengthlist
Definition: codebook.h:39
static_codebook::quantlist
long * quantlist
Definition: codebook.h:52
_float32_unpack
float _float32_unpack(long val)
Definition: sharedbook.c:62
bookutil.h
strrcmp_i
static int strrcmp_i(char *s, char *cmp)
Definition: latticetune.c:26
entries
new_palette entries
Definition: pngrutil.c:1486
sort_controllers.filename
string filename
Definition: sort_controllers.py:8
c
const GLfloat * c
Definition: glew.h:14913
codebook
Definition: codebook.h:58
spinnit
void spinnit(char *s, int n)
Definition: bookutil.c:306
index
GLuint index
Definition: glew.h:1800
setup_line
char * setup_line(FILE *in)
Definition: bookutil.c:174
code
Definition: inftrees.h:24
static_codebook::maptype
int maptype
Definition: codebook.h:42
static_codebook::q_delta
long q_delta
Definition: codebook.h:48
_book_maptype1_quantvals
long _book_maptype1_quantvals(const static_codebook *b)
Definition: sharedbook.c:163
_ogg_calloc
#define _ogg_calloc
Definition: os_types.h:23
String.h
b
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
i
int i
Definition: pngrutil.c:1377
static_codebook::q_min
long q_min
Definition: codebook.h:47
codebook_load
codebook * codebook_load(char *filename)
Definition: bookutil.c:233
codebook::entries
long entries
Definition: codebook.h:60
_ogg_malloc
#define _ogg_malloc
Definition: os_types.h:22