KUMICO

COLUMN

【Intel® アクセラレーションカード開発日誌 #5】 Intel® アクセラレーションカード開発事例:映像高精彩化システム

前回はIntel® Programmable Acceleration Card(以降Intel® アクセラレーションカードと呼称)の開発手法を説明しました。今回は、その事例の一つとして、Intel® アクセラレーションカードを使って弊社が開発した画像処理システムをご紹介します。

Intel® アクセラレーションカードを使った映像処理システム

このシステムでは、4K以下のサイズの映像素材を、高精彩化処理とH.264/H.265エンコードを行い、高画質なままファイルサイズを抑えたエンコードマスター(圧縮済み映像素材)を生成します(図1)。

É}1図1 画像処理システムの概要映像市場の状況としては、4K, 8K, 5Gなどをキーワードに映像市場の高画質化と視聴環境の多様化が加速しています。そんな中で、リアルタイム配信や映像保管分野における共通の課題に、高画質化によるデータ容量の肥大化とネットワークの帯域不足や高コスト化が挙げられます。その解決策として、高精彩・容量削減・高速処理を実現するのが、この映像処理システムの目的です。

É}2図2 SPIDERの特徴この映像処理システムでは、高精彩化処理にギズモインターナショナル社の「SPIDER」という技術を採用しています。SPIDERにより、その後に行われるエンコード処理での画質劣化を抑制し、画質を維持したままエンコードの出力ビットレートをさらに下げることができます(図2)。

SPIDERの詳細や画質比較は、以下のページに詳しく記載していますのでご覧ください。
https://www.fsi-embedded.jp/product_detail/8236/

例えば、図3のような高精彩化映像処理が4K@60fpsの映像に対してリアルタイム処理が可能です。

É}3

図3 SPIDERによる高精彩化処理の例

また、高精彩化処理の後に行われるH.264/H.265エンコードのために、ソシオネクスト社のM820Lメディアアクセラレータカードを採用しています(図4)。こちらはソシオネクスト社のハードウェアコーデックMB86M30を搭載し、サーバーCPUでのエンコードやトランスコードをオフロードすることで高速化します。また、マルチフォーマット・マルチコーデックの処理をサポートしているため、このような画像処理システムで使うのには都合が良いです。Intel® アクセラレーションカードにコーデックIPを実装することも可能ですが、H.265については4Kサイズの60Pに対応して、かつIntel® アクセラレーションカードに搭載可能なIPがまだ存在しないことから、今回はエンコードにIntel® アクセラレーションカードは使用しませんでした。

É}4図4 M820Lメディアアクセラレータカード
https://www.socionext.com/jp/products/assp/h264h265/M820L/index.htmlより引用)
以上の2つの機能をハードウェアの回路としてサーバーに搭載することで、大量のデータを、高画質を維持したま、高速に、安定的に処理することができるようになります。また、映像処理をハードウェアにオフロードしているため、CPUの負荷を配信など他の処理に割り当てることができ、効率的なサーバー運用が可能になります。

映像処理システムのソフトウェア構成

É}5図5 Intel® アクセラレーションカードとアクセラレーション・スタックの一般的な構成すでに以前の回で説明していますが、Intel® アクセラレーションカードのシステムはかなりの部分が抽象化されており、開発が必要なのは図5で言うと赤点線部分になります。

この中のアプリケーション部分のソフトウェア構成を示したのが図6です。この図でも、開発部分は赤点線で示しています。

É}6図6 映像処理システムのソフトウェア構成サーバー上の共有メモリ領域と記載されている部分は、Intel® アクセラレーションカード制御アプリケーションが確保したOSの論理メモリ領域のうち、Acceleration Stackがハードウェアとの共有のために使用するメモリ領域のことです。Intel® アクセラレーションカード制御アプリケーションからもIntel® アクセラレーションカードハードウェアからも一つの連続した論理メモリ領域に見えるため、ソフトウェアとハードウェアのデータ交換に用います。

Intel® アクセラレーションカード制御アプリケーションは、その名の通り、PCの各種設定と、PC内の動画データのアクセラレーションカードへの送信、アクセラレーションカードからの動画データの受信とファイル保存など、Intel® アクセラレーションカードの制御を行うアプリケーションです。
今回の映像処理システムでの要件を満たすために、Intel® アクセラレーションカード制御アプリケーションとして、オープンソースソフトウェアのffmpegをベースに、Intel® アクセラレーションカード制御部を追加したものを開発しています。
ffmpegをベースに使用することで、以下のようなメリットがあります。

  • 多種・多様なファイルフォーマットの解析・生成に対してオープンソースの利用が可能

  • 変換前のファイルに音声が含まれていても、各種音声コーデックの対応が可能

  • 内部的にRGBAのデータを生成できるので、SPIDERが必要とするデータを容易に生成できる

  • ソシオネクストM820Lもffmpegからの制御が可能なため、1つのアプリから2つのハードウェアアクセラレータを制御できる

  • ffserverとの連携で、ストリーミング配信にも利用可能

一方、デメリットとしては、

  • GPLのためソースコードの公開義務がある

  • MPEGのライセンスは使用企業が支払う必要がある

などが挙げられます

映像処理システムのハードウェア構成

一方、ハードウェア構成は図7のような形です。

É}7図7 映像処理システムのハードウェア構成FPGA Interface Unit (FIU)は、Intel® アクセラレーションカードのFPGAにおいてユーザーによる変更ができない固定ロジックです。サーバー上の共有メモリ領域をアクセラレーションカードのユーザーロジックが直接扱えるようにするインターフェース部となります。CCI-P to Avalon-MM Adapterなどと組み合わせることで、ユーザーロジックからは連続したメモリ領域にアクセス可能なAvalon-MM Slaveとして見え、ユーザーロジックからRead, Write, DMAが可能になります。

Streaming DMA AFUは、前回のコラムで説明した、Acceleration Stackに付属しているIntel® アクセラレーションカードサンプルデザインの1つです。この映像処理システムでも、サンプルデザインを流用して開発工程を早める工夫をしています。

高精彩化処理のSPIDERコアは、データバスとしては3G-SDIのLevel Aフォーマットのバーチャルストリーム(10bitパラレルデータストリームが2本で20bit)が4つの束(4K対応のため)になっています。
そのため、Streaming DMA AFUのDMA BBB部分のAvalon-STと3G-SDIを相互に変換する機能が必要になります。これは流石にIP-Coreや参考デザインは存在せず、今回はスクラッチで開発しました。

映像処理システムの処理フロー

以上のソフトウェアとハードウェアは、以下のような手順で処理されます。ここはIntel® アクセラレーションカード制御アプリケーションを組み込んだffmpegの視点で、Intel® アクセラレーションカード制御の部分だけを記載しています。

  1. 入力元動画ファイル、出力先動画ファイル、処理パラメーターなどを指定する

  2. 処理パラメーターをレジスタ設定値に変換し、AFU内のIP-Coreに設定する

  3. 入力元動画ファイルの映像データをAFUに転送する(in)

    • 動画ファイルのコンテナから映像データを抽出し、共有メモリ領域に配置する

    • 共有メモリ領域からデータをAFU内のDMA ControllerでDMAするためのDescriptorを生成し、DMA Controllerに設定する

    • DMAを起動し、完了割り込みを待つ

    • 上記をファイル内の全ての映像データに対して実施する

  4. AFUで処理された映像データを出力先動画ファイルに保存する(out)

    • AFU内のDMACが共有メモリ領域にエンコード済みデータを置くためのDescriptorを生成し、 DMA Controllerに設定する

    • DMAを起動し、完了割り込みを待つ

    • 共有メモリ領域に置かれたエンコード済み映像データを動画ファイルのコンテナ形式に変換して保存する

    • 上記を全てのエンコード済みデータに対して実施する

この処理の流れを図示したものが図8です。図中の番号は、上記に記載の手順番号となっています。

É}8

図8 映像処理システムの処理フロー

おわりに

今回でIntel® アクセラレーションカード開発日誌は最終回となります。今まで読んでいただいた方、ありがとうございました。もし今回はじめて読んだという方がいらっしゃれば、過去の記事もぜひご覧ください。
Intel® アクセラレーションカード開発日誌シリーズはこちら

Intel® アクセラレーションカードという製品は、かつてのALTERAというFPGAベンダ単体では実現できなかったであろう、システムレベルでヘテロジニアス・プラットフォームを実現できる、強力なソリューションだと思います。今回は紹介できませんでしたが、Intel® FPGA SDK for OpenCL™などソフトウェアエンジニアが容易にヘテロジニアス・プラットフォームを構築できる統合環境が、今後は強みになってくると考えます。

最終回である開発日誌#5では弊社のIntel® アクセラレーションカード開発の一部をお見せしました。この映像処理システムは自社開発のシステムですが、富士ソフトでは様々なお客様のハードウェアアクセラレーションシステムを手掛けており、その中でもIntel® アクセラレーションカードの開発に関してはノウハウが蓄積されています。このようなアクセラレーターの開発をご検討、もしくは特定機能のアクセラレーターをお探しの方は、ぜひ富士ソフトにご相談ください。

▼このコラムでご紹介した製品はこちら▼
アクセラレーションカード搭載可能ラックサーバー:Dell EMC PowerEdge R740 Rack Server
高精彩映像処理技術:SPIDER

個別相談も承っております。下記よりお申し込みください。

個別相談会申し込み

関連記事

まこちゃんブログ

NEWS

MORE  

PARTNER

  • Intel
  • Xilinx

お探しの組み込み製品はキーワードで検索!