IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 華為技術有限公司の特許一覧

特許7384902映像符号化におけるスライシング及びタイリング
<>
  • 特許-映像符号化におけるスライシング及びタイリング 図1
  • 特許-映像符号化におけるスライシング及びタイリング 図2
  • 特許-映像符号化におけるスライシング及びタイリング 図3
  • 特許-映像符号化におけるスライシング及びタイリング 図4
  • 特許-映像符号化におけるスライシング及びタイリング 図5
  • 特許-映像符号化におけるスライシング及びタイリング 図6
  • 特許-映像符号化におけるスライシング及びタイリング 図7
  • 特許-映像符号化におけるスライシング及びタイリング 図8
  • 特許-映像符号化におけるスライシング及びタイリング 図9
  • 特許-映像符号化におけるスライシング及びタイリング 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-13
(45)【発行日】2023-11-21
(54)【発明の名称】映像符号化におけるスライシング及びタイリング
(51)【国際特許分類】
   H04N 19/70 20140101AFI20231114BHJP
【FI】
H04N19/70
【請求項の数】 19
(21)【出願番号】P 2021514318
(86)(22)【出願日】2019-09-13
(65)【公表番号】
(43)【公表日】2022-01-04
(86)【国際出願番号】 US2019051147
(87)【国際公開番号】W WO2020056352
(87)【国際公開日】2020-03-19
【審査請求日】2021-05-11
(31)【優先権主張番号】62/731,696
(32)【優先日】2018-09-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ワーン,イエクイ
(72)【発明者】
【氏名】ヘンドリー,フヌ
(72)【発明者】
【氏名】チェン,ジエンローァ
【審査官】田中 純一
(56)【参考文献】
【文献】米国特許出願公開第2014/0376643(US,A1)
【文献】特表2015-526006(JP,A)
【文献】Kiran Misra, Andrew Segall,New results for parallel decoding for Tiles[online], JCTVC-F JCTVC-F594,インターネット<URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/6_Torino/wg11/JCTVC-F594-v1.zip>,2013年10月22日,1-3
【文献】Kiran Misra, et al.,AHG4: Entry point signaling for wavefront substreams within tiles[online], JCTVC-J JCTVC-J0322,インターネット<URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J0322-v1.zip>,2014年02月13日,1-3
【文献】大久保 榮,H.265/HEVC教科書 初版 H.265/HEVC TEXTBOOK,第1版,株式会社インプレスジャパン 土田 米一,2014年07月03日,197-204
【文献】C.-W.Hsu, et al.,6.5.1 Coding tree block raster and tile scanning conversation process[online], JCTVC-J JCTVC-J0039-v1,インターネット<URL:http://phenix.it-sudparis.eu/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J0039-v1.zip><JCTVC-J0039_TextSpec.doc>,2014年02月13日,1-4
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
デコーダに実装される方法であって、
前記デコーダの受信器により、複数のタイルへと分割されたスライスのスライスデータを含む符号化スライスネットワーク抽象化層(NAL)ユニットを含んだビットストリームを受信し、
前記デコーダのプロセッサにより、前記タイルに関するエントリーポイントオフセットの数を導出し、前記エントリーポイントオフセットの数は、前記ビットストリーム内で明示的に信号伝達されず、前記エントリーポイントオフセットの数は、前記スライス内の前記タイルの数より1だけ少なく、各エントリーポイントオフセットが、前記符号化スライスNALユニット内の2つのタイルの2つの開始位置の間のオフセットを指し示し、
前記プロセッサにより、前記エントリーポイントオフセットの前記数に基づいて、前記タイルに関する前記エントリーポイントオフセットを取得し、
前記プロセッサにより、前記エントリーポイントオフセットに基づいて前記タイルを再構成して再構成画像を生成する、
ことを有する方法。
【請求項2】
前記タイルに関する前記エントリーポイントオフセットは、前記スライスに関連付けられたスライスヘッダから取得される、請求項1に記載の方法。
【請求項3】
前記ビットストリームは、複数の符号化スライスNALユニットを含み、各符号化スライスNALユニットが、整数個のタイルへと分割された単一のスライスのスライスデータを含む、請求項1乃至2のいずれかに記載の方法。
【請求項4】
前記スライスは、前記タイルの各々に含まれる複数の符号化ツリーユニット(CTU)として符号化され、前記スライス内の前記CTUのアドレスが、前記タイルに対応するタイルインデックスに基づいて割り当てられる、請求項1乃至3のいずれかに記載の方法。
【請求項5】
前記タイルに関する前記エントリーポイントオフセットは、前記スライスに関連付けられたスライスヘッダから取得され、前記タイルを再構成することは、前記スライスヘッダ内で明示的に信号伝達される前記スライス内の前記CTUのアドレスに基づいて、前記CTUを再構成することを含む、請求項に記載の方法。
【請求項6】
前記タイルを再構成することは、
前記プロセッサにより、前記スライス内の最初のタイルのタイルインデックスに基づいて、前記スライス内の前記CTUの前記アドレスを割り出し、
前記プロセッサにより、前記CTUの前記アドレスに基づいて前記CTUを再構成する、
ことを含む、請求項に記載の方法。
【請求項7】
前記ビットストリームは、前記スライス内の最後のCTUを指し示すフラグを含まず、前記符号化スライスNALユニットは、前記スライス内の各タイルの最後のCTUの直後にパディングビットを含む、請求項1乃至6のいずれかに記載の方法。
【請求項8】
前記プロセッサにより、前記再構成画像を、再構成ビデオシーケンスの一部として、ディスプレイに向けて転送する、ことを更に有する請求項1乃至7のいずれかに記載の方法。
【請求項9】
エンコーダに実装される方法であって、
前記エンコーダのプロセッサにより、画像を少なくとも1つのスライスへと分割し、且つ該少なくとも1つのスライスを複数のタイルへと分割し、
前記プロセッサにより、前記タイルを、少なくとも1つの符号化スライスネットワーク抽象化層(NAL)ユニットのビットストリームへと符号化し、
前記プロセッサにより、前記ビットストリーム内に、前記タイルに関するエントリーポイントオフセットを符号化し、各エントリーポイントオフセットが、前記符号化スライスNALユニット内の2つのタイルの2つの開始位置の間のオフセットを指し示し、エントリーポイントオフセットの数は、前記ビットストリーム内で明示的に信号伝達されず、前記エントリーポイントオフセットの数は、前記スライス内の前記タイルの数より1だけ少ない、
ことを有する方法。
【請求項10】
前記エンコーダの送信器により、前記エントリーポイントオフセットの前記数を有しない前記ビットストリームを送信する、
ことを更に有する請求項9に記載の方法。
【請求項11】
前記スライス内のCTUのアドレスは前記ビットストリームから省かれ、前記スライス内の最初のタイルのタイルインデックスに基づいた、デコーダでの、前記CTUの前記アドレスの割り出しをサポートする、請求項9乃至10のいずれかに記載の方法。
【請求項12】
符号化されたビットストリームを格納する方法であって、
プロセッサにより、画像を少なくとも1つのスライスへと分割し、且つ該少なくとも1つのスライスを複数のタイルへと分割し、
前記プロセッサにより、前記タイルを、少なくとも1つの符号化スライスネットワーク抽象化層(NAL)ユニットのビットストリームへと符号化し、
前記プロセッサにより、前記ビットストリーム内に、前記タイルに関するエントリーポイントオフセットを符号化し、各エントリーポイントオフセットが、前記符号化スライスNALユニット内の2つのタイルの2つの開始位置の間のオフセットを指し示し、エントリーポイントオフセットの数は、前記スライス内の前記タイルの数より1だけ少なく、前記ビットストリーム内で明示的に信号伝達されず、
前記ビットストリームを非一時的な記憶媒体に格納する、
ことを有する方法。
【請求項13】
符号化されたビデオビットストリームを受信するように構成された受信器と、
前記受信器に結合されたメモリであり、命令を格納したメモリと、
前記メモリに結合されたプロセッサであり、前記メモリに格納された前記命令を実行するように構成されて、当該プロセッサが請求項1乃至11のいずれかに記載の方法を実行するようにされる、プロセッサと、
を有する符号化装置。
【請求項14】
請求項1乃至11のいずれかに記載の方法を実行する処理回路を有するコーダ。
【請求項15】
コンピュータ又はプロセッサ上で実行されるときに請求項1乃至11のいずれかに記載の方法を実行するためのプログラムコードを有するコンピュータプログラム。
【請求項16】
プロセッサ、該プロセッサに結合された受信器、及び該プロセッサに結合された送信器を有し、前記プロセッサ、前記受信器、及び前記送信器は、請求項1乃至11のいずれかに記載の方法を実行するように構成されている、
映像符号化装置。
【請求項17】
映像符号化装置によって使用されるコンピュータプログラムを有する非一時的なコンピュータ読み取り可能媒体であって、前記コンピュータプログラムは、プロセッサによって実行されるときに前記映像符号化装置に請求項1乃至11のいずれかに記載の方法を実行させるように当該非一時的なコンピュータ読み取り可能媒体に格納された、コンピュータ実行可能命令を有する、非一時的なコンピュータ読み取り可能媒体。
【請求項18】
複数のタイルへと分割されたスライスのスライスデータを含む符号化スライスネットワーク抽象化層(NAL)ユニットを含んだビットストリームを受信するように構成された受信ユニットと、
前記タイルに関するエントリーポイントオフセットの数を導出するように構成された導出ユニットであり、前記エントリーポイントオフセットの数は、前記ビットストリーム内で明示的に信号伝達されず、前記エントリーポイントオフセットの前記数は、前記スライス内の前記タイルの数より1だけ少なく、各エントリーポイントオフセットが、前記符号化スライスNALユニット内の2つのタイルの2つの開始位置の間のオフセットを指し示す、導出ユニットと、
前記エントリーポイントオフセットの前記数に基づいて、前記タイルに関する前記エントリーポイントオフセットを取得するように構成された取得ユニットと、
前記エントリーポイントオフセットに基づいて前記タイルを再構成して再構成画像を生成するように構成された再構成ユニットと、
を有する復号装置。
【請求項19】
画像を少なくとも1つのスライスへと分割し、且つ該少なくとも1つのスライスを複数のタイルへと分割するように構成された分割ユニットと、
符号化ユニットであり、
前記タイルを、少なくとも1つの符号化スライスネットワーク抽象化層(NAL)ユニットのビットストリームへと符号化し、
前記ビットストリーム内に前記タイルに関するエントリーポイントオフセットを符号化し、各エントリーポイントオフセットが、前記符号化スライスNALユニット内の2つのタイルの2つの開始位置の間のオフセットを指し示し、エントリーポイントオフセットの数は、前記ビットストリーム内で明示的に信号伝達されず、前記エントリーポイントオフセットの数は、前記スライス内の前記タイルの数より1だけ少ない、
ように構成された符号化ユニットと、
を有する符号化装置。
【発明の詳細な説明】
【技術分野】
【0001】
開示は、概して映像符号化に関し、具体的には、映像符号化において圧縮を増すことを支援するために画像をスライス、タイル、及び符号化ツリーユニット(coding tree units;CTU)に分割することに関する。
【背景技術】
【0002】
比較的短い映像であってもそれを描写するために必要とされる映像データの量はかなりのものとなり、それが、限られた帯域幅容量を持つ通信ネットワークを介してデータをストリーミングする又はその他の方法で通信するときに困難をもたらし得る。従って、映像データは一般に、今日の遠隔通信ネットワークを介して通信される前に圧縮される。映像のサイズはまた、メモリリソースが限られ得るために、映像がストレージ装置に格納されるときにも問題となり得る。映像圧縮装置は、しばしば、伝送又は記憶に先立って、ソースにてソフトウェア及び/又はハードウェアを用いて映像データを符号化し、それにより、デジタルビデオ画像を表すのに必要なデータの量を減少させる。そして、圧縮されたデータが、宛先で、映像データを復号する映像解凍装置によって受信される。限られたネットワークリソースと、増加の一途をたどるいっそう高い映像品質の要求とに伴い、画像品質の犠牲を殆ど乃至は全く払わずに圧縮比を向上させる改良された圧縮及び解凍技術が望ましい。
【発明の概要】
【0003】
一実施形態において、本開示は、デコーダに実装される方法を含む。当該方法は、デコーダの受信器により、複数のタイルへと分割された画像データのスライスを含む映像符号化層(video coding layer;VCL)ネットワーク抽象化層(network abstraction layer;NAL)ユニットを含んだビットストリームを受信することを有する。当該方法は更に、デコーダのプロセッサにより、VCL NALユニット内のタイルの数を割り出すことを有する。当該方法は更に、プロセッサにより、VCL NALユニット内のタイルの数より1だけ少ないものとして、タイルに関するエントリーポイントオフセットの数を割り出すことを有し、各エントリーポイントオフセットが、VCL NALユニット内の対応するタイルの開始位置を指し示し、エントリーポイントオフセットの数は、ビットストリーム内で明示的に信号伝達されない。当該方法は更に、プロセッサにより、エントリーポイントオフセットの数に基づいて、タイルに関するエントリーポイントオフセットを取得することを有する。当該方法は更に、プロセッサにより、エントリーポイントオフセットにてタイルを復号して再構成画像を生成することを有する。一部のシステムでは、スライス内のタイルに関するエントリーポイントオフセットの数が明示的に信号伝達されている。開示されるシステムは、エントリーポイントオフセットの数を、タイルの数より1だけ少ないと推定する。この推定を用いることにより、エントリーポイントオフセットの数をビットストリームから省略することができる。従って、ビットストリームが更に短縮される。それ故に、ビットストリームを伝送するために使用されるネットワークリソースが削減される。さらに、エンコーダ及びデコーダの双方におけるメモリリソース使用量が減少される。
【0004】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、タイルに関するエントリーポイントオフセットは、スライスに関連付けられたスライスヘッダから取得される。
【0005】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、ビットストリームは、複数のVCL NALユニットを含み、各VCL NALユニットが、整数個のタイルへと分割された画像データの単一のスライスを含む。一部のシステムにおいて、スライスとタイルは別々の分割スキームである。スライスがタイルに細分化されることを必要とすることにより、情報を推定することができる。例えば、スライス内の一部のタイルIDを、スライス内の最初のタイル及び最後のタイルによって推定することができる。さらに、スライス境界を、フレーム内でのスライスの相対位置ではなく、タイルIDに基づいて信号伝達することができる。これは、そして、サブフレームを信号伝達するときにスライスヘッダを書き換える必要がないアドレス指定スキームをサポートする。従って、一部の例においてビットストリームを更に短縮することができ、それによってメモリリソース及びネットワーク通信リソースが節約される。さらに、エンコーダ及び/又はデコーダにて、プロセッシングリソースを節約することができる。
【0006】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、画像データは、タイルの各々に含まれる複数の符号化ツリーユニット(coding tree units;CTU)として符号化され、VCL NALユニット内のCTUのアドレスが、タイルに対応するタイル識別子(ID)に基づいて割り当てられる。例えば、タイルIDに基づいてCTUをアドレス指定することは、タイルIDに基づいてアドレスを推定することを可能にし、それがビットストリームを短縮させ得る。さらに、CTUに対するタイルベースのアドレス指定は、現在スライスの外で行われる符号化プロセスを参照しないCTUコーディングをサポートする。それ故に、タイルIDに基づいてCTUをアドレス指定することは並列処理をサポートし、ひいては、デコーダにおいて高められた復号速度をサポートする。
【0007】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、タイルを復号することは、スライスヘッダ内で明示的に信号伝達されるVCL NALユニット内のCTUのアドレスに基づいて、CTUを復号することを含む。
【0008】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、タイルを復号することは、プロセッサにより、VCL NALユニットに含まれる最初のタイルのタイルIDに基づいて、VCL NALユニット内のCTUのアドレスを割り出し、プロセッサにより、CTUのアドレスに基づいてCTUを復号する、ことを含む。
【0009】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、CTUは、VCL NALユニット内の最後のCTUを指し示すフラグを含まず、VCL NALユニットは、各タイル内の最後のCTUの直後にパディングビットを含む。一部のシステムでは、現在CTUがVCL NALユニット内の最後のCTUであるか否かを指し示すフラグが各CTU内で使用されている。本開示においては、スライス及びCTUがタイルIDに基づいてアドレス指定され、且つVCL NALユニットが単一のスライスを含む。従って、デコーダは、どのCTUがスライス内の最後のCTUであるのか、及び故に、VCL NALユニット内の最後のCTUであるのかを、そのようなフラグなしで割り出すことができる。ビデオシーケンスは多数のフレームを含み、フレームは多数のCTUを含むので、データのビットを全てのCTUエンコーディングから省くことは、ビットストリームを大幅に短縮することができる。それ故に、ビットストリームを伝送するために使用されるネットワークリソースが削減される。さらに、エンコーダ及びデコーダの双方におけるメモリリソース使用量が減少される。
【0010】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、プロセッサにより、再構成画像を再構成ビデオシーケンスの一部としてディスプレイに向けて転送する、ことを更に有する。
【0011】
一実施形態において、本開示は、エンコーダに実装される方法を含む。当該方法は、エンコーダのプロセッサにより、画像を少なくとも1つのスライスへと分割し、且つ該少なくとも1つのスライスを複数のタイルへと分割することを有する。当該方法は更に、プロセッサにより、タイルを、少なくとも1つのVCL NALユニットのビットストリームへと符号化することを有する。当該方法は更に、プロセッサにより、ビットストリーム内に、VCL NALユニット内のタイルの数を符号化することを有する。当該方法は更に、プロセッサにより、ビットストリーム内に、タイルに関するエントリーポイントオフセットを符号化することを有し、エントリーポイントオフセットは各々、VCL NALユニット内の対応するタイルの開始位置を指し示し、エントリーポイントオフセットの数は、ビットストリーム内で明示的に信号伝達されない。当該方法は更に、エンコーダの送信器により、エントリーポイントオフセットの数を有しないビットストリームを送信して、タイルに関するエントリーポイントオフセットの数がVCL NALユニット内のタイルの数より1だけ少ない、という推定に従ってタイルを復号することをサポートする、ことを有する。一部のシステムでは、スライス内のタイルに関するエントリーポイントオフセットの数が明示的に信号伝達されている。開示されるシステムは、エントリーポイントオフセットの数を、タイルの数より1だけ少ないと推定する。この推定を用いることにより、エントリーポイントオフセットの数をビットストリームから省略することができる。従って、ビットストリームが更に短縮される。それ故に、ビットストリームを伝送するために使用されるネットワークリソースが削減される。さらに、エンコーダ及びデコーダの双方におけるメモリリソース使用量が減少される。
【0012】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、タイルに関するエントリーポイントオフセットは、スライスに関連付けられたスライスヘッダ内に符号化される。
【0013】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、ビットストリームは、複数のVCL NALユニットを含み、各VCL NALユニットが、整数個のタイルへと分割された画像の単一のスライスを含む。一部のシステムにおいて、スライスとタイルは別々の分割スキームである。スライスがタイルに細分化されることを必要とすることにより、情報を推定することができる。例えば、スライス内の一部のタイルIDを、スライス内の最初のタイル及び最後のタイルによって推定することができる。さらに、スライス境界を、フレーム内でのスライスの相対位置ではなく、タイルIDに基づいて信号伝達することができる。これは、そして、サブフレームを信号伝達するときにスライスヘッダを書き換える必要がないアドレス指定スキームをサポートする。従って、一部の例においてビットストリームを更に短縮することができ、それによってメモリリソース及びネットワーク通信リソースが節約される。さらに、エンコーダ及び/又はデコーダにて、プロセッシングリソースを節約することができる。
【0014】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装は、タイルを複数のCTUへと分割し、タイルに対応するタイル識別子(ID)に基づいて、VCL NALユニット内のCTUのアドレスを割り当てる、ことを提供する。例えば、タイルIDに基づいてCTUをアドレス指定することは、タイルIDに基づいてアドレスを推定することを可能にし、それがビットストリームを短縮させ得る。さらに、CTUに対するタイルベースのアドレス指定は、現在スライスの外で行われる符号化プロセスを参照しないCTUコーディングをサポートする。それ故に、タイルIDに基づいてCTUをアドレス指定することは並列処理をサポートし、ひいては、デコーダにおいて高められた復号速度をサポートする。
【0015】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、VCL NALユニット内のCTUのアドレスを、スライスヘッダ内で明示的に信号伝達する、ことを更に有する。
【0016】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、VCL NALユニット内のCTUのアドレスはビットストリームから省かれ、VCL NALユニットに含まれる最初のタイルのタイルIDに基づいた、デコーダでの、CTUのアドレスの割り出しをサポートする。本開示においては、スライス及びCTUがタイルIDに基づいてアドレス指定され、且つVCL NALユニットが単一のスライスを含む。従って、デコーダは、どのCTUがスライス内の最後のCTUであるのか、及び故に、VCL NALユニット内の最後のCTUであるのかを、そのようなフラグなしで割り出すことができる。ビデオシーケンスは多数のフレームを含み、フレームは多数のCTUを含むので、データのビットを全てのCTUエンコーディングから省くことは、ビットストリームを大幅に短縮することができる。それ故に、ビットストリームを伝送するために使用されるネットワークリソースが削減される。さらに、エンコーダ及びデコーダの双方におけるメモリリソース使用量が減少される。
【0017】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、CTUは、VCL NALユニット内の最後のCTUを指し示すフラグを含まず、VCL NALユニットは、各タイル内の最後のCTUの直後にパディングビットを含む。
【0018】
一実施形態において、本開示は、プロセッサ、該プロセッサに結合された受信器、及び該プロセッサに結合された送信器を有する映像符号化装置を含み、プロセッサ、受信器、及び送信器は、前述の態様のいずれかの方法を実行するように構成される。
【0019】
一実施形態において、本開示は、映像符号化装置によって使用されるコンピュータプログラムプロダクトを有する非一時的なコンピュータ読み取り可能媒体を含み、コンピュータプログラムプロダクトは、プロセッサによって実行されるときに映像符号化装置に前述の態様のいずれかの方法を実行させるように当該非一時的なコンピュータ読み取り可能媒体に格納されたコンピュータ実行可能命令を有する。
【0020】
一実施形態において、本開示は、複数のタイルへと分割された画像データのスライスを含むVCLネットワーク抽象化層(NAL)ユニットを含んだビットストリームを受信する受信手段、を有するデコーダを含む。当該デコーダは更に、VCL NALユニット内のタイルの数を割り出し、且つVCL NALユニット内のタイルの数より1だけ少ないものとして、タイルに関するエントリーポイントオフセットの数を割り出す決定手段を有し、エントリーポイントオフセットは各々、VCL NALユニット内の対応するタイルの開始位置を指し示し、エントリーポイントオフセットの数は、ビットストリーム内で明示的に信号伝達されない。当該デコーダは更に、エントリーポイントオフセットの数に基づいて、タイルに関するエントリーポイントオフセットを取得する取得手段を有する。当該デコーダは更に、エントリーポイントオフセットにてタイルを復号して再構成画像を生成する復号手段を有する。
【0021】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、エンコーダは更に、前述の態様のいずれかの方法を実行するように構成される。
【0022】
一実施形態において、本開示は、画像を少なくとも1つのスライスへと分割し、且つ該少なくとも1つのスライスを複数のタイルへと分割する分割手段、を有するエンコーダを含む。当該エンコーダは更に、タイルを、少なくとも1つのVCL NALユニットのビットストリームへと符号化し、ビットストリーム内にVCL NALユニット内のタイルの数を符号化し、且つビットストリーム内にタイルに関するエントリーポイントオフセットを符号化する符号化手段を有し、エントリーポイントオフセットは各々、VCL NALユニット内の対応するタイルの開始位置を指し示し、エントリーポイントオフセットの数は、ビットストリーム内で明示的に信号伝達されない。当該エンコーダは更に送信手段を有し、該送信手段は、エントリーポイントオフセットの数を有しないビットストリームを送信して、タイルに関するエントリーポイントオフセットの数がVCL NALユニット内のタイルの数より1だけ少ない、という推定に従ってタイルを復号することをサポートする。
【0023】
オプションで、前述の態様のいずれかにおいて、その態様の他の一実装が提供することには、エンコーダは更に、前述の態様のいずれかの方法を実行するように構成される。
【0024】
明確にしておくために、前述の実施形態のいずれか1つを、他の前述の実施形態のいずれか1つ以上と組み合わせて、本開示の範囲内の新たな実施形態を作り出すことができる。
【0025】
これら及び他の特徴が、添付の図面及び請求項とともに用いられる以下の詳細な説明から、より明瞭に理解されることになる。
【図面の簡単な説明】
【0026】
この開示のいっそう完全なる理解のため、同様の部分を同様の参照符号が表す添付図面及び詳細説明に関連して、以下の簡単な説明を参照しておく。
図1】映像信号を符号化する方法の一例のフローチャートである。
図2】映像符号化のための符号化・復号(コーデック)システムの一例の概略図である。
図3】ビデオエンコーダの一例を示す概略図である。
図4】ビデオデコーダの一例を示す概略図である。
図5】符号化ビデオシーケンスを含むビットストリームの一例を示す概略図である。
図6】符号化のために分割された画像の一例を示す概略図である。
図7】映像符号化装置の一例の概略図である。
図8】画像をビットストリームへと符号化する方法の一例のフローチャートである。
図9】ビットストリームから画像を復号する方法の一例のフローチャートである。
図10】画像のビデオシーケンスをビットストリームに符号化するシステムの一例の概略図である。
【発明を実施するための形態】
【0027】
最初に理解されるべきことには、1つ以上の実施形態の例示的な実装が以下にて提示されるが、開示されるシステム及び/又は方法は、現に知られている又は存在しているのであろうとなかろうと、幾つもの技術を用いて実装され得る。この開示は決して、ここに図示して記述される例示的な設計及び実装を含めて、以下に例示される例示的な実装、図面及び技術に限定されるべきものでなく、添付の請求項の範囲及びそれらの完全なる均等範囲の中で変更され得るものである。
【0028】
最小限のデータ損失で映像ファイルのサイズを縮小するために数多くの映像圧縮技術を使用することができる。例えば、映像圧縮技術は、ビデオシーケンスにおけるデータ冗長性を低減又は除去するために、空間(例えば、イントラピクチャ)予測及び/又は時間(例えば、インターピクチャ)予測を実行することを含み得る。ブロックベースの映像符号化では、映像スライス(例えば、映像ピクチャ又は映像ピクチャの一部)が、ツリーブロック、符号化ツリーブロック(coding tree block;CTB)、符号化ツリーユニット(coding tree unit;CTU)、符号化ユニット(coding unit;CU)、及び/又は符号化ノードとも呼ばれ得るものである映像ブロックへと分割され得る。ピクチャのイントラ符号化(I)スライス内の映像ブロックは、同一ピクチャ内の隣接ブロックの参照サンプルに対する空間予測を用いて符号化される。ピクチャのインター符号化一方向予測(P)又は双方向予測(B)スライス内の映像ブロックは、同一ピクチャ内の隣接ブロックの参照サンプルに対する空間予測、又は他の参照ピクチャ内の参照サンプルに対する時間予測を用いることによって符号化され得る。ピクチャは、フレーム及び/又は画像と呼ばれることもあり、参照ピクチャは、参照フレーム及び/又は参照画像とも呼ばれることがある。空間予測又は時間予測は、画像ブロックを表す予測ブロックをもたらす。残差データが、元の画像ブロックと予測ブロックとの間のピクセル差を表す。従って、インター符号化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルと、符号化されたブロックと予測ブロックとの間の差を示す残差データとに従って符号化される。イントラ符号化ブロックは、イントラ符号化モードと残差データとに従って符号化される。更なる圧縮のために、残差データは、ピクセルドメインから変換ドメインへと変換され得る。これらが、残差変換係数をもたらし、それらが量子化され得る。量子化された変換係数は、当初、二次元アレイに配列され得る。変換係数の一次元ベクトルを生成するために、量子化された変換係数がスキャンされ得る。エントロピー符号化を適用することで、より多くの圧縮を達成し得る。このような映像圧縮技術を、以下にて更に詳細に説明する。
【0029】
符号化された映像を正確に復号できることを確保するために、映像は、対応する映像符号化規格に従って符号化及び復号される。映像符号化規格は、国際電気通信連合(ITU)標準化部門(ITU-T)H.261、国際標準化機構/国際電気標準会議(ISO/IEC)モーションピクチャエキスパートグループ(MPEG)-1 パート2、ITU-T H.262若しくはISO/IEC MPEG-2 パート2、ITU-T H.263、ISO/IEC MPEG-4 パート2、ITU-T H.264若しくはISO/IEC MPEG-4 パート10としても知られるアドバンストビデオコーディング(AVC)、及びITU-T H.265若しくはMPEG-H パート2としても知られる高効率ビデオコーディング(HEVC)を含む。AVCは、例えばスケーラブルビデオコーディング(SVC)、マルチビュービデオコーディング(MVC)及びマルチビュービデオコーディング・プラス・デプス(MVC+D)、及び三次元(3D)AVC(3D-AVC)などの拡張を含む。HEVCは、例えばスケーラブルHEVC(SHVC)、マルチビューHEVC(MV-HEVC)及び3D HEVC(3D-HEVC)などの拡張を含む。ITU‐TとISO/IECとのジョイントビデオエキスパートチーム(JVET)が、バーサタイルビデオコーディング(VVC)と呼ばれる映像符号化規格の開発に着手している。VVCは、JVET-K1001-v4及びJVET-K1002-v1を含むものであるワーキングドラフト(WD)に含まれる。
【0030】
ビデオ画像を符号化するために、先ず画像が分割され、それらの区画がビットストリームへと符号化される。様々な画像分割スキームが利用可能である。例えば、画像は、通常スライス、従属スライス、タイルへと分割されることができ、及び/又は波面並列処理(Wavefront Parallel Processing;WPP)に従って分割されることができる。単純化のために、HEVCは、スライスを映像符号化のためのCTBのグループへと分割するときに、通常スライス、従属スライス、タイル、WPP、及びこれらの組み合わせのみを使用し得るようにエンコーダを制約する。このような分割は、最大転送ユニット(Maximum Transfer Unit;MTU)サイズマッチング、並列処理、及びエンドツーエンド遅延の低減をサポートするために適用されることができる。MTUは、単一のパケットで伝送されることができるデータの最大量を表す。パケットペイロードがMTUを超える場合、そのペイロードは断片化と呼ばれるプロセスを通して2つのパケットへと分割される。
【0031】
単純にスライスとも呼ばれる通常スライスは、ループフィルタリング処理に起因する何らかの相互依存性にもかかわらず、同一画像内の他の通常スライスとは独立に再構成されることができる画像の分割部分である。各通常スライスは、伝送のためにそれ自身のネットワーク抽象化層(NAL)ユニットに封入される。また、独立した再構成をサポートするために、スライス境界を横切ってのピクチャ内予測(イントラサンプル予測、動き情報予測、符号化モード予測)とエントロピー符号化の依存性を無効にし得る。そのような独立した再構成は並列化を支援する。例えば、通常スライスベースの並列化は、最小限のプロセッサ間通信又はコア間通信のみを使用する。しかしながら、各通常スライスが独立であるため、各スライスに別個のスライスヘッダが付随する。通常スライスの使用は、スライス毎のスライスヘッダのビットコストのため、及びスライス境界を横切っての予測の欠如のため、実質的な符号化オーバーヘッドを招き得る。また、通常スライスは、MTUサイズ要求に合致することをサポートするために使用され得る。具体的には、通常スライスは別個のNALユニットに封入されて独立に符号化され得るので、スライスを複数のパケットに分断することを避けるために、各通常スライスがMTUスキームにおけるMTUより小さくあるべきである。それ故に、並列化の目標とMTUサイズマッチングの目標とが、ピクチャにおけるスライスレイアウトに矛盾する要求を課し得る。
【0032】
従属スライスは、通常スライスと同様であるが、短くされたスライスヘッダを持ち、ピクチャ内予測を破ることなく画像ツリーブロック境界の分割を可能にする。従って、従属スライスは、通常スライスが複数のNALユニットへと断片化されることを可能にし、それが、通常スライス一部をその通常スライス全体の符号化が完了する前に送出することを可能にすることによって、エンドツーエンド遅延の低減を提供する。
【0033】
タイルは、タイルの列と行を生み出す水平境界及び垂直境界によって作り出される画像の分割部分である。タイルは、(右から左及び上から下への)ラスタースキャン順に符号化され得る。CTBのスキャン順序はタイル内でローカルである。従って、第1タイル内のCTBが、次のタイル内のCTBに進む前に、ラスタースキャン順に符号化される。通常スライスと同様に、タイルは、ピクチャ内予測依存及びエントロピー復号依存を破る。しかしながら、タイルは個別のNALユニットに含められなくてよく、従って、タイルはMTUサイズマッチングに使用されなくてよい。各タイルは、1つのプロセッサ/コアによって処理されることができ、隣接するタイルを復号するプロセッシングユニット間での、ピクチャ内予測に使用されるプロセッサ間/コア間通信は、共有スライスヘッダを伝達すること(隣接するタイルが同一スライス内にあるとき)と、再構成されたサンプル及びメタデータのループフィルタリング関連の共有を実行することとに限られ得る。スライス内に2つ以上のタイルが含まれる場合、スライス内の最初のエントリーポイントオフセット以外の各タイルに関するエントリーポイントバイトオフセットが、スライスヘッダ内で信号伝達され得る。各スライス及びタイルについて、以下の条件のうちの少なくとも一方が満たされるべきである:1)スライス内の全ての符号化ツリーブロックが同一タイルに属する;及び2)タイル内の全ての符号化ツリーブロックが同一スライスに属する。
【0034】
WPPでは、画像が複数の単一行のCTBへと分割される。エントロピー復号及び予測機構は、他の行のCTBからのデータを使用することができる。複数のCTB行の並列復号を通じて並列処理が可能となる。例えば、現在の行が、前の行と並列に復号され得る。しかしながら、現在の行の復号は、前の行の復号プロセスから2つのCTBだけ遅らされる。この遅延が、現在の行内の現在のCTBの上のCTB及び右上のCTBに関するデータが、現在のCTBが符号化される前に利用可能になることを保証する。このアプローチは、図形的に表されるときに波面のように見える。このスタガード(staggered)スタートは、画像が含むCTB行と同じ多さのプロセッサ/コアに至るまでの並列化を可能にする。ピクチャ内の隣接するツリーブロック行間でのピクチャ内予測が許されるので、ピクチャ内予測を可能にするためのプロセッサ間/コア間通信がかなりのものとなり得る。WPP分割はNALユニットサイズを考慮する。従って、WPPはMTUサイズマッチングをサポートしない。しかしながら、必要に応じてMTUサイズマッチングを実現するために、ある一定の符号化オーバーヘッドを伴って、WPPと共に通常スライスを使用することができる。
【0035】
タイルはまた、動き制約タイルセットを含み得る。動き制約タイルセット(motion constrained tile set;MCTS)は、関連する動きベクトルが、MCTS内のフルサンプル位置と、補間のためにMCTS内のフルサンプル位置のみを必要とする分数(fractional)サンプル位置と、を指すように制約されるよう設計されたタイルセットである。また、MCTS外のブロックから導出される時間的な動きベクトル予測に関する動きベクトル候補の使用は許されない。斯くして、各MCTSは、該MCTSに含まれないタイルの存在なしに、独立して復号され得る。ビットストリーム内のMCTSの存在を指し示すとともに、それらMCTSを信号伝達するために、時間的MCTS補足強化情報(supplemental enhancement information;SEI)メッセージが使用され得る。MCTS SEIメッセージは、MCTSの準拠ビットストリームを生成するためのMCTSサブビットストリーム抽出(SEIメッセージのセマンティクスの一部として規定される)で使用されることが可能な補足情報を提供する。該情報は、多数の抽出情報セットを含み、各々が、多数のMCTSを規定するとともに、MCTSサブビットストリーム抽出プロセスにおいて使用される置換ビデオパラメータセット(video parameter set;VPS)、シーケンスパラメータセット(sequence parameter set;SPS)、及びピクチャパラメータセット(picture parameter set;PPS)のローバイトシーケンスペイロード(raw bytes sequence payload;RBSP)バイトを含む。MCTSサブビットストリーム抽出プロセスに従ってサブビットストリームを抽出するとき、パラメータセット(VPS、SPS、及びPPS)を書き換えたり置き換えたりすることができ、また、スライスアドレス関連の構文要素(first_slice_segment_in_pic_flag及びslice_segment_addressを含む)の1つ又は全てが抽出されたサブビットストリームにおいて異なる値を使用し得るので、スライスヘッダを更新することができる。
【0036】
前述のタイリング及びスライシング機構は、MTUサイズマッチング及び並列処理をサポートするためにかなりの柔軟性を提供する。しかしながら、MTUサイズマッチングは、高まり続ける遠隔通信ネットワークの速さ及び信頼性のために、あまり重要でなくなってきている。例えば、MTUサイズマッチングの主な用途の1つは、誤差隠し(error-concealed)ピクチャを表示することを支援することである。誤差隠しピクチャは、幾らかのデータ損失があるときに伝送された符号化ピクチャから作り出される復号ピクチャである。そのようなデータ損失は、符号化ピクチャの一部スライスの損失、又は符号化ピクチャによって使用される参照ピクチャにおける誤差(例えば、参照ピクチャも誤差隠しピクチャである)を含み得る。誤差隠しピクチャは、例えば、ビデオシーケンス内の先行ピクチャから、誤差ありスライスに対応するスライスをコピーすることによって、誤差ありスライスを推定し正しいスライスを表示することによって作成されることができる。誤差隠しピクチャは、各スライスが単一のNALユニットに含まれるときに生成されることができる。しかしながら、スライスが複数のNALユニットにわたって断片化される場合(例えば、MTUサイズマッチングなし)、1つのNALユニットの損失が複数のスライスを破損してしまい得る。誤差隠しピクチャの生成は、現代のネットワーク環境ではあまり重要ではない。何故なら、パケット損失が起こることはそれほど多くないからであり、また、現代のネットワーク速度は、誤差ありピクチャとその後の誤差なしピクチャとの間の遅延が一般に小さいので、システムが有意なビデオフリーズを引き起こすことなく誤差のあるピクチャを完全に省略することを可能にするからである。また、誤差隠しピクチャの品質を推定するプロセスは複雑であることがあり、従って、単純に誤差ありピクチャを省略することが好ましいことがある。従って、例えばビデオ会議及びテレビ電話などのビデオ会話アプリケーションは、及び放送アプリケーションでさえ、一般的に、誤差隠しピクチャを使用することを見合わせる。
【0037】
誤差隠しピクチャはあまり有用でないので、MTUサイズマッチングはあまり有用でない。また、分割するときにMTUサイズマッチングパラダイムをサポートし続けることは、符号化システムをいたずらに複雑にしてし得るとともに、さもなければ符号化効率を高めるために省略され得る廃棄ビットを使用してしまい得る。加えて、一部のタイリングスキーム(例えば、MCTS)は、画像のうちのサブ画像を表示することを可能にする。サブピクチャを表示するために、関心領域内のスライスが表示され、他のスライスは省略される。関心領域は、画像の左上の部分以外の位置で始まることができ、従って、ピクチャの始まりから可変値だけオフセットされたアドレスを持ち得る。サブ画像を適切に表示するために、このオフセットを構成するように関心領域の(1つ以上の)スライスヘッダを書き換えるためにスプライサが使用され得る。このようなスライスヘッダ書き換えを必要としないスライシング及びタイリングスキームが有益であろう。加えて、タイル境界は、それらがピクチャ境界とコロケートされない限り、ピクチャ境界として扱われなくてもよい。しかしながら、タイル境界をピクチャ境界として扱うことは、境界の埋め込みにより、及び参照ピクチャの境界外のサンプルを指す動きベクトルに関する制約を緩和することにより、一部のケースで符号化効率を高め得る。また、HEVCは、スライスの終わりに到達したかを指し示すために、各CTUに関する符号化データの終わりにend_of_slice_flagという名称のフラグを使用し得る。AVCは、同じ目的のために、このフラグを、各マクロブロック(MB)に関する符号化データの終わりに使用する。しかしながら、最後のCTU/MBが他の機構を通じて分かる場合には、このフラグの符号化は不要であり、ビットの無駄である。本開示は、映像符号化技術におけるこれら及び他の問題に対処するための機構を提供する。
【0038】
上述のスライシング及びタイリングスキームに関連する処理オーバーヘッドを低減し、符号化効率を高めるための様々な機構がここに開示される。一例において、スライスが整数個のタイルを含むことが要求され、各スライスが、別個の映像符号化層(VCL)NALユニットに格納される。さらに、スライス内のタイルの数を、スライスの左上隅のタイル及び右下隅のタイルに基づいて計算することができる。そして、タイルの数を用いて、従ってビットストリームから省略することできる他の値を計算することができる。特定の一例として、ビットストリーム内の各タイルのアドレスは、スライスの始まりからの、及び故に、VCL NALユニットの始まりからの、エントリーポイントオフセットである。エントリーポイントオフセットの数は、タイルの数より1だけ少ないものとして計算されることができる(最初のタイルはゼロのオフセットを持ち、従って省略されるからである)。そして、スライスに対応するスライスヘッダからタイルに関するエントリーポイントオフセットを取り出すときに、エントリーポイントオフセットの数を使用することができる。さらに、タイル内のCTUは、対応するCTUを含むタイル識別子(ID)の関数としてアドレス指定され得る。そして、CTUのアドレスが、明示的に信号伝達され、あるいは、実施形態に応じて、タイルID及び計算されたタイル数に基づいて導出され得る。さらに、VCL NALユニット内のタイルの数及びタイル内のCTUの数の知識は、デコーダがVCL NALユニット内の最後のCTUを割り出すことを可能にする。従って、スライス内の最後のCTUを指し示すために以前は各CTUに含められていたend_of_slice_flagをビットストリームから省略することができ、それが、ビデオシーケンス全体において各CTUに対して1ビットの節約をもたらす。これら及び他の例を以下にて詳細に説明する。
【0039】
図1は、映像信号を符号化する動作方法100の一例のフローチャートである。具体的には、映像信号はエンコーダで符号化される。符号化プロセスは、映像ファイルサイズを縮小するための様々な機構を使用することによって映像信号を圧縮する。より小さいファイルサイズは、圧縮された映像ファイルを、関連する帯域幅オーバーヘッドを減少させながら、ユーザに向けて伝送することを可能にする。そして、デコーダが、圧縮された映像ファイルを復号して、エンドユーザへの表示のために元の映像信号を再構成する。復号プロセスは、概して、符号化プロセスを映したものであり、デコーダが一貫して映像信号を再構成することを可能にする。
【0040】
ステップ101にて、映像信号がエンコーダに入力される。例えば、映像信号は、メモリに格納された未圧縮の映像ファイルとし得る。他の一例として、映像ファイルは、例えばビデオカメラなどの映像キャプチャ装置によってキャプチャされて、映像のライブストリーミングをサポートするように符号化され得る。映像ファイルは、音声コンポーネント及び映像コンポーネントの双方を含み得る。映像コンポーネントは、順に見たときに動きの視覚的印象を与える一連の画像フレームを含む。フレームは、ここではルマ(luma)成分(又はルマサンプル)として参照する明るさと、ここではクロマ(chroma)成分(又はカラーサンプル)として参照する色との観点で表現されるピクセル群を含む。一部の例において、フレームはまた、三次元表示をサポートするための深さ値を含んでもよい。
【0041】
ステップ103にて、映像がブロックに分割される。分割は、圧縮のために各フレームのピクセル群を正方形及び/又は長方形のブロックに細分することを含む。例えば、高効率ビデオコーディング(HEVC)(H.265及びMPEG-Hパート2としても知られる)において、フレームは、先ず、所定サイズ(例えば、64ピクセル×64ピクセル)のブロックである符号化ツリーユニット(CTU)へと分割されることができる。CTUは、ルマサンプル及びクロマサンプルの双方を含む。符号化ツリーを使用して、CTUをブロックへと分割し、そして、更なる符号化をサポートする構成が達成されるまでブロックを再帰的に細分し得る。例えば、フレームのルマ成分が、個々のブロックが比較的均一な照明値を含むまで細分され得る。さらに、フレームのクロマ成分が、個々のブロックが比較的均一な色値を含むまで細分され得る。従って、映像フレームのコンテンツに応じて分割機構が変わる。
【0042】
ステップ105にて、様々な圧縮機構を使用して、ステップ103で分割された画像ブロックを圧縮する。例えば、インター予測及び/又はイントラ予測が使用され得る。インター予測は、共通シーン内のオブジェクトは複数の連続するフレームに現れる傾向があるという事実を利用するように設計される。従って、参照フレーム内のオブジェクトを描くブロックを、隣接するフレームにおいて繰り返し記述する必要はない。具体的には、例えばテーブルなどのオブジェクトは、複数のフレームにわたって定位置に留まり得る。従って、テーブルは一度記述され、隣接するフレームは参照フレームを参照し返すことができる。パターンマッチング機構を使用して、複数フレームにわたってオブジェクトをマッチングし得る。また、移動するオブジェクトは、例えばオブジェクトの動き又はカメラの動きのために、複数のフレームにわたって表現され得る。特定の一例として、映像は、複数のフレームにわたってスクリーンを横切って移動する自動車を示し得る。そのような動きを記述するために、動きベクトルを用いることができる。動きベクトルは、あるフレーム内でのオブジェクトの座標から参照フレーム内でのそのオブジェクトの座標へのオフセットを提供する二次元ベクトルである。それ故に、インター予測は、現在フレーム内の画像ブロックを、参照フレーム内の対応するブロックからのオフセットを指し示す一組の動きベクトルとして符号化することができる。
【0043】
イントラ予測は、共通フレーム内のブロックを符号化する。イントラ予測は、ルマ成分及びクロマ成分はフレーム内で群がる傾向があるという事実を利用する。例えば、樹木の一部の緑色のパッチは、同様の緑色のパッチに隣接して位置する傾向がある。イントラ予測は、多数の方向予測モード(例えば、HEVCでは33種)、平面モード、及び直流(DC)モードを使用する。方向モードは、現在ブロックが、対応する方向の隣接ブロックのサンプルと類似/同じであることを示す。平面モードは、行/列に沿った一連のブロック(例えば、平面)が、行の端における隣接ブロックに基づいて補間され得ることを示す。平面モードは、事実上、値を変化させる際に比較的一定の傾きを使用することによって、行/列を横切る明るさ/色の滑らかな遷移を示す。DCモードは、境界平滑化のために使用され、ブロックが方向予測モードの角度方向に関連する全ての隣接ブロックのサンプルに関する平均値と類似/同じであることを示す。従って、イントラ予測ブロックは、画像ブロックを、実際の値の代わりに様々な関係予測モード値として表現することができる。また、インター予測ブロックは、画像ブロックを、実際の値の代わりに動きベクトル値として表現することができる。いずれの場合も、予測ブロックは、一部のケースにおいて、画像ブロックを正確には表現しないことがある。差異が残差ブロックに格納される。ファイルを更に圧縮するために、残差ブロックに変換が適用され得る。
【0044】
ステップ107にて、様々なフィルタリング技術が適用され得る。HEVCでは、インループフィルタリングスキームに従ってフィルタが適用される。上述のブロックベースの予測は、デコーダにおいてブロックノイズのある画像の作成をもたらし得る。さらに、ブロックベースの予測スキームは、ブロックを符号化し、次いで、参照ブロックとしての後の使用のために、符号化されたブロックを再構成し得る。インループフィルタリングスキームは、ブロック/フレームに対して、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、及びサンプル適応オフセット(sample adaptive offset;SAO)フィルタを繰り返し適用する。これらのフィルタは、そのようなブロッキングアーチファクトを軽減して、符号化されたファイルを正確に再構成することができるようにする。さらに、これらのフィルタは、再構成される参照ブロックにおけるアーチファクトを軽減して、アーチファクトが、再構成された参照ブロックに基づいて符号化される後続ブロック内に更なるアーチファクトを生み出すことが起こりにくいようにする。
【0045】
映像信号が分割され、圧縮され、及びフィルタリングされると、ステップ109にて、得られたデータがビットストリームに符号化される。ビットストリームは、上述のデータと、デコーダにおける適切な映像信号再構成をサポートするために望まれる信号伝達データとを含む。例えば、そのようなデータは、分割データ、予測データ、残差ブロック、及びデコーダに符号化命令を提供する様々なフラグを含み得る。ビットストリームは、要求を受けてデコーダに向けて送信するためにメモリに格納され得る。ビットストリームはまた、複数のデコーダに向けてブロードキャスト及び/又はマルチキャストされてもよい。ビットストリームの作成は反復プロセスである。従って、ステップ101、103、105、107、及び109は、多数のフレーム及びブロックにわたって連続的に及び/又は同時に行われ得る。図1に示す順序は、説明の明確さ及び容易さのために提示されたものであり、映像符号化プロセスを特定の順序に限定することを意図したものではない。
【0046】
ステップ111にて、デコーダがビットストリームを受信し、復号処理を開始する。具体的には、デコーダは、エントロピー復号スキームを使用してビットストリームを対応する構文及び映像データに変換する。デコーダは、ステップ111にて、ビットストリームからの構文データを使用してフレームの分割を割り出す。この分割は、ステップ103でのブロック分割の結果と一致するはずである。ステップ111で使用されるエントロピー符号化/復号をここで説明する。エンコーダは、圧縮プロセス中に、例えば(1つ以上の)入力画像内の値の空間位置に基づいて幾つかの可能な選択からブロック分割スキームを選択するなど、数多くの選択を行う。厳密な選択を信号伝達することは、多数のビンを使用し得る。ここで使用されるとき、ビンは、変数(例えば、コンテキストに応じて変わり得るビット値)として扱われるバイナリ値である。エントロピー符号化は、エンコーダが特定のケースに対して明らかに実行可能でないオプションを廃棄して一組の可能なオプションを残すことを可能にする。そして、各可能なオプションにコードワードが割り当てられる。コードワードの長さは、可能なオプションの数に基づく(例えば、2つのオプションに対して1つのビン、3つから4つのオプションに対して2つのビン、等々)。次いで、エンコーダは、選択したオプションに対してコードワードを符号化する。このスキームはコードワードのサイズを小さくする。何故なら、コードワードは、大きいものであり得る可能な全てのオプションの集合からの選択を一意に示すのではなく、可能なオプションの小さい部分集合からの選択を一意に示すのに望まれるだけの大きさであるからである。そして、デコーダが、エンコーダと同様のやり方で、可能なオプションの集合を決定することによって選択を復号する。可能なオプションの集合を決定することにより、デコーダは、コードワードを読み取って、エンコーダによって為された選択を割り出すことができる。
【0047】
ステップ113にて、デコーダはブロック復号を実行する。具体的には、デコーダは逆変換を使用して残差ブロックを生成するために。次いで、デコーダは、残差ブロック及び対応する予測ブロックを使用し、分割に従って画像ブロックを再構成する。予測ブロックは、ステップ105にてエンコーダで生成されたイントラ予測ブロック及びインター予測ブロックの双方を含み得る。そして、再構成された画像ブロックが、ステップ111で割り出された分割データに従って、再構成された映像信号のフレームの中に位置付けられる。ステップ113のための構文も、上述のようなエントロピー符号化を介してビットストリーム内で信号伝達され得る。
【0048】
ステップ115にて、再構成された映像信号のフレームに対して、エンコーダにおけるステップ107と同様のやり方でフィルタリングが実行される。例えば、ブロッキングアーチファクトを除去するために、ノイズ抑制フィルタ、デブロッキングフィルタ、適応ループフィルタ、及びSAOフィルタがフレームに適用され得る。フレームがフィルタリングされると、ステップ117にて、エンドユーザによる視聴のために映像信号をディスプレイに出力することができる。
【0049】
図2は、映像符号化のための符号化・復号(コーデック)システム200の一例の概略図である。具体的には、コーデックシステム200は、動作方法100の実行をサポートするための機能を提供する。コーデックシステム200は、エンコーダ及びデコーダの双方で使用されるコンポーネントを示すように一般化されている。コーデックシステム200は、動作方法100のステップ101及び103に関して説明したように、映像信号を受信して分割し、それが、分割された映像信号201をもたらす。次いで、コーデックシステム200は、エンコーダとして作用するとき、方法100のステップ105、107、及び109に関して説明したように、分割された映像信号201を符号化されたビットストリームへと圧縮する。デコーダとして作用するとき、コーデックシステム200は、動作方法100のステップ111、113、115、及び117に関して説明したように、ビットストリームから出力映像信号を生成する。コーデックシステム200は、全般コーダ制御コンポーネント211、変換スケーリング・量子化コンポーネント213、イントラピクチャ推定コンポーネント215、イントラピクチャ予測コンポーネント217、動き補償コンポーネント219、動き推定コンポーネント221、スケーリング・逆変換コンポーネント229、フィルタ制御分析コンポーネント227、インループフィルタコンポーネント225、復号ピクチャバッファコンポーネント223、及びヘッダフォーマット・コンテキスト適応バイナリ算術符号化(context adaptive binary arithmetic coding;CABAC)コンポーネント231を含む。このようなコンポーネントが、図示のように結合される。図2において、黒線は、符号化/復号されるデータの移動を示し、破線は、他のコンポーネントの動作を制御する制御データの移動を示している。エンコーダ内には、コーデックシステム200のこれらコンポーネントが全て存在し得る。デコーダは、コーデックシステム200のこれらコンポーネントのうちのサブセットを含み得る。例えば、デコーダは、イントラピクチャ予測コンポーネント217、動き補償コンポーネント219、スケーリング・逆変換コンポーネント229、インループフィルタコンポーネント225、及び復号ピクチャバッファコンポーネント223を含み得る。これらのコンポーネントをここで説明する。
【0050】
分割された映像信号201は、キャプチャされたビデオシーケンスが符号化ツリーによってピクセルのブロックへと分割されたものである。符号化ツリーは、様々な分割モードを使用して、ピクセルのブロックを、より小さいピクセルのブロックへと細分する。すると、これらのブロックは、より小さいブロックへと更に細分されることができる。ブロックは、符号化ツリー上のノードとして参照され得る。より大きい親ノードが、より小さい子ノードへと分割される。ノードが細分される回数は、ノード/符号化ツリーの深さとして参照される。分割されたブロックは、一部のケースにおいて符号化ユニット(CU)に含められることができる。例えば、CUは、ルマブロック、(1つ以上の)赤色差クロマ(Cr)ブロック、及び(1つ以上の)青色差クロマ(Cb)ブロックを、該CUに関する対応する構文命令とともに含むCTUの一部とすることができる。分割モードは、ノードを、使用される分割モードに応じて異なる形状の、それぞれ2つ、3つ、又は4つの子ノードへと分割するために使用される二分木(BT)、三分木(TT)、及び四分木(QT)を含み得る。分割された映像信号201は、圧縮のために、全般コーダ制御コンポーネント211、変換スケーリング・量子化コンポーネント213、イントラピクチャ推定コンポーネント215、フィルタ制御分析コンポーネント227、及び動き推定コンポーネント221に転送される。
【0051】
全般コーダ制御コンポーネント211は、アプリケーション制約に従って、ビデオシーケンスの画像のビットストリームへの符号化に関連する決定を行うように構成される。例えば、全般コーダ制御コンポーネント211は、再構成品質に対するビットレート/ビットストリームサイズの最適化を管理する。そのような決定は、ストレージ空間/帯域幅の可用性及び画像解像度要求に基づいて行われ得る。全般コーダ制御コンポーネント211はまた、バッファのアンダーラン及びオーバーランの問題を緩和するために、伝送速度に照らしてバッファ利用を管理する。これらの問題を管理するために、全般コーダ制御コンポーネント211は、他のコンポーネントによる分割、予測、及びフィルタリングを管理する。例えば、全般コーダ制御コンポーネント211は動的に、解像度を高め且つ帯域幅使用を増やすために圧縮の複雑さを増加させ、あるいは、解像度及び帯域幅使用を下げるために圧縮の複雑さを減少させ得る。従って、全般コーダ制御コンポーネント211は、映像信号再構成品質をビットレートの懸念とバランスさせるよう、コーデックシステム200の他のコンポーネントを制御する。全般コーダ制御コンポーネント211は、他のコンポーネントの動作を制御する制御データを作成する。制御データはまた、デコーダでの復号用のパラメータを信号伝達するためにビットストリーム内に符号化されるよう、ヘッダフォーマット・CABACコンポーネント231に転送される。
【0052】
分割された映像信号201はまた、インター予測のために、動き推定コンポーネント221及び動き補償コンポーネント219に送られる。分割された映像信号201のフレーム又はスライスが、複数の映像ブロックへと分割され得る。動き推定コンポーネント221及び動き補償コンポーネント219は、時間予測を提供するために、1つ以上の参照フレーム内の1つ以上のブロックに対する受信映像ブロックのインター予測符号化を実行する。コーデックシステム200は、例えば映像データのブロックごとに適切な符号化モードを選択するために、複数の符号化パスを実行し得る。
【0053】
動き推定コンポーネント221及び動き補償コンポーネント219は、高度に集積され得るが、概念上の目的で別々に図示されている。動き推定コンポーネント221によって実行される動き推定は、映像ブロックに関する動きを推定するものである動きベクトルを生成するプロセスである。動きベクトルは、例えば、符号化されるオブジェクトの予測ブロックに対する変位を指し示し得る。予測ブロックは、ピクセル差に関して、符号化されるブロックによく一致することが見出されたブロックである。予測ブロックは、参照ブロックとしても参照され得る。そのようなピクセル差は、絶対差の和(SAD)、二乗差の和(SSD)、又は他の差分メトリックによって決定され得る。HEVCは、CTU、符号化ツリーブロック(CTB)、及びCUを含む幾つかの符号化オブジェクトを使用する。例えば、CTUはCTBへと分割されることができ、CTBは、次いで、CUに含めるためにCBへと分割されることができる。CUは、予測データを含む予測ユニット(PU)及び/又はCUに関する変換された残差データを含む変換ユニット(TU)として符号化されることができる。動き推定コンポーネント221は、レート歪み最適化プロセスの一部としてレート歪み解析を用いることによって、動きベクトル、PU、及びTUを生成する。例えば、動き推定コンポーネント221は、現在ブロック/フレームに対する複数の参照ブロック、複数の動きベクトルなどを決定することができ、また、最良のレート歪み特性を持つ参照ブロック、動きベクトルなどを選択することができる。最良のレート歪み特性は、ビデオ再構成の品質(例えば、圧縮によるデータ損失の量)と符号化効率(例えば、最終的な符号化のサイズ)の双方をバランスさせる。
【0054】
一部の例において、コーデックシステム200は、復号ピクチャバッファコンポーネント223に格納された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。例えば、映像コーデックシステム200は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、又は他の分数ピクセル位置の値を補間し得る。従って、動き推定コンポーネント221は、フルピクセル位置及び分数ピクセル位置に対する動き探索を実行し、分数ピクセル精度を有する動きベクトルを出力し得る。動き推定コンポーネント221は、インター符号化されたスライス内の映像ブロックのPUに関する動きベクトルを、該PUの位置を参照ピクチャの予測ブロックの位置と比較することによって計算する。動き推定コンポーネント221は、計算した動きベクトルを、動きデータとして符号化のためにヘッダフォーマット・CABACコンポーネント231に出力するとともに、動きとして動き補償コンポーネント219に出力する。
【0055】
動き補償コンポーネント219によって実行される動き補償は、動き推定コンポーネント221によって決定された動きベクトルに基づいて予測ブロックをフェッチ又は生成することを含み得る。繰り返しとなるが、一部の例において、動き推定コンポーネント221及び動き補償コンポーネント219は機能的に集積され得る。現在映像ブロックのPUに関する動きベクトルを受信して、動き補償コンポーネント219は、動きベクトルが指す予測ブロックを位置特定し得る。次いで、符号化している現在映像ブロックのピクセル値から予測ブロックのピクセル値を減算することによって残差映像ブロックが形成されて、ピクセル差の値を形成する。一般に、動き推定コンポーネント221はルマ成分に対して動き推定を実行し、動き補償コンポーネント219は、ルマ成分に基づいて計算された動きベクトルをクロマ成分及びルマ成分の双方に使用する。予測ブロック及び残差ブロックは、変換スケーリング・量子化コンポーネント213に転送される。
【0056】
分割された映像信号201はまた、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217に送られる。動き推定コンポーネント221及び動き補償コンポーネント219と同様に、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、高度に集積され得るが、概念上の目的で別々に図示されている。イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、上述のように、フレーム間で動き推定コンポーネント221及び動き補償コンポーネント219によって実行されるインター予測の代わりとして、現在ブロックを現在フレーム内のブロックに対してイントラ予測する。特に、イントラピクチャ推定コンポーネント215は、現在ブロックを符号化するのに使用するイントラ予測モードを決定する。一部の例において、イントラピクチャ推定コンポーネント215は、複数のテストされたイントラ予測モードから、現在ブロックを符号化するのに適切なイントラ予測モードを選択する。そして、選択されたイントラ予測モードが、符号化のためにヘッダフォーマット・CABACコンポーネント231に転送される。
【0057】
例えば、イントラピクチャ推定コンポーネント215は、様々なテストされたイントラ予測モードについてレート歪み解析を用いてレート歪み値を計算し、それらテストされたモードの中で最良のレート歪み特性を持つイントラ予測モードを選択する。レート歪み解析は、一般に、符号化ブロックと、符号化されて該符号化ブロックを生成した元の符号化されていないブロックとの間の歪み(又は誤差)の量と、該符号化ブロックを生成するのに使用されたビットレート(例えば、ビット数)とを決定する。イントラピクチャ推定コンポーネント215は、様々な符号化ブロックについての歪み及びレートから比を計算し、そのブロックに対してどのイントラ予測モードが最良のレート歪み値を示すのかを決定する。加えて、イントラピクチャ推定コンポーネント215は、レート歪み最適化(rate-distortion optimization;RDO)に基づく深さモデリングモード(depth modeling mode;DMM)を使用して深さマップの深さブロックを符号化するように構成され得る。
【0058】
イントラピクチャ予測コンポーネント217は、エンコーダ上に実装されるとき、イントラピクチャ推定コンポーネント215によって決定された選択イントラ予測モードに基づいて、予測ブロックから残差ブロックを生成することができ、あるいは、デコーダ上に実装されるとき、ビットストリームから残差ブロックを読み取ることができる。残差ブロックは、行列として表された、予測ブロックと元のブロックとの間の値の差を含む。そして、残差ブロックは、変換スケーリング・量子化コンポーネント213に転送される。イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217は、ルマ成分及びクロマ成分の双方に対して動作し得る。
【0059】
変換スケーリング・量子化コンポーネント213は、残差ブロックを更に圧縮するように構成される。変換スケーリング・量子化コンポーネント213は、例えば離散コサイン変換(DCT)、離散サイン変換(DST)、又は概念的に類似した変換などの変換を、残差ブロックに適用して、残留変換係数値を有する映像ブロックを生成する。ウェーブレット変換、整数変換、サブバンド変換、又は他のタイプの変換も使用され得る。当該変換は、残差情報を、ピクセル値ドメインから例えば周波数ドメインなどの変換ドメインに変換し得る。変換スケーリング・量子化コンポーネント213はまた、変換された残差情報を、例えば周波数に基づいて、スケーリングするように構成される。このようなスケーリングは、異なる周波数の情報が異なる粒度で量子化されるように残差情報にスケーリング係数を適用することを含み、これは、再構成される映像の最終的な視覚品質に影響を及ぼし得る。変換スケーリング・量子化コンポーネント213はまた、ビットレートを更に下げるために変換係数を量子化するように構成される。この量子化プロセスは、係数のうちの一部又は全てに関連するビット深さを低減させ得る。量子化の程度は、量子化パラメータを調節することによって変更され得る。一部の例において、変換スケーリング・量子化コンポーネント213は、次いで、量子化された変換係数を含む行列のスキャンを実行し得る。量子化された変換係数は、ビットストリーム内に符号化されるよう、ヘッダフォーマット・CABACコンポーネント231に転送される。
【0060】
スケーリング・逆変換コンポーネント229は、動き推定を支援するために変換スケーリング・量子化コンポーネント213の逆演算を適用する。スケーリング・逆変換コンポーネント229は、例えば別の現在ブロックに対する予測ブロックとなり得る参照ブロックとしての後の使用のために、ピクセルドメインの残差ブロックを再構成すべく、逆のスケーリング、変換、及び/又は量子化を適用する。動き推定コンポーネント221及び/又は動き補償コンポーネント219が、後のブロック/フレームの動き推定における使用のために、残差ブロックを対応する予測ブロックに足し戻すことによって参照ブロックを計算し得る。スケーリング、量子化、及び変換の間に生み出されるアーチファクトを軽減するために、再構成された参照ブロックにフィルタが適用される。そのようなアーチファクトは、さもなければ、後続ブロックが予測されるときに不正確な予測を生じさせる(及び更なるアーチファクトを生み出す)ことになり得る。
【0061】
フィルタ制御分析コンポーネント227及びインループフィルタコンポーネント225は、残差ブロックに及び/又は再構成された画像ブロックにフィルタを適用する。例えば、スケーリング・逆変換コンポーネント229からの変換された残差ブロックが、イントラピクチャ予測コンポーネント217及び/又は動き補償コンポーネント219からの対応する予測ブロックと組み合わされて、元の画像ブロックを再構成し得る。そして、再構成された画像ブロックにフィルタが適用され得る。一部の例において、フィルタは、代わりに残差ブロックに適用されてもよい。図2の他のコンポーネントと同様に、フィルタ制御分析コンポーネント227及びインループフィルタコンポーネント225は、高度に集積され、一緒に実装され得るが、概念上の目的で別々に図示されている。再構成された参照ブロックに適用されるフィルタは、特定の空間領域に適用され、そのようなフィルタがどのように適用されるのかを調整するために複数のパラメータを含む。フィルタ制御分析コンポーネント227は、再構成された参照ブロックを分析して、そのようなフィルタを適用すべき場所を決定し、対応するパラメータを設定する。このようなデータは、符号化のためのフィルタ制御データとしてヘッダフォーマット・CABACコンポーネント231に転送される。インループフィルタコンポーネント225は、フィルタ制御データに基づいてそのようなフィルタを適用する。該フィルタは、デブロッキングフィルタ、ノイズ抑制フィルタ、SAOフィルタ、及び適応ループフィルタを含み得る。このようなフィルタは、例に応じて、空間/ピクセルドメイン(例えば、再構成されたピクセルブロック)にて又は周波数ドメインにて適用され得る。
【0062】
エンコーダとして動作するとき、フィルタリングされた再構成画像ブロック、残差ブロック、及び/又は予測ブロックは、上述のような動き推定での後の使用のために、復号ピクチャバッファコンポーネント223に格納される。デコーダとして動作するとき、復号ピクチャバッファコンポーネント223は、再構成されフィルタリングされたブロックを、出力映像信号の一部として格納しディスプレイに向けて転送する。復号ピクチャバッファコンポーネント223は、予測ブロック、残差ブロック、及び/又は再構成画像ブロックを格納することができる任意のメモリデバイスとし得る。
【0063】
ヘッダフォーマット・CABACコンポーネント231は、コーデックシステム200の様々なコンポーネントからデータを受信し、それらのデータを、デコーダに向けた伝送のために符号化ビットストリームへと符号化する。具体的には、ヘッダフォーマット・CABACコンポーネント231は、例えば全般制御データ及びフィルタ制御データなどの制御データを符号化する様々なヘッダを生成する。さらに、イントラ予測及び動きデータを含む予測データ並びに量子化変換係数データの形態の残差データが全て、ビットストリーム内に符号化される。最終的なビットストリームは、元の分割された映像信号201を再構成するためにデコーダによって望まれる全ての情報を含む。そのような情報はまた、イントラ予測モードインデックステーブル(コードワードマッピングテーブルとしても参照される)、様々なブロックに関する符号化コンテキストの定義、最も可能性の高いイントラ予測モードを指し示すインジケーション、分割情報を指し示すインジケーションなども含み得る。このようなデータは、エントロピー符号化を使用することによって符号化され得る。例えば、コンテキスト適応可変長符号化(context adaptive variable length coding;CAVLC)、CABAC、構文ベースのコンテキスト適応バイナリ算術符号化(syntax-based context-adaptive binary arithmetic coding;SBAC)、確率間隔分割エントロピー(probability interval partitioning entropy;PIPE)符号化、又は他のエントロピー符号化技術を使用することによって、情報を符号化し得る。エントロピー符号化の後、符号化されたビットストリームは、別の装置(例えば、ビデオデコーダ)に送信されてもよいし、あるいは、後の伝送又は検索のためにアーカイブされてもよい。
【0064】
図3は、ビデオエンコーダ300の一例を示すブロック図である。ビデオエンコーダ300は、コーデックシステム200の符号化機能を実装するため、及び/又は動作方法100のステップ101、103、105、107、及び/又は109を実行するために使用され得る。エンコーダ300は、入力映像信号を分割し、その結果、分割された映像信号201と実質的に同様のものである分割された映像信号301が得られる。次いで、分割された映像信号301が、エンコーダ300のコンポーネントによって圧縮され、ビットストリームへと符号化される。
【0065】
具体的には、分割された映像信号301は、イントラ予測のためにイントラピクチャ予測コンポーネント317に転送される。イントラピクチャ予測コンポーネント317は、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217と実質的に同様とし得る。分割された映像信号301はまた、復号ピクチャバッファコンポーネント323内の参照ブロックに基づくインター予測のために、動き補償コンポーネント321に転送される。動き補償コンポーネント321は、動き推定コンポーネント221及び動き補償コンポーネント219と実質的に同様とし得る。イントラピクチャ予測コンポーネント317及び動き補償コンポーネント321からの予測ブロック及び残差ブロックが、残差ブロックの変換及び量子化のために変換・量子化コンポーネント313に転送される。変換・量子化コンポーネント313は、変換スケーリング・量子化コンポーネント213と実質的に同様とし得る。変換され量子化された残差ブロック及び対応する予測ブロックが(関連する制御データとともに)、ビットストリームへの符号化のためにエントロピー符号化コンポーネント331に転送される。エントロピー符号化コンポーネント331は、ヘッダフォーマット・CABACコンポーネント231と実質的に同様とし得る。
【0066】
変換され量子化された残差ブロック及び/又は対応する予測ブロックはまた、動き補償コンポーネント321による使用のための参照ブロックへの再構成のために、変換・量子化コンポーネント313から逆変換・量子化コンポーネント329に転送される。逆変換・量子化コンポーネント329は、スケーリング・逆変換コンポーネント229と実質的に同様とし得る。残差ブロック及び/又は再構成された参照ブロックに対して、例に応じて、インループフィルタコンポーネント325内のインループフィルタも適用される。インループフィルタコンポーネント325は、フィルタ制御分析コンポーネント227及びインループフィルタコンポーネント225と実質的に同様とし得る。インループフィルタコンポーネント325は、インループフィルタコンポーネント225に関して説明したような複数のフィルタを含み得る。そして、フィルタリングされたブロックが、動き補償コンポーネント321による参照ブロックとしての使用のために、復号ピクチャバッファコンポーネント323に格納される。復号ピクチャバッファコンポーネント323は、復号ピクチャバッファコンポーネント223と実質的に同様とし得る。
【0067】
図4は、ビデオデコーダ400の一例を示すブロック図である。ビデオデコーダ400は、コーデックシステム200の復号機能を実装するため、及び/又は動作方法100のステップ111、113、115、及び/又は117を実行するために使用され得る。デコーダ400は、例えばエンコーダ300から、ビットストリームを受信し、エンドユーザへの表示のために、ビットストリームに基づく再構成された出力映像信号を生成する。
【0068】
ビットストリームはエントロピー復号コンポーネント433によって受信される。エントロピー復号コンポーネント433は、例えばCAVLC、CABAC、SBAC、PIPE符号化、又は他のエントロピー符号化技術などの、エントロピー復号スキームを実装するように構成される。例えば、エントロピー復号コンポーネント433は、ヘッダ情報を使用して、ビットストリーム内にコードワードとして符号化された付加データを解釈するためのコンテキストを提供し得る。復号される情報は、例えば全般制御データ、フィルタ制御データ、分割情報、動きデータ、予測データ、及び残差ブロックからの量子化変換係数などの、映像信号を復号するために望まれる如何なる情報をも含む。量子化変換係数は、残差ブロックへの再構成のために、逆変換・量子化コンポーネント429に転送される。逆変換・量子化コンポーネント429は、逆変換・量子化コンポーネント329と同様とし得る。
【0069】
再構成された残差ブロック及び/又は予測ブロックが、イントラ予測動作に基づく画像ブロックへの再構成のために、イントラピクチャ予測コンポーネント417に転送される。イントラピクチャ予測コンポーネント417は、イントラピクチャ推定コンポーネント215及びイントラピクチャ予測コンポーネント217と同様とし得る。具体的には、イントラピクチャ予測コンポーネント417は、予測モードを使用してフレーム内で参照ブロックを位置特定し、その結果に残差ブロックを適用して、イントラ予測画像ブロックを再構成する。再構成されたイントラ予測画像ブロック及び/又は残差ブロック及び対応するインター予測データが、インループフィルタコンポーネント425を介して復号ピクチャバッファコンポーネント423に転送される。復号ピクチャバッファコンポーネント423及びインループフィルタコンポーネント425は、それぞれ、復号ピクチャバッファコンポーネント223及びインループフィルタコンポーネント225と実質的に同様とし得る。インループフィルタコンポーネント425は、再構成された画像ブロック、残差ブロック及び/又は予測ブロックをフィルタリングし、そのような情報が復号ピクチャバッファコンポーネント423に格納される。復号ピクチャバッファコンポーネント423からの再構成された画像ブロックが、インター予測のために動き補償コンポーネント421に転送される。動き補償コンポーネント421は、動き推定コンポーネント221及び/又は動き補償コンポーネント219と実質的に同様とし得る。具体的には、動き補償コンポーネント421は、参照ブロックからの動きベクトルを用いて予測ブロックを生成し、その結果に残差ブロックを適用して画像ブロックを再構成する。得られた再構成ブロックも、インループフィルタコンポーネント425を介して復号ピクチャバッファコンポーネント423に転送され得る。復号ピクチャバッファコンポーネント423は、更なる再構成画像ブロックを格納し続け、それらを、分割情報を介して、フレームへと再構成することができる。そのようなフレームがまた、シーケンスに配置され得る。このシーケンスが、再構成された出力映像信号としてディスプレイに向けて出力される。
【0070】
図5は、符号化ビデオシーケンスを含むビットストリーム500の一例を示す概略図である。例えば、ビットストリーム500は、コーデックシステム200及び/又はデコーダ400による復号のために、コーデックシステム200及び/又はエンコーダ300によって生成されることができる。他の一例として、ビットストリーム500は、方法100のステップ109にて、ステップ111におけるデコーダによる使用のために、エンコーダによって生成されてもよい。
【0071】
ビットストリーム500は、シーケンスパラメータセット(sequence parameter set;SPS)510、複数のピクチャパラメータセット(picture parameter set;PPS)512、複数のスライスヘッダ514、及び画像データ520を含む。SPS510は、ビットストリーム500に含まれるビデオシーケンス内の全てのピクチャに共通のシーケンスデータを含む。そのようなデータは、ピクチャサイズ、ビット深度、符号化ツールパラメータ、ビット速度制限などを含むことができる。PPS512は、各ピクチャに特有のパラメータを含む。従って、ビデオシーケンス内にピクチャ当たり1つのPPS512が存在し得る。PPS512は、対応するピクチャ内のスライスに利用可能な符号化ツール、量子化パラメータ、オフセット、ピクチャ特有の符号化ツールパラメータ(例えば、フィルタ制御)などを示すことができる。スライスヘッダ514は、ピクチャ内の各スライスに特有のパラメータを含む。従って、ビデオシーケンス内にスライス当たり1つのスライスヘッダ514が存在し得る。スライスヘッダ514は、スライスタイプ情報、ピクチャ順序カウント(picture order count;POC)、参照ピクチャリスト、予測重み、タイルエントリーポイント、デブロッキングパラメータなどを含み得る。
【0072】
画像データ520は、インター予測及び/又はイントラ予測に従って符号化された映像データと、対応する変換及び量子化された残差データを含む。このような画像データ520は、符号化に先立って画像を分割するために使用された分割に従ってソートされる。例えば、画像データ520内の画像はスライス521へと分割される。各スライス521が更にタイル523へと分割される。タイル523は更にCTU527へと分割される。CTU527は更に、符号化ツリーに基づいて符号化ブロックへと分割される。そして、符号化ブロックを、予測機構に従って符号化/復号することができる。画像/ピクチャは、1つ以上のスライス521を含むことができる。スライス521当たり1つのスライスヘッダ514が使用される。各スライス521は1つ以上のタイル523を含むことができ、そして、タイル523は複数のCTU527を含むことができる。
【0073】
各スライス521は、左上隅のタイル523と、右下隅のタイル523とによって規定される長方形とし得る。他の符号化システムにおいてとは異なり、スライス521は、ピクチャの幅全体を横断しなくてもよい。スライス521は、デコーダによって別々に表示されることができる最小単位である。従って、スライス521をより小さいユニットへと分割することは、ピクチャの所望領域を表示するのに十分な粒度であるようにしてサブピクチャを生成することを可能にする。例えば、仮想現実(VR)コンテキストにおいて、ピクチャは全可視球のデータを含み得るが、ユーザはヘッドマウントディスプレイ上でサブピクチャのみを見ることがある。より小さいスライス521は、そのようなサブピクチャを別々に信号伝達することを可能にする。スライス521はまた、一般に、別個のVCL NALユニット533にて信号伝達される。また、スライス521は、他のスライス521に基づく予測を可能にしなくてもよく、これは、各スライス521を他のスライス521とは独立に符号化することを可能にする。
【0074】
スライス521は、整数個のタイル523へと分割される。タイル523は、水平境界及び垂直境界によって作り出されるスライス521の分割部分である。タイル523は、ラスタースキャン順に符号化されることができ、また、例に応じて、他のタイル523に基づく予測を可能にしてもよいし可能にしなくてもよい。各タイル523は、ピクチャ内で一意のタイルID524を有し得る。タイルID524は、1つのタイル523を別のタイルから区別するために使用されることができる数値識別子である。タイルID524は、ラスタースキャン順に数値的に増加するタイルインデックスの値をとり得る。ラスタースキャン順は左から右、及び上から下である。タイルID524はまた、他の数値を使用してもよい。しかしながら、タイルID524は、ここで説明される計算をサポートするために、常にラスタースキャン順に増加すべきである。例えば、スライス521の境界は、スライス521の左上隅のタイル523のタイルID524と、スライス521の右下隅のタイル523のタイルID524とに従って決定されることができる。タイルID524がタイルインデックスとは異なる値である場合、変換機構を、例えばPPS512内など、ビットストリーム500内で信号伝達することができる。さらに、各タイル523が、エントリーポイントオフセット525と関連付けられ得る。エントリーポイントオフセット525は、タイル523に関連する符号化データの最初のビットの位置を指し示す。最初のタイル523は、ゼロのエントリーポイントオフセット525を持つことができ、更なるタイル523は各々、先行するタイル523内の符号化データのビット数に等しいエントリーポイントオフセット525を持つことができる。それ故に、エントリーポイントオフセット525の数は、タイル523の数より1だけ少ないと推定されることができる。
【0075】
タイル523は更にCTU527へと分割される。CTU527は、符号化ツリー構造によって更に符号化ブロックへと細分されることが可能なタイル523の一部であり、符号化ブロックは、エンコーダによって符号化されることができ、また、デコーダによって復号されることができる。CTU527は各々、CTUアドレス529と関連付けられる。CTUアドレス529は、ビットストリーム500内の対応するCTU527の位置を表す。具体的には、CTUアドレス529は、VCL NALユニット533内の対応するCTU527の位置を表し得る。一部の例において、CTU527のCTUアドレス529は、例えばPPS512内で、明示的に信号伝達され得る。他の例において、CTUアドレス529は、デコーダによって導出されることができる。例えば、CTUアドレス529は、対応するCTU527を含むタイル523のタイルID524に基づいて割り当てられることができる。そのような場合、デコーダは、左上及び右下のタイル523のタイルID524に基づいてスライス521内のタイル523を決定することができる。そして、デコーダは、スライス521内の決定されたタイル523を使用して、スライス521内のCTU527の数を割り出すことができる。さらに、デコーダは、既知のタイルID524及びCTU527の数を用いてCTUアドレス529を決定することができる。加えて、デコーダがCTU527の数を知っているので、各CTU527がVCL NALユニット533内の最後のCTU527であるかを指し示すフラグを省略することができる。これは何故なら、スライス521内のCTU527の数はVCL NALユニット533に含まれるものであり、デコーダは、その数を知ることによって、どのCTU527がVCL NALユニット533内の最後のCTU527であるかを割り出すことができるからである。しかしながら、一部の例では、タイル523間の区別を支援するために、タイル523内の最後のCTU527の後にパディングビットが置かれ得る。理解され得るように、タイルID524に基づいてスライス521の境界を信号伝達することは、デコーダが有意量のデータを推定することを可能にすることができ、そして、符号化効率を高めるために、それらのデータをビットストリーム500から省略することができる。
【0076】
ビットストリーム500は、VCL NALユニット533及び非VCL NALユニット531の中に位置付けられる。NALユニットは、ネットワーク上での伝送用の単一のパケットのペイロードとして配置されるサイズにされた符号化データユニットである。VCL NALユニット533は、符号化された映像データを含むNALユニットである。例えば、各VCL NALユニット533は、対応するタイル523、CTU527、及び符号化ブロックを含んだ、1つのスライス521のデータを含み得る。非VCL NALユニット531は、サポートする構文を含むが、符号化された映像データを含まないNALユニットである。例えば、非VCL NALユニット531は、SPS510、PPS512、スライスヘッダ514などを含み得る。従って、デコーダは、ビットストリーム500を、離散的なVCL NALユニット533及び非VCL NALユニット531にて受信する。ストリーミングアプリケーションにおいて、デコーダは、ビットストリーム500全体を受信するのを待つことなく現在の映像データを復号し得る。それ故に、タイルID524、エントリーポイントオフセット525、及びCTUアドレス529は、高速な復号、並列処理、及び他の映像表示機構のために、デコーダがVCL NALユニット533内の映像データを正確に位置特定することを可能にする。従って、タイルID524、エントリーポイントオフセット525、及び/又はCTUアドレス529を計算することは、ビットストリーム500のサイズを小さくし及び故に符号化効率を高めながら、効率的な復号及び表示機構の実装を可能にする。
【0077】
図6は、符号化のために分割された画像600の一例を示す概略図である。例えば、画像600は、例えば、コーデックシステム200、エンコーダ300、及び/又はデコーダ400によって、ビットストリーム500内に符号化され、そして、ビットストリーム500から復号されることができる。さらに、画像600は、方法100に従った符号化及び復号をサポートするように分割されることができる。
【0078】
画像600は、スライス521、タイル523、及びCTU527とそれぞれ実質的に同様とし得るものであるスライス621、タイル623、及びCTU627へと分割されることができる。図6では、スライス621は太線で描かれており、スライス621同士を図形的に区別するために白い背景及び網掛けを交互に付している。タイル623は破線で描かれている。スライス621の境界上に位置するタイル623の境界は、破線の太線として描かれ、スライス621の境界上に位置しないタイル623の境界は、太くない破線として描かれている。CTU627の境界は、CTU627の境界がタイル623又はスライス621の境界によってカバーされる所を除いて、太くない実線で描かれている。この例では、画像600は、9個のスライス621、24個のタイル623、及び216個のCTU627を含んでいる。
【0079】
図示のように、スライス621は、含まれるタイル623によって規定され得る境界を持つ長方形である。スライス621は、画像600の幅全体にわたって延在しなくてもよい。タイル623は、行及び列に従ってスライス621内に生成されることができる。そして、インター予測及び/又はイントラ予測に従った符号化のための符号化ブロックに細分されるのに適した画像600の分割を作り出すよう、タイル623からCTU627を分割することができる。
【0080】
これを用いることにより、映像符号化システムを改良することができる。例えば、スライスは、スライスに含まれるCTUが単純にピクチャのCTUラスタースキャン順に従った一組のピクチャのCTUではないとし得る、ように設計される。むしろ、スライスは、ピクチャのある矩形領域をカバーする一組のCTUとして規定される。また、各スライスは、それ自身のNALユニット内にある。また、スライス内のラスタースキャン順の左上及び右下のCTUのCTUアドレスをスライスヘッダ内で信号伝達することによって、スライスに含まれるCTUのアドレスを信号伝達することができる。さらに、スライスは、ピクチャのある矩形領域をカバーする一組の完全なタイルを含み且つそれらのみを含むように設計される。各スライスは、それ自身のNALユニット内にある。このように、2つ以上のスライスを持つことの目的は、ピクチャの矩形領域をカバーする一組のタイルをNALユニットに入れることであるとし得る。一部のケースにおいて、1つのピクチャ内に2つ以上のスライスが存在し、それらのスライスの各々が、矩形領域をカバーする一組の完全なタイルを含むことができる。また、ピクチャのタイルのうちの残りのものをカバーする1つの他のスライスもピクチャ内に存在し得る。このスライスによってカバーされる領域は、他のスライスによってカバーされる穴を有する矩形領域であり得る。例えば、関心領域の目的で、ピクチャは、一方のスライスが関心領域をカバーする一組の完全なタイルを含み、そして、他方のスライスがピクチャの残りのタイルを含む、2つのスライスを含み得る。
【0081】
スライスに含まれるCTUのアドレスは、そのスライスに含まれるタイルのタイルIDによって明示的又は暗示的に信号伝達され得る。効率的な信号伝達のために、一部の例では、左上及び右下のタイルのタイルIDのみが信号伝達され得る。更に向上されたシグナリング効率のために、スライスが単一のタイルを含んでいるかを指し示すフラグを信号伝達することができ、そうである場合、1つのタイルIDのみが信号伝達され得る。他のケースでは、スライスに含まれる全てのタイルIDが信号伝達される。一部の例において、タイルID値は、ピクチャ内のタイルインデックスと同じであるように割り当てられる。スライスに含まれるCTUのアドレスの導出のために、スライスヘッダ内でタイルIDを明示的に信号伝達するためのビット単位での長さは、ピクチャ内のタイルの数に従って導出されることができる(例えば、ピクチャ内のタイルの数の、2を底とする対数をとったもの)。ピクチャ内のタイルの数は、パラメータセット内で明示的に信号伝達されるか、あるいはパラメータセット内で信号伝達されるタイル構成に従って導出されるかすることができる。一部の例において、スライスに含まれるCTUのアドレスの導出のために、スライスヘッダ内のタイルIDを明示的に信号伝達するためのビット単位での長さは、パラメータセット内で信号伝達されることができる。一部の例において、スライス内のタイルの数から1を引いたものに等しいものであるエントリーポイントの数は、スライスヘッダ内で信号伝達されずに導出される。他の一例において、そのCTUがスライスの終わりであるかを指し示すCTU毎のフラグの信号伝達が回避される。
【0082】
一部の例において、スライス及びタイルは、例えば動き制約タイルセット(MCTS)などの一組のタイルをビットストリームから抽出して、適合するサブビットストリームを作り出すときに、スライスヘッダの書き換えが必要とされないように設計される。例えば、タイルIDは、タイル構成が信号伝達されるパラメータセット内でタイル毎に明示的に信号伝達され得る。タイルIDは各々、ピクチャ内で一意である。タイルIDは、ピクチャ内で連続していなくてもよい。しかしながら、タイルIDは、ピクチャのタイルラスタースキャンの方向に増加する順序(例えば、単調増加)で編成されるべきである。これにより、ピクチャ内のスライスの復号順序を、左上のタイルのタイルIDの値を増加させていくものであるように制限することができる。タイルIDが明示的に信号伝達されずに、タイルインデックスと同じであると推定される場合、スライスヘッダ内でタイルID値を信号伝達するために以下を使用することができる。そのスライスがピクチャの最初のスライスであるかを指し示すフラグを信号伝達することができる。そのスライスがピクチャの最初のスライスであることをフラグが指し示すとき、そのスライスの左上のタイルのタイルIDの信号伝達を省略することができる。何故なら、それは、最小のタイルインデックス(例えば、タイルインデックスがゼロから始まると仮定して、ゼロのタイルインデックス)を持つタイルであると推定することができるからである。
【0083】
他の一例において、ピクチャはゼロの、又は1つ以上のMCTSを含み得る。MCTSは、1つ以上のタイルを含み得る。スライス内のタイルがMCTSの一部であるとき、MCTSは、そのスライス内の全てのタイルが同じMCTSの一部であるように制約される。スライスは更に、MCTSのタイルを含む全てのピクチャのタイル構成が、MCTS内のタイルの位置及びサイズに関して同じであるように制約され得る。一部の例において、スライスは、MCTSがスライス内に排他的に含まれるように制約される。これは2つの帰結を有する。この場合、各MCTSが別のNALユニット内にある。さらに、各MCTSが矩形の形状にある。
【0084】
MCTSの信号伝達は以下とし得る。そのスライスが、対応するスライスを含むアクセスユニット内にMCTSを有するNALユニットを含むかを指し示すために、フラグをスライスヘッダ内で信号伝達することができる。MCTSに関する他のサポート情報(例えば、MCTSを抽出することから得られるサブビットストリームのプロファイル、階層及びレベル情報)は、SEIメッセージ内で信号伝達される。あるいは、フラグインジケーション及びMCTSのサポート情報の双方をSEIメッセージ内で信号伝達してもよい。ピクチャ境界としてMCTS境界を扱うことの信号伝達を可能にするために、全てのタイル境界がピクチャ境界と同じに扱われるかを指し示す構文要素が、例えばタイル構成が信号伝達されるパラメータセット内で、信号伝達される。加えて、例えば、他の構文要素が全てのタイル境界がピクチャ境界と同じに扱われることを指し示さない場合に、スライスの全てのスライス境界がピクチャ境界と同じに扱われるかを指し示す構文要素がスライスヘッダ内で信号伝達され得る。
【0085】
そうでなく、全てのタイル境界がピクチャ境界と同じに扱われることを構文が指し示さない場合にのみ、インループフィルタリング処理が各タイル境界を横切って適用され得るかを指し示す構文要素が信号伝達され得る。この場合、タイル境界をピクチャ境界として扱うことは、数ある態様の中でもとりわけ、インループフィルタリング処理が各タイル境界を横切って適用されることができないことを指し示す。他の例において、全てのタイル境界がピクチャ境界と同じに扱われるかを指し示すインジケーションとは無関係に、インループフィルタリング処理が各タイル境界を横切って適用され得るかを指し示す構文要素が信号伝達される。この場合、タイル境界をピクチャ境界として扱うことは、インループフィルタリング処理が依然として各タイル境界を横切って適用され得ることを指し示す。
【0086】
一部の例において、MCTS境界がピクチャ境界として扱われる。さらに、スライス境界がピクチャ境界と同じに扱われるかを指し示すスライスヘッダ内の構文要素も、スライスがMCTSを含むかを指し示すフラグに対して条件付きにされることができる。一部のケースにおいて、MCTS境界がピクチャ境界として扱われるべきかを指し示すフラグの値は、スライスがMCTSを含むことをスライスヘッダ内のフラグが指し示す場合に推定されることができる。
【0087】
タイル又はスライスの境界がピクチャ境界として扱われるように指し示される場合、以下が適用される。時間的なルマ動きベクトル予測に関する導出プロセスにおいて、それぞれpic_height_in_luma_samples-1及びpic_width_in_luma_samples-1によって指し示される当該プロセスで使用される右及び下のピクチャ境界位置が、それぞれ、ルマサンプルの単位のタイル又はスライスの右及び下の境界位置で置換される。ルマサンプルの補間プロセスにおいて、それぞれ0、pic_height_in_luma_samples-1、0、pic_width_in_luma_samples-1によって指し示される当該プロセスで使用される左、右、上、及び下のピクチャ境界位置が、それぞれ、ルマサンプルの単位のタイル又はスライスの左、右、上、及び下の境界位置で置換される。クロマサンプル補間プロセスにおいて、それぞれ0、pic_height_in_luma_samples/SubWidthC-1、0、pic_width_in_luma_samples/SubWidthC-1によって指し示される当該プロセスで使用される左、右、上、及び下のピクチャ境界位置が、それぞれ、クロマサンプルの単位のタイル又はスライスの左、右、上、及び下の境界位置で置換される。
【0088】
前述の機構は、以下のように実装されることができる。スライスは、ピクチャの矩形領域をカバーし且つ単一のNALユニットに排他的に含まれる整数個のタイルとして規定される。スライスヘッダは、スライス内で表現される全てのタイルに関するデータ要素を含む符号化されたスライスの一部として規定される。タイルは、ピクチャ内の特定のタイル列及び特定のタイル行の中の矩形領域のCTU群として規定される。タイル列は、ピクチャの高さに等しい高さと、ピクチャパラメータセット内の構文要素によって指定される幅とを持つ矩形領域のCTU群として規定される。タイル行は、ピクチャパラメータセット内の構文要素によって指定される高さと、ピクチャの幅に等しい幅とを持つ矩形領域のCTU群として規定される。タイルスキャンは、CTUがタイル内でのCTUラスタースキャンにて連続して順序付けられるのに対して、ピクチャ内のタイルはピクチャのタイルのラスタースキャンにて連続して順序付けられるという、ピクチャを分割するCTUの特定の一連の順序付けとして規定される。
【0089】
このセクションには、ピクチャがどのようにスライス及びタイルに分割されるのかを記述する。ピクチャはスライス及びタイルに分割される。スライスは、ピクチャの矩形領域をカバーする一連のタイルである。タイルは、ピクチャの矩形領域をカバーする一連のCTUである。
【0090】
3つの別々の色平面を用いてピクチャが符号化される(separate_color_plane_flagが1に等しい)場合、スライスは、color_plane_idの対応する値によって特定される1つの色成分のCTUのみを含み、ピクチャの各色成分アレイが、同じcolor_plane_id値を持つスライスを含む。各値のcolor_plane_idについて、その値のcolor_plane_idを持つ符号化スライスNALユニットは、各符号化スライスNALユニットの最初のCTUに対するタイルスキャン順で増加していくCTUアドレスの順序にあるものとするという制約の下で、ピクチャ内の異なる値のcolor_plane_idを持つ符号化スライスが互いにインタリーブされ得る。なお、separate_color_plane_flagが0に等しい場合には、ピクチャの各CTUがきっちり1つのスライスに含まれる。separate_color_plane_flagが1に等しい場合、1つの色成分の各CTUはきっちり1つのスライスに含まれる(例えば、ピクチャの各CTUに関する情報がきっちり3つのスライス内に存在し、これらの3スライスは異なる値のcolor_plane_idを持つ)。
【0091】
この明細書の処理要素の以下の分割は、空間的な又はコンポーネント毎の分割を形成する:各ピクチャのコンポーネントへの分割;各コンポーネントのCTBへの分割;各ピクチャのタイル列への分割;各ピクチャのタイル行への分割;各タイル列のタイルへの分割;各タイル行のタイルへの分割;各タイルのCTUへの分割;各ピクチャのスライスへの分割;各スライスのタイルへの分割;各スライスのCTUへの分割;各CTUのCTBへの分割;コンポーネント幅がCTBサイズの整数倍でない場合に右コンポーネント境界でCTBは不完全であり、また、コンポーネント高さがCTBサイズの整数倍でない場合に下コンポーネント境界でCTBは不完全であることを除いての、各CTBの符号化ブロックへの分割;ルマサンプルにおけるピクチャ幅がルマCTBサイズの整数倍でない場合に右ピクチャ境界でCTUは不完全であり、また、ルマサンプルにおけるピクチャ高さがルマCTBサイズの整数倍でない場合に下ピクチャ境界でCTUは不完全であることを除いての、各CTUの符号化ユニットへの分割;各符号化ユニットの変換ユニットへの分割;各符号化ユニットの符号化ブロックへの分割;各符号化ブロックの変換ブロックへの分割;及び各変換ユニットの変換ブロックへの分割。
【0092】
隣接ブロック可用性に関する導出プロセスへの入力は、現在ピクチャの左上ルマサンプルに対する現在ブロックの左上サンプルのルマ位置(xCurr,yCurr)と、現在ピクチャの左上ルマサンプルに対して隣接するブロックによってカバーされるのルマ位置(xNbY,yNbY)である。このプロセスの出力は、位置(xNbY,yNbY)をカバーする隣接ブロックの可用性であり、availableNと表記される。隣接ブロック可用性availableNは、以下のように導出される。隣接ブロックを含むスライスのtop_left_tile_idが、値において、現在ブロックを含むスライスのtop_left_tile_idとは異なる、又は、隣接ブロックが、現在ブロックとは異なるタイルに含まれる、という条件のうちの1つ以上が真(true)である場合、availableNは偽(false)に等しく設定される。
【0093】
CTBラスター及びタイルスキャンプロセスは以下の通りである。CTB単位でのi番目のタイル列の幅を記述する、両端を含め0からnum_tile_columns_minus1までの範囲のiについてのリストColWidth[i]は、以下のように導出される:
if(uniform_tile_spacing_flag)
for(i=0;i<=num_tile_columns_minus1;i++)
ColWidth[i]=((i+1)*PicWidthInCtbsY)/(num_tile_columns_minus1+1)-
(i*PicWidthInCtbsY)/(num_tile_columns_minus1+1)
else{
ColWidth[num_tile_columns_minus1]=PicWidthInCtbsY (6-1)
for(i=0;i<num_tile_columns_minus1;i++){
ColWidth[i]=tile_column_width_minus1[i]+1
ColWidth[num_tile_columns_minus1]-=ColWidth[i]
}
}
CTB単位でのj番目のタイル行の高さを記述する、両端を含め0からnum_tile_rows_minus1までの範囲のjについてのリストRowHeight[j]は、以下のように導出される:
if(uniform_tile_spacing_flag)
for(j=0;j<=num_tile_rows_minus1;j++)
RowHeight[j]=((j+1)*PicHeightInCtbsY)/(num_tile_rows_minus1+1)-
(j*PicHeightInCtbsY)/(num_tile_rows_minus1+1)
else{
RowHeight[num_tile_rows_minus1]=PicHeightInCtbsY (6-2)
for(j=0;j<num_tile_rows_minus1;j++){
RowHeight[j]=tile_row_height_minus1[j]+1
RowHeight[num_tile_rows_minus1]-=RowHeight[j]
}
}
【0094】
CTB単位でのi番目のタイル列境界の位置を記述する、両端を含め0からnum_tile_columns_minus1+1までの範囲のiについてのリストColBd[i]は、以下のように導出される:
for(ColBd[0]=0,i=0;i<=num_tile_columns_minus1;i++)
ColBd[i+1]=ColBd[i]+ColWidth[i] (6-3)
CTB単位でのj番目のタイル行境界の位置を記述する、両端を含め0からnum_tile_rows_minus1+1までの範囲のjについてのリストRowBd[j]は、以下のように導出される:
for(RowBd[0]=0,j=0;j<=num_tile_rows_minus1;j++)
RowBd[j+1]=RowBd[j]+RowHeight[j] (6-4)
ピクチャのCTBラスタースキャンにおけるCTBアドレスからタイルスキャンにおけるCTBアドレスへの変換を記述する、両端を含め0からPicSizeInCtbsY-1までの範囲のctbAddrRsについてのリストCtbAddrRsToTs[ctbAddrRs]は、以下のように導出される:
for(ctbAddrRs=0;ctbAddrRs<PicSizeInCtbsY;ctbAddrRs++){
tbX=ctbAddrRs%PicWidthInCtbsY
tbY=ctbAddrRs/PicWidthInCtbsY
for(i=0;i<=num_tile_columns_minus1;i++)
if(tbX>=ColBd[i])
tileX=i
for(j=0;j<=num_tile_rows_minus1;j++) (6-5)
if(tbY>=RowBd[j])
tileY=j
CtbAddrRsToTs[ctbAddrRs]=0
for(i=0;i<tileX;i++)
CtbAddrRsToTs[ctbAddrRs]+=RowHeight[tileY]*ColWidth[i]
for(j=0;j<tileY;j++)
CtbAddrRsToTs[ctbAddrRs]+=PicWidthInCtbsY*RowHeight[j]
CtbAddrRsToTs[ctbAddrRs]+=(tbY-RowBd[tileY])*ColWidth[tileX]+tbX-ColBd[tileX]
}
【0095】
タイルスキャンにおけるCTBアドレスからピクチャのCTBラスタースキャンにおけるCTBアドレスへの変換を記述する、両端を含め0からPicSizeInCtbsY-1までの範囲のctbAddrTsについてのリストCtbAddrRsToTs[ctbAddrRs]は、以下のように導出される:
for(ctbAddrRs=0;ctbAddrRs<PicSizeInCtbsY;ctbAddrRs++) (6-6)
CtbAddrTsToRs[CtbAddrRsToTs[ctbAddrRs]]=ctbAddrRs
タイルスキャンにおけるCTBアドレスからタイルIDへの変換を記述する、両端を含め0からPicSizeInCtbsY-1までの範囲のctbAddrTsについてのリストTileId[ctbAddrTs]は、以下のように導出される:
for(j=0,tileIdx=0;j<=num_tile_rows_minus1;j++)
for(i=0;i<=num_tile_columns_minus1;i++,tileIdx++)
for(y=RowBd[j];y<RowBd[j+1];y++) (6-7)
for(x=ColBd[i];x<ColBd[i+1];x++)
TileId[CtbAddrRsToTs[y*PicWidthInCtbsY+x]]=
explicit_tile_id_flag?tile_id_val[i][j]:tileIdx
タイルインデックスからタイル内のCTUの番号への変換を記述する、両端を含め0からPicSizeInCtbsY-1までの範囲のtileIdxについてのリストNumCtusInTile[tileIdx]は、以下のように導出される:
for(j=0,tileIdx=0;j<=num_tile_rows_minus1;j++)
for(i=0;i<=num_tile_columns_minus1;i++,tileIdx++) (6-8)
NumCtusInTile[tileIdx]=ColWidth[i]*RowHeight[j]
【0096】
タイルIDからタイルインデックスへの変換を記述するNumTilesInPic tileId値の集合についての集合TileIdToIdx[tileId]、及びタイルIDからタイル内の最初のCTUのタイルスキャンにおけるCTBアドレスへの変換を記述する、両端を含め0からNumTilesInPic-1までの範囲のtileIdxについてのリストFirstCtbAddrTs[tileIdx]は、以下のように導出される:
for(ctbAddrTs=0,tileIdx=0,tileStartFlag=1;ctbAddrTs<PicSizeInCtbsY;ctbAddrTs++){
if(tileStartFlag){
TileIdToIdx[TileId[ctbAddrTs]]=tileIdx
FirstCtbAddrTs[tileIdx]=ctbAddrTs (6-9)
tileStartFlag=0
}
tileEndFlag=ctbAddrTs==PicSizeInCtbsY-1||TileId[ctbAddrTs+1]!=TileId[ctbAddrTs]
if(tileEndFlag){
tileIdx++
tileStartFlag=1
}
}
両端を含め0からnum_tile_columns_minus1までの範囲のiについて、ルマサンプル単位でのi番目のタイル列の幅を記述するColumnWidthInLumaSamples[i]の値は、ColWidth[i]<<CtbLog2SizeYに等しく設定される。両端を含め0からnum_tile_rows_minus1までの範囲のjについて、ルマサンプル単位でのj番目のタイル行の高さを記述するRowHeightInLumaSamples[j]の値は、RowHeight[j]<<CtbLog2SizeYに等しく設定される。
【0097】
ピクチャパラメータセットRBSP構文は次のとおりである:
【表1】
【0098】
スライスヘッダ構文は次のように変更される。
【表2】
【0099】
slice_data()構文は次のとおりである:
【表3】
【0100】
ピクチャパラメータセットRBSPセマンティクスは次のとおりである。single_tile_in_pic_flagは、PPSを参照する各ピクチャ内に1つのタイルしか存在しないことを記述するには、1に等しく設定される。single_tile_in_pic_flagは、PPSを参照する各ピクチャ内に2つ以上のタイルが存在することを記述するには、ゼロに等しく設定される。ビットストリーム適合性は、single_tile_in_pic_flagの値が、符号化ビデオシーケンス(coded video sequence;CVS)内でアクティブにされる全てのPPSに対して同じであることを要求し得る。num_tile_columns_minus1+1は、ピクチャを分割するタイル列の数を記述する。num_tile_columns_minus1は、両端を含め0からPicWidthInCtbsY-1までの範囲内であるとされる。存在しない場合、num_tile_columns_minus1の値はゼロに等しいと推定される。num_tile_rows_minus1+1は、ピクチャを分割するタイル行の数を記述する。num_tile_rows_minus1は、両端を含めゼロからPicHeightInCtbsY-1までの範囲内であるとされる。存在しない場合、num_tile_rows_minus1の値はゼロに等しいと推定される。変数NumTilesInPicは、(num_tile_columns_minus1+1)*(num_tile_rows_minus1+1)に等しく設定される。
【0101】
single_tile_in_pic_flagがゼロに等しいとき、NumTilesInPicはゼロより大きい。tile_id_len_minus1+1は、存在する場合にPPS内の構文要素tile_id_val[i][j]と、存在する場合にPPSを参照するスライスヘッダ内の構文要素top_left_tile_id及びbottom_right_tile_idとを表すのに使用されるビットの数を記述する。tile_id_len_minus1の値は、両端を含めCeil(Log2(NumTilesInPic))から15までの範囲内である。explicit_tile_id_flagは、各タイルのタイルIDが明示的に信号伝達されることを記述するには、1に等しく設定される。explicit_tile_id_flagは、タイルIDが明示的に信号伝達されないことを記述するには、ゼロに設定される。tile_id_val[i][j]は、i番目のタイル列且つj番目のタイル行のタイルのタイルIDを記述する。tile_id_val[i][j]の長さは、tile_id_len_minus1+1ビットである。
【0102】
両端を含めゼロからnum_tile_columns_minus1までの範囲内の任意の整数m、及び両端を含めゼロからnum_tile_rows_minus1までの範囲内の任意の整数nについて、iがmに等しくない又はjがnに等しくない場合、tile_id_val[i][j]はtile_id_val[m][n]に等しくならず、j*(num_tile_columns_minus1+1)+iがn*(num_tile_columns_minus1+1)+m よりも小さい場合、tile_id_val[i][j]は、tile_id_val[m][n]よりも小さい。uniform_tile_spacing_flagは、タイル列境界及び同様にタイル行境界がピクチャ全体に均一に分布されていることを記述するには、1に等しく設定される。uniform_tile_spacing_flagは、タイル列境界及び同様にタイル行境界がピクチャ全体に均一に分布されていないが構文要素tile_column_width_minus1[i]及びtile_row_height_minus1[i]を用いて明示的に信号伝達されることを記述するには、ゼロに等しく設定される。存在しない場合、uniform_tile_spacing_flagの値は1に等しいと推定される。tile_column_width_minus1[i]+1は、CTB単位でのi番目のタイル列の幅を記述する。tile_row_height_minus1[i]+1は、CTB単位でのi番目のタイル行の高さを記述する。
【0103】
以下の変数は、CTBラスター及びタイルスキャニング変換プロセスを呼び出すことによって導出される:CTB単位でのi番目のタイル列の幅を記述する、両端を含め0からnum_tile_columns_minus1までの範囲のiについてのリストColWidth[i];CTB単位でのj番目のタイル行の高さを記述する、両端を含め0からnum_tile_rows_minus1までの範囲のjについてのリストRowHeight[j];CTB単位でのi番目のタイル列境界の位置を記述する、両端を含め0からnum_tile_columns_minus1+1までの範囲のiについてのリストColBd[i];CTB単位でのj番目のタイル行境界の位置を記述する、両端を含め0からnum_tile_rows_minus1+1までの範囲のjについてのリストRowBd[j];ピクチャのCTBラスタースキャンにおけるCTBアドレスからタイルスキャンにおけるCTBアドレスへの変換を記述する、両端を含め0からPicSizeInCtbsY-1までの範囲のctbAddrRsについてのリストctbAddrRsTs[ctbAddrRs];タイルスキャンにおけるCTBアドレスからピクチャのCTBラスタースキャンにおけるCTBアドレスへの変換を記述する、両端を含め0からPicSizeInCtbsY-1までの範囲のctbAddrTsについてのリストCtbAddrTsToRs[ctbAddrTs];タイルスキャンにおけるCTBアドレスからタイルIDへの変換を記述する、両端を含め0からPicSizeInCtbsY-1までの範囲のctbAddrTsについてのリストTileId[ctbAddrTs];タイルインデックスからタイル内のCTUの番号への変換を記述する、両端を含め0からPicSizeInCtbsY-1までの範囲のtileIdxについてのリストNumCtusInTile[tileIdx];タイルIDからタイルインデックスへの変換を記述するNumTilesInPic tileId値の集合についての集合TileIdToIdx[tileId];タイルIDからタイル内の最初のCTUのタイルスキャンにおけるCTBアドレスへの変換を記述する、両端を含め0からNumTilesInPic-1までの範囲のtileIdxについてのリストFirstCtbAddrTs[tileIdx];ルマサンプル単位でのi番目のタイル列の幅を記述する、両端を含め0からnum_tile_columns_minus1までの範囲のiについてのリストColumnWidthInLumaSamples[i];及びルマサンプル単位でのj番目のタイル行の高さを記述する、両端を含め0からnum_tile_rows_minus1までの範囲のjについてのリストRowHeightInLumaSamples[j]。
【0104】
両端を含め0からnum_tile_columns_minus1までの範囲のiについてのColumnWidthInLumaSamples[i]、及び両端を含め0からnum_tile_rows_minus1までの範囲のjについてのRowHeightInLumaSamples[j]の値は全て、0より大きい。tile_boundary_treated_as_picture_boundary_flagは、各タイル境界が、PPSを参照するピクチャに対する復号プロセスにおいてピクチャ境界と同じに扱われることを記述するには、1に等しく設定される。tile_boundary_treated_as_picture_boundary_flagは、各タイル境界が、PPSを参照するピクチャに対する復号プロセスにおいてピクチャ境界と同じに扱われてもよいし、そうでなくてもよいことを記述するには、ゼロに等しく設定される。存在しない場合、tile_boundary_treated_as_picture_boundary_flagの値は1に等しいと推定される。loop_filter_across_tiles_enabled_flagは、PPSを参照するピクチャ内のタイル境界を横切ってインループフィルタリング処理が実行され得ることを記述するには、1に等しく設定される。loop_filter_across_tiles_enabled_flagは、PPSを参照するピクチャ内のタイル境界を横切ってインループフィルタリング処理が実行されないことを記述するには、ゼロに等しく設定される。インループフィルタリング処理は、デブロッキングフィルタ、サンプル適応オフセットフィルタ、及び適応ループフィルタ処理を含む。存在しない場合、loop_filter_across_tiles_enabled_flagの値はゼロに等しいと推定される。
【0105】
スライスヘッダセマンティクスは以下のとおりである。存在する場合、スライスヘッダ構文要素slice_pic_parameter_set_idの値は、符号化ピクチャの全てのスライスヘッダにおいて同じである。slice_pic_parameter_set_idは、使用中のPPSに関するpps_pic_parameter_set_idの値を記述する。slice_pic_parameter_set_idの値は、両端を含め0から63の範囲内である。single_tile_in_slice_flagは、スライス内に1つしかタイルが存在しないことを指定するには、1に等しく設定される。single_picture_in_pic_flagは、スライス内に2つ以上のタイルが存在することを記述するには、ゼロに等しく設定される。top_left_tile_idは、スライスの左上隅にあるタイルのタイルIDを記述する。top_left_tile_idの長さは、tile_id_len_minus1+1ビットである。top_left_tile_idの値は、同じ符号化ピクチャの如何なる他の符号化スライスNALユニットのtop_left_tile_idの値とも等しくない。ピクチャ内に2つ以上のスライスが存在する場合、ピクチャ内のスライスの復号順序は、top_left_tile_idの値を増加させていくものである。bottom_right_tile_idは、スライスの右下隅にあるタイルのタイルIDを記述する。bottom_right_tile_idの長さは、tile_id_len_minus1+1ビットである。存在しない場合、bottom_right_tile_idの値はtop_left_tile_idと等しいと推定される。
【0106】
変数NumTileRowsInSlice、NumTileColumnsInSlice、及びNumTilesInSliceは、以下のように導出される:
deltaTileIdx=TileIdToIdx[bottom_right_tile_id]-TileIdToIdx[top_left_tile_id]
NumTileRowsInSlice=(deltaTileIdx/(num_tile_columns_minus1+1))+1 (7-25)
NumTileColumnsInSlice=(deltaTileIdx%(num_tile_columns_minus1+1))+1
NumTilesInSlice=NumTileRowsInSlice*NumTileColumnsInSlice
【0107】
slice_typeは、表4に従ってスライスの符号化タイプを記述する。
【表4】

例えば、ピクチャがイントラランダムアクセスピクチャ(Intra Random Access Picture;IRAP)ピクチャであるなど、nal_unit_typeが、両端を含めTBDの範囲内の値を持つ場合、slice_typeは2に等しい。log2_diff_ctu_max_bt_sizeは、ルマCTBサイズと、二分割を用いて分割可能な符号化ブロックの最大ルマサイズ(幅又は高さ)との間の差を記述する。log2_diff_ctu_max_bt_sizeの値は、両端を含めゼロからCtbLog2SizeY-MinCbLog2SizeYの範囲内である。log2_diff_ctu_max_bt_sizeが存在しない場合、log2_diff_ctu_max_bt_sizeの値は2に等しいと推定される。
【0108】
変数MinQtLog2SizeY、MaxBtLog2SizeY、MinBtLog2SizeY、MaxTtLog2SizeY、MinTtLog2SizeY、MaxBtSizeY、MinBtSizeY、MaxTtSizeY、MinTtSizeY、及びMaxMttDepthは、以下のように導出される:
MinQtLog2SizeY=(slice_type==I)?MinQtLog2SizeIntraY:MinQtLog2SizeInterY (7-26)
MaxBtLog2SizeY=CtbLog2SizeY-log2_diff_ctu_max_bt_size (7-27)
MinBtLog2SizeY=MinCbLog2SizeY (7-28)
MaxTtLog2SizeY=(slice_type==I)? 5:6 (7-29)
MinTtLog2SizeY=MinCbLog2SizeY (7-30)
MinQtSizeY=1<<MinQtLog2SizeY (7-31)
MaxBtSizeY=1<<MaxBtLog2SizeY (7-32)
MinBtSizeY=1<<MinBtLog2SizeY (7-33)
MaxTtSizeY=1<<MaxTtLog2SizeY (7-34)
MinTtSizeY=1<<MinTtLog2SizeY (7-35)
MaxMttDepth=(slice_type==I)?max_mtt_hierarchy_depth_intra_slices:max_mtt_hierarchy_depth_inter_slices (7-36)
dep_quant_enabled_flagは、従属量子化が無効であることを記述するには、ゼロに等しく設定される。dep_quant_enabled_flagは、従属量子化が有効であることを記述するには、1に等しく設定される。sign_data_hiding_enabled_flagは、符号ビット非表示が無効であることを記述するには、ゼロに等しく設定される。sign_data_hiding_enabled_flagは、符号ビット非表示が有効であることを記述するには、1に等しく設定される。sign_data_hiding_enabled_flagが存在しない場合、それは0に等しいと推定される。slice_boundary_treated_as_pic_boundary_flagは、スライスの各スライス境界が復号プロセスにおいてピクチャ境界と同じに扱われることを記述するには、1に等しく設定される。0に等しいslice_boundary_treated_as_pic_boundary_flagは、各タイル境界が復号プロセスにおいてピクチャ境界と同じに扱われてもよいし、そうでなくてもよいことを記述する。存在しない場合、slice_boundery_treated_as_pic_boundery_flagの値は1に等しいと推定される。offset_len_minus1+1は、entry_point_offset_minus1[i]構文要素の、ビット単位での長さを記述する。offset_len_minus1の値は、両端を含め0から31の範囲内である。entry_point_offset_minus1[i]+1は、バイト単位でi番目のエントリーポイントオフセットを記述し、offset_len_minus1+1ビットで表される。スライスヘッダに続くスライスデータは、両端を含め0からNumTilesInSlice-1の範囲のサブセットインデックス値を持つNumTilesInSlice個のサブセットで構成される。スライスデータの最初のバイトが、バイトゼロと見なされる。存在する場合、符号化スライスNALユニットのスライスデータ部分に現れるエミュレーション防止バイトが、サブセット識別の目的でスライスデータの一部としてカウントされる。
【0109】
サブセットゼロは、符号化されたスライスセグメントデータの、両端を含め0からentry_point_offset_minus1[0]までのバイトを含み、サブセットkは、両端を含め1からNumTilesInSlice-2までの範囲内のkで、符号化されたスライスデータのうち、両端を含めfirstByte[k]からlastByte[k]までのバイトを含み、firstByte[k]及びlastByte[k]は:
【数1】
lastByte[k]=firstByte[k]+entry_point_offset_minus1[k] (7-38)
として定義される。
最後のサブセット(NumTilesInSlice-1に等しいサブセットインデックスを持つ)は、符号化されたスライスデータの残りのバイトを含む。各サブセットは、同じタイル内にあるスライス内の全てのCTUの全ての符号化ビットを含む。
【0110】
一般的なスライスデータセマンティクスは次の通りである:end_of_tile_one_bitは1に等しい。各タイルについて、変数LeftBoundaryPos、TopBoundaryPos、RightBoundaryPos及びBotBoundaryPosが、以下のように導出される。tile_boundary_treated_as_pic_boundary_flagがtrueに等しい場合、以下が適用される:
tileColIdx=CurrTileIdx/(num_tile_columns_minus1+1) (7-39)
tileRowIdx=CurrTileIdx%(num_tile_columns_minus1+1) (7-40)
LeftBoundaryPos=ColBd[tileColIdx]<<CtbLog2SizeY (7-41)
RightBoundaryPos=((ColBd[tileColIdx]+ColWidth[tileColIdx])<<CtbLog2SizeY)-1
(7-42)
TopBoundaryPos=RowBd[tileRowIdx]<<CtbLog2SizeY (7-43)
BotBoundaryPos=((RowBd[tileRowIdx]+RowHeight[tileRowIdx])<<CtbLog2SizeY)-1
(7-44)
そうでなく、slice_boundary_treated_as_pic_boundary_flagがtrueに等しい場合、以下が適用される:
sliceFirstTileColIdx=TileIdToIdx[top_left_tile_id]/(num_tile_columns_minus1+1)
(7-45)
sliceFirstTileRowIdx=TileIdToIdx[top_left_tile_id]%(num_tile_columns_minus1+1)
(7-46)
sliceLastTileColIdx=TileIdToIdx[bottom_right_tile_id]/(num_tile_columns_minus1+1
(7-47)
sliceLastTileRowIdx=TileIdToIdx[bottom_right_tile_id]%(num_tile_columns_minus1+1
(7-48)
LeftBoundaryPos=ColBd[sliceFirstTileColIdx]<<CtbLog2SizeY (7-49)
RightBoundaryPos=((ColBd[sliceLastTileColIdx]+ColWidth[sliceLastTileColIdx])<<CtbLog2SizeY)-1
(7-50)
TopBoundaryPos=RowBd[sliceFirstTileRowIdx]<<CtbLog2SizeY (7-51)
BotBoundaryPos=((RowBd[sliceLastTileRowIdx]+RowHeight[sliceLastTileRowIdx])<<CtbLog2SizeY)-1 (7-52)
そうでない(slice_boundary_treated_as_pic_boundary_flagがFALSEに等しい)場合、以下が適用される:
LeftBoundaryPos=0 (7-53)
RightBoundaryPos=pic_width_in_luma_samples-1 (7-54)
TopBoundaryPos=0 (7-55)
BotBoundaryPos=pic_height_in_luma_samples-1 (7-56)
【0111】
時間的なルマ動きベクトル予測に関する導出プロセスは次のとおりである。yCb>>CtbLog2SizeYがyColBr>>CtbLog2SizeYに等しく、yColBrがpic_height_in_luma_samplesより小さく、且つxColBrがpic_width_in_luma_samplesより小さい場合、以下が適用される。
【0112】
変数colCbは、ColPicによって指定されるコロケートピクチャ内で((xColBr>>3)<<3,(yColBr>>3)<<3)で与えられる変更された位置をカバーするルマ符号化ブロックを記述する。ルマ位置(xColCb,yColCb)は、ColPicによって指定されるコロケートピクチャの左上ルマサンプルに対してcolCbによって指定されるコロケートルマ符号化ブロックの左上サンプルに等しく設定される。コロケート動きベクトルに関する導出プロセスは、currCb、colCb、(xColCb,yColCb)、refIdxLX、及び入力として0に等しく設定される制御パラメータcontrolParaFlagを用いて呼び出され、出力はmvLXCol及びavailableFlagLXColに割り当てられる。yCb>>CtbLog2SizeYがyColBr>>CtbLog2SizeYに等しく、yColBrがBotBoundaryPos以下であり、且つxColBrがRightBoundaryPos以下である場合、以下が適用される。変数colCbは、ColPicによって指定されるコロケートピクチャ内で((xColBr>>3)<<3,(yColBr>>3)<<3)で与えられる変更された位置をカバーするルマ符号化ブロックを記述する。ルマ位置(xColCb,yColCb)は、ColPicによって指定されるコロケートピクチャの左上ルマサンプルに対してcolCbによって指定されるコロケートルマ符号化ブロックの左上サンプルに等しく設定される。コロケート動きベクトルに関する導出プロセスは、currCb、colCb、(xColCb,yColCb)、refIdxLX、及び入力として0に等しく設定される制御パラメータcontrolParaFlagを用いて呼び出され、出力はmvLXCol及びavailableFlagLXColに割り当てられる。
【0113】
一部の例において、時間的なルマ動きベクトル予測に関する導出プロセスは次のとおりである。yCb>>CtbLog2SizeYがyColBr>>CtbLog2SizeYに等しく、yColBrがpic_height_in_luma_samplesより小さく、且つxColBrがpic_width_in_luma_samplesより小さい場合、以下が適用される。変数colCbは、ColPicによって指定されるコロケートピクチャ内で((xColBr>>3)<<3,(yColBr>>3)<<3)で与えられる変更された位置をカバーするルマ符号化ブロックを記述する。ルマ位置(xColCb,yColCb)は、ColPicによって指定されるコロケートピクチャの左上ルマサンプルに対してcolCbによって指定されるコロケートルマ符号化ブロックの左上サンプルに等しく設定される。コロケート動きベクトルに関する導出プロセスは、currCb、colCb、(xColCb,yColCb)、refIdxLX、及び入力として0に等しく設定される制御パラメータcontrolParaFlagを用いて呼び出され、出力はmvLXCol及びavailableFlagLXColに割り当てられる。yCb>>CtbLog2SizeYがyColBr>>CtbLog2SizeYに等しい場合、以下が適用される。xColCtr=Min(xColCtr,RightBoundaryPos)且つyColCtr=Min(yColCtr,BotBoundaryPos)。変数colCbは、ColPicによって指定されるコロケートピクチャ内で((xColBr>>3)<<3,(yColBr>>3)<<3)で与えられる変更された位置をカバーするルマ符号化ブロックを記述する。ルマ位置(xColCb,yColCb)は、ColPicによって指定されるコロケートピクチャの左上ルマサンプルに対してcolCbによって指定されるコロケートルマ符号化ブロックの左上サンプルに等しく設定される。コロケート動きベクトルに関する導出プロセスは、currCb、colCb、(xColCb,yColCb)、refIdxLX、及び入力として0に等しく設定される制御パラメータcontrolParaFlagを用いて呼び出され、出力はmvLXCol及びavailableFlagLXColに割り当てられる。
【0114】
ルマサンプル補間プロセスは次のとおりである。このプロセスへの入力は:フルサンプル単位のルマ位置(xIntL,yIntL);分数サンプル単位のルマ位置(xFracL,yFracL);及びルマ参照サンプルアレイrefPicLXLである。このプロセスの出力は、予測ルマサンプル値predSampleLXLである。変数shift1、shift2、shift3は、次のように導出される。変数shift1はMin(4,BitDepthY-8)に等しく設定され、変数shift2は6に等しく設定され、変数shift3はMax(2,14-BitDepthY)に等しく設定される。予測ルマサンプル値predSampleLXLは、以下のように導出される。xFracL及びyFracLの双方が0に等しい場合、predSampleLXLの値は、次のように導出される:
predSampleLXL=refPicLXL[xIntL][yIntL]<<shift3 (8-228)
そうでなく、xFracLが0に等しくなく、且つyFracLが0に等しい場合、predSampleLXLの値は、以下のように導出される:
predSampleLXL=
(fL[xFracL,0]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL-3)][yIntL]+
fL[xFracL][1]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL-2)][yIntL]+
fL[xFracL][2]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL-1)][yIntL]+
fL[xFracL][3]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL)][yIntL]+
fL[xFracL][4]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL+1)][yIntL]+
fL[xFracL][5]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL+2)][yIntL]+
fL[xFracL][6]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL+3)][yIntL]+
fL[xFracL][7]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL+4)][yIntL])>>shift1 (8-228)
【0115】
そうでなく、xFracLが0に等しく、且つyFracLが0に等しくない場合、predSampleLXLの値は、以下のように導出される:
predSampleLXL=
(fL[yFracL,0]*refPicLXL[xIntL][Clip3(TopBoundaryPos,BotBoundaryPos,yIntL-3)]+
fL[yFracL][1]*refPicLXL[xIntL][Clip3(TopBoundaryPos,BotBoundaryPos,yIntL-2)]+
L[yFracL][2]*refPicLXL[xIntL][Clip3(TopBoundaryPos,BotBoundaryPos,yIntL-1)]+
fL[yFracL][3]*refPicLXL[xIntL][Clip3(TopBoundaryPos,BotBoundaryPos,yIntL)]+
fL[yFracL][4]*refPicLXL[xIntL][Clip3(TopBoundaryPos,BotBoundaryPos,yIntL+1)]+
fL[yFracL][5]*refPicLXL[xIntL][Clip3(TopBoundaryPos,BotBoundaryPos,yIntL+2)]+
fL[yFracL][6]*refPicLXL[xIntL][Clip3(TopBoundaryPos,BotBoundaryPos,yIntL+3)]+
fL[yFracL][7]*refPicLXL[xIntL][Clip3(TopBoundaryPos,BotBoundaryPos,yIntL+4)])>>shift1 (8-228)
【0116】
そうでなく、xFracLが0に等しくなく、且つyFracLが0に等しくない場合、predSampleLXLの値は、次のように導出される。n=0...7としたサンプルアレイtemp[n]が、以下のように導出される:
yPosL=Clip3(TopBoundaryPos,BotBoundaryPos,yIntL+n-3) (8-228)
temp[n]=
(fL[xFracL,0]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL-3)][yPosL]+
fL[xFracL][1]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL-2)][yPosL]+
fL[xFracL][2]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL-1)][yPosL]+
fL[xFracL][3]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL)][yPosL]+
fL[xFracL][4]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL+1)][yPosL]+
fL[xFracL][5]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL+2)][yPosL]+
fL[xFracL][6]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL+3)][yPosL]+
fL[xFracL][7]*refPicLXL[Clip3(LeftBoundaryPos,RightBoundaryPos,xIntL+4)][yPosL])>>shift1 (8-228)
【0117】
予測ルマサンプル値predSampleLXLは、以下のように導出される:
predSampleLXL=(fL[yFracL][0]*temp[0]+
fL[yFracL][1]*temp[1]+
fL[yFracL][2]*temp[2]+
fL[yFracL][3]*temp[3]+
fL[yFracL][4]*temp[4]+
fL[yFracL][5]*temp[5]+
fL[yFracL][6]*temp[6]+
fL[yFracL][7]*temp[7])>>shift2 (8-228)
【表5】
【0118】
クロマサンプル補間プロセスは次のとおりである。このプロセスへの入力は:フルサンプル単位のクロマ位置(xIntC,yIntC);1/8分数サンプル単位のクロマ位置(xFracC、yFracC);及びクロマ参照サンプルアレイrefPicLXCである。このプロセスの出力は、予測クロマサンプル値predSampleLXCである。変数shift1、shift2、shift3、picWC、及びpicHCが、次のように導出される。変数shift1は、Min(4,BitDepthC-8)に等しく設定され、変数shift2は6に等しく設定され、変数shift3はMax(2,14-BitDepthC)に等しく設定される。変数lPos、rPos、tPos、及びbPosは、以下のように設定される:
lPos=LeftBoundaryPos/SubWidthC (8-228)
rPos=(RightBoundaryPos+1)/SubWidthC (8-228)
tPos=TopBoundaryPos/SubHeightC (8-228)
bPos=(BotBoundaryPos+1)/SubHeightC (8-228)
予測クロマサンプル値predSampleLXCは、以下のように導出される:xFracC及びyFracCの双方が0に等しい場合、predSampleLXCの値は、次のように導出される:
predSampleLXC=refPicLXC[xIntC][yIntC]<<shift3 (8-228)
そうでなく、xFracCが0に等しくなく、且つyFracCが0に等しい場合、predSampleLXCの値は、次のように導出される:
predSampleLXC=(fC[xFracC][0]*refPicLXC[Clip3(lPos,rPos,xIntC-1)][yIntC]+
fC[xFracC][1]*refPicLXC[Clip3(lPos,rPos,xIntC)][yIntC]+
fC[xFracC][2]*refPicLXC[Clip3(lPos,rPos,xIntC+1)][yIntC]+
C[xFracC][3]*refPicLXC[Clip3(lPos,rPos,xIntC+2)][yIntC])>>shift1
(8-228)
【0119】
そうでなく、xFracCが0に等しく、且つyFracCが0に等しくない場合、predSampleLXCの値は、次のように導出される:
redSampleLXC=(fC[yFracC][0]*refPicLXC[xIntC][Clip3(tPos,bPos,yIntC-1)]+
fC[yFracC][1]*refPicLXC[xIntC][Clip3(tPos,bPos,yIntC)]+
fC[yFracC][2]*refPicLXC[xIntC][Clip3(tPos,bPos,yIntC+1)]+
fC[yFracC][3]*refPicLXC[xIntC][Clip3(tPos,bPos,yIntC+2)])>>shift1
(8-228)
そうでなく、xFracCが0に等しくなく、且つyFracCが0に等しくない場合、predSampleLXCの値は、以下のように導出される。n=0...3としたサンプルアレイtemp[n]が、以下のように導出される:
yPosC=Clip3(tPos,bPos,yIntC+n-1) (8-228)
temp[n]=(fC[xFracC][0]*refPicLXC[Clip3(lPos,rPos,xIntC-1)][yPosC]+
fC[xFracC][1]*refPicLXC[Clip3(lPos,rPos,xIntC)][yPosC]+
fC[xFracC][2]*refPicLXC[Clip3(lPos,rPos,xIntC+1)][yPosC]+
fC[xFracC][3]*refPicLXC[Clip3(lPos,rPos,xIntC+2)][yPosC])>>shift1
(8-228)
【0120】
予測クロマサンプル値predSampleLXCは、以下のように導出される:
predSampleLXC=(fC[yFracC][0]*temp[0]+
fC[yFracC][1]*temp[1]+
fC[yFracC][2]*temp[2]+
fC[yFracC][3]*temp[3])>>shift2 (8-228)
【表6】
【0121】
スライスデータに関するコンテキストベース適応バイナリ算術符号化(CABAC)構文解析プロセスは次のとおりである。CTU構文の構文解析を開始するときに初期化プロセスが呼び出され、CTUはタイル内の最初のCTUである。なお、スライスデータの始まりは各々、タイルの始まりであるため、この文章によってスライスデータの始まりもカバーされる。
【0122】
他の一例において、CTBラスター及びタイルスキャンプロセスは、次のとおりである。CTU単位でのi番目のタイル列の幅を記述する、両端を含め0からnum_tile_columns_minus1までの範囲のiについてのリストColWidth[i]は、以下のように導出される:
if(uniform_tile_spacing_flag)
for(i=0;i<=num_tile_columns_minus1;i++)
ColWidth[i]=((i+1)*PicWidthInCtbsY)/(num_tile_columns_minus1+1)-
(i*PicWidthInCtbsY)/(num_tile_columns_minus1+1)
else{
ColWidth[num_tile_columns_minus1]=PicWidthInCtbsY (6-1)
for(i=0;i<num_tile_columns_minus1;i++){
ColWidth[i]=tile_column_width_minus1[i]+1
ColWidth[num_tile_columns_minus1]-=ColWidth[i]
}
}
【0123】
CTU単位でのj番目のタイル行の高さを記述する、両端を含め0からnum_tile_rows_minus1までの範囲のjについてのリストRowHeight[j]は、以下のように導出される:
if(uniform_tile_spacing_flag)
for(j=0;j<=num_tile_rows_minus1;j++)
RowHeight[j]=((j+1)*PicHeightInCtbsY)/(num_tile_rows_minus1+1)-
(j*PicHeightInCtbsY)/(num_tile_rows_minus1+1)
else{
RowHeight[num_tile_rows_minus1]=PicHeightInCtbsY (6-2)
for(j=0;j<num_tile_rows_minus1;j++){
RowHeight[j]=tile_row_height_minus1[j]+1
RowHeight[num_tile_rows_minus1]-=RowHeight[j]
}
}
【0124】
CTB単位でのi番目のタイル列境界の位置を記述する、両端を含め0からnum_tile_columns_minus1+1までの範囲のiについてのリストColBd[i]は、以下のように導出される:
for(ColBd[0]=0,i=0;i<=num_tile_columns_minus1;i++)
ColBd[i+1]=ColBd[i]+ColWidth[i] (6-3)
【0125】
CTB単位でのj番目のタイル行境界の位置を記述する、両端を含め0からnum_tile_rows_minus1+1までの範囲のjについてのリストRowBd[j]は、以下のように導出される:
for(RowBd[0]=0,j=0;j<=num_tile_rows_minus1;j++)
RowBd[j+1]=RowBd[j]+RowHeight[j] (6-4)
【0126】
ピクチャのCTBラスタースキャンにおけるCTBアドレスからタイルスキャンにおけるCTBアドレスへの変換を記述する、両端を含め0からPicSizeInCtbsY-1までの範囲のctbAddrRsについてのリストCtbAddrRsToTs[ctbAddrRs]は、以下のように導出される:
for(ctbAddrRs=0;ctbAddrRs<PicSizeInCtbsY;ctbAddrRs++){
tbX=ctbAddrRs%PicWidthInCtbsY
tbY=ctbAddrRs/PicWidthInCtbsY
for(i=0;i<=num_tile_columns_minus1;i++)
if(tbX>=ColBd[i])
tileX=i
for(j=0;j<=num_tile_rows_minus1;j++) (6-5)
if(tbY>=RowBd[j])
tileY=j
CtbAddrRsToTs[ctbAddrRs]=0
for(i=0;i<tileX;i++)
CtbAddrRsToTs[ctbAddrRs]+=RowHeight[tileY]*ColWidth[i]
for(j=0;j<tileY;j++)
CtbAddrRsToTs[ctbAddrRs]+=PicWidthInCtbsY*RowHeight[j]
CtbAddrRsToTs[ctbAddrRs]+=(tbY-RowBd[tileY])*ColWidth[tileX]+tbX-ColBd[tileX]
}
【0127】
タイルスキャンにおけるCTBアドレスからピクチャのCTBラスタースキャンにおけるCTBアドレスへの変換を記述する、両端を含め0からPicSizeInCtbsY-1までの範囲のctbAddrTsについてのリストCtbAddrRsToTs[ctbAddrRs]は、以下のように導出される:
for(ctbAddrRs=0;ctbAddrRs<PicSizeInCtbsY;ctbAddrRs++) (6-6)
CtbAddrTsToRs[CtbAddrRsToTs[ctbAddrRs]]=ctbAddrRs
【0128】
タイルスキャンにおけるCTBアドレスからタイルIDへの変換を記述する、両端を含め0からPicSizeInCtbsY-1までの範囲のctbAddrTsについてのリストTileId[ctbAddrTs]は、以下のように導出される:
for(j=0,tileIdx=0;j<=num_tile_rows_minus1;j++)
for(i=0;i<=num_tile_columns_minus1;i++,tileIdx++)
for(y=RowBd[j];y<RowBd[j+1];y++) (6-7)
for(x=ColBd[i];x<ColBd[i+1];x++)
TileId[CtbAddrRsToTs[y*PicWidthInCtbsY+x]]=tileIdx
【0129】
タイルインデックスからタイル内のCTUの番号への変換を記述する、両端を含め0からPicSizeInCtbsY-1までの範囲のtileIdxについてのリストNumCtusInTile[tileIdx]は、以下のように導出される:
for(j=0,tileIdx=0;j<=num_tile_rows_minus1;j++)
for(i=0;i<=num_tile_columns_minus1;i++,tileIdx++) (6-8)
NumCtusInTile[tileIdx]=ColWidth[i]*RowHeight[j]
【0130】
タイルIDからタイルインデックスへの変換を記述するNumTilesInPic tileId値の集合についての集合TileIdToIdx[tileId]、及びタイルIDからタイル内の最初のCTUのタイルスキャンにおけるCTBアドレスへの変換を記述する、両端を含め0からNumTilesInPic-1までの範囲のtileIdxについてのリストFirstCtbAddrTs[tileIdx]は、以下のように導出される:
for(ctbAddrTs=0,tileIdx=0,tileStartFlag=1;ctbAddrTs<PicSizeInCtbsY;ctbAddrTs++){
if(tileStartFlag){
TileIdToIdx[TileId[ctbAddrTs]]=tileIdx
FirstCtbAddrTs[tileIdx]=ctbAddrTs (6-9)
tileStartFlag=0
}
tileEndFlag=ctbAddrTs==PicSizeInCtbsY-1||TileId[ctbAddrTs+1]!=TileId[ctbAddrTs]
if(tileEndFlag){
tileIdx++
tileStartFlag=1
}
}
【0131】
両端を含め0からnum_tile_columns_minus1までの範囲のiについて、ルマサンプル単位でのi番目のタイル列の幅を記述するColumnWidthInLumaSamples[i]の値は、ColWidth[i]<<CtbLog2SizeYに等しく設定される。両端を含め0からnum_tile_rows_minus1までの範囲のjについて、ルマサンプル単位でのj番目のタイル行の高さを記述するRowHeightInLumaSamples[j]の値は、RowHeight[j]<<CtbLog2SizeYに等しく設定される。
【0132】
ピクチャパラメータセットRBSP構文は次のとおりである:
【表7】
【0133】
スライスヘッダの構文は次のとおりである::
【表8】
【0134】
スライスヘッダセマンティクスは以下のとおりである。存在する場合、スライスヘッダ構文要素slice_pic_parameter_set_idの値は、符号化ピクチャの全てのスライスヘッダにおいて同じである。slice_pic_parameter_set_idは、使用中のPPSに関するpps_pic_parameter_set_idの値を記述する。slice_pic_parameter_set_idの値は、両端を含め0から63の範囲内である。first_slice_in_pic_flagは、そのスライスが復号順でピクチャの最初のスライスであることを記述するには、1に等しく設定される。first_slice_in_pic_flagは、そのスライスが復号順でピクチャの最初のスライスでないことを記述するには、0に等しく設定される。single_tile_in_slice_flagは、スライス内に1つしかタイルが存在しないことを指定するには、1に等しく設定される。0に等しいsingle_picture_in_pic_flagは、スライス内に2つ以上のタイルが存在することを記述する。top_left_tile_idは、スライスの左上隅にあるタイルのタイルIDを記述する。top_left_tile_idの長さは、Ceil(Log2((num_tile_rows_minus1+1)*(num_tile_columns_minus1+1)))ビットである。top_left_tile_idの値は、同じ符号化ピクチャの如何なる他の符号化スライスNALユニットのtop_left_tile_idの値とも等しくない。存在しない場合、top_left_tile_idの値はゼロに等しいと推定される。ピクチャ内に2つ以上のスライスが存在する場合、ピクチャ内のスライスの復号順序は、top_left_tile_idの値を増加させていくものである。bottom_right_tile_idは、スライスの右下隅にあるタイルのタイルIDを記述する。bottom_right_tile_idの長さは、Ceil(Log2((num_tile_rows_minus1+1)*(num_tile_columns_minus1+1)))ビットである。存在しない場合、bottom_right_tile_idの値はtop_left_tile_idと等しいと推定される。変数NumTileRowsInSlice、NumTileColumnsInSlice、及びNumTilesInSliceは、以下のように導出される:
deltaTileIdx=TileIdToIdx[bottom_right_tile_id]-TileIdToIdx[top_left_tile_id]
NumTileRowsInSlice=(deltaTileIdx/(num_tile_columns_minus1+1))+1 (7-25)
NumTileColumnsInSlice=(deltaTileIdx%(num_tile_columns_minus1+1))+1
NumTilesInSlice=NumTileRowsInSlice*NumTileColumnsInSlice
【0135】
all_tiles_mcts_flagは、スライス内の全てのタイルが、現在のアクセスユニットに関するスライス内のタイルのみを含むものであるMCTSの一部であることを記述するには、1に等しく設定され、MCTS境界(スライスのスライス境界とコロケートである)がピクチャ境界と同じに扱われる。all_tiles_mcts_flagは0に等しく設定されることで、1に等しいall_tiles_mcts_flagによって記述される上述のことが当てはまることもあればそうでないこともあることを記述する。slice_boundary_treated_as_pic_boundary_flagは、スライスの各スライス境界が復号プロセスにおいてピクチャ境界と同じに扱われることを記述するには、1に等しく設定される。0に等しく設定されたslice_boundary_treated_as_pic_boundary_flagは、各タイル境界が復号プロセスにおいてピクチャ境界と同じに扱われてもよいし、そうでなくてもよいことを記述するためのものである。存在しない場合、slice_boundery_treated_as_pic_boundery_flagの値は1に等しいと推定される。各サブセットは、同じタイル内にあるスライス内の全てのCTUの全ての符号化ビットを含む。
【0136】
図7は、映像符号化装置700の一例の概略図である。映像符号化装置700は、ここに記載されるような開示の例/実施形態を実装するのに適している。映像符号化装置700は、ダウンストリームポート720、アップストリームポート750、及び/又はトランシーバユニット(Tx/Rx)710を有し、Tx/Rx710は、ネットワーク上でアップストリーム及び/又はダウンストリームにデータを通信する送信器及び/又は受信器を含む。映像符号化装置700はまた、データを処理する論理ユニット及び/又は中央演算処理ユニット(CPU)を含むプロセッサ730、及びデータを格納するメモリ732を含む。映像符号化装置700はまた、電気コンポーネント、光-電気(OE)コンポーネント、電気-光(EO)コンポーネント、及び/又は、電気、光、若しくは無線の通信ネットワークを介したデータ通信のためにアップストリームポート750及び/又はダウンストリームポート720に結合された無線通信コンポーネントを含み得る。映像符号化装置700はまた、ユーザに及びユーザからデータを伝えるための入力及び/又は出力(I/O)装置760を含み得る。I/O装置760は、例えば、映像データを表示するディスプレイ、音声データを出力するスピーカなどの出力装置を含み得る。I/O装置760はまた、例えばキーボード、マウス、トラックボールなどの入力装置、及び/又はそのような出力装置とインタラクトするための対応するインタフェースを含み得る。
【0137】
プロセッサ730は、ハードウェア及びソフトウェアによって実装される。プロセッサ730は、1つ以上のCPUチップ、コア(例えば、マルチコアプロセッサとして)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、及びデジタル信号プロセッサ(DSP)として実装され得る。プロセッサ730は、ダウンストリームポート720、Tx/Rx710、アップストリームポート750、及びメモリ732と通信する。プロセッサ730は符号化モジュール714を有する。符号化モジュール714は、ビットストリーム500及び/又は画像600を使用し得るものである例えば方法100、800、及び900などの上述の開示実施形態を実装する。符号化モジュール714はまた、ここに記載されるいずれか他の方法/機構を実装し得る。さらに、符号化モジュール714は、コーデックシステム200、エンコーダ300、及び/又はデコーダ400を実装してもよい。例えば、符号化モジュール714は、エンコーダとして作用するときに、画像をスライスに分割し、スライスをタイルに分割し、タイルをCTUに分割し、CTUをブロックに分割し、そして、ブロックを符号化することができる。さらに、符号化モジュール714は、スライス内の最初のタイル及び最後のタイルのタイルIDに基づいてスライスの境界を信号伝達することによって、スライス内のタイルの数、スライス内のタイルに関するエントリーポイントオフセットの数、タイルのCTUアドレス、スライス内の最後のCTU、及び/又は他のデータを暗示的に信号伝達することができる。デコーダとして作用するとき、符号化モジュール714は、そのようなデータを、スライス内の最初のタイル及び最後のタイルに基づいて再構成することができ、従って、符号化効率を高めることができる。従って、符号化モジュール714は、映像データを分割及び符号化するときに、映像符号化装置700に更なる機能性及び/又は符号化効率を提供させる。それ故に、符号化モジュール714は、映像符号化装置700の機能を向上させるとともに、映像符号化技術に特有の問題に対処する。さらに、符号化モジュール714は、映像符号化装置700を異なる状態へと転換させる。あるいは、符号化モジュール714は、メモリ732に格納されてプロセッサ730によって実行される命令として(例えば、非一時的な媒体に格納されたコンピュータプログラムプロダクトとして)実装されることができる。
【0138】
メモリ732は、例えばディスク、テープドライブ、ソリッドステートドライブ、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、フラッシュメモリ、三値コンテンツアドレッサブルメモリ(TCAM)、スタティックランダムアクセスメモリ(SRAM)などの1つ以上のメモリタイプを有する。メモリ732は、そのようなプログラムが実行のために選択されたときに該プログラムを格納するように、及びプログラム実行中に読み出された命令及びデータを格納するように、オーバーフローデータ記憶装置として使用されてもよい。
【0139】
図8は、例えば画像600などの画像を、例えばビットストリーム500などのビットストリームへと符号化する方法800の一例のフローチャートである。方法800は、方法100を実行するときに、例えばコーデックシステム200、エンコーダ300、及び/又は映像符号化装置700などのエンコーダによって使用され得る。
【0140】
方法800は、エンコーダが、複数の画像を含むビデオシーケンスを受信し、例えばユーザ入力に基づいて、そのビデオシーケンスをビットストリームへと符号化することを決めたときに開始し得る。ビデオシーケンスは、符号化に先立って、更なる分割のためにピクチャ/画像/フレームへと分割される。ステップ801にて、画像が複数のスライスへと分割される。スライスは複数のタイルへと分割される。タイルは複数のCTUへと分割される。CTUは更に符号化ブロックへと分割される。
【0141】
ステップ803にて、各スライスが、ビットストリーム内の別個のVCL NALユニットに符号化される。スライスは、(1つ以上の)タイル、CTU、符号化ブロックを含む。従って、各スライスのタイル、CTU、及び符号化ブロックも、対応するVCL NALユニット内に符号化される。ビットストリームは、ビデオシーケンス内の様々な画像からの複数のスライスを含む複数のVCL NALユニットを含む。上述のように、スライスは整数個のタイルを含む。従って、複数のVCL NALユニット内の各VCL NALユニットが、整数個のタイルへと分割された画像データの単一のスライスを含む。
【0142】
なお、ステップ803の前に、後に、及び/又は最中にステップ805及び807が行われてもよい。説明の明瞭さのために、ステップ805及び807を別々に扱う。ステップ805にて、各スライスのタイルにタイルIDが割り当てられる。さらに、CTUにアドレスが割り当てられる。例えば、VCL NALユニット内のCTUのアドレスは、CTUを含むタイルに対応するタイルIDに基づいて割り当てられ得る。
【0143】
ステップ807にて、対応するスライス内の、及び故に、各VCL NALユニット内の、タイルの数を指し示す値がビットストリーム内に符号化される。例えば、VCL NALユニット内のタイルの数は、そのスライスに対応するPPS又はスライスヘッダを含む非VCL NALユニットに含められ得る。他の一例において、タイルの数はビットストリームから省略されてもよい。何故なら、デコーダは、対応するスライス内の左上及び右下のタイル(これらは、スライスヘッダを含む非VCL NALユニットにて信号伝達され得る)に基づいて、VCL NALユニット内のタイルの数を割り出すことができ得るからである。タイルに関するエントリーポイントオフセットもビットストリーム内に符号化される。例えば、タイルに関するエントリーポイントオフセットは、スライスに関連付けられたスライスヘッダ内に符号化され得る。エントリーポイントオフセットは各々、VCL NALユニット内の対応するタイルの開始位置を指し示す。エントリーポイントオフセットの数は、タイルの数より1だけ少ない値として割り出されることができるので、エントリーポイントオフセットの数はビットストリーム内で明示的に信号伝達されない。一部の例において、VCL NALユニット内のCTUのアドレスも、スライスヘッダ内で明示的に信号伝達され得る。他の例において、VCL NALユニット内のCTUのアドレスはビットストリームから省略され、VCL NALユニットに含まれる最初のタイルのタイルIDに基づいた、デコーダにおけるCTUアドレスの決定がサポートされる。上述のように、ステップ803で符号化されたCTUは、VCL NALユニット内の最後のCTUを指し示すフラグを含まなくてよい。これは何故なら、スライス内のタイル数の知識に基づいて、デコーダがVCL NALユニット内のCTU数を割り出すことができるからである。しかしながら、VCL NALユニットは、各タイルに関連する画像データ間の分離を維持することをサポートするために、各タイル内の最後のCTUの直後にパディングビットを含むように符号化されてもよい。
【0144】
ステップ809にて、エントリーポイントオフセットの数なしでビットストリームが送信され、タイルに関するエントリーポイントオフセットの数はVCL NALユニット内のタイルの数より1だけ少ないという推定に従って、タイルを復号することがサポートされる。
【0145】
図9は、例えばビットストリーム500などのビットストリームからの例えば画像600などの画像を復号する方法900の一例のフローチャートである。方法900は、方法100を実行するときに、例えばコーデックシステム200、デコーダ400、及び/又は映像符号化装置700などのデコーダによって使用され得る。
【0146】
方法900は、例えば方法800の結果としてのビデオシーケンスを表す符号化データのビットストリームをデコーダが受信し始めるときに開始し得る。ステップ901にて、ビットストリームがデコーダで受信される。ビットストリームは複数のVCL NALユニットを含み、各VCL NALユニットが、複数のタイルへと分割された画像データを含む。上述のように、画像の各スライスが整数個のタイルを含む。また、各スライスは、別個のVCL NALユニットに含まれる。従って、各VCL NALユニットが整数個のタイルを含む。さらに、タイルは各々が複数のCTUへと分割されており、CTUが更に複数の符号化ブロックへと分割されている。
【0147】
ステップ903にて、デコーダは、VCL NALユニット内のタイルの数を割り出す。
例えば、VCL NALユニット内のタイルの数は、対応するスライスヘッダを含む非VCL NALユニットから得ることができる。他の一例において、スライスヘッダは、スライス内の左上及び右下のタイルを示すデータを含み得る。このデータを用いて、スライス内の、及び故にVCL NALユニット内の、タイルの数を割り出すことができる。デコーダは、次いで、スライス内のタイルの数を使用して、タイルに関するエントリーポイントオフセットの数を割り出すことができる。例えば、タイルに関するエントリーポイントオフセットの数は、VCL NALユニット内のタイルの数より1だけ少ない。上述のように、エントリーポイントオフセットは各々、VCL NALユニット内の対応するタイルの開始位置を指し示す。エントリーポイントオフセットの数は、圧縮及びひいては符号化効率を高めるために、ビットストリーム内で明示的に信号伝達されないとし得る。
【0148】
ステップ905にて、デコーダは、エントリーポイントオフセットの数に基づいて、ビットストリームからタイルに関するエントリーポイントオフセットを取得する。例えば、タイルに関するエントリーポイントオフセットは、スライスに関連付けられたスライスヘッダから取得され得る。
【0149】
上述のように、画像データは、タイルの各々に含まれる複数のCTUとしてコード化される。さらに、VCL NALユニット内のCTUのアドレスが、タイルに対応するタイルIDに基づいて割り当てられ得る。従って、ステップ907にて、デコーダは、タイルのタイルID、及びタイルIDに基づくCTUのアドレスを割り出すことができる。一部の例において、タイルIDは、例えばPPS及び/又はスライスヘッダ内で明示的に信号伝達される。他の例において、デコーダは、スライスの左上タイル及び右下タイルのタイルIDに基づいてタイルIDを割り出すことができる。また、一部のケースにおいて、VCL NALユニット内のCTUのアドレスは、スライスヘッダ内で明示的に信号伝達される。他の例において、デコーダは、VCL NALユニットに含まれる最初のタイル(例えば、左上タイル)のタイルIDに基づいて、VCL NALユニット内のCTUのアドレスを割り出し得る。
【0150】
ステップ909にて、デコーダは、エントリーポイントオフセットにてタイルを復号して再構成画像を生成する。例えば、デコーダは、タイルのエントリーポイントオフセットとCTUアドレスとを用いてCTUを復号することができ、CTUアドレスは、スライスヘッダ内で明示的に信号伝達されるか、あるいはタイルIDに基づいて推定されるかのいずれかである。デコーダは、次いで、再構成画像を、再構成ビデオシーケンスの一部として、ディスプレイに向けて転送することができる。一部の例において、デコーダは、VCL NALユニット内の最後のCTUを指し示すフラグを探さなくてもよい。というのは、そのようなフラグはVCL NALユニットから省略され得るからである。そのような場合、デコーダは、スライス内のタイル数の知識に基づいて、VCL NALユニット内のCTUの数を割り出すことができる。一部の例において、デコーダは、各タイル内の最後のCTUの直後のパディングビットに基づいて、VCL NALユニット内のタイル同士を分離することができる。
【0151】
図10は、例えば画像600などの画像のビデオシーケンスを、例えばビットストリーム500などのビットストリームに符号化するシステム1000の一例の概略図である。システム1000は、例えばコーデックシステム200、エンコーダ300、デコーダ400、及び/又は映像符号化装置700などのエンコーダ及びデコーダによって実装され得る。また、システム1000は、方法100、800、及び/又は900を実行するときに使用され得る。
【0152】
システム1000はビデオエンコーダ1002を含む。ビデオエンコーダ1002は、画像を複数のタイルへと分割する分割モジュール1001を有する。ビデオエンコーダ1002は更に、タイルを、少なくとも1つのVCL NALユニットのビットストリームへと符号化し、ビットストリーム内にVCL NALユニット内のタイルの数を符号化し、且つビットストリーム内にタイルに関するエントリーポイントオフセットを符号化する符号化モジュール1003を有し、エントリーポイントオフセットは各々、VCL NALユニット内の対応するタイルの開始位置を指し示し、エントリーポイントオフセットの数は、ビットストリーム内で明示的に信号伝達されない。ビデオエンコーダ1002は更に送信モジュール1005を有し、送信モジュール1005は、エントリーポイントオフセットの数を有しないビットストリームを送信して、タイルに関するエントリーポイントオフセットの数がVCL NALユニット内のタイルの数より1だけ少ない、という推定に従ってタイルを復号することをサポートする。ビデオエンコーダ1002は更に、方法800のステップのうちのいずれかを実行するように構成され得る。
【0153】
システム1000はまた、ビデオデコーダ1010を含む。ビデオデコーダ1010は、複数のタイルへと分割された画像データを含むVCL NALユニットを含んだビットストリームを受信する受信モジュール1011を有する。ビデオデコーダ1010は更に、VCL NALユニット内のタイルの数を割り出し、且つVCL NALユニット内のタイルの数より1だけ少ないものとして、タイルに関するエントリーポイントオフセットの数を割り出す決定モジュール1013を有し、エントリーポイントオフセットは各々、VCL NALユニット内の対応するタイルの開始位置を指し示し、エントリーポイントオフセットの数は、ビットストリーム内で明示的に信号伝達されない。ビデオデコーダ1010は更に、エントリーポイントオフセットの数に基づいて、タイルに関するエントリーポイントオフセットを取得する取得モジュール1015を有する。ビデオデコーダ1010は更に、エントリーポイントオフセットにてタイルを復号して再構成画像を生成する復号モジュール1017を有する。ビデオデコーダ1010は更に、方法900のステップのうちのいずれかを実行するように構成され得る。
【0154】
第1のコンポーネントは、第1のコンポーネントと第2のコンポーネントとの間のライン、トレース、又は他の媒体を除く介在コンポーネントが存在しない場合に、第2のコンポーネントに直接的に結合される。第1のコンポーネントは、第1のコンポーネントと第2のコンポーネントとの間にライン、トレース、又は他の媒体以外の介在コンポーネントが存在する場合に、第2のコンポーネントに間接的に結合される。用語“結合される”及びその変形は、直接的に結合されること及び間接的に結合されることの双方を含む。用語“約”の使用は、特に断らない限り、続く数の±10%を含む範囲を意味する。
【0155】
これまた理解されるべきことには、ここに記載された例示的な方法のステップは、必ずしも、記載された順序で実行される必要はなく、そのような方法のステップの順序は、単に例示的なものであると理解されるべきである。同様に、そのような方法に追加のステップが含められてもよく、また、本開示の様々な実施形態と一致する方法において、ある特定のステップが省略されたり組み合わされたりしてもよい。
【0156】
本開示にて幾つかの実施形態を提示したが、理解され得ることには、開示されたシステム及び方法は、本開示の精神又は範囲を逸脱することなく、数多くのその他の具体的形態でも具現化され得るものである。ここでの例は、限定的なものではなく、例示的なものと見なされるべきであり、意図することは、ここに与えられた詳細事項に限定されるべきでないということである。例えば、これらの様々な要素又はコンポーネントは、他のシステムにおいて結合あるいは統合されてもよく、あるいは、特定の機構が省略されたり、実装されなかったりしてもよい。
【0157】
また、様々な実施形態において個別あるいは別個であるように記載及び図示された技術、システム、サブシステム及び方法が、本開示の範囲を逸脱することなく、他のシステム、コンポーネント、技術又は方法と結合あるいは統合され得る。変形、代用及び改変のその他の例が、当業者によって解明可能であり、ここに開示された精神及び範囲を逸脱することなく為され得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10