MCPcopy Create free account
hub / github.com/cisco/openh264 / InitSliceThreadInfo

Function InitSliceThreadInfo

codec/encoder/core/src/svc_encode_slice.cpp:1033–1083  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1031}
1032
1033int32_t InitSliceThreadInfo (sWelsEncCtx* pCtx,
1034 SDqLayer* pDqLayer,
1035 const int32_t kiDlayerIndex,
1036 CMemoryAlign* pMa) {
1037 int32_t iThreadNum = pCtx->pSvcParam->iMultipleThreadIdc;
1038 int32_t iMaxSliceNum = 0;
1039 int32_t iSlcBufferNum = 0;
1040 int32_t iIdx = 0;
1041 int32_t iRet = 0;
1042
1043 assert (iThreadNum > 0);
1044
1045 //for fixed slice num case, no need to reallocate, so one slice buffer for all thread
1046 if (pDqLayer->bThreadSlcBufferFlag) {
1047 iMaxSliceNum = pDqLayer->iMaxSliceNum / iThreadNum + 1;
1048 iSlcBufferNum = iThreadNum;
1049 } else {
1050 iMaxSliceNum = pDqLayer->iMaxSliceNum;
1051 iSlcBufferNum = 1;
1052 }
1053
1054 while (iIdx < iSlcBufferNum) {
1055 pDqLayer->sSliceBufferInfo[iIdx].iMaxSliceNum = iMaxSliceNum;
1056 pDqLayer->sSliceBufferInfo[iIdx].iCodedSliceNum = 0;
1057 pDqLayer->sSliceBufferInfo[iIdx].pSliceBuffer = (SSlice*)pMa->WelsMallocz (sizeof (SSlice) * iMaxSliceNum,
1058 "pSliceBuffer");
1059 if (NULL == pDqLayer->sSliceBufferInfo[iIdx].pSliceBuffer) {
1060 WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR,
1061 "CWelsH264SVCEncoder::InitSliceThreadInfo: pSliceThreadInfo->pSliceBuffer[iIdx] is NULL");
1062 return ENC_RETURN_MEMALLOCERR;
1063 }
1064 iRet = InitSliceList (pDqLayer->sSliceBufferInfo[iIdx].pSliceBuffer,
1065 &pCtx->pOut->sBsWrite,
1066 iMaxSliceNum,
1067 pCtx->iSliceBufferSize[kiDlayerIndex],
1068 pDqLayer->bSliceBsBufferFlag,
1069 pMa);
1070 if (ENC_RETURN_SUCCESS != iRet) {
1071 return iRet;
1072 }
1073 iIdx++;
1074 }
1075
1076 for (; iIdx < MAX_THREADS_NUM; iIdx++) {
1077 pDqLayer->sSliceBufferInfo[iIdx].iMaxSliceNum = 0;
1078 pDqLayer->sSliceBufferInfo[iIdx].iCodedSliceNum = 0;
1079 pDqLayer->sSliceBufferInfo[iIdx].pSliceBuffer = NULL;
1080 }
1081
1082 return ENC_RETURN_SUCCESS;
1083}
1084
1085int32_t InitSliceInLayer (sWelsEncCtx* pCtx,
1086 SDqLayer* pDqLayer,

Callers 1

InitSliceInLayerFunction · 0.85

Calls 3

WelsLogFunction · 0.85
InitSliceListFunction · 0.85
WelsMalloczMethod · 0.80

Tested by

no test coverage detected