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

📄 mode.hpp

📁 visual c++小波技术和工程实践随书光盘
💻 HPP
📖 第 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
	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)

	Marc Mongenet (Marc.Mongenet@epfl.ch), Swiss Federal Institute of Technology, Lausanne (EPFL)
    
and also edited by
    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 
	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:

	mode.h

Abstract:

	basic coding modes for VO, VOL, VOP, MB	and RD

Revision History:
	Sept. 29, 1997: add Video Packet, data partition, RVLC by Toshiba
	Nov.  27, 1997: add horizontal & vertical sampling factor by Takefumi Nagumo 
									(nagumo@av.crl.sony.co.jp) SONY
	Dec.12 1997 : add interlace tools by NextLevel Systems (General Instrucment), 
				  X. Chen (xchen@nlvl.com) and B. Eifrig (beifrig@nlvl.com)
	May. 9 1998 : add boundary by Hyundai Electronics 
				  Cheol-Soo Park (cspark@super5.hyundai.co.kr)
	May. 9 1998 : add field based MC padding by Hyundai Electronics 
				  Cheol-Soo Park (cspark@super5.hyundai.co.kr)
	Jun.15 1998 : add Complexity Estimation syntax support
				  Marc Mongenet (Marc.Mongenet@epfl.ch) - EPFL
    Feb.16 1999 : add Quarter Sample 
                  Mathias Wien (wien@ient.rwth-aachen.de) 
	Feb.23 1999 : GMC added by Yoshinori Suzuki (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.) 
	Feb.01	2000 : Added bBGComposition flag by Takefumi Nagumo (Sony Corporation)
	Mar.22  2000 : Added bResyncMarkerDisable by Takefumi Nagumo (Sony Corporation)

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

#ifndef __MODE_H_
#define __MODE_H_
class CMBMode;
class CDirectModeData;
class CStatistics;
typedef enum {BASE_LAYER, ENHN_LAYER} VOLtype; // will be generlized later
typedef enum {INTRA, INTRAQ, INTER, INTERQ} DCTMode; // define pixel component
typedef enum {DIRECT, INTERPOLATE, BACKWARD, FORWARD} MBType; // define MB type
typedef enum {UNKNOWN_DIR, HORIZONTAL, VERTICAL, DIAGONAL} Direction;	
typedef enum {ALL_TRANSP, ALL_OPAQUE, INTRA_CAE, INTER_CAE_MVDZ, INTER_CAE_MVDNZ, MVDZ_NOUPDT, MVDNZ_NOUPDT, UNKNOWN} ShapeMode;

//OBSS_SAIT_991015
typedef enum {INTRA_NOT_CODED, INTRA_CODED, INTER_NOT_CODED, INTER_CODED, UNDEFINED} ShapeSSMode; //for OBSS shape mode
typedef enum {V_SCANNING, H_SCANNING} SIDirection;	//for OBSS shape coding
//~OBSS_SAIT_991015

typedef enum {UNTRANSMITTED, TRANSMITTED, UPDATED, FINISHED} MBSptMode; // MB sprite mode
typedef enum {ALPHA_CODED, ALPHA_SKIPPED, ALPHA_ALL255} CODAlpha;
typedef Direction IntraPredDirection;								//for readability
typedef Direction CAEScanDirection;								//for readability

#ifndef NOT_IN_TABLE
#define NOT_IN_TABLE -1
#endif
#ifndef	TCOEF_ESCAPE
#define TCOEF_ESCAPE 102							// see table.13/H.263
#endif
// Added for error resilience mode By Toshiba(1998-1-16:DP+RVLC)
#define TCOEF_RVLC_ESCAPE 169	  	// see table.
//	End Toshiba(1998-1-16:DP+RVLC)

// VM 5.1 Rate Control
#define RC_START_RATE_CONTROL	1
#define RC_MAX_SLIDING_WINDOW	20
#define RC_PAST_PERCENT  		0.05
#define RC_SAFETY_MARGIN 		0.10
#define RC_SKIP_MARGIN 			80
#define RC_MAX_Q_INCREASE		0.25
#define RC_MAX_QUANT 			31
#define RC_MIN_QUANT 			1

#define MAX_MAC 10

// RRV insertion
typedef struct {
//for parameter input, see Documents
	Int		iOnOff;
	Int		iOnOffForI;
	Float	fC1;
	Float	fC2;
	Float	fFR1;
	Float	fFR2;
	Int		iQP1;
	Int		iQP2;
	Int		iCycle;
//for parameter calculate,decide
	Int		iRRVOnOff;		//1==ON,0==OFF
	Int		iQcount;		//Quantizer counter
	Int		iQave;			//average of Q
	Int		iPrevOnOff;		//OnOff of previous VOP
	Int		iNumBits;		//number of previous bits
    Int		iCutoffThr;		// for encoder
} RRVmodeStr;
// ~RRV

typedef struct MVInfo					 // for motion vector coding
{
	UInt uiRange;						 // search range
	UInt uiFCode;						 // f-code 
	UInt uiScaleFactor;					 // scale factor
} MVInfo;

#define PVOP_MV_PER_REF_PER_MB  9
#define BVOP_MV_PER_REF_PER_MB  5


typedef struct VOLMode					 // VideoObjectLayer Mode
{
	UInt		uiVerID;		 // Version identification // GMC
	// type of VOL
	VOLtype		volType;				 // what type of VOL

	// NBIT: nbit information
	Bool bNot8Bit;
	UInt uiQuantPrecision;
	UInt nBits;

	// time info
	Int			iClockRate;				 //rate of clock used to count vops in Hz
	Double	    dFrameHz;				 // Frame frequency (Hz), (floating point in case of 29.97 Hz)

	// shape info
	AlphaUsage	fAUsage;				 //binary or gray level alpha; or no alpha (rectangle VO)
  Int     iAlphaShapeExtension;
  Int     iAuxCompCount;
	Bool		bShapeOnly;				 // code only the shape
	Int			iBinaryAlphaTH;			 //binary shaperounding parameter
	Int			iBinaryAlphaRR;			 //binary shaperounding refresh rate: for Added error resilient mode by Toshiba(1997-11-14)
	Bool		bNoCrChange;			 //nobinary shape size conversion
	
	// motion info
	Bool	bOriginalForME;			// flag indicating whether use the original previous VOP for ME
	UInt	uiWarpingAccuracy;		// indicates the quantization accuracy of motion vector for sprite warping
	Bool	bAdvPredDisable;		// No OBMC, (8x8 in the future).
  Bool    bQuarterSample;         // Quarter sample
	Bool	bRoundingControlDisable;
	Int	iInitialRoundingType;

// NEWPRED
	Bool	bNewpredEnable;
	int 	iRequestedBackwardMessegeType;
	Bool	bNewpredSegmentType;
	char	*cNewpredRefName;
	char	*cNewpredSlicePoint;
// ~NEWPRED
//RESYNC_MARKER_FIX
	Bool	bResyncMarkerDisable;		// resync marker Disable
//~RESYNC_MARKER_FIX
	Bool	bVPBitTh;				// Bit threshold for video packet spacing control
	Bool	bDataPartitioning;		// data partitioning
	Bool	bReversibleVlc;			// reversible VLC

	// texture coding info
	Quantizer fQuantizer;			// either H.263 or MPEG
	Bool bLoadIntraMatrix;			// flag indicating whether to load intra Q-matrix
	Int rgiIntraQuantizerMatrix [BLOCK_SQUARE_SIZE]; // Intra Q-Matrix
	Bool bLoadInterMatrix;			// flag indicating whether to load inter Q-matrix
	Int rgiInterQuantizerMatrix [BLOCK_SQUARE_SIZE]; // Inter Q-Matrix
	Bool bLoadIntraMatrixAlpha;			// flag indicating whether to load intra Q-matrix
	Int  rgiIntraQuantizerMatrixAlpha[MAX_MAC][BLOCK_SQUARE_SIZE];
	Bool bLoadInterMatrixAlpha;			// flag indicating whether to load inter Q-matrix
	Int  rgiInterQuantizerMatrixAlpha[MAX_MAC][BLOCK_SQUARE_SIZE];
	Bool bDeblockFilterDisable;		// apply deblocking filter or not.
	Bool bNoGrayQuantUpdate;		// decouple gray quant and dquant
	EntropyCodeType fEntropyType;	// Entropy code type

	// HHI Klaas Schueuer sadct flag
	Bool	bSadctDisable;
	// end HHI 

	// START: Complexity Estimation syntax support - Marc Mongenet (EPFL) - 15 Jun 1998
	Bool bComplexityEstimationDisable;
	Int iEstimationMethod;
	Bool bShapeComplexityEstimationDisable;
	Bool bOpaque;
	Bool bTransparent;
	Bool bIntraCAE;
	Bool bInterCAE;
	Bool bNoUpdate;
	Bool bUpsampling;
	Bool bTextureComplexityEstimationSet1Disable;
	Bool bIntraBlocks;
	Bool bInterBlocks;
	Bool bInter4vBlocks;
	Bool bNotCodedBlocks;
	Bool bTextureComplexityEstimationSet2Disable;
	Bool bDCTCoefs;
	Bool bDCTLines;
	Bool bVLCSymbols;
	Bool bVLCBits;
	Bool bMotionCompensationComplexityDisable;
	Bool bAPM;
	Bool bNPM;
	Bool bInterpolateMCQ;
	Bool bForwBackMCQ;
	Bool bHalfpel2;
	Bool bHalfpel4;
	// START: Complexity Estimation syntax support - Update version 2 - Massimo Ravasi (EPFL) - 5 Nov 1999
	Bool bVersion2ComplexityEstimationDisable;
	Bool bSadct;
	Bool bQuarterpel;
	// END: Complexity Estimation syntax support - Update version 2

	// START: Vol Control Parameters
	UInt uiVolControlParameters;
	UInt uiChromaFormat;
	UInt uiLowDelay;
	UInt uiVBVParams;
	UInt uiBitRate;
	UInt uiVbvBufferSize;
	UInt uiVbvBufferOccupany;
	// END: Vol Control Parameters

	// frame rate info
	Int iTemporalRate;				//no. of input frames between two encoded VOP's assuming 30Hz input
	Int iPbetweenI;
	Int iBbetweenP;
	Int iGOVperiod;					//number of VOP from GOV header to next GOV header
									//added by SONY 980212

	Bool bAllowSkippedPMBs;

	// scalability info
//#ifdef _Scalable_SONY_
	Int iHierarchyType;
//#endif _Scalable_SONY_
	Int iEnhnType;					//enhancement type

	Int iEnhnTypeSpatial;					//for OBSS partial enhancement mode		//OBSS_SAIT_991015

	Int iSpatialOption;
	Int ihor_sampling_factor_m ;
	Int ihor_sampling_factor_n ;
	Int iver_sampling_factor_m ;
	Int iver_sampling_factor_n ;

//OBSS_SAIT_991015
    // object based spatial scalability
	Int iFrmWidth_SS;						
	Int iFrmHeight_SS;						
	Int iuseRefShape;	
	Int iuseRefTexture;
	Int ihor_sampling_factor_m_shape ;
	Int ihor_sampling_factor_n_shape ;
	Int iver_sampling_factor_m_shape ;
	Int iver_sampling_factor_n_shape ;
	Bool bSpatialScalability;	
//~OBSS_SAIT_991015

	// temporal scalability  // added by Sharp (98/2/10)
	Bool bTemporalScalability;

	// statistics dumping options
	Bool bDumpMB;			// dump statitstics at MB level
	Bool bTrace;			// dumping trace file

	Int	iMVRadiusPerFrameAwayFromRef;	// MV serach radius per frame away from reference VOP
// RRV insertion
	Bool	breduced_resolution_vop_enable;
// ~RRV	
} VOLMode;

typedef struct VOPMode 
{
	Int intStepI;				//用于I-VOP DCT变换的步长
	Int intStep;					//用于P-VOP DCT变换的步长
	Int intStepB;				//用于B-VOPDCT变换的步长
	
	Int intStepIAlpha[MAX_MAC];	//I-VOP中α平面DCT变换的步长
	Int intStepPAlpha[MAX_MAC];	//P-VOP中α平面DCT变换的步长
	Int intStepBAlpha[MAX_MAC];	//B-VOP中α平面DCT变换的步长

	Int intStepDiff;				//更新DCT变换步长的差值
	VOPpredType vopPredType;		//视频对象平面的类型: IVOP, PVOP, BVOP,或者Sprite
	Int iIntraDcSwitchThr;	 		//帧内低频带系数的编码阈值
	Int iRoundingControl;			

⌨️ 快捷键说明

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