一种基于h264协议的分像素运动矢量计算方法和装置的制造方法_2

文档序号:9914780阅读:来源:国知局

[0033]上述技术方案所述的基于H264协议的分像素运动矢量计算方法和装置,所述方法应用于所述装置,所述装置用于计算宏块的分像素运动矢量,所述方法包括如下步骤:首先第一获取模块从所述第一缓存模块中获取16x16子块的整像素运动矢量,;而后参考帧复用维护单元记录整像素运动矢量之间的对应关系;而后第二获取模块用于从所述第二缓存模块中获取16x16子块对应的原始块像素;而后第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,所述第二寄存器单元用于缓存参考块像素;
[0034]SAD代价计算单元用于从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;
[0035]SAD代价选取单元将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;
[0036]主控单元接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。
[0037]上述方案所述的基于H264协议的分像素运动矢量计算方法和装置,所述方法应用于基于H264协议的分像素运动矢量计算装置,所述装置用于计算宏块的分像素运动矢量,所述装置包括缓存单元、主控单元、参考帧复用维护单元、SAD代价计算单元、SAD代价选取单元。所述方法包括如下步骤:首先第一获取模块从所述第一缓存模块中获取16x16子块的整像素运动矢量;而后参考帧复用维护单元记录整像素运动矢量之间的对应关系;而后第二获取模块从所述第二缓存模块中获取16x16子块对应的原始块像素,第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素;而后SAD代价计算单元从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;而后SAD代价选取单元将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;而后主控单元接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。这样,在计算H264协议的分像素运动矢量过程中,所获取的原始块像素基于16x16块的大小进行获取,保证了8x8块和4x4块的原始块像素的复用性;在获取参考块像素时,根据参考帧复用维护单元记录整像素运动矢量之间的对应关系,选择性地获取不存在复用情况的各层(16x16层、8x8层以及4x4层)的参考块像素进行获取,而对于可以复用的参考块像素则不再重复获取,从而大大提高了参考像素的复用率,并提高了分像素运动矢量的计算效率,节省了功耗,同时还节约了硬件成本。
【附图说明】
[0038]图1为本发明一实施方式涉及的基于H264协议的分像素运动矢量计算装置的示意图;
[0039]图2为本发明一实施方式涉及的基于H264协议的分像素运动矢量计算方法的流程图。
【具体实施方式】
[0040]为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
[0041]请参阅图1,为本发明一实施方式涉及的基于H264协议的分像素运动矢量计算装置的示意图。所述装置用于计算宏块的分像素运动矢量,所述宏块被划分为多个16x16子块;每一 16x16子块被划分为4个8x8子块,每一 8x8子块被划分为4个4x4子块;所述装置包括缓存单元、主控单元109、参考帧复用维护单元106、SAD代价计算单元107、SAD代价选取单元108;所述缓存单元与主控单元连接,所述主控单元与参考帧复用维护单元连接,所述参考帧复用维护单元与SAD代价计算单元连接,所述SAD代价计算单元与SAD代价选取单元连接,所述SAD代价选取单元与主控单元连接;所述缓存单元包括第一缓存模块101、第二缓存模块102、第三缓存模块105;所述主控单元109包括获取单元103和寄存器单元104;所述获取单元103包括第一获取模块113、第二模块获取123和第三获取模块133;所述寄存器单元104包括第一寄存器单元114和第二寄存器单元124;
[0042]所述第一获取模块113用于从所述第一缓存模块中获取16x16子块的整像素运动矢量,所述整像素运动矢量包括第一整像素运动矢量、第二像素运动矢量和第三整像素矢量,所述第一整像素运动矢量为16x16子块中16x16层的整像素运动矢量,所述第二整像素运动矢量为16x16子块中8x8层的整像素运动矢量,所述第三整像素运动矢量为16x16子块中4x4层的整像素运动矢量;
[0043]所述参考帧复用维护单元106用于记录整像素运动矢量之间的对应关系,所述整像素运动矢量的对应关系包括第一整像素运动矢量和第二像素运动矢量的对应关系、8x8层不同8x8子块的第二整像素运动矢量的对应关系以及4x4层不同4x4子块的第三整像素矢量的对应关系;
[0044]所述第二获取模块123用于从所述第二缓存模块中获取16x16子块对应的原始块像素,所述第一寄存器单元用于缓存16x16子块对应的原始块像素;
[0045]所述第三获取模块133用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,所述第二寄存器单元用于缓存参考块像素;
[0046]所述SAD代价计算单元107用于从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;
[0047]所述SAD代价选取单元108用于将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;
[0048]所述主控单元109用于接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。
[0049]在使用基于H264协议的分像素运动矢量计算装置时,首先第一获取模块113从所述第一缓存模块中获取16x16子块的整像素运动矢量。所述第一缓存模块为具有存储数据功能的电子元件,例如可以为ROM存储器。对于每一个16x16子块而言,都可以将其划分为“三层”结构,即16x16层、8x8层和4x4层。对于16x16层而言,即以16x16为单位进行划分的话,16x16子块可以被划分为I个16x16块,因而每一个16x16子块对应有I个16x16层的整像素运动矢量,即第一整像素运动矢量。对于8x8层而言,即以8x8为单位进行划分的话,16x16子块可以被划分为4个8x8块,因而每一个16x16子块对应有4个16x16层的整像素运动矢量,即第二整像素运动矢量。对于4x4层而言,即以4x4为单位进行划分的话,16x16子块可以被划分为16个4x4块,因而每一个16x16子块对应有16个4x4层的整像素运动矢量,即第三整像素运动矢量。综上,在计算每一个16x16子块的分像素运动矢量时,第一获取模块需要从所述第一缓存模块中获取I个16x16层、4个8x8层以及16个4x4层共计21个整像素运动矢量。
[0050]所述参考帧复用维护单元106用于记录整像素运动矢量之间的对应关系,所述整像素运动矢量的对应关系包括第一整像素运动矢量和第二像素运动矢量的对应关系、8x8层不同8x8子块的第二整像素运动矢量的对应关系以及4x4层不同4x4子块的第三整像素矢量的对应关系。在本实施方式中,在计算16x16层的分像素运动矢量时,也是基于8x8大小的块为单位进行计算的,因而第一整像素运动矢量和第二像素运动矢量的对应关系具体包括:记录相同位置的8x8子块的第一整像素运动矢量和第二像素运动矢量是否相同。
[0051 ] 例如对于16x16层而言,包含有4个16x16层的8x8子块,分别是8x8子块1、8x8子块
2、8x8子块3和8x8子块4。对于8x8层而言,包含有4个8x8层的8x8子块,分别是8x8子块a、8x8子块b、8x8子块c和8x8子块cL8x8子块a与8x8子块I的位置相对应,8x8子块b与8x8子块2的位置相对应,8x8子块c与8x8子块3的位置相对应,8x8子块d与8x8子块4的位置相对应。则参考帧复用维护单元会判断8x8子块a与8x8子块I的整像素运动矢量是否相同,若相同则说明这两个子块的参考像素为可以复用参考像素的8x8子块,说明它们的SAD代价相同,即计算出的分像素运动矢量相同。因而在计算到8x8层的8x8子块a的SAD代价时,会跳过计算步骤,而直接采用之前所计算得到的16x16层的8x8子块I的SAD代价,一方面无需重新获取8x8子块I的参考像素,节省了计算步骤和功耗,另一方面避免了相同的整像素分数矢量的不同子块重复计算SAD代价,大大提高了编码效率。
[0052]而后第二获取模块从所述第二缓存模块中获取16x16子块对应的原始块像素,所述第一寄存器单元缓存16x16子块对应的原始块像素。在本实施方式中,获取原始块像素是基于16x16子块为单位进行获取。这样,在计算每个16x16子块的的分像素运动矢量时,就将所需的不同层的原始块像素一次性获取到主控单元中,并通过第一寄存器单元加以缓存。由于无论是16x16层的4个8x8块,还是8x8层的4个8x8块,或者是4x4层的16个4x4块,它们对应的原始块像素均包含于16x16子块的原始块像素中,因而在计算各个不同的层子块的SAD代价时,第二获取模块只需从第一寄存器单
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1