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
325325 while (iIdx < iNumSpatialLayers) {
326326 SSliceConfig* pMso = &pPara->sDependencyLayers[iIdx].sSliceCfg;
327327 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
329329 && pPara->iMultipleThreadIdc >= kiSliceNum) {
330330 pSmt->pSliceConsumeTime[iIdx] = (uint32_t*)pMa->WelsMallocz (kiSliceNum * sizeof (uint32_t), "pSliceConsumeTime[]");
331331 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
727727 pSlice = &pCurDq->sLayerInfo.pSliceInLayer[iSliceIdx];
728728 pSliceBs = &pEncPEncCtx->pSliceBs[iSliceIdx];
729729
730− bDsaFlag = (pParamD->sSliceCfg.uiSliceMode == SM_FIXEDSLCNUM_SLICE &&
730+ bDsaFlag = (((pParamD->sSliceCfg.uiSliceMode == SM_FIXEDSLCNUM_SLICE)||(pParamD->sSliceCfg.uiSliceMode == SM_AUTO_SLICE)) &&
731731 pCodingParam->iMultipleThreadIdc > 1 &&
732732 pCodingParam->iMultipleThreadIdc >= pParamD->sSliceCfg.sSliceArgument.uiSliceNum);
733733 if (bDsaFlag)
@@ -1142,7 +1142,9 @@ void TrackSliceConsumeTime (sWelsEncCtx* pCtx, int32_t* pDidList, const int32_t · 408 unmodified lines
11421142 SSliceCtx* pSliceCtx = pCurDq->pSliceEncCtx;
11431143 const uint32_t kuiCountSliceNum = pSliceCtx->iSliceNumInFrame;
11441144 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
11461148 && pPara->iMultipleThreadIdc >= kuiCountSliceNum) {
11471149 uint32_t i = 0;
11481150 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