Photo by Chris Peeters from Pexels

本文内容来自Xilinx 张吉帅在LiveVideoStackCon2019深圳站上的精彩分享,他将重点讨论异构计算中非常具有潜力的一部分 —— FPGA,并详细介绍赛灵思以及其技术生态合作伙伴在有关视频加速,图片转码等方面的解决方案。

文 / 张吉帅

整理 / LiveVideoStack

1. FPGA的优势

大家好,我是来自Xilinx的张吉帅,随着视频内容的火爆,其在网络上的传输量越来越大,对视频编解码算力也有了更高的需求;此外,视频压缩的标准也在不断提升,对于H.264视频编码压缩,CPU基本可以勉强支持,但对于H.265、VP9、AV1等更高的视频编码标准来说则难以胜任。根据实际数据显示,相较于CPU与GPU在BASE LAN加速卡上的表现,基于FPGA可以实现对H.265 1080P 120帧/秒的视频编码压缩,并且在压缩率、压缩质量以及功耗上都具有更大的优势。除此之外,与ASIC相比,其性价比会高于FPGA。FPGA还占有相当大一部分市场份额的原因主要是因为FPGA从方案设计开发到实际应用,整体流程周期非常短。

具体地说,赛灵思所提供的各种硬件加速解决方案,架构通常为FPGA+CPU的异构方式。从开发者或者应用的角度,实际CPU端包含一个应用程序,FPGA端则包含一段二进制的FPGA逻辑代码。而从使用的角度来看,只需要考虑图中横线以上部分的使用,与传统软件类似,使用起来相对简单。

在实际应用中,FPGA部分实现的是编码相关的功能,CPU部分则是通过框架加插件的方式实现FFmpeg的应用,并且插件部分已经集成,无需开发,用户只要简单调用FFmpeg,即可使用赛灵思高性能的H.264编码器。

图为赛灵思H.264、HEVC、VP9、AV1等FPGA相关IP产品。FPGA异构计算的灵活性体现在我们可以将多种不同IP放入同一芯片,完成多种不同工作。例如GPU或ASIC可以实现编码相关工作,而对于赛灵思FPGA,我们可以在芯片中加入HEVC和ABRScaler的IP,从而实现多种不同码率视频流的生成。除此之外,还有低延迟等更多特性。

2. Xilinx Media Accelerator(XMA)

赛灵思提供了一整套的API,即Xilinx Media Accelerator(XMA),用户可以基于API完成一系列的开发。从CPU通过PCIE到赛灵思芯片,0拷贝的XMA,可以支持多线程、多进程,当然还包括刚才提到的到FFmpeg框架的接口API。

2.1 FPGA接入VP9编码器

与ASIC不同的是,赛灵思FPGA芯片可用于不同工作。例如接入的是VP9编码器,图中浅蓝色部分为CPU进行的工作,红色部分为FPGA芯片进行的工作。数据进入芯片,通过CPU完成解码,进行音频和视频的解码调试,将解码出的视频发送至ABR的IP,再将结果传递给VP9编码器,最终与音频进行调制,生成VP9编码的音视频媒体流。

2.2 HEVC+VP9编码视频流生成

在上述方案的基础上,只需要加载HEVC的IP,即可在同一芯片中实现VP9编码视频流以及生成HEVC编码视频流。

2.3 人脸识别

除此之外,如果我们希望实现视频中人脸识别的功能,还可以在其中加入Machine Learning的IP。

2.4 同一芯片中可接入多个IP

上述内容中所提到的ABR的IP,H.264的IP,在同一芯片中可以接入多个,并通过CPU进程进行调度。

编码器多路视频流输入、输出的应用

3. 赛灵思实时视频转码架构

如上架构图所示,赛灵思实时视频转码包含两种不同的途径,XMA和OpenCL。按照层次结构,向下划分为HAL硬件抽象层,驱动以及最底层的数据通道和管理通道。

实现编码器编程所需要了解的XMA的相关API

上述XMA相关API事实上是对编码、解码等行为的抽象,因此我们可以看到基本上都是初始化的过程,即发送数据到Lower Edge,再到Video Kernel。

Video Kernel与芯片中相关IP接入时的代码

文末给出的参考链接,github中的代码可以直接运行

如果不需要通过FPGA开发新的功能,只是简单的使用编码器,如图左所示为传统的FFmpeg框架,如图右所示为赛灵思编码器中FFmpeg的调用。

点击【阅读原文】访问购票页面

Xilinx FPGA,“加速”视频质量提升相关推荐

  1. android log 码率,webrtc之Android视频质量提升:保帧率降码率

    前言: 我们的产品是在一款跑着Android系统的特定芯片上使用webrtc开发的一个视频通话业务,当前的情况是在网络正常的情况下帧率也比较低,弱网环境下适应能力较差.基于此,我了解了webrtc A ...

  2. 短视频质量提升(包装)——Ins风格漫画特效短视频特效模板

    Ins风格漫画特效短视频特效模板 这是一个明亮的动态动画Premiere Pro模板,使用丰富多彩的效果组合来揭示和增强您的媒体.包含6个充满乐趣和奇妙的动画设计.你可以用它们来显示你的漫画人物概念, ...

  3. xilinx c语言u16,Xilinx FPGA LVDS应用

    最近项目需要用到差分信号传输,于是看了一下FPGA上差分信号的使用.Xilinx FPGA中,主要通过原语实现差分信号的收发:OBUFDS(差分输出BUF),IBUFDS(差分输入BUF). 注意在分 ...

  4. 基于Xilinx FPGA生态,加速提升视频处理质量

    随着5G开启万物互联的崭新纪元,用户.流量.应用场景不断扩张,视频服务不仅会深入渗透全产业领域,也将为各行各业的产品应用增值赋能.不断提升的存储.传输与计算资源,从分辨率.码率.色彩与传输稳定性上全方 ...

  5. 视频加速方案的最优解 - Xilinx硬件加速技术专场(深圳站)

    从AI到编码.转码,硬件加速方案正在扮演越来越重要的角色.12月13日·深圳 | LiveVideoStack联合赛灵思出品[赛灵思视频加速技术]专题,将展现基于FPGA的硬件加速特性,在视频.图片编 ...

  6. 视频加速方案的最优解 - Xilinx硬件加速技术专场

    从AI到编码.转码,硬件加速方案正在扮演越来越重要的角色.8月23日·北京 | LiveVideoStack联合赛灵思出品[赛灵思视频加速技术]专题,将展现基于FPGA的硬件加速特性,在视频.图片编码 ...

  7. 压缩 质量不变_来了!业内首个HEIF图像高质量压缩FPGA加速方案

    近日,元脑生态伙伴深维科技与浪潮联合发布业内首个基于FPGA的HEIF图像处理加速方案.相比于CPU处理,在保持图像质量不变的情况下,该方案的处理性能提升5倍以上并显著降低计算成本.HEIF是一种新型 ...

  8. 快手团队长文解读:基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用...

    来源:机器之心 本文约6000字,建议阅读10分钟 本文介绍了基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用. 典型的实时流式自动语音识别业务如语音搜索.语音输入等和用户操作相关,直接影 ...

  9. AI周报丨快手团队长文解读:基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用

    AI周报 - 热门论文 - 题目:On Training Implicit Models 本文主要研究无限层隐式模型的训练问题.具体地说,以前的工作采用隐式微分,并为反向传播计算精确的梯度.然而,是否 ...

最新文章

  1. Go 学习笔记(25)— 并发(04)[有缓冲/无缓冲通道、WaitGroup 协程同步、select 多路监听通道、close 关闭通道、channel 传参或作为结构体成员]
  2. 二维数组 类型_Java第六章 | 二维数组的创建及使用、数组排序算法
  3. toj 4601 好老师
  4. MyBatis学习总结(13)——Mybatis查询之resultMap和resultType区别
  5. 重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor
  6. DAY8-Nessus漏洞扫描
  7. 自制AMD CS5536关机代码和嵌入式
  8. 使用自制ADempiere 3.6.0 LTS安装软件进行安装(基于Ubuntu Desktop 12.04 LTS)
  9. VC6编译64位程序
  10. phpstudy安装及简单使用教程
  11. django book学习笔记
  12. 使用max函数计算EXCEL个税公式
  13. 您还差宝贝一张语文教学光盘!教你如何制作ISO文件
  14. Shell脚本——免交互
  15. 微信订阅号要租服务器吗,订阅号怎么向认证号借权-微信订阅号已经认证是否有网页授权功能...
  16. 基于Huffman编码的C语言解压缩文件程序
  17. js实现图片无缝滚动特效
  18. 苹果Swift编程语言入门教程【中文版】
  19. RESTful API 末尾斜杠
  20. 对uni-app框架的认识

热门文章

  1. matplotlib.pyplot---------Python强大的绘图功能软件
  2. 第16章 C预处理器和C库 16.3 在#define中使用参数
  3. 【原】a.class与a .class的区别
  4. window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
  5. 【蒲公英技术征文】如何在 ESP-12F/ESP8266 上实现 webserver
  6. 更新整理本人所有博文中提供的代码与工具(Java,2013.11)
  7. 关注并订阅Autodesk地理信息解决方案相关技术博客赢取Autodesk权威开发专家编写的官方推荐教材!!...
  8. DiskFileUpload类常用方法
  9. 八部委宰割C类电商 消费者必遭殃
  10. CodeForces - 830C Bamboo Partition(数学+推公式)