摘要:本文分析帧内亮度预测函数estIntraPredLumaQT的函数结构和描述该编码过程
前言
在做帧内优化前,需要掌握帧内编码详细过程,并了解其相关函数的结构,下面记录近期的工作内容。
预测过程
1.initIntraPatternChType //初始化像素
(1)获取参考像素(长和宽为原来的2倍),如果边缘的的参考像素不够,利用已存在的像素进行复制填充
(2)对参考像素进行滤波处理
2.predIntaAng //计算预测值
(1)根据模式的类进行一下类型别的预测:
Planar、 DC、 BDPCM 、IntraAng(其他角度模式)
3.xFracModeBitsIntra//有待填坑.......
4.updateCandList//根据cost更新候选列表
(1)根据输入计算好的哈达玛变换后的SAD和fracModeBits(不太理解这个参数)的cost进行排序,更新,得到最优的N个候选列表
5.updateCandList//根据HadSad更新候选列表
(1)根据输入计算好的哈达玛变换后的SAD值进行排序,更新,得到最优的N个候选列表
说明:根据输入的候选列表和新补充一些参考列表不断更新候选列表:
第一次:遍历2~67(偶数)mode,执行函数2、3、4、5,比较哈达玛变换后的SAD和SATD,选择最优的N个mode,更新得到list0
第二次:遍历list0以及其相邻的mode中,执行函数2、3、4、5,比较哈达玛变换后的SAD和SATD,选择最优的N个mode,更新列表得到list1
第三次:遍历list1及初始MPM的mode中,执行函数2、3、4、5,比较哈达玛变换后的SAD和SATD,选择最优的N个mode,更新列表得到CandmodeList
第四次:遍历CandmodeList, 引入多参考线,比较哈达玛变换后的SAD和SATD,选择最优的N个mode,更新CandmodeList。
第四次:遍历CandmodeList及MIP技术,比较哈达玛变换后的SAD和SATD,选择最优的N个mode,更新,并缩减部分模式,CandmodeList
第五次:遍历CandmodeList并在可使用ISP的模式中,比较哈达玛变换后的SAD和SATD,选择最优的N个mode,更新,得到CandmodeList
最终的率失真代价模式:
使用上一步骤初选得到的候选列表进行重新排序,非MIP和非ISP在前,其他的在后,然后遍历,计算和比较他们的率失真代价(经过预测,变换,量化,熵编码的效果),得到最优的mode。
流程图:
更新中。。。。