searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

一种用于实时音视频通信场景的低延时解码渲染方法

2025-06-27 02:42:32
5
0

一、技术背景

实时音视频通信场景(比如视频会议、云游戏等场景)对低延时、高速度的响应要求非常高,所以延时卡顿将会影响云游戏的画面呈现及用户体验。目前技术挑战主要是如何优化编解码渲染技术和传输技术,降低整体延时和卡顿,提升画面呈现效果及用户体验

二、技术目的

目前解码渲染方案是将硬解码得到的NV12数据拷贝回CPU内存,然后通过sws_scaleNV12格式转成RGBA/YUV420格式,进而再调用对应的渲染器渲染。现有方案数据拷贝回CPU将会导致解码渲染耗时较大,卡顿,影响画面呈现效果及用户体验。本专利无需将硬解码的数据拷贝回CPU内存,该方法主要是创建纹理Shader资源视图绑定渲染管线,设置扩展像素Shader访问纹理Shader资源视图,使用NV12并输出RGBA进行渲染,这样可以将解码渲染数据流工作全部交给GPU来处理,极大解放CPU,解决了因为数据拷贝导致延时卡顿问题

三、技术方案

GPU解码渲染方法主要包括以下步骤:

1) 设置源流和视频Decoder,该步骤主要初始化相关数据结构,设置格式上下文以及En/Decoder上下文(本发明采用FFmepg D3D11va硬解码相关初始化配置)。

2) 通过1)设置完成,从源流获取AvPacket包,使用En/Decoder解码为AVFrame

3) 创建一个ID3D11Texture2D纹理对象,纹理对象通过创建Chroma和Luminance两个Shader资源视图绑定到渲染管线上,最后设置自定义像素Shader(输入NV12并输出RGBA)能够访问Chroma和Luminance这两个通道。

4) 接收到的AVFrame数据帧纹理通过内置的DirectX函数复制到第3)步创建的纹理对象。

根据2),3),4)就可以无需将硬解码的数据拷贝回CPU内存,而是直接在GPU进行处理之后渲染视频帧。

四、技术方案流程图

5、总结

通过创建纹理Shader资源视图绑定渲染管线,设置扩展像素Shader访问纹理Shader资源视图,使用NV12并输出RGBA进行渲染,使解码渲染数据流都在GPU处理,极大解放CPU,降低延时

0条评论
0 / 1000
邱****谋
10文章数
0粉丝数
邱****谋
10 文章 | 0 粉丝
原创

一种用于实时音视频通信场景的低延时解码渲染方法

2025-06-27 02:42:32
5
0

一、技术背景

实时音视频通信场景(比如视频会议、云游戏等场景)对低延时、高速度的响应要求非常高,所以延时卡顿将会影响云游戏的画面呈现及用户体验。目前技术挑战主要是如何优化编解码渲染技术和传输技术,降低整体延时和卡顿,提升画面呈现效果及用户体验

二、技术目的

目前解码渲染方案是将硬解码得到的NV12数据拷贝回CPU内存,然后通过sws_scaleNV12格式转成RGBA/YUV420格式,进而再调用对应的渲染器渲染。现有方案数据拷贝回CPU将会导致解码渲染耗时较大,卡顿,影响画面呈现效果及用户体验。本专利无需将硬解码的数据拷贝回CPU内存,该方法主要是创建纹理Shader资源视图绑定渲染管线,设置扩展像素Shader访问纹理Shader资源视图,使用NV12并输出RGBA进行渲染,这样可以将解码渲染数据流工作全部交给GPU来处理,极大解放CPU,解决了因为数据拷贝导致延时卡顿问题

三、技术方案

GPU解码渲染方法主要包括以下步骤:

1) 设置源流和视频Decoder,该步骤主要初始化相关数据结构,设置格式上下文以及En/Decoder上下文(本发明采用FFmepg D3D11va硬解码相关初始化配置)。

2) 通过1)设置完成,从源流获取AvPacket包,使用En/Decoder解码为AVFrame

3) 创建一个ID3D11Texture2D纹理对象,纹理对象通过创建Chroma和Luminance两个Shader资源视图绑定到渲染管线上,最后设置自定义像素Shader(输入NV12并输出RGBA)能够访问Chroma和Luminance这两个通道。

4) 接收到的AVFrame数据帧纹理通过内置的DirectX函数复制到第3)步创建的纹理对象。

根据2),3),4)就可以无需将硬解码的数据拷贝回CPU内存,而是直接在GPU进行处理之后渲染视频帧。

四、技术方案流程图

5、总结

通过创建纹理Shader资源视图绑定渲染管线,设置扩展像素Shader访问纹理Shader资源视图,使用NV12并输出RGBA进行渲染,使解码渲染数据流都在GPU处理,极大解放CPU,降低延时

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0