首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于OpenGL/DirectX的硬件超高分辨率视频解码与再现

基于OpenGL/DirectX的硬件超高分辨率视频解码与再现
EN

Stack Overflow用户
提问于 2015-06-02 10:06:30
回答 1查看 748关注 0票数 0

我正在尝试解码和渲染超高分辨率视频(4k X 4k),视频是用h.264编解码器编码的。在解码视频帧时,我们想要在着色器上渲染帧,目前正在使用glsl在opengl管道中,这样我们就可以动态地操作片段颜色。我们已经使用FFmpeg解码API进行了测试,但瓶颈在于以下gl函数调用的软件解码时间和数据传输:

代码语言:javascript
运行
复制
glTexSubImage2D(...);

我们已经考虑过使用DirectShow在GPU上利用硬件加速来解码视频帧,并使用NV_DX_interop2将GL的纹理槽映射到解码的内存地址,但目前解码h.264帧的最大分辨率是1920x1080,请参阅here

所以我想我的问题是:有什么建议可以通过利用硬件加速,映射GPU的视频内存地址并将其渲染为纹理来解码超高分辨率视频(假设在h.264编解码器中)?

EN

回答 1

Stack Overflow用户

发布于 2015-06-02 11:30:46

直接将Map a PBO和decode/swscale放入缓冲区。在你取消映射后,glTexSubImage2D()变成了一个图形处理器->图形处理器操作,几乎是“免费的”。

使用着色器可以直接渲染YUV,并避免使用swscale进行YUV->RGB转换,从而节省更多的CPU解码时间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30586189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档