Showing the changes to codec/decoder/core/src/decoder_core.cpp (1 of 12 files). Show all
Unified · Split
| @@ -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 buffer | 496 | //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 structure | 645 | * Parse slice header of bitstream in avc for storing data structure |
| 641 | */ | 646 | */ |
| 642 | int32_t ParseSliceHeaderSyntaxs (PWelsDecoderContext pCtx, PBitStringAux pBs, const bool kbExtensionFlag) { | 647 | int32_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 >= 3 | 978 | 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_usage | 1038 | //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, skipped | 1225 | && 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/2010 | 1286 | "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 | ||
| 1323 | void UninitialDqLayersContext (PWelsDecoderContext pCtx) { | 1337 | void 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 != iLastIdD | 2209 | bFreshSliceAvailable = (iCurrIdD != iLastIdD |
| 2195 | || iCurrIdQ != iLastIdQ); // do not need condition of (first_mb == 0) due multiple slices might be disorder | 2210 | || 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 | ||