この記事は、インテル® デベロッパー・ゾーンに公開されている「Learn about the Significance of HEVC (H.265) Codec」(https://software.intel.com/en-us/blogs/2015/12/11/codecs-are-they-slowing-you-down) の日本語参考訳です。
概要
私たちは、カメラや携帯電話で動画を撮影したり、家庭でビデオコンテンツをストリーミングしたりしていますが、それらはビデオをエンコードおよびデコードするソフトウェアやハードウェアによって行われています。大部分の消費者はビデオに特化したハードウェア (VCR、DVD、Blu-ray* プレイヤー) から、同様の機能を果たすパーソナルシステムに移行しつつあり、高速で効率良いコーデックの処理は重要になっています。
この記事は、High Efficiency Video Coding (HEVC H.265) が、どのように開発者の今日と将来のビデオの要求を満たすかを説明する最初のシリーズとなります。効率良いメディア・ソフトウェアを記述するためのリソースも含まれます。
GPU を活用していますか?
まず初めに、インテル® Core™ プロセッサーに搭載される CPU/GPU の関係の進化を示す図から、大局的に見ていきましょう。
GPU は、インテル® Core™ プロセッサーの世代ごとに重要性を増し、占有するダイの面積も増加していることは図 1 から分かります。潜在的なビデオ・パフォーマンスは、実行ユニット (EU) の数に比例し、第 2 世代のインテル® Core™ プロセッサーの 12 個から、第 6 世代のインテル® Core™ プロセッサーでは 72 個に増加しています。
これは、インテル® Xeon® プロセッサー E3 v3 (以降の)製品ファミリーでも同様です。インテル® Xeon® プロセッサー E3 v3 ファミリーは、サーバー向けのメディア処理対応 GPU を搭載しています。http://ark.intel.com/ja/ で 「技術」から「インテル® クイック・シンク・ビデオ」をフィルターするか、「プロセッサー・グラフィックス」欄から特定の GPU を検索できます。インテル社ではまた、より高い品質が求められるケース向けのソフトウェア HEVC 実装を提供しています。これは、インテル® Xeon® プロセッサー E5 と E7 ファミリーを含む GPU を搭載しない製品など、広範囲なプロセッサー上で実行できます。詳細は、インテル® Media Server Studio の製品サイトをご覧ください
Ultra-High Definition (UHD) 4K (3840 x 2160) および 8K (7680 x 4320) ビデオ・ストリーミングは、効率良い圧縮技術の必要性をますます高めています。今日のプロセッサーの CPU コアは、まだこのようなワークロードをサポートできますが、GPU によるビデオ処理タスクは、パフォーマンス、電力、そして密度の観点で利点があります。これは、ハードウェア・アクセラレーションが利用できる場合、特に顕著になります。
ビデオ圧縮で何が変わったのか? HEVC (H.265) の紹介
HEVC (H.265) は、10 年前の AVC (H.264) 標準に比べ、はるかに高い圧縮を可能にする高効率なビデオ圧縮規格です。
CPU 上で実装される HEVC コーデックは 、マルチスレッド HEVC エンコーダーと HEVC デコーダーを含みます。それらは、高度に最適化されていますが、H.265 ではさらにコストが要求されます。H.265 のエンコードは複雑で、H.264 のエンコードの 10 倍の計算パワーを必要とします。理論的には、どのようなコンピューターでも H.265 をデコードすることが可能ですが、実用的には組込みハードウェア・デコーダーを必要とするでしょう。
各世代の HEVC 実装
消費者は、開発者の皆さんがすべてのタイプのデバイス向けにメディア・アプリケーションを最適化していることを期待しているため、インテル® プロセッサーの世代ごとの機能を知っておくことは重要です。
- 第 4 世代インテル® Core™ プロセッサー (開発コード名 Haswell: 2 – 3.50GHz、4 コア): HEVC 4K ストリームのリアルタイム・デコードをサポートする HEVC ソフトウェア・デコーダーが提供されます。
- 第 5 世代インテル® Core™ プロセッサー (開発コード名 Broadwell): HEVC 8 ビットのソフトウェア/ハイブリッド・エンコードをサポートします。
- 第 6 世代インテル® Core™ プロセッサー (開発コード名 Skylake): HEVC 8 ビットのデコードとエンコードのハードウェア・アクセラレーションをサポートします。
HEVC 圧縮 と AVC (H.264) (ビットレート軽減)
HEVC は、より効率良くスマートな圧縮を必要とする、ビデオ・ソリューションおよびストリーミング・ベンダーによって利用されています。AVC は 16×16 のピクセルブロックを使用しますが、HEVC は 最大 64×64 のピクセルブロックを使用できます。また、H.264 は 8 方向のピクチャー間予測が可能ですが、H.265 では 35 方向の予測ができます。
さらに、H.265 は複数のフレームに渡って変化しない (シーンの背景など) フレーム内の領域を効率良く識別し、最初のフレームのみをエンコードして、その領域が変化するまでエンコードを繰り返しません。HEVC はまた、領域の一部分のみが変化した場合にブロック領域のサイズを変更したり、不変領域のブロックサイズを後続のフレームで拡大することが可能です。これは、計算処理の要件を減らし、さらなる効率化をもたらします。
HEVC の活用を可能にするインテルの開発ツール
インテル社は、アプリケーション開発者が GPU プログラミングに役立つように設計されたツールとリソースを提供します。インテル® Media Server Studio とともに GPU プログラミングの最適化に有用な 2 つのインテル SDK があります。それは、プラットフォーム、デバイス、そしてターゲットの使い方に依存します。
- インテル® Media SDK を使用して、クライアントとモバイルデバイス上で実行されるメディア・アプリケーション向けのビデオデコード、処理、およびエンコードを最適化します。最も人気のあるコーデックの多くはハードウェアによりアクセラレートされ、業界をリードするパフォーマンスは、共通のハイレベルな API に統一されています。これにより、アプリケーションの将来が約束されます: 前世代のインテル® プロセッサー向けに開発されたコードは、調整することなく新しいハードウェアで最適に動作します。将来のハードウェアで追加される新機能も容易に利用できます。
- 汎用 GPU アクセラレーション向けには、インテル® SDK for OpenCL* Applications を使用します。OpenCL* は主に EU をターゲットとします。しかし、OpenCL* アプリケーションが、インテル® プロセッサーのハードウェア・アクセラレーション機能の利点を活用できるよう、いくつかの拡張機能が追加されています。
- メディア・サーバー・アプリケーション向けの高密度のメディア変換と最適化、通信基盤 (ビデオ処理/会議、デジタル監視)、ビデオクラウドとデータセンター、および組込み用途向けに迅速に開発を行うには、インテル® Media SDK を含むインテル® Media Server Studio Professional Edition を使用してください。これには、開発時間とインフラリソースを節約して HEVC への移行を加速する機能と、高度なビデオ・パフォーマンスと解析ツールが含まれます。
どちらの SDK も、インテル® ハードウェアにアクセスするため、同じドライバーを使用します。Windows* 環境では、インテル® Media SDK と OpenCL* アプリケーションが必要とするライブラリーは、グラフィックス・ドライバーとともに自動的にインストールされるため、アプリケーションにランタイム・ライブラリーを同梱する必要はありません。
詳細は、「メディアとビデオ処理のアクセラレーション: どのツールを使用すべきか?」をご覧ください。
まとめ
ビデオはあらゆる分野で利用され、そのパッケージサイズは増加し続けています。多くの消費者が、ビデオやゲームのニーズを満たすため、DVD プレイヤーを所有する代わりにストリーミング・コンテンツを選択することから、コンテンツの処理が最も重要になっています。そして、第 6 世代のインテル® Core™ プロセッサーで最初にサポートされる HEVC (H.265) フォーマットは、最も効率よくスマートな圧縮が提供し UHD コンテンツを現実的にすることで、より多くの UHD 対応デバイスが使用で利用できるようになります。 HEVC のデコードとエンコードを使用するようにコードを最適化するには、インテル® Media SDK とインテル® SDK for OpenCL Applications について調査するか、インテル® Media Server Studio の無料体験版をダウンロードしてください。
今後の記事では、利用方法、パフォーマンス、電力、メディア出力アーキテクチャーの品質とツールについて触れていく予定です。
関連情報と資料
- 今後の優れたビデオコーデック、HEVC に備える (英語)
- #4 コンセプトシリーズ:HEVC (H.265) と H.264 (MPEG-4 AVC) の違い
http://www.mediaentertainmentinfo.com/2013/10/4-concept-series-what-is-the-difference-between-hevc-h-265-and-h-264-mpeg-4-avc.html (英語) - 今後のビデオフォーマットの方向性 (https://software.intel.com/en-us/blogs/2015/09/08/a-fresh-direction-for-future-video-formats) – Mark J. Buxton のブログ
- インテル® Media Server Studio を使用した 4K UHD と HEVC の将来 (https://software.intel.com/en-us/blogs/2015/09/08/a-fresh-direction-for-future-video-formats)
- メディアとビデオ処理のアクセラレーション: どのツールを使用すべきか?
- ハードウェアによりアクセラレートされた NVidea* HEVC 4K ビデオ再生 – ゴールデンタイムへの準備はできていませんか? (英語) – ars technica
- 4K 時代の将来が約束された HTPC: HDMI、HDCP および HEVC (英語)
- インテル® Iris™ グラフィックスとインテル® HD グラフィックス・ファミリー上のインテル® クイック・シンク・ビデオ・テクノロジー – 柔軟なトランスコードのパフォーマンスと品質
http://newsroom.intel.com/servlet/JiveServlet/previewBody/3880-102-1-6896/WP-HD-Graphics-4200.pdf (英語) - インテル® プロセッサー・グラフィックス Gen9 の演算アーキテクチャー (英語)
- インテル® グラフィックス・デベロッパー・ゾーン
- インテル® Media SDK の動向に関する技術記事 (https://software.intel.com/en-us/articles/technical-articles-on-trending-topics-of-intel-media-sdk)
- インテル® Media SDK 開発者ガイド (英語)
- メディア・クライアントのサポート、チュートリアル、ドキュメント
著者紹介と貢献者
- Gael Hofemeier は、ビジネス・クライアント・アプリケーションとテクニカルライターをサポートするアプリケーション・エンジニアです。
- Jeff McAllister は、インテル® Media SDK for OpenCL* Applications を担当するシニア・ソフトウェア・エンジニア兼テクニカル・コンサルティング・エンジニアです。
- Ellen Chi は、インテル社のデスクトップ・グラフィックス製品マーケティング・グループのエンジニアです。
OpenCL および OpenCL ロゴは、Apple Inc. の商標であり、Khronos の使用許諾を受けて使用しています。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。