[发明专利]HEVC/H.265的亚像素插值的SIMD快速实现方法有效
申请号: | 201410647903.9 | 申请日: | 2014-11-14 |
公开(公告)号: | CN104378641B | 公开(公告)日: | 2018-05-01 |
发明(设计)人: | 张小云;黎凌宇;高志勇;陈立 | 申请(专利权)人: | 上海交通大学 |
主分类号: | H04N19/51 | 分类号: | H04N19/51;H04N19/56 |
代理公司: | 上海汉声知识产权代理有限公司31236 | 代理人: | 徐红银,郭国中 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | hevc 265 像素 simd 快速 实现 方法 | ||
1.一种HEVC/H.265的亚像素插值的单指令多数据技术(SIMD)快速实现方法,其特征在于,包括如下步骤:
步骤1:将亚像素插值所需要的整像素数据从内存装载进寄存器,并将装载进寄存器的所述整像素数据视为矢量数据;
步骤2:如果是水平方向亚像素插值直接跳到步骤4;
步骤3:如果是竖直方向亚像素插值,将一组矢量数据两两逐级交织,实现数据转置;
步骤4:根据当前亚像素插值点所需要的整像素数据,对矢量数据重新排列组合;
步骤5:将矢量数据和对应的系数执行点乘计算,完成相邻整像素数据和对应系数乘积求和,其中亚像素插值阶数为四阶或八阶;
步骤6:将点乘结果重新排列组合,并行执行右移舍入运算,转载进输出内存,跳至步骤2,直至完成当前像素块中所有的水平和竖直方向亚像素插值;
步骤7:对于非水平竖直方向的亚像素插值,先执行水平方向的亚像素插值,对插值中间结果执行竖直方向的亚像素插值;以上步骤1-7得到四阶亚像素插值函数或八阶亚像素插值函数;
步骤8:在运动搜索中调用四阶亚像素插值函数,在运动补偿过程中调用八阶亚像素插值函数;
所述步骤1中,将当前亚像素插值所依赖的整像素数据从内存装载进寄存器,为了从一个非对齐的内存地址装载一个64比特的寄存器数据,先用非对齐装载指令从当前非对齐的内存地址临近的两个对齐的内存地址中装载两个64比特的寄存器数据,然后利用一条对齐指令根据当前非对齐地址重新组合这两个寄存器数据,得到从非对齐内存地址中装载的寄存器数据;设亚像素插值块的大小为m行n列,这样得到m行n/8列矢量数据,每个矢量数据由8个水平方向相邻的整像素数据组成;
所述步骤3中,为了将竖直方向的整像素数据装载成矢量数据,利用步骤1得到的由8个水平方向相邻的整像素数据组成的各矢量数据,将同一列的每八个矢量数据视为一组,对每组矢量数据进行转置,将矢量数据逐级两两交织,最后8个八元矢量的第k个元素组成第k个新的八元矢量,k=1,2…8,这样第k个新的矢量数据则装载了第k列的8行数据。
2.根据权利要求1所述的HEVC/H.265的亚像素插值的单指令多数据技术(SIMD)快速实现方法,其特征在于,所述步骤4中,采用步骤1中的对齐指令,利用位置整像素数据的内存地址,从两个相邻的整像素矢量数据中重组得到装载有所需整像素数据的矢量。
3.根据权利要求1所述的HEVC/H.265的亚像素插值的单指令多数据技术(SIMD)快速实现方法,其特征在于,所述步骤5中,将亚像素插值点临近的整像素数据值和对应的插值滤波系数相乘,然后将乘积相加求和;HEVC的亮度亚像素插值在两个整像素数据点之间要插三个亚像素点,分别是1/4、1/2和3/4位置,三个位置对应三组不同的插值滤波系数,其中每个插值滤波系数用1字节的有符号数表示;点乘计算公式如下所示:
式中:dotp是点乘计算结果;j是亚像素插值阶数:4或8;A是相应的整像素数据值;C是相应的亚像素插值系数。
4.根据权利要求3所述的HEVC/H.265的亚像素插值的单指令多数据技术(SIMD)快速实现方法,其特征在于,所述步骤5中,对于八阶亚像素插值,将一组8个系数装载成一个64比特的常系数矢量,用Tilera的单字节点乘指令将步骤5得到的矢量数据和对应的常系数矢量点乘,便得到一个点乘结果;
对于四阶亚像素插值,得到对应的三组四阶亚像素插值系数,一组四阶亚像素插值系数有四个元素,这三组四阶亚像素插值系数分别为{-4,36,36,-4},{-4,53,18,-3},{-3,18,53,-4},将一组四阶亚像素插值系数装载进常系数矢量的高32比特和低32比特;用Tilera的单字节双点乘指令计算步骤5得到的矢量数据和常系数矢量,便得到两个点乘结果。
5.根据权利要求1-4任一项所述的HEVC/H.265的亚像素插值的单指令多数据技术(SIMD)快速实现方法,其特征在于,所述步骤6中,采用并行的加法和右移运算以及数据重组,并行完成对点乘计算结果进行右移舍入操作,右移计算公式如下:
result=(dotp+offset)>>shift
式中:result是右移输出结果;shift是右移值;dotp是点乘计算结果;offset是补偿值,在水平或竖直方向的插值中shift=6,offset=1<<(shift-1)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410647903.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种开槽机
- 下一篇:用于拆分多段式钻杆的固定装置