| 86 | } |
| 87 | |
| 88 | void CalcSliceComplexRatio (SDqLayer* pCurDq) { |
| 89 | SSliceCtx* pSliceCtx = &pCurDq->sSliceEncCtx; |
| 90 | SSlice** ppSliceInLayer = pCurDq->ppSliceInLayer; |
| 91 | int32_t iSumAv = 0; |
| 92 | const int32_t kiSliceCount = pSliceCtx->iSliceNumInFrame; |
| 93 | int32_t iSliceIdx = 0; |
| 94 | int32_t iAvI[MAX_SLICES_NUM]; |
| 95 | |
| 96 | assert (kiSliceCount <= MAX_SLICES_NUM); |
| 97 | WelsEmms(); |
| 98 | |
| 99 | while (iSliceIdx < kiSliceCount) { |
| 100 | iAvI[iSliceIdx] = WELS_DIV_ROUND (INT_MULTIPLY * ppSliceInLayer[iSliceIdx]->iCountMbNumInSlice, |
| 101 | ppSliceInLayer[iSliceIdx]->uiSliceConsumeTime); |
| 102 | MT_TRACE_LOG (NULL, WELS_LOG_DEBUG, "[MT] CalcSliceComplexRatio(), uiSliceConsumeTime[%d]= %d us, slice_run= %d", |
| 103 | iSliceIdx, |
| 104 | ppSliceInLayer[iSliceIdx]->uiSliceConsumeTime, ppSliceInLayer[iSliceIdx]->iCountMbNumInSlice); |
| 105 | iSumAv += iAvI[iSliceIdx]; |
| 106 | |
| 107 | ++ iSliceIdx; |
| 108 | } |
| 109 | while (-- iSliceIdx >= 0) { |
| 110 | ppSliceInLayer[iSliceIdx]->iSliceComplexRatio = WELS_DIV_ROUND (INT_MULTIPLY * iAvI[iSliceIdx], iSumAv); |
| 111 | } |
| 112 | } |
| 113 | |
| 114 | int32_t NeedDynamicAdjust (SSlice** ppSliceInLayer, const int32_t iSliceNum) { |
| 115 | if (NULL == ppSliceInLayer) { |
no outgoing calls
no test coverage detected