History

fix low memory crash issue

huili2 committed 9 years ago

Commit d1c0a931 parent 48c2fe116 files · +401 −386Browse files

Showing the changes to codec/encoder/core/src/encoder_ext.cpp (1 of 16 files). Show all

Unified · Split

codec/encoder/core/src/encoder_ext.cpp+39−50
@@ -907,10 +907,10 @@ int32_t InitMbListD (sWelsEncCtx** ppCtx) { · 906 unmodified lines
907 907
908 (*ppCtx)->ppMbListD = static_cast<SMB**> ((*ppCtx)->pMemAlign->WelsMallocz (iNumDlayer * sizeof (SMB*), "ppMbListD"));908 (*ppCtx)->ppMbListD = static_cast<SMB**> ((*ppCtx)->pMemAlign->WelsMallocz (iNumDlayer * sizeof (SMB*), "ppMbListD"));
909 (*ppCtx)->ppMbListD[0] = NULL;909 (*ppCtx)->ppMbListD[0] = NULL;
910 WELS_VERIFY_RETURN_PROC_IF (1, (*ppCtx)->ppMbListD == NULL, FreeMemorySvc (ppCtx));910 WELS_VERIFY_RETURN_IF (1, (*ppCtx)->ppMbListD == NULL)
911 (*ppCtx)->ppMbListD[0] = static_cast<SMB*> ((*ppCtx)->pMemAlign->WelsMallocz (iOverallMbNum * sizeof (SMB),911 (*ppCtx)->ppMbListD[0] = static_cast<SMB*> ((*ppCtx)->pMemAlign->WelsMallocz (iOverallMbNum * sizeof (SMB),
912 "ppMbListD[0]"));912 "ppMbListD[0]"));
913 WELS_VERIFY_RETURN_PROC_IF (1, (*ppCtx)->ppMbListD[0] == NULL, FreeMemorySvc (ppCtx));913 WELS_VERIFY_RETURN_IF (1, (*ppCtx)->ppMbListD[0] == NULL)
914 (*ppCtx)->ppDqLayerList[0]->sMbDataP = (*ppCtx)->ppMbListD[0];914 (*ppCtx)->ppDqLayerList[0]->sMbDataP = (*ppCtx)->ppMbListD[0];
915 InitMbInfo (*ppCtx, (*ppCtx)->ppMbListD[0], (*ppCtx)->ppDqLayerList[0], 0, iMbSize[iNumDlayer - 1]);915 InitMbInfo (*ppCtx, (*ppCtx)->ppMbListD[0], (*ppCtx)->ppDqLayerList[0], 0, iMbSize[iNumDlayer - 1]);
916 for (i = 1; i < iNumDlayer; i++) {916 for (i = 1; i < iNumDlayer; i++) {
@@ -1166,7 +1166,7 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx, SExistingParasetList* p · 249 unmodified lines
1166 1166
1167 // pRef list1167 // pRef list
1168 pRefList = (SRefList*)pMa->WelsMallocz (sizeof (SRefList), "pRefList");1168 pRefList = (SRefList*)pMa->WelsMallocz (sizeof (SRefList), "pRefList");
1169 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == pRefList), FreeMemorySvc (ppCtx))1169 WELS_VERIFY_RETURN_IF (1, (NULL == pRefList))
1170 do {1170 do {
1171 pRefList->pRef[i] = AllocPicture (pMa, kiWidth, kiHeight, true,1171 pRefList->pRef[i] = AllocPicture (pMa, kiWidth, kiHeight, true,
1172 (iDlayerIndex == iDlayerCount - 1) ? kiNeedFeatureStorage : 0); // to use actual size of current layer1172 (iDlayerIndex == iDlayerCount - 1) ? kiNeedFeatureStorage : 0); // to use actual size of current layer
@@ -1255,11 +1255,11 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx, SExistingParasetList* p · 82 unmodified lines
1255 if (kiNeedFeatureStorage && iDlayerIndex == iDlayerCount - 1) {1255 if (kiNeedFeatureStorage && iDlayerIndex == iDlayerCount - 1) {
1256 pDqLayer->pFeatureSearchPreparation = static_cast<SFeatureSearchPreparation*> (pMa->WelsMallocz (sizeof (1256 pDqLayer->pFeatureSearchPreparation = static_cast<SFeatureSearchPreparation*> (pMa->WelsMallocz (sizeof (
1257 SFeatureSearchPreparation), "pFeatureSearchPreparation"));1257 SFeatureSearchPreparation), "pFeatureSearchPreparation"));
1258 WELS_VERIFY_RETURN_PROC_IF (1, NULL == pDqLayer->pFeatureSearchPreparation, FreeMemorySvc (ppCtx));1258 WELS_VERIFY_RETURN_IF (1, NULL == pDqLayer->pFeatureSearchPreparation)
1259 int32_t iReturn = RequestFeatureSearchPreparation (pMa, pDlayer->iVideoWidth, pDlayer->iVideoHeight,1259 int32_t iReturn = RequestFeatureSearchPreparation (pMa, pDlayer->iVideoWidth, pDlayer->iVideoHeight,
1260 kiNeedFeatureStorage,1260 kiNeedFeatureStorage,
1261 pDqLayer->pFeatureSearchPreparation);1261 pDqLayer->pFeatureSearchPreparation);
1262 WELS_VERIFY_RETURN_PROC_IF (1, ENC_RETURN_SUCCESS != iReturn, FreeMemorySvc (ppCtx));1262 WELS_VERIFY_RETURN_IF (1, ENC_RETURN_SUCCESS != iReturn)
1263 } else {1263 } else {
1264 pDqLayer->pFeatureSearchPreparation = NULL;1264 pDqLayer->pFeatureSearchPreparation = NULL;
1265 }1265 }
@@ -1270,15 +1270,15 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx, SExistingParasetList* p · 4 unmodified lines
1270 }1270 }
1271 1271
1272 // for dynamically malloc for parameter sets memory instead of maximal items for standard to reduce size, 3/18/20101272 // for dynamically malloc for parameter sets memory instead of maximal items for standard to reduce size, 3/18/2010
1273 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pFuncList), FreeMemorySvc (ppCtx))1273 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pFuncList))
1274 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pFuncList->pParametersetStrategy), FreeMemorySvc (ppCtx))1274 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pFuncList->pParametersetStrategy))
1275 const int32_t kiNeededSpsNum = (*ppCtx)->pFuncList->pParametersetStrategy->GetNeededSpsNum();1275 const int32_t kiNeededSpsNum = (*ppCtx)->pFuncList->pParametersetStrategy->GetNeededSpsNum();
1276 const int32_t kiNeededSubsetSpsNum = (*ppCtx)->pFuncList->pParametersetStrategy->GetNeededSubsetSpsNum();1276 const int32_t kiNeededSubsetSpsNum = (*ppCtx)->pFuncList->pParametersetStrategy->GetNeededSubsetSpsNum();
1277 (*ppCtx)->pSpsArray = (SWelsSPS*)pMa->WelsMallocz (kiNeededSpsNum * sizeof (SWelsSPS), "pSpsArray");1277 (*ppCtx)->pSpsArray = (SWelsSPS*)pMa->WelsMallocz (kiNeededSpsNum * sizeof (SWelsSPS), "pSpsArray");
1278 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pSpsArray), FreeMemorySvc (ppCtx))1278 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pSpsArray))
1279 if (kiNeededSubsetSpsNum > 0) {1279 if (kiNeededSubsetSpsNum > 0) {
1280 (*ppCtx)->pSubsetArray = (SSubsetSps*)pMa->WelsMallocz (kiNeededSubsetSpsNum * sizeof (SSubsetSps), "pSubsetArray");1280 (*ppCtx)->pSubsetArray = (SSubsetSps*)pMa->WelsMallocz (kiNeededSubsetSpsNum * sizeof (SSubsetSps), "pSubsetArray");
1281 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pSubsetArray), FreeMemorySvc (ppCtx))1281 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pSubsetArray))
1282 } else {1282 } else {
1283 (*ppCtx)->pSubsetArray = NULL;1283 (*ppCtx)->pSubsetArray = NULL;
1284 }1284 }
@@ -1286,14 +1286,14 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx, SExistingParasetList* p · 1 unmodified line
1286 // PPS1286 // PPS
1287 const int32_t kiNeededPpsNum = (*ppCtx)->pFuncList->pParametersetStrategy->GetNeededPpsNum();1287 const int32_t kiNeededPpsNum = (*ppCtx)->pFuncList->pParametersetStrategy->GetNeededPpsNum();
1288 (*ppCtx)->pPPSArray = (SWelsPPS*)pMa->WelsMallocz (kiNeededPpsNum * sizeof (SWelsPPS), "pPPSArray");1288 (*ppCtx)->pPPSArray = (SWelsPPS*)pMa->WelsMallocz (kiNeededPpsNum * sizeof (SWelsPPS), "pPPSArray");
1289 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pPPSArray), FreeMemorySvc (ppCtx))1289 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pPPSArray))
1290 1290
1291 (*ppCtx)->pFuncList->pParametersetStrategy->LoadPrevious (pExistingParasetList, (*ppCtx)->pSpsArray,1291 (*ppCtx)->pFuncList->pParametersetStrategy->LoadPrevious (pExistingParasetList, (*ppCtx)->pSpsArray,
1292 (*ppCtx)->pSubsetArray, (*ppCtx)->pPPSArray);1292 (*ppCtx)->pSubsetArray, (*ppCtx)->pPPSArray);
1293 1293
1294 1294
1295 (*ppCtx)->pDqIdcMap = (SDqIdc*)pMa->WelsMallocz (iDlayerCount * sizeof (SDqIdc), "pDqIdcMap");1295 (*ppCtx)->pDqIdcMap = (SDqIdc*)pMa->WelsMallocz (iDlayerCount * sizeof (SDqIdc), "pDqIdcMap");
1296 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pDqIdcMap), FreeMemorySvc (ppCtx))1296 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pDqIdcMap))
1297 1297
1298 iDlayerIndex = 0;1298 iDlayerIndex = 0;
1299 while (iDlayerIndex < iDlayerCount) {1299 while (iDlayerIndex < iDlayerCount) {
@@ -1328,7 +1328,6 @@ static inline int32_t InitDqLayers (sWelsEncCtx** ppCtx, SExistingParasetList* p · 28 unmodified lines
1328 pPps);1328 pPps);
1329 if (iResult) {1329 if (iResult) {
1330 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "InitDqLayers(), InitSlicePEncCtx failed(%d)!", iResult);1330 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "InitDqLayers(), InitSlicePEncCtx failed(%d)!", iResult);
1331 FreeMemorySvc (ppCtx);
1332 return iResult;1331 return iResult;
1333 }1332 }
1334 }1333 }
@@ -1682,7 +1681,6 @@ int32_t RequestMemorySvc (sWelsEncCtx** ppCtx, SExistingParasetList* pExistingPa · 347 unmodified lines
1682 if (kiNumDependencyLayers < 1 || kiNumDependencyLayers > MAX_DEPENDENCY_LAYER) {1681 if (kiNumDependencyLayers < 1 || kiNumDependencyLayers > MAX_DEPENDENCY_LAYER) {
1683 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc() failed due to invalid iNumDependencyLayers(%d)!",1682 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc() failed due to invalid iNumDependencyLayers(%d)!",
1684 kiNumDependencyLayers);1683 kiNumDependencyLayers);
1685 FreeMemorySvc (ppCtx);
1686 return 1;1684 return 1;
1687 }1685 }
1688 1686
@@ -1690,7 +1688,6 @@ int32_t RequestMemorySvc (sWelsEncCtx** ppCtx, SExistingParasetList* pExistingPa · 1 unmodified line
1690 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING,1688 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING,
1691 "RequestMemorySvc() failed due to invalid uiIntraPeriod(%d) (=multipler of uiGopSize(%d)!",1689 "RequestMemorySvc() failed due to invalid uiIntraPeriod(%d) (=multipler of uiGopSize(%d)!",
1692 pParam->uiIntraPeriod, pParam->uiGopSize);1690 pParam->uiIntraPeriod, pParam->uiGopSize);
1693 FreeMemorySvc (ppCtx);
1694 return 1;1691 return 1;
1695 }1692 }
1696 1693
@@ -1702,7 +1699,6 @@ int32_t RequestMemorySvc (sWelsEncCtx** ppCtx, SExistingParasetList* pExistingPa · 5 unmodified lines
1702 iResult = AcquireLayersNals (ppCtx, pParam, &iCountLayers, &iCountNals);1699 iResult = AcquireLayersNals (ppCtx, pParam, &iCountLayers, &iCountNals);
1703 if (iResult) {1700 if (iResult) {
1704 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc(), AcquireLayersNals failed(%d)!", iResult);1701 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc(), AcquireLayersNals failed(%d)!", iResult);
1705 FreeMemorySvc (ppCtx);
1706 return 1;1702 return 1;
1707 }1703 }
1708 1704
@@ -1755,21 +1751,20 @@ int32_t RequestMemorySvc (sWelsEncCtx** ppCtx, SExistingParasetList* pExistingPa · 46 unmodified lines
1755 1751
1756 // Output1752 // Output
1757 (*ppCtx)->pOut = (SWelsEncoderOutput*)pMa->WelsMallocz (sizeof (SWelsEncoderOutput), "SWelsEncoderOutput");1753 (*ppCtx)->pOut = (SWelsEncoderOutput*)pMa->WelsMallocz (sizeof (SWelsEncoderOutput), "SWelsEncoderOutput");
1758 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pOut), FreeMemorySvc (ppCtx))1754 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pOut))
1759 (*ppCtx)->pOut->pBsBuffer = (uint8_t*)pMa->WelsMallocz (iCountBsLen, "pOut->pBsBuffer");1755 (*ppCtx)->pOut->pBsBuffer = (uint8_t*)pMa->WelsMallocz (iCountBsLen, "pOut->pBsBuffer");
1760 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pOut->pBsBuffer), FreeMemorySvc (ppCtx))1756 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pOut->pBsBuffer))
1761 (*ppCtx)->pOut->uiSize = iCountBsLen;1757 (*ppCtx)->pOut->uiSize = iCountBsLen;
1762 (*ppCtx)->pOut->sNalList = (SWelsNalRaw*)pMa->WelsMallocz (iCountNals * sizeof (SWelsNalRaw), "pOut->sNalList");1758 (*ppCtx)->pOut->sNalList = (SWelsNalRaw*)pMa->WelsMallocz (iCountNals * sizeof (SWelsNalRaw), "pOut->sNalList");
1763 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pOut->sNalList), FreeMemorySvc (ppCtx))1759 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pOut->sNalList))
1764 (*ppCtx)->pOut->pNalLen = (int32_t*)pMa->WelsMallocz (iCountNals * sizeof (int32_t), "pOut->pNalLen");1760 (*ppCtx)->pOut->pNalLen = (int32_t*)pMa->WelsMallocz (iCountNals * sizeof (int32_t), "pOut->pNalLen");
1765 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pOut->pNalLen), FreeMemorySvc (ppCtx))1761 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pOut->pNalLen))
1766 (*ppCtx)->pOut->iCountNals = iCountNals;1762 (*ppCtx)->pOut->iCountNals = iCountNals;
1767 (*ppCtx)->pOut->iNalIndex = 0;1763 (*ppCtx)->pOut->iNalIndex = 0;
1768 (*ppCtx)->pOut->iLayerBsIndex = 0;1764 (*ppCtx)->pOut->iLayerBsIndex = 0;
1769 1765
1770
1771 (*ppCtx)->pFrameBs = (uint8_t*)pMa->WelsMalloc (iTotalLength, "pFrameBs");1766 (*ppCtx)->pFrameBs = (uint8_t*)pMa->WelsMalloc (iTotalLength, "pFrameBs");
1772 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pFrameBs), FreeMemorySvc (ppCtx))1767 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pFrameBs))
1773 (*ppCtx)->iFrameBsSize = iTotalLength;1768 (*ppCtx)->iFrameBsSize = iTotalLength;
1774 (*ppCtx)->iPosBsBuffer = 0;1769 (*ppCtx)->iPosBsBuffer = 0;
1775 1770
@@ -1777,45 +1772,44 @@ int32_t RequestMemorySvc (sWelsEncCtx** ppCtx, SExistingParasetList* pExistingPa · 1 unmodified line
1777 if (bDynamicSlice && pParam->iEntropyCodingModeFlag) {1772 if (bDynamicSlice && pParam->iEntropyCodingModeFlag) {
1778 for (int32_t iIdx = 0; iIdx < MAX_THREADS_NUM; iIdx++) {1773 for (int32_t iIdx = 0; iIdx < MAX_THREADS_NUM; iIdx++) {
1779 (*ppCtx)->pDynamicBsBuffer[iIdx] = (uint8_t*)pMa->WelsMalloc (iMaxSliceBufferSize, "DynamicSliceBs");1774 (*ppCtx)->pDynamicBsBuffer[iIdx] = (uint8_t*)pMa->WelsMalloc (iMaxSliceBufferSize, "DynamicSliceBs");
1780 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pDynamicBsBuffer[iIdx]), FreeMemorySvc (ppCtx))1775 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pDynamicBsBuffer[iIdx]))
1781 }1776 }
1782 }1777 }
1783 // for pSlice bs buffers1778 // for pSlice bs buffers
1784 if (pParam->iMultipleThreadIdc > 11779 if (pParam->iMultipleThreadIdc > 1
1785 && RequestMtResource (ppCtx, pParam, iCountBsLen, iMaxSliceBufferSize, bDynamicSlice)) {1780 && RequestMtResource (ppCtx, pParam, iCountBsLen, iMaxSliceBufferSize, bDynamicSlice)) {
1786 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc(), RequestMtResource failed!");1781 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc(), RequestMtResource failed!");
1787 FreeMemorySvc (ppCtx);
1788 return 1;1782 return 1;
1789 }1783 }
1790 1784
1791 (*ppCtx)->pReferenceStrategy = IWelsReferenceStrategy::CreateReferenceStrategy ((*ppCtx), pParam->iUsageType,1785 (*ppCtx)->pReferenceStrategy = IWelsReferenceStrategy::CreateReferenceStrategy ((*ppCtx), pParam->iUsageType,
1792 pParam->bEnableLongTermReference);1786 pParam->bEnableLongTermReference);
1793 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pReferenceStrategy), FreeMemorySvc (ppCtx))1787 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pReferenceStrategy))
1794 1788
1795 (*ppCtx)->pIntra4x4PredModeBlocks = static_cast<int8_t*>1789 (*ppCtx)->pIntra4x4PredModeBlocks = static_cast<int8_t*>
1796 (pMa->WelsMallocz (iCountMaxMbNum * INTRA_4x4_MODE_NUM, "pIntra4x4PredModeBlocks"));1790 (pMa->WelsMallocz (iCountMaxMbNum * INTRA_4x4_MODE_NUM, "pIntra4x4PredModeBlocks"));
1797 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pIntra4x4PredModeBlocks), FreeMemorySvc (ppCtx))1791 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pIntra4x4PredModeBlocks))
1798 1792
1799 (*ppCtx)->pNonZeroCountBlocks = static_cast<int8_t*>1793 (*ppCtx)->pNonZeroCountBlocks = static_cast<int8_t*>
1800 (pMa->WelsMallocz (iCountMaxMbNum * MB_LUMA_CHROMA_BLOCK4x4_NUM, "pNonZeroCountBlocks"));1794 (pMa->WelsMallocz (iCountMaxMbNum * MB_LUMA_CHROMA_BLOCK4x4_NUM, "pNonZeroCountBlocks"));
1801 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pNonZeroCountBlocks), FreeMemorySvc (ppCtx))1795 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pNonZeroCountBlocks))
1802 1796
1803 (*ppCtx)->pMvUnitBlock4x4 = static_cast<SMVUnitXY*>1797 (*ppCtx)->pMvUnitBlock4x4 = static_cast<SMVUnitXY*>
1804 (pMa->WelsMallocz (iCountMaxMbNum * 2 * MB_BLOCK4x4_NUM * sizeof (SMVUnitXY), "pMvUnitBlock4x4"));1798 (pMa->WelsMallocz (iCountMaxMbNum * 2 * MB_BLOCK4x4_NUM * sizeof (SMVUnitXY), "pMvUnitBlock4x4"));
1805 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pMvUnitBlock4x4), FreeMemorySvc (ppCtx))1799 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pMvUnitBlock4x4))
1806 1800
1807 (*ppCtx)->pRefIndexBlock4x4 = static_cast<int8_t*>1801 (*ppCtx)->pRefIndexBlock4x4 = static_cast<int8_t*>
1808 (pMa->WelsMallocz (iCountMaxMbNum * 2 * MB_BLOCK8x8_NUM * sizeof (int8_t), "pRefIndexBlock4x4"));1802 (pMa->WelsMallocz (iCountMaxMbNum * 2 * MB_BLOCK8x8_NUM * sizeof (int8_t), "pRefIndexBlock4x4"));
1809 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pRefIndexBlock4x4), FreeMemorySvc (ppCtx))1803 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pRefIndexBlock4x4))
1810 1804
1811 (*ppCtx)->pSadCostMb = static_cast<int32_t*>1805 (*ppCtx)->pSadCostMb = static_cast<int32_t*>
1812 (pMa->WelsMallocz (iCountMaxMbNum * sizeof (int32_t), "pSadCostMb"));1806 (pMa->WelsMallocz (iCountMaxMbNum * sizeof (int32_t), "pSadCostMb"));
1813 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pSadCostMb), FreeMemorySvc (ppCtx))1807 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pSadCostMb))
1814 1808
1815 (*ppCtx)->iGlobalQp = 26; // global qp in default1809 (*ppCtx)->iGlobalQp = 26; // global qp in default
1816 1810
1817 (*ppCtx)->pLtr = (SLTRState*)pMa->WelsMallocz (kiNumDependencyLayers * sizeof (SLTRState), "SLTRState");1811 (*ppCtx)->pLtr = (SLTRState*)pMa->WelsMallocz (kiNumDependencyLayers * sizeof (SLTRState), "SLTRState");
1818 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pLtr), FreeMemorySvc (ppCtx))1812 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pLtr))
1819 int32_t i = 0;1813 int32_t i = 0;
1820 for (i = 0; i < kiNumDependencyLayers; i++) {1814 for (i = 0; i < kiNumDependencyLayers; i++) {
1821 ResetLtrState (& (*ppCtx)->pLtr[i]);1815 ResetLtrState (& (*ppCtx)->pLtr[i]);
@@ -1824,85 +1818,80 @@ int32_t RequestMemorySvc (sWelsEncCtx** ppCtx, SExistingParasetList* pExistingPa · 2 unmodified lines
1824 // stride tables1818 // stride tables
1825 if (AllocStrideTables (ppCtx, kiNumDependencyLayers)) {1819 if (AllocStrideTables (ppCtx, kiNumDependencyLayers)) {
1826 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc(), AllocStrideTables failed!");1820 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc(), AllocStrideTables failed!");
1827 FreeMemorySvc (ppCtx);
1828 return 1;1821 return 1;
1829 }1822 }
1830 1823
1831 //Rate control module memory allocation1824 //Rate control module memory allocation
1832 // only malloc once for RC pData, 12/14/20091825 // only malloc once for RC pData, 12/14/2009
1833 (*ppCtx)->pWelsSvcRc = (SWelsSvcRc*)pMa->WelsMallocz (kiNumDependencyLayers * sizeof (SWelsSvcRc), "pWelsSvcRc");1826 (*ppCtx)->pWelsSvcRc = (SWelsSvcRc*)pMa->WelsMallocz (kiNumDependencyLayers * sizeof (SWelsSvcRc), "pWelsSvcRc");
1834 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pWelsSvcRc), FreeMemorySvc (ppCtx))1827 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pWelsSvcRc))
1835 //End of Rate control module memory allocation1828 //End of Rate control module memory allocation
1836 1829
1837 //pVaa memory allocation1830 //pVaa memory allocation
1838 if (pParam->iUsageType == SCREEN_CONTENT_REAL_TIME) {1831 if (pParam->iUsageType == SCREEN_CONTENT_REAL_TIME) {
1839 (*ppCtx)->pVaa = (SVAAFrameInfoExt*)pMa->WelsMallocz (sizeof (SVAAFrameInfoExt), "pVaa");1832 (*ppCtx)->pVaa = (SVAAFrameInfoExt*)pMa->WelsMallocz (sizeof (SVAAFrameInfoExt), "pVaa");
1840 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pVaa), FreeMemorySvc (ppCtx))1833 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pVaa))
1841 if (RequestMemoryVaaScreen ((*ppCtx)->pVaa, pMa, (*ppCtx)->pSvcParam->iMaxNumRefFrame, iCountMaxMbNum << 2)) {1834 if (RequestMemoryVaaScreen ((*ppCtx)->pVaa, pMa, (*ppCtx)->pSvcParam->iMaxNumRefFrame, iCountMaxMbNum << 2)) {
1842 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc(), RequestMemoryVaaScreen failed!");1835 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc(), RequestMemoryVaaScreen failed!");
1843 FreeMemorySvc (ppCtx);
1844 return 1;1836 return 1;
1845 }1837 }
1846 } else {1838 } else {
1847 (*ppCtx)->pVaa = (SVAAFrameInfo*)pMa->WelsMallocz (sizeof (SVAAFrameInfo), "pVaa");1839 (*ppCtx)->pVaa = (SVAAFrameInfo*)pMa->WelsMallocz (sizeof (SVAAFrameInfo), "pVaa");
1848 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pVaa), FreeMemorySvc (ppCtx))1840 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pVaa))
1849 }1841 }
1850 1842
1851 if ((*ppCtx)->pSvcParam->bEnableAdaptiveQuant) { //malloc mem1843 if ((*ppCtx)->pSvcParam->bEnableAdaptiveQuant) { //malloc mem
1852 (*ppCtx)->pVaa->sAdaptiveQuantParam.pMotionTextureUnit = static_cast<SMotionTextureUnit*>1844 (*ppCtx)->pVaa->sAdaptiveQuantParam.pMotionTextureUnit = static_cast<SMotionTextureUnit*>
1853 (pMa->WelsMallocz (iCountMaxMbNum * sizeof (SMotionTextureUnit), "pVaa->sAdaptiveQuantParam.pMotionTextureUnit"));1845 (pMa->WelsMallocz (iCountMaxMbNum * sizeof (SMotionTextureUnit), "pVaa->sAdaptiveQuantParam.pMotionTextureUnit"));
1854 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pVaa->sAdaptiveQuantParam.pMotionTextureUnit), FreeMemorySvc (ppCtx))1846 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pVaa->sAdaptiveQuantParam.pMotionTextureUnit))
1855 (*ppCtx)->pVaa->sAdaptiveQuantParam.pMotionTextureIndexToDeltaQp = static_cast<int8_t*>1847 (*ppCtx)->pVaa->sAdaptiveQuantParam.pMotionTextureIndexToDeltaQp = static_cast<int8_t*>
1856 (pMa->WelsMallocz (iCountMaxMbNum * sizeof (int8_t), "pVaa->sAdaptiveQuantParam.pMotionTextureIndexToDeltaQp"));1848 (pMa->WelsMallocz (iCountMaxMbNum * sizeof (int8_t), "pVaa->sAdaptiveQuantParam.pMotionTextureIndexToDeltaQp"));
1857 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pVaa->sAdaptiveQuantParam.pMotionTextureIndexToDeltaQp),1849 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pVaa->sAdaptiveQuantParam.pMotionTextureIndexToDeltaQp))
1858 FreeMemorySvc (ppCtx))
1859 }1850 }
1860 1851
1861 (*ppCtx)->pVaa->pVaaBackgroundMbFlag = (int8_t*)pMa->WelsMallocz (iCountMaxMbNum * sizeof (int8_t),1852 (*ppCtx)->pVaa->pVaaBackgroundMbFlag = (int8_t*)pMa->WelsMallocz (iCountMaxMbNum * sizeof (int8_t),
1862 "pVaa->pVaaBackgroundMbFlag");1853 "pVaa->pVaaBackgroundMbFlag");
1863 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pVaa->pVaaBackgroundMbFlag), FreeMemorySvc (ppCtx))1854 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pVaa->pVaaBackgroundMbFlag))
1864 1855
1865 (*ppCtx)->pVaa->sVaaCalcInfo.pSad8x8 = static_cast<int32_t (*)[4]>1856 (*ppCtx)->pVaa->sVaaCalcInfo.pSad8x8 = static_cast<int32_t (*)[4]>
1866 (pMa->WelsMallocz (iCountMaxMbNum * 4 * sizeof (int32_t), "pVaa->sVaaCalcInfo.sad8x8"));1857 (pMa->WelsMallocz (iCountMaxMbNum * 4 * sizeof (int32_t), "pVaa->sVaaCalcInfo.sad8x8"));
1867 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pVaa->sVaaCalcInfo.pSad8x8), FreeMemorySvc (ppCtx))1858 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pVaa->sVaaCalcInfo.pSad8x8))
1868 (*ppCtx)->pVaa->sVaaCalcInfo.pSsd16x16 = static_cast<int32_t*>1859 (*ppCtx)->pVaa->sVaaCalcInfo.pSsd16x16 = static_cast<int32_t*>
1869 (pMa->WelsMallocz (iCountMaxMbNum * sizeof (int32_t), "pVaa->sVaaCalcInfo.pSsd16x16"));1860 (pMa->WelsMallocz (iCountMaxMbNum * sizeof (int32_t), "pVaa->sVaaCalcInfo.pSsd16x16"));
1870 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pVaa->sVaaCalcInfo.pSsd16x16), FreeMemorySvc (ppCtx))1861 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pVaa->sVaaCalcInfo.pSsd16x16))
1871 (*ppCtx)->pVaa->sVaaCalcInfo.pSum16x16 = static_cast<int32_t*>1862 (*ppCtx)->pVaa->sVaaCalcInfo.pSum16x16 = static_cast<int32_t*>
1872 (pMa->WelsMallocz (iCountMaxMbNum * sizeof (int32_t), "pVaa->sVaaCalcInfo.pSum16x16"));1863 (pMa->WelsMallocz (iCountMaxMbNum * sizeof (int32_t), "pVaa->sVaaCalcInfo.pSum16x16"));
1873 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pVaa->sVaaCalcInfo.pSum16x16), FreeMemorySvc (ppCtx))1864 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pVaa->sVaaCalcInfo.pSum16x16))
1874 (*ppCtx)->pVaa->sVaaCalcInfo.pSumOfSquare16x16 = static_cast<int32_t*>1865 (*ppCtx)->pVaa->sVaaCalcInfo.pSumOfSquare16x16 = static_cast<int32_t*>
1875 (pMa->WelsMallocz (iCountMaxMbNum * sizeof (int32_t), "pVaa->sVaaCalcInfo.pSumOfSquare16x16"));1866 (pMa->WelsMallocz (iCountMaxMbNum * sizeof (int32_t), "pVaa->sVaaCalcInfo.pSumOfSquare16x16"));
1876 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pVaa->sVaaCalcInfo.pSumOfSquare16x16), FreeMemorySvc (ppCtx))1867 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pVaa->sVaaCalcInfo.pSumOfSquare16x16))
1877 1868
1878 if ((*ppCtx)->pSvcParam->bEnableBackgroundDetection) { //BGD control1869 if ((*ppCtx)->pSvcParam->bEnableBackgroundDetection) { //BGD control
1879 (*ppCtx)->pVaa->sVaaCalcInfo.pSumOfDiff8x8 = static_cast<int32_t (*)[4]>1870 (*ppCtx)->pVaa->sVaaCalcInfo.pSumOfDiff8x8 = static_cast<int32_t (*)[4]>
1880 (pMa->WelsMallocz (iCountMaxMbNum * 4 * sizeof (int32_t), "pVaa->sVaaCalcInfo.pSumOfDiff8x8"));1871 (pMa->WelsMallocz (iCountMaxMbNum * 4 * sizeof (int32_t), "pVaa->sVaaCalcInfo.pSumOfDiff8x8"));
1881 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pVaa->sVaaCalcInfo.pSumOfDiff8x8), FreeMemorySvc (ppCtx))1872 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pVaa->sVaaCalcInfo.pSumOfDiff8x8))
1882 (*ppCtx)->pVaa->sVaaCalcInfo.pMad8x8 = static_cast<uint8_t (*)[4]>1873 (*ppCtx)->pVaa->sVaaCalcInfo.pMad8x8 = static_cast<uint8_t (*)[4]>
1883 (pMa->WelsMallocz (iCountMaxMbNum * 4 * sizeof (uint8_t), "pVaa->sVaaCalcInfo.pMad8x8"));1874 (pMa->WelsMallocz (iCountMaxMbNum * 4 * sizeof (uint8_t), "pVaa->sVaaCalcInfo.pMad8x8"));
1884 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pVaa->sVaaCalcInfo.pMad8x8), FreeMemorySvc (ppCtx))1875 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pVaa->sVaaCalcInfo.pMad8x8))
1885 }1876 }
1886 1877
1887 //End of pVaa memory allocation1878 //End of pVaa memory allocation
1888 1879
1889 (*ppCtx)->ppRefPicListExt = (SRefList**)pMa->WelsMallocz (kiNumDependencyLayers * sizeof (SRefList*),1880 (*ppCtx)->ppRefPicListExt = (SRefList**)pMa->WelsMallocz (kiNumDependencyLayers * sizeof (SRefList*),
1890 "ppRefPicListExt");1881 "ppRefPicListExt");
1891 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->ppRefPicListExt), FreeMemorySvc (ppCtx))1882 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->ppRefPicListExt))
1892 1883
1893 (*ppCtx)->ppDqLayerList = (SDqLayer**)pMa->WelsMallocz (kiNumDependencyLayers * sizeof (SDqLayer*), "ppDqLayerList");1884 (*ppCtx)->ppDqLayerList = (SDqLayer**)pMa->WelsMallocz (kiNumDependencyLayers * sizeof (SDqLayer*), "ppDqLayerList");
1894 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->ppDqLayerList), FreeMemorySvc (ppCtx))1885 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->ppDqLayerList))
1895 1886
1896 iResult = InitDqLayers (ppCtx, pExistingParasetList);1887 iResult = InitDqLayers (ppCtx, pExistingParasetList);
1897 if (iResult) {1888 if (iResult) {
1898 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc(), InitDqLayers failed(%d)!", iResult);1889 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc(), InitDqLayers failed(%d)!", iResult);
1899 FreeMemorySvc (ppCtx);
1900 return iResult;1890 return iResult;
1901 }1891 }
1902 1892
1903 if (InitMbListD (ppCtx)) {1893 if (InitMbListD (ppCtx)) {
1904 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc(), InitMbListD failed!");1894 WelsLog (& (*ppCtx)->sLogCtx, WELS_LOG_WARNING, "RequestMemorySvc(), InitMbListD failed!");
1905 FreeMemorySvc (ppCtx);
1906 return 1;1895 return 1;
1907 }1896 }
1908 1897
@@ -1915,7 +1904,7 @@ int32_t RequestMemorySvc (sWelsEncCtx** ppCtx, SExistingParasetList* pExistingPa · 6 unmodified lines
1915 (*ppCtx)->iMvdCostTableSize = kuiMvdInterTableSize;1904 (*ppCtx)->iMvdCostTableSize = kuiMvdInterTableSize;
1916 (*ppCtx)->iMvdCostTableStride = kuiMvdInterTableStride;1905 (*ppCtx)->iMvdCostTableStride = kuiMvdInterTableStride;
1917 (*ppCtx)->pMvdCostTable = (uint16_t*)pMa->WelsMallocz (52 * kuiMvdCacheAlignedSize, "pMvdCostTable");1906 (*ppCtx)->pMvdCostTable = (uint16_t*)pMa->WelsMallocz (52 * kuiMvdCacheAlignedSize, "pMvdCostTable");
1918 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pMvdCostTable), FreeMemorySvc (ppCtx))1907 WELS_VERIFY_RETURN_IF (1, (NULL == (*ppCtx)->pMvdCostTable))
1919 MvdCostInit ((*ppCtx)->pMvdCostTable, kuiMvdInterTableStride); //should put to a better place?1908 MvdCostInit ((*ppCtx)->pMvdCostTable, kuiMvdInterTableStride); //should put to a better place?
1920 1909
1921 if ((*ppCtx)->ppRefPicListExt[0] != NULL && (*ppCtx)->ppRefPicListExt[0]->pRef[0] != NULL)1910 if ((*ppCtx)->ppRefPicListExt[0] != NULL && (*ppCtx)->ppRefPicListExt[0]->pRef[0] != NULL)

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