1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-04-30 15:49:41 +02:00
2010-01-24 09:19:39 +00:00

92 lines
2.4 KiB
C

/********************************************************************
* *
* 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: function call to do simple data cascading
last mod: $Id: cascade.c,v 1.4 2008-02-02 15:54:07 richardash1981 Exp $
********************************************************************/
/* this one outputs residue to stdout. */
#include <stdlib.h>
#include <unistd.h>
#include <math.h>
#include "bookutil.h"
/* set up metrics */
float count=0.f;
void process_preprocess(codebook **bs,char *basename){
}
void process_postprocess(codebook **b,char *basename){
fprintf(stderr,"Done. \n");
}
float process_one(codebook *b,float *a,int dim,int step,int addmul,
float base){
int j;
if(b->c->q_sequencep){
float temp;
for(j=0;j<dim;j++){
temp=a[j*step];
a[j*step]-=base;
}
base=temp;
}
vorbis_book_besterror(b,a,step,addmul);
return base;
}
void process_vector(codebook **bs,int *addmul,int inter,float *a,int n){
int i,bi=0;
int booknum=0;
while(*bs){
float base=0.f;
codebook *b=*bs;
int dim=b->dim;
if(inter){
for(i=0;i<n/dim;i++)
base=process_one(b,a+i,dim,n/dim,addmul[bi],base);
}else{
for(i=0;i<=n-dim;i+=dim)
base=process_one(b,a+i,dim,1,addmul[bi],base);
}
bs++;
booknum++;
bi++;
}
for(i=0;i<n;i++)
fprintf(stdout,"%f, ",a[i]);
fprintf(stdout,"\n");
if((long)(count++)%100)spinnit("working.... lines: ",count);
}
void process_usage(void){
fprintf(stderr,
"usage: vqcascade [-i] +|*<codebook>.vqh [ +|*<codebook.vqh> ]... \n"
" datafile.vqd [datafile.vqd]...\n\n"
" data can be taken on stdin. residual error data sent to\n"
" stdout.\n\n");
}