1. 程式人生 > >openh264碼控筆記二(幀級QP的計算)

openh264碼控筆記二(幀級QP的計算)

以下都是RC_BITRATE_MODE模式的處理流程。

一、幀級碼控計算整體框架圖

二、幀級QP的計算公式

openh264用的碼控用的是R-Q模型,使用歷史幀的平均QP、SAD、幀長,來預測當前幀的QP。計算公式如下:

QStep = (IntraComplexity * CmplxRatio)/(TargetBits * 100)

IntraComplexity引數根據上一幀單幀長度和歷史幀平均QP確定。

計算公式為:IntraComplexity(i)=0.8*IntraComplexity(i-1)+0.2*QStep*FrameDqBits

CmplxRatio引數根據歷史幀的SAD(絕對殘差和)確定。

計算公式為:CmplxRatio(i)=0.8*SAD(i-1)+0.2*SAD(i)

TargetBits當前幀可分配的位元速率。

1)IntraComplexity引數計算

RcUpdateIntraComplexity (sWelsEncCtx* pEncCtx)

RcUpdateFrameComplexity (sWelsEncCtx* pEncCtx)

2)CmplxRatio引數計算

RcCalculateIdrQp (sWelsEncCtx* pEncCtx) 

RcCalculatePictureQp (sWelsEncCtx* pEncCtx)

3)TargetBits引數計算

RcDecideTargetBits (sWelsEncCtx* pEncCtx)函式

 

另外WelsRcPictureInitGom實際計算幀級QP的值。WelsRcPictureInfoUpdateGom更新碼控的引數,用於後續再次呼叫WelsRcPictureInitGom時,計算幀級QP的值。

4)WelsRcPictureInitGom

5)WelsRcPictureInfoUpdateGom