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

📄 cbitstream.cpp

📁 这是G.723和G.729的音频编解码的源代码
💻 CPP
字号:

#include "stdafx.h"
#include "color.h"
#include "Cbitstream.h"
#include "commonvar.h"

inline void CBitStream::PutOneBit1(void)
{	CurrentWriteByte|=bit_set_mask[BitPosition--];
	if (BitPosition<0)
		{OutputBuffer[BytePosition++]=CurrentWriteByte;
		 BitPosition=7;
		 CurrentWriteByte=0;
		}
}

inline void CBitStream::PutOneBit0(void)
{
	if (--BitPosition<0)
		{OutputBuffer[BytePosition++]=CurrentWriteByte;
		 BitPosition=7;
		 CurrentWriteByte=0;
		}
}

int CBitStream::ZeroFlush(void)
{
    int bits = 0;
    while (BitPosition!=7)
		{PutOneBit0();
	     bits++;
		}
	ByteLength=BytePosition;
    return bits;
}

void CBitStream::PutOneBit(BOOL BitValue)
{
    if (BitValue) 
		PutOneBit1();
    else 
		PutOneBit0();
}

void CBitStream::PutVarible(int BitValue,int BitCount)
{
	BYTE OrByte;
	DWORD ww;
	int BitLeft;
	if (BitCount<=BitPosition)
		{OrByte=(BYTE)(BitValue&msk[BitCount]);
		 CurrentWriteByte|=(OrByte<<(BitPosition-BitCount+1));
		 BitPosition-=BitCount;
		}
	else if (BitCount==(BitPosition+1))
		{OrByte=(BYTE)(BitValue&msk[BitCount]);
		 BitPosition=7;
		 OutputBuffer[BytePosition++]=(CurrentWriteByte|OrByte);
		 CurrentWriteByte=0;
		}
	else
		{BitLeft=BitCount-BitPosition-1;
		 ww=BitValue&(msk[BitPosition+1]<<BitLeft);
		 OrByte=(BYTE)(ww>>BitLeft);
		 OutputBuffer[BytePosition++]=(CurrentWriteByte|OrByte);
		 BitPosition=7;
		 CurrentWriteByte=0;
		 while (BitLeft>=8)
			{ww=(BitValue&msk[BitLeft])>>(BitLeft-8);
			 OutputBuffer[BytePosition++]=(BYTE)ww;
			 BitLeft-=8;
			}
		 if (BitLeft>0)
			{OrByte=(BYTE)(BitValue&msk[BitLeft]);
			 CurrentWriteByte=OrByte<<(8-BitLeft);
			 BitPosition=7-BitLeft;
			}
		}
}

⌨️ 快捷键说明

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