⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getbits.c

📁 xmms-1.2.10.tar.gz学习使用的就下吧
💻 C
字号:
#include "mpg123.h"#if 0static void check_buffer_range(int size){	int pos = (bsi.wordpointer-bsbuf) + (size >> 3);	if( pos >= fsizeold) {		fprintf(stderr, "Pointer out of range (%d,%d)!\n", pos, fsizeold);	}}#endifvoid mpg123_backbits(int number_of_bits){	bsi.bitindex    -= number_of_bits;	bsi.wordpointer += (bsi.bitindex>>3);	bsi.bitindex    &= 0x7;}int mpg123_getbitoffset(void) {	return (-bsi.bitindex)&0x7;}int mpg123_getbyte(void){#ifdef DEBUG_GETBITS	if(bsi.bitindex) 		fprintf(stderr,"getbyte called unsynched!\n");#endif	return *bsi.wordpointer++;}unsigned int mpg123_getbits(int number_of_bits){	unsigned long rval;#ifdef DEBUG_GETBITS	fprintf(stderr, "g%d", number_of_bits);#endif	if(!number_of_bits)		return 0;#if 0	check_buffer_range(number_of_bits + bsi.bitindex);#endif	{		rval = bsi.wordpointer[0];		rval <<= 8;		rval |= bsi.wordpointer[1];		rval <<= 8;		rval |= bsi.wordpointer[2];		rval <<= bsi.bitindex;		rval &= 0xffffff;				bsi.bitindex += number_of_bits;		rval >>= (24-number_of_bits);		bsi.wordpointer += (bsi.bitindex >> 3);		bsi.bitindex &= 7;	}#ifdef DEBUG_GETBITS	fprintf(stderr,":%x ",rval);#endif	return rval;}unsigned int mpg123_getbits_fast(int number_of_bits){	unsigned int rval;#ifdef DEBUG_GETBITS	fprintf(stderr,"g%d",number_of_bits);#endif#if 0	check_buffer_range(number_of_bits+bsi.bitindex);#endif	rval =  (unsigned char) (bsi.wordpointer[0] << bsi.bitindex);	rval |= ((unsigned int) bsi.wordpointer[1] << bsi.bitindex) >> 8;	rval <<= number_of_bits;	rval >>= 8;	bsi.bitindex += number_of_bits;	bsi.wordpointer += (bsi.bitindex >> 3);	bsi.bitindex &= 7;#ifdef DEBUG_GETBITS	fprintf(stderr,":%x ",rval);#endif	return rval;}unsigned int mpg123_get1bit(void){	unsigned char rval;#ifdef DEBUG_GETBITS	fprintf(stderr,"g%d",1);#endif#if 0	check_buffer_range(1+bsi.bitindex);#endif	rval = *bsi.wordpointer << bsi.bitindex;	bsi.bitindex++;	bsi.wordpointer += (bsi.bitindex >> 3);	bsi.bitindex &= 7;#ifdef DEBUG_GETBITS	fprintf(stderr,":%d ",rval >> 7);#endif	return rval>>7;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -