全平台硬件解码渲染方法与优化实践

本文介绍了硬件解码渲染方法与优化实践,特别是针对Windows、Linux、macOS、Android、iOS等平台的硬件解码渲染流程。作者探讨了软解与硬解的优缺点,提出了解码数据在显存中直接处理的优化思路,以及各平台的硬解纹理转换方法。文章还涉及了D3D11+EGLStream、iOS/macOS的纹理共享接口和Android的MediaCodec优化策略。
摘要由CSDN通过智能技术生成

640?wx_fmt=jpeg


硬件解码后不恰当地使用OpenGL渲染会导致性能下降,甚至不如软解。本文来自PPTV移动端研发经理王斌在LiveVideoStackCon 2017大会上的分享,并由LiveVideoStack整理而成。分享中王斌详细解析了Windows、Linux、macOS、Android、iOS等多种平台下硬件解码的渲染方法及优化实践。


文 / 王斌

整理 / LiveVideoStack


大家好,我是来自PPTV的王斌。接下来我将围绕以下几个话题,为大家分享有关全平台硬件解码的渲染与优化的实践经验。


640?wx_fmt=png640?wx_fmt=png


解码后的视频数据需经过纹理加载后才会进行下一步的OpenGL ES渲染操作,其关键在于如何将解码后的数据填充到纹理中。不同的平台对于此问题的解决方案也不尽相同,这也是我们今天讨论的重点。


1、常规方法渲染硬解数据


1.1 常规的OpenGL渲染


1)软解OpenGL渲染流程


640?wx_fmt=png


常规的软解OpenGL渲染流程主要分为两部分:一是在渲染纹理前进行的准备纹理,二是渲染前更新纹理。准备纹理具体是指在第一次渲染第一帧前先创建一个设置好相应参数的纹理,而后再使用Texlmage2D将GPU上一定大小的显存空间分配给此纹理;进行渲染前首先需绑定此纹理,并借助TexSublmage2D技术将解码数据填充进之前分配好的纹理存储空间中,也就是所谓的“纹理上传”。


2)软解数据流


640?wx_fmt=png


软解OpenGL渲染的数据流为:首先,通过调用TexSublmage将解码后放在主存上的数据拷贝到显存上用于更新纹理,随后的渲染过程也是基于显存上的数据进行。


1.2 硬解OpenGL渲染


640?wx_fmt=png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值