1.决定帧类型
I帧 P帧 B帧 scenecut 判断场景切换
2.收集一些信息来后面快速决策
p->interRefine
为使用lookahead分析负载的编码启用内部细化
- 0:从已保存编码强制模式和深度。
- 1:(0) +的功能,当当前深度小于min-cu-size的深度时,计算所有在min-cu-size的深度。当save encode决定当前块为skip(对于所有大小)计算skip/merge。
- 2:功能(1), 不论大小限制模式评估时,特定模式被确定为最佳模式保存编码。
- 3:(1) +的功能,不论大小评估所有的模式。
默认值:0
3.获取的信息:
当前块的交流(AC)分量:块ssd的平方和;
当前1/2下采样帧的intra SATD值以及最优intra模式;
两帧(wp.bPresentFlag 为 ref是否加权)之间的SATD值;
获取当前帧每个CTU行对应下采样帧的每个8x8的块cost的累计值;
获取帧类型并计算frame-cost;
计算可参考帧的qpCuTreeOffset值;
单线程计算当前帧与前后参考帧之间的最优frame cost;
获取每个8x8块的帧间cost(SATD + mvcost + 4);
lowres MVs: mvs = fenc.lowresMvs[list][diffPoc - 1];//获取下采样8x8块的mv信息 getLowresMV
intramb;intracost;intramode;satdcost;/* lookahead output data */
bframes 最大个数,bFrameBias值,lookaheadSlices:lookahead多线程slice
tell which reference picture had the least motion residual. lookahead 提前告诉最佳参考帧
5.cutree开启