#ifndef WELS_PARAMETER_SETS_H__
#define WELS_PARAMETER_SETS_H__
#include "typedefs.h"
#include "wels_const.h"
#include "wels_common_basis.h"
namespace WelsDec {
typedef struct TagVui {
bool bAspectRatioInfoPresentFlag;
uint32_t uiAspectRatioIdc;
uint32_t uiSarWidth;
uint32_t uiSarHeight;
bool bOverscanInfoPresentFlag;
bool bOverscanAppropriateFlag;
bool bVideoSignalTypePresentFlag;
uint8_t uiVideoFormat;
bool bVideoFullRangeFlag;
bool bColourDescripPresentFlag;
uint8_t uiColourPrimaries;
uint8_t uiTransferCharacteristics;
uint8_t uiMatrixCoeffs;
bool bChromaLocInfoPresentFlag;
uint32_t uiChromaSampleLocTypeTopField;
uint32_t uiChromaSampleLocTypeBottomField;
bool bTimingInfoPresentFlag;
uint32_t uiNumUnitsInTick;
uint32_t uiTimeScale;
bool bFixedFrameRateFlag;
bool bNalHrdParamPresentFlag;
bool bVclHrdParamPresentFlag;
bool bPicStructPresentFlag;
bool bBitstreamRestrictionFlag;
bool bMotionVectorsOverPicBoundariesFlag;
uint32_t uiMaxBytesPerPicDenom;
uint32_t uiMaxBitsPerMbDenom;
uint32_t uiLog2MaxMvLengthHorizontal;
uint32_t uiLog2MaxMvLengthVertical;
uint32_t uiMaxNumReorderFrames;
uint32_t uiMaxDecFrameBuffering;
} SVui, *PVui;
typedef struct TagSps {
int32_t iSpsId;
uint32_t iMbWidth;
uint32_t iMbHeight;
uint32_t uiTotalMbCount;
uint32_t uiLog2MaxFrameNum;
uint32_t uiPocType;
int32_t iLog2MaxPocLsb;
int32_t iOffsetForNonRefPic;
int32_t iOffsetForTopToBottomField;
int32_t iNumRefFramesInPocCycle;
int8_t iOffsetForRefFrame[256];
int32_t iNumRefFrames;
SPosOffset sFrameCrop;
ProfileIdc uiProfileIdc;
uint8_t uiLevelIdc;
uint8_t uiChromaFormatIdc;
uint8_t uiChromaArrayType;
uint8_t uiBitDepthLuma;
uint8_t uiBitDepthChroma;
bool bDeltaPicOrderAlwaysZeroFlag;
bool bGapsInFrameNumValueAllowedFlag;
bool bFrameMbsOnlyFlag;
bool bMbaffFlag; bool bDirect8x8InferenceFlag;
bool bFrameCroppingFlag;
bool bVuiParamPresentFlag;
bool bConstraintSet0Flag;
bool bConstraintSet1Flag;
bool bConstraintSet2Flag;
bool bConstraintSet3Flag;
bool bSeparateColorPlaneFlag;
bool bQpPrimeYZeroTransfBypassFlag;
bool bSeqScalingMatrixPresentFlag;
bool bSeqScalingListPresentFlag[12];
uint8_t iScalingList4x4[6][16];
uint8_t iScalingList8x8[6][64];
SVui sVui;
const SLevelLimits* pSLevelLimits;
} SSps, *PSps;
typedef struct TagSpsSvcExt {
SPosOffset sSeqScaledRefLayer;
uint8_t uiExtendedSpatialScalability; uint8_t uiChromaPhaseXPlus1Flag;
uint8_t uiChromaPhaseYPlus1;
uint8_t uiSeqRefLayerChromaPhaseXPlus1Flag;
uint8_t uiSeqRefLayerChromaPhaseYPlus1;
bool bInterLayerDeblockingFilterCtrlPresentFlag;
bool bSeqTCoeffLevelPredFlag;
bool bAdaptiveTCoeffLevelPredFlag;
bool bSliceHeaderRestrictionFlag;
} SSpsSvcExt, *PSpsSvcExt;
typedef struct TagSubsetSps {
SSps sSps;
SSpsSvcExt sSpsSvcExt;
bool bSvcVuiParamPresentFlag;
bool bAdditionalExtension2Flag;
bool bAdditionalExtension2DataFlag;
} SSubsetSps, *PSubsetSps;
typedef struct TagPps {
int32_t iSpsId;
int32_t iPpsId;
uint32_t uiNumSliceGroups;
uint32_t uiSliceGroupMapType;
uint32_t uiRunLength[MAX_SLICEGROUP_IDS];
uint32_t uiTopLeft[MAX_SLICEGROUP_IDS];
uint32_t uiBottomRight[MAX_SLICEGROUP_IDS];
uint32_t uiSliceGroupChangeRate;
uint32_t uiPicSizeInMapUnits;
uint32_t uiSliceGroupId[MAX_SLICEGROUP_IDS];
uint32_t uiNumRefIdxL0Active;
uint32_t uiNumRefIdxL1Active;
int32_t iPicInitQp;
int32_t iPicInitQs;
int32_t iChromaQpIndexOffset[2];
bool bEntropyCodingModeFlag;
bool bPicOrderPresentFlag;
bool bSliceGroupChangeDirectionFlag;
bool bDeblockingFilterControlPresentFlag;
bool bConstainedIntraPredFlag;
bool bRedundantPicCntPresentFlag;
bool bWeightedPredFlag;
uint8_t uiWeightedBipredIdc;
bool bTransform8x8ModeFlag;
bool bPicScalingMatrixPresentFlag;
bool bPicScalingListPresentFlag[12];
uint8_t iScalingList4x4[6][16];
uint8_t iScalingList8x8[6][64];
int32_t iSecondChromaQPIndexOffset;
} SPps, *PPps;
}
#endif