系列文章目录
【x264编码器】章节1——x264编码流程及基于x264的编码器demo
【x264编码器】章节2——x264的lookahead流程分析
【x265编码器】章节2——编码流程及基于x265的编码器demo
目录
2.x265-StarSearch和HM的TZSeach算法对比
前言
x265完整的流程框架如下:
一、x265与HM的运动估计对比
x265运动估计的实现与HM代码的实现有很大的相似性,但两者会有细微的差别,整体的流程如下,不难发现两者共性都是先进行整像素搜索,之后进行1/2像素搜索以及最后的1/4像素搜索,不同点在于两者所用的搜索算法会有所差异,HM在亚像素搜索阶段,所用的是方形搜索,即对周围的8个点都进行计算,而x265出于速度的考量采用仅对四个点进行菱形搜索,计算量降低一半,其中x265的运动估计代码说明可以参考x265帧间预测流程中的MotionEstimate::motionEstimate:
二、运动估计搜索算法介绍
1.x265搜索算法和对应的preset
x265 preset配置 | 搜索算法 |
---|---|
slow、slower、veryslow、placebo | StarSearch |
medium(默认)、fast、faster、veryfast、superfast | HexSearch |
ultrafast | DiaSearch |
2.x265-StarSearch和HM的TZSeach算法对比
x265在--preset slow、slower、veryslow和placebo下会使用StarSearch搜索算法;
HM中使用的是TZSeach搜索算法,在x265与之相近的算法是StarSearch搜索算法,两者在流程上基本上没有差别,流程上:
1.都会先按照菱形搜索方式进行搜索;
2.当超过一定搜索距离或者当前点连续3个回合都是最优点时,继续;
3.如果uiBestDistance==1,进行两点搜索,搜索的两个点为上面菱形搜索之后剩余的最近的两个点,如果最优点未发生变化,则直接跳到最后一步,写入最优MV和SAD;
4.如果uiBestDistance!=1或者最优点发生了变化,则进行补偿的为5的光栅搜索(步长为1的光栅搜索等价于全像素搜索);
5.之后进行与步骤1、步骤2、步骤3相似的操作,直到满足条件为止;
HM和x265的差异点: x265-StarSearch搜索算法图中标红的部分即为两者不同的地方;
![](https://i-blog.csdnimg.cn/blog_migrate/a724fec7cbc02fa5a53814090e7def81.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b7e50932117f854ed6252005e9d8628b.png)
3.x265-HexSearch算法
HexSearch算法是x265默认配置medium、fast、faster、veryfast和superfast下使用的搜索算法,大体上流程:
1.对初识点进行距离为2 的六边形搜索;
2.如果周围存在比中心点更优的点,则对改点方向进行,一半的六边形搜索(即只搜索3个点),直到满足中心点为最优点为止;否则中心点最优则进行第三步;
3.进行周围8个点的方形搜索;
4.x265-DiaSearch算法
HexSearch算法是x265在ultrafast配置下使用搜索算法,流程:
1.进行距离为1的菱形搜索,如果存在比当前中心点更好的点,则继续;否则找到了最优点,结束;
点赞、收藏,会是我继续写作的动力!赠人玫瑰,手有余香。