History

fix SM_FIXEDSLCNUM_SLICE bug, add SM_AUTO_SLICE mode

ruil2 committed 12 years ago

Commit 7c8ce791 parent ca457f59 files · +28 −24Browse files

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

Unified · Split

codec/encoder/core/src/slice_multi_threading.cpp+5−3
@@ -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 > 1328 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 > 11145 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;

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