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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? bitstrm.cpp

?? visual c++小波技術(shù)和工程實(shí)踐隨書光盤
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*************************************************************************

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);
	}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲天堂成人在线观看| 在线中文字幕不卡| 天使萌一区二区三区免费观看| 国产欧美一区二区三区在线老狼| 精品国产乱子伦一区| 日韩精品在线一区| 精品国内二区三区| 久久伊人中文字幕| 国产精品乱码一区二三区小蝌蚪| 国产精品第五页| 国产精品色眯眯| 最新日韩av在线| 亚洲精品免费电影| 午夜成人在线视频| 久久国产精品色| 国产成人三级在线观看| 成人影视亚洲图片在线| 国产成人免费视| 国产69精品久久777的优势| 国产精品小仙女| 国产suv一区二区三区88区| 国产精品1024| 在线欧美日韩精品| 欧美午夜不卡在线观看免费| 欧美日韩小视频| 欧美一区二区在线免费播放| 精品国产欧美一区二区| 久久综合色婷婷| 一区二区三区在线不卡| 美女脱光内衣内裤视频久久影院| 国产乱一区二区| 91女人视频在线观看| 日韩一卡二卡三卡四卡| 久久久久久久久久看片| 一区二区三区资源| 紧缚奴在线一区二区三区| 成人免费视频网站在线观看| 欧美婷婷六月丁香综合色| 欧美一级欧美三级在线观看 | 欧美午夜精品一区二区蜜桃| 欧美一区二区三区电影| 亚洲欧洲性图库| 久99久精品视频免费观看| 日本道在线观看一区二区| 精品久久久影院| 亚洲一级在线观看| 成人手机在线视频| 精品国内片67194| 丝袜美腿亚洲综合| 色妹子一区二区| xf在线a精品一区二区视频网站| 亚洲欧洲日产国码二区| 国产麻豆精品视频| 91性感美女视频| 久久久久久久久久美女| 亚洲另类春色校园小说| 91丨九色丨国产丨porny| 精品国内二区三区| 亚洲一卡二卡三卡四卡无卡久久| 日本最新不卡在线| 欧美性猛交xxxxxx富婆| 欧美精品高清视频| 亚洲视频中文字幕| 久久精品国产免费| 国产成人av资源| 一区二区三区不卡视频| 日本成人在线网站| 欧美日韩第一区日日骚| 91碰在线视频| 一区二区三区自拍| 91免费国产视频网站| 欧美在线一区二区| 久久先锋资源网| 五月天亚洲婷婷| 欧美日韩成人在线一区| ...xxx性欧美| 欧美亚洲尤物久久| 亚洲精品国产无天堂网2021| 成人sese在线| 亚洲色图欧洲色图| 99视频精品在线| 亚洲色图欧美偷拍| 91黄色免费看| 日韩影院精彩在线| 91麻豆精品国产91久久久久| 亚洲精品日日夜夜| 欧美欧美欧美欧美首页| 蜜桃视频第一区免费观看| 欧美不卡激情三级在线观看| 国产一区二区调教| 国产精品久久毛片a| 99re66热这里只有精品3直播| 亚洲日本va午夜在线影院| 日本精品一区二区三区高清| 五月婷婷综合网| 欧美一区在线视频| 国产精品亚洲一区二区三区妖精 | 亚洲色图20p| 欧美撒尿777hd撒尿| 日日摸夜夜添夜夜添国产精品| 日韩一区二区在线免费观看| 国产精品18久久久久久久久久久久| 中文字幕一区二区三区不卡在线| 在线观看免费亚洲| 久久99久久99| 亚洲欧美一区二区三区国产精品| 欧美人与禽zozo性伦| 国产美女精品一区二区三区| 亚洲日本韩国一区| 日韩午夜激情免费电影| 99热国产精品| 日韩久久一区二区| 欧美日韩成人在线| 懂色av一区二区三区免费看| 一区二区三区日韩| 亚洲精品一区二区三区影院| 色婷婷久久一区二区三区麻豆| 久久精品国产第一区二区三区| 亚洲人成在线观看一区二区| 日韩区在线观看| proumb性欧美在线观看| 久久精品久久精品| 亚洲色图视频免费播放| 久久精品免费在线观看| 在线观看亚洲a| 蜜臀a∨国产成人精品| 久久九九99视频| 福利一区二区在线| 午夜精品视频在线观看| 日韩一区二区在线看| 国产日韩视频一区二区三区| 欧洲国产伦久久久久久久| 亚洲精品国产无天堂网2021| 久久久久亚洲综合| 欧美一区二区三区人| 久久精品国产亚洲a| 亚洲欧美偷拍卡通变态| 久久这里只有精品首页| 日韩欧美国产综合| 欧美在线短视频| 一本到不卡免费一区二区| a美女胸又www黄视频久久| 国产激情一区二区三区桃花岛亚洲| 午夜精品成人在线视频| 一区二区三区不卡视频| 亚洲视频一区二区免费在线观看| 国产欧美一区二区在线| 国产日本欧美一区二区| 精品国精品国产| 欧美va在线播放| 久久综合狠狠综合久久综合88| 日韩欧美激情在线| 日韩一级免费观看| 日韩精品一区二区三区三区免费| 91精品国产aⅴ一区二区| 欧美精品精品一区| 欧美大片一区二区三区| 精品免费国产二区三区| 久久久久国产一区二区三区四区 | 精品免费一区二区三区| 精品区一区二区| 26uuu国产电影一区二区| 精品少妇一区二区三区免费观看| 91精品国产91综合久久蜜臀| 欧美日韩精品系列| 日韩欧美在线1卡| 久久久久国产成人精品亚洲午夜| 久久久久久久网| 欧美韩国日本综合| 亚洲欧美中日韩| 亚洲制服丝袜在线| 免费成人小视频| 国产精品自拍毛片| 91麻豆高清视频| 欧美日韩小视频| 欧美一区二区三级| 日韩欧美一级片| 国产人伦精品一区二区| 亚洲天堂中文字幕| 性欧美疯狂xxxxbbbb| 午夜视频久久久久久| 日本不卡视频一二三区| 久久av资源站| 99视频有精品| 日韩免费在线观看| 亚洲欧美激情在线| 裸体在线国模精品偷拍| 国产精品18久久久久久久久久久久 | 青青草一区二区三区| 成人午夜视频福利| 欧美日韩国产天堂| 中文字幕第一区第二区| 亚洲福利一二三区| 成人97人人超碰人人99| 538在线一区二区精品国产| 中文字幕在线免费不卡| 亚洲成av人影院| caoporm超碰国产精品| 91麻豆精品国产91久久久久久 | 久久99精品国产麻豆不卡|