一种基于Intel、AMD和Nvidia三平台的H264硬件编码系统的制作方法

文档序号:9730520阅读:1375来源:国知局
一种基于Intel、AMD和Nvidia三平台的H264硬件编码系统的制作方法
【技术领域】
[0001 ] 本发明属于图形图像技术领域,更具体地,涉及一种基于Intel、AMD和Nvidia三平台的H264硬件编码系统。
【背景技术】
[0002]Η.264是国际标准化组织(IS0)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式。H.264是ITU-T以H.26x系列为名称命名的视频编解码技术标准之一。H.264是ITU-T的VCEG(视频编码专家组)和IS0/IEC的MPEG(活动图像编码专家组)的联合视频组(JVT: joint video team)开发的一个数字视频编码标准。该标准最早来自于ITU-T的称之为H.26L的项目的开发。H.26L这个名称虽然不太常见,但是一直被使用着。
H.264是ITU-T以H.26x系列为名称命名的标准之一,AVC是IS0/IEC MPEG—方的称呼。
[0003]目前大部分的H264编码使用的是libx264的软件编码,这样在计算机的CPU性能比较差的情况下,会严重消耗中央处理器(Central Processing Unit,CPU)资源,导致计算机系统系统性能下降;即使有些计算机使用了硬件编码,但是仅仅是支持Intel平台的集成显卡或者Nvidia平台,并不能对Intel、AMD、Nvidia这几大平台进行统一的支持。

【发明内容】

[0004]针对现有技术的以上缺陷或改进需求,本发明提供了一种基于Intel、AMD和Nvidia三平台的H264硬件编码系统,其目的在于能够针对不同硬件平台的计算机平台无感知的提供相应的硬件编码方案,由此解决现有技术下部分计算机系统无法进行H264硬件编码的技术问题。
[0005]为实现上述目的,本发明提供了一种基于Intel、AMD和Nvidia三平台的H264硬件编码系统,包括通用编码模块、Intel硬件编码器、AMD硬件编码器以及Nvidia硬件编码器,其中:
[0006]所述通用编码模块,用于创建通用编码接口,判断计算机系统所支持的硬件编码器类型,根据计算机系统所支持的硬件编码器类型选择调用Intel硬件编码器、AMD硬件编码器或Nvidia硬件编码器中的任一种进行H264视频编码;
[0007]所述Intel硬件编码器,用于对支持Intel硬件编码的计算机系统进行H264视频编码;
[0008]所述AMD硬件编码器,用于对支持AMD硬件编码的计算机系统进行H264视频编码;
[0009]所述Nvidia硬件编码器,用于对支持Nvidia硬件编码的计算机系统进行H264视频编码。
[0010]本发明的一个实施例中,所述通用编码模块包括通用编码器接口子模块和编码器执行子模块,其中:
[0011]所述通用编码器接口子模块用于实现对编码器接口的定义,所述编码器接口包括文件打开接口、编码器类型获取接口、编码器创建接口、写字节流接口、文件关闭接口,其中:
[0012]所述文件打开接口用于打开欲写入编码结果的文件,或者建立实时消息传输协议(Time Messaging Protocol,RTMP)连接或者实时流传输协议(Real Time StreamingProtocol,RTSP)连接,所述文件打开接口的输入参数包括文件路径和读写文件参数;
[0013]所述编码器类型获取接口用于获取计算机系统所支持的编码器类型,以使所述编码器创建接口根据所述计算机系统所支持的编码器类型创建相应类型的硬件编码器;
[0014]所述编码器创建接口用于根据所述编码器类型获取接口返回的编码器类型创建相应类型的编码器,其输入参数为编码器类型,输出为相应类型编码器,所述编码器类型为Intel硬件编码器,或者AMD硬件编码器,或者Nvidia硬件编码器;
[0015]所述写字节流接口用于将编码后的字节流写入上述欲写入编码结果的文件中,或者通过RTMP协议连接发送到RTMP服务器,或者通过RTSP协议连接发送到RTSP服务器;
[0016]所述文件关闭接口用于在编码结束后关闭正在写入的文件,或者关闭已建立的RTMP协议连接或者RTSP协议连接;
[0017]所述编码器执行子模块用于根据上述通用编码器接口子模块对编码器接口的定义创建编码器接口,利用创建的编码器接口判断计算机系统所支持的硬件编码器,选择调用Intel硬件编码器、AMD硬件编码器或Nvidia硬件编码器中的任一种对视频进行H264编码。
[0018]本发明的一个实施例中,所述编码器接口还包括写文件头接口,所述写文件头接口用于写文件头,所述文件头中包括了视频编码器的H264序列集参数和PPSH264图像集参数,所述H264序列集参数和PPSH264图像集参数用于在解码器解码时使用。
[0019]本发明的一个实施例中,所述编码器接口还包括元数据信息设置接口,所述元数据信息设置接口用于设置文件中的元数据信息。
[0020]本发明的一个实施例中,所述编码器创建接口包括编码器打开接口、编码器关闭接口以及图像编码接口,其中:
[0021 ]所述编码器打开接口用于打开编码器,输入参数包括待编码视频的宽、待编码视频的高以及编码的码率;
[0022]所述图像编码接口用于在上述编码器打开后,利用编码器编码图像,输入参数为要编码的图像和编码时间戳;
[0023]所述编码器关闭接口用于在编码结束后,关闭上述打开的编码器。
[0024]本发明的一个实施例中,所述编码器类型获取接口获取计算机系统所支持的编码器类型具体为:
[0025]若返回CT_QSV264,表示计算机系统支持Intel硬件编码;
[0026]若返回CT_AMD264,表示计算机系统支持AMD硬件编码;
[0027]若返回CT_NV264,表示计算机系统支持Nvidia硬件编码;
[0028]若返回CT_X264,表示计算机系统不支持任何硬件编码。
[0029]本发明的一个实施例中,所述图像编码接口具体包括字节流缓冲区建立子模块、字节流缓冲区大小设置子模块、视频帧显示时间戳设置子模块、视屏帧解码时间戳设置子模块、关键帧判断子模块以及图像编码接口释放子模块,其中:
[0030]所述字节流缓冲区建立子模块,用于建立用于解码器解码的H264字节流缓冲区,
[0031]所述字节流缓冲区大小设置子模块,用于设置用于解码器解码的H264字节流缓冲区大小;
[0032]所述视频帧显示时间戳设置子模块,用于设置用于解码器解码的视频帧显示时间戳;
[0033]所述视屏帧解码时间戳设置子模块,用于设置视屏帧解码时间戳;
[0034]所述关键帧判断子模块,用于判断当前帧是否为关键帧;
[0035]所述图像编码接口释放子模块,用于释放当前图像编码接口。
[0036]本发明的一个实施例中,所述Intel硬件编码器包括Intel硬件编码器初始化子模块、Intel硬件编码器编码子模块以及Intel硬件编码器关闭子模块,其中:
[0037]所述Intel硬件编码器初始化子模块用于初始化Intel硬件编码器,具体包括SDK初始化子模块、编码初始化子模块、显存分配子模块和Intel参数获取子模块,其中:
[0038]所述SDK初始化子模块用于调用MFXInit初始化Intel官方的MediaSDK;
[0039]所述编码初始化子模块用于调用MFXVideoENCODE_Init来初始化编码器;
[0040]所述显存分配子模块,用于分配用来接收待编码的图像的显存表面,具体包括;[0041 ] 调用MFXVideoENCODE_Query1Surf来获取需要创建的显存表面数量;
[0042]创建IDirect3DDeviceManager9接口,用来提供视频加速功能;
[0043]调用IDirect3DDeviceManager9接口的OpenDeviceHandle方法,获取设备句柄;
[0044]通过上步的设备句柄,调用IDirect3DDeviceManager9接口法,创建 IID_IDirectXVideoDecoder Service (接口 IID)的 ID irectXVideoDecoder Service接口;
[0045]调用上步创建的IDirectXVideoDecoderService 接口 的 Create Surf ace 方法来完成视频加速表面的创建;
[0046]所述Intel参数获取子模块用于在初始化编码器成功后,获取H264序列集参数和H264图像集参数;
[0047]所述Intel硬件编码器编码子模块用于对视频进行H264编码,具体包括图像编码子模块和同步子模块,其中:
[0048]所述图像编码子模块,用于调用MFXVideoENCODE_EncodeFrameAsync对NV12格式的图像进行编码;
[0049]所述同步子模块用于调用MFXVideo⑶RE_Sync0perat1n来进行CPU和GPU之间的同步,获取硬件编码返回的数据流;
[0050]所述Intel硬件编码器关闭子模块用于在停止编码时调用MFXVideoENC0DE_Close来关闭编码器,进行资源的释放,并调用MFXClose来关闭Intel MediaSDK。
[0051]本发明的一个实施例中,所述AMD硬件编码器包括AMD硬件编码器初始化子模块、AMD硬件编码器编码子模块以及AMD硬件编码器关闭子模块,其中:
[0052]所述AMD硬件编码器初始化子模块用于初始化AMD硬件编码器,具体包括DLL加载子模块、接口创建子模块、参数设置子模块以及AMD参数获取子模块,其中:
[0053]所述DLL加载子模块用于加载amf-core_windesktop32.dl 1 和amf-componen
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1