diff options
author | jmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800> | 2002-03-27 06:40:32 +0300 |
---|---|---|
committer | jmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800> | 2002-03-27 06:40:32 +0300 |
commit | 05b7bed82809ce142dba07a00c77a584e9388dfe (patch) | |
tree | c9432751ca0fee55e45f686462e4c74c0ea62400 /libspeex | |
parent | 251630f15692164cd1d1c32620c807612ca5f419 (diff) |
Don't fill the last byte in the frame before saving (saves a couple bits
per frame).
git-svn-id: http://svn.xiph.org/trunk/speex@3191 0101bb08-14d6-0310-b084-bc0e0c8e3800
Diffstat (limited to 'libspeex')
-rw-r--r-- | libspeex/bits.c | 15 | ||||
-rw-r--r-- | libspeex/bits.h | 2 |
2 files changed, 17 insertions, 0 deletions
diff --git a/libspeex/bits.c b/libspeex/bits.c index 42636d3..ab24c72 100644 --- a/libspeex/bits.c +++ b/libspeex/bits.c @@ -79,6 +79,21 @@ int frame_bits_write(FrameBits *bits, char *bytes, int max_len) return max_len; } +int frame_bits_write_whole_bytes(FrameBits *bits, char *bytes, int max_len) +{ + int i; + if (max_len > ((bits->nbBits)>>3)) + max_len = ((bits->nbBits)>>3); + for (i=0;i<max_len;i++) + bytes[i]=bits->bytes[i]; + + bits->bytes[0]=bits->bytes[max_len]; + bits->bytePtr=0; + bits->nbBits-=((bits->nbBits)>>3)<<3; + return max_len; +} + + void frame_bits_pack(FrameBits *bits, int data, int nbBits) { unsigned int d=data; diff --git a/libspeex/bits.h b/libspeex/bits.h index c5ed0bf..259ddc3 100644 --- a/libspeex/bits.h +++ b/libspeex/bits.h @@ -43,6 +43,8 @@ void frame_bits_init_from(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); + void frame_bits_pack(FrameBits *bits, int data, int nbBits); int frame_bits_unpack_signed(FrameBits *bits, int nbBits); |