speex_bits.h

Go to the documentation of this file.
00001 /* Copyright (C) 2002 Jean-Marc Valin */
00006 /*
00007    Redistribution and use in source and binary forms, with or without
00008    modification, are permitted provided that the following conditions
00009    are met:
00010    
00011    - Redistributions of source code must retain the above copyright
00012    notice, this list of conditions and the following disclaimer.
00013    
00014    - Redistributions in binary form must reproduce the above copyright
00015    notice, this list of conditions and the following disclaimer in the
00016    documentation and/or other materials provided with the distribution.
00017    
00018    - Neither the name of the Xiph.org Foundation nor the names of its
00019    contributors may be used to endorse or promote products derived from
00020    this software without specific prior written permission.
00021    
00022    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00023    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00024    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
00025    A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
00026    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00027    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00028    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00029    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00030    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00031    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00032    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00033 
00034 */
00035 
00036 #ifndef BITS_H
00037 #define BITS_H
00038 
00044 #ifdef __cplusplus
00045 extern "C" {
00046 #endif
00047 
00049 typedef struct SpeexBits {
00050    char *chars;   
00051    int   nbBits;  
00052    int   charPtr; 
00053    int   bitPtr;  
00054    int   owner;   
00055    int   overflow;
00056    int   buf_size;
00057    int   reserved1; 
00058    void *reserved2; 
00059 } SpeexBits;
00060 
00062 void speex_bits_init(SpeexBits *bits);
00063 
00065 void speex_bits_init_buffer(SpeexBits *bits, void *buff, int buf_size);
00066 
00068 void speex_bits_set_bit_buffer(SpeexBits *bits, void *buff, int buf_size);
00069 
00071 void speex_bits_destroy(SpeexBits *bits);
00072 
00074 void speex_bits_reset(SpeexBits *bits);
00075 
00077 void speex_bits_rewind(SpeexBits *bits);
00078 
00080 void speex_bits_read_from(SpeexBits *bits, char *bytes, int len);
00081 
00088 void speex_bits_read_whole_bytes(SpeexBits *bits, char *bytes, int len);
00089 
00097 int speex_bits_write(SpeexBits *bits, char *bytes, int max_len);
00098 
00100 int speex_bits_write_whole_bytes(SpeexBits *bits, char *bytes, int max_len);
00101 
00107 void speex_bits_pack(SpeexBits *bits, int data, int nbBits);
00108 
00115 int speex_bits_unpack_signed(SpeexBits *bits, int nbBits);
00116 
00123 unsigned int speex_bits_unpack_unsigned(SpeexBits *bits, int nbBits);
00124 
00130 int speex_bits_nbytes(SpeexBits *bits);
00131 
00138 unsigned int speex_bits_peek_unsigned(SpeexBits *bits, int nbBits);
00139 
00146 int speex_bits_peek(SpeexBits *bits);
00147 
00153 void speex_bits_advance(SpeexBits *bits, int n);
00154 
00160 int speex_bits_remaining(SpeexBits *bits);
00161 
00167 void speex_bits_insert_terminator(SpeexBits *bits);
00168 
00169 #ifdef __cplusplus
00170 }
00171 #endif
00172 
00173 /* @} */
00174 #endif

Generated on Sat Dec 6 22:03:22 2008 for Speex by  doxygen 1.5.1