GDM 2.1代码 环路滤波

来源:互联网 发布:网络简介阅读题 编辑:程序博客网 时间:2024/06/10 02:40
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
原创粉丝点击