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

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

?? vopseenc.cpp

?? 小波圖像變換
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/*************************************************************************

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
	Simon Winder (swinder@microsoft.com), Microsoft Corporation
	(date: March, 1996)
and edited by
        Wei Wu (weiwu@stallion.risc.rockwell.com) Rockwell Science Center

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

and also edited by
	David B. Shu (dbshu@hrl.com), Hughes Electronics/HRL Laboratories

	Marc Mongenet (Marc.Mongenet@epfl.ch), Swiss Federal Institute of Technology, Lausanne (EPFL)

    Mathias Wien (wien@ient.rwth-aachen.de) RWTH Aachen / Robert BOSCH GmbH

and also edited by
	Yoshinori Suzuki (Hitachi, Ltd.)

and also edited by
	Hideaki Kimata (NTT)

and also edited by
    Fujitsu Laboratories Ltd. (contact: Eishi Morimatsu)

and also edited by
    Massimo Ravasi (Massimo.Ravasi@epfl.ch), Swiss Federal Institute of Technology, Lausanne (EPFL)

and also edited by 
	Takefumi Nagumo (nagumo@av.crl.sony.co.jp), Sony Corporation
    Sehoon Son (shson@unitel.co.kr) Samsung AIT

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 standard> conforming products. 
This copyright notice must be included in all copies or derivative works. 

Copyright (c) 1996, 1997.

Module Name:

	vopSeEnc.hpp

Abstract:

	Encoder for one VO.

Revision History:
	Sept. 30, 1997: Error resilient tools added by Toshiba
	Dec.  11, 1997:	Interlaced tools added by NextLevel Systems
					X. Chen, xchen@nlvl.com B. Eifrig, beifrig@nlvl.com
	Jun.  16, 1998: add Complexity Estimation syntax support
					Marc Mongenet (Marc.Mongenet@epfl.ch) - EPFL
	Jan.  28, 1999: Rounding control parameters added by Hitachi, Ltd.
    Feb.  16, 1999: add Quarter Sample 
                    Mathias Wien (wien@ient.rwth-aachen.de) 
	Feb.  24, 1999: GMC added by Hitachi, Ltd.
	May    9, 1999:	tm5 rate control by DemoGraFX, duhoff@mediaone.net (added by mwi)
	Aug.24, 1999:   NEWPRED added by Hideaki Kimata (NTT) 
	Sep.06	1999 : RRV added by Eishi Morimatsu (Fujitsu Laboratories Ltd.) 
	Nov.11  1999 : Fixed Complexity Estimation syntax support, version 2 (Massimo Ravasi, EPFL)
	Feb.12  2000 : Fixed OBSS Bug by Takefumi Nagumo (Sony)

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

#include <stdio.h>
#include <fstream.h>
#include <math.h>
#include <stdlib.h>

#include "typeapi.h"
#include "codehead.h"
#include "global.hpp"
#include "entropy/bitstrm.hpp"
#include "entropy/entropy.hpp"
#include "entropy/huffman.hpp"
#include "mode.hpp"
#include "dct.hpp"
#include "tps_enhcbuf.hpp" // added by Sharp (98/2/12)
#include "vopses.hpp"
#include "vopseenc.hpp"
#include "enhcbufenc.hpp" // added by Sharp (98/2/12)
#include "cae.h" // Added for error resilient mode by Toshiba(1997-11-14)

// NEWPRED
#include "newpred.hpp"
// ~NEWPRED

// RRV
#include "rrv.hpp"
// ~RRV

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

#define new DEBUG_NEW				   
#endif // __MFC_

CVideoObjectEncoder::~CVideoObjectEncoder ()
{
	delete m_pvopcOrig;
	delete m_pvopcRefOrig1;
	delete m_pvopcRefOrig0;

	delete m_puciRefQZoom0;
	delete m_puciRefQZoom1;
	delete m_pfdct;
	delete [] m_rgdSNR;

	// bitstream stuff
	delete [] m_pchBitsBuffer; 
	delete m_pbitstrmOut;
	delete m_pentrencSet;
	delete [] m_pchShapeBitsBuffer;
	delete m_pbitstrmShape;

//	Added for data partitioning mode By Toshiba(1998-1-16:DP+RVLC)
	delete [] *m_pchShapeBitsBuffer_DP;
	delete [] *m_pbitstrmShape_DP;
	delete m_pchShapeBitsBuffer_DP;
	delete m_pbitstrmShape_DP;
//	End Toshiba(1998-1-16)

	// shape
	delete [] m_rgiSubBlkIndx16x16;
	delete [] m_rgiSSubBlkIndx16x16;
	delete [] m_rgiSubBlkIndx18x18;
	delete [] m_rgiSubBlkIndx20x20;
	delete [] m_rgiPxlIndx12x12;
	delete [] m_rgiPxlIndx8x8;

	// B-VOP MB buffer
	delete m_puciDirectPredMB;
	delete m_puciInterpPredMB;
	delete m_piiDirectErrorMB; 
	delete m_piiInterpErrorMB; 
}

CVideoObjectEncoder::CVideoObjectEncoder (
	UInt uiVOId, 
	VOLMode& volmd, 
	VOPMode& vopmd, 
	UInt nFirstFrame,
	UInt nLastFrame,
	Int iSessionWidth,
	Int iSessionHeight,
	UInt uiRateControl,
	UInt uiBudget,
	ostream* pstrmTrace, // trace outstream
	UInt uiSprite, // for sprite usage // GMC
	UInt uiWarpingAccuracy, // for sprite warping
	Int iNumOfPnts, // for sprite warping
	CSiteD** rgstDest, // for sprite warping destination
	SptMode SpriteMode,					// sprite reconstruction mode
	CRct rctFrame,						// sprite warping source
    CRct rctSpt,     	// rct sprite
	Int iMVFileUsage,
	Char* pchMVFileName
) :
	CVideoObject (),
	m_nFirstFrame (nFirstFrame), m_nLastFrame (nLastFrame), 
	m_iBufferSize (uiBudget), m_uiRateControl (uiRateControl),
	m_pvopcOrig (NULL),
	m_rgiSubBlkIndx16x16 (NULL),
	m_rgiSSubBlkIndx16x16 (NULL),
	m_rgiSubBlkIndx18x18 (NULL),
	m_rgiSubBlkIndx20x20 (NULL),
	m_rgiPxlIndx12x12 (NULL),
	m_rgiPxlIndx8x8 (NULL),
	m_pscanSelector (0), // HHI Schueuer
  m_statsVOL(volmd.iAuxCompCount),
  m_statsVOP(volmd.iAuxCompCount),
  m_statsMB (volmd.iAuxCompCount)
{
	m_ivolWidth = iSessionWidth;
	m_ivolHeight = iSessionHeight;		
		
	// sprite stuff
	if (iNumOfPnts >= 0) {
		m_uiSprite = uiSprite; // GMC
		m_uiWarpingAccuracy = uiWarpingAccuracy;
		m_iNumOfPnts = iNumOfPnts;
		m_rgstSrcQ = new CSiteD [m_iNumOfPnts];
		m_rgstDstQ = new CSiteD [m_iNumOfPnts];
// GMC
	    if(m_uiSprite == 1)
	    {
// ~GMC
		m_rctSpt = rctSpt;
		//#ifdef __LOW_LATENCY_SPRITE_
		m_pprgstDest = rgstDest;
		m_sptMode = SpriteMode ;
		m_rctOrg = 	rctFrame;
		m_rctDisplayWindow = m_rctOrg;	//only used for sprite, will be combined with Org later
// GMC
	    }
// ~GMC
	}
	else 
		m_uiSprite = 0;

	m_pchBitsBuffer = new Char [iSessionWidth * iSessionHeight * 2];	//we think this is enof for 4:2:0; if crushes, increase the buffer
	m_pbitstrmOut = new COutBitStream (m_pchBitsBuffer, 0, pstrmTrace);
	m_pentrencSet = new CEntropyEncoderSet (*m_pbitstrmOut);

	// shape cache
	m_pchShapeBitsBuffer = new Char [MB_SIZE * MB_SIZE * 2]; // same as above
	m_pbitstrmShape = new COutBitStream (m_pchShapeBitsBuffer, 0, pstrmTrace);
	m_pbitstrmShapeMBOut = m_pbitstrmOut; // initially the output stream (only changes for inter)

	m_uiVOId = uiVOId;
	m_volmd = volmd;

	// NBIT: set right clip table
	setClipTab();

	Int iClockRate = m_volmd.iClockRate-1;
	assert (iClockRate < 65536);
	if(iClockRate>0)
	{
		for (m_iNumBitsTimeIncr = 1; m_iNumBitsTimeIncr < NUMBITS_TIME_RESOLUTION; m_iNumBitsTimeIncr++)	{	
			if (iClockRate == 1)			
				break;
			iClockRate = (iClockRate >> 1);
		}
	}
	else
		m_iNumBitsTimeIncr = 0;

	m_vopmd = vopmd;
//	decideMVInfo ();                // MV search radius now varys with GOP
// GMC
	if(m_uiSprite == 1){
	    m_vopmd.iRoundingControlEncSwitch = 0;
	    m_vopmd.iRoundingControl = 0;
	}else{
// ~GMC
	    m_vopmd.iRoundingControlEncSwitch = m_volmd.iInitialRoundingType;
	    if(!m_volmd.bRoundingControlDisable)
		m_vopmd.iRoundingControlEncSwitch ^= 0x00000001;
	    m_vopmd.iRoundingControl = m_vopmd.iRoundingControlEncSwitch;
// GMC
	}
// ~GMC
//OBSS_SAIT_991015
	Int iSessionWidthRound=0;
	Int iSessionHeightRound=0;
	//if(!(m_volmd.bSpatialScalability && m_volmd.iHierarchyType==0)) {
	if(!(m_volmd.bSpatialScalability && m_volmd.iHierarchyType==0 && m_volmd.fAUsage == ONE_BIT)) {    //OBSSFIX_V2-8_after
		Int iMod = iSessionWidth % MB_SIZE; 
		iSessionWidthRound = (iMod > 0) ? iSessionWidth + MB_SIZE - iMod : iSessionWidth;
		iMod = iSessionHeight % MB_SIZE;
		iSessionHeightRound = (iMod > 0) ? iSessionHeight + MB_SIZE - iMod : iSessionHeight;
	}
	else {
		iSessionWidthRound = iSessionWidth;
		iSessionHeightRound = iSessionHeight;
	}
/*
	Int iMod = iSessionWidth % MB_SIZE;
	Int iSessionWidthRound = (iMod > 0) ? iSessionWidth + MB_SIZE - iMod : iSessionWidth;
	iMod = iSessionHeight % MB_SIZE;
	Int iSessionHeightRound = (iMod > 0) ? iSessionHeight + MB_SIZE - iMod : iSessionHeight;
	*/
//~OBSS_SAIT_991015

//	Added for data partitioning mode By Toshiba(1998-1-16:DP+RVLC)
	Int iMB;
	Int iMBN = (iSessionWidthRound/MB_SIZE)*(iSessionHeightRound/MB_SIZE);
	m_pchShapeBitsBuffer_DP = new Char* [iMBN];
	m_pbitstrmShape_DP = new COutBitStream* [iMBN];
	for (iMB = 0; iMB < iMBN; iMB++) {
		m_pchShapeBitsBuffer_DP[iMB] = new Char [MB_SIZE * MB_SIZE * 2]; // same as above
		m_pbitstrmShape_DP[iMB] = new COutBitStream (m_pchShapeBitsBuffer_DP[iMB], 0, pstrmTrace);
	}
// End Toshiba(1998-1-16:DP+RVLC)
	m_rctRefFrameY = CRct (
		-EXPANDY_REF_FRAME, -EXPANDY_REF_FRAME, 
		EXPANDY_REF_FRAME + iSessionWidthRound, EXPANDY_REF_FRAME + iSessionHeightRound
	);
	m_rctRefFrameUV = m_rctRefFrameY.downSampleBy2 ();
	m_pvopcOrig = new CVOPU8YUVBA( m_volmd.fAUsage, m_rctRefFrameY, m_volmd.iAuxCompCount);
  m_pvopcRefOrig0 = new CVOPU8YUVBA( m_volmd.fAUsage, m_rctRefFrameY, m_volmd.iAuxCompCount);
	m_pvopcRefOrig1 = new CVOPU8YUVBA (m_volmd.fAUsage, m_rctRefFrameY, m_volmd.iAuxCompCount);
	allocateVOLMembers (iSessionWidthRound, iSessionHeightRound);

    //#ifdef __LOW_LATENCY_SPRITE_
	// identify initial sprite piece
	if ((m_uiSprite == 1) && (m_sptMode != BASIC_SPRITE) ){
		initialSpritePiece (iSessionWidthRound, iSessionHeightRound);
	}

    CRct rctFrameZoom = m_rctRefFrameY.upSampleBy2 ();
	m_puciRefQZoom0 = new CU8Image (rctFrameZoom);

	m_puciRefQZoom1 = new CU8Image (rctFrameZoom);

	// HHI Schueuer: sadct
	if (m_volmd.fAUsage != RECTANGLE && (!m_volmd.bSadctDisable)) {
		m_pfdct = new CFwdSADCT(volmd.nBits);
		m_pscanSelector = new CScanSelectorForSADCT(m_rgiCurrMBCoeffWidth);
	}
	else {
		m_pfdct = new CFwdBlockDCT(volmd.nBits);
		m_pscanSelector = new CScanSelector;
	}
	// end HHI
	// m_pfdct = new CFwdBlockDCT(volmd.nBits);

	// B-VOP MB buffer
	m_puciDirectPredMB = new CU8Image (CRct (0, 0, MB_SIZE, MB_SIZE));
	m_puciInterpPredMB = new CU8Image (CRct (0, 0, MB_SIZE, MB_SIZE));
	m_ppxlcDirectPredMBY = (PixelC*) m_puciDirectPredMB->pixels (); 
	m_ppxlcInterpPredMBY = (PixelC*) m_puciInterpPredMB->pixels (); 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品999在线播放| 悠悠色在线精品| 一区二区三区在线视频观看| 香蕉久久一区二区不卡无毒影院| 国产麻豆精品久久一二三| 在线视频国内一区二区| 久久男人中文字幕资源站| 亚洲女人小视频在线观看| 久久草av在线| 欧美三区在线观看| 国产日产欧美一区二区视频| 奇米影视一区二区三区| 色噜噜狠狠色综合欧洲selulu| 久久久蜜桃精品| 蜜臀av亚洲一区中文字幕| 色婷婷久久99综合精品jk白丝| 久久精品亚洲精品国产欧美| 看片的网站亚洲| 欧美丰满嫩嫩电影| 亚洲自拍另类综合| 91视频xxxx| 中文字幕精品综合| 粉嫩一区二区三区在线看| 日韩你懂的电影在线观看| 天天av天天翘天天综合网| 色婷婷精品久久二区二区蜜臂av| 国产精品美女久久久久久久久| 国产美女精品在线| 日韩精品一区二区三区视频| 日韩福利电影在线| 欧美日韩mp4| 天天综合天天做天天综合| 欧美亚洲自拍偷拍| 亚洲成av人影院| 91精品在线一区二区| 亚洲电影你懂得| 欧美日韩国产一级| 人人爽香蕉精品| 在线成人午夜影院| 美女任你摸久久 | 成人动漫精品一区二区| 国产欧美日韩亚州综合| 国产老肥熟一区二区三区| 久久精品亚洲一区二区三区浴池| 国产精品18久久久久久久久久久久 | 亚洲动漫第一页| 欧美日韩成人综合在线一区二区 | 亚洲欧洲成人精品av97| 色菇凉天天综合网| 香蕉久久夜色精品国产使用方法| 欧美一区二区精品久久911| 精品一区二区三区免费毛片爱| 精品区一区二区| www.激情成人| 亚洲国产wwwccc36天堂| 日韩欧美一级二级三级久久久| 国产成人在线免费| 亚洲美女视频在线观看| 538在线一区二区精品国产| 另类成人小视频在线| 欧美国产欧美综合| 欧美综合一区二区三区| 精品一区二区三区欧美| 国产精品乱码久久久久久| 在线精品视频一区二区三四| 蜜桃av一区二区在线观看| 国产欧美日韩综合| 欧美日韩在线直播| 国产一区二区91| 亚洲黄色小视频| 精品国产麻豆免费人成网站| 成人av免费在线观看| 亚洲.国产.中文慕字在线| 国产三级精品三级| 欧美色精品在线视频| 国产精品自拍一区| 亚洲蜜臀av乱码久久精品蜜桃| 日韩亚洲欧美综合| 一本到高清视频免费精品| 精品一区二区三区香蕉蜜桃| 一区二区三区日韩欧美精品| 久久先锋资源网| 欧美日韩一区精品| 不卡视频一二三| 久久av中文字幕片| 亚洲午夜久久久久久久久电影院| 久久久久久久久99精品| 51精品国自产在线| 99久久99精品久久久久久| 久久国产人妖系列| 一区二区三区四区不卡在线| 国产精品视频免费| 26uuu精品一区二区在线观看| 欧美午夜精品免费| 成人app下载| 国产在线播放一区二区三区| 亚洲成av人片观看| 亚洲伦在线观看| 国产精品美女视频| 欧美精品一区二区不卡| 欧美精品日日鲁夜夜添| 不卡的av在线| 成人免费精品视频| 国产精品正在播放| 精品亚洲国内自在自线福利| 日精品一区二区三区| 亚洲亚洲精品在线观看| 中文字幕一区二区视频| 国产精品久久久久精k8 | 亚洲美女屁股眼交| 中文字幕一区二区三区乱码在线| 欧美精品一区二区在线播放| 欧美电影免费观看高清完整版在线 | 91精品国产综合久久小美女| 欧美手机在线视频| 欧美日韩在线精品一区二区三区激情 | 日本亚洲最大的色成网站www| 亚洲精品美国一| 一区二区三区免费看视频| 亚洲日本丝袜连裤袜办公室| 中文字幕一区二| 综合久久一区二区三区| 亚洲美女区一区| 亚洲一区二区美女| 五月天视频一区| 日本免费新一区视频| 伦理电影国产精品| 精品在线免费观看| 国产精品系列在线观看| 不卡视频一二三四| 91国产成人在线| 欧美伦理视频网站| 精品国产一区二区三区忘忧草| 精品国产污污免费网站入口 | 国产乱子伦一区二区三区国色天香| 久久精品国产999大香线蕉| 国产在线看一区| 成人av影视在线观看| 在线看一区二区| 日韩一区二区三区四区五区六区| 日韩一级二级三级| 久久久av毛片精品| 有坂深雪av一区二区精品| 日韩激情视频在线观看| 国产尤物一区二区在线| av不卡在线观看| 欧美日韩国产a| 久久久久久一级片| 亚洲免费观看视频| 久久精品国产网站| 丁香网亚洲国际| 欧美理论片在线| 欧美经典一区二区三区| 亚洲一区二区三区视频在线播放| 蜜桃av一区二区在线观看 | 色婷婷久久一区二区三区麻豆| 91精品国产综合久久久久| 久久久久国产免费免费| 亚洲资源中文字幕| 粉嫩在线一区二区三区视频| 欧美亚洲动漫精品| 国产午夜精品久久久久久久| 亚洲第一电影网| av在线一区二区| 日韩免费高清视频| 一区二区三区资源| 国产一区激情在线| 欧美视频三区在线播放| 中文字幕第一区综合| 午夜精品一区二区三区免费视频 | 亚洲制服丝袜在线| 国产成人午夜片在线观看高清观看| 欧美视频一区二| 18成人在线观看| 国产精品白丝jk白祙喷水网站| 欧美久久久久久蜜桃| 亚洲免费在线播放| 国产超碰在线一区| 日韩欧美专区在线| 婷婷一区二区三区| 一本到不卡免费一区二区| 国产午夜亚洲精品理论片色戒 | 91精品视频网| 亚洲观看高清完整版在线观看 | 136国产福利精品导航| 精品一区二区三区免费观看| 91精品国产综合久久精品| 亚洲综合激情网| 91麻豆福利精品推荐| 中文字幕一区二区三区色视频| 国内精品伊人久久久久影院对白| 日韩一区二区三区精品视频 | 国产精品国产自产拍高清av | 日本一区中文字幕| 欧美电影一区二区三区| 亚洲国产日韩av| 欧美日韩在线电影| 视频一区二区中文字幕| 欧美日韩国产天堂| 亚洲高清不卡在线观看|