diff options
author | jmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800> | 2002-03-27 09:30:37 +0300 |
---|---|---|
committer | jmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800> | 2002-03-27 09:30:37 +0300 |
commit | c174ba9d7a95bd9f76250108cd1ba017dd16fb3e (patch) | |
tree | 4d5a75646232a1ca2eda270801c699a39f15cb98 /libspeex | |
parent | 05b7bed82809ce142dba07a00c77a584e9388dfe (diff) |
Think the encoder and decoder work! Still a couple fixes left...
git-svn-id: http://svn.xiph.org/trunk/speex@3192 0101bb08-14d6-0310-b084-bc0e0c8e3800
Diffstat (limited to 'libspeex')
-rw-r--r-- | libspeex/bits.c | 35 | ||||
-rw-r--r-- | libspeex/bits.h | 4 |
2 files changed, 35 insertions, 4 deletions
diff --git a/libspeex/bits.c b/libspeex/bits.c index ab24c72..d194311 100644 --- a/libspeex/bits.c +++ b/libspeex/bits.c @@ -69,6 +69,30 @@ void frame_bits_init_from(FrameBits *bits, char *bytes, int len) bits->bitPtr=0; } +void frame_bits_flush(FrameBits *bits) +{ + int i; + if (bits->bytePtr>0) + { + for (i=bits->bytePtr;i<((bits->nbBits+7)>>3);i++) + bits->bytes[i-bits->bytePtr]=bits->bytes[i]; + } + bits->nbBits -= bits->bytePtr<<3; + bits->bytePtr=0; +} + +void frame_bits_read_whole_bytes(FrameBits *bits, char *bytes, int len) +{ + int i,pos; + printf ("reading:\n"); + printf ("%d %d %d\n", bits->nbBits, bits->bytePtr, bits->bitPtr); + /*frame_bits_flush(bits);*/ + pos=bits->nbBits>>3; + for (i=0;i<len;i++) + bits->bytes[pos+i]=bytes[i]; + bits->nbBits+=len<<3; +} + int frame_bits_write(FrameBits *bits, char *bytes, int max_len) { int i; @@ -86,10 +110,15 @@ int frame_bits_write_whole_bytes(FrameBits *bits, char *bytes, int max_len) max_len = ((bits->nbBits)>>3); for (i=0;i<max_len;i++) bytes[i]=bits->bytes[i]; - - bits->bytes[0]=bits->bytes[max_len]; + + if (bits->bitPtr>0) + bits->bytes[0]=bits->bytes[max_len]; + else + bits->bytes[0]=0; + for (i=1;i<((bits->nbBits)>>3)+1;i++) + bits->bytes[i]=0; bits->bytePtr=0; - bits->nbBits-=((bits->nbBits)>>3)<<3; + bits->nbBits &= 7; return max_len; } diff --git a/libspeex/bits.h b/libspeex/bits.h index 259ddc3..fb5dd0c 100644 --- a/libspeex/bits.h +++ b/libspeex/bits.h @@ -22,7 +22,7 @@ #ifndef BITS_H #define BITS_H -#define MAX_BYTES_PER_FRAME 1000 +#define MAX_BYTES_PER_FRAME 1000000 typedef struct FrameBits { char bytes[MAX_BYTES_PER_FRAME]; @@ -41,6 +41,8 @@ void frame_bits_rewind(FrameBits *bits); void frame_bits_init_from(FrameBits *bits, char *bytes, int len); +void frame_bits_read_whole_bytes(FrameBits *bits, char *bytes, int len); + int frame_bits_write(FrameBits *bits, char *bytes, int max_len); int frame_bits_write_whole_bytes(FrameBits *bits, char *bytes, int max_len); |