VP9を変えずに改善する - 前編

11月 7, 2017
  ブログチーム
3つのレイヤーによる時間的スケーラビリティ

Vidyoは最近、スケーラブルなVP9の独自のコーデック実装を発表し、WebMオープンソースのVP9コーデック実装と比較して、特にモバイルデバイスでのパフォーマンスと効率が大幅に改善されました。さらに、VidyoのVP9コーデックは、WebRTCや、GoogleのChromeブラウザを含むWebM VP9コーデックを使用するあらゆるアプリケーションとの完全な互換性を維持しています。この3回にわたるブログシリーズでは、このエキサイティングな新しいデザインの詳細と利点を説明します。しかしその前に、まずVP9、スケーラビリティ、ビデオコーデック全般の背景と文脈を理解することが重要です。

VP9ビデオコーデックは、2015年後半にグーグル・クローム・ブラウザで初めて利用可能になった。 クロム48 がリリースされた。WebRTCは、VP8とH.264の両方がブラウザでサポートされている必要があることで有名だが、VP9はオープンソースでロイヤリティフリーとされる代替手段を導入し、H.264と、もちろんずっと古いVP8の両方を凌駕した。そして 2015年12月のブログ記事VP9の開発の歴史を、WebRTCとGoogle+ハングアウトの文脈でまとめた。

リアルタイム通信におけるVP9の意義は、オープンソース、ロイヤリティフリーのパッケージで最先端の圧縮効率を提供するという事実だけにとどまらない。2016年4月にゲスト投稿で書いたように "スケーラビリティ、VP9、そしてWebRTCにとっての意味" BlogGeek.Meによると、これはブラウザベースのビデオ通信に最先端のスケーラビリティをもたらす最初のコーデックである。スケーラビリティは、高品質のマルチポイントビデオを実装するために不可欠なツールであることが証明されており、ロイヤリティの高いH.264およびHEVCコーデック規格でサポートされています。

スケーラブルコーディングとは、同じビデオビットストリームにレイヤーと呼ばれるデータのサブセットが含まれ、異なる解像度でオリジナルを再構成できることを意味する。スケーラビリティは、時間的、空間的、または品質という多くの次元を指すことができ、最初の2つはリアルタイム通信アプリケーションで使用される。

時間的スケーラビリティとは、同じビデオ・ビットストリームからデータのサブセットを取り出し、異なるフレームレートでビデオを表現できることを意味する。 図1 は、スケーラビリティが使用されていない場合、つまりシングルレイヤーでのリアルタイム通信において、ビデオエンコーディングがどのように行われるかを示している。各ピクチャは、以前に符号化されたピクチャを参照として使用する。このようにして、エンコーダーは連続するピクチャ間の差分のみを送信すればよく、それによって送信する必要のあるデータ量を減らすことができる。これらのピクチャは "predicted "から "P "と呼ばれる。一番最初のピクチャは、前のピクチャからの予測を使用せず、イントラまたは "I "ピクチャと呼ばれる。制限として、ピクチャをデコードするためには、チェーン内の先行するピクチャをすべて受信していなければならない。このピクチャ符号化構造は、ピクチャタイプのシーケンスからIPPPと呼ばれる。

シングルレイヤー・コーディング

図1:単層コーディング

図2 は、3つの時間レイヤーを使用した場合のエンコードの方法を示している。異なるレイヤーを簡単に識別できるように、画像は垂直方向にオフセットして表示されている。フルフレームレートを30フレーム/秒(fps)と仮定しよう。一番下のレイヤー(レイヤー0)は4枚に1枚をエンコードし、7.5fpsのレートを提供する。このレイヤーのエンコードは 図1 - 最初の写真はI写真で、次の写真はすべてP写真(P0)である。

3つのレイヤーによる時間的スケーラビリティ

図2:3つのレイヤーによる時間的スケーラビリティ

レイヤー1は、レイヤー0の絵と絵の中間にある絵を加えることで構成される。図2では、ピクチャP1である。P0のピクチャにP1のピクチャを加えると、合計15fpsのレートになります。最後に、残りのピクチャ(P2)をすべて追加してレイヤ2を構成します。これらのピクチャは、下位レイヤーの直前のピクチャを使って再びエンコードされる。最初のP2では、これはI0(または時間的に後のP0)を意味し、2番目のP2では時間2のP1を意味する。P0とP1にP2のピクチャを加えると、合計30fpsになる。

階層Pピクチャーコーディングと呼ばれるこの構造には、いくつかの有用な特性がある。まず、下位レイヤーのデコード能力に影響を与えることなく、上位レイヤーを削除できる。その結果、信号処理なしで任意の時点でフレームレートを下げることができる。第二に、この構造により、任意の時点でより高い時間レイヤーに移動することもできる。例えば、レイヤー0だけを7.5fpsで受信してデコードしていたのに、フル30fpsに移行することにして、遅延や追加の信号処理なしにそれを始めることができる。また、ロバスト性も大幅に向上している。例えば、レイヤー0だけを確実に受信する必要がある。

 

ブログを購読する

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

フォローする

に掲載された:

コンテンツへスキップ