Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/speex.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>2002-03-27 09:30:37 +0300
committerjmvalin <jmvalin@0101bb08-14d6-0310-b084-bc0e0c8e3800>2002-03-27 09:30:37 +0300
commitc174ba9d7a95bd9f76250108cd1ba017dd16fb3e (patch)
tree4d5a75646232a1ca2eda270801c699a39f15cb98 /libspeex
parent05b7bed82809ce142dba07a00c77a584e9388dfe (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.c35
-rw-r--r--libspeex/bits.h4
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);