Answers
在JM源码中不同版本的实现会有所不同,我看的是JM86版本,在这个版本中运动路径的确定并不是在我们所猜测的SetupFastFullSearch或者FastFullPelSearch这样的函数中进行的,通过单步调试源码,我们可以看到,在全搜索路径方面,搜索路径的设定是在main函数中Init_Motion_Search_Module()函数中进行;我们可以看看这中间的源码:
//--- init array: search pattern ---
spiral_search_x[0] = spiral_search_y[0] = 0;
for (k=1, l=1; l<=max(1,search_range); l++)
{
for (i=-l+1; i< l; i++)
{
spiral_search_x[k] = i; spiral_search_y[k++] = -l;
spiral_search_x[k] = i; spiral_search_y[k++] = l;
}
for (i=-l; i<=l; i++)
{
spiral_search_x[k] = -l; spiral_search_y[k++] = i;
spiral_search_x[k] = l; spiral_search_y[k++] = i;
}
}
通过注释我们可以看见这个部分是确定搜索路径的,加上输出函数我们可以看见,这种搜索是类似于以当前位置为中心的菱形搜索机制;这是一种搜索模式的设定方式,至于其他的路径设定方式我至今还没有看到,可能还有吧
某科学的空间使
answered 11 years, 11 months ago