[0025]概して、本開示は、映像コーディングにおけるロスレスコーディングモード及びパルスコード変調(PCM)コーディングモードのシグナリングを統一するための技法について説明する。より具体的には、幾つかの例では、本開示の技法は、共同で又は互いに関連して、フラグを用いることによって同じブロックサイズに関するロスレスモード及びPCMモードをシグナリングする。フラグは、コーディングユニット(CU)レベルでシグナリングすることができ、及び、1つ以上の映像ブロックに関するCUのグループ内に存在することができる。ここにおいて説明される技法は、効率を向上させ、ロスレスモード及びPCMモードのシグナリングを調和させる。それらの技法は、フラグのシグナリング効率を調和及び向上させるためにロスレスコーディングモードフラグとPCMコーディングモードフラグとの間での相互作用を定義する。本開示において説明される幾つかの技法は、ロスレスコーディングモードフラグと、PCMコーディングモードフラグと、インループフィルタリングがイネーブルにされるかどうかを示す第3のフラグとの間での相互作用をさらに定義する。
[0026]デジタル映像能力を広範なデバイス内に組み入れることができ、デジタルテレビと、デジタル直接放送システムと、無線放送システムと、パーソナルデジタルアシスタント(PDA)と、ラップトップ又はデスクトップコンピュータと、タブレットコンピュータと、電子書籍リーダーと、デジタルカメラと、デジタル記録デバイスと、デジタルメディアプレーヤーと、ビデオゲームプレイ装置と、ビデオゲームコンソールと、セルラー又は衛星無線電話、いわゆる“スマートフォン”と、ビデオ会議装置と、映像ストリーミングデバイスと、等を含む。デジタル映像デバイスは、映像コーディング技法、例えば、MPEG−2、MPEG−4、ITU−T H.263、ITU−T H.264/MPEG−4、Part10、アドバンストビデオコーディング(Advanced Video Coding(AVC))、現在策定中の高効率映像コーディング(High Efficiency Video Coding(HEVC)規格によって定義される規格、及び該規格の拡張版において説明されるそれら、を実装する。映像デバイスは、該映像コーディング技法を実装することによってより効率的にデジタル映像情報を送信、受信、符号化、復号、及び/又は格納することができる。
[0027]映像コーディング技法は、映像シーケンスに固有の冗長性を低減又は除去するための空間(イントラピクチャ)予測及び/又は時間(インターピクチャ)予測を含む。ブロックに基づく映像コーディングでは、映像スライス(例えば、映像フレーム又は映像フレームの一部分)を映像ブロックに分割することができ、それらは、ツリーブロック、コーディングユニット(CU)及び/又はコーディングノードと呼ぶこともできる。映像ブロックは、同じピクチャ内の近隣ブロック内の基準サンプルに関して空間予測を用いて又はその他の基準ピクチャ内の基準サンプルに関して時間予測を用いて符号化することができる。空間又は時間予測の結果、コーディングされるべきブロックに関する予測ブロックが得られる。残差データは、コーディングされるべきオリジナルのブロックと予測ブロックとの間のピクセル差分を表す。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換することができ、その結果残差変換係数が得られ、次にそれらを量子化することができる。量子化された変換係数は、最初は二次元アレイで配列され、変換係数の一次元ベクトルを生成するために走査することができ、及び映像ビットストリームにおいてさらなる圧縮を達成するためにエントロピーコーディングを適用することができる。
[0028]HEVCのワーキングドラフト7(ここでは“HEVC WD7”と呼ばれる)は、ロスレスコーディングをシグナリングするためにCUレベルにおいて明示のフラグを導入した。ロスレスコーディングモード(ここでは“ロスレスモードとも呼ばれる)”は、ロスを導入するコーディングプロセスがバイパスされるコーディングモードを意味することができる。変換、量子化、及びインループフィルタリングは、符号化されたビットストリームにロスを導入するコーディングプロセスの例である。従って、ロスレスコーディングモードは、変換及び量子化及びインループフィルタリング映像コーディングプロセスをバイパスすることができる。2012年4月27日〜2012年5月7日にスイス ジュネーブで開催された第9回会議においてITU−T SG16 WP3及びISO/IEC JTC/SC29/WG11の映像コーディングに関する共同作業チーム(JCT−VC)のBross、等による文書HCTVC−I1003、“高効率映像コーディング(HEVC)テキスト仕様ドラフト7”が提出されており、それは、2013年6月17日現在では、http://phenix.int-evry.fr/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v6.zipからダウンロード可能である。
[0029]本開示に含まれる技法は、HEVC WD7に関して説明されているが、それらの技法は、最終的なHEVCドラフト(“HEVC Version1”と呼ばれる)仕様に対しても適用可能でありかつ適している。例えば、最終的なHEVC(バージョン1)仕様からはバーストPCMモードが除外されている。2013年1月14日〜2013年1月23日にスイス ジュネーブで開催された第12回会議においてITU−T SG16 WP3及びISO/IEC JTC/SC29/WG11の映像コーディングに関する共同作業チーム(JCT−VC)のBross、等による文書JCTVC−L1003_v34“(FDIS及びラストコールに関する)高効率映像コーディング(HEVC)テキスト仕様ドラフト10”が提出されており、それは、2013年6月17日現在では、http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zipからダウンロード可能である。
[0030]WD7を導入した第9回JCT−VC会議以前のHEVCドラフトのそれまでのバージョンにおいては、ロスレスコーディングが暗黙にシグナリングされていた。すなわち、ロスレスコーディングは、シグナリングされた量子化パラメータ(QP)値が最小の許容可能なQP値(例えば、8ビットの主プロフィールに関して0)であったときにCUに関して使用された。スイスのジュネーブでの第9回JCT−VC会議中に、ロスレスコーディングモードを明示でシグナリングするためにロスレスコーディングモードに関するシグナリング方式が修正された。そのような以前の暗黙のシグナリング(すなわち、シグナリングされたQP値が最小の許容可能なQP値であったときにロスレスコーディングを実施する)代わりに、第9回JCT−VC会議は、ロスレスコーディングをシグナリングするためにコーディングユニット(CU)レベルで明示のフラグを導入した。CUレベルでのフラグ(例えば、transquant_bypass_enable_flag)は、ロスレスコーディングモードをイネーブルにするために導入される。
[0031]ロスレスコーディングモードがイネーブルにされたときには、CUレベルにおいて、ロスレスコーディングモードがその特定のCUに関して使用されるかどうかを示すフラグ(例えば、cu_transquant_bypass_flag)がシグナリングされる。cu_transquant_bypass_flagが1(例えば、真値)である場合は、すべてのインループフィルタリングがディスエーブルにされる。インループフィルタリングは、デブロッキング、アダプティブループフィルタ(ALF)、及びサンプルアダプティブオフセット(SAO)プロセスを含むことができる。変換及び量子化は、同様にバイパスされる。
[0032]HEVC WD7は、PCMモードがイネーブルにされるか又はディスエーブルにされるかをシグナリングするためにSPSレベルでの明示のフラグも含む(pcm_enabled_flag)。PCMコーディングモードは、上記のロスレスコーディングモードと異なるコーディングモードである。PCMコーディングモードは、ピクセル値をPCMサンプルとしてコーディングするモードを意味する。例えば、サンプルは、PCMコーディングモードにおいてPCMサンプルとして直接コーディングされる。幾つかの例では、PCMモードはロッシー(lossy)であり、その場合は、幾つかの数の最下位ビットは捨てられる。幾つかの例では、PCMコーディングモードは、イントラパルスコード変調(IPCM)と呼ぶこともできる。
[0033]PCMコーディングモード(ここでは“PCMモード”とも呼ばれる)は、(例えば、pcm_enabled_flagを設定することによって)SPSレベルにおいてイネーブル又はディスエーブルにすることができる。PCMモードがイネーブルにされる場合は、PCMモードを使用することができる最小及び最大のCUサイズがシグナリングされる。CUレベルフラグ(pcm_flag)は、PCMモードが特定のCUに関して使用中であるかどうかを示す。PCMモードブロックサンプルのラン長(run−length)もシグナリングすることができる。SPSレベルでは他のフラグ(pcm_loop_filter_disable_flag)が使用され、PCMモードブロックにインループフィルタリングが適用されるべきかどうかを示す。
[0034]HEVC WD7では、PCMコーディングモードとロスレスコーディングモードとの間の相互作用は、適切に定義されていない。例えば、現在定義されているロスレスコーディングモード及びPCMコーディングモードが同時にイネーブルにされる場合は、PCMコーディングモードが優先される。本開示の技法は、ロスレスモード及びPCMモードのシグナリング及びインループフィルタとの相互作用を調和させる修正を含む。
[0035]本開示では、符号化及び/又は復号プロセスにおいてロスレス及びPCMモードのシグナリングを調和させるか又は統一するための3つの代替技法が説明される。第1の技法は、PCMモードに関するインループフィルタリングをイネーブルにするために構文要素cu_transquant_bypass_flagを使用することを含む。HEVC WD7では、ピクチャのシーケンス全体に関してPCMコーディングされたブロックに関してループフィルタリングをイネーブル又はディスエーブルにするためにpcm_loop_filter_disable_flagを設定することができる。しかしながら、個々のPCMコーディングされた映像ブロックに関してループフィルタリングをイネーブル又はディスエーブルにするために、特定のPCMコーディングされた映像ブロックに関してループフィルタリングが使用されることを決定するか又は示すためにcu_transquant_bypass_flagを使用することができる。
[0036]例えば、pcm_flagが0に等しく、cu_transquant_bypass_flagが存在していて1に等しい場合は、“ロスレス”コーディングユニットに関して変換、量子化、及びすべてのループフィルタリングがバイパスされる。他方、pcm_flagが0に等しく、cu_transquant_bypass_flagが0に等しい場合は、コーディングユニットに関して変換、量子化、及びすべてのループフィルタリングが行われる。pcm_flagが1に等しく、cu_transquant_bypass_flagが存在していて1に等しい場合は、PCMコーディングされたブロックに関してすべてのループフィルタがバイパスされる(すなわち、PCMコードブロックにループフィルタが適用されない)。他方、cu_transquant_bypass_flagが存在していないか又は0に等しい場合は、PCMコーディングされたブロックにループフィルタが適用される。
[0037]フラグpcm_loop_filter_disable_flagは、SPSから取り除かれる場合と取り除かれない場合がある。pcm_loop_filter_disable_flagが取り除かれる場合は、ピクチャのシーケンス全体に関してPCMコーディングされたブロックに関してループフィルタリングはイネーブルにもディスエーブルにもされない。pcm_loop_filter_disable_flagが存在しており、0に等しい場合は、cu_transquant_bypass_flagは、PCMコーディングされたブロックサンプルに関して引き続きインループフィルタリングをオン又はオフにする。他方、pcm_loop_filter_disable_flagが存在しており、1に等しい場合は、cu_transquant_bypass_flagは、PCMコーディングされたブロックサンプルのインループフィルタリングに対しては影響を有さず、PCMコーディングされたブロックサンプルに関してすべてのインループフィルタリングがディスエーブルにされる。
[0038]代替技法は、cu_transquant_bypass_flagが0又は偽であるときのみにPCMコーディングモードを使用すること及びシグナリングすることを含む。HEVC WD7では、PCモードは、cu_transquant_bypass_flagの値にかかわらずシグナリングされる。すなわち、HEVC WD7では、構文要素cu_transquant_bypass_flagは、映像ブロックがPCMモードを使用時には浪費される。従って、cu_transquant_bypass_flagが0のときのみにPCMモードをシグナリングすることによって、映像コーディングプロセスは、効率が向上し、ビットストリームのサイズを縮小することができる。
[0039]第3の代替技法が説明され、1つの構文要素(cu_transquant_bypass_flag)の存在が、第2の構文要素(pcm_flag)はロスレス又はPCMコーディングモードを選択するものとして解釈されるように定義する。従って、pcm_flagは、階層的にcu_transquant_bypass_flagよりも低いレベルにあるとみなすことができる。フラグpcm_flagは、cu_transquant_bypass_flagが1に等しいときのみにシグナリングされる。この技法では、映像ブロックがPCMモード又はロスレスモードのいずれかを使用する場合は、cu_transquant_bypass_flagは、1に設定される。次に、映像ブロックに関してPCMモード又はロスレスモードのいずれかが適用されたかを示すために又は決定するためにpcm_flagがシグナリングされる。pcm_flagが1である場合は、PCMモードが使用される。pcm_flagが0である場合は、ロスレスコーディングモードが使用される。cu_transquant_bypass_flagが0である場合は、pcm_flagはシグナリングされず、変換、量子化、インループフィルタリングを伴うコーディングが映像ブロックに関して行われる。
[0040]図1は、本開示の技法を利用することができる映像コーディングシステム例10を示すブロック図である。ここで使用される場合において、用語“映像コーダ”は、概して、映像符号器及び映像復号器の両方を意味する。本開示では、用語“映像コーディング”又は“コーディング”は、概して、映像符号化及び映像復号を意味することができる。
[0041]図1に示されるように、映像コーディングシステム10は、ソースデバイス12と、行先デバイス14と、を含む。ソースデバイス12は、符号化された映像データを生成する。従って、ソースデバイス12は、映像符号化デバイスと呼ぶことができる。行先デバイス14は、ソースデバイス12によって生成された符号化された映像データを復号することができる。従って、行先デバイス14は、映像復号デバイスと呼ぶことができる。ソースデバイス12及び行先デバイス14は、映像コーディングデバイスの例であることができる。
[0042]ソースデバイス12及び行先デバイス14は、広範なデバイスを備えることができ、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(例えば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、電話ハンドセット、例えば、いわゆるスマートフォン、テレビ、カメラ、表示装置、デジタルメディアプレーヤー、ビデオゲームコンソール、車載コンピュータ、等を含む。幾つかの例では、ソースデバイス12及び行先デバイス14は、無線通信のために装備することができる。
[0043]行先デバイス14は、チャネル16を介してソースデバイス12から符号化された映像データを受信することができる。チャネル16は、符号化された映像データをソースデバイス12から行先デバイス14に移動させることが可能なタイプの媒体又はデバイスを備えることができる。一例では、チャネル16は、ソースデバイス12が符号化された映像データをリアルタイムで直接行先デバイス14に送信するのを可能にする通信媒体を備えることができる。この例では、ソースデバイス12は、通信規格、例えば、無線通信プロトコル、により符号化された映像データを変調することができ、及び、変調された映像データを行先デバイス14に送信することができる。通信媒体は、無線又は有線の通信媒体、例えば、無線周波数(RF)スペクトル又は1つ以上の物理的送信ライン、を備えることができる。通信媒体は、パケットに基づくネットワーク、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、又はグローバルネットワーク、例えば、インターネット、の一部を形成することができる。通信媒体は、ルータ、スイッチ、基地局、又はソースデバイス12から行先デバイス14への通信を容易にするその他の装置を含むことができる。
[0044]他の例では、チャネル16は、ソースデバイス12によって生成された符号化された映像データを格納する記憶媒体に対応することができる。この例では、行先デバイス14は、ディスクアクセス又はカードアクセスを介して記憶媒体にアクセスすることができる。記憶媒体は、様々なローカルでアクセスされるデータ記憶媒体、例えば、Blue−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、又はその他の適切なデジタル記憶媒体を含むことができる。さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化された映像データを格納するファイルサーバ又は他の中間的な記憶デバイスを含むことができる。この例では、行先デバイス14は、ストリーミング又はダウンロードを介してファイルサーバ又はその他の中間的な記憶デバイスに格納された符号化された映像データにアクセスすることができる。ファイルサーバは、符号化された映像データを格納すること及び符号化された映像データを行先デバイス14に送信することが可能なタイプのサーバであることができる。ファイルサーバ例は、(例えば、ウェブサイトのための)ウェブサーバと、ファイル転送プロトコル(FTP)サーバと、ネットワーク接続記憶(NAS)デバイスと、ローカルディスクドライブと、を含む。行先デバイス14は、インターネット接続を含む標準的なデータ接続を通じて符号化された映像データにアクセスすることができる。データ接続のタイプ例は、ファイルサーバに格納された符号化された映像データにアクセスするのに適する無線チャネル(例えば、Wi−Fi接続)、有線接続(例えば、DSL、ケーブルモデム、等)、又は両方の組み合わせを含むことができる。ファイルサーバからの符号化された映像データの送信は、ストリーミング送信、ダウンロード送信、又は両方の組み合わせであることができる。
[0045]本開示の技法は、無線の用途またはセッティングには限定されない。それらの技法は、映像コーディングに適用することができ、様々なマルチメディア用途、例えば、オーバー・ザ・エアテレビ放送、ケーブルテレビ送信、衛星テレビ送信、例えば、インターネットを介してのストリーミング映像送信、データ記憶媒体への格納のためのデジタル映像の符号化、データ記憶媒体に格納されたデジタル映像の復号、又はその他の用途をサポートする。幾つかの例では、映像コーディングシステム10は、映像ストリーミング、映像再生、映像放送、及び/又は映像テレフォニー、等の用途をサポートするために1方向又は2方向の映像送信をサポートするように構成することができる。
[0046]図1の例では、ソースデバイス12は、映像ソース18と、映像符号器20と、出力インタフェース22と、を含む。幾つかの場合は、出力インタフェース22は、変調器/復調器(モデム)及び/又は送信機を含むことができる。ソースデバイス12において、映像ソース18は、ソース、例えば、映像キャプチャデバイス、例えば、ビデオカメラ、以前にキャプチャされた映像が入った映像アーカイブ、映像コンテンツプロバイダからの映像を受信するための映像フィードインタフェース、及び/又は、コンピュータグラフィックスデータをソース映像して生成するためのコンピュータグラフィックスシステム、又は該ソースの組み合わせ、を含むことができる。
[0047]映像符号器20は、キャプチャされた、予めキャプチャされた、又はコンピュータによって生成された映像を符号化することができる。符号化された映像データは、ソースデバイス12の出力インタフェース22を介して行先デバイス14に直接送信することができる。符号化された映像データは、復号及び/又は再生のために行先デバイス14によってのちにアクセスするために記憶媒体又はファイルサーバに格納することもできる。
[0048]図1の例において、行先デバイス14は、入力インタフェース28と、映像復号器30と、表示装置32と、を含む。幾つかの場合は、入力インタフェース28は、受信機及び/又はモデムを含むことができる。行先デバイス14の入力インタフェース28は、チャネル16を通じて符号化された映像データを受信する。符号化された映像データは、映像データを表現する、映像符号器20によって生成された様々な構文要素を含むことができる。該構文要素は、通信媒体で送信された符号化された映像データとともに含めること、記憶媒体に格納すること、又はファイルサーバに格納することができる。
[0049]表示装置32は、行先デバイス14と一体化することができ又は外部に存在することができる。幾つかの例では、行先デバイス14は、一体化された表示装置を含むことができ及び外部の表示装置とインタフェースするように構成することもできる。その他の例では、行先デバイス14は、表示装置であることができる。概して、表示装置32は、復号された映像データをユーザに表示する。表示装置32は、様々な表示装置、例えば、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、又は他のタイプの表示装置、のうちのいずれかを備えることができる。
[0050]映像符号器20及び映像復号器30は、映像圧縮規格、例えば、現在策定中の高効率映像コーディング(HEVC)規格、により動作することができ、及び、HEVCテストモデル(HM)に準拠することができる。HEVC規格は、ITU−Tビデオコーディングエキスパーツグループ(VCEG)及びISO/IECモーションピクチャエキスパーツグループ(MPEG)の映像コーディングに関する共同作業チーム(JCT−VC)によって策定中である。“HEVCワーキングドラフト7”又は“WD7”と呼ばれるHEVC規格の最近のドラフトが、2012年4月27日〜2012年5月7日にスイス ジュネーブで開催された第9回会議においてITU−T SG16 WP3及びISO/IEC JTC/SC29/WG11の映像コーディングに関する共同作業チーム(JCT−VC)のBross、等による文書JCTVC−I1003、“高効率映像コーディング(HEVC)テキスト仕様ドラフト7”において説明されており、それは、2013年6月17日現在では、http://phenix.it-sudparis.eu/jct/doc_end_user/documents/9_Geneva/wg11/JCTVC-I1003-v3.zipからダウンロード可能である。
[0051]代替として、映像符号器20及び映像復号器30は、その他の独占規格又は工業規格、例えば、ITU−T H.264規格、代替でMPEG−4、Part10、Advanced Video Coding(AVC)と呼ばれる、又は該規格の拡張版により動作することができる。しかしながら、本開示の技法は、いずれの特定のコーディング規格又は技法にも制限されない。その映像圧縮規格及び技法のその他の例は、MPEG−2、ITU−T H.263、及び独占的な又はオープンのソース圧縮形式、例えば、VP8及び関連形式、又はそれらの拡張を含む。
[0052]図1の例には示されていないが、映像符号器20及び映像復号器30は、各々、音声符号器及び復号器と一体化することができ、及び、共通のデータストリーム又は別々のデータストリーム内の音声及び映像の両方の符号化を取り扱うための該当するMUX−DEMUXユニット、又はその他のハードウェア及びソフトウェアを含むことができる。該当する場合は、幾つかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、又はその他のプロトコル、例えば、ユーザデータグラムプロトコル(UDP)に準拠することができる。
[0053]繰り返すと、図1は、単なる例であるにすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間でのデータ通信を必ずしも含まない映像コーディングセッティング(例えば、映像符号化又は映像復号)に適用することができる。その他の例では、データは、ローカルメモリから取り出すこと、ネットワークを通じてストリーミングすること、等であることができる。符号化デバイスは、データを符号化すること及びメモリに格納することができ、及び/又は復号デバイスは、データをメモリから取り出すこと及び復号することができる。多くの例では、符号化及び復号は、互いに通信せず、単にデータを符号化してメモリに格納する及び/又はメモリからデータを取り出して復号するデバイスによって行われる。
[0054]映像符号器20及び映像復号器30は、各々、様々な適切な回路、例えば、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ハードウェア、又はそれらのあらゆる組み合わせのうちのいずれかとして実装することができる。技法がソフトウェア内において部分的に実装されるときには、デバイスは、ソフトウェアに関する命令を適切な、非一時的なコンピュータによって読み取り可能な記憶媒体に格納することができ及び本開示の技法を実行するために1つ以上のプロセッサを用いてハードウェア内で命令を実行することができる。映像符号器20及び映像復号器30の各々は、1つ以上の符号器又は復号器に含めることができ、それらのいずれも、各々のデバイスにおいて結合された符号器/復号器(CODEC)の一部として一体化することができる。
[0055]上記において簡単に述べられているように、映像符号器20は、映像データを符号化する。映像データは、1つ以上のピクチャを備えることができる。これらのピクチャの各々は、映像の一部を形成する静止画像である。幾つかの例では、ピクチャは、映像“フレーム”と呼ぶことができる。映像符号器20が映像データを符号化するときには、映像符号器20は、ビットストリームを生成することができる。ビットストリームは、映像データのコーディングされた表現を形成するビットのシーケンスを含むことができる。ビットストリームは、コーディングされたピクチャと、関連付けられたデータと、を含むことができる。コーディングされたピクチャは、ピクチャのコーディングされた表現である。
[0056]ビットストリームを生成するために、映像符号器20は、映像データ内の各ピクチャに関して符号化動作を行うことができる。映像符号器20がピクチャに関して符号化動作を行うときには、映像符号器20は、一連のコーディングされたピクチャ及び関連付けられたデータを生成することができる。関連付けられたデータは、シーケンスパラメータセットと、ピクチャパラメータセットと、適合化パラメータセットと、その他の構文構造と、を含むことができる。シーケンスパラメータセット(SPS)は、ゼロ以上のシーケンスのピクチャに適用可能なピクチャに適用可能なパラメータを含むことができる。ピクチャパラメータセット(PPS)は、ゼロ以上のシーケンスのピクチャに適用可能なピクチャに適用可能なパラメータを含むことができる。適合化パラメータセット(APS)は、ゼロ以上のピクチャに適用可能なパラメータを含むことができる。APS内のパラメータは、PPS内のパラメータよりも変化しやすいパラメータであることができる。
[0057]コーディングされたピクチャを生成するために、映像符号器20は、ピクチャを等しいサイズの映像ブロックに分割することができる。映像ブロックは、サンプルの二次元アレイであることができる。映像ブロックの各々は、ツリーブロックと関連付けられる。幾つかの例では、ツリーブロックは、最大コーディングユニット(LCU)と呼ぶことができる。HEVCのツリーブロックは、以前の規格、例えば、H.264/AVC、のマクロブロックにほぼ類似することができる。しかしながら、ツリーブロックは、必ずしも特定のサイズには限定されず、1つ以上のコーディングユニット(CU)を含むことができる。映像符号器20は、ツリーブロックの映像ブロックをCUと関連付けられた映像ブロックに分割するために四分木分割を使用することができ、従って、“ツリーブロック”という名称を有する。
[0058]幾つかの例では、映像符号器20は、ピクチャを複数のスライスに分割することができる。これらのスライスの各々は、整数の数のCUを含むことができる。幾つかの例では、スライスは、整数の数のツリーブロックを備える。その他の例では、スライスの境界は、ツリーブロック内に存在することができる。
[0059]ピクチャに関して符号化動作を行う一部として、映像符号器20は、ピクチャの各スライスに関する符号化動作を行うことができる。映像符号器20がスライスに関する符号化動作を行うときには、映像符号器20は、スライスと関連付けられた符号化されたデータを生成することができる。スライスと関連付けられた符号化されたデータは、“コーディングされたスライス”と呼ぶことができる。
[0060]コーディングされたスライスを生成するために、映像符号器20は、スライス内の各ツリーブロックに関する符号化動作を行うことができる。映像符号器20がツリーブロックに関する符号化動作を行うときには、映像符号器20は、コーディングされたツリーブロックを生成することができる。コーディングされたツリーブロックは、ツリーブロックの符号化されたバージョンを表現するデータを備えることができる。
[0061]映像符号器20がコーディングされたスライスを生成するときには、映像符号器20は、ラスター走査(raster scan)順序に従ってスライス内のツリーブロックに関する符号化動作を行う(すなわち、符号化する)ことができる。換言すると、映像符号器20は、スライス内のツリーブロックの最上行を横切って左から右に進み、次に、次に低いツリーブロックの行を横切って左から右に進み、以下同様で、映像符号器20がスライス内のツリーブロックの各々を符号化済みになるまで続く順序でスライスのツリーブロックを符号化することができる。
[0062]ラスター走査順序に従ってツリーブロックを符号化した結果として、所定のツリーブロックの上方及び左のツリーブロックは符号化されているが、所定のツリーブロックの下方及び右のツリーブロックは、まだ符号化されていない。従って、映像符号器20は、所定のツリーブロックを符号化するときには所定のブロックの上方及び左のツリーブロックを符号化することによって生成された情報にアクセスすることができる。しかしながら、映像符号器20は、所定のツリーブロックを符号化時には所定のツリーブロックの下方及び右のツリーブロックを符号化することによって生成された情報にアクセスすることができない。
[0063]コーディングされたツリーブロックを生成するために、映像符号器20は、映像ブロックを徐々に小さくなる映像ブロックに分割するためにツリーブロックの映像ブロックに関する四分木分割を反復的に行うことができる。より小さい映像ブロックの各々は、異なるCUと関連付けることができる。例えば、映像符号器20は、ツリーブロックの映像ブロックを4つの等しいサイズのサブブロックに分割し、それらのサブブロックのうちの1つ以上を4つの等しいサイズのサブ−サブブロックに分割し、以下同様であることができる。分割されたCUは、その映像ブロックがその他のCUと関連付けられた映像ブロックに分割されるCUであることができる。分割されないCUは、その映像ブロックがその他のCUと関連付けられた映像ブロックに分割されないCUであることができる。
[0064]ビットストリーム内の1つ以上の構文要素は、映像符号器20がツリーブロックの映像ブロックを分割することができる最大回数を示すことができる。CUの映像ブロックは、形状が正方形であることができる。CUの映像ブロックのサイズ(すなわち、CUのサイズ)は、8×8ピクセルからツリーブロックの映像ブロックのサイズ(すなわち、ツリーブロックのサイズ)までの範囲であることができ、最大サイズは64×64ピクセル以上である。
[0065]映像符号器20は、z走査順序に従ってツリーブロックの各CUに関する符号化動作を行う(すなわち、符号化する)ことができる。換言すると、映像符号器20は、最上部左のCU、最上部右のCU、最下部左のCU、次に最下部右のCUの順序で符号化することができる。映像符号器20が分割されたCUに関する符号化動作を行うときには、映像符号器20は、z走査順序に従って分割されたCUの映像ブロックのサブブロックと関連付けられたCUを符号化することができる。換言すると、映像符号器20は、最上部左のサブブロックと関連付けられたCU、最上部右のサブブロックと関連付けられたCU、最下部左のサブブロックと関連付けられたCU、次に最下部右のサブブロックと関連付けられたCUの順序で符号化することができる。
[0066]z走査順序に従ってツリーブロックのCUを符号化した結果として、所定のCUの上方、上方左、左、及び下方左のCUが符号化されている。所定のCUの下方及び右のCUはまだ符号化されていない。従って、映像符号器20は、所定のCUを符号化時には所定のCUの近隣の幾つかのCUを符号化することによって生成された情報にアクセスすることができる。しかしながら、映像符号化器20は、所定のCUを符号化時には所定のCUの近隣のその他のCUを符号化することによって生成された情報にはアクセスすることができない。
[0067]映像符号器20が分割されていないCUを符号化するときには、映像符号器20は、そのCUに関する1つ以上の予測ユニット(PU)を生成することができる。CUのPUの各々は、CUの映像ブロック内の異なる映像ブロックと関連付けることができる。映像符号器20は、CUの各PUに関する予測された映像ブロックを生成することができる。PUの予測された映像ブロックは、サンプルのブロックであることができる。映像符号器20は、PUに関する予測された映像ブロックを生成するためにイントラ予測又はインター予測を使用することができる。
[0068]映像符号器20がPUの予測された映像ブロックを生成するためにイントラ予測を使用するときには、映像符号器20は、PUと関連付けられたピクチャの復号されたサンプルに基づいてPUの予測された映像ブロックを生成することができる。映像符号器20がCUのPUの予測された映像ブロックを生成するためにイントラ予測を使用する場合は、CUは、イントラ予測されたCUである。映像符号器20がPUの予測された映像ブロックを生成するためにインター予測を使用するときには、映像符号器20は、PUと関連付けられたピクチャ以外の1つ以上のピクチャの復号されたサンプルに基づいてPUの予測された映像ブロックを生成することができる。映像符号器20がCUのPUの予測された映像ブロックを生成するためにインター予測を使用する場合は、CUは、インター予測されたCUである。
[0069]さらに、映像符号器20がPUに関する予測される映像ブロックを生成するためにインター予測を使用するときには、映像符号器20は、PUに関する動き情報を生成することができる。PUに関する動き情報は、PUの1つ以上の基準ブロックを示すことができる。PUの各基準ブロックは、基準ピクチャ内の映像ブロックであることができる。基準ピクチャは、PUと関連付けられたピクチャ以外のピクチャであることができる。幾つかの例では、PUの基準ブロックは、PUの“基準サンプル”と呼ぶこともできる。映像符号器20は、PUの基準ブロックに基づいてPUに関する予測された映像ブロックを生成することができる。
[0070]映像符号器20がCUの1つ以上のPUに関する予測される映像ブロックを生成した後は、映像符号器20は、CUのPUに関する予測される映像ブロックに基づいてCUに関する残差データを生成することができる。CUに関する残差データは、CUのPUに関する予測される映像ブロック及びCUのオリジナルの映像ブロック内のサンプル間の差分を示すことができる。
[0071]さらに、分割されないCUに関する符号化動作を行う一部として、映像符号器20は、CUの変換ユニット(TU)と関連付けられた残差データの1つ以上のブロック(すなわち、残差映像ブロック)にCUの残差データを分割するためにCUの残差データに関する反復的な四分木分割を行うことができる。CUの各TUは、異なる残差映像ブロックと関連付けることができる。
[0072]映像コーダ20は、TUと関連付けられた変換係数ブロック(すなわち、変換係数のブロック)を生成するためにTUと関連付けられた残差映像ブロックに1つ以上の変換を適用することができる。概念的には、変換係数ブロックは、変換係数の二次元(2D)行列であることができる。
[0073]変換係数ブロックを生成後は、映像符号器20は、変換係数ブロックに関する量子化プロセスを行うことができる。量子化は、概して、可能な場合は変換係数を表すために使用されるデータの量を低減させてさらなる圧縮を提供するために変換係数が量子化されるプロセスを意味する。量子化プロセスは、変換係数の一部又は全部と関連付けられたビット深度を低減させることができる。例えば、量子化中にnビット値が切り捨てられてmビット値になり、ここで、nはmよりも大きい。
[0074]映像符号器20は、各CUを量子化パラメータ(QP)値と関連付けることができる。CUと関連付けられたQP値は、映像符号器20がCUと関連付けられた変換係数ブロックをどのようにして量子化するかを決定することができる。映像符号器20は、CUと関連付けられたQP値を調整することによってCUと関連付けられた変換係数ブロックに適用される量子化度を調整することができる。
[0075]映像符号器20が変換係数ブロックを量子化した後は、映像符号器20は、量子化された変換係数ブロックにおける変換係数を表す構文要素の組を生成することができる。映像符号器20は、エントロピー符号化動作、例えば、コンテキスト適応型バイナリ算術コーディング(CABAC)動作、をこれらの構文要素のうちの一部に適用することができる。その他のエントロピーコーディング技法、例えば、コンテンツ適応型可変長コーディング(CAVLC)、確率間隔分割エントロピー(PIPE)コーディング、又はその他のバイナリ算術コーディング、も使用可能である。
[0076]映像符号器20によって生成されたビットストリームは、一連のネットワーク抽象化層(NAL)ユニットを含むことができる。NALユニットの各々は、NALユニット内のデータのタイプのインディケーション(indication)を含む構文構造及びそのデータを含むバイトであることができる。例えば、NALユニットは、シーケンスパラメータセット、ピクチャパラメータセット、コーディングされたスライス、補足的エンハンスメント情報(SEI)、アクセスユニットデリミッタ(delimiter)、フィラーデータ(filler data)、又はその他のタイプのデータを表すデータを含むことができる。NALユニット内のデータは、様々な構文構造を含むことができる。
[0077]映像復号器30は、映像符号器20によって生成されたビットストリームを受信することができる。ビットストリームは、映像符号器20によって符号化された映像データのコーディングされた表現を含むことができる。映像復号器30がビットストリームを受信するときには、映像復号器30は、ビットストリームに関する構文解釈動作を行うことができる。映像復号器30が構文解釈動作を行うときには、映像復号器30は、ビットストリームから構文要素を抽出することができる。映像復号器30は、ビットストリームから抽出された構文要素に基づいて映像データのピクチャを再構築することができる。構文要素に基づいて映像データを再構築するプロセスは、概して、構文要素を生成するために映像符号器20によって行われるプロセスと相互的であることができる。
[0078]映像復号器30がCUと関連付けられた構文要素を抽出後は、映像復号器30は、構文要素に基づいてCUのPUに関する予測される映像ブロックを生成することができる。さらに、映像復号器30は、CUのTUと関連付けられた変換係数ブロックを逆量子化することができる。映像復号器30は、CUのTUと関連付けられた残差映像ブロックを再構築するために変換係数ブロックに関する逆変換を行うことができる。予測された映像ブロックを生成し、残差映像ブロックを再構築後は、映像復号器30は、予測された映像ブロック及び残差映像ブロックに基づいてCUの映像ブロックを再構築することができる。このようにして、映像復号器30は、ビットストリーム内の構文要素に基づいてCUの映像ブロックを再構築することができる。
[0079]本開示により、映像符号器20及び映像復号器30は、本開示の1つ以上の技法を実装するように構成することができる。本開示の技法は、ロスレスコーディングモード及びPCMコーディングモードのシグナリング及びこれらのコーディングモードとインループフィルタの相互作用を調和させる修正を含む。
[0080]第1の技法は、PCMモードに関するインループフィルタリングをイネーブルにするために構文要素cu_transquant_bypass_flagを使用することを含む。HEVC WD7では、ピクチャのシーケンス全体に関するPCMコーディングされたブロックをループフィルタリングすることをイネーブル又はディスエーブルにするためにpcm_loop_filter_disable_flagを設定することができる。しかしながら、個々のPCMコーディングされた映像ブロックに関するループフィルタリングをイネーブル又はディスエーブルにするために、特定のPCMコーディングされた映像ブロックに関してループフィルタリングが使用されることを決定又は示すためにcu_transquant_bypass_flagを使用することができる。
[0081]例えば、構文要素cu_transquant_bypass_flagは、PCMコーディングモードに関するインループフィルタリングをイネーブルにするためにシグナリングされる。pcm_flagが0に等しく、cu_transquant_bypass_flagが存在しており1に等しい場合は、“ロスレス”コーディングユニットに関して変換、量子化、及びすべてのループフィルタリングがバイパスされる。映像符号器20がPCMコーディングモードで符号化せず、CUに関する変換、量子化、及びすべてのループフィルタリングをバイパスしたCUに関して、映像符号器20は、pcm_flagを0に等しいとして及びcu_transquant_bypass_flagを1に等しいとしてシグナリングする。他方、映像符号器20がCUを符号化するためにPCMコーディングモードを使用せず(例えば、pcm_flagが0に等しい)、CUに関する変換、量子化、及びループフィルタリングを行う場合は、映像符号器20は、0に等しいcu_transquant_bypass_flagをシグナリングする。
[0082]映像符号器20がCUを符号化するためにPCMコーディングモードを使用し(例えば、pcm_flagが1に等しい)、PCMコーディングされたブロックサンプルに関してループフィルタリングが使用されない場合は、映像符号器20は、1に等しいcu_transquant_bypass_flagをシグナリングする。映像符号器20がCUを符号化するためにPCMコーディングモードを使用し(例えば、pcm_flagが1に等しい)、PCMコーディングされたブロックサンプルに関してループフィルタリングが使用される場合は、映像符号器20は、0に等しいcu_transquant_bypass_flagをシグナリングする。
[0083]同様に、映像復号器30が、pcm_flagが0に等しく、cu_transquant_bypass_flagが存在しており、符号化されたCUに関して1に等しいと決定した場合は、映像復号器30は、符号化されたCUに関して逆変換、逆量子化、又はインループフィルタリングを行わずに符号化されたCUを復号する。他方、符号化されたCUがPCMコーディングモードで符号化されなかった(例えば、pcm_flagが0に等しい)と映像復号器30が決定し、及び、フラグcu_transquant_bypass_flagが0に等しいと映像復号器30が決定した場合は、映像復号器30は、符号化されたCUを復号するために逆変換、逆量子化、及びインループフィルタリングを行う。
[0084]同様に、映像復号器30が、符号化されたCUがPCMコーディングモードで符号化された(例えば、pcm_flagが1に等しい)と決定し及びcu_transquant_bypass_flagが1に等しいと決定した場合は、映像復号器30は、符号化されたPCMモードCUに関するインループフィルタリングを行わずに符号化されたPCMモードCUを復号する。他方、映像復号器30が、符号化されたCUがPCMコーディングモードで符号化されたと決定し(例えば、pcm_flagが1に等しい)、ただし、cu_transquant_bypass_flagが0に等しいと決定した場合は、映像復号器30は、符号化されたPCMモードCUを復号するためにインループフィルタリングを行う。
[0085]幾つかの例では、フラグpcm_loop_filter_disable_flagは、映像コーディング仕様におけるSPSから取り除かれる。従って、映像符号器20は、pcm_loop_filter_disable_flagをシグナリングしない。しかしながら、pcm_loop_filter_disable_flagが仕様に含まれている場合で、映像符号器20がpcm_loop_filter_disable_flagをシグナリングし、それが0に等しい場合は、フラグcu_transquant_bypass_flagは、PCMコーディングされたブロックサンプルに関してインループフィルタリングをオン又はオフにすることができる。例えば、映像復号器30が、cm_loop_filter_disable_flagは0に等しいと読んだときには、映像復号器30は、cu_transquant_bypass_flagの値に少なくとも部分的に基づいてPCMブロックサンプルに関してインループフィルタリングを使用する。
[0086]映像符号器20がSPS内のフラグpcm_loop_filter_disable_flagをシグナリングし、pcm_loop_filter_disable_flagが1又は真に等しい場合は、cu_transquant_bypass_flagは、PCMブロックサンプルのインループフィルタリングに対して影響を有さず、PCMコーディングされたブロックサンプルに関してすべてのインループフィルタリングがディスエーブルにされる。
[0087]第2の代替例では、映像符号器20は、cu_transquant_bypass_flagが0又は偽であるときのみにpcm_flagをシグナリングする。同様に、映像復号器30は、pcm_flagが読み取られるべきかどうかを決定する前にcu_transquant_bypass_flagが1又は真であるかどうかを決定する。HEVC WD7では、pcm_flagが特定のCUに関して1である場合は、cu_transquant_bypass_flagにかかわらずPCMモードが使用される。従って、cu_transquant_bypass_flagが0であるときのみにPCMモードをシグナリングすることによって、映像コーディングプロセスは、cu_transquant_bypass_flagの値にかかわらずPCMモードがシグナリングされるHEVC WD7におけるよりも効率的である。
[0088]第3の代替技法において、cu_transquant_bypass_flagの存在は、映像ブロックがロスレスコーディングモード又はPCMコーディングモードのいずれで符号化されたかどうかを識別するものとしてpcm_flagの意味を定義する。フラグpcm_flagは、cu_transquant_bypass_flagが1に等しいときのみにシグナリングされる。この技法では、映像ブロックがPCMモード又はロスレスモードのいずれかを使用する場合(例えば、映像ブロックに関して変換、量子化、及びインループフィルタリングがバイパスされる場合)は、cu_transquant_bypass_flagが1に設定される。映像ブロックに関してPCMモード又はロスレスモードのいずれが適用されたかを示すフラグpcm_flagがシグナリングされる。
[0089]例えば、映像符号器20は、PCMモードを用いて映像ブロックをコーディングするか又は映像ブロックに関して変換、量子化、及びインループフィルタリングをバイパスし(例えば、ロスレスコーディングモード)、映像符号器20は、cu_transquant_bypass_flagを1に等しいとしてシグナリングする。映像符号器20は、cu_transquant_bypass_flagが1に等しいときのみにフラグpcm_flagをシグナリングする。映像符号器20は、映像符号器20がPCMコーディングモードを用いて映像ブロックを符号化したときにはpcm_flagを1に設定する。映像符号器20は、映像符号器20がロスレスコーディングモードを用いて映像ブロックを符号化したときにはpcm_flagを0に設定する。映像符号器20がcu_transquant_bypass_flagを0に等しいとしてシグナリングする場合は、映像符号器20は、pcm_flagをシグナリングせず、映像ブロックはロッシーモードで符号化され、変換、量子化、及びインループフィルタリングが適用される。
[0090]同様に、映像復号器30は、cu_transquant_bypass_flagが1に等しいと決定したときには、PCMモードを用いて符号化された映像ブロックを復号するか又は逆変換、逆量子化及びインループフィルタリングをバイパスする(例えば、ロスレスコーディングモード)。映像復号器30は、cu_transquant_bypass_flagが1に等しいと決定した後のみにフラグpcm_flagを読み取る。映像復号器30は、pcm_flagが1に等しいときにはPCMコーディングモードを用いて符号化された映像ブロックを復号する。映像復号器30は、pcm_flagが0に等しいときにはロスレスコーディングモードを用いて符号化された映像ブロックを復号する。映像復号器30が、cu_transquant_bypass_flagは0に等しいと決定した場合は、映像復号器30は、pcm_flagを探さない又は読み取らない。該例では、映像復号器30は、逆変換、逆量子化を用いて映像ブロックを復号し、インループフィルタリングを適用する。
[0091]図2は、本開示の技法を実装するように構成することができる映像符号器例20を示すブロック図である。図2は、説明を目的として提供され、本開示においては広範囲わたって例示及び説明するものであり、技法を限定するものであるとはみなされるべきでない。説明の目的上、本開示は、HEVCコーディングの観点で映像符号器20について説明する。しかしながら、本開示の技法は、その他のコーディング規格又は方法に対して適用することができる。
[0092]図2の例では、映像符号器20は、複数の機能上のコンポーネントを含む。映像符号器20の機能上のコンポーネントは、予測モジュール100と、残差生成モジュール102と、変換モジュール104と、量子化モジュール106と、逆量子化モジュール108と、逆変換モジュール110と、再構築モジュール112と、フィルタモジュール113と、復号ピクチャバッファ114と、エントロピー符号化モジュール116と、を含む。予測モジュール100は、インター予測モジュール121と、動き推定モジュール122と、動き補償モジュール124と、イントラ予測モジュール126と、を含む。その他の例では、映像符号器20は、それよりも多くの、それよりも少ない、又は異なる機能上のコンポーネントを含むことができる。さらに、動き推定モジュール122及び動き補償モジュール124は、高度に一体化することができるが、説明の目的上、図2の例では別々に表されている。幾つかのコーディングモードが存在し、図2に示されるユニット又はモジュールのうちの1つ以上は、例えば、ロスレスコーディングに関してはバイパスすることができる。幾つかのコーディングモードでは、例えば、ロスレスコーディングのタイプでもあることができるPCMの直接コーディングをサポートするために、図2において具体的に例示されていないユニット又はモジュールも使用することができ、又は幾つかの最下位ビットを各サンプルから廃棄することによって何らかの量子化を適用することができる。
[0093]映像符号器20は、映像データを受信することができる。映像符号器20は、様々なソースから映像データを受信することができる。例えば、映像符号器20は、図1の映像ソース18又は他のソースから映像データを受信することができる。映像データは、一連のピクチャを表すことができる。映像データを符号化するために、映像符号器20は、各ピクチャに関する符号化動作を行うことができる。ピクチャに関する符号化動作を行う一部として、映像符号器20は、ピクチャの各スライスに関する符号化動作を行うことができる。スライスに関する符号化動作を行う一部として、映像符号器20は、スライス内のツリーブロックに関する符号化動作を行うことができる。
[0094]ツリーブロックに関する符号化動作を行う一部として、予測モジュール100は、映像ブロックを徐々に小さくなる映像ブロックに分割するためにツリーブロックの映像ブロックに関する四分木分割を行うことができる。より小さい映像ブロックの各々は、異なるCUと関連付けることができる。例えば、予測モジュール100は、ツリーブロックの映像ブロックを4つの等しいサイズのサブブロックに分割し、それらのサブブロックのうちの1つ以上を4つの等しいサイズのサブ−サブブロックに分割し、以下同様であることができる。
[0095]CUと関連付けられた映像ブロックのサイズは、8×8のサンプルからツリーブロックのサイズまでの範囲であることができ、最大サイズは64×64サンプル以上である。本開示では、“N×N”及び“N by N”は互換可能な形で使用することができ、垂直方向及び水平方向の寸法に関する映像ブロックのサンプルの寸法を意味し、例えば、16×16又は16by16サンプルである。概して、16×16映像ブロックは、垂直方向において16のサンプル(y=16)及び水平方向において16のサンプル(x=16)を有する。同様に、N×Nブロックは、概して、垂直方向においてNのサンプル及び水平方向においてNのサンプルを有し、ここで、Nは、負でない整数値を表す。サンプルは、映像データ表現のために用いられるピクセル値又は他のサンプルフォーマットを意味することができる。
[0096]さらに、ツリーブロックに関する符号化動作を行う一部として、予測モジュール100は、ツリーブロックに関する階層状の四分木データ構造を生成することができる。例えば、ツリーブロックは、四分木データ構造のルートノードに対応することができる。予測モジュール100がツリーブロックの映像ブロックを4つのサブブロックに分割する場合は、ルートノードは、四分木データ構造において4つの子ノードを有する。これらの子ノードの各々は、サブブロックのうちの1つと関連付けられたCUに対応する。予測モジュール100がサブブロックのうちの1つを4つのサブ−サブブロックに分割する場合は、サブブロックと関連付けられたCUに対応するノードは、4つの子ノードを有することができ、それらの各々は、サブーサブブロックのうちの1つと関連付けられたCUに対応する。
[0097]四分木データ構造の各ノードは、対応するツリーブロック又はCUに関する構文データ(例えば、構文要素)を含むことができる。例えば、四分木内のノードは、そのノードに対応するCUの映像ブロックが4つのサブブロックに分割(すなわち分割)されるかどうかを示す分割フラグを含むことができる。CUに関する構文要素は、反復的に定義することができ、CUの映像ブロックがサブブロックに分割されるかどうかに依存することができる。その映像ブロックが分割されないCUは、四分木データ構造における葉ノードに対応することができる。コーディングされたツリーブロックは、対応するツリーブロックに関する四分木データ構造に基づくデータを含むことができる。
[0098]映像符号器20は、ツリーブロックの各々の分割されないCUに関する符号化動作を行うことができる。映像符号器20が分割されないCUに関する符号化動作を行うときには、映像符号器20は、分割されないCUの符号化された表現を表すデータを生成する。
[0099]CUに関する符号化動作を行う一部として、予測モジュール100は、CUの1つ以上のPUの間でCUの映像ブロックを分割することができる。映像符号器20及び映像復号器30は、様々なPUサイズをサポートすることができる。特定のCUのサイズが2N×2Nであると仮定すると、映像符号器20及び映像復号器30は、2N×2N、又はN×NのPUサイズ、及び、2N×2N、2N×N、N×2N、N×N、2N×nU、nL×2N、nR×2N、又は同様の対称的なPUサイズのインター予測をサポートすることができる。映像符号器20及び映像復号器30は、2N×nU、2N×nD、nL×2N、及びnR×2NのPUサイズに関する非対称的な分割をサポートすることもできる。幾つかの例では、予測モジュール100は、CUの映像ブロックの側面に直角でない境界に沿ってCUのPU間でCUの映像ブロックを分割する幾何学的分割を行うことができる。
[0100]インター予測モジュール121は、CUの各PUに関するインター予測を行うことができる。インター予測は、時間的な圧縮を提供することができる。PUに関するインター予測を行うために、動き推定モジュール122は、PUに関する動き情報を生成することができる。動き補償モジュール124は、動き情報およびCUと関連付けられたピクチャ(すなわち、基準ピクチャ)以外のピクチャの復号されたサンプルに基づいてPUに関する予測された映像ブロックを生成することができる。本開示では、動き補償モジュール124によって生成された予測された映像ブロックは、インター予測された映像ブロックと呼ぶことができる。
[0101]スライスは、Iスライス、Pスライス、又はBスライスであることができる。動き推定モジュール122及び動き補償モジュール124は、CUのPUがIスライス内、Pスライス内、又はBスライス内のいずれであるかに依存してそのPUに関して異なる動作を行うことができる。Iスライス内では、すべてのPUがイントラ予測される。従って、PUがIスライス内にある場合は、動き推定モジュール122及び動き補償モジュール124は、PUに関するインター予測を行わない。
[0102]PUがPスライス内にある場合は、PUが入っているピクチャは、“リスト0”と呼ばれる基準ピクチャのリストと関連付けられる。リスト0内の基準ピクチャの各々は、その他のピクチャのインター予測のために使用することができるサンプルを含む。動き推定モジュール122がPスライス内のPUに関して動き推定動作を行うときには、動き推定モジュール122は、PUに関する基準ブロックに関してリスト0内の基準ピクチャを探索することができる。PUの基準ブロックは、PUの映像ブロック内のサンプルに最も密接に対応するサンプルの組、例えば、サンプルのブロック、であることができる。動き推定モジュール122は、基準ピクチャ内のサンプル組がPUの映像ブロック内のサンプルにいかに密接に対応するかを決定するために様々なメトリックを使用することができる。例えば、動き推定モジュール122は、差分絶対値和(SAD)、差分二乗和(SSD)、又はその他の差分メトリックによって、基準ピクチャ内のサンプル組がPUの映像ブロック内のサンプルにいかに密接に対応するかを決定することができる。
[0103]Pスライス内のPUの基準ブロックを識別後は、動き推定モジュール122は、基準ブロックが入ったリスト0内の基準ピクチャを示す基準インデックス及びPUと基準ブロックとの間での空間変位を示す動きベクトルを生成することができる。様々な例において、動き推定モジュール122は、様々な精度の動きベクトルを生成することができる。例えば、動き推定モジュール122は、1/4サンプル精度、1/8サンプル精度、又はその他の分数のサンプル精度で動きベクトルを生成することができる。分数のサンプル精度の場合は、基準ブロック値は、基準ピクチャ内の整数位置サンプル値から内挿することができる。動き推定モジュール122は、基準インデックス及び動きベクトルをPUの動き情報として出力することができる。動き補償モジュール124は、PUの動き情報によって識別された基準ブロックに基づいてPUの予測される映像ブロックを生成することができる。
[0104]PUがBスライス内にある場合は、PUが入っているピクチャは、“リスト0”及び“リスト1”と呼ばれる2つの基準ピクチャリストと関連付けることができる。幾つかの例では、Bスライスが入ったピクチャは、リスト0とリスト1の結合であるリスト結合と関連付けることができる。
[0105]さらに、PUがBスライス内にある場合は、動き推定モジュール122は、PUに関する単方向予測又は2方向予測を行うことができる。動き推定モジュール122がPUに関して単方向予測を行うときには、動き推定モジュール122は、PUに関する基準ブロックに関してリスト0又はリスト1の基準ピクチャを探索することができる。次に、動き推定モジュール122は、基準ブロックが入っているリスト0又はリスト1内の基準ピクチャを示す基準インデックス及びPUと基準ブロックとの間での空間変位を示す動きベクトルを生成することができる。動き推定モジュール122は、基準インデックス、予測方向インジケータ、及び動きベクトルをPUの動き情報として出力することができる。予測方向インジケータは、基準インデックスがリスト0又はリスト1内の基準ピクチャを示すかどうかを示すことができる。動き補償モジュール124は、PUの動き情報によって示される基準ブロックに基づいてPUの予測される映像ブロックを生成することができる。
[0106]動き推定モジュール122がPUに関する単方向予測を行うときには、動き推定モジュール122は、PUに関する基準ブロックに関してリスト0内の基準ピクチャを探索することができ及びPUに関する他の基準ブロックに関してリスト1内の基準ピクチャを探索することもできる。動き推定モジュール122は、基準ブロックが入っているリスト0及びリスト1内の基準ピクチャを示す基準インデックス及び基準ブロックとPUとの間での空間変位を示す動きベクトルを生成することができる。動き補償モジュール124は、PUの動き情報によって示される基準ブロックに基づいてPUの予測される映像ブロックを生成することができる。
[0107]幾つかの例では、動き推定モジュール122は、PUに関する動き情報の完全な組をエントロピー符号化モジュール116に出力しない。むしろ、動き推定モジュール122は、他のPUの動き情報を参照してPUの動き情報をシグナリングすることができる。例えば、動き推定モジュール122は、PUの動き情報が近隣のPUの動き情報に十分に類似すると決定することができる。この例では、動き推定モジュール122は、PUと関連付けられた構文構造において、PUが近隣のPUと同じ動き情報を有することを映像復号器30に示す値を示すことができる。他の例では、動き推定モジュール122は、PUと関連付けられた構文構造において、近隣のPU及び動きベクトル差分(MVD)を識別することができる。動きベクトル差分は、PUの動きベクトルと示された近隣のPUの動きベクトルとの間の差分を示す。映像復号器30は、PUの動きベクトルを決定するために示された近隣のPUの動きベクトル及び動きベクトル差分を使用することができる。第2のPUの動き情報をシグナリングするときに第1のPUの動き情報を参照することによって、映像符号器20は、より少ないビットを用いて第2のPUの動き情報をシグナリングすることができる。
[0108]CUに関する符号化動作を行う一部として、イントラ予測モジュール126は、CUのPUに関するイントラ予測を行うことができる。イントラ予測は、空間的圧縮を提供することができる。イントラ予測モジュール126がPUに関するイントラ予測を行うときには、イントラ予測モジュール126は、同じピクチャ内のその他のPUの復号されたサンプルに基づいてPUに関する予測データを生成することができる。PUに関する予測データは、予測される映像ブロックと、様々な構文要素と、を含むことができる。イントラ予測モジュール126は、Iスライス、Pスライス、及びBスライス内のPUに関するイントラ予測を行うことができる。
[0109]PUに関するイントラ予測を行うために、イントラ予測モジュール126は、PUに関する複数の組の予測データを生成するために複数のイントラ予測モードを使用することができる。イントラ予測モジュール126がPUに関する予測データの組を生成するためにイントラ予測モードを使用するときには、イントラ予測モジュール126は、サンプルを、近隣PUの映像ブロックからPUの映像ブロックを横切ってイントラ予測モードと関連付けられた方向及び/又は傾度で拡張することができる。近隣PUは、PU、CU、及びツリーブロックに関して左から右、最上部から最下部への符号化順序を仮定した場合、PUの上方、右上、左上、又は左であることができる。イントラ予測モジュール126は、PUのサイズに依存して、様々な数のイントラ予測モード、例えば、33の方向性イントラ予測モード、を使用することができる。
[0110]予測モジュール100は、PUに関して動き補償モジュール124によって生成された予測データ又はPUに関してイントラ予測モジュール126によって生成された予測データの中からPUに関する予測データを選択することができる。幾つかの例では、予測モジュール100は、予測データの組のレート/歪みメトリックに基づいてPUに関する予測データを選択する。
[0111]予測モジュール100がイントラ予測モジュール126によって生成された予測データを選択する場合は、予測モジュール100は、PUに関する予測データを生成するために使用されたイントラ予測モード、すなわち、選択されたイントラ予測モード、をシグナリングすることができる。予測モジュール100は、選択されたイントラ予測モードを様々な方法でシグナリングすることができる。例えば、選択されたイントラ予測モードは、近隣のPUのイントラ予測モードと同じである可能性が高い。換言すると、近隣PUのイントラ予測モードは、現在のPUに関する最も可能性が高いモードであることができる。従って、予測モジュール100は、選択されたイントラ予測モードは近隣PUのイントラ予測モードと同じであることを示すための構文要素を生成することができる。
[0112]予測モジュール100がCUのPUに関して予測データを選択した後は、残差生成モジュール102は、CUのPUの予測される映像ブロックをCUの映像ブロックから減じることによってCUに関する残差データを生成することができる。CUの残差データは、CUの映像ブロック内のサンプルの異なるサンプル成分に対応する2D残差映像ブロックを含むことができる。例えば、残差データは、CUのPUの予測される映像ブロック内のサンプルのルミナンス成分とCUのオリジナルの映像ブロック内のサンプルのルミナンス成分との間の差分に対応する残差映像ブロックを含むことができる。さらに、CUの残差データは、CUのPUの予測される映像ブロック内のサンプルのクロミナンス成分とCUのオリジナルの映像ブロック内のサンプルのクロミナンス成分との間の差分に対応する残差映像ブロックを含むことができる。
[0113]予測モジュール100は、CUの残差映像ブロックをサブブロックに分割するために四分木分割を行うことができる。各々の分割されない残差映像ブロックは、CUの異なるTUと関連付けることができる。CUのTUと関連付けられた残差映像ブロックのサイズ及び位置は、CUのPUと関連付けられた映像ブロックのサイズ及び位置に基づく場合と基づかない場合がある。“残差四分木(RQT)”と呼ばれる四分木構造は、残差映像ブロックの各々と関連付けられたノードを含むことができる。CUのTUは、RQTの葉ノードに対応することができる。
[0114]変換モジュール104は、1つ以上の変換をTUと関連付けられた残差映像ブロックに適用することによってCUの各TUに関する1つ以上の変換係数ブロックを生成することができる。変換係数ブロックの各々は、変換係数の2D行列であることができる。変換モジュール104は、TUと関連付けられた残差映像ブロックに対して様々な変換を適用することができる。例えば、変換モジュール104は、離散コサイン変換(DCT)、方向性変換、又は概念的に類似する変換をTUと関連付けられた残差映像ブロックに適用することができる。
[0115]変換モジュール104がTUと関連付けられた変換係数ブロックを生成した後は、量子化モジュール106は、変換係数ブロック内の変換係数を量子化することができる。量子化モジュール106は、CUと関連付けられたQP値に基づいてCUのTUと関連付けられた変換係数ブロックを量子化することができる。
[0116]映像符号器20は、様々な方法でQP値をCUと関連付けることができる。例えば、映像符号器20は、CUと関連付けられたツリーブロックに関するレート−歪み解析を行うことができる。レート−歪み解析では、映像符号器20は、ツリーブロックに関して符号化動作を複数回行うことによってツリーブロックの複数のコーディングされた表現を生成することができる。映像符号器20は、映像符号器20がツリーブロックの異なる符号化された表現を生成するときに異なるQP値をCUと関連付けることができる。映像符号器20は、所定のQP値が最低のビットレート及び歪みメトリックを有するツリーブロックのコーディングされた表現内のCUと関連付けられているときに所定のQP値がCUと関連付けられることをシグナリングすることができる。
[0117]幾つかの例では、映像符号器20は、1つ以上の映像ブロックに関して変換モジュール104及び量子化モジュール106をバイパスする。映像符号器20が映像ブロックに関して変換モジュール104及び量子化モジュール106をバイパスするときには、映像符号器20は、その映像ブロックに関する変換及び量子化を行わない。
[0118]映像符号器20が変換モジュール104及び量子化モジュール106をバイパスする例では、映像復号器30は、逆量子化モジュール108及び逆変換モジュール110を同様にバイパスすることができる。他方、逆量子化モジュール108及び逆変換モジュール110は、変換係数ブロックから残差映像ブロックを再構築するために、逆量子化及び逆変換を変換係数ブロックに適用することができる。再構築モジュール112は、TUと関連付けられた再構築された映像ブロックを生成するために予測モジュール100によって生成された1つ以上の予測される映像ブロックからの対応するサンプルに再構築された残差映像ブロックを加えることができる。このようにしてCUの各TUに関して映像ブロックを再構築することによって、映像符号器20は、CUの映像ブロックを再構築することができる。
[0119]再構築モジュール112がCUの映像ブロックを再構築後は、フィルタモジュール113は、CUと関連付けられた映像ブロック内のブロックキングアーティファクトを低減させるためのデブロッキング動作を行うことができる。フィルタモジュール113は、その他のタイプのフィルタリング(希望される場合)、例えば、サンプルアダプティブオフセット(SAO)フィルタリング、アダプティブループフィルタリング(ALF)、又はその他のタイプのインループ又はポストループフィルタリング、を行うこともできる。幾つかの例では、映像符号器20は、フィルタモジュール113をバイパスする。該例では、映像符号器20は、再構築された映像ブロックに関するインループフィルタリング、例えば、デブロッキング、SAO、ALFフィルタリング、は行わない。
[0120]1つ以上のフィルタリング動作を行うなった後は、フィルタモジュール113は、CUの再構築された映像ブロックを復号ピクチャバッファ114に格納することができる。動き推定モジュール122及び動き補償モジュール124は、後続するピクチャのPUに関するインター予測を行うために再構築された映像ブロックが入った基準ピクチャを使用することができる。さらに、イントラ予測モジュール126は、CUと同じピクチャ内のその他のPUに関するイントラ予測を行うために復号ピクチャバッファ114内の再構築された映像ブロックを使用することができる。
[0121]エントロピー符号化モジュール116は、映像符号器20のその他の機能上のコンポーネントからデータを受信することができる。例えば、エントロピー符号化モジュール116は、量子化モジュール106から変換係数ブロックを受信することができ及び予測モジュール100から構文要素を受信することができる。エントロピー符号化モジュール116がデータを受信するときには、エントロピー符号化モジュール116は、エントロピー符号化されたデータを生成するために1つ以上のエントロピー符号化動作を行うことができる。例えば、映像符号器20は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、変数−変数(V2V)長コーディング動作、構文に基づくコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔パーティショニングエントロピー(PIPE)コーディング動作、又は他のタイプのエントロピー符号化動作をデータに関して行うことができる。エントロピー符号化モジュール116は、エントロピー符号化されたデータを含むビットストリームを出力することができる。
[0122]データに関するエントロピー符号化動作を行う一部として、エントロピー符号化モジュール116は、コンテキストモデルを選択することができる。エントロピー符号化モジュール116がCABAC動作を行っている場合は、コンテキストモデルは、特定のビンが特定の値を有する確率の推定値を示すことができる。CABACに関して、用語“ビン”は、構文要素のバイナリ化されたバージョンのビットを意味するために使用される。
[0123]映像符号器20は、ここにおいて説明される技法のうちの1つ以上を映像符号化プロセスの一部として実装するように構成することができる。ここにおいて説明される1つの技法では、映像符号器20は、PCMモードに関するインループフィルタリングをイネーブルにするために構文要素cu_transquant_bypass_flagをシグナリングする。映像符号器20は、PCMコーディングモードが1つ以上の映像ブロックに関して使用されるかどうかを示すために第1の構文要素(例えば、pcm_flag)を符号化し、PCMモードは、ピクセル値をPCMサンプルとしてコーディングするモードを意味する。映像符号器20は、PCMコーディングモードが使用されるときにインループフィルタリングが適用されるかどうかを示すために及びPCMコーディングモードが1つ以上の映像ブロックに関して使用されないときにロスレスコーディングモードが使用されるかどうかを示すために第2の構文要素(例えば、cu_transquant_bypass_flag)を符号化するように構成することもでき、ロスレスコーディングモードは、コーディングプロセスにおいて変換、量子化、及びインループフィルタリングをバイパスするモードを意味する。PCMコーディングモードが使用されることを第1の構文要素(例えば、pcm_flag)が示すことに応答して、映像符号器20は、第2の構文要素(例えば、cu_transquant_bypass_flag)に少なくとも部分的に基づいてインループフィルタリングを適用する。映像符号器20は、第1の構文要素にかかわらず第2の構文要素を符号化するように構成することもできる。
[0124]例えば、pcm_flagが0に等しく、cu_transquant_bypass_flagが1に等しい場合は、“ロスレス”コーディングユニットに関しては変換、量子化、及びインループフィルタリングがバイパスされる。映像符号器20がPCMコーディングコードで符号化せず、変換、量子化、及びインループフィルタリングをバイパスしたCUに関しては、映像符号器20は、0に等しいpcm_flag及び1に等しいcu_transquant_bypass_flagをシグナリングする。他方、映像符号器20がCUを符号化するためにPCMコーディングモードを使用せず(例えば、pcm_flagが0に等しい)、CUに関して変換、量子化、及びインループフィルタリングを行う場合は、映像符号器20は、0に等しいcu_transquant_bypass_flagをシグナリングする。
[0125]映像符号器20がCUを符号化するためにPCMコーディングモードを使用し(例えば、pcm_flagが1に等しい)、CUに関してインループフィルタリングを行わない(例えば、バイパスした)場合は、映像符号器20は、1に等しいcu_transquant_bypass_flagをシグナリングする。映像符号器20がCUを符号化するためにPCMコーディングモードを使用し(例えば、pcm_flagが1に等しい)、CUに関してインループフィルタリングを行う(例えば、バイパスしなかった)場合は、映像符号器20は、0に等しいcu_transquant_bypass_flagをシグナリングする。すなわち、PCMコーディングモードが使用されるときには、変換は常にバイパスされ、量子化はバイパスされる場合とされない場合があり、インループフィルタリングは、cu_transquant_bypass_flagによって制御される。
[0126]他の技法例では、映像符号器20は、1つ以上の映像ブロックに関してロスレスコーディングモードが使用されるかどうかを示すために構文要素(例えば、cu_transquant_bypass_flag)をコーディングし、及び、ロスレスコーディングモードが使用されることを構文要素が示す場合は1つ以上の映像ブロックをディスエーブルにするように構成され、ロスレスコーディングモードは、コーディングプロセスにおいて変換、量子化、及びインループフィルタリングをバイパスするモードを意味し、PCMモードは、ピクセル値をPCMサンプルとしてコーディングするモードを意味する。
[0127]例えば、映像符号器20は、cu_transquant_bypass_flagが0又は偽であるときのみにpcm_flagをシグナリングする。HEVC WD7では、pcm_flagが特定のCUに関して1である場合は、cu_transquant_bypass_flagにかかわらずPCMモードが使用される。従って、cu_transquant_bypass_flagが0であるときのみにPCMモードをシグナリングする映像符号器20は、HEVC WD7と比較して映像コーディングプロセスの効率を向上させ、ここで、PCMモードは、cu_transquant_bypass_flagの値にかかわらずシグナリングされる。
[0128]例えば、映像符号器20は、1つ以上の映像ブロックに関してPCMコーディングモードが使用されるかどうかを示すために第1の構文要素(例えば、pcm_flag)をコーディングするように構成される。PCMコーディングモードは、1つ以上の映像ブロックのピクセル値をPCMサンプルとしてコーディングするモードを意味する。映像符号器20は、1つ以上の映像ブロックに対してインループフィルタリングが適用されるかどうかを示すために第2の構文要素(例えば、cu_transquant_bypass_flag)をコーディングするようにさらに構成される。PCMコーディングモードが使用されることを第1の構文要素が示す場合は、第2の構文要素は、インループフィルタリングを適用すべきかどうかを示すと解釈される。
[0129]代替技法においては、映像符号器20は、1つ以上の映像ブロックに関してPCMコーディングモード又はロスレスコーディングモードのいずれが使用されるかどうかを示すためにpcm_flagを使用することができる。この例では、pcm_flagは、cu_transquant_bypass_flagよりも階層的に低いレベルにあるとして取り扱われる。すなわち、cu_transquant_bypass_flagは、cu_transquant_bypass_flag及びpcm_flagの両方を制御する。映像符号器20は、2つのフラグ、cu_transquant_bypass_flag及びpcm_flagの組み合わせに基づいて1つ以上の映像ブロックがロスレスコーディングモード又はPCMコーディングモードのいずれを用いて符号化されるかをシグナリングする。
[0130]例えば、映像符号器20がcu_transquant_bypass_flagは1に等しいとしてシグナリングする場合は、これは、1つ以上の映像ブロックを符号化するためにロスレスコーディングモード又はPCMコーディングモードのいずれかが使用されたことを意味する。映像符号器20が1つ以上の映像ブロックを符号化するためにどちらのコーディングモードを使用したかを識別するために、映像符号器20は、pcm_flagをシグナリングする。例えば、映像符号器20は、ロスレスコーディングモードが使用されたことを示すために0に等しいpcm_flagをシグナリングする。同様に、映像符号器20は、PCMコーディングモードが使用されたことを示すために1に等しいpcm_flagをシグナリングする。このように、ロスレスコーディング条件及びPCMコーディング条件は、2つのフラグの組み合わせとして導き出される。その他の例では、同様の機能を達成するためにフラグ及び値の異なる組み合わせを使用することができる。
[0131]例えば、映像符号器20は、1つ以上の映像ブロックに関してロスレスコーディングモードが使用されるか又は1つ以上の映像ブロックに関してパルスコード変調(PCM)モードが使用されるかを示すために第1の構文要素(例えば、cu_transquant_bypass_flag)をコーディングするように構成され、ロスレスコーディングモードは、コーディングプロセスにおいて変換、量子化及びインループフィルタリングをバイパスするモードを意味し、PCMモードは、ピクセル値をPCMサンプルとしてコーディングするモードを意味する。第1の構文要素が真に設定された場合は、映像符号器20は、ロスレスコーディングモードが使用されるか又はPCMモードが使用されるかを示すために第2の構文要素(例えば、pcm_flag)をコーディングするように構成することができる。この例では、映像符号器20は、第1の構文要素、第2の構文要素、及び第3の構文要素(例えば、pcm_loop_disable_flag)に基づいてインループフィルタリング動作をイネーブル又はディスエーブルにすることができる。
[0132]図3は、本開示の技法を実装するように構成することができる映像復号器例30を例示するブロック図である。図3は、説明を目的として提供され、本開示においては広範囲わたって例示及び説明するものであり、技法を限定するものであるとはみなされるべきでない。説明の目的上、本開示は、HEVCコーディングの観点で映像復号器30について説明する。しかしながら、本開示の技法は、その他のコーディング規格又は方法に対して適用することができる。
[0133]図3の例では、映像復号器30は、複数の機能上のコンポーネントを含む。映像復号器30の機能上のコンポーネントは、エントロピー復号モジュール150と、予測モジュール152と、逆量子化モジュール154と、逆変換モジュール156と、再構築モジュール158と、フィルタモジュール159と、復号ピクチャバッファ160と、を含む。予測モジュール152は、動き補償モジュール162と、イントラ予測モジュール164と、を含む。幾つかの例では、映像復号器30は、図2の映像符号器20に関して説明される符号化パス(encoding pass)と概して相互的な復号パスを行うことができる。その他の例では、映像復号器30は、それよりも多くの、それよりも少ない、又は異なる機能上のコンポーネントを含むことができる。
[0134]映像復号器30は、符号化された映像データを備えるビットストリームを受信することができる。ビットストリームは、複数の構文要素を含むことができる。映像復号器30がビットストリームを受信したときには、エントロピー復号モジュール150は、ビットストリームに関して構文解析動作を行うことができる。ビットストリームに関して構文解析動作を行った結果、エントロピー復号モジュール150は、ビットストリームから構文要素を抽出することができる。構文解析動作を行う一部として、エントロピー復号モジュール150は、ビットストリーム内の符号化されたエントロピー符号化された構文要素をエントロピー復号することができる。予測モジュール152、逆量子化モジュール154、逆変換モジュール156、再構築モジュール158、及びフィルタモジュール159は、ビットストリームから抽出された構文要素に基づいて復号された映像データを生成する再構築動作を行うことができる。
[0135]上述されるように、ビットストリームは、一連のNALユニットを備えることができる。ビットストリームのNALユニットは、シーケンスパラメータセットNALユニット、ピクチャパラメータセットNALユニット、SEI NALユニット、等を含むことができる。ビットストリームに関して構文解析動作を行う一部として、エントロピー復号モジュール150は、シーケンスパラメータセットNALユニットからシーケンスパラメータセットを、ピクチャパラメータセットNALユニットからピクチャパラメータセットを、SEI NALユニットからSEIデータを、以下同様、抽出し及びエントロピー復号する構文解析動作を行うことができる。
[0136]さらに、ビットストリームのNALユニットは、コーディングされたスライスNALユニットを含むことができる。ビットストリームに関して構文解析動作を行う一部として、エントロピー復号モジュール150は、コーディングされたスライスNALユニットからコーディングされたスライスを抽出してエントロピー復号する構文解析動作を行うことができる。コーディングされたスライスの各々は、スライスヘッダと、スライスデータと、を含むことができる。スライスヘッダは、スライスに関する構文要素を含むことができる。スライスヘッダ内の構文要素は、スライスが入ったピクチャと関連付けられたピクチャパラメータセットを識別する構文要素を含むことができる。エントロピー復号モジュール150は、スライスヘッダを復元するためにコーディングされたスライス内の構文要素に関して、エントロピー復号動作、例えば、CABAC復号動作、を行うことができる。
[0137]コーディングされたスライスNALユニットからスライスデータを抽出する一部として、エントロピー復号モジュール150は、スライスデータ内のコーディングされたCUから構文要素を抽出する構文解析動作を行うことができる。抽出された構文要素は、変換係数ブロックと関連付けられた構文要素を含むことができる。エントロピー復号モジュール150は、それらの構文要素の一部に関するCABAC復号動作を行うことができる。
[0138]エントロピー復号モジュール150が分割されないCUに関して構文解析動作を行った後は、映像復号器30は、分割されないCUに関して再構築動作を行うことができる。分割されないCUに関して再構築動作を行うために、映像復号器30は、CUの各TUに関して再構築動作を行うことができる。CUの各TUに関して再構築動作を行うことによって、映像復号器30は、CUと関連付けられた残差映像ブロックを再構築することができる。
[0139]TUに関する再構築動作を行う一部として、逆量子化モジュール154は、TUと関連付けられた変換係数ブロックを逆量子化、すなわち、量子化解除(de−quantize)することができる。逆量子化モジュール154は、HEVCに関して提案されるか又はH.264復号基準によって定義される逆量子化プロセスと同様の方法で変換係数ブロックを逆量子化することができる。逆量子化モジュール154は、量子化度、そして同様に、適用すべき逆量子化モジュール154に関する逆量子化度、を決定するために変換係数ブロックのCUに関して映像符号器20によって計算された量子化パラメータQPを使用することができる。
[0140]逆量子化モジュール154が変換係数ブロックを逆量子化した後は、逆変換モジュール156は、変換係数ブロックと関連付けられたTUに関する残差映像ブロックを生成することができる。逆変換モジュール156は、TUに関する残差映像ブロックを生成するために変換係数ブロックに逆変換を適用することができる。例えば、逆変換モジュール156は、逆DCT、逆整数変換、逆Karhunen−Loeve変換(KLT)、逆回転変換、逆方向性変換、又は他の逆変換を変換係数ブロックに適用することができる。
[0141]幾つかの例では、逆変換モジュール156は、映像符号器20からのシグナリングに基づいて変換係数ブロックに適用するための逆変換を決定することができる。該例では、逆変換モジュール156は、変換係数ブロックと関連付けられたツリーブロックに関する四分木のルートノードにおいてシグナリングされた変換に基づいて逆変換を決定することができる。その他の例では、逆変換モジュール156は、1つ以上のコーディング上の特徴、例えば、ブロックサイズ、コーディングモード、等から逆変換を推論することができる。幾つかの例では、逆変換モジュール156は、カスケード形式の逆変換を適用することができる。
[0142]しかしながら、幾つかの例では、映像復号器30は、ロスレスコーディングモードを用いて1つ以上の映像ブロックが符号化されたと決定する。該例では、映像復号器30は、1つ以上の映像ブロックを復号するときに逆量子化モジュール154、逆変換モジュール156及びフィルタリングモジュール159をバイパスする。
[0143]幾つかの例では、動き補償モジュール162は、内挿フィルタに基づいて内挿を行うことによってPUの予測された映像ブロックを向上させることができる。サブサンプル精度での動き補償のために使用される内挿フィルタに関する識別子を構文要素に含めることができる。動き補償モジュール162は、基準ブロックの整数以下の(sub−integer)サンプルに関する内挿された値を計算するためにPUの予測された映像ブロックの生成中に映像符号器20によって使用されるのと同じ内挿フィルタを使用することができる。動き補償モジュール162は、受信された構文情報により映像符号器20によって使用される内挿フィルタを決定し、予測された映像ブロックを生成するために内挿フィルタを使用することができる。
[0144]PUがイントラ予測を用いて符号化される場合は、イントラ予測モジュール164は、PUに関する予測された映像ブロックを生成するためにイントラ予測を行うことができる。例えば、イントラ予測モジュール164は、ビットストリーム内の構文要素に基づいてPUに関するイントラ予測モードを決定することができる。ビットストリームは、イントラ予測モジュール164がPUのイントラ予測モードを決定するために使用することができる構文要素を含むことができる。
[0145]幾つかの例では、構文要素は、イントラ予測モジュール164が現在のPUのイントラ予測モードを決定するために他のPUのイントラ予測モードを使用すべきであることを示すことができる。例えば、現在のPUのイントラ予測モードが隣のPUのイントラ予測モードと同じである可能性が高い。換言すると、隣のPUのイントラ予測モードは、現在のPUに関する最も可能性が高いモードであることができる。従って、この例では、ビットストリームは、PUのイントラ予測モードが隣のPUのイントラ予測モードと同じであることを示す小さい構文要素を含むことができる。イントラ予測モジュール164は、空間的に隣接するPUの映像ブロックに基づいてPUに関する予測データ(例えば、予測されたサンプル)を生成するためにイントラ予測モードを使用することができる。
[0146]再構築モジュール158は、CUの映像ブロックを再構築するために、CUのTUと関連付けられた残差映像ブロック及びCUのPUの予測された映像ブロック、すなわち、イントラ予測データ又はインター予測データ(適宜)、を使用することができる。従って、映像復号器30は、ビットストリーム内の構文要素に基づいて予測された映像ブロック及び残差映像ブロックを生成することができ及び予測される映像ブロック及び残差映像ブロックに基づいて映像ブロックを生成することができる。
[0147]再構築モジュール158がCUの映像ブロックを再構築した後は、フィルタモジュール159は、1つ以上のフィルタリング動作を行うことができる。フィルタモジュール159は、デブロッキングフィルタ170、及びサンプルアダプティブオフセット(SAO)フィルタ172を含み、及び、アダプティブループフィルタリング(ALF)フィルタ174を含むことができる。デブロッキングフィルタ170は、CUと関連付けられたブロッキングアーティファクトを低減させるためのデブロッキング動作を行う。フィルタモジュール159は、その他のタイプのフィルタリング(希望される場合)、例えば、SAOフィルタリング、ALF、又はその他のタイプのインループ又はポストループフィルタリング、を行うこともできる。映像復号器30は、1つ以上の映像ブロックに関してCUレベルでシグナリングされた1つ以上の構文要素に基づいてループフィルタリングを適用することができる。幾つかの例では、映像復号器30は、フィルタモジュール159をバイパスし、及び、映像ブロックを復号するためにループフィルタリングを適用しない。
[0148]フィルタモジュール159が1つ以上のフィルタリング動作を行なった後は、映像復号器30は、CUの映像ブロックを復号ピクチャバッファ160に格納することができる。復号ピクチャバッファ160は、後続する動き補償、イントラ予測、表示装置、例えば、図1の表示装置32、での提示のために基準ピクチャを提供することができる。例えば、映像復号器30は、復号ピクチャバッファ160内の映像ブロックに基づいて、その他のCUのPUに関するイントラ予測又はインター予測動作を行うことができる。
[0149]本開示により、映像復号器30は、ここにおいて説明される技法のうちの1つ以上を映像復号プロセスの一部として実装するように構成することができる。一例では、映像復号器30は、1つ以上の映像ブロックに関してPCMコーディングモードが使用されるかどうかを決定するために第1の構文要素(例えば、pcm_flag)を復号するように構成され、モードは、ピクセル値をPCMサンプルとしてコーディングするモードを意味する。映像復号器30は、1つ以上の映像ブロックに関してロスレスコーディングモードが使用されるかどうかを決定するために第2の構文要素(例えば、cu_transquant_bypass_flag)を復号するようにさらに構成され、ロスレスコーディングモードは、コーディングプロセスにおいて変換、量子化、及びインループフィルタリングをバイパスするモードを意味する。PCMコーディングモードが使用されることを第1の構文要素が示すことに応答して、映像復号器30は、第2の構文要素に少なくとも部分的に基づいてインループフィルタリングを適用する。映像復号器30は、cu_transquant_bypass_flagの値に基づいてフィルタリングモジュール159を適用又はバイパスすることができる。
[0150]例えば、pcm_flagが0に等しく、cu_transquant_bypass_flagが存在しており、1に等しい場合は、映像復号器30は、1つ以上の映像ブロックに関する変換、量子化、及びすべてのインループフィルタリングをバイパスする。映像復号器30が、pcm_flagが0に等しく、cu_transquant_bypass_flagが1に等しいと決定した場合は、映像復号器30は、1つ以上の映像ブロックをロスレスコーディングモードで復号し、1つ以上の映像ブロックに関する変換、量子化、及びインループフィルタリングをバイパスする。他方、映像復号器30が、1つ以上の映像ブロックがPCMコーディングモードを用いて符号化されなかった(例えば、pcm_flagが0に等しい)と決定し及びcu_transquant_bypass_flagが0に等しいと決定した場合は、映像復号器30は、1つ以上の映像ブロックを復号する際に変換、量子化、及びインループフィルタリングを行う。
[0151]映像復号器30が、映像ブロックを符号化するためにPCMコーディングモードが使用された(例えば、pcm_flagが1に等しい)と決定し及びcu_transquant_bypass_flagが1に等しいと決定した場合は、映像復号器30は、映像ブロックに関するインループフィルタリングを行わない(例えば、バイパスした)。映像復号器30が、映像ブロックを符号化するためにPCMコーディングモードが使用された(例えば、pcm_flagが1に等しい)と決定し及びcu_transquant_bypass_flagが0に等しいと決定した場合は、映像復号器30は、1つ以上の映像ブロックを復号するためにインループフィルタリングを行う(例えば、バイパスしなかった)。
[0152]他の例では、映像復号器30は、1つ以上の映像ブロックに関してロスレスコーディングモードが使用されるかどうかを決定するために構文要素(例えば、cu_transquant_bypass_flag)を復号し、及び、ロスレスコーディングモードが使用されることを構文要素が示す場合に1つ以上の映像ブロックに関してPCMモードをディスエーブルにするように構成され、ロスレスコーディングモードは、コーディングプロセスにおいて変換、量子化、及びインループフィルタリングをバイパスするモードを意味し、PCMモードはピクセル値をPCMサンプルとしてコーディングするモードを意味する。
[0153]構文要素は、第1の構文要素を備えることができ、その場合は、映像復号器30は、ロスレスコーディングモードが使用されないことを第1の構文要素が示すときに第2の構文要素(例えば、pcm_flag)を復号するように構成することもでき、第2の構文要素は、1つ以上の映像ブロックに関してPCMモードが使用されるかどうかをコーディングモード映像符号器に示す。映像復号器30は、第1の構文要素にかかわりなく第2の構文要素を復号するように構成することもできる。
[0154]他の例では、映像復号器30は、1つ以上の映像ブロックに関してロスレスコーディングモードが使用されるか又は1つ以上の映像ブロックに関してパルスコード変調(PCM)モードが使用されるかを示すために第1の構文要素(例えば、cu_transquant_bypass_flag)を復号するように構成される。第1の構文要素が真又は1に設定される場合は、映像復号器30は、映像ブロックがロスレスコーディングモード又はPCMコーディングモードのいずれを用いて符号化されたかを決定するために第2の構文要素(例えば、pcm_flag)を復号するように構成することができる。さらに、この例では、映像復号器30は、第1の構文要素、第2の構文要素、及び第3の構文要素(例えば、pcm_loop_disable_flag)に基づいてインループフィルタリング動作をイネーブル又はディスエーブルにすることができる。
[0155]図4は、本開示において説明される技法により、映像データに関する他の構文要素に基づいてフィルタリングを適用すべきかどうかを決定するために構文要素を復号するための方法例200を示したフローチャートである。方法200は、例えば、図3の映像符号器30によって実行することができる。方法200は、PCMモードに関するインループフィルタリングをイネーブルにするために構文要素cu_transquant_bypass_flagを利用する。
[0156]HEVC WD7では、ロスレスモード及びPCMモードのシグナリングは、異なる映像ブロックサイズで行われる。ロスレスコーディングモードは、CUレベルでシグナリングされ、PCMコーディングモードは、そのサイズが最大又は最小の映像ブロックサイズに関する制約事項を満たす映像ブロックのみに関して使用することができる。しかしながら、PCMモード及びロスレスモードがシグナリングされるサイズは、統一することができる。これは、CUのグループに関して両方のモードをシグナリングすることによって完遂させることができる。このシナリオでは、(num_subsequent_pcmによってシグナリングされる)連続するPCMモードブロックの数をディスエーブルにする必要がある。別の記載がないかぎり、以下の技法を用いることで、両方のモードが同じブロックサイズに関してシグナリングされていると仮定することができる。SPS又はPPSのいずれかにおいてtransquant_bypass_enable_flag及びpcm_enabled_flagの両方をシグナリングすることによってさらなる調和化が可能である。HEVCバージョン1では、num_subsequent_pcmは取り除かれている。
[0157]方法200は、映像復号器30によって実行することができる。図4において示されるように、方法200は、1つ以上の映像ブロックに関してパルスコード変調(PCM)コーディングモードが使用されるかどうかを決定するために第1の構文要素を復号することを含み、PCMモードは、ピクセル値をPCMサンプルとしてコーディングするモードを意味する(202)。第1の構文要素は、例えば、pcm_flagであることができる。方法200は、1つ以上の映像ブロックに関してロスレスコーディングモードが使用されるかどうかを決定するために第2の構文要素を復号することをさらに含み、ロスレスコーディングモードは、コーディングプロセスにおいて変換、量子化、及びインループフィルタリングをバイパスするモードを意味する(204)。第2の構文要素は、例えば、cu_transquant_bypass_flag又はより記述的にcu_transquant_loopfilter_bypass_flagという名前を付けることができる。
[0158]方法200は、PCMコーディングモードが使用されることを第1の構文要素が示すことに応答して、第2の構文要素に少なくとも部分的に基づいてフィルタリングを適用することをさらに含む(206)。方法200は、第1の構文要素及び第2の構文要素に少なくとも部分的に基づいて1つ以上の映像ブロックを復号することも含む(208)。
[0159]この例の1つの代替においては、技法は、HEVC WD7に含まれているSPSからpcm_loop_filter_disable_flagを取り除く。HEVC WD7では、pcm_loop_filter_disable_flagは、ピクチャのシーケンス全体に関してPCMコーディングされたブロックに関してループフィルタリングをイネーブル又はディスエーブルにするために設定することができる。しかしながら、個々の映像ブロックに関してループフィルタリングをイネーブル又はディスエーブルにするために、ループフィルタリングが特定の映像ブロックに関して使用されると決定するか又は示すためにcu_transquant_bypass_flagを使用することができる。
[0160]PCMモードコーディングされたブロックに関するインループフィルタリングは、次のようにcu_transquant_bypass_flagを用いてイネーブル又はディスエーブルにされる。この例では、pcm_flag及びcu_transquant_bypass_flagは、同時に1であることができる。これが生じた場合は、シーケンス全体にわたってではなくブロックレベルでPCMモードブロックに関してインループフィルタリングをイネーブル又はディスエーブルにするためにcu_transquant_bypass_flagが使用される。従って、インループフィルタリングがPCMコーディングされたブロックに適用されるかどうかは、cu_transquant_bypass_flagの値に依存する。以下の表(表1)は、pcm_flag及びcu_transquant_bypass_flagの可能な組み合わせ、及びその結果得られるインループフィルタリングを示す。
[0161]上表1による例では、pcm_flagが0に等しく、cu_transquant_bypass_flagが存在する(transquant_bypass_enable_flagが1に等しい)場合は、1に等しいcu_transquant_bypass_flagは、映像復号器30が“ロスレス”コーディングユニットに関して変換、量子化、及びすべてのインループフィルタをバイパスし、その他の場合は、映像復号器30は、コーディングユニットに関して前者のうちのいずれもバイパスしないことを意味する。pcm_flagが1に等しく、cu_transquant_bypass_flagが存在する(transquant_bypass_enable_flagが1に等しい)場合は、表1が示すように、映像符号器20は、PCMコーディングされたブロックに関してすべてのインループフィルタをバイパスし(実際には、変換は、PCMに対して適用されず、量子化は、適用される場合とされない場合がある)、その他の場合は、映像符号器20は、インループフィルタをPCMコーディングされたブロックに適用する。
[0162]cu_transquant_bypass_flagは、その機能をより正確に反映させるためにcu_transquant_loopfilter_bypass_flagに改名できることに注目すること。cu_transquant_loopfilter_bypass_flagがPCモードに関してシグナリングされるようにするために、transquant_bypass_enbale_flagに基づく条件は、“if(transquant_bypass_enbale_flag or pcm_flag)”に修正される。さらに、映像符号器20は、cu_transquant_loopfilter_bypass_flagのシグナリングをコーディングユニット構文の最後の方に置くが、“no_residual_data_flag”よりも前である。一例では、これは、pcm_flagが利用可能であるために要求されることがある。“PCMバーストモード”では、複数のPCM映像ブロックをいっしょにシグナリングすることができる点に注目すること。この場合は、すべての連続するPCMブロックに関して1つのcu_transquant_loopfilter_bypass_flagのみがシグナリングされ、フラグ値は、すべての連続するPCM映像ブロックに適用される。
[0163]以下の表(表2)は、pcm_loop_filter_disable_flagがSPSから取り除かれる例に関するSPS構文の変更(灰色の強調)を例示し、それは、HEVC WD7のプロセスから動作を取り除くことを示すことができる。pcm_loop_filter_disable_flagが取り除かれない例では、表2において例示される変更は当てはまらない。
[0164]以下の表(表3)は、コーディングユニット構文の変更(灰色の強調)、及び本開示の出願日現在のHEVCワーキングドラフトのバージョンを例示する。
[0165]代替として、pcm_loop_filter_disable_flagは、(HEVC WD7におけるように)SPSにおいて、又はそれよりも低いレベル、例えば、PPS又はスライスヘッダにおいてシグナリングすることができる。該場合には、pcm_loop_filter_disable_flagが0に等しい場合は、cu_transquant_bypass_flagは、PCMコーディングされたブロックサンプルに関してインループフィルタリング(デブロッキング、SAO、ALF、等)をオン又はオフにすることができる。他方、pcm_loop_filter_disable_flagが1に等しい場合は、cu_transquant_bypass_flagは、PCMコーディングされたブロックサンプルのインループフィルタリングに対して影響を与えず、PCMコーディングされたブロックサンプルに関してすべてのインループフィルタがディスエーブルにされる。以下の表(表4)は、可能なフラグの組み合わせを要約する。
[0166]以下の表(表5)は、構文変更(灰色の強調)を要約する。
[0167]方法200では、1つ以上の映像ブロックを復号することは、PCMコーディングモードが使用されることを第1の構文要素が示し及びロスレスコーディングモードが使用されることを第2の構文要素が示すことに応答してPCMコーディングモード及びインループフィルタリングを用いて1つ以上を復号することをさらに備えることができる。
[0168]cu_transquant_loopfilter_bypass_flagが構文要素として含まれる例では、cu_transquant_loopfilter_bypass_flagは、CU構文の最後の方に配置され、ただし、no_residual_data_flag構文要素よりも前である。
[0169]方法200は、フィルタリングがイネーブルにされているかどうかを決定するために第3の構文要素(pcm_loop_filter_disable_flag)を復号することをさらに含むことができる。フィルタリングがイネーブルにされていることを第3の構文要素が示すことに応答して、方法200は、第2の構文要素に少なくとも部分的に基づいてフィルタリングを適用することを含む。同様に、方法200は、フィルタリングがディスエーブルにされていることを第3の構文要素が示すことに応答して、PCMコーディングモードを有する1つ以上の映像ブロックに関してフィルタリングをディスエーブルにすることを含む。第3の構文要素は、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、1つ以上の映像ブロックのスライスヘッダのうちの1つにおけるpcm_loop_filter_disable_flagフラグであることができる。pcm_loop_filter_disable_flagが存在しており、0に等しい場合は、cu_transquant_bypass_flagは、PCMブロックサンプルに関してインループフィルタリングをオン又はオフにすることを続ける。他方、pcm_loop_filter_disable_flagが存在しており、1に等しい場合は、cu_transquant_bypass_flagは、PCMブロックサンプルのインループフィルタリングに対して影響を与えず、PCMブロックサンプルに関してすべてのインループフィルタがディスエーブルにされる。
[0170]図5は、本開示において説明される技法により、映像データに関する他の構文要素に基づいてフィルタリングを適用すべきかどうかを示すために構文要素を符号化するための方法例250を示したフローチャートである。方法250は、例えば、図2の映像符号器20によって実行することができる。方法200は、PCMモードに関するインループフィルタリングをイネーブルにするために構文要素cu_transquant_bypass_flagを利用する。
[0171]方法250は、1つ以上の映像ブロックに関してPCMコーディングモードが使用されるかどうかを示すために第1の構文要素を符号化することを含み、そのモードは、ピクセル値をPCMサンプルとしてコーディングするモードを意味する(252)。例えば、映像符号器20は、1つ以上の映像ブロックを符号化するためにPCMコーディングモードが使用されたことを示すためにpcm_flagを符号化することができる。方法250は、1つ以上の映像ブロックに関してロスレスコーディングモードが使用されるかどうかを示すために第2の構文要素を符号化することをさらに含み、ロスレスコーディングモードは、コーディングプロセスにおいて変換、量子化、及びインループフィルタリングをバイパスするモードを意味する(254)。例えば、映像符号器20は、1つ以上の映像ブロックを符号化するためにロスレスコーディングモードが使用されたことを示すためにcu_transquant_bypass_flag又はcu_transquant_loopfilter_bypass_flagを符号化することができる。
[0172]方法250は、PCMコーディングモードが使用されることを第1の構文要素が示すことに応答して第2の構文要素に少なくとも部分的に基づいてフィルタリングを適用することをさらに含むことができる(256)。方法250は、第1の構文要素及び第2の構文要素に少なくとも部分的に基づいて1つ以上の映像ブロックを符号化することをさらに含むことができる(258)。例えば、映像符号器20は、PCMモード又はロスレスコーディングモードを用いて1つ以上の映像ブロックを符号化すること、及び、シグナリングされた構文要素においてコーディングモードを反映させることができる。映像符号器20は、フィルタリングを用いて1つ以上の映像ブロックを符号化することもできる。
[0173]幾つかの例では、PCMコーディングモードが使用されることを第1の構文要素が示し、ロスレスコーディングモードが使用されることを第2の構文要素が示す場合は、PCMモードが使用され、インループフィルタリングがイネーブルにされる。第1の構文要素は、CU構文レベルにおけるpcm_flagであることができ、第2の構文要素は、CU構文レベルにおけるcu_transquant_loopfilter_bypass_flagであることができる。映像符号器20は、cu_transquant_loopfilter_bypass_flag構文要素をCU構文の最後の方に、ただしno_residual_data_flag構文要素よりも前に置くことができる。
[0174]方法250は、フィルタリングがイネーブルにされるかどうかを示すために第3の構文要素を符号化することをさらに備えることができる。第3の構文要素は、pcm_loop_filter_disable_flagであることができる。フィルタリングがイネーブルにされることを第3の構文要素が示すことに応答して、方法250は、第2の構文要素に少なくとも部分的に基づいてフィルタリングを適用することを含むことができる。さらに、方法250は、フィルタリングがディスエーブルにされることを第3の構文要素が示すことに応答して、PCMコーディングモードを有する1つ以上の映像ブロックに関してフィルタリングをディスエーブルにすることを含むことができる。幾つかの例では、第3の構文要素は、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、及び1つ以上の映像ブロックのスライスヘッダのうちの1つにおいてpcm_loop_filter_disable_flag構文要素を含む。
[0175]図6は、本開示において説明される技法により、映像データに関するロスレスコーディングモードの使用を示す構文要素に基づいてパルスコード変調(PCM)コーディングモードの使用を示す構文要素をコーディングするための方法例300を示したフローチャートである。方法300は、例えば、図2の映像符号器20又は図3の映像復号器30によって実行することができる。
[0176]第1に、前述されるように、HEVC WD7において、特定のCUに関してpcm_flagが1である場合は、cu_transquant_bypass_flagの値にかかわらずPCMモードが使用される。この意味で、映像ブロックがPCMモードを用いて符号化されるときにはcu_transquant_bypass_flagが浪費される。これに対処するために、PCMモードはcu_transquant_bypass_flagが0のときのみに使用することができる技法が提案される。従って、以下の表(表6)に関して、HEVCの構文テーブル7.3.7“予測ユニット構文”では、pcm_flagが読まれるべきかどうかを映像復号器30が決定するためにcu_transquant_bypass_flagのゼロ値に関する検査を加えることができる。transquant_bypass_enable_flagが0である場合は、cu_transquant_bypass_flagの値は0であると推測できることが注目されるべきである。
[0177]追加された条件は、表6では灰色の強調で示される。従って、映像符号器20は、符号化されたビットストリームで第1のcu_transquant_bypass_flagをシグナリングする。このフラグが1である場合は、PCMモードは使用することができず、映像符号器20は、pcm_flagをシグナリングしない。cu_transquant_bypass_flagが0である場合は、PCMモードを使用することができ、これは、pcm_flagを介してシグナリングされる。この変更は、HEVC WD7ドラフト内において又は上述されるようにロスレスモード及びPCMモードが同じブロックサイズでシグナリングされるときに行うことができる。
[0178]図6に戻り、方法300は、1つ以上の映像ブロックに関してロスレスコーディングモードが使用されるかどうかを示す構文要素をコーディングすることを含み、ロスレスコーディングモードは、コーディングプロセスにおいて変換、量子化、及びインループフィルタリングをバイパスするモードを意味する(302)。構文要素は、コーディングユニット(CU)構文レベルにおけるcu_transquant_bypass_flagフラグであることができる。例えば、映像符号器20は、1つ以上の映像ブロックに関してロスレスコーディングモードが使用されるかどうかを示すためにcu_transquant_bypass_flagを符号化することができる。他方、映像復号器30は、1つ以上の映像ブロックに関してロスレスコーディングモードが使用されるかどうかを決定するためにcu_transquant_bypass_flagを復号することができる。
[0179]方法300は、ロスレスコーディングモードが使用されることを構文要素が示すことに応答して1つ以上の映像ブロックに関するPCMコーディングモードをディスエーブルにすることをさらに含み、PCMコーディングモードは、ピクセル値をPCMサンプルとしてコーディングするモードを意味する(304)。例えば、映像符号器20は、映像符号器20がロスレスコーディングモードを用いて1つ以上の映像ブロックを符号化したときにはPCMコーディングモードをディスエーブルにすることができる。他方、映像復号器30は、cu_transquant_bypass_flagが1に等しいと映像復号器30が決定したときにはpcm_flagを読むことさえできない。代わりに、cu_transquant_bypass_flagが1に等しい場合は、映像復号器30は、pcm_flagを無視することができる。
[0180]構文要素が第1の構文要素であるとみなした場合、方法300は、ロスレスコーディングモードが使用されないということを第1の構文要素が示すことに応答して第2の構文要素をコーディングすることをさらに含むことができ、第2の構文要素は、1つ以上の映像ブロックに関してPCMコーディングモードが使用されるかどうかを示す。第2の構文要素は、CU構文レベルにおけるpcm_flagフラグであることができる。
[0181]方法300は、ロスレスコーディングモードが使用されることを第1の構文要素が示し及びPCMコーディングモードが使用されることを第2の構文要素が示すことに応答して1つ以上の映像ブロックをコーディングすることをさらに含むことができる。
[0182]図7は、本開示において説明される技法により、映像データに関してPCMコーディングモード又はロスレスコーディングモードのいずれを適用すべきかを決定するためにロスレスコーディングモード構文要素と関連してPCMコーディングモード構文要素を使用するための方法例350を示すフローチャートである。方法350は、映像符号器20又は映像復号器30によって行うことができる。
[0183]この例では、PCMモードは、ロスレスコーディングモードのシグナリングに依存する。従って、映像ブロックがPCMモードを使用する場合又は映像ブロックに関して変換、量子化、及びインループフィルタリングがバイパスされる場合は、cu_transquant_bypass_flagは1に設定される。pcm_flagは、cu_transquant_bypass_flagが1であるときのみにシグナリングされる。pcm_flagが1である場合は、PCMモードが使用される。pcm_flagが0である場合は、ロスレスコーディングモードが使用される。cu_transquant_bypass_flagが0である場合は、pcm_flagはシグナリングされず、変換、量子化、及びインループフィルタリングを伴う通常のコーディングが行われる。以下の表(表7)において示されるように、インループフィルタリングは、映像符号器20又は映像復号器30によってイネーブル又はディスエーブルにされる(適宜)。
[0184]この例では、pcm_flagはcu_transquant_bypass_flagが1であるときだけシグナリングされるため、灰色で強調される表7の行は発生することができない。transquant_bypass_enable_flagが0である場合は、cu_transquant_bypass_flagの値は0であると推測できることが注目されるべきである。
[0185]図7に戻り、方法350は、1つ以上の映像ブロックに関してロスレスコーディングモードが使用されるか又は1つ以上の映像ブロックに関してPCMコーディングモードが使用されるかを示す第1の構文要素をコーディングすることを含み、ロスレスコーディングモードは、コーディングプロセスにおいて変換、量子化、及びインループフィルタリングをバイパスするモードを意味し、PCMコーディングモードは、ピクセル値をPCMサンプルとしてコーディングするモードを意味する(352)。第1の構文要素が真値を示すことに応答して、方法350は、ロスレスコーディングモードが使用されるか又はPCMコーディングモードが使用されるか、すなわち、ロスレスコーディングモード又はPCMモードのうちのどちらが使用されるか、を示す第2の構文要素をコーディングすることを含む(354)。従って、第1の構文要素は、ロスレスコーディングモード又はPCMモードのうちの1つが使用されることを示し、第2の構文要素は、ロスレスコーディングモード又はPCMモードのうちのどちらが使用されるかを示す。
[0186]例えば、映像符号器20は、1つ以上の映像ブロックに関してロスレスコーディングモード又はPCMコーディングモードのうちのいずれが使用されるかを示すためにcu_transquant_bypass_flagを符号化する。そうである、すなちわ、cu_transquant_bypass_flagが1に等しい場合は、映像符号器20は、ロスレスコーディングモード又はPCMコーディングモードのうちのいずれが使用されたかを示すためにpcm_flagを符号化する。pcm_flagが1に等しい場合は、映像符号器20は、PCMコーディングモードを用いて1つ以上の映像ブロックを符号化した。pcm_flagが0に等しい場合は、映像符号器20は、ロスレスコーディングモードを用いて1つ以上の映像ブロックを符号化した。ロスレスコーディングモード又はPCMコーディングモードが使用されない場合は、映像符号器20は、pcm_flagを符号化しない。
[0187]同様に、映像復号器30は、1つ以上の映像ブロックに関してロスレスコーディングモード又はPCMコーディングモードのいずれが使用されるかを決定するためにcu_transquant_bypass_flagを復号する。そうである、すなわち、cu_transquant_bypass_flagが1に等しい場合は、映像復号器20は、ロスレスコーディングモード又はPCMコーディングモードのいずれが使用されたかを決定するためにpcm_flagを復号するか又は読み取る。そうでない場合は、映像復号器30は、ビットストリーム内にないためpcm_flagに関して構文解析しない。pcm_flagが1に等しい場合は、映像復号器30は、PCMコーディングモードを用いて1つ以上の映像ブロックを復号する。pcm_flagが0に等しい場合は、映像復号器30は、ロスレスコーディングモードを用いて1つ以上の映像ブロックを復号する。
[0188]方法350は、PCMコーディングされたブロックに関してインループフィルタリング動作がイネーブルにされるかどうかを示す第3の構文要素をコーディングすることをさらに含むことができる。インループフィルタリングは、第1の構文要素、第2の構文要素、及び第3の構文要素に基づいてイネーブルにされるか又はディスエーブルにされる。幾つかの例では、第1の構文要素は、cu_transquant_bypass_flag構文要素であり、第2の構文要素は、pcm_flag構文要素であり、第3の構文要素は、pcm_loop_disbale_flag構文要素である。幾つかの例では、すべての3つの構文要素は、CU構文レベルでコーディングすることができる。
[0189]他の例では、方法350は、変換及び量子化プロセスを伴って1つ以上の映像ブロックをコーディングすることと、第1の構文要素が偽値を示すことに応答して第2の構文要素をコーディングしないことと、をさらに含むことができる。
[0190]1つ以上の例において、説明される機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらのあらゆる組み合わせにおいて実装することができる。ソフトウェアにおいて実装される場合は、それらの機能は、コンピュータによって読み取り可能な媒体において1つ以上の命令又はコードとして格納又は送信すること及びハードウェアに基づく処理ユニットによって実行することができる。コンピュータによって読み取り可能な媒体は、コンピュータによって読み取り可能な記憶媒体を含むことができ、それは、有形な媒体、例えば、データ記憶媒体、又は、例えば、通信プロトコルにより、1つの場所から他へのコンピュータプログラムの転送を容易にするあらゆる媒体を含む通信媒体、に対応する。このように、コンピュータによって読み取り可能な媒体は、概して、(1)有形なコンピュータによって読み取り可能な記憶媒体又は(2)通信媒体、例えば、信号又は搬送波、に対応することができる。データ記憶媒体は、本開示において説明される技法の実装のために命令、コード及び/又はデータ構造を取り出すために1つ以上のコンピュータ又は1つ以上のプロセッサによってアクセスすることができるあらゆる利用可能な媒体であることができる。コンピュータプログラム製品は、コンピュータによって読み取り可能な媒体を含むことができる。
[0191]一例により、及び制限することなしに、該コンピュータによって読み取り可能な記憶媒体は、希望されるプログラムコードを命令又はデータ構造の形態で格納するために使用することができ及びコンピュータによってアクセス可能であるRAM、ROM、EEPROM、CD−ROM又はその他の光学ディスク記憶装置、磁気ディスク記憶装置、又はその他の磁気記憶デバイス、フラッシュメモリ、又はその他のいずれかの媒体を備えることができる。さらに、どのような接続も、コンピュータによって読み取り可能な媒体であると適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバケーブル、より対線、デジタル加入者ライン(DSL)、又は無線技術、例えば、赤外線、無線、及びマイクロ波、を用いてウェブサイト、サーバ、又はその他の遠隔ソースから送信される場合は、該同軸ケーブル、光ファイバケーブル、より対線、DSL、又は無線技術、例えば赤外線、無線、及びマイクロ波、は、媒体の定義の中に含まれる。しかしながら、コンピュータによって読み取り可能な記憶媒体およびデータ記憶媒体は、コネクション、搬送波、信号、又はその他の遷移媒体は含まず、代わりに、非一時的な、有形の記憶媒体を対象とすることが理解されるべきである。ここにおいて用いられるときのディスク(disk及びdisc)は、コンパクトディスク(CD)(disc)と、レーザディスク(disc)と、光ディスク(disc)と、デジタルバーサタイルディスク(DVD)(disc)と、フロッピー(登録商標)ディスク(disk)と、Blu−ray(登録商標)ディスク(disc)と、を含み、ここで、diskは、通常は磁気的にデータを複製し、discは、レーザを用いて光学的にデータを複製する。上記の組み合わせも、コンピュータによって読み取り可能な媒体の適用範囲内に含められるべきである。
[0192]命令は、1つ以上のプロセッサ、例えば、1つ以上のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、又はその他の同等の集積又はディスクリート論理回路によって実行することができる。従って、ここにおいて用いられる場合の用語“プロセッサ”は、上記の構造又はここにおいて説明される技法の実装に適するあらゆるその他の構造のうちのいずれかを意味することができる。さらに、幾つかの態様では、ここにおいて説明される機能は、符号化および復号のために構成された専用のハードウェア及び/又はソフトウェアモジュール内において提供されること、又は組み合わされたコーデック内に組み入れることができる。さらに、技法は、1つ以上の回路又は論理素子内に完全に実装することが可能である。
[0193]本開示の技法は、無線ハンドセット、集積回路(IC)又は一組のIC(例えば、チップセット)を含む非常に様々なデバイス又は装置内に実装することができる。本開示では、開示される技法を実施するように構成されたデバイスの機能上の態様を強調するために様々なコンポーネント、モジュール、又はユニットが説明されるが、異なるハードウェアユニットによる実現は必ずしも要求しない。むしろ、上述されるように、様々なユニットは、適切なソフトウェア及び/又はファームウェアと関係させて、コーデックハードウェアユニット内において結合させること又は上述されるように1つ以上のプロセッサを含む相互運用的なハードウェアユニットの集合によって提供することができる。
[0194]さらにその他の例では、本開示は、圧縮された映像データを格納するコンピュータによって読み取り可能な記憶媒体を対象にすることができ、映像データは、ここにおいて説明される技法のうちの1つにより圧縮される。コンピュータによって読み取り可能な媒体に格納されるデータ構造は、ここにおいて説明される技法のうちの1つにより圧縮される映像データを定義する構文要素を含むことができる。
[0195]様々な例が説明されている。これらの及びその他の例は、以下の請求項の範囲内である。