Showing the changes to codec/encoder/core/src/slice_multi_threading.cpp (1 of 9 files). Show all
Unified · Split
| @@ -325,7 +325,7 @@ int32_t RequestMtResource (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pCodingPara · 324 unmodified lines | |||
| 325 | while (iIdx < iNumSpatialLayers) { | 325 | while (iIdx < iNumSpatialLayers) { |
| 326 | SSliceConfig* pMso = &pPara->sDependencyLayers[iIdx].sSliceCfg; | 326 | SSliceConfig* pMso = &pPara->sDependencyLayers[iIdx].sSliceCfg; |
| 327 | const int32_t kiSliceNum = pMso->sSliceArgument.uiSliceNum; | 327 | const int32_t kiSliceNum = pMso->sSliceArgument.uiSliceNum; |
| 328 | if (pMso->uiSliceMode == SM_FIXEDSLCNUM_SLICE && pPara->iMultipleThreadIdc > 1 | 328 | if (((pMso->uiSliceMode == SM_FIXEDSLCNUM_SLICE)||(pMso->uiSliceMode == SM_AUTO_SLICE)) && pPara->iMultipleThreadIdc > 1 |
| 329 | && pPara->iMultipleThreadIdc >= kiSliceNum) { | 329 | && pPara->iMultipleThreadIdc >= kiSliceNum) { |
| 330 | pSmt->pSliceConsumeTime[iIdx] = (uint32_t*)pMa->WelsMallocz (kiSliceNum * sizeof (uint32_t), "pSliceConsumeTime[]"); | 330 | pSmt->pSliceConsumeTime[iIdx] = (uint32_t*)pMa->WelsMallocz (kiSliceNum * sizeof (uint32_t), "pSliceConsumeTime[]"); |
| 331 | WELS_VERIFY_RETURN_PROC_IF (1, (NULL == pSmt->pSliceConsumeTime[iIdx]), FreeMemorySvc (ppCtx)) | 331 | WELS_VERIFY_RETURN_PROC_IF (1, (NULL == pSmt->pSliceConsumeTime[iIdx]), FreeMemorySvc (ppCtx)) |
| @@ -727,7 +727,7 @@ WELS_THREAD_ROUTINE_TYPE CodingSliceThreadProc (void* arg) { · 395 unmodified lines | |||
| 727 | pSlice = &pCurDq->sLayerInfo.pSliceInLayer[iSliceIdx]; | 727 | pSlice = &pCurDq->sLayerInfo.pSliceInLayer[iSliceIdx]; |
| 728 | pSliceBs = &pEncPEncCtx->pSliceBs[iSliceIdx]; | 728 | pSliceBs = &pEncPEncCtx->pSliceBs[iSliceIdx]; |
| 729 | 729 | ||
| 730 | bDsaFlag = (pParamD->sSliceCfg.uiSliceMode == SM_FIXEDSLCNUM_SLICE && | 730 | bDsaFlag = (((pParamD->sSliceCfg.uiSliceMode == SM_FIXEDSLCNUM_SLICE)||(pParamD->sSliceCfg.uiSliceMode == SM_AUTO_SLICE)) && |
| 731 | pCodingParam->iMultipleThreadIdc > 1 && | 731 | pCodingParam->iMultipleThreadIdc > 1 && |
| 732 | pCodingParam->iMultipleThreadIdc >= pParamD->sSliceCfg.sSliceArgument.uiSliceNum); | 732 | pCodingParam->iMultipleThreadIdc >= pParamD->sSliceCfg.sSliceArgument.uiSliceNum); |
| 733 | if (bDsaFlag) | 733 | if (bDsaFlag) |
| @@ -1142,7 +1142,9 @@ void TrackSliceConsumeTime (sWelsEncCtx* pCtx, int32_t* pDidList, const int32_t · 408 unmodified lines | |||
| 1142 | SSliceCtx* pSliceCtx = pCurDq->pSliceEncCtx; | 1142 | SSliceCtx* pSliceCtx = pCurDq->pSliceEncCtx; |
| 1143 | const uint32_t kuiCountSliceNum = pSliceCtx->iSliceNumInFrame; | 1143 | const uint32_t kuiCountSliceNum = pSliceCtx->iSliceNumInFrame; |
| 1144 | if (pCtx->pSliceThreading) { | 1144 | if (pCtx->pSliceThreading) { |
| 1145 | if (pCtx->pSliceThreading->pFSliceDiff && pMso->uiSliceMode == SM_FIXEDSLCNUM_SLICE && pPara->iMultipleThreadIdc > 1 | 1145 | if (pCtx->pSliceThreading->pFSliceDiff |
| 1146 | && ((pMso->uiSliceMode == SM_FIXEDSLCNUM_SLICE)||(pMso->uiSliceMode == SM_AUTO_SLICE)) | ||
| 1147 | && pPara->iMultipleThreadIdc > 1 | ||
| 1146 | && pPara->iMultipleThreadIdc >= kuiCountSliceNum) { | 1148 | && pPara->iMultipleThreadIdc >= kuiCountSliceNum) { |
| 1147 | uint32_t i = 0; | 1149 | uint32_t i = 0; |
| 1148 | uint32_t uiMaxT = 0; | 1150 | uint32_t uiMaxT = 0; |