適合 Intel® 架構平台的即時端對端 H.265/HEVC 解決方案

適合 Intel® 架構平台的即時端對端 H.265/HEVC 解決方案

目錄

1. 摘要
2. 簡介
  2.1 影片轉碼器及 H.265/HEVC
  2.2 HEVC 效能問題
  2.3 調查現有 H.265/HEVC 解決方案
3. IA 型平台的最佳化即時解決方案
  3.1 以 Intel® Xeon™ 處理器為基礎的即時 HEVC 編碼器解決方案
    3.1.1 Intel SIMD 向量化調整提供 HEVC 編碼功能
    3.1.2 執行緒並行及核心擴充能力調整
    3.1.3 使用 SMT/HT 進一步調整
  3.2 Intel® Core™ 處理器平台的高效能 H.265/HEVC 解碼器
    3.2.1 Strongene HEVC 解碼器的最佳化及效能分析
    3.2.2 比較 Intel SSE 最佳化 Strongene HEVC 解碼器和開放原始碼替代方案,以及未來的最佳化機會
  3.3 最佳化 Intel® Atom™ 處理器平台的 H.265/HEVC 解碼器
    3.3.1 由 YASM 及 Intel® C++ 編譯器進行最佳化
    3.3.2 以 Intel® 串流 SIMD 延伸 (Intel® SSE) 指令進行最佳化
    3.3.3 由 Intel® Threading Building Blocks (Intel® TBB) 工具進行最佳化
    3.3.4 H.265/HEVC 解碼器效能比較
4. 摘要
5. 其他相關文章
參考資料
關於作者

1. 摘要

國際電信聯盟 (ITU) 發佈新的影片轉碼器標準:高效率影片編碼 (HEVC)/H.265,宣稱比現有 H.264/MPEG-4 標準提升約 50% 效率。不過 H.265 的演算法和資料結構複雜度,則是 H.264 的 4 倍。這代表以 H.265 為基礎的轉碼器,需要比前代轉碼器更多的運算資源 / 能力。本文將探討 HEVC 轉碼器特性,並最佳化以 CPU 為基礎的影片轉碼技術,提供最佳的影片品質,以及最具彈性的程式設計模式。我們的端對端解決方案,可實現最出色的 Intel® 架構 (IA) 平台能力,因應 HEVC 轉碼器需求,達到即時效能。

2. 簡介

影片編碼標準主要是透過知名 ITU-T 及 ISO/IEC 標準的發展而演進。ITU-T 製作了 H.261 及 H.263,ISO/IEC 製作了 MPEG-1 及 MPEG-4 Visual,兩者共同製作了 H.262/MPEG-2 影片及 H.264/MPEG-4 進階影片編碼 (AVC) 標準 [1]

H.265/HEVC (高效率影片編碼) 於去年推出,是 ISO/IEC 及 ITU-T 開發的最新影片轉碼器標準,目標是達到最高的壓縮能力,並減少資料遺失。H.265/HEVC 的壓縮比例是 H.264/AVC 標準的兩倍,但仍維持相同的主觀品質。HEVC 技術協助線上影片供應商以更少的頻寬提供高品質影片,可說是下一個影片轉碼器革命。

2.1 影片轉碼器及 H.265/HEVC

HEVC 提出多項新型影片編碼語法架構及演算法,以獲得高效的編碼標準 [1][2]

a) 隨機存取及位元流接合 (Bitstream Splicing) 功能
新型設計支援特殊功能,實現隨機存取和位元流接合。在 H.264/MPEG-4 AVC 之中,位元流一定要以 IDR 存取單位開始,但在 HEVC 可支援隨機存取。

b) 編碼樹單元結構
畫面分割為編碼樹單元 (CTU),每個單元都包含亮度編碼樹區塊 (CTB) 及色度 CTB。L 值可能等於 16、32 或 64,由序列參數集 (SPS) 指定的編碼語法元素決定。CTU 包含四分樹語法,可依據 CTB 涵蓋區域的訊號特性,將編碼區塊 (CB) 分割為選定的適當大小。所有之前的影片編碼標準,僅使用固定陣列大小 16×16 的亮度範例,但 HEVC 支援可變大小 CTB,依據記憶體和運算要求的編碼器需求選擇。

c) 樹狀結構分割為轉換區塊及單元
CB 可遞迴分割為轉換區塊 (TB)。分割是由殘餘四分樹傳送訊號。相較於之前標準,HEVC 設計可讓 TB 橫跨多個預測區塊 (PB) 提供畫面間預測編碼單元 (CU),讓四分樹結構 TB 分割提供最高的編碼效率優點。

d) 畫面內預測
方向預測及 33 種不同的指向方向,針對 4×4 至 32×32 的 (方形) 轉換區塊大小進行定義。可能的預測方向為所有 360 度方向。HEVC 支援 Intra_Angular、Intra_Planar 及 Intra_DC 等畫面內預測編碼方法。

為了因應此項進階編碼標準需求,用戶端裝置及後端轉碼伺服器都需要非常高的處理能力。

2.2 HEVC 效能問題

現有 HEVC 測試模型 (HM) 專案 [6] 僅實作本項標準的主要功能;不過就實際效能而言,離生產及實際部署仍言之尚早。專案的兩項主要缺陷為:

  • 沒有平行計畫
  • 向量化調整不佳


圖 1:HM 專案分析 - 執行緒並行


圖 2:HM 專案分析 - 熱程式碼 (Hot Code)

此項 HEVC 編碼器在伺服器端消耗的 CPU 資源,是 H.264 的 100 倍以上,在用戶端則超過 10 倍。

2.3 調查現有 H.265/HEVC 解決方案

全球許多團體 / 機構都對 H.265/HEVC 轉碼器感到興趣,要最佳化效能並進行實際部署。以下列舉幾項開放原始碼專案:

我們播放 720p 24 FPS 影片,評估 x.265 編碼器在 Intel® Xeon® 處理器平台 (E5-2680 @ 2.70GHz、8*2 實體核心、核心名稱 Sandy Bridge) 的效能。此項轉碼器實作投入許多工作,處理作業及資料平行化原始標準的最佳化,不過,從我們的效能測試看來,此轉碼器在 32 邏輯核心的系統中只使用了 6 個核心 (SMT ON),因此在現有的多核心平台上無法實現最高的運算資源利用率。


圖 3. X.265 專案 CPU 使用情形


圖 4. X.265 專案包含 Intel® SIMD 調整

在 x.265 專案中,Intel® SSE 指令用於進行向量化調整,讓效能加速 70% 以上。進一步最佳化 Intel® C 編譯器編譯之後,我們在 IA 平台提升 2 倍速度1。不過這裡的編碼器效能與即時編碼器部署之間,仍存在相當大的差距,特別是 HD 1080p 影片。

中國有 20 家以上的多媒體 ISV 尋求可用的 HEVC 解決方案及平台,以降低線上影片服務成本並維持高品質。


圖 5:線上影片市場

3. IA 型平台的最佳化即時解決方案

視駿 (Strongene)是一家中國企業,著重於核心影片編碼技術,提供進階 H.265/HEVC 編碼器 / 解碼器轉碼器,獲得迅雷 (Xunlei) 線上影片服務採用。視駿的編碼器 / 解碼器解決方案,已經與開放原始碼 FFMPEG 整合提供 ISV 使用。我們與視駿合作,在配備 Intel® Xeon® 處理器、Intel® Core™ 處理器及 Intel® Atom™ 處理器的平台上,使用全新的 IA 平台技術,最佳化 H.265/HEVC 編碼器及解碼器,實現即時端對端的 HEVC 轉碼器解決方案。

3.1 以 Intel® Xeon™ 處理器為基礎的即時 HEVC 編碼器解決方案

我們的影片編碼應用,是標準使用大量 CPU 及記憶體的工作負載,需要具備強大功能的伺服器平台,例如核心運算效率、可靠性及穩定性。H.265/HEVC 轉碼器運算的複雜度,是之前 H.264/MPEG 的 4 倍,將後端伺服器平台的處理需求,提升到前所未有的境界。本節將介紹以 IA 為基礎的主要技術,協助視駿 HEVC 轉碼器達到 1080p 即時編碼標準。

3.1.1 Intel SIMD 向量化調整提供 HEVC 編碼功能

需要長時間作業的影片及影像處理函式,大多為具有大量區塊型資料的運算,可利用 Intel® SIMD (Single Instruction Multi Data) 向量化指令進行最佳化。Intel SIMD 指令可在單一 CPU 週期之中處理多組資料,大幅提升資料傳輸率及執行效率。Intel SIMD 已獲得廣泛支援,由 MMX、Intel® SSE、Intel® 先進向量擴充指令集 (Intel® AVX) 演進為 Intel® 先進向量擴充指令集 2 (Intel® AVX2),因應不同世代的 x86 平台。

在視駿編碼轉碼器的分析資料中,可發現所有主要熱函式均可利用 Intel SSE 指令向量化,例如複雜度低的動作補償幀插補、無需轉置的整數轉換、蝴蝶效應哈達瑪 (Hadamard) 轉換,以及最低記憶體備援 SAD/SSD 計算。我們在 Intel Xeon 平台啟用 Intel SSE 指令,如圖 6 所示。


圖 6:在視駿轉碼器啟用 Intel® SIMD/SSE 指令範例

視駿利用前述 Intel SIMD 程式設計模式及範例,重新編寫編碼轉碼器的所有熱函式,盡可能提升效能。圖 7 是我們在標準 1080p HEVC 編碼情境的分析資料,其中顯示 60% 的熱函式在 Intel SIMD 指令執行。


圖 7:視駿編碼功能分析結果

Intel AVX2 指令搭配 256b int 運算,可讓之前的 128b Intel SSE 程式碼效能加倍。Intel Xeon 處理器平台 (核心名稱 Haswell) 預計於 2014 年推出,將支援 Intel AVX2。我們以常見的 64*64 區塊 SAD 運算作為範例,測試 Intel AVX2 的內在效能:

表 1:Intel® SSE 及 Intel® AVX2 實作結果

CPU Cycle original Intel® SSE Intel® AVX2
run 1 98877 977 679
run 2 98463 1092 690
run 3 98152 978 679
run 4 98003 943 679
run 5 98118 954 678
avg. 98322.6 988.8 681
speedup 1.00 99.44 144.38

如表 1 所示,Intel SSE 及 Intel AVX2 指令在此函式可提升 100 倍的效能,而 Intel AVX2 程式碼則進一步提升 40% 的效能,超越 Intel SSE2。若在即將推出的 Haswell 平台,將 Intel SSE 程式碼升級為 Intel AVX2,可預期進一步提升效能。

3.1.2 執行緒並行及核心擴充能力調整

如 2.3 節所述,目前實作大多並未利用多核心平台的所有核心。視駿以最新的 Intel Xeon 多核心架構為基礎,釐清 HEVC 及 CTB 型演算法之間的平行相依性,提議取代原始的 OWF (重疊波前,Overlapped Wave-Front) 及 WPP (波前平行處理,Wave-front Parallel Processing) 方法,改用幀間波前 (Inter-Frame Wave-front,IFW) 平行架構,然後開發三層級的執行緒管理配置,保證 IFW 可完全利用所有 CPU 核心,加速 HEVC 的編碼程序。視駿轉碼器使用這項新型的平行化架構,就可在 Ivy Bridge 平台 (Intel Xeon 處理器 E5-2697 @2.70GHz、12*2 實體核心、SMT OFF) 利用 18-24 個實體核心的運算資源,達成相當出色的執行緒並行。


圖 8:視駿編碼轉碼器的執行緒並行及 CPU 使用率

視駿編碼轉碼器利用新型的 WHP 平行化架構,分別在作業及資料層級充分實作 Intel SIMD 指令,大幅加速 x86 處理器處理 1080p 影片序列的效能,成功利用所有核心的運算功能 (如圖 8 所示)。

3.1.3 使用 SMT/HT 進一步調整

同步多執行緒 (SMT) 也稱為超執行緒 (HT) 技術,在所有 IA 平台獲得廣泛支援。這項技術可讓作業系統針對每個實體核心提供兩個虛擬或邏輯核心,並於可能情況下在核心之間共用資源。超執行緒的主要功能,是減少管線之中的相依指令數量,可於 CPU 核心完全高度運作時提供效能優點,但並非所有應用程式都能從中獲益,例如並未利用所有核心的應用程式。在這類情況下,SMT 技術將產生作業 / 執行緒切換負荷。因此我們在視駿編碼轉碼器平台關閉 SMT,並於 Ivy Bridge 平台 (Intel Xeon 處理器 E5-2697 v2) 取得 HEVC 1080p 影片即時編碼標準,如下表黃色反白部分。

表 2:在 Intel® Xeon® 處理器平台的視駿 HEVC 編碼效能3

Platform Resolution Bitrate (kbps) FPS CPU Usage Encoding- mode SMT
WSM E7-8837
@2.67GHz
(8*8c)
720p 800 8.2 15c ultrafast OFF
1600 2.6 18c ultraslow OFF
1080p 1500 3.6 27c ultrafast OFF
3000 1.4 23c ultraslow OFF
4k 5000 1.2 19c ultrafast OFF
10000 0.5 21c ultraslow OFF
IVY E5-2697 v2
@2.70GHz
(2*12c)
720p 1000 11 40% 14c ultraslow ON
720p 1000 46 60% 16c ultrafast ON
1080p 1500 21 70% 16c ultrafast ON
1080p 1500 25 80% 18c ultrafast OFF
IVB E7-4890
@2.80GHz
(4*15c)
1080p 2000 22 19c ultrafast ON
1080p 8000 6.11 15c ultraslow ON
4k 8000 7.02 29c ultrafast ON
4k 8000 3.28 23c ultraslow ON

我們大幅強化效能後,進一步評估視駿 HEVC 編碼轉碼器在 Ivy Bridge 平台的功能,以頻寬及品質問題為主要焦點。

表 3. H.264 及 H.265 轉碼器效能比較

File: BQTerrance_1920x1080_60.yuv
Resolution: 1920x1080 Size: 1869Mbyte, 622080 kbps
Platform: E5-2697 v2 @2.70GHz, RAM 64GB DDR3-1867, QPI 8.0 GT /s OS/SW: Red Hat 6.4, kernel 2.6.32, gcc v4.4.7, ffmpeg v2.0.1, Lentoid HEVC Encoder r2096 linux
Codec Size (byte) Bitrate (kbps) PSNR_Y/U/V (db)
H.264 12254696 4078.1 32.311/39.369/42.043
H.265 6215615 2064.28 34.016/39.822/42.141

表 3 顯示 H.265/HEVC 轉碼器可節省 50% 的頻寬4,同時仍維持相同的影片品質。

3.2 Intel® Core™ 處理器平台的高效能 H.265/HEVC 解碼器

視駿 HEVC/H.265 解碼器為最佳化的 H.265 解碼器,提供優異效能及相當低的運算需求。視駿 HEVC 解碼器採用完全平行化的架構設計,以及波前平行處理 (Wavefront Parallel Processing, WPP) 實作,因此效率優異。此外,Intel Core 處理器平台的 Intel SSE2、Intel SSSE3 及 Intel SSE4 等 Intel SIMD 指令,也用於加速各種解碼區塊,釋放基礎 Intel 架構的能力。視駿 HEVC 解碼器利用以上各項功能的優點,以主流 CPU 實現即時 4K 解碼,以及 1080p 影片流最高 200 FPS 解碼率的目標。

3.2.1 Strongene HEVC 解碼器的最佳化及效能分析

視駿 HEVC 解碼器的多執行緒最佳化,是透過 WPP 及幀層平行化所達成。WPP 是 HEVC 其中的一項功能,可進行平行處理,將片段分割為多列的編碼樹單元 (CTU),然後將每列分配給執行緒 (每列在前一列作為參照的 CTU 解碼後就可進行處理)。視駿 HEVC 解碼器實作的幀層平行化,利用 HEVC 標準採用的階層結構,其中 B 幀可由其他 B 幀參照,建構階層參照架構。例如若畫面群組 (GOP) 等於 8,則序列就可編碼如下:


圖 9:在 GOP = 8 情況下,利用幀層平行化的編碼幀架構 (顯示順序) 的一種方法

在此狀況下,B1 在第一階段使用 2 個 P 幀作為參照。在第二階段中,兩個 B2 幀使用 P 幀及 B1 幀作為參照,因此這兩個 B2 幀可平行處理。在第三階段,四個 B3 幀使用 P 幀及 B2 幀,或是 B1 幀及 B2 幀作為參照,這樣四個 B3 幀也可以平行處理。若使用較大的 GOP,假設 HEVC 解碼器的執行緒數量,足以支援 B 幀並行解碼,就可進一步強化幀層平行化。視駿 HEVC 解碼器組織良好,可透過多執行緒解碼及 WPP 實現最高層級的平行化,大幅提升解碼速度。

以下是視駿 HEVC 解碼器在 Sandy Bridge 平台5 進行 Intel SSE 最佳化之前 (表 4) 及之後 (表 5),以不同數量執行緒執行 1080p 及 4K 序列時的最高解碼幀率。

表 4:視駿 HEVC 解碼器在 Intel SSE 最佳化 (Lentoid C) 之前,以不同數量執行緒進行 1080p 及 4K 影片流的解碼率

  1080p 1.2Mbps 4K 5.6Mbps
Decoding Rate w/o
Rendering (FPS)
Average CPU
Utilization
Decoding Rate w/o
Rendering (FPS)
Average CPU
Utilization
1 thread 25.33 25% 6.85 25%
2 thread 43.03 49% 11.8 47%
4 thread 51.79 93% 14.13 86%
8 thread 53.1 98% 15.03 99%

表 5:視駿 HEVC 解碼器在 Intel SSE 最佳化 (v2.0.1.14) 之後,以不同數量執行緒進行 1080p 及 4K 影片流的解碼率

  1080p 1.2Mbps 4K 5.6Mbps
Decoding Rate w/o
Rendering (FPS)
Average CPU
Utilization
Decoding Rate w/o
Rendering (FPS)
Average CPU
Utilization
1 thread 75 25% 21 25%
2 thread 120 45% 33 40%
4 thread 140 70% 36 63%
8 thread 154 98% 40 96%

我們可以從上述資料發現,Intel SSE 於 Sandy Bridge 平台最佳化5 之後,1080p 串流效能最高可提升 3 倍,4K 串流效能最高可提升 2.6 倍。此外,視駿 HEVC 解碼器的多執行緒設計,也協助大幅提升效能,超越單執行緒模式:若同步解碼執行緒數量由 1 增為 8,就可達到最高 2 倍的解碼幀率。至於在整體效能方面,結果顯示即使在雙核心的 Sandy Bridge 行動平台,視駿 HEVC 解碼器搭配 Intel SSE 最佳化能夠降低 40% 的 CPU 使用率進行 4K 串流即時解碼,這絕對是業界最出色的 HEVC 軟體解碼器之一。至於位元率介於 1Mbps 至 3Mbps 的 1080p 串流 (網際網路 1080p 影片串流的一般位元率設定),則能以降低 20% CPU 使用率的情況進行即時解碼。

3.2.2 比較 Intel SSE 最佳化 Strongene HEVC 解碼器和開放原始碼替代方案,以及未來的最佳化機會

如欲進一步檢驗視駿 HEVC 解碼器效能,可比較部分知名的開放原始碼實作,例如 HM 及 FFMPEG。以下圖表使用不同解析度、幀及位元率的影片串流,比較不同 HEVC 解碼器的解碼率。

 HM10.0:HEVC 參照解碼器 HM10.0
 FFMPEG:FFMPEG 2.1 HEVC 解碼器於單執行緒執行
 FFMPEG 4 執行緒:FFMPEG 2.1 HEVC 解碼器於 4 執行緒執行
 Lentoid C:視駿 HEVC 解碼器在 SSE 最佳化之前於單執行緒執行
 Lentoid SIMD:視駿 HEVC 解碼器在 SSE 最佳化之後於單執行緒執行 (v2.0.1.16)  Lentoid SIMD 4 執行緒:視駿 HEVC 解碼器在 SSE 最佳化之後於 4 執行緒執行 (v2.0.1.16)


Figure 10. H.265 Decoding Frame Rate of 4K Videos for Various Decoders and Configurations


Figure 11. H.265 Decoding Frame Rate of Class A Videos for Various Decoders and Configurations


Figure 12. H.265 Decoding Frame Rate of Class B Videos for Various Decoders and Configurations


Figure 13. H.265 Decoding Frame Rate of Class C Videos for Various Decoders and Configurations


圖 14:各種解碼器及組態的 Class E 影片 H.265 解碼幀率


圖 15:各種解碼器及組態的 Class F 影片 H.265 解碼幀率

在不同類別影片的效能資料方面,視駿 HEVC 解碼器在 Intel SSE 最佳化之後,速度最高可達 HM10 解碼器的 10 倍6。位元率較低的串流,效能提升的情形更為明顯。不過位元率增加時,Intel SSE 最佳化 (Lentoid SIMD 4 執行緒 / Lentoid C) 的加速比例降低,原因是 Intel SIMD 指令在可平行化的模組更為有效 (例如動作補償),超越無法平行化的模組 (CABAC、IDCT 及去區塊)。若要更詳細說明這種現象,可以探討 VTune™ Amplifier XE 熱點函式在 Intel SSE 最佳化前後的情形:


圖 16:Intel SSE 最佳化 (Lentoid C 8 執行緒) 前的視駿 HEVC 解碼器熱點函式使用 VTune™ Amplifier,以 4K 5.6Mbps 工作負載執行


圖 17:Intel SSE 最佳化 (Lentoid C 8 執行緒) 後的視駿 HEVC 解碼器熱點函式使用 VTune™ Amplifier,以 4K 5.6Mbps 工作負載執行

我們在圖 16 發現 Lentoid C 解碼器的熱點,大多位於動作補償 (MC) 模組,因為每個 CTB 都必須完成 MC,而且需要大量的運算資源。不過 MC 可於 CTB 層級平行化,因此在 Intel SSE 最佳化之後可達成最高的加速比例:

隨著位元率增加,許多運算資源都用在 CABAC、IDCT 及去區塊,以解碼及處理影片資料,讓這些模組的 Intel SSE 加速比例較低。因此在 Intel SSE 最佳化之後,熱點函式會由 MC 移往 IDCT 及去區塊模組,如圖 17 所示。

此外,我們可由 VTune 的 CPU 並行發現,在 8 執行緒執行 Intel SSE 最佳化解碼器處理 4K 5.6Mbps 串流時,至少有 3 個邏輯 CPU 在 74% 的解碼時間內執行,只有 1 或 2 個邏輯 CPU 在 26% 的時間內執行,原因是 B 幀之間的工作負載不均。


圖 18:CPU 使用情形直方圖

至於在熱點分析方面,前五個熱點函式其實是受到運算限制而非記憶體限制,因此可透過 Intel AVX 及 Intel AVX2 指令進一步最佳化。


圖 19:主要熱點

3.3 最佳化 Intel® Atom™ 處理器平台的 H.265/HEVC 解碼器

觀看影片是行動裝置最常使用的用途。多媒體處理需要大量運算,也會對電池壽命及使用者經驗造成重大影響。行動裝置的 LCD 解析度不斷進步,由 480p、720p 到現在的 1080p。終端使用者希望觀看高品質影片,但對優酷 (Youku)、愛奇藝 (iQiyi) 及樂視網 (LeTV) 等影片供應商而言,網路頻寬的採購成本每年都在增加。

Intel 在 2013 年推出全新的第四代 Intel Atom 處理器平台 (核心名稱 Bay Trail),由 22nm Silvermont 架構驅動。此項架構的詳細資料如下:


圖 20:Bay Trail 平台簡介

我們使用 Intel VTune 工具除錯視駿 H.265/HEVC 解碼器,然後利用以下三個子節說明的工具集進行最佳化。我們在 Intel Atom 處理器平台獲得最高的解碼速度及低 CPU 使用率。

3.3.1 由 YASM 及 Intel® C++ 編譯器進行最佳化

我們並未使用預設的 Android 編譯器,在開放原始碼 FFMPEG 進行 ASM 組合碼的最佳化,* 而是使用 YASM 及 Intel® C++ 編譯器。

YASM 是在「新」BSD 授權之下完全重寫的 NASM 組合器,可針對 x86 平台重複使用 Intel SIMD 最佳化 ASM 組合碼。開發人員可由以下網址下載及安裝 YASM 編譯器:http://yasm.tortall.net。使用時,請先更改 configure.sh 檔案,並啟用 YASM 及 ASM 選項,再編譯 FFMPEG,如下所示:


圖 21:修改 FFMPEG 組態檔案

我們也鼓勵 ISV 使用 Intel C++ 編譯器編譯原生碼。

3.3.2 以 Intel® 串流 SIMD 延伸 (Intel® SSE) 指令進行最佳化

我們使用 Intel VTune 工具除錯時,發現視駿轉碼器僅使用 C 程式碼實行 YUV2RGB,因此無法達到最佳效能。

Intel Atom 處理器平台支援 Intel SSE 指令程式碼,其中包括 MMX、MMXEXT、Intel SSE、Intel SSE2、Intel SSE3、Intel SSSE3 及 Intel SSE4。在開放原始碼 FFMPEG 啟用 Intel SSE 程式碼,可大幅提升 YUV2RGB 效能。

我們使用 MMX EXT 程式碼,在 FFMPEG 開啟 Intel SSSE3 編譯器選項,如以下程式碼片段所示。


圖 22:在 FFMPEG 啟用 Intel® SSE 程式碼

Bay Trail 平台可支援 Intel SSE 4.1 指令,用於最佳化 H.265/HEVC 解碼器以提升效能。

3.3.3 由 Intel® Threading Building Blocks (Intel® TBB) 工具進行最佳化

我們執行 VTune 工具時,發現視駿轉碼器建立了四個執行緒。不過最快的執行緒必須等待最慢的執行緒,造成核心閒置。

Intel SSE 單獨使用時只能在單一核心運作。若使用 Intel TBB 搭配 Intel SSE,就可以讓程式碼在多個核心執行以提升效能。

我們更改多執行緒程式碼以執行多工作業,然後利用 Intel TBB 分配作業至閒置核心,以便充分利用多核心。

Intel TBB 可至 http://threadingbuildingblocks.org/download 下載。


圖 23:YUV 至 RGB 比較資料

Intel TBB 最佳化可提升最高 2.6 倍效能7

3.3.4 H.265/HEVC 解碼器效能比較

OpenGL* 也啟用進行渲染,因為我們測試時發現 YASM 及 Intel C++ 編譯器最佳化可提升最高 1.5 倍效能,Intel SSE 最佳化可將效能提升為 C 程式碼的 6 倍Intel® TBB 最佳化則提升最高 2.6 倍8的效能。

我們利用 Intel® Graphics Performance Analyzers (Intel® GPA) 測試播放影片時的重新整理頻率。使用最佳化 H.265/HEVC 解碼器在 Bay Trail 平板電腦測試時,重新整理頻率在播放 HEVC 1080p 影片時可達到 90 FPS (每秒顯示幀數),Clover Trail+ 平板電腦則可達到 40 FPS。


圖 24:Clover Trail+/ Bay Trail 平板電腦的效能比較

如果播放 1080p 影片時,在 Bay Trail 平板電腦將重新整理頻率設定為 24 FPS,CPU 工作負載就會低於 25%。所以我們中國熱門的線上影片供應商推薦視駿 HEVC 解碼器解決方案用於商業用途。

4. 摘要

H.265/HEVC 可能是未來十年最熱門的影片標準。許多媒體應用程式及產品目前都在尋求 HEVC 支援。本文在 Intel 平台使用新型 IA 平台技術,實作以 CPU 為基礎的即時端對端 HEVC 解決方案。我們以 Intel 處理器為基礎的進階解決方案,已部署於迅雷 (Xunlei) [4][4] 線上影片服務及產品,絕對能夠加快 H.265/HEVC 技術的生產及部署。

5. 其他相關文章

  1. http://software.intel.com/zh-cn/articles/optimizing-h265hevc-decoder-on-intel-atom-processor-based-platforms
  2. http://software.intel.com/zh-cn/articles/real-time-cpu-based-h265hevc-encoding-solution-with-intel-platform-technology-1

參考資料

[1] 概述高效率影片編碼 (HEVC) 標準 (Overview of the High Efficiency Video Coding (HEVC) Standard),影片技術電路及系統的 IEEE 運作 (IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY),2012 年 12 月第 22 卷第 12 期。
[2] 高效率影片編碼 (HEVC) 文字規格草案 10 (High Efficiency Video Coding (HEVC) text specification draft 10),JCTVC-L1003_v34
[3] http://www.strongene.com/en/homepage.jsp
[4] http://yasm.tortall.net
[5] http://threadingbuildingblocks.org
[6] http://hevc.hhi.fraunhofer.de/

關於作者

  1. Yang Lu 是資深應用程式工程師,服務於 Intel® 軟體與解決方案事業部 (SSG) 開發者關係部的 Intel® Xeon® 處理器雲端平台功能 (Intel® Xeon® Processor Cloud Platform Enabling) 團隊。她已於 Intel 任職 8 年,與亞太地區一級 ISV 密切合作,實現各種 Intel 架構技術。
  2. Finn Wong 是資深應用程式工程師,服務於 Intel 軟體與解決方案事業部 (SSG) 開發者關係部的 Intel® Core™ 處理器客戶功能 (Intel® Core™ Processor Client Enabling) 團隊。他關注的研究領域包括影片編碼、數位影像處理、電腦視覺及功率最佳化。
  3. Songyue Wang 是資深應用程式工程師,服務於 Intel 軟體與解決方案事業部 (SSG) 開發者關係部的 Intel® Atom™ 處理器行動功能 (Intel® Atom™ Processor Client Enabling) 團隊。Songyue 負責在 Intel Atom 處理器讓 Android 應用程式發揮功能。他的主要工作為最佳化 Bay Trail 平台的多媒體效能,並與中國最熱門的線上影片供應商密切合作,在 x86 平台的 Android 作業系統實現 H.265/HEVC 編碼器及解碼器解決方案,以及 Intel® 無線顯示分割功能。

 

效能測試中使用的軟體及工作負載可能僅在 Intel 微處理器上進行效能最佳化。效能測試如 SYSmark* 及 MobileMark*,係以特定電腦系統、元件、軟體、作業及功能進行測量。變更其中任何要素皆可能導致結果變更。您必須查閱其他資訊及效能測試以協助您對預計採購項目進行完整的評估,包括該產品與其他產品結合時的效能。
組態:Intel® Xeon® 處理器 E5-2680@2.70GHz 搭載 32GB DDR3-1333 RAM,影片轉碼工作負載位於 HEVC 轉碼器,負責人 YANG LU。如需詳細資訊,請參閱 http://www.intel.com/performance

2 效能測試中使用的軟體及工作負載可能僅在 Intel 微處理器上進行效能最佳化。效能測試如 SYSmark* 及 MobileMark*,係以特定電腦系統、元件、軟體、作業及功能進行測量。變更其中任何要素皆可能導致結果變更。您必須查閱其他資訊及效能測試以協助您對預計採購項目進行完整的評估,包括該產品與其他產品結合時的效能。
組態:Intel® Xeon® 處理器 E5-2697 v2 @2.70GHz 搭載 64GB DDR3-1867 RAM,影片轉碼工作負載使用視駿 HEVC 轉碼器,負責人 YANG LU。如需詳細資訊,請參閱 http://www.intel.com/performance

3 效能測試中使用的軟體及工作負載可能僅在 Intel 微處理器上進行效能最佳化。效能測試如 SYSmark* 及 MobileMark*,係以特定電腦系統、元件、軟體、作業及功能進行測量。變更其中任何要素皆可能導致結果變更。您必須查閱其他資訊及效能測試以協助您對預計採購項目進行完整的評估,包括該產品與其他產品結合時的效能。
組態:Intel® Xeon® 處理器 E5-2697 v2 @2.70GHz 搭載 64GB DDR3-1867 RAM,影片轉碼工作負載使用視駿 HEVC 轉碼器,負責人 YANG LU。如需詳細資訊,請參閱 http://www.intel.com/performance

4 效能測試中使用的軟體及工作負載可能僅在 Intel 微處理器上進行效能最佳化。效能測試如 SYSmark* 及 MobileMark*,係以特定電腦系統、元件、軟體、作業及功能進行測量。變更其中任何要素皆可能導致結果變更。您必須查閱其他資訊及效能測試以協助您對預計採購項目進行完整的評估,包括該產品與其他產品結合時的效能。
組態:Intel® Xeon® 處理器 E5-2697 v2 @2.70GHz 搭載 64GB DDR3-1867 RAM,影片轉碼工作負載使用視駿 HEVC 轉碼器,負責人 YANG LU。如需詳細資訊,請參閱 http://www.intel.com/performance

5 效能測試中使用的軟體及工作負載可能僅在 Intel 微處理器上進行效能最佳化。效能測試如 SYSmark* 及 MobileMark*,係以特定電腦系統、元件、軟體、作業及功能進行測量。變更其中任何要素皆可能導致結果變更。您必須查閱其他資訊及效能測試以協助您對預計採購項目進行完整的評估,包括該產品與其他產品結合時的效能。
組態:Intel® Core™ 處理器 i5-2520M 個人電腦搭載 4GB RAM 及 Windows* 7 作業系統,解碼幀率及 CPU 使用率 [Finn Wong]。如需詳細資訊,請參閱 http://www.intel.com/performance

6 效能測試中使用的軟體及工作負載可能僅在 Intel 微處理器上進行效能最佳化。效能測試如 SYSmark* 及 MobileMark*,係以特定電腦系統、元件、軟體、作業及功能進行測量。變更其中任何要素皆可能導致結果變更。您必須查閱其他資訊及效能測試以協助您對預計採購項目進行完整的評估,包括該產品與其他產品結合時的效能。
組態:Intel® Core™ 處理器 i7-2600 個人電腦搭載 8GB RAM 及 Windows* 7 作業系統,各種解碼器及配置的解碼幀率 [Finn Wong]。如需詳細資訊,請參閱 http://www.intel.com/performance

7 效能測試中使用的軟體及工作負載可能僅在 Intel 微處理器上進行效能最佳化。效能測試如 SYSmark* 及 MobileMark*,係以特定電腦系統、元件、軟體、作業及功能進行測量。變更其中任何要素皆可能導致結果變更。您必須查閱其他資訊及效能測試以協助您對預計採購項目進行完整的評估,包括該產品與其他產品結合時的效能。
組態:Intel® Atom™ 處理器 Bay Trail 平板電腦 FFRD8 搭載 2GB RAM 及 Android 4.2,解碼幀率 [Songyue Wang]。如需詳細資訊,請參閱 http://www.intel.com/performance

8 效能測試中使用的軟體及工作負載可能僅在 Intel 微處理器上進行效能最佳化。效能測試如 SYSmark* 及 MobileMark*,係以特定電腦系統、元件、軟體、作業及功能進行測量。變更其中任何要素皆可能導致結果變更。您必須查閱其他資訊及效能測試以協助您對預計採購項目進行完整的評估,包括該產品與其他產品結合時的效能。
組態:Intel® Atom™ 處理器 Bay Trail 平板電腦 FFRD8 搭載 2GB RAM 及 Android 4.2,解碼幀率 [Songyue Wang]。如需詳細資訊,請參閱http://www.intel.com/performance


转自:https://software.intel.com/sites/landingpage/tw/real-time-end-to-end-h265hevc-solution-for-intel-architecture-based-platforms.php


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Open Source (GPL) H.265/HEVC video encoder 下载网址:https://bitbucket.org/multicoreware/x265/src x265 developer wiki To compile x265 you must first install Mercurial (or TortoiseHg on Windows) and CMake. Then follow these easy steps: (for the most definitive instructions, consult our build README) Linux Instructions # ubuntu packages: $ sudo apt-get install mercurial cmake cmake-curses-gui build-essential yasm # Note: if the packaged yasm is older than 1.2, you must download yasm-1.2 and build it $ hg clone https://bitbucket.org/multicoreware/x265 $ cd x265/build/linux $ ./make-Makefiles.bash $ make Windows (Visual Studio) Instructions $ hg clone https://bitbucket.org/multicoreware/x265 Then run make-solutions.bat in the build\ folder that corresponds to your favorite compiler, configure your build options, click 'configure', click 'generate', then close cmake-gui. You will be rewarded with an x265.sln file. Also see cmake documentation. Intel Compiler Instructions On Windows, you should open an Intel Compiler command prompt and within it run one of the make-makefiles.bat scripts in build/icl32 or build/icl64, then run nmake. On Linux, you can tell cmake to build Makefiles for icpc directly. This requires you to have configured Intel's compiler environment (by sourcing the appropriate shell script). For example: $ source /opt/intel/composer_xe_2013/bin/compilervars.sh intel64 $ cd repos/x265/build/linux $ export CXX=icpc $ export CC=icc $ ./make-Makefiles $ make Command line interface The Makefile/solution builds a static encoder.lib library and a standalone x265 executable that aims to be similar to x264 in its command line interface. Running without arguments shows you the command line help. Info Mission Statement Road Map TODO HOWTO add a new encoder performance primitive HOWTO Contribute patches to x265 HOWTO cross compile from Linux to Windows Coding Style Helpful links

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值