www.pudn.com > VC写的MP3播放器源代码.zip > bitpool.h


#ifndef __BITPOOL_H_ 
#define __BITPOOL_H_ 
 
#include "resource.h"       // main symbols 
#include "datatables.h"		// PROM DATA 
 
 
 
#define BUFSIZE 4096 
 
 
class CBitPool  
{ 
public: 
 
	CBitPool(); 
	~CBitPool(); 
 
	DWORD	GetReadBits() const { return(m_PlayedBits); } 
	DWORD	GetBits(DWORD dwBits); 
	_inline DWORD	GetFastOneBit() 
	{ 
		DWORD dwRetVal PURE; 
		m_PlayedBits++; 
		if (m_restBits == 0)  
		{ 
			m_restBits = 8; 
			m_playedOctets++; 
		} 
		DWORD xmask = 0xFFFFFFFF >> (32 - m_restBits); 
		dwRetVal = m_pDwBuff[m_playedOctets & 0xfff] & xmask; 
		m_restBits--; 
		dwRetVal = dwRetVal >> m_restBits; 
		return dwRetVal; 
	} 
 
	_inline void AddTail(int dwRetVal) 
	{ 
		m_pDwBuff[m_offset] = (BYTE)dwRetVal; 
		m_offset = (m_offset + 1) & 0xfff; 
	} 
 
	void	GoBackBits(int dwBits); 
	void	GoBackOctets(int bites = BUFSIZE); 
	// void	ShowBin	(DWORD val); // debug purpose MCO 
	 
	 
 
private: 
	DWORD		m_offset; 
	DWORD		m_PlayedBits; 
	DWORD		m_playedOctets; 
	DWORD		m_restBits; 
	DWORD		m_InWordAcumulated; 
	DWORD*		m_pDwBuff; 
}; 
#endif //__BITPOOL_H_