编码解码转码一把罩的嵌入式硬件方案 智能应用 影音
TERADYNE
ST Microsite

编码解码转码一把罩的嵌入式硬件方案

  • DIGITIMES企划

超微半导体(AMD)嵌入式解决方案事业部游戏主机部门资深经理Kevin Tanguay
超微半导体(AMD)嵌入式解决方案事业部游戏主机部门资深经理Kevin Tanguay

在当今处理器从双核心、四核心,甚至八核心的硬件架构设计,再加上越来越注重视觉运算(Visual Computing)的软件设计当下,如何透过SDK(软件开发工具)将程序优化,使资源有限的嵌入式平台能够发挥出硬件应有的效能实力,是系统与软件设计师们共同重视的课题。AMD所提出的嵌入式平台解决方案中,提供各种视讯格式的硬件编码/?解码?转码等功能,可减少处理器资源耗用、降低系统负荷,让视讯播放品质与流畅度更臻完美。

视讯处理负载高 硬件支持最牢靠

随着当今社群分享、视讯通话、线上操控的应用越来越多、且越来越普及,电脑在多媒体(影片、照片、音乐等)的处理上越来越吃重。以“Hardware Encoding? Decoding? Transcoding? We’ve got you covered!”为演讲主题,超微半导体(AMD)嵌入式解决方案事业部游戏主机部门资深经理Kevin Tanguay,介绍AMD最近推出的Media SDK (多媒体软件开发套件)功能、系统架构与程序设计范例。「AMD的Media SDK,足以让当今嵌入式系统在相同功耗下,透过SDK的优化发挥自家处理器的优势,并让电脑发挥更好的效能表现。」

当今的电脑使用环境,不仅得注重使用者界面的亲和力,提供特效以提升视听感官等享受,对软件设计者而言,透过异质运算(Heterogeneous computing)将各种不同功能的处理器、绘图核心、解码IC等元件的硬件加速特性全面启动并相互协同合作,已成为当今软件开发的主流趋势。不过在强调多工应用的电脑系统之下,要如何设计出让系统的负载平衡化的平行运算程序,己成为程序设计师头疼且相当严苛的挑战。

Kevin Tanguay指出:「Windows操作系统内建的多媒体驱动╱播放程序,在视讯处理上偏重使用处理器运算,无法善用AMD APU/SOC处理器内的每一个硬件加速元件。 AMD所提供的Media SDK,可以补足这部份的性能空隙,提升视讯处理效率,同时改善画质;让程序开发者在AMD系统平台下,处理各式多媒体运算工作时,能够在跨平台的电脑系统上达到负载均衡化,让系统运行更顺畅,进以提升消费者体验。」

Media SDK架构全都包 让视讯处理一把罩

Media SDK可以使用在视讯会议、无线显示、线上桌面、视讯编辑、转码或播放等应用软件上。其工作流程,就是在电脑上安装Media SDK套件(包含标头、函式库、工具、范例、文件等软件元件),然后程序设计师以C/C++/C#、Java Script、OpenCL等语言撰写的原始码,透过组译后建立一个应用程序。应用程序执行后,透过Media SDK的API (程序呼叫界面),执行Media Runtime (媒体执行函式) 等视讯编/解码等视讯处理需求,然后便呼叫MM Driver (多媒体驱动程序),再透过APU/GPU内建的x86指令集、VCE (视讯压缩引擎)、UVD(泛用视讯解码器)、CU(运算单元)等处理器内部的硬件加速器。

以视讯编辑应用为例,压缩的视讯串流,经由「解码」(由微软操作系统负责)、变成Raw Frame,然后经由「视讯处理」(由AMD硬件负责)、然后经由「第三软件商过滤器」(ISV Filters)、最后再「编码」(由AMD硬件负责) 成压缩后的串流,写回硬盘。这其中的过程便是AMD处理器重要之处。

Media Foundation元件 扩充视讯处理更方便

微软在Windows Vista以后版本,已汰换掉传统DirectShow多媒体应用程序界面,全面以Media Foundation (简称MF) 作为统一的多媒体影音解决方案。而在AMD已在MF元件中,加入了VCE做视讯压缩处理、UVD做为视讯解压、而GPU Compute Shader则用来处理繁重的视讯处理工作。

Kevin Tanguay列举微软和AMD MF元件,在各种视讯解压缩 (如MPEG4、MPEG2、WMV9/VC-1、H.264 AVC、MJPEG、H.264 AVC/SVC等格式) 的做法:微软大多透过处理器处理视讯压缩与解压,然此时处理器负载中己无法再处理其他事情;而AMD则以UVD/VCE来加速处理,或透过MF协助处理,尽量减少处理器占用率,电脑即使在做繁重的视讯处理工作时,也能如同在执行背景应用程序般的保持顺畅运作。

在视讯品质部份,AMD提供视讯品质的MFT (Media Foundation Transforms)的功能,能够让视讯稳定(Video Stabilization),提供将SD、DVD影片内容实时按比例转换、升级至HD等级;此外还有去区块化(De-blocking)、动态对比(Dynamic Contrast)、方向性去交错化(Directional De-interlacing)、边缘强化(Edge Enhancement)等等。

在Windows 8的视讯相关API中,AMD的UVD和VCE都已经内建,让系统负荷取得平衡。因此开发者能够在程序设计中,加入视讯处理的MFT,以启用AMD硬件视讯处理机制。

VCE硬件视讯压缩引擎 加速视讯处理样样行

AMD的VCE也提供了所谓的DEM(显示压缩模式),非常适用于Wi-Fi无线影音传输显示等需要低延迟的应用。函式库提供了C++的API,让DEM模式下也能开启硬件VCE压缩。

VCE的核心功能包含多路 (Multi-stream) 硬件H.264编码器,提供有效率的实时压缩,在品质部份,提供4:2:0色度抽样视讯(Color sampling video)、可调视讯压缩品质。在交错特色和使用案例方面,可提供游戏串流、云端游戏、视讯会议&转码等的最佳化,同时其DEM模式也可支持低延迟的无线显示。

Kevin Tanguay进一步说明 VCE的工作流程。AMD VCE在处理目前未压缩的YUV420图片/影格数据时,会在参考前后的影格之后,进入VCE里面的内部预测和动态预测等机制,接着经由Forward Transform向前参考的正转换线路 (例如FDCT;Fast Discrete Cosine Transform),再来量化处理 (Quantization) 之后,进入Entropy Encode处理,即可将H.264压缩串流输出。提供固定串流的H.264压缩 (i420) 以及低延迟的位元率控制,以利于网络串流的传输、显示。

多种示范程序 与 流畅播放技术

Media SDK有针对各种使用案例的范例程序,包括视讯编辑、会议、转码、播放、线上桌面、无线显示。并提供以程序为主的优化,例如内部程序、OpenCL和C++ AMP ( Accelerated Massive Parallelism) 等元件、还有绘图核心的缓冲区共享、DirectX to OpenCL interop 等等。此外,更针对Windows的桌面模式和Metro程序开发。

在Fluid Motion Video部份,透过AMD专有的Frame Rate转换技术,能够在进行24fps转换成60fps的视讯播放时,降低画面换格时的接续不顺,并提供更流畅、更平顺的播放画面。Kevin Tanguay举例说明,一般的24fps转60fps的视讯转换时,原先是1-2-3的播放顺序,转换成1-1-1-2-2-3的播放顺序,亦即前三张的画格其实都是复制第一张的内容,这种作法在播放时会有Video Judder的状况。而AMD的Fluid Motion Video则是参考第一张和第二张中间的变化,安插新的变动画格,因此产生出1-1a-1b-2-2a-3的播放结果,让视讯在任何Frame Rate下都能够平顺、不损画质地播放。

嵌入式处理器也内建 两大系统平台同时展现

在系统支持度部份,AMD可支持Windows和Linux两大操作系统平台。硬件的UVD、搭配自家 Catalyst软件驱动程序(Linux版计划中),再加上API (如Windows的DXVA、OpenCL,或Linux的XvBA、VDPAU/OpenMax),组成完整的AMD硬件视讯压缩层,供软件开发者使用。

至于支持硬件压缩与解压的AMD嵌入式处理器部份,Embedded Radeon E4690、E6460、E6760、R系列APU及G系列的SOC单芯片,皆个别有不同程度支持UVD (解压),如UVD 2、3支持MPEG 1/2/VC1/H.264/MVC/MPEG4 part 2等格式;UVD 4则多支持WMV9;R系列APU及G系列的SOC,则支持了VCE(压缩),前者支持h.264的Main Profile和Constrained Baseline Profile、I/P frames,后者再多增加支持I/P/B frames。

Kevin Tanguay最后总结,AMD的处理器硬件加速功能,搭配软件驱动程序与SDK工具,可让程序开发者利用其视讯编码、解码、转码等功能,提升整体系统播放的流畅度与画质。