📄 codingparameter.h
字号:
Double m_dQpModeDecisionLP;
UInt m_uiInterLayerPredictionMode;
Bool m_bConstrainedIntraPredForLP;
UInt m_uiForceReorderingCommands;
UInt m_uiBaseLayerId;
UInt m_uiBaseQualityLevel;
UInt m_uiMotionInfoMode;
std::string m_cMotionInfoFilename;
UInt m_uiFGSMode;
std::string m_cFGSRateFilename;
Double m_dFGSRate;
//----- derived parameters -----
UInt m_uiDecompositionStages;
UInt m_uiNotCodedMCTFStages;
UInt m_uiTemporalResolution;
UInt m_uiFrameDelay;
//----- for scalable SEI ----
UInt m_uiBaseLayerSpatRes;
UInt m_uiBaseLayerTempRes;
//----- ESS ----
ResizeParameters m_ResizeParameter;
Double m_dLowPassEnhRef;
UInt m_uiBaseWeightZeroBaseBlock;
UInt m_uiBaseWeightZeroBaseCoeff;
UInt m_uiFgsEncStructureFlag;
UInt m_uiMbAff;
UInt m_uiPaff;
//--ICU/ETRI FMO Implementation : FMO start
UInt m_uiNumSliceGroupsMinus1;
UInt m_uiSliceGroupMapType;
UInt m_uiRunLengthMinus1[CodParMAXNumSliceGroupsMinus1];
UInt m_uiTopLeft[CodParMAXNumSliceGroupsMinus1];
UInt m_uiBottomRight[CodParMAXNumSliceGroupsMinus1];
Bool m_bSliceGroupChangeDirection_flag;
UInt m_uiSliceGroupChangeRateMinus1;
UInt m_uiNumSliceGroupMapUnitsMinus1;
UInt m_uiSliceGroupId[CodParMAXNumSliceGroupsMinus1];
UInt m_uiSliceMode;
UInt m_uiSliceArgument;
std::string m_cSliceGroupConfigFileName;
std::string m_cROIConfigFileName;
UInt m_uiNumROI;
UInt m_uiROIID[CodParMAXNumSliceGroupsMinus1];
UInt m_uiSGID[CodParMAXNumSliceGroupsMinus1];
UInt m_uiSLID[CodParMAXNumSliceGroupsMinus1];
//--ICU/ETRI FMO Implementation : FMO end
UInt m_uiUseRedundantSlice; // JVT-Q054 Red. Picture
// JVT-S054 (ADD) ->
Bool m_bSliceDivisionFlag;
UInt m_uiNumSliceMinus1;
UInt m_uiSliceDivisionType;
UInt* m_puiGridSliceWidthInMbsMinus1;
UInt* m_puiGridSliceHeightInMbsMinus1;
UInt* m_puiFirstMbInSlice;
UInt* m_puiLastMbInSlice;
UInt* m_puiSliceId;
// JVT-S054 (ADD) <-
// JVT-V035
UInt m_bAVCRewriteFlag;
UInt m_bAVCAdaptiveRewriteFlag;
//JVT-P031
Bool m_bUseDiscardable; //indicate if discardable stream is coded for this layer
//discardable stream should not be used for inter-layer prediction
Double m_dPredFGSRate; //rate use for inter-layer prediction (after that rate, stream is discardable)
UInt m_uiFGSMotionMode;
// JVT-Q065 EIDR{
Int m_iIDRPeriod;
Bool m_bBLSkipEnable;
// JVT-Q065 EIDR}
UInt m_uiPLR; //JVT-R057 LA-RDO
UInt m_uiFGSCodingMode;
UInt m_uiGroupingSize;
UInt m_uiPosVect[16];
//S051{
std::string m_cOutSIPFileName;
std::string m_cInSIPFileName;
UInt m_uiAnaSIP;
Bool m_bEncSIP;
//S051}
//JVT-T054{
UInt m_uiLayerCGSSNR;
UInt m_uiQualityLevelCGSSNR;
UInt m_uiBaseLayerCGSSNR;
UInt m_uiBaseQualityLevelCGSSNR;
Bool m_bDiscardable;
//JVT-T054}
UInt m_uiExplicitQPCascading;
Double m_adDeltaQPTLevel[MAX_TEMP_LEVELS];
UInt m_uiUseSmoothedRef; //JVT-V058
};
//TMM_WP
class H264AVCENCODERLIB_API SampleWeightingParams
{
public:
SampleWeightingParams() : m_uiIPMode(0), m_uiBMode(0), m_uiLumaDenom(5), m_uiChromaDenom(5), m_fDiscardThr(1) { }
ErrVal check() const ;
ErrVal checkForValidChanges( const SampleWeightingParams& rcSW )const;
Bool operator == ( const SampleWeightingParams& rcSWP ) const ;
Bool operator != ( const SampleWeightingParams& rcSWP ) const { return !((*this) == rcSWP); }
ErrVal writeBinary( BinDataAccessor& rcBinDataAccessor ) const;
ErrVal readBinary( BinDataAccessor& rcBinDataAccessor );
UInt getIPMode() const { return m_uiIPMode; }
UInt getBMode() const { return m_uiBMode; }
UInt getLumaDenom() const { return m_uiLumaDenom; }
UInt getChromaDenom() const { return m_uiChromaDenom; }
Float getDiscardThr() const { return m_fDiscardThr; }
Void setIPMode( UInt uiIPMode ) { m_uiIPMode = uiIPMode; }
Void setBMode( UInt uiBMode ) { m_uiBMode = uiBMode; }
Void setLumaDenom( UInt uiDenom ) { m_uiLumaDenom = uiDenom; }
Void setChromaDenom( UInt uiDenom ) { m_uiChromaDenom = uiDenom; }
Void setDiscardThr( Float fDiscardThr ) { m_fDiscardThr = fDiscardThr; }
protected:
UInt m_uiIPMode; // 0 off, 1 on, 2 random
UInt m_uiBMode; // 0 off, 1 explicit, 2 implicit, 3 random
UInt m_uiLumaDenom; // 0-7
UInt m_uiChromaDenom; // 0-7
Float m_fDiscardThr;
};
//TMM_WP
class H264AVCENCODERLIB_API CodingParameter
{
public:
CodingParameter()
: m_dMaximumFrameRate ( 0.0 )
, m_dMaximumDelay ( 1e6 )
, m_uiTotalFrames ( 0 )
, m_uiGOPSize ( 0 )
, m_uiDecompositionStages ( 0 )
, m_uiIntraPeriod ( 0 )
, m_uiIntraPeriodLowPass ( 0 )
, m_uiNumRefFrames ( 0 )
, m_uiBaseLayerMode ( 0 )
, m_uiNumberOfLayers ( 0 )
, m_bExtendedPriorityId ( 0 )
, m_uiNumSimplePris ( 0 )
, m_dLowPassEnhRef ( -1.0 )
, m_uiBaseWeightZeroBaseBlock ( MSYS_UINT_MAX )
, m_uiBaseWeightZeroBaseCoeff ( MSYS_UINT_MAX )
, m_uiFgsEncStructureFlag ( MSYS_UINT_MAX )
, m_uiLowPassFgsMcFilter ( AR_FGS_DEFAULT_FILTER )
, m_uiAVCmode ( 0 )
, m_uiFrameWidth ( 0 )
, m_uiFrameHeight ( 0 )
, m_uiSymbolMode ( 0 )
, m_ui8x8Mode ( 0 )
, m_dBasisQp ( 0 )
, m_uiDPBSize ( 0 )
, m_uiNumDPBRefFrames ( 0 )
, m_uiLog2MaxFrameNum ( 0 )
, m_uiLog2MaxPocLsb ( 0 )
, m_cSequenceFormatString ()
, m_uiMaxRefIdxActiveBL0 ( 0 )
, m_uiMaxRefIdxActiveBL1 ( 0 )
, m_uiMaxRefIdxActiveP ( 0 )
//TMM_WP
, m_uiIPMode ( 0 )
, m_uiBMode ( 0 )
//TMM_WP
, m_bNonRequiredEnable ( 0 ) //NonRequired JVT-Q066
, m_uiLARDOEnable ( 0 ) //JVT-R057 LA-RDO
, m_uiPreAndSuffixUnitEnable ( 0 ) //JVT-S036 lsj
, m_uiMMCOBaseEnable ( 0 ) //JVT-S036 lsj
, m_bFGSParallelDecodingFlag ( false )
//JVT-T073 {
, m_uiNestingSEIEnable ( 0 )
, m_uiSceneInfoEnable ( 0 )
//JVT-T073 }
//JVT-T054{
, m_uiCGSSNRRefinementFlag ( 0 )
, m_uiMaxLayerCGSSNR ( 0 )
, m_uiMaxQualityLevelCGSSNR ( 0 )
//JVT-T054}
// JVT-U085 LMI
, m_uiTlevelNestingFlag ( 1 )
// JVT-U116 LMI
, m_uiTl0PicIdxPresentFlag ( 0 )
, m_uiCIUFlag ( 0 ) //JV
, m_uiRCDOBlockSizes ( 0 )
, m_uiRCDOMotionCompensationY ( 0 )
, m_uiRCDOMotionCompensationC ( 0 )
, m_uiRCDODeblocking ( 0 )
, m_ui4TapMotionCompensationY ( 0 ) // V090
, m_uiEncodeKeyPictures ( 0 )
, m_uiMGSKeyPictureControl ( 0 )
, m_uiMGSKeyPictureMotionRefinement ( 1 )
{
for( UInt uiLayer = 0; uiLayer < 6; uiLayer++ )
{
m_adDeltaQpLayer[uiLayer] = 0;
}
}
virtual ~CodingParameter()
{
}
public:
const MotionVectorSearchParams& getMotionVectorSearchParams () const {return m_cMotionVectorSearchParams; }
const LoopFilterParams& getLoopFilterParams () const {return m_cLoopFilterParams; }
MotionVectorSearchParams& getMotionVectorSearchParams () {return m_cMotionVectorSearchParams; }
LoopFilterParams& getLoopFilterParams () {return m_cLoopFilterParams; }
const LayerParameters& getLayerParameters ( UInt n ) const { return m_acLayerParameters[n]; }
LayerParameters& getLayerParameters ( UInt n ) { return m_acLayerParameters[n]; }
//TMM_WP
SampleWeightingParams& getSampleWeightingParams(UInt uiLayerId) {return m_cSampleWeightingParams[uiLayerId];}
//TMM_WP
const std::string& getInputFile () const { return m_cInputFile; }
Double getMaximumFrameRate () const { return m_dMaximumFrameRate; }
Double getMaximumDelay () const { return m_dMaximumDelay; }
UInt getTotalFrames () const { return m_uiTotalFrames; }
UInt getGOPSize () const { return m_uiGOPSize; }
UInt getDecompositionStages () const { return m_uiDecompositionStages; }
UInt getIntraPeriod () const { return m_uiIntraPeriod; }
UInt getIntraPeriodLowPass () const { return m_uiIntraPeriodLowPass; }
UInt getNumRefFrames () const { return m_uiNumRefFrames; }
UInt getBaseLayerMode () const { return m_uiBaseLayerMode; }
UInt getNumberOfLayers () const { return m_uiNumberOfLayers; }
Bool getExtendedPriorityId () const { return m_bExtendedPriorityId; }
UInt getNumSimplePris () const { return m_uiNumSimplePris; }
/* Void getSimplePriorityMap ( UInt uiSimplePri, UInt& uiTemporalLevel, UInt& uiLayer, UInt& uiQualityLevel )
{ uiTemporalLevel = m_uiTemporalLevelList[uiSimplePri];
uiLayer = m_uiDependencyIdList [uiSimplePri];
uiQualityLevel = m_uiQualityLevelList [uiSimplePri];
}
JVT-S036 lsj */
//TMM_WP
UInt getIPMode() const { return m_uiIPMode; }
UInt getBMode() const { return m_uiBMode; }
//TMM_WP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -