视频处理加速及应用实践:基于英特尔GPU
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

随着科技和网络的蓬勃发展,视频作为主要的信息载体,应用场景越来越多——从传统的电视电影到现在的在线视频服务,从点播到直播,从单向接收到实时互动。同时,随着屏幕越来越清晰,尺寸越来越大,对视频的尺寸、清晰度等的要求变得越来越高,这也对硬件的算力提出了越来越高的要求。作为计算平台的主要硬件供应商,英特尔提供了多款能够加速处理复杂视频应用的硬件平台,例如,性价比合适的集成显卡、可插拔的独立显卡、性能强悍并且可扩展的服务器处理器、可实现客户定制化的FPGA芯片等。GPU架构的快速发展,特别是英特尔GPU内集成了很多专用的低功耗视频数据处理模块,使其具有很强的视频加速处理能力。虽然国内也有很多开发者使用英特尔GPU,然而没有相关书籍来系统梳理这部分知识。因此,本书将聚焦于使用英特尔的GPU来进行视频加速处理的方案。

本书将从视频数据的理论基础、硬件基础、软件接口、实战等方面进行介绍。首先深入浅出地介绍一些大家耳熟能详的数字图像的基本概念;然后介绍数字图像压缩的理论基础和评价方法,以及现在常用的一些视频编码的标准格式;接下来介绍英特尔GPU的架构特点,因为它集成了专用的多媒体处理模块,具备高效、低功耗的视频加速处理能力;再接下来详细介绍相关软件组件的设计原理以及环境搭建过程等,这些组件包括免费开源的视频处理开发套件Media SDK、基于Media SDK和OpenVINO实现的高并发视频分析业务评估工具(SVET),以及业界常用的视频开源框架FFmpeg、GStreamer和OpenCV等。由于视频处理加速在嵌入式环境的广泛应用,我们在第5章详细介绍了Linux系统下对应的软件栈,对开发者比较关心的DRM框架、i915驱动、VA-API、GmmLib的核心知识做了梳理。这些软件接口各有所长,面向的应用也千差万别,但是底层都可以通过英特尔的驱动调用英特尔的GPU来进行视频加速处理,所以,读者可以根据自身项目的需求有选择地阅读。在介绍完硬件架构和软件接口之后,就开始进行实战技巧的介绍,主要包括视频编解码处理、拼接显示、性能监测、性能验证和优化等,并配有命令行以及参考代码。相信这种介绍方法能够帮助读者少走弯路,节省开发成本,起到事半功倍的作用。

本书各章的具体写作分工为:

第1章 视频处理之理论基础:林森

第2章 英特尔GPU概述:林森,傅伟

第3章 Media SDK总览:林森,唐君

第4章 Media SDK环境搭建:唐君,叶钊,林森,王丹

第5章 Linux视频加速软件框架:唐君

第6章 开源框架的使用和环境搭建:叶钊,黄妍

第7章 高并发视频分析业务评估工具:王丹

第8章 编解码实现:林森,傅巧妮,王丹,唐君

第9章 拼接显示实现:傅巧妮,唐君,林森

第10章 性能监测:唐君,林森

第11章 性能验证和优化:唐君,林森

附录A~附录D:林森

本书面向的读者为视频行业的广大从业人员,不管是新进入这个行业的开发小白,还是众多战斗在第一线的销售、售前工程师以及现场工程师等,甚至是具有数十年工作经验的资深软硬件开发人员,都可以通过本书了解英特尔GPU的架构、能力、特点以及开发框架等,并找到解决实际问题的方法和思路,快捷地研发出有特点的视频产品。

另外,本书介绍的是最基本的视频图像处理的理论知识,不会涉及高深的数学知识和最前沿的理论算法,因为本书面向的是那些想要把视频处理技术做成可以落地的项目的从业者和开发者。当然有很多讲述理论的书,想要深入学习视频编解码知识的读者可以参考《数字视频编码技术原理(第二版)》(由高文、赵德斌、马思伟所著)等。尽管本书的很多案例都基于英特尔GPU平台,但是很多视频加速处理的思想是相通的,致力于视频处理开发的读者也可以把本书作为入门类书籍参考。

在整本书的描述过程中,我们希望尽可能地把想要表述的观点通俗易懂地表达出来。众所周知,很多技术类的书籍常常因为技术本身比较复杂而让读者感到晦涩难懂,我们希望通过我们的经验帮助读者少走一些弯路,从而降低开发的难度。同时,因为在视频技术行业里大家对某些英文单词已经形成了基本认知,如果直接翻译成中文会给广大读者造成困扰,所以我们在描述过程中会把某些专业名词对应的英文放到括号内,以便把概念介绍得更加明确,易于阅读和理解。

本书从开始构思到最后成书历时三年多,大家都是利用业余时间参与编写工作的,这里要特别感谢陈婧在本书的编写过程中给予大力支持,在大家坚持不下去的时候,她一直在出谋划策,鼓励和推动着大家前进,非常感谢!

最后由于大家的能力和精力有限,书中还有很多问题没有来得及仔细钻研,在描述和实现上也有很大的局限性,希望得到大家的理解和支持,欢迎提出宝贵的意见和建议。