00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef BITS_H
00037 #define BITS_H
00038
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042
00044 typedef struct SpeexBits {
00045 char *bytes;
00046 int nbBits;
00047 int bytePtr;
00048 int bitPtr;
00049 int owner;
00050 int overflow;
00051 int buf_size;
00052 int reserved1;
00053 void *reserved2;
00054 } SpeexBits;
00055
00057 void speex_bits_init(SpeexBits *bits);
00058
00060 void speex_bits_init_buffer(SpeexBits *bits, void *buff, int buf_size);
00061
00063 void speex_bits_destroy(SpeexBits *bits);
00064
00066 void speex_bits_reset(SpeexBits *bits);
00067
00069 void speex_bits_rewind(SpeexBits *bits);
00070
00072 void speex_bits_read_from(SpeexBits *bits, char *bytes, int len);
00073
00079 void speex_bits_read_whole_bytes(SpeexBits *bits, char *bytes, int len);
00080
00082 int speex_bits_write(SpeexBits *bits, char *bytes, int max_len);
00083
00085 int speex_bits_write_whole_bytes(SpeexBits *bits, char *bytes, int max_len);
00086
00092 void speex_bits_pack(SpeexBits *bits, int data, int nbBits);
00093
00100 int speex_bits_unpack_signed(SpeexBits *bits, int nbBits);
00101
00108 unsigned int speex_bits_unpack_unsigned(SpeexBits *bits, int nbBits);
00109
00115 int speex_bits_nbytes(SpeexBits *bits);
00116
00118 unsigned int speex_bits_peek_unsigned(SpeexBits *bits, int nbBits);
00119
00125 int speex_bits_peek(SpeexBits *bits);
00126
00132 void speex_bits_advance(SpeexBits *bits, int n);
00133
00138 int speex_bits_remaining(SpeexBits *bits);
00139
00145 void speex_bits_insert_terminator(SpeexBits *bits);
00146
00147 #ifdef __cplusplus
00148 }
00149 #endif
00150
00151 #endif