您的位置:首页 > 其它

硬件解码基础知识总结

2017-04-27 16:41 225 查看

硬件解码基础知识总结

1、CPU与GPU

        CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景:(1)CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理,这些都使得CPU的内部结构异常复杂;(2)GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
        CPU 由专为顺序串行处理而优化的几个核心组成,而 GPU 则拥有一个由数以千计的更小、更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构。

2、三大显卡制造商

        现在显卡制造商分为三大家:intel,ati和nvidia。它们之间的区别与联系:
(1)nvidia显卡,俗称n卡,是最稳定、支持最多的,但是只有闭源驱动;
(2)intel显卡,稳定性、支持率次之,但是是开源的;
(3)ati显卡,包括开源驱动和闭源驱动,但是开源的驱动只能发挥性能的一半且耗能极大,闭源驱动的稳定性比n卡差很多。
        所以,目前选择比较多的是n卡和intel显卡。

3、硬解的前提条件

      要想进行硬解,就要满足如下条件:
(1)有显卡,想要进行硬解就得确保自己的显卡支持视频硬解;
(2)有显卡驱动,需要利用显卡驱动来调用电脑的显卡;
(3)有编程接口,因为显卡驱动本身不提供硬解所用的编程接口,所以还需要驱动和播放器中间的api接口。
        这个连接显卡驱动与硬解的编程接口可以分为两大类:
(1)Windows环境下:DXVA(DirectX Video Acceleration),是操作系统自带的,由微软定义;
(2)Linux环境下:linux上由于没有了厂家,所以只能由显卡制造商来定义,n卡的名为VDPAU(Video Decode and Presentation API for Unix),由NVIDIA定义;a卡和intel的名为VAAPI(Video Acceleration API),是由intel开发的。
        通常这些API提供了一系列的功能,比如:视频解码,后处理,解码帧的描述,或者把帧下载到系统内存等等。相应的,不同的功能插件一般是给不同的element使用的,这样pipeline可以适应任何需求。

4、驱动和硬解之间的api接口介绍

        对于windows霸主的微软而言:DXVA(DirectX Video Acceleration),微软为了Windows系统和XBox360定制的,一般正确安装windows系统即可。
        对于Intel而言:VAAPI(Video Acceleration API),2007年Intel设计的,目的是在Unix操作系统的XWindow系统(X Window图形用户接口,是一种计算机软件系统和网络协议,提供了一个基础的图形用户界面(GUI)和丰富的输入设备能力联网计算机)下运行,现在是开源的,且也不仅仅局限于Intel的GPU了,其他制造商也可以使用。
        对于NVIDIA而言:VDPAU(Video Decode and Presentation API for Unix),2008年NVidia设计的,最早也是运行在Unix的XWindow系统下,现在同样是开源的。虽然同样已经是开源库了,但除了NVidia自己外还没有其他制造商使用。
        对于AMD而言:XVBA(X-Video Bitstream Acceleration),AMD设计,在linux操作系统的XWindow系统下下X Video的扩展,目前在AMD的ATI显卡中有支持; OVD(Open Video Decode),AMD的又一个API。
        对于MAC而言:VDA(Video Decode Acceleration),应用于Mac OSX10.6.3之后,仅仅加速H.264的解码。
        对于TI而言:DCE(Distributed Codec Engine),一个开源的软件库(libdce)和TI定制的API,提供给linux系统和ARM平台的。
        对于非盈利组织而言:OpenMAX(Open Media Acceleration),由非盈利性联合Khronos Group设计的,是一组跨平台的C语言编程接口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息