60 while(bs[
books])books++;
69 fprintf(stderr,
"Specify at least one codebook\n");
83 static float _dist(
int el,
float *
a,
float *
b){
87 float val=(a[
i]-b[
i]);
95 float min=-1.f,
max=-1.f,mean=0.f,meansq=0.f;
106 (localmin==-1 ||
this<localmin))
111 if(min==-1 || localmin<min)min=localmin;
113 mean+=sqrt(localmin);
119 fprintf(stderr,
"\tminimum cell spacing (closest side): %g\n",sqrt(min));
120 fprintf(stderr,
"\tmaximum cell spacing (closest side): %g\n",sqrt(
max));
121 fprintf(stderr,
"\tmean closest side spacing: %g\n",mean/total);
122 fprintf(stderr,
"\tmean sq closest side spacing: %g\n",sqrt(meansq/total));
127 char *
buffer=alloca(strlen(basename)+80);
129 fprintf(stderr,
"Done. Processed %ld data points:\n\n",
132 fprintf(stderr,
"Global statistics:******************\n\n");
134 fprintf(stderr,
"\ttotal samples: %ld\n",(
long)count);
135 fprintf(stderr,
"\ttotal bits required to code: %ld\n",(
long)
bits);
136 fprintf(stderr,
"\taverage bits per sample: %g\n\n",bits/count);
138 fprintf(stderr,
"\tmean sample amplitude: %g\n",
140 fprintf(stderr,
"\tmean squared sample amplitude: %g\n\n",
143 fprintf(stderr,
"\tmean code error: %g\n",
145 fprintf(stderr,
"\tmean squared code error: %g\n\n",
148 for(book=0;book<
books;book++){
154 fprintf(stderr,
"Book %d statistics:------------------\n",book);
158 sprintf(buffer,
"%s-%d-mse.m",basename,book);
159 out=fopen(buffer,
"w");
161 fprintf(stderr,
"Could not open file %s for writing\n",buffer);
167 fprintf(out,
"%d, %g, %g\n",
174 sprintf(buffer,
"%s-%d-me.m",basename,book);
175 out=fopen(buffer,
"w");
177 fprintf(stderr,
"Could not open file %s for writing\n",buffer);
183 fprintf(out,
"%d, %g, %g\n",
190 sprintf(buffer,
"%s-%d-worst.m",basename,book);
191 out=fopen(buffer,
"w");
193 fprintf(stderr,
"Could not open file %s for writing\n",buffer);
199 fprintf(out,
"%d, %g, %g, %g\n",
237 fprintf(stderr,
"Internal error: _best returned -1.\n");
245 float error=a[j*step];
266 for(bi=0;bi<
books;bi++){
273 base=
process_one(b,bi,a+i,dim,n/dim,addmul[bi],base);
275 for(i=0;i<=n-dim;i+=dim)
285 "usage: vqmetrics [-i] +|*<codebook>.vqh [ +|*<codebook.vqh> ]... \n"
286 " datafile.vqd [datafile.vqd]...\n\n"
287 " data can be taken on stdin. -i indicates interleaved coding.\n"
288 " Output goes to output files:\n"
289 " basename-me.m: gnuplot: mean error by entry value\n"
290 " basename-mse.m: gnuplot: mean square error by entry value\n"
291 " basename-worst.m: gnuplot: worst error by entry value\n"
292 " basename-distance.m: gnuplot file showing distance probability\n"
GLuint const GLfloat * val
void cell_spacing(codebook *c)
static float _dist(int el, float *a, float *b)
const static_codebook * c
static float * _now(codebook *c, int i)
float process_one(codebook *b, int book, float *a, int dim, int step, int addmul, float base)
long vorbis_book_codelen(codebook *book, int entry)
GLboolean GLboolean GLboolean GLboolean a
void process_vector(codebook **bs, int *addmul, int inter, float *a, int n)
void process_postprocess(codebook **bs, char *basename)
float meanamplitudesq_acc
EGLContext EGLenum EGLClientBuffer buffer
int vorbis_book_besterror(codebook *book, float *a, int step, int addmul)
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * bits
void spinnit(char *s, int n)
float ** histogram_errorsq
void process_preprocess(codebook **bs, char *basename)
GLdouble GLdouble GLdouble b