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 | 325 | while (iIdx < iNumSpatialLayers) { |
| 326 | 326 | SSliceConfig* pMso = &pPara->sDependencyLayers[iIdx].sSliceCfg; |
| 327 | 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 | 329 | && pPara->iMultipleThreadIdc >= kiSliceNum) { |
| 330 | 330 | pSmt->pSliceConsumeTime[iIdx] = (uint32_t*)pMa->WelsMallocz (kiSliceNum * sizeof (uint32_t), "pSliceConsumeTime[]"); |
| 331 | 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 | 727 | pSlice = &pCurDq->sLayerInfo.pSliceInLayer[iSliceIdx]; |
| 728 | 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 | 731 | pCodingParam->iMultipleThreadIdc > 1 && |
| 732 | 732 | pCodingParam->iMultipleThreadIdc >= pParamD->sSliceCfg.sSliceArgument.uiSliceNum); |
| 733 | 733 | if (bDsaFlag) |
| @@ -1142,7 +1142,9 @@ void TrackSliceConsumeTime (sWelsEncCtx* pCtx, int32_t* pDidList, const int32_t · 408 unmodified lines | ||
| 1142 | 1142 | SSliceCtx* pSliceCtx = pCurDq->pSliceEncCtx; |
| 1143 | 1143 | const uint32_t kuiCountSliceNum = pSliceCtx->iSliceNumInFrame; |
| 1144 | 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 | 1148 | && pPara->iMultipleThreadIdc >= kuiCountSliceNum) { |
| 1147 | 1149 | uint32_t i = 0; |
| 1148 | 1150 | uint32_t uiMaxT = 0; |