那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺析英特爾QSV技術在FFmpeg中的具體實現與使用

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

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

1、處理器整體架構

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

1.1 發展

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

1.2 基礎功能模塊

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

1.3 結構演進

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

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

2、軟件策略

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

2.1 Media SDK

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

1)軟件架構

上圖主要介紹的是Media Server Studio Software Stack軟件架構,我們基于此架構實現FFmpeg的加速。

這里需要強調的是:

a)OpenGL (mesa)與linux內核一直是開源的項目,但之前版本的MSS中存在一些私有的內核補丁,并對操作系統的或對Linux的內核版本有特殊要求。

b)HD Graphics Driver for Linux之前是一個閉源的方案,而現在的MSDK 和用戶態驅動(iHD驅動)都已經實現開源。現在我們正在制作一個基于開源版本的Release,未來大家可以通過此開源平臺獲得更好的技術支持。

2)編解碼支持

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

2.2 QSV到FFmpeg的集成思路

FFmpeg集成的思路主要如下:

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

2)VAPPI Plugin:Media對整個英特爾GPU的軟件架構而言,從最底層的linux內核,中間有用戶態驅動,對外的統一的接口就是VAAPI。Media SDK的硬件加速就是基于VAAPI開發,同時增加了很多相關的功能,其代碼更為復雜;而現在增加的VAAPI Plugin則會直接調用LibAV使軟硬件結合更為緊密。

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

1)AVFilter

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

2)AVEncoder

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

3)AVDecoder

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

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

3、對比MSS與FFmpeg+QSV

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

二者的差異有:

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

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

3)在內存管理上,MSS的開發人員必須管理自己的內存;而FFmpeg 提供基本的內存管理單元并實現系統內存的統一調用,集成了硬件級別的內存處理機制。

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

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

可以說FFmpeg有很強大的媒體支持,相對于傳統的MSS在保證性能與質量的前提下為用戶節省很多工作量并顯著提升開發效率。

4、實踐與測試

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

上圖展示的是Skylake對HEVC支持的性能數據,其中的分辨率為1080P,其實HEVC 4K60p也能得到很好的性能。隨著輸出圖像質量的提升,轉碼速度也會相應降低,但在正常使用中我們主要根據需求平衡性能與質量,在較短時間內實現較高質量的轉碼輸出。

如果重點分析圖像質量,在實踐中我們建議使用Medium模式得到相對較優的性能與質量。隨著參數的變化,PSNR與圖像的整體細節會出現較明顯變化。

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 英特爾
    +關注

    關注

    61

    文章

    10009

    瀏覽量

    172344
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4777

    瀏覽量

    129362

原文標題:英特爾QSV技術在FFmpeg中的實現與使用

文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    英特爾與Stellantis Motorsports攜手推進自適應控制技術

    達成合作,雙方將共同推進自適應控制技術在下一代逆變器的應用。 此次合作的核心在于提高賽車競技比賽環境的性能和效率。通過采用英特爾的自適
    的頭像 發表于 01-09 10:29 ?162次閱讀

    英特爾推出全新英特爾銳炫B系列顯卡

    備受玩家青睞的價格提供卓越的性能與價值1,很好地滿足現代游戲需求,并為AI工作負載提供加速。其配備的英特爾Xe矩陣計算引擎(XMX),為新推出的XeSS 2提供強大支持。XeSS 2的三項核心技術協同工作,共同提高性能表現、增強視覺流暢性并加快響應速度。 “ ? 全新
    的頭像 發表于 12-07 10:16 ?926次閱讀
    <b class='flag-5'>英特爾</b>推出全新<b class='flag-5'>英特爾</b>銳炫B系列顯卡

    使用PyTorch英特爾獨立顯卡上訓練模型

    《PyTorch 2.5重磅更新:性能優化+新特性》的一個新特性就是:正式支持英特爾獨立顯卡上訓練模型!
    的頭像 發表于 11-01 14:21 ?783次閱讀
    使用PyTorch<b class='flag-5'>在</b><b class='flag-5'>英特爾</b>獨立顯卡上訓練模型

    英特爾IT的發展現狀和創新動向

    AI大模型的爆發,客觀上給IT的發展帶來了巨大的機會。作為把IT發展上升為戰略高度的英特爾,自然推動IT發展中注入了強勁動力。英特爾IT不僅專注于創新、AI和優化,以及英特爾員工、最
    的頭像 發表于 08-16 15:22 ?647次閱讀

    回溯英特爾跨越半個世紀的發展歷程

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

    英特爾是如何實現玻璃基板的?

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

    英特爾計劃最快2026年量產玻璃基板

    全球半導體封裝技術的演進英特爾近日宣布了一項引人注目的計劃——最快2026年實現玻璃基板
    的頭像 發表于 07-01 10:38 ?647次閱讀

    英特爾OCI芯粒新興AI基礎設施實現光學I/O(輸入/輸出)共封裝

    (IPS)團隊展示了業界領先的、完全集成的OCI(光學計算互連)芯粒,該芯粒與英特爾CPU封裝在一起,運行真實數據。面向數據中心和HPC應用,英特爾打造的OCI芯粒新興AI基礎設施
    的頭像 發表于 06-29 11:47 ?947次閱讀

    英特爾實現光學IO芯粒的完全集成

    (IPS)團隊展示了業界領先的、完全集成的OCI(光學計算互連)芯粒,該芯粒與英特爾CPU封裝在一起,運行真實數據。面向數據中心和HPC應用,英特爾打造的OCI芯粒新興AI基礎設施
    的頭像 發表于 06-28 10:16 ?431次閱讀
    <b class='flag-5'>英特爾</b><b class='flag-5'>實現</b>光學IO芯粒的完全集成

    英特爾攜手日企加碼先進封裝技術

    英特爾公司近日半導體技術領域再有大動作,加碼先進封裝技術,并與14家日本企業達成深度合作。此次合作
    的頭像 發表于 06-11 09:43 ?445次閱讀

    英特爾CEO:AI時代英特爾動力不減

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

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

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

    英特爾1nm投產時間曝光!領先于臺積電

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

    英特爾首推面向AI時代的系統級代工

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

    英特爾首推面向AI時代的系統級代工—英特爾代工

    英特爾首推面向AI時代的系統級代工——英特爾代工(Intel Foundry),技術、韌性和可持續性方面均處于領先地位。
    的頭像 發表于 02-25 10:38 ?618次閱讀
    <b class='flag-5'>英特爾</b>首推面向AI時代的系統級代工—<b class='flag-5'>英特爾</b>代工
    百家乐官网游戏机技| 百家乐官网分享| 利都百家乐官网国际娱乐场开户注册| 百家乐新送彩金| 真人百家乐官网轮盘| 百家乐庄闲必胜规| 百家乐官网中庄闲比例| 必博备用网站| 百家乐的玩法技巧和规则| 宝龙百家乐官网的玩法技巧和规则| 优博国际| 大发888下载亚洲城| 百家乐平投注法| 百家乐官网分| 通河县| 大发888真人娱乐场网址官网| 百家乐视频游戏帐号| 专业的百家乐官网玩家| 利来国际开户| 大发888 加速器| 威尼斯人娱乐网注册| 买百家乐程序| 苹果百家乐官网的玩法技巧和规则| 立博网站| 大发888网页在线游戏| 巴宝莉百家乐的玩法技巧和规则 | 湘阴县| 微信百家乐群规则大全| 玩百家乐官网都是什么人| 肥乡县| 三易博娱乐| 德州扑克论坛| 百家乐可以算牌么| 反赌百家乐官网的玩法技巧和规则| 百家乐官网太阳城| 百家乐官网大转轮| 沙龙百家乐官网娱乐场| 线上百家乐官网信誉| 在线百家乐官网博彩网| 千亿娱百家乐的玩法技巧和规则| 八卦图24山代表的|