Lines Matching refs:pWelsSvcRc

61 void RcInitLayerMemory (SWelsSvcRc* pWelsSvcRc, CMemoryAlign* pMA, const int32_t kiMaxTl) {  in RcInitLayerMemory()  argument
62 const int32_t kiGomSize = pWelsSvcRc->iGomSize; in RcInitLayerMemory()
71 pWelsSvcRc->pTemporalOverRc = (SRCTemporal*)pBaseMem; in RcInitLayerMemory()
73 pWelsSvcRc->pGomComplexity = (double*)pBaseMem; in RcInitLayerMemory()
75 pWelsSvcRc->pGomForegroundBlockNum = (int32_t*)pBaseMem; in RcInitLayerMemory()
77 pWelsSvcRc->pCurrentFrameGomSad = (int32_t*)pBaseMem; in RcInitLayerMemory()
79 pWelsSvcRc->pGomCost = (int32_t*)pBaseMem; in RcInitLayerMemory()
83 void RcFreeLayerMemory (SWelsSvcRc* pWelsSvcRc, CMemoryAlign* pMA) { in RcFreeLayerMemory() argument
84 if (pWelsSvcRc != NULL && pWelsSvcRc->pTemporalOverRc != NULL) { in RcFreeLayerMemory()
85 pMA->WelsFree (pWelsSvcRc->pTemporalOverRc, "pWelsSvcRc->pTemporalOverRc"); in RcFreeLayerMemory()
86 pWelsSvcRc->pTemporalOverRc = NULL; in RcFreeLayerMemory()
87 pWelsSvcRc->pGomComplexity = NULL; in RcFreeLayerMemory()
88 pWelsSvcRc->pGomForegroundBlockNum = NULL; in RcFreeLayerMemory()
89 pWelsSvcRc->pCurrentFrameGomSad = NULL; in RcFreeLayerMemory()
90 pWelsSvcRc->pGomCost = NULL; in RcFreeLayerMemory()
104 SWelsSvcRc* pWelsSvcRc = NULL; in RcInitSequenceParameter() local
113 pWelsSvcRc = &pEncCtx->pWelsSvcRc[j]; in RcInitSequenceParameter()
116 pWelsSvcRc->iNumberMbFrame = iMbWidth * (pDLayerParam->iVideoHeight >> 4); in RcInitSequenceParameter()
118 pWelsSvcRc->iRcVaryPercentage = pEncCtx->pSvcParam->iBitsVaryPercentage; // % -- for temp in RcInitSequenceParameter()
119 pWelsSvcRc->iRcVaryRatio = pWelsSvcRc->iRcVaryPercentage; in RcInitSequenceParameter()
121 pWelsSvcRc->iBufferFullnessSkip = 0; in RcInitSequenceParameter()
122 pWelsSvcRc->uiLastTimeStamp = 0; in RcInitSequenceParameter()
123 pWelsSvcRc->iCost2BitsIntra = 1; in RcInitSequenceParameter()
124 pWelsSvcRc->iAvgCost2Bits = 1; in RcInitSequenceParameter()
125 pWelsSvcRc->iSkipBufferRatio = SKIP_RATIO; in RcInitSequenceParameter()
126 pWelsSvcRc->iContinualSkipFrames = 0; in RcInitSequenceParameter()
127 pWelsSvcRc->iQpRangeUpperInFrame = (QP_RANGE_UPPER_MODE1 * MAX_BITS_VARY_PERCENTAGE - (( in RcInitSequenceParameter()
129 pWelsSvcRc->iRcVaryRatio)) / MAX_BITS_VARY_PERCENTAGE; in RcInitSequenceParameter()
130 pWelsSvcRc->iQpRangeLowerInFrame = (QP_RANGE_LOWER_MODE1 * MAX_BITS_VARY_PERCENTAGE - (( in RcInitSequenceParameter()
132 pWelsSvcRc->iRcVaryRatio)) / MAX_BITS_VARY_PERCENTAGE; in RcInitSequenceParameter()
135 pWelsSvcRc->iSkipQpValue = SKIP_QP_90P; in RcInitSequenceParameter()
139 pWelsSvcRc->iSkipQpValue = SKIP_QP_180P; in RcInitSequenceParameter()
143 pWelsSvcRc->iSkipQpValue = SKIP_QP_360P; in RcInitSequenceParameter()
147 pWelsSvcRc->iSkipQpValue = SKIP_QP_720P; in RcInitSequenceParameter()
151 …iGomRowMode0 = iGomRowMode1 + ((iGomRowMode0 - iGomRowMode1) * pWelsSvcRc->iRcVaryRatio / MAX_BITS… in RcInitSequenceParameter()
153 pWelsSvcRc->iNumberMbGom = iMbWidth * iGomRowMode0; in RcInitSequenceParameter()
155 pWelsSvcRc->iMinQp = pEncCtx->pSvcParam->iMinQp; in RcInitSequenceParameter()
157 pWelsSvcRc->iMaxQp = pEncCtx->pSvcParam->iMaxQp; in RcInitSequenceParameter()
159pWelsSvcRc->iFrameDeltaQpUpper = LAST_FRAME_QP_RANGE_UPPER_MODE1 - ((LAST_FRAME_QP_RANGE_UPPER_MOD… in RcInitSequenceParameter()
160 … LAST_FRAME_QP_RANGE_UPPER_MODE0) * pWelsSvcRc->iRcVaryRatio / MAX_BITS_VARY_PERCENTAGE); in RcInitSequenceParameter()
161pWelsSvcRc->iFrameDeltaQpLower = LAST_FRAME_QP_RANGE_LOWER_MODE1 - ((LAST_FRAME_QP_RANGE_LOWER_MOD… in RcInitSequenceParameter()
162 … LAST_FRAME_QP_RANGE_LOWER_MODE0) * pWelsSvcRc->iRcVaryRatio / MAX_BITS_VARY_PERCENTAGE); in RcInitSequenceParameter()
164 pWelsSvcRc->iSkipFrameNum = 0; in RcInitSequenceParameter()
165pWelsSvcRc->iGomSize = (pWelsSvcRc->iNumberMbFrame + pWelsSvcRc->iNumberMbGom - 1) / pWelsSvcRc->i… in RcInitSequenceParameter()
166 pWelsSvcRc->bEnableGomQp = true; in RcInitSequenceParameter()
168 …RcInitLayerMemory (pWelsSvcRc, pEncCtx->pMemAlign, 1 + pEncCtx->pSvcParam->sDependencyLayers[j].iH… in RcInitSequenceParameter()
173 pWelsSvcRc->iNumberMbGom = pWelsSvcRc->iNumberMbFrame; in RcInitSequenceParameter()
179 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcInitTlWeight() local
180 SRCTemporal* pTOverRc = pWelsSvcRc->pTemporalOverRc; in RcInitTlWeight()
194 pTOverRc[n].iMinQp = pWelsSvcRc->iMinQp + (n << 1); in RcInitTlWeight()
196 pTOverRc[n].iMaxQp = pWelsSvcRc->iMaxQp + (n << 1); in RcInitTlWeight()
202 pWelsSvcRc->iTlOfFrames[n] = 0; in RcInitTlWeight()
205 pWelsSvcRc->iTlOfFrames[k + n] = i; in RcInitTlWeight()
209 pWelsSvcRc->iPreviousGopSize = kiGopSize; in RcInitTlWeight()
210 pWelsSvcRc->iGopNumberInVGop = VGOP_SIZE / kiGopSize; in RcInitTlWeight()
214 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcUpdateBitrateFps() local
215 SRCTemporal* pTOverRc = pWelsSvcRc->pTemporalOverRc; in RcUpdateBitrateFps()
226 pWelsSvcRc->iBitRate = pDLayerParam->iSpatialBitrate; in RcUpdateBitrateFps()
227 pWelsSvcRc->fFrameRate = pDLayerParamInternal->fOutputFrameRate; in RcUpdateBitrateFps()
229 int32_t iTargetVaryRange = ((MAX_BITS_VARY_PERCENTAGE - pWelsSvcRc->iRcVaryRatio) >> 1); in RcUpdateBitrateFps()
241pWelsSvcRc->iBufferSizeSkip = WELS_DIV_ROUND (pWelsSvcRc->iBitRate * pWelsSvcRc->iSkipBufferRatio,… in RcUpdateBitrateFps()
242pWelsSvcRc->iBufferSizePadding = WELS_DIV_ROUND (pWelsSvcRc->iBitRate * PADDING_BUFFER_RATIO, INT_… in RcUpdateBitrateFps()
245 if (pWelsSvcRc->iBitsPerFrame > REMAIN_BITS_TH) { in RcUpdateBitrateFps()
246pWelsSvcRc->iRemainingBits = WELS_DIV_ROUND (static_cast<int64_t> (pWelsSvcRc->iRemainingBits) * i… in RcUpdateBitrateFps()
247 pWelsSvcRc->iBitsPerFrame); in RcUpdateBitrateFps()
249 pWelsSvcRc->iBitsPerFrame = input_iBitsPerFrame; in RcUpdateBitrateFps()
250 pWelsSvcRc->iMaxBitsPerFrame = WELS_DIV_ROUND (pDLayerParam->iMaxSpatialBitrate, in RcUpdateBitrateFps()
257 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[kiDid]; in RcInitVGop() local
258 SRCTemporal* pTOverRc = pWelsSvcRc->pTemporalOverRc; in RcInitVGop()
261 pWelsSvcRc->iRemainingBits = VGOP_SIZE * pWelsSvcRc->iBitsPerFrame; in RcInitVGop()
262 pWelsSvcRc->iRemainingWeights = pWelsSvcRc->iGopNumberInVGop * WEIGHT_MULTIPLY; in RcInitVGop()
264 pWelsSvcRc->iFrameCodedInVGop = 0; in RcInitVGop()
265 pWelsSvcRc->iGopIndexInVGop = 0; in RcInitVGop()
269 pWelsSvcRc->iSkipFrameInVGop = 0; in RcInitVGop()
274 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[kiDid]; in RcInitRefreshParameter() local
275 SRCTemporal* pTOverRc = pWelsSvcRc->pTemporalOverRc; in RcInitRefreshParameter()
282 pWelsSvcRc->iIntraComplexity = 0; in RcInitRefreshParameter()
283 pWelsSvcRc->iIntraMbCount = 0; in RcInitRefreshParameter()
284 pWelsSvcRc->iIntraComplxMean = 0; in RcInitRefreshParameter()
292 pWelsSvcRc->iBufferFullnessSkip = 0; in RcInitRefreshParameter()
293 pWelsSvcRc->iBufferMaxBRFullness[EVEN_TIME_WINDOW] = 0; in RcInitRefreshParameter()
294 pWelsSvcRc->iBufferMaxBRFullness[ODD_TIME_WINDOW] = 0; in RcInitRefreshParameter()
295 pWelsSvcRc->iPredFrameBit = 0; in RcInitRefreshParameter()
296 pWelsSvcRc->iBufferFullnessPadding = 0; in RcInitRefreshParameter()
298 pWelsSvcRc->iGopIndexInVGop = 0; in RcInitRefreshParameter()
299 pWelsSvcRc->iRemainingBits = 0; in RcInitRefreshParameter()
300 pWelsSvcRc->iBitsPerFrame = 0; in RcInitRefreshParameter()
303 pWelsSvcRc->iPreviousBitrate = pDLayerParam->iSpatialBitrate; in RcInitRefreshParameter()
304 pWelsSvcRc->dPreviousFps = pDLayerParamInternal->fOutputFrameRate; in RcInitRefreshParameter()
306 memset (pWelsSvcRc->pCurrentFrameGomSad, 0, pWelsSvcRc->iGomSize * sizeof (int32_t)); in RcInitRefreshParameter()
315 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[iCurDid]; in RcJudgeBitrateFpsUpdate() local
319 if ((pWelsSvcRc->iPreviousBitrate != pDLayerParam->iSpatialBitrate) || in RcJudgeBitrateFpsUpdate()
320 (pWelsSvcRc->dPreviousFps - pDLayerParamInternal->fOutputFrameRate) > EPSN || in RcJudgeBitrateFpsUpdate()
321 (pWelsSvcRc->dPreviousFps - pDLayerParamInternal->fOutputFrameRate) < -EPSN) { in RcJudgeBitrateFpsUpdate()
322 pWelsSvcRc->iPreviousBitrate = pDLayerParam->iSpatialBitrate; in RcJudgeBitrateFpsUpdate()
323 pWelsSvcRc->dPreviousFps = pDLayerParamInternal->fOutputFrameRate; in RcJudgeBitrateFpsUpdate()
332 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[kiDid]; in RcTraceVGopBitrate() local
334 if (pWelsSvcRc->iFrameCodedInVGop) { in RcTraceVGopBitrate()
336 SRCTemporal* pTOverRc = pWelsSvcRc->pTemporalOverRc; in RcTraceVGopBitrate()
338 int32_t iTotalBits = pWelsSvcRc->iPaddingBitrateStat; in RcTraceVGopBitrate()
344 int32_t iFrameInVGop = pWelsSvcRc->iFrameCodedInVGop + pWelsSvcRc->iSkipFrameInVGop; in RcTraceVGopBitrate()
346 iVGopBitrate = WELS_ROUND (iTotalBits / iFrameInVGop * pWelsSvcRc->fFrameRate); in RcTraceVGopBitrate()
361 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[kiDid]; in RcUpdateTemporalZero() local
365 if (pWelsSvcRc->iPreviousGopSize != kiGopSize) { in RcUpdateTemporalZero()
371 …} else if (pWelsSvcRc->iGopIndexInVGop == pWelsSvcRc->iGopNumberInVGop || pEncCtx->eSliceType == I… in RcUpdateTemporalZero()
377 pWelsSvcRc->iGopIndexInVGop++; in RcUpdateTemporalZero()
398 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcCalculateIdrQp() local
424 iMinQp = WELS_CLIP3 (iMinQp, pWelsSvcRc->iMinQp, pWelsSvcRc->iMaxQp); in RcCalculateIdrQp()
425 iMaxQp = WELS_CLIP3 (iMaxQp, pWelsSvcRc->iMinQp, pWelsSvcRc->iMaxQp); in RcCalculateIdrQp()
426 if (0 == pWelsSvcRc->iIdrNum) { //the first IDR frame in RcCalculateIdrQp()
427 pWelsSvcRc->iInitialQp = dInitialQPArray[iBppIndex][i]; in RcCalculateIdrQp()
431 if (pWelsSvcRc->iNumberMbFrame != pWelsSvcRc->iIntraMbCount) { in RcCalculateIdrQp()
432 pWelsSvcRc->iIntraComplexity = pWelsSvcRc->iIntraComplexity * pWelsSvcRc->iNumberMbFrame / in RcCalculateIdrQp()
433 pWelsSvcRc->iIntraMbCount; in RcCalculateIdrQp()
437 pWelsSvcRc->iIntraComplxMean); in RcCalculateIdrQp()
439 pWelsSvcRc->iQStep = WELS_DIV_ROUND ((pWelsSvcRc->iIntraComplexity * iCmplxRatio), in RcCalculateIdrQp()
440 (pWelsSvcRc->iTargetBits * INT_MULTIPLY)); in RcCalculateIdrQp()
441 pWelsSvcRc->iInitialQp = RcConvertQStep2Qp (pWelsSvcRc->iQStep); in RcCalculateIdrQp()
444 pWelsSvcRc->iInitialQp = WELS_CLIP3 (pWelsSvcRc->iInitialQp, iMinQp, iMaxQp); in RcCalculateIdrQp()
445 pEncCtx->iGlobalQp = pWelsSvcRc->iInitialQp; in RcCalculateIdrQp()
446 pWelsSvcRc->iQStep = RcConvertQp2QStep (pEncCtx->iGlobalQp); in RcCalculateIdrQp()
447 pWelsSvcRc->iLastCalculatedQScale = pEncCtx->iGlobalQp; in RcCalculateIdrQp()
448 pWelsSvcRc->iMinFrameQp = WELS_CLIP3 (pEncCtx->iGlobalQp - DELTA_QP_BGD_THD, iMinQp, iMaxQp); in RcCalculateIdrQp()
449 pWelsSvcRc->iMaxFrameQp = WELS_CLIP3 (pEncCtx->iGlobalQp + DELTA_QP_BGD_THD, iMinQp, iMaxQp); in RcCalculateIdrQp()
454 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcCalculatePictureQp() local
456 SRCTemporal* pTOverRc = &pWelsSvcRc->pTemporalOverRc[iTl]; in RcCalculatePictureQp()
465 iLumaQp = pWelsSvcRc->iInitialQp; in RcCalculatePictureQp()
466 } else if (pWelsSvcRc->iCurrentBitsLevel == BITS_EXCEEDED) { in RcCalculatePictureQp()
467 iLumaQp = pWelsSvcRc->iLastCalculatedQScale + DELTA_QP_BGD_THD; in RcCalculatePictureQp()
469 int32_t iLastIdxCodecInVGop = pWelsSvcRc->iFrameCodedInVGop - 1; in RcCalculatePictureQp()
472 int32_t iTlLast = pWelsSvcRc->iTlOfFrames[iLastIdxCodecInVGop]; in RcCalculatePictureQp()
484pWelsSvcRc->iQStep = WELS_DIV_ROUND ((pTOverRc->iLinearCmplx * iCmplxRatio), (pWelsSvcRc->iTargetB… in RcCalculatePictureQp()
485 iLumaQp = RcConvertQStep2Qp (pWelsSvcRc->iQStep); in RcCalculatePictureQp()
488 iFrameComplexity, pTOverRc->iFrameCmplxMean, pWelsSvcRc->iQStep, iLumaQp); in RcCalculatePictureQp()
490 int32_t iLastIdxCodecInVGop = pWelsSvcRc->iFrameCodedInVGop - 1; in RcCalculatePictureQp()
493 int32_t iTlLast = pWelsSvcRc->iTlOfFrames[iLastIdxCodecInVGop]; in RcCalculatePictureQp()
500pWelsSvcRc->iMinFrameQp = WELS_CLIP3 (pWelsSvcRc->iLastCalculatedQScale - pWelsSvcRc->iFrameDelta… in RcCalculatePictureQp()
502pWelsSvcRc->iMaxFrameQp = WELS_CLIP3 (pWelsSvcRc->iLastCalculatedQScale + pWelsSvcRc->iFrameDelta… in RcCalculatePictureQp()
505 iLumaQp = WELS_CLIP3 (iLumaQp, pWelsSvcRc->iMinFrameQp, pWelsSvcRc->iMaxFrameQp); in RcCalculatePictureQp()
511 iLumaQp = WELS_CLIP3 (iLumaQp, pWelsSvcRc->iMinFrameQp, pWelsSvcRc->iMaxFrameQp); in RcCalculatePictureQp()
513 pWelsSvcRc->iQStep = RcConvertQp2QStep (iLumaQp); in RcCalculatePictureQp()
514 pWelsSvcRc->iLastCalculatedQScale = iLumaQp; in RcCalculatePictureQp()
528 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcInitSliceInformation() local
530pWelsSvcRc->iBitsPerMb = WELS_DIV_ROUND (static_cast<int64_t> (pWelsSvcRc->iTargetBits) * INT_M… in RcInitSliceInformation()
531 pWelsSvcRc->iNumberMbFrame); in RcInitSliceInformation()
532 pWelsSvcRc->bGomRC = (RC_OFF_MODE == pEncCtx->pSvcParam->iRCMode || in RcInitSliceInformation()
547 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcDecideTargetBits() local
548 SRCTemporal* pTOverRc = &pWelsSvcRc->pTemporalOverRc[pEncCtx->uiTemporalId]; in RcDecideTargetBits()
550 pWelsSvcRc->iCurrentBitsLevel = BITS_NORMAL; in RcDecideTargetBits()
553 pWelsSvcRc->iTargetBits = pWelsSvcRc->iBitsPerFrame * IDR_BITRATE_RATIO; in RcDecideTargetBits()
555 if (pWelsSvcRc->iRemainingWeights > pTOverRc->iTlayerWeight) in RcDecideTargetBits()
556pWelsSvcRc->iTargetBits = WELS_DIV_ROUND (static_cast<int64_t> (pWelsSvcRc->iRemainingBits) * pTOv… in RcDecideTargetBits()
557 pWelsSvcRc->iRemainingWeights); in RcDecideTargetBits()
559 pWelsSvcRc->iTargetBits = pWelsSvcRc->iRemainingBits; in RcDecideTargetBits()
560 if ((pWelsSvcRc->iTargetBits <= 0) && ((pEncCtx->pSvcParam->iRCMode == RC_BITRATE_MODE) in RcDecideTargetBits()
562 pWelsSvcRc->iCurrentBitsLevel = BITS_EXCEEDED; in RcDecideTargetBits()
564pWelsSvcRc->iTargetBits = WELS_CLIP3 (pWelsSvcRc->iTargetBits, pTOverRc->iMinBitsTl, pTOverRc->iMa… in RcDecideTargetBits()
566 pWelsSvcRc->iRemainingWeights -= pTOverRc->iTlayerWeight; in RcDecideTargetBits()
572 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcDecideTargetBitsTimestamp() local
575 SRCTemporal* pTOverRc = &pWelsSvcRc->pTemporalOverRc[iTl]; in RcDecideTargetBitsTimestamp()
576 pWelsSvcRc->iCurrentBitsLevel = BITS_NORMAL; in RcDecideTargetBitsTimestamp()
579 …int32_t iBufferTh = static_cast<int32_t> (pWelsSvcRc->iBufferSizeSkip - pWelsSvcRc->iBufferFullnes… in RcDecideTargetBitsTimestamp()
581 pWelsSvcRc->iCurrentBitsLevel = BITS_EXCEEDED; in RcDecideTargetBitsTimestamp()
582 pWelsSvcRc->iTargetBits = pTOverRc->iMinBitsTl; in RcDecideTargetBitsTimestamp()
587pWelsSvcRc->iTargetBits = static_cast<int32_t> (((double) (pDLayerParam->iSpatialBitrate) / (doubl… in RcDecideTargetBitsTimestamp()
590pWelsSvcRc->iTargetBits = static_cast<int32_t> (((double) (pDLayerParam->iSpatialBitrate) / (doubl… in RcDecideTargetBitsTimestamp()
595 …iMaxTh, iMinTh, pWelsSvcRc->iTargetBits, pWelsSvcRc->iBufferSizeSkip, pWelsSvcRc->iBufferFullnessS… in RcDecideTargetBitsTimestamp()
596 pWelsSvcRc->iTargetBits = WELS_CLIP3 (pWelsSvcRc->iTargetBits, iMinTh, iMaxTh); in RcDecideTargetBitsTimestamp()
600 …int32_t iBufferTh = static_cast<int32_t> (pWelsSvcRc->iBufferSizeSkip - pWelsSvcRc->iBufferFullnes… in RcDecideTargetBitsTimestamp()
602 pWelsSvcRc->iCurrentBitsLevel = BITS_EXCEEDED; in RcDecideTargetBitsTimestamp()
603 pWelsSvcRc->iTargetBits = pTOverRc->iMinBitsTl; in RcDecideTargetBitsTimestamp()
606 … iBufferTh, pWelsSvcRc->iTargetBits, pWelsSvcRc->iBufferSizeSkip, pWelsSvcRc->iBufferFullnessSkip); in RcDecideTargetBitsTimestamp()
613pWelsSvcRc->iTargetBits = WELS_DIV_ROUND (pTOverRc->iTlayerWeight * kiGopBits, INT_MULTIPLY * 10 *… in RcDecideTargetBitsTimestamp()
620 …iMaxTh, iMinTh, pWelsSvcRc->iTargetBits, pWelsSvcRc->iBufferSizeSkip, pWelsSvcRc->iBufferFullnessS… in RcDecideTargetBitsTimestamp()
621 pWelsSvcRc->iTargetBits = WELS_CLIP3 (pWelsSvcRc->iTargetBits, iMinTh, iMaxTh); in RcDecideTargetBitsTimestamp()
628 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcInitGomParameters() local
633 pWelsSvcRc->iAverageFrameQp = 0; in RcInitGomParameters()
639 memset (pWelsSvcRc->pGomComplexity, 0, pWelsSvcRc->iGomSize * sizeof (double)); in RcInitGomParameters()
640 memset (pWelsSvcRc->pGomCost, 0, pWelsSvcRc->iGomSize * sizeof (int32_t)); in RcInitGomParameters()
644 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcCalculateMbQp() local
652 …tx->pVaa->sAdaptiveQuantParam.pMotionTextureIndexToDeltaQp[pCurMb->iMbXY], pWelsSvcRc->iMinFrameQp, in RcCalculateMbQp()
653 pWelsSvcRc->iMaxFrameQp); in RcCalculateMbQp()
660 SWelsSvcRc* pWelsSvcRc = NULL, *pWelsSvcRc_Base = NULL; in RcJudgeBaseUsability() local
667 pWelsSvcRc_Base = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId - 1]; in RcJudgeBaseUsability()
669 pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcJudgeBaseUsability()
670 pWelsSvcRc_Base = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId - 1]; in RcJudgeBaseUsability()
673 if ((pDLayerParam->iVideoWidth * pDLayerParam->iVideoHeight / pWelsSvcRc->iNumberMbGom) == in RcJudgeBaseUsability()
683 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcGomTargetBits() local
694 iLastGomIndex = pSOverRc->iEndMbSlice / pWelsSvcRc->iNumberMbGom; in RcGomTargetBits()
703 pWelsSvcRc_Base = (pWelsSvcRc_Base) ? pWelsSvcRc_Base : pWelsSvcRc; in RcGomTargetBits()
720 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcCalculateGomQp() local
740 pSOverRc->iCalculatedQpSlice = WELS_CLIP3 (pSOverRc->iCalculatedQpSlice, pWelsSvcRc->iMinFrameQp, in RcCalculateGomQp()
741 pWelsSvcRc->iMaxFrameQp); in RcCalculateGomQp()
748 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcVBufferCalculationSkip() local
749 SRCTemporal* pTOverRc = pWelsSvcRc->pTemporalOverRc; in RcVBufferCalculationSkip()
750 const int32_t kiOutputBits = pWelsSvcRc->iBitsPerFrame; in RcVBufferCalculationSkip()
751 const int32_t kiOutputMaxBits = pWelsSvcRc->iMaxBitsPerFrame; in RcVBufferCalculationSkip()
753 pWelsSvcRc->iBufferFullnessSkip += (pWelsSvcRc->iFrameDqBits - kiOutputBits); in RcVBufferCalculationSkip()
754pWelsSvcRc->iBufferMaxBRFullness[EVEN_TIME_WINDOW] += (pWelsSvcRc->iFrameDqBits - kiOutputMaxBits); in RcVBufferCalculationSkip()
755 pWelsSvcRc->iBufferMaxBRFullness[ODD_TIME_WINDOW] += (pWelsSvcRc->iFrameDqBits - kiOutputMaxBits); in RcVBufferCalculationSkip()
759 pWelsSvcRc->iBufferFullnessSkip, pWelsSvcRc->iBufferMaxBRFullness[EVEN_TIME_WINDOW]); in RcVBufferCalculationSkip()
762 for (int32_t i = pWelsSvcRc->iFrameCodedInVGop + 1; i < VGOP_SIZE; i++) in RcVBufferCalculationSkip()
763 iVGopBitsPred += pTOverRc[pWelsSvcRc->iTlOfFrames[i]].iMinBitsTl; in RcVBufferCalculationSkip()
764 iVGopBitsPred -= pWelsSvcRc->iRemainingBits; in RcVBufferCalculationSkip()
765 double dIncPercent = iVGopBitsPred * 100.0 / (pWelsSvcRc->iBitsPerFrame * VGOP_SIZE) - in RcVBufferCalculationSkip()
768 if ((pWelsSvcRc->iBufferFullnessSkip > pWelsSvcRc->iBufferSizeSkip in RcVBufferCalculationSkip()
769 && pWelsSvcRc->iAverageFrameQp > pWelsSvcRc->iSkipQpValue) in RcVBufferCalculationSkip()
770 || (dIncPercent > pWelsSvcRc->iRcVaryPercentage)) { in RcVBufferCalculationSkip()
771 pWelsSvcRc->bSkipFlag = true; in RcVBufferCalculationSkip()
775 pWelsSvcRc->iRcVaryPercentage, pWelsSvcRc->bSkipFlag); in RcVBufferCalculationSkip()
778 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[iDidIdx]; in CheckFrameSkipBasedMaxbr() local
783 const int32_t iSentBits = pWelsSvcRc->iBitsPerFrame; in CheckFrameSkipBasedMaxbr()
784 const int32_t kiOutputMaxBits = pWelsSvcRc->iMaxBitsPerFrame; in CheckFrameSkipBasedMaxbr()
788 …const int32_t iPredSkipFramesTarBr = (WELS_DIV_ROUND (pWelsSvcRc->iBufferFullnessSkip, iSentBits) … in CheckFrameSkipBasedMaxbr()
789 …const int32_t iPredSkipFramesMaxBr = (WELS_MAX (WELS_DIV_ROUND (pWelsSvcRc->iBufferMaxBRFullness[E… in CheckFrameSkipBasedMaxbr()
806 bool bJudgeBufferFullSkip = (pWelsSvcRc->iContinualSkipFrames <= iPredSkipFramesTarBr) in CheckFrameSkipBasedMaxbr()
807 && (pWelsSvcRc->iBufferFullnessSkip > pWelsSvcRc->iBufferSizeSkip); in CheckFrameSkipBasedMaxbr()
808 bool bJudgeMaxBRbufferFullSkip = (pWelsSvcRc->iContinualSkipFrames <= iPredSkipFramesMaxBr) in CheckFrameSkipBasedMaxbr()
810 …&& (pWelsSvcRc->iBufferMaxBRFullness[EVEN_TIME_WINDOW] + pWelsSvcRc->iPredFrameBit - iAvailableBit… in CheckFrameSkipBasedMaxbr()
812 && (pWelsSvcRc->bNeedShiftWindowCheck[EVEN_TIME_WINDOW]) in CheckFrameSkipBasedMaxbr()
813 …&& (pWelsSvcRc->iBufferMaxBRFullness[EVEN_TIME_WINDOW] + pWelsSvcRc->iPredFrameBit - iAvailableBit… in CheckFrameSkipBasedMaxbr()
816 && (pWelsSvcRc->bNeedShiftWindowCheck[ODD_TIME_WINDOW]) in CheckFrameSkipBasedMaxbr()
817 …&& (pWelsSvcRc->iBufferMaxBRFullness[ODD_TIME_WINDOW] + pWelsSvcRc->iPredFrameBit - iAvailableBits… in CheckFrameSkipBasedMaxbr()
820 pWelsSvcRc->bSkipFlag = false; in CheckFrameSkipBasedMaxbr()
823 pWelsSvcRc->bSkipFlag = true; in CheckFrameSkipBasedMaxbr()
824 pWelsSvcRc->iSkipFrameNum++; in CheckFrameSkipBasedMaxbr()
825 pWelsSvcRc->iSkipFrameInVGop++; in CheckFrameSkipBasedMaxbr()
826 pWelsSvcRc->iBufferFullnessSkip -= iSentBits; in CheckFrameSkipBasedMaxbr()
827 pWelsSvcRc->iRemainingBits += iSentBits; in CheckFrameSkipBasedMaxbr()
828 pWelsSvcRc->iBufferMaxBRFullness[EVEN_TIME_WINDOW] -= kiOutputMaxBits; in CheckFrameSkipBasedMaxbr()
829 pWelsSvcRc->iBufferMaxBRFullness[ODD_TIME_WINDOW] -= kiOutputMaxBits; in CheckFrameSkipBasedMaxbr()
832pWelsSvcRc->iBufferFullnessSkip, pWelsSvcRc->iBufferMaxBRFullness[EVEN_TIME_WINDOW], iPredSkipFram… in CheckFrameSkipBasedMaxbr()
834 pWelsSvcRc->iBufferFullnessSkip = WELS_MAX (pWelsSvcRc->iBufferFullnessSkip, 0); in CheckFrameSkipBasedMaxbr()
851 if (true == pEncCtx->pWelsSvcRc[iDidIdx].bSkipFlag) { in WelsRcCheckFrameStatus()
858 if (true == pEncCtx->pWelsSvcRc[iDidIdx].bSkipFlag) { in WelsRcCheckFrameStatus()
865 pEncCtx->pWelsSvcRc[iDidIdx].uiLastTimeStamp = uiTimeStamp; in WelsRcCheckFrameStatus()
866 pEncCtx->pWelsSvcRc[iDidIdx].bSkipFlag = false; in WelsRcCheckFrameStatus()
867 pEncCtx->pWelsSvcRc[iDidIdx].iContinualSkipFrames++; in WelsRcCheckFrameStatus()
878 if (true == pEncCtx->pWelsSvcRc[iDidIdx].bSkipFlag) { in WelsRcCheckFrameStatus()
885 if (true == pEncCtx->pWelsSvcRc[iDidIdx].bSkipFlag) { in WelsRcCheckFrameStatus()
898 pEncCtx->pWelsSvcRc[iDidIdx].uiLastTimeStamp = uiTimeStamp; in WelsRcCheckFrameStatus()
899 pEncCtx->pWelsSvcRc[iDidIdx].bSkipFlag = false; in WelsRcCheckFrameStatus()
900 pEncCtx->pWelsSvcRc[iDidIdx].iContinualSkipFrames++; in WelsRcCheckFrameStatus()
908 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[iCurDid]; in UpdateBufferWhenFrameSkipped() local
909 const int32_t kiOutputBits = pWelsSvcRc->iBitsPerFrame; in UpdateBufferWhenFrameSkipped()
910 const int32_t kiOutputMaxBits = pWelsSvcRc->iMaxBitsPerFrame; in UpdateBufferWhenFrameSkipped()
911 pWelsSvcRc->iBufferFullnessSkip = pWelsSvcRc->iBufferFullnessSkip - kiOutputBits; in UpdateBufferWhenFrameSkipped()
912 pWelsSvcRc->iBufferMaxBRFullness[EVEN_TIME_WINDOW] -= kiOutputMaxBits; in UpdateBufferWhenFrameSkipped()
913 pWelsSvcRc->iBufferMaxBRFullness[ODD_TIME_WINDOW] -= kiOutputMaxBits; in UpdateBufferWhenFrameSkipped()
916 … iCurDid, pWelsSvcRc->iBufferFullnessSkip, pWelsSvcRc->iBufferMaxBRFullness[EVEN_TIME_WINDOW]); in UpdateBufferWhenFrameSkipped()
918 pWelsSvcRc->iBufferFullnessSkip = WELS_MAX (pWelsSvcRc->iBufferFullnessSkip, 0); in UpdateBufferWhenFrameSkipped()
920 pWelsSvcRc->iRemainingBits += kiOutputBits; in UpdateBufferWhenFrameSkipped()
921 pWelsSvcRc->iSkipFrameNum++; in UpdateBufferWhenFrameSkipped()
922 pWelsSvcRc->iSkipFrameInVGop++; in UpdateBufferWhenFrameSkipped()
924 if ((pWelsSvcRc->iContinualSkipFrames % 3) == 0) { in UpdateBufferWhenFrameSkipped()
928 iCurDid, pWelsSvcRc->iContinualSkipFrames); in UpdateBufferWhenFrameSkipped()
940 pEncCtx->pWelsSvcRc[iCurDid].iBufferFullnessSkip = 0; in UpdateMaxBrCheckWindowStatus()
941 pEncCtx->pWelsSvcRc[iCurDid].iBufferMaxBRFullness[ODD_TIME_WINDOW] = 0; in UpdateMaxBrCheckWindowStatus()
942 pEncCtx->pWelsSvcRc[iCurDid].iBufferMaxBRFullness[EVEN_TIME_WINDOW] = 0; in UpdateMaxBrCheckWindowStatus()
943 pEncCtx->pWelsSvcRc[iCurDid].bNeedShiftWindowCheck[ODD_TIME_WINDOW] = false; in UpdateMaxBrCheckWindowStatus()
944 pEncCtx->pWelsSvcRc[iCurDid].bNeedShiftWindowCheck[EVEN_TIME_WINDOW] = false; in UpdateMaxBrCheckWindowStatus()
953 if (pEncCtx->pWelsSvcRc[iCurDid].iBufferMaxBRFullness[ODD_TIME_WINDOW] > 0 in UpdateMaxBrCheckWindowStatus()
954 && pEncCtx->pWelsSvcRc[iCurDid].iBufferMaxBRFullness[ODD_TIME_WINDOW] != in UpdateMaxBrCheckWindowStatus()
955 pEncCtx->pWelsSvcRc[iCurDid].iBufferMaxBRFullness[0]) { in UpdateMaxBrCheckWindowStatus()
956 pEncCtx->pWelsSvcRc[iCurDid].bNeedShiftWindowCheck[EVEN_TIME_WINDOW] = true; in UpdateMaxBrCheckWindowStatus()
958 pEncCtx->pWelsSvcRc[iCurDid].bNeedShiftWindowCheck[EVEN_TIME_WINDOW] = false; in UpdateMaxBrCheckWindowStatus()
960 pEncCtx->pWelsSvcRc[iCurDid].iBufferMaxBRFullness[ODD_TIME_WINDOW] = 0; in UpdateMaxBrCheckWindowStatus()
972 if (pEncCtx->pWelsSvcRc[iCurDid].iBufferMaxBRFullness[EVEN_TIME_WINDOW] > 0) { in UpdateMaxBrCheckWindowStatus()
973 pEncCtx->pWelsSvcRc[iCurDid].bNeedShiftWindowCheck[ODD_TIME_WINDOW] = true; in UpdateMaxBrCheckWindowStatus()
975 pEncCtx->pWelsSvcRc[iCurDid].bNeedShiftWindowCheck[ODD_TIME_WINDOW] = false; in UpdateMaxBrCheckWindowStatus()
977 pEncCtx->pWelsSvcRc[iCurDid].iBufferMaxBRFullness[EVEN_TIME_WINDOW] = 0; in UpdateMaxBrCheckWindowStatus()
994 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcVBufferCalculationPadding() local
995 const int32_t kiOutputBits = pWelsSvcRc->iBitsPerFrame; in RcVBufferCalculationPadding()
996 …const int32_t kiBufferThreshold = WELS_DIV_ROUND (PADDING_THRESHOLD * (-pWelsSvcRc->iBufferSizePad… in RcVBufferCalculationPadding()
998 pWelsSvcRc->iBufferFullnessPadding += (pWelsSvcRc->iFrameDqBits - kiOutputBits); in RcVBufferCalculationPadding()
1000 if (pWelsSvcRc->iBufferFullnessPadding < kiBufferThreshold) { in RcVBufferCalculationPadding()
1001 pWelsSvcRc->iPaddingSize = -pWelsSvcRc->iBufferFullnessPadding; in RcVBufferCalculationPadding()
1002 pWelsSvcRc->iPaddingSize >>= 3; // /8 in RcVBufferCalculationPadding()
1003 pWelsSvcRc->iBufferFullnessPadding = 0; in RcVBufferCalculationPadding()
1005 pWelsSvcRc->iPaddingSize = 0; in RcVBufferCalculationPadding()
1010 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcTraceFrameBits() local
1012 if (pWelsSvcRc->iPredFrameBit != 0) in RcTraceFrameBits()
1013 pWelsSvcRc->iPredFrameBit = (int32_t) (LAST_FRAME_PREDICT_WEIGHT * pWelsSvcRc->iFrameDqBits + in RcTraceFrameBits()
1014 … (1 - LAST_FRAME_PREDICT_WEIGHT) * pWelsSvcRc->iPredFrameBit); in RcTraceFrameBits()
1016 pWelsSvcRc->iPredFrameBit = pWelsSvcRc->iFrameDqBits; in RcTraceFrameBits()
1021 …>uiDependencyId, uiTimeStamp, pEncCtx->eSliceType, pEncCtx->iGlobalQp, pWelsSvcRc->iAverageFrameQp, in RcTraceFrameBits()
1022 pWelsSvcRc->iMaxFrameQp, in RcTraceFrameBits()
1023 pWelsSvcRc->iMinFrameQp, in RcTraceFrameBits()
1025 ( pWelsSvcRc->iFrameDqBits > 0 ) ? pWelsSvcRc->iFrameDqBits : (iFrameSize<<3) , in RcTraceFrameBits()
1026 pWelsSvcRc->iBitsPerFrame, in RcTraceFrameBits()
1027 pWelsSvcRc->iTargetBits, pWelsSvcRc->iRemainingBits, pWelsSvcRc->iBufferSizeSkip); in RcTraceFrameBits()
1034 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcUpdatePictureQpBits() local
1046pWelsSvcRc->iAverageFrameQp = WELS_DIV_ROUND (INT_MULTIPLY * iTotalQp, iTotalMb * INT_MULTIPLY); in RcUpdatePictureQpBits()
1048 pWelsSvcRc->iAverageFrameQp = pEncCtx->iGlobalQp; in RcUpdatePictureQpBits()
1050 pWelsSvcRc->iAverageFrameQp = pEncCtx->iGlobalQp; in RcUpdatePictureQpBits()
1052 pWelsSvcRc->iFrameDqBits = iCodedBits; in RcUpdatePictureQpBits()
1053 pWelsSvcRc->iLastCalculatedQScale = pWelsSvcRc->iAverageFrameQp; in RcUpdatePictureQpBits()
1054 pWelsSvcRc->pTemporalOverRc[pEncCtx->uiTemporalId].iGopBitsDq += pWelsSvcRc->iFrameDqBits; in RcUpdatePictureQpBits()
1058 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcUpdateIntraComplexity() local
1059 int32_t iAlpha = WELS_DIV_ROUND (INT_MULTIPLY, (1 + pWelsSvcRc->iIdrNum)); in RcUpdateIntraComplexity()
1061 int32_t iQStep = RcConvertQp2QStep (pWelsSvcRc->iAverageFrameQp); in RcUpdateIntraComplexity()
1062 int64_t iIntraCmplx = iQStep * static_cast<int64_t> (pWelsSvcRc->iFrameDqBits); in RcUpdateIntraComplexity()
1068 if (pWelsSvcRc->iIdrNum == 0) { in RcUpdateIntraComplexity()
1069 pWelsSvcRc->iIntraComplexity = iIntraCmplx; in RcUpdateIntraComplexity()
1070 pWelsSvcRc->iIntraComplxMean = iFrameComplexity; in RcUpdateIntraComplexity()
1072pWelsSvcRc->iIntraComplexity = WELS_DIV_ROUND64 (((LINEAR_MODEL_DECAY_FACTOR) * pWelsSvcRc->iIntra… in RcUpdateIntraComplexity()
1077pWelsSvcRc->iIntraComplxMean = WELS_DIV_ROUND64 (((LINEAR_MODEL_DECAY_FACTOR) * static_cast<int64_… in RcUpdateIntraComplexity()
1078 (pWelsSvcRc->iIntraComplxMean) in RcUpdateIntraComplexity()
1083 pWelsSvcRc->iIntraMbCount = pWelsSvcRc->iNumberMbFrame; in RcUpdateIntraComplexity()
1084 pWelsSvcRc->iIdrNum++; in RcUpdateIntraComplexity()
1085 if (pWelsSvcRc->iIdrNum > 255) in RcUpdateIntraComplexity()
1086 pWelsSvcRc->iIdrNum = 255; in RcUpdateIntraComplexity()
1089 pWelsSvcRc->iFrameDqBits, pWelsSvcRc->iQStep, pWelsSvcRc->iIntraComplexity); in RcUpdateIntraComplexity()
1094 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in RcUpdateFrameComplexity() local
1096 SRCTemporal* pTOverRc = &pWelsSvcRc->pTemporalOverRc[kiTl]; in RcUpdateFrameComplexity()
1103 int32_t iQStep = RcConvertQp2QStep (pWelsSvcRc->iAverageFrameQp); in RcUpdateFrameComplexity()
1108 pTOverRc->iLinearCmplx = ((int64_t)pWelsSvcRc->iFrameDqBits) * iQStep; in RcUpdateFrameComplexity()
1112 … + (INT_MULTIPLY - LINEAR_MODEL_DECAY_FACTOR) * ((int64_t)pWelsSvcRc->iFrameDqBits * iQStep)), in RcUpdateFrameComplexity()
1126 pWelsSvcRc->iFrameDqBits, in RcUpdateFrameComplexity()
1127 iQStep, pWelsSvcRc->iQStep, pTOverRc->iLinearCmplx); in RcUpdateFrameComplexity()
1146 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in WelsRcPictureInitGom() local
1148 pWelsSvcRc->iContinualSkipFrames = 0; in WelsRcPictureInitGom()
1151 if (0 == pWelsSvcRc->iIdrNum) { //iIdrNum == 0 means encoder has been initialed in WelsRcPictureInitGom()
1163 pWelsSvcRc->uiLastTimeStamp = uiTimeStamp; in WelsRcPictureInitGom()
1170 pWelsSvcRc->bEnableGomQp = false; in WelsRcPictureInitGom()
1172 pWelsSvcRc->bEnableGomQp = true; in WelsRcPictureInitGom()
1185 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in WelsRcPictureInfoUpdateGom() local
1195 pWelsSvcRc->iRemainingBits -= pWelsSvcRc->iFrameDqBits; in WelsRcPictureInfoUpdateGom()
1204 pWelsSvcRc->iFrameCodedInVGop++; in WelsRcPictureInfoUpdateGom()
1208 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in WelsRcMbInitGom() local
1214 if (pWelsSvcRc->bEnableGomQp) { in WelsRcMbInitGom()
1216 if (0 == (pCurMb->iMbXY % pWelsSvcRc->iNumberMbGom)) { in WelsRcMbInitGom()
1233 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in WelsRcMbInfoUpdateGom() local
1241 pWelsSvcRc->pGomCost[kiComplexityIndex] += iCostLuma; in WelsRcMbInfoUpdateGom()
1249 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in WelsRcPictureInitDisable() local
1257 …tx->pVaa->sAdaptiveQuantParam.iAverMotionTextureIndexToDeltaQp) / INT_MULTIPLY, pWelsSvcRc->iMinQp, in WelsRcPictureInitDisable()
1258 pWelsSvcRc->iMaxQp); in WelsRcPictureInitDisable()
1263 pWelsSvcRc->iAverageFrameQp = pEncCtx->iGlobalQp; in WelsRcPictureInitDisable()
1271 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in WelsRcMbInitDisable() local
1279 …ptiveQuantParam.pMotionTextureIndexToDeltaQp[pCurMb->iMbXY], pWelsSvcRc->iMinQp, pWelsSvcRc->iMaxQ… in WelsRcMbInitDisable()
1293 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in WelRcPictureInitBufferBasedQp() local
1304 pEncCtx->iGlobalQp = WELS_CLIP3 (pEncCtx->iGlobalQp, iMinQp, pWelsSvcRc->iMaxQp); in WelRcPictureInitBufferBasedQp()
1305pWelsSvcRc->iAverageFrameQp = pWelsSvcRc->iMaxFrameQp = pWelsSvcRc->iMinFrameQp = pEncCtx->iGlobal… in WelRcPictureInitBufferBasedQp()
1308 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in WelRcPictureInitScc() local
1315 int32_t iBaseQp = pWelsSvcRc->iBaseQp; in WelRcPictureInitScc()
1319 int64_t iTargetBits = iBitRate * 2 - pWelsSvcRc->iBufferFullnessSkip; in WelRcPictureInitScc()
1321 int32_t iQstep = WELS_DIV_ROUND (iFrameCplx * pWelsSvcRc->iCost2BitsIntra, iTargetBits); in WelRcPictureInitScc()
1324 pEncCtx->iGlobalQp = WELS_CLIP3 (iQp, pWelsSvcRc->iMinQp, pWelsSvcRc->iMaxQp); in WelRcPictureInitScc()
1327 int32_t iQstep = WELS_DIV_ROUND (iFrameCplx * pWelsSvcRc->iAvgCost2Bits, iTargetBits); in WelRcPictureInitScc()
1330 if (pWelsSvcRc->iBufferFullnessSkip > iBitRate) { in WelRcPictureInitScc()
1334 } else if (pWelsSvcRc->iBufferFullnessSkip == 0) { in WelRcPictureInitScc()
1344 iBaseQp = WELS_CLIP3 (iBaseQp, pWelsSvcRc->iMinQp, pWelsSvcRc->iMinQp); in WelRcPictureInitScc()
1350 … pEncCtx->iGlobalQp = WELS_CLIP3 (pWelsSvcRc->iBaseQp - 6, pWelsSvcRc->iMinQp, pWelsSvcRc->iMaxQp); in WelRcPictureInitScc()
1354 …if (LARGE_CHANGED_SCENE == pEncCtx->pVaa->eSceneChangeIdc || pWelsSvcRc->iBufferFullnessSkip > 2 *… in WelRcPictureInitScc()
1356 …pEncCtx->iGlobalQp = WELS_CLIP3 (pWelsSvcRc->iBaseQp + iDeltaQp, pWelsSvcRc->iMinQp, pWelsSvcRc->i… in WelRcPictureInitScc()
1357 …} else if (MEDIUM_CHANGED_SCENE == pEncCtx->pVaa->eSceneChangeIdc || pWelsSvcRc->iBufferFullnessSk… in WelRcPictureInitScc()
1358 … pEncCtx->iGlobalQp = WELS_CLIP3 (pWelsSvcRc->iBaseQp + 5, pWelsSvcRc->iMinQp, pWelsSvcRc->iMaxQp); in WelRcPictureInitScc()
1361 pWelsSvcRc->iBaseQp = iBaseQp; in WelRcPictureInitScc()
1363 pWelsSvcRc->iAverageFrameQp = pEncCtx->iGlobalQp; in WelRcPictureInitScc()
1365 pWelsSvcRc->uiLastTimeStamp = uiTimeStamp; in WelRcPictureInitScc()
1369 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[0]; in WelsRcDropFrameUpdate() local
1371 pWelsSvcRc->iBufferFullnessSkip -= (int32_t)iDropSize; in WelsRcDropFrameUpdate()
1372 pWelsSvcRc->iBufferFullnessSkip = WELS_MAX (0, pWelsSvcRc->iBufferFullnessSkip); in WelsRcDropFrameUpdate()
1374 pWelsSvcRc->iBufferFullnessSkip); in WelsRcDropFrameUpdate()
1378 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in WelsRcPictureInfoUpdateScc() local
1380 pWelsSvcRc->iBufferFullnessSkip += iFrameBits; in WelsRcPictureInfoUpdateScc()
1388pWelsSvcRc->iAvgCost2Bits = WELS_DIV_ROUND64 ((95 * pWelsSvcRc->iAvgCost2Bits + 5 * iCost2Bits), I… in WelsRcPictureInfoUpdateScc()
1390pWelsSvcRc->iCost2BitsIntra = WELS_DIV_ROUND64 ((90 * pWelsSvcRc->iCost2BitsIntra + 10 * iCost2Bit… in WelsRcPictureInfoUpdateScc()
1402 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[iDidIdx]; in WelsRcFrameDelayJudgeTimeStamp() local
1406 …int32_t iEncTimeInv = (pWelsSvcRc->uiLastTimeStamp == 0) ? 0 : (int32_t) (uiTimeStamp - pWelsSvcRc in WelsRcFrameDelayJudgeTimeStamp()
1409 pWelsSvcRc->uiLastTimeStamp = uiTimeStamp - iEncTimeInv; in WelsRcFrameDelayJudgeTimeStamp()
1415pWelsSvcRc->iBufferSizeSkip = WELS_DIV_ROUND (pDLayerConfig->iSpatialBitrate * pWelsSvcRc->iSkipBu… in WelsRcFrameDelayJudgeTimeStamp()
1417pWelsSvcRc->iBufferSizePadding = WELS_DIV_ROUND (pDLayerConfig->iSpatialBitrate * PADDING_BUFFER_R… in WelsRcFrameDelayJudgeTimeStamp()
1419 pWelsSvcRc->iBufferFullnessSkip -= iSentBits; in WelsRcFrameDelayJudgeTimeStamp()
1420 pWelsSvcRc->iBufferFullnessSkip = WELS_MAX ((-1) * (pDLayerConfig->iSpatialBitrate / 4), in WelsRcFrameDelayJudgeTimeStamp()
1421 pWelsSvcRc->iBufferFullnessSkip); in WelsRcFrameDelayJudgeTimeStamp()
1424 pWelsSvcRc->bSkipFlag = true; in WelsRcFrameDelayJudgeTimeStamp()
1425 if (pWelsSvcRc->iBufferFullnessSkip < pWelsSvcRc->iBufferSizeSkip) { in WelsRcFrameDelayJudgeTimeStamp()
1426 pWelsSvcRc->bSkipFlag = false; in WelsRcFrameDelayJudgeTimeStamp()
1428 if (pWelsSvcRc->bSkipFlag) { in WelsRcFrameDelayJudgeTimeStamp()
1429 pWelsSvcRc->iSkipFrameNum++; in WelsRcFrameDelayJudgeTimeStamp()
1430 pWelsSvcRc->uiLastTimeStamp = uiTimeStamp; in WelsRcFrameDelayJudgeTimeStamp()
1436pWelsSvcRc->iSkipFrameNum, pWelsSvcRc->iBufferFullnessSkip, pWelsSvcRc->iBufferSizeSkip, iBitRate,… in WelsRcFrameDelayJudgeTimeStamp()
1437 pWelsSvcRc->uiLastTimeStamp, uiTimeStamp); in WelsRcFrameDelayJudgeTimeStamp()
1441 SWelsSvcRc* pWelsSvcRc = &pEncCtx->pWelsSvcRc[pEncCtx->uiDependencyId]; in WelsRcPictureInfoUpdateGomTimeStamp() local
1451 pWelsSvcRc->iRemainingBits -= pWelsSvcRc->iFrameDqBits; in WelsRcPictureInfoUpdateGomTimeStamp()
1453 pWelsSvcRc->iBufferFullnessSkip += pWelsSvcRc->iFrameDqBits; in WelsRcPictureInfoUpdateGomTimeStamp()
1457 pWelsSvcRc->iFrameCodedInVGop++; in WelsRcPictureInfoUpdateGomTimeStamp()
1541 SWelsSvcRc* pWelsSvcRc = NULL; in WelsRcFreeMemory() local
1544 pWelsSvcRc = &pEncCtx->pWelsSvcRc[i]; in WelsRcFreeMemory()
1545 RcFreeLayerMemory (pWelsSvcRc, pEncCtx->pMemAlign); in WelsRcFreeMemory()