| cannam@85 | 1 /* | 
| cannam@85 | 2  * libmad - MPEG audio decoder library | 
| cannam@85 | 3  * Copyright (C) 2000-2004 Underbit Technologies, Inc. | 
| cannam@85 | 4  * | 
| cannam@85 | 5  * This program is free software; you can redistribute it and/or modify | 
| cannam@85 | 6  * it under the terms of the GNU General Public License as published by | 
| cannam@85 | 7  * the Free Software Foundation; either version 2 of the License, or | 
| cannam@85 | 8  * (at your option) any later version. | 
| cannam@85 | 9  * | 
| cannam@85 | 10  * This program is distributed in the hope that it will be useful, | 
| cannam@85 | 11  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| cannam@85 | 12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| cannam@85 | 13  * GNU General Public License for more details. | 
| cannam@85 | 14  * | 
| cannam@85 | 15  * You should have received a copy of the GNU General Public License | 
| cannam@85 | 16  * along with this program; if not, write to the Free Software | 
| cannam@85 | 17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
| cannam@85 | 18  * | 
| cannam@85 | 19  * $Id: bit.h,v 1.12 2004/01/23 09:41:32 rob Exp $ | 
| cannam@85 | 20  */ | 
| cannam@85 | 21 | 
| cannam@85 | 22 # ifndef LIBMAD_BIT_H | 
| cannam@85 | 23 # define LIBMAD_BIT_H | 
| cannam@85 | 24 | 
| cannam@85 | 25 struct mad_bitptr { | 
| cannam@85 | 26   unsigned char const *byte; | 
| cannam@85 | 27   unsigned short cache; | 
| cannam@85 | 28   unsigned short left; | 
| cannam@85 | 29 }; | 
| cannam@85 | 30 | 
| cannam@85 | 31 void mad_bit_init(struct mad_bitptr *, unsigned char const *); | 
| cannam@85 | 32 | 
| cannam@85 | 33 # define mad_bit_finish(bitptr)		/* nothing */ | 
| cannam@85 | 34 | 
| cannam@85 | 35 unsigned int mad_bit_length(struct mad_bitptr const *, | 
| cannam@85 | 36 			    struct mad_bitptr const *); | 
| cannam@85 | 37 | 
| cannam@85 | 38 # define mad_bit_bitsleft(bitptr)  ((bitptr)->left) | 
| cannam@85 | 39 unsigned char const *mad_bit_nextbyte(struct mad_bitptr const *); | 
| cannam@85 | 40 | 
| cannam@85 | 41 void mad_bit_skip(struct mad_bitptr *, unsigned int); | 
| cannam@85 | 42 unsigned long mad_bit_read(struct mad_bitptr *, unsigned int); | 
| cannam@85 | 43 void mad_bit_write(struct mad_bitptr *, unsigned int, unsigned long); | 
| cannam@85 | 44 | 
| cannam@85 | 45 unsigned short mad_bit_crc(struct mad_bitptr, unsigned int, unsigned short); | 
| cannam@85 | 46 | 
| cannam@85 | 47 # endif |