一种HEVC硬件解码的方法及系统技术方案

技术编号:38640382 阅读:11 留言:0更新日期:2023-08-31 18:34
本发明专利技术涉及用于Windows系统的一种HEVC硬件解码的方法及系统。该系统包括D3D11VA硬件解码器以及Direct3D11硬件渲染器,在初始化D3D11VA硬件解码器和Direct3D11硬件视频渲染器之后,建立两者之间的直接连接,获取HEVC视频的视频流,打开D3D11VA设备句柄,找到HEVC解码配置,对视频流进行硬件解码得到编码数据,使用Direct3D11硬件视频渲染器将所述编码数据渲染成图像。本发明专利技术的方法及系统不必依赖于第三方框架,整个过程无需进行内存拷贝,能提供更高的解码效率,更方便的控制过程,同时降低CPU占用率和内存占用率。低CPU占用率和内存占用率。低CPU占用率和内存占用率。

【技术实现步骤摘要】
一种HEVC硬件解码的方法及系统


[0001]本专利技术涉及音视频解码领域,尤其涉及用于Windows系统的一种HEVC硬件解码的方法及系统。

技术介绍

[0002]目前大多数高清视频使用HEVC编码。HEVC是一种视频压缩标准格式,具有4K(3840
×
2160像素)或8K(7680
×
4320像素)分辨率,符合高帧率、高位深、广色域、高动态范围等技术要求。HEVC编码可大幅提高编码效率,允许视频内容的数据压缩比高达1000:1,在相同视频质量水平下提供更高的数据压缩效果,或在相同比特率下大幅提高视频质量,但代价是计算复杂性增加,增加了CPU的负担。
[0003]目前,大多数用于Windows系统上的多媒体应用都基于FFmpeg去支持处理媒体文件的各种操作。FFmpeg是一种多媒体框架,能够适用于多种编码格式,在多种构建环境、机器架构和配置下运行。但FFmpeg软解码效率低,播放4K高清视频会出现卡顿。
[0004]例如,CN106331852A公开了一种用于WP手机进行H264硬件解码的方法及系统,实现在Windows 10系统下对视频流进行解码。具体包括:步骤1:通过访问服务器获取流地址和所对应的视频流;步骤2:将DXVA硬件解码器和Direct3D硬件解码器初始化并分别与FFmpeg建立连接;步骤3:使用DXVA硬件解码器和Direct3D硬件解码器,对视频流进行解码得到图像,其中步骤3进一步包括:调用FFMPEG程序中的avcodec_decode_video2函数对视频流进行解码,解码后得到的图像通过解码函数avcodec_decode_video2进行返回,返回的是一个包含ID3D11VideoDecoderOutputView接口的指针,然后通过Direct3D11硬件解码器的ID3D11DeviceContext接口中的Draw方法显示出解码后的图像。虽然简化了操作流程,不必依赖于SDK提供的MediaElement接口,但由于该方案是通过FFmpeg这一第三方框架进行操作,因此会带来性能上的损耗。
[0005]需要一种更好的可适用于Windows系统的HEVC硬件解码的方法及系统,提供更高的解码效率,更方便的控制过程,同时可以降低CPU占用率和内存占用率。

技术实现思路

[0006]提供本
技术实现思路
以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本
技术实现思路
并不旨在标识出所要求保护的主题的关键特征或必要特征;也不旨在用于确定或限制所要求保护的主题的范围。
[0007]由于显卡的GPU/VPU要比CPU更适合大数据量的低难度的重复性的解码工作,因此通过显卡的视频加速功能对HEVC高清视频进行硬件解码就可以流畅的支持1080p甚至4K清晰度的电影播放,而不需要占用CPU。硬解码的优势是能够将CPU从繁重的视频解码运算中释放出来,使播放设备具备流畅播放高清视频的能力,而被释放CPU可承担更多的其他任务。
[0008]本专利技术的一种用于Windows系统的HEVC硬件解码的方法,包括:获取HEVC视频的视
频流;通过LoadLibrary接口加载d3d11_1sdklayers.dll动态库,然后通过IDXGIAdapter通过函数IDXGIFactory2_EnumAdapters进行创建,再通过ID3D11Device_QueryInterface接口进行配置来初始化D3D11VA硬件解码器,通过ID3D11Device_GetImmediateContext接口创建ID3D11DeviceContext对象,然后再通过ID3D11DeviceContext_QueryInterface接口进行配置来初始化Direct3D11硬件视频渲染器;通过GetProcAddress函数接口D3D11VA硬件解码器和Direct3D11硬件视频渲染器绑定在一起,来建立D3D11VA硬件解码器和Direct3D11硬件视频渲染器之间的直接连接;打开D3D11VA设备句柄;用ID3D11VideoDevice接口和ID3D11Device_CreateTexture2D函数方法,获取硬件解码类型,然后根据硬件解码类型调用ID3D11Device_CreateTexture2D接口中的方法获取硬件解码参数结构,找到HEVC解码配置:通过调用media sample的IMFGetService::GetService获取指向IDirectXVideoMemoryConfiguration接口的指针,然后循环调用IDirectXVideoMemoryConfiguration::GetAvailableSurfaceTypeByIndex函数方法加速转码来对视频流进行硬件解码得到格式为DXGI_FORMAT_R8G8B8A8_UNORM的编码数据;以及使用Direct3D11硬件视频渲染器使用ID3D11Texture2D前设置ID3D11VideoProcessorInputView和ID3D11VideoProcessorOutputView,配置相关的ID3D11Texture2D等参数,将DXGI_FORMAT_R8G8B8A8_UNORM编码数据渲染成图像。
[0009]本专利技术的一种用于Windows系统的HEVC硬件解码的系统,包括:D3D11VA硬件解码器以及Direct3D11硬件渲染器。其中D3D11VA硬件解码器和Direct3D11硬件渲染器之间通过GetProcAddress函数直接连接。其中:
[0010]D3D11VA硬件解码器通过网络或从本地获取HEVC视频的视频流,根据原文件类型找到D3D11VA对应的文件类型,用ID3D11VideoDevice接口和ID3D11Device_CreateTexture2D函数方法,获取硬件解码类型,然后根据硬件解码类型调用ID3D11Device_CreateTexture2D接口中的方法获取硬件解码参数结构,找到解码配置,对视频流进行硬件解码得到格式为DXGI_FORMAT_R8G8B8A8_UNORM的编码数据;
[0011]Direct3D11硬件视频渲染器使用ID3D11Texture2D前设置ID3D11VideoProcessorInputView和ID3D11VideoProcessorOutputView,配置相关的ID3D11Texture2D参数,将DXGI_FORMAT_R8G8B8A8_UNORM编码数据渲染成图像。
[0012]本专利技术直接通过Microsoft DirectShow或Microsoft Media Foundation(MF)框架API处理媒体文件的各种操作,直接在D3D11VA和Direct3D11之间建立连接,通过D3D11VA硬件解码器支持了HEVC高清视频编码,并通过Direct3D11硬件渲染器进行视频渲染,整个过程无需进行内存拷贝,解码效率高,CPU占用率和内存占用率远远低于软解码方案,且在解码和渲染本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于Windows系统的HEVC硬件解码的方法,包括:获取HEVC视频的视频流;初始化D3D11VA硬件解码器和Direct3D11硬件视频渲染器;建立所述D3D11VA硬件解码器和所述Direct3D11硬件视频渲染器之间的直接连接;打开D3D11VA设备句柄;找到HEVC解码配置:对视频流进行硬件解码得到编码数据;以及使用Direct3D11硬件视频渲染器将所述编码数据渲染成图像。2.如权利要求1所述的方法,其特征在于,初始化D3D11VA硬件解码器包括:通过LoadLibrary接口加载d3d11_1sdklayers.dll动态库,然后通过IDXGIAdapter通过函数IDXGIFactory2_EnumAdapters进行创建,再通过ID3D11Device_QueryInterface接口进行配置。3.如权利要求1所述的方法,其特征在于,初始化Direct3D11硬件视频渲染器包括:通过ID3D11Device_GetImmediateContext接口创建ID3D11DeviceContext对象,然后再通过ID3D11DeviceContext_QueryInterface接口进行配置。4.如权利要求1所述的方法,其特征在于,建立所述D3D11VA硬件解码器和所述Direct3D11硬件视频渲染器之间的直接连接包括:通过GetProcAddress函数接口将所述D3D11VA硬件解码器和所述Direct3D11硬件视频渲染器绑定在一起。5.如权利要求1所述的方法,其特征在于,找到HEVC解码配置包括:用ID3D11VideoDevice接口和ID3D11Device_CreateTexture2D函数方法,获取硬件解码类型,然后根据硬件解码类型调用ID3D11Device_CreateTexture2D接口中的方法获取硬件解码参数结构,找到解码配置。6.如权利要求1所述的方法,其特征在于,对视频流进行硬件解码得到编码数据包括:通过调用media sample的IMFGetService::GetService获取指向IDirect...

【专利技术属性】
技术研发人员:刘博王刚王家宾薛有义何军辉罗国鸿李康炎
申请(专利权)人:天翼数字生活科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1