📄 sesenc.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
(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)
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:
sesEnc.hpp
Abstract:
Encoder for one image session.
Revision History:
Sept. 30, 1997: Error resilient tools added by Toshiba
Nov. 27, 1997: Spatial Scalable tools added by SONY
Dec. 11, 1997: Interlaced tools added by NextLevel Systems
Jun. 17, 1998: Complexity Estimation syntax support added by EPFL
Feb. 16, 1999: add Quarter Sample
Mathias Wien (wien@ient.rwth-aachen.de)
Feb. 24, 1999: GMC added by Hitachi
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.12 2000 : Added Enhancement Type for OBSS by Takefumi Nagumo (Sony)
*************************************************************************/
#ifndef __SESENC_HPP_
#define __SESENC_HPP_
class COutBitStream;
class CEntropyEncoder;
class CEntropyEncoderSet;
class CVideoObjectEncoder;
typedef struct {
// general info
UInt uiFrmWidth; // frame width
UInt uiFrmHeight; // frame height
Int iFirstFrm; // first frame number
Int iLastFrm; // last frame number
Bool bNot8Bit; // NBIT
UInt uiQuantPrecision; // NBIT
UInt nBits; // NBIT
Int iFirstVO; // first VOP index
Int iLastVO; // last VOP index
UInt* rguiVerID; // Version ID // GMC
Bool* rgbSpatialScalability; // spatial scalability indicator
Int* rgiTemporalScalabilityType; // temporal scalability formation case // added by Sharp (98/02/09)
Int* rgiEnhancementType; // enhancement_type for scalability // added by Sharp (98/02/09)
//OBSSFIX_MODE3
Int* rgiEnhancementTypeSpatial;
//~OBSSFIX_MODE3
UInt **rguiRateControl; // rate control type
UInt **rguiBudget; // for rate control
// for shape coding
AlphaUsage* rgfAlphaUsage;// alpha usage for each VOP. 0: binary; 1: 8-bit
Int* rgiAlphaShapeExtension; // alpha shape extension (V2)
Bool* rgbShapeOnly; // shape only mode
Int* rgiBinaryAlphaTH;
Int* rgiBinaryAlphaRR; // refresh rate: Added for error resilient mode by Toshiba(1997-11-14)
Bool* rgbNoCrChange;
// motion estimation part for each VOP
UInt** rguiSearchRange; // motion search range
Bool** rgbOriginalForME; // flag indicating whether use the original previous VOP for ME
Bool** rgbAdvPredDisable; // no advanced MC (currenly = obmc; later = obmc + 8x8)
Bool** rgbQuarterSample; // QuarterSample; mwi
// START: Complexity Estimation syntax support - Marc Mongenet (EPFL) - 17 Jun 1998
Bool ** rgbComplexityEstimationDisable;
UInt ** rguiEstimationMethod;
Bool ** rgbOpaque;
Bool ** rgbTransparent;
Bool ** rgbIntraCAE;
Bool ** rgbInterCAE;
Bool ** rgbNoUpdate;
Bool ** rgbUpsampling;
Bool ** rgbIntraBlocks;
Bool ** rgbInterBlocks;
Bool ** rgbInter4vBlocks;
Bool ** rgbNotCodedBlocks;
Bool ** rgbDCTCoefs;
Bool ** rgbDCTLines;
Bool ** rgbVLCSymbols;
Bool ** rgbVLCBits;
Bool ** rgbAPM;
Bool ** rgbNPM;
Bool ** rgbInterpolateMCQ;
Bool ** rgbForwBackMCQ;
Bool ** rgbHalfpel2;
Bool ** rgbHalfpel4;
Bool ** rgbSadct;
Bool ** rgbQuarterpel;
// END: Complexity Estimation syntax support
// START: VOL Control Parameters
UInt ** rguiVolControlParameters;
UInt ** rguiChromaFormat;
UInt ** rguiLowDelay;
UInt ** rguiVBVParams;
UInt ** rguiBitRate;
UInt ** rguiVbvBufferSize;
UInt ** rguiVbvBufferOccupany;
// END: VOL Control Parameters
Double** rgdFrameFrequency; // Frame Frequency
Bool** rgbInterlacedCoding; // interlace coding flag
Bool** rgbTopFieldFirst; // top field first flag
Bool** rgbAlternateScan; // alternate scan flag
// HHI Klaas Schueuer for sadct
Bool** rgbSadctDisable;
Int** rgiDirectModeRadius; // direct mode search radius
Int** rgiMVFileUsage; // 0- not used; 1: read from motion file; 2- write to motion file
Char*** pchMVFileName; // Motion vector filenames
// major syntax mode
// NEWPRED
Bool** rgbNewpredEnable;
Bool** rgbNewpredSegmentType;
char*** rgcNewpredRefName;
char*** rgcNewpredSlicePoint;
// ~NEWPRED
// RRV
RRVmodeStr** RRVmode;
// ~RRV
//RESYNC_MARKER_FIX
Bool** rgbResyncMarkerDisable;
//~RESYNC_MARKER_FIX
Int** rgbVPBitTh; // Bit threshold for video packet spacing control
Bool** rgbDataPartitioning; // data partitioning
Bool** rgbReversibleVlc; // reversible VLC
// for texture coding
Quantizer** rgfQuant; // quantizer selection; either H.263 or MPEG
Bool** rgbLoadIntraMatrix; // load user-defined intra Q-Matrix
Int*** rgppiIntraQuantizerMatrix; // Intra Q-Matrix
Bool** rgbLoadInterMatrix; // load user-defined inter Q-Matrix
Int*** rgppiInterQuantizerMatrix; // Inter Q-Matrix
Int** rgiIntraDCSwitchingThr; //threshold to code dc as ac when pred. is on
Int** rgiStepI; // I-VOP quantization stepsize
Int** rgiStepP; // P-VOP quantization stepsize
Bool** rgbLoadIntraMatrixAlpha;
Int*** rgppiIntraQuantizerMatrixAlpha;
Bool** rgbLoadInterMatrixAlpha;
Int*** rgppiInterQuantizerMatrixAlpha;
Int** rgiStepIAlpha; // I-VOP quantization stepsize for Alpha
Int** rgiStepPAlpha; // P-VOP quantization stepsize for Alpha
Int** rgiStepBAlpha; // B-VOP quantization stepsize for Alpha
Int** rgbNoAlphaQuantUpdate; // discouple gray quant update with tex. quant
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -