- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于DXVA和OpenCL硬解码H.264技术研究和实现
基于DXVA和OpenCL硬解码H.264技术研究和实现
摘要:该文以H.264编码的图像为例,研究了基于DXVA和OpenCL的硬解码方案;利用DXVA2以及OpenCL的API,设计了一套硬解码流程,并利用该流程测试出数据,验证了方案的可行性。
关键词:dxva2;OpenCL;h.264;硬解码
中图分类号:TP312 文献标识码:A 文章编号:1009-3044(2015)21-0068-02
Research and Implementation of Hard Decoding H.264 Technology Based on DXVA and OpenCL
TANG Yong
(Changzhou Institute of Engineering Technology, Intelligent of equipment and Information Engineering, Changzhou 213164, China)
Abstract: In this paper, we researched the hardware-decoding based on DXVA and OpenCL which using a encoded image in H.264 as an example. We designed a hardware decoding process using DXVA2 and the OpenCL API, and we got the testing data to verify the possible solutions.
Key words: dxva2;OpenCL;h.264;hardware decoding
图像在计算机上的解码通常分为两种,一种称为软解码(CPU处理),一种称为硬解码(GPU处理)。GPU相对于CPU而言,更专注于图像的处理。对于大分辨率的图像运算使用硬解码速度可以更快,也可以更节省资源。
1 硬解码方案研究
通用硬解码技术DXVA2 (DirectX Video Acceleration)最终硬解只是在显卡的显存层次,解码后的数据一般都为YUV格式中的NV12,这种格式并不通用。本文采用全程的GPU对H.264编码的视频图像进行运算。DXVA2负责将H.264硬解码到显存,OpenCL(Open Computing Language,开放运算语言)负责YUV类型的转换以及显存到内存的拷贝[1]。
目前图像编码是H.264的比较常见。H.264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式。它本身的运算复杂度较高,分辨率越大,运算复杂率越高,耗时也越多。所以能够更方便体现DXVA和OpenCL相结合进行硬解码的优越性。
2 硬解码方案的设计与实现
方案设计的系统流程图如图1。从图1可以看出,硬解码的总体流程其实主要分为三块,一是数据的分析。这里主要是针对H264数据的分析,GPU硬解码由硬件完成了各种运算操作,但这些运算操作所需要的参数,是需要用户自己分析数据,从而得出的;二是DXVA硬解数据到显存Surface表面。这里已经解码成YUV数据NV12,但这种数据并不是我们所需要的格式以及CPU也无法直接访问显存;三是OpenCL进行YUV格式转换以及把数据的存储位置转移。这里主要指由GPU完成NV12到YV12的转化以及由显存转移到内存的过程[2]。
2.1 H.264数据分析
H.264数据分析主要参考H.264的压缩编码标准,在H.264码流中提取一些结构体参数,如PPS,SPS,NALU信息等。其中,SPS序列参数集和PPS序列参数集包含了初始化H.264解码器所需要的信息参数,包括解码所需要的profile, level, 图像的宽和高,deblock滤波器等[3]。而Non-IDR Slice_without_partition和IDR Slice则是包含了真正的H264图像原始数据。
2.2 Dxva2硬解码
进行DXVA2硬解码之前,首先要判断测试机的显卡是否支持h264的硬解码,以及支持的最大分辨率是多少。
DXVA2的硬解码步骤主要分为以下四步:第一步打开D3D设备句柄,包括了创建D3D9对象,创建D3D9设备,创建D3D设备管理器,打开设备句柄,获取硬解码服务对象等步骤[4]。第二步找到支持的解码配置,包括了找到视频服务转换的GUID,获取解码支持的配置等步骤;第三步分配未压缩的缓冲,即分配显存中的原始YUV缓冲表面。包括了创建表面,涉及的API有CreateS
文档评论(0)