ref: 764793d74bfcbf4a3cfc85e050be5f5c3a13c597
parent: ca51ee0f442a12113630faa2514be609ca6730aa
author: Martin Storsjö <martin@martin.st>
date: Wed Jun 3 05:56:54 EDT 2015
Remove tabs in struct and class definitions
--- a/codec/common/inc/memory_align.h
+++ b/codec/common/inc/memory_align.h
@@ -68,10 +68,10 @@
CMemoryAlign& operator= (const CMemoryAlign& kcMa);
protected:
-uint32_t m_nCacheLineSize;
+uint32_t m_nCacheLineSize;
#ifdef MEMORY_MONITOR
-uint32_t m_nMemoryUsageInBytes;
+uint32_t m_nMemoryUsageInBytes;
#endif//MEMORY_MONITOR
};
--- a/codec/common/inc/welsCodecTrace.h
+++ b/codec/common/inc/welsCodecTrace.h
@@ -53,7 +53,7 @@
static void StaticCodecTrace (void* pCtx, const int32_t kiLevel, const char* kpStrFormat, va_list vl);
void CodecTrace (const int32_t kiLevel, const char* kpStrFormat, va_list vl);
- int32_t m_iTraceLevel;
+ int32_t m_iTraceLevel;
WelsTraceCallback m_fpTrace;
void* m_pTraceCtx;
public:
--- a/codec/common/inc/wels_common_defs.h
+++ b/codec/common/inc/wels_common_defs.h
@@ -239,9 +239,9 @@
/* NAL Unit Header in scalable extension syntax, refer to Page 390 in JVT X201wcm */
typedef struct TagNalUnitHeaderExt {
- SNalUnitHeader sNalUnitHeader;
+ SNalUnitHeader sNalUnitHeader;
- // uint8_t reserved_one_bit;
+ // uint8_t reserved_one_bit;
bool bIdrFlag;
uint8_t uiPriorityId;
int8_t iNoInterLayerPredFlag; // change as int8_t to support 3 values probably in encoder
--- a/codec/console/common/inc/read_config.h
+++ b/codec/console/common/inc/read_config.h
@@ -59,9 +59,9 @@
const std::string& GetFileName();
private:
- FILE* m_pCfgFile;
- std::string m_strCfgFileName;
- unsigned int m_iLines;
+ FILE* m_pCfgFile;
+ std::string m_strCfgFileName;
+ unsigned int m_iLines;
};
#endif // READ_CONFIG_H__
--- a/codec/console/enc/src/welsenc.cpp
+++ b/codec/console/enc/src/welsenc.cpp
@@ -96,8 +96,8 @@
* Layer Context
*/
typedef struct LayerpEncCtx_s {
- int32_t iDLayerQp;
- SSliceConfig sSliceCfg;
+ int32_t iDLayerQp;
+ SSliceConfig sSliceCfg;
} SLayerPEncCtx;
typedef struct tagFilesSet {
--- a/codec/decoder/core/inc/dec_frame.h
+++ b/codec/decoder/core/inc/dec_frame.h
@@ -47,31 +47,31 @@
namespace WelsDec {
///////////////////////////////////DQ Layer level///////////////////////////////////
-typedef struct TagDqLayer SDqLayer;
-typedef SDqLayer* PDqLayer;
+typedef struct TagDqLayer SDqLayer;
+typedef SDqLayer* PDqLayer;
typedef struct TagLayerInfo {
- SNalUnitHeaderExt sNalHeaderExt;
- SSlice sSliceInLayer; // Here Slice identify to Frame on concept
- PSubsetSps pSubsetSps; // current pSubsetSps used, memory alloc in external
- PSps pSps; // current sps based avc used, memory alloc in external
- PPps pPps; // current pps used
+ SNalUnitHeaderExt sNalHeaderExt;
+ SSlice sSliceInLayer; // Here Slice identify to Frame on concept
+ PSubsetSps pSubsetSps; // current pSubsetSps used, memory alloc in external
+ PSps pSps; // current sps based avc used, memory alloc in external
+ PPps pPps; // current pps used
} SLayerInfo, *PLayerInfo;
/* Layer Representation */
struct TagDqLayer {
- SLayerInfo sLayerInfo;
+ SLayerInfo sLayerInfo;
- PBitStringAux pBitStringAux; // pointer to SBitStringAux
- PFmo pFmo; // Current fmo context pointer used
- int16_t* pMbType;
- int32_t* pSliceIdc; // using int32_t for slice_idc
- int16_t (*pMv[LIST_A])[MB_BLOCK4x4_NUM][MV_A];
- int16_t (*pMvd[LIST_A])[MB_BLOCK4x4_NUM][MV_A];
- int8_t (*pRefIndex[LIST_A])[MB_BLOCK4x4_NUM];
+ PBitStringAux pBitStringAux; // pointer to SBitStringAux
+ PFmo pFmo; // Current fmo context pointer used
+ int16_t* pMbType;
+ int32_t* pSliceIdc; // using int32_t for slice_idc
+ int16_t (*pMv[LIST_A])[MB_BLOCK4x4_NUM][MV_A];
+ int16_t (*pMvd[LIST_A])[MB_BLOCK4x4_NUM][MV_A];
+ int8_t (*pRefIndex[LIST_A])[MB_BLOCK4x4_NUM];
bool* pNoSubMbPartSizeLessThan8x8Flag;
bool* pTransformSize8x8Flag;
int8_t* pLumaQp;
- int8_t (*pChromaQp)[2];
+ int8_t (*pChromaQp)[2];
int8_t* pCbp;
uint16_t *pCbfDc;
int8_t (*pNzc)[24];
@@ -93,53 +93,53 @@
int32_t iMbX;
int32_t iMbY;
int32_t iMbXyIndex;
- int32_t iMbWidth; // MB width of this picture, equal to sSps.iMbWidth
- int32_t iMbHeight; // MB height of this picture, equal to sSps.iMbHeight;
+ int32_t iMbWidth; // MB width of this picture, equal to sSps.iMbWidth
+ int32_t iMbHeight; // MB height of this picture, equal to sSps.iMbHeight;
/* Common syntax elements across all slices of a DQLayer */
- int32_t iSliceIdcBackup;
- uint32_t uiSpsId;
- uint32_t uiPpsId;
- uint32_t uiDisableInterLayerDeblockingFilterIdc;
- int32_t iInterLayerSliceAlphaC0Offset;
- int32_t iInterLayerSliceBetaOffset;
- //SPosOffset sScaledRefLayer;
- int32_t iSliceGroupChangeCycle;
+ int32_t iSliceIdcBackup;
+ uint32_t uiSpsId;
+ uint32_t uiPpsId;
+ uint32_t uiDisableInterLayerDeblockingFilterIdc;
+ int32_t iInterLayerSliceAlphaC0Offset;
+ int32_t iInterLayerSliceBetaOffset;
+ //SPosOffset sScaledRefLayer;
+ int32_t iSliceGroupChangeCycle;
- PRefPicListReorderSyn pRefPicListReordering;
- PPredWeightTabSyn pPredWeightTable;
- PRefPicMarking pRefPicMarking; // Decoded reference picture marking syntaxs
- PRefBasePicMarking pRefPicBaseMarking;
+ PRefPicListReorderSyn pRefPicListReordering;
+ PPredWeightTabSyn pPredWeightTable;
+ PRefPicMarking pRefPicMarking; // Decoded reference picture marking syntaxs
+ PRefBasePicMarking pRefPicBaseMarking;
- PPicture pRef; // reference picture pointer
- PPicture pDec; // reconstruction picture pointer for layer
+ PPicture pRef; // reference picture pointer
+ PPicture pDec; // reconstruction picture pointer for layer
- bool bUseWeightPredictionFlag;
- bool bStoreRefBasePicFlag; // iCurTid == 0 && iCurQid = 0 && bEncodeKeyPic = 1
- bool bTCoeffLevelPredFlag;
- bool bConstrainedIntraResamplingFlag;
- uint8_t uiRefLayerDqId;
- uint8_t uiRefLayerChromaPhaseXPlus1Flag;
- uint8_t uiRefLayerChromaPhaseYPlus1;
- uint8_t uiLayerDqId; // dq_id of current layer
- bool bUseRefBasePicFlag; // whether reference pic or reference base pic is referred?
+ bool bUseWeightPredictionFlag;
+ bool bStoreRefBasePicFlag; // iCurTid == 0 && iCurQid = 0 && bEncodeKeyPic = 1
+ bool bTCoeffLevelPredFlag;
+ bool bConstrainedIntraResamplingFlag;
+ uint8_t uiRefLayerDqId;
+ uint8_t uiRefLayerChromaPhaseXPlus1Flag;
+ uint8_t uiRefLayerChromaPhaseYPlus1;
+ uint8_t uiLayerDqId; // dq_id of current layer
+ bool bUseRefBasePicFlag; // whether reference pic or reference base pic is referred?
};
typedef struct TagGpuAvcLayer {
- SLayerInfo sLayerInfo;
- PBitStringAux pBitStringAux; // pointer to SBitStringAux
+ SLayerInfo sLayerInfo;
+ PBitStringAux pBitStringAux; // pointer to SBitStringAux
- int16_t* pMbType;
- int32_t* pSliceIdc; // using int32_t for slice_idc
- int8_t* pLumaQp;
- int8_t* pCbp;
- int8_t (*pNzc)[24];
- int8_t (*pIntraPredMode)[8]; //0~3 top4x4 ; 4~6 left 4x4; 7 intra16x16
- int32_t iMbX;
- int32_t iMbY;
- int32_t iMbXyIndex;
- int32_t iMbWidth; // MB width of this picture, equal to sSps.iMbWidth
- int32_t iMbHeight; // MB height of this picture, equal to sSps.iMbHeight;
+ int16_t* pMbType;
+ int32_t* pSliceIdc; // using int32_t for slice_idc
+ int8_t* pLumaQp;
+ int8_t* pCbp;
+ int8_t (*pNzc)[24];
+ int8_t (*pIntraPredMode)[8]; //0~3 top4x4 ; 4~6 left 4x4; 7 intra16x16
+ int32_t iMbX;
+ int32_t iMbY;
+ int32_t iMbXyIndex;
+ int32_t iMbWidth; // MB width of this picture, equal to sSps.iMbWidth
+ int32_t iMbHeight; // MB height of this picture, equal to sSps.iMbHeight;
} SGpuAvcDqLayer, *PGpuAvcDqLayer;
--- a/codec/decoder/core/inc/decoder_context.h
+++ b/codec/decoder/core/inc/decoder_context.h
@@ -142,13 +142,13 @@
/**/
typedef struct TagRefPic {
- PPicture pRefList[LIST_A][MAX_REF_PIC_COUNT]; // reference picture marking plus FIFO scheme
- PPicture pShortRefList[LIST_A][MAX_SHORT_REF_COUNT];
- PPicture pLongRefList[LIST_A][MAX_LONG_REF_COUNT];
- uint8_t uiRefCount[LIST_A];
- uint8_t uiShortRefCount[LIST_A];
- uint8_t uiLongRefCount[LIST_A]; // dependend on ref pic module
- int32_t iMaxLongTermFrameIdx;
+ PPicture pRefList[LIST_A][MAX_REF_PIC_COUNT]; // reference picture marking plus FIFO scheme
+ PPicture pShortRefList[LIST_A][MAX_SHORT_REF_COUNT];
+ PPicture pLongRefList[LIST_A][MAX_LONG_REF_COUNT];
+ uint8_t uiRefCount[LIST_A];
+ uint8_t uiShortRefCount[LIST_A];
+ uint8_t uiLongRefCount[LIST_A]; // dependend on ref pic module
+ int32_t iMaxLongTermFrameIdx;
} SRefPic, *PRefPic;
typedef void (*PCopyFunc) (uint8_t* pDst, int32_t iStrideD, uint8_t* pSrc, int32_t iStrideS);
@@ -161,11 +161,11 @@
struct TagDeblockingFunc;
typedef struct tagDeblockingFilter {
- uint8_t* pCsData[3]; // pointer to reconstructed picture data
- int32_t iCsStride[2]; // Cs stride
+ uint8_t* pCsData[3]; // pointer to reconstructed picture data
+ int32_t iCsStride[2]; // Cs stride
EWelsSliceType eSliceType;
- int8_t iSliceAlphaC0Offset;
- int8_t iSliceBetaOffset;
+ int8_t iSliceAlphaC0Offset;
+ int8_t iSliceBetaOffset;
int8_t iChromaQP[2];
int8_t iLumaQP;
struct TagDeblockingFunc* pLoopf;
@@ -205,9 +205,9 @@
typedef void (*PWelsNonZeroCountFunc) (int8_t* pNonZeroCount);
typedef void (*PWelsBlockZeroFunc) (int16_t* block, int32_t stride);
typedef struct TagBlockFunc {
- PWelsNonZeroCountFunc pWelsSetNonZeroCountFunc;
- PWelsBlockZeroFunc pWelsBlockZero16x16Func;
- PWelsBlockZeroFunc pWelsBlockZero8x8Func;
+ PWelsNonZeroCountFunc pWelsSetNonZeroCountFunc;
+ PWelsBlockZeroFunc pWelsBlockZero16x16Func;
+ PWelsBlockZeroFunc pWelsBlockZero8x8Func;
} SBlockFunc;
typedef void (*PWelsFillNeighborMbInfoIntra4x4Func) (PWelsNeighAvail pNeighAvail, uint8_t* pNonZeroCount,
@@ -232,62 +232,62 @@
typedef struct TagWelsDecoderContext {
SLogContext sLogCtx;
// Input
- void* pArgDec; // structured arguments for decoder, reserved here for extension in the future
+ void* pArgDec; // structured arguments for decoder, reserved here for extension in the future
- SDataBuffer sRawData;
- SDataBuffer sSavedData; //for parse only purpose
+ SDataBuffer sRawData;
+ SDataBuffer sSavedData; //for parse only purpose
// Configuration
- SDecodingParam* pParam;
- uint32_t uiCpuFlag; // CPU compatibility detected
+ SDecodingParam* pParam;
+ uint32_t uiCpuFlag; // CPU compatibility detected
- EVideoFormatType eOutputColorFormat; // color space format to be outputed
+ EVideoFormatType eOutputColorFormat; // color space format to be outputed
VIDEO_BITSTREAM_TYPE eVideoType; //indicate the type of video to decide whether or not to do qp_delta error detection.
- bool bHaveGotMemory; // global memory for decoder context related ever requested?
+ bool bHaveGotMemory; // global memory for decoder context related ever requested?
- int32_t iImgWidthInPixel; // width of image in pixel reconstruction picture to be output
- int32_t iImgHeightInPixel;// height of image in pixel reconstruction picture to be output
- int32_t iLastImgWidthInPixel; // width of image in last successful pixel reconstruction picture to be output
- int32_t iLastImgHeightInPixel;// height of image in last successful pixel reconstruction picture to be output
+ int32_t iImgWidthInPixel; // width of image in pixel reconstruction picture to be output
+ int32_t iImgHeightInPixel;// height of image in pixel reconstruction picture to be output
+ int32_t iLastImgWidthInPixel; // width of image in last successful pixel reconstruction picture to be output
+ int32_t iLastImgHeightInPixel;// height of image in last successful pixel reconstruction picture to be output
bool bFreezeOutput; // indicating current frame freezing. Default: true
// Derived common elements
- SNalUnitHeader sCurNalHead;
- EWelsSliceType eSliceType; // Slice type
- int32_t iFrameNum;
- int32_t iPrevFrameNum; // frame number of previous frame well decoded for non-truncated mode yet
- bool bLastHasMmco5; //
- int32_t iErrorCode; // error code return while decoding in case packets lost
- SFmo sFmoList[MAX_PPS_COUNT]; // list for FMO storage
- PFmo pFmo; // current fmo context after parsed slice_header
- int32_t iActiveFmoNum; // active count number of fmo context in list
+ SNalUnitHeader sCurNalHead;
+ EWelsSliceType eSliceType; // Slice type
+ int32_t iFrameNum;
+ int32_t iPrevFrameNum; // frame number of previous frame well decoded for non-truncated mode yet
+ bool bLastHasMmco5; //
+ int32_t iErrorCode; // error code return while decoding in case packets lost
+ SFmo sFmoList[MAX_PPS_COUNT]; // list for FMO storage
+ PFmo pFmo; // current fmo context after parsed slice_header
+ int32_t iActiveFmoNum; // active count number of fmo context in list
/*needed info by decode slice level and mb level*/
int32_t
- iDecBlockOffsetArray[24]; // address talbe for sub 4x4 block in intra4x4_mb, so no need to caculta the address every time.
+ iDecBlockOffsetArray[24]; // address talbe for sub 4x4 block in intra4x4_mb, so no need to caculta the address every time.
struct {
int16_t* pMbType[LAYER_NUM_EXCHANGEABLE]; /* mb type */
- int16_t (*pMv[LAYER_NUM_EXCHANGEABLE][LIST_A])[MB_BLOCK4x4_NUM][MV_A]; //[LAYER_NUM_EXCHANGEABLE MB_BLOCK4x4_NUM*]
- int8_t (*pRefIndex[LAYER_NUM_EXCHANGEABLE][LIST_A])[MB_BLOCK4x4_NUM];
+ int16_t (*pMv[LAYER_NUM_EXCHANGEABLE][LIST_A])[MB_BLOCK4x4_NUM][MV_A]; //[LAYER_NUM_EXCHANGEABLE MB_BLOCK4x4_NUM*]
+ int8_t (*pRefIndex[LAYER_NUM_EXCHANGEABLE][LIST_A])[MB_BLOCK4x4_NUM];
bool* pNoSubMbPartSizeLessThan8x8Flag[LAYER_NUM_EXCHANGEABLE];
bool* pTransformSize8x8Flag[LAYER_NUM_EXCHANGEABLE];
- int8_t* pLumaQp[LAYER_NUM_EXCHANGEABLE]; /*mb luma_qp*/
- int8_t (*pChromaQp[LAYER_NUM_EXCHANGEABLE])[2]; /*mb chroma_qp*/
- int16_t (*pMvd[LAYER_NUM_EXCHANGEABLE][LIST_A])[MB_BLOCK4x4_NUM][MV_A]; //[LAYER_NUM_EXCHANGEABLE MB_BLOCK4x4_NUM*]
+ int8_t* pLumaQp[LAYER_NUM_EXCHANGEABLE]; /*mb luma_qp*/
+ int8_t (*pChromaQp[LAYER_NUM_EXCHANGEABLE])[2]; /*mb chroma_qp*/
+ int16_t (*pMvd[LAYER_NUM_EXCHANGEABLE][LIST_A])[MB_BLOCK4x4_NUM][MV_A]; //[LAYER_NUM_EXCHANGEABLE MB_BLOCK4x4_NUM*]
uint16_t* pCbfDc[LAYER_NUM_EXCHANGEABLE];
- int8_t (*pNzc[LAYER_NUM_EXCHANGEABLE])[24];
- int8_t (*pNzcRs[LAYER_NUM_EXCHANGEABLE])[24];
+ int8_t (*pNzc[LAYER_NUM_EXCHANGEABLE])[24];
+ int8_t (*pNzcRs[LAYER_NUM_EXCHANGEABLE])[24];
int16_t (*pScaledTCoeff[LAYER_NUM_EXCHANGEABLE])[MB_COEFF_LIST_SIZE]; /*need be aligned*/
- int8_t (*pIntraPredMode[LAYER_NUM_EXCHANGEABLE])[8]; //0~3 top4x4 ; 4~6 left 4x4; 7 intra16x16
+ int8_t (*pIntraPredMode[LAYER_NUM_EXCHANGEABLE])[8]; //0~3 top4x4 ; 4~6 left 4x4; 7 intra16x16
int8_t (*pIntra4x4FinalMode[LAYER_NUM_EXCHANGEABLE])[MB_BLOCK4x4_NUM];
- uint8_t* pIntraNxNAvailFlag[LAYER_NUM_EXCHANGEABLE];
+ uint8_t* pIntraNxNAvailFlag[LAYER_NUM_EXCHANGEABLE];
int8_t* pChromaPredMode[LAYER_NUM_EXCHANGEABLE];
int8_t* pCbp[LAYER_NUM_EXCHANGEABLE];
uint8_t (*pMotionPredFlag[LAYER_NUM_EXCHANGEABLE][LIST_A])[MB_PARTITION_SIZE]; // 8x8
int8_t (*pSubMbType[LAYER_NUM_EXCHANGEABLE])[MB_SUB_PARTITION_SIZE];
- int32_t* pSliceIdc[LAYER_NUM_EXCHANGEABLE]; // using int32_t for slice_idc
+ int32_t* pSliceIdc[LAYER_NUM_EXCHANGEABLE]; // using int32_t for slice_idc
int8_t* pResidualPredFlag[LAYER_NUM_EXCHANGEABLE];
int8_t* pInterPredictionDoneFlag[LAYER_NUM_EXCHANGEABLE];
bool* pMbCorrectlyDecodedFlag[LAYER_NUM_EXCHANGEABLE];
@@ -297,78 +297,77 @@
} sMb;
// reconstruction picture
- PPicture pDec; //pointer to current picture being reconstructed
+ PPicture pDec; //pointer to current picture being reconstructed
// reference pictures
- SRefPic sRefPic;
+ SRefPic sRefPic;
- SVlcTable sVlcTable; // vlc table
+ SVlcTable sVlcTable; // vlc table
- SBitStringAux sBs;
+ SBitStringAux sBs;
int32_t iMaxBsBufferSizeInByte; //actual memory size for BS buffer
/* Global memory external */
- SPosOffset sFrameCrop;
+ SPosOffset sFrameCrop;
- SSps sSpsBuffer[MAX_SPS_COUNT + 1];
- SPps sPpsBuffer[MAX_PPS_COUNT + 1];
- PSliceHeader pSliceHeader;
+ SSps sSpsBuffer[MAX_SPS_COUNT + 1];
+ SPps sPpsBuffer[MAX_PPS_COUNT + 1];
+ PSliceHeader pSliceHeader;
- PPicBuff pPicBuff[LIST_A]; // Initially allocated memory for pictures which are used in decoding.
- int32_t iPicQueueNumber;
+ PPicBuff pPicBuff[LIST_A]; // Initially allocated memory for pictures which are used in decoding.
+ int32_t iPicQueueNumber;
- SSubsetSps sSubsetSpsBuffer[MAX_SPS_COUNT + 1];
- SNalUnit sPrefixNal;
+ SSubsetSps sSubsetSpsBuffer[MAX_SPS_COUNT + 1];
+ SNalUnit sPrefixNal;
- PAccessUnit pAccessUnitList; // current access unit list to be performed
- PSps pActiveLayerSps[MAX_LAYER_NUM];
- PSps pSps; // used by current AU
- PPps pPps; // used by current AU
+ PAccessUnit pAccessUnitList; // current access unit list to be performed
+ PSps pActiveLayerSps[MAX_LAYER_NUM];
+ PSps pSps; // used by current AU
+ PPps pPps; // used by current AU
// Memory for pAccessUnitList is dynamically held till decoder destruction.
- PDqLayer pCurDqLayer; // current DQ layer representation, also carry reference base layer if applicable
- PDqLayer pDqLayersList[LAYER_NUM_EXCHANGEABLE]; // DQ layers list with memory allocated
+ PDqLayer pCurDqLayer; // current DQ layer representation, also carry reference base layer if applicable
+ PDqLayer pDqLayersList[LAYER_NUM_EXCHANGEABLE]; // DQ layers list with memory allocated
- int32_t iPicWidthReq; // picture width have requested the memory
- int32_t iPicHeightReq; // picture height have requested the memory
+ int32_t iPicWidthReq; // picture width have requested the memory
+ int32_t iPicHeightReq; // picture height have requested the memory
- uint8_t uiTargetDqId; // maximal DQ ID in current access unit, meaning target layer ID
- bool bAvcBasedFlag; // For decoding bitstream:
- bool bEndOfStreamFlag; // Flag on end of stream requested by external application layer
+ uint8_t uiTargetDqId; // maximal DQ ID in current access unit, meaning target layer ID
+ bool bAvcBasedFlag; // For decoding bitstream:
+ bool bEndOfStreamFlag; // Flag on end of stream requested by external application layer
bool bInstantDecFlag; // Flag for no-delay decoding
- bool bInitialDqLayersMem; // dq layers related memory is available?
+ bool bInitialDqLayersMem; // dq layers related memory is available?
- bool bOnlyOneLayerInCurAuFlag; //only one layer in current AU: 1
+ bool bOnlyOneLayerInCurAuFlag; //only one layer in current AU: 1
// for EC parameter sets
- bool bSpsExistAheadFlag; // whether does SPS NAL exist ahead of sequence?
- bool bSubspsExistAheadFlag;// whether does Subset SPS NAL exist ahead of sequence?
- bool bPpsExistAheadFlag; // whether does PPS NAL exist ahead of sequence?
+ bool bSpsExistAheadFlag; // whether does SPS NAL exist ahead of sequence?
+ bool bSubspsExistAheadFlag;// whether does Subset SPS NAL exist ahead of sequence?
+ bool bPpsExistAheadFlag; // whether does PPS NAL exist ahead of sequence?
- int32_t iSpsErrorIgnored;
- int32_t iSubSpsErrorIgnored;
- int32_t iPpsErrorIgnored;
+ int32_t iSpsErrorIgnored;
+ int32_t iSubSpsErrorIgnored;
+ int32_t iPpsErrorIgnored;
- bool bSpsAvailFlags[MAX_SPS_COUNT];
- bool bSubspsAvailFlags[MAX_SPS_COUNT];
- bool bPpsAvailFlags[MAX_PPS_COUNT];
- int32_t iPPSLastInvalidId;
- int32_t iPPSInvalidNum;
- int32_t iSPSLastInvalidId;
- int32_t iSPSInvalidNum;
- int32_t iSubSPSLastInvalidId;
- int32_t iSubSPSInvalidNum;
+ bool bSpsAvailFlags[MAX_SPS_COUNT];
+ bool bSubspsAvailFlags[MAX_SPS_COUNT];
+ bool bPpsAvailFlags[MAX_PPS_COUNT];
+ int32_t iPPSLastInvalidId;
+ int32_t iPPSInvalidNum;
+ int32_t iSPSLastInvalidId;
+ int32_t iSPSInvalidNum;
+ int32_t iSubSPSLastInvalidId;
+ int32_t iSubSPSInvalidNum;
- bool bReferenceLostAtT0Flag;
- int32_t iTotalNumMbRec; //record current number of decoded MB
+ bool bReferenceLostAtT0Flag;
+ int32_t iTotalNumMbRec; //record current number of decoded MB
#ifdef LONG_TERM_REF
- bool bParamSetsLostFlag; //sps or pps do not exist or not correct
+ bool bParamSetsLostFlag; //sps or pps do not exist or not correct
- bool
- bCurAuContainLtrMarkSeFlag; //current AU has the LTR marking syntax element, mark the previous frame or self
- int32_t iFrameNumOfAuMarkedLtr; //if bCurAuContainLtrMarkSeFlag==true, SHOULD set this variable
+ bool bCurAuContainLtrMarkSeFlag; //current AU has the LTR marking syntax element, mark the previous frame or self
+ int32_t iFrameNumOfAuMarkedLtr; //if bCurAuContainLtrMarkSeFlag==true, SHOULD set this variable
- uint16_t uiCurIdrPicId;
+ uint16_t uiCurIdrPicId;
#endif
bool bNewSeqBegin;
bool bNextNewSeqBegin;
@@ -387,20 +386,20 @@
SParserBsInfo* pParserBsInfo;
PPicture pPreviousDecodedPictureInDpb; //pointer to previously decoded picture in DPB for error concealment
- PGetIntraPredFunc pGetI16x16LumaPredFunc[7]; //h264_predict_copy_16x16;
- PGetIntraPredFunc pGetI4x4LumaPredFunc[14]; // h264_predict_4x4_t
- PGetIntraPredFunc pGetIChromaPredFunc[7]; // h264_predict_8x8_t
- PIdctResAddPredFunc pIdctResAddPredFunc;
- SMcFunc sMcFunc;
+ PGetIntraPredFunc pGetI16x16LumaPredFunc[7]; //h264_predict_copy_16x16;
+ PGetIntraPredFunc pGetI4x4LumaPredFunc[14]; // h264_predict_4x4_t
+ PGetIntraPredFunc pGetIChromaPredFunc[7]; // h264_predict_8x8_t
+ PIdctResAddPredFunc pIdctResAddPredFunc;
+ SMcFunc sMcFunc;
//Transform8x8
PGetIntraPred8x8Func pGetI8x8LumaPredFunc[14];
- PIdctResAddPredFunc pIdctResAddPredFunc8x8;
+ PIdctResAddPredFunc pIdctResAddPredFunc8x8;
//For error concealment
SCopyFunc sCopyFunc;
/* For Deblocking */
SDeblockingFunc sDeblockingFunc;
- SExpandPicFunc sExpandPicFunc;
+ SExpandPicFunc sExpandPicFunc;
/* For Block */
SBlockFunc sBlockFunc;
--- a/codec/decoder/core/inc/fmo.h
+++ b/codec/decoder/core/inc/fmo.h
@@ -54,12 +54,12 @@
* \brief Wels Flexible Macroblock Ordering (FMO)
*/
typedef struct TagFmo {
-uint8_t* pMbAllocMap;
-int32_t iCountMbNum;
-int32_t iSliceGroupCount;
-int32_t iSliceGroupType;
-bool bActiveFlag;
-uint8_t uiReserved[3]; // reserved padding bytes
+uint8_t* pMbAllocMap;
+int32_t iCountMbNum;
+int32_t iSliceGroupCount;
+int32_t iSliceGroupType;
+bool bActiveFlag;
+uint8_t uiReserved[3]; // reserved padding bytes
} SFmo, *PFmo;
--- a/codec/decoder/core/inc/nal_prefix.h
+++ b/codec/decoder/core/inc/nal_prefix.h
@@ -44,11 +44,11 @@
/* Prefix NAL Unix syntax, refer to Page 392 in JVT X201wcm */
typedef struct TagPrefixNalUnit {
-SRefBasePicMarking sRefPicBaseMarking;
-bool bStoreRefBasePicFlag;
-bool bPrefixNalUnitAdditionalExtFlag;
-bool bPrefixNalUnitExtFlag;
-bool bPrefixNalCorrectFlag;
+SRefBasePicMarking sRefPicBaseMarking;
+bool bStoreRefBasePicFlag;
+bool bPrefixNalUnitAdditionalExtFlag;
+bool bPrefixNalUnitExtFlag;
+bool bPrefixNalCorrectFlag;
} SPrefixNalUnit, *PPrefixNalUnit;
} // namespace WelsDec
--- a/codec/decoder/core/inc/nalu.h
+++ b/codec/decoder/core/inc/nalu.h
@@ -45,17 +45,17 @@
/* NAL Unit Structure */
typedef struct TagNalUnit {
-SNalUnitHeaderExt sNalHeaderExt;
+SNalUnitHeaderExt sNalHeaderExt;
union {
struct SVclNal {
- SSliceHeaderExt sSliceHeaderExt;
- SBitStringAux sSliceBitsRead;
- uint8_t* pNalPos; // save the address of slice nal for GPU function
- int32_t iNalLength; // save the nal length for GPU function
- bool bSliceHeaderExtFlag;
+ SSliceHeaderExt sSliceHeaderExt;
+ SBitStringAux sSliceBitsRead;
+ uint8_t* pNalPos; // save the address of slice nal for GPU function
+ int32_t iNalLength; // save the nal length for GPU function
+ bool bSliceHeaderExtFlag;
} sVclNal;
- SPrefixNalUnit sPrefixNal;
+ SPrefixNalUnit sPrefixNal;
} sNalData;
unsigned long long uiTimeStamp;
} SNalUnit, *PNalUnit;
@@ -64,14 +64,14 @@
/* Access Unit structure */
typedef struct TagAccessUnits {
-PNalUnit* pNalUnitsList; // list of NAL Units pointer in this AU
-uint32_t uiAvailUnitsNum; // Number of NAL Units available in each AU list based current bitstream,
-uint32_t uiActualUnitsNum; // actual number of NAL units belong to current au
+PNalUnit* pNalUnitsList; // list of NAL Units pointer in this AU
+uint32_t uiAvailUnitsNum; // Number of NAL Units available in each AU list based current bitstream,
+uint32_t uiActualUnitsNum; // actual number of NAL units belong to current au
// While available number exceeds count size below, need realloc extra NAL Units for list space.
-uint32_t uiCountUnitsNum; // Count size number of malloced NAL Units in each AU list
-uint32_t uiStartPos;
-uint32_t uiEndPos;
-bool bCompletedAuFlag; // Indicate whether it is a completed AU
+uint32_t uiCountUnitsNum; // Count size number of malloced NAL Units in each AU list
+uint32_t uiStartPos;
+uint32_t uiEndPos;
+bool bCompletedAuFlag; // Indicate whether it is a completed AU
} SAccessUnit, *PAccessUnit;
} // namespace WelsDec
--- a/codec/decoder/core/inc/parameter_sets.h
+++ b/codec/decoder/core/inc/parameter_sets.h
@@ -42,52 +42,52 @@
/* Sequence Parameter Set, refer to Page 57 in JVT X201wcm */
typedef struct TagSps {
- int32_t iSpsId;
- uint32_t iMbWidth;
- uint32_t iMbHeight;
- uint32_t uiTotalMbCount; //used in decode_slice_data()
+ int32_t iSpsId;
+ uint32_t iMbWidth;
+ uint32_t iMbHeight;
+ uint32_t uiTotalMbCount; //used in decode_slice_data()
- uint32_t uiLog2MaxFrameNum;
- uint32_t uiPocType;
+ uint32_t uiLog2MaxFrameNum;
+ uint32_t uiPocType;
/* POC type 0 */
- int32_t iLog2MaxPocLsb;
+ int32_t iLog2MaxPocLsb;
/* POC type 1 */
- int32_t iOffsetForNonRefPic;
+ int32_t iOffsetForNonRefPic;
- int32_t iOffsetForTopToBottomField;
- int32_t iNumRefFramesInPocCycle;
- int8_t iOffsetForRefFrame[256];
- int32_t iNumRefFrames;
+ int32_t iOffsetForTopToBottomField;
+ int32_t iNumRefFramesInPocCycle;
+ int8_t iOffsetForRefFrame[256];
+ int32_t iNumRefFrames;
- SPosOffset sFrameCrop;
+ SPosOffset sFrameCrop;
- ProfileIdc uiProfileIdc;
- uint8_t uiLevelIdc;
- uint8_t uiChromaFormatIdc;
- uint8_t uiChromaArrayType;
+ ProfileIdc uiProfileIdc;
+ uint8_t uiLevelIdc;
+ uint8_t uiChromaFormatIdc;
+ uint8_t uiChromaArrayType;
- uint8_t uiBitDepthLuma;
- uint8_t uiBitDepthChroma;
+ uint8_t uiBitDepthLuma;
+ uint8_t uiBitDepthChroma;
/* TO BE CONTINUE: POC type 1 */
- bool bDeltaPicOrderAlwaysZeroFlag;
- bool bGapsInFrameNumValueAllowedFlag;
+ bool bDeltaPicOrderAlwaysZeroFlag;
+ bool bGapsInFrameNumValueAllowedFlag;
- bool bFrameMbsOnlyFlag;
- bool bMbaffFlag; // MB Adapative Frame Field
- bool bDirect8x8InferenceFlag;
- bool bFrameCroppingFlag;
+ bool bFrameMbsOnlyFlag;
+ bool bMbaffFlag; // MB Adapative Frame Field
+ bool bDirect8x8InferenceFlag;
+ bool bFrameCroppingFlag;
- bool bVuiParamPresentFlag;
-// bool bTimingInfoPresentFlag;
-// bool bFixedFrameRateFlag;
- bool bConstraintSet0Flag;
- bool bConstraintSet1Flag;
- bool bConstraintSet2Flag;
- bool bConstraintSet3Flag;
- bool bSeparateColorPlaneFlag;
- bool bQpPrimeYZeroTransfBypassFlag;
- bool bSeqScalingMatrixPresentFlag;
- bool bSeqScalingListPresentFlag[12];
+ bool bVuiParamPresentFlag;
+// bool bTimingInfoPresentFlag;
+// bool bFixedFrameRateFlag;
+ bool bConstraintSet0Flag;
+ bool bConstraintSet1Flag;
+ bool bConstraintSet2Flag;
+ bool bConstraintSet3Flag;
+ bool bSeparateColorPlaneFlag;
+ bool bQpPrimeYZeroTransfBypassFlag;
+ bool bSeqScalingMatrixPresentFlag;
+ bool bSeqScalingListPresentFlag[12];
//Add scaling list supporting
uint8_t iScalingList4x4[6][16];
uint8_t iScalingList8x8[6][64];
@@ -98,75 +98,75 @@
/* Sequence Parameter Set extension syntax, refer to Page 58 in JVT X201wcm */
//typedef struct TagSpsExt{
-// uint32_t iSpsId;
-// uint32_t uiAuxFormatIdc;
-// int32_t iAlphaOpaqueValue;
-// int32_t iAlphaTransparentValue;
+// uint32_t iSpsId;
+// uint32_t uiAuxFormatIdc;
+// int32_t iAlphaOpaqueValue;
+// int32_t iAlphaTransparentValue;
-// uint8_t uiBitDepthAux;
-// bool bAlphaIncrFlag;
-// bool bAdditionalExtFlag;
+// uint8_t uiBitDepthAux;
+// bool bAlphaIncrFlag;
+// bool bAdditionalExtFlag;
//}SSpsExt, *PSpsExt;
/* Sequence Parameter Set extension syntax, refer to Page 391 in JVT X201wcm */
typedef struct TagSpsSvcExt {
- SPosOffset sSeqScaledRefLayer;
+ SPosOffset sSeqScaledRefLayer;
- uint8_t uiExtendedSpatialScalability; // ESS
- uint8_t uiChromaPhaseXPlus1Flag;
- uint8_t uiChromaPhaseYPlus1;
- uint8_t uiSeqRefLayerChromaPhaseXPlus1Flag;
- uint8_t uiSeqRefLayerChromaPhaseYPlus1;
- bool bInterLayerDeblockingFilterCtrlPresentFlag;
- bool bSeqTCoeffLevelPredFlag;
- bool bAdaptiveTCoeffLevelPredFlag;
- bool bSliceHeaderRestrictionFlag;
+ uint8_t uiExtendedSpatialScalability; // ESS
+ uint8_t uiChromaPhaseXPlus1Flag;
+ uint8_t uiChromaPhaseYPlus1;
+ uint8_t uiSeqRefLayerChromaPhaseXPlus1Flag;
+ uint8_t uiSeqRefLayerChromaPhaseYPlus1;
+ bool bInterLayerDeblockingFilterCtrlPresentFlag;
+ bool bSeqTCoeffLevelPredFlag;
+ bool bAdaptiveTCoeffLevelPredFlag;
+ bool bSliceHeaderRestrictionFlag;
} SSpsSvcExt, *PSpsSvcExt;
/* Subset sequence parameter set syntax, refer to Page 391 in JVT X201wcm */
typedef struct TagSubsetSps {
- SSps sSps;
- SSpsSvcExt sSpsSvcExt;
- bool bSvcVuiParamPresentFlag;
- bool bAdditionalExtension2Flag;
- bool bAdditionalExtension2DataFlag;
+ SSps sSps;
+ SSpsSvcExt sSpsSvcExt;
+ bool bSvcVuiParamPresentFlag;
+ bool bAdditionalExtension2Flag;
+ bool bAdditionalExtension2DataFlag;
} SSubsetSps, *PSubsetSps;
/* Picture parameter set syntax, refer to Page 59 in JVT X201wcm */
typedef struct TagPps {
- int32_t iSpsId;
- int32_t iPpsId;
+ int32_t iSpsId;
+ int32_t iPpsId;
- uint32_t uiNumSliceGroups;
- uint32_t uiSliceGroupMapType;
+ uint32_t uiNumSliceGroups;
+ uint32_t uiSliceGroupMapType;
/* slice_group_map_type = 0 */
- uint32_t uiRunLength[MAX_SLICEGROUP_IDS];
+ uint32_t uiRunLength[MAX_SLICEGROUP_IDS];
/* slice_group_map_type = 2 */
- uint32_t uiTopLeft[MAX_SLICEGROUP_IDS];
- uint32_t uiBottomRight[MAX_SLICEGROUP_IDS];
+ uint32_t uiTopLeft[MAX_SLICEGROUP_IDS];
+ uint32_t uiBottomRight[MAX_SLICEGROUP_IDS];
/* slice_group_map_type = 3, 4 or 5 */
- uint32_t uiSliceGroupChangeRate;
+ uint32_t uiSliceGroupChangeRate;
/* slice_group_map_type = 6 */
- uint32_t uiPicSizeInMapUnits;
- uint32_t uiSliceGroupId[MAX_SLICEGROUP_IDS];
+ uint32_t uiPicSizeInMapUnits;
+ uint32_t uiSliceGroupId[MAX_SLICEGROUP_IDS];
- uint32_t uiNumRefIdxL0Active;
- uint32_t uiNumRefIdxL1Active;
+ uint32_t uiNumRefIdxL0Active;
+ uint32_t uiNumRefIdxL1Active;
- int32_t iPicInitQp;
- int32_t iPicInitQs;
- int32_t iChromaQpIndexOffset[2];//cb,cr
+ int32_t iPicInitQp;
+ int32_t iPicInitQs;
+ int32_t iChromaQpIndexOffset[2];//cb,cr
- bool bEntropyCodingModeFlag;
- bool bPicOrderPresentFlag;
+ bool bEntropyCodingModeFlag;
+ bool bPicOrderPresentFlag;
/* slice_group_map_type = 3, 4 or 5 */
- bool bSliceGroupChangeDirectionFlag;
- bool bDeblockingFilterControlPresentFlag;
+ bool bSliceGroupChangeDirectionFlag;
+ bool bDeblockingFilterControlPresentFlag;
- bool bConstainedIntraPredFlag;
- bool bRedundantPicCntPresentFlag;
- bool bWeightedPredFlag;
- uint8_t uiWeightedBipredIdc;
+ bool bConstainedIntraPredFlag;
+ bool bRedundantPicCntPresentFlag;
+ bool bWeightedPredFlag;
+ uint8_t uiWeightedBipredIdc;
bool bTransform8x8ModeFlag;
//Add for scalinglist support
--- a/codec/decoder/core/inc/picture.h
+++ b/codec/decoder/core/inc/picture.h
@@ -44,10 +44,10 @@
*/
typedef struct TagPicture {
/************************************payload data*********************************/
-uint8_t* pBuffer[4]; // pointer to the first allocated byte, basical offset of buffer, dimension:
-uint8_t* pData[4]; // pointer to picture planes respectively
-int32_t iLinesize[4];// linesize of picture planes respectively used currently
-int32_t iPlanes; // How many planes are introduced due to color space format?
+uint8_t* pBuffer[4]; // pointer to the first allocated byte, basical offset of buffer, dimension:
+uint8_t* pData[4]; // pointer to picture planes respectively
+int32_t iLinesize[4];// linesize of picture planes respectively used currently
+int32_t iPlanes; // How many planes are introduced due to color space format?
// picture information
/*******************************from EC mv copy****************************/
@@ -55,25 +55,25 @@
/*******************************from other standard syntax****************************/
/*from sps*/
-int32_t iWidthInPixel; // picture width in pixel
-int32_t iHeightInPixel;// picture height in pixel
+int32_t iWidthInPixel; // picture width in pixel
+int32_t iHeightInPixel;// picture height in pixel
/*from slice header*/
-int32_t iFramePoc; // frame POC
+int32_t iFramePoc; // frame POC
/*******************************sef_definition for misc use****************************/
-bool bUsedAsRef; //for ref pic management
-bool bIsLongRef; // long term reference frame flag //for ref pic management
-uint8_t uiRefCount;
-bool bAvailableFlag; // indicate whether it is available in this picture memory block.
+bool bUsedAsRef; //for ref pic management
+bool bIsLongRef; // long term reference frame flag //for ref pic management
+uint8_t uiRefCount;
+bool bAvailableFlag; // indicate whether it is available in this picture memory block.
-bool bIsComplete; // indicate whether current picture is complete, not from EC
+bool bIsComplete; // indicate whether current picture is complete, not from EC
/*******************************for future use****************************/
-uint8_t uiTemporalId;
-uint8_t uiSpatialId;
-uint8_t uiQualityId;
+uint8_t uiTemporalId;
+uint8_t uiSpatialId;
+uint8_t uiQualityId;
-int32_t iFrameNum; // frame number //for ref pic management
-int32_t iLongTermFrameIdx; //id for long term ref pic
+int32_t iFrameNum; // frame number //for ref pic management
+int32_t iLongTermFrameIdx; //id for long term ref pic
int32_t iSpsId; //against mosaic caused by cross-IDR interval reference.
int32_t iPpsId;
--- a/codec/decoder/core/inc/slice.h
+++ b/codec/decoder/core/inc/slice.h
@@ -51,7 +51,7 @@
uint16_t uiLongTermPicNum;
uint16_t uiReorderingOfPicNumsIdc;
} sReorderingSyn[LIST_A][MAX_REF_PIC_COUNT];
-bool bRefPicListReorderingFlag[LIST_A];
+bool bRefPicListReorderingFlag[LIST_A];
} SRefPicListReorderSyn, *PRefPicListReorderSyn;
/*
@@ -58,15 +58,15 @@
* Prediction weight table syntax, refer to page 65 in JVT X201wcm
*/
typedef struct TagPredWeightTabSyntax {
-uint32_t uiLumaLog2WeightDenom;
-uint32_t uiChromaLog2WeightDenom;
+uint32_t uiLumaLog2WeightDenom;
+uint32_t uiChromaLog2WeightDenom;
struct {
- int32_t iLumaWeight[MAX_REF_PIC_COUNT];
+ int32_t iLumaWeight[MAX_REF_PIC_COUNT];
int32_t iLumaOffset[MAX_REF_PIC_COUNT];
- int32_t iChromaWeight[MAX_REF_PIC_COUNT][2];
+ int32_t iChromaWeight[MAX_REF_PIC_COUNT][2];
int32_t iChromaOffset[MAX_REF_PIC_COUNT][2];
- bool bLumaWeightFlag;
- bool bChromaWeightFlag;
+ bool bLumaWeightFlag;
+ bool bChromaWeightFlag;
} sPredList[LIST_A];
} SPredWeightTabSyn,*PPredWeightTabSyn;
@@ -75,129 +75,129 @@
struct {
uint32_t uiMmcoType;
int32_t iShortFrameNum;
- int32_t iDiffOfPicNum;
+ int32_t iDiffOfPicNum;
uint32_t uiLongTermPicNum;
- int32_t iLongTermFrameIdx;
- int32_t iMaxLongTermFrameIdx;
+ int32_t iLongTermFrameIdx;
+ int32_t iMaxLongTermFrameIdx;
} sMmcoRef[MAX_MMCO_COUNT];
-bool bNoOutputOfPriorPicsFlag;
-bool bLongTermRefFlag;
-bool bAdaptiveRefPicMarkingModeFlag;
+bool bNoOutputOfPriorPicsFlag;
+bool bLongTermRefFlag;
+bool bAdaptiveRefPicMarkingModeFlag;
} SRefPicMarking, *PRefPicMarking;
/* Decode reference base picture marking syntax in Page 396 of JVT X201wcm */
typedef struct TagRefBasePicMarkingSyn {
struct {
- uint32_t uiMmcoType;
- int32_t iShortFrameNum;
- uint32_t uiDiffOfPicNums;
- uint32_t uiLongTermPicNum; //should uint32_t, cover larger range of iFrameNum.
-} mmco_base[MAX_MMCO_COUNT]; // MAX_REF_PIC for reference picture based on frame
+ uint32_t uiMmcoType;
+ int32_t iShortFrameNum;
+ uint32_t uiDiffOfPicNums;
+ uint32_t uiLongTermPicNum; //should uint32_t, cover larger range of iFrameNum.
+} mmco_base[MAX_MMCO_COUNT]; // MAX_REF_PIC for reference picture based on frame
-bool bAdaptiveRefBasePicMarkingModeFlag;
+bool bAdaptiveRefBasePicMarkingModeFlag;
} SRefBasePicMarking, *PRefBasePicMarking;
/* Header of slice syntax elements, refer to Page 63 in JVT X201wcm */
typedef struct TagSliceHeaders {
/*****************************slice header syntax and generated****************************/
-int32_t iFirstMbInSlice;
-int32_t iFrameNum;
-int32_t iPicOrderCntLsb;
-int32_t iDeltaPicOrderCntBottom;
-int32_t iDeltaPicOrderCnt[2];
-int32_t iRedundantPicCnt;
-int32_t uiRefCount[LIST_A];
-int32_t iSliceQpDelta; //no use for iSliceQp is used directly
-int32_t iSliceQp;
-int32_t iSliceQsDelta; // For SP/SI slices
-uint32_t uiDisableDeblockingFilterIdc;
-int32_t iSliceAlphaC0Offset;
-int32_t iSliceBetaOffset;
-int32_t iSliceGroupChangeCycle;
+int32_t iFirstMbInSlice;
+int32_t iFrameNum;
+int32_t iPicOrderCntLsb;
+int32_t iDeltaPicOrderCntBottom;
+int32_t iDeltaPicOrderCnt[2];
+int32_t iRedundantPicCnt;
+int32_t uiRefCount[LIST_A];
+int32_t iSliceQpDelta; //no use for iSliceQp is used directly
+int32_t iSliceQp;
+int32_t iSliceQsDelta; // For SP/SI slices
+uint32_t uiDisableDeblockingFilterIdc;
+int32_t iSliceAlphaC0Offset;
+int32_t iSliceBetaOffset;
+int32_t iSliceGroupChangeCycle;
-PSps pSps;
-PPps pPps;
-int32_t iSpsId;
-int32_t iPpsId;
+PSps pSps;
+PPps pPps;
+int32_t iSpsId;
+int32_t iPpsId;
bool bIdrFlag;
/*********************got from other layer for efficency if possible*********************/
-SRefPicListReorderSyn pRefPicListReordering; // Reference picture list reordering syntaxs
-SPredWeightTabSyn sPredWeightTable;
-int32_t iCabacInitIdc;
-int32_t iMbWidth; //from?
-int32_t iMbHeight; //from?
-SRefPicMarking sRefMarking; // Decoded reference picture marking syntaxs
+SRefPicListReorderSyn pRefPicListReordering; // Reference picture list reordering syntaxs
+SPredWeightTabSyn sPredWeightTable;
+int32_t iCabacInitIdc;
+int32_t iMbWidth; //from?
+int32_t iMbHeight; //from?
+SRefPicMarking sRefMarking; // Decoded reference picture marking syntaxs
uint16_t uiIdrPicId;
-EWelsSliceType eSliceType;
-bool bNumRefIdxActiveOverrideFlag;
-bool bFieldPicFlag; //not supported in base profile
-bool bBottomFiledFlag; //not supported in base profile
-uint8_t uiPadding1Byte;
-bool bSpForSwitchFlag; // For SP/SI slices
-int16_t iPadding2Bytes;
+EWelsSliceType eSliceType;
+bool bNumRefIdxActiveOverrideFlag;
+bool bFieldPicFlag; //not supported in base profile
+bool bBottomFiledFlag; //not supported in base profile
+uint8_t uiPadding1Byte;
+bool bSpForSwitchFlag; // For SP/SI slices
+int16_t iPadding2Bytes;
} SSliceHeader, *PSliceHeader;
/* Slice header in scalable extension syntax, refer to Page 394 in JVT X201wcm */
typedef struct TagSliceHeaderExt {
-SSliceHeader sSliceHeader;
-PSubsetSps pSubsetSps;
+SSliceHeader sSliceHeader;
+PSubsetSps pSubsetSps;
-uint32_t uiDisableInterLayerDeblockingFilterIdc;
-int32_t iInterLayerSliceAlphaC0Offset;
-int32_t iInterLayerSliceBetaOffset;
+uint32_t uiDisableInterLayerDeblockingFilterIdc;
+int32_t iInterLayerSliceAlphaC0Offset;
+int32_t iInterLayerSliceBetaOffset;
//SPosOffset sScaledRefLayer;
-int32_t iScaledRefLayerPicWidthInSampleLuma;
-int32_t iScaledRefLayerPicHeightInSampleLuma;
+int32_t iScaledRefLayerPicWidthInSampleLuma;
+int32_t iScaledRefLayerPicHeightInSampleLuma;
-SRefBasePicMarking sRefBasePicMarking;
-bool bBasePredWeightTableFlag;
-bool bStoreRefBasePicFlag;
-bool bConstrainedIntraResamplingFlag;
-bool bSliceSkipFlag;
+SRefBasePicMarking sRefBasePicMarking;
+bool bBasePredWeightTableFlag;
+bool bStoreRefBasePicFlag;
+bool bConstrainedIntraResamplingFlag;
+bool bSliceSkipFlag;
-bool bAdaptiveBaseModeFlag;
-bool bDefaultBaseModeFlag;
-bool bAdaptiveMotionPredFlag;
-bool bDefaultMotionPredFlag;
-bool bAdaptiveResidualPredFlag;
-bool bDefaultResidualPredFlag;
-bool bTCoeffLevelPredFlag;
-uint8_t uiRefLayerChromaPhaseXPlus1Flag;
+bool bAdaptiveBaseModeFlag;
+bool bDefaultBaseModeFlag;
+bool bAdaptiveMotionPredFlag;
+bool bDefaultMotionPredFlag;
+bool bAdaptiveResidualPredFlag;
+bool bDefaultResidualPredFlag;
+bool bTCoeffLevelPredFlag;
+uint8_t uiRefLayerChromaPhaseXPlus1Flag;
-uint8_t uiRefLayerChromaPhaseYPlus1;
-uint8_t uiRefLayerDqId;
-uint8_t uiScanIdxStart;
-uint8_t uiScanIdxEnd;
+uint8_t uiRefLayerChromaPhaseYPlus1;
+uint8_t uiRefLayerDqId;
+uint8_t uiScanIdxStart;
+uint8_t uiScanIdxEnd;
} SSliceHeaderExt, *PSliceHeaderExt;
typedef struct TagSlice {
/*******************************slice_header****************************/
-SSliceHeaderExt sSliceHeaderExt;
+SSliceHeaderExt sSliceHeaderExt;
/*******************************use for future****************************/
// for Macroblock coding within slice
-int32_t iLastMbQp; // stored qp for last mb coded, maybe more efficient for mb skip detection etc.
+int32_t iLastMbQp; // stored qp for last mb coded, maybe more efficient for mb skip detection etc.
/*******************************slice_data****************************/
/*slice_data_ext()*/
-int32_t iMbSkipRun;
-int32_t iTotalMbInCurSlice; //record the total number of MB in current slice.
+int32_t iMbSkipRun;
+int32_t iTotalMbInCurSlice; //record the total number of MB in current slice.
/*slice_data_ext() generate*/
/*******************************misc use****************************/
-bool bSliceHeaderExtFlag; // Indicate which slice header is used, avc or ext?
+bool bSliceHeaderExtFlag; // Indicate which slice header is used, avc or ext?
/*************got from other layer for effiency if possible***************/
/*from lower layer: slice header*/
-uint8_t eSliceType;
-uint8_t uiPadding[2];
-int32_t iLastDeltaQp;
+uint8_t eSliceType;
+uint8_t uiPadding[2];
+int32_t iLastDeltaQp;
} SSlice, *PSlice;
} // namespace WelsDec
--- a/codec/decoder/core/inc/wels_common_basis.h
+++ b/codec/decoder/core/inc/wels_common_basis.h
@@ -53,14 +53,14 @@
extern const uint8_t g_kCache30ScanIdx[16];
extern const uint8_t g_kNonZeroScanIdxC[4];
/* Profile IDC */
-typedef uint8_t ProfileIdc;
+typedef uint8_t ProfileIdc;
/* Position Offset structure */
typedef struct TagPosOffset {
-int32_t iLeftOffset;
-int32_t iTopOffset;
-int32_t iRightOffset;
-int32_t iBottomOffset;
+int32_t iLeftOffset;
+int32_t iTopOffset;
+int32_t iRightOffset;
+int32_t iBottomOffset;
} SPosOffset;
/* MB Type & Sub-MB Type */
@@ -215,7 +215,7 @@
int8_t iLeftAvail;
int8_t iTopAvail;
int8_t iLeftTopAvail;
- // int8_t right_top_avail; //when right_top unavailable but top avail, we can pad the right-top with the rightmost pixel of top
+ // int8_t right_top_avail; //when right_top unavailable but top avail, we can pad the right-top with the rightmost pixel of top
} SI4PredInfo;
static const SI4PredInfo g_ksI4PredInfo[9] = {
{ I4_PRED_V, 0, 1, 0},
--- a/codec/decoder/plus/inc/welsDecoderExt.h
+++ b/codec/decoder/plus/inc/welsDecoderExt.h
@@ -106,8 +106,8 @@
virtual long EXTAPI GetOption (DECODER_OPTION eOptID, void* pOption);
private:
-PWelsDecoderContext m_pDecContext;
-welsCodecTrace* m_pWelsTrace;
+PWelsDecoderContext m_pDecContext;
+welsCodecTrace* m_pWelsTrace;
int32_t InitDecoder (const bool);
void UninitDecoder (void);
--- a/codec/encoder/core/inc/deblocking.h
+++ b/codec/encoder/core/inc/deblocking.h
@@ -50,11 +50,11 @@
//struct tagDeblockingFunc;
typedef struct TagDeblockingFilter {
- uint8_t* pCsData[3]; // pointer to reconstructed picture pData
- int32_t iCsStride[3]; // Cs iStride
+ uint8_t* pCsData[3]; // pointer to reconstructed picture pData
+ int32_t iCsStride[3]; // Cs iStride
int16_t iMbStride;
- int8_t iSliceAlphaC0Offset;
- int8_t iSliceBetaOffset;
+ int8_t iSliceAlphaC0Offset;
+ int8_t iSliceBetaOffset;
uint8_t uiLumaQP;
uint8_t uiChromaQP;
uint8_t uiFilterIdc;
--- a/codec/encoder/core/inc/dq_map.h
+++ b/codec/encoder/core/inc/dq_map.h
@@ -48,9 +48,9 @@
*/
typedef struct TagDqIdc {
-uint16_t iPpsId; // pPps id
-uint8_t iSpsId; // pSps id
-int8_t uiSpatialId; // spatial id
+uint16_t iPpsId; // pPps id
+uint8_t iSpsId; // pSps id
+int8_t uiSpatialId; // spatial id
} SDqIdc;
}
--- a/codec/encoder/core/inc/encoder_context.h
+++ b/codec/encoder/core/inc/encoder_context.h
@@ -64,111 +64,108 @@
* reference list for each quality layer in SVC
*/
typedef struct TagRefList {
- SPicture* pShortRefList[1 + MAX_SHORT_REF_COUNT]; // reference list 0 - int16_t
- SPicture* pLongRefList[1 + MAX_REF_PIC_COUNT]; // reference list 1 - int32_t
- SPicture* pNextBuffer;
- SPicture* pRef[1 + MAX_REF_PIC_COUNT]; // plus 1 for swap intend
- uint8_t uiShortRefCount;
- uint8_t uiLongRefCount; // dependend on pRef pic module
+ SPicture* pShortRefList[1 + MAX_SHORT_REF_COUNT]; // reference list 0 - int16_t
+ SPicture* pLongRefList[1 + MAX_REF_PIC_COUNT]; // reference list 1 - int32_t
+ SPicture* pNextBuffer;
+ SPicture* pRef[1 + MAX_REF_PIC_COUNT]; // plus 1 for swap intend
+ uint8_t uiShortRefCount;
+ uint8_t uiLongRefCount; // dependend on pRef pic module
} SRefList;
typedef struct TagLTRState {
// LTR mark feedback
- uint32_t uiLtrMarkState; // LTR mark state, indicate whether there is a LTR mark feedback unsolved
- int32_t iLtrMarkFbFrameNum;// the unsolved LTR mark feedback, the marked iFrameNum feedback from decoder
+ uint32_t uiLtrMarkState; // LTR mark state, indicate whether there is a LTR mark feedback unsolved
+ int32_t iLtrMarkFbFrameNum;// the unsolved LTR mark feedback, the marked iFrameNum feedback from decoder
// LTR used as recovery reference
- int32_t iLastRecoverFrameNum; // reserve the last LTR or IDR recover iFrameNum
- int32_t
- iLastCorFrameNumDec; // reserved the last correct position in decoder side, use to select valid LTR to recover or to decide the LTR mark validation
- int32_t
- iCurFrameNumInDec; // current iFrameNum in decoder side, use to select valid LTR to recover or to decide the LTR mark validation
+ int32_t iLastRecoverFrameNum; // reserve the last LTR or IDR recover iFrameNum
+ int32_t iLastCorFrameNumDec; // reserved the last correct position in decoder side, use to select valid LTR to recover or to decide the LTR mark validation
+ int32_t iCurFrameNumInDec; // current iFrameNum in decoder side, use to select valid LTR to recover or to decide the LTR mark validation
// LTR mark
- int32_t iLTRMarkMode; // direct mark or delay mark
- int32_t iLTRMarkSuccessNum; //successful marked num, for mark mode switch
- int32_t iCurLtrIdx;// current int32_t term reference index to mark
- int32_t iLastLtrIdx[MAX_TEMPORAL_LAYER_NUM];
- int32_t iSceneLtrIdx;// related to Scene LTR, used by screen content
+ int32_t iLTRMarkMode; // direct mark or delay mark
+ int32_t iLTRMarkSuccessNum; //successful marked num, for mark mode switch
+ int32_t iCurLtrIdx;// current int32_t term reference index to mark
+ int32_t iLastLtrIdx[MAX_TEMPORAL_LAYER_NUM];
+ int32_t iSceneLtrIdx;// related to Scene LTR, used by screen content
- uint32_t uiLtrMarkInterval;// the interval from the last int32_t term pRef mark
+ uint32_t uiLtrMarkInterval;// the interval from the last int32_t term pRef mark
- bool bLTRMarkingFlag; //decide whether current frame marked as LTR
- bool bLTRMarkEnable; //when LTR is confirmed and the interval is no smaller than the marking period
- bool bReceivedT0LostFlag; // indicate whether a t0 lost feedback is recieved, for LTR recovery
+ bool bLTRMarkingFlag; //decide whether current frame marked as LTR
+ bool bLTRMarkEnable; //when LTR is confirmed and the interval is no smaller than the marking period
+ bool bReceivedT0LostFlag; // indicate whether a t0 lost feedback is recieved, for LTR recovery
} SLTRState;
typedef struct TagSpatialPicIndex {
- SPicture* pSrc; // I420 based and after color space converted
- int32_t iDid; // dependency id
+ SPicture* pSrc; // I420 based and after color space converted
+ int32_t iDid; // dependency id
} SSpatialPicIndex;
typedef struct TagStrideTables {
- int32_t* pStrideDecBlockOffset[MAX_DEPENDENCY_LAYER][2]; // [iDid][tid==0][24 x 4]: luma+chroma= 24 x 4
- int32_t* pStrideEncBlockOffset[MAX_DEPENDENCY_LAYER]; // [iDid][24 x 4]: luma+chroma= 24 x 4
- int16_t* pMbIndexX[MAX_DEPENDENCY_LAYER]; // [iDid][iMbX]: map for iMbX in each spatial layer coding
- int16_t* pMbIndexY[MAX_DEPENDENCY_LAYER]; // [iDid][iMbY]: map for iMbY in each spatial layer coding
+ int32_t* pStrideDecBlockOffset[MAX_DEPENDENCY_LAYER][2]; // [iDid][tid==0][24 x 4]: luma+chroma= 24 x 4
+ int32_t* pStrideEncBlockOffset[MAX_DEPENDENCY_LAYER]; // [iDid][24 x 4]: luma+chroma= 24 x 4
+ int16_t* pMbIndexX[MAX_DEPENDENCY_LAYER]; // [iDid][iMbX]: map for iMbX in each spatial layer coding
+ int16_t* pMbIndexY[MAX_DEPENDENCY_LAYER]; // [iDid][iMbY]: map for iMbY in each spatial layer coding
} SStrideTables;
typedef struct TagWelsEncCtx {
SLogContext sLogCtx;
// Input
- SWelsSvcCodingParam* pSvcParam; // SVC parameter, WelsSVCParamConfig in svc_param_settings.h
- SWelsSliceBs* pSliceBs; // bitstream buffering for various slices, [uiSliceIdx]
+ SWelsSvcCodingParam* pSvcParam; // SVC parameter, WelsSVCParamConfig in svc_param_settings.h
+ SWelsSliceBs* pSliceBs; // bitstream buffering for various slices, [uiSliceIdx]
- int32_t* pSadCostMb;
+ int32_t* pSadCostMb;
/* MVD cost tables for Inter MB */
- int32_t iMvRange;
- uint16_t* pMvdCostTable; //[52]; // adaptive to spatial layers
- int32_t iMvdCostTableSize; //the size of above table
- int32_t iMvdCostTableStride; //the stride of above table
+ int32_t iMvRange;
+ uint16_t* pMvdCostTable; //[52]; // adaptive to spatial layers
+ int32_t iMvdCostTableSize; //the size of above table
+ int32_t iMvdCostTableStride; //the stride of above table
SMVUnitXY*
- pMvUnitBlock4x4; // (*pMvUnitBlock4x4[2])[MB_BLOCK4x4_NUM]; // for store each 4x4 blocks' mv unit, the two swap after different d layer
+ pMvUnitBlock4x4; // (*pMvUnitBlock4x4[2])[MB_BLOCK4x4_NUM]; // for store each 4x4 blocks' mv unit, the two swap after different d layer
int8_t*
- pRefIndexBlock4x4; // (*pRefIndexBlock4x4[2])[MB_BLOCK8x8_NUM]; // for store each 4x4 blocks' pRef index, the two swap after different d layer
- int8_t* pNonZeroCountBlocks; // (*pNonZeroCountBlocks)[MB_LUMA_CHROMA_BLOCK4x4_NUM];
+ pRefIndexBlock4x4; // (*pRefIndexBlock4x4[2])[MB_BLOCK8x8_NUM]; // for store each 4x4 blocks' pRef index, the two swap after different d layer
+ int8_t* pNonZeroCountBlocks; // (*pNonZeroCountBlocks)[MB_LUMA_CHROMA_BLOCK4x4_NUM];
int8_t*
- pIntra4x4PredModeBlocks; // (*pIntra4x4PredModeBlocks)[INTRA_4x4_MODE_NUM]; //last byte is not used; the first 4 byte is for the bottom 12,13,14,15 4x4 block intra mode, and 3 byte for (3,7,11)
+ pIntra4x4PredModeBlocks; // (*pIntra4x4PredModeBlocks)[INTRA_4x4_MODE_NUM]; //last byte is not used; the first 4 byte is for the bottom 12,13,14,15 4x4 block intra mode, and 3 byte for (3,7,11)
- SMB** ppMbListD; // [MAX_DEPENDENCY_LAYER];
- SStrideTables* pStrideTab; // stride tables for internal coding used
- SWelsFuncPtrList* pFuncList;
+ SMB** ppMbListD; // [MAX_DEPENDENCY_LAYER];
+ SStrideTables* pStrideTab; // stride tables for internal coding used
+ SWelsFuncPtrList* pFuncList;
- SSliceThreading* pSliceThreading;
+ SSliceThreading* pSliceThreading;
// SSlice context
- SSliceCtx* pSliceCtxList;// slice context table for each dependency quality layer
+ SSliceCtx* pSliceCtxList;// slice context table for each dependency quality layer
// pointers
- SPicture* pEncPic; // pointer to current picture to be encoded
- SPicture* pDecPic; // pointer to current picture being reconstructed
- SPicture* pRefPic; // pointer to current reference picture
+ SPicture* pEncPic; // pointer to current picture to be encoded
+ SPicture* pDecPic; // pointer to current picture being reconstructed
+ SPicture* pRefPic; // pointer to current reference picture
- SDqLayer*
- pCurDqLayer; // DQ layer context used to being encoded currently, for reference base layer to refer: pCurDqLayer->pRefLayer if applicable
- SDqLayer** ppDqLayerList; // overall DQ layers encoded for storage
+ SDqLayer* pCurDqLayer; // DQ layer context used to being encoded currently, for reference base layer to refer: pCurDqLayer->pRefLayer if applicable
+ SDqLayer** ppDqLayerList; // overall DQ layers encoded for storage
- SRefList** ppRefPicListExt; // reference picture list for SVC
- SPicture* pRefList0[16];
- SLTRState* pLtr;//[MAX_DEPENDENCY_LAYER];
- bool bCurFrameMarkedAsSceneLtr;
+ SRefList** ppRefPicListExt; // reference picture list for SVC
+ SPicture* pRefList0[16];
+ SLTRState* pLtr;//[MAX_DEPENDENCY_LAYER];
+ bool bCurFrameMarkedAsSceneLtr;
// Derived
- int32_t iCodingIndex;
- int32_t iFrameIndex; // count how many frames elapsed during coding context currently
- int32_t iFrameNum; // current frame number coding
- int32_t iPOC; // frame iPOC
- EWelsSliceType eSliceType; // currently coding slice type
- EWelsNalUnitType eNalType; // NAL type
- EWelsNalRefIdc eNalPriority; // NAL_Reference_Idc currently
- EWelsNalRefIdc eLastNalPriority; // NAL_Reference_Idc in last frame
- uint8_t iNumRef0;
+ int32_t iCodingIndex;
+ int32_t iFrameIndex; // count how many frames elapsed during coding context currently
+ int32_t iFrameNum; // current frame number coding
+ int32_t iPOC; // frame iPOC
+ EWelsSliceType eSliceType; // currently coding slice type
+ EWelsNalUnitType eNalType; // NAL type
+ EWelsNalRefIdc eNalPriority; // NAL_Reference_Idc currently
+ EWelsNalRefIdc eLastNalPriority; // NAL_Reference_Idc in last frame
+ uint8_t iNumRef0;
- uint8_t uiDependencyId; // Idc of dependecy layer to be coded
- uint8_t uiTemporalId; // Idc of temporal layer to be coded
- bool bNeedPrefixNalFlag; // whether add prefix nal
- bool bEncCurFrmAsIdrFlag;
+ uint8_t uiDependencyId; // Idc of dependecy layer to be coded
+ uint8_t uiTemporalId; // Idc of temporal layer to be coded
+ bool bNeedPrefixNalFlag; // whether add prefix nal
+ bool bEncCurFrmAsIdrFlag;
// Rate control routine
- SWelsSvcRc* pWelsSvcRc;
+ SWelsSvcRc* pWelsSvcRc;
bool bCheckWindowStatusRefreshFlag;
int64_t iCheckWindowStartTs;
int64_t iCheckWindowCurrentTs;
@@ -175,38 +172,38 @@
int32_t iCheckWindowInterval;
int32_t iCheckWindowIntervalShift;
bool bCheckWindowShiftResetFlag;
- int32_t iSkipFrameFlag; //_GOM_RC_
+ int32_t iSkipFrameFlag; //_GOM_RC_
int32_t iContinualSkipFrames;
- int32_t iGlobalQp; // global qp
+ int32_t iGlobalQp; // global qp
// VAA
- SVAAFrameInfo* pVaa; // VAA information of reference
- CWelsPreProcess* pVpp;
+ SVAAFrameInfo* pVaa; // VAA information of reference
+ CWelsPreProcess* pVpp;
- SWelsSPS* pSpsArray; // MAX_SPS_COUNT by standard compatible
- SWelsSPS* pSps;
- SWelsPPS* pPPSArray; // MAX_PPS_COUNT by standard compatible
- SWelsPPS* pPps;
+ SWelsSPS* pSpsArray; // MAX_SPS_COUNT by standard compatible
+ SWelsSPS* pSps;
+ SWelsPPS* pPPSArray; // MAX_PPS_COUNT by standard compatible
+ SWelsPPS* pPps;
/* SVC only */
- SSubsetSps* pSubsetArray; // MAX_SPS_COUNT by standard compatible
- SSubsetSps* pSubsetSps;
- int32_t iSpsNum; // number of pSps used
- int32_t iSubsetSpsNum; // number of pSps used
- int32_t iPpsNum; // number of pPps used
+ SSubsetSps* pSubsetArray; // MAX_SPS_COUNT by standard compatible
+ SSubsetSps* pSubsetSps;
+ int32_t iSpsNum; // number of pSps used
+ int32_t iSubsetSpsNum; // number of pSps used
+ int32_t iPpsNum; // number of pPps used
// Output
- SWelsEncoderOutput* pOut; // for NAL raw pData (need allocating memory for sNalList internal)
- uint8_t* pFrameBs; // restoring bitstream pBuffer of all NALs in a frame
- int32_t iFrameBsSize; // count size of frame bs in bytes allocated
- int32_t iPosBsBuffer; // current writing position of frame bs pBuffer
+ SWelsEncoderOutput* pOut; // for NAL raw pData (need allocating memory for sNalList internal)
+ uint8_t* pFrameBs; // restoring bitstream pBuffer of all NALs in a frame
+ int32_t iFrameBsSize; // count size of frame bs in bytes allocated
+ int32_t iPosBsBuffer; // current writing position of frame bs pBuffer
- SSpatialPicIndex sSpatialIndexMap[MAX_DEPENDENCY_LAYER];
+ SSpatialPicIndex sSpatialIndexMap[MAX_DEPENDENCY_LAYER];
- bool bRefOfCurTidIsLtr[MAX_DEPENDENCY_LAYER][MAX_TEMPORAL_LEVEL];
- uint16_t uiIdrPicId; // IDR picture id: [0, 65535], this one is used for LTR
+ bool bRefOfCurTidIsLtr[MAX_DEPENDENCY_LAYER][MAX_TEMPORAL_LEVEL];
+ uint16_t uiIdrPicId; // IDR picture id: [0, 65535], this one is used for LTR
- int32_t iMaxSliceCount;// maximal count number of slices for all layers observation
- int16_t iActiveThreadsNum; // number of threads active so far
+ int32_t iMaxSliceCount;// maximal count number of slices for all layers observation
+ int16_t iActiveThreadsNum; // number of threads active so far
/*
* DQ layer idc map for svc encoding, might be a better scheme than that of design before,
@@ -213,17 +210,16 @@
* can aware idc of referencing layer and that idc of successive layer to be coded
*/
/* SVC only */
- SDqIdc*
- pDqIdcMap; // overall DQ map of full scalability in specific frame (All full D/T/Q layers involved) // pDqIdcMap[dq_index] for each SDqIdc pData
+ SDqIdc* pDqIdcMap; // overall DQ map of full scalability in specific frame (All full D/T/Q layers involved) // pDqIdcMap[dq_index] for each SDqIdc pData
- SParaSetOffset sPSOVector;
- SParaSetOffset* pPSOVector;
- CMemoryAlign* pMemAlign;
+ SParaSetOffset sPSOVector;
+ SParaSetOffset* pPSOVector;
+ CMemoryAlign* pMemAlign;
#if defined(STAT_OUTPUT)
// overall stat pData, refer to SStatData in stat.h, in case avc to use stat[0][0]
- SStatData sStatData [ MAX_DEPENDENCY_LAYER ] [ MAX_QUALITY_LEVEL ];
- SStatSliceInfo sPerInfo;
+ SStatData sStatData [ MAX_DEPENDENCY_LAYER ] [ MAX_QUALITY_LEVEL ];
+ SStatSliceInfo sPerInfo;
#endif//STAT_OUTPUT
//related to Statistics
@@ -236,7 +232,7 @@
int64_t iLastStatisticsFrameCount;
int32_t iEncoderError;
- WELS_MUTEX mutexEncoderError;
+ WELS_MUTEX mutexEncoderError;
bool bDeliveryFlag;
SStateCtx sWelsCabacContexts[4][WELS_QP_MAX + 1][WELS_CONTEXT_COUNT];
#ifdef ENABLE_FRAME_DUMP
--- a/codec/encoder/core/inc/mb_cache.h
+++ b/codec/encoder/core/inc/mb_cache.h
@@ -73,16 +73,16 @@
//the followed pData now is promised aligned to 16 bytes
ALIGNED_DECLARE (SMVComponentUnit, sMvComponents, 16);
-ALIGNED_DECLARE (int8_t, iNonZeroCoeffCount[48], 16); // Cache line size
-// int8_t iNonZeroCoeffCount[6 * 8]; // Right luma, Chroma(Left Top Cb, Left btm Cr); must follow by iIntraPredMode!
+ALIGNED_DECLARE (int8_t, iNonZeroCoeffCount[48], 16); // Cache line size
+// int8_t iNonZeroCoeffCount[6 * 8]; // Right luma, Chroma(Left Top Cb, Left btm Cr); must follow by iIntraPredMode!
ALIGNED_DECLARE (int8_t, iIntraPredMode[48], 16);
-// must follow with iNonZeroCoeffCount!
+// must follow with iNonZeroCoeffCount!
-int32_t iSadCost[4]; //avail 1; unavail 0
+int32_t iSadCost[4]; //avail 1; unavail 0
SMVUnitXY sMbMvp[MB_BLOCK4x4_NUM];// for write bs
//for residual decoding (recovery) at the side of Encoder
-int16_t* pCoeffLevel; // tmep
+int16_t* pCoeffLevel; // tmep
//malloc memory for prediction
uint8_t* pSkipMb;
@@ -108,7 +108,7 @@
//pRemIntra4x4PredModeFlag or added by 1 is the best pred_mode
int8_t* pRemIntra4x4PredModeFlag;
-int32_t iSadCostSkip[4]; //avail 1; unavail 0
+int32_t iSadCostSkip[4]; //avail 1; unavail 0
bool bMbTypeSkip[4]; //1: skip; 0: non-skip
int32_t* pEncSad;
@@ -119,8 +119,8 @@
uint8_t uiLumaI16x16Mode;
uint8_t uiChmaI8x8Mode;
-bool bCollocatedPredFlag;//denote if current MB is collocated predicted (MV==0).
-uint32_t uiRefMbType;
+bool bCollocatedPredFlag;//denote if current MB is collocated predicted (MV==0).
+uint32_t uiRefMbType;
struct {
/* pointer of current mb location in original frame */
@@ -130,8 +130,8 @@
/* pointer of co-located mb location in reference frame */
uint8_t* pRefMb[3];
//for SVC
- uint8_t* pCsMb[3];//locating current mb's CS in whole frame
-// int16_t *p_rs[3];//locating current mb's RS in whole frame
+ uint8_t* pCsMb[3];//locating current mb's CS in whole frame
+// int16_t *p_rs[3];//locating current mb's RS in whole frame
} SPicData;
} SMbCache;
--- a/codec/encoder/core/inc/md.h
+++ b/codec/encoder/core/inc/md.h
@@ -84,35 +84,35 @@
// if we want keep total sizeof(SWelsMD) <= 256, we maybe need to seperate three member of SWelsME.
typedef struct TagWelsMD {
-int32_t iLambda;
-uint16_t* pMvdCost;
+int32_t iLambda;
+uint16_t* pMvdCost;
-int32_t iCostLuma;
-int32_t iCostChroma;//satd+lambda(best_pred_mode) //i_sad_chroma;
-int32_t iSadPredMb;
+int32_t iCostLuma;
+int32_t iCostChroma;//satd+lambda(best_pred_mode) //i_sad_chroma;
+int32_t iSadPredMb;
-uint8_t uiRef; //uiRefIndex appointed by Encoder, used for MC
-bool bMdUsingSad;
-uint16_t uiReserved;
+uint8_t uiRef; //uiRefIndex appointed by Encoder, used for MC
+bool bMdUsingSad;
+uint16_t uiReserved;
-int32_t iCostSkipMb;
-int32_t iSadPredSkip;
+int32_t iCostSkipMb;
+int32_t iSadPredSkip;
-int32_t iMbPixX; // pixel position of MB in horizontal axis
-int32_t iMbPixY; // pixel position of MB in vertical axis
-int32_t iBlock8x8StaticIdc[4];
+int32_t iMbPixX; // pixel position of MB in horizontal axis
+int32_t iMbPixY; // pixel position of MB in vertical axis
+int32_t iBlock8x8StaticIdc[4];
//NO B frame in our Wels, we can ignore list1
struct {
- SWelsME sMe16x16; //adjust each SWelsME for 8 D-word!
- SWelsME sMe8x8[4];
- SWelsME sMe16x8[2];
- SWelsME sMe8x16[2];
- SWelsME sMe4x4[4][4];
- SWelsME sMe8x4[4][2];
- SWelsME sMe4x8[4][2];
-// SMVUnitXY i_mvbs[MB_BLOCK8x8_NUM]; //scaled MVB
+ SWelsME sMe16x16; //adjust each SWelsME for 8 D-word!
+ SWelsME sMe8x8[4];
+ SWelsME sMe16x8[2];
+ SWelsME sMe8x16[2];
+ SWelsME sMe4x4[4][4];
+ SWelsME sMe8x4[4][2];
+ SWelsME sMe4x8[4][2];
+// SMVUnitXY i_mvbs[MB_BLOCK8x8_NUM]; //scaled MVB
} sMe;
} SWelsMD;
--- a/codec/encoder/core/inc/mt_defs.h
+++ b/codec/encoder/core/inc/mt_defs.h
@@ -59,36 +59,35 @@
#define THRESHOLD_RMSE_CORE2 0.0200f // v1.1: 0.0200f; v1.0: 0.04f
typedef struct TagSliceThreadPrivateData {
-void* pWelsPEncCtx;
-SLayerBSInfo* pLayerBs;
-int32_t iSliceIndex; // slice index, zero based
-int32_t iThreadIndex; // thread index, zero based
+void* pWelsPEncCtx;
+SLayerBSInfo* pLayerBs;
+int32_t iSliceIndex; // slice index, zero based
+int32_t iThreadIndex; // thread index, zero based
// for dynamic slicing mode
-int32_t iStartMbIndex; // inclusive
-int32_t iEndMbIndex; // exclusive
+int32_t iStartMbIndex; // inclusive
+int32_t iEndMbIndex; // exclusive
} SSliceThreadPrivateData;
typedef struct TagSliceThreading {
-SSliceThreadPrivateData* pThreadPEncCtx;// thread context, [iThreadIdx]
+SSliceThreadPrivateData* pThreadPEncCtx;// thread context, [iThreadIdx]
char eventNamespace[100];
-WELS_THREAD_HANDLE pThreadHandles[MAX_THREADS_NUM];// thread handles, [iThreadIdx]
-WELS_EVENT pSliceCodedEvent[MAX_THREADS_NUM];// events for slice coded state, [iThreadIdx]
-WELS_EVENT pSliceCodedMasterEvent; // events for signalling that some event in pSliceCodedEvent has been signalled
-WELS_EVENT pReadySliceCodingEvent[MAX_THREADS_NUM]; // events for slice coding ready, [iThreadIdx]
-WELS_EVENT pUpdateMbListEvent[MAX_THREADS_NUM]; // signal to update mb list neighbor for various slices
-WELS_EVENT pFinUpdateMbListEvent[MAX_THREADS_NUM]; // signal to indicate finish updating mb list
-WELS_EVENT pExitEncodeEvent[MAX_THREADS_NUM]; // event for exit encoding event
-WELS_EVENT
-pThreadMasterEvent[MAX_THREADS_NUM]; // event for indicating that some event has been signalled to the thread
+WELS_THREAD_HANDLE pThreadHandles[MAX_THREADS_NUM];// thread handles, [iThreadIdx]
+WELS_EVENT pSliceCodedEvent[MAX_THREADS_NUM];// events for slice coded state, [iThreadIdx]
+WELS_EVENT pSliceCodedMasterEvent; // events for signalling that some event in pSliceCodedEvent has been signalled
+WELS_EVENT pReadySliceCodingEvent[MAX_THREADS_NUM]; // events for slice coding ready, [iThreadIdx]
+WELS_EVENT pUpdateMbListEvent[MAX_THREADS_NUM]; // signal to update mb list neighbor for various slices
+WELS_EVENT pFinUpdateMbListEvent[MAX_THREADS_NUM]; // signal to indicate finish updating mb list
+WELS_EVENT pExitEncodeEvent[MAX_THREADS_NUM]; // event for exit encoding event
+WELS_EVENT pThreadMasterEvent[MAX_THREADS_NUM]; // event for indicating that some event has been signalled to the thread
-WELS_MUTEX mutexSliceNumUpdate; // for dynamic slicing mode MT
+WELS_MUTEX mutexSliceNumUpdate; // for dynamic slicing mode MT
-uint32_t* pSliceConsumeTime[MAX_DEPENDENCY_LAYER]; // consuming time for each slice, [iSpatialIdx][uiSliceIdx]
-int32_t* pSliceComplexRatio[MAX_DEPENDENCY_LAYER]; // *INT_MULTIPLY
+uint32_t* pSliceConsumeTime[MAX_DEPENDENCY_LAYER]; // consuming time for each slice, [iSpatialIdx][uiSliceIdx]
+int32_t* pSliceComplexRatio[MAX_DEPENDENCY_LAYER]; // *INT_MULTIPLY
#ifdef MT_DEBUG
-FILE* pFSliceDiff; // file handle for debug
+FILE* pFSliceDiff; // file handle for debug
#endif//MT_DEBUG
} SSliceThreading;
--- a/codec/encoder/core/inc/nal_encap.h
+++ b/codec/encoder/core/inc/nal_encap.h
@@ -54,10 +54,10 @@
* Raw payload pData for NAL unit, AVC/SVC compatible
*/
typedef struct TagWelsNalRaw {
-uint8_t* pRawData; // pRawNal payload for slice pData
-int32_t iPayloadSize; // size of pRawNal pData
+uint8_t* pRawData; // pRawNal payload for slice pData
+int32_t iPayloadSize; // size of pRawNal pData
-SNalUnitHeaderExt sNalExt; // NAL header information
+SNalUnitHeaderExt sNalExt; // NAL header information
int32_t iStartPos; //NAL start position in buffer
} SWelsNalRaw;
@@ -66,39 +66,39 @@
* Encoder majoy output pData
*/
typedef struct TagWelsEncoderOutput {
-uint8_t* pBsBuffer; // overall bitstream pBuffer allocation for a coded picture, recycling use intend.
-uint32_t uiSize; // size of allocation pBuffer above
+uint8_t* pBsBuffer; // overall bitstream pBuffer allocation for a coded picture, recycling use intend.
+uint32_t uiSize; // size of allocation pBuffer above
-SBitStringAux sBsWrite;
+SBitStringAux sBsWrite;
-// SWelsNalRaw raw_nals[MAX_DEPENDENCY_LAYER*2+MAX_DEPENDENCY_LAYER*MAX_QUALITY_LEVEL]; // AVC: max up to SPS+PPS+max_slice_idc (2 + 8) for FMO;
-SWelsNalRaw* sNalList; // nal list, adaptive for AVC/SVC in case single slice, multiple slices or fmo
-int32_t* pNalLen;
-int32_t iCountNals; // count number of NAL in list
+// SWelsNalRaw raw_nals[MAX_DEPENDENCY_LAYER*2+MAX_DEPENDENCY_LAYER*MAX_QUALITY_LEVEL]; // AVC: max up to SPS+PPS+max_slice_idc (2 + 8) for FMO;
+SWelsNalRaw* sNalList; // nal list, adaptive for AVC/SVC in case single slice, multiple slices or fmo
+int32_t* pNalLen;
+int32_t iCountNals; // count number of NAL in list
// SVC: num_sps (MAX_D) + num_pps (MAX_D) + num_vcl (MAX_D * MAX_Q)
-int32_t iNalIndex; // coding NAL currently, 0 based
+int32_t iNalIndex; // coding NAL currently, 0 based
-// bool bAnnexBFlag; // annexeb flag, to figure it pOut the packetization mode whether need 4 bytes (0 0 0 1) of start code prefix
+// bool bAnnexBFlag; // annexeb flag, to figure it pOut the packetization mode whether need 4 bytes (0 0 0 1) of start code prefix
} SWelsEncoderOutput;
-//#define MT_DEBUG_BS_WR 0 // for MT debugging if needed
+//#define MT_DEBUG_BS_WR 0 // for MT debugging if needed
typedef struct TagWelsSliceBs {
-uint8_t* pBs; // output bitstream, pBitStringAux not needed for slice 0 due to no dependency of pFrameBs available
-uint32_t uiBsPos; // position of output bitstream
-uint8_t* pBsBuffer; // overall bitstream pBuffer allocation for a coded slice, recycling use intend.
-uint32_t uiSize; // size of allocation pBuffer above
+uint8_t* pBs; // output bitstream, pBitStringAux not needed for slice 0 due to no dependency of pFrameBs available
+uint32_t uiBsPos; // position of output bitstream
+uint8_t* pBsBuffer; // overall bitstream pBuffer allocation for a coded slice, recycling use intend.
+uint32_t uiSize; // size of allocation pBuffer above
-SBitStringAux sBsWrite;
+SBitStringAux sBsWrite;
-SWelsNalRaw sNalList[2]; // nal list, PREFIX NAL(if applicable) + SLICE NAL
-// int32_t iCountNals; // count number of NAL in list
-int32_t iNalLen[2];
-int32_t iNalIndex; // coding NAL currently, 0 based
+SWelsNalRaw sNalList[2]; // nal list, PREFIX NAL(if applicable) + SLICE NAL
+// int32_t iCountNals; // count number of NAL in list
+int32_t iNalLen[2];
+int32_t iNalIndex; // coding NAL currently, 0 based
-// bool bAnnexBFlag; // annexeb flag, to figure it pOut the packetization mode whether need 4 bytes (0 0 0 1) of start code prefix
+// bool bAnnexBFlag; // annexeb flag, to figure it pOut the packetization mode whether need 4 bytes (0 0 0 1) of start code prefix
#if MT_DEBUG_BS_WR
-bool bSliceCodedFlag;
+bool bSliceCodedFlag;
#endif//MT_DEBUG_BS_WR
} SWelsSliceBs;
--- a/codec/encoder/core/inc/param_svc.h
+++ b/codec/encoder/core/inc/param_svc.h
@@ -77,18 +77,18 @@
* Dependency Layer Parameter
*/
typedef struct TagDLayerParam {
- int32_t iActualWidth; // input source picture actual width
- int32_t iActualHeight; // input source picture actual height
- int32_t iTemporalResolution;
- int32_t iDecompositionStages;
- uint8_t uiCodingIdx2TemporalId[ (1 << MAX_TEMPORAL_LEVEL) + 1];
+ int32_t iActualWidth; // input source picture actual width
+ int32_t iActualHeight; // input source picture actual height
+ int32_t iTemporalResolution;
+ int32_t iDecompositionStages;
+ uint8_t uiCodingIdx2TemporalId[ (1 << MAX_TEMPORAL_LEVEL) + 1];
- int8_t iHighestTemporalId;
- float fInputFrameRate; // input frame rate
- float fOutputFrameRate; // output frame rate
+ int8_t iHighestTemporalId;
+ float fInputFrameRate; // input frame rate
+ float fOutputFrameRate; // output frame rate
#ifdef ENABLE_FRAME_DUMP
- char sRecFileName[MAX_FNAME_LEN]; // file to be constructed
+ char sRecFileName[MAX_FNAME_LEN]; // file to be constructed
#endif//ENABLE_FRAME_DUMP
} SSpatialLayerInternal;
@@ -96,25 +96,25 @@
* Cisco OpenH264 Encoder Parameter Configuration
*/
typedef struct TagWelsSvcCodingParam: SEncParamExt {
- SSpatialLayerInternal sDependencyLayers[MAX_DEPENDENCY_LAYER];
+ SSpatialLayerInternal sDependencyLayers[MAX_DEPENDENCY_LAYER];
/* General */
- uint32_t uiGopSize; // GOP size (at maximal frame rate: 16)
+ uint32_t uiGopSize; // GOP size (at maximal frame rate: 16)
struct {
int32_t iLeft;
int32_t iTop;
int32_t iWidth;
int32_t iHeight;
- } SUsedPicRect; // the rect in input picture that encoder actually used
+ } SUsedPicRect; // the rect in input picture that encoder actually used
char* pCurPath; // record current lib path such as:/pData/pData/com.wels.enc/lib/
- bool bDeblockingParallelFlag; // deblocking filter parallelization control flag
+ bool bDeblockingParallelFlag; // deblocking filter parallelization control flag
int32_t iBitsVaryPercentage;
short
iCountThreadsNum; // # derived from disable_multiple_slice_idc (=0 or >1) means;
- int8_t iDecompStages; // GOP size dependency
+ int8_t iDecompStages; // GOP size dependency
int32_t iMaxNumRefFrame;
public:
@@ -492,9 +492,9 @@
SSubsetSps sSubsetSps[MAX_SPS_COUNT];
SWelsPPS sPps[MAX_PPS_COUNT];
- uint32_t uiInUseSpsNum;
- uint32_t uiInUseSubsetSpsNum;
- uint32_t uiInUsePpsNum;
+ uint32_t uiInUseSpsNum;
+ uint32_t uiInUseSubsetSpsNum;
+ uint32_t uiInUsePpsNum;
} SExistingParasetList;
--- a/codec/encoder/core/inc/parameter_sets.h
+++ b/codec/encoder/core/inc/parameter_sets.h
@@ -41,49 +41,49 @@
/* Sequence Parameter Set, refer to Page 57 in JVT X201wcm */
typedef struct TagWelsSPS {
-uint32_t uiSpsId;
-int16_t iMbWidth;
-int16_t iMbHeight;
-uint32_t uiLog2MaxFrameNum;
-// uint32_t uiPocType;
+uint32_t uiSpsId;
+int16_t iMbWidth;
+int16_t iMbHeight;
+uint32_t uiLog2MaxFrameNum;
+// uint32_t uiPocType;
/* POC type 0 */
-int32_t iLog2MaxPocLsb;
+int32_t iLog2MaxPocLsb;
/* POC type 1 */
-// int32_t iOffsetForNonRefPic;
+// int32_t iOffsetForNonRefPic;
-// int32_t iOffsetForTopToBottomField;
-// int32_t iNumRefFramesInPocCycle;
-// int8_t iOffsetForRefFrame[256];
-SCropOffset sFrameCrop;
-int16_t iNumRefFrames;
-// uint32_t uiNumUnitsInTick;
-// uint32_t uiTimeScale;
+// int32_t iOffsetForTopToBottomField;
+// int32_t iNumRefFramesInPocCycle;
+// int8_t iOffsetForRefFrame[256];
+SCropOffset sFrameCrop;
+int16_t iNumRefFrames;
+// uint32_t uiNumUnitsInTick;
+// uint32_t uiTimeScale;
-uint8_t uiProfileIdc;
-uint8_t iLevelIdc;
-// uint8_t uiChromaFormatIdc;
-// uint8_t uiChromaArrayType; //support =1
+uint8_t uiProfileIdc;
+uint8_t iLevelIdc;
+// uint8_t uiChromaFormatIdc;
+// uint8_t uiChromaArrayType; //support =1
-// uint8_t uiBitDepthLuma; //=8, only used in decoder, encoder in general_***; it can be removed when removed general up_sample
-// uint8_t uiBitDepthChroma; //=8
+// uint8_t uiBitDepthLuma; //=8, only used in decoder, encoder in general_***; it can be removed when removed general up_sample
+// uint8_t uiBitDepthChroma; //=8
/* TO BE CONTINUE: POC type 1 */
-// bool bDeltaPicOrderAlwaysZeroFlag;
-bool bGapsInFrameNumValueAllowedFlag;
+// bool bDeltaPicOrderAlwaysZeroFlag;
+bool bGapsInFrameNumValueAllowedFlag;
-// bool bFrameMbsOnlyFlag;
-// bool bMbaffFlag; // MB Adapative Frame Field
-// bool bDirect8x8InferenceFlag;
-bool bFrameCroppingFlag;
+// bool bFrameMbsOnlyFlag;
+// bool bMbaffFlag; // MB Adapative Frame Field
+// bool bDirect8x8InferenceFlag;
+bool bFrameCroppingFlag;
-bool bVuiParamPresentFlag;
-// bool bTimingInfoPresentFlag;
-// bool bFixedFrameRateFlag;
+bool bVuiParamPresentFlag;
+// bool bTimingInfoPresentFlag;
+// bool bFixedFrameRateFlag;
-bool bConstraintSet0Flag;
-bool bConstraintSet1Flag;
-bool bConstraintSet2Flag;
-bool bConstraintSet3Flag;
-// bool bSeparateColorPlaneFlag; // =false,: only used in decoder, encoder in general_***; it can be removed when removed general up_sample
+bool bConstraintSet0Flag;
+bool bConstraintSet1Flag;
+bool bConstraintSet2Flag;
+bool bConstraintSet3Flag;
+// bool bSeparateColorPlaneFlag; // =false,: only used in decoder, encoder in general_***; it can be removed when removed general up_sample
} SWelsSPS, *PWelsSPS;
@@ -90,70 +90,70 @@
/* Sequence Parameter Set SVC extension syntax, refer to Page 391 in JVT X201wcm */
typedef struct TagSpsSvcExt {
-// SCropOffset sSeqScaledRefLayer;
+// SCropOffset sSeqScaledRefLayer;
-uint8_t iExtendedSpatialScalability; // ESS
-// uint8_t uiChromaPhaseXPlus1Flag;
-// uint8_t uiChromaPhaseYPlus1;
-// uint8_t uiSeqRefLayerChromaPhaseXPlus1Flag;
-// uint8_t uiSeqRefLayerChromaPhaseYPlus1;
-// bool bInterLayerDeblockingFilterCtrlPresentFlag;
-bool bSeqTcoeffLevelPredFlag;
-bool bAdaptiveTcoeffLevelPredFlag;
-bool bSliceHeaderRestrictionFlag;
+uint8_t iExtendedSpatialScalability; // ESS
+// uint8_t uiChromaPhaseXPlus1Flag;
+// uint8_t uiChromaPhaseYPlus1;
+// uint8_t uiSeqRefLayerChromaPhaseXPlus1Flag;
+// uint8_t uiSeqRefLayerChromaPhaseYPlus1;
+// bool bInterLayerDeblockingFilterCtrlPresentFlag;
+bool bSeqTcoeffLevelPredFlag;
+bool bAdaptiveTcoeffLevelPredFlag;
+bool bSliceHeaderRestrictionFlag;
} SSpsSvcExt, *PSpsSvcExt;
/* Subset sequence parameter set syntax, refer to Page 391 in JVT X201wcm */
typedef struct TagSubsetSps {
-SWelsSPS pSps;
-SSpsSvcExt sSpsSvcExt;
+SWelsSPS pSps;
+SSpsSvcExt sSpsSvcExt;
-// bool bSvcVuiParamPresentFlag;
-// bool bAdditionalExtension2Flag;
-// bool bAdditionalExtension2DataFlag;
+// bool bSvcVuiParamPresentFlag;
+// bool bAdditionalExtension2Flag;
+// bool bAdditionalExtension2DataFlag;
} SSubsetSps, *PSubsetSps;
/* Picture parameter set syntax, refer to Page 59 in JVT X201wcm */
typedef struct TagWelsPPS {
-uint32_t iSpsId;
-uint32_t iPpsId;
+uint32_t iSpsId;
+uint32_t iPpsId;
#if !defined(DISABLE_FMO_FEATURE)
-uint32_t uiNumSliceGroups;
-uint32_t uiSliceGroupMapType;
+uint32_t uiNumSliceGroups;
+uint32_t uiSliceGroupMapType;
/* uiSliceGroupMapType = 0 */
-uint32_t uiRunLength[MAX_SLICEGROUP_IDS];
+uint32_t uiRunLength[MAX_SLICEGROUP_IDS];
/* uiSliceGroupMapType = 2 */
-uint32_t uiTopLeft[MAX_SLICEGROUP_IDS];
-uint32_t uiBottomRight[MAX_SLICEGROUP_IDS];
+uint32_t uiTopLeft[MAX_SLICEGROUP_IDS];
+uint32_t uiBottomRight[MAX_SLICEGROUP_IDS];
/* uiSliceGroupMapType = 3, 4 or 5 */
/* uiSliceGroupMapType = 3, 4 or 5 */
-bool bSliceGroupChangeDirectionFlag;
-uint32_t uiSliceGroupChangeRate;
+bool bSliceGroupChangeDirectionFlag;
+uint32_t uiSliceGroupChangeRate;
/* uiSliceGroupMapType = 6 */
-uint32_t uiPicSizeInMapUnits;
-uint32_t uiSliceGroupId[MAX_SLICEGROUP_IDS];
+uint32_t uiPicSizeInMapUnits;
+uint32_t uiSliceGroupId[MAX_SLICEGROUP_IDS];
#endif//!DISABLE_FMO_FEATURE
-// uint32_t uiNumRefIdxL0Active;
-// uint32_t uiNumRefIdxL1Active;
+// uint32_t uiNumRefIdxL0Active;
+// uint32_t uiNumRefIdxL1Active;
-int8_t iPicInitQp;
-int8_t iPicInitQs;
-uint8_t uiChromaQpIndexOffset;
+int8_t iPicInitQp;
+int8_t iPicInitQs;
+uint8_t uiChromaQpIndexOffset;
/* potential application for High profile */
-// int32_t iSecondChromaQpIndexOffset;
-// /* potential application for High profile */
+// int32_t iSecondChromaQpIndexOffset;
+// /* potential application for High profile */
-// bool bPicOrderPresentFlag;
+// bool bPicOrderPresentFlag;
bool bEntropyCodingModeFlag;
-bool bDeblockingFilterControlPresentFlag;
+bool bDeblockingFilterControlPresentFlag;
-// bool bConstainedIntraPredFlag;
-// bool bRedundantPicCntPresentFlag;
-// bool bWeightedPredFlag;
-// uint8_t uiWeightedBiPredIdc;
+// bool bConstainedIntraPredFlag;
+// bool bRedundantPicCntPresentFlag;
+// bool bWeightedPredFlag;
+// uint8_t uiWeightedBiPredIdc;
} SWelsPPS, *PWelsPPPS;
--- a/codec/encoder/core/inc/rc.h
+++ b/codec/encoder/core/inc/rc.h
@@ -203,7 +203,7 @@
int32_t iMaxFrameQp;
int32_t iNumberMbFrame;
int32_t iNumberMbGom;
-int32_t iSliceNum;
+int32_t iSliceNum;
int32_t iGomSize;
int32_t iSkipFrameNum;
@@ -237,7 +237,7 @@
int32_t iPaddingBitrateStat;
bool bSkipFlag;
-SRCSlicing* pSlicingOverRc;
+SRCSlicing* pSlicingOverRc;
SRCTemporal* pTemporalOverRc;
//for scc
@@ -262,11 +262,11 @@
typedef void (*PWelsUpdateMaxBrCheckWindowStatusFunc)(sWelsEncCtx* pCtx, int32_t iSpatialNum, const long long uiTimeStamp);
typedef struct WelsRcFunc_s {
-PWelsRCPictureInitFunc pfWelsRcPictureInit;
-PWelsRCPictureDelayJudgeFunc pfWelsRcPicDelayJudge;
-PWelsRCPictureInfoUpdateFunc pfWelsRcPictureInfoUpdate;
-PWelsRCMBInitFunc pfWelsRcMbInit;
-PWelsRCMBInfoUpdateFunc pfWelsRcMbInfoUpdate;
+PWelsRCPictureInitFunc pfWelsRcPictureInit;
+PWelsRCPictureDelayJudgeFunc pfWelsRcPicDelayJudge;
+PWelsRCPictureInfoUpdateFunc pfWelsRcPictureInfoUpdate;
+PWelsRCMBInitFunc pfWelsRcMbInit;
+PWelsRCMBInfoUpdateFunc pfWelsRcMbInfoUpdate;
PWelsCheckFrameSkipBasedMaxbrFunc pfWelsCheckSkipBasedMaxbr;
PWelsUpdateBufferWhenFrameSkippedFunc pfWelsUpdateBufferWhenSkip;
PWelsUpdateMaxBrCheckWindowStatusFunc pfWelsUpdateMaxBrWindowStatus;
--- a/codec/encoder/core/inc/slice.h
+++ b/codec/encoder/core/inc/slice.h
@@ -53,11 +53,11 @@
*/
typedef struct TagRefPicListReorderSyntax {
struct {
- uint32_t uiAbsDiffPicNumMinus1; //uiAbsDiffPicNumMinus1 SHOULD be in the range of [4, (1<<pSps->uiLog2MaxFrameNum)-1], {p104, JVT-X201wcm1}
+ uint32_t uiAbsDiffPicNumMinus1; //uiAbsDiffPicNumMinus1 SHOULD be in the range of [4, (1<<pSps->uiLog2MaxFrameNum)-1], {p104, JVT-X201wcm1}
//but int8_t can't cover the range, SHOULD modify it.
- uint16_t iLongTermPicNum;
- uint16_t uiReorderingOfPicNumsIdc; //in order to pack 2-uint16_t into 1-(u)int32_t, so modify the type into uint16_t.
-} SReorderingSyntax[MAX_REFERENCE_REORDER_COUNT_NUM]; // MAX_REF_PIC_COUNT
+ uint16_t iLongTermPicNum;
+ uint16_t uiReorderingOfPicNumsIdc; //in order to pack 2-uint16_t into 1-(u)int32_t, so modify the type into uint16_t.
+} SReorderingSyntax[MAX_REFERENCE_REORDER_COUNT_NUM]; // MAX_REF_PIC_COUNT
} SRefPicListReorderSyntax;
@@ -64,19 +64,19 @@
/* Decoded reference picture marking syntax, refer to Page 66 in JVT X201wcm */
typedef struct TagRefPicMarking {
struct {
- int32_t iMmcoType;
- int32_t iShortFrameNum;
- int32_t iDiffOfPicNum;
- int32_t iLongTermPicNum;
- int32_t iLongTermFrameIdx;
- int32_t iMaxLongTermFrameIdx;
-} SMmcoRef[MAX_REFERENCE_MMCO_COUNT_NUM]; // MAX_MMCO_COUNT
+ int32_t iMmcoType;
+ int32_t iShortFrameNum;
+ int32_t iDiffOfPicNum;
+ int32_t iLongTermPicNum;
+ int32_t iLongTermFrameIdx;
+ int32_t iMaxLongTermFrameIdx;
+} SMmcoRef[MAX_REFERENCE_MMCO_COUNT_NUM]; // MAX_MMCO_COUNT
-// int32_t mmco_index;
-uint8_t uiMmcoCount;
-bool bNoOutputOfPriorPicsFlag;
-bool bLongTermRefFlag;
-bool bAdaptiveRefPicMarkingModeFlag;
+// int32_t mmco_index;
+uint8_t uiMmcoCount;
+bool bNoOutputOfPriorPicsFlag;
+bool bLongTermRefFlag;
+bool bAdaptiveRefPicMarkingModeFlag;
} SRefPicMarking;
@@ -83,72 +83,72 @@
/* Header of slice syntax elements, refer to Page 63 in JVT X201wcm */
typedef struct TagSliceHeader {
/*****************************slice header syntax and generated****************************/
-int32_t iFirstMbInSlice;
-// uint32_t pic_parameter_set_id;
-int32_t iFrameNum;
-int32_t iPicOrderCntLsb;
+int32_t iFirstMbInSlice;
+// uint32_t pic_parameter_set_id;
+int32_t iFrameNum;
+int32_t iPicOrderCntLsb;
-// int32_t delta_pic_order_cnt_bottom;
-// int32_t delta_pic_order_cnt[2];
-// int32_t redundant_pic_cnt;
+// int32_t delta_pic_order_cnt_bottom;
+// int32_t delta_pic_order_cnt[2];
+// int32_t redundant_pic_cnt;
-EWelsSliceType eSliceType;
-uint8_t uiNumRefIdxL0Active; //
-//int32_t num_ref_idx_l1_active_minus1 //B frame is not supported
-uint8_t uiRefCount;
-//Ref_Pic *ref_pic;
-uint8_t uiRefIndex; // exact reference picture index for slice
+EWelsSliceType eSliceType;
+uint8_t uiNumRefIdxL0Active; //
+//int32_t num_ref_idx_l1_active_minus1 //B frame is not supported
+uint8_t uiRefCount;
+//Ref_Pic *ref_pic;
+uint8_t uiRefIndex; // exact reference picture index for slice
-int8_t iSliceQpDelta;
-// int32_t slice_qp;
-// int32_t slice_qs_delta; // For SP/SI slices
-uint8_t uiDisableDeblockingFilterIdc;
-int8_t iSliceAlphaC0Offset;
-int8_t iSliceBetaOffset;
+int8_t iSliceQpDelta;
+// int32_t slice_qp;
+// int32_t slice_qs_delta; // For SP/SI slices
+uint8_t uiDisableDeblockingFilterIdc;
+int8_t iSliceAlphaC0Offset;
+int8_t iSliceBetaOffset;
#if !defined(DISABLE_FMO_FEATURE)
-int32_t iSliceGroupChangeCycle;
+int32_t iSliceGroupChangeCycle;
#endif//!DISABLE_FMO_FEATURE
-SWelsSPS* pSps;
-SWelsPPS* pPps;
-int32_t iSpsId;
-int32_t iPpsId;
+SWelsSPS* pSps;
+SWelsPPS* pPps;
+int32_t iSpsId;
+int32_t iPpsId;
-uint16_t uiIdrPicId;
-// uint8_t color_plane_id;//from?
+uint16_t uiIdrPicId;
+// uint8_t color_plane_id;//from?
-bool bNumRefIdxActiveOverrideFlag;
-// bool field_pic_flag; //not supported in base profile
-// bool bottom_field_flag; //not supported in base profile
-uint8_t uiPadding1Bytes;
+bool bNumRefIdxActiveOverrideFlag;
+// bool field_pic_flag; //not supported in base profile
+// bool bottom_field_flag; //not supported in base profile
+uint8_t uiPadding1Bytes;
-SRefPicMarking sRefMarking; // Decoded reference picture marking syntaxs
+SRefPicMarking sRefMarking; // Decoded reference picture marking syntaxs
-SRefPicListReorderSyntax sRefReordering; // Reference picture list reordering syntaxs
+SRefPicListReorderSyntax sRefReordering; // Reference picture list reordering syntaxs
} SSliceHeader, *PSliceHeader;
/* SSlice header in scalable extension syntax, refer to Page 394 in JVT X201wcm */
typedef struct TagSliceHeaderExt {
-SSliceHeader sSliceHeader;
+SSliceHeader sSliceHeader;
-SSubsetSps* pSubsetSps;
+SSubsetSps* pSubsetSps;
-uint32_t uiNumMbsInSlice;
+uint32_t uiNumMbsInSlice;
-bool bStoreRefBasePicFlag;
-bool bConstrainedIntraResamplingFlag;
-bool bSliceSkipFlag;
+bool bStoreRefBasePicFlag;
+bool bConstrainedIntraResamplingFlag;
+bool bSliceSkipFlag;
-bool bAdaptiveBaseModeFlag;
-bool bDefaultBaseModeFlag;
-bool bAdaptiveMotionPredFlag;
-bool bDefaultMotionPredFlag;
+bool bAdaptiveBaseModeFlag;
+bool bDefaultBaseModeFlag;
+bool bAdaptiveMotionPredFlag;
+bool bDefaultMotionPredFlag;
-bool bAdaptiveResidualPredFlag;
-bool bDefaultResidualPredFlag;
-bool bTcoeffLevelPredFlag;
-uint8_t uiDisableInterLayerDeblockingFilterIdc;
+bool bAdaptiveResidualPredFlag;
+bool bDefaultResidualPredFlag;
+bool bTcoeffLevelPredFlag;
+uint8_t uiDisableInterLayerDeblockingFilterIdc;
} SSliceHeaderExt, *PSliceHeaderExt;
@@ -155,32 +155,32 @@
typedef struct TagSlice {
// mainly for multiple threads imp.
-SMbCache sMbCacheInfo; // MBCache is introduced within slice dependency
-SBitStringAux* pSliceBsa;
+SMbCache sMbCacheInfo; // MBCache is introduced within slice dependency
+SBitStringAux* pSliceBsa;
/*******************************sSliceHeader****************************/
-SSliceHeaderExt sSliceHeaderExt;
+SSliceHeaderExt sSliceHeaderExt;
-SMVUnitXY sMvStartMin;
-SMVUnitXY sMvStartMax;
-SMVUnitXY sMvc[5];
-uint8_t uiMvcNum;
-uint8_t sScaleShift;
+SMVUnitXY sMvStartMin;
+SMVUnitXY sMvStartMax;
+SMVUnitXY sMvc[5];
+uint8_t uiMvcNum;
+uint8_t sScaleShift;
-uint32_t uiSliceIdx;
-bool bSliceHeaderExtFlag; // Indicate which slice header is used, avc or ext?
-uint8_t uiLastMbQp; // stored qp for last mb coded, maybe more efficient for mb skip detection etc.
+uint32_t uiSliceIdx;
+bool bSliceHeaderExtFlag; // Indicate which slice header is used, avc or ext?
+uint8_t uiLastMbQp; // stored qp for last mb coded, maybe more efficient for mb skip detection etc.
-bool bDynamicSlicingSliceSizeCtrlFlag;
-uint8_t uiAssumeLog2BytePerMb;
+bool bDynamicSlicingSliceSizeCtrlFlag;
+uint8_t uiAssumeLog2BytePerMb;
-uint32_t uiSliceFMECostDown;//TODO: for FME switch under MT, to opt after ME final?
+uint32_t uiSliceFMECostDown;//TODO: for FME switch under MT, to opt after ME final?
-uint8_t uiReservedFillByte; // reserved to meet 4 bytes alignment
+uint8_t uiReservedFillByte; // reserved to meet 4 bytes alignment
-SCabacCtx sCabacCtx;
-int32_t iCabacInitIdc;
-int32_t iMbSkipRun;
+SCabacCtx sCabacCtx;
+int32_t iCabacInitIdc;
+int32_t iMbSkipRun;
} SSlice, *PSlice;
}
--- a/codec/encoder/core/inc/stat.h
+++ b/codec/encoder/core/inc/stat.h
@@ -47,9 +47,9 @@
*/
typedef struct TagStatQuality {
-float rYPsnr[5];
-float rUPsnr[5];
-float rVPsnr[5];
+float rYPsnr[5];
+float rUPsnr[5];
+float rVPsnr[5];
} SStatQuality;
@@ -59,10 +59,10 @@
typedef struct TagComplexityStat {
#ifdef FME_TEST
-int32_t cost_time;
-int32_t me_time;
-int32_t mvp_time;
-int32_t mvb_time;
+int32_t cost_time;
+int32_t me_time;
+int32_t mvp_time;
+int32_t mvb_time;
#endif
// any else?
@@ -75,9 +75,9 @@
typedef struct TagStatSliceInfo {
/* per slice info */
-int32_t iSliceCount[5];
-int32_t iSliceSize [5];
-int32_t iMbCount [5][18];
+int32_t iSliceCount[5];
+int32_t iSliceSize [5];
+int32_t iMbCount [5][18];
} SStatSliceInfo;
@@ -87,13 +87,13 @@
typedef struct TagStatData {
// Quality
-SStatQuality sQualityStat;
+SStatQuality sQualityStat;
// Complexity
-SComplexityStat sComplexityStat;
+SComplexityStat sComplexityStat;
// SSlice information output
-SStatSliceInfo sSliceData;
+SStatSliceInfo sSliceData;
} SStatData;
--- a/codec/encoder/core/inc/svc_enc_frame.h
+++ b/codec/encoder/core/inc/svc_enc_frame.h
@@ -57,10 +57,10 @@
typedef SDqLayer* pDqLayer;
typedef struct TagFeatureSearchPreparation {
-SScreenBlockFeatureStorage* pRefBlockFeature;//point the the ref frame storage
+SScreenBlockFeatureStorage* pRefBlockFeature;//point the the ref frame storage
-uint16_t* pFeatureOfBlock; // Feature of every block (8x8), begin with the point
-uint8_t uiFeatureStrategyIndex;// index of hash strategy
+uint16_t* pFeatureOfBlock; // Feature of every block (8x8), begin with the point
+uint8_t uiFeatureStrategyIndex;// index of hash strategy
/* for FME frame-level switch */
bool bFMESwitchFlag;
@@ -69,51 +69,51 @@
} SFeatureSearchPreparation; //maintain only one
typedef struct TagLayerInfo {
-SNalUnitHeaderExt sNalHeaderExt;
+SNalUnitHeaderExt sNalHeaderExt;
SSlice*
-pSliceInLayer;// Here SSlice identify to Frame on concept, [iSliceIndex], need memory block external side for MT
-SSubsetSps* pSubsetSpsP; // current pSubsetSps used, memory alloc in external
-SWelsSPS* pSpsP; // current pSps based avc used, memory alloc in external
-SWelsPPS* pPpsP; // current pPps used
+pSliceInLayer;// Here SSlice identify to Frame on concept, [iSliceIndex], need memory block external side for MT
+SSubsetSps* pSubsetSpsP; // current pSubsetSps used, memory alloc in external
+SWelsSPS* pSpsP; // current pSps based avc used, memory alloc in external
+SWelsPPS* pPpsP; // current pPps used
} SLayerInfo;
/* Layer Representation */
struct TagDqLayer {
-SLayerInfo sLayerInfo;
+SLayerInfo sLayerInfo;
-uint8_t* pCsData[3]; // pointer to reconstructed picture pData
-int32_t iCsStride[3]; // Cs stride
+uint8_t* pCsData[3]; // pointer to reconstructed picture pData
+int32_t iCsStride[3]; // Cs stride
-uint8_t* pEncData[3]; // pData picture to be encoded in current layer
-int32_t iEncStride[3]; // pData picture stride
+uint8_t* pEncData[3]; // pData picture to be encoded in current layer
+int32_t iEncStride[3]; // pData picture stride
-SMB* sMbDataP; // pointer to mb of mbAddr equal to 0 in slice, mb_data_ptr = mb_base_ptr + (1+iMbStride).
-int16_t iMbWidth; // MB width of this picture, equal to pSps.iMbWidth
-int16_t iMbHeight; // MB height of this picture, equal to pSps.iMbHeight;
+SMB* sMbDataP; // pointer to mb of mbAddr equal to 0 in slice, mb_data_ptr = mb_base_ptr + (1+iMbStride).
+int16_t iMbWidth; // MB width of this picture, equal to pSps.iMbWidth
+int16_t iMbHeight; // MB height of this picture, equal to pSps.iMbHeight;
-bool bBaseLayerAvailableFlag; // whether base layer is available for prediction?
-bool bSatdInMdFlag; // whether SATD is calculated in ME and integer-pel MD
+bool bBaseLayerAvailableFlag; // whether base layer is available for prediction?
+bool bSatdInMdFlag; // whether SATD is calculated in ME and integer-pel MD
-uint8_t iLoopFilterDisableIdc; // 0: on, 1: off, 2: on except for slice boundaries
-int8_t iLoopFilterAlphaC0Offset;// AlphaOffset: valid range [-6, 6], default 0
-int8_t iLoopFilterBetaOffset; // BetaOffset: valid range [-6, 6], default 0
-uint8_t uiDisableInterLayerDeblockingFilterIdc;
-int8_t iInterLayerSliceAlphaC0Offset;
-int8_t iInterLayerSliceBetaOffset;
-bool bDeblockingParallelFlag; //parallel_deblocking_flag
+uint8_t iLoopFilterDisableIdc; // 0: on, 1: off, 2: on except for slice boundaries
+int8_t iLoopFilterAlphaC0Offset;// AlphaOffset: valid range [-6, 6], default 0
+int8_t iLoopFilterBetaOffset; // BetaOffset: valid range [-6, 6], default 0
+uint8_t uiDisableInterLayerDeblockingFilterIdc;
+int8_t iInterLayerSliceAlphaC0Offset;
+int8_t iInterLayerSliceBetaOffset;
+bool bDeblockingParallelFlag; //parallel_deblocking_flag
-SPicture* pRefPic; // reference picture pointer
-SPicture* pDecPic; // reconstruction picture pointer for layer
-SPicture* pRefOri[MAX_REF_PIC_COUNT];
+SPicture* pRefPic; // reference picture pointer
+SPicture* pDecPic; // reconstruction picture pointer for layer
+SPicture* pRefOri[MAX_REF_PIC_COUNT];
-SSliceCtx* pSliceEncCtx; // current slice context
+SSliceCtx* pSliceEncCtx; // current slice context
-int32_t* pNumSliceCodedOfPartition; // for dynamic slicing mode
-int32_t* pLastCodedMbIdxOfPartition; // for dynamic slicing mode
-int32_t* pLastMbIdxOfPartition; // for dynamic slicing mode
+int32_t* pNumSliceCodedOfPartition; // for dynamic slicing mode
+int32_t* pLastCodedMbIdxOfPartition; // for dynamic slicing mode
+int32_t* pLastMbIdxOfPartition; // for dynamic slicing mode
SFeatureSearchPreparation* pFeatureSearchPreparation;
-SDqLayer* pRefLayer; // pointer to referencing dq_layer of current layer to be decoded
+SDqLayer* pRefLayer; // pointer to referencing dq_layer of current layer to be decoded
};
--- a/codec/encoder/core/inc/svc_enc_macroblock.h
+++ b/codec/encoder/core/inc/svc_enc_macroblock.h
@@ -49,31 +49,31 @@
typedef struct TagMB {
/*************************mb_layer() syntax and generated********************************/
/*mb_layer():*/
-Mb_Type uiMbType; // including MB detailed partition type, number and type of reference list
-int32_t iMbXY; // offset position of MB top left point based
-int16_t iMbX; // position of MB in horizontal axis [0..32767]
-int16_t iMbY; // position of MB in vertical axis [0..32767]
+Mb_Type uiMbType; // including MB detailed partition type, number and type of reference list
+int32_t iMbXY; // offset position of MB top left point based
+int16_t iMbX; // position of MB in horizontal axis [0..32767]
+int16_t iMbY; // position of MB in vertical axis [0..32767]
-uint8_t uiNeighborAvail; // avail && same_slice: LEFT_MB_POS:0x01, TOP_MB_POS:0x02, TOPRIGHT_MB_POS = 0x04 ,TOPLEFT_MB_POS = 0x08;
-uint8_t uiCbp;
+uint8_t uiNeighborAvail; // avail && same_slice: LEFT_MB_POS:0x01, TOP_MB_POS:0x02, TOPRIGHT_MB_POS = 0x04 ,TOPLEFT_MB_POS = 0x08;
+uint8_t uiCbp;
-SMVUnitXY* sMv;
-int8_t* pRefIndex;
+SMVUnitXY* sMv;
+int8_t* pRefIndex;
-int32_t* pSadCost; // mb sad. set to 0 for intra mb
-int8_t* pIntra4x4PredMode; // [MB_BLOCK4x4_NUM]
-int8_t* pNonZeroCount; // [MB_LUMA_CHROMA_BLOCK4x4_NUM]
+int32_t* pSadCost; // mb sad. set to 0 for intra mb
+int8_t* pIntra4x4PredMode; // [MB_BLOCK4x4_NUM]
+int8_t* pNonZeroCount; // [MB_LUMA_CHROMA_BLOCK4x4_NUM]
-SMVUnitXY sP16x16Mv;
+SMVUnitXY sP16x16Mv;
-uint8_t uiLumaQp; // uiLumaQp: pPps->iInitialQp + sSliceHeader->delta_qp + mb->dquant.
-uint8_t uiChromaQp;
-uint16_t uiSliceIdc; // 2^16=65536 > MaxFS(36864) of level 5.1; AVC: pFirstMbInSlice?; SVC: (pFirstMbInSlice << 7) | ((uiDependencyId << 4) | uiQualityId);
-uint32_t uiChromPredMode;
-int32_t iLumaDQp;
-SMVUnitXY sMvd[4];
-int32_t iCbpDc;
-//uint8_t reserved_filling_bytes[1]; // not deleting this line for further changes of this structure. filling bytes reserved to make structure aligned with 4 bytes, higher cache hit on less structure size by 2 cache lines( 2 * 64 bytes) once hit
+uint8_t uiLumaQp; // uiLumaQp: pPps->iInitialQp + sSliceHeader->delta_qp + mb->dquant.
+uint8_t uiChromaQp;
+uint16_t uiSliceIdc; // 2^16=65536 > MaxFS(36864) of level 5.1; AVC: pFirstMbInSlice?; SVC: (pFirstMbInSlice << 7) | ((uiDependencyId << 4) | uiQualityId);
+uint32_t uiChromPredMode;
+int32_t iLumaDQp;
+SMVUnitXY sMvd[4];
+int32_t iCbpDc;
+//uint8_t reserved_filling_bytes[1]; // not deleting this line for further changes of this structure. filling bytes reserved to make structure aligned with 4 bytes, higher cache hit on less structure size by 2 cache lines( 2 * 64 bytes) once hit
} SMB, *PMb;
}
--- a/codec/encoder/core/inc/svc_enc_slice_segment.h
+++ b/codec/encoder/core/inc/svc_enc_slice_segment.h
@@ -77,30 +77,30 @@
*/
/* Single/multiple slices */
typedef struct SlicepEncCtx_s {
-SliceModeEnum uiSliceMode; /* 0: single slice in frame; 1: multiple slices in frame; */
-int16_t iMbWidth; /* width of picture size in mb */
-int16_t iMbHeight; /* height of picture size in mb */
-int32_t iSliceNumInFrame; /* count number of slices in frame; */
-int32_t iMbNumInFrame; /* count number of MBs in frame */
-uint16_t* pOverallMbMap; /* overall MB map in frame, store virtual slice idc; */
-int32_t* pFirstMbInSlice; /* first MB address top-left based in every slice respectively; */
-int32_t* pCountMbNumInSlice; /* count number of MBs in every slice respectively; */
-uint32_t uiSliceSizeConstraint;/*in byte*/
-int32_t iMaxSliceNumConstraint;/*maximal number of slices constraint*/
+SliceModeEnum uiSliceMode; /* 0: single slice in frame; 1: multiple slices in frame; */
+int16_t iMbWidth; /* width of picture size in mb */
+int16_t iMbHeight; /* height of picture size in mb */
+int32_t iSliceNumInFrame; /* count number of slices in frame; */
+int32_t iMbNumInFrame; /* count number of MBs in frame */
+uint16_t* pOverallMbMap; /* overall MB map in frame, store virtual slice idc; */
+int32_t* pFirstMbInSlice; /* first MB address top-left based in every slice respectively; */
+int32_t* pCountMbNumInSlice; /* count number of MBs in every slice respectively; */
+uint32_t uiSliceSizeConstraint; /* in byte */
+int32_t iMaxSliceNumConstraint; /* maximal number of slices constraint */
} SSliceCtx;
typedef struct TagDynamicSlicingStack {
-int32_t iStartPos;
-int32_t iCurrentPos;
+int32_t iStartPos;
+int32_t iCurrentPos;
-uint8_t* pBsStackBufPtr; // current writing position
-uint32_t uiBsStackCurBits;
-int32_t iBsStackLeftBits;
+uint8_t* pBsStackBufPtr; // current writing position
+uint32_t uiBsStackCurBits;
+int32_t iBsStackLeftBits;
-SCabacCtx sStoredCabac;
-int32_t iMbSkipRunStack;
-uint8_t uiLastMbQp;
+SCabacCtx sStoredCabac;
+int32_t iMbSkipRunStack;
+uint8_t uiLastMbQp;
} SDynamicSlicingStack;
/*!
--- a/codec/encoder/core/inc/wels_common_basis.h
+++ b/codec/encoder/core/inc/wels_common_basis.h
@@ -46,9 +46,9 @@
namespace WelsEnc {
-struct SMVUnitXY { // each 4 Bytes
- int16_t iMvX;
- int16_t iMvY;
+struct SMVUnitXY { // each 4 Bytes
+ int16_t iMvX;
+ int16_t iMvY;
public:
SMVUnitXY& sDeltaMv (const SMVUnitXY& _v0, const SMVUnitXY& _v1) {
iMvX = _v0.iMvX - _v1.iMvX;
@@ -62,17 +62,17 @@
};
};
-typedef struct TagMVComponentUnit { // each LIST_0/LIST_1
- SMVUnitXY sMotionVectorCache[5 * 6 - 1]; // Luma only: 5 x 6 - 1 = 29 D-Words
- int8_t iRefIndexCache[5 * 6]; // Luma only: 5 x 6 = 30 bytes
+typedef struct TagMVComponentUnit { // each LIST_0/LIST_1
+ SMVUnitXY sMotionVectorCache[5 * 6 - 1]; // Luma only: 5 x 6 - 1 = 29 D-Words
+ int8_t iRefIndexCache[5 * 6]; // Luma only: 5 x 6 = 30 bytes
} SMVComponentUnit, *PMVComponentUnit;
typedef struct TagParaSetOffsetVariable {
- int32_t iParaSetIdDelta[MAX_DQ_LAYER_NUM/*+1*/]; //mark delta between SPS_ID_in_bs and sps_id_in_encoder, can be minus, for each dq-layer
+ int32_t iParaSetIdDelta[MAX_DQ_LAYER_NUM/*+1*/];//mark delta between SPS_ID_in_bs and sps_id_in_encoder, can be minus, for each dq-layer
//need not extra +1 due no MGS and FMO case so far
- bool bUsedParaSetIdInBs[MAX_PPS_COUNT]; //mark the used SPS_ID with 1
- uint32_t uiNextParaSetIdToUseInBs; //mark the next SPS_ID_in_bs, for all layers
+ bool bUsedParaSetIdInBs[MAX_PPS_COUNT]; //mark the used SPS_ID with 1
+ uint32_t uiNextParaSetIdToUseInBs; //mark the next SPS_ID_in_bs, for all layers
} SParaSetOffsetVariable;
typedef struct TagParaSetOffset {
@@ -81,7 +81,7 @@
sParaSetOffsetVariable[PARA_SET_TYPE]; //PARA_SET_TYPE=3; paraset_type = 0: AVC_SPS; =1: Subset_SPS; =2: PPS
//in PSO design, "bPpsIdMappingIntoSubsetsps" uses the current para of current IDR period
bool
- bPpsIdMappingIntoSubsetsps[MAX_DQ_LAYER_NUM/*+1*/]; // need not extra +1 due no MGS and FMO case so far
+ bPpsIdMappingIntoSubsetsps[MAX_DQ_LAYER_NUM/*+1*/]; // need not extra +1 due no MGS and FMO case so far
int32_t iPpsIdList[MAX_DQ_LAYER_NUM][MAX_PPS_COUNT]; //index0: max pps types; index1: for differnt IDRs, if only index0=1, index1 can reach MAX_PPS_COUNT
@@ -102,10 +102,10 @@
/* Position Offset structure */
typedef struct TagCropOffset {
- int16_t iCropLeft;
- int16_t iCropRight;
- int16_t iCropTop;
- int16_t iCropBottom;
+ int16_t iCropLeft;
+ int16_t iCropRight;
+ int16_t iCropTop;
+ int16_t iCropBottom;
} SCropOffset;
--- a/codec/encoder/core/inc/wels_func_ptr_def.h
+++ b/codec/encoder/core/inc/wels_func_ptr_def.h
@@ -215,7 +215,7 @@
PGetIntraPredFunc pfGetLumaI4x4Pred[I4_PRED_A];
PGetIntraPredFunc pfGetChromaPred[C_PRED_A];
- PSampleSadHor8Func pfSampleSadHor8[2]; // 1: for 16x16 square; 0: for 8x8 square
+ PSampleSadHor8Func pfSampleSadHor8[2]; // 1: for 16x16 square; 0: for 8x8 square
PMotionSearchFunc
pfMotionSearch[BLOCK_STATIC_IDC_ALL]; //svc_encode_slice.c svc_mode_decision.c svc_enhance_layer_md.c svc_base_layer_md.c
PSearchMethodFunc pfSearchMethod[BLOCK_SIZE_ALL];
--- a/codec/encoder/core/inc/wels_preprocess.h
+++ b/codec/encoder/core/inc/wels_preprocess.h
@@ -55,9 +55,9 @@
typedef struct TagWelsEncCtx sWelsEncCtx;
typedef struct {
- SPicture* pScaledInputPicture;
- int32_t iScaledWidth[MAX_DEPENDENCY_LAYER];
- int32_t iScaledHeight[MAX_DEPENDENCY_LAYER];
+ SPicture* pScaledInputPicture;
+ int32_t iScaledWidth[MAX_DEPENDENCY_LAYER];
+ int32_t iScaledHeight[MAX_DEPENDENCY_LAYER];
} Scaled_Picture;
@@ -74,29 +74,29 @@
SPicture* pRefPicture;
int32_t iSrcListIdx; //idx in h->spatial_pic[base_did];
bool bSceneLtrFlag;
- unsigned char* pBestBlockStaticIdc;
+ unsigned char* pBestBlockStaticIdc;
} SRefInfoParam;
typedef struct TagVAAFrameInfo {
- SVAACalcResult sVaaCalcInfo;
+ SVAACalcResult sVaaCalcInfo;
SAdaptiveQuantizationParam sAdaptiveQuantParam;
SComplexityAnalysisParam sComplexityAnalysisParam;
- int32_t iPicWidth; // maximal iWidth of picture in samples for svc coding
- int32_t iPicHeight; // maximal iHeight of picture in samples for svc coding
- int32_t iPicStride; //luma
- int32_t iPicStrideUV;
+ int32_t iPicWidth; // maximal iWidth of picture in samples for svc coding
+ int32_t iPicHeight; // maximal iHeight of picture in samples for svc coding
+ int32_t iPicStride; //luma
+ int32_t iPicStrideUV;
- uint8_t* pRefY; //pRef
- uint8_t* pCurY; //cur
- uint8_t* pRefU; //pRef
- uint8_t* pCurU; //cur
- uint8_t* pRefV; //pRef
- uint8_t* pCurV; //cur
+ uint8_t* pRefY; //pRef
+ uint8_t* pCurY; //cur
+ uint8_t* pRefU; //pRef
+ uint8_t* pCurU; //cur
+ uint8_t* pRefV; //pRef
+ uint8_t* pCurV; //cur
- int8_t* pVaaBackgroundMbFlag;
- uint8_t uiValidLongTermPicIdx;
- uint8_t uiMarkLongTermPicIdx;
+ int8_t* pVaaBackgroundMbFlag;
+ uint8_t uiValidLongTermPicIdx;
+ uint8_t uiMarkLongTermPicIdx;
ESceneChangeIdc eSceneChangeIdc;
bool bSceneChangeFlag;
@@ -194,7 +194,7 @@
private:
Scaled_Picture m_sScaledPicture;
- SPicture* m_pLastSpatialPicture[MAX_DEPENDENCY_LAYER][2];
+ SPicture* m_pLastSpatialPicture[MAX_DEPENDENCY_LAYER][2];
IWelsVP* m_pInterfaceVp;
sWelsEncCtx* m_pEncCtx;
bool m_bInitDone;
--- a/codec/encoder/plus/inc/welsEncoderExt.h
+++ b/codec/encoder/plus/inc/welsEncoderExt.h
@@ -101,24 +101,24 @@
void TraceParamInfo(SEncParamExt *pParam);
void UpdateStatistics(const int64_t kiCurrentFrameTs, EVideoFrameType eFrameType, const int32_t kiCurrentFrameSize, const int64_t kiCurrentFrameMs);
- sWelsEncCtx* m_pEncContext;
+ sWelsEncCtx* m_pEncContext;
- welsCodecTrace* m_pWelsTrace;
- int32_t m_iMaxPicWidth;
- int32_t m_iMaxPicHeight;
+ welsCodecTrace* m_pWelsTrace;
+ int32_t m_iMaxPicWidth;
+ int32_t m_iMaxPicHeight;
- int32_t m_iCspInternal;
- bool m_bInitialFlag;
+ int32_t m_iCspInternal;
+ bool m_bInitialFlag;
#ifdef OUTPUT_BIT_STREAM
- FILE* m_pFileBs;
- FILE* m_pFileBsSize;
- bool m_bSwitch;
- int32_t m_iSwitchTimes;
+ FILE* m_pFileBs;
+ FILE* m_pFileBsSize;
+ bool m_bSwitch;
+ int32_t m_iSwitchTimes;
#endif//OUTPUT_BIT_STREAM
#ifdef REC_FRAME_COUNT
- int32_t m_uiCountFrameNum;
+ int32_t m_uiCountFrameNum;
#endif//REC_FRAME_COUNT
void InitEncoder (void);
--- a/codec/processing/interface/IWelsVP.h
+++ b/codec/processing/interface/IWelsVP.h
@@ -169,15 +169,15 @@
} SSceneChangeResult;
typedef struct {
- unsigned char* pCurY; // Y data of current frame
- unsigned char* pRefY; // Y data of pRef frame for diff calc
- int (*pSad8x8)[4]; // sad of 8x8, every 4 in the same 16x16 get together
- int* pSsd16x16; // sum of square difference of 16x16
- int* pSum16x16; // sum of 16x16
- int* pSumOfSquare16x16; // sum of square of 16x16
- int (*pSumOfDiff8x8)[4];
+ unsigned char* pCurY; // Y data of current frame
+ unsigned char* pRefY; // Y data of pRef frame for diff calc
+ int (*pSad8x8)[4]; // sad of 8x8, every 4 in the same 16x16 get together
+ int* pSsd16x16; // sum of square difference of 16x16
+ int* pSum16x16; // sum of 16x16
+ int* pSumOfSquare16x16; // sum of square of 16x16
+ int (*pSumOfDiff8x8)[4];
unsigned char (*pMad8x8)[4];
- int iFrameSad; // sad of frame
+ int iFrameSad; // sad of frame
} SVAACalcResult;
typedef struct {
@@ -185,11 +185,11 @@
int iCalcBgd;
int iCalcSsd;
int iReserved;
- SVAACalcResult* pCalcResult;
+ SVAACalcResult* pCalcResult;
} SVAACalcParam;
typedef struct {
- signed char* pBackgroundMbFlag;
+ signed char* pBackgroundMbFlag;
SVAACalcResult* pCalcRes;
} SBGDInterface;
@@ -204,12 +204,12 @@
} SMotionTextureUnit;
typedef struct {
- int iAdaptiveQuantMode; // 0:quality mode, 1:bitrates mode
- SVAACalcResult* pCalcResult;
+ int iAdaptiveQuantMode; // 0:quality mode, 1:bitrates mode
+ SVAACalcResult* pCalcResult;
SMotionTextureUnit* pMotionTextureUnit;
- signed char* pMotionTextureIndexToDeltaQp;
- int iAverMotionTextureIndexToDeltaQp; // *AQ_STEP_INT_MULTIPLY
+ signed char* pMotionTextureIndexToDeltaQp;
+ int iAverMotionTextureIndexToDeltaQp; // *AQ_STEP_INT_MULTIPLY
} SAdaptiveQuantizationParam;
typedef enum {
--- a/codec/processing/src/adaptivequantization/AdaptiveQuantization.h
+++ b/codec/processing/src/adaptivequantization/AdaptiveQuantization.h
@@ -87,8 +87,8 @@
void WelsInitVarFunc (PVarFunc& pfVar, int32_t iCpuFlag);
private:
- PVarFunc m_pfVar;
- int32_t m_CPUFlag;
+ PVarFunc m_pfVar;
+ int32_t m_CPUFlag;
SAdaptiveQuantizationParam m_sAdaptiveQuantParam;
};
--- a/codec/processing/src/backgrounddetection/BackgroundDetection.h
+++ b/codec/processing/src/backgrounddetection/BackgroundDetection.h
@@ -49,12 +49,12 @@
WELSVP_NAMESPACE_BEGIN
typedef struct {
- int32_t iBackgroundFlag;
- int32_t iSAD;
- int32_t iSD;
- int32_t iMAD;
- int32_t iMinSubMad;
- int32_t iMaxDiffSubSd;
+ int32_t iBackgroundFlag;
+ int32_t iSAD;
+ int32_t iSD;
+ int32_t iMAD;
+ int32_t iMinSubMad;
+ int32_t iMaxDiffSubSd;
} SBackgroundOU;
class CBackgroundDetection : public IStrategy {
@@ -69,11 +69,11 @@
struct vBGDParam {
uint8_t* pCur[3];
uint8_t* pRef[3];
- int32_t iBgdWidth;
- int32_t iBgdHeight;
+ int32_t iBgdWidth;
+ int32_t iBgdHeight;
int32_t iStride[3];
- SBackgroundOU* pOU_array;
- int8_t* pBackgroundMbFlag;
+ SBackgroundOU* pOU_array;
+ int8_t* pBackgroundMbFlag;
SVAACalcResult* pCalcRes;
} m_BgdParam;
--- a/codec/processing/src/denoise/denoise.h
+++ b/codec/processing/src/denoise/denoise.h
@@ -79,8 +79,8 @@
#endif
typedef struct TagDenoiseFuncs {
- DenoiseFilterFuncPtr pfBilateralLumaFilter8;//on 8 samples
- DenoiseFilterFuncPtr pfWaverageChromaFilter8;//on 8 samples
+ DenoiseFilterFuncPtr pfBilateralLumaFilter8;//on 8 samples
+ DenoiseFilterFuncPtr pfWaverageChromaFilter8;//on 8 samples
} SDenoiseFuncs;
class CDenoiser : public IStrategy {
@@ -96,9 +96,9 @@
void WaverageDenoiseChroma (uint8_t* pSrcUV, int32_t width, int32_t height, int32_t stride);
private:
- float m_fSigmaGrey; //sigma for grey scale similarity, suggestion 2.5-3
- uint16_t m_uiSpaceRadius; //filter windows radius: 1-3x3, 2-5x5,3-7x7. Larger size, slower speed
- uint16_t m_uiType; //do denoising on which component 1-Y, 2-U, 4-V; 7-YUV, 3-YU, 5-YV, 6-UV
+ float m_fSigmaGrey; //sigma for grey scale similarity, suggestion 2.5-3
+ uint16_t m_uiSpaceRadius; //filter windows radius: 1-3x3, 2-5x5,3-7x7. Larger size, slower speed
+ uint16_t m_uiType; //do denoising on which component 1-Y, 2-U, 4-V; 7-YUV, 3-YU, 5-YV, 6-UV
SDenoiseFuncs m_pfDenoise;
int32_t m_CPUFlag;
--- a/codec/processing/src/imagerotate/imagerotate.h
+++ b/codec/processing/src/imagerotate/imagerotate.h
@@ -58,9 +58,9 @@
ImageRotateFunc ImageRotate270D_c;
typedef struct {
- ImageRotateFuncPtr pfImageRotate90D;
- ImageRotateFuncPtr pfImageRotate180D;
- ImageRotateFuncPtr pfImageRotate270D;
+ ImageRotateFuncPtr pfImageRotate90D;
+ ImageRotateFuncPtr pfImageRotate180D;
+ ImageRotateFuncPtr pfImageRotate270D;
} SImageRotateFuncs;
class CImageRotating : public IStrategy {
--- a/codec/processing/src/vaacalc/vaacalculation.h
+++ b/codec/processing/src/vaacalc/vaacalculation.h
@@ -82,11 +82,11 @@
typedef VAACalcSadSsdFunc* PVAACalcSadSsdFunc;
typedef struct TagVaaFuncs {
- PVAACalcSadBgdFunc pfVAACalcSadBgd;
- PVAACalcSadSsdBgdFunc pfVAACalcSadSsdBgd;
- PVAACalcSadFunc pfVAACalcSad;
- PVAACalcSadVarFunc pfVAACalcSadVar;
- PVAACalcSadSsdFunc pfVAACalcSadSsd;
+ PVAACalcSadBgdFunc pfVAACalcSadBgd;
+ PVAACalcSadSsdBgdFunc pfVAACalcSadSsdBgd;
+ PVAACalcSadFunc pfVAACalcSad;
+ PVAACalcSadVarFunc pfVAACalcSadVar;
+ PVAACalcSadSsdFunc pfVAACalcSadSsd;
} SVaaFuncs;
--- a/test/decoder/DecUT_ParseSyntax.cpp
+++ b/test/decoder/DecUT_ParseSyntax.cpp
@@ -135,7 +135,7 @@
unsigned char m_szBuffer[BUF_SIZE]; //for mocking packet
int m_iBufLength; //record the valid data in m_szBuffer
PWelsDecoderContext m_pCtx;
- welsCodecTrace* m_pWelsTrace;
+ welsCodecTrace* m_pWelsTrace;
};
--- a/test/encoder/EncUT_ParameterSetStrategy.cpp
+++ b/test/encoder/EncUT_ParameterSetStrategy.cpp
@@ -33,11 +33,11 @@
void GenerateParam (SWelsSvcCodingParam* pParam);
public:
CMemoryAlign* pMa;
- SWelsSPS* m_pSpsArray;
- SSubsetSps* m_pSubsetArray;
+ SWelsSPS* m_pSpsArray;
+ SSubsetSps* m_pSubsetArray;
- SWelsSPS* m_pSpsArrayPointer;
- SSubsetSps* m_pSubsetArrayPointer;
+ SWelsSPS* m_pSpsArrayPointer;
+ SSubsetSps* m_pSubsetArrayPointer;
};