📄 mode.hpp
字号:
/*************************************************************************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 Centerand 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)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.hAbstract: basic coding modes for VO, VOL, VOP, MB and RDRevision 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 May 9, 1999 : tm5 rate control by DemoGraFX, duhoff@mediaone.net*************************************************************************/#ifndef __MODE_H_#define __MODE_H_Class CMBMode;Class CDirectModeData;Class CStatistics;typedef enum {BASE_LAYER, ENHN_LAYER} VOLtype; // will be generlized latertypedef enum {INTRA, INTRAQ, INTER, INTERQ} DCTMode; // define pixel componenttypedef enum {DIRECT, INTERPOLATE, BACKWARD, FORWARD} MBType; // define MB typetypedef 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;typedef enum {UNTRANSMITTED, TRANSMITTED, UPDATED, FINISHED} MBSptMode; // MB sprite modetypedef enum {ALPHA_CODED, ALPHA_SKIPPED, ALPHA_ALL255} CODAlpha;typedef Direction IntraPredDirection; //for readabilitytypedef 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 1typedef 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 5typedef struct VOLMode // VideoObjectLayer Mode{ // 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) 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 bRoundingControlDisable; Int iInitialRoundingType; 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 [BLOCK_SQUARE_SIZE]; Bool bLoadInterMatrixAlpha; // flag indicating whether to load inter Q-matrix Int rgiInterQuantizerMatrixAlpha [BLOCK_SQUARE_SIZE]; Bool bDeblockFilterDisable; // apply deblocking filter or not. Bool bNoGrayQuantUpdate; // decouple gray quant and dquant EntropyCodeType fEntropyType; // Entropy code type // 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: 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 iSpatialOption; Int ihor_sampling_factor_m ; Int ihor_sampling_factor_n ; Int iver_sampling_factor_m ; Int iver_sampling_factor_n ; // 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} VOLMode;typedef struct VOPMode // VideoObjectPlane Mode{ // user specify, per VOP Int intStepI; // I-VOP stepsize for DCT Int intStep; // P-VOP stepsize for DCT Int intStepB; // B-VOP stepsize for DCT Int intStepIAlpha; // I-VOP stepsize for DCT alpha Int intStepPAlpha; // P-VOP stepsize for DCT alpha Int intStepBAlpha; // B-VOP stepsize for DCT alpha Int intStepDiff; // stepsize difference for updating for DCT (DQUANT)// Int intDBQuant; VOPpredType vopPredType; //whether IVOP, PVOP, BVOP, or Sprite Int iIntraDcSwitchThr; //threshold to code intraDC as with AC VLCs Int iRoundingControl; //rounding control Int iRoundingControlEncSwitch; ShapeBPredDir fShapeBPredDir; // shape prediction direction BVOP Int iVopConstantAlphaValue; // for binary or grayscale shape pk val // Complexity Estimation syntax support - Marc Mongenet (EPFL) - 15 Jun 1998 Int iOpaque; Int iTransparent; Int iIntraCAE; Int iInterCAE; Int iNoUpdate; Int iUpsampling; Int iIntraBlocks; Int iInterBlocks; Int iInter4vBlocks; Int iNotCodedBlocks; Int iDCTCoefs; Int iDCTLines; Int iVLCSymbols; Int iVLCBits; Int iAPM; Int iNPM; Int iInterpolateMCQ; Int iForwBackMCQ; Int iHalfpel2; Int iHalfpel4; // motion search info MVInfo mvInfoForward; // motion search info
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -