對一個宏塊進行幀內預測的具體過程如下:
(1)對于8x8色度塊就選擇一種幀內色度預測模式建立相應的幀內預測塊;
(2)按遍歷的方法分別計算4種Intra_16x16幀內預測模式的代價(Rdcost16x16),選擇具有最小代價(Rdcost16x16)的模式作為16x16亮度塊的最佳幀內預測模式,進而獲得該宏塊在16x16亮度塊幀內預測模式下的率失真開銷(RdcostMB)。
(3)對于4x4亮度塊選擇一種Intra_4x4幀內預測模式建立相應的幀內預測塊。
(4)用拉格朗日率失真函數計算該預測模式下的代價(Rdcost4x4)。
(5)重復3,4步,遍歷所有9種4x4亮度塊幀內預測模式,選擇具有最小代價(Rdcost4x4)的模式作為4x4亮度塊的最佳幀內預測模式。
(6)對當前宏塊中16個4x4亮度塊重復第3步至第5步,獲得每一個4x4亮度塊的最佳幀內預測模式和相應的代價Rdcost4x4,進而獲得該宏塊在4x4亮度塊幀內預測模式下的率失真開銷(RdcostMB)。
(7)選擇第2步和第6步中具有最小宏塊率失真開銷(RdcostMB)的模式作為該色度下的最優模式組合。
(8)重復第1步至第7步,遍歷所有8x8色度塊幀內預測模式下的最優模式組合,選擇具有最小RdcostMB的模式組合作為該宏塊的最佳幀內預測模式組合。
這樣每一個宏塊都要進行M8 x (M4 x 16 + M16)次RDO計算,其中M8、M4、M16分別表示8x8色度塊、4x4亮度塊、16x16亮度塊的預測模式數,這也就意味著每個宏塊要進行592次RDO計算。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zhoujunming/archive/2008/09/26/2983880.aspx