块搜索首先测试5个候选矢量匹配度(即SAD值)是否小于检测门限,若均不小于则转入菱形搜索。这种流程造成对大量视频数据的频繁读写,如在插值过程中,由于片内内存的限制,插值后的数据需要存回片外,这样在水平、垂直和对角方向插值过程中将产生3倍(相对1帧数据)数据读入、3倍数据写出;而在SAD计算和菱形搜索中平均产生5~6倍数据读入。
对于高速的DSP内核来说,产生数据存取瓶颈,严重降低运动搜索的速度。针对这种情况对运动搜索的流程进行优化,设计以运算量换取减少片外访问次数的流程控制策略,大幅度减少数据存取的次数。该流程控制策略主要是:每次在当前块搜索之前启动一个二维DMA,预取下一块搜索需要的原始帧和搜索范围内参考帧数据。
在匹配和搜索过程中,如果使用到半像素区域,再对相应的片内参考帧数据进行插值,插值的结果保存在片内供搜索使用,使用后即丢弃,无须写到片外。经过合理安排流程,DMA控制器和内核可以最大限度地并行操作。这种流程可能将某些参考帧块重复插值,但这种插值运算全部在片内完成,且仅需要的情况下才进行插值,所以增加的插值运算量很少。