发明名称 应用SSE指令集对视音频信号的对称卷积核进行卷积的方法
摘要 本发明属于视频以及图像处理技术,具体涉及一种应用SSE指令集对视音频信号的对称卷积核进行卷积的方法。该方法将视音频输入信号的浮点信号序列S(n)划分为左中右三个区间,对左边和右边的区间,使用普通的C语言算法进行卷积处理;对中间区间内的信号按每四个相邻点一组利用SSE指令集进行卷积处理。该方法利用了卷积核的对称特性,有效地减少了一半的乘法运算;另外,由于SSE指令集可以一次对四个点进行计算,所以有效地减少了所指令的条数,在具体处理上没有任何条件转移指令,可以使CPU的流水线利用的更加充分。
申请公布号 CN101923534B 申请公布日期 2012.02.01
申请号 CN200910086325.5 申请日期 2009.06.10
申请人 新奥特(北京)视频技术有限公司 发明人 见良;郑鹏程;刘铁华;孙季川
分类号 G06F17/10(2006.01)I 主分类号 G06F17/10(2006.01)I
代理机构 北京天悦专利代理事务所(普通合伙) 11311 代理人 田明;任晓航
主权项 一种应用SSE指令集对视音频信号的对称卷积核进行卷积的方法,包括如下步骤:(1)将视音频输入信号的浮点信号序列S(n)划分为左中右三个区间[0,Le),[Le,Rs),[Rs,N);其中,Le与Rs的确定方法如下:如果N>R,则Le=UPALIGN(R,4),Rs=DOWNALIGN(N‑R,4),如果Le≥Rs,则Le=Rs=N,其中,UPALIGN(R,4)表示将R对齐到下一个能被4整除的边界上,DOWNALIGN(N‑R,4)表示将(N‑R)对齐到上一个能被4整除的边界上,如果N≤R,则Le=Rs=N,其中,N为信号长度,R为卷积核的半径;(2)对左边和右边的区间,使用普通的C语言算法进行卷积处理;(3)对中间区间内的信号按每四个相邻点一组利用SSE指令集进行卷积处理;利用SSE指令集进行卷积处理的具体过程如下:①将一个类型为__m128的变量xmm_sum_ps用_mm_setzero_ps指令赋值为0;②设当前这四个点的第一个点的索引是n,首先将起始索引为left=n‑R的相邻四个点用_mm_loadu_ps指令加载到类型为__m128的变量xmm_left_pixels_ps中,然后将起始索引为right=n+R的相邻四个点用_mm_loadu_ps指令加载到类型为__m128的变量xmm_right_pixels_ps中;③令i=0,处理下面的循环:a.将xmm_left_pixels_ps与xmm_right_pixels_ps的内容用_mm_add_ps指令相加起来放入到xmm_left_pixels_ps中;b.用_mm_set1_ps指令将K(i)赋值到类型为__m128的变量xmm_kernel_coef_ps中,然后用_mm_mul_ps指令将xmm_left_pixels_ps与xmm_kernel_coef_ps相乘,结果放入xmm_left_pixels_ps中,用_mm_add_ps指令将xmm_left_pixels_ps的内容加入到xmm_sum_ps中;c.用_mm_load_ss指令将S(left+4)加载到类型为__m128的临时变量xmm_tmp_ps中,然后再利用_mm_move_ss指令与_mm_shuffle_ps指令将S(left+4)移入到xmm_left_pixels_ps,并将S(left)移走;d.用步骤c的方法将S(right‑1)移入到xmm_right_pixels_ps,并将S(right+3)移出;e.令left=left+1,right=right‑1,i=i+1,如果i<R则跳转到步骤a,否则,进行步骤④的处理;④用_mm_load_ps指令将信号中起始索引为n的相邻四个点加载到xmm_left_pixels_ps中;⑤用_mm_set1_ps指令将K(R)设置到变量xmm_kernel_coef_ps中,然后用_mm_mul_ps指令将xmm_left_pixels_ps与xmm_kernel_coef_ps相乘的结果放入xmm_left_pixels_ps,再用_mm_add_ps将xmm_left_pixels_ps的内容加入到xmm_sum_ps中,最后将xmm_sum_ps中的内容赋值到目标信号的相应位置上。
地址 100080 北京市海淀区西草场1号北京硅谷电脑城15层1501-1506室
您可能感兴趣的专利