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

📄 bitstrm.cpp

📁 EM8511s中使用的mpg播放器
💻 CPP
字号:
#include "bitstrm.h"// this class will increment Err if you proceed past the end of the bufferBitStream::BitStream (unsigned char *pBuffer, unsigned long Length, int *Err){	m_rdbfr = pBuffer;	m_rdbfr_length = Length;	m_nbits = 0;	initbits (Err);}BitStream::~BitStream (){}			   void BitStream::initbits (int *Err){	m_incnt = 0;	m_rdptr = m_rdbfr + m_rdbfr_length;	m_rdmax = m_rdptr;	m_bitcnt = 0;	m_bfr = 0;	m_rdptr = m_rdbfr;	flushbits (0, Err);}// return next n bits (right adjusted) without advancingunsigned int BitStream::showbits (int n){	return m_bfr >> (32-n);}// advance by n bitsvoid BitStream::flushbits (int n, int *Err){	int incnt;	m_nbits += n;	if (n == 32)		m_bfr = 0;	else		m_bfr <<= n;		incnt = m_incnt -= n;	if (incnt <= 24)	{		if (m_rdptr < m_rdbfr+(m_rdbfr_length-4))		{			do			{				m_bfr |= *m_rdptr++ << (24 - incnt);				incnt += 8;			}			while (incnt <= 24);		}		else		{			do			{				if (m_rdptr >= m_rdbfr+m_rdbfr_length)				{					*Err++;					m_bfr |= 0 << (24 - incnt);				}				else					m_bfr |= *m_rdptr++ << (24 - incnt);				incnt += 8;			}			while (incnt <= 24);		}		m_incnt = incnt;	}}void BitStream::flushbits32 (int *Err){	int incnt;	m_nbits += 32;	m_bfr = 0;	incnt = m_incnt;	incnt -= 32;    while (incnt <= 24)    {		if (m_rdptr >= m_rdbfr+m_rdbfr_length)		{			*Err++;			m_bfr |= 0 << (24 - incnt);		}		else			m_bfr |= *m_rdptr++ << (24 - incnt);		incnt += 8;    }	m_incnt = incnt;}// return next n bits (right adjusted)unsigned int BitStream::getbits (int n, int *Err){	unsigned int l;	l = showbits (n);	flushbits (n, Err);	return l;}unsigned int BitStream::getbits32 (int *Err){	unsigned int l;	l = showbits (32);	flushbits32 (Err);	return l;}void BitStream::align (int *Err){	int incnt;	if (m_incnt != 32)	{		incnt = m_incnt % 8;		flushbits (incnt, Err);	}}long BitStream::getnbits (){	return m_nbits;}

⌨️ 快捷键说明

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