Showing the changes to codec/encoder/core/src/svc_encode_slice.cpp (1 of 5 files). Show all
Unified · Split
| @@ -985,7 +985,7 @@ int32_t InitAllSlicesInThread (sWelsEncCtx* pCtx) { · 984 unmodified lines | |||
| 985 | } | 985 | } |
| 986 | 986 | ||
| 987 | for( ; iTheadIdx < pCtx->iActiveThreadsNum; iTheadIdx++ ) { | 987 | for( ; iTheadIdx < pCtx->iActiveThreadsNum; iTheadIdx++ ) { |
| 988 | pCurDqLayer->sSliceThreadInfo[iTheadIdx].iCodedSliceNum = 0; | 988 | pCurDqLayer->sSliceBufferInfo[iTheadIdx].iCodedSliceNum = 0; |
| 989 | } | 989 | } |
| 990 | 990 | ||
| 991 | return ENC_RETURN_SUCCESS; | 991 | return ENC_RETURN_SUCCESS; |
| @@ -998,11 +998,11 @@ int32_t InitOneSliceInThread (sWelsEncCtx* pCtx, · 6 unmodified lines | |||
| 998 | const int32_t kiSliceIdx) { | 998 | const int32_t kiSliceIdx) { |
| 999 | 999 | ||
| 1000 | if (pCtx->pCurDqLayer->bThreadSlcBufferFlag) { | 1000 | if (pCtx->pCurDqLayer->bThreadSlcBufferFlag) { |
| 1001 | const int32_t kiCodedNumInThread = pCtx->pCurDqLayer->sSliceThreadInfo[kiThreadIdx].iCodedSliceNum; | 1001 | const int32_t kiCodedNumInThread = pCtx->pCurDqLayer->sSliceBufferInfo[kiThreadIdx].iCodedSliceNum; |
| 1002 | assert(kiCodedNumInThread <= pCtx->pCurDqLayer->sSliceThreadInfo[kiThreadIdx].iMaxSliceNum -1 ); | 1002 | assert(kiCodedNumInThread <= pCtx->pCurDqLayer->sSliceBufferInfo[kiThreadIdx].iMaxSliceNum -1 ); |
| 1003 | pSlice = &pCtx->pCurDqLayer->sSliceThreadInfo [kiThreadIdx].pSliceBuffer[kiCodedNumInThread]; | 1003 | pSlice = &pCtx->pCurDqLayer->sSliceBufferInfo [kiThreadIdx].pSliceBuffer[kiCodedNumInThread]; |
| 1004 | } else { | 1004 | } else { |
| 1005 | pSlice = &pCtx->pCurDqLayer->sSliceThreadInfo [0].pSliceBuffer[kiSliceIdx]; | 1005 | pSlice = &pCtx->pCurDqLayer->sSliceBufferInfo [0].pSliceBuffer[kiSliceIdx]; |
| 1006 | } | 1006 | } |
| 1007 | pSlice->iSliceIdx = kiSliceIdx; | 1007 | pSlice->iSliceIdx = kiSliceIdx; |
| 1008 | pSlice->uiThreadIdx = kiThreadIdx; | 1008 | pSlice->uiThreadIdx = kiThreadIdx; |
| @@ -1037,15 +1037,15 @@ int32_t InitSliceThreadInfo (sWelsEncCtx* pCtx, · 28 unmodified lines | |||
| 1037 | } | 1037 | } |
| 1038 | 1038 | ||
| 1039 | while (iIdx < iSlcBufferNum) { | 1039 | while (iIdx < iSlcBufferNum) { |
| 1040 | pDqLayer->sSliceThreadInfo[iIdx].iMaxSliceNum = iMaxSliceNum; | 1040 | pDqLayer->sSliceBufferInfo[iIdx].iMaxSliceNum = iMaxSliceNum; |
| 1041 | pDqLayer->sSliceThreadInfo[iIdx].iCodedSliceNum = 0; | 1041 | pDqLayer->sSliceBufferInfo[iIdx].iCodedSliceNum = 0; |
| 1042 | pDqLayer->sSliceThreadInfo[iIdx].pSliceBuffer = (SSlice*)pMa->WelsMallocz (sizeof (SSlice) * iMaxSliceNum, "pSliceBuffer"); | 1042 | pDqLayer->sSliceBufferInfo[iIdx].pSliceBuffer = (SSlice*)pMa->WelsMallocz (sizeof (SSlice) * iMaxSliceNum, "pSliceBuffer"); |
| 1043 | if (NULL == pDqLayer->sSliceThreadInfo[iIdx].pSliceBuffer) { | 1043 | if (NULL == pDqLayer->sSliceBufferInfo[iIdx].pSliceBuffer) { |
| 1044 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, | 1044 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, |
| 1045 | "CWelsH264SVCEncoder::InitSliceThreadInfo: pSliceThreadInfo->pSliceBuffer[iIdx] is NULL"); | 1045 | "CWelsH264SVCEncoder::InitSliceThreadInfo: pSliceThreadInfo->pSliceBuffer[iIdx] is NULL"); |
| 1046 | return ENC_RETURN_MEMALLOCERR; | 1046 | return ENC_RETURN_MEMALLOCERR; |
| 1047 | } | 1047 | } |
| 1048 | iRet = InitSliceList (pDqLayer->sSliceThreadInfo[iIdx].pSliceBuffer, | 1048 | iRet = InitSliceList (pDqLayer->sSliceBufferInfo[iIdx].pSliceBuffer, |
| 1049 | &pCtx->pOut->sBsWrite, | 1049 | &pCtx->pOut->sBsWrite, |
| 1050 | iMaxSliceNum, | 1050 | iMaxSliceNum, |
| 1051 | pCtx->iSliceBufferSize[kiDlayerIndex], | 1051 | pCtx->iSliceBufferSize[kiDlayerIndex], |
| @@ -1058,9 +1058,9 @@ int32_t InitSliceThreadInfo (sWelsEncCtx* pCtx, · 6 unmodified lines | |||
| 1058 | } | 1058 | } |
| 1059 | 1059 | ||
| 1060 | for (; iIdx < MAX_THREADS_NUM; iIdx++) { | 1060 | for (; iIdx < MAX_THREADS_NUM; iIdx++) { |
| 1061 | pDqLayer->sSliceThreadInfo[iIdx].iMaxSliceNum = 0; | 1061 | pDqLayer->sSliceBufferInfo[iIdx].iMaxSliceNum = 0; |
| 1062 | pDqLayer->sSliceThreadInfo[iIdx].iCodedSliceNum = 0; | 1062 | pDqLayer->sSliceBufferInfo[iIdx].iCodedSliceNum = 0; |
| 1063 | pDqLayer->sSliceThreadInfo[iIdx].pSliceBuffer = NULL; | 1063 | pDqLayer->sSliceBufferInfo[iIdx].pSliceBuffer = NULL; |
| 1064 | } | 1064 | } |
| 1065 | 1065 | ||
| 1066 | return ENC_RETURN_SUCCESS; | 1066 | return ENC_RETURN_SUCCESS; |
| @@ -1095,7 +1095,7 @@ int32_t InitSliceInLayer (sWelsEncCtx* pCtx, · 28 unmodified lines | |||
| 1095 | 1095 | ||
| 1096 | pDqLayer->iMaxSliceNum = 0; | 1096 | pDqLayer->iMaxSliceNum = 0; |
| 1097 | for(iThreadIdx = 0; iThreadIdx < pCtx->iActiveThreadsNum; iThreadIdx++ ) { | 1097 | for(iThreadIdx = 0; iThreadIdx < pCtx->iActiveThreadsNum; iThreadIdx++ ) { |
| 1098 | pDqLayer->iMaxSliceNum += pDqLayer->sSliceThreadInfo[iThreadIdx].iMaxSliceNum; | 1098 | pDqLayer->iMaxSliceNum += pDqLayer->sSliceBufferInfo[iThreadIdx].iMaxSliceNum; |
| 1099 | } | 1099 | } |
| 1100 | 1100 | ||
| 1101 | pDqLayer->ppSliceInLayer = (SSlice**)pMa->WelsMallocz (sizeof (SSlice*) * pDqLayer->iMaxSliceNum, "ppSliceInLayer"); | 1101 | pDqLayer->ppSliceInLayer = (SSlice**)pMa->WelsMallocz (sizeof (SSlice*) * pDqLayer->iMaxSliceNum, "ppSliceInLayer"); |
| @@ -1123,11 +1123,11 @@ int32_t InitSliceInLayer (sWelsEncCtx* pCtx, · 21 unmodified lines | |||
| 1123 | 1123 | ||
| 1124 | iStartIdx = 0; | 1124 | iStartIdx = 0; |
| 1125 | for(iThreadIdx = 0; iThreadIdx < pCtx->iActiveThreadsNum; iThreadIdx++ ) { | 1125 | for(iThreadIdx = 0; iThreadIdx < pCtx->iActiveThreadsNum; iThreadIdx++ ) { |
| 1126 | for (iSliceIdx = 0; iSliceIdx < pDqLayer->sSliceThreadInfo[iThreadIdx].iMaxSliceNum; iSliceIdx++ ) { | 1126 | for (iSliceIdx = 0; iSliceIdx < pDqLayer->sSliceBufferInfo[iThreadIdx].iMaxSliceNum; iSliceIdx++ ) { |
| 1127 | pDqLayer->ppSliceInLayer[iStartIdx + iSliceIdx] = pDqLayer->sSliceThreadInfo[iThreadIdx].pSliceBuffer+ iSliceIdx; | 1127 | pDqLayer->ppSliceInLayer[iStartIdx + iSliceIdx] = pDqLayer->sSliceBufferInfo[iThreadIdx].pSliceBuffer+ iSliceIdx; |
| 1128 | } | 1128 | } |
| 1129 | 1129 | ||
| 1130 | iStartIdx += pDqLayer->sSliceThreadInfo[iThreadIdx].iMaxSliceNum; | 1130 | iStartIdx += pDqLayer->sSliceBufferInfo[iThreadIdx].iMaxSliceNum; |
| 1131 | } | 1131 | } |
| 1132 | 1132 | ||
| 1133 | return ENC_RETURN_SUCCESS; | 1133 | return ENC_RETURN_SUCCESS; |
| @@ -1301,10 +1301,10 @@ int32_t ReallocateSliceInThread (sWelsEncCtx* pCtx, · 167 unmodified lines | |||
| 1301 | SDqLayer* pDqLayer, | 1301 | SDqLayer* pDqLayer, |
| 1302 | const int32_t kiDlayerIdx, | 1302 | const int32_t kiDlayerIdx, |
| 1303 | const int32_t kiThreadIndex) { | 1303 | const int32_t kiThreadIndex) { |
| 1304 | int32_t iMaxSliceNum = pDqLayer->sSliceThreadInfo[kiThreadIndex].iMaxSliceNum; | 1304 | int32_t iMaxSliceNum = pDqLayer->sSliceBufferInfo[kiThreadIndex].iMaxSliceNum; |
| 1305 | int32_t iMaxSliceNumNew = 0; | 1305 | int32_t iMaxSliceNumNew = 0; |
| 1306 | int32_t iRet = 0; | 1306 | int32_t iRet = 0; |
| 1307 | SSlice* pLastCodedSlice = &pDqLayer->sSliceThreadInfo[kiThreadIndex].pSliceBuffer [iMaxSliceNum - 1]; | 1307 | SSlice* pLastCodedSlice = &pDqLayer->sSliceBufferInfo[kiThreadIndex].pSliceBuffer [iMaxSliceNum - 1]; |
| 1308 | SSliceArgument* pSliceArgument = & pCtx->pSvcParam->sSpatialLayers[kiDlayerIdx].sSliceArgument; | 1308 | SSliceArgument* pSliceArgument = & pCtx->pSvcParam->sSpatialLayers[kiDlayerIdx].sSliceArgument; |
| 1309 | 1309 | ||
| 1310 | iRet = CalculateNewSliceNum (pCtx, | 1310 | iRet = CalculateNewSliceNum (pCtx, |
| @@ -1317,14 +1317,14 @@ int32_t ReallocateSliceInThread (sWelsEncCtx* pCtx, · 6 unmodified lines | |||
| 1317 | 1317 | ||
| 1318 | iRet = ReallocateSliceList (pCtx, | 1318 | iRet = ReallocateSliceList (pCtx, |
| 1319 | pSliceArgument, | 1319 | pSliceArgument, |
| 1320 | pDqLayer->sSliceThreadInfo[kiThreadIndex].pSliceBuffer, | 1320 | pDqLayer->sSliceBufferInfo[kiThreadIndex].pSliceBuffer, |
| 1321 | iMaxSliceNum, | 1321 | iMaxSliceNum, |
| 1322 | iMaxSliceNumNew); | 1322 | iMaxSliceNumNew); |
| 1323 | if (ENC_RETURN_SUCCESS != iRet) { | 1323 | if (ENC_RETURN_SUCCESS != iRet) { |
| 1324 | return iRet; | 1324 | return iRet; |
| 1325 | } | 1325 | } |
| 1326 | 1326 | ||
| 1327 | pDqLayer->sSliceThreadInfo[kiThreadIndex].iMaxSliceNum = iMaxSliceNumNew; | 1327 | pDqLayer->sSliceBufferInfo[kiThreadIndex].iMaxSliceNum = iMaxSliceNumNew; |
| 1328 | 1328 | ||
| 1329 | return ENC_RETURN_SUCCESS; | 1329 | return ENC_RETURN_SUCCESS; |
| 1330 | } | 1330 | } |
| @@ -1375,14 +1375,14 @@ int32_t ExtendLayerBuffer(sWelsEncCtx* pCtx, · 44 unmodified lines | |||
| 1375 | int32_t ReallocSliceBuffer (sWelsEncCtx* pCtx) { | 1375 | int32_t ReallocSliceBuffer (sWelsEncCtx* pCtx) { |
| 1376 | 1376 | ||
| 1377 | SDqLayer* pCurLayer = pCtx->pCurDqLayer; | 1377 | SDqLayer* pCurLayer = pCtx->pCurDqLayer; |
| 1378 | int32_t iMaxSliceNumOld = pCurLayer->sSliceThreadInfo[0].iMaxSliceNum; | 1378 | int32_t iMaxSliceNumOld = pCurLayer->sSliceBufferInfo[0].iMaxSliceNum; |
| 1379 | int32_t iMaxSliceNumNew = 0; | 1379 | int32_t iMaxSliceNumNew = 0; |
| 1380 | int32_t iRet = 0; | 1380 | int32_t iRet = 0; |
| 1381 | int32_t iSliceIdx = 0; | 1381 | int32_t iSliceIdx = 0; |
| 1382 | int32_t iThreadIdx = 0; | 1382 | int32_t iThreadIdx = 0; |
| 1383 | int32_t iStartIdx = 0; | 1383 | int32_t iStartIdx = 0; |
| 1384 | const int32_t kiCurDid = pCtx->uiDependencyId; | 1384 | const int32_t kiCurDid = pCtx->uiDependencyId; |
| 1385 | SSlice* pLastCodedSlice = pCurLayer->sSliceThreadInfo[0].pSliceBuffer + (iMaxSliceNumOld - 1); | 1385 | SSlice* pLastCodedSlice = pCurLayer->sSliceBufferInfo[0].pSliceBuffer + (iMaxSliceNumOld - 1); |
| 1386 | SSliceArgument* pSliceArgument = & pCtx->pSvcParam->sSpatialLayers[kiCurDid].sSliceArgument; | 1386 | SSliceArgument* pSliceArgument = & pCtx->pSvcParam->sSpatialLayers[kiCurDid].sSliceArgument; |
| 1387 | iRet = CalculateNewSliceNum (pCtx, | 1387 | iRet = CalculateNewSliceNum (pCtx, |
| 1388 | pLastCodedSlice, | 1388 | pLastCodedSlice, |
| @@ -1395,18 +1395,18 @@ int32_t ReallocSliceBuffer (sWelsEncCtx* pCtx) { · 6 unmodified lines | |||
| 1395 | 1395 | ||
| 1396 | iRet = ReallocateSliceList (pCtx, | 1396 | iRet = ReallocateSliceList (pCtx, |
| 1397 | pSliceArgument, | 1397 | pSliceArgument, |
| 1398 | pCurLayer->sSliceThreadInfo[0].pSliceBuffer, | 1398 | pCurLayer->sSliceBufferInfo[0].pSliceBuffer, |
| 1399 | iMaxSliceNumOld, | 1399 | iMaxSliceNumOld, |
| 1400 | iMaxSliceNumNew); | 1400 | iMaxSliceNumNew); |
| 1401 | if (ENC_RETURN_SUCCESS != iRet) { | 1401 | if (ENC_RETURN_SUCCESS != iRet) { |
| 1402 | return iRet; | 1402 | return iRet; |
| 1403 | } | 1403 | } |
| 1404 | 1404 | ||
| 1405 | pCurLayer->sSliceThreadInfo[0].iMaxSliceNum = iMaxSliceNumNew; | 1405 | pCurLayer->sSliceBufferInfo[0].iMaxSliceNum = iMaxSliceNumNew; |
| 1406 | 1406 | ||
| 1407 | iMaxSliceNumNew = 0; | 1407 | iMaxSliceNumNew = 0; |
| 1408 | for(iThreadIdx = 0; iThreadIdx < pCtx->iActiveThreadsNum; iThreadIdx++ ) { | 1408 | for(iThreadIdx = 0; iThreadIdx < pCtx->iActiveThreadsNum; iThreadIdx++ ) { |
| 1409 | iMaxSliceNumNew += pCurLayer->sSliceThreadInfo[iThreadIdx].iMaxSliceNum; | 1409 | iMaxSliceNumNew += pCurLayer->sSliceBufferInfo[iThreadIdx].iMaxSliceNum; |
| 1410 | } | 1410 | } |
| 1411 | 1411 | ||
| 1412 | iRet = ExtendLayerBuffer(pCtx, pCurLayer->iMaxSliceNum, iMaxSliceNumNew); | 1412 | iRet = ExtendLayerBuffer(pCtx, pCurLayer->iMaxSliceNum, iMaxSliceNumNew); |
| @@ -1415,10 +1415,10 @@ int32_t ReallocSliceBuffer (sWelsEncCtx* pCtx) { · 2 unmodified lines | |||
| 1415 | } | 1415 | } |
| 1416 | 1416 | ||
| 1417 | for(iThreadIdx = 0; iThreadIdx < pCtx->iActiveThreadsNum; iThreadIdx++ ) { | 1417 | for(iThreadIdx = 0; iThreadIdx < pCtx->iActiveThreadsNum; iThreadIdx++ ) { |
| 1418 | for (iSliceIdx = 0; iSliceIdx < pCurLayer->sSliceThreadInfo[iThreadIdx].iMaxSliceNum; iSliceIdx++) { | 1418 | for (iSliceIdx = 0; iSliceIdx < pCurLayer->sSliceBufferInfo[iThreadIdx].iMaxSliceNum; iSliceIdx++) { |
| 1419 | pCurLayer->ppSliceInLayer[iStartIdx + iSliceIdx] = pCurLayer->sSliceThreadInfo[iThreadIdx].pSliceBuffer + iSliceIdx; | 1419 | pCurLayer->ppSliceInLayer[iStartIdx + iSliceIdx] = pCurLayer->sSliceBufferInfo[iThreadIdx].pSliceBuffer + iSliceIdx; |
| 1420 | } | 1420 | } |
| 1421 | iStartIdx += pCurLayer->sSliceThreadInfo[iThreadIdx].iMaxSliceNum; | 1421 | iStartIdx += pCurLayer->sSliceBufferInfo[iThreadIdx].iMaxSliceNum; |
| 1422 | } | 1422 | } |
| 1423 | 1423 | ||
| 1424 | pCurLayer->iMaxSliceNum = iMaxSliceNumNew; | 1424 | pCurLayer->iMaxSliceNum = iMaxSliceNumNew; |
| @@ -1477,10 +1477,10 @@ int32_t ReOrderSliceInLayer (sWelsEncCtx* pCtx, · 52 unmodified lines | |||
| 1477 | //before encode all slices in layer, slices' index are init with -1 | 1477 | //before encode all slices in layer, slices' index are init with -1 |
| 1478 | //pSliceBuffer->iSliceIdx will be set to actual slice index when encode one slice | 1478 | //pSliceBuffer->iSliceIdx will be set to actual slice index when encode one slice |
| 1479 | for (iThreadIdx = 0; iThreadIdx < kiThreadNum; iThreadIdx++) { | 1479 | for (iThreadIdx = 0; iThreadIdx < kiThreadNum; iThreadIdx++) { |
| 1480 | iSliceNumInThread = pCurLayer->sSliceThreadInfo[iThreadIdx].iMaxSliceNum; | 1480 | iSliceNumInThread = pCurLayer->sSliceBufferInfo[iThreadIdx].iMaxSliceNum; |
| 1481 | 1481 | ||
| 1482 | for(iSliceIdx =0; iSliceIdx < iSliceNumInThread; iSliceIdx++) { | 1482 | for(iSliceIdx =0; iSliceIdx < iSliceNumInThread; iSliceIdx++) { |
| 1483 | pSliceBuffer = pCurLayer->sSliceThreadInfo[iThreadIdx].pSliceBuffer + iSliceIdx; | 1483 | pSliceBuffer = pCurLayer->sSliceBufferInfo[iThreadIdx].pSliceBuffer + iSliceIdx; |
| 1484 | if (NULL == pSliceBuffer) { | 1484 | if (NULL == pSliceBuffer) { |
| 1485 | return ENC_RETURN_UNEXPECTED; | 1485 | return ENC_RETURN_UNEXPECTED; |
| 1486 | } | 1486 | } |
| @@ -1582,7 +1582,7 @@ int32_t SliceLayerInfoUpdate (sWelsEncCtx* pCtx, · 95 unmodified lines | |||
| 1582 | int32_t iRet = 0; | 1582 | int32_t iRet = 0; |
| 1583 | 1583 | ||
| 1584 | for ( int32_t iThreadIdx = 0; iThreadIdx < pCtx->iActiveThreadsNum; iThreadIdx++) { | 1584 | for ( int32_t iThreadIdx = 0; iThreadIdx < pCtx->iActiveThreadsNum; iThreadIdx++) { |
| 1585 | iMaxSliceNum += pCtx->pCurDqLayer->sSliceThreadInfo[iThreadIdx].iMaxSliceNum; | 1585 | iMaxSliceNum += pCtx->pCurDqLayer->sSliceBufferInfo[iThreadIdx].iMaxSliceNum; |
| 1586 | } | 1586 | } |
| 1587 | 1587 | ||
| 1588 | //reallocate ppSliceInLayer if total encoded slice num exceed max slice num | 1588 | //reallocate ppSliceInLayer if total encoded slice num exceed max slice num |
| @@ -1678,8 +1678,8 @@ void UpdateMbNeighbourInfoForNextSlice (SDqLayer* pCurDq, · 89 unmodified lines | |||
| 1678 | void AddSliceBoundary (sWelsEncCtx* pEncCtx, SSlice* pCurSlice, SSliceCtx* pSliceCtx, SMB* pCurMb, | 1678 | void AddSliceBoundary (sWelsEncCtx* pEncCtx, SSlice* pCurSlice, SSliceCtx* pSliceCtx, SMB* pCurMb, |
| 1679 | int32_t iFirstMbIdxOfNextSlice, const int32_t kiLastMbIdxInPartition) { | 1679 | int32_t iFirstMbIdxOfNextSlice, const int32_t kiLastMbIdxInPartition) { |
| 1680 | SDqLayer* pCurLayer = pEncCtx->pCurDqLayer; | 1680 | SDqLayer* pCurLayer = pEncCtx->pCurDqLayer; |
| 1681 | SSlice* pSliceBuffer = pCurLayer->sSliceThreadInfo[pCurSlice->uiThreadIdx].pSliceBuffer; | 1681 | SSlice* pSliceBuffer = pCurLayer->sSliceBufferInfo[pCurSlice->uiThreadIdx].pSliceBuffer; |
| 1682 | int32_t iCodedSliceNum = pCurLayer->sSliceThreadInfo[pCurSlice->uiThreadIdx].iCodedSliceNum; | 1682 | int32_t iCodedSliceNum = pCurLayer->sSliceBufferInfo[pCurSlice->uiThreadIdx].iCodedSliceNum; |
| 1683 | int32_t iCurMbIdx = pCurMb->iMbXY; | 1683 | int32_t iCurMbIdx = pCurMb->iMbXY; |
| 1684 | uint16_t iCurSliceIdc = pSliceCtx->pOverallMbMap[ iCurMbIdx ]; | 1684 | uint16_t iCurSliceIdc = pSliceCtx->pOverallMbMap[ iCurMbIdx ]; |
| 1685 | const int32_t kiSliceIdxStep = pEncCtx->iActiveThreadsNum; | 1685 | const int32_t kiSliceIdxStep = pEncCtx->iActiveThreadsNum; |