History

fix new sequence&EC order, and prefix parse bug

huili2 committed 12 years ago

Commit 5e6ef171 parent c27c02b4 files · +20 −14Browse files

Showing the changes to codec/decoder/core/src/au_parser.cpp (1 of 4 files). Show all

Unified · Split

codec/decoder/core/src/au_parser.cpp+16−9
@@ -188,12 +188,14 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 187 unmodified lines
188188
189189 PAccessUnit pCurAu = pCtx->pAccessUnitList;
190190 uint32_t uiAvailNalNum = pCurAu->uiAvailUnitsNum;
191− ForceClearCurrentNal (pCurAu);
192191
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+ }
196197 }
198+ pCurNal->sNalData.sPrefixNal.bPrefixNalCorrectFlag = false;
197199 return NULL;
198200 }
199201
@@ -204,12 +206,14 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 4 unmodified lines
204206 pCurNal->sNalHeaderExt.uiQualityId, pCurNal->sNalHeaderExt.bUseRefBasePicFlag);
205207 PAccessUnit pCurAu = pCtx->pAccessUnitList;
206208 uint32_t uiAvailNalNum = pCurAu->uiAvailUnitsNum;
207− ForceClearCurrentNal (pCurAu);
208209
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+ }
212215 }
216+ pCurNal->sNalData.sPrefixNal.bPrefixNalCorrectFlag = false;
213217 pCtx->iErrorCode |= dsInvalidArgument;
214218 return NULL;
215219 }
@@ -229,6 +233,7 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 13 unmodified lines
229233 InitBits (pBs, pNal, iBitSize);
230234
231235 ParsePrefixNalUnit (pCtx, pBs);
236+ pCurNal->sNalData.sPrefixNal.bPrefixNalCorrectFlag = true;
232237
233238 break;
234239 case NAL_UNIT_CODED_SLICE_EXT:
@@ -291,7 +296,9 @@ uint8_t* ParseNalHeader (PWelsDecoderContext pCtx, SNalUnitHeader* pNalUnitHeade · 56 unmodified lines
291296
292297
293298 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+ }
295302 }
296303
297304 pCurNal->sNalHeaderExt.bIdrFlag = (NAL_UNIT_CODED_SLICE_IDR == pNalUnitHeader->eNalUnitType) ? true :

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t