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 | 189 | PAccessUnit pCurAu = pCtx->pAccessUnitList; |
| 190 | 190 | uint32_t uiAvailNalNum = pCurAu->uiAvailUnitsNum; |
| 191 | − ForceClearCurrentNal (pCurAu); | |
| 192 | 191 | |
| 193 | − if (uiAvailNalNum > 1) { | |
| 194 | − pCurAu->uiEndPos = uiAvailNalNum - 2; | |
| 195 | − pCtx->bAuReadyFlag = true; | |
| 192 | + if (uiAvailNalNum > 0) { | |
| 193 | + pCurAu->uiEndPos = uiAvailNalNum - 1; | |
| 194 | + if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) { | |
| 195 | + pCtx->bAuReadyFlag = true; | |
| 196 | + } | |
| 196 | 197 | } |
| 198 | + pCurNal->sNalData.sPrefixNal.bPrefixNalCorrectFlag = false; | |
| 197 | 199 | return NULL; |
| 198 | 200 | } |
| 199 | 201 | |
| @@ -204,12 +206,14 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 4 unmodified lines | ||
| 204 | 206 | pCurNal->sNalHeaderExt.uiQualityId, pCurNal->sNalHeaderExt.bUseRefBasePicFlag); |
| 205 | 207 | PAccessUnit pCurAu = pCtx->pAccessUnitList; |
| 206 | 208 | uint32_t uiAvailNalNum = pCurAu->uiAvailUnitsNum; |
| 207 | − ForceClearCurrentNal (pCurAu); | |
| 208 | 209 | |
| 209 | − if (uiAvailNalNum > 1) { | |
| 210 | − pCurAu->uiEndPos = uiAvailNalNum - 2; | |
| 211 | − pCtx->bAuReadyFlag = true; | |
| 210 | + if (uiAvailNalNum > 0) { | |
| 211 | + pCurAu->uiEndPos = uiAvailNalNum - 1; | |
| 212 | + if (pCtx->iErrorConMethod == ERROR_CON_DISABLE) { | |
| 213 | + pCtx->bAuReadyFlag = true; | |
| 214 | + } | |
| 212 | 215 | } |
| 216 | + pCurNal->sNalData.sPrefixNal.bPrefixNalCorrectFlag = false; | |
| 213 | 217 | pCtx->iErrorCode |= dsInvalidArgument; |
| 214 | 218 | return NULL; |
| 215 | 219 | } |
| @@ -229,6 +233,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 13 unmodified lines | ||
| 229 | 233 | InitBits (pBs, pNal, iBitSize); |
| 230 | 234 | |
| 231 | 235 | ParsePrefixNalUnit (pCtx, pBs); |
| 236 | + pCurNal->sNalData.sPrefixNal.bPrefixNalCorrectFlag = true; | |
| 232 | 237 | |
| 233 | 238 | break; |
| 234 | 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 | 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 | 304 | pCurNal->sNalHeaderExt.bIdrFlag = (NAL_UNIT_CODED_SLICE_IDR == pNalUnitHeader->eNalUnitType) ? true : |