【文献】
Yongjun Wu, et al.,Frame packing arrangement SEI for 4:4:4 content in 4:2:0 bitstreams,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 11th Meeting: Shanghai,2012年10月 1日,JCTVC-K0240.docx,URL,http://phenix.it-sudparis.eu/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC-K0240-v1.zip
【文献】
Yifu Zhang, et al.,Updated proposal for frame packing arrangement SEI for 4:4:4 content in 4:2:0 bitstreams,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 12th Meeting: Geneva,2013年 1月14日,JCTVC-L0316-v2.docx,URL,http://phenix.it-sudparis.eu/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L0316-v3.zip
(58)【調査した分野】(Int.Cl.,DB名)
高解像度クロマ・サンプリング・フォーマットの1以上のフレームを受信する受信ステップであって、前記高解像度クロマ・サンプリング・フォーマットの前記1以上のフレームは、クロマ成分のサンプル値及びルマ成分のサンプル値を含む、受信ステップと、
前記高解像度クロマ・サンプリング・フォーマットの前記1以上のフレームを、低解像度クロマ・サンプリング・フォーマットの1以上のフレームにパックするパッキング・ステップであって、前記低解像度クロマ・サンプリング・フォーマットは、前記高解像度クロマ・サンプリング・フォーマットよりも低いクロマ解像度を有し、前記パッキング・ステップは、前記高解像度クロマ・サンプリング・フォーマットの前記1以上のフレームの前記クロマ成分の前記サンプル値の一部を、前記低解像度クロマ・サンプリング・フォーマットの前記1以上のフレームのうちの1つのフレームのルマ成分のサンプル値に割り当てるステップを含む、パッキング・ステップと、
を含む、方法。
前記低解像度クロマ・サンプリング・フォーマットの前記1以上のフレームの第1部分は、前記高解像度クロマ・サンプリング・フォーマットの前記1以上のフレームの低クロマ解像度バージョンを表し、前記低解像度クロマ・サンプリング・フォーマットの前記1以上のフレームの第2部分であって、前記低解像度クロマ・サンプリング・フォーマットの前記1以上のフレームのうちの1つのフレームの前記ルマ成分を含む前記第2部分は、前記高解像度クロマ・サンプリング・フォーマットの前記1以上のフレームからの残存するクロマ情報を表す、請求項1記載の方法。
プロセッサ及びメモリを備えたコンピューティング・デバイスであって、前記コンピューティング・デバイスは、高解像度クロマ・サンプリング・フォーマットのフレームを再構築する動作を実行するよう構成されており、前記動作は、
低解像度クロマ・サンプリング・フォーマットの1以上のフレームを受信することであって、前記低解像度クロマ・サンプリング・フォーマットは、前記高解像度クロマ・サンプリング・フォーマットよりも低いクロマ解像度を有する、受信することと、
前記低解像度クロマ・サンプリング・フォーマットの前記1以上のフレームを、前記高解像度クロマ・サンプリング・フォーマットの1以上のフレームにアンパックすることであって、前記高解像度クロマ・サンプリング・フォーマットの前記1以上のフレームは、クロマ成分のサンプル値及びルマ成分のサンプル値を含み、前記アンパックすることは、前記低解像度クロマ・サンプリング・フォーマットの前記1以上のフレームのうちの1つのフレームのルマ成分のサンプル値を、前記高解像度クロマ・サンプリング・フォーマットの前記1以上のフレームの前記クロマ成分の前記サンプル値の一部に割り当てることを含む、アンパックすることと、
を含む、コンピューティング・デバイス。
前記低解像度クロマ・サンプリング・フォーマットの前記1以上のフレームの第1部分は、前記高解像度クロマ・サンプリング・フォーマットの前記1以上のフレームの低クロマ解像度バージョンを表し、前記低解像度クロマ・サンプリング・フォーマットの前記1以上のフレームの第2部分であって、前記低解像度クロマ・サンプリング・フォーマットの前記1以上のフレームのうちの1つのフレームの前記ルマ成分を含む前記第2部分は、前記高解像度クロマ・サンプリング・フォーマットの前記1以上のフレームからの残存するクロマ情報を表す、請求項5記載のコンピューティング・デバイス。
【発明を実施するための形態】
【0011】
カメラ、アニメーション出力、スクリーン・キャプチャ・モジュール等のビデオ・ソースは、通常、(より一般的に4:4:4フォーマットの一例である)YUV4:4:4クロマ・サンプリング・フォーマット等のフォーマットに変換されるビデオを提供する。YUVフォーマットは、おおよその輝度値を表すサンプル値を有するルマ(すなわち、Y)成分と、色差値を表すサンプル値を有する複数のクロマ(すなわち、U及びV)成分とを含む。色差値(及びYUV色空間からRGB等の別の色空間への変換オペレーションとRGB等の別の色空間からYUV色空間への変換オペレーション)の正確な定義は実装に依存する。一般に、本明細書において使用されるとき、YUVという語は、ルマ(又は、ルミナンス)成分と1以上のクロマ(又は、クロミナンス)成分とを有する任意の色空間を示す。そのような色空間として、Y’UV、YIQ、Y’IQ、及びYDbDrに加えて、YCbCr及びYCoCg等の変形がある。使用される成分信号の測定値は、非線形伝送特性関数(一般に、「ガンマ・プレ補正」として知られており、しばしばプライム記号を使用することにより示されるが、印刷上の都合のためプライム記号はしばしば省略される)を適用することにより調整され得る。あるいは、成分信号の測定値は、光振幅(light amplitude)と線形関係にある領域にあり得る。ルマ成分信号及びクロマ成分信号は、人間の視覚系の明るさ及び色の知覚に対してうまく調整され得る、あるいは、ルマ成分信号及びクロマ成分信号は、(例えば、色成分値の計算を単純にする公式が適用されるYCoCg変形例のように、)そのような測定値から少々逸脱し得る。本明細書で説明するYUVフォーマットの例は、ITU−R BT.601、ITU−R BT.709、及びITU−R BT.2020として知られている国際規格において説明されているものを含む。クロマ・サンプル・タイプの例は、H.264/AVC規格の
図E−1に示されている。4:4:4フォーマットは、YUV4:4:4フォーマットであってもよいし、RGB又はGBR等の別の色空間のためのフォーマットであってもよい。
【0012】
多くの商用利用可能なビデオ・エンコーダ及びビデオ・デコーダは、(より一般的に4:2:0フォーマットの一例である)YUV4:2:0クロマ・サンプリング・フォーマットしかサポートしていない。YUV4:2:0は、フル解像度のクロマ情報を維持する(すなわち、クロマ情報がルマ情報と同じ解像度で表される)YUV4:4:4フォーマットと比較すると、クロマ情報をサブサンプリングするフォーマットである。設計原理として、符号化/復号化のためにYUV4:2:0フォーマットを使用する決定は、カメラによりキャプチャされた自然なビデオ・コンテンツの符号化/復号化等のほとんどのユース・ケースにおいて、ビューワがYUV4:2:0フォーマットで符号化/復号化されたビデオとYUV4:4:4フォーマットで符号化/復号化されたビデオとの間の多くの視覚的な差異に通常は気付かないという理解に基づいている。したがって、1フレームにつきより少ないサンプルしか有さないYUV4:2:0フォーマットの圧縮上の利点は注目すべきものである。
【0013】
しかしながら、2つのフォーマット間の差異が、ビューワにより、より容易に認識されるいくつかのユース・ケースが存在する。例えば、コンピュータ・スクリーン・テキスト・コンテンツ(特に、ClearType技術を用いてレンダリングされるテキスト)、人工的な鋭い境界を有するアニメーション化されたビデオ・コンテンツ、又はより一般的にはビデオ・コンテンツの所定のフィーチャ(スクロールするタイトル及び鋭いグラフィックス、又はクロマ・チャネルに集中した情報を有するビデオ等)の符号化/復号化では、4:4:4フォーマットの方が、4:2:0フォーマットよりも好ましいものであり得る。4:4:4フォーマットをサポートするビデオ・コーデックの幅広いサポートの欠如(特に、ハードウェア・コーデック実装に関して)が、そのようなユース・ケースの障害である。
【0014】
詳細な説明は、高解像度クロマ・サンプリング・フォーマットのフレームを低解像度クロマ・サンプリング・フォーマットのフレームにパックする様々な手法を提供する。次いで、低解像度クロマ・サンプリング・フォーマットのフレームが、低解像度クロマ・サンプリング・フォーマットのために設計されたエンコーダを用いて符号化され得る。(低解像度クロマ・サンプリング・フォーマットのために設計されたデコーダを用いた)復号化の後、低解像度クロマ・サンプリング・フォーマットのフレームが、さらなる処理及び表示のために出力され得る。あるいは、そのような復号化の後、高解像度クロマ・サンプリング・フォーマットのフレームが、出力及び表示のために、フレーム・アンパッキングを介して元に戻され得る。多くの場合、これらの手法は、高解像度クロマ・サンプリング・フォーマットのフレームからのクロマ情報を維持することにより、従来手法の欠点を軽減するとともに、低解像度クロマ・サンプリング・フォーマットに適合する商用利用可能なコーデックを利用する。詳細には、専用ハードウェアを有する広く利用可能なコーデックは、YUV4:2:0ビデオ・フレームにパックされるYUV4:4:4ビデオ・フレームのために、より低い電力消費で、より速い符号化/復号化を提供することができる。
【0015】
説明する手法を使用して、符号化/復号化が別のクロマ・サンプリング・フォーマットを使用するときに、1つのクロマ・サンプリング・フォーマットのフレームのクロマ情報を維持することができる。本明細書で説明するいくつかの例は、YUV4:2:0フォーマットに適合するコーデックを用いた符号化/復号化のための、YUV4:4:4フォーマットのフレームのフレーム・パッキング/アンパッキングを含む。本明細書で説明する他の例は、YUV4:2:0フォーマットに適合するコーデックを用いた符号化/復号化のための、YUV4:2:2フォーマットのフレームのフレーム・パッキング/アンパッキングを含む。より一般的に、説明する手法は、他のクロマ・サンプリング・フォーマットのために使用することもできる。例えば、4:4:4、4:2:2、4:2:0、4:1:1、4:0:0等のサンプリング・レシオにおけるY’UV、YIQ、Y’IQ、YdbDr、YCbCr、YCoCg等のYUV色空間の変形に加えて、説明する手法は、クロマ・サンプリング・フォーマットとしての、4:4:4、4:2:2、4:2:0、4:1:1、4:0:0等のサンプリング・レシオにおけるRGB、GBR等の色空間のためにも使用することができる。
【0016】
例示的な実施例において、本明細書で説明するイノベーションの特定の態様は、以下のことを含むが、それらに限定されるものではない:
・1つの4:4:4フレームを2つの4:2:0フレームにパックし、4:2:0フォーマットのために設計されたビデオ・エンコーダを用いて2つの4:2:0フレームを符号化すること。
・4:2:0フォーマットのために設計されたビデオ・デコーダを用いて符号化されたフレームを復号化し、復号化された4:4:4フレームを形成するために、復号化した2つの4:2:0フレームをアンパックすること。
・2つの4:2:0フレームの各々のY成分、U成分、及びV成分間の幾何学的対応(geometric correspondence)が維持されるように、YUVフォーマットのためのパッキングを実行すること。
・2つの4:2:0フレームのうちの1つ(メイン・ビュー)が、より低い解像度のクロマ成分を有するにもかかわらず、4:4:4フレームにより表される完全なシーンを表すとともに、他の4:2:0フレーム(補助ビュー)が、残存するクロマ情報をパックするように、YUVフォーマットのためのパッキングを実行すること。
・付加拡張情報(「SEI」)メッセージを処理するデコーダが、4:4:4フレーム又はシーンを表す4:2:0フレームを出力することができるように、あるタイプのSEIメッセージ又は他のメタデータにより、2つの4:2:0フレームの使用のインジケーションをシグナリングすること。
・(2つの4:2:0フレームからの)1つの4:2:0フレームのみが最終的な表示のために使用されるときのYUVフォーマットの最終的に表示されるフレームの品質を向上させることができる前処理オペレーション及び後処理オペレーション。そのような前処理オペレーション及び後処理オペレーションと組み合わせると、前処理オペレーション及び後処理オペレーションにおいてクロマ情報の損失を避けるために、2つの4:2:0フレームは、符号化/復号化のためのより高いビット深度を有することができる。
・1つの4:2:2フレームを(2以下の)4:2:0フレームにパックし、4:2:0フォーマットのために設計されたビデオ・エンコーダを用いて4:2:0フレームを符号化すること。
・4:2:0フォーマットのために設計されたビデオ・デコーダを用いて符号化されたフレームを復号化し、復号化された4:2:2フレームを形成するために、復号化した4:2:0フレームをアンパックすること。
【0017】
フレーム・パッキング構成SEIメッセージ(frame packing arrangement SEI message)を使用する特定の例示的な実施例において、フレーム・パッキング構成SEIメッセージの定義は、名目上4:2:0ビットストリームにおいて4:4:4コンテンツを表現することをサポートするよう拡張される。いくつかの例において、(例えば、トップ・ボトム・パッキング方式又は交互フレーム符号化方式における)1つの構成フレームは、通常の4:2:0画像として、互換性を有して復号化され得る、あるいは、完全な4:4:4画像表現を形成するために、別の構成フレームからのデータを用いて補足され得る。YUV4:2:0は、製品において最も広くサポートされているフォーマット(特にハードウェア・コーデック実装に関して)であるので、そのようなデコーダを介してYUV4:4:4コンテンツを伝達する効果的な方法を有することは、(特にスクリーン・コンテンツ符号化のための)YUV4:4:4機能の近々の幅広い展開を可能にするという相当の利点を提供し得る。例示的な実施例において、1つの4:4:4フレームのサンプルは、2つの4:2:0フレームにパックされ、2つの4:2:0フレームは、フレーム・パッキング構成の構成フレームとして符号化される。フレーム・パッキング構成SEIメッセージを使用する実装では、content_interpretation_typeシンタックス要素のセマンティックスが、この使用をシグナリングするよう拡張される。content_interpretation_typeシンタックス要素は、パッキング構成を用いてパックされるデータをどのように解釈するかをシグナリングし、パッキング構成のフレーム構成が、異なるシンタックス要素を用いてシグナリングされる。本明細書で説明するいくつかの手法は、スクリーン・コンテンツを含むアプリケーションのための高度に実用的な値を有する。また、ネイティブ4:4:4符号化と比較すると、本明細書で説明するいくつかの手法は、復号化製品においてより広くサポートされることが期待される通常の4:2:0復号化プロセスとの互換性という利点を提供し得る。
【0018】
高解像度クロマ・サンプリング・フォーマットのためのフレーム・パッキング及びフレーム・アンパッキングのさらなる革新的な態様も説明される。説明する技術は、ビデオ符号化/復号化以外の静止画像符号化、医用スキャン・コンテンツ符号化、マルチスペクトル画像コンテンツ符号化等のさらなるアプリケーションに適用されてもよい。本明細書で説明するオペレーションは、エンコーダ(例えば、ビデオ・エンコーダ)又はデコーダ(例えば、ビデオ・デコーダ)により実行されるものとして所々で説明されるが、多くの場合、このようなオペレーションは、代替的に、別のタイプのメディア処理ツールにより実行することができる。
【0019】
本明細書で説明するイノベーションのいくつかは、HEVC規格に固有のシンタックス要素及びオペレーションを参照して示される。例えば、HEVC規格のドラフト・バージョンJCTVC−I1003(2012年4月にジュネーブで開催された第9回会合の”High efficiency video coding (HEVC) text specification draft 7”, JCTVC-I1003_d5)を参照する。本明細書で説明するイノベーションはまた、他の規格又はフォーマットのためにも実装することができる。例えば、本明細書で説明するイノベーションは、フレーム・パッキング構成SEIメッセージを用いるH.264/AVC規格のためにも実装することができる。
【0020】
より一般的に、本明細書で説明する例に対する様々な代替例が可能である。例えば、本明細書で説明する方法のいずれも、説明する方法動作の順番を変えることにより、所定の方法動作を分けることにより、所定の方法動作を繰り返すことにより、又は所定の方法動作を省略することにより、変更することができる。開示する技術の様々な態様が、組み合わせることにより、又は別々に使用され得る。様々な実施形態が、説明するイノベーションのうちの1以上を使用する。本明細書で説明するイノベーションのいくつかは、背景技術において記した問題のうちの1以上に対処する。一般的に、所与の技術/ツールが、そのような問題の全てを解決するわけではない。
【0021】
I.例示的なコンピューティング・システム
図1は、説明するイノベーションのいくつかを実装することができる適切なコンピューティング・システム(100)の一般化された例を示している。コンピューティング・システム(100)は、使用又は機能の範囲に関して限定を示唆するよう意図するものではない。というのは、このイノベーションは、多様な汎用コンピューティング・システム又は専用コンピューティング・システムにおいて実施することができるからである。
【0022】
図1を参照すると、コンピューティング・システム(100)は、1以上の処理装置(110、115)及びメモリ(120、125)を含む。
図1において、この最も基本的な構成(130)は破線内に含まれる。処理装置(110、115)はコンピュータ実行可能命令を実行する。処理装置は、汎用中央処理装置(「CPU」)、特定用途向け集積回路におけるプロセッサ、又は任意の他のタイプのプロセッサとすることができる。マルチ処理システムにおいて、複数の処理装置が、処理能力を増大させるために、コンピュータ実行可能命令を実行する。例えば、
図1は、中央処理装置(110)に加えて、グラフィックス処理装置又は共処理装置(115)も示している。有体のメモリ(120、125)は、1以上の処理装置によりアクセス可能な、揮発性メモリ(例えば、レジスタ、キャッシュ、RAM)であってもよいし、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュ・メモリ等)であってもよいし、それら2つの何らかの組合せであってもよい。メモリ(120、125)は、1以上の処理装置による実行に適したコンピュータ実行可能命令の形態で、高解像度クロマ・サンプリング・フォーマットのフレーム・パッキング及び/又はフレーム・アンパッキングのための1以上のイノベーションを実装するソフトウェア(180)を記憶する。
【0023】
コンピューティング・システムは追加の特徴を有することができる。例えば、コンピューティング・システム(100)は、ストレージ(140)、1以上の入力デバイス(150)、1以上の出力デバイス(160)、及び1以上の通信コネクション(170)を含む。バス、コントローラ、又はネットワーク等の相互接続機構(図示せず)が、コンピューティング・システム(100)のコンポーネントを相互接続する。通常、オペレーティング・システム・ソフトウェア(図示せず)が、コンピューティング・システム(100)において実行される他のソフトウェアのための動作環境を提供し、コンピューティング・システム(100)のコンポーネントの動作を調整する。
【0024】
有体のストレージ(140)は、取り外し可能であっても取り外し不可能であってもよく、磁気ディスク、磁気テープ若しくは磁気カセット、CD−ROM、DVD、又は、情報を非一時的に記憶するために使用することができ、コンピューティング・システム(100)内でアクセスされ得る任意の他の媒体を含む。ストレージ(140)は、高解像度クロマ・サンプリング・フォーマットのフレーム・パッキング及び/又はフレーム・アンパッキングのための1以上のイノベーションを実装するソフトウェア(180)の命令を記憶する。
【0025】
1以上の入力デバイス(150)は、キーボード、マウス、ペン、若しくはトラックボール等のタッチ入力デバイス、音声入力デバイス、スキャニング・デバイス、又はコンピューティング・システム(100)に入力を提供する別のデバイスとすることができる。ビデオ符号化に関して、1以上の入力デバイス(150)は、カメラ、ビデオ・カード、TVチューナ・カード、若しくはアナログ形態あるいはデジタル形態でビデオ入力を受信する同様のデバイス、又はビデオ・サンプルをコンピューティング・システム(100)に読み込むCD−ROMあるいはCD−RWとすることができる。1以上の出力デバイス(160)は、ディスプレイ、プリンタ、スピーカ、CDライタ、又はコンピューティング・システム(100)からの出力を提供する別のデバイスとすることができる。
【0026】
1以上の通信コネクション(170)は、通信媒体を介した別のコンピューティング・エンティティへの通信を可能にする。通信媒体は、変調されたデータ信号により、コンピュータ実行可能命令、オーディオ入力、ビデオ入力、オーディオ出力、ビデオ出力、又は他のデータ等の情報を伝達する。変調されたデータ信号とは、信号内の情報を符号化するように設定又は変更された特性の1以上を有する信号である。例えば、通信媒体は、電気信号、光信号、RF、又は他のキャリアを使用することができるが、これらに限定されるものではない。
【0027】
イノベーションは、コンピュータ読み取り可能媒体の一般的なコンテキストにおいて説明することができる。コンピュータ読み取り可能媒体は、コンピューティング環境内でアクセスされ得る任意の利用可能な有体の媒体である。例えば、コンピューティング・システム(100)において、コンピュータ読み取り可能媒体は、メモリ(120、125)、ストレージ(140)、及びそれらの組合せを含むが、これらに限定されるものではない。
【0028】
イノベーションは、コンピュータ実行可能命令の一般的なコンテキストにおいて説明することができる。コンピュータ実行可能命令は、例えば、プログラム・モジュールに含まれ、コンピューティング・システムにおいて、ターゲット実プロセッサ又は仮想プロセッサ上で実行される。一般に、プログラム・モジュールは、特定のタスクを実行する、あるいは特定の抽象データ型を実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造等を含む。プログラム・モジュールの機能は、様々な実施形態において、必要に応じて、組み合わされてもよいし、プログラム・モジュール間で分割されてもよい。プログラム・モジュールのコンピュータ実行可能命令は、ローカル・コンピューティング・システム又は分散コンピューティング・システム内で実行され得る。
【0029】
「システム」及び「デバイス」という語は、本明細書において置き換え可能に使用される。文脈が別途明確に示さない限り、これらの語は、コンピューティング・システム又はコンピューティング・デバイスのタイプに関して、いかなる限定も示すものではない。一般に、コンピューティング・システム又はコンピューティング・デバイスは、ローカルであってもよいし、分散されてもよく、専用ハードウェア及び/又は汎用ハードウェアと、本明細書で説明する機能を実装するソフトウェアとの任意の組合せを含み得る。
【0030】
開示する方法は、開示する方法のいずれかを実行するよう構成された専用コンピューティング・ハードウェアを用いて実装することもできる。例えば、開示する方法は、開示する方法のいずれかを実行するよう特別に設計又は構成された集積回路(例えば、特定用途向け集積回路(「ASIC」)(ASICデジタル信号処理装置(「DSP」)、グラフィックス処理装置(「GPU」)、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」)等のプログラマブル・ロジック・デバイス(「PLD」)等)により実装することができる。
【0031】
プレゼンテーションの目的上、詳細な説明では、コンピューティング・システムにおけるコンピュータ・オペレーションを説明するための「決定する」及び「使用する」のような語が使用される。これらの語は、コンピュータにより実行されるオペレーションの高レベル抽象表現であって、人間により実行される動作と混同すべきではない。これらの語に対応する実際のコンピュータ・オペレーションは、実装に応じて変化する。
【0032】
II.例示的なネットワーク環境
図2a及び
図2bは、ビデオ・エンコーダ(220)及びビデオ・デコーダ(270)を含む例示的なネットワーク環境(201、202)を示している。エンコーダ(220)及びデコーダ(270)は、適切な通信プロトコルを用いて、ネットワーク(250)を介して接続される。ネットワーク(250)は、インターネット又は別のコンピュータ・ネットワークを含み得る。
【0033】
図2aに示されるネットワーク環境(201)において、各リアルタイム通信(「RTC」)ツール(210)は、双方向通信のためのエンコーダ(220)及びデコーダ(270)の両方を含む。所与のエンコーダ(220)は、SMPTE 421M規格、ISO/IEC 14496−10規格(H.264/AVCとしても知られている)、H.265/HEVC規格、別の規格、又はプロプライエタリ・フォーマットに準拠する出力を生成することができ、対応するデコーダ(270)は、エンコーダ(220)から符号化データを受信することができる。双方向通信は、ビデオ会議、ビデオ通話、又は他の2パーティの通信シナリオの一部であり得る。
図2aのネットワーク環境(201)は、2つのリアルタイム通信ツール(210)を含むが、ネットワーク環境(201)は、マルチパーティ通信に参加する3以上のリアルタイム通信ツール(210)を含んでもよい。
【0034】
リアルタイム通信ツール(210)は、エンコーダ(220)による符号化を管理する。
図4は、リアルタイム通信ツール(210)に含まれ得る例示的なエンコーダ・システム(400)を示している。代替的に、リアルタイム通信ツール(210)は、別のエンコーダ・システムを使用してもよい。リアルタイム通信ツール(210)はまた、デコーダ(270)による復号化も管理する。
図5は、リアルタイム通信ツール(210)に含まれ得る例示的なデコーダ・システム(500)を示している。代替的に、リアルタイム通信ツール(210)は、別のデコーダ・システムを使用してもよい。
【0035】
図2bに示されるネットワーク環境(202)において、符号化ツール(212)は、デコーダ(270)を含む複数の再生ツール(214)に伝送するためのビデオを符号化するエンコーダ(220)を含む。一方向通信は、ビデオが符号化されて1つのロケーションから1以上の他のロケーションに送信される、ビデオ監視システム、ウェブ・カメラ・モニタリング・システム、リモート・デスクトップ会議プレゼンテーション、又は他のシナリオのために提供され得る。
図2bのネットワーク環境(202)は、2つの再生ツール(214)を含むが、ネットワーク環境(202)は、それより多い又はそれより少ない再生ツール(214)を含んでもよい。一般に、再生ツール(214)は、再生ツール(214)が受信するビデオのストリームを判定するために、符号化ツール(212)と通信する。再生ツール(214)は、ストリームを受信し、適切な期間の間受信した符号化データをバッファし、復号化及び再生を開始する。
【0036】
図4は、符号化ツール(212)に含まれ得る例示的なエンコーダ・システム(400)を示している。代替的に、符号化ツール(212)は、別のエンコーダ・システムを使用してもよい。符号化ツール(212)はまた、1以上の再生ツール(214)との接続を管理するためのサーバ・サイド・コントローラ・ロジックも含み得る。
図5は、再生ツール(214)に含まれ得る例示的なデコーダ・システム(500)を示している。代替的に、再生ツール(214)は、別のデコーダ・システムを使用してもよい。再生ツール(214)はまた、符号化ツール(212)との接続を管理するためのクライアント・サイド・コントローラ・ロジックも含み得る。
【0037】
III.例示的なフレーム・パッキング/アンパッキング・システム
図3は、いくつかの説明する実施形態を協働して実装することができる一般化されたフレーム・パッキング/アンパッキング・システム(300)のブロック図である。
【0038】
システム(300)は、4:4:4フォーマット等の高解像度クロマ・サンプリング・フォーマットのソース・フレーム(311)を生成するビデオ・ソース(310)を含む。ビデオ・ソース(310)は、カメラ、チューナ・カード、記憶媒体、又は他のデジタル・ビデオ・ソースとすることができる。
【0039】
フレーム・パッカ(315)は、4:2:0フォーマット等の低解像度クロマ・サンプリング・フォーマットのソース・フレーム(316)を生成するために、高解像度クロマ・サンプリング・フォーマットのフレーム(311)を再構成する。フレーム・パッキングの例示的な手法については以下で説明する。フレーム・パッカ(315)は、復号化後のフレーム・アンパッカ(385)による使用のために、フレーム・パッキングが実行されたかどうか、及びフレーム・パッキングがどのように実行されたかを示すメタデータ(317)をシグナリングすることができる。フレーム・パッキング構成メタデータのシグナリングの例示的な手法については以下で説明する。
【0040】
エンコーダ(340)は、低解像度クロマ・サンプリング・フォーマットのフレーム(316)を符号化する。例示的なエンコーダについては
図4及び
図6を参照して以下で説明する。エンコーダ(340)は、チャネル(350)を介して符号化データ(341)を出力する。チャネル(350)は、ストレージ、通信コネクション、又は出力のための別のチャネルを表す。
【0041】
デコーダ(360)は、符号化データ(341)を受信し、低解像度クロマ・サンプリング・フォーマットのフレーム(316)を復号化する。例示的なデコーダについては
図5及び
図7を参照して以下で説明する。デコーダは、低解像度クロマ・サンプリング・フォーマットの再構築フレーム(381)を出力する。
【0042】
フレーム・アンパッカ(385)は、高解像度クロマ・サンプリング・フォーマットのフレーム(386)を再構築するために、任意的に、低解像度クロマ・サンプリング・フォーマットの再構築フレーム(381)を再構成する。フレーム・アンパッキングの例示的な手法については以下で説明する。フレーム・アンパッカ(385)は、フレーム・パッキングが実行されたかどうか、及びフレーム・パッキングがどのように実行されたかを示すメタデータ(317)を受信することができ、そのようなメタデータ(317)を使用して、アンパッキング・オペレーションをガイドすることができる。フレーム・アンパッカ(385)は、高解像度クロマ・サンプリング・フォーマットの再構築フレームを出力先(390)に出力する。
【0043】
IV.例示的なエンコーダ・システム
図4は、いくつかの説明する実施形態を協働して実装することができる例示的なエンコーダ・システム(400)のブロック図である。エンコーダ・システム(400)は、リアルタイム通信のための低レイテンシ符号化モード、トランスコーディング・モード、及びファイル又はストリームからのメディア再生のための通常の符号化モード等の複数の符号化モードのうちいずれかで動作することができる汎用符号化ツールであってもよいし、そのような1つの符号化モードのために適合された専用符号化ツールであってもよい。エンコーダ・システム(400)は、オペレーティング・システム・モジュールとして、アプリケーション・ライブラリの一部として、又はスタンドアロン・アプリケーションとして、実装することができる。概して、エンコーダ・システム(400)は、ビデオ・ソース(410)から、(4:4:4フォーマット等の高解像度クロマ・サンプリング・フォーマットの)一連のソース・ビデオ・フレーム(411)を受信し、4:2:0フォーマット等の低解像度クロマ・サンプリング・フォーマットへのフレーム・パッキングを実行し、低解像度クロマ・サンプリング・フォーマットのフレームを符号化し、チャネル(490)への出力として符号化データを生成する。
【0044】
ビデオ・ソース(410)は、カメラ、チューナ・カード、記憶媒体、又は他のデジタル・ビデオ・ソースとすることができる。ビデオ・ソース(410)は、例えば、毎秒30フレームといったフレーム・レートで一連のビデオ・フレームを生成する。本明細書で使用されるとき、「フレーム」という語は、一般に、ソースの符号化された又は再構築された画像データを指す。プログレッシブ・スキャン・ビデオでは、フレームはプログレッシブ・スキャン・ビデオ・フレームである。インタレース・ビデオでは、例示的な実施形態において、インタレース・ビデオ・フレームは、符号化の前にインタレース効果が除かれる(de-interlaced)。代替的に、2つの相補的インタレース・ビデオ・フィールドが、インタレース・ビデオ・フレーム又は別々のフィールドとして符号化されてもよい。プログレッシブ・スキャン・ビデオ・フレームを示すかは別にして、「フレーム」という語は、単一の対でないビデオ・フィールド、相補的な一対のビデオ・フィールド、所与の時間におけるビデオ・オブジェクトを表すビデオ・オブジェクト・プレーン、又はより大きなイメージにおける関心領域を示し得る。ビデオ・オブジェクト・プレーン又は領域は、シーンの複数のオブジェクト又は領域を含むより大きなイメージの一部であり得る。キャプチャ・フォーマット(例えば、RGBフォーマット)からの色空間変換後に、ソース・フレーム(411)は、4:4:4フォーマット等の高解像度クロマ・サンプリング・フォーマットになる。
【0045】
フレーム・パッカ(415)は、4:2:0フォーマット等の低解像度クロマ・サンプリング・フォーマットのソース・フレーム(416)を生成するために、高解像度クロマ・サンプリング・フォーマットのフレーム(411)を再構成する。フレーム・パッキングの例示的な手法については以下で説明する。フレーム・パッカ(415)は、復号化後のフレーム・アンパッカによる使用のために、フレーム・パッキングが実行されたかどうか、及びフレーム・パッキングがどのように実行されたかを示すメタデータ(図示せず)をシグナリングすることができる。フレーム・パッキング構成メタデータのシグナリングの例示的な手法については以下で説明する。フレーム・パッカ(415)は、例えば、以下で説明するように、前処理オペレーションを実行することができる。
【0046】
到着ソース・フレーム(416)は、複数のフレーム・バッファ記憶領域(421、422、...、42n)を含むソース・フレーム一時メモリ記憶領域(420)に記憶される。フレーム・バッファ(421、422等)は、ソース・フレーム記憶領域(420)内で1つのソース・フレームを保持する。ソース・フレーム(416)のうちの1以上がフレーム・バッファ(421、422等)に記憶された後、フレーム・セレクタ(430)が、ソース・フレーム記憶領域(420)から個々のソース・フレームを定期的に選択する。エンコーダ(440)への入力のためにフレーム・セレクタ(430)によりフレームが選択される順番は、ビデオ・ソース(410)によりフレームが生成される順番とは異なり得る。例えば、一時的に後方予測を容易にするために、選択されるフレームが前の順番になる場合がある。
【0047】
フレーム・パッカ(415)及びフレーム記憶領域(420)の順番は逆になってもよい。エンコーダ(440)の前に、エンコーダ・システム(400)は、符号化の前に選択されたフレーム(431)の前処理(例えば、フィルタリング)を実行する別のプリ・プロセッサ(図示せず)を含み得る。
【0048】
エンコーダ(440)は、符号化フレーム(441)を生成するために、(低解像度クロマ・サンプリング・フォーマットの)選択されたフレーム(431)を符号化するとともに、メモリ管理制御操作(「MMCO」)信号(442)又は参照ピクチャ・セット(「RPS」)情報を生成する。現フレームが、符号化された最初のフレームではない場合、符号化プロセスを実行するとき、エンコーダ(440)は、復号化フレーム一時メモリ記憶領域(460)に記憶された1以上の以前に符号化/復号化されたフレーム(469)を使用することができる。そのような記憶された復号化フレーム(469)は、現ソース・フレーム(431)のコンテンツのフレーム間予測のための参照フレームとして使用される。一般に、エンコーダ(440)は、動き推定及び動き補償、周波数変換、量子化、並びにエントロピ符号化等の符号化タスクを実行する複数の符号化モジュールを含む。エンコーダ(440)により実行される正確なオペレーションは、圧縮フォーマットに応じて変わり得る。出力される符号化データのフォーマットは、Windows(登録商標) Media Videoフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、又はMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、HEVCフォーマット、又は他のフォーマットであり得る。一般に、エンコーダ(440)は、低解像度クロマ・サンプリング・フォーマットのフレームを符号化するのに適合されている。
【0049】
例えば、エンコーダ(440)において、インター符号化された予測フレームが、参照フレームからの予測の観点で表される。動き推定部が、1以上の参照フレーム(469)に関して、ソース・フレーム(441)のサンプルのセットの動きを推定する。サンプルのセットは、(例えば、H.264規格における)マクロブロック、サブマクロブロック、又はサブマクロブロック・パーティションであってもよいし、(例えば、HEVC規格における)符号化ツリー・ユニット又は予測ユニットであってもよい。一般に、本明細書で使用されるとき、「ブロック」という語は、サンプルのセットを示し、これは、単一の2次元(「2D」)アレイであってもよいし、複数の2Dアレイ(例えば、1つのアレイはルマ成分のためのものであり、2つのアレイはクロマ成分のためのものである)であってもよい。複数の参照フレームが使用される場合、複数の参照フレームは、異なる時間的方向からのものであってもよいし、同じ時間的方向からのものであってもよい。動き推定部は、エントロピ符号化される動きベクトル情報等の動き情報を出力する。動き補償部は、動き補償予測値を決定するために、動きベクトルを参照フレームに適用する。エンコーダは、ブロックの動き補償予測値と対応するオリジナルの値との間の差(あれば)を決定する。このような予測残差値(すなわち、残差、残余値)が、周波数変換、量子化、及びエントロピ符号化を用いて、さらに符号化される。同様に、イントラ予測では、エンコーダ(440)は、ブロックに関するイントラ予測値を決定し、予測残差値を決定し、予測残差値を符号化することができる。エンコーダ(440)のエントロピ符号化部が、量子化された変換係数値に加えて、所定のサイド情報(例えば、動きベクトル情報、QP値、モード決定、パラメータ選択)も圧縮する。一般的なエントロピ符号化技術は、指数ゴロム符号化、算術符号化、差分符号化、ハフマン符号化、ラン・レングス符号化、「V2V(variable-length-to-variable-length)」符号化、「V2F(variable-length-to-fixed-length)」符号化、LZ符号化、辞書符号化、「PIPE(probability interval partitioning entropy)」符号化、及びこれらの組合せを含む。エントロピ符号化部は、様々な種類の情報のための様々な符号化技術を使用することができ、特定の符号化技術における複数の符号テーブルの中から選択することができる。
【0050】
符号化フレーム(441)及びMMCO/RPS情報(442)が、復号化プロセス・エミュレータ(450)により処理される。復号化プロセス・エミュレータ(450)は、例えば、動き推定及び動き補償においてエンコーダ(440)により使用される参照フレームを再構築する復号化タスク等のデコーダの機能の一部を実装している。復号化プロセス・エミュレータ(450)は、所与の符号化フレーム(441)が、符号化される後続フレームのフレーム間予測において参照フレームとして使用するために記憶される必要があるかどうかを判定するために、MMCO/RPS情報(442)を使用する。MMCO/RPS情報(442)により、符号化フレーム(441)が記憶される必要があると示される場合、復号化プロセス・エミュレータ(450)は、符号化フレーム(441)を受信して対応する復号化フレーム(451)を生成するデコーダにより行われるであろう復号化プロセスを模擬する。そうする場合、エンコーダ(440)が、復号化フレーム記憶領域(460)に記憶された1以上の復号化フレーム(469)を使用したとき、復号化プロセス・エミュレータ(450)は、復号化プロセスの一部として、記憶領域(460)から1以上の復号化フレーム(469)を使用する。
【0051】
復号化フレーム一時メモリ記憶領域(460)は、複数のフレーム・バッファ記憶領域(461、462、...、46n)を含む。復号化プロセス・エミュレータ(450)は、参照フレームとして使用するためにエンコーダ(440)によりもはや必要とされなくなったフレームを有する任意のフレーム・バッファ(461、462等)を識別するために、MMCO/RPS情報(442)を使用して、記憶領域(460)のコンテンツを管理する。復号化プロセスを模擬した後、復号化プロセス・エミュレータ(450)は、このように識別されるフレーム・バッファ(461、462等)に、新たに復号化されたフレーム(451)を記憶する。
【0052】
符号化フレーム(441)及びMMCO/RPS情報(442)はまた、一時符号化データ領域(470)にバッファされる。符号化データ領域(470)に収集される符号化データは、(例えば、(フレーム・パッキング構成SEIメッセージ等の)1以上のSEIメッセージ又はビデオ・ユーザビリティ情報(「VUI」)メッセージにおける1以上のパラメータとして、)符号化ビデオ・データに関連するメディア・メタデータを含み得る。
【0053】
一時符号化データ領域(470)からの収集されたデータ(471)は、チャネル・エンコーダ(480)により処理される。チャネル・エンコーダ(480)は、(例えば、ISO/IEC 14496−12等のメディア・コンテナ・フォーマットに従って)メディア・ストリームとして伝送するために、収集されたデータをパケット化することができる。そのような場合、チャネル・エンコーダ(480)は、メディア伝送ストリームのシンタックスの一部として、シンタックス要素を付加することができる。あるいは、チャネル・エンコーダ(480)は、(例えば、ISO/IEC 14496−12等のメディア・コンテナ・フォーマットに従って)ファイルとして記憶するために、収集されたデータを編成することができる。そのような場合、チャネル・エンコーダ(480)は、メディア記憶ファイルのシンタックスの一部として、シンタックス要素を付加することができる。あるいは、より一般的に、チャネル・エンコーダ(480)は、1以上のメディア・システム多重化プロトコル又は伝送プロトコルを実装することができる。そのような場合、チャネル・エンコーダ(480)は、1以上のプロトコルのシンタックスの一部として、シンタックス要素を付加することができる。メディア伝送ストリーム、メディア記憶ストリーム、多重化プロトコル又は伝送プロトコルのそのようなシンタックス要素は、フレーム・パッキング構成メタデータを含み得る。チャネル・エンコーダ(480)は、チャネル(490)への出力を提供する。チャネル(490)は、ストレージ、通信コネクション、又は出力のための別のチャネルを表す。
【0054】
V.例示的なデコーダ・システム
図5は、いくつかの説明する実施形態を協働して実装することができる例示的なデコーダ・システム(500)のブロック図である。デコーダ・システム(500)は、リアルタイム通信のための低レイテンシ復号化モード及びファイル又はストリームからのメディア再生のための通常の復号化モード等の複数の復号化モードのうちいずれかで動作することができる汎用復号化ツールであってもよいし、そのような1つの符号化モードのために適合された専用復号化ツールであってもよい。デコーダ・システム(500)は、オペレーティング・システム・モジュールとして、アプリケーション・ライブラリの一部として、又はスタンドアロン・アプリケーションとして、実装することができる。概して、デコーダ・システム(500)は、チャネル(510)から符号化データを受信し、4:2:0フォーマット等の低解像度クロマ・サンプリング・フォーマットのフレームを復号化し、低解像度クロマ・サンプリング・フォーマットから4:4:4フォーマット等の高解像度クロマ・サンプリング・フォーマットへのフレーム・アンパッキングを任意的に実行し、出力先(590)への出力として(高解像度クロマ・サンプリング・フォーマットの)再構築フレームを生成する。
【0055】
デコーダ・システム(500)は、ストレージ、通信コネクション、又は入力としての符号化データのための別のチャネルを表し得るチャネル(510)を含む。チャネル(510)は、チャネル符号化された符号化データを生成する。チャネル・デコーダ(520)は、符号化データを処理することができる。例えば、チャネル・デコーダ(520)は、(例えば、ISO/IEC 14496−12等のメディア・コンテナ・フォーマットに従って)メディア・ストリームとして伝送するために収集されたデータを脱パケット化する。そのような場合、チャネル・デコーダ(520)は、メディア伝送ストリームのシンタックスの一部として付加されたシンタックス要素を解析することができる。あるいは、チャネル・デコーダ(520)は、(例えば、ISO/IEC 14496−12等のメディア・コンテナ・フォーマットに従って)ファイルとして記憶するために収集された符号化ビデオ・データを分離する。そのような場合、チャネル・デコーダ(520)は、メディア記憶ファイルのシンタックスの一部として付加されたシンタックス要素を解析することができる。あるいは、より一般的に、チャネル・デコーダ(520)は、1以上のメディア・システム逆多重化プロトコル又は伝送プロトコルを実装することができる。そのような場合、チャネル・デコーダ(520)は、1以上のプロトコルのシンタックスの一部として付加されたシンタックス要素を解析することができる。メディア伝送ストリーム、メディア記憶ストリーム、多重化プロトコル又は伝送プロトコルのそのようなシンタックス要素は、フレーム・パッキング構成メタデータを含み得る。
【0056】
十分な量のデータが受信されるまで、チャネル・デコーダ(520)から出力される符号化データ(521)は、一時符号化データ領域(530)に記憶される。符号化データ(521)は、(低解像度クロマ・サンプリング・フォーマットの)符号化フレーム(531)及びMMCO/RPS情報(532)を含む。符号化データ領域(530)内の符号化データ(521)は、(例えば、フレーム・パッキング構成SEIメッセージ等の1以上のSEIメッセージ又はVUIメッセージにおける1以上のパラメータとして、)符号化ビデオ・データに関連するメディア・メタデータを含み得る。一般に、そのような符号化データ(521)がデコーダ(550)により使用されるまで、符号化データ領域(530)は、符号化データ(521)を一時的に記憶する。その時点で、符号化フレーム(531)及びMMCO/RPS情報(532)の符号化データが、符号化データ領域(530)からデコーダ(550)に伝送される。復号化が進むにつれ、新たな符号化データが、符号化データ領域(530)に追加され、符号化データ領域(530)に残っている最も古い符号化データが、デコーダ(550)に伝送される。
【0057】
デコーダ(550)は、低解像度クロマ・サンプリング・フォーマットの対応する復号化フレーム(551)を生成するために、符号化フレーム(531)を定期的に復号化する。必要に応じて、復号化プロセスを実行するとき、デコーダ(550)は、フレーム間予測のための参照フレームとして、1以上の以前に復号化されたフレーム(569)を使用することができる。デコーダ(550)は、復号化フレーム一時メモリ記憶領域(560)から、そのような以前に復号化されたフレーム(569)を読み出す。一般に、デコーダ(550)は、エントロピ復号化、逆量子化、逆周波数変換、及び動き補償等の復号化タスクを実行する複数の復号化モジュールを含む。デコーダ(550)により実行される正確なオペレーションは、圧縮フォーマットに応じて変わり得る。一般に、デコーダ(550)は、低解像度クロマ・サンプリング・フォーマットのフレームを復号化するのに適合されている。
【0058】
例えば、デコーダ(550)は、圧縮フレーム又は一連のフレームの符号化データを受信し、低解像度クロマ・サンプリング・フォーマットの復号化フレーム(551)を含む出力を生成する。デコーダ(550)において、バッファは、圧縮フレームの符号化データを受け入れ、受け入れた符号化データをエントロピ復号化部に利用可能にする。エントロピ復号化部は、通常はエンコーダにおいて実行されたエントロピ符号化の逆を適用することにより、エントロピ符号化された量子化データに加えて、エントロピ符号化されたサイド情報もエントロピ復号化する。動き補償部は、再構築されているフレームのブロック(例えば、マクロブロック、サブマクロブロック、サブマクロブロック・パーティション、符号化ツリー・ユニット、予測ユニット、又はそれらの一部分)の動き補償予測を形成するために、動き情報を1以上の参照フレームに適用する。イントラ予測モジュールは、隣接する以前に再構築されたサンプル値から、現ブロックのサンプル値を空間的に予測することができる。デコーダ(550)はまた、予測残差を再構築する。逆量子化部は、エントロピ復号化されたデータを逆量子化する。逆周波数変換部は、量子化された周波数領域データを空間領域情報に変換する。予測フレームに関して、デコーダ(550)は、再構築フレームを形成するために、再構築された予測残差を動き補償予測と結合する。デコーダ(550)は、同様に、予測残差を、イントラ予測からの空間予測と結合することができる。ビデオ・デコーダ(550)における動き補償ループは、適応デブロッキング・フィルタを含み、適応デブロッキング・フィルタは、復号化フレーム(551)内のブロック境界ロー及び/又はカラムにわたる不連続さを平滑化する。
【0059】
復号化フレーム一時メモリ記憶領域(560)は、複数のフレーム・バッファ記憶領域(561、562、...、56n)を含む。復号化フレーム記憶領域(560)はDPBの一例である。デコーダ(550)は、低解像度クロマ・サンプリング・フォーマットの復号化フレーム(551)を記憶することができるフレーム・バッファ(561、562等)を識別するために、MMCO/RPS情報(532)を使用する。デコーダ(550)は、そのフレーム・バッファに復号化フレーム(551)を記憶する。
【0060】
出力シーケンサ(580)は、出力順で生成される次のフレームが復号化フレーム記憶領域(560)内で利用可能になるときを識別するために、MMCO/RPS情報(532)を使用する。出力順で生成される低解像度クロマ・サンプリング・フォーマットの次のフレーム(581)が、復号化フレーム記憶領域(560)内で利用可能になったとき、そのフレームが、出力シーケンサ(580)により読み出され、(a)低解像度クロマ・サンプリング・フォーマットのフレームの表示のための出力先(590)(例えば、ディスプレイ)、又は(b)フレーム・アンパッカ(585)のいずれかに出力される。一般に、復号化フレーム記憶領域(560)から出力シーケンサ(580)によりフレームが出力される順番は、デコーダ(550)によりフレームが復号化される順番とは異なり得る。
【0061】
フレーム・アンパッカ(585)は、4:4:4フォーマット等の高解像度クロマ・サンプリング・フォーマットの出力フレーム(586)を生成するために、低解像度クロマ・サンプリング・フォーマットのフレーム(581)を再構成する。フレーム・アンパッキングの例示的な手法については以下で説明する。フレーム・アンパッカ(585)は、フレーム・パッキングが実行されたかどうか、及びフレーム・パッキングがどのように実行されたかを示すメタデータ(図示せず)を使用して、フレーム・アンパッキング・オペレーションをガイドすることができる。フレーム・アンパッカ(585)は、例えば、以下で説明するように、後処理オペレーションを実行することができる。
【0062】
VI.例示的なビデオ・エンコーダ
図6は、いくつかの説明する実施形態を協働して実装することができる一般化されたビデオ・エンコーダ(600)のブロック図である。エンコーダ(600)は、現フレーム(605)を含む、4:2:0フォーマット等の低解像度クロマ・サンプリング・フォーマットの一連のビデオ・フレームを受信し、出力として符号化データ(695)を生成する。
【0063】
エンコーダ(600)は、ブロックベースであり、実装に依存するマクロブロック・フォーマットを使用する。ブロックは、例えば、周波数変換段階及びエントロピ符号化段階において等の様々な段階において、さらに分割され得る。例えば、フレームは、16×16マクロブロックに分割され得、今度は、そのブロックが、符号化及び復号化のために、ピクセル値の8×8ブロック及びより小さなサブ・ブロックに分割され得る。
【0064】
エンコーダ・システム(600)は、予測フレーム及びイントラ符号化されたフレームを圧縮する。プレゼンテーションの目的上、
図6は、フレーム内符号化のためのエンコーダ(600)を介した「イントラ・パス」と、フレーム間符号化のための「インター・パス」とを示している。エンコーダ(600)のコンポーネントの多くが、フレーム内符号化及びフレーム間符号化の両方のために使用される。これらのコンポーネントにより実行される正確なオペレーションは、圧縮される情報のタイプに応じて変わり得る。
【0065】
現フレーム(605)が予測フレームである場合、動き推定部(610)は、1以上の参照フレームに関して、現フレーム(605)のブロック(例えば、マクロブロック、サブマクロブロック、サブマクロブロック・パーティション、符号化ツリー・ユニット、予測ユニット、又はそれらの一部分)の動きを推定する。フレーム・ストア(620)は、参照フレームとして使用するために、1以上の再構築された以前のフレーム(625)をバッファする。複数の参照フレームが使用される場合、複数の参照フレームは、異なる時間的方向からのものであってもよいし、同じ時間的方向からのものであってもよい。動き推定部(610)は、サイド情報として、差分動きベクトル情報等の動き情報(615)を出力する。
【0066】
動き補償部(630)は、動き補償された現フレーム(635)を形成するとき、再構築された動きベクトルを、1以上の再構築された参照フレーム(625)に適用する。動き補償された現フレーム(635)のブロックとオリジナルの現フレーム(605)の対応する部分との間の差(あれば)が、ブロックの予測残差(645)である。オリジナルの現フレーム(605)により近い再構築フレームを得るために、現フレームの後の再構築の間に、再構築された予測残差が、動き補償された現フレーム(635)に付加される。しかしながら、不可逆圧縮(lossy compression)では、それでも、いくつかの情報が、オリジナルの現フレーム(605)から失われる。イントラ・パスは、イントラ予測モジュール(図示せず)を含み得る。イントラ予測モジュールは、隣接する以前に再構築されたピクセル値から、現ブロックのピクセル値を空間的に予測する。
【0067】
周波数変換部(660)は、空間領域ビデオ情報を周波数領域(すなわち、スペクトル変換)データに変換する。ブロックベースのビデオ・フレームに関して、周波数変換部(660)は、離散コサイン変換とその整数近似、又は別のタイプの前方ブロック変換をピクセル値データ又は予測残差データのブロックに適用して、周波数変換係数のブロックを生成する。次いで、量子化部(670)は、変換係数を量子化する。例えば、量子化部(670)は、フレームごとに、マクロブロックごとに、又は他の単位で変わるステップ・サイズで、一様でないスカラ量子化を周波数領域データに適用する。
【0068】
後続の動き推定/動き補償のために現フレームの再構築されたバージョンが必要とされる場合、逆量子化部(676)が、量子化された周波数係数データに対して逆量子化を実行する。逆周波数変換部(666)は、逆周波数変換を実行し、再構築された予測残差又はピクセル値のブロックを生成する。予測フレームに関して、エンコーダ(600)は、再構築フレーム(605)を形成するために、再構築された予測残差(645)を動き補償予測(635)と結合する。(
図6には示されていないが、イントラ・パスにおいては、エンコーダ(600)は、予測残差を、イントラ予測からの空間予測と結合することができる。)フレーム・ストア(620)は、後続の動き補償予測において使用するために、再構築された現フレームをバッファする。
【0069】
エンコーダ(600)における動き補償ループは、フレーム・ストア(620)の前又は後に、適応ループ内デブロック・フィルタ(610)を含む。エンコーダ(600)は、フレーム内の境界にわたる不連続さを適応的に平滑化するために、ループ内フィルタリングを再構築フレームに適用する。適応ループ内デブロック・フィルタ(610)は、いくつかのタイプのコンテンツに対しては無効にされ得る。例えば、メイン・ビュー及び補助ビューを伴うフレーム・パッキング手法において、適応ループ内デブロック・フィルタ(610)は、ブラー(blurring)等のアーチファクトを生成しないようにするために、(メイン・ビューの一部ではない残存するクロマ情報を含む)補助ビューを符号化するときに無効にされ得る。
【0070】
エントロピ符号化部(680)は、量子化部(670)の出力に加えて、動き情報(615)及び所定のサイド情報(例えば、QP値)も圧縮する。エントロピ符号化部(680)は、符号化データ(695)をバッファ(690)に供給し、バッファ(690)は、符号化データを出力ビットストリームに多重化する。
【0071】
コントローラ(図示せず)は、エンコーダの様々なモジュールから入力を受信する。コントローラは、符号化中、中間結果を評価し、例えば、QP値を設定して、レート−歪み解析を実行する。コントローラは、他のモジュールと協働して、符号化中、符号化パラメータを設定及び変更する。具体的には、コントローラは、符号化中、ルマ成分及びクロマ成分の量子化を制御するために、QP値及び他の制御パラメータを変更することができる。例えば、コントローラは、所与のフレームのクロマ・コンテンツと比較して、(フレーム・パッキング手法におけるメイン・ビュー又は補助ビューであり得る、)そのフレームのルマ・コンテンツにより多くのビットを取っておくために、QP値を変更することができる。あるいは、メイン・ビュー及び補助ビューを伴うフレーム・パッキング手法において、コントローラは、(残存するクロマ情報を含む)補助ビューと比較して、(ルマ成分及びサブサンプリングされたクロマ成分を含む)メイン・ビューにより多くのビットを取っておくために、QP値を変更することができる。
【0072】
フレーム・パッキングのいくつかの手法において、高解像度クロマ・サンプリング・フォーマットのフレームからのクロマ情報が、低解像度クロマ・サンプリング・フォーマットの符号化されるフレームにパックされた後でも、エンコーダは、いくつかの方法により、クロマ成分のサンプル値間の幾何学的対応を利用することができる。幾何学的対応という語は、(1)低解像度クロマ・サンプリング・フォーマットから構築されたフレームの(名目上の)ルマ成分の位置におけるクロマ情報と、(2)低解像度クロマ・サンプリング・フォーマットのフレームのクロマ成分の対応するスケーリングされた位置におけるクロマ情報との間の関係を示す。ルマ成分の位置とクロマ成分の位置との間で、スケーリング・ファクタが適用される。例えば、4:2:0では、スケーリング・ファクタは、水平方向及び垂直方向の両方とも2であり、4:2:2では、スケーリング・ファクタは、水平方向では2であり、垂直方向では1である。
【0073】
エンコーダは、幾何学的対応を使用して、符号化されるフレームの現ブロックを符号化するときに隣接ブロックの最近の結果をまず評価することにより、動き推定、QP選択、予測モード選択、又はブロック対ブロックからの他の決定プロセスをガイドすることができる。あるいは、エンコーダは、幾何学的対応を使用して、符号化されるフレームの「ルマ」成分にパックされる高解像度クロマ情報の符号化からの結果を用いることにより、符号化されるフレームのクロマ成分にパックされる高解像度クロマ情報のそのような決定プロセスをガイドすることができる。あるいは、より直接的に、エンコーダは、幾何学的対応を使用して、圧縮性能を向上させることができる。ここで、動きベクトル、予測モード、又は符号化されるフレームの「ルマ」成分にパックされる高解像度クロマ情報の他の決定がまた、符号化されるフレームのクロマ成分にパックされる高解像度クロマ情報のために使用される。詳細には、本明細書で説明するいくつかの手法(例えば、以下の手法2)において、クロマ情報が、低解像度クロマ・サンプリング・フォーマットの補助フレームにパックされるとき、補助フレームの名目上のルマ成分と補助フレームの名目上のクロマ成分との間の空間対応及び動きベクトル変位の関係が維持される。補助フレームのY成分、U成分、及びV成分における対応する空間位置でのサンプル値は、一貫している傾向があり、これは、空間ブロック・サイズ・セグメンテーション等の目的に有用であり、非ゼロ係数値の存在/不存在を示す符号化ブロック・パターン情報又は他の情報のジョイント符号化に有用である。補助フレームのY成分、U成分、及びV成分の対応する部分の動きベクトルは、一貫している傾向があり(例えば、Yにおける2つのサンプルの垂直変位又は水平変位は、U及びVにおける1サンプルの変位に対応する)、これもまた符号化効率に役立つ。
【0074】
実装及び所望の圧縮のタイプに応じて、エンコーダのモジュールを追加してもよいし、省略してもよいし、複数のモジュールに分割してもよいし、他のモジュールと結合してもよいし、且つ/あるいは同様のモジュールと置換してもよい。代替実施形態において、異なるモジュール及び/又はモジュールの他の構成を有するエンコーダは、説明した技術のうちの1以上を実行する。エンコーダの特定の実施形態は、通常、エンコーダ(600)の変形又は補完バージョンを使用する。エンコーダ(600)内のモジュール間の示された関係は、エンコーダ内の情報の一般的な流れを示すものである。他の関係は、簡潔さのため示されていない。
【0075】
VII.例示的なビデオ・デコーダ
図7は、いくつかの説明する実施形態を協働して実装することができる一般化されたデコーダ(700)のブロック図である。デコーダ(700)は、圧縮フレーム又は一連のフレームの符号化データ(795)を受信し、4:2:0フォーマット等の低解像度クロマ・サンプリング・フォーマットの再構築フレーム(705)を含む出力を生成する。プレゼンテーションの目的上、
図7は、フレーム内復号化のためのデコーダ(700)を介した「イントラ・パス」と、フレーム間復号化のための「インター・パス」とを示している。デコーダ(700)のコンポーネントの多くが、フレーム内復号化及びフレーム間復号化の両方のために使用される。これらのコンポーネントにより実行される正確なオペレーションは、伸張される情報のタイプに応じて変わり得る。
【0076】
バッファ(790)は、圧縮フレームの符号化データ(795)を受け入れ、受け入れた符号化データを解析部/エントロピ復号化部(780)に利用可能にする。解析部/エントロピ復号化部(780)は、通常はエンコーダにおいて実行されたエントロピ符号化の逆を適用することにより、エントロピ符号化された量子化データに加えて、エントロピ符号化されたサイド情報もエントロピ復号化する。
【0077】
動き補償部(730)は、再構築されているフレーム(705)のブロック(例えば、マクロブロック、サブマクロブロック、サブマクロブロック・パーティション、符号化ツリー・ユニット、予測ユニット、又はそれらの一部分)の動き補償予測(735)を形成するために、動き情報(715)を1以上の参照フレーム(725)に適用する。フレーム・ストア(720)は、参照フレームとして使用するために、1以上の以前に再構築されたフレームを記憶する。
【0078】
イントラ・パスは、イントラ予測モジュール(図示せず)を含み得る。イントラ予測モジュールは、隣接する以前に再構築されたピクセル値から、現ブロックのピクセル値を空間的に予測する。インター・パスにおいて、デコーダ(700)は、予測残差を再構築する。逆量子化部(770)は、エントロピ復号化されたデータを逆量子化する。逆周波数変換部(760)は、量子化された周波数領域データを空間領域情報に変換する。例えば、逆周波数変換部(760)は、逆ブロック変換を周波数変換係数に適用して、ピクセル値データ又は予測残差データを生成する。逆周波数変換は、逆離散コサイン変換とその整数近似、又は別のタイプの逆周波数変換であり得る。
【0079】
予測フレームに関して、デコーダ(700)は、再構築フレーム(705)を形成するために、再構築された予測残差(745)を動き補償予測(735)と結合する。(
図7には示されていないが、イントラ・パスにおいては、デコーダ(700)は、予測残差を、イントラ予測からの空間予測と結合することができる。)デコーダ(700)における動き補償ループは、フレーム・ストア(720)の前又は後に、適応ループ内デブロック・フィルタ(710)を含む。デコーダ(700)は、フレーム内の境界にわたる不連続さを適応的に平滑化するために、ループ内フィルタリングを再構築フレームに適用する。適応ループ内デブロック・フィルタ(710)は、符号化中に無効化されたとき、いくつかのタイプのコンテンツに対して無効にされ得る。例えば、メイン・ビュー及び補助ビューを伴うフレーム・パッキング手法において、適応ループ内デブロック・フィルタ(710)は、(メイン・ビューの一部ではない残存するクロマ情報を含む)補助ビューを復号化するときに無効にされ得る。
【0080】
図7において、デコーダ(700)はまた、後処理デブロック・フィルタ(708)を含む。後処理デブロック・フィルタ(708)は、任意的に、再構築フレーム内の不連続さを平滑化する。(デリング・フィルタリング等の)他のフィルタリングも、後処理フィルタリングの一部として適用することができる。通常は、後のフレーム・アンパッキングが適用される再構築フレームは、後処理デブロック・フィルタ(708)をバイパスする。
【0081】
実装及び所望の伸張のタイプに応じて、デコーダのモジュールを追加してもよいし、省略してもよいし、複数のモジュールに分割してもよいし、他のモジュールと結合してもよいし、且つ/あるいは同様のモジュールと置換してもよい。代替実施形態において、異なるモジュール及び/又はモジュールの他の構成を有するデコーダは、説明した技術のうちの1以上を実行する。デコーダの特定の実施形態は、通常、デコーダ(700)の変形又は補完バージョンを使用する。デコーダ(700)内のモジュール間の示された関係は、デコーダ内の情報の一般的な流れを示すものである。他の関係は、簡潔さのため示されていない。
【0082】
VIII.高解像度クロマ・サンプリング・フォーマットのフレーム・パッキング/アンパッキング
このセクションは、高解像度クロマ・サンプリング・フォーマットのフレームを、低解像度クロマ・サンプリング・フォーマットのフレームにパックする様々な手法を記載している。次いで、低解像度クロマ・サンプリング・フォーマットのフレームが、低解像度クロマ・サンプリング・フォーマットのために設計されたエンコーダを用いて符号化され得る。(低解像度クロマ・サンプリング・フォーマットのために設計されたデコーダを用いた)復号化の後、低解像度クロマ・サンプリング・フォーマットのフレームが、さらなる処理及び表示のために出力され得る。あるいは、そのような復号化の後、高解像度クロマ・サンプリング・フォーマットのフレームが、出力及び表示のために、フレーム・アンパッキングを介して元に戻され得る。
【0083】
A.YUV4:4:4ビデオのためのフレーム・パッキング/アンパッキングの手法
本明細書で説明する様々な手法を使用して、1つの特定の例として、符号化/復号化が4:2:0フォーマットを使用するとき、4:4:4フォーマットのフレームのクロマ情報を維持することができる。これらの手法において、例えば、1つのYUV4:4:4フレームが、2つのYUV4:2:0フレームにパックされる。通常の4:4:4フレームは、4ピクセル位置(pixel position)ごとに12個のサンプル値を含むのに対し、4:2:0フレームは、4ピクセル位置ごとに6個のサンプル値しか含まない。したがって、1つの4:4:4フレームに含まれる全てのサンプル値が、2つの4:2:0フレームにパックされ得る。
【0084】
1.手法1
手法1において、1つのYUV4:4:4フレームは、空間分割(spatial partitioning)を用いて、2つのYUV4:2:0フレームにパックされる。
図8は、YUV4:4:4フレームの空間分割を用いるフレーム・パッキングのこの手法(800)を示している。
【0085】
Y
444プレーン、U
444プレーン、及びV
444プレーンは、YUV4:4:4フレーム(801)の3つの成分プレーンである。各プレーンは、幅W及び高さHの解像度を有する。本明細書で用いる例を説明する都合上、W及びHの両方とも4で割り切れるが、これは、本手法の限定であることを意味しない。1つのYUV4:4:4フレームを2つのYUV4:2:0フレームにパックする手法(800)は、
図8に示されるように、YUV4:4:4フレームを分割する。YUV4:4:4フレーム(801)のU
444プレーンは、空間分割を用いて、1つのボトム・ハーフH2−U
444と、2つのアッパ・クォータQ1−U
444及びQ2−U
444とに分割される。YUV4:4:4フレーム(801)のV
444プレーンは、空間分割を用いて、1つのボトム・ハーフH2−V
444と、2つのアッパ・クォータQ1−V
444及びQ2−V
444とに分割される。
【0086】
次いで、YUV4:4:4フレーム(801)の分割されたプレーンが、1以上のYUV4:2:0フレームとして再編成される。YUV4:4:4フレームのY
444プレーンは、YUV4:2:0フォーマットの第1フレーム(802)のルマ成分プレーンになる。U
444プレーンのボトム・ハーフ及びV
444プレーンのボトム・ハーフは、YUV4:2:0フォーマットの第2フレーム(803)のルマ成分プレーンになる。U
444プレーンのトップ・クォータ及びV
444プレーンのトップ・クォータは、
図8に示されるように、YUV4:2:0フォーマットの第1フレーム(802)及び第2フレーム(803)のクロマ成分プレーンになる。
【0087】
YUV4:2:0フォーマットの第1フレーム(802)及び第2フレーム(803)は、(
図8において暗いラインにより分離されている)別々のフレームとして編成され得る。あるいは、YUV4:2:0フォーマットの第1フレーム(802)及び第2フレーム(803)は、2×Hの高さを有する単一のフレームとして編成され得る(
図8における暗いラインは無視する)。あるいは、YUV4:2:0フォーマットの第1フレーム(802)及び第2フレーム(803)は、2×Wの幅を有する単一のフレームとして編成され得る。あるいは、YUV4:2:0フォーマットの第1フレーム(802)及び第2フレーム(803)は、H.264/AVC規格又はHEVC規格におけるframe_packing_arrangement_typeのために規定された方法のうちいずれかを用いて、単一のフレーム又は複数のフレームとして編成され得る。
【0088】
このタイプのフレーム・パッキングが機能しても、これは、2つのYUV4:2:0フレームの各々におけるY成分、U成分、及びV成分間の幾何学的対応をもたらさない。詳細には、YUV4:2:0フォーマットの第2フレーム(803)に関して、ルマ成分とクロマ成分との間の幾何学的対応は通常存在しない。本明細書で説明する他のパッキング手法は、一般に、はるかに良い幾何学的対応を実現する。
【0089】
代替的に、手法1は、クロマ・サンプリング・フォーマットとしての4:4:4、4:2:2、4:2:0等のサンプリング・レシオにおけるRGB、GBR等の色空間のために使用されてもよい。
【0090】
2.手法2
手法2において、YUV4:4:4フレームのクロマ情報の幾何学的対応を維持したまま、1つのYUV4:4:4フレームは、2つのYUV4:2:0フレームにパックされる。Y成分、U成分、及びV成分間の良い幾何学的対応を有するYUV4:2:0フレームが、より良く圧縮され得る。なぜならば、このYUV4:2:0フレームは、YUV4:2:0フレームを符号化するよう適合された通常のエンコーダにより期待されるモデルにフィットするからである。
【0091】
2つのYUV4:2:0フレームのうちの1つが、より低い解像度の色成分を有するにもかかわらず、YUV4:4:4フレームにより表される完全なシーンを表すように、パッキングが行われ得る。これは、復号化においてオプションを提供する。フレーム・アンパッキングを実行することができないデコーダ又はフレーム・アンパッキングを実行しないことを選択するデコーダは、シーンを表すYUV4:2:0フレームの再構築されたバージョンを単に受け取り、その再構築されたバージョンをディスプレイに直接供給するだけでよい。
【0092】
図9は、このような設計制約に矛盾しないフレーム・パッキングの1つの例示的な手法(900)を示している。この手法(900)において、1つのYUV4:4:4フレーム(801)は、2つのYUV4:2:0フレーム(902、903)にパックされる。第1フレーム(902)は、YUV4:2:0フォーマットの「メイン・ビュー」を提供し、これは、YUV4:4:4フレーム(801)により表される完全なシーンのより低いクロマ解像度のバージョンである。第2フレーム(903)は、YUV4:2:0フォーマットの「補助ビュー」を提供し、これは、残存するクロマ情報を含む。
【0093】
図9において、領域B1...領域B9は、YUV4:2:0フォーマットのそれぞれのフレーム(902、903)内の異なる領域である。YUV4:4:4フレーム(801)のU
444プレーン及びV
444プレーンの奇数行のサンプル値が、領域B4及び領域B5に割り当てられ、YUV4:4:4フレーム(801)のU
444プレーン及びV
444プレーンの偶数行のサンプル値が、領域B2、領域B3、領域B6、領域B7、領域B8、及び領域B9間に分散される。詳細には、YUV4:4:4フレーム(801)のY
444プレーン、U
444プレーン、及びV
444プレーンのサンプル値は、以下のように、領域B1...領域B9にマッピングする。
・領域B1に関して、
【数1】
である。ここで、(x,y)の範囲は、[0,W−1]×[0,H−1]である。
・領域B2に関して、
【数2】
である。ここで、(x,y)の範囲は、[0,W/2−1]×[0,H/2−1]である。
・領域B3に関して、
【数3】
である。ここで、(x,y)の範囲は、[0,W/2−1]×[0,H/2−1]である。
・領域B4に関して、
【数4】
である。ここで、(x,y)の範囲は、[0,W−1]×[0,H/2−1]である。
・領域B5に関して、
【数5】
である。ここで、(x,y)の範囲は、[0,W−1]×[0,H/2−1]である。
・領域B6に関して、
【数6】
である。ここで、(x,y)の範囲は、[0,W/2−1]×[0,H/4−1]である。
・領域B7に関して、
【数7】
である。ここで、(x,y)の範囲は、[0,W/2−1]×[0,H/4−1]である。
・領域B8に関して、
【数8】
である。ここで、(x,y)の範囲は、[0,W/2−1]×[0,H/4−1]である。
・領域B9に関して、
【数9】
である。ここで、(x,y)の範囲は、[0,W/2−1]×[0,H/4−1]である。
【0094】
代替的に、YUV4:4:4フレーム(801)のY
444プレーン、U
444プレーン、及びV
444プレーンのサンプル値は、異なる形で領域B1...領域B9に割り当てられてもよい。例えば、YUV4:4:4フレーム(801)のU
444プレーン及びV
444プレーンの偶数行のサンプル値が、領域B4及び領域B5に割り当てられ、YUV4:4:4フレーム(801)のU
444プレーン及びV
444プレーンの奇数行のサンプル値が、領域B2、領域B3、領域B6、領域B7、領域B8、及び領域B9間に分散される。あるいは、別の例として、YUV4:4:4フレームのオリジナルのUプレーンからのデータが、補助YUV4:2:0フレームのUプレーン内に構成され、YUV4:4:4フレームのオリジナルのVプレーンからのデータが、補助YUV4:2:0フレームのVプレーン内に構成されてもよい。この例において、
図9と比較すると、上記の式において領域B7に割り当てられるV
444(2x+1,4y)からのサンプル値は、代わりに、領域B8に割り当てることができ、上記の式において領域B8に割り当てられるU
444(2x+1,4y+2)からのサンプル値は、代わりに、領域B7に割り当てることができる。あるいは、U
444からの同じサンプル値が、1行おきに分けるのではなく、B6及びB7の代わりに、単一の領域にコピーされ、V
444からの同じサンプル値が、1行おきに分けるのではなく、B8及びB9の代わりに、単一の領域にコピーされてもよい。どちらにしても、補助YUV4:2:0フレームのUプレーン(又は、Vプレーン)が、異なるオリジナルのUプレーン及びVプレーンからのコンテンツを混合することなく、YUV4:4:4フレームのUプレーン(又は、Vプレーン)から構築される。(反対に、
図9の例において、補助YUV4:2:0フレームのUプレーン(又は、Vプレーン)は、YUV4:4:4フレームのU成分及びV成分からのデータの混合を有する。補助YUV4:2:0フレームのUプレーン(又は、Vプレーン)の上半分は、オリジナルのUプレーンからのデータを含み、下半分は、オリジナルのVプレーンからのデータを含む。)
【0095】
YUV4:2:0フォーマットの第1フレーム(902)及び第2フレーム(903)は、(
図9において暗いラインにより分離されている)別々のフレームとして編成され得る。あるいは、YUV4:2:0フォーマットの第1フレーム(902)及び第2フレーム(903)は、2×Hの高さを有する単一のフレームとして編成され得る(
図9における暗いラインは無視する)。あるいは、YUV4:2:0フォーマットの第1フレーム(902)及び第2フレーム(903)は、2×Wの幅を有する単一のフレームとして編成され得る。あるいは、YUV4:2:0フォーマットの第1フレーム(902)及び第2フレーム(903)は、H.264/AVC規格又はHEVC規格におけるframe_packing_arrangement_typeのために規定された方法のうちいずれかを用いて、単一のフレームとして編成され得る。
【0096】
図10は、
図9の手法(900)に従ってパックされる例示的なフレームを示している。
図10は、Y
444プレーン、U
444プレーン、及びV
444プレーンを含むYUV4:4:4フレーム(1001)を示している。
【0097】
フレーム・パッキング後、メイン・ビュー(1002)(第1YUV4:2:0フレーム)は、オリジナルのYUV4:4:4フレーム(1001)と同等のYUV4:2:0である。復号化システムは、YUV4:4:4がサポートされていない、あるいは必ずしも考慮されない場合、メイン・ビュー(1002)の再構築されたバージョンを単に表示するだけでよい。
【0098】
補助ビュー(1003)は、YUV4:4:4フレーム(1001)のクロマ情報を含む。そうであっても、補助ビュー(1003)は、YUV4:2:0フレームのコンテンツ・モデルにフィットし、通常のYUV4:2:0ビデオ・エンコーダを用いた圧縮によく適している。フレーム内において、補助ビュー(1003)は、Y成分、U成分、及びV成分にわたる幾何学的対応を示す。フレーム間で、補助ビューは、Y成分、U成分、及びV成分にわたる高い相関関係がある動きを示すことが予期される。
【0099】
図11は、設計制約に矛盾しないフレーム・パッキングの別の例示的な手法(1100)を示している。この手法(1100)において、1つのYUV4:4:4フレーム(801)は、2つのYUV4:2:0フレーム(1102、1103)にパックされる。
図9の手法(900)とほとんど同様に、
図11の手法(1100)において、第1フレーム(1102)は、YUV4:2:0フォーマットの「メイン・ビュー」を提供し、これは、YUV4:4:4フレーム(801)により表される完全なシーンのより低いクロマ解像度のバージョンである。それに対し、第2フレーム(1103)は、YUV4:2:0フォーマットの「補助ビュー」を提供し、これは、残存するクロマ情報を含む。
【0100】
図11において、領域A1...領域A9は、YUV4:2:0フォーマットのそれぞれのフレーム(1102、1103)内の異なる領域である。YUV4:4:4フレーム(801)のU
444プレーン及びV
444プレーンの奇数列のサンプル値が、領域A4及び領域A5に割り当てられ、YUV4:4:4フレーム(801)のU
444プレーン及びV
444プレーンの偶数列のサンプル値が、領域A2、領域A3、領域A6、領域A7、領域A8、及び領域A9間に分散される。詳細には、YUV4:4:4フレーム(801)のY
444プレーン、U
444プレーン、及びV
444プレーンのサンプル値は、以下のように、領域A1...領域A9にマッピングする。
・領域A1に関して、
【数10】
である。ここで、(x,y)の範囲は、[0,W−1]×[0,H−1]である。
・領域A2に関して、
【数11】
である。ここで、(x,y)の範囲は、[0,W/2−1]×[0,H/2−1]である。
・領域A3に関して、
【数12】
である。ここで、(x,y)の範囲は、[0,W/2−1]×[0,H/2−1]である。
・領域A4に関して、
【数13】
である。ここで、(x,y)の範囲は、[0,W/2−1]×[0,H−1]である。
・領域A5に関して、
【数14】
である。ここで、(x,y)の範囲は、[0,W/2−1]×[0,H−1]である。
・領域A6に関して、
【数15】
である。ここで、(x,y)の範囲は、[0,W/4−1]×[0,H/2−1]である。
・領域A7に関して、
【数16】
である。ここで、(x,y)の範囲は、[0,W/4−1]×[0,H/2−1]である。
・領域A8に関して、
【数17】
である。ここで、(x,y)の範囲は、[0,W/4−1]×[0,H/2−1]である。
・領域A9に関して、
【数18】
である。ここで、(x,y)の範囲は、[0,W/4−1]×[0,H/2−1]である。
【0101】
代替的に、YUV4:4:4フレーム(801)のY
444プレーン、U
444プレーン、及びV
444プレーンのサンプル値は、異なる形で領域A1...領域A9に割り当てられてもよい。例えば、YUV4:4:4フレーム(801)のU
444プレーン及びV
444プレーンの偶数列のサンプル値が、領域A4及び領域A5に割り当てられ、YUV4:4:4フレーム(801)のU
444プレーン及びV
444プレーンの奇数列のサンプル値が、領域A2、領域A3、領域A6、領域A7、領域A8、及び領域A9間に分散される。あるいは、別の例として、YUV4:4:4フレームのオリジナルのUプレーンからのデータが、補助YUV4:2:0フレームのUプレーン内に構成され、YUV4:4:4フレームのオリジナルのVプレーンからのデータが、補助YUV4:2:0フレームのVプレーン内に構成されてもよい。この例において、
図11と比較すると、上記の式において領域A7に割り当てられるV
444(4x,2y+1)からのサンプル値は、代わりに、領域A8に割り当てられ、上記の式において領域A8に割り当てられるU
444(4x+2,2y+1)からのサンプル値は、代わりに、領域A7に割り当てられる。あるいは、U
444からの同じサンプル値が、1列おきに分けるのではなく、A6及びA7の代わりに、単一の領域にコピーされ、V
444からの同じサンプル値が、1列おきに分けるのではなく、A8及びA9の代わりに、単一の領域にコピーされてもよい。どちらにしても、補助YUV4:2:0フレームのUプレーン(又は、Vプレーン)が、異なるオリジナルのUプレーン及びVプレーンからのコンテンツを混合することなく、YUV4:4:4フレームのUプレーン(又は、Vプレーン)から構築される。
【0102】
YUV4:2:0フォーマットの第1フレーム(1102)及び第2フレーム(1103)は、(
図11において暗いラインにより分離されている)別々のフレームとして編成され得る。あるいは、YUV4:2:0フォーマットの第1フレーム(1102)及び第2フレーム(1103)は、2×Hの高さを有する単一のフレームとして編成され得る(
図11における暗いラインは無視する)。あるいは、YUV4:2:0フォーマットの第1フレーム(1102)及び第2フレーム(1103)は、2×Wの幅を有する単一のフレームとして編成され得る。あるいは、YUV4:2:0フォーマットの第1フレーム(1102)及び第2フレーム(1103)は、H.264/AVC規格又はHEVC規格におけるframe_packing_arrangement_typeのために規定された方法のうちいずれかを用いて、単一のフレームとして編成され得る。
【0103】
フレーム・アンパッキングは、フレーム・パッキングを単にミラーするだけでよい。YUV4:2:0フォーマットのフレームの領域に割り当てられたサンプルが、YUV4:4:4フォーマットのフレームのクロマ成分におけるオリジナルの位置に再度割り当てられる。一実施例において、例えば、フレーム・アンパッキング中、YUV4:2:0フォーマットのフレームの領域B2...B9におけるサンプルが、以下の擬似コードに示されるように、YUV4:4:4フォーマットのフレームの再構築されたクロマ成分U’
444及びV’
444に割り当てられる。
【数19】
ここで、’’マークは、(おそらくは不可逆的な)符号化からの再構築を示す。
【0104】
B.フレーム・パッキング情報のシグナリングのための値のシンタックス及びセマンティックス
例示的な実施例において、フレーム・パッキング構成SEIメッセージは、2つの4:2:0フレームが、パックされた1つの4:4:4フレームを含みことをシグナリングするために使用される。フレーム・パッキング構成SEIメッセージは、H.264/AVC規格及びHEVC規格において規定されているが、そのようなフレーム・パッキング構成SEIメッセージは、異なる目的で以前にも使用されている。
【0105】
フレーム・パッキング構成SEIメッセージは、2Dビデオ・コーデックを用いる立体視3Dビデオ・フレームを送信するために設計された。そのような場合、2つの4:2:0フレームは、立体視3Dビデオ・シーンの左目用視点及び右目用視点を表す。本明細書で説明する手法では、フレーム・パッキング構成SEIメッセージの範囲は、その代わりに、その後に1つの4:4:4フレームを元に戻すためのフレーム・アンパッキングが続く、その4:4:4フレームから得られる2つの4:2:0フレームの符号化/復号化をサポートするよう拡張され得る。2つの4:2:0フレームは、メイン・ビュー及び補助ビューを表す。メイン・ビュー(フレーム)及び補助ビュー(フレーム)は両方とも、4:2:0フォーマットと同等のフォーマットである。メイン・ビュー(フレーム)は、独立して有用であり得るのに対し、補助ビュー(フレーム)は、メイン・ビューとともに適切に解釈されるときに有用である。したがって、これらの手法は、フレーム・パッキング構成SEIメッセージを使用して、4:2:0フレームを符号化/復号化することができるビデオ・コーデックを用いる4:4:4フレームの符号化/復号化を効果的にサポートすることができる。
【0106】
この目的のために、SEIメッセージは拡張される。例えば、シンタックス要素content_interpretation_typeのセマンティックスは、以下のように拡張される。関連するフレーム・パッキング手法において、YUV4:4:4フレームに関して、2つの構成YUV4:2:0フレームが存在する。それらは、メイン・ビューのための第1フレームと、補助ビューのための第2フレームである。content_interpretation_typeは、以下の表で指定される構成フレームの意図される解釈を示す。0、1、及び2の値は、H.264/AVC規格及びHEVC規格において解釈されている。content_interpretation_typeの新たな値は、構成フレームがYUV4:4:4フレームからのデータを含むものとして解釈されるべきであることを示すために規定される:
【表1】
【0107】
代替的に、シンタックス要素content_interpretation_typeの異なる値が、上記の表に示された解釈に関連付けられてもよい。あるいは、フレーム・パッキングにより高解像度クロマ・サンプリング・フォーマットの1以上のフレームから得られる低解像度クロマ・サンプリング・フォーマットのフレームの符号化/復号化をサポートするために、content_interpretation_typeの他の解釈及び/又は追加の解釈が使用されてもよい。
【0108】
さらに、単純さのために、次の制約のうちの1以上が、フレーム・パッキング構成SEIメッセージの他のシンタックス要素に課せられ得る。content_interpretation_typeが3〜6の値を有する場合(すなわち、YUV4:2:0フレームへのYUV4:4:4フレームのフレーム・パッキングを伴う場合)、シンタックス要素quincunx_sampling_flag、spatial_flipping_flag、frame0_grid_position_x、frame0_grid_position_y、frame1_grid_position_x、及びframe1_grid_position_yの値は0である。さらに、content_interpretation_typeが3又は5に等しい場合(前処理においてフィルタリングが存在しないことを示す)、chroma_loc_info_present_flagは1であり、chroma_sample_loc_type_top_field及びchroma_sample_loc_type_bottom_fieldの値は2である。
【0109】
H.264/AVC規格(及び、HEVC規格)において、シンタックス要素frame_packing_arrangement_typeは、立体視ビューの2つの構成フレームがどのように構成されるかを示す。例えば、frame_packing_arrangement_typeが3であることは、2つの構成フレームのサイド・バイ・サイド・パッキングを示し、frame_packing_arrangement_typeが4であることは、2つの構成フレームのトップ・ボトム・パッキングを示し、frame_packing_arrangement_typeが5であることは、2つの構成フレームのテンポラル・インタリービングを示す。シンタックス要素frame_packing_arrangement_typeは、高解像度クロマ・サンプリング・フォーマットのフレームのパッキングを示すcontent_interpretation_typeの値とともに、同様に使用することができる。例えば、frame_packing_arrangement_typeが3であることは、メイン・フレーム及び補助フレームのサイド・バイ・サイド・パッキングを示し得る。frame_packing_arrangement_typeが4であることは、メイン・フレーム及び補助フレームのトップ・ボトム・パッキングを示し得る。frame_packing_arrangement_typeが5であることは、メイン・フレーム及び補助フレームのテンポラル・インタリービングを示し得る。あるいは、フレーム・パッキング構成メタデータは、何らかの他の形でシグナリングされてもよい。代替的に、高解像度クロマ・サンプリング・フォーマットのフレームのパッキングを示すcontent_interpretation_typeシンタックス要素のセマンティックスを拡張する代わりに、高解像度クロマ・サンプリング・フォーマットのフレームのパッキングを示すために、frame_packing_arrangement_typeのセマンティックスが拡張されてもよい。例えば、フレーム・パッキング構成メタデータ(5より大きいframe_packing_arrangement_typeの値等)は、メイン・ビュー及び補助ビューがどのように構成されるかを示すことに加えて、フレーム・パッキング/アンパッキングが使用されるか使用されないか、フィルタリング又は他の前処理オペレーションが使用されたか使用されなかったか(したがって、対応する後処理フィルタリング又は他の後処理オペレーションが使用されるべきか使用されないべきか)、実行する後処理オペレーションのタイプ、又はフレーム・パッキング/アンパッキングに関する他の情報を示すことができる。
【0110】
これらの例において、フレーム・パッキング構成SEIメッセージは、復号化ピクチャが、フレーム・パッキング構成の構成フレームとして4:4:4フレームのメイン・ビュー及び補助ビューを含むことを、デコーダに通知する。この情報を使用して、表示又は他の目的のために、メイン・ビュー及び補助ビューを適切に処理することができる。例えば、復号化側のシステムが、4:4:4フォーマットのビデオを望み、メイン・ビュー及び補助ビューから4:4:4フレームを再構築することができる場合、このシステムは、そのようにすることができ、出力フォーマットは4:4:4になるであろう。そうでなければ、メイン・ビューのみが出力として提供され、出力フォーマットは4:2:0になるであろう。
【0111】
C.前処理オペレーション及び後処理オペレーション
高解像度クロマ・サンプリング・フォーマットのフレームのクロマ・サンプル値の単純なサブサンプリングは、ダウンサンプリングされたクロマ・サンプル値においてエイリアシング・アーチファクトを生成させ得る。エイリアシングを軽減するために、フレーム・パッキングは、クロマ・サンプル値をフィルタリングするための前処理オペレーションを含み得る。そのようなフィルタリングは、アンチエイリアス・フィルタリングと呼ばれ得る。対応するフレーム・アンパッキングは、クロマ・サンプル値の前処理フィルタリングを補償するための後処理オペレーションを含み得る。例えば、上記の表を参照すると、content_interpretation_typeが4又は6である場合、前処理オペレーションを使用して、フレーム・パッキング中、クロマ・サンプル値をフィルタリングすることができ、フレーム・アンパッキングは、対応する後処理オペレーションを含み得る。
【0112】
フレーム・パッキング/アンパッキングに適合される前処理及び後処理の様々な理由が存在する。
【0113】
例えば、前処理は、メイン・ビューを表すYUV4:2:0フレームのみが表示のために使用されるときの品質を向上させるのに役立ち得る。これは、デコーダが、クロマ情報の単純なサブサンプリングにより生じるエイリアシング・アーチファクトのリスクを冒すことなく、補助ビューを表すYUV4:2:0フレームを無視することを許容し得る。前処理がないと、(メイン・ビューを表すYUV4:2:0フレームのクロマ信号が、YUV4:4:4フレームからのクロマ信号の直接的なサブサンプリングにより得られる場合、)出力を生成するためにメイン・ビューのみが使用されるときには、エイリアシング・アーチファクトが、例えば、ClearTypeテキスト・コンテンツといった何らかのコンテンツ上で見られ得る。
【0114】
別の例として、前処理及び後処理は、YUV4:4:4領域における圧縮されたクロマ信号の一貫性及び平滑さを維持/強化するのに役立ち得る。フレーム・パッキングを使用して、1つのYUV4:4:4フレームを2つのYUV4:2:0フレームにパックするとき、クロマ信号は複数の領域に分割され、各領域は、その位置に応じて、(例えば、異なるレベルの量子化により)異なって圧縮され得る。このため、クロマ信号が、複数の領域からのデータをインタリーブすることにより、再度組み立てられるとき、人工的な不連続さ及び高周波ノイズが生成され得る。後処理オペレーションは、圧縮に起因する、これらの領域において生じる差異を平滑化するのに役立ち得る。
【0115】
別の例として、前処理は、残存するクロマ情報を含む補助ビューを表すYUV4:2:0フレームの圧縮を拡張するのに役立ち得る。
【0116】
いくつかの例示的な実施例において、前処理オペレーション及び後処理オペレーションは、メイン・ビューを表すYUV4:2:0フレームの一部であるクロマ信号にしか影響を及ぼさないように制限される。すなわち、フィルタリングされるサンプル値は、メイン・ビューのクロマ成分の一部である。
【0117】
さらに、AVC符号化/復号化又はHEVC符号化/復号化と組み合わせたフレーム・パッキング/アンパッキングに関して、前処理オペレーション及び後処理オペレーションは、(ルマ・サンプル・グリッドとのクロマ・サンプル・グリッド・アライメントを示す)クロマ・サンプル位置タイプに基づき得る。クロマ・サンプル位置タイプは、圧縮ビットストリームの一部としてシグナリングされるchroma_sample_loc_type_top_fieldシンタックス要素及びchroma_sample_loc_type_bottom_fieldシンタックス要素から決定される。(これら2つの要素は、プログレッシブ・スキャン・ソース・コンテンツでは、通常等しい値を有するであろう。)所与のクロマ・サンプル位置タイプに関して、クロマ・サンプルが、特定の方向(水平方向又は垂直方向)について、ルマ・サンプルとアラインする場合、奇数タップ対称フィルタ(丸め処理に加えた[1 2 1]/4すなわち[0.25 0.5 0.25]等)を使用して、その方向のクロマをフィルタリングする。一方、クロマ・サンプルが、特定の方向(水平方向又は垂直方向)について、ルマ・サンプルとアラインせず、クロマ・サンプル・グリッド位置が、特定の方向(水平方向/垂直方向)について、ルマ・サンプル位置間で中央に揃えられている場合、偶数タップ対称フィルタ(通常は、丸め処理に加えた[1 1]/2すなわち[0.5 0.5])を使用して、その方向のクロマをフィルタリングする。後者の場合の別の可能なフィルタ選択は、丸め処理に加えた[1 3 3 1]/8すなわち[0.125 0.375 0.375 0.125]である。後処理オペレーションの選択は、通常、後処理オペレーションが前処理オペレーションを補償するようになされる。いくつかの場合において、後処理は、前処理を直接的に逆にするのに対し、他の場合において、後処理は、以下で説明するように、前処理をおおよそ逆にするにすぎない。
【0118】
AVC符号化/復号化又はHEVC符号化/復号化と組み合わせたフレーム・パッキング/アンパッキングの実施例において、クロマ・サンプル位置タイプが、chroma_sample_loc_type_top_fieldシンタックス要素及びchroma_sample_loc_type_bottom_fieldシンタックス要素について、1である場合、クロマ・サンプルは、水平方向又は垂直方向で、ルマ・サンプルとアラインせず、したがって、前処理オペレーションでは、水平方向及び垂直方向の両方で、フィルタ[0.5 0.5]が適用される。そのような場合、
図9を参照して示した手法(900)では、領域B2及び領域B3のサンプル値を導出するための式は以下のとおりである。
・領域B2に関して、
【数20】
・領域B3に関して、
【数21】
ここで、(x,y)の範囲は、両方の領域について、[0,W/2−1]×[0,H/2−1]である。
【0119】
このフィルタリングに起因して、YUV4:4:4フレームからの位置U
444(2x,2y)及び位置V
444(2x,2y)におけるサンプル値は、メイン・ビュー(902)において直接的に表されない。代わりに、フィルタリングされたサンプル値
(
【数22】
及び
【数23】
)が、メイン・ビュー(902)における位置での値である。YUV4:4:4フレームからのU
444(2x+1,2y)、U
444(2x,2y+1)、U
444(2x+1,2y+1)、V
444(2x+1,2y)、V
444(2x,2y+1)、及びV
444(2x+1,2y+1)は、依然として、領域B4...領域B9間の補助ビュー(903)において直接的に表される。
【0120】
YUV4:4:4フォーマットのフレームが出力されるときの後処理オペレーションの一部としての対応するフィルタリングにおいて、YUV4:4:4フレームの位置U
444(2x,2y)及び位置V
444(2x,2y)のサンプル値は、パックされたフレームにおける値から、U’
444(2x,2y)及びV’
444(2x,2y)として、以下のように計算され得る:
・
【数24】
・
【数25】
ここで、(x,y)の範囲は、[0,W/2−1]×[0,H/2−1]であり、αは、実装に依存する重み付けファクタであり、’’マークは、(おそらくは不可逆的な)符号化からの再構築を示す。水平方向及び垂直方向の両方でルマ・サンプル位置間で中央に揃えられたクロマ・サンプル・グリッド位置に関して、[0.5 0.5]という提案されるアンチエイリアス・フィルタを用いると、α=1という値は、前処理において実行されたフィルタリングを直接的に逆にすることで、量子化誤差及び丸め誤差なしで、入力値を完全に再構築するであろう。αが他の値の場合、後処理中のフィルタリングは、前処理において実行されたフィルタリングをおおよそ逆にするに過ぎない。量子化誤差を考慮すると、認識されるアーチファクトを低減させるために、いくらか小さな値のα(例えば、α=0.5)を用いることが望ましいことであり得る。一般に、αは、0.0〜1.0の範囲にあるべきであり、量子化ステップ・サイズが大きいほど、αは小さいべきである。高い値のαを用いると、不可逆圧縮に起因して生成されるアーチファクトを増幅させ得る。
【0121】
あるいは、異なる重みを異なるサンプル位置に対して割り当てることができる。YUV4:4:4フレームの位置U
444(2x,2y)及び位置V
444(2x,2y)のサンプル値は、パックされたフレームにおける値から、U’
444(2x,2y)及びV’
444(2x,2y)として、以下のように計算され得る:
・
【数26】
・
【数27】
ここで、(x,y)の範囲は、[0,W/2−1]×[0,H/2−1]であり、α、β、及びγは、実装に依存する重み付けファクタであり、’’マークは、(おそらくは不可逆的な)符号化からの再構築を示す。水平方向及び垂直方向の両方でルマ・サンプル位置間で中央に揃えられたクロマ・サンプル・グリッド位置に関して、[0.5 0.5]という提案されるアンチエイリアス・フィルタを用いると、α=β=γ=1という値は、前処理において実行されたフィルタリングを直接的に逆にすることで、量子化誤差及び丸め誤差なしで、入力値を完全に再構築するであろう。α、β、及びγが他の値の場合、後処理中のフィルタリングは、前処理において実行されたフィルタリングをおおよそ逆にするに過ぎない。量子化誤差を考慮すると、認識されるアーチファクトを低減させるために、いくらか小さな値のα、β、及びγ(例えば、α=β=γ=0.5)を用いることが望ましいことであり得る。一般に、α、β、及びγは、0.0〜1.0の範囲にあるべきであり、量子化ステップ・サイズが大きいほど、α、β、及びγは小さいべきである。高い値のα、β、及びγを用いると、不可逆圧縮に起因して生成されるアーチファクトを増幅させ得る。α、β、及びγの値は、相互相関分析を用いる条件付き最適化のために設計され得る。
【0122】
α=β=γ=1の場合、YUV4:4:4フレームの位置U
444(2x,2y)及び位置V
444(2x,2y)のサンプル値は、パックされたフレームにおける値から、U’
444(2x,2y)及びV’
444(2x,2y)として、以下のように計算され得る:
・
【数28】
・
【数29】
ここで、(x,y)の範囲は、[0,W/2−1]×[0,H/2−1]である。
【0123】
例えば、前処理中、位置(2x,2y)、位置(2x+1,2y)、位置(2x,2y+1)、及び位置(2x+1,2y+1)のサンプル値29、15、7、及び18が、フィルタリングされて、17に丸められるサンプル値17.25が生成される。17というフィルタリングされたサンプル値が、29というオリジナルのサンプル値の代わりに使用される。後処理中、位置(2x,2y)のサンプル値は、68−15−7−18=28として再構築される。オリジナルのサンプル値(29)と再構築されたサンプル値(28)との間の差は、前処理オペレーションのフィルタリングに起因する正確さの損失を示す。
【0124】
代替的に、デバイスは、フィルタリングが前処理中に実行された場合であっても、後処理中のフィルタリング・オペレーションを選択的に省略してもよい。例えば、デバイスは、復号化及び再生の計算負荷を低減させるために、後処理中のフィルタリングを省略することができる。
【0125】
代替的に、前処理オペレーション及び後処理オペレーションは、(例えば、
図9に示されるフレーム902の領域B2及び領域B3といった)メイン・ビューを表す4:2:0フレームの一部である4:4:4フレームのクロマ信号に限定されるものではない。代わりに、前処理オペレーション及び後処理オペレーションは、(例えば、
図9に示されるフレーム903の領域B4〜領域B9といった)補助ビューを表す4:2:0フレームの一部である4:4:4フレームのクロマ信号についても実行されてもよい。(補助ビューを表す4:2:0フレームの一部である4:4:4フレームのクロマ信号についての)そのような前処理オペレーション及び後処理オペレーションは、メイン・ビューを表す4:2:0フレームの一部となる4:4:4フレームのクロマ信号の前処理及び後処理とは異なるフィルタリング・オペレーションを使用することができる。
【0126】
前処理オペレーション及び後処理オペレーションの上記の例において、前処理中、平均フィルタリングが使用され、後処理中、対応するフィルタリングが使用される。代替的に、前処理オペレーション及び後処理オペレーションは、変換/逆変換ペアを実施してもよい。例えば、変換/逆変換ペアは、ウェーブレット変換、リフティング変換、及び他の変換のクラスの1つであり得る。4:4:4フレームをパックするというコンテキストにおける前処理オペレーション及び後処理オペレーションの使用の上述した様々な設計理由を満たすために、特定の変換がまた、ユース・ケース・シナリオに応じて設計され得る。あるいは、前処理及び後処理は、他のフィルタ領域のサポート付きの他のフィルタ構造を使用してもよいし、コンテンツ及び/又は忠実性に関して適応的な(例えば、符号化のために使用される量子化ステップ・サイズに関して適応的な)フィルタリングを使用してもよい。
【0127】
いくつかの例示的な実施例において、フレーム・パックされた4:2:0コンテンツの表現及び/又は圧縮は、4:4:4コンテンツのオリジナルのサンプル・ビット深度よりも高いサンプル・ビット深度を使用し得る。例えば、4:4:4フレームのサンプル・ビット深度は、1サンプルにつき8ビットであり、フレーム・パックされた4:2:0フレームのサンプル・ビット深度は、1サンプルにつき10ビットである。これは、前処理オペレーション及び後処理オペレーションの適用中の正確性の損失を低減させるのに役立ち得る。あるいは、これは、4:2:0フレームが不可逆圧縮を用いて符号化されるときのより高いレベルの忠実性を実現するのに役立ち得る。例えば、4:4:4コンテンツが、1サンプルにつき8ビットのサンプル・ビット深度を有し、フレーム・パックされた4:2:0コンテンツが、1サンプルにつき10ビットのサンプル・ビット深度を有する場合、1サンプルにつき10ビットのビット深度は、エンコーダ及びデコーダの全て又はほとんどの内部モジュールにおいて維持され得る。受信側でコンテンツを4:4:4フォーマットにアンパックした後、必要ならば、サンプル・ビット深度を1サンプルにつき8ビットに低減させることができる。より一般的に、高解像度クロマ・サンプリング・フォーマットのフレームのサンプル値は、第1のビット深度(1サンプルにつき8ビット、10ビット、12ビット、又は16ビット等)を有し得るのに対して、(フレーム・パッキング後の)低解像度クロマ・サンプリング・フォーマットのフレームのサンプル値は、第1のビット深度よりも高い第2のビット深度を有する。
【0128】
D.YUV4:2:2ビデオのための代替例
前述の例の多くにおいて、YUV4:4:4フレームが、符号化及び復号化のために、YUV4:2:0フレームにパックされている。他の例において、YUV4:2:2フレームが、符号化及び復号化のために、YUV4:2:0フレームにパックされる。通常の4:2:2フレームは、4ピクセル位置ごとに8個のサンプル値を含むのに対し、4:2:0フレームは、4ピクセル位置ごとに6個のサンプル値しか含まない。したがって、4:2:2フレームに含まれるサンプル値は、4/3の4:2:0フレームにパックされ得る。すなわち、効率的にパックされると、3つの4:2:2フレームが、4つの4:2:0フレームにパックされ得る。
【0129】
一手法において、4:2:2フレームのフレーム・パッキングは、
図8に示した4:4:4フレームから4:2:0フレームへの単純な手法(800)と同様の単純な方法で行われる。
【0130】
他の手法において、YUV4:2:2フレームのクロマ情報の幾何学的対応を維持したまま、1つのYUV4:2:2フレームは、複数のYUV4:2:0フレームにパックされる。Y成分、U成分、及びV成分間の良い幾何学的対応を有する、結果として生じるYUV4:2:0フレームが、より良く圧縮され得る。なぜならば、このYUV4:2:0フレームは、符号化されたYUV4:2:0フレームに適合する通常のエンコーダにより期待されるモデルにフィットするからである。同時に、YUV4:2:0フレームが、より低い解像度の色成分を有するにもかかわらず、YUV4:2:2フレームにより表される完全なシーンを表すように、パッキングが行われ得る。
【0131】
1つのYUV4:2:2フレームを2つのYUV4:2:0フレーム(メイン・ビュー及び補助ビュー)にパックするとともに、このような設計制約が満たされ得る。補助ビューは、「空(empty)」領域を有するが、このような空領域は、固定値を用いて、あるいはクロマ値を複製することにより、満たされ得る。あるいは、シーンの奥行き等の他の情報を示すために、このような空領域が使用されてもよい。例えば、
図9を参照して説明したパッキング手法(900)に関して、領域B4及び領域B5がデータを有さないことを除いて、手法(900)をそのまま使用することができる。あるいは、
図11を参照して説明したパッキング手法(1100)に関して、領域A4及び領域A5がデータを有さないことを除いて、手法(1100)をそのまま使用することができる
【0132】
例示的な実施例において、以下の表に示されるように、構成YUV4:2:0フレームへのYUV4:2:2フレームのパッキングをシグナリングするための、content_interpretation_typeの新たな値が規定される。
【表2】
【0133】
代替的に、シンタックス要素content_interpretation_typeの異なる値が、上記の表に示された解釈に関連付けられてもよい。あるいは、フレーム・パッキングにより高解像度クロマ・サンプリング・フォーマットの1以上のフレームから得られる低解像度クロマ・サンプリング・フォーマットのフレームの符号化/復号化をサポートするために、content_interpretation_typeの他の解釈及び/又は追加の解釈が使用されてもよい。
【0134】
E.他のクロマ・サンプリング・フォーマット
本明細書で説明した例の多くは、クロマ・サンプリング・フォーマットとしての、4:4:4、4:2:2、4:2:0等のサンプリング・レシオにおけるY’UV、YIQ、Y’IQ、YdbDr、YCbCr、YCoCg等のYUV色空間の変形を含む。代替的に、説明した手法は、クロマ・サンプリング・フォーマットとしての、4:4:4、4:2:2、4:2:0等のサンプリング・レシオにおけるRGB、GBR等の色空間のために使用されてもよい。例えば、デバイスは、(RGB4:4:4又はGBR4:4:4等の)高解像度の非YUVクロマ・サンプリング・フォーマットのフレームを、(4:2:0フォーマット等の)低解像度フォーマットのフレームにパックすることができ、次いで、低解像度フォーマットのフレームを符号化することができる。この符号化において、名目上のルマ成分及び名目上のクロマ成分は、(おおよその輝度及び色差値ではなく)非YUV成分のサンプル値を表す。対応するアンパッキングにおいて、デバイスは、(4:2:0フォーマット等の)低解像度フォーマットのフレームを、(RGB4:4:4又はGBR4:4:4等の)高解像度の非YUVクロマ・サンプリング・フォーマットのフレームにアンパックする。
【0135】
また、説明した手法は、通常はグレー・スケール・ビデオ・コンテンツ又はモノクローム・ビデオ・コンテンツのために使用される4:0:0フォーマットへの4:4:4フォーマット、4:2:2フォーマット、又は4:2:0フォーマットのビデオ・コンテンツのフレーム・パッキングのために使用することができる。4:4:4フォーマット、4:2:2フォーマット、又は4:2:0フォーマットのフレームからのクロマ情報が、4:0:0フォーマットの1以上の追加フレーム又は補助フレームのプライマリ成分にパックされ得る。
【0136】
F.フレーム・パッキング/アンパッキングのための一般化された技術
図12は、フレーム・パッキングのための一般化された技術(1200)を示している。例えば、
図4を参照して説明したフレーム・パッカを実装するコンピューティング・デバイスは、技術(1200)を実行することができる。
【0137】
デバイスは、高解像度クロマ・サンプリング・フォーマットの1以上のフレームを、低解像度クロマ・サンプリング・フォーマットの1以上のフレームにパックする(1210)。例えば、デバイスは、4:4:4フォーマット(例えば、YUV4:4:4フォーマット)の1以上のフレームを、4:2:0フォーマット(例えば、YUV4:2:0フォーマット)の1以上のフレームにパックする。あるいは、デバイスは、4:2:2フォーマット(例えば、YUV4:2:2フォーマット)の1以上のフレームを、4:2:0フォーマット(例えば、YUV4:2:0フォーマット)の1以上のフレームにパックする。あるいは、デバイスは、4:4:4フォーマット(例えば、YUV4:4:4フォーマット)の1以上のフレームを、4:2:2フォーマット(例えば、YUV4:2:2フォーマット)の1以上のフレームにパックする。
【0138】
YUVフォーマットでは、デバイスは、フレーム・パッキングの後、高解像度クロマ・サンプリング・フォーマットの1以上のフレームのクロマ成分の隣接サンプル値間の幾何学的対応を維持するように、フレーム・パッキング(1210)を実行することができる。例えば、そのようなサンプル値は、低解像度クロマ・サンプリング・フォーマットの1以上のフレームのルマ成分及びクロマ成分の隣接サンプル及び/又は配置された部分として維持される。後の符号化は、そのような幾何学的対応を利用することができる。
【0139】
いくつかのフレーム・パッキング手法において、デバイスは、低解像度クロマ・サンプリング・フォーマットの1以上のフレームの一部として、高解像度クロマ・サンプリング・フォーマットの1以上のフレームの低クロマ解像度バージョンを組み込むことができる。したがって、低解像度クロマ・サンプリング・フォーマットの1以上のフレームの一部は、高解像度クロマ・サンプリング・フォーマットの1以上のフレームの低クロマ解像度バージョンを表す。低解像度クロマ・サンプリング・フォーマットの1以上のフレームの残りの部分は、高解像度クロマ・サンプリング・フォーマットの1以上のフレームからの残存するクロマ情報を表す。他のフレーム・パッキング手法において、高解像度クロマ・サンプリング・フォーマットの1以上のフレームの空間分割に従って、デバイスは、高解像度クロマ・サンプリング・フォーマットの1以上のフレームのクロマ成分のサンプル値を、低解像度クロマ・サンプリング・フォーマットの1以上のフレームのルマ成分及びクロマ成分に割り当てる。
【0140】
フレーム・パッキング中、高解像度クロマ・サンプリング・フォーマットの1以上のフレームのクロマ成分のサンプル値は、フィルタリングされ得、フィルタリングされたサンプル値は、低解像度クロマ・サンプリング・フォーマットの1以上のフレームのクロマ成分の諸部分に割り当てられる。いくつかの実施例において、高解像度クロマ・サンプリング・フォーマットの1以上のフレームのクロマ成分のサンプル値は、より低いビット深度(例えば、1サンプルにつき8ビット)を有し、フィルタリングされたサンプル値は、より高いビット深度での符号化のために、より高いビット深度(例えば、1サンプルにつき10ビット)を有する。
【0141】
次いで、デバイスは、低解像度クロマ・サンプリング・フォーマットの1以上のフレームを符号化することができる(1220)。代替的に、異なるデバイスが符号化(1220)を実行してもよい。1以上のデバイスは、フレームごとに、又は他の単位で、技術(1200)を繰り返すことができる。
【0142】
デバイスは、フレーム・パッキング/アンパッキングに関するメタデータをシグナリングすることができる。例えば、デバイスは、フレーム・パッキング/アンパッキングが使用されるか使用されないかを示すメタデータをシグナリングする。あるいは、デバイスは、高解像度クロマ・サンプリング・フォーマットの1以上のフレームのクロマ成分のサンプル値が、フレーム・パッキング中にフィルタリングされ、後処理の一部としてフィルタリングされるべきであるというインジケーションをシグナリングする。フレーム・パッキング/アンパッキングに関するメタデータは、付加拡張情報(SEI)メッセージの一部として、又は何らかの他のタイプのメタデータとしてシグナリングされ得る。
【0143】
図13は、フレーム・アンパッキングのための一般化された技術(1300)を示している。例えば、
図5を参照して説明したフレーム・アンパッカを実装するコンピューティング・デバイスは、技術(1300)を実行することができる。
【0144】
フレーム・アンパッキング自体の前に、デバイスは、低解像度クロマ・サンプリング・フォーマットの1以上のフレームを復号化することができる(1310)。代替的に、異なるデバイスが復号化(1310)を実行してもよい。
【0145】
デバイスは、低解像度クロマ・サンプリング・フォーマットの1以上のフレームを、高解像度クロマ・サンプリング・フォーマットの1以上のフレームにアンパックする(1320)。例えば、デバイスは、4:2:0フォーマット(例えば、YUV4:2:0フォーマット)の1以上のフレームを、4:4:4フォーマット(例えば、YUV4:4:4フォーマット)の1以上のフレームにアンパックする。あるいは、デバイスは、4:2:0フォーマット(例えば、YUV4:2:0フォーマット)の1以上のフレームを、4:2:2フォーマット(例えば、YUV4:2:2フォーマット)の1以上のフレームにアンパックする。あるいは、デバイスは、4:2:2フォーマット(例えば、YUV4:2:2フォーマット)の1以上のフレームを、4:4:4フォーマット(例えば、YUV4:4:4フォーマット)の1以上のフレームにアンパックする。
【0146】
高解像度クロマ・サンプリング・フォーマットの1以上のフレームの低クロマ解像度バージョンが、低解像度クロマ・サンプリング・フォーマットの1以上のフレームの一部として組み込まれるとき、デバイスは、表示のためのオプションを有する。高解像度クロマ・サンプリング・フォーマットの1以上のフレームの低クロマ解像度バージョンを表す低解像度クロマ・サンプリング・フォーマットの1以上のフレームの一部は、出力及び表示のために再構築され得る。低解像度クロマ・サンプリング・フォーマットの1以上のフレームの残りの部分は、高解像度クロマ・サンプリング・フォーマットの1以上のフレームからの残存するクロマ情報を表し、フレーム・アンパッキングの一部として使用され得る。他のフレーム・アンパッキング手法において、高解像度クロマ・サンプリング・フォーマットの1以上のフレームの空間分割の逆を実行するために、デバイスは、低解像度クロマ・サンプリング・フォーマットの1以上のフレームのルマ成分及びクロマ成分のサンプル値を、高解像度クロマ・サンプリング・フォーマットの1以上のフレームのクロマ成分に割り当てる。
【0147】
フレーム・アンパッキング中、高解像度クロマ・サンプリング・フォーマットの1以上のフレームのクロマ成分のサンプル値は、後処理の一部としてフィルタリングされ得る。いくつかの実施例において、高解像度クロマ・サンプリング・フォーマットの1以上のフレームのクロマ成分の少なくともいくつかのサンプル値は、後処理フィルタリングの前に、より高いビット深度(例えば、1サンプルにつき10ビット)を有し、そのようなサンプル値は、後処理フィルタリングの後、より低いビット深度(例えば、1サンプルにつき8ビット)を有する。
【0148】
デバイスはまた、フレーム・パッキング/アンパッキングに関するメタデータを受信することができる。例えば、デバイスは、フレーム・パッキング/アンパッキングが使用されるか使用されないかを示すメタデータを受信する。あるいは、デバイスは、高解像度クロマ・サンプリング・フォーマットの1以上のフレームのクロマ成分のサンプル値が、フレーム・パッキング中にフィルタリングされ、後処理の一部としてフィルタリングされるべきであるというインジケーションを受信する。フレーム・パッキング/アンパッキングに関するメタデータは、付加拡張情報(SEI)メッセージの一部として、又は何らかの他のタイプのメタデータとしてシグナリングされ得る。
【0149】
1以上のデバイスは、フレームごとに、又は他の単位で、技術(1300)を繰り返すことができる。
【0150】
開示した本発明の原理を適用することができる多くの可能な実施形態の観点から、例示した実施形態は、本発明の好ましい例に過ぎないことを認識すべきであり、本発明の範囲を限定するものとして解釈すべきではない。むしろ、本発明の範囲は、請求項により定められる。したがって、我々は、請求項の範囲及び精神に含まれる全てを、我々の発明として特許請求する。