GDM 2.1代碼 環路濾波
1、環路濾波 loopfilter.c
DeblockFrame 對一幀進行濾波
DeblockMb422 對宏塊濾波 圖像格式爲4:2:2
DeblockMb 對宏塊濾波 圖像格式爲4:2:0 或者4:0:0
DeblockFrame(ImageParameters *img, pel_t **imgY, pel_t ***imgUV)
ImageParameters 幀的各個參數的結構體
pel_t usigned char
2、 DeblockMb
2.1得到當前宏塊的首地址 SrcY,SrcU,SrcV
2.2得到當前宏塊的首地址 MbQ
2.3 如果lf_desable 爲1,則不濾波
2.4 for (dir=0;dir<2;dir++)先垂直方向,後水平方向
a. 計算EdgeCondition, 如果爲圖像邊界,則其值爲0,否則爲1
b. 如果不是圖像邊界,判斷是否爲slice邊界,如果是slice邊界,則EdgeCondition 爲0,否則爲1
for (edge=0;edge<2;edge++) 宏塊是16*16的,最小濾波塊爲8*8
c. 如果是內邊界(edge=1)或者EdgeCondition=1,則往下。
d. 得到相鄰塊P的宏塊首地址 MbP
e. 計算QP的平均值
f. 計算邊界強度值 GetStrength, 返回值 Strength
g. 如果邊界強度 Strength 值不爲0,則往下
h. 對邊界進行濾波操作 EdgeLoop,輸入SrcY
i. 如果imgUV不爲空,即圖像爲4:2:0,否則爲4:0:0,且edge爲0
j. 計算QPchroma,通過查表得到色度的QP值,並求平均
k. 對當前邊界進行濾波 EdgeLoop
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.