Showing the changes to codec/decoder/core/src/au_parser.cpp (1 of 4 files). Show all
Unified · Split
| @@ -188,12 +188,14 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 187 unmodified lines | |||
| 188 | 188 | ||
| 189 | PAccessUnit pCurAu = pCtx->pAccessUnitList; | 189 | PAccessUnit pCurAu = pCtx->pAccessUnitList; |
| 190 | uint32_t uiAvailNalNum = pCurAu->uiAvailUnitsNum; | 190 | uint32_t uiAvailNalNum = pCurAu->uiAvailUnitsNum; |
| 191 | ForceClearCurrentNal (pCurAu); | ||
| 192 | 191 | ||
| 193 | if (uiAvailNalNum > 1) { | 192 | if (uiAvailNalNum > 0) { |
| 194 | pCurAu->uiEndPos = uiAvailNalNum - 2; | 193 | pCurAu->uiEndPos = uiAvailNalNum - 1; |
| 195 | pCtx->bAuReadyFlag = true; | 194 | if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) { |
| 195 | pCtx->bAuReadyFlag = true; | ||
| 196 | } | ||
| 196 | } | 197 | } |
| 198 | pCurNal->sNalData.sPrefixNal.bPrefixNalCorrectFlag = false; | ||
| 197 | return NULL; | 199 | return NULL; |
| 198 | } | 200 | } |
| 199 | 201 | ||
| @@ -204,12 +206,14 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 4 unmodified lines | |||
| 204 | pCurNal->sNalHeaderExt.uiQualityId, pCurNal->sNalHeaderExt.bUseRefBasePicFlag); | 206 | pCurNal->sNalHeaderExt.uiQualityId, pCurNal->sNalHeaderExt.bUseRefBasePicFlag); |
| 205 | PAccessUnit pCurAu = pCtx->pAccessUnitList; | 207 | PAccessUnit pCurAu = pCtx->pAccessUnitList; |
| 206 | uint32_t uiAvailNalNum = pCurAu->uiAvailUnitsNum; | 208 | uint32_t uiAvailNalNum = pCurAu->uiAvailUnitsNum; |
| 207 | ForceClearCurrentNal (pCurAu); | ||
| 208 | 209 | ||
| 209 | if (uiAvailNalNum > 1) { | 210 | if (uiAvailNalNum > 0) { |
| 210 | pCurAu->uiEndPos = uiAvailNalNum - 2; | 211 | pCurAu->uiEndPos = uiAvailNalNum - 1; |
| 211 | pCtx->bAuReadyFlag = true; | 212 | if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) { |
| 213 | pCtx->bAuReadyFlag = true; | ||
| 214 | } | ||
| 212 | } | 215 | } |
| 216 | pCurNal->sNalData.sPrefixNal.bPrefixNalCorrectFlag = false; | ||
| 213 | pCtx->iErrorCode |= dsInvalidArgument; | 217 | pCtx->iErrorCode |= dsInvalidArgument; |
| 214 | return NULL; | 218 | return NULL; |
| 215 | } | 219 | } |
| @@ -229,6 +233,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 13 unmodified lines | |||
| 229 | InitBits (pBs, pNal, iBitSize); | 233 | InitBits (pBs, pNal, iBitSize); |
| 230 | 234 | ||
| 231 | ParsePrefixNalUnit (pCtx, pBs); | 235 | ParsePrefixNalUnit (pCtx, pBs); |
| 236 | pCurNal->sNalData.sPrefixNal.bPrefixNalCorrectFlag = true; | ||
| 232 | 237 | ||
| 233 | break; | 238 | break; |
| 234 | case NAL_UNIT_CODED_SLICE_EXT: | 239 | case NAL_UNIT_CODED_SLICE_EXT: |
| @@ -291,7 +296,9 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 56 unmodified lines | |||
| 291 | 296 | ||
| 292 | 297 | ||
| 293 | if (NAL_UNIT_PREFIX == pCtx->sPrefixNal.sNalHeaderExt.sNalUnitHeader.eNalUnitType) { | 298 | if (NAL_UNIT_PREFIX == pCtx->sPrefixNal.sNalHeaderExt.sNalUnitHeader.eNalUnitType) { |
| 294 | PrefetchNalHeaderExtSyntax (pCtx, pCurNal, &pCtx->sPrefixNal); | 299 | if (pCtx->sPrefixNal.sNalData.sPrefixNal.bPrefixNalCorrectFlag) { |
| 300 | PrefetchNalHeaderExtSyntax (pCtx, pCurNal, &pCtx->sPrefixNal); | ||
| 301 | } | ||
| 295 | } | 302 | } |
| 296 | 303 | ||
| 297 | pCurNal->sNalHeaderExt.bIdrFlag = (NAL_UNIT_CODED_SLICE_IDR == pNalUnitHeader->eNalUnitType) ? true : | 304 | pCurNal->sNalHeaderExt.bIdrFlag = (NAL_UNIT_CODED_SLICE_IDR == pNalUnitHeader->eNalUnitType) ? true : |