H.264標準碼率控制算法步驟如下:
1.計算當前幀的目標碼字,并將其限定到HRD的邊界中。
2.通過線性模型(式4.5)預測當前幀中基本單元的MAD。
3.為未編碼基本單元分配碼字。
4.通過二次R.D模型計算相應的量化步長。
5.對基本單元中每個宏塊進行RDO。
其中a1和a2是該預測模型中的兩個參數。a1和a2的初始值設為1和0。當每個基本單元的編碼結束后,他們值也會相應的更新。該線性預測模型能夠解決編碼過程中的蛋雞悖論問題。
預測模型參數aI和a2更新方法分為三步,如下所述:
第一步一數據點選擇:數據點是用于更新模型參數,數據點的數量以及質量對于模型的準確性有著重要的影響。通常而言,數據點越多,模型越準確。在JM86模型中,采用滑動窗口機制進行數據點的選擇,窗口大小通常為20。
第二步一計算模型參數:根據選中的數據點,算法收集預測的MAD和實際MAD的值,采用線性回歸的方法,計算得到a1和a2。
第三步一去除壞的數據點:在得到al和a2之后,根據滑動窗口中數據點的參考值,用q和口2形成的預測模型計算數據點的預測值,然后將得到的值與數據點的原始預測值比較,計算誤差,如果誤差大于一定的值(JM中取誤差的均值),則將該數據點去除,用更新后的數據點重新計算模型參數al和a2。
JVT.G012所提出的碼率控制流程包括GOP層碼率控制和幀層碼率控制(如果選擇一幀作為一個基本單元。如果一個基本單元小于一幀,那么還需要再加一層的基本單元碼率控制層)。下面將分析這些層的計算過程。
具體見《基于H.264標準的碼牢控制研究》