【文献】
Detlev Marpe, et al.,Macroblock-Adaptive Residual Color Space Transforms for 4:4:4 Video Coding,2006 International Conference on Image Processing,米国,IEEE,2006年10月11日,ICIP2006,pp.3157-3160
【文献】
大久保 榮,改訂三版H.264/AVC教科書 第1版 H.264/AVC TEXTBOOK,株式会社インプレスR&D 井芹 昌信,第1版,pp.144-146
(58)【調査した分野】(Int.Cl.,DB名)
前記符号化されたデータの少なくとも一部は、前記RGBタイプの色空間と前記YCoCg色空間との間で切り替えるために、可逆色空間変換演算と増加された中間色深度とを用いた可逆符号化により符号化されている、請求項1記載の方法。
前記復号ステップは、1以上のルールに従って、以前に再構成されたコンテンツをデブロックするデブロッキングステップをさらに含む、請求項1乃至5いずれか一項記載の方法。
前記デブロッキングステップは、2つの隣接ブロックのプライマリ成分がゼロでない残差値を有するかどうかに応じて、デブロッキングフィルタの強度を調整するステップを含む、請求項6記載の方法。
前記所与のユニットについての残差値が存在する場合、前記フラグ値は、前記所与のユニットについてのブロックシンタックス構造の一部としてシグナリングされる、請求項1乃至7いずれか一項記載の方法。
【発明を実施するための形態】
【0022】
詳細な説明は、適応符号化及び適応復号の領域におけるイノベーションを提示している。例えば、本イノベーションのうちのいくつかは、符号化中に、ビデオシーケンス内のユニットの間で色空間を切り替えるエンコーダ、及び対応するデコーダに関する。他のイノベーションは、符号化中に、ビデオシーケンス内のユニットの間で色サンプリングレートを切り替えるエンコーダ、及び対応するデコーダに関する。さらに他のイノベーションは、符号化中に、ビデオシーケンス内のユニットの間で色深度を切り替えるエンコーダ、及び対応するデコーダに関する。これらのイノベーションは、多くのシナリオにおいて、符号化効率を向上させることができる。
【0023】
一般に、色空間(時として色モデルと呼ばれる)は、1つの物理位置につきn(n≧1)個の値として色を表現するためのモデルであり、n個の値の各値は、その位置についての色成分値を提供する。
【0024】
例えば、YUV色空間において、ルマ(又はY)成分値は、ある位置におけるおおよその輝度を表し、複数のクロマ(又はU及びV)成分値は、その位置における色差を表す。色差値(及び、YUV色空間からRGB等の別の色空間へ変換演算、RGB等の別の色空間からYUV色空間への変換演算)の正確な定義は、実装に依存する。一般に、符号化及び復号の目的では、Y成分がプライマリ成分であり、U成分及びV成分がセカンダリ成分である。一般に、本明細書で使用されるとき、YUVタイプの色空間という用語は、1つのルマ(又はルミナンス)成分と1以上のクロマ(又はクロミナンス)成分とを有する任意の色空間を示し、Y’UV、YIQ、Y’IQ、及びYDbDrに加えて、YCbCr及びYCoCg等の変形を含む。
【0025】
使用される成分信号尺度(measure)は、非線形伝達特性関数(「ガンマプレ補償(gamma pre-compensation)」として一般に知られており、プライム記号を使用してしばしば表記されるが、プライム記号は、表記の都合上しばしば省略される)の適用を通じて調整され得る。あるいは、成分信号尺度は、光振幅と線形関係を有するドメインにあり得る。ルマ成分信号及びクロマ信号成分は、人間の視覚系についての輝度及び色の知覚に非常に沿ったものであり得る、あるいは、ルマ成分信号及びクロマ信号成分は、そのような尺度からいくらかそれたものであり得る(例えば、YCoCgの変形におけるように、色成分値の計算を単純化する式が適用される)。
【0026】
別の例として、RGB色空間において、赤(R)成分値は、ある位置における赤強度を表し、緑(G)成分値は、その位置における緑強度を表し、青(B)成分値は、その位置における青強度を表す。本明細書で使用されるとき、RGBタイプの色空間という用語は、R色成分、G色成分、及びB色成分を任意の順番で有する色空間を示す。例は、RGB色空間、BGR色空間、及びGBR色空間を含み、これらの色空間は、符号化及び復号の目的でのプライマリ成分の点で異なる。プライマリ成分は、色空間の最初の文字(例えば、RGBの場合はR)により示される。
【0027】
色サンプリングレート(時としてクロマサンプリングレートと呼ばれる)とは、色成分の間の相対空間解像度を指す。例えば、4:4:4という色サンプリングレートの場合、セカンダリ成分(例えば、YUVのU成分及びV成分)についての情報は、プライマリ成分(例えば、YUVのY成分)についての情報と同じ空間解像度を有する。4:2:2又は4:2:0という色サンプリングレートの場合、セカンダリ成分についての情報は、プライマリ成分についての情報に対してダウンサンプリングされる。YUV4:2:0フォーマットは、YUV4:4:4フォーマットと比べて、クロマ情報をサブサンプリングしたフォーマットであるので、クロマ解像度は、水平方向及び垂直方向の両方においてルマ解像度の半分である。YUV4:2:0フォーマットは、YUV4:4:4フォーマットと比べて、水平方向においてクロマ情報をサブサンプリングしたフォーマットであるので、クロマ解像度は、水平方向においてルマ解像度の半分である。色サンプリングレートの他の例は、4:1:1(セカンダリ成分が水平方向において1/4の解像度を有する)及び4:0:0(セカンダリ成分が欠如している)を含む。色サブサンプリングは、通常、YUVタイプの色空間に適用される。RGBタイプの色空間は、通常、4:4:4という色サンプリングレートを有するが、セカンダリ色成分がサブサンプリングされる異なる色サンプリングレートを有してもよい。
【0028】
YUV4:2:0フォーマットは、従来、ビデオ符号化及びビデオ復号のために使用されていたが、ビデオがよりリッチな色情報を有し、より高い色忠実度が妥当であろういくつかのユースケースが存在する。そのようなユースケースにおいて、YUV4:4:4クロマサンプリングフォーマットとYUV4:2:0クロマサンプリングフォーマットとの差が、観察者によってより容易に知覚される。例えば、コンピュータスクリーンテキストコンテンツ、人工的な鋭い境界を有するアニメーション化されたビデオコンテンツ、又はより一般的にビデオコンテンツの所定の特徴(スクロールするタイトル及び鋭いグラフィックス、又はクロマチャネルにおいて集結された情報を有するビデオ)の符号化/復号に関して、4:4:4フォーマットが、4:2:0フォーマットより好ましい場合がある。
【0029】
色深度とは、1サンプル値当たりのビット数を指す。一般的な色深度は、1サンプル当たり8ビット、1サンプル当たり10ビット、及び1サンプル当たり12ビットである。他の可能な色深度は、1サンプル当たり4ビット及び1サンプル当たり16ビットを含む。
【0030】
本明細書に記載のオペレーションは、ビデオエンコーダ又はビデオデコーダにより実行されるものとして所々で説明されるが、多くの場合、このようなオペレーションは、別のタイプのメディア処理ツール(例えば、画像エンコーダ又は画像デコーダ)により実行することができる。例えば、このようなオペレーションは、静止画像符号化/復号、医療スキャンコンテンツ符号化/復号、マルチスペクトル画像コンテンツ符号化/復号等といった用途のために実行することができる。
【0031】
本明細書に記載のイノベーションのうちのいくつかは、H.265/HEVC規格に固有のシンタックス要素及びオペレーションを参照して示される。例えば、H.265/HEVC規格のドラフトバージョンJCTVC−P1005(”High Efficiency Video Coding (HEVC) Range Extensions Text Specification: Draft 6”, JCTVC-P1005_v1, February 2014)を参照する。本明細書に記載のイノベーションはまた、他の規格又はフォーマットのためにも実装することができる。
【0032】
より一般的に、本明細書に記載の例に対する様々な代替例が可能である。例えば、本明細書に記載の方法のうちのいくつかは、例えば、説明する方法動作の順番を変えることにより、所定の方法動作を分けることにより、所定の方法動作を繰り返すことにより、又は所定の方法動作を省略することにより、変更することができる。開示する技術の様々な態様が、組み合わせて又は別々に、使用され得る。様々な実施形態が、説明するイノベーションのうちの1以上を使用する。本明細書に記載のイノベーションのうちのいくつかは、背景技術において記した問題のうちの1以上に対処する。一般的に、所与の技術/ツールが、そのような問題の全てを解決するわけではない。
【0033】
I.例示的なコンピューティングシステム
図1は、説明するイノベーションのうちのいくつかを実装することができる適切なコンピューティングシステム(100)の一般化された例を示している。コンピューティングシステム(100)は、使用又は機能の範囲に関して限定を示唆するよう意図するものではない。なぜならば、本イノベーションは、多様な汎用コンピューティングシステム又は専用コンピューティングシステムにおいて実施することができるからである。
【0034】
図1を参照すると、コンピューティングシステム(100)は、1以上の処理装置(110、115)及びメモリ(120、125)を含む。処理装置(110、115)は、コンピュータ実行可能な命令を実行する。処理装置は、汎用中央処理装置(「CPU」)、特定用途向け集積回路(「ASIC」)におけるプロセッサ、又は任意の他のタイプのプロセッサとすることができる。マルチ処理システムにおいては、複数の処理装置が、処理能力を増大させるために、コンピュータ実行可能な命令を実行する。例えば、
図1は、中央処理装置(110)に加えて、グラフィックス処理装置又は共処理装置(115)も示している。有体のメモリ(120、125)は、1以上の処理装置によりアクセス可能な、揮発性メモリ(例えば、レジスタ、キャッシュ、RAM)であってもよいし、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュメモリ等)であってもよいし、これら2つの何らかの組合せであってもよい。メモリ(120、125)は、1以上の処理装置による実行に適したコンピュータ実行可能な命令の形態で、色空間、色サンプリングレート、及び/又は色深度の適応切り替えのための1以上のイノベーションを実装するソフトウェア(180)を記憶する。
【0035】
コンピューティングシステムは、さらなる特徴を有することができる。例えば、コンピューティングシステム(100)は、ストレージ(140)、1以上の入力デバイス(150)、1以上の出力デバイス(160)、及び1以上の通信接続(170)を含む。バス、コントローラ、又はネットワーク等の相互接続機構(図示せず)が、コンピューティングシステム(100)のコンポーネントを相互接続する。通常、オペレーティングシステムソフトウェア(図示せず)が、コンピューティングシステム(100)において実行される他のソフトウェアのための動作環境を提供し、コンピューティングシステム(100)のコンポーネントの動作を調整する。
【0036】
有体のストレージ(140)は、着脱可能であっても着脱不可能であってもよく、磁気ディスク、磁気テープ、磁気カセット、CD−ROM、DVD、又は、情報を記憶するために使用することができ、コンピューティングシステム(100)内でアクセスされ得る任意の他の媒体を含む。ストレージ(140)は、色空間、色サンプリングレート、及び/又は色深度の適応切り替えのための1以上のイノベーションを実装するソフトウェア(180)の命令を記憶する。
【0037】
1以上の入力デバイス(150)は、キーボード、マウス、ペン、若しくはトラックボール等のタッチ入力デバイス、音声入力デバイス、スキャニングデバイス、又はコンピューティングシステム(100)への入力を提供する別のデバイスとすることができる。ビデオに関して、1以上の入力デバイス(150)は、カメラ、ビデオカード、TVチューナカード、スクリーンキャプチャモジュール、若しくはアナログ形態あるいはデジタル形態のビデオ入力を受け入れる同様のデバイス、又はビデオ入力をコンピューティングシステム(100)に読み込むCD−ROMあるいはCD−RWとすることができる。1以上の出力デバイス(160)は、ディスプレイ、プリンタ、スピーカ、CDライタ、又はコンピューティングシステム(100)からの出力を提供する別のデバイスとすることができる。
【0038】
1以上の通信接続(170)は、通信媒体を介した別のコンピューティングエンティティとの通信を可能にする。通信媒体は、変調されたデータ信号により、コンピュータ実行可能な命令、オーディオ入力、ビデオ入力、オーディオ出力、ビデオ出力、又は他のデータ等の情報を伝達する。変調されたデータ信号とは、信号内の情報を符号化するように設定又は変更された特性のうちの1以上を有する信号である。限定ではなく例として、通信媒体は、電気、光、RF、又は他のキャリアを使用することができる。
【0039】
本イノベーションは、コンピュータ読み取り可能な媒体の一般的なコンテキストにおいて説明され得る。コンピュータ読み取り可能な媒体は、コンピューティング環境内でアクセスされ得る任意の利用可能な有体の媒体である。限定ではなく例として、コンピューティングシステム(100)において、コンピュータ読み取り可能な媒体は、メモリ(120、125)、ストレージ(140)、及びこれらの任意の組合せを含む。
【0040】
本イノベーションは、コンピュータ実行可能な命令の一般的なコンテキストにおいて説明され得る。コンピュータ実行可能な命令は、例えば、プログラムモジュールに含まれ、コンピューティングシステムにおいて、ターゲット実プロセッサ又は仮想プロセッサ上で実行される。一般に、プログラムモジュールは、特定のタスクを実行する又は特定の抽象データ型を実装するルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造等を含む。プログラムモジュールの機能は、様々な実施形態において、必要に応じて、組み合わされてもよいし、プログラムモジュール間で分割されてもよい。プログラムモジュールのコンピュータ実行可能な命令は、ローカルコンピューティングシステム又は分散コンピューティングシステム内で実行され得る。
【0041】
「システム」及び「デバイス」という用語は、本明細書において置き換え可能に使用される。文脈が別途明確に示さない限り、これらの用語は、コンピューティングシステム又はコンピューティングデバイスのタイプに関していかなる限定も示すものではない。一般に、コンピューティングシステム又はコンピューティングデバイスは、局在することもあるし分散されることもあり、専用ハードウェア及び/又は汎用ハードウェアと、本明細書に記載の機能を実装するソフトウェアと、の任意の組合せを含み得る。
【0042】
開示する方法は、開示する方法のいずれかを実行するよう構成された専用コンピューティングハードウェアを用いて実装することもできる。例えば、開示する方法は、開示する方法のいずれかを実行するよう特別に設計又は構成された集積回路(例えば、ASIC(ASICデジタル信号プロセッサ(「DSP」)等)、グラフィックス処理装置(「GPU」)、又はフィールドプログラマブルゲートアレイ(「FPGA」)等のプログラマブルロジックデバイス(「PLD」)等)により実装することができる。
【0043】
提示の目的上、詳細な説明では、コンピューティングシステムにおけるコンピュータオペレーションを説明するための「決定する」及び「使用する」のような用語が使用される。これらの用語は、コンピュータにより実行されるオペレーションの高レベル抽象表現であって、人間により実行される動作と混同すべきではない。これらの用語に対応する実際のコンピュータオペレーションは、実装に応じて変化する。
【0044】
II.例示的なネットワーク環境
図2a及び
図2bは、ビデオエンコーダ(220)及びビデオデコーダ(270)を含む例示的なネットワーク環境(201、202)を示している。エンコーダ(220)及びデコーダ(270)は、適切な通信プロトコルを用いて、ネットワーク(250)を介して接続される。ネットワーク(250)は、インターネット又は別のコンピュータネットワークを含み得る。
【0045】
図2aに示されるネットワーク環境(201)において、各リアルタイム通信(「RTC」)ツール(210)は、双方向通信のためのエンコーダ(220)及びデコーダ(270)の両方を含む。所与のエンコーダ(220)は、H.265/HEVC規格の変形又は拡張、SMPTE 421M規格、ISO/IEC 14496−10規格(H.264又はAVCとしても知られている)、別の規格、又はプロプライエタリフォーマットに準拠する出力を生成することができ、対応するデコーダ(270)は、エンコーダ(220)からの符号化データを受け入れることができる。双方向通信は、ビデオ会議、ビデオ通話、又は他の2パーティ若しくはマルチパーティ通信シナリオの一部であり得る。
図2aのネットワーク環境(201)は、2つのリアルタイム通信ツール(210)を含むが、ネットワーク環境(201)は、マルチパーティ通信に参加する3以上のリアルタイム通信ツール(210)を含んでもよい。
【0046】
リアルタイム通信ツール(210)は、エンコーダ(220)による符号化を管理する。
図3は、リアルタイム通信ツール(210)に含まれ得る例示的なエンコーダシステム(300)を示している。代替的に、リアルタイム通信ツール(210)は、別のエンコーダシステムを使用してもよい。リアルタイム通信ツール(210)はまた、デコーダ(270)による復号も管理する。
図4は、リアルタイム通信ツール(210)に含まれ得る例示的なデコーダシステム(400)を示している。代替的に、リアルタイム通信ツール(210)は、別のデコーダシステムを使用してもよい。
【0047】
図2bに示されるネットワーク環境(202)において、符号化ツール(212)は、デコーダ(270)を含む複数の再生ツール(214)に配信するためのビデオを符号化するエンコーダ(220)を含む。単方向通信は、ビデオが符号化されて1つのロケーションから1以上の他のロケーションに送信される、ビデオ監視システム、ウェブカメラモニタリングシステム、スクリーンキャプチャモジュール、リモートデスクトップ会議プレゼンテーション、又は他のシナリオのために提供され得る。
図2bのネットワーク環境(202)は、2つの再生ツール(214)を含むが、ネットワーク環境(202)は、それより多い又はそれより少ない再生ツール(214)を含んでもよい。一般に、再生ツール(214)は、再生ツール(214)が受信するビデオのストリームを判定するために、符号化ツール(212)と通信する。再生ツール(214)は、ストリームを受信し、受信した符号化データを適切な期間の間バッファし、復号及び再生を開始する。
【0048】
図3は、符号化ツール(212)に含まれ得る例示的なエンコーダシステム(300)を示している。代替的に、符号化ツール(212)は、別のエンコーダシステムを使用してもよい。符号化ツール(212)はまた、1以上の再生ツール(214)との接続を管理するためのサーバサイドコントローラロジックも含み得る。
図4は、再生ツール(214)に含まれ得る例示的なデコーダシステム(400)を示している。代替的に、再生ツール(214)は、別のデコーダシステムを使用してもよい。再生ツール(214)はまた、符号化ツール(212)との接続を管理するためのクライアントサイドコントローラロジックも含み得る。
【0049】
III.例示的なエンコーダシステム
図3は、いくつかの説明する実施形態を協働して実装することができる例示的なエンコーダシステム(300)のブロック図である。エンコーダシステム(300)は、リアルタイム通信のための低遅延符号化モード、トランスコーディングモード、及びファイル又はストリームからの再生のためのメディアを生成するためのより高遅延の符号化モード等の複数の符号化モードのうちのいずれかで動作することができる汎用符号化ツールであってもよいし、そのような1つの符号化モードのために適合された専用符号化ツールであってもよい。エンコーダシステム(300)は、特定のタイプのコンテンツ(例えば、スクリーンキャプチャコンテンツ)を符号化するよう適合されてもよいし、複数の異なるタイプのコンテンツ(例えば、スクリーンキャプチャコンテンツ及び自然ビデオ)のうちの任意のコンテンツを符号化するよう適合されてもよい。エンコーダシステム(300)は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部として、又はスタンドアロンアプリケーションとして、実装することができる。概して、エンコーダシステム(300)は、ビデオソース(310)から、一連のソースビデオフレーム(311)を受信し、チャネル(390)への出力として符号化データを生成する。チャネルに出力される符号化データは、色空間、色サンプリングレート、及び/又は色深度の適応切り替えにより符号化されたコンテンツを含み得る。
【0050】
ビデオソース(310)は、カメラ、チューナカード、記憶媒体、スクリーンキャプチャモジュール、又は他のデジタルビデオソースとすることができる。ビデオソース(310)は、例えば、毎秒30フレームといったフレームレートで一連のビデオフレームを生成する。本明細書で使用されるとき、「フレーム」という用語は、一般に、ソースの符号化又は再構成された画像データを指す。プログレッシブスキャンビデオに関して、フレームは、プログレッシブスキャンビデオフレームである。インターレースビデオに関して、例示的な実施形態において、インターレースビデオフレームは、符号化の前にインターレース解除され得る(de-interlaced)。代替的に、2つの相補的インターレースビデオフィールドが、1つのビデオフレームとして一緒に符号化されてもよいし、2つの別々に符号化されるフィールドとして符号化されてもよい。プログレッシブスキャンビデオフレーム又はインターレーススキャンビデオフレームを示すかは別にして、「フレーム」又は「ピクチャ」という用語は、単一の対でないビデオフィールド、相補的な一対のビデオフィールド、所与の時間におけるビデオオブジェクトを表すビデオオブジェクトプレーン、又はより大きな画像における関心領域を示し得る。ビデオオブジェクトプレーン又は領域は、シーンの複数のオブジェクト又は領域を含むより大きな画像の一部であり得る。
【0051】
到着ソースフレーム(311)は、複数のフレームバッファ記憶領域(321、322、...、32n)を含むソースフレーム一時メモリ記憶領域(320)に記憶される。フレームバッファ(321、322等)は、ソースフレーム記憶領域(320)内で1つのソースフレームを保持する。ソースフレーム(311)のうちの1以上がフレームバッファ(321、322等)に記憶された後、フレームセレクタ(330)が、ソースフレーム記憶領域(320)から個々のソースフレームを選択する。エンコーダ(340)への入力のためにフレームセレクタ(330)によりフレームが選択される順番は、ビデオソース(310)によりフレームが生成される順番とは異なり得る。例えば、いくつかの後続フレームが最初に符号化され、これにより、時間的後方予測を容易にすることを可能にするために、いくつかのフレームの符号化は、順に遅延されることがある。エンコーダ(340)の前に、エンコーダシステム(300)は、符号化の前に選択されたフレーム(331)の前処理(例えば、フィルタリング)を実行するプリプロセッサ(図示せず)を含み得る。
【0052】
エンコーダ(340)は、選択されたフレーム(331)を符号化して、符号化フレーム(341)を生成するとともに、メモリ管理制御操作(「MMCO」)信号(342)又は参照ピクチャセット(「RPS」)情報を生成する。RPSは、現フレーム又は任意の後続フレームのための動き補償における参照のために使用され得るフレームのセットである。現フレームが、符号化された最初のフレームではない場合、符号化プロセスを実行するとき、エンコーダ(340)は、復号フレーム一時メモリ記憶領域(360)に記憶されている1以上の以前に符号化/復号されたフレーム(369)を使用することができる。そのような記憶されている復号フレーム(369)は、現ソースフレーム(331)のコンテンツのインターフレーム予測のための参照フレームとして使用される。MMCO/RPS情報(342)は、どの再構成フレームが、参照フレームとして使用され得るかを、したがって、フレーム記憶領域に記憶されるべきかを、デコーダに示す。
【0053】
エンコーダ(340)は、特定の色空間(例えば、YUVタイプの色空間、RGBタイプの色空間)におけるビデオであって、特定の色サンプリングレート(例えば、4:4:4)であり1サンプル当たり特定のビット数(例えば、1サンプル当たり12ビット)のビデオを受け入れる。符号化中、異なるピクチャ、スライス、ブロック、又はビデオの他のユニットについて、エンコーダ(340)は、色空間変換を実行して、YUVタイプの色空間とRGBタイプの色空間との間で、又は、何らかの他の色空間へ/から、変換することができる。エンコーダ(340)はまた、色空間変換を実行して、色成分を並べ替え、どの色成分がプライマリ成分であるかを変更することができる(例えば、RGBフォーマットとBGRフォーマットとGBRフォーマットとの間で変換することができる)。符号化中、エンコーダ(340)はまた、再サンプリング処理を実行して、異なるピクチャ、スライス、ブロック、又はビデオの他のユニットについて、色サンプリングレートを(例えば、4:4:4フォーマットと4:2:2フォーマットと4:2:0フォーマットとの間で)変更することができる。エンコーダ(340)はまた、符号化中、異なるピクチャ、スライス、ブロック、又はビデオの他のユニットについて、色深度を(例えば、1サンプル当たり12ビットと1サンプル当たり10ビットと1サンプル当たり8ビットとの間で)変更することができる。いくつかの例示的な実装において、エンコーダ(340)は、符号化中、ピクチャごとに、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。
【0054】
一般に、エンコーダ(340)は、タイルへの分割、色空間、色サンプリングレート、及び/又は色深度の適応、イントラ予測推定及び予測、動き推定及び動き補償、周波数変換、量子化、並びにエントロピ符号化等の符号化タスクを実行する複数の符号化モジュールを含む。エンコーダ(340)により実行される正確なオペレーションは、圧縮フォーマットに応じて変わり得る。出力される符号化データのフォーマットは、H.265/HEVCフォーマットの変形又は拡張、Windows(登録商標) Media Videoフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、又はMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットであり得る。
【0055】
エンコーダ(340)は、フレームを、同じサイズ又は異なるサイズの複数のタイルに分割することができる。例えば、エンコーダ(340)は、フレーム境界を用いてフレーム内のタイルの水平境界及び垂直境界を規定するタイル行及びタイル列に沿って、フレームを分割する。ここで、各タイルは矩形領域である。タイルは、並列処理のためのオプションを提供するために、しばしば使用される。フレームはまた、1以上のスライスとして編成され得る。ここで、スライスは、フレーム全体又はフレームの一領域であり得る。スライスは、フレーム内の他のスライスとは独立して復号することができ、これは、誤り耐性を向上させる。スライス又はタイルのコンテンツは、符号化及び復号のために、ブロック又はサンプル値の他のセットにさらに分割される。いくつかの例示的な実装において、エンコーダ(340)は、符号化中、スライスごとに、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。
【0056】
H.265/HEVC規格に従ったシンタックスに関して、エンコーダは、フレーム(又はスライス若しくはタイル)のコンテンツを、符号化ツリーユニットに分割する。符号化ツリーユニット(「CTU」)は、1つのルマ符号化ツリーブロック(「CTB」)として編成されるルマサンプル値と、2つのクロマCTBとして編成される対応するクロマサンプル値と、を含む。CTU(及びそのCTB)のサイズは、エンコーダにより選択され、例えば、64×64サンプル値、32×32サンプル値、又は16×16サンプル値であり得る。CTUは、1以上の符号化ユニットを含む。符号化ユニット(「CU」)は、1つのルマ符号化ブロック(「CB」)と2つの対応するクロマCBとを有する。例えば、1つの64×64ルマCTBと2つの64×64クロマCTBとを有するCTU(YUV4:4:4フォーマット)は、4つのCUに分割され得る。ここで、各CUは、1つの32×32ルマCBと2つの32×32クロマCBとを含み、各CUは、可能であれば、より小さなCUにさらに分割される。あるいは、別の例として、1つの64×64ルマCTBと2つの32×32クロマCTBとを有するCTU(YUV4:2:0フォーマット)は、4つのCUに分割され得る。ここで、各CUは、1つの32×32ルマCBと2つの16×16クロマCBとを含み、各CUは、可能であれば、より小さなCUにさらに分割される。CUの最小許容可能サイズ(例えば、8×8、16×16)が、ビットストリームに含められてシグナリングされ得る。
【0057】
一般に、CUは、インター又はイントラ等の予測モードを有する。CUは、予測情報(例えば、予測モード詳細、変位値等)のシグナリング及び/又は予測処理のために、1以上の予測ユニットを含む。予測ユニット(「PU」)は、1つのルマ予測ブロック(「PB」)と2つのクロマPBとを有する。イントラ予測CUに関して、CUが最小サイズ(例えば、8×8)を有する場合を除いて、PUは、CUと同じサイズを有する。この場合、CUは、4つのより小さなPU(例えば、最小CUサイズが8×8である場合、それぞれ4×4である)に分割され得る、あるいは、PUは、CUについてのシンタックス要素により示される最小CUサイズを有し得る。CUはまた、残差符号化/復号のために、1以上の変換ユニットを有する。ここで、変換ユニット(「TU」)は、1つのルマ変換ブロック(「TB」)と2つのクロマTBとを有する。イントラ予測CU内のPUは、1つのTU(PUとサイズが等しい)又は複数のTUを含み得る。エンコーダは、ビデオをCTU、CU、PU、TU等にどのように分割するかを決定する。
【0058】
H.265/HEVC実装において、スライスは、1つのスライスセグメント(独立スライスセグメント)を含み得る、又は、複数のスライスセグメント(1つの独立スライスセグメント及び1以上の従属スライスセグメント)に分割され得る。スライスセグメントは、1つのネットワーク抽象化レイヤ(「NAL」)ユニットに含まれる、タイルスキャンにおいて連続して順番付けられる整数個のCTUである。独立スライスセグメントに関して、スライスセグメントヘッダは、独立スライスセグメントについて適用されるシンタックス要素の値を含む。従属スライスセグメントに関して、短(truncated)スライスセグメントヘッダは、その従属スライスセグメントについて適用されるシンタックス要素の少しの値を含み、その従属スライスセグメントについての他のシンタックス要素の値は、復号順で先行する独立スライスセグメントについての値から推測される。
【0059】
本明細書で使用されるとき、「ブロック」という用語は、文脈に応じて、マクロブロック、予測ユニット、残差データユニット、すなわち、CB、PB、若しくはTB、又は、サンプル値の何らかの他のセットを示し得る。いくつかの例示的な実装において、エンコーダ(340)は、符号化中、ブロックごとに、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。
【0060】
図3に戻ると、エンコーダは、ソースフレーム(331)内の他の以前に再構成されたサンプル値からの予測の観点でそのソースフレーム(331)のイントラ符号化ブロックを表現する。イントラブロックコピー(「BC」)予測に関して、イントラピクチャ推定部が、他の以前に再構成されたサンプル値に対するブロックの変位を推定する。イントラフレーム予測参照領域とは、ブロックのためのBC予測値を生成するために使用される、フレーム内のサンプル値の領域である。イントラフレーム予測領域は、(ブロックベクトル(「BV」)推定において決定された)BV値により示され得る。ブロックのためのイントラ空間予測に関して、イントラピクチャ推定部が、ブロックへの、隣接する再構成されたサンプル値の外挿(extrapolation)を推定する。イントラピクチャ推定部は、予測情報(イントラBC予測のためのBV値やイントラ空間予測のための予測モード(方向)等)を出力することができ、この予測情報が、エントロピ符号化される。イントラフレーム予測予測部は、イントラ予測値を決定するために、予測情報を適用する。
【0061】
エンコーダ(340)は、参照フレームからの予測の観点でソースフレーム(331)のインターフレーム符号化予測ブロックを表現する。動き推定部は、1以上の参照フレーム(369)に対するブロックの動きを推定する。複数の参照フレームが使用される場合、複数の参照フレームは、異なる時間的方向からのものであってもよいし、同じ時間的方向からのものであってもよい。動き補償予測参照領域とは、現フレームのブロックのサンプル値のための動き補償予測値を生成するために使用される、1以上の参照フレーム内のサンプル値の領域である。動き推定部は、動きベクトル(「MV」)情報等の動き情報を出力し、この動き情報が、エントロピ符号化される。動き補償部は、インターフレーム予測のための動き補償予測値を決定するために、MVを参照フレーム(369)に適用する。
【0062】
エンコーダは、ブロックの予測値(イントラ又はインター)と対応するオリジナルの値との間の差(あれば)を決定することができる。このような予測残差値が、周波数変換、量子化、及びエントロピ符号化を用いて、さらに符号化される。例えば、エンコーダ(340)は、ピクチャ、タイル、スライス、及び/又はビデオの他の部分のための量子化パラメータ(「QP」)の値を設定し、それに従って変換係数を量子化する。エンコーダ(340)のエントロピ符号化部が、量子化された変換係数値に加えて、所定のサイド情報(例えば、MV情報、BV予測因子のインデックス値、BV差分、QP値、モード決定、パラメータ選択)も圧縮する。一般的なエントロピ符号化技術は、指数ゴロム符号化、ゴロムライス符号化、算術符号化、差分符号化、ハフマン符号化、ランレングス符号化、「V2V(variable-length-to-variable-length)」符号化、「V2F(variable-length-to-fixed-length)」符号化、「LZ(Lempel-Ziv)」符号化、辞書符号化、「PIPE(probability interval partitioning entropy)」符号化、及びこれらの組合せを含む。エントロピ符号化部は、様々な種類の情報のための様々な符号化技術を使用することができ、複数の技術を組み合わせて適用することができ(例えば、ゴロムライス符号化を適用した後に算術符号化を適用することにより)、特定の符号化技術における複数の符号テーブルの中から選択することができる。
【0063】
復号フレーム内のブロック境界行及び/又はブロック境界列にわたる不連続さを平滑化するために、適応デブロッキングフィルタが、エンコーダ(340)における動き補償ループ内に含まれる。代替的又は追加的に、他のフィルタリング(デリンギングフィルタリング、適応ループフィルタリング(「ALF」)、又はサンプル適応オフセット(「SAO」)フィルタリング等;図示せず)が、ループ内フィルタリングオペレーションとして、適用されてもよい。
【0064】
エンコーダ(340)により生成された符号化データは、ビットストリームシンタックスの様々なレイヤについてのシンタックス要素を含む。H.265/HEVC規格に従ったシンタックスに関して、例えば、ピクチャパラメータセット(「PPS」)は、ピクチャに関連付けられ得るシンタックス要素を含むシンタックス構造である。いくつかの例示的な実装において、PPSは、1つのピクチャ(又は、PPSを使用する複数のピクチャ)について適用される色空間、色サンプリングレート、及び/又は色深度を示す1以上の信号に加えて、利用可能な色空間、利用可能な色サンプリングレート、及び/又は利用可能な色深度を識別又は規定する他の情報を含み得る。PPSは、1つのピクチャについて使用されることもあるし、PPSは、シーケンス内の複数のピクチャについて再使用されることもある。PPSは、通常、ピクチャについての符号化データとは別にシグナリングされる(例えば、1つのNALユニットは、PPS用であり、1以上の他のNALユニットは、ピクチャについての符号化データ用である)。ピクチャについての符号化データにおいて、シンタックス要素は、ピクチャについてどのPPSを使用するかを示す。同様に、H.265/HEVC規格に従ったシンタックスに関して、シーケンスパラメータセット(「SPS」)は、ピクチャのシーケンスに関連付けられ得るシンタックス要素を含むシンタックス構造である。ビットストリームは、1つのSPS又は複数のSPSを含み得る。SPSは、通常、シーケンスについての他のデータとは別にシグナリングされ、他のデータにおけるシンタックス要素が、どのSPSを使用するかを示す。いくつかの例示的な実装において、シーケンスについてのSPSは、利用可能な色空間、利用可能な色サンプリングレート、及び/又は利用可能な色深度を識別又は規定する情報を含み得、これが、シーケンス内で、色空間、色サンプリングレート、及び/又は色深度を切り替えるときに、参照される。
【0065】
スライスレイヤに関して、スライスヘッダ(例えば、スライスセグメントヘッダ)は、スライス(例えば、独立スライスセグメント及びそれに続くあらゆる従属スライスセグメント)について適用されるシンタックス要素の値を含む。いくつかの例示的な実装において、スライスヘッダは、スライスについて適用される色空間、色サンプリングレート、及び/又は色深度を示す1以上の信号を含み得る。いくつかの例示的な実装において、スライスヘッダはまた、利用可能な色空間、利用可能な色サンプリングレート、及び/又は利用可能な色深度を識別又は規定する情報を含み得、これが、スライス内で、色空間、色サンプリングレート、及び/又は色深度を切り替えるときに、参照される。ブロックレイヤに関して(例えば、CTUに関して)、シンタックス構造は、ブロックについて適用されるシンタックス要素の値を含む。いくつかの例示的な実装において、ブロックについてのシンタックス構造は、ブロックについて適用される色空間、色サンプリングレート、及び/又は色深度を示す1以上の信号を含み得る。
【0066】
符号化フレーム(341)及びMMCO/RPS情報(342)(又は、フレームについての依存関係及び順番構造がエンコーダ(340)において既に知られているため、MMCO/RPS情報(342)と同等の情報)が、復号プロセスエミュレータ(350)により処理される。復号プロセスエミュレータ(350)は、例えば、参照フレームを再構成する復号タスク等のデコーダの機能の一部を実装している。復号プロセスエミュレータ(350)は、MMCO/RPS情報(342)と整合するように、所与の符号化フレーム(341)が、符号化される後続フレームのインターフレーム予測において参照フレームとして使用するために再構成されて記憶される必要があるかどうかを判定する。符号化フレーム(341)が記憶される必要がある場合、復号プロセスエミュレータ(350)は、符号化フレーム(341)を受信して対応する復号フレーム(351)を生成するデコーダにより行われるであろう復号プロセスを模擬する。そうする際に、エンコーダ(340)が、復号フレーム記憶領域(360)に記憶されている1以上の復号フレーム(369)を使用したとき、復号プロセスエミュレータ(350)は、復号プロセスの一部として、記憶領域(360)から1以上の復号フレーム(369)を使用する。
【0067】
復号フレーム一時メモリ記憶領域(360)は、複数のフレームバッファ記憶領域(361、362、...、36n)を含む。復号プロセスエミュレータ(350)は、MMCO/RPS情報(342)と整合するように、参照フレームとして使用するためにエンコーダ(340)によりもはや必要とされなくなったフレームを有する任意のフレームバッファ(361、362等)を識別するために、記憶領域(360)のコンテンツを管理する。復号プロセスを模擬した後、復号プロセスエミュレータ(350)は、このように識別されるフレームバッファ(361、362等)に、新たに復号されたフレーム(351)を記憶する。
【0068】
符号化フレーム(341)及びMMCO/RPS情報(342)は、一時符号化データ領域(370)にバッファされる。符号化データ領域(370)に収集される符号化データは、エレメンタリ符号化ビデオビットストリームのシンタックスの一部として、1以上のピクチャの符号化データを含む。符号化データ領域(370)に収集される符号化データはまた、(例えば、1以上の付加拡張情報(「SEI」)メッセージ又はビデオユーザビリティ情報(「VUI」)メッセージにおける1以上のパラメータとして、)符号化ビデオデータに関連するメディアメタデータを含み得る。
【0069】
一時符号化データ領域(370)からの収集されたデータ(371)は、チャネルエンコーダ(380)により処理される。チャネルエンコーダ(380)は、(例えば、ITU−T H.222.0|ISO/IEC 13818−1等のメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又は、IETF RFC 3550等のインターネットリアルタイムトランスポートプロトコルフォーマットに従って)メディアストリームとして伝送又は記憶するために、収集されたデータをパケット化及び/又は多重化することができる。そのような場合、チャネルエンコーダ(380)は、メディア伝送ストリームのシンタックスの一部として、シンタックス要素を付加することができる。あるいは、チャネルエンコーダ(380)は、(例えば、ISO/IEC 14496−12等のメディアコンテナフォーマットに従って)ファイルとして記憶するために、収集されたデータを編成することができる。そのような場合、チャネルエンコーダ(380)は、メディア記憶ファイルのシンタックスの一部として、シンタックス要素を付加することができる。あるいは、より一般的に、チャネルエンコーダ(380)は、1以上のメディアシステム多重化プロトコル又はトランスポートプロトコルを実装することができる。そのような場合、チャネルエンコーダ(380)は、1以上のプロトコルのシンタックスの一部として、シンタックス要素を付加することができる。チャネルエンコーダ(380)は、チャネル(390)への出力を提供する。チャネル(390)は、ストレージ、通信接続、又は出力のための別のチャネルを表す。チャネルエンコーダ(380)又はチャネル(390)はまた、例えば、前方誤り訂正(「FEC」)符号化及びアナログ信号変調のための他の要素(図示せず)を含み得る。
【0070】
IV.例示的なデコーダシステム
図4は、いくつかの説明する実施形態を協働して実装することができる例示的なデコーダシステム(400)のブロック図である。デコーダシステム(400)は、リアルタイム通信のための低遅延復号モード及びファイル又はストリームからのメディア再生のためのより高遅延の復号モード等の複数の復号モードのうちのいずれかで動作することができる汎用復号ツールであってもよいし、そのような1つの復号モードのために適合された専用復号ツールであってもよい。デコーダシステム(400)は、特定のタイプのコンテンツ(例えば、スクリーンキャプチャコンテンツ)を復号するよう適合されてもよいし、複数の異なるタイプのコンテンツ(例えば、スクリーンキャプチャコンテンツ及び自然ビデオ)のうちの任意のコンテンツを復号するよう適合されてもよい。デコーダシステム(400)は、オペレーティングシステムモジュールとして、アプリケーションライブラリの一部として、又はスタンドアロンアプリケーションとして、実装することができる。概して、デコーダシステム(400)は、チャネル(410)から符号化データを受信し、出力先(490)への出力として再構成フレームを生成する。符号化データは、色空間、色サンプリングレート、及び/又は色深度の適応切り替えにより符号化されたコンテンツを含み得る。
【0071】
デコーダシステム(400)は、ストレージ、通信接続、又は入力としての符号化データのための別のチャネルを表し得るチャネル(410)を含む。チャネル(410)は、チャネル符号化された符号化データを生成する。チャネルデコーダ(420)は、符号化データを処理することができる。例えば、チャネルデコーダ(420)は、(例えば、ITU−T H.222.0|ISO/IEC 13818−1等のメディアプログラムストリーム若しくはトランスポートストリームフォーマット、又は、IETF RFC 3550等のインターネットリアルタイムトランスポートプロトコルフォーマットに従って)メディアストリームとして伝送又は記憶するために収集されたデータを逆パケット化及び/又は逆多重化する。そのような場合、チャネルデコーダ(420)は、メディア伝送ストリームのシンタックスの一部として付加されたシンタックス要素を解析することができる。あるいは、チャネルデコーダ(420)は、(例えば、ISO/IEC 14496−12等のメディアコンテナフォーマットに従って)ファイルとして記憶するために収集された符号化ビデオデータを分離する。そのような場合、チャネルデコーダ(420)は、メディア記憶ファイルのシンタックスの一部として付加されたシンタックス要素を解析することができる。あるいは、より一般的に、チャネルデコーダ(420)は、1以上のメディアシステム逆多重化プロトコル又はトランスポートプロトコルを実装することができる。そのような場合、チャネルデコーダ(420)は、1以上のプロトコルのシンタックスの一部として付加されたシンタックス要素を解析することができる。チャネル(410)又はチャネルデコーダ(420)はまた、例えば、FEC復号及びアナログ信号復調のための他の要素(図示せず)を含み得る。
【0072】
十分な量のデータが受信されるまで、チャネルデコーダ(420)から出力される符号化データ(421)は、一時符号化データ領域(430)に記憶される。符号化データ(421)は、符号化フレーム(431)及びMMCO/RPS情報(432)を含む。符号化データ領域(430)内の符号化データ(421)は、エレメンタリ符号化ビデオビットストリームのシンタックスの一部として、1以上のピクチャの符号化データを含む。符号化データ領域(430)内の符号化データ(421)はまた、(例えば、1以上のSEIメッセージ又はVUIメッセージにおける1以上のパラメータとして、)符号化ビデオデータに関連するメディアメタデータを含み得る。
【0073】
一般に、符号化データ(421)がデコーダ(450)により使用されるまで、符号化データ領域(430)は、そのような符号化データ(421)を一時的に記憶する。その時点で、符号化フレーム(431)及びMMCO/RPS情報(432)の符号化データが、符号化データ領域(430)からデコーダ(450)に伝送される。復号が進むにつれ、新たな符号化データが、符号化データ領域(430)に追加され、符号化データ領域(430)に残っている最も古い符号化データが、デコーダ(450)に伝送される。
【0074】
デコーダ(450)は、符号化フレーム(431)を復号して、対応する復号フレーム(451)を生成する。必要に応じて、復号プロセスを実行するとき、デコーダ(450)は、インターフレーム予測のための参照フレームとして、1以上の以前に復号されたフレーム(469)を使用することができる。デコーダ(450)は、復号フレーム一時メモリ記憶領域(460)から、そのような以前に復号されたフレーム(469)を読み出す。
【0075】
復号中、異なるピクチャ、スライス、ブロック、又はビデオの他のユニットについて、デコーダ(450)は、色空間変換を実行して、YUVタイプの色空間とRGBタイプの色空間との間で、又は、何らかの他の色空間へ/から、変換することができる。デコーダ(450)はまた、色空間変換を実行して、異なるピクチャ、スライス、ブロック、又はビデオの他のユニットについて、色成分を並べ替え、どの色成分がプライマリ成分であるかを変更することができる(例えば、RGBフォーマットとBGRフォーマットとGBRフォーマットとの間で変換することができる)。復号中、デコーダ(450)はまた、再サンプリング処理を実行して、異なるピクチャ、スライス、ブロック、又はビデオの他のユニットについて、色サンプリングレート及び/又は色深度を変更することができる。いくつかの例示的な実装において、デコーダ(450)は、復号中、ピクチャごとに、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。代替的に、デコーダ(450)は、復号中、スライスごとに又はブロックごとに、色空間、色サンプリングレート、及び/又は色深度を切り替えてもよい。
【0076】
一般に、デコーダ(450)は、エントロピ復号、色空間、色サンプリングレート、及び/又は色深度の適応、イントラフレーム予測、動き補償インターフレーム予測、逆量子化、逆周波数変換、及びタイルのマージ等の復号タスクを実行する複数の復号モジュールを含む。デコーダ(450)により実行される正確なオペレーションは、圧縮フォーマットに応じて変わり得る。
【0077】
例えば、デコーダ(450)は、圧縮フレーム又は一連のフレームの符号化データを受信し、復号フレーム(451)を含む出力を生成する。デコーダ(450)において、バッファは、圧縮フレームの符号化データを受け入れ、適切な時間に、受け入れた符号化データをエントロピ復号部に利用可能にする。エントロピ復号部は、通常はエンコーダにおいて実行されたエントロピ符号化の逆を適用することにより、エントロピ符号化された量子化されたデータに加えて、エントロピ符号化されたサイド情報もエントロピ復号する。動き補償部は、再構成されているフレームのインター符号化ブロックの動き補償予測値を形成するために、動き情報を1以上の参照フレームに適用する。イントラフレーム予測モジュールは、隣接する以前に再構成されたサンプル値から、現ブロックのサンプル値を空間的に予測することができる、又は、イントラBC予測に関して、フレーム内のイントラフレーム予測参照領域の以前に再構成されたサンプル値を使用して、現ブロックのサンプル値を予測することができる。この参照領域は、BV値により示され得る。デコーダ(450)はまた、予測残差値を再構成する。逆量子化部は、エントロピ復号されたデータを逆量子化する。例えば、デコーダ(450)は、ビットストリームにおけるシンタックス要素に基づいて、ピクチャ、タイル、スライス、及び/又はビデオの他の部分のためのQPの値を設定し、それに従って変換係数を逆量子化する。逆周波数変換部は、量子化された周波数領域データを空間領域データに変換する。インターフレーム予測ブロックに関して、デコーダ(450)は、再構成された予測残差値を動き補償予測値と結合する。デコーダ(450)は、同様に、予測残差値を、イントラ予測からの予測値と結合することができる。復号フレーム(451)内のブロック境界行及び/又はブロック境界列にわたる不連続さを平滑化するために、適応デブロッキングフィルタが、ビデオデコーダ(450)における動き補償ループ内に含まれる。代替的又は追加的に、他のフィルタリング(デリンギングフィルタリング、ALF、又はSAOフィルタリング等;図示せず)が、ループ内フィルタリングオペレーションとして、適用されてもよい。
【0078】
復号フレーム一時メモリ記憶領域(460)は、複数のフレームバッファ記憶領域(461、462、...、46n)を含む。復号フレーム記憶領域(460)は、復号ピクチャバッファの一例である。デコーダ(450)は、MMCO/RPS情報(432)を使用して、復号フレーム(451)を記憶することができるフレームバッファ(461、462等)を識別する。デコーダ(450)は、そのフレームバッファに復号フレーム(451)を記憶する。
【0079】
出力シーケンサ(480)は、出力順で生成される次のフレームが復号フレーム記憶領域(460)内で利用可能になるときを識別する。出力順で生成される次のフレーム(481)が、復号フレーム記憶領域(460)内で利用可能になったとき、そのフレームが、出力シーケンサ(480)により読み出され、出力先(490)(例えば、ディスプレイ)に出力される。一般に、復号フレーム記憶領域(460)から出力シーケンサ(480)によりフレームが出力される順番は、デコーダ(450)によりフレームが復号される順番とは異なり得る。
【0080】
V.例示的なビデオエンコーダ
図5a及び
図5bは、いくつかの説明する実施形態を協働して実装することができる一般化されたビデオエンコーダ(500)のブロック図である。エンコーダ(500)は、現ピクチャを含む一連のビデオピクチャを、入力ビデオ信号(505)として受信し、符号化ビデオビットストリーム(595)内の符号化データを、出力として生成する。
【0081】
エンコーダ(500)は、ブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、例えば、予測段階、周波数変換段階、及び/又はエントロピ符号化段階において等の様々な段階において、さらに細分割され得る。例えば、ピクチャは、64×64ブロック、32×32ブロック、又は16×16ブロックに分割され得、今度は、それらのブロックが、符号化及び復号のために、サンプル値のより小さなブロックに分割され得る。H.265/HEVC規格のための符号化の実装において、エンコーダは、ピクチャを、CTU(CTB)、CU(CB)、PU(PB)、及びTU(TB)に分割する。
【0082】
エンコーダ(500)は、イントラピクチャ符号化及び/又はインターピクチャ符号化を用いて、ピクチャを圧縮する。エンコーダ(500)のコンポーネントの多くが、イントラピクチャ符号化及びインターピクチャ符号化の両方のために使用される。これらのコンポーネントにより実行される正確なオペレーションは、圧縮される情報のタイプに応じて変わり得る。
【0083】
タイル化モジュール(510)は、任意的に、ピクチャを、同じサイズ又は異なるサイズの複数のタイルに分割する。例えば、タイル化モジュール(510)は、ピクチャ境界を用いてピクチャ内のタイルの水平境界及び垂直境界を規定するタイル行及びタイル列に沿って、ピクチャを分割する。ここで、各タイルは矩形領域である。H.265/HEVC実装において、エンコーダ(500)は、ピクチャを1以上のスライスに分割する。ここで、各スライスは、1以上のスライスセグメントを含む。
【0084】
一般符号化制御部(520)は、入力ビデオ信号(505)のピクチャに加えて、エンコーダ(500)の様々なモジュールからのフィードバック(図示せず)を受信する。概して、一般符号化制御部(520)は、符号化中に符号化パラメータを設定及び変更するために、他のモジュール(タイル化モジュール(510)、変換部/スケーリング部/量子化部(530)、スケーリング部/逆変換部(535)、イントラピクチャ推定部(540)、動き推定部(550)、及びイントラ/インタースイッチ等)に制御信号(図示せず)を供給する。詳細には、一般符号化制御部(520)は、符号化中に、ピクチャごとに、スライスごとに、ブロックごとに、又は何らかの他の単位で、色空間、色サンプリングレート、及び/又は色深度をどのように適応的に切り替えるかを決定することができる。一般符号化制御部(520)はまた、符号化中に中間結果を評価することができる。一般符号化制御部(520)は、符号化中になされた決定を示す一般制御データ(522)を生成するので、対応するデコーダは、整合する決定を行うことができる。一般制御データ(522)は、ヘッダフォーマット化部/エントロピ符号化部(590)に提供される。
【0085】
現ピクチャが、インターピクチャ予測を用いて予測される場合、動き推定部(550)は、1以上の参照ピクチャに対する、入力ビデオ信号(505)の現ピクチャのサンプル値のブロックの動きを推定する。復号ピクチャバッファ(570)は、参照ピクチャとして使用するために、1以上の以前に再構成された符号化ピクチャをバッファする。複数の参照ピクチャが使用される場合、複数の参照ピクチャは、異なる時間的方向からのものであってもよいし、同じ時間的方向からのものであってもよい。動き推定部(550)は、サイド情報として、MVデータ等の動きデータ(552)、マージモードインデックス値、及び参照ピクチャ選択データを生成する。動きデータ(552)は、ヘッダフォーマット化部/エントロピ符号化部(590)及び動き補償部(555)に提供される。
【0086】
動き補償部(555)は、復号ピクチャバッファ(570)からの1以上の再構成された参照ピクチャに、MVを適用する。動き補償部(555)は、現ピクチャのための動き補償予測を生成する。ピクチャについてのセカンダリ成分が、プライマリ成分と同じ解像度を有する場合(例えば、フォーマットが、YUV4:4:4フォーマット又はRGB4:4:4フォーマットである場合)、セカンダリ成分ブロックについて適用されるMV値は、対応するプライマリ成分ブロックについて適用されるMV値と同じであり得る。一方、ピクチャについてのセカンダリ成分が、プライマリ成分より低い解像度を有する場合(例えば、フォーマットが、YUV4:2:0フォーマットである場合)、セカンダリ成分ブロックについて適用されるMV値は、低減され、可能であれば、解像度における差を調整するために丸められ得る(例えば、MV値の垂直成分及び水平成分を2で除算して、それらを整数値に切り捨てる又は丸めることにより)。
【0087】
エンコーダ(500)内の分離パス(separate path)において、イントラピクチャ推定部(540)は、入力ビデオ信号(505)の現ピクチャのサンプル値のブロックのためのイントラピクチャ予測をどのように実行するかを決定する。現ピクチャは、イントラピクチャ符号化を用いて、全体又は一部が符号化され得る。イントラ空間予測に関して、イントラピクチャ推定部(540)は、現ピクチャの再構成(538)の値を使用して、現ピクチャの隣接する以前に再構成されたサンプル値から、現ピクチャの現ブロックのサンプル値をどのように空間的に予測するかを決定する。あるいは、BV値を使用するイントラBC予測に関して、イントラピクチャ推定部(540)は、現ピクチャ内の異なる候補参照領域への、現ブロックのサンプル値の変位を推定する。
図5bにおいて、候補参照領域は、再構成されたサンプル値を含む。代替的に、BV推定のために、候補参照領域は、入力サンプル値を含んでもよい。
【0088】
イントラピクチャ推定部(540)は、サイド情報として、イントラ予測が空間予測を使用するかイントラBC予測を使用するかを示す情報(例えば、イントラブロックごとのフラグ値)、予測モード方向(イントラ空間予測に関して)、及びBV値(イントラBC予測に関して)等のイントラ予測データ(542)を生成する。イントラ予測データ(542)は、ヘッダフォーマット化部/エントロピ符号化部(590)及びイントラピクチャ予測部(545)に提供される。
【0089】
イントラピクチャ予測部(545)は、イントラ予測データ(542)に従って、現ピクチャの隣接する以前に再構成されたサンプル値から、現ピクチャの現ブロックのサンプル値を空間的に予測する。あるいは、イントラBC予測に関して、イントラピクチャ予測部(545)は、現ブロックのBV値により示されるイントラピクチャ予測参照領域の以前に再構成されたサンプル値を使用して、現ブロックのサンプル値を予測する。いくつかの場合において、BV値は、BV予測因子(予測されたBV値)であり得る。他の場合において、BV値は、その予測されたBV値とは異なり得、このような場合、BV差分が、予測されるBV値とBV値との差を示す。ピクチャについてのセカンダリ成分が、プライマリ成分と同じ解像度を有する場合(例えば、フォーマットが、YUV4:4:4フォーマット又はRGB4:4:4フォーマットである場合)、セカンダリ成分ブロックについて適用されるBV値は、対応するプライマリ成分ブロックについて適用されるBV値と同じであり得る。一方、ピクチャについてのセカンダリ成分が、プライマリ成分より低い解像度を有する場合(例えば、フォーマットが、YUV4:2:0フォーマットである場合)、セカンダリ成分ブロックについて適用されるBV値は、低減され、可能であれば、解像度における差を調整するために丸められ得る(例えば、BV値の垂直成分及び水平成分を2で除算して、それらを整数値に切り捨てる又は丸めることにより)。
【0090】
イントラ/インタースイッチは、所与のブロックのための予測(558)が、動き補償予測であるか又はイントラピクチャ予測であるかを選択する。非スキップモードブロックに関して、予測(558)のブロックと、入力ビデオ信号(505)のオリジナルの現ピクチャの対応する部分と、の間の差(あれば)が、残差(518)の値を提供する。非スキップモードブロックに関して、現ピクチャの再構成中に、再構成された残差値が、予測(558)と結合されて、ビデオ信号(505)からのオリジナルのコンテンツのおおよその又は正確な再構成(538)が生成される。(損失圧縮(lossy compression)では、いくつかの情報が、ビデオ信号(505)から失われる。)
【0091】
変換部/スケーリング部/量子化部(530)において、周波数変換部は、空間領域ビデオ情報を周波数領域(すなわち、スペクトル変換)データに変換する。ブロックベースのビデオ符号化に関して、周波数変換部は、離散コサイン変換(「DCT」)、その整数近似、又は別のタイプの順ブロック変換(例えば、離散サイン変換又はその整数近似)を予測残差データ(又は、予測(558)がヌルの場合にはサンプル値データ)のブロックに適用して、周波数変換係数のブロックを生成する。エンコーダ(500)はまた、そのような変換ステップがスキップされることを指示することができる。スケーリング部/量子化部は、変換係数をスケーリングして量子化する。例えば、量子化部は、ピクチャごとに、タイルごとに、スライスごとに、ブロックごとに、周波数固有の単位で、又は他の単位で変わる量子化ステップサイズで、デッドゾーン(dead-zone)スカラ量子化を周波数領域データに適用する。量子化された変換係数データ(532)は、ヘッダフォーマット化部/エントロピ符号化部(590)に提供される。
【0092】
スケーリング部/逆変換部(535)において、スケーリング部/逆量子化部は、量子化された変換係数に対して、逆スケーリング及び逆量子化を実行する。逆周波数変換部は、逆周波数変換を実行して、再構成された予測残差値又はサンプル値のブロックを生成する。非スキップモードブロックに関して、エンコーダ(500)は、再構成された残差値を、予測(558)の値(例えば、動き補償予測値、イントラピクチャ予測値)と結合して、再構成(538)を生成する。スキップモードブロックに関して、エンコーダ(500)は、再構成(538)として、予測(558)の値を使用する。
【0093】
イントラピクチャ予測に関して、再構成(538)の値は、イントラピクチャ推定部(540)及びイントラピクチャ予測部(545)にフィードバックされ得る。また、再構成(538)の値は、後続ピクチャの動き補償予測のためにも使用され得る。再構成(538)の値は、さらにフィルタリングされ得る。フィルタリング制御部(560)は、ビデオ信号(505)の所与のピクチャについて、再構成(538)の値に対して、デブロックフィルタリング及びSAOフィルタリングをどのように実行するかを決定する。フィルタリング制御部(560)は、フィルタリング制御データ(562)を生成する。フィルタリング制御データ(562)は、ヘッダフォーマット化部/エントロピ符号化部(590)及びマージ部/1以上のフィルタ(565)に提供される。
【0094】
マージ部/1以上のフィルタ(565)において、エンコーダ(500)は、異なるタイルからのコンテンツを、ピクチャの再構成バージョンにマージする。エンコーダ(500)は、ピクチャ内の境界にわたる不連続さを適応的に平滑化するために、フィルタリング制御データ(562)に従って、デブロックフィルタリング及びSAOフィルタリングを選択的に実行する。代替的又は追加的に、他のフィルタリング(デリンギングフィルタリング又はALF等;図示せず)が、適用されてもよい。タイル境界は、エンコーダ(500)の設定に応じて、選択的にフィルタリングされ得る又はフィルタリングされず、エンコーダ(500)は、そのようなフィルタリングが適用されたか否かを示すシンタックスを、符号化ビットストリーム内に提供することができる。復号ピクチャバッファ(570)は、後続の動き補償予測において使用するために、再構成された現ピクチャをバッファする。
【0095】
ヘッダフォーマット化部/エントロピ符号化部(590)は、一般制御データ(522)、量子化された変換係数データ(532)、イントラ予測データ(542)、動きデータ(552)、及びフィルタリング制御データ(562)をフォーマット化及び/又はエントロピ符号化する。一般制御データ(522)は、ピクチャ、スライス、ブロック、又はビデオの他のユニットについての色空間、色サンプリングレート、及び/又は色深度を示す信号を含む。そのような信号は、例えば、PPS、スライスヘッダ、ブロックシンタックス構造、又は他のシンタックス構造に含められ得、固定長の値としてエントロピ符号化又はシグナリングされ得る。ヘッダフォーマット化部/エントロピ符号化部(590)はまた、利用可能な色空間を識別又は規定する情報(例えば、予め定められた色空間のリスト、色空間変換演算のためのカスタム行列)、利用可能な色サンプリングレートを識別又は規定する情報(例えば、予め定められた色サンプリングレート、他の色サンプリングレート、又はダウンサンプリング及びアップサンプリングについての演算のアイデンティフィケーションのリスト)、及び/又は、利用可能な色深度を識別又は規定する情報(例えば、予め定められた色深度、他の色深度、又は色深度変換についての演算のアイデンティフィケーションのリスト)をフォーマット化及び/又はエントロピ符号化することができ、これらは、適応切り替え中にデコーダにより使用可能である。
【0096】
ヘッダフォーマット化部/エントロピ符号化部(590)は、符号化データを、符号化ビデオビットストリーム(595)内に提供する。符号化ビデオビットストリーム(595)のフォーマットは、H.265/HEVCフォーマットの変形又は拡張、Windows(登録商標) Media Videoフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、又はMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットであり得る。
【0097】
実装及び所望の圧縮のタイプに応じて、エンコーダ(500)のモジュールを追加してもよいし、省略してもよいし、複数のモジュールに分割してもよいし、他のモジュールと結合してもよいし、且つ/又は同様のモジュールと置換してもよい。代替実施形態において、異なるモジュール及び/又はモジュールの他の構成を有するエンコーダは、説明した技術のうちの1以上を実行する。エンコーダの特定の実施形態は、通常、エンコーダ(500)の変形又は補完バージョンを使用する。エンコーダ(500)内のモジュール間の示された関係は、エンコーダ内の情報の一般的な流れを示すものである。他の関係は、簡潔さのため示されていない。
【0098】
VI.例示的なビデオデコーダ
図6は、いくつかの説明する実施形態を協働して実装することができる一般化されたデコーダ(600)のブロック図である。デコーダ(600)は、符号化ビデオビットストリーム(605)内の符号化データを受信し、再構成ビデオ(695)のためのピクチャを含む出力を生成する。符号化ビデオビットストリーム(605)のフォーマットは、H.265/HEVCフォーマットの変形又は拡張、Windows(登録商標) Media Videoフォーマット、VC−1フォーマット、MPEG−xフォーマット(例えば、MPEG−1、MPEG−2、又はMPEG−4)、H.26xフォーマット(例えば、H.261、H.262、H.263、H.264)、又は別のフォーマットであり得る。
【0099】
デコーダ(600)は、ブロックベースであり、実装に依存するブロックフォーマットを使用する。ブロックは、様々な段階において、さらに細分割され得る。例えば、ピクチャは、64×64ブロック、32×32ブロック、又は16×16ブロックに分割され得、今度は、それらのブロックが、サンプル値のより小さなブロックに分割され得る。H.265/HEVC規格のための復号の実装において、ピクチャは、CTU(CTB)、CU(CB)、PU(PB)、及びTU(TB)に分割される。
【0100】
デコーダ(600)は、イントラピクチャ復号及び/又はインターピクチャ復号を用いて、ピクチャを伸張する。デコーダ(600)のコンポーネントの多くが、イントラピクチャ復号及びインターピクチャ復号の両方のために使用される。これらのコンポーネントにより実行される正確なオペレーションは、伸張される情報のタイプに応じて変わり得る。
【0101】
バッファは、符号化ビデオビットストリーム(605)内の符号化データを受け入れ、受け入れた符号化データを解析部/エントロピ復号部(610)に利用可能にする。解析部/エントロピ復号部(610)は、通常はエンコーダ(500)において実行されたエントロピ符号化の逆(例えば、コンテキスト適応バイナリ算術復号)を適用することにより、エントロピ符号化されたデータをエントロピ復号する。解析及びエントロピ復号の結果として、解析部/エントロピ復号部(610)は、一般制御データ(622)、量子化された変換係数データ(632)、イントラ予測データ(642)、動きデータ(652)、及びフィルタリング制御データ(662)を生成する。一般制御データ(622)は、ピクチャ、スライス、ブロック、又はビデオの他のユニットについての色空間、色サンプリングレート、及び/又は色深度を示す信号を含む。そのような信号は、例えば、PPS、スライスヘッダ、ブロックシンタックス構造、又は他のシンタックス構造に含められ得、固定長の値としてエントロピ符号化又はシグナリングされ得る。解析部/エントロピ復号部(610)はまた、利用可能な色空間を識別又は規定する情報(例えば、予め定められた色空間のリスト、色空間変換演算のためのカスタム行列)、利用可能な色サンプリングレートを識別又は規定する情報(例えば、予め定められた色サンプリングレート、他の色サンプリングレート、又はダウンサンプリング及びアップサンプリングについての演算のアイデンティフィケーションのリスト)、及び/又は、利用可能な色深度を識別又は規定する情報(例えば、予め定められた色深度、他の色深度、又は色深度変換についての演算のアイデンティフィケーションのリスト)を解析及び/又はエントロピ復号することができ、これらは、適応切り替え中にデコーダ(600)により使用可能である。
【0102】
一般復号制御部(620)は、一般制御データ(622)を受信し、復号中に復号パラメータを設定及び変更するために、他のモジュール(スケーリング部/逆変換部(635)、イントラピクチャ予測部(645)、動き補償部(655)、及びイントラ/インタースイッチ等)に制御信号(図示せず)を供給する。詳細には、一般復号制御部(620)は、復号中に、ピクチャごとに、スライスごとに、ブロックごとに、又は何らかの他の単位で、色空間、色サンプリングレート、及び/又は色深度を、デコーダ(600)に切り替えさせることができる。
【0103】
現ピクチャが、インターピクチャ予測を用いて予測される場合、動き補償部(655)は、MVデータ等の動きデータ(652)、参照ピクチャ選択データ、及びマージモードインデックス値を受信する。動き補償部(655)は、復号ピクチャバッファ(670)からの1以上の再構成された参照ピクチャに、MVを適用する。動き補償部(655)は、現ピクチャのインター符号化ブロックのための動き補償予測を生成する。復号ピクチャバッファ(670)は、参照ピクチャとして使用するために、1以上の以前に再構成されたピクチャを記憶する。
【0104】
デコーダ(600)内の分離パスにおいて、イントラピクチャ予測予測部(645)は、イントラ予測が空間予測を使用するかイントラBC予測を使用するかを示す情報(例えば、イントラブロックごとのフラグ値)、予測モード方向(イントラ空間予測に関して)、及びBV値(イントラBC予測に関して)等のイントラ予測データ(642)を受信する。イントラ空間予測に関して、イントラピクチャ予測部(645)は、現ピクチャの再構成(638)の値を使用して、予測モードデータに従って、現ピクチャの隣接する以前に再構成されたサンプル値から、現ピクチャの現ブロックのサンプル値を空間的に予測する。あるいは、BV値を使用するイントラBC予測に関して、イントラピクチャ予測部(645)は、現ブロックのBV値により示されるイントラピクチャ予測参照領域の以前に再構成されたサンプル値を使用して、現ブロックのサンプル値を予測する。
【0105】
イントラ/インタースイッチは、所与のブロックのための予測(658)が、動き補償予測であるか又はイントラピクチャ予測であるかを選択する。例えば、H.265/HEVCシンタックスに従うと、イントラ/インタースイッチは、イントラ予測CU及びインター予測CUを含み得るピクチャのCUについて符号化されたシンタックス要素に基づいて制御され得る。非スキップモードブロックに関して、デコーダ(600)は、予測(658)を、再構成された残差値と結合して、ビデオ信号からのコンテンツの再構成(638)を生成する。スキップモードブロックに関して、デコーダ(600)は、再構成(638)として、予測(658)の値を使用する。
【0106】
非スキップモードモードブロックについて残差を再構成するために、スケーリング部/逆変換部(635)は、量子化された変換係数データ(632)を受信して処理する。スケーリング部/逆変換部(635)において、スケーリング部/逆量子化部は、量子化された変換係数に対して、逆スケーリング及び逆量子化を実行する。逆周波数変換部は、逆周波数変換を実行して、再構成された予測残差値又はサンプル値のブロックを生成する。例えば、逆周波数変換部は、逆ブロック変換を周波数変換係数に適用して、サンプル値データ又は予測残差データを生成する。逆周波数変換は、逆DCT、その整数近似、又は別のタイプの逆周波数変換(例えば、逆離散サイン変換又はその整数近似)であり得る。
【0107】
イントラピクチャ予測に関して、再構成(638)の値は、イントラピクチャ予測部(645)にフィードバックされ得る。インターピクチャ予測に関して、再構成(638)の値は、さらにフィルタリングされ得る。マージ部/1以上のフィルタ(665)において、デコーダ(600)は、異なるタイルからのコンテンツを、ピクチャの再構成バージョンにマージする。デコーダ(600)は、ピクチャ内の境界にわたる不連続さを適応的に平滑化するために、フィルタリング制御データ(662)とフィルタ適応のためのルールとに従って、デブロックフィルタリング及びSAOフィルタリングを選択的に実行する。代替的又は追加的に、他のフィルタリング(デリンギングフィルタリング又はALF等;図示せず)が、適用されてもよい。タイル境界は、デコーダ(600)の設定又は符号化ビットストリームデータ内のシンタックスインジケーションに応じて、選択的にフィルタリングされ得る又はフィルタリングされない。復号ピクチャバッファ(670)は、後続の動き補償予測において使用するために、再構成された現ピクチャをバッファする。
【0108】
デコーダ(600)はまた、後処理フィルタを含み得る。後処理フィルタ(608)は、デリンギングフィルタリング、適応ウィナーフィルタリング、フィルムグレイン再現フィルタリング(film-grain reproduction filtering)、SAOフィルタリング、又は別の種類のフィルタリングを含み得る。
【0109】
実装及び所望の伸張のタイプに応じて、デコーダ(600)のモジュールを追加してもよいし、省略してもよいし、複数のモジュールに分割してもよいし、他のモジュールと結合してもよいし、且つ/又は同様のモジュールと置換してもよい。代替実施形態において、異なるモジュール及び/又はモジュールの他の構成を有するデコーダは、説明した技術のうちの1以上を実行する。デコーダの特定の実施形態は、通常、デコーダ(600)の変形又は補完バージョンを使用する。デコーダ(600)内のモジュール間の示された関係は、デコーダ内の情報の一般的な流れを示すものである。他の関係は、簡潔さのため示されていない。
【0110】
VII.色空間、色サンプリングレート、及び/又は色深度の適応切り替え
符号化中、エンコーダは、様々な点(例えば、符号化モードのより多くのオプション、潜在的により低い量子化ステップサイズ)で、セカンダリ色成分よりも慎重にプライマリ色成分を扱い得る。また、エンコーダは、セカンダリ色成分をサブサンプリングすることにより、相対的により多くのビット(したがって品質)を、プライマリ色成分に割り当てることができる。
【0111】
ビデオシーケンスの異なるピクチャ、スライス、又はブロックのサンプル値は、異なる統計的特性を有し得る。これらの異なる統計的特性は、レート歪み性能の観点で測定され得る符号化効率に影響を及ぼし得る(所与のビットレートについてより低い又はより高い品質;又は、所与の品質についてより低い又はより高いビットレート)。
【0112】
このセクションは、ビデオシーケンスのユニットのための適応符号化及び適応復号の様々な特徴を提示している。ユニットは、ビデオシーケンスのピクチャ、スライス、ブロック、又は他の部分であり得る。例えば、これらの特徴のうちのいくつかは、ビデオシーケンス内のユニットの間の色空間の適応切り替えを含む符号化/復号に関する。他の特徴は、ビデオシーケンス内のユニットの間の色サンプリングレートの適応切り替えを含む符号化/復号に関する。さらに他の特徴は、ビデオシーケンス内のユニットの間の色深度の適応切り替えを含む符号化/復号に関する。これらの特徴は、多くのシナリオにおいて、符号化効率を向上させることができ、組み合わせて又は別々に使用することができる。
【0113】
詳細には、色空間、色サンプリングレート、及び/又は色深度の適応切り替えは、スクリーンキャプチャコンテンツ等の所定の「人工的に」作成されたビデオコンテンツを符号化する際のレート歪み性能又は自然ビデオと人工的に作成されたビデオコンテンツとの混合を符号化する際のレート歪み性能を向上させることができる。
【0114】
A.ビデオのタイプ
一般に、スクリーンキャプチャビデオは、コンピュータスクリーン又は他のディスプレイの出力を表す。
図7は、スクリーンキャプチャのための入力を提供することができる、コンテンツを含むコンピュータデスクトップ環境(710)を示している。例えば、スクリーンキャプチャビデオは、コンピュータデスクトップ(711)全体の一連の画像を表すことができる。あるいは、スクリーンキャプチャビデオは、ゲームコンテンツを含むアプリケーションウィンドウ(713)、ウェブページコンテンツを含むブラウザウィンドウ(712)、又はワードプロセッサコンテンツを含むウィンドウ(714)等の、コンピュータデスクトップ環境のウィンドウのうちの1つのウィンドウについての一連の画像を表すことができる。
【0115】
コンピュータにより生成される人工的に作成されるビデオコンテンツであるので、スクリーンキャプチャコンテンツは、ビデオカメラを使用してキャプチャされる自然ビデオコンテンツと比較して、相対的に少ない離散サンプル値を有する傾向にある。例えば、スクリーンキャプチャコンテンツの領域は、しばしば、単一の均一な色を含むのに対し、自然ビデオコンテンツ内の領域は、徐々に変化する色を含む可能性がより高い。また、スクリーンキャプチャコンテンツは、通常、当該コンテンツが空間的に移動され得るとしても、(例えば、スクロールに起因して)フレームからフレームへと正確に繰り返される異なる構造(例えば、グラフィックス、テキスト文字)を含む。スクリーンキャプチャコンテンツは、しばしば、高クロマサンプリング解像度を有するフォーマット(例えば、YUV4:4:4又はRGB4:4:4)で符号化されるが、より低いクロマサンプリング解像度を有するフォーマット(例えば、YUV4:2:0、YUV4:2:2)で符号化されてもよい。
【0116】
図8は、自然ビデオ(821)及び人工的に作成されたビデオコンテンツを含む混合ビデオ(820)を示している。人工的に作成されたビデオコンテンツは、自然ビデオ(821)の横にあるグラフィック(822)及び自然ビデオ(821)の下を横断するティッカー(ticker)(823)を含む。
図7に示されるスクリーンキャプチャコンテンツと同様に、
図8に示される人工的に作成されたビデオコンテンツは、相対的に少ない離散サンプル値を有する傾向にある。この人工的に作成されたビデオコンテンツはまた、(例えば、スクロールに起因して)フレームからフレームへと正確に繰り返される異なる構造(例えば、グラフィックス、テキスト文字)を有する傾向にある。
【0117】
B.適応切り替えの例
色空間の適応切り替えに関して、シーケンス内のビデオの異なるユニットは、異なる色空間で符号化される。例えば、これらのユニットのうちのいくつかは、YUVタイプの色空間(例えば、YCbCr、YCoCg)で符号化され、他のユニットは、RGBタイプの色空間(例えば、RGB、BGR、GBR)で符号化される。この場合、エンコーダ又はデコーダは、適切なときに、サンプル値に対して色空間変換演算を実行して、YUVタイプの色空間とRGBタイプの色空間との間で切り替える。通常、色空間変換演算は、位置ごとに実行される行列乗算演算として表され得、第1の色空間におけるある位置についてのn個のサンプル値が、n×n行列で乗算されて、第2の色空間におけるその位置についてのn個のサンプル値が生成される。実際には、色空間変換演算は、他の算術を用いて実施されてもよい。
【0118】
色空間の適応切り替えの別の例として、異なるユニットは、プライマリ成分と、成分が(例えば、残差データについて)シグナリングされる順番と、の観点で相違する異なるRGBタイプの色空間で符号化され得る。この場合、エンコーダ又はデコーダは、適切なときに、サンプル値のブロック又はプレーンに対して色空間並べ替え演算を実行して、どの色成分がプライマリ色成分であるかを変更する。
【0119】
いくつかの例示的な実装において、非可逆符号化に関して、エンコーダは、異なる色空間のうちの任意の色空間の間で切り替えることができる。しかしながら、可逆符号化に関して、エンコーダは、可逆色空間変換しか実行しない(例えば、RGB色空間とBGR色空間とGBR色空間との間の色成分の並べ替え、又は、いくつかの実装において、増加された中間色深度を用いたYCoCgへ/からの変換)。
【0120】
色サンプリングレートの適応切り替えに関して、シーケンス内のビデオの異なるユニットは、異なる色サンプリングレートで符号化される。例えば、これらのユニットのいくつかは、4:2:2フォーマット又は4:2:0フォーマット(YUV4:2:2又はYUV4:2:0等)で符号化されるのに対し、他のユニットは、4:4:4フォーマット(YUV4:4:4等)で符号化される。RGBタイプの色空間は、通常、4:4:4という色サンプリングレートを有するが、その色成分が、4:2:2又は4:2:0という色サンプリングレートに従って代わりにサブサンプリングされ得る。
【0121】
水平方向又は垂直方向においてセカンダリ成分のサンプル値をダウンサンプリングするとき、エンコーダ又はデコーダは、単純なサブサンプリング、ローパスフィルタリングとサブサンプリング、又は他のフィルタリングとサブサンプリングを実行することができる。セカンダリ成分のサンプル値の対応するアップサンプリングに関して、エンコーダ又はデコーダは、例えば、サンプル値繰り返し(sample values repetition)及び/又はフィルタリングを用いて、サブサンプリングを逆にする。
【0122】
色深度の適応切り替えに関して、シーケンス内のビデオの異なるユニットは、異なる色深度で符号化される。例えば、これらのユニットのいくつかは、12ビットサンプル値で符号化されるのに対し、他のユニットは、10ビットサンプル値又は8ビットサンプル値で符号化される。色深度の間で変換するとき、エンコーダ又はデコーダは、(丸め係数を追加して又は追加しないで)より高い色深度のサンプル値を切り捨てて、より低い色深度のサンプル値を生成することができる、又は、より低い色深度のサンプル値をスケーリングして、より高い色深度のサンプル値を生成することができる。
【0123】
エンコーダは、通常、12ビットサンプル値を有するRGB4:4:4等の所与のフォーマットの入力ビデオを受信する。エンコーダは、ビデオの所与のユニットについて、入力フォーマットと(異なる色空間、異なる色サンプリングレート、及び/又は異なる色深度を有する)別のフォーマットとの間で変換することができる。色空間適応は、ピクチャレベル、スライスレベル、ブロックレベル、又は何らかの他のレベルで、単独で、又は、色サンプリングレート適応及び/又は色深度適応と組み合わせて、実行され得る。同様に、色サンプリングレート適応は、ピクチャレベル、スライスレベル、ブロックレベル、又は何らかの他のレベルで、単独で、又は、色空間適応及び/又は色深度適応と組み合わせて、実行され得る。色深度適応も、ピクチャレベル、スライスレベル、ブロックレベル、又は何らかの他のレベルで、単独で、又は、色空間適応及び/又は色サンプリングレート適応と組み合わせて、実行され得る。
【0124】
図9は、シーケンス(900)内のピクチャについてのピクチャ適応的な(picture-adaptive)色空間、色サンプリングレート、及び/又は色深度を示している。シーケンス(900)は、一連のピクチャを含む。必要とされるときに、エンコーダは、入力ビデオフォーマットから、所与のピクチャについて選択されたフォーマットに、入力ビデオを変換する。ピクチャ1のフォーマットは、8ビットサンプル値を有するYCbCr4:2:0であり、ピクチャ2のフォーマットは、8ビットサンプル値を有するRGB4:4:4である。ピクチャ3及びピクチャ4は、BGR4:4:4ビデオであるが、ピクチャ3のサンプル値とピクチャ4のサンプル値とは、異なる色深度を有する。
【0125】
図10は、シーケンス内のピクチャ(1000)のスライスについてのスライス適応的な(slice-adaptive)色空間、色サンプリングレート、及び/又は色深度を示している。ピクチャ(1000)は、5つのスライスを含み、これらのスライスの境界が、破線で示されている。例えば、スライス0、スライス1、スライス3、及びスライス4は、スクリーンキャプチャコンテンツ又は他の人工的に作成されたビデオコンテンツに関連付けられたものであり得るのに対し、スライス2は、自然ビデオコンテンツに関連付けられている。スライス0及びスライス3のフォーマットは、10ビットサンプル値を有するBGR4:4:4である。スライス1は、GBR4:4:4ビデオの12ビットサンプル値を含む。スライス2のフォーマットは、8ビットサンプル値を有するYCbCr4:2:0であり、スライス4のフォーマットは、8ビットサンプル値を有するRGB4:4:4である。
【0126】
図11は、シーケンス内のピクチャのスライス(1100)のブロックについてのブロック適応的な(block-adaptive)色空間、色サンプリングレート、及び/又は色深度を示している。スライス(1100)は、3つの異なるブロックサイズを有する16個のブロックを含む。最初の2つのブロックのフォーマットは、8ビットサンプル値を有するYCbCr4:2:0であり、最後のブロックのフォーマットは、10ビットサンプル値を有するYCbCr4:2:0である。ブロック2〜ブロック15は、RGBタイプの色空間における4:4:4というサンプリングレートの12ビットサンプル値を含む。ブロック2〜ブロック15についての色空間は、RGBとBGRとGBRとの間で変化する。
【0127】
C.符号化中の適応切り替えの例
図12は、符号化中に、色空間、色サンプリングレート、及び/又は色深度を適応的に切り替えるための一般化された技術(1200)を示している。
図3若しくは
図5a〜
図5bを参照して説明したエンコーダ等の画像エンコーダ又はビデオエンコーダが、技術(1200)を実行することができる。
【0128】
エンコーダは、シーケンス内のビデオを符号化する(1210)。符号化の一部として、エンコーダは、符号化中に、シーケンス内のビデオの少なくともいくつかのユニットの間で、色空間、色サンプリングレート、及び/又は色深度を切り替える。エンコーダは、ピクチャ内で空間的に、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。エンコーダはまた、ピクチャからピクチャへと時間的に、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。適応切り替えの目的では、ビデオのユニットは、シーケンスのピクチャ、シーケンスの所与のピクチャのスライス、シーケンスの所与のピクチャのブロック、又はビデオシーケンスの他の部分であり得る。
【0129】
例えば、切り替えることは、色空間変換演算を用いて、色空間のうちの2つの色空間の間で変更することを含み得る。色空間変換演算に関して、色空間は、少なくとも1つのYUVタイプの色空間と、少なくとも1つのRGBタイプの色空間と、を含み得る。あるいは、別の例として、切り替えることは、色空間並べ替え演算を用いて、色空間のうちの2つの色空間の間で変更することを含む。色空間並べ替え演算に関して、色空間は、複数のRGBタイプの色空間を含み得る。代替的に、色空間は、他の色空間及び/又はさらなる色空間を含んでもよい。
【0130】
あるいは、別の例として、切り替えることは、色サンプリングレートのうちの2つの色サンプリングレートの間で変更することを含み得る。色サンプリングレートは、4:4:4、4:2:2、4:2:0、及び4:0:0のうちの2以上を含み得る。代替的に、色サンプリングレートは、他の色サンプリングレート及び/又はさらなる色サンプリングレートを含んでもよい。
【0131】
あるいは、別の例として、切り替えることは、色深度のうちの2つの色深度の間で変更することを含み得る。色深度は、1サンプル当たり12ビット、1サンプル当たり10ビット、及び1サンプル当たり8ビットのうちの2以上を含み得る。ビデオの所与のユニットの異なる色成分は、同じ色深度又は異なる色深度を有し得る。代替的に、色深度は、他の色深度及び/又はさらなる色深度を含んでもよい。
【0132】
符号化中、エンコーダは、以前に再構成されたコンテンツのサンプル値のセットに少なくとも部分的に基づいて、現ピクチャ内の現ブロックのサンプル値の予測することができる。イントラピクチャ予測に関して、以前に再構成されたコンテンツのサンプル値のセットは、現ピクチャの一部である。インターピクチャ予測に関して、以前に再構成されたコンテンツのサンプル値のセットは、参照ピクチャの一部である。現ブロックのサンプル値と、以前に再構成されたコンテンツのサンプル値のセットと、が、異なるフォーマットである場合、エンコーダは、変換演算を実行して、予測を容易にすることができる。そのような変換演算の例は、セクションVII.Eで説明される。
【0133】
符号化中、エンコーダはまた、1以上のルールに従って、以前に再構成されたコンテンツについて適応ループ内デブロッキングを実行することができる。1以上のルールは、以前に再構成されたコンテンツ内の2つの隣接ブロックの異なる色空間を考慮し得る。適応デブロッキングについてのルールの例は、セクションVII.Fで説明される。
【0134】
エンコーダは、ビットストリーム内に符号化されたデータを出力する(1220)。符号化されたデータは、シーケンス内のビデオの少なくともいくつかのユニットの間で、色空間、色サンプリングレート、及び/又は色深度がどのように切り替わるかを示す1以上の信号を含む。1以上の信号についてのシンタックス要素の例は、セクションVII.Dで説明される。
【0135】
図13は、符号化中に、色空間、色サンプリングレート、及び/又は色深度を適応的に切り替えるためのより詳細な技術(1300)を示している。
図3若しくは
図5a〜
図5bを参照して説明したエンコーダ等の画像エンコーダ又はビデオエンコーダが、技術(1300)を実行することができる。詳細には、
図13は、エンコーダによりなされるユニットごとの決定を示しているが、符号化についての他のオプションが、
図12を参照して説明されている。
【0136】
エンコーダは、次のユニット(例えば、ピクチャ、スライス、ブロック)を取得し(1310)、そのユニットについて、色空間、色サンプリングレート、及び/又は色深度を設定する(1320)。必要とされるときに、エンコーダは、サンプル値を、そのユニットについて設定された別の色空間、色サンプリングレート、及び/又は色深度に変換し、次いで、そのユニットを符号化する(1330)。エンコーダは、そのユニットについての色空間、色サンプリングレート、及び/又は色深度を示す1以上の信号を含む、そのユニットについての符号化されたデータを出力する(1340)。エンコーダは、次のユニットに進むかどうかをチェックし(1350)、次のユニットに進む場合、次のユニットを取得する(1310)。
【0137】
C.復号中の適応切り替えの例
図14は、復号中に、色空間、色サンプリングレート、及び/又は色深度を適応的に切り替えるための一般化された技術(1400)を示している。
図4又は
図6を参照して説明したデコーダ等の画像デコーダ又はビデオデコーダが、技術(1400)を実行することができる。
【0138】
デコーダは、ビートストリーム内の符号化されたデータを受信する(1410)。符号化されたデータは、シーケンス内のビデオの少なくともいくつかのユニットの間で、色空間、色サンプリングレート、及び/又は色深度がどのように切り替わるかを示す1以上の信号を含む。1以上の信号についてのシンタックス要素の例は、セクションVII.Dで説明される。
【0139】
デコーダは、シーケンス内のビデオを復号する(1420)。復号の一部として、デコーダは、復号中に、シーケンス内のビデオの少なくともいくつかのユニットの間で、色空間、色サンプリングレート、及び/又は色深度を切り替える。デコーダは、ピクチャ内で空間的に、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。デコーダはまた、ピクチャからピクチャへと時間的に、色空間、色サンプリングレート、及び/又は色深度を切り替えることができる。適応切り替えの目的では、ビデオのユニットは、シーケンスのピクチャ、シーケンスの所与のピクチャのスライス、シーケンスの所与のピクチャのブロック、又はビデオシーケンスの他の部分であり得る。
【0140】
例えば、切り替えることは、色空間変換演算を用いて、色空間のうちの2つの色空間の間で変更することを含み得る。色空間変換演算に関して、色空間は、少なくとも1つのYUVタイプの色空間と、少なくとも1つのRGBタイプの色空間と、を含み得る。あるいは、別の例として、切り替えることは、色空間並べ替え演算を用いて、色空間のうちの2つの色空間の間で変更することを含む。色空間並べ替え演算に関して、色空間は、複数のRGBタイプの色空間を含み得る。代替的に、色空間は、他の色空間及び/又はさらなる色空間を含んでもよい。
【0141】
あるいは、別の例として、切り替えることは、色サンプリングレートのうちの2つの色サンプリングレートの間で変更することを含み得る。色サンプリングレートは、4:4:4、4:2:2、4:2:0、及び4:0:0のうちの2以上を含み得る。代替的に、色サンプリングレートは、他の色サンプリングレート及び/又はさらなる色サンプリングレートを含んでもよい。
【0142】
あるいは、別の例として、切り替えることは、色深度のうちの2つの色深度の間で変更することを含み得る。色深度は、1サンプル当たり12ビット、1サンプル当たり10ビット、及び1サンプル当たり8ビットのうちの2以上を含み得る。ビデオの所与のユニットの異なる色成分は、同じ色深度又は異なる色深度を有し得る。代替的に、色深度は、他の色深度及び/又はさらなる色深度を含んでもよい。
【0143】
復号中、デコーダは、以前に再構成されたコンテンツのサンプル値のセットに少なくとも部分的に基づいて、現ピクチャ内の現ブロックのサンプル値を予測することができる。イントラピクチャ予測に関して、以前に再構成されたコンテンツのサンプル値のセットは、現ピクチャの一部である。インターピクチャ予測に関して、以前に再構成されたコンテンツのサンプル値のセットは、参照ピクチャの一部である。現ブロックのサンプル値と、以前に再構成されたコンテンツのサンプル値のセットと、が、異なるフォーマットである場合、デコーダは、変換演算を実行して、予測を容易にすることができる。そのような変換演算の例は、セクションVII.Eで説明される。
【0144】
復号中、デコーダはまた、1以上のルールに従って、以前に再構成されたコンテンツについて適応ループ内デブロッキングを実行することができる。1以上のルールは、以前に再構成されたコンテンツ内の2つの隣接ブロックの異なる色空間を考慮し得る。適応デブロッキングについてのルールの例は、セクションVII.Fで説明される。
【0145】
図15は、復号中に、色空間、色サンプリングレート、及び/又は色深度を適応的に切り替えるためのより詳細な技術(1500)を示している。
図4又は
図6を参照して説明したデコーダ等の画像デコーダ又はビデオデコーダが、技術(1500)を実行することができる。詳細には、
図15は、デコーダによりなされるユニットごとの決定を示しているが、復号についての他のオプションが、
図14を参照して説明されている。
【0146】
デコーダは、次のユニット(例えば、ピクチャ、スライス、ブロック)についての符号化されたデータを取得する(1510)。符号化されたデータは、そのユニットについての色空間、色サンプリングレート、及び/又は色深度を示す1以上の信号を含む。デコーダは、そのユニットについての色空間、色サンプリングレート、及び/又は色深度を決定する(1520)。デコーダは、必要とされるときに、そのユニットについて設定された色空間、色サンプリングレート、及び/又は色深度からサンプル値を変換して、そのユニットを復号する(1530)。デコーダは、次のユニットに進むかどうかをチェックし(1540)、次のユニットに進む場合、次のユニットについての符号化されたデータを取得する(1510)。
【0147】
D.適応切り替え情報のシグナリングの例
このセクションでは、シーケンス内のビデオの少なくともいくつかのユニットの間で、色空間、色サンプリングレート、及び/又は色深度がどのように切り替わるかを示す信号の例が説明される。一般に、ビットストリーム内の信号は、ユニットを符号化/復号する2以上のオプション間の選択を示す。色空間適応に関して、信号は、ユニットを符号化/復号するときに使用される2以上の色空間の間の選択を示す。色サンプリングレート適応に関して、信号は、ユニットを符号化/復号するときに使用される2以上の色サンプリングレートの間の選択を示す。色深度適応に関して、信号は、ユニットを符号化/復号するときに使用される2以上の色深度の間の選択を示す。異なる色深度が、ユニットの異なる色成分についてシグナリングされ得る。
【0148】
信号は、所与のユニットを符号化/復号するための色空間(又は、色サンプリングレート若しくは色深度)についての2つのオプション間の選択を示す、所与のユニットについてのフラグ値であり得る。あるいは、信号は、所与のユニットを符号化/復号するための色空間(又は、色サンプリングレート若しくは色深度)についての3以上のオプション間の選択を示す、所与のユニットについての何らかの他のシンタックス要素(又は、所与のユニットについての複数のフラグ)であり得る。
【0149】
所与のユニットについての信号は、ビットストリームシンタックスの様々なレベルの任意のレベルにおいて存在し得る。ピクチャごとの適応に関して、例えば、色空間(又は、色サンプリングレート若しくは色深度)の選択を示すシンタックス要素は、PPSの一部であり得る。あるいは、スライスごとの適応に関して、色空間(又は、色サンプリングレート若しくは色深度)の選択を示すシンタックス要素は、スライスヘッダの一部であり得る。あるいは、ブロックごとの適応に関して、色空間(又は、色サンプリングレート若しくは色深度)の選択を示すシンタックス要素は、ブロックについてのシンタックス構造(例えば、CUシンタックス構造)の一部であり得る。一般に、ピクチャごとの適応は、スライスごとの適応又はブロックごとの適応よりも柔軟性が低いが、より少ないシグナリングビットしか使用しない。ブロックごとの適応は、スライスごとの適応よりも多くのシグナリングビットを使用するが、より柔軟性が高い。
【0150】
所与のユニットについての信号は、例えば、CABACを用いて、エントロピ符号化され得る、又は、固定長の値としてフォーマット化され得る。所与のユニットについての信号は、予測符号化され得る。この場合、所与のユニットについてのパラメータの差分(デルタ)値が、パラメータの実際の値とパラメータの予測因子との差を表す。予測因子は、より高いシンタックスレベルで(例えば、SPSの一部として、又は、別のシーケンスレイヤパラメータとして)シグナリングされるパラメータの値であり得る。例えば、現ブロック又はスライスについての色深度値は、SPSにより指定された色深度に対する差分(デルタ)値としてシグナリングされ得る。あるいは、予測因子は、ビデオの1以上の以前のユニットについてのパラメータの1以上の実際の値(例えば、最後に符号化されたユニットについてのパラメータの実際の値、又は、所与のユニットの周囲の隣接ユニットにおけるパラメータの実際の値の中央値)に基づいてもよい。例えば、現ブロックについての色深度は、以前の符号化されたブロックの色深度に対する差分(デルタ)値としてシグナリングされてもよい。
【0151】
符号化されたデータはまた、利用可能な色空間を識別又は規定する情報、利用可能な色サンプリングレートを識別又は規定する情報、及び/又は利用可能な色深度を識別又は規定する情報を含み得る。そのような情報は、SPS、PPS、スライスヘッダ、又はビットストリームシンタックスの他の構造の一部としてシグナリングされ得る。利用可能な色空間、色サンプリングレート、又は色深度は、エンコーダ及びデコーダに既知である予め定められたオプションの中から選択され得る。あるいは、エンコーダは、エンコーダ及びデコーダによる使用のために、符号化されたデータにおいて、カスタム色空間(又は、色サンプリングレート若しくは色深度)を指定することができる。例えば、この情報は、色空間のうちの2つの色空間の間の色空間変換演算のために使用可能な値の行列を含み得る。カスタムオプションを指定することは、予め定められたオプションのセットを識別することよりも多くのビットを使用するが、より柔軟性が高い。別の可能なものは、SPS、PPS、スライスヘッダ等の一部としてシグナリングされる識別情報なく、エンコーダ及びデコーダに既知である予め定められたオプションを使用することである。これは、追加の情報のためのビットを使用しないが、オプションのうちの多くが、シーケンスについての符号化中に全く使用されないときには、信号のより効率性の低い符号化につながるおそれがある。
【0152】
利用可能な色空間(又は、色サンプリングレート若しくは色深度)を識別又は規定する情報は、ビデオのユニットについてのオプションの選択を示す信号とともに使用される。例えば、SPSが、利用可能な色空間と、シーケンスについてどの色空間変換が許容されるかと、を識別する情報を含み得、PPS(又は、スライスヘッダ若しくはブロックシンタックス構造)ごとのシンタックス要素が、利用可能な色空間の指定されたリストからの選択を示す。あるいは、スライスヘッダが、利用可能な色サンプリングレートを識別する情報を含み得、ブロックシンタックス構造ごとのシンタックス要素が、利用可能な色サンプリングレートの指定されたリストからの選択を示す。あるいは、前述のバリエーションの何らかの組合せが使用されてもよい。例えば、SPSが、予め定められた色空間のリストを示し得、PPS又はスライスヘッダが、予め定められた色空間のうちの1つの色空間の選択を含む、又は、カスタム色空間についての情報を含む。
【0153】
いくつかの例示的な実装において、さらなるルールが、色空間インジケータのCUレベルのシグナリングについて適用される。現CUが、イントラ空間予測CUである場合、色空間インジケータは、CUシンタックス構造の一部としてシグナリングされ得る。現CUが、イントラBC予測CU又はインターピクチャ予測CUである場合、色空間インジケータは、残差が存在するときにCUシンタックス構造の一部としてシグナリングされ得るが、(例えば、RGBとBGRとGBRとの間の)並べ替えしか伴わない色空間変換は許容されない。このコンテキストにおいて、このような色空間変換は、性能を向上させず、色成分をどのように並べ替えるかをシグナリングするのに費やされるビットは無駄となってしまうであろう。
【0154】
E.予測のための変換演算の例
符号化中又は復号中、エンコーダ又はデコーダは、以前に再構成されたコンテンツのサンプル値のセットに少なくとも部分的に基づいて、現ピクチャ内の現ブロックのサンプル値を予測することができる。イントラピクチャ予測に関して、以前に再構成されたコンテンツのサンプル値のセットは、現ピクチャの一部である(例えば、イントラ空間予測に関しては、空間的に隣接する位置におけるサンプル値である、又は、イントラBC予測に関しては、以前のブロックの再構成されたサンプル値である)。インターピクチャ予測に関して、以前に再構成されたコンテンツのサンプル値のセットは、参照ピクチャの一部である。現ブロックのサンプル値と、以前に再構成されたコンテンツのサンプル値のセットと、が、異なるフォーマットである場合、エンコーダ又はデコーダは、変換演算を実行して、現ブロックのサンプル値の予測を容易にする。
【0155】
例えば、以前に再構成されたコンテンツのサンプル値のセットが、GBR色空間であるあり、現ブロックが、YCbCr色空間で符号化されている場合、エンコーダ又はデコーダは、変換されたサンプル値のセットを使用するイントラピクチャ予測又はインターピクチャ予測の前に、以前に再構成されたコンテンツのサンプル値のセットを、YCbCr色空間に変換することができる。
【0156】
実装を単純にするために、エンコーダ及びデコーダは、「メイン」フォーマットで、以前に再構成されたコンテンツのサンプル値を記憶することができる。メインフォーマットは、特定の色空間における、特定のサンプリングレートであり、サンプル値が特定の色深度を有する、再構成されたコンテンツのための一般的な表現を提供する。実装に応じて、メインフォーマットは、12ビットサンプル値を有するGBR4:4:4、12ビットサンプル値を有するYUV4:4:4、又は、色空間と色サンプリングレートと色深度との何らかの他の組合せであり得る。メインフォーマットは、エンコーダ及びデコーダのために、予め定められている。代替的に、メインフォーマットは、再構成されたコンテンツの記憶のための色空間、色サンプリングレート、及び/又は色深度を示す、ビットストリーム内の信号により指定されてもよい。メインフォーマットは、例えば、多くの場合において変換演算を回避するために、ビデオシーケンスのユニットについて最もよく起こる符号化フォーマットとするように選択され得る。メインフォーマットとして、12ビットサンプル値を有するGBR4:4:4を使用することは、色空間切り替えはよく起こるが、色サンプリングレート切り替えはまれにしか起こらない場合、スクリーンキャプチャコンテンツにとって効率的であり得る。メインフォーマットとして、12ビットサンプル値を有するYUV4:4:4を使用することは、色空間切り替え及び色サンプリングレート切り替えの両方がよく起こる場合、効率的であり得る。
【0157】
図16は、1つのフォーマットで符号化されているブロックのサンプル値の、別のフォーマットの以前に再構成されたコンテンツのサンプル値のセットからの予測のための技術(1600)を示している。エンコーダ又はデコーダが、符号化中又は復号中に、技術(1600)を実行することができる。
【0158】
始めに、エンコーダ又はデコーダは、現ピクチャの現ブロックのサンプル値の予測のために使用されることになる、以前に再構成されたコンテンツのサンプル値のセットを取得する(1610)。以前に再構成されたコンテンツのサンプル値のセットは、予測のタイプに応じて、現ピクチャ又は参照ピクチャであり得る。
【0159】
以前に再構成されたコンテンツのサンプル値は、第1のフォーマット(例えば、メインフォーマット)で記憶されている。エンコーダ又はデコーダは、現ブロックが第1のフォーマットで符号化されているかどうかをチェックする(1620)。より一般的に、エンコーダ又はデコーダは、以前に再構成されたコンテンツのサンプル値のセットと、現ブロックのサンプル値と、が、異なるフォーマットであるかどうかを評価する。
【0160】
現ブロックが第1のフォーマット(例えば、メインフォーマット)で符号化されている場合、エンコーダ又はデコーダは、予測の前に、変換演算を実行する必要がない。エンコーダ又はデコーダは、以前に再構成されたコンテンツのサンプル値のセットを使用して、現ブロックのサンプル値を予測する(1640)。符号化中、エンコーダは、次いで、残差値を生成、符号化、及び再構成することができる(1650)。復号中、デコーダは、残差値を再構成することができる(1650)。エンコーダ又はデコーダは、次いで、予測されたサンプル値に少なくとも部分的に基づいて、現ブロックのサンプル値を再構成する(1660)。非スキップブロックに関して、エンコーダ又はデコーダは、予測されたサンプル値を、再構成された残差値と結合して、再構成されたサンプル値を生成することができる。エンコーダ又はデコーダは、次いで、以前に再構成されたコンテンツの一部として、現ブロックの再構成されたサンプル値を記憶する(1670)。現ブロックは第1のフォーマット(例えば、メインフォーマット)で符号化されているので、エンコーダ又はデコーダは、予測の後に、変換演算を実行する必要がない。
【0161】
一方、現ブロックが第1のフォーマット(例えば、メインフォーマット)で符号化されていない場合、エンコーダ又はデコーダは、第1のフォーマットから、現ブロックが符号化されている第2のフォーマットに、以前に再構成されたコンテンツのサンプル値のセットを変換する(1632)。例えば、第1のフォーマットと第2のフォーマットとが異なる色空間を有する場合、エンコーダ又はデコーダは、色空間変換演算及び/又は色空間並べ替え演算を実行して、以前に再構成されたコンテンツのサンプル値のセットの色空間を、第2のフォーマットに変更する。例えば、エンコーダ又はデコーダは、以下のように、RGB色空間からYCoCg色空間に、以前に再構成されたコンテンツのサンプル値のセットPを変換することができる。
【0162】
RGB色空間におけるある位置についてのサンプル値が、それぞれ、
Ps
R、Ps
G、及びPs
B
であり、現色深度が、
bit_depth
current
であると仮定する。最小サンプル値は、0であり、最大サンプル値は、
(1<<bit_depth
current)-1
(例えば、8ビットサンプル値については255)である。Co及びCgのダイナミックレンジを調整するために、項
add_value
が、1<<(bit_depth
current-1)
(例えば、8ビットサンプル値については128)として定義される。YCoCg空間におけるその位置についてのサンプル値
Ps
Y、Ps
Co、及びPs
Cg
は、
Ps
Y=(Ps
R+(2*Ps
G)+Ps
B)>>2
Ps
Co=((Ps
R-Ps
B)>>1)+add_value
Ps
Cg=(((2*Ps
G)-Ps
R-Ps
B)>>2)+add_value
により算出され得る。
【0163】
サンプル値
Ps
Y、Ps
Co、及びPs
Cg
は、最小サンプル値と最大サンプル値とによって規定されるレンジ内にクリップされる。
【0164】
より一般的に、第1の色空間から第2の色空間への変換のための色変換行列
CC_matrix
1_to_2
は、
[ c
00, c
01, c
02
c
10, c
11, c
12
c
20, c
21, c
22 ]
として定義され得る。
【0165】
出力のダイナミックレンジを調整するために、オフセット
CC_offsets
1_to_2
の行列が使用され得る。オフセット
CC_offsets
1_to_2
は、
[ o
0,
o
1,
o
2 ]
として定義され得る。
【0166】
第1の色空間におけるある位置についてのサンプル値が、
Ps
CC1=[Ps
00, Ps
01, Ps
02]
T
であると仮定する。第2の色空間におけるその位置についてのサンプル値
Ps
CC2
は、
Ps
CC2=CC_matrix
1_to_2*Ps
CC1+CC_offsets
1_to_2
として算出され得る。
【0167】
サンプル値
Ps
CC2
は、適切なレンジにクリップされる。
【0168】
以前に再構成されたコンテンツのサンプル値のセットPのための色空間並べ替え演算は、プライマリ色成分及びセカンダリ色成分の順番を変更するために、サンプル値のブロック又はプレーンの色成分を並べ替えることにより実施され得る。
【0169】
第1のフォーマットと第2のフォーマットとが異なる色サンプリングレートを有する場合、エンコーダ又はデコーダは、(フィルタリングあり又はフィルタリングなしで)ダウンサンプリング又はアップサンプリングを実行して、以前に再構成されたコンテンツのサンプル値のセットの色サンプリングレートを、第2のフォーマットに変更する。例えば、エンコーダ又はデコーダは、以下のように、4:4:4色サンプリングレートから4:2:0色サンプリングレートに、以前に再構成されたコンテンツのサンプル値のセットPを変換することができる。
【0170】
以前に再構成されたコンテンツのサンプル値がYUV4:4:4サンプル値であると仮定する。YUV4:4:4ビデオの空間解像度は、全ての色成分について、
width x height
である。色サンプリングレート変換の後、YUV4:2:0ビデオの空間解像度は、Y成分については、
width x height
であり、U成分及びV成分については、
(width/2) x (height/2)
である。
0≦i<width
であり、
0≦j<height
である各位置
(i, j)
について、エンコーダ又はデコーダは、YUV4:2:0ビデオについてのサンプル値を、
Y
420[i][j]=Y
444[i][j]
U
420[i][j]=(U
444[2*i][2*j]+U
444[2*i+1[2*j]+U
444[2*i][2*j+1]+
U
444[2*i+1][2*j+1])>>2
V
420[i][j]=(V
444[2*i][2*j]+V
444[2*i+1[2*j]+V
444[2*i][2*j+1]+
V
444[2*i+1][2*j+1])>>2
として算出することができる。
【0171】
このアプローチでは、U成分及びV成分についてのサンプル値は、フィルタリングなしで決定される。代替的に、エンコーダ又はデコーダは、ダウンサンプリングされたU成分及びV成分を取得する際に、フィルタリングを用いてもよい。
【0172】
第1のフォーマットと第2のフォーマットとが異なる色深度を有する場合、エンコーダ又はデコーダは、以下のように、色深度
bit_depth
ref
から、現ブロックのサンプル値の色深度
bit_depth
current
に、以前に再構成されたコンテンツのサンプル値のセットPを変更する。
bit_depth
ref>bit_depth
currentである場合
shift=bit_depth
ref-bit_depth
current
add=1<<(shift-1)
P=(P+add)>>shift
bit_depth
ref<bit_depth
currentである場合
shift=bit_depth
current-bit_depth
ref
P<<=shift
【0173】
例えば、第1のフォーマットの色深度が、1サンプル当たり10ビットであり、第2のフォーマットの色深度が、1サンプル当たり8ビットであり、現ブロックが、イントラ空間予測を使用すると仮定する。エンコーダ又はデコーダは、イントラ空間予測において使用される隣接位置の10ビットサンプル値を取得する。これらの10ビットサンプル値は、8ビットサンプル値に変換され、次いで、これらの8ビットサンプル値を使用して、現ブロックのための8ビット予測サンプル値を生成する。
【0174】
変換(1632)の後、エンコーダ又はデコーダは、以前に再構成されたコンテンツの変換されたサンプル値のセットを使用して、現ブロックのサンプル値を予測する(1642)。符号化中、エンコーダは、次いで、残差値を生成、符号化、及び再構成することができる(1652)。復号中、デコーダは、残差値を再構成することができる(1652)。エンコーダ又はデコーダは、次いで、予測されたサンプル値に少なくとも部分的に基づいて、現ブロックのサンプル値を再構成する(1662)。非スキップブロックに関して、エンコーダ又はデコーダは、予測されたサンプル値を、再構成された残差値と結合して、再構成されたサンプル値を生成することができる。
【0175】
この時点において、現ブロックの再構成されたサンプル値は、第2のフォーマットである。現ブロックの再構成されたサンプル値が、再構成されたコンテンツの一部として記憶される前に、第1のフォーマットに変換される。エンコーダ又はデコーダは、第2のフォーマットから第1のフォーマットに、現ブロックの再構成されたサンプル値を変換し(1672)、この時点においては第1のフォーマット(例えば、メインフォーマット)である、現ブロックの変換された再構成されたサンプル値を、以前に再構成されたコンテンツの一部として記憶する(1670)。
【0176】
例えば、第1のフォーマットと第2のフォーマットとが異なる色空間を有する場合、エンコーダ又はデコーダは、色空間変換演算及び/又は色空間並べ替え演算を実行して、現ブロックの再構成されたサンプル値の色空間を、第1のフォーマットに変換する。(第2のフォーマットから第1のフォーマットへの色空間変換演算は、概して、第1のフォーマットから第2のフォーマットへの先の色空間変換演算に類似している。)例えば、エンコーダ又はデコーダは、以下のように、YCoCg色空間からRGB色空間に、現ブロックの再構成されたサンプル値Rを変換することができる。
【0177】
YCoCg色空間におけるある位置についてのサンプル値が、それぞれ、
Rs
Y、Rs
Co、及びRs
Cg
であり、現色深度が、
bit_depth
current
であると仮定する。ダイナミックレンジを調整するために、項
add_value
が、
1<<(bit_depth
current-1)
(例えば、8ビットサンプル値については128)として定義される。RGB色空間におけるその位置についてのサンプル値
Rs
R、Rs
G、及びRs
B
は、
Rs
Co-=add_value
Rs
Cg-=add_value
Rs
R=Rs
Y+Rs
Co-Rs
Cg
Rs
G=Rs
Y+Rs
Cg
Rs
B=Rs
Y-Rs
Co-Rs
Cg
により算出され得る。
【0178】
サンプル値
Rs
R、Rs
G、及びRs
B
は、最小サンプル値と最大サンプル値とにより規定されるレンジ内にクリップされる。
【0179】
より一般的に、第2の色空間から第1の色空間に戻す変換のための色変換行列
CC_matrix
2_to_1
は、
[ c'
00, c'
01, c'
02
c'
10, c'
11, c'
12
c'
20, c'
21, c'
22 ]
として定義され得る。
【0180】
出力のダイナミックレンジを調整するために、オフセット
CC_offsets
2_to_1
の行列が使用され得る。オフセット
CC_offsets
2_to_1
は、
[ o'
0,
o'
1,
o'
2 ]
として定義され得る。
【0181】
第2の色空間における位置についてのサンプル値が、
Rs
CC2=[Rs
00, Rs
01, Rs
02]
T
であると仮定する。第1の色空間におけるその位置についてのサンプル値
Rs
CC1
は、
Rs
CC1=CC_matrix
2_to_1*(Rs
CC2+CC_offsets
2_to_1)
として算出され得る。
【0182】
サンプル値
Rs
CC1
は、適切なレンジにクリップされる。
【0183】
再構成されたサンプル値Rのための色空間並べ替え演算は、プライマリ色成分及びセカンダリ色成分の順番を変更するために、サンプル値のブロック又はプレーンの色成分を並べ替えることにより実施され得る。
【0184】
第1のフォーマットと第2のフォーマットとが異なる色サンプリングレートを有する場合、エンコーダ又はデコーダは、(フィルタリングあり又はフィルタリングなしで)ダウンサンプリング又はアップサンプリングを実行して、現ブロックの再構成されたサンプル値の色サンプリングレートを、第1のフォーマットに変更する。(第2のフォーマットから第1のフォーマットへの色サンプリングレート変換演算は、概して、第1のフォーマットから第2のフォーマットへの先の色サンプリングレート変換演算に類似している。)例えば、エンコーダ又はデコーダは、ダウンサンプリングされた色成分をアップサンプリングすることにより、4:2:0色サンプリングレートから4:4:4色サンプリングレートに、現ブロックの再構成されたサンプル値Rを変換することができる。
【0185】
第1のフォーマットと第2のフォーマットとが異なる色深度を有する場合、エンコーダ又はデコーダは、以下のように、色深度
bit_depth
current
から、再構成されたコンテンツのサンプル値の色深度
bit_depth
ref
に、現ブロックの再構成されたサンプル値Rを変更する。
bit_depth
ref>bit_depth
currentである場合
shift=bit_depth
ref-bit_depth
current
R<<=shift
bit_depth
ref<bit_depth
currentである場合
shift=bit_depth
current-bit_depth
ref
add=1<<(shift-1)
R=(R+add)>>shift
【0186】
エンコーダ又はデコーダは、スライス又はピクチャの他のブロックについて、技術(1600)を繰り返すことができる。
【0187】
図16において、変換(1632)は、予測(1642)の前に生じている。代替的に、いくつかのタイプの予測(例えば、イントラ空間予測、イントラBC予測)に関しては、変換は、予測の後でもよい。この場合、エンコーダ又はデコーダは、以前に再構成されたコンテンツのサンプル値のセットを使用して、現ブロックのサンプル値を予測し、次いで、第1のフォーマットから第2のフォーマットに、現ブロックの予測されたサンプル値を変換する。エンコーダ又はデコーダは、現ブロックの変換された予測されたサンプル値に少なくとも部分的に基づいて、現ブロックのサンプル値を再構成する。
【0188】
例えば、第1のフォーマットの色深度が、1サンプル当たり10ビットであり、第2のフォーマットの色深度が、1サンプル当たり8ビットであり、現ブロックが、イントラ空間予測を使用すると仮定する。エンコーダ又はデコーダは、イントラ空間予測において使用される隣接位置の10ビットサンプル値を取得する。これらの10ビットサンプル値を使用して、10ビット予測サンプル値を生成し、次いで、これらの10ビット予測サンプル値が、8ビットサンプル値に変換される。
【0189】
代替的に、再構成されたコンテンツのユニットのサンプル値は、ユニットが符号化されているフォーマットで記憶されてもよい。それぞれのユニットについての符号化フォーマットの何らかのインジケーションも記憶される。再構成されたコンテンツのサンプル値が、必要とされるときに、予測のために別のフォーマットに変換される。
【0190】
F.デブロッキングオペレーションの例
符号化中又は復号中、エンコーダ又はデコーダは、1以上のルールに従って、以前に再構成されたコンテンツについて適応ループ内デブロッキングを実行することができる。いくつかの場合において、デブロッキングは、異なる色空間で符号化された2つのブロック間の境界にわたって適用され得る。
【0191】
例えば、適応デブロッキングのいくつかの実装において、2つのブロック間の境界についてのデブロッキングフィルタの強度は、これらの隣接ブロックの一方がゼロでない残差値を有するかどうかに少なくとも部分的に基づく。2つの隣接ブロックが異なる色空間を有する場合、これらのブロックの間の境界についてのデブロッキングフィルタの強度は、これらの2つの隣接ブロックのプライマリ成分がゼロでない残差値を有するかどうかに依存し得る。例えば、色空間が、これらの2つのブロックについて異なるとしても、第1の隣接ブロックのプライマリ成分が評価されるとともに、第2の隣接ブロックのプライマリ成分が評価される。フィルタ強度は、これらのブロックの一方のプライマリ成分がゼロでない残差値を有するかどうか依存する。
【0192】
代替的に、1以上のルールは、2つの隣接ブロックの異なる色空間を考慮してもよい。この場合、2つの隣接ブロックが異なる色空間を有する場合、これらのブロックの間の境界についてのデブロッキングフィルタの強度は、これらの2つの隣接ブロックの対応する成分がゼロでない残差値を有するかどうかに依存する。例えば、一方の隣接ブロックの色空間がGBRであり、他方の隣接ブロックの色空間がRGBであると仮定する。両方の色空間とも、RGBタイプの色空間である。G成分についてのフィルタ強度を決定するとき、エンコーダ又はデコーダは、第1のブロックの1番目の成分(G)の残差値と、第2のブロックの2番目の成分(G)の残差値と、を考慮する。適応デブロッキングのこの変形例は、異なるRGBタイプの色空間を有するブロックについて使用され得る。
【0193】
開示した本発明の原理を適用することができる多くの可能な実施形態の観点から、例示した実施形態は、本発明の好ましい例に過ぎないことを認識すべきであり、本発明の範囲を限定するものとして解釈すべきではない。そうではなく、本発明の範囲は、請求項により定められる。したがって、我々は、請求項の範囲及び主旨に含まれる全てを、我々の発明として特許請求する。