云桌面(VDI)spice协议优化的关键技术——显示篇

关于spice协议的背景知识介绍参阅https://spice-space.org/

一. 动态选择编码策略

    X86平台软解码性能足够,非流式数据可以全部使用无损编码。由于LZ4是无损编码中解码最快但流量最大的,故可使用于静态系统图像的显示,实时统计非流式数据达到一定容忍流量(由实时带宽决定)时,变换编码策略为GLZ。GLZ相对于LZ有更快的解码速度,极少量不能使用GLZ编码的图像可以用LZ4。特别的,实时统计流式数据达到一定流量(可知是较大区域的视频播放),变换编码策略为jpeg,由于流式数据一般仍使用jpeg编码(换成H.264会显著增加服务端CPU占用),非流式数据用同样的编码可以在硬解码时避免一起拷贝到内存做合并。为什么不用QUIC?主要由于常见的X86云终端如8300、8350、3865等会对LZ系(包括GLZ、LZ4)解码做CPU指令优化,如果是普通PC可以按照图像情况分别选用QUIC或GLZ。

    ARM平台软解码性能不足,终端需要硬解码。以常见的RK3188终端为例,VPU只支持H.264和JPEG硬解码,非流式数据为了性能需要大部分采用JPEG编码,但为了避免有损解码带来的不清晰和边缘细线残留,可以采取措施:1)区分图像是否有Alpha通道,有则使用GLZ编码;2)只有RGB通道的需要根据JPEG编码的特点对非被4整除长度或宽度的边缘,在向canvas贴图时重绘边缘。

二. 硬解码

    X86终端一般为intel系列CPU,使用libva硬解。非流式数据使用libva硬解有一定难度,因为硬解后的数据不会拷贝回内存而是直接显示,而GTK界面数据是在内存中通过X11显示的,处理交叠关系

  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值