summaryrefslogtreecommitdiff
path: root/lib/codebook.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/codebook.c')
-rw-r--r--lib/codebook.c60
1 files changed, 9 insertions, 51 deletions
diff --git a/lib/codebook.c b/lib/codebook.c
index e6361850..9f01186a 100644
--- a/lib/codebook.c
+++ b/lib/codebook.c
@@ -11,7 +11,7 @@
********************************************************************
function: basic codebook pack/unpack/code/decode operations
- last mod: $Id: codebook.c,v 1.24 2001/05/27 06:43:59 xiphmont Exp $
+ last mod: $Id: codebook.c,v 1.25 2001/06/04 05:50:10 xiphmont Exp $
********************************************************************/
@@ -341,52 +341,10 @@ long vorbis_book_decode(codebook *book, oggpack_buffer *b){
return(-ptr);
}
-/* returns the entry number or -1 on eof *************************************/
-long vorbis_book_decodevs(codebook *book,float *a,oggpack_buffer *b,
- int step,int addmul){
- long entry=vorbis_book_decode(book,b);
- int i,o;
- float *t;
- if(entry==-1)return(-1);
- t = book->valuelist+entry*book->dim;
- switch(addmul){
- case -1:
- for(i=0,o=0;i<book->dim-3;i+=4,o+=4*step) {
- a[o]=t[i];
- a[o+step]=t[i+1];
- a[o+2*step]=t[i+2];
- a[o+3*step]=t[i+3];
- }
- for(;i<book->dim;i++,o+=step)
- a[o]=t[i];
- break;
- case 0:
- for(i=0,o=0;i<book->dim-3;i+=4,o+=4*step) {
- a[o]+=t[i];
- a[o+step]+=t[i+1];
- a[o+2*step]+=t[i+2];
- a[o+3*step]+=t[i+3];
- }
- for(;i<book->dim;i++,o+=step)
- a[o]+=t[i];
- break;
- case 1:
- for(i=0,o=0;i<book->dim-3;i+=4,o+=4*step) {
- a[o]*=t[i];
- a[o+step]*=t[i+1];
- a[o+2*step]*=t[i+2];
- a[o+3*step]*=t[i+3];
- }
- for(;i<book->dim;i++,o+=step)
- a[o]*=t[i];
- break;
- }
- return(entry);
-}
-
/* returns 0 on OK or -1 on eof *************************************/
-long s_vorbis_book_decodevs(codebook *book,float *a,oggpack_buffer *b,
- int step,int addmul){
+long vorbis_book_decodevs(codebook *book,float *a,oggpack_buffer *b,
+ int n,int addmul){
+ int step=n/book->dim;
long *entry = alloca(sizeof(long)*step);
float **t = alloca(sizeof(float *)*step);
int i,j,o;
@@ -416,14 +374,14 @@ long s_vorbis_book_decodevs(codebook *book,float *a,oggpack_buffer *b,
return(0);
}
-long s_vorbis_book_decodev(codebook *book,float *a,oggpack_buffer *b,
- int partsize,int addmul){
+long vorbis_book_decodev(codebook *book,float *a,oggpack_buffer *b,
+ int n,int addmul){
int i,j,entry;
float *t;
switch(addmul){
case -1:
- for(i=0;i<partsize;){
+ for(i=0;i<n;){
entry = vorbis_book_decode(book,b);
if(entry==-1)return(-1);
t = book->valuelist+entry*book->dim;
@@ -432,7 +390,7 @@ long s_vorbis_book_decodev(codebook *book,float *a,oggpack_buffer *b,
}
break;
case 0:
- for(i=0;i<partsize;){
+ for(i=0;i<n;){
entry = vorbis_book_decode(book,b);
if(entry==-1)return(-1);
t = book->valuelist+entry*book->dim;
@@ -441,7 +399,7 @@ long s_vorbis_book_decodev(codebook *book,float *a,oggpack_buffer *b,
}
break;
case 1:
- for(i=0;i<partsize;){
+ for(i=0;i<n;){
entry = vorbis_book_decode(book,b);
if(entry==-1)return(-1);
t = book->valuelist+entry*book->dim;