History

add dec memory check

huili2 committed 11 years ago

Commit 3cb417f1 parent 9ecc67112 files · +196 −141Browse files

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

Unified · Split

codec/decoder/core/src/decoder_core.cpp+83−68
@@ -456,27 +456,29 @@ int32_t InitBsBuffer (PWelsDecoderContext pCtx) { · 455 unmodified lines
456 if (pCtx == NULL)456 if (pCtx == NULL)
457 return ERR_INFO_INVALID_PTR;457 return ERR_INFO_INVALID_PTR;
458 458
459 CMemoryAlign* pMa = pCtx->pMemAlign;
460
459 pCtx->iMaxBsBufferSizeInByte = MIN_ACCESS_UNIT_CAPACITY * MAX_BUFFERED_NUM;461 pCtx->iMaxBsBufferSizeInByte = MIN_ACCESS_UNIT_CAPACITY * MAX_BUFFERED_NUM;
460 if ((pCtx->sRawData.pHead = static_cast<uint8_t*> (WelsMallocz (pCtx->iMaxBsBufferSizeInByte,462 if ((pCtx->sRawData.pHead = static_cast<uint8_t*> (pMa->WelsMallocz (pCtx->iMaxBsBufferSizeInByte,
461 "pCtx->sRawData.pHead"))) == NULL) {463 "pCtx->sRawData.pHead"))) == NULL) {
462 return ERR_INFO_OUT_OF_MEMORY;464 return ERR_INFO_OUT_OF_MEMORY;
463 }465 }
464 pCtx->sRawData.pStartPos = pCtx->sRawData.pCurPos = pCtx->sRawData.pHead;466 pCtx->sRawData.pStartPos = pCtx->sRawData.pCurPos = pCtx->sRawData.pHead;
465 pCtx->sRawData.pEnd = pCtx->sRawData.pHead + pCtx->iMaxBsBufferSizeInByte;467 pCtx->sRawData.pEnd = pCtx->sRawData.pHead + pCtx->iMaxBsBufferSizeInByte;
466 if (pCtx->bParseOnly) {468 if (pCtx->bParseOnly) {
467 pCtx->pParserBsInfo = static_cast<SParserBsInfo*> (WelsMallocz (sizeof (SParserBsInfo), "pCtx->pParserBsInfo"));469 pCtx->pParserBsInfo = static_cast<SParserBsInfo*> (pMa->WelsMallocz (sizeof (SParserBsInfo), "pCtx->pParserBsInfo"));
468 if (pCtx->pParserBsInfo == NULL) {470 if (pCtx->pParserBsInfo == NULL) {
469 return ERR_INFO_OUT_OF_MEMORY;471 return ERR_INFO_OUT_OF_MEMORY;
470 }472 }
471 memset (pCtx->pParserBsInfo, 0, sizeof (SParserBsInfo));473 memset (pCtx->pParserBsInfo, 0, sizeof (SParserBsInfo));
472 pCtx->pParserBsInfo->pDstBuff = static_cast<uint8_t*> (WelsMallocz (MAX_ACCESS_UNIT_CAPACITY * sizeof (uint8_t),474 pCtx->pParserBsInfo->pDstBuff = static_cast<uint8_t*> (pMa->WelsMallocz (MAX_ACCESS_UNIT_CAPACITY * sizeof (uint8_t),
473 "pCtx->pParserBsInfo->pDstBuff"));475 "pCtx->pParserBsInfo->pDstBuff"));
474 if (pCtx->pParserBsInfo->pDstBuff == NULL) {476 if (pCtx->pParserBsInfo->pDstBuff == NULL) {
475 return ERR_INFO_OUT_OF_MEMORY;477 return ERR_INFO_OUT_OF_MEMORY;
476 }478 }
477 memset (pCtx->pParserBsInfo->pDstBuff, 0, MAX_ACCESS_UNIT_CAPACITY * sizeof (uint8_t));479 memset (pCtx->pParserBsInfo->pDstBuff, 0, MAX_ACCESS_UNIT_CAPACITY * sizeof (uint8_t));
478 480
479 if ((pCtx->sSavedData.pHead = static_cast<uint8_t*> (WelsMallocz (pCtx->iMaxBsBufferSizeInByte,481 if ((pCtx->sSavedData.pHead = static_cast<uint8_t*> (pMa->WelsMallocz (pCtx->iMaxBsBufferSizeInByte,
480 "pCtx->sSavedData.pHead"))) == NULL) {482 "pCtx->sSavedData.pHead"))) == NULL) {
481 return ERR_INFO_OUT_OF_MEMORY;483 return ERR_INFO_OUT_OF_MEMORY;
482 }484 }
@@ -492,7 +494,8 @@ int32_t ExpandBsBuffer (PWelsDecoderContext pCtx, const int kiSrcLen) { · 9 unmodified lines
492 int32_t iExpandStepShift = 1;494 int32_t iExpandStepShift = 1;
493 int32_t iNewBuffLen = WELS_MAX ((kiSrcLen * MAX_BUFFERED_NUM), (pCtx->iMaxBsBufferSizeInByte << iExpandStepShift));495 int32_t iNewBuffLen = WELS_MAX ((kiSrcLen * MAX_BUFFERED_NUM), (pCtx->iMaxBsBufferSizeInByte << iExpandStepShift));
494 //allocate new bs buffer496 //allocate new bs buffer
495 uint8_t* pNewBsBuff = static_cast<uint8_t*> (WelsMallocz (iNewBuffLen, "pCtx->sRawData.pHead"));497 CMemoryAlign* pMa = pCtx->pMemAlign;
498 uint8_t* pNewBsBuff = static_cast<uint8_t*> (pMa->WelsMallocz (iNewBuffLen, "pCtx->sRawData.pHead"));
496 if (pNewBsBuff == NULL)499 if (pNewBsBuff == NULL)
497 return ERR_INFO_OUT_OF_MEMORY;500 return ERR_INFO_OUT_OF_MEMORY;
498 501
@@ -510,7 +513,7 @@ int32_t ExpandBsBuffer (PWelsDecoderContext pCtx, const int kiSrcLen) { · 11 unmodified lines
510 pCtx->sRawData.pStartPos = pNewBsBuff + (pCtx->sRawData.pStartPos - pCtx->sRawData.pHead);513 pCtx->sRawData.pStartPos = pNewBsBuff + (pCtx->sRawData.pStartPos - pCtx->sRawData.pHead);
511 pCtx->sRawData.pCurPos = pNewBsBuff + (pCtx->sRawData.pCurPos - pCtx->sRawData.pHead);514 pCtx->sRawData.pCurPos = pNewBsBuff + (pCtx->sRawData.pCurPos - pCtx->sRawData.pHead);
512 pCtx->sRawData.pEnd = pNewBsBuff + iNewBuffLen;515 pCtx->sRawData.pEnd = pNewBsBuff + iNewBuffLen;
513 WelsFree (pCtx->sRawData.pHead, "pCtx->sRawData.pHead");516 pMa->WelsFree (pCtx->sRawData.pHead, "pCtx->sRawData.pHead");
514 pCtx->sRawData.pHead = pNewBsBuff;517 pCtx->sRawData.pHead = pNewBsBuff;
515 return ERR_NONE;518 return ERR_NONE;
516}519}
@@ -545,7 +548,7 @@ int32_t WelsInitMemory (PWelsDecoderContext pCtx) { · 28 unmodified lines
545 return ERR_INFO_INVALID_PTR;548 return ERR_INFO_INVALID_PTR;
546 }549 }
547 550
548 if (MemInitNalList (&pCtx->pAccessUnitList, MAX_NAL_UNIT_NUM_IN_AU) != 0)551 if (MemInitNalList (&pCtx->pAccessUnitList, MAX_NAL_UNIT_NUM_IN_AU, pCtx->pMemAlign) != 0)
549 return ERR_INFO_OUT_OF_MEMORY;552 return ERR_INFO_OUT_OF_MEMORY;
550 553
551 if (InitBsBuffer (pCtx) != 0)554 if (InitBsBuffer (pCtx) != 0)
@@ -566,16 +569,18 @@ void WelsFreeMemory (PWelsDecoderContext pCtx) { · 14 unmodified lines
566 if (pCtx == NULL)569 if (pCtx == NULL)
567 return;570 return;
568 571
572 CMemoryAlign* pMa = pCtx->pMemAlign;
573
569 if (NULL != pCtx->pParam) {574 if (NULL != pCtx->pParam) {
570 WelsFree (pCtx->pParam, "pCtx->pParam");575 pMa->WelsFree (pCtx->pParam, "pCtx->pParam");
571 576
572 pCtx->pParam = NULL;577 pCtx->pParam = NULL;
573 }578 }
574 579
575 MemFreeNalList (&pCtx->pAccessUnitList);580 MemFreeNalList (&pCtx->pAccessUnitList, pMa);
576 581
577 if (pCtx->sRawData.pHead) {582 if (pCtx->sRawData.pHead) {
578 WelsFree (pCtx->sRawData.pHead, "pCtx->sRawData->pHead");583 pMa->WelsFree (pCtx->sRawData.pHead, "pCtx->sRawData->pHead");
579 }584 }
580 pCtx->sRawData.pHead = NULL;585 pCtx->sRawData.pHead = NULL;
581 pCtx->sRawData.pEnd = NULL;586 pCtx->sRawData.pEnd = NULL;
@@ -583,7 +588,7 @@ void WelsFreeMemory (PWelsDecoderContext pCtx) { · 1 unmodified line
583 pCtx->sRawData.pCurPos = NULL;588 pCtx->sRawData.pCurPos = NULL;
584 if (pCtx->bParseOnly) {589 if (pCtx->bParseOnly) {
585 if (pCtx->sSavedData.pHead) {590 if (pCtx->sSavedData.pHead) {
586 WelsFree (pCtx->sSavedData.pHead, "pCtx->sSavedData->pHead");591 pMa->WelsFree (pCtx->sSavedData.pHead, "pCtx->sSavedData->pHead");
587 }592 }
588 pCtx->sSavedData.pHead = NULL;593 pCtx->sSavedData.pHead = NULL;
589 pCtx->sSavedData.pEnd = NULL;594 pCtx->sSavedData.pEnd = NULL;
@@ -591,10 +596,10 @@ void WelsFreeMemory (PWelsDecoderContext pCtx) { · 1 unmodified line
591 pCtx->sSavedData.pCurPos = NULL;596 pCtx->sSavedData.pCurPos = NULL;
592 if (pCtx->pParserBsInfo) {597 if (pCtx->pParserBsInfo) {
593 if (pCtx->pParserBsInfo->pDstBuff) {598 if (pCtx->pParserBsInfo->pDstBuff) {
594 WelsFree (pCtx->pParserBsInfo->pDstBuff, "pCtx->pParserBsInfo->pDstBuff");599 pMa->WelsFree (pCtx->pParserBsInfo->pDstBuff, "pCtx->pParserBsInfo->pDstBuff");
595 pCtx->pParserBsInfo->pDstBuff = NULL;600 pCtx->pParserBsInfo->pDstBuff = NULL;
596 }601 }
597 WelsFree (pCtx->pParserBsInfo, "pCtx->pParserBsInfo");602 pMa->WelsFree (pCtx->pParserBsInfo, "pCtx->pParserBsInfo");
598 pCtx->pParserBsInfo = NULL;603 pCtx->pParserBsInfo = NULL;
599 }604 }
600 }605 }
@@ -640,7 +645,8 @@ void DecodeNalHeaderExt (PNalUnit pNal, uint8_t* pSrc) { · 39 unmodified lines
640 * Parse slice header of bitstream in avc for storing data structure645 * Parse slice header of bitstream in avc for storing data structure
641 */646 */
642int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, const bool kbExtensionFlag) {647int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, const bool kbExtensionFlag) {
643 PNalUnit const kpCurNal = pCtx->pAccessUnitList->pNalUnitsList[pCtx->pAccessUnitList->uiAvailUnitsNum - 1];648 PNalUnit const kpCurNal = pCtx->pAccessUnitList->pNalUnitsList[pCtx->pAccessUnitList->uiAvailUnitsNum -
649 1];
644 650
645 PNalUnitHeaderExt pNalHeaderExt = NULL;651 PNalUnitHeaderExt pNalHeaderExt = NULL;
646 PSliceHeader pSliceHead = NULL;652 PSliceHeader pSliceHead = NULL;
@@ -970,7 +976,7 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co · 323 unmodified lines
970 }976 }
971 977
972 bSgChangeCycleInvolved = (pPps->uiNumSliceGroups > 1 && pPps->uiSliceGroupMapType >= 3978 bSgChangeCycleInvolved = (pPps->uiNumSliceGroups > 1 && pPps->uiSliceGroupMapType >= 3
973 && pPps->uiSliceGroupMapType <= 5);979 && pPps->uiSliceGroupMapType <= 5);
974 if (kbExtensionFlag && bSgChangeCycleInvolved)980 if (kbExtensionFlag && bSgChangeCycleInvolved)
975 bSgChangeCycleInvolved = (bSgChangeCycleInvolved && (uiQualityId == BASE_QUALITY_ID));981 bSgChangeCycleInvolved = (bSgChangeCycleInvolved && (uiQualityId == BASE_QUALITY_ID));
976 if (bSgChangeCycleInvolved) {982 if (bSgChangeCycleInvolved) {
@@ -1030,7 +1036,8 @@ int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, co · 53 unmodified lines
1030 pos.iRightOffset = pSubsetSps->sSpsSvcExt.sSeqScaledRefLayer.iRightOffset;1036 pos.iRightOffset = pSubsetSps->sSpsSvcExt.sSeqScaledRefLayer.iRightOffset;
1031 pos.iBottomOffset = pSubsetSps->sSpsSvcExt.sSeqScaledRefLayer.iBottomOffset * (2 - pSps->bFrameMbsOnlyFlag);1037 pos.iBottomOffset = pSubsetSps->sSpsSvcExt.sSeqScaledRefLayer.iBottomOffset * (2 - pSps->bFrameMbsOnlyFlag);
1032 //memcpy(&pSliceHeadExt->sScaledRefLayer, &pos, sizeof(SPosOffset));//confirmed_safe_unsafe_usage1038 //memcpy(&pSliceHeadExt->sScaledRefLayer, &pos, sizeof(SPosOffset));//confirmed_safe_unsafe_usage
1033 pSliceHeadExt->iScaledRefLayerPicWidthInSampleLuma = (pSliceHead->iMbWidth << 4) - (pos.iLeftOffset + pos.iRightOffset);1039 pSliceHeadExt->iScaledRefLayerPicWidthInSampleLuma = (pSliceHead->iMbWidth << 4) -
1040 (pos.iLeftOffset + pos.iRightOffset);
1034 pSliceHeadExt->iScaledRefLayerPicHeightInSampleLuma = (pSliceHead->iMbHeight << 4) -1041 pSliceHeadExt->iScaledRefLayerPicHeightInSampleLuma = (pSliceHead->iMbHeight << 4) -
1035 (pos.iTopOffset + pos.iBottomOffset) / (1 + pSliceHead->bFieldPicFlag);1042 (pos.iTopOffset + pos.iBottomOffset) / (1 + pSliceHead->bFieldPicFlag);
1036 }1043 }
@@ -1218,68 +1225,75 @@ int32_t InitialDqLayersContext (PWelsDecoderContext pCtx, const int32_t kiMaxWid · 181 unmodified lines
1218 && kiMaxHeight <= pCtx->iPicHeightReq) // have same dimension memory, skipped1225 && kiMaxHeight <= pCtx->iPicHeightReq) // have same dimension memory, skipped
1219 return ERR_NONE;1226 return ERR_NONE;
1220 1227
1228 CMemoryAlign* pMa = pCtx->pMemAlign;
1221 1229
1222 UninitialDqLayersContext (pCtx);1230 UninitialDqLayersContext (pCtx);
1223 1231
1224 do {1232 do {
1225 PDqLayer pDq = (PDqLayer)WelsMallocz (sizeof (SDqLayer), "PDqLayer");1233 PDqLayer pDq = (PDqLayer)pMa->WelsMallocz (sizeof (SDqLayer), "PDqLayer");
1226 1234
1227 if (pDq == NULL)1235 if (pDq == NULL)
1228 return ERR_INFO_OUT_OF_MEMORY;1236 return ERR_INFO_OUT_OF_MEMORY;
1229 1237
1230 memset (pDq, 0, sizeof (SDqLayer));1238 memset (pDq, 0, sizeof (SDqLayer));
1231 1239
1232 pCtx->sMb.pMbType[i] = (int16_t*)WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int16_t),1240 pCtx->sMb.pMbType[i] = (int16_t*)pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int16_t),
1233 "pCtx->sMb.pMbType[]");1241 "pCtx->sMb.pMbType[]");
1234 pCtx->sMb.pMv[i][0] = (int16_t (*)[16][2])WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (1242 pCtx->sMb.pMv[i][0] = (int16_t (*)[16][2])pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (
1235 int16_t) * MV_A * MB_BLOCK4x4_NUM, "pCtx->sMb.pMv[][]");1243 int16_t) * MV_A * MB_BLOCK4x4_NUM, "pCtx->sMb.pMv[][]");
1236 pCtx->sMb.pRefIndex[i][0] = (int8_t (*)[MB_BLOCK4x4_NUM])WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight *1244 pCtx->sMb.pRefIndex[i][0] = (int8_t (*)[MB_BLOCK4x4_NUM])pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight *
1237 sizeof (1245 sizeof (
1238 int8_t) * MB_BLOCK4x4_NUM, "pCtx->sMb.pRefIndex[][]");1246 int8_t) * MB_BLOCK4x4_NUM, "pCtx->sMb.pRefIndex[][]");
1239 pCtx->sMb.pLumaQp[i] = (int8_t*)WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t),1247 pCtx->sMb.pLumaQp[i] = (int8_t*)pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t),
1240 "pCtx->sMb.pLumaQp[]");1248 "pCtx->sMb.pLumaQp[]");
1241 pCtx->sMb.pNoSubMbPartSizeLessThan8x8Flag[i] = (bool*)WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (1249 pCtx->sMb.pNoSubMbPartSizeLessThan8x8Flag[i] = (bool*)pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight *
1250 sizeof (
1242 bool),1251 bool),
1243 "pCtx->sMb.pNoSubMbPartSizeLessThan8x8Flag[]");1252 "pCtx->sMb.pNoSubMbPartSizeLessThan8x8Flag[]");
1244 pCtx->sMb.pTransformSize8x8Flag[i] = (bool*)WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (bool),1253 pCtx->sMb.pTransformSize8x8Flag[i] = (bool*)pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (bool),
1245 "pCtx->sMb.pTransformSize8x8Flag[]");1254 "pCtx->sMb.pTransformSize8x8Flag[]");
1246 pCtx->sMb.pChromaQp[i] = (int8_t (*)[2])WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t) * 2,1255 pCtx->sMb.pChromaQp[i] = (int8_t (*)[2])pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (
1256 int8_t) * 2,
1247 "pCtx->sMb.pChromaQp[]");1257 "pCtx->sMb.pChromaQp[]");
1248 pCtx->sMb.pMvd[i][0] = (int16_t (*)[16][2])WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (1258 pCtx->sMb.pMvd[i][0] = (int16_t (*)[16][2])pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (
1249 int16_t) * MV_A * MB_BLOCK4x4_NUM, "pCtx->sMb.pMvd[][]");1259 int16_t) * MV_A * MB_BLOCK4x4_NUM, "pCtx->sMb.pMvd[][]");
1250 pCtx->sMb.pCbfDc[i] = (uint16_t*)WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (uint16_t),1260 pCtx->sMb.pCbfDc[i] = (uint16_t*)pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (uint16_t),
1251 "pCtx->sMb.pCbfDc[]");1261 "pCtx->sMb.pCbfDc[]");
1252 pCtx->sMb.pNzc[i] = (int8_t (*)[24])WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t) * 24,1262 pCtx->sMb.pNzc[i] = (int8_t (*)[24])pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t) * 24,
1253 "pCtx->sMb.pNzc[]");1263 "pCtx->sMb.pNzc[]");
1254 pCtx->sMb.pNzcRs[i] = (int8_t (*)[24])WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t) * 24,1264 pCtx->sMb.pNzcRs[i] = (int8_t (*)[24])pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t) * 24,
1255 "pCtx->sMb.pNzcRs[]");1265 "pCtx->sMb.pNzcRs[]");
1256 pCtx->sMb.pScaledTCoeff[i] = (int16_t (*)[MB_COEFF_LIST_SIZE])WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight *1266 pCtx->sMb.pScaledTCoeff[i] = (int16_t (*)[MB_COEFF_LIST_SIZE])pMa->WelsMallocz (pCtx->sMb.iMbWidth *
1267 pCtx->sMb.iMbHeight *
1257 sizeof (int16_t) * MB_COEFF_LIST_SIZE, "pCtx->sMb.pScaledTCoeff[]");1268 sizeof (int16_t) * MB_COEFF_LIST_SIZE, "pCtx->sMb.pScaledTCoeff[]");
1258 pCtx->sMb.pIntraPredMode[i] = (int8_t (*)[8])WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (1269 pCtx->sMb.pIntraPredMode[i] = (int8_t (*)[8])pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (
1259 int8_t) * 8,1270 int8_t) * 8,
1260 "pCtx->sMb.pIntraPredMode[]");1271 "pCtx->sMb.pIntraPredMode[]");
1261 pCtx->sMb.pIntra4x4FinalMode[i] = (int8_t (*)[MB_BLOCK4x4_NUM])WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight *1272 pCtx->sMb.pIntra4x4FinalMode[i] = (int8_t (*)[MB_BLOCK4x4_NUM])pMa->WelsMallocz (pCtx->sMb.iMbWidth *
1273 pCtx->sMb.iMbHeight *
1262 sizeof (int8_t) * MB_BLOCK4x4_NUM, "pCtx->sMb.pIntra4x4FinalMode[]");1274 sizeof (int8_t) * MB_BLOCK4x4_NUM, "pCtx->sMb.pIntra4x4FinalMode[]");
1263 pCtx->sMb.pIntraNxNAvailFlag[i] = (uint8_t (*))WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t),1275 pCtx->sMb.pIntraNxNAvailFlag[i] = (uint8_t (*))pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (
1276 int8_t),
1264 "pCtx->sMb.pIntraNxNAvailFlag");1277 "pCtx->sMb.pIntraNxNAvailFlag");
1265 pCtx->sMb.pChromaPredMode[i] = (int8_t*)WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t),1278 pCtx->sMb.pChromaPredMode[i] = (int8_t*)pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t),
1266 "pCtx->sMb.pChromaPredMode[]");1279 "pCtx->sMb.pChromaPredMode[]");
1267 pCtx->sMb.pCbp[i] = (int8_t*)WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t),1280 pCtx->sMb.pCbp[i] = (int8_t*)pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t),
1268 "pCtx->sMb.pCbp[]");1281 "pCtx->sMb.pCbp[]");
1269 pCtx->sMb.pSubMbType[i] = (int8_t (*)[MB_PARTITION_SIZE])WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight *1282 pCtx->sMb.pSubMbType[i] = (int8_t (*)[MB_PARTITION_SIZE])pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight *
1270 sizeof (1283 sizeof (
1271 int8_t) * MB_PARTITION_SIZE, "pCtx->sMb.pSubMbType[]");1284 int8_t) * MB_PARTITION_SIZE, "pCtx->sMb.pSubMbType[]");
1272 pCtx->sMb.pSliceIdc[i] = (int32_t*) WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int32_t),1285 pCtx->sMb.pSliceIdc[i] = (int32_t*) pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int32_t),
1273 "pCtx->sMb.pSliceIdc[]"); // using int32_t for slice_idc, 4/21/20101286 "pCtx->sMb.pSliceIdc[]"); // using int32_t for slice_idc, 4/21/2010
1274 pCtx->sMb.pResidualPredFlag[i] = (int8_t*) WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t),1287 pCtx->sMb.pResidualPredFlag[i] = (int8_t*) pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (int8_t),
1275 "pCtx->sMb.pResidualPredFlag[]");1288 "pCtx->sMb.pResidualPredFlag[]");
1276 //pCtx->sMb.pMotionPredFlag[i] = (uint8_t *) WelsMallocz(pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof(uint8_t), "pCtx->sMb.pMotionPredFlag[]");1289 //pCtx->sMb.pMotionPredFlag[i] = (uint8_t *) pMa->WelsMallocz(pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof(uint8_t), "pCtx->sMb.pMotionPredFlag[]");
1277 pCtx->sMb.pInterPredictionDoneFlag[i] = (int8_t*) WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (1290 pCtx->sMb.pInterPredictionDoneFlag[i] = (int8_t*) pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (
1278 int8_t), "pCtx->sMb.pInterPredictionDoneFlag[]");1291 int8_t), "pCtx->sMb.pInterPredictionDoneFlag[]");
1279 1292
1280 pCtx->sMb.pMbCorrectlyDecodedFlag[i] = (bool*) WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (bool),1293 pCtx->sMb.pMbCorrectlyDecodedFlag[i] = (bool*) pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (
1294 bool),
1281 "pCtx->sMb.pMbCorrectlyDecodedFlag[]");1295 "pCtx->sMb.pMbCorrectlyDecodedFlag[]");
1282 pCtx->sMb.pMbRefConcealedFlag[i] = (bool*) WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (bool),1296 pCtx->sMb.pMbRefConcealedFlag[i] = (bool*) pMa->WelsMallocz (pCtx->sMb.iMbWidth * pCtx->sMb.iMbHeight * sizeof (bool),
1283 "pCtx->pMbRefConcealedFlag[]");1297 "pCtx->pMbRefConcealedFlag[]");
1284 1298
1285 // check memory block valid due above allocated..1299 // check memory block valid due above allocated..
@@ -1322,6 +1336,7 @@ int32_t InitialDqLayersContext (PWelsDecoderContext pCtx, const int32_t kiMaxWid · 36 unmodified lines
1322 1336
1323void UninitialDqLayersContext (PWelsDecoderContext pCtx) {1337void UninitialDqLayersContext (PWelsDecoderContext pCtx) {
1324 int32_t i = 0;1338 int32_t i = 0;
1339 CMemoryAlign* pMa = pCtx->pMemAlign;
1325 1340
1326 do {1341 do {
1327 PDqLayer pDq = pCtx->pDqLayersList[i];1342 PDqLayer pDq = pCtx->pDqLayersList[i];
@@ -1331,146 +1346,146 @@ void UninitialDqLayersContext (PWelsDecoderContext pCtx) { · 3 unmodified lines
1331 }1346 }
1332 1347
1333 if (pCtx->sMb.pMbType[i]) {1348 if (pCtx->sMb.pMbType[i]) {
1334 WelsFree (pCtx->sMb.pMbType[i], "pCtx->sMb.pMbType[]");1349 pMa->WelsFree (pCtx->sMb.pMbType[i], "pCtx->sMb.pMbType[]");
1335 1350
1336 pCtx->sMb.pMbType[i] = NULL;1351 pCtx->sMb.pMbType[i] = NULL;
1337 }1352 }
1338 1353
1339 if (pCtx->sMb.pMv[i][0]) {1354 if (pCtx->sMb.pMv[i][0]) {
1340 WelsFree (pCtx->sMb.pMv[i][0], "pCtx->sMb.pMv[][]");1355 pMa->WelsFree (pCtx->sMb.pMv[i][0], "pCtx->sMb.pMv[][]");
1341 1356
1342 pCtx->sMb.pMv[i][0] = NULL;1357 pCtx->sMb.pMv[i][0] = NULL;
1343 }1358 }
1344 1359
1345 if (pCtx->sMb.pRefIndex[i][0]) {1360 if (pCtx->sMb.pRefIndex[i][0]) {
1346 WelsFree (pCtx->sMb.pRefIndex[i][0], "pCtx->sMb.pRefIndex[][]");1361 pMa->WelsFree (pCtx->sMb.pRefIndex[i][0], "pCtx->sMb.pRefIndex[][]");
1347 1362
1348 pCtx->sMb.pRefIndex[i][0] = NULL;1363 pCtx->sMb.pRefIndex[i][0] = NULL;
1349 }1364 }
1350 1365
1351 if (pCtx->sMb.pNoSubMbPartSizeLessThan8x8Flag[i]) {1366 if (pCtx->sMb.pNoSubMbPartSizeLessThan8x8Flag[i]) {
1352 WelsFree (pCtx->sMb.pNoSubMbPartSizeLessThan8x8Flag[i], "pCtx->sMb.pNoSubMbPartSizeLessThan8x8Flag[]");1367 pMa->WelsFree (pCtx->sMb.pNoSubMbPartSizeLessThan8x8Flag[i], "pCtx->sMb.pNoSubMbPartSizeLessThan8x8Flag[]");
1353 1368
1354 pCtx->sMb.pNoSubMbPartSizeLessThan8x8Flag[i] = NULL;1369 pCtx->sMb.pNoSubMbPartSizeLessThan8x8Flag[i] = NULL;
1355 }1370 }
1356 1371
1357 if (pCtx->sMb.pTransformSize8x8Flag[i]) {1372 if (pCtx->sMb.pTransformSize8x8Flag[i]) {
1358 WelsFree (pCtx->sMb.pTransformSize8x8Flag[i], "pCtx->sMb.pTransformSize8x8Flag[]");1373 pMa->WelsFree (pCtx->sMb.pTransformSize8x8Flag[i], "pCtx->sMb.pTransformSize8x8Flag[]");
1359 1374
1360 pCtx->sMb.pTransformSize8x8Flag[i] = NULL;1375 pCtx->sMb.pTransformSize8x8Flag[i] = NULL;
1361 }1376 }
1362 1377
1363 if (pCtx->sMb.pLumaQp[i]) {1378 if (pCtx->sMb.pLumaQp[i]) {
1364 WelsFree (pCtx->sMb.pLumaQp[i], "pCtx->sMb.pLumaQp[]");1379 pMa->WelsFree (pCtx->sMb.pLumaQp[i], "pCtx->sMb.pLumaQp[]");
1365 1380
1366 pCtx->sMb.pLumaQp[i] = NULL;1381 pCtx->sMb.pLumaQp[i] = NULL;
1367 }1382 }
1368 1383
1369 if (pCtx->sMb.pChromaQp[i]) {1384 if (pCtx->sMb.pChromaQp[i]) {
1370 WelsFree (pCtx->sMb.pChromaQp[i], "pCtx->sMb.pChromaQp[]");1385 pMa->WelsFree (pCtx->sMb.pChromaQp[i], "pCtx->sMb.pChromaQp[]");
1371 1386
1372 pCtx->sMb.pChromaQp[i] = NULL;1387 pCtx->sMb.pChromaQp[i] = NULL;
1373 }1388 }
1374 1389
1375 if (pCtx->sMb.pMvd[i][0]) {1390 if (pCtx->sMb.pMvd[i][0]) {
1376 WelsFree (pCtx->sMb.pMvd[i][0], "pCtx->sMb.pMvd[][]");1391 pMa->WelsFree (pCtx->sMb.pMvd[i][0], "pCtx->sMb.pMvd[][]");
1377 pCtx->sMb.pMvd[i][0] = NULL;1392 pCtx->sMb.pMvd[i][0] = NULL;
1378 }1393 }
1379 1394
1380 if (pCtx->sMb.pCbfDc[i]) {1395 if (pCtx->sMb.pCbfDc[i]) {
1381 WelsFree (pCtx->sMb.pCbfDc[i], "pCtx->sMb.pCbfDc[]");1396 pMa->WelsFree (pCtx->sMb.pCbfDc[i], "pCtx->sMb.pCbfDc[]");
1382 pCtx->sMb.pCbfDc[i] = NULL;1397 pCtx->sMb.pCbfDc[i] = NULL;
1383 }1398 }
1384 1399
1385 if (pCtx->sMb.pNzc[i]) {1400 if (pCtx->sMb.pNzc[i]) {
1386 WelsFree (pCtx->sMb.pNzc[i], "pCtx->sMb.pNzc[]");1401 pMa->WelsFree (pCtx->sMb.pNzc[i], "pCtx->sMb.pNzc[]");
1387 1402
1388 pCtx->sMb.pNzc[i] = NULL;1403 pCtx->sMb.pNzc[i] = NULL;
1389 }1404 }
1390 1405
1391 if (pCtx->sMb.pNzcRs[i]) {1406 if (pCtx->sMb.pNzcRs[i]) {
1392 WelsFree (pCtx->sMb.pNzcRs[i], "pCtx->sMb.pNzcRs[]");1407 pMa->WelsFree (pCtx->sMb.pNzcRs[i], "pCtx->sMb.pNzcRs[]");
1393 1408
1394 pCtx->sMb.pNzcRs[i] = NULL;1409 pCtx->sMb.pNzcRs[i] = NULL;
1395 }1410 }
1396 1411
1397 if (pCtx->sMb.pScaledTCoeff[i]) {1412 if (pCtx->sMb.pScaledTCoeff[i]) {
1398 WelsFree (pCtx->sMb.pScaledTCoeff[i], "pCtx->sMb.pScaledTCoeff[]");1413 pMa->WelsFree (pCtx->sMb.pScaledTCoeff[i], "pCtx->sMb.pScaledTCoeff[]");
1399 1414
1400 pCtx->sMb.pScaledTCoeff[i] = NULL;1415 pCtx->sMb.pScaledTCoeff[i] = NULL;
1401 }1416 }
1402 1417
1403 if (pCtx->sMb.pIntraPredMode[i]) {1418 if (pCtx->sMb.pIntraPredMode[i]) {
1404 WelsFree (pCtx->sMb.pIntraPredMode[i], "pCtx->sMb.pIntraPredMode[]");1419 pMa->WelsFree (pCtx->sMb.pIntraPredMode[i], "pCtx->sMb.pIntraPredMode[]");
1405 1420
1406 pCtx->sMb.pIntraPredMode[i] = NULL;1421 pCtx->sMb.pIntraPredMode[i] = NULL;
1407 }1422 }
1408 1423
1409 if (pCtx->sMb.pIntra4x4FinalMode[i]) {1424 if (pCtx->sMb.pIntra4x4FinalMode[i]) {
1410 WelsFree (pCtx->sMb.pIntra4x4FinalMode[i], "pCtx->sMb.pIntra4x4FinalMode[]");1425 pMa->WelsFree (pCtx->sMb.pIntra4x4FinalMode[i], "pCtx->sMb.pIntra4x4FinalMode[]");
1411 1426
1412 pCtx->sMb.pIntra4x4FinalMode[i] = NULL;1427 pCtx->sMb.pIntra4x4FinalMode[i] = NULL;
1413 }1428 }
1414 1429
1415 if (pCtx->sMb.pIntraNxNAvailFlag[i]) {1430 if (pCtx->sMb.pIntraNxNAvailFlag[i]) {
1416 WelsFree (pCtx->sMb.pIntraNxNAvailFlag[i], "pCtx->sMb.pIntraNxNAvailFlag");1431 pMa->WelsFree (pCtx->sMb.pIntraNxNAvailFlag[i], "pCtx->sMb.pIntraNxNAvailFlag");
1417 1432
1418 pCtx->sMb.pIntraNxNAvailFlag[i] = NULL;1433 pCtx->sMb.pIntraNxNAvailFlag[i] = NULL;
1419 }1434 }
1420 1435
1421 if (pCtx->sMb.pChromaPredMode[i]) {1436 if (pCtx->sMb.pChromaPredMode[i]) {
1422 WelsFree (pCtx->sMb.pChromaPredMode[i], "pCtx->sMb.pChromaPredMode[]");1437 pMa->WelsFree (pCtx->sMb.pChromaPredMode[i], "pCtx->sMb.pChromaPredMode[]");
1423 1438
1424 pCtx->sMb.pChromaPredMode[i] = NULL;1439 pCtx->sMb.pChromaPredMode[i] = NULL;
1425 }1440 }
1426 1441
1427 if (pCtx->sMb.pCbp[i]) {1442 if (pCtx->sMb.pCbp[i]) {
1428 WelsFree (pCtx->sMb.pCbp[i], "pCtx->sMb.pCbp[]");1443 pMa->WelsFree (pCtx->sMb.pCbp[i], "pCtx->sMb.pCbp[]");
1429 1444
1430 pCtx->sMb.pCbp[i] = NULL;1445 pCtx->sMb.pCbp[i] = NULL;
1431 }1446 }
1432 1447
1433 // if (pCtx->sMb.pMotionPredFlag[i])1448 // if (pCtx->sMb.pMotionPredFlag[i])
1434 //{1449 //{
1435 // WelsFree( pCtx->sMb.pMotionPredFlag[i], "pCtx->sMb.pMotionPredFlag[]" );1450 // pMa->WelsFree( pCtx->sMb.pMotionPredFlag[i], "pCtx->sMb.pMotionPredFlag[]" );
1436 1451
1437 // pCtx->sMb.pMotionPredFlag[i] = NULL;1452 // pCtx->sMb.pMotionPredFlag[i] = NULL;
1438 //}1453 //}
1439 1454
1440 if (pCtx->sMb.pSubMbType[i]) {1455 if (pCtx->sMb.pSubMbType[i]) {
1441 WelsFree (pCtx->sMb.pSubMbType[i], "pCtx->sMb.pSubMbType[]");1456 pMa->WelsFree (pCtx->sMb.pSubMbType[i], "pCtx->sMb.pSubMbType[]");
1442 1457
1443 pCtx->sMb.pSubMbType[i] = NULL;1458 pCtx->sMb.pSubMbType[i] = NULL;
1444 }1459 }
1445 1460
1446 if (pCtx->sMb.pSliceIdc[i]) {1461 if (pCtx->sMb.pSliceIdc[i]) {
1447 WelsFree (pCtx->sMb.pSliceIdc[i], "pCtx->sMb.pSliceIdc[]");1462 pMa->WelsFree (pCtx->sMb.pSliceIdc[i], "pCtx->sMb.pSliceIdc[]");
1448 1463
1449 pCtx->sMb.pSliceIdc[i] = NULL;1464 pCtx->sMb.pSliceIdc[i] = NULL;
1450 }1465 }
1451 1466
1452 if (pCtx->sMb.pResidualPredFlag[i]) {1467 if (pCtx->sMb.pResidualPredFlag[i]) {
1453 WelsFree (pCtx->sMb.pResidualPredFlag[i], "pCtx->sMb.pResidualPredFlag[]");1468 pMa->WelsFree (pCtx->sMb.pResidualPredFlag[i], "pCtx->sMb.pResidualPredFlag[]");
1454 1469
1455 pCtx->sMb.pResidualPredFlag[i] = NULL;1470 pCtx->sMb.pResidualPredFlag[i] = NULL;
1456 }1471 }
1457 1472
1458 if (pCtx->sMb.pInterPredictionDoneFlag[i]) {1473 if (pCtx->sMb.pInterPredictionDoneFlag[i]) {
1459 WelsFree (pCtx->sMb.pInterPredictionDoneFlag[i], "pCtx->sMb.pInterPredictionDoneFlag[]");1474 pMa->WelsFree (pCtx->sMb.pInterPredictionDoneFlag[i], "pCtx->sMb.pInterPredictionDoneFlag[]");
1460 1475
1461 pCtx->sMb.pInterPredictionDoneFlag[i] = NULL;1476 pCtx->sMb.pInterPredictionDoneFlag[i] = NULL;
1462 }1477 }
1463 1478
1464 if (pCtx->sMb.pMbCorrectlyDecodedFlag[i]) {1479 if (pCtx->sMb.pMbCorrectlyDecodedFlag[i]) {
1465 WelsFree (pCtx->sMb.pMbCorrectlyDecodedFlag[i], "pCtx->sMb.pMbCorrectlyDecodedFlag[]");1480 pMa->WelsFree (pCtx->sMb.pMbCorrectlyDecodedFlag[i], "pCtx->sMb.pMbCorrectlyDecodedFlag[]");
1466 pCtx->sMb.pMbCorrectlyDecodedFlag[i] = NULL;1481 pCtx->sMb.pMbCorrectlyDecodedFlag[i] = NULL;
1467 }1482 }
1468 1483
1469 if (pCtx->sMb.pMbRefConcealedFlag[i]) {1484 if (pCtx->sMb.pMbRefConcealedFlag[i]) {
1470 WelsFree (pCtx->sMb.pMbRefConcealedFlag[i], "pCtx->sMb.pMbRefConcealedFlag[]");1485 pMa->WelsFree (pCtx->sMb.pMbRefConcealedFlag[i], "pCtx->sMb.pMbRefConcealedFlag[]");
1471 pCtx->sMb.pMbRefConcealedFlag[i] = NULL;1486 pCtx->sMb.pMbRefConcealedFlag[i] = NULL;
1472 }1487 }
1473 WelsFree (pDq, "pDq");1488 pMa->WelsFree (pDq, "pDq");
1474 1489
1475 pDq = NULL;1490 pDq = NULL;
1476 pCtx->pDqLayersList[i] = NULL;1491 pCtx->pDqLayersList[i] = NULL;
@@ -2184,7 +2199,7 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf · 707 unmodified lines
2184 pLayerInfo.pSubsetSps = pShExt->pSubsetSps;2199 pLayerInfo.pSubsetSps = pShExt->pSubsetSps;
2185 2200
2186 pCtx->pFmo = &pCtx->sFmoList[iPpsId];2201 pCtx->pFmo = &pCtx->sFmoList[iPpsId];
2187 if (!FmoParamUpdate (pCtx->pFmo, pLayerInfo.pSps, pLayerInfo.pPps, &pCtx->iActiveFmoNum)) {2202 if (!FmoParamUpdate (pCtx->pFmo, pLayerInfo.pSps, pLayerInfo.pPps, &pCtx->iActiveFmoNum, pCtx->pMemAlign)) {
2188 pCtx->iErrorCode |= dsBitstreamError;2203 pCtx->iErrorCode |= dsBitstreamError;
2189 WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "DecodeCurrentAccessUnit(), FmoParamUpdate failed, eSliceType: %d.",2204 WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "DecodeCurrentAccessUnit(), FmoParamUpdate failed, eSliceType: %d.",
2190 pSh->eSliceType);2205 pSh->eSliceType);
@@ -2192,7 +2207,7 @@ int32_t DecodeCurrentAccessUnit (PWelsDecoderContext pCtx, uint8_t** ppDst, SBuf · 1 unmodified line
2192 }2207 }
2193 2208
2194 bFreshSliceAvailable = (iCurrIdD != iLastIdD2209 bFreshSliceAvailable = (iCurrIdD != iLastIdD
2195 || iCurrIdQ != iLastIdQ); // do not need condition of (first_mb == 0) due multiple slices might be disorder2210 || iCurrIdQ != iLastIdQ); // do not need condition of (first_mb == 0) due multiple slices might be disorder
2196 2211
2197 WelsDqLayerDecodeStart (pCtx, pNalCur, pLayerInfo.pSps, pLayerInfo.pPps);2212 WelsDqLayerDecodeStart (pCtx, pNalCur, pLayerInfo.pSps, pLayerInfo.pPps);
2198 2213

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