0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

淺析英特爾QSV技術(shù)在FFmpeg中的具體實(shí)現(xiàn)與使用

LiveVideoStack ? 來源:未知 ? 作者:胡薇 ? 2018-10-04 08:58 ? 次閱讀

本文來自英特爾資深軟件工程師張華在LiveVideoStackCon 2018講師熱身分享,并由LiveVideoStack整理而成。在分享中張華介紹了英特爾GPU硬件架構(gòu),并詳細(xì)解析了英特爾QSV技術(shù)在FFmpeg中的具體實(shí)現(xiàn)與使用。

1、處理器整體架構(gòu)

大家知道,英特爾的圖形處理GPU被稱為“核芯顯卡”,與CPU集成封裝在同一個(gè)芯片上,上圖展示的是芯片的內(nèi)部結(jié)構(gòu)。

1.1 發(fā)展

英特爾從lvy Bridge架構(gòu)開始就嘗試將GPU與CPU集成在中央處理芯片中并逐代發(fā)展到Skylake架構(gòu)。初期的Ivy Bridge架構(gòu)中GPU所占的面積非常小,而到現(xiàn)在的第五代處理器架構(gòu)Skylake已經(jīng)實(shí)現(xiàn)十分成熟的GPU集成技術(shù),GPU在芯片中所占的面積已經(jīng)超過了一半。在未來我們將推出基于PCI-E的獨(dú)立顯卡,為PC帶來更大的圖像性能提升。

1.2 基礎(chǔ)功能模塊

上圖展示的是一款GPU所具備的一些基礎(chǔ)功能模塊。英特爾的核芯顯卡分為普通的Intel HD Graphics與性能強(qiáng)大的Intel Iris (Pro)Graphics,其中硬件結(jié)構(gòu)的變化決定性能的高低。我們知道,GPU中的Slice個(gè)數(shù)越多,處理單元的組織方式越多,性能便越強(qiáng)大。Intel HD Graphics也就是GT2中只有一個(gè)Slice,而對于Iris系列中的GT3則有兩個(gè)Slice;GT3e相對于GT3增加了eDRAM使其具有更快的內(nèi)存訪問速度,而GT4e則增加到三個(gè)Slice。GPU的基礎(chǔ)功能模塊主要由EU以及相關(guān)的Media Processing(MFX)等組成。一個(gè)Slice中有三個(gè)Sub-Slice,Sub-Slice中包含具體的EU和Media Sampler模塊作為最基本的可編程處理單元,GPU相關(guān)的任務(wù)都是在EU上進(jìn)行。而Media Processing中還集成了一個(gè)被稱為MFX的獨(dú)立模塊,主要由Media Format Codec(MFX)與VQE組成。MFX可將一些處理任務(wù)通過Fix Function打包,固定于一個(gè)執(zhí)行單元中進(jìn)行統(tǒng)一的編解碼處理,不調(diào)用EU從而實(shí)現(xiàn)提高EU處理3D圖形等任務(wù)的速度。Video Quality Engine(VQE)提供De-interlace與De-Noise等視頻處理任務(wù),在編解碼中使用EU是為了得到更高的視頻編碼質(zhì)量。

1.3 結(jié)構(gòu)演進(jìn)

上圖展示的是英特爾幾代核芯顯卡產(chǎn)品在結(jié)構(gòu)上的變化。最早的Haswell架構(gòu)也就是v3系列中的EU個(gè)數(shù)相對較少,最多為40個(gè);而到Broadwell架構(gòu)的GT3中集成了2個(gè)Slice,EU個(gè)數(shù)隨之增加到48個(gè),圖像處理性能也隨之增強(qiáng)。從Broadwell架構(gòu)發(fā)展到Skylake架構(gòu),除了EU與Slice格式增加的變化,MFX的組織也有相應(yīng)改進(jìn)。Broadwell架構(gòu)是將MFX集成于一個(gè)Slice中,一個(gè)Slice集成一個(gè)MFX;而到Skylake架構(gòu)之后Slice的個(gè)數(shù)增加了但MFX的個(gè)數(shù)并沒有,此時(shí)的MFC便集成在Slice之外。隨著組織方式的改變,核芯顯卡的功能也隨之改變:Skylake增加了HEVC的Decoder、PAK增加了基于HEVC的處理功能等改進(jìn)為核芯顯卡整體處理性能帶來了顯著提升,第六代以后的核芯顯卡也都主要沿用GT3的架構(gòu)組織。

上文介紹了核芯顯卡硬件上的模塊結(jié)構(gòu),接下來我將具體介紹Quick Sync Video Acceleration。從Driver分發(fā)下來的Command Stream回通過多條路徑在GPU上得到執(zhí)行:如果命令屬于編解碼的Fix Function則會(huì)由MFX執(zhí)行,部分與視頻處理相關(guān)的命令會(huì)由VQE執(zhí)行,其他的命令則會(huì)由EU執(zhí)行。而編碼過程主要分為兩部分:ENC與PAK。ENC主要通過硬件實(shí)現(xiàn)Rate Control、Motion Estimation、Intra Prediction、Mode Decision等功能;PAK進(jìn)行Motion Comp、Intra Prediction、Forward Quant、Pixel Reconstruction、Entropy Coding等功能。在目前的英特爾架構(gòu)中,Media SDK通過API對硬件進(jìn)行統(tǒng)一的調(diào)度與使用,同時(shí)我們提供更底層的接口Flexible Encoder Interface(FEI)以實(shí)現(xiàn)更優(yōu)秀的底層調(diào)度與更好的處理效果。

2、軟件策略

接下來我將介紹英特爾的軟件策略。最底層的FFmpeg可允許開發(fā)者將QSV集成進(jìn)FFmpeg中以便于開發(fā),而Media SDK則主要被用于編解碼處理,F(xiàn)Fmpeg可把整個(gè)多媒體處理有效結(jié)合。如果開發(fā)者認(rèn)為傳統(tǒng)的Media SDK的處理質(zhì)量無法達(dá)到要求或碼率控制不符合某些特定場景,那么可以通過調(diào)用FEI等更底層的接口對控制算法進(jìn)行優(yōu)化;最頂層的OpenCL接口則利用GPU功能實(shí)現(xiàn)邊緣計(jì)算等處理任務(wù),常見的Hybrid編碼方式便使用了OpenCL。除此之外OpenCL也可實(shí)現(xiàn)一些其他的并行處理功能,例如與AI相關(guān)的一些計(jì)算。

2.1 Media SDK

Media SDK分為以下幾個(gè)版本:Community Edition是一個(gè)包含了基本功能的部分免費(fèi)版本,Essential Edition與Professional Edition則是具有更多功能的收費(fèi)版本,可實(shí)現(xiàn)例如hybrid HEVC 編碼,Audio的編解碼、Video Quality Caliper Tool等諸多高級功能和分析工具的集合。

1)軟件架構(gòu)

上圖主要介紹的是Media Server Studio Software Stack軟件架構(gòu),我們基于此架構(gòu)實(shí)現(xiàn)FFmpeg的加速。

這里需要強(qiáng)調(diào)的是:

a)OpenGL (mesa)與linux內(nèi)核一直是開源的項(xiàng)目,但之前版本的MSS中存在一些私有的內(nèi)核補(bǔ)丁,并對操作系統(tǒng)的或?qū)inux的內(nèi)核版本有特殊要求。

b)HD Graphics Driver for Linux之前是一個(gè)閉源的方案,而現(xiàn)在的MSDK 和用戶態(tài)驅(qū)動(dòng)(iHD驅(qū)動(dòng))都已經(jīng)實(shí)現(xiàn)開源?,F(xiàn)在我們正在制作一個(gè)基于開源版本的Release,未來大家可以通過此開源平臺獲得更好的技術(shù)支持。

2)編解碼支持

關(guān)于編解碼支持,其中我想強(qiáng)調(diào)的是HEVC 8 bit 與10 bit的編解碼。在Gen 9也就是Skylake上并不支持硬件級別的HEVC 10 bit解碼,面對這種情況我們可以通過混合模式實(shí)現(xiàn)對HEVC 10 bit的編解碼功能。最新E3v6(Kabylake)雖然只有較低性能的GPU配置,但可以支持HEVC 10 bit解碼,HEVC 10 bit編碼功能則會(huì)在以后發(fā)布的芯片中提供。

2.2 QSV到FFmpeg的集成思路

FFmpeg集成的思路主要如下:

1)FFmpeg QSV Plugins:將SDK作為FFmpeg的一部分進(jìn)行封裝,其中包括Decoder、Encoder與VPP Filter處理。

2)VAPPI Plugin:Media對整個(gè)英特爾GPU的軟件架構(gòu)而言,從最底層的linux內(nèi)核,中間有用戶態(tài)驅(qū)動(dòng),對外的統(tǒng)一的接口就是VAAPI。Media SDK的硬件加速就是基于VAAPI開發(fā),同時(shí)增加了很多相關(guān)的功能,其代碼更為復(fù)雜;而現(xiàn)在增加的VAAPI Plugin則會(huì)直接調(diào)用LibAV使軟硬件結(jié)合更為緊密。

接下來我將介紹如何將SDK集成到FFmpeg中,一共分為AVDecoder、AVEncoder、AVFilter三個(gè)部分。

1)AVFilter

AVFilter主要是利用硬件的GPU實(shí)現(xiàn)Video Processor功能,其中包括vpp_qsv、overlay_qsv、hwupload_qsv,其中我們重點(diǎn)開發(fā)了overlay_qsv,vpp_qsv與hwupload_qsv。 如果在一個(gè)視頻處理的pipeline中有多個(gè)VPP的實(shí)例運(yùn)行,會(huì)對性能造成很大的影響。我們的方案是實(shí)現(xiàn)一個(gè)大的VPP Filter中集成所有功能并通過設(shè)置參數(shù)實(shí)現(xiàn)調(diào)用,避免了多個(gè)VPP的實(shí)例存在。但是為什么將vpp_qsv與overlay_qsv分開?這是因?yàn)闊o法在一個(gè)VPP實(shí)例中同時(shí)完成compositor和一些視頻處理功能(像de-interlace等)。英特爾核芯顯卡內(nèi)顯存中的存儲格式為NV12, 和非硬件加速的模塊聯(lián)合工作時(shí),需要對Frame Buffer進(jìn)行從系統(tǒng)內(nèi)存到顯卡顯存的復(fù)制過程,hwupload_qsv提供了在系統(tǒng)內(nèi)存和顯卡內(nèi)存之間進(jìn)行快速幀轉(zhuǎn)換的功能。

2)AVEncoder

AVEncoder目前支持H264、HEVC、MPEG-2等解碼的硬件加速。

3)AVDecoder

AVDecoder目前支持H264、HEVC、MPEG-2等協(xié)議的硬件加速。

最理想的方案是在整條視頻處理的Pipeline中都使用顯卡內(nèi)存從而不存在內(nèi)存之間的幀拷貝,從而達(dá)到最快的處理速度,但在實(shí)際應(yīng)用中我們很多時(shí)候是做不到這一點(diǎn)。將MSDK集成進(jìn)FFmpeg中時(shí)需要解決內(nèi)存轉(zhuǎn)換的問題,例如VPP Filter不支持一些功能或原始碼流并不在Decoder支持的列表中。上圖中粉色與綠色的轉(zhuǎn)換表示的就是數(shù)據(jù)從顯存到系統(tǒng)內(nèi)存再到顯存之間的轉(zhuǎn)換。我們在實(shí)踐中經(jīng)常會(huì)遇到處理性能的急劇變化,可能的原因就是一些非硬件處理的模塊和硬件加速的模塊存在與同一個(gè)pipeline中,從而對整體性能造成影響。這是因?yàn)檫M(jìn)行了額外的內(nèi)存拷貝過程,一旦優(yōu)化不足則會(huì)極大影響性能。具體進(jìn)行內(nèi)存分配時(shí)我們使用了hwcontext,這是FFmpeg在3.0之后增加的一個(gè)功能。我們基于FFmpeg中hwcontext的機(jī)制實(shí)現(xiàn)了hwcontext_qsv,從而對硬件的初始化與內(nèi)存分配進(jìn)行很好的管理。

3、對比MSS與FFmpeg+QSV

下面我將分享MSS與FFmpeg+QSV的異同。二者支持相同的編解碼器與視頻處理。

二者的差異有:

1)MSS 僅提供了一套庫和工具,用戶必須基于 MSS進(jìn)行二次開發(fā);而FFmpeg 是一個(gè)流行的多媒體開放框架, QSV的GPU加速只是其中的一部分。

2)MSS的庫中提供 了VPP 接口,用戶要實(shí)現(xiàn)某些功能必須進(jìn)行二次開發(fā)。而目前,FFmpeg+QSV已存在2個(gè)開發(fā)好的Filter,并且在Filter中集成了MSS 支持的所有功能,并提供更加簡單的選項(xiàng)進(jìn)行配置,這些功能對用戶而言都是方便使用的。

3)在內(nèi)存管理上,MSS的開發(fā)人員必須管理自己的內(nèi)存;而FFmpeg 提供基本的內(nèi)存管理單元并實(shí)現(xiàn)系統(tǒng)內(nèi)存的統(tǒng)一調(diào)用,集成了硬件級別的內(nèi)存處理機(jī)制。

4) FFmpeg 提供了一定的容錯(cuò)機(jī)制與 a/v 同步機(jī)制;FFmpeg+QSV 模塊充分利用這些機(jī)制來提高兼容性,像使用ffmpeg的parse工具進(jìn)行視頻流預(yù)處理。

5)處理流程上,MSS的用戶在使用MSS模塊之前必須自己開發(fā)Mux/Demux或其他必要的模塊;而FFmpeg+QSV 由于是基于 MSS 實(shí)現(xiàn)并添加了特殊的邏輯, 每個(gè)模塊都可與 FFmpeg 的其他模塊一起工作。

可以說FFmpeg有很強(qiáng)大的媒體支持,相對于傳統(tǒng)的MSS在保證性能與質(zhì)量的前提下為用戶節(jié)省很多工作量并顯著提升開發(fā)效率。

4、實(shí)踐與測試

上圖展示的是我們在Skylake也就是Gen 9上測試硬件轉(zhuǎn)碼能力的結(jié)果。GT2、GT31、GT41三個(gè)型號性能遞增;TU1、TU2、TU4、TU7表示編解碼性能與圖像質(zhì)量的均衡程度,其中TU7表示最快的處理速度和較差的圖像質(zhì)量,TU1表示基于大量計(jì)算得到的較高圖像質(zhì)量。

上圖展示的是Skylake對HEVC支持的性能數(shù)據(jù),其中的分辨率為1080P,其實(shí)HEVC 4K60p也能得到很好的性能。隨著輸出圖像質(zhì)量的提升,轉(zhuǎn)碼速度也會(huì)相應(yīng)降低,但在正常使用中我們主要根據(jù)需求平衡性能與質(zhì)量,在較短時(shí)間內(nèi)實(shí)現(xiàn)較高質(zhì)量的轉(zhuǎn)碼輸出。

如果重點(diǎn)分析圖像質(zhì)量,在實(shí)踐中我們建議使用Medium模式得到相對較優(yōu)的性能與質(zhì)量。隨著參數(shù)的變化,PSNR與圖像的整體細(xì)節(jié)會(huì)出現(xiàn)較明顯變化。

Source Code主要有以下兩種途徑:可以從FFmpeg上直接clone,也可以訪問Intel的Github獲得相應(yīng)源代碼。Intel的github上的分支中的FFmpeg qsv模塊是經(jīng)過Intel的測試,相對而言問題更少運(yùn)行更加穩(wěn)定,大家也可以在Intel的Github上提出相關(guān)問題,我們會(huì)對部分問題進(jìn)行解答。

上圖展示的是實(shí)踐中可能需要的一些使用命令參考,其中我想強(qiáng)調(diào)的是Overlay Filter,在這里我們支持多種模式,包括插入臺標(biāo)的、電視墻等,也可在視頻會(huì)議等場景中實(shí)現(xiàn)人工指定確定畫面中每一個(gè)圖片的位置等效果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 英特爾
    +關(guān)注

    關(guān)注

    60

    文章

    9749

    瀏覽量

    170652
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    27

    文章

    4591

    瀏覽量

    128144

原文標(biāo)題:英特爾QSV技術(shù)在FFmpeg中的實(shí)現(xiàn)與使用

文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    回溯英特爾跨越半個(gè)世紀(jì)的發(fā)展歷程

    我們以英特爾三位風(fēng)云人物的三句名言為線索,回溯英特爾跨越半個(gè)世紀(jì)的發(fā)展歷程,如何利用芯片技術(shù)的力量,影響信息時(shí)代,開啟未來之門。
    的頭像 發(fā)表于 08-16 14:58 ?359次閱讀

    英特爾是如何實(shí)現(xiàn)玻璃基板的?

    今年9月,英特爾宣布率先推出用于下一代先進(jìn)封裝的玻璃基板,并計(jì)劃在未來幾年內(nèi)向市場提供完整的解決方案,從而使單個(gè)封裝內(nèi)的晶體管數(shù)量不斷增加,繼續(xù)推動(dòng)摩爾定律,滿足以數(shù)據(jù)為中心的應(yīng)用的算力需求
    的頭像 發(fā)表于 07-22 16:37 ?213次閱讀

    英特爾計(jì)劃最快2026年量產(chǎn)玻璃基板

    全球半導(dǎo)體封裝技術(shù)的演進(jìn),英特爾近日宣布了一項(xiàng)引人注目的計(jì)劃——最快2026年實(shí)現(xiàn)玻璃基板
    的頭像 發(fā)表于 07-01 10:38 ?457次閱讀

    英特爾OCI芯粒新興AI基礎(chǔ)設(shè)施實(shí)現(xiàn)光學(xué)I/O(輸入/輸出)共封裝

    (IPS)團(tuán)隊(duì)展示了業(yè)界領(lǐng)先的、完全集成的OCI(光學(xué)計(jì)算互連)芯粒,該芯粒與英特爾CPU封裝在一起,運(yùn)行真實(shí)數(shù)據(jù)。面向數(shù)據(jù)中心和HPC應(yīng)用,英特爾打造的OCI芯粒新興AI基礎(chǔ)設(shè)施
    的頭像 發(fā)表于 06-29 11:47 ?641次閱讀

    英特爾攜手日企加碼先進(jìn)封裝技術(shù)

    英特爾公司近日半導(dǎo)體技術(shù)領(lǐng)域再有大動(dòng)作,加碼先進(jìn)封裝技術(shù),并與14家日本企業(yè)達(dá)成深度合作。此次合作,
    的頭像 發(fā)表于 06-11 09:43 ?312次閱讀

    英特爾CEO:AI時(shí)代英特爾動(dòng)力不減

    英特爾CEO帕特·基辛格堅(jiān)信,AI技術(shù)的飛速發(fā)展之下,英特爾的處理器仍能保持其核心地位。基辛格公開表示,摩爾定律仍然有效,而英特爾
    的頭像 發(fā)表于 06-06 10:04 ?298次閱讀

    英特爾宣布代工虧損70億美元

    英特爾宣布代工虧損70億美元 英特爾提交給SEC(美國證券交易委員會(huì))的文件披露道,英特爾芯片制造業(yè)務(wù)虧損70億美元。 英特爾芯片制造業(yè)務(wù)
    的頭像 發(fā)表于 04-03 17:36 ?1154次閱讀

    英特爾1nm投產(chǎn)時(shí)間曝光!領(lǐng)先于臺積電

    英特爾行業(yè)芯事
    深圳市浮思特科技有限公司
    發(fā)布于 :2024年02月28日 16:28:32

    英特爾首推面向AI時(shí)代的系統(tǒng)級代工

    英特爾宣布全新制程技術(shù)路線圖、客戶及生態(tài)伙伴合作,以實(shí)現(xiàn)2030年成為全球第二大代工廠的目標(biāo)。 新聞亮點(diǎn): ?英特爾首推面向AI時(shí)代的系統(tǒng)級代工——
    的頭像 發(fā)表于 02-26 15:41 ?292次閱讀
    <b class='flag-5'>英特爾</b>首推面向AI時(shí)代的系統(tǒng)級代工

    英特爾首推面向AI時(shí)代的系統(tǒng)級代工—英特爾代工

    英特爾首推面向AI時(shí)代的系統(tǒng)級代工——英特爾代工(Intel Foundry),技術(shù)、韌性和可持續(xù)性方面均處于領(lǐng)先地位。
    的頭像 發(fā)表于 02-25 10:38 ?424次閱讀
    <b class='flag-5'>英特爾</b>首推面向AI時(shí)代的系統(tǒng)級代工—<b class='flag-5'>英特爾</b>代工

    英特爾量產(chǎn)3D Foveros封裝技術(shù)

    英特爾封裝技術(shù)方面取得了重大突破,并已經(jīng)開始大規(guī)模生產(chǎn)基于3D Foveros技術(shù)的產(chǎn)品。這項(xiàng)技術(shù)使得
    的頭像 發(fā)表于 01-26 16:04 ?496次閱讀

    英特爾實(shí)現(xiàn)3D先進(jìn)封裝技術(shù)的大規(guī)模量產(chǎn)

    英特爾宣布已實(shí)現(xiàn)基于業(yè)界領(lǐng)先的半導(dǎo)體封裝解決方案的大規(guī)模生產(chǎn),其中包括英特爾突破性的3D封裝技術(shù)Foveros,該技術(shù)為多種芯片的組合提供了
    的頭像 發(fā)表于 01-25 14:24 ?229次閱讀

    英特爾的2023:以強(qiáng)大執(zhí)行力推進(jìn)產(chǎn)品、技術(shù)創(chuàng)新

    創(chuàng)新,取得了多項(xiàng)突破,并以強(qiáng)大的執(zhí)行力穩(wěn)步按照既定路線圖發(fā)布新產(chǎn)品,支持“芯經(jīng)濟(jì)”的蓬勃發(fā)展。 具體而言,2023年英特爾技術(shù)和產(chǎn)品方面主要取得了以下進(jìn)展: 12月
    的頭像 發(fā)表于 12-29 14:33 ?311次閱讀
    <b class='flag-5'>英特爾</b>的2023:以強(qiáng)大執(zhí)行力推進(jìn)產(chǎn)品、<b class='flag-5'>技術(shù)</b>創(chuàng)新

    #高通 #英特爾 #Elite 高通X Elite芯片或終結(jié)蘋果、英特爾的芯片王朝

    高通英特爾蘋果
    深圳市浮思特科技有限公司
    發(fā)布于 :2023年10月27日 16:46:07

    2023英特爾on技術(shù)創(chuàng)新大會(huì):英特爾研究院展示多項(xiàng)技術(shù)“魔法”

    英國著名科幻小說家阿瑟·克拉克(《2001:太空漫游》)有言:“任何先進(jìn)的技術(shù),初看都與魔法無異?!?b class='flag-5'>在英特爾這家巨大的半導(dǎo)體公司的內(nèi)部,有一批人正在專注于此,即用新穎的方法,廣泛的前
    的頭像 發(fā)表于 09-26 17:25 ?415次閱讀
    2023<b class='flag-5'>英特爾</b>on<b class='flag-5'>技術(shù)</b>創(chuàng)新大會(huì):<b class='flag-5'>英特爾</b>研究院展示多項(xiàng)<b class='flag-5'>技術(shù)</b>“魔法”