VP9を変えずに改善する - その3

11月 20, 2017
  ブログチーム
異なるバージョンのVP9の性能比較

このブログシリーズの第1回と第2回では、VP9とスケーラビリティの実装について説明しました。 最終回となる今回は、コーデックそのものと、Vidyoが新たに実装したスケーラブルなVP9の利点を取り上げます。

続きを読む VP9を変えずに改善する - 前編
続きを読む VP9を変えずに改善する - パート2

エンコーダーとデコーダーの複雑さの非対称性は、1980年代後半の最初のデジタルビデオエンコーダーの設計(H.261)にまで遡り、歴史的に使用されてきた予測、動き補償ハイブリッド構造の固有の特徴です。エンコーダーの精巧さは常にコーデック実装間の差別化ポイントであり、多くの企業が品質と圧縮効率を向上させる独自の「秘伝のタレ」を開発してきた。

これは、専門家でない人がしばしば混乱するポイントである。ビデオコーディング標準は、デコードプロセスとビットストリームの構文を標準化するものであり、エンコーディングプロセスを標準化するものではない。実装者は、エンコーディングプロセスを最適化する上で非常に大きな自由を持っている。DVDで使用されているMPEG-2コーデックでは、基礎となるビットストリームのシンタックスに変更がないまま、10年の間にエンコーダーの性能がほぼ倍増した(つまり、同じ品質でビットレートが半分になった)ことは興味深い。ただ、エンコーダーがビットをどこに使うかをより賢く決定できるようになったのだ。それは、エンジニアがより良い設計を行ったからであると同時に、リアルタイムでもこれらの計算を実行できる処理能力が向上したからである。

Vidyoは最近、独自のPlatform-as-a-Service (PaaS)の提供を開始しました。 vidyo.io.PaaSとして、誰でも簡単に利用できるように設計されている。プログラミング言語や環境に応じて自由に利用できるSDKをダウンロードし、コードを自分のアプリケーションに接続するだけでよい。 サービスはクラウドベースで、使用量に応じて課金される。vidyo.ioを支えるエンジニアリングについては、以下をご覧ください。 ブログ記事.

私たちにとって重要だったのは、スケーラビリティを完全にサポートし、現在知られているロイヤリティ要件がなく、WebRTCとのネイティブな相互運用性を提供できるコーデックを提供できることでした。WebMプロジェクトで利用可能なスケーラブルVP9のオープンソース版を利用することもできましたが、私たちはスケーラブルVP9の実装をゼロから開発することにしました。

Vidyoは、モバイルからハイエンドの5Kシステムまで、可能な限り幅広いプラットフォームで高品質の体験とパフォーマンスを提供することを常に重視してきました。Vidyoは長年にわたり、ビデオエンコーダの設計や様々なプラットフォームに最適化された実装の開発、特にリアルタイムの双方向通信を念頭に置いた設計において多くの専門知識を培ってきました。私たちはまた、私たちのプラットフォームに組み込まれたエラー回復力とエラー隠蔽メカニズム(その一部は特許を取得しており、WebRTCを含むオープンソースプロジェクトで利用可能なものをはるかに超えています)を使用できるようにしたいと考えていました。

私たちにとって特に重要なのは、モバイル・パフォーマンスです。エンコーディングはソフトウェアで行われるため、利用可能なCPUとバッテリーから可能な限り性能を引き出すことが不可欠だ。実際、以下に示すように(表1で先を見ることができる)、最も単純な動作モード(CPUモード8と呼ばれる)であっても、オープンソース版のVP9(OVP9と呼ばれる)のテストでは、一般的なモバイルプラットフォームで720pコンテンツを空間的にスケーラブルにコーディングするのに適したリアルタイム性能を実現できなかった。フレームレートは約15fpsで、通常必要とされる30fpsの半分でした。これが、私たちが独自の最適化バージョンを開発する主な動機となりました。

私たちの仕事の結果は、現在、私たちのウェブサイトでご覧いただけます。 vidyo.io PaaSであり、間もなくVidyoプラットフォーム全体で利用可能になります。パフォーマンスの向上には目を見張るものがあります。それを実証するために、3つのパラメータ(品質対ビットレート対複雑さ)で2つのコーデックを比較する必要があります。3つのパラメータはすべて互いに影響し合うため、適切な比較を行うには、少なくとも1つを修正する必要があります。ここでは、動作範囲にわたってコーデックの品質を一致させ、複雑さを比較します。 明らかに他のテストや実際の結果は異なるかもしれませんが、これらの結果は、私たちの新しいVP9コーデックがもたらすパフォーマンスの利点を示しています。

720p 30fps

図6:2つの空間レイヤーと3つの時間レイヤーを使用した720pビデオにおけるVP9の異なるバージョンの性能比較

図6 は、VP9コーデックの2つのバージョンを使用して、2つの空間レイヤーと3つの時間レイヤーを持つ720p、30fpsのシーケンスをエンコードした一例を示している。グラフはPSNR(ピーク信号対雑音比)とビットレートの関係を示している。 (PSNRはビデオ品質の指標で、高ければ高いほど良い。) 数字はトップレイヤーのPSNRと総ビットレートを指す。まず、CPUモード8のOVP9を使用して、4つの異なる動作ポイントでビデオをエンコード(固定量子化器を使用)する。 先に述べたように、これはこの特定のソフトウェア実装の最も単純な動作モードであり、すなわちCPUリソースの使用量が最も少なく、もちろん圧縮効率も最も低い。 しかし、このモードでもOVP9は、720pで2つのスケーラブルレイヤーに対してリアルタイム性能(つまり30fps)を提供しなかった。 また、同じビデオをVidyoのVP9実装(ここではVVP9と呼ぶ)を使用して、低と中という2つの異なる複雑度モードでエンコードした。 低モードのVVP9はOVP9とほぼ同じかわずかに優れたパフォーマンスを提供し、中モードではさらに改善されることがわかります。

図6 この構成では、2つのコーデックの品質性能が一致していることがわかります。しかし、今重要な比較は、どの程度の処理コストでこの圧縮効率が得られるかということだ。 そこがエキサイティングなところだ。 表1 以下は、iPhone 6 PlusとSamsung Galaxy S6 Edge+(いずれもシングルスレッドモード)という2つの一般的なモバイルプラットフォームにおける、2つのコーデックのフレーム/秒のパフォーマンスを示しています。

iOSおよびAndroidプラットフォームにおけるCPU性能

表1:iOSとAndroidプラットフォームのCPU性能

左側の列は絶対fpsを示し、右側の列はVVP9(2つのモード)で達成されたOVP9エンコードおよびデコード速度のパーセンテージを示しています。2つのデバイスとビットレートを平均すると、エンコード時に2.7~2.8倍のスピードアップが得られ、同時にビデオ品質(PSNR)もわずかに向上していることがわかる。iPhoneの場合、低モードのVVP9は3倍以上の速度を提供した。これらの結果は、2つの空間レイヤーを持つスケーラブルエンコーディングの結果であることを強調しておく。しかし、シングルレイヤーモードでも最大1.7倍のスピードアップが見られた。上に示したように、デコード速度も、それほど顕著ではないが、速くなった。 これは予想されることで、デコードプロセスはより単純で、最適化の余地が少ないからだ。

特にエンコード速度の大幅な向上は、モバイル機器のバッテリー寿命に直結する。fpsで測定されるエンコード速度が速いということは、デバイスのCPUが各ビデオフレームをエンコードするのに要する時間が短いことを意味する。OVP9のテスト結果のようにエンコードレートが30fpsを下回る場合、CPUがビデオのエンコードにすべての時間を費やしたとしても、一般的なカメラの30fpsに追いつけないことを意味する。VVP9のテスト結果のように、エンコード速度が30fpsを大きく上回っている場合、CPUはビデオをエンコードするのに十分な時間があり、その後、他のアプリケーションのタスクを処理するか、スリープ状態に入ることになります。これは即座にバッテリー使用量の減少につながる。デコード速度の向上が小さいほど、消費電力への恩恵も小さくなりますが、これは同様です。総消費電力の改善は、オーディオエンコードとデコード、UI管理など、ビデオ通信アプリケーションが実行しなければならない他のタスクにも依存します。 ビデオエンコードに特化したモバイル機器(例えば、救急隊員が装着するボディカメラ)では、この節約は簡単にバッテリー寿命を2倍にすることができます。

これらの改善の一部は、デスクトップアプリケーションでも見られます。例えば、64ビットのWindows環境では、同じ720pコンテンツをエンコードした場合、OVP9よりもVVP9の方がおよそ1.6~1.7倍のスピードアップが見られた。(デスクトップ環境では、デコード速度の比較はあまり意味がありません。どちらのコーデックでも、デコード速度はすでにリアルタイムの数倍速くなっているからです)。デスクトップでは、バッテリーやプロセッサーのリソースがモバイル機器ほど制限されないのは明らかですが、エンコード性能の向上は、他のタスクのためのプロセッサーの空き時間や、ラップトップのバッテリー寿命の延長につながります。

Vidyoのエンドユーザーにとっては、既存のブラウザベースの実装やVP9の実装と完全な互換性を持つオープンスタンダードの利点をすべて享受できると同時に、パフォーマンスが大幅に向上し、プラグインが必要になる前にビデオをエンコードするモバイルデバイスの能力が大幅に拡張されます。これは、オープンスタンダードの大きな強みの1つである、異なる実装がすべて相互運用できることだ。

続きを読む

VP9を変えずに改善する - 前編
VP9を変えずに改善する - パート2

ブログを購読する

このカテゴリの新しいブログが公開されたらお知らせします: .

フォローする

に掲載された:

コンテンツへスキップ