使用PMULHW或PMADDWD指令对RGB颜色转换至YCbCr颜色的汇编优化

本文探讨了在视频处理中使用SIMD指令进行颜色空间转换,特别是通过PMULHW和PMADDWD指令优化RGB到YCbCr的转换。分析了两种指令的计算流程,指出尽管PMADDWD多一条指令,但因其数据混排优势,性能更高。同时,建议将0.5的补偿系数纳入计算,简化编译后的代码。针对不同SSE扩展,给出了相应处理建议。
摘要由CSDN通过智能技术生成

在视频处理中,常会遇到颜色空间的转换(高清和标清下的转换公式不同),下面是使用SIMD指令对RGBA颜色转换至YUYV颜色的汇编优化

 

假设转换公式如下:

Y = Yr * R + Yg * G + Yb * B

U = Ur * R + Ug * G + Ub * B

V = Vr * R + Vg * G + Vb * B

 

转换后,这里选择直接丢弃第二个像素的U和V,这里暂不考虑A通道的存储

 

为了考虑性能,通常会将浮点系数放大成短整型系数,经放大后最后的结果需进行0.5的补偿(同样进行放大)

 

下面对使用pmulhw和pmaddwd两条指令分别进行分析

从公式中可以看到,对于Y、U、V三个通道,分别需要进行3次乘法和4次加法(包括1次补偿)

于是每4个RGBA像素能得到2个YUYV,共需要进行24次乘法,按照XMM寄存器128位计算,至少需要3条pmulhw指令或者4条pmaddwd指令

 

分别考虑计算流程,首先是pmulhw

(1)读取内存(movdqu,movdqa,lddqu)

(2)通道数据重排(pshuflw,pshufhw,pshufd,shufps,shufpd)

(3)使用pmulhw

(3)相关通道相加,计算Y、U、V,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值