亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bitstrm.cpp

?? visual c++小波技術和工程實踐隨書光盤
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*************************************************************************

This software module was originally developed by 

	Ming-Chieh Lee (mingcl@microsoft.com), Microsoft Corporation
	Wei-ge Chen (wchen@microsoft.com), Microsoft Corporation
	Bruce Lin (blin@microsoft.com), Microsoft Corporation
	Chuang Gu (chuanggu@microsoft.com), Microsoft Corporation
	(date: March, 1996)

and edited by
	Yoshihiro Kikuchi (TOSHIBA CORPORATION)
	Takeshi Nagai (TOSHIBA CORPORATION)
	Toshiaki Watanabe (TOSHIBA CORPORATION)
	Noboru Yamaguchi (TOSHIBA CORPORATION)

in the course of development of the MPEG-4 Video (ISO/IEC 14496-2). 
This software module is an implementation of a part of one or more MPEG-4 Video tools 
as specified by the MPEG-4 Video. 
ISO/IEC gives users of the MPEG-4 Video free license to this software module or modifications 
thereof for use in hardware or software products claiming conformance to the MPEG-4 Video. 
Those intending to use this software module in hardware or software products are advised that its use may infringe existing patents. 
The original developer of this software module and his/her company, 
the subsequent editors and their companies, 
and ISO/IEC have no liability for use of this software module or modifications thereof in an implementation. 
Copyright is not released for non MPEG-4 Video conforming products. 
Microsoft retains full right to use the code for his/her own purpose, 
assign or donate the code to a third party and to inhibit third parties from using the code for non MPEG-4 Video conforming products. 
This copyright notice must be included in all copies or derivative works. 

Copyright (c) 1996, 1997.

Module Name:
	
	bitstrm.cpp

Abstract:

	Classes for bitstream I/O.

Revision History:

*************************************************************************/

#include "typeapi.h"
#include "bitstrm.hpp"
#include <istream.h>
#include <ostream.h>
#include <stdio.h>
#include <stdlib.h>

#ifdef __MFC_
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif

#define new DEBUG_NEW				   
#endif // __MFC_

UInt getbit (UInt data, UInt position, UInt num) // get the num-bit field of x starting from position p
{
	return ((data >> (position + 1 - num)) & ~(~0 << num));
}

Void print_bit (UInt x, UInt num, UInt startPos) // print num bits starting from startPos
{
	for (Int k = 0; k <= (Int) (num - startPos); k++) {
		UInt y = getbit (x, num, 1);
		printf ("%u ", y);
		x = x << 1;
	}
	printf ("\n");
}

Char CInBitStream::getBitsC (Int iNOfBits)
{
    assert (iNOfBits <= 8);
    assert (iNOfBits >= 0);
	return (Char)  getBits ((UInt) iNOfBits);
}

UInt CInBitStream::getBits (UInt numBits)
{
	assert (numBits <= 32);
	if (numBits == 0) return 0;
	
	UInt retData;
	if (m_uNumOfBitsInBuffer >= numBits) {	// don't need to read from FILE
		retData = getbit (m_chDecBuffer, 7, numBits);
		m_chDecBuffer = m_chDecBuffer << numBits;
		m_uNumOfBitsInBuffer -= numBits;
        m_lCounter += numBits;
	}
	else { // ready, but need to handle the leftover part
		numBits -= m_uNumOfBitsInBuffer; // left-over unhandled bits
		retData = getbit (m_chDecBuffer, 7, m_uNumOfBitsInBuffer) << numBits;
        m_lCounter += m_uNumOfBitsInBuffer;
		assert(!m_pInStream->eof()); // dont allow repeated gets off end of file
        m_chDecBuffer = m_pInStream -> get ();
		m_uNumOfBitsInBuffer = 8;
		retData += getBits (numBits);
	}
	return retData;

}

Void CInBitStream::getBits (Char *pBits, Int lNOfBits)
{
    assert (lNOfBits <= 8);
    assert (lNOfBits >= 0);

    while(lNOfBits>0)
    {
        if(lNOfBits>8)
        {
            *pBits=(Char) getBitsC(8);
            lNOfBits-=8;
            pBits++;
        }
        else
        {
            *pBits=(Char) getBitsC ((UInt) lNOfBits);
            break;
        }
    }
}

Void CInBitStream::attach (istream &inStream, Int iBitPosition)
{
    assert(iBitPosition<8);
    assert(iBitPosition>=0);
    m_iBitPosition=iBitPosition;
    m_pInStream=&inStream;
    m_iBuffer=0x00ff&m_pInStream->peek();
}

Void CInBitStream::flush (Int nExtraBits)
{
//	Modified for error resilient mode by Toshiba(1997-11-14)
	if(m_uNumOfBitsInBuffer==0) getBits (nExtraBits);		//first get some bits then flush
	//getBits (nExtraBits);		//first get some bits then flush
//	End Toshiba(1997-11-14)
	assert (m_uNumOfBitsInBuffer != 8);
	m_lCounter += m_uNumOfBitsInBuffer;
	m_uNumOfBitsInBuffer = 0;
}

Void CInBitStream::setBookmark ()
{
	bookmark (1);
}

Void CInBitStream::gotoBookmark ()
{
	bookmark (0);
}

Void CInBitStream::bookmark (Bool bSet)
{
	static Bool bBookmarkOn = FALSE;
	static streampos strmpos;
	static UInt uNumOfBitsInBuffer;
	static Char chDecBuffer;
	static Int lCounter;

	if(bSet) {
		strmpos	= m_pInStream -> tellg();
		uNumOfBitsInBuffer = m_uNumOfBitsInBuffer;
		chDecBuffer = m_chDecBuffer;
		lCounter = m_lCounter;
		bBookmarkOn = TRUE;
	}
	else {
		m_pInStream -> seekg (strmpos); 
		m_uNumOfBitsInBuffer = uNumOfBitsInBuffer; 
		m_chDecBuffer = chDecBuffer; 
		m_lCounter = lCounter; 
		bBookmarkOn = FALSE;
	}
}

COutBitStream::COutBitStream (Char* pchBuffer, Int iBitPosition, ostream* pstrmTrace) : 
	m_pstrmTrace (pstrmTrace),
	m_chEncBuffer (0),
	m_uEncNumEmptyBits (8)
{
	assert (iBitPosition < 8);
	assert (iBitPosition >= 0);
	m_iBitPosition = iBitPosition;
	m_pchBuffer = pchBuffer;
	m_lCounter = 0;
	m_pchBufferRun = m_pchBuffer;
	m_iBuffer = 0;
// Added for Data Partitioning mode by Toshiba(1998-1-16)
	m_bDontSendBits = FALSE;
// End Toshiba(1998-1-16)
}
 

Void COutBitStream::reset ()		//but keep the byte buffer
{
//	m_uEncNumEmptyBits = 8;
//	m_chEncBuffer = 0;
	m_pchBufferRun = m_pchBuffer;
	m_iBuffer = 0;
}

Void COutBitStream::resetAll ()
{
	m_iBitPosition = 0;
	m_lCounter = 0;
	m_uEncNumEmptyBits = 8;
	m_chEncBuffer = 0;
	m_pchBufferRun = m_pchBuffer;
	m_iBuffer = 0;
}

Void COutBitStream::setBookmark ()
{
	bookmark (1);
}

Void COutBitStream::gotoBookmark ()
{
	bookmark (0);
}

Void COutBitStream::bookmark (Bool bSet)
{
	static Bool bBookmarkOn = FALSE;
	static Int iBitPosition;
	static Int lCounter;
	static UInt uEncNumEmptyBits;
	static U8 chEncBuffer;
	static Char* pchBufferRun;
	static Int iBuffer;

	if (bSet) {
		iBitPosition = m_iBitPosition;
		lCounter = m_lCounter;
		uEncNumEmptyBits = m_uEncNumEmptyBits;
		chEncBuffer = m_chEncBuffer;
		pchBufferRun = m_pchBufferRun;
		iBuffer = m_iBuffer;
		bBookmarkOn = TRUE;
	}
	else {
		m_iBitPosition = iBitPosition;
		m_lCounter = lCounter;
		m_uEncNumEmptyBits = uEncNumEmptyBits;
		m_chEncBuffer = chEncBuffer;
		m_pchBufferRun = pchBufferRun;
		m_iBuffer = iBuffer;
		bBookmarkOn = FALSE;
	}
}

Void COutBitStream::putBitsC (Char cBits,Int iNOfBits)
{
	putBits ((Int) cBits, (UInt) iNOfBits); 
}


Void COutBitStream::putBits (Int data, UInt numBits, const Char* rgchSymbolName)
{	
	assert (numBits < 100);				//usually not that large
	if (numBits == 0) return;

// Added for Data Partitioning mode by Toshiba(1998-1-16)
	if(m_bDontSendBits) return;
// End Toshiba(1998-1-16)

#ifdef __TRACE_AND_STATS_
	if (m_pstrmTrace != NULL && rgchSymbolName != NULL)	{
		Char* rgchBinaryForm = new Char [numBits + 1];
		assert (rgchBinaryForm != NULL);
		m_pstrmTrace->width (20);
		(*m_pstrmTrace) << rgchSymbolName << ": ";
		Int iMask = 0xFFFFFFFF;
		iMask = iMask << numBits;
		iMask = ~iMask;
		Int iCleanData = data & iMask;
		//_itoa (iCleanData, rgchBinaryForm, 2);	// win32 only
		Int iBit;
		iMask = 0x00000001;
		for (iBit = (Int) numBits - 1; iBit >= 0; iBit--)	{
			rgchBinaryForm [iBit] = ((iCleanData & iMask) == 0) ? '0' : '1';
			iMask = iMask << 1;
		}
		rgchBinaryForm [numBits] = '\0';
		m_pstrmTrace->width (numBits);
		m_pstrmTrace->fill ('0');
		(*m_pstrmTrace) << rgchBinaryForm;
		m_pstrmTrace->fill (' ');
		(*m_pstrmTrace) << " @" << m_lCounter << '\n';
		m_pstrmTrace->flush ();
		delete rgchBinaryForm;
	}
#endif // __TRACE_AND_STATS_

	if (m_uEncNumEmptyBits > numBits) {	// not ready to put the data to buffer since it's not full
		m_uEncNumEmptyBits -= numBits;
		Char mskData = (0xFF >> (8 - numBits)) & data; 
		mskData = mskData << m_uEncNumEmptyBits;
		m_chEncBuffer = m_chEncBuffer ^ mskData;
        m_lCounter += numBits;
	}
	else if (m_uEncNumEmptyBits == numBits) { // ready
		Char mskData = (0xFF >> (8 - numBits)) & data; 
		m_chEncBuffer = m_chEncBuffer ^ mskData;
		*m_pchBufferRun++ = m_chEncBuffer;
		m_iBuffer++;
		m_chEncBuffer = 0;
		m_uEncNumEmptyBits = 8;
        m_lCounter += numBits;
	}
	else { // ready, but need to handle the leftover part
		UInt temp = getbit (data, numBits - 1, m_uEncNumEmptyBits);
		numBits -= m_uEncNumEmptyBits; // length of unhandled part
		m_chEncBuffer = m_chEncBuffer ^ temp;
        m_lCounter += m_uEncNumEmptyBits;
		*m_pchBufferRun++ = m_chEncBuffer;
		m_iBuffer++;
		m_chEncBuffer = 0;
		m_uEncNumEmptyBits = 8;
		data = data ^ (temp << numBits);
		putBits (data, numBits);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精选视频在线| 99re这里只有精品首页| 欧美影视一区在线| 中文字幕在线观看不卡| 国产一区在线视频| 久久综合色8888| 精品一区二区三区在线观看| 51精品视频一区二区三区| 亚洲五月六月丁香激情| 色妞www精品视频| 伊人色综合久久天天| 91老师国产黑色丝袜在线| 中文字幕一区二区三区在线观看| 蓝色福利精品导航| 欧美综合在线视频| 亚洲乱码一区二区三区在线观看| a亚洲天堂av| 亚洲日本在线看| 在线观看国产一区二区| 日本亚洲视频在线| 日韩欧美一级精品久久| 亚洲国产sm捆绑调教视频 | 国产精品的网站| 99re这里只有精品首页| 亚洲综合成人在线视频| 欧美日韩一区二区三区免费看| 樱花影视一区二区| 日韩天堂在线观看| 国产剧情一区二区| 国产精品国产三级国产| 欧美综合天天夜夜久久| 日韩av高清在线观看| 26uuu亚洲综合色| 成人av资源网站| 香蕉久久夜色精品国产使用方法| 日韩一本二本av| 国模冰冰炮一区二区| 国产精品毛片久久久久久| 色视频欧美一区二区三区| 日本一区中文字幕 | 一区二区欧美在线观看| 欧美精品久久99久久在免费线 | 最新成人av在线| 欧美三级视频在线观看| 久久精品国产999大香线蕉| 久久久国际精品| 色婷婷狠狠综合| 久久99国产精品尤物| 中文字幕在线观看一区二区| 欧美二区三区91| 成人综合激情网| 日韩不卡手机在线v区| 国产精品毛片久久久久久| 在线电影国产精品| 成人av电影在线网| 免费成人在线视频观看| 亚洲色图欧洲色图| 精品久久一区二区三区| 成人高清免费观看| 美国毛片一区二区| 一区二区三区四区亚洲| 国产亚洲精品精华液| 欧美午夜精品久久久久久孕妇| 国产在线精品一区二区| 亚洲福利一二三区| 中文一区在线播放| 欧美大片在线观看| 欧美日韩一区二区在线观看| 久久不见久久见免费视频1| 国产精品福利av| 国产女人aaa级久久久级| 欧美猛男gaygay网站| 成人综合婷婷国产精品久久| 麻豆91精品视频| 亚洲午夜激情网站| 中文字幕亚洲在| 国产欧美一区二区精品秋霞影院| 在线播放一区二区三区| 91免费在线看| 成人夜色视频网站在线观看| 亚洲一区二区欧美激情| 精品国产乱码久久久久久夜甘婷婷| 成人av网在线| 不卡av免费在线观看| 国产成人免费在线观看不卡| 日本亚洲最大的色成网站www| 亚洲欧洲国产日韩| 精品国产91亚洲一区二区三区婷婷| 国产精华液一区二区三区| 亚洲成人综合视频| 亚洲三级在线免费观看| 欧美v亚洲v综合ⅴ国产v| 欧美视频在线一区| 99在线精品观看| 国产一区二区0| 久久成人免费网| 国产成人啪午夜精品网站男同| 国产精品亚洲第一| 国产传媒一区在线| 国产福利视频一区二区三区| 国产精品99久久久久久久女警| 国产一区二区福利视频| 国产成人自拍网| 成av人片一区二区| 日本韩国精品在线| 在线观看精品一区| 91精品欧美一区二区三区综合在| 91精品欧美久久久久久动漫 | 亚洲狼人国产精品| 亚洲欧美日韩小说| 亚洲一区精品在线| 日韩黄色片在线观看| 亚洲一二三区视频在线观看| 亚洲一区二区三区精品在线| 一区二区三区成人| 亚洲成av人**亚洲成av**| 亚洲福利电影网| 偷拍一区二区三区| 国产福利一区二区三区视频在线| 成人免费毛片a| 欧美在线观看一区二区| 91精品国产一区二区| 精品国产乱码久久| 国产精品国产三级国产有无不卡 | 亚洲人成在线观看一区二区| 一区二区三区蜜桃网| 日韩综合小视频| 国产一区二区三区| fc2成人免费人成在线观看播放| 在线观看日产精品| 日韩精品一区二区三区在线观看 | 麻豆国产精品视频| 福利电影一区二区三区| 在线观看亚洲精品视频| 精品入口麻豆88视频| 欧美国产乱子伦| 午夜视频在线观看一区| 国产一区二区三区在线观看精品| 不卡视频免费播放| 日韩欧美国产一区二区三区| 国产精品女上位| 日韩精品色哟哟| 国产成人av电影在线观看| 色噜噜狠狠成人中文综合| 欧美精品免费视频| 中文字幕一区二区三区色视频| 日韩av不卡在线观看| 不卡视频一二三| 欧美成人精品3d动漫h| 亚洲男人电影天堂| 国产精品原创巨作av| 717成人午夜免费福利电影| 国产欧美日韩综合| 蜜桃一区二区三区在线观看| 91在线国产福利| 久久久久久久久岛国免费| 性做久久久久久免费观看| 成人免费毛片片v| 欧美色国产精品| 国产精品色哟哟网站| 日本伊人色综合网| 欧美偷拍一区二区| 国产欧美日韩在线看| 日韩电影免费在线看| 色就色 综合激情| 国产色爱av资源综合区| 日本伊人色综合网| 欧美色区777第一页| 亚洲色图欧洲色图婷婷| 粉嫩av一区二区三区粉嫩| 日韩欧美国产成人一区二区| 亚洲国产中文字幕| 欧美中文字幕一区二区三区| 国产精品污污网站在线观看| 久久国产精品99久久久久久老狼| 欧美精品丝袜中出| 亚洲电影欧美电影有声小说| 99久久婷婷国产综合精品 | 99精品欧美一区二区三区小说 | 久久精品一区二区三区av| 男男gaygay亚洲| 日韩一区二区三免费高清| 亚洲伊人色欲综合网| 日本精品视频一区二区三区| 一色屋精品亚洲香蕉网站| 成人晚上爱看视频| 国产视频亚洲色图| 成人一区二区三区| 亚洲欧美自拍偷拍| 99久久婷婷国产精品综合| 中文字幕中文字幕在线一区 | zzijzzij亚洲日本少妇熟睡| 2017欧美狠狠色| 岛国av在线一区| 国产精品久久精品日日| 丁香激情综合五月| 亚洲第一久久影院| 久久亚洲影视婷婷| 色先锋资源久久综合| 天天影视涩香欲综合网|