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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章