bool is one of the built in, standard types in C++, there's no need for a typedef for it.
Showing the changes to codec/decoder (27 of 82 files). Show all
Unified · Split
| @@ -92,8 +92,8 @@ void_t ParseRefBasePicMarking (PBitStringAux pBs, PRefBasePicMarking pRefBasePic · 91 unmodified lines | |||
| 92 | 92 | ||
| 93 | void_t ParsePrefixNalUnit (PWelsDecoderContext pCtx, PBitStringAux pBs); | 93 | void_t ParsePrefixNalUnit (PWelsDecoderContext pCtx, PBitStringAux pBs); |
| 94 | 94 | ||
| 95 | bool_t CheckAccessUnitBoundary (const PNalUnit kpCurNal, const PNalUnit kpLastNal, const PSps kpSps); | 95 | bool CheckAccessUnitBoundary (const PNalUnit kpCurNal, const PNalUnit kpLastNal, const PSps kpSps); |
| 96 | bool_t CheckAccessUnitBoundaryExt (PNalUnitHeaderExt pLastNalHdrExt, PNalUnitHeaderExt pCurNalHeaderExt, | 96 | bool CheckAccessUnitBoundaryExt (PNalUnitHeaderExt pLastNalHdrExt, PNalUnitHeaderExt pCurNalHeaderExt, |
| 97 | PSliceHeader pLastSliceHeader, PSliceHeader pCurSliceHeader); | 97 | PSliceHeader pLastSliceHeader, PSliceHeader pCurSliceHeader); |
| 98 | /*! | 98 | /*! |
| 99 | ************************************************************************************* | 99 | ************************************************************************************* |
| @@ -107,14 +107,14 @@ struct TagDqLayer { · 106 unmodified lines | |||
| 107 | PPicture pRef; // reference picture pointer | 107 | PPicture pRef; // reference picture pointer |
| 108 | PPicture pDec; // reconstruction picture pointer for layer | 108 | PPicture pDec; // reconstruction picture pointer for layer |
| 109 | 109 | ||
| 110 | bool_t bStoreRefBasePicFlag; // iCurTid == 0 && iCurQid = 0 && bEncodeKeyPic = 1 | 110 | bool bStoreRefBasePicFlag; // iCurTid == 0 && iCurQid = 0 && bEncodeKeyPic = 1 |
| 111 | bool_t bTCoeffLevelPredFlag; | 111 | bool bTCoeffLevelPredFlag; |
| 112 | bool_t bConstrainedIntraResamplingFlag; | 112 | bool bConstrainedIntraResamplingFlag; |
| 113 | uint8_t uiRefLayerDqId; | 113 | uint8_t uiRefLayerDqId; |
| 114 | uint8_t uiRefLayerChromaPhaseXPlus1Flag; | 114 | uint8_t uiRefLayerChromaPhaseXPlus1Flag; |
| 115 | uint8_t uiRefLayerChromaPhaseYPlus1; | 115 | uint8_t uiRefLayerChromaPhaseYPlus1; |
| 116 | uint8_t uiLayerDqId; // dq_id of current layer | 116 | uint8_t uiLayerDqId; // dq_id of current layer |
| 117 | bool_t bUseRefBasePicFlag; // whether reference pic or reference base pic is referred? | 117 | bool bUseRefBasePicFlag; // whether reference pic or reference base pic is referred? |
| 118 | }; | 118 | }; |
| 119 | 119 | ||
| 120 | typedef struct TagGpuAvcLayer { | 120 | typedef struct TagGpuAvcLayer { |
| @@ -48,12 +48,12 @@ typedef int32_t (*PWelsDecMbCavlcFunc) (PWelsDecoderContext pCtx, PNalUnit pNalC · 47 unmodified lines | |||
| 48 | 48 | ||
| 49 | int32_t WelsTargetSliceConstruction (PWelsDecoderContext pCtx); //construction based on slice | 49 | int32_t WelsTargetSliceConstruction (PWelsDecoderContext pCtx); //construction based on slice |
| 50 | 50 | ||
| 51 | int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool_t bFirstSliceInLayer, PNalUnit pNalCur); | 51 | int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool bFirstSliceInLayer, PNalUnit pNalCur); |
| 52 | 52 | ||
| 53 | 53 | ||
| 54 | int32_t WelsTargetMbConstruction (PWelsDecoderContext pCtx); | 54 | int32_t WelsTargetMbConstruction (PWelsDecoderContext pCtx); |
| 55 | 55 | ||
| 56 | int32_t WelsMbIntraPredictionConstruction (PWelsDecoderContext pCtx, PDqLayer pCurLayer, bool_t bOutput); | 56 | int32_t WelsMbIntraPredictionConstruction (PWelsDecoderContext pCtx, PDqLayer pCurLayer, bool bOutput); |
| 57 | int32_t WelsMbInterSampleConstruction (PWelsDecoderContext pCtx, PDqLayer pCurLayer, | 57 | int32_t WelsMbInterSampleConstruction (PWelsDecoderContext pCtx, PDqLayer pCurLayer, |
| 58 | uint8_t* pDstY, uint8_t* pDstU, uint8_t* pDstV, int32_t iStrideL, int32_t iStrideC); | 58 | uint8_t* pDstY, uint8_t* pDstU, uint8_t* pDstV, int32_t iStrideL, int32_t iStrideC); |
| 59 | int32_t WelsMbInterConstruction (PWelsDecoderContext pCtx, PDqLayer pCurLayer); | 59 | int32_t WelsMbInterConstruction (PWelsDecoderContext pCtx, PDqLayer pCurLayer); |
| @@ -180,8 +180,8 @@ typedef struct TagWelsDecoderContext { · 179 unmodified lines | |||
| 180 | 180 | ||
| 181 | int32_t iOutputColorFormat; // color space format to be outputed | 181 | int32_t iOutputColorFormat; // color space format to be outputed |
| 182 | VIDEO_BITSTREAM_TYPE eVideoType; //indicate the type of video to decide whether or not to do qp_delta error detection. | 182 | VIDEO_BITSTREAM_TYPE eVideoType; //indicate the type of video to decide whether or not to do qp_delta error detection. |
| 183 | bool_t bErrorResilienceFlag; // error resilience flag | 183 | bool bErrorResilienceFlag; // error resilience flag |
| 184 | bool_t bHaveGotMemory; // global memory for decoder context related ever requested? | 184 | bool bHaveGotMemory; // global memory for decoder context related ever requested? |
| 185 | 185 | ||
| 186 | int32_t iImgWidthInPixel; // width of image in pixel reconstruction picture to be output | 186 | int32_t iImgWidthInPixel; // width of image in pixel reconstruction picture to be output |
| 187 | int32_t iImgHeightInPixel;// height of image in pixel reconstruction picture to be output | 187 | int32_t iImgHeightInPixel;// height of image in pixel reconstruction picture to be output |
| @@ -191,7 +191,7 @@ typedef struct TagWelsDecoderContext { · 3 unmodified lines | |||
| 191 | ESliceType eSliceType; // Slice type | 191 | ESliceType eSliceType; // Slice type |
| 192 | int32_t iFrameNum; | 192 | int32_t iFrameNum; |
| 193 | int32_t iPrevFrameNum; // frame number of previous frame well decoded for non-truncated mode yet | 193 | int32_t iPrevFrameNum; // frame number of previous frame well decoded for non-truncated mode yet |
| 194 | bool_t bLastHasMmco5; // | 194 | bool bLastHasMmco5; // |
| 195 | int32_t iErrorCode; // error code return while decoding in case packets lost | 195 | int32_t iErrorCode; // error code return while decoding in case packets lost |
| 196 | SFmo sFmoList[MAX_PPS_COUNT]; // list for FMO storage | 196 | SFmo sFmoList[MAX_PPS_COUNT]; // list for FMO storage |
| 197 | PFmo pFmo; // current fmo context after parsed slice_header | 197 | PFmo pFmo; // current fmo context after parsed slice_header |
| @@ -270,25 +270,25 @@ typedef struct TagWelsDecoderContext { · 72 unmodified lines | |||
| 270 | int32_t iPicHeightReq; // picture height have requested the memory | 270 | int32_t iPicHeightReq; // picture height have requested the memory |
| 271 | 271 | ||
| 272 | uint8_t uiTargetDqId; // maximal DQ ID in current access unit, meaning target layer ID | 272 | uint8_t uiTargetDqId; // maximal DQ ID in current access unit, meaning target layer ID |
| 273 | bool_t bAvcBasedFlag; // For decoding bitstream: | 273 | bool bAvcBasedFlag; // For decoding bitstream: |
| 274 | bool_t bEndOfStreamFlag; // Flag on end of stream requested by external application layer | 274 | bool bEndOfStreamFlag; // Flag on end of stream requested by external application layer |
| 275 | bool_t bInitialDqLayersMem; // dq layers related memory is available? | 275 | bool bInitialDqLayersMem; // dq layers related memory is available? |
| 276 | 276 | ||
| 277 | bool_t bOnlyOneLayerInCurAuFlag; //only one layer in current AU: 1 | 277 | bool bOnlyOneLayerInCurAuFlag; //only one layer in current AU: 1 |
| 278 | 278 | ||
| 279 | // for EC parameter sets | 279 | // for EC parameter sets |
| 280 | bool_t bSpsExistAheadFlag; // whether does SPS NAL exist ahead of sequence? | 280 | bool bSpsExistAheadFlag; // whether does SPS NAL exist ahead of sequence? |
| 281 | bool_t bSubspsExistAheadFlag;// whether does Subset SPS NAL exist ahead of sequence? | 281 | bool bSubspsExistAheadFlag;// whether does Subset SPS NAL exist ahead of sequence? |
| 282 | bool_t bPpsExistAheadFlag; // whether does PPS NAL exist ahead of sequence? | 282 | bool bPpsExistAheadFlag; // whether does PPS NAL exist ahead of sequence? |
| 283 | 283 | ||
| 284 | bool_t bSpsAvailFlags[MAX_SPS_COUNT]; | 284 | bool bSpsAvailFlags[MAX_SPS_COUNT]; |
| 285 | bool_t bSubspsAvailFlags[MAX_SPS_COUNT]; | 285 | bool bSubspsAvailFlags[MAX_SPS_COUNT]; |
| 286 | bool_t bPpsAvailFlags[MAX_PPS_COUNT]; | 286 | bool bPpsAvailFlags[MAX_PPS_COUNT]; |
| 287 | bool_t bReferenceLostAtT0Flag; | 287 | bool bReferenceLostAtT0Flag; |
| 288 | #ifdef LONG_TERM_REF | 288 | #ifdef LONG_TERM_REF |
| 289 | bool_t bParamSetsLostFlag; //sps or pps do not exist or not correct | 289 | bool bParamSetsLostFlag; //sps or pps do not exist or not correct |
| 290 | 290 | ||
| 291 | bool_t | 291 | bool |
| 292 | bCurAuContainLtrMarkSeFlag; //current AU has the LTR marking syntax element, mark the previous frame or self | 292 | bCurAuContainLtrMarkSeFlag; //current AU has the LTR marking syntax element, mark the previous frame or self |
| 293 | int32_t iFrameNumOfAuMarkedLtr; //if bCurAuContainLtrMarkSeFlag==true, SHOULD set this variable | 293 | int32_t iFrameNumOfAuMarkedLtr; //if bCurAuContainLtrMarkSeFlag==true, SHOULD set this variable |
| 294 | 294 | ||
| @@ -319,7 +319,7 @@ typedef struct TagWelsDecoderContext { · 24 unmodified lines | |||
| 319 | int32_t iFeedbackVclNalInAu; | 319 | int32_t iFeedbackVclNalInAu; |
| 320 | int32_t iFeedbackTidInAu; | 320 | int32_t iFeedbackTidInAu; |
| 321 | 321 | ||
| 322 | bool_t bAuReadyFlag; // TRUE: one au is ready for decoding; FALSE: default value | 322 | bool bAuReadyFlag; // TRUE: one au is ready for decoding; FALSE: default value |
| 323 | 323 | ||
| 324 | //trace handle | 324 | //trace handle |
| 325 | void_t* pTraceHandle; | 325 | void_t* pTraceHandle; |
| @@ -89,13 +89,13 @@ void_t DecodeNalHeaderExt (PNalUnit pNal, uint8_t* pSrc); · 88 unmodified lines | |||
| 89 | * ParseSliceHeaderSyntaxs | 89 | * ParseSliceHeaderSyntaxs |
| 90 | * Parse slice header of bitstream | 90 | * Parse slice header of bitstream |
| 91 | */ | 91 | */ |
| 92 | int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, const bool_t kbExtensionFlag); | 92 | int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, const bool kbExtensionFlag); |
| 93 | /* | 93 | /* |
| 94 | * Copy relative syntax elements of NALUnitHeaderExt, sRefPicBaseMarking and bStoreRefBasePicFlag in prefix nal unit. | 94 | * Copy relative syntax elements of NALUnitHeaderExt, sRefPicBaseMarking and bStoreRefBasePicFlag in prefix nal unit. |
| 95 | * pSrc: mark as decoded prefix NAL | 95 | * pSrc: mark as decoded prefix NAL |
| 96 | * pDst: succeeded VCL NAL based AVC (I/P Slice) | 96 | * pDst: succeeded VCL NAL based AVC (I/P Slice) |
| 97 | */ | 97 | */ |
| 98 | bool_t PrefetchNalHeaderExtSyntax (PWelsDecoderContext pCtx, PNalUnit const kpDst, PNalUnit const kpSrc); | 98 | bool PrefetchNalHeaderExtSyntax (PWelsDecoderContext pCtx, PNalUnit const kpDst, PNalUnit const kpSrc); |
| 99 | 99 | ||
| 100 | 100 | ||
| 101 | /* | 101 | /* |
| @@ -58,7 +58,7 @@ uint8_t* pMbAllocMap; · 57 unmodified lines | |||
| 58 | int32_t iCountMbNum; | 58 | int32_t iCountMbNum; |
| 59 | int32_t iSliceGroupCount; | 59 | int32_t iSliceGroupCount; |
| 60 | int32_t iSliceGroupType; | 60 | int32_t iSliceGroupType; |
| 61 | bool_t bActiveFlag; | 61 | bool bActiveFlag; |
| 62 | uint8_t uiReserved[3]; // reserved padding bytes | 62 | uint8_t uiReserved[3]; // reserved padding bytes |
| 63 | } SFmo, *PFmo; | 63 | } SFmo, *PFmo; |
| 64 | 64 | ||
| @@ -96,7 +96,7 @@ void_t UninitFmoList (PFmo pFmo, const int32_t kiCnt, const int32_t kiAvail); · 31 unmodified lines | |||
| 96 | * | 96 | * |
| 97 | * \return true - update/insert successfully; false - failed; | 97 | * \return true - update/insert successfully; false - failed; |
| 98 | */ | 98 | */ |
| 99 | bool_t FmoParamUpdate (PFmo pFmo, PSps pSps, PPps pPps, int32_t* pActiveFmoNum); | 99 | bool FmoParamUpdate (PFmo pFmo, PSps pSps, PPps pPps, int32_t* pActiveFmoNum); |
| 100 | 100 | ||
| 101 | /*! | 101 | /*! |
| 102 | * \brief Get successive mb to be processed with given current mb_xy | 102 | * \brief Get successive mb to be processed with given current mb_xy |
| @@ -56,7 +56,7 @@ REMOVE_BASE_FIRST = 2 · 55 unmodified lines | |||
| 56 | void_t WelsResetRefPic (PWelsDecoderContext pCtx); | 56 | void_t WelsResetRefPic (PWelsDecoderContext pCtx); |
| 57 | int32_t WelsInitRefList (PWelsDecoderContext pCtx, int32_t iPoc); | 57 | int32_t WelsInitRefList (PWelsDecoderContext pCtx, int32_t iPoc); |
| 58 | int32_t WelsReorderRefList (PWelsDecoderContext pCtx); | 58 | int32_t WelsReorderRefList (PWelsDecoderContext pCtx); |
| 59 | int32_t WelsMarkAsRef (PWelsDecoderContext pCtx, const bool_t kbRefBaseMarkingFlag); | 59 | int32_t WelsMarkAsRef (PWelsDecoderContext pCtx, const bool kbRefBaseMarkingFlag); |
| 60 | 60 | ||
| 61 | static PPicture WelsDelShortFromList (PRefPic pRefPic, int32_t iFrameNum, ERemoveFlag eRemoveFlag); | 61 | static PPicture WelsDelShortFromList (PRefPic pRefPic, int32_t iFrameNum, ERemoveFlag eRemoveFlag); |
| 62 | static PPicture WelsDelLongFromList (PRefPic pRefPic, uint32_t uiLongTermFrameIdx, ERemoveFlag eRemoveFlag); | 62 | static PPicture WelsDelLongFromList (PRefPic pRefPic, uint32_t uiLongTermFrameIdx, ERemoveFlag eRemoveFlag); |
| @@ -65,7 +65,7 @@ static PPicture WelsDelLongFromListSetUnref (PRefPic pRefPic, uint32_t uiLongTer · 2 unmodified lines | |||
| 65 | 65 | ||
| 66 | static int32_t MMCOBase (PWelsDecoderContext pCtx, PRefBasePicMarking pRefPicBaseMarking); | 66 | static int32_t MMCOBase (PWelsDecoderContext pCtx, PRefBasePicMarking pRefPicBaseMarking); |
| 67 | static int32_t MMCO (PWelsDecoderContext pCtx, PRefPicMarking pRefPicMarking); | 67 | static int32_t MMCO (PWelsDecoderContext pCtx, PRefPicMarking pRefPicMarking); |
| 68 | static int32_t MMCOProcess (PWelsDecoderContext pCtx, uint32_t uiMmcoType, bool_t bRefBasePic, | 68 | static int32_t MMCOProcess (PWelsDecoderContext pCtx, uint32_t uiMmcoType, bool bRefBasePic, |
| 69 | int32_t iShortFrameNum, uint32_t uiLongTermPicNum, int32_t iLongTermFrameIdx, int32_t iMaxLongTermFrameIdx); | 69 | int32_t iShortFrameNum, uint32_t uiLongTermPicNum, int32_t iLongTermFrameIdx, int32_t iMaxLongTermFrameIdx); |
| 70 | static int32_t SlidingWindow (PWelsDecoderContext pCtx); | 70 | static int32_t SlidingWindow (PWelsDecoderContext pCtx); |
| 71 | 71 | ||
| @@ -55,29 +55,29 @@ typedef struct TagNalUnitHeaderExt { · 54 unmodified lines | |||
| 55 | SNalUnitHeader sNalUnitHeader; | 55 | SNalUnitHeader sNalUnitHeader; |
| 56 | 56 | ||
| 57 | // uint8_t reserved_one_bit; | 57 | // uint8_t reserved_one_bit; |
| 58 | bool_t bIdrFlag; | 58 | bool bIdrFlag; |
| 59 | uint8_t uiPriorityId; | 59 | uint8_t uiPriorityId; |
| 60 | int8_t iNoInterLayerPredFlag; // change as int8_t to support 3 values probably in encoder | 60 | int8_t iNoInterLayerPredFlag; // change as int8_t to support 3 values probably in encoder |
| 61 | uint8_t uiDependencyId; | 61 | uint8_t uiDependencyId; |
| 62 | 62 | ||
| 63 | uint8_t uiQualityId; | 63 | uint8_t uiQualityId; |
| 64 | uint8_t uiTemporalId; | 64 | uint8_t uiTemporalId; |
| 65 | bool_t bUseRefBasePicFlag; | 65 | bool bUseRefBasePicFlag; |
| 66 | bool_t bDiscardableFlag; | 66 | bool bDiscardableFlag; |
| 67 | 67 | ||
| 68 | bool_t bOutputFlag; | 68 | bool bOutputFlag; |
| 69 | uint8_t uiReservedThree2Bits; | 69 | uint8_t uiReservedThree2Bits; |
| 70 | // Derived variable(s) | 70 | // Derived variable(s) |
| 71 | uint8_t uiLayerDqId; | 71 | uint8_t uiLayerDqId; |
| 72 | bool_t bNalExtFlag; | 72 | bool bNalExtFlag; |
| 73 | } SNalUnitHeaderExt, *PNalUnitHeaderExt; | 73 | } SNalUnitHeaderExt, *PNalUnitHeaderExt; |
| 74 | 74 | ||
| 75 | /* Prefix NAL Unix syntax, refer to Page 392 in JVT X201wcm */ | 75 | /* Prefix NAL Unix syntax, refer to Page 392 in JVT X201wcm */ |
| 76 | typedef struct TagPrefixNalUnit { | 76 | typedef struct TagPrefixNalUnit { |
| 77 | SRefBasePicMarking sRefPicBaseMarking; | 77 | SRefBasePicMarking sRefPicBaseMarking; |
| 78 | bool_t bStoreRefBasePicFlag; | 78 | bool bStoreRefBasePicFlag; |
| 79 | bool_t bPrefixNalUnitAdditionalExtFlag; | 79 | bool bPrefixNalUnitAdditionalExtFlag; |
| 80 | bool_t bPrefixNalUnitExtFlag; | 80 | bool bPrefixNalUnitExtFlag; |
| 81 | } SPrefixNalUnit, *PPrefixNalUnit; | 81 | } SPrefixNalUnit, *PPrefixNalUnit; |
| 82 | 82 | ||
| 83 | } // namespace WelsDec | 83 | } // namespace WelsDec |
| @@ -53,7 +53,7 @@ union { · 52 unmodified lines | |||
| 53 | SBitStringAux sSliceBitsRead; | 53 | SBitStringAux sSliceBitsRead; |
| 54 | uint8_t* pNalPos; // save the address of slice nal for GPU function | 54 | uint8_t* pNalPos; // save the address of slice nal for GPU function |
| 55 | int32_t iNalLength; // save the nal length for GPU function | 55 | int32_t iNalLength; // save the nal length for GPU function |
| 56 | bool_t bSliceHeaderExtFlag; | 56 | bool bSliceHeaderExtFlag; |
| 57 | } sVclNal; | 57 | } sVclNal; |
| 58 | SPrefixNalUnit sPrefixNal; | 58 | SPrefixNalUnit sPrefixNal; |
| 59 | } sNalData; | 59 | } sNalData; |
| @@ -71,7 +71,7 @@ uint32_t uiActualUnitsNum; // actual number of NAL units belong to current au · 11 unmodified lines | |||
| 71 | uint32_t uiCountUnitsNum; // Count size number of malloced NAL Units in each AU list | 71 | uint32_t uiCountUnitsNum; // Count size number of malloced NAL Units in each AU list |
| 72 | uint32_t uiStartPos; | 72 | uint32_t uiStartPos; |
| 73 | uint32_t uiEndPos; | 73 | uint32_t uiEndPos; |
| 74 | bool_t bCompletedAuFlag; // Indicate whether it is a completed AU | 74 | bool bCompletedAuFlag; // Indicate whether it is a completed AU |
| 75 | } SAccessUnit, *PAccessUnit; | 75 | } SAccessUnit, *PAccessUnit; |
| 76 | 76 | ||
| 77 | } // namespace WelsDec | 77 | } // namespace WelsDec |
| @@ -80,25 +80,25 @@ uint8_t uiChromaArrayType; · 79 unmodified lines | |||
| 80 | uint8_t uiBitDepthLuma; | 80 | uint8_t uiBitDepthLuma; |
| 81 | uint8_t uiBitDepthChroma; | 81 | uint8_t uiBitDepthChroma; |
| 82 | /* TO BE CONTINUE: POC type 1 */ | 82 | /* TO BE CONTINUE: POC type 1 */ |
| 83 | bool_t bDeltaPicOrderAlwaysZeroFlag; | 83 | bool bDeltaPicOrderAlwaysZeroFlag; |
| 84 | bool_t bGapsInFrameNumValueAllowedFlag; | 84 | bool bGapsInFrameNumValueAllowedFlag; |
| 85 | 85 | ||
| 86 | bool_t bFrameMbsOnlyFlag; | 86 | bool bFrameMbsOnlyFlag; |
| 87 | bool_t bMbaffFlag; // MB Adapative Frame Field | 87 | bool bMbaffFlag; // MB Adapative Frame Field |
| 88 | bool_t bDirect8x8InferenceFlag; | 88 | bool bDirect8x8InferenceFlag; |
| 89 | bool_t bFrameCroppingFlag; | 89 | bool bFrameCroppingFlag; |
| 90 | 90 | ||
| 91 | bool_t bVuiParamPresentFlag; | 91 | bool bVuiParamPresentFlag; |
| 92 | // bool_t bTimingInfoPresentFlag; | 92 | // bool bTimingInfoPresentFlag; |
| 93 | // bool_t bFixedFrameRateFlag; | 93 | // bool bFixedFrameRateFlag; |
| 94 | bool_t bConstraintSet0Flag; | 94 | bool bConstraintSet0Flag; |
| 95 | bool_t bConstraintSet1Flag; | 95 | bool bConstraintSet1Flag; |
| 96 | bool_t bConstraintSet2Flag; | 96 | bool bConstraintSet2Flag; |
| 97 | bool_t bConstraintSet3Flag; | 97 | bool bConstraintSet3Flag; |
| 98 | bool_t bSeparateColorPlaneFlag; | 98 | bool bSeparateColorPlaneFlag; |
| 99 | bool_t bQpPrimeYZeroTransfBypassFlag; | 99 | bool bQpPrimeYZeroTransfBypassFlag; |
| 100 | bool_t bSeqScalingMatrixPresentFlag; | 100 | bool bSeqScalingMatrixPresentFlag; |
| 101 | bool_t bSeqScalingListPresentFlag[12]; | 101 | bool bSeqScalingListPresentFlag[12]; |
| 102 | const SLevelLimits *pSLevelLimits; | 102 | const SLevelLimits *pSLevelLimits; |
| 103 | } SSps, *PSps; | 103 | } SSps, *PSps; |
| 104 | 104 | ||
| @@ -111,8 +111,8 @@ const SLevelLimits *pSLevelLimits; · 6 unmodified lines | |||
| 111 | // int32_t iAlphaTransparentValue; | 111 | // int32_t iAlphaTransparentValue; |
| 112 | 112 | ||
| 113 | // uint8_t uiBitDepthAux; | 113 | // uint8_t uiBitDepthAux; |
| 114 | // bool_t bAlphaIncrFlag; | 114 | // bool bAlphaIncrFlag; |
| 115 | // bool_t bAdditionalExtFlag; | 115 | // bool bAdditionalExtFlag; |
| 116 | //}SSpsExt, *PSpsExt; | 116 | //}SSpsExt, *PSpsExt; |
| 117 | 117 | ||
| 118 | /* Sequence Parameter Set extension syntax, refer to Page 391 in JVT X201wcm */ | 118 | /* Sequence Parameter Set extension syntax, refer to Page 391 in JVT X201wcm */ |
| @@ -124,19 +124,19 @@ uint8_t uiChromaPhaseXPlus1Flag; · 5 unmodified lines | |||
| 124 | uint8_t uiChromaPhaseYPlus1; | 124 | uint8_t uiChromaPhaseYPlus1; |
| 125 | uint8_t uiSeqRefLayerChromaPhaseXPlus1Flag; | 125 | uint8_t uiSeqRefLayerChromaPhaseXPlus1Flag; |
| 126 | uint8_t uiSeqRefLayerChromaPhaseYPlus1; | 126 | uint8_t uiSeqRefLayerChromaPhaseYPlus1; |
| 127 | bool_t bInterLayerDeblockingFilterCtrlPresentFlag; | 127 | bool bInterLayerDeblockingFilterCtrlPresentFlag; |
| 128 | bool_t bSeqTCoeffLevelPredFlag; | 128 | bool bSeqTCoeffLevelPredFlag; |
| 129 | bool_t bAdaptiveTCoeffLevelPredFlag; | 129 | bool bAdaptiveTCoeffLevelPredFlag; |
| 130 | bool_t bSliceHeaderRestrictionFlag; | 130 | bool bSliceHeaderRestrictionFlag; |
| 131 | } SSpsSvcExt, *PSpsSvcExt; | 131 | } SSpsSvcExt, *PSpsSvcExt; |
| 132 | 132 | ||
| 133 | /* Subset sequence parameter set syntax, refer to Page 391 in JVT X201wcm */ | 133 | /* Subset sequence parameter set syntax, refer to Page 391 in JVT X201wcm */ |
| 134 | typedef struct TagSubsetSps { | 134 | typedef struct TagSubsetSps { |
| 135 | SSps sSps; | 135 | SSps sSps; |
| 136 | SSpsSvcExt sSpsSvcExt; | 136 | SSpsSvcExt sSpsSvcExt; |
| 137 | bool_t bSvcVuiParamPresentFlag; | 137 | bool bSvcVuiParamPresentFlag; |
| 138 | bool_t bAdditionalExtension2Flag; | 138 | bool bAdditionalExtension2Flag; |
| 139 | bool_t bAdditionalExtension2DataFlag; | 139 | bool bAdditionalExtension2DataFlag; |
| 140 | } SSubsetSps, *PSubsetSps; | 140 | } SSubsetSps, *PSubsetSps; |
| 141 | 141 | ||
| 142 | /* Picture parameter set syntax, refer to Page 59 in JVT X201wcm */ | 142 | /* Picture parameter set syntax, refer to Page 59 in JVT X201wcm */ |
| @@ -164,15 +164,15 @@ int32_t iPicInitQp; · 21 unmodified lines | |||
| 164 | int32_t iPicInitQs; | 164 | int32_t iPicInitQs; |
| 165 | int32_t iChromaQpIndexOffset; | 165 | int32_t iChromaQpIndexOffset; |
| 166 | 166 | ||
| 167 | bool_t bEntropyCodingModeFlag; | 167 | bool bEntropyCodingModeFlag; |
| 168 | bool_t bPicOrderPresentFlag; | 168 | bool bPicOrderPresentFlag; |
| 169 | /* slice_group_map_type = 3, 4 or 5 */ | 169 | /* slice_group_map_type = 3, 4 or 5 */ |
| 170 | bool_t bSliceGroupChangeDirectionFlag; | 170 | bool bSliceGroupChangeDirectionFlag; |
| 171 | bool_t bDeblockingFilterControlPresentFlag; | 171 | bool bDeblockingFilterControlPresentFlag; |
| 172 | 172 | ||
| 173 | bool_t bConstainedIntraPredFlag; | 173 | bool bConstainedIntraPredFlag; |
| 174 | bool_t bRedundantPicCntPresentFlag; | 174 | bool bRedundantPicCntPresentFlag; |
| 175 | bool_t bWeightedPredFlag; | 175 | bool bWeightedPredFlag; |
| 176 | uint8_t uiWeightedBipredIdc; | 176 | uint8_t uiWeightedBipredIdc; |
| 177 | 177 | ||
| 178 | } SPps, *PPps; | 178 | } SPps, *PPps; |
| @@ -58,16 +58,16 @@ int32_t iHeightInPixel;// picture height in pixel · 57 unmodified lines | |||
| 58 | int32_t iFramePoc; // frame POC | 58 | int32_t iFramePoc; // frame POC |
| 59 | 59 | ||
| 60 | /*******************************sef_definition for misc use****************************/ | 60 | /*******************************sef_definition for misc use****************************/ |
| 61 | bool_t bUsedAsRef; //for ref pic management | 61 | bool bUsedAsRef; //for ref pic management |
| 62 | bool_t bIsLongRef; // long term reference frame flag //for ref pic management | 62 | bool bIsLongRef; // long term reference frame flag //for ref pic management |
| 63 | uint8_t uiRefCount; | 63 | uint8_t uiRefCount; |
| 64 | bool_t bAvailableFlag; // indicate whether it is available in this picture memory block. | 64 | bool bAvailableFlag; // indicate whether it is available in this picture memory block. |
| 65 | 65 | ||
| 66 | /*******************************for future use****************************/ | 66 | /*******************************for future use****************************/ |
| 67 | uint8_t uiTemporalId; | 67 | uint8_t uiTemporalId; |
| 68 | uint8_t uiSpatialId; | 68 | uint8_t uiSpatialId; |
| 69 | uint8_t uiQualityId; | 69 | uint8_t uiQualityId; |
| 70 | bool_t bRefBaseFlag; | 70 | bool bRefBaseFlag; |
| 71 | 71 | ||
| 72 | int32_t iFrameNum; // frame number //for ref pic management | 72 | int32_t iFrameNum; // frame number //for ref pic management |
| 73 | int32_t iLongTermFrameIdx; //id for long term ref pic | 73 | int32_t iLongTermFrameIdx; //id for long term ref pic |
| @@ -49,7 +49,7 @@ · 48 unmodified lines | |||
| 49 | 49 | ||
| 50 | namespace WelsDec { | 50 | namespace WelsDec { |
| 51 | 51 | ||
| 52 | void_t WelsFillRecNeededMbInfo (PWelsDecoderContext pCtx, bool_t bOutput, PDqLayer pCurLayer); | 52 | void_t WelsFillRecNeededMbInfo (PWelsDecoderContext pCtx, bool bOutput, PDqLayer pCurLayer); |
| 53 | 53 | ||
| 54 | int32_t RecI4x4Mb (int32_t iMBXY, PWelsDecoderContext pCtx, int16_t* pScoeffLevel, PDqLayer pDqLayer); | 54 | int32_t RecI4x4Mb (int32_t iMBXY, PWelsDecoderContext pCtx, int16_t* pScoeffLevel, PDqLayer pDqLayer); |
| 55 | 55 | ||
| @@ -51,7 +51,7 @@ typedef struct TagRefPicListReorderSyntax { · 50 unmodified lines | |||
| 51 | uint16_t uiLongTermPicNum; | 51 | uint16_t uiLongTermPicNum; |
| 52 | uint16_t uiReorderingOfPicNumsIdc; | 52 | uint16_t uiReorderingOfPicNumsIdc; |
| 53 | } sReorderingSyn[LIST_A][MAX_REF_PIC_COUNT]; | 53 | } sReorderingSyn[LIST_A][MAX_REF_PIC_COUNT]; |
| 54 | bool_t bRefPicListReorderingFlag[LIST_A]; | 54 | bool bRefPicListReorderingFlag[LIST_A]; |
| 55 | } SRefPicListReorderSyn, *PRefPicListReorderSyn; | 55 | } SRefPicListReorderSyn, *PRefPicListReorderSyn; |
| 56 | 56 | ||
| 57 | /* | 57 | /* |
| @@ -65,8 +65,8 @@ typedef struct TagPredWeightTabSyntax { · 7 unmodified lines | |||
| 65 | int32_t iLumaOffset[MAX_REF_PIC_COUNT]; | 65 | int32_t iLumaOffset[MAX_REF_PIC_COUNT]; |
| 66 | int32_t iChromaWeight[MAX_REF_PIC_COUNT][2]; | 66 | int32_t iChromaWeight[MAX_REF_PIC_COUNT][2]; |
| 67 | int32_t iChromaOffset[MAX_REF_PIC_COUNT][2]; | 67 | int32_t iChromaOffset[MAX_REF_PIC_COUNT][2]; |
| 68 | bool_t bLumaWeightFlag; | 68 | bool bLumaWeightFlag; |
| 69 | bool_t bChromaWeightFlag; | 69 | bool bChromaWeightFlag; |
| 70 | } sPredList[LIST_A]; | 70 | } sPredList[LIST_A]; |
| 71 | } SPredWeightTabSyn; | 71 | } SPredWeightTabSyn; |
| 72 | 72 | ||
| @@ -81,9 +81,9 @@ typedef struct TagRefPicMarking { · 8 unmodified lines | |||
| 81 | int32_t iMaxLongTermFrameIdx; | 81 | int32_t iMaxLongTermFrameIdx; |
| 82 | } sMmcoRef[MAX_MMCO_COUNT]; | 82 | } sMmcoRef[MAX_MMCO_COUNT]; |
| 83 | 83 | ||
| 84 | bool_t bNoOutputOfPriorPicsFlag; | 84 | bool bNoOutputOfPriorPicsFlag; |
| 85 | bool_t bLongTermRefFlag; | 85 | bool bLongTermRefFlag; |
| 86 | bool_t bAdaptiveRefPicMarkingModeFlag; | 86 | bool bAdaptiveRefPicMarkingModeFlag; |
| 87 | } SRefPicMarking, *PRefPicMarking; | 87 | } SRefPicMarking, *PRefPicMarking; |
| 88 | 88 | ||
| 89 | /* Decode reference base picture marking syntax in Page 396 of JVT X201wcm */ | 89 | /* Decode reference base picture marking syntax in Page 396 of JVT X201wcm */ |
| @@ -95,7 +95,7 @@ typedef struct TagRefBasePicMarkingSyn { · 5 unmodified lines | |||
| 95 | uint32_t uiLongTermPicNum; //should uint32_t, cover larger range of iFrameNum. | 95 | uint32_t uiLongTermPicNum; //should uint32_t, cover larger range of iFrameNum. |
| 96 | } mmco_base[MAX_MMCO_COUNT]; // MAX_REF_PIC for reference picture based on frame | 96 | } mmco_base[MAX_MMCO_COUNT]; // MAX_REF_PIC for reference picture based on frame |
| 97 | 97 | ||
| 98 | bool_t bAdaptiveRefBasePicMarkingModeFlag; | 98 | bool bAdaptiveRefBasePicMarkingModeFlag; |
| 99 | } SRefBasePicMarking, *PRefBasePicMarking; | 99 | } SRefBasePicMarking, *PRefBasePicMarking; |
| 100 | 100 | ||
| 101 | /* Header of slice syntax elements, refer to Page 63 in JVT X201wcm */ | 101 | /* Header of slice syntax elements, refer to Page 63 in JVT X201wcm */ |
| @@ -131,11 +131,11 @@ typedef struct TagSliceHeaders { · 29 unmodified lines | |||
| 131 | 131 | ||
| 132 | uint16_t uiIdrPicId; | 132 | uint16_t uiIdrPicId; |
| 133 | ESliceType eSliceType; | 133 | ESliceType eSliceType; |
| 134 | bool_t bNumRefIdxActiveOverrideFlag; | 134 | bool bNumRefIdxActiveOverrideFlag; |
| 135 | bool_t bFieldPicFlag; //not supported in base profile | 135 | bool bFieldPicFlag; //not supported in base profile |
| 136 | bool_t bBottomFiledFlag; //not supported in base profile | 136 | bool bBottomFiledFlag; //not supported in base profile |
| 137 | uint8_t uiPadding1Byte; | 137 | uint8_t uiPadding1Byte; |
| 138 | bool_t bSpForSwitchFlag; // For SP/SI slices | 138 | bool bSpForSwitchFlag; // For SP/SI slices |
| 139 | int16_t iPadding2Bytes; | 139 | int16_t iPadding2Bytes; |
| 140 | } SSliceHeader, *PSliceHeader; | 140 | } SSliceHeader, *PSliceHeader; |
| 141 | 141 | ||
| @@ -155,18 +155,18 @@ typedef struct TagSliceHeaderExt { · 13 unmodified lines | |||
| 155 | int32_t iScaledRefLayerPicHeightInSampleLuma; | 155 | int32_t iScaledRefLayerPicHeightInSampleLuma; |
| 156 | 156 | ||
| 157 | SRefBasePicMarking sRefBasePicMarking; | 157 | SRefBasePicMarking sRefBasePicMarking; |
| 158 | bool_t bBasePredWeightTableFlag; | 158 | bool bBasePredWeightTableFlag; |
| 159 | bool_t bStoreRefBasePicFlag; | 159 | bool bStoreRefBasePicFlag; |
| 160 | bool_t bConstrainedIntraResamplingFlag; | 160 | bool bConstrainedIntraResamplingFlag; |
| 161 | bool_t bSliceSkipFlag; | 161 | bool bSliceSkipFlag; |
| 162 | 162 | ||
| 163 | bool_t bAdaptiveBaseModeFlag; | 163 | bool bAdaptiveBaseModeFlag; |
| 164 | bool_t bDefaultBaseModeFlag; | 164 | bool bDefaultBaseModeFlag; |
| 165 | bool_t bAdaptiveMotionPredFlag; | 165 | bool bAdaptiveMotionPredFlag; |
| 166 | bool_t bDefaultMotionPredFlag; | 166 | bool bDefaultMotionPredFlag; |
| 167 | bool_t bAdaptiveResidualPredFlag; | 167 | bool bAdaptiveResidualPredFlag; |
| 168 | bool_t bDefaultResidualPredFlag; | 168 | bool bDefaultResidualPredFlag; |
| 169 | bool_t bTCoeffLevelPredFlag; | 169 | bool bTCoeffLevelPredFlag; |
| 170 | uint8_t uiRefLayerChromaPhaseXPlus1Flag; | 170 | uint8_t uiRefLayerChromaPhaseXPlus1Flag; |
| 171 | 171 | ||
| 172 | uint8_t uiRefLayerChromaPhaseYPlus1; | 172 | uint8_t uiRefLayerChromaPhaseYPlus1; |
| @@ -192,7 +192,7 @@ typedef struct TagSlice { · 19 unmodified lines | |||
| 192 | /*slice_data_ext() generate*/ | 192 | /*slice_data_ext() generate*/ |
| 193 | 193 | ||
| 194 | /*******************************misc use****************************/ | 194 | /*******************************misc use****************************/ |
| 195 | bool_t bSliceHeaderExtFlag; // Indicate which slice header is used, avc or ext? | 195 | bool bSliceHeaderExtFlag; // Indicate which slice header is used, avc or ext? |
| 196 | /*************got from other layer for effiency if possible***************/ | 196 | /*************got from other layer for effiency if possible***************/ |
| 197 | /*from lower layer: slice header*/ | 197 | /*from lower layer: slice header*/ |
| 198 | uint8_t eSliceType; | 198 | uint8_t eSliceType; |
| @@ -108,7 +108,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 107 unmodified lines | |||
| 108 | uint8_t* pNal = pSrcRbsp; | 108 | uint8_t* pNal = pSrcRbsp; |
| 109 | int32_t iNalSize = iSrcRbspLen; | 109 | int32_t iNalSize = iSrcRbspLen; |
| 110 | PBitStringAux pBs = NULL; | 110 | PBitStringAux pBs = NULL; |
| 111 | bool_t bExtensionFlag = false; | 111 | bool bExtensionFlag = false; |
| 112 | int32_t iErr = ERR_NONE; | 112 | int32_t iErr = ERR_NONE; |
| 113 | int32_t iBitSize = 0; | 113 | int32_t iBitSize = 0; |
| 114 | 114 | ||
| @@ -362,7 +362,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 247 unmodified lines | |||
| 362 | } | 362 | } |
| 363 | 363 | ||
| 364 | 364 | ||
| 365 | bool_t CheckAccessUnitBoundaryExt (PNalUnitHeaderExt pLastNalHdrExt, PNalUnitHeaderExt pCurNalHeaderExt, | 365 | bool CheckAccessUnitBoundaryExt (PNalUnitHeaderExt pLastNalHdrExt, PNalUnitHeaderExt pCurNalHeaderExt, |
| 366 | PSliceHeader pLastSliceHeader, PSliceHeader pCurSliceHeader) { | 366 | PSliceHeader pLastSliceHeader, PSliceHeader pCurSliceHeader) { |
| 367 | const PSps kpSps = pCurSliceHeader->pSps; | 367 | const PSps kpSps = pCurSliceHeader->pSps; |
| 368 | 368 | ||
| @@ -421,7 +421,7 @@ bool_t CheckAccessUnitBoundaryExt (PNalUnitHeaderExt pLastNalHdrExt, PNalUnitHea · 52 unmodified lines | |||
| 421 | } | 421 | } |
| 422 | 422 | ||
| 423 | 423 | ||
| 424 | bool_t CheckAccessUnitBoundary (const PNalUnit kpCurNal, const PNalUnit kpLastNal, const PSps kpSps) { | 424 | bool CheckAccessUnitBoundary (const PNalUnit kpCurNal, const PNalUnit kpLastNal, const PSps kpSps) { |
| 425 | const PNalUnitHeaderExt kpLastNalHeaderExt = &kpLastNal->sNalHeaderExt; | 425 | const PNalUnitHeaderExt kpLastNalHeaderExt = &kpLastNal->sNalHeaderExt; |
| 426 | const PNalUnitHeaderExt kpCurNalHeaderExt = &kpCurNal->sNalHeaderExt; | 426 | const PNalUnitHeaderExt kpCurNalHeaderExt = &kpCurNal->sNalHeaderExt; |
| 427 | const SSliceHeader* kpLastSliceHeader = &kpLastNal->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader; | 427 | const SSliceHeader* kpLastSliceHeader = &kpLastNal->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader; |
| @@ -560,7 +560,7 @@ int32_t ParseNonVclNal (PWelsDecoderContext pCtx, uint8_t* pRbsp, const int32_t · 132 unmodified lines | |||
| 560 | } | 560 | } |
| 561 | 561 | ||
| 562 | void_t ParseRefBasePicMarking (PBitStringAux pBs, PRefBasePicMarking pRefBasePicMarking) { | 562 | void_t ParseRefBasePicMarking (PBitStringAux pBs, PRefBasePicMarking pRefBasePicMarking) { |
| 563 | const bool_t kbAdaptiveMarkingModeFlag = !!BsGetOneBit (pBs); | 563 | const bool kbAdaptiveMarkingModeFlag = !!BsGetOneBit (pBs); |
| 564 | pRefBasePicMarking->bAdaptiveRefBasePicMarkingModeFlag = kbAdaptiveMarkingModeFlag; | 564 | pRefBasePicMarking->bAdaptiveRefBasePicMarkingModeFlag = kbAdaptiveMarkingModeFlag; |
| 565 | if (kbAdaptiveMarkingModeFlag) { | 565 | if (kbAdaptiveMarkingModeFlag) { |
| 566 | int32_t iIdx = 0; | 566 | int32_t iIdx = 0; |
| @@ -670,7 +670,7 @@ static const SLevelLimits g_kSLevelLimits[17] = { · 103 unmodified lines | |||
| 670 | {2073600, 36864, 184320, 240000, 240000, -2048, 2047, 2, 16} /* level 5.2 */ | 670 | {2073600, 36864, 184320, 240000, 240000, -2048, 2047, 2, 16} /* level 5.2 */ |
| 671 | }; | 671 | }; |
| 672 | 672 | ||
| 673 | const SLevelLimits *GetLevelLimits(int32_t iLevelIdx, bool_t bConstraint3) { | 673 | const SLevelLimits *GetLevelLimits(int32_t iLevelIdx, bool bConstraint3) { |
| 674 | switch (iLevelIdx) { | 674 | switch (iLevelIdx) { |
| 675 | case 10: | 675 | case 10: |
| 676 | return &g_kSLevelLimits[0]; | 676 | return &g_kSLevelLimits[0]; |
| @@ -737,8 +737,8 @@ int32_t ParseSps (PWelsDecoderContext pCtx, PBitStringAux pBsAux, int32_t* pPicW · 60 unmodified lines | |||
| 737 | ProfileIdc uiProfileIdc; | 737 | ProfileIdc uiProfileIdc; |
| 738 | uint8_t uiLevelIdc; | 738 | uint8_t uiLevelIdc; |
| 739 | int32_t iSpsId; | 739 | int32_t iSpsId; |
| 740 | bool_t bConstraintSetFlags[6] = { false }; | 740 | bool bConstraintSetFlags[6] = { false }; |
| 741 | const bool_t kbUseSubsetFlag = IS_SUBSET_SPS_NAL (pNalHead->eNalUnitType); | 741 | const bool kbUseSubsetFlag = IS_SUBSET_SPS_NAL (pNalHead->eNalUnitType); |
| 742 | 742 | ||
| 743 | 743 | ||
| 744 | if (kbUseSubsetFlag) { // SubsetSps | 744 | if (kbUseSubsetFlag) { // SubsetSps |
| @@ -252,8 +252,8 @@ int32_t DeblockingAvailableNoInterlayer (PDqLayer pCurDqLayer, int32_t iFilterId · 251 unmodified lines | |||
| 252 | int32_t iMbY = pCurDqLayer->iMbY; | 252 | int32_t iMbY = pCurDqLayer->iMbY; |
| 253 | int32_t iMbX = pCurDqLayer->iMbX; | 253 | int32_t iMbX = pCurDqLayer->iMbX; |
| 254 | int32_t iMbXy = pCurDqLayer->iMbXyIndex; | 254 | int32_t iMbXy = pCurDqLayer->iMbXyIndex; |
| 255 | bool_t bLeftFlag = FALSE; | 255 | bool bLeftFlag = FALSE; |
| 256 | bool_t bTopFlag = FALSE; | 256 | bool bTopFlag = FALSE; |
| 257 | 257 | ||
| 258 | if (2 == iFilterIdc) { | 258 | if (2 == iFilterIdc) { |
| 259 | bLeftFlag = (iMbX > 0) && (pCurDqLayer->pSliceIdc[iMbXy] == pCurDqLayer->pSliceIdc[iMbXy - 1]); | 259 | bLeftFlag = (iMbX > 0) && (pCurDqLayer->pSliceIdc[iMbXy] == pCurDqLayer->pSliceIdc[iMbXy - 1]); |
| @@ -234,7 +234,7 @@ void_t WelsLumaDcDequantIdct (int16_t* pBlock, int32_t iQp) { · 233 unmodified lines | |||
| 234 | #undef STRIDE | 234 | #undef STRIDE |
| 235 | } | 235 | } |
| 236 | 236 | ||
| 237 | int32_t WelsMbIntraPredictionConstruction (PWelsDecoderContext pCtx, PDqLayer pCurLayer, bool_t bOutput) { | 237 | int32_t WelsMbIntraPredictionConstruction (PWelsDecoderContext pCtx, PDqLayer pCurLayer, bool bOutput) { |
| 238 | //seems IPCM should not enter this path | 238 | //seems IPCM should not enter this path |
| 239 | int32_t iMbXy = pCurLayer->iMbXyIndex; | 239 | int32_t iMbXy = pCurLayer->iMbXyIndex; |
| 240 | 240 | ||
| @@ -351,7 +351,7 @@ void_t WelsChromaDcIdct (int16_t* pBlock) { · 110 unmodified lines | |||
| 351 | pBlk[iStride1] = (iE - iB) >> 1; | 351 | pBlk[iStride1] = (iE - iB) >> 1; |
| 352 | } | 352 | } |
| 353 | 353 | ||
| 354 | int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool_t bFirstSliceInLayer, PNalUnit pNalCur) { | 354 | int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool bFirstSliceInLayer, PNalUnit pNalCur) { |
| 355 | PDqLayer pCurLayer = pCtx->pCurDqLayer; | 355 | PDqLayer pCurLayer = pCtx->pCurDqLayer; |
| 356 | PFmo pFmo = pCtx->pFmo; | 356 | PFmo pFmo = pCtx->pFmo; |
| 357 | int32_t i, iRet; | 357 | int32_t i, iRet; |
| @@ -177,11 +177,11 @@ void_t WelsDecoderDefaults (PWelsDecoderContext pCtx) { · 176 unmodified lines | |||
| 177 | * get size of reference picture list in target layer incoming, = (iNumRefFrames x 2) | 177 | * get size of reference picture list in target layer incoming, = (iNumRefFrames x 2) |
| 178 | */ | 178 | */ |
| 179 | static inline int32_t GetTargetRefListSize (PWelsDecoderContext pCtx) { | 179 | static inline int32_t GetTargetRefListSize (PWelsDecoderContext pCtx) { |
| 180 | bool_t* pSubsetSpsAvail = &pCtx->bSubspsAvailFlags[0]; | 180 | bool* pSubsetSpsAvail = &pCtx->bSubspsAvailFlags[0]; |
| 181 | bool_t* pSpsAvail = &pCtx->bSpsAvailFlags[0]; | 181 | bool* pSpsAvail = &pCtx->bSpsAvailFlags[0]; |
| 182 | int32_t iSubsetIdx = -1; | 182 | int32_t iSubsetIdx = -1; |
| 183 | int32_t iSpsIdx = -1; | 183 | int32_t iSpsIdx = -1; |
| 184 | bool_t bExistSubsetSps = false; | 184 | bool bExistSubsetSps = false; |
| 185 | int32_t bExistSps = false; | 185 | int32_t bExistSps = false; |
| 186 | int32_t iPos = MAX_SPS_COUNT - 1; | 186 | int32_t iPos = MAX_SPS_COUNT - 1; |
| 187 | int32_t iNumRefFrames = 0; | 187 | int32_t iNumRefFrames = 0; |
| @@ -238,7 +238,7 @@ int32_t WelsRequestMem (PWelsDecoderContext pCtx, const int32_t kiMbWidth, const · 50 unmodified lines | |||
| 238 | 238 | ||
| 239 | int32_t iListIdx = 0; //, mb_blocks = 0; | 239 | int32_t iListIdx = 0; //, mb_blocks = 0; |
| 240 | int32_t iPicQueueSize = 0; // adaptive size of picture queue, = (pSps->iNumRefFrames x 2) | 240 | int32_t iPicQueueSize = 0; // adaptive size of picture queue, = (pSps->iNumRefFrames x 2) |
| 241 | bool_t bNeedChangePicQueue = true; | 241 | bool bNeedChangePicQueue = true; |
| 242 | 242 | ||
| 243 | WELS_VERIFY_RETURN_IF (ERR_INFO_INVALID_PARAM, (NULL == pCtx || kiPicWidth <= 0 || kiPicHeight <= 0)) | 243 | WELS_VERIFY_RETURN_IF (ERR_INFO_INVALID_PARAM, (NULL == pCtx || kiPicWidth <= 0 || kiPicHeight <= 0)) |
| 244 | 244 | ||
| @@ -105,7 +105,7 @@ static inline int32_t DecodeFrameConstruction (PWelsDecoderContext pCtx, uint8_t · 104 unmodified lines | |||
| 105 | return 0; | 105 | return 0; |
| 106 | } | 106 | } |
| 107 | 107 | ||
| 108 | inline bool_t CheckSliceNeedReconstruct (int16_t iCurDid, int16_t iCurQid, bool_t bStoreRefBasePicFlag, | 108 | inline bool CheckSliceNeedReconstruct (int16_t iCurDid, int16_t iCurQid, bool bStoreRefBasePicFlag, |
| 109 | uint8_t uiDidMax, uint8_t uiLayerDqId, uint8_t uiTargetDqId) { | 109 | uint8_t uiDidMax, uint8_t uiLayerDqId, uint8_t uiTargetDqId) { |
| 110 | return ((iCurDid == uiDidMax) && (iCurQid == BASE_QUALITY_ID) && (bStoreRefBasePicFlag)) // store base | 110 | return ((iCurDid == uiDidMax) && (iCurQid == BASE_QUALITY_ID) && (bStoreRefBasePicFlag)) // store base |
| 111 | || (uiLayerDqId == uiTargetDqId); // target layer | 111 | || (uiLayerDqId == uiTargetDqId); // target layer |
| @@ -201,7 +201,7 @@ int32_t ParseRefPicListReordering (PBitStringAux pBs, PSliceHeader pSh) { · 89 unmodified lines | |||
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | int32_t ParseDecRefPicMarking (PWelsDecoderContext pCtx, PBitStringAux pBs, PSliceHeader pSh, PSps pSps, | 203 | int32_t ParseDecRefPicMarking (PWelsDecoderContext pCtx, PBitStringAux pBs, PSliceHeader pSh, PSps pSps, |
| 204 | const bool_t kbIdrFlag) { | 204 | const bool kbIdrFlag) { |
| 205 | PRefPicMarking const kpRefMarking = &pSh->sRefMarking; | 205 | PRefPicMarking const kpRefMarking = &pSh->sRefMarking; |
| 206 | 206 | ||
| 207 | if (kbIdrFlag) { | 207 | if (kbIdrFlag) { |
| @@ -238,7 +238,7 @@ int32_t ParseDecRefPicMarking (PWelsDecoderContext pCtx, PBitStringAux pBs, PSli · 30 unmodified lines | |||
| 238 | return ERR_NONE; | 238 | return ERR_NONE; |
| 239 | } | 239 | } |
| 240 | 240 | ||
| 241 | bool_t FillDefaultSliceHeaderExt (PSliceHeaderExt pShExt, PNalUnitHeaderExt pNalExt) { | 241 | bool FillDefaultSliceHeaderExt (PSliceHeaderExt pShExt, PNalUnitHeaderExt pNalExt) { |
| 242 | if (pShExt == NULL || pNalExt == NULL) | 242 | if (pShExt == NULL || pNalExt == NULL) |
| 243 | return false; | 243 | return false; |
| 244 | 244 | ||
| @@ -392,7 +392,7 @@ int32_t CheckPpsId (PWelsDecoderContext pCtx, PPps* ppPps, uint32_t uiPpsId) { · 147 unmodified lines | |||
| 392 | } | 392 | } |
| 393 | 393 | ||
| 394 | int32_t CheckSpsId (PWelsDecoderContext pCtx, PSubsetSps* ppSubsetSps, PSps* ppSps, int32_t iSpsId, | 394 | int32_t CheckSpsId (PWelsDecoderContext pCtx, PSubsetSps* ppSubsetSps, PSps* ppSps, int32_t iSpsId, |
| 395 | bool_t bExtensionFlag) { | 395 | bool bExtensionFlag) { |
| 396 | PSps pSpsList = pCtx->sSpsBuffer; | 396 | PSps pSpsList = pCtx->sSpsBuffer; |
| 397 | PSubsetSps pSubspsList = pCtx->sSubsetSpsBuffer; | 397 | PSubsetSps pSubspsList = pCtx->sSubsetSpsBuffer; |
| 398 | 398 | ||
| @@ -455,7 +455,7 @@ int32_t CheckSpsId (PWelsDecoderContext pCtx, PSubsetSps* ppSubsetSps, PSps* ppS · 56 unmodified lines | |||
| 455 | * decode_slice_header_avc | 455 | * decode_slice_header_avc |
| 456 | * Parse slice header of bitstream in avc for storing data structure | 456 | * Parse slice header of bitstream in avc for storing data structure |
| 457 | */ | 457 | */ |
| 458 | int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, const bool_t kbExtensionFlag) { | 458 | int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, const bool kbExtensionFlag) { |
| 459 | PNalUnit const kpCurNal = pCtx->pAccessUnitList->pNalUnitsList[pCtx->pAccessUnitList->uiAvailUnitsNum - 1]; | 459 | PNalUnit const kpCurNal = pCtx->pAccessUnitList->pNalUnitsList[pCtx->pAccessUnitList->uiAvailUnitsNum - 1]; |
| 460 | 460 | ||
| 461 | PNalUnitHeaderExt pNalHeaderExt = NULL; | 461 | PNalUnitHeaderExt pNalHeaderExt = NULL; |
| @@ -469,8 +469,8 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co · 7 unmodified lines | |||
| 469 | int32_t iRet = ERR_NONE; | 469 | int32_t iRet = ERR_NONE; |
| 470 | uint8_t uiSliceType = 0; | 470 | uint8_t uiSliceType = 0; |
| 471 | uint8_t uiQualityId = BASE_QUALITY_ID; | 471 | uint8_t uiQualityId = BASE_QUALITY_ID; |
| 472 | bool_t bIdrFlag = false; | 472 | bool bIdrFlag = false; |
| 473 | bool_t bSgChangeCycleInvolved = false; // involved slice group change cycle ? | 473 | bool bSgChangeCycleInvolved = false; // involved slice group change cycle ? |
| 474 | 474 | ||
| 475 | if (kpCurNal == NULL) { | 475 | if (kpCurNal == NULL) { |
| 476 | return ERR_INFO_OUT_OF_MEMORY; | 476 | return ERR_INFO_OUT_OF_MEMORY; |
| @@ -484,7 +484,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co · 7 unmodified lines | |||
| 484 | 484 | ||
| 485 | if (pSliceHeadExt) { | 485 | if (pSliceHeadExt) { |
| 486 | SRefBasePicMarking sBaseMarking; | 486 | SRefBasePicMarking sBaseMarking; |
| 487 | const bool_t kbStoreRefBaseFlag = pSliceHeadExt->bStoreRefBasePicFlag; | 487 | const bool kbStoreRefBaseFlag = pSliceHeadExt->bStoreRefBasePicFlag; |
| 488 | memcpy (&sBaseMarking, &pSliceHeadExt->sRefBasePicMarking, sizeof (SRefBasePicMarking)); //confirmed_safe_unsafe_usage | 488 | memcpy (&sBaseMarking, &pSliceHeadExt->sRefBasePicMarking, sizeof (SRefBasePicMarking)); //confirmed_safe_unsafe_usage |
| 489 | memset (pSliceHeadExt, 0, sizeof (SSliceHeaderExt)); | 489 | memset (pSliceHeadExt, 0, sizeof (SSliceHeaderExt)); |
| 490 | pSliceHeadExt->bStoreRefBasePicFlag = kbStoreRefBaseFlag; | 490 | pSliceHeadExt->bStoreRefBasePicFlag = kbStoreRefBaseFlag; |
| @@ -619,7 +619,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co · 128 unmodified lines | |||
| 619 | if (kbExtensionFlag) { | 619 | if (kbExtensionFlag) { |
| 620 | uiQualityId = pNalHeaderExt->uiQualityId; | 620 | uiQualityId = pNalHeaderExt->uiQualityId; |
| 621 | } else if (uiSliceType == P_SLICE || uiSliceType == SP_SLICE || uiSliceType == B_SLICE) { | 621 | } else if (uiSliceType == P_SLICE || uiSliceType == SP_SLICE || uiSliceType == B_SLICE) { |
| 622 | const bool_t kbBipredFlag = (B_SLICE == uiSliceType); | 622 | const bool kbBipredFlag = (B_SLICE == uiSliceType); |
| 623 | if (kbBipredFlag) { | 623 | if (kbBipredFlag) { |
| 624 | WelsLog (pCtx, WELS_LOG_WARNING, "ParseSliceHeaderSyntaxs(): kbBipredFlag = 1 not supported.\n"); | 624 | WelsLog (pCtx, WELS_LOG_WARNING, "ParseSliceHeaderSyntaxs(): kbBipredFlag = 1 not supported.\n"); |
| 625 | return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_BIPRED); | 625 | return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_BIPRED); |
| @@ -820,7 +820,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co · 194 unmodified lines | |||
| 820 | * pSrc: mark as decoded prefix NAL | 820 | * pSrc: mark as decoded prefix NAL |
| 821 | * ppDst: succeeded VCL NAL based AVC (I/P Slice) | 821 | * ppDst: succeeded VCL NAL based AVC (I/P Slice) |
| 822 | */ | 822 | */ |
| 823 | bool_t PrefetchNalHeaderExtSyntax (PWelsDecoderContext pCtx, PNalUnit const kppDst, PNalUnit const kpSrc) { | 823 | bool PrefetchNalHeaderExtSyntax (PWelsDecoderContext pCtx, PNalUnit const kppDst, PNalUnit const kpSrc) { |
| 824 | PNalUnitHeaderExt pNalHdrExtD = NULL, pNalHdrExtS = NULL; | 824 | PNalUnitHeaderExt pNalHdrExtD = NULL, pNalHdrExtS = NULL; |
| 825 | PSliceHeaderExt pShExtD = NULL; | 825 | PSliceHeaderExt pShExtD = NULL; |
| 826 | PPrefixNalUnit pPrefixS = NULL; | 826 | PPrefixNalUnit pPrefixS = NULL; |
| @@ -1297,7 +1297,7 @@ void_t RefineIdxNoInterLayerPred (PAccessUnit pCurAu, int32_t* pIdxNoInterLayerP · 470 unmodified lines | |||
| 1297 | int32_t iCurNalDependId, iCurNalQualityId, iCurNalTId, iCurNalFrameNum, iCurNalPoc, iCurNalFirstMb, iCurIdx, | 1297 | int32_t iCurNalDependId, iCurNalQualityId, iCurNalTId, iCurNalFrameNum, iCurNalPoc, iCurNalFirstMb, iCurIdx, |
| 1298 | iFinalIdxNoInterLayerPred; | 1298 | iFinalIdxNoInterLayerPred; |
| 1299 | 1299 | ||
| 1300 | bool_t bMultiSliceFind = false; | 1300 | bool bMultiSliceFind = false; |
| 1301 | 1301 | ||
| 1302 | iFinalIdxNoInterLayerPred = 0; | 1302 | iFinalIdxNoInterLayerPred = 0; |
| 1303 | iCurIdx = *pIdxNoInterLayerPred - 1; | 1303 | iCurIdx = *pIdxNoInterLayerPred - 1; |
| @@ -1332,7 +1332,7 @@ void_t RefineIdxNoInterLayerPred (PAccessUnit pCurAu, int32_t* pIdxNoInterLayerP · 28 unmodified lines | |||
| 1332 | } | 1332 | } |
| 1333 | } | 1333 | } |
| 1334 | 1334 | ||
| 1335 | bool_t CheckPocOfCurValidNalUnits (PAccessUnit pCurAu, int32_t pIdxNoInterLayerPred) { | 1335 | bool CheckPocOfCurValidNalUnits (PAccessUnit pCurAu, int32_t pIdxNoInterLayerPred) { |
| 1336 | int32_t iEndIdx = pCurAu->uiEndPos; | 1336 | int32_t iEndIdx = pCurAu->uiEndPos; |
| 1337 | int32_t iCurAuPoc = | 1337 | int32_t iCurAuPoc = |
| 1338 | pCurAu->pNalUnitsList[pIdxNoInterLayerPred]->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.iPicOrderCntLsb; | 1338 | pCurAu->pNalUnitsList[pIdxNoInterLayerPred]->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.iPicOrderCntLsb; |
| @@ -1347,7 +1347,7 @@ bool_t CheckPocOfCurValidNalUnits (PAccessUnit pCurAu, int32_t pIdxNoInterLayerP · 8 unmodified lines | |||
| 1347 | return true; | 1347 | return true; |
| 1348 | } | 1348 | } |
| 1349 | 1349 | ||
| 1350 | bool_t CheckIntegrityNalUnitsList (PWelsDecoderContext pCtx) { | 1350 | bool CheckIntegrityNalUnitsList (PWelsDecoderContext pCtx) { |
| 1351 | PAccessUnit pCurAu = pCtx->pAccessUnitList; | 1351 | PAccessUnit pCurAu = pCtx->pAccessUnitList; |
| 1352 | const int32_t kiEndPos = pCurAu->uiEndPos; | 1352 | const int32_t kiEndPos = pCurAu->uiEndPos; |
| 1353 | int32_t iIdxNoInterLayerPred = 0; | 1353 | int32_t iIdxNoInterLayerPred = 0; |
| @@ -1391,7 +1391,7 @@ bool_t CheckIntegrityNalUnitsList (PWelsDecoderContext pCtx) { · 37 unmodified lines | |||
| 1391 | pCurAu->pNalUnitsList[pCurAu->uiEndPos]->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.iMbHeight << 4; | 1391 | pCurAu->pNalUnitsList[pCurAu->uiEndPos]->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader.iMbHeight << 4; |
| 1392 | } else { //P_SLICE | 1392 | } else { //P_SLICE |
| 1393 | //step 1: search uiDependencyId equal to pCtx->cur_seq_interval_target_dependency_id | 1393 | //step 1: search uiDependencyId equal to pCtx->cur_seq_interval_target_dependency_id |
| 1394 | bool_t bGetDependId = false; | 1394 | bool bGetDependId = false; |
| 1395 | int32_t iIdxDependId = 0; | 1395 | int32_t iIdxDependId = 0; |
| 1396 | 1396 | ||
| 1397 | iIdxDependId = kiEndPos; | 1397 | iIdxDependId = kiEndPos; |
| @@ -1406,7 +1406,7 @@ bool_t CheckIntegrityNalUnitsList (PWelsDecoderContext pCtx) { · 8 unmodified lines | |||
| 1406 | 1406 | ||
| 1407 | //step 2: switch according to whether or not find the index of pNalUnit whose uiDependencyId equal to iCurSeqIntervalTargetDependId | 1407 | //step 2: switch according to whether or not find the index of pNalUnit whose uiDependencyId equal to iCurSeqIntervalTargetDependId |
| 1408 | if (bGetDependId) { //get the index of pNalUnit whose uiDependencyId equal to iCurSeqIntervalTargetDependId | 1408 | if (bGetDependId) { //get the index of pNalUnit whose uiDependencyId equal to iCurSeqIntervalTargetDependId |
| 1409 | bool_t bGetNoInterPredFront = false; | 1409 | bool bGetNoInterPredFront = false; |
| 1410 | //step 2a: search iNoInterLayerPredFlag [0....iIdxDependId] | 1410 | //step 2a: search iNoInterLayerPredFlag [0....iIdxDependId] |
| 1411 | iIdxNoInterLayerPred = iIdxDependId; | 1411 | iIdxNoInterLayerPred = iIdxDependId; |
| 1412 | while (iIdxNoInterLayerPred >= 0) { | 1412 | while (iIdxNoInterLayerPred >= 0) { |
| @@ -1650,7 +1650,7 @@ void_t WelsDqLayerDecodeStart (PWelsDecoderContext pCtx, PNalUnit pCurNal, PSps · 237 unmodified lines | |||
| 1650 | } | 1650 | } |
| 1651 | } | 1651 | } |
| 1652 | 1652 | ||
| 1653 | int32_t InitRefPicList (PWelsDecoderContext pCtx, const uint8_t kuiNRi, const bool_t kbFirstSlice, int32_t iPoc) { | 1653 | int32_t InitRefPicList (PWelsDecoderContext pCtx, const uint8_t kuiNRi, const bool kbFirstSlice, int32_t iPoc) { |
| 1654 | int32_t iRet = ERR_NONE; | 1654 | int32_t iRet = ERR_NONE; |
| 1655 | if (kbFirstSlice) | 1655 | if (kbFirstSlice) |
| 1656 | iRet = WelsInitRefList (pCtx, iPoc); | 1656 | iRet = WelsInitRefList (pCtx, iPoc); |
| @@ -1718,7 +1718,7 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, int3 · 61 unmodified lines | |||
| 1718 | int16_t iLastIdD = -1, iLastIdQ = -1; | 1718 | int16_t iLastIdD = -1, iLastIdQ = -1; |
| 1719 | int16_t iCurrIdD = 0, iCurrIdQ = 0; | 1719 | int16_t iCurrIdD = 0, iCurrIdQ = 0; |
| 1720 | uint8_t uiNalRefIdc = 0; | 1720 | uint8_t uiNalRefIdc = 0; |
| 1721 | bool_t bFreshSliceAvailable = | 1721 | bool bFreshSliceAvailable = |
| 1722 | true; // Another fresh slice comingup for given dq layer, for multiple slices in case of header parts of slices sometimes loss over error-prone channels, 8/14/2008 | 1722 | true; // Another fresh slice comingup for given dq layer, for multiple slices in case of header parts of slices sometimes loss over error-prone channels, 8/14/2008 |
| 1723 | PPicture pStoreBasePic = NULL; | 1723 | PPicture pStoreBasePic = NULL; |
| 1724 | 1724 | ||
| @@ -1774,7 +1774,7 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, int3 · 49 unmodified lines | |||
| 1774 | * Loop decoding for slices (even FMO and/ multiple slices) within a dq layer | 1774 | * Loop decoding for slices (even FMO and/ multiple slices) within a dq layer |
| 1775 | */ | 1775 | */ |
| 1776 | while (iIdx <= iEndIdx) { | 1776 | while (iIdx <= iEndIdx) { |
| 1777 | bool_t bReconstructSlice; | 1777 | bool bReconstructSlice; |
| 1778 | iCurrIdQ = pNalCur->sNalHeaderExt.uiQualityId; | 1778 | iCurrIdQ = pNalCur->sNalHeaderExt.uiQualityId; |
| 1779 | iCurrIdD = pNalCur->sNalHeaderExt.uiDependencyId; | 1779 | iCurrIdD = pNalCur->sNalHeaderExt.uiDependencyId; |
| 1780 | pSh = &pNalCur->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader; | 1780 | pSh = &pNalCur->sNalData.sVclNal.sSliceHeaderExt.sSliceHeader; |
| @@ -1823,7 +1823,7 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, int3 · 42 unmodified lines | |||
| 1823 | InitDqLayerInfo (dq_cur, &pLayerInfo, pNalCur, pCtx->pDec); | 1823 | InitDqLayerInfo (dq_cur, &pLayerInfo, pNalCur, pCtx->pDec); |
| 1824 | 1824 | ||
| 1825 | if (!dq_cur->sLayerInfo.pSps->bGapsInFrameNumValueAllowedFlag) { | 1825 | if (!dq_cur->sLayerInfo.pSps->bGapsInFrameNumValueAllowedFlag) { |
| 1826 | const bool_t kbIdrFlag = dq_cur->sLayerInfo.sNalHeaderExt.bIdrFlag | 1826 | const bool kbIdrFlag = dq_cur->sLayerInfo.sNalHeaderExt.bIdrFlag |
| 1827 | || (dq_cur->sLayerInfo.sNalHeaderExt.sNalUnitHeader.eNalUnitType == NAL_UNIT_CODED_SLICE_IDR); | 1827 | || (dq_cur->sLayerInfo.sNalHeaderExt.sNalUnitHeader.eNalUnitType == NAL_UNIT_CODED_SLICE_IDR); |
| 1828 | // Subclause 8.2.5.2 Decoding process for gaps in frame_num | 1828 | // Subclause 8.2.5.2 Decoding process for gaps in frame_num |
| 1829 | if (!kbIdrFlag && | 1829 | if (!kbIdrFlag && |
| @@ -144,7 +144,7 @@ void_t ExpandReferencingPicture (PPicture pPic, PExpandPictureFunc pExpLuma, PEx · 143 unmodified lines | |||
| 144 | pExpLuma (pPicY, pPic->iLinesize[0], kiWidthY, kiHeightY); | 144 | pExpLuma (pPicY, pPic->iLinesize[0], kiWidthY, kiHeightY); |
| 145 | if (kiWidthUV >= 16) { | 145 | if (kiWidthUV >= 16) { |
| 146 | // fix coding picture size as 16x16 issues 7/27/2010 | 146 | // fix coding picture size as 16x16 issues 7/27/2010 |
| 147 | const bool_t kbChrAligned = /*(kiWidthUV >= 16) && */ ((kiWidthUV & 0x0F) == 0); // chroma planes: (16+kiWidthUV) & 15 | 147 | const bool kbChrAligned = /*(kiWidthUV >= 16) && */ ((kiWidthUV & 0x0F) == 0); // chroma planes: (16+kiWidthUV) & 15 |
| 148 | pExpChroma[kbChrAligned] (pPicCb, pPic->iLinesize[1], kiWidthUV, kiHeightUV); | 148 | pExpChroma[kbChrAligned] (pPicCb, pPic->iLinesize[1], kiWidthUV, kiHeightUV); |
| 149 | pExpChroma[kbChrAligned] (pPicCr, pPic->iLinesize[2], kiWidthUV, kiHeightUV); | 149 | pExpChroma[kbChrAligned] (pPicCr, pPic->iLinesize[2], kiWidthUV, kiHeightUV); |
| 150 | } else { | 150 | } else { |
| @@ -119,7 +119,7 @@ static inline int32_t FmoGenerateSliceGroup (PFmo pFmo, const PPps kpPps, const · 118 unmodified lines | |||
| 119 | const int32_t kiMbHeight) { | 119 | const int32_t kiMbHeight) { |
| 120 | int32_t iNumMb = 0; | 120 | int32_t iNumMb = 0; |
| 121 | int32_t iErr = 0; | 121 | int32_t iErr = 0; |
| 122 | bool_t bResolutionChanged = false; | 122 | bool bResolutionChanged = false; |
| 123 | 123 | ||
| 124 | // the cases we would not like | 124 | // the cases we would not like |
| 125 | WELS_VERIFY_RETURN_IF (1, (NULL == pFmo || NULL == kpPps)) | 125 | WELS_VERIFY_RETURN_IF (1, (NULL == pFmo || NULL == kpPps)) |
| @@ -238,7 +238,7 @@ void_t UninitFmoList (PFmo pFmo, const int32_t kiCnt, const int32_t kiAvail) { · 112 unmodified lines | |||
| 238 | * | 238 | * |
| 239 | * \return true - changed or not initialized yet; false - not change at all | 239 | * \return true - changed or not initialized yet; false - not change at all |
| 240 | */ | 240 | */ |
| 241 | bool_t FmoParamSetsChanged (PFmo pFmo, const int32_t kiCountNumMb, const int32_t kiSliceGroupType, | 241 | bool FmoParamSetsChanged (PFmo pFmo, const int32_t kiCountNumMb, const int32_t kiSliceGroupType, |
| 242 | const int32_t kiSliceGroupCount) { | 242 | const int32_t kiSliceGroupCount) { |
| 243 | WELS_VERIFY_RETURN_IF (false, (NULL == pFmo)) | 243 | WELS_VERIFY_RETURN_IF (false, (NULL == pFmo)) |
| 244 | 244 | ||
| @@ -258,7 +258,7 @@ bool_t FmoParamSetsChanged (PFmo pFmo, const int32_t kiCountNumMb, const int32_t · 13 unmodified lines | |||
| 258 | * | 258 | * |
| 259 | * \return true - update/insert successfully; false - failed; | 259 | * \return true - update/insert successfully; false - failed; |
| 260 | */ | 260 | */ |
| 261 | bool_t FmoParamUpdate (PFmo pFmo, PSps pSps, PPps pPps, int32_t* pActiveFmoNum) { | 261 | bool FmoParamUpdate (PFmo pFmo, PSps pSps, PPps pPps, int32_t* pActiveFmoNum) { |
| 262 | const uint32_t kuiMbWidth = pSps->iMbWidth; | 262 | const uint32_t kuiMbWidth = pSps->iMbWidth; |
| 263 | const uint32_t kuiMbHeight = pSps->iMbHeight; | 263 | const uint32_t kuiMbHeight = pSps->iMbHeight; |
| 264 | 264 | ||
| @@ -330,4 +330,4 @@ MB_XY_T FmoNextMb (PFmo pFmo, const MB_XY_T kiMbXy) { · 65 unmodified lines | |||
| 330 | return iNextMb; | 330 | return iNextMb; |
| 331 | } | 331 | } |
| 332 | 332 | ||
| 333 | } // namespace WelsDec | 333 | } // namespace WelsDec |
| @@ -653,4 +653,4 @@ void_t WelsI16x16LumaPredDcNA_c (uint8_t* pPred, const int32_t kiStride) { · 652 unmodified lines | |||
| 653 | } while (i-- > 0); | 653 | } while (i-- > 0); |
| 654 | } | 654 | } |
| 655 | 655 | ||
| 656 | } // namespace WelsDec | 656 | } // namespace WelsDec |
| @@ -92,7 +92,7 @@ void_t WelsResetRefPic (PWelsDecoderContext pCtx) { · 91 unmodified lines | |||
| 92 | */ | 92 | */ |
| 93 | int32_t WelsInitRefList (PWelsDecoderContext pCtx, int32_t iPoc) { | 93 | int32_t WelsInitRefList (PWelsDecoderContext pCtx, int32_t iPoc) { |
| 94 | int32_t i, j, iCount = 0; | 94 | int32_t i, j, iCount = 0; |
| 95 | const bool_t kbUseRefBasePicFlag = pCtx->pCurDqLayer->bUseRefBasePicFlag; | 95 | const bool kbUseRefBasePicFlag = pCtx->pCurDqLayer->bUseRefBasePicFlag; |
| 96 | PPicture* ppShoreRefList = pCtx->sRefPic.pShortRefList[LIST_0]; | 96 | PPicture* ppShoreRefList = pCtx->sRefPic.pShortRefList[LIST_0]; |
| 97 | PPicture* ppLongRefList = pCtx->sRefPic.pLongRefList[LIST_0]; | 97 | PPicture* ppLongRefList = pCtx->sRefPic.pLongRefList[LIST_0]; |
| 98 | memset (pCtx->sRefPic.pRefList[LIST_0], 0, MAX_REF_PIC_COUNT * sizeof (PPicture)); | 98 | memset (pCtx->sRefPic.pRefList[LIST_0], 0, MAX_REF_PIC_COUNT * sizeof (PPicture)); |
| @@ -215,12 +215,12 @@ int32_t WelsReorderRefList (PWelsDecoderContext pCtx) { · 116 unmodified lines | |||
| 215 | return ERR_NONE; | 215 | return ERR_NONE; |
| 216 | } | 216 | } |
| 217 | 217 | ||
| 218 | int32_t WelsMarkAsRef (PWelsDecoderContext pCtx, const bool_t kbRefBaseMarkingFlag) { | 218 | int32_t WelsMarkAsRef (PWelsDecoderContext pCtx, const bool kbRefBaseMarkingFlag) { |
| 219 | PRefPic pRefPic = &pCtx->sRefPic; | 219 | PRefPic pRefPic = &pCtx->sRefPic; |
| 220 | PRefPicMarking pRefPicMarking = pCtx->pCurDqLayer->pRefPicMarking; | 220 | PRefPicMarking pRefPicMarking = pCtx->pCurDqLayer->pRefPicMarking; |
| 221 | PRefBasePicMarking pRefPicBaseMarking = pCtx->pCurDqLayer->pRefPicBaseMarking; | 221 | PRefBasePicMarking pRefPicBaseMarking = pCtx->pCurDqLayer->pRefPicBaseMarking; |
| 222 | PAccessUnit pCurAU = pCtx->pAccessUnitList; | 222 | PAccessUnit pCurAU = pCtx->pAccessUnitList; |
| 223 | bool_t bIsIDRAU = FALSE; | 223 | bool bIsIDRAU = FALSE; |
| 224 | uint32_t j; | 224 | uint32_t j; |
| 225 | 225 | ||
| 226 | int32_t iRet = ERR_NONE; | 226 | int32_t iRet = ERR_NONE; |
| @@ -322,7 +322,7 @@ static int32_t MMCO (PWelsDecoderContext pCtx, PRefPicMarking pRefPicMarking) { · 95 unmodified lines | |||
| 322 | 322 | ||
| 323 | return ERR_NONE; | 323 | return ERR_NONE; |
| 324 | } | 324 | } |
| 325 | static int32_t MMCOProcess (PWelsDecoderContext pCtx, uint32_t uiMmcoType, bool_t bRefBasePic, | 325 | static int32_t MMCOProcess (PWelsDecoderContext pCtx, uint32_t uiMmcoType, bool bRefBasePic, |
| 326 | int32_t iShortFrameNum, uint32_t uiLongTermPicNum , int32_t iLongTermFrameIdx, int32_t iMaxLongTermFrameIdx) { | 326 | int32_t iShortFrameNum, uint32_t uiLongTermPicNum , int32_t iLongTermFrameIdx, int32_t iMaxLongTermFrameIdx) { |
| 327 | PRefPic pRefPic = &pCtx->sRefPic; | 327 | PRefPic pRefPic = &pCtx->sRefPic; |
| 328 | PPicture pPic = NULL; | 328 | PPicture pPic = NULL; |
| @@ -551,4 +551,4 @@ static int32_t MarkAsLongTerm (PRefPic pRefPic, int32_t iFrameNum, int32_t iLong · 222 unmodified lines | |||
| 551 | return iRet; | 551 | return iRet; |
| 552 | } | 552 | } |
| 553 | 553 | ||
| 554 | } // namespace WelsDec | 554 | } // namespace WelsDec |
| @@ -143,4 +143,4 @@ PNalUnit MemGetNextNal (PAccessUnit* ppAu) { · 142 unmodified lines | |||
| 143 | return pNu; | 143 | return pNu; |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | } // namespace WelsDec | 146 | } // namespace WelsDec |
| @@ -44,7 +44,7 @@ · 43 unmodified lines | |||
| 44 | 44 | ||
| 45 | namespace WelsDec { | 45 | namespace WelsDec { |
| 46 | void_t PredPSkipMvFromNeighbor (PDqLayer pCurLayer, int16_t iMvp[2]) { | 46 | void_t PredPSkipMvFromNeighbor (PDqLayer pCurLayer, int16_t iMvp[2]) { |
| 47 | bool_t bTopAvail, bLeftTopAvail, bRightTopAvail, bLeftAvail; | 47 | bool bTopAvail, bLeftTopAvail, bRightTopAvail, bLeftAvail; |
| 48 | 48 | ||
| 49 | int32_t iCurSliceIdc, iTopSliceIdc, iLeftTopSliceIdc, iRightTopSliceIdc, iLeftSliceIdc; | 49 | int32_t iCurSliceIdc, iTopSliceIdc, iLeftTopSliceIdc, iRightTopSliceIdc, iLeftSliceIdc; |
| 50 | int32_t iLeftTopType, iRightTopType, iTopType, iLeftType; | 50 | int32_t iLeftTopType, iRightTopType, iTopType, iLeftType; |
| @@ -369,4 +369,4 @@ void_t UpdateP8x16MotionInfo (PDqLayer pCurDqLayer, int16_t iMotionVector[LIST_A · 318 unmodified lines | |||
| 369 | } | 369 | } |
| 370 | } | 370 | } |
| 371 | 371 | ||
| 372 | } // namespace WelsDec | 372 | } // namespace WelsDec |
| @@ -398,7 +398,7 @@ int32_t CheckIntra16x16PredMode (uint8_t uiSampleAvail, int8_t* pMode) { · 397 unmodified lines | |||
| 398 | *pMode = I16_PRED_DC_128; | 398 | *pMode = I16_PRED_DC_128; |
| 399 | } | 399 | } |
| 400 | } else { | 400 | } else { |
| 401 | bool_t bModeAvail = CHECK_I16_MODE (*pMode, iLeftAvail, iTopAvail, bLeftTopAvail); | 401 | bool bModeAvail = CHECK_I16_MODE (*pMode, iLeftAvail, iTopAvail, bLeftTopAvail); |
| 402 | if (0 == bModeAvail) { | 402 | if (0 == bModeAvail) { |
| 403 | return ERR_INFO_INVALID_I16x16_PRED_MODE; | 403 | return ERR_INFO_INVALID_I16x16_PRED_MODE; |
| 404 | } | 404 | } |
| @@ -423,7 +423,7 @@ int32_t CheckIntraChromaPredMode (uint8_t uiSampleAvail, int8_t* pMode) { · 18 unmodified lines | |||
| 423 | *pMode = C_PRED_DC_128; | 423 | *pMode = C_PRED_DC_128; |
| 424 | } | 424 | } |
| 425 | } else { | 425 | } else { |
| 426 | bool_t bModeAvail = CHECK_CHROMA_MODE (*pMode, iLeftAvail, iTopAvail, bLeftTopAvail); | 426 | bool bModeAvail = CHECK_CHROMA_MODE (*pMode, iLeftAvail, iTopAvail, bLeftTopAvail); |
| 427 | if (0 == bModeAvail) { | 427 | if (0 == bModeAvail) { |
| 428 | return ERR_INFO_INVALID_I_CHROMA_PRED_MODE; | 428 | return ERR_INFO_INVALID_I_CHROMA_PRED_MODE; |
| 429 | } | 429 | } |
| @@ -455,7 +455,7 @@ int32_t CheckIntra4x4PredMode (int32_t* pSampleAvail, int8_t* pMode, int32_t iIn · 25 unmodified lines | |||
| 455 | iFinalMode = I4_PRED_DC_128; | 455 | iFinalMode = I4_PRED_DC_128; |
| 456 | } | 456 | } |
| 457 | } else { | 457 | } else { |
| 458 | bool_t bModeAvail = CHECK_I4_MODE (*pMode, iLeftAvail, iTopAvail, bLeftTopAvail); | 458 | bool bModeAvail = CHECK_I4_MODE (*pMode, iLeftAvail, iTopAvail, bLeftTopAvail); |
| 459 | if (0 == bModeAvail) { | 459 | if (0 == bModeAvail) { |
| 460 | return ERR_INVALID_INTRA4X4_MODE; | 460 | return ERR_INVALID_INTRA4X4_MODE; |
| 461 | } | 461 | } |
| @@ -486,7 +486,7 @@ void_t BsEndCavlc (PBitStringAux pBs) { · 24 unmodified lines | |||
| 486 | 486 | ||
| 487 | // return: used bits | 487 | // return: used bits |
| 488 | static int32_t CavlcGetTrailingOnesAndTotalCoeff (uint8_t& uiTotalCoeff, uint8_t& uiTrailingOnes, | 488 | static int32_t CavlcGetTrailingOnesAndTotalCoeff (uint8_t& uiTotalCoeff, uint8_t& uiTrailingOnes, |
| 489 | SReadBitsCache* pBitsCache, SVlcTable* pVlcTable, bool_t bChromaDc, int8_t nC) { | 489 | SReadBitsCache* pBitsCache, SVlcTable* pVlcTable, bool bChromaDc, int8_t nC) { |
| 490 | const uint8_t* kpVlcTableMoreBitsCountList[3] = {g_kuiVlcTableMoreBitsCount0, g_kuiVlcTableMoreBitsCount1, g_kuiVlcTableMoreBitsCount2}; | 490 | const uint8_t* kpVlcTableMoreBitsCountList[3] = {g_kuiVlcTableMoreBitsCount0, g_kuiVlcTableMoreBitsCount1, g_kuiVlcTableMoreBitsCount2}; |
| 491 | int32_t iUsedBits = 0; | 491 | int32_t iUsedBits = 0; |
| 492 | int32_t iIndexVlc, iIndexValue, iNcMapIdx; | 492 | int32_t iIndexVlc, iIndexValue, iNcMapIdx; |
| @@ -587,7 +587,7 @@ static int32_t CavlcGetLevelVal (int32_t iLevel[16], SReadBitsCache* pBitsCache, · 94 unmodified lines | |||
| 587 | } | 587 | } |
| 588 | 588 | ||
| 589 | static int32_t CavlcGetTotalZeros (int32_t& iZerosLeft, SReadBitsCache* pBitsCache, uint8_t uiTotalCoeff, | 589 | static int32_t CavlcGetTotalZeros (int32_t& iZerosLeft, SReadBitsCache* pBitsCache, uint8_t uiTotalCoeff, |
| 590 | SVlcTable* pVlcTable, bool_t bChromaDc) { | 590 | SVlcTable* pVlcTable, bool bChromaDc) { |
| 591 | int32_t iCount, iUsedBits = 0; | 591 | int32_t iCount, iUsedBits = 0; |
| 592 | const uint8_t* kpBitNumMap; | 592 | const uint8_t* kpBitNumMap; |
| 593 | uint32_t uiValue; | 593 | uint32_t uiValue; |
| @@ -673,7 +673,7 @@ int32_t WelsResidualBlockCavlc (SVlcTable* pVlcTable, uint8_t* pNonZeroCountCach · 79 unmodified lines | |||
| 673 | int32_t iUsedBits = 0; | 673 | int32_t iUsedBits = 0; |
| 674 | int32_t iCurIdx = pBs->iIndex; | 674 | int32_t iCurIdx = pBs->iIndex; |
| 675 | uint8_t* pBuf = ((uint8_t*)pBs->pStartBuf) + (iCurIdx >> 3); | 675 | uint8_t* pBuf = ((uint8_t*)pBs->pStartBuf) + (iCurIdx >> 3); |
| 676 | bool_t bChromaDc = (CHROMA_DC == iResidualProperty); | 676 | bool bChromaDc = (CHROMA_DC == iResidualProperty); |
| 677 | uint8_t bChroma = (bChromaDc || CHROMA_AC == iResidualProperty); | 677 | uint8_t bChroma = (bChromaDc || CHROMA_AC == iResidualProperty); |
| 678 | SReadBitsCache sReadBitsCache; | 678 | SReadBitsCache sReadBitsCache; |
| 679 | 679 | ||
| @@ -149,4 +149,4 @@ PPicture PrefetchPic (PPicBuff pPicBuf) { · 148 unmodified lines | |||
| 149 | return pPic; | 149 | return pPic; |
| 150 | } | 150 | } |
| 151 | 151 | ||
| 152 | } // namespace WelsDec | 152 | } // namespace WelsDec |
| @@ -44,7 +44,7 @@ · 43 unmodified lines | |||
| 44 | 44 | ||
| 45 | namespace WelsDec { | 45 | namespace WelsDec { |
| 46 | 46 | ||
| 47 | void_t WelsFillRecNeededMbInfo (PWelsDecoderContext pCtx, bool_t bOutput, PDqLayer pCurLayer) { | 47 | void_t WelsFillRecNeededMbInfo (PWelsDecoderContext pCtx, bool bOutput, PDqLayer pCurLayer) { |
| 48 | PPicture pCurPic = pCtx->pDec; | 48 | PPicture pCurPic = pCtx->pDec; |
| 49 | int32_t iLumaStride = pCurPic->iLinesize[0]; | 49 | int32_t iLumaStride = pCurPic->iLinesize[0]; |
| 50 | int32_t iChromaStride = pCurPic->iLinesize[1]; | 50 | int32_t iChromaStride = pCurPic->iLinesize[1]; |
| @@ -235,7 +235,7 @@ static inline void_t BaseMC (sMCRefMember* pMCRefMem, int32_t iXOffset, int32_t · 184 unmodified lines | |||
| 235 | uint8_t* pDstY = pMCRefMem->pDstY; | 235 | uint8_t* pDstY = pMCRefMem->pDstY; |
| 236 | uint8_t* pDstU = pMCRefMem->pDstU; | 236 | uint8_t* pDstU = pMCRefMem->pDstU; |
| 237 | uint8_t* pDstV = pMCRefMem->pDstV; | 237 | uint8_t* pDstV = pMCRefMem->pDstV; |
| 238 | bool_t bExpand = false; | 238 | bool bExpand = false; |
| 239 | 239 | ||
| 240 | ENFORCE_STACK_ALIGN_1D (uint8_t, uiExpandBuf, (PADDING_LENGTH + 6) * (PADDING_LENGTH + 6), 16); | 240 | ENFORCE_STACK_ALIGN_1D (uint8_t, uiExpandBuf, (PADDING_LENGTH + 6) * (PADDING_LENGTH + 6), 16); |
| 241 | 241 | ||