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

文档序号:9914780阅读:435来源:国知局
一种基于h264协议的分像素运动矢量计算方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机芯片领域,尤其涉及一种基于H264协议的分像素运动矢量计算方法和装置。
【背景技术】
[0002]随着计算机技术、通信技术、互联网技术和多媒体技术的迅猛发展,多媒体应用已经深入人们日常生活的方方面面,并逐渐地改变着人们的生活方式。视频是多媒体应用中最为常见和信息量最大的媒体。目前,多媒体业务已从以音频为主发展成以视频为主,无论是电影、电视、视频监控等传统多媒体应用,还是网流媒体视频、可视电话和视频会议等新兴多媒体应用,视频都是其中最为核心的组成部分。
[0003]视频编码的协议有很多种,H264协议就是其中重要一项。而在视频编码过程中,通过获取整像素运动矢量来计算分像素运动矢量又是视频编码步骤的重要一环。由于计算分像素运动矢量需要获取原始块像素以及参考块像素,而参考块的像素又是基于整像素运动矢量来进行获取。现有的方法在获取参考块的像素往往采用逐一获取的方法,即每一原始块像素都需要根据整像素运动矢量去对应的缓存单元中获取参考块像素,导致参考块像素获取时复用率低下、步骤繁琐、功耗大、硬件面积大、成本高等问题。

【发明内容】

[0004]为此,需要提供一种基于H264协议的分像素运动矢量计算的技术方案,用以解决在计算视频像素块的分像素运动矢量时,由于获取参考块像素步骤繁琐、复用率低,导致视频编码功耗大、硬件面积大、成本高等问题。
[0005]为实现上述目的,发明人提供了一种基于H264协议的分像素运动矢量计算装置,所述装置用于计算宏块的分像素运动矢量,所述宏块被划分为多个16x16子块;每一 16x16子块被划分为4个8x8子块,每一8x8子块被划分为4个4x4子块;所述装置包括缓存单兀、主控单元、参考帧复用维护单元、SAD代价计算单元、SAD代价选取单元;所述缓存单元与主控单元连接,所述主控单元与参考帧复用维护单元连接,所述参考帧复用维护单元与SAD代价计算单元连接,所述SAD代价计算单元与SAD代价选取单元连接,所述SAD代价选取单元与主控单元连接;所述缓存单元包括第一缓存模块、第二缓存模块、第三缓存模块;所述主控单元包括获取单元和寄存器单元;所述获取单元包括第一获取模块、第二模块获取和第三获取模块;所述寄存器单元包括第一寄存器单元和第二寄存器单元;
[0006]所述第一获取模块用于从所述第一缓存模块中获取16x16子块的整像素运动矢量,所述整像素运动矢量包括第一整像素运动矢量、第二像素运动矢量和第三整像素矢量,所述第一整像素运动矢量为16x16子块中16x16层的整像素运动矢量,所述第二整像素运动矢量为16x16子块中8x8层的整像素运动矢量,所述第三整像素运动矢量为16x16子块中4x4层的整像素运动矢量;
[0007]所述参考帧复用维护单元用于记录整像素运动矢量之间的对应关系,所述整像素运动矢量的对应关系包括第一整像素运动矢量和第二像素运动矢量的对应关系、8x8层不同8x8子块的第二整像素运动矢量的对应关系以及4x4层不同4x4子块的第三整像素矢量的对应关系;
[0008]所述第二获取模块用于从所述第二缓存模块中获取16x16子块对应的原始块像素,所述第一寄存器单元用于缓存16x16子块对应的原始块像素;
[0009]所述第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,所述第二寄存器单元用于缓存参考块像素;
[0010]所述SAD代价计算单元用于从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;
[0011]所述SAD代价选取单元用于将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;
[0012]所述主控单元用于接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。
[0013]进一步地,所述“第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若8x8层的8x8子块的第二像素运动矢量与第一整像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
[0014]进一步地,所述“第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若参考帧复用维护单元记录的8x8层的8x8子块的第二像素运动矢量与上一8x8层的8x8子块的第二像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
[0015]进一步地,所述“第三获取模块用于根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:若参考帧复用维护单元记录的4x4层的4x4子块的第三像素运动矢量与上一4x4层的4x4子块的第三像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
[0016]进一步地,所述“主控单元用于将分像素运动矢量写入第一缓存模块中”包括:主控单元用于将分像素运动矢量与该分像素运动矢量对应的整像素运动矢量进行打包后写入第一缓存模块中。
[0017]发明人还提供了一种基于H264协议的分像素运动矢量计算方法,所述方法应用于基于H264协议的分像素运动矢量计算装置,所述装置用于计算宏块的分像素运动矢量,所述宏块被划分为多个16x16子块;每一 16x16子块被划分为4个8x8子块,每一 8x8子块被划分为4个4x4子块;所述装置包括缓存单元、主控单元、参考帧复用维护单元、SAD代价计算单元、SAD代价选取单元;所述缓存单元与主控单元连接,所述主控单元与参考帧复用维护单元连接,所述参考帧复用维护单元与SAD代价计算单元连接,所述SAD代价计算单元与SAD代价选取单元连接,所述SAD代价选取单元与主控单元连接;所述缓存单元包括第一缓存模块、第二缓存模块、第三缓存模块;所述主控单元包括获取单元和寄存器单元;所述获取单元包括第一获取模块、第二模块获取和第三获取模块;所述寄存器单元包括第一寄存器单元和第二寄存器单元;所述方法包括如下步骤:
[0018]第一获取模块从所述第一缓存模块中获取16x16子块的整像素运动矢量,所述整像素运动矢量包括第一整像素运动矢量、第二像素运动矢量和第三整像素矢量,所述第一整像素运动矢量为16x16子块中16x16层的整像素运动矢量,所述第二整像素运动矢量为16x16子块中8x8层的整像素运动矢量,所述第三整像素运动矢量为16x16子块中4x4层的整像素运动矢量;
[0019]参考帧复用维护单元记录整像素运动矢量之间的对应关系,所述整像素运动矢量的对应关系包括第一整像素运动矢量和第二像素运动矢量的对应关系、8x8层不同8x8子块的第二整像素运动矢量的对应关系以及4x4层不同4x4子块的第三整像素矢量的对应关系;
[0020]第二获取模块从所述第二缓存模块中获取16x16子块对应的原始块像素,所述第一寄存器单元缓存16x16子块对应的原始块像素;
[0021]第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素,所述第二寄存器单元缓存参考块像素;
[0022]SAD代价计算单元从所述第一寄存器单元中获取原始块像素,以及从所述第二寄存器单元获取参考块像素,并进行SAD代价计算,得到多个不同位置的参考块像素SAD代价;
[0023]SAD代价选取单元将不同位置的参考块像素SAD代价进行比较,选取SAD代价最小的参考块像素的SAD代价值,并计算该参考块像素与原始块像素的分像素运动矢量;
[0024]主控单元接收SAD代价选取单元发送的分像素运动矢量,并将分像素运动矢量写入第一缓存模块中。
[0025]进一步地,所述步骤“第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:
[0026]若8x8层的8x8子块的第二像素运动矢量与第一整像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
[0027]进一步地,所述步骤“第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:
[0028]若参考帧复用维护单元记录的8x8层的8x8子块的第二像素运动矢量与上一8x8层的8x8子块的第二像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
[0029]进一步地,所述步骤“第三获取模块根据整像素运动矢量之间的对应关系,从所述第三缓存模块中获取参考块像素”包括:
[0030]若参考帧复用维护单元记录的4x4层的4x4子块的第三像素运动矢量与上一4x4层的4x4子块的第三像素运动矢量相同,则所述第三获取模块不从第三缓存模块中获取参考块像素,否则第三获取模块从第三缓存模块中获取参考块像素。
[0031 ]进一步地,所述步骤“主控单元将分像素运动矢量写入第一缓存模块中”包括:
[0032]主控单元将分像素运动矢量与该分像素运动矢量对应的整像素运动矢量进行打包后写入第一缓存模块中
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1