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

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

▶ ホアウェイ・テクノロジーズ・カンパニー・リミテッドの特許一覧

特開2024-103513エンコーダ、デコーダ、および対応する方法
<>
  • 特開-エンコーダ、デコーダ、および対応する方法 図1
  • 特開-エンコーダ、デコーダ、および対応する方法 図2
  • 特開-エンコーダ、デコーダ、および対応する方法 図3
  • 特開-エンコーダ、デコーダ、および対応する方法 図4
  • 特開-エンコーダ、デコーダ、および対応する方法 図5
  • 特開-エンコーダ、デコーダ、および対応する方法 図6
  • 特開-エンコーダ、デコーダ、および対応する方法 図7
  • 特開-エンコーダ、デコーダ、および対応する方法 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024103513
(43)【公開日】2024-08-01
(54)【発明の名称】エンコーダ、デコーダ、および対応する方法
(51)【国際特許分類】
   H04N 19/70 20140101AFI20240725BHJP
   H04N 19/436 20140101ALI20240725BHJP
【FI】
H04N19/70
H04N19/436
【審査請求】有
【請求項の数】12
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024078278
(22)【出願日】2024-05-13
(62)【分割の表示】P 2021565099の分割
【原出願日】2020-04-27
(31)【優先権主張番号】62/843,047
(32)【優先日】2019-05-03
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/864,966
(32)【優先日】2019-06-21
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133569
【弁理士】
【氏名又は名称】野村 進
(72)【発明者】
【氏名】フヌ・ヘンドリー
(72)【発明者】
【氏名】イェ-クイ・ワン
(57)【要約】
【課題】タイル、ブリック、およびスライスのための波面並列処理を提供する。
【解決手段】復号の方法は、ビデオビットストリーム内で、第1の値を有するタイル終了ビット、およびバイト整列ビットに遭遇するステップであって、それらが、現在のコーディングツリーブロック(CTB)がタイル内の最後のCTBであることを示す、ステップと、ビデオビットストリーム内で、第1の値を有するCTB行終了ビット、およびバイト整列ビットに遭遇するステップであって、それらが、波形並列処理(WPP)が有効にされていること、および現在のCTBがCTB行内の最後のCTBであるがタイル内の最後のCTBではないことを示す、ステップと、第1の値を有するタイル終了ビット、第1の値を有するCTB行終了ビット、およびバイト整列ビットに基づいて、タイル内の複数のCTBを再構築するステップと、を含む。
【選択図】図4
【特許請求の範囲】
【請求項1】
ビデオデコーダによって実行される復号の方法であって、
前記ビデオデコーダによって、コーディングされたビデオビットストリームを受信するステップであって、前記コーディングされたビデオビットストリームは、ピクチャを含み、前記ピクチャは、1つまたは複数のタイルを有する1つまたは複数のスライスを含み、各タイルは、複数のコーディングツリーブロック(CTB)を含む、ステップと、
前記ビデオデコーダによって、前記コーディングされたビデオビットストリーム内の、第1の値を有するタイル終了ビット、およびバイト整列ビットに遭遇するステップであって、前記第1の値を有する前記タイル終了ビット、および前記バイト整列ビットは、前記複数のCTBからの現在のCTBがタイル内の最後のCTBであることを示す、ステップと、
前記ビデオデコーダによって、前記コーディングされたビデオビットストリーム内の、前記第1の値を有するCTB行終了ビット、および前記バイト整列ビットに遭遇するステップであって、前記第1の値を有する前記CTB行終了ビット、および前記バイト整列ビットは、波形並列処理(WPP)が有効にされていること、および前記複数のCTBからの前記現在のCTBがCTB行内の前記最後のCTBであるが前記タイル内の前記最後のCTBではないことを示す、ステップと、
前記ビデオデコーダによって、前記第1の値を有する前記タイル終了ビット、前記第1の値を有する前記CTB行終了ビット、および前記バイト整列ビットに基づいて、前記タイル内の前記複数のCTBを再構築するステップと、
を含む方法。
【請求項2】
前記タイル終了ビットはend_of_tile_one_bitと称される、請求項1に記載の方法。
【請求項3】
前記CTB行終了ビットはend_of_subset_bitと称される、請求項1または2に記載の方法。
【請求項4】
前記WPPは、パラメータセット内に配置されたフラグによって有効にされる、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記WPPは、entropy_coding_sync_enabled_flagとして称されるフラグによって有効にされる、請求項4に記載の方法。
【請求項6】
前記WPPが有効にされているとき、前記第1の値は1である、請求項4に記載の方法。
【請求項7】
再構築された前記複数のCTBに基づいて生成された画像を表示するステップをさらに含む、請求項1から6のいずれか一項に記載の方法。
【請求項8】
ビデオエンコーダによって実行される符号化の方法であって、
前記ビデオエンコーダによって、ピクチャを1つまたは複数のスライスに区分するステップであって、各スライスは、1つまたは複数のタイルを含み、各タイルは、複数のコーディングツリーブロック(CTB)を含む、ステップと、
前記複数のCTBからの現在のCTBがタイル内の最後のCTBであるとき、前記ビデオエンコーダによって、第1の値を有するタイル終了ビット、およびバイト整列ビットを、前記ビデオビットストリームに符号化するステップと、
波形並列処理(WPP)が有効にされているとき、かつ前記現在のCTBがCTB行内の前記最後のCTBであるが前記タイル内の前記最後のCTBではないとき、前記ビデオエンコーダによって、前記第1の値を有するCTB行終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化するステップと、
前記ビデオエンコーダによって、ビデオデコーダに向けた送信のために前記ビデオビットストリームを記憶するステップと、
を含む方法。
【請求項9】
前記タイル終了ビットはend_of_tile_one_bitと称される、請求項8に記載の方法。
【請求項10】
前記CTB行終了ビットはend_of_subset_bitと称される、請求項8または9に記載の方法。
【請求項11】
前記WPPは、パラメータセット内に配置されたフラグによって有効にされる、請求項8から10のいずれか一項に記載の方法。
【請求項12】
前記WPPは、entropy_coding_sync_enabled_flagとして称されるフラグによって有効にされる、請求項11に記載の方法。
【請求項13】
前記WPPが有効にされているとき、前記第1の値は1である、請求項11に記載の方法。
【請求項14】
前記ビデオビットストリームを前記ビデオデコーダに向けて送信するステップをさらに含む、請求項8に記載の方法。
【請求項15】
復号デバイスであって、
コーディングされたビデオビットストリームを受信するように構成された受信機と、
前記受信機に結合されたメモリであって、命令を記憶するメモリと、
前記メモリに結合されたプロセッサであって、前記命令を実行して、前記復号デバイスに、
前記コーディングされたビデオビットストリームを受信することであって、前記コーディングされたビデオビットストリームは、ピクチャを含み、前記ピクチャは、1つまたは複数のタイルを有する1つまたは複数のスライスを含み、各タイルは、複数のコーディングツリーブロック(CTB)を含む、前記受信することと、
前記コーディングされたビデオビットストリーム内で、第1の値を有するタイル終了ビット、およびバイト整列ビットに遭遇することであって、前記第1の値を有する前記タイル終了ビット、および前記バイト整列ビットは、前記複数のCTBからの現在のCTBがタイル内の最後のCTBであることを示す、前記遭遇することと、
前記コーディングされたビデオビットストリーム内で、前記第1の値を有するCTB行終了ビット、および前記バイト整列ビットに遭遇することであって、前記第1の値を有する前記CTB行終了ビット、および前記バイト整列ビットは、波形並列処理(WPP)が有効にされていること、および前記複数のCTBからの前記現在のCTBがCTB行内の前記最後のCTBであるが前記タイル内の前記最後のCTBではないことを示す、前記遭遇することと、
前記第1の値を有する前記タイル終了ビット、前記第1の値を有する前記CTB行終了ビット、および前記バイト整列ビットに基づいて、前記タイル内の前記複数のCTBを再構築することと、
をさせるように構成されたプロセッサと、
を含む復号デバイス。
【請求項16】
前記タイル終了ビットはend_of_tile_one_bitと称され、前記CTB行終了ビットはend_of_subset_bitと称され、前記第1の値は1である、請求項15に記載の復号デバイス。
【請求項17】
符号化デバイスであって、
命令を含むメモリと、
前記メモリに結合されたプロセッサであって、前記命令を実行して、前記符号化デバイスに、
ピクチャを1つまたは複数のスライスに区分することであって、各スライスは、1つまたは複数のタイルを含み、各タイルは、複数のコーディングツリーブロック(CTB)を含む、前記区分することと、
前記複数のCTBからの現在のCTBがタイル内の最後のCTBであるとき、第1の値を有するタイル終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化することと、
波形並列処理(WPP)が有効にされているとき、かつ前記現在のCTBがCTB行内の前記最後のCTBであるが前記タイル内の前記最後のCTBではないとき、前記第1の値を有するCTB行終了ビット、およびバイト整列ビットを、前記ビデオビットストリームに符号化することと、
ビデオデコーダに向けた送信のために前記ビデオビットストリームを記憶することと、
をさせるように構成されたプロセッサと、
を含む符号化デバイス。
【請求項18】
符号化デバイスは、前記プロセッサに結合された送信機をさらに含み、前記送信機は、前記ビデオビットストリームをビデオデコーダに向けて送信するように構成された、請求項17に記載の符号化デバイス。
【請求項19】
前記タイル終了ビットはend_of_tile_one_bitと称され、前記CTB行終了ビットはend_of_subset_bitと称され、前記第1の値は1である、請求項17または18に記載の符号化デバイス。
【請求項20】
符号化すべきピクチャを受信し、または復号すべきビットストリームを受信するように構成された受信機と、
前記受信機に結合された送信機であって、前記ビットストリームをデコーダへ送信し、または復号された画像をディスプレイへ送信するように構成された送信機と、
前記受信機または前記送信機のうちの少なくとも1つに結合されたメモリであって、命令を記憶するように構成されたメモリと、
前記メモリに結合されたプロセッサであって、前記メモリに記憶された前記命令を実行して、請求項1から7のいずれか一項および請求項8から14のいずれか一項に記載の方法を実行するように構成されたプロセッサと、
を含むコーディング装置。
【請求項21】
画像を表示するように構成されたディスプレイをさらに含む、請求項20に記載のコーディング装置。
【請求項22】
エンコーダと、
前記エンコーダと通信するデコーダと、を含み、
前記エンコーダまたは前記デコーダが、請求項15から21のいずれか一項に記載の復号デバイス、符号化デバイス、またはコーディング装置を含む、システム。
【請求項23】
符号化すべきピクチャを受信し、または復号すべきビットストリームを受信するように構成された受信手段と、
前記受信手段に結合された送信手段であって、前記ビットストリームを復号手段へ送信し、または復号された画像を表示手段へ送信するように構成された送信手段と、
前記受信手段または前記送信手段のうちの少なくとも1つに結合された記憶手段であって、命令を記憶するように構成された記憶手段と、
前記記憶手段に結合された処理手段であって、前記記憶手段に記憶された前記命令を実行して、請求項1から7のいずれか一項および請求項8から14のいずれか一項に記載の方法を実行するように構成された処理手段と、
を含む、コーディングするための手段。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
この特許出願は、Fnu Hendry他によって2019年5月3日に出願され、発明の名称を「Wavefront Parallel Processing For Tile, Brick, and Slice」とする米国仮特許出願第62/843,047号、およびFnu Hendry他によって2019年6月21日に出願され、発明の名称を「Wavefront Parallel Processing For Tile, Brick, and Slice」とする米国仮特許出願第62/864,966号の利益を主張し、その各々が参照によりここに組み込まれる。
【0002】
一般に、この開示は、ビデオコーディングにおける波面並列処理(wavefront parallel processing(WPP))をサポートする技法を説明する。より詳細には、この開示は、WPPにおけるビットおよびバイト整列の不必要な重複を防止する。
【背景技術】
【0003】
比較的短いビデオでさえ描写するために必要とされるビデオデータの量はかなりであることがあり、これは、限定された帯域幅容量を有する通信ネットワークを渡ってデータがストリーミングされ、または別のやり方で通信されるべきときに困難をもたらし得る。したがって、ビデオデータは、一般に、現代の電気通信ネットワークを渡って通信される前に圧縮される。メモリリソースが限定され得るので、ビデオが記憶デバイスにおいて記憶されるとき、ビデオのサイズも問題であり得る。ビデオ圧縮デバイスは、しばしば、ソースにおいてソフトウェアおよび/またはハードウェアを使用して、送信または記憶の前にビデオデータをコーディングし、それによって、デジタルビデオ画像を表現するために必要とされるデータの量を減らす。圧縮されたデータは、次いで、ビデオデータを復号するビデオ圧縮解除デバイスによって宛先において受信される。限定されたネットワークリソースおよびますます増加するより高いビデオ品質の需要を有して、画像品質における犠牲をほとんど乃至全く有さずに圧縮率を改善する、改善された圧縮および圧縮解除技法が望ましい。
【発明の概要】
【課題を解決するための手段】
【0004】
第1の態様は、ビデオデコーダによって実行される、コーディングされたビデオビットストリームを復号する方法に関する。方法は、ビデオデコーダによって、コーディングされたビデオビットストリームを受信するステップであって、コーディングされたビデオビットストリームは、ピクチャを含み、ピクチャは、1つまたは複数のタイルを有する1つまたは複数のスライスを含み、各タイルは、複数のコーディングツリーブロック(coding tree block(CTB))を含む、ステップと、ビデオデコーダによって、コーディングされたビデオビットストリーム内で、第1の値を有するタイル終了ビット、およびバイト整列ビットに遭遇するステップであって、第1の値を有するタイル終了ビット、およびバイト整列ビットは、複数のCTBからの現在のCTBがタイル内の最後のCTBであることを示す、ステップと、ビデオデコーダによって、コーディングされたビデオビットストリーム内で、第1の値を有するCTB行終了ビット、およびバイト整列ビットに遭遇するステップであって、第1の値を有するCTB行終了ビット、およびバイト整列ビットは、波形並列処理(waveform parallel processing(WPP))が有効にされていること、および複数のCTBからの現在のCTBがCTB行内の最後のCTBであるがタイル内の最後のCTBではないことを示す、ステップと、ビデオデコーダによって、第1の値を有するタイル終了ビット、第1の値を有するCTB行終了ビット、およびバイト整列ビットに基づいて、タイル内の複数のCTBを再構築するステップと、を含む。
【0005】
方法は、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0006】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、タイル終了ビットがend_of_tile_one_bitと称されることを提供する。
【0007】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、CTB行終了ビットがend_of_subset_bitと称されることを提供する。
【0008】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、WPPが、パラメータセット内に配置されたフラグによって有効にされることを提供する。
【0009】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、WPPが、entropy_coding_sync_enabled_flagとして称されるフラグによって有効にされることを提供する。
【0010】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、WPPが有効にされているとき、第1の値が1であることを提供する。
【0011】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、再構築された複数のCTBに基づいて生成された画像を表示することを提供する。
【0012】
第2の態様は、ビデオエンコーダによって実行される、ビデオビットストリームを符号化する方法に関する。方法は、ビデオエンコーダによって、ピクチャを1つまたは複数のスライスに区分するステップであって、各スライスは、1つまたは複数のタイルを含み、各タイルは、複数のコーディングツリーブロック(CTB)を含む、ステップと、複数のCTBからの現在のCTBがタイル内の最後のCTBであるとき、ビデオエンコーダによって、第1の値を有するタイル終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化するステップと、波形並列処理(WPP)が有効にされているとき、かつ現在のCTBがCTB行内の最後のCTBであるがタイル内の最後のCTBではないとき、ビデオエンコーダによって、第1の値を有するCTB行終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化するステップと、ビデオエンコーダによって、ビデオデコーダに向けた送信のためにビデオビットストリームを記憶するステップと、を含む。
【0013】
方法は、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0014】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、タイル終了ビットがend_of_tile_one_bitと称されることを提供する。
【0015】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、CTB行終了ビットがend_of_subset_bitと称されることを提供する。
【0016】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、WPPが、パラメータセット内に配置されたフラグによって有効にされることを提供する。
【0017】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、WPPが、entropy_coding_sync_enabled_flagとして称されるフラグによって有効にされることを提供する。
【0018】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、WPPが有効にされているとき、第1の値が1であることを提供する。
【0019】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、ビデオビットストリームをビデオデコーダに向けて送信することを提供する。
【0020】
第3の態様は、復号デバイスに関する。復号デバイスは、コーディングされたビデオビットストリームを受信するように構成された受信機と、受信機に結合されたメモリであって、命令を記憶するメモリと、メモリに結合されたプロセッサであって、命令を実行して、復号デバイスに、コーディングされたビデオビットストリームを受信することであって、コーディングされたビデオビットストリームは、ピクチャを含み、ピクチャは、1つまたは複数のタイルを有する1つまたは複数のスライスを含み、各タイルは、複数のコーディングツリーブロック(CTB)を含む、前記受信することと、コーディングされたビデオビットストリーム内で、第1の値を有するタイル終了ビット、およびバイト整列ビットに遭遇することであって、第1の値を有するタイル終了ビット、およびバイト整列ビットは、複数のCTBからの現在のCTBがタイル内の最後のCTBであることを示す、前記遭遇することと、コーディングされたビデオビットストリーム内で、第1の値を有するCTB行終了ビット、およびバイト整列ビットに遭遇することであって、第1の値を有するCTB行終了ビット、およびバイト整列ビットは、波形並列処理(WPP)が有効にされていること、および複数のCTBからの現在のCTBがCTB行内の最後のCTBであるがタイル内の最後のCTBではないことを示す、前記遭遇することと、第1の値を有するタイル終了ビット、第1の値を有するCTB行終了ビット、およびバイト整列ビットに基づいて、タイル内の複数のCTBを再構築することと、をさせるように構成されたプロセッサと、を含む。
【0021】
復号デバイスは、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0022】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、タイル終了ビットがend_of_tile_one_bitと称され、CTB行終了ビットはend_of_subset_bitと称され、第1の値は1であることを提供する。
【0023】
第4の態様は、符号化デバイスに関する。符号化デバイスは、命令を含むメモリと、メモリに結合されたプロセッサであって、命令を実行して、符号化デバイスに、ピクチャを1つまたは複数のスライスに区分することであって、各スライスは、1つまたは複数のタイルを含み、各タイルは、複数のコーディングツリーブロック(CTB)を含む、前記区分することと、複数のCTBからの現在のCTBがタイル内の最後のCTBであるとき、第1の値を有するタイル終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化することと、波形並列処理(WPP)が有効にされているとき、かつ現在のCTBがCTB行内の最後のCTBであるがタイル内の最後のCTBではないとき、第1の値を有するCTB行終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化することと、ビデオデコーダに向けた送信のためにビデオビットストリームを記憶することと、をさせるように構成されたプロセッサと、を含む。
【0024】
符号化デバイスは、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0025】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、符号化デバイスが、プロセッサに結合された送信機であって、ビデオビットストリームをビデオデコーダに向けて送信するように構成された送信機をさらに含むことを提供する。
【0026】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、タイル終了ビットがend_of_tile_one_bitと称され、CTB行終了ビットはend_of_subset_bitと称され、第1の値は1であることを提供する。
【0027】
第5の態様は、コーディング装置に関する。コーディング装置は、符号化すべきピクチャを受信し、または復号すべきビットストリームを受信するように構成された受信機と、受信機に結合された送信機であって、ビットストリームをデコーダへ送信し、または復号された画像をディスプレイへ送信するように構成された送信機と、受信機または送信機のうちの少なくとも1つに結合されたメモリであって、命令を記憶するように構成されたメモリと、メモリに結合されたプロセッサであって、メモリに記憶された命令を実行して、ここで開示される方法のうちのいずれかを実行するように構成されたプロセッサと、を含む。
【0028】
コーディング装置は、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0029】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、画像を表示するように構成されたディスプレイを提供する。
【0030】
第6の態様は、システムに関する。システムは、エンコーダと、エンコーダと通信するデコーダとを含み、エンコーダまたはデコーダは、ここで開示される復号デバイス、符号化デバイス、またはコーディング装置を含む。
【0031】
システムは、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0032】
第7の態様は、コーディングするための手段に関する。コーディングするための手段は、符号化すべきピクチャを受信し、または復号すべきビットストリームを受信するように構成された受信手段と、受信手段に結合された送信手段であって、ビットストリームを復号手段へ送信し、または復号された画像を表示手段へ送信するように構成された送信手段と、受信手段または送信手段のうちの少なくとも1つに結合された記憶手段であって、命令を記憶するように構成された記憶手段と、記憶手段に結合された処理手段であって、記憶手段に記憶された命令を実行して、ここで開示される方法のうちのいずれかを実行するように構成された処理手段と、を含む。
【0033】
コーディングするための手段は、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0034】
この開示のより完全な理解のために、添付図面および詳細な説明に関して用いられる、以下の簡単な説明への参照がここで行われ、同様の参照番号は同様の部分を表現する。
【図面の簡単な説明】
【0035】
図1】ビデオコーディング技法を利用し得る一例のコーディングシステムを例示するブロック図である。
図2】ビデオコーディング技法を実行し得る一例のビデオエンコーダを例示するブロック図である。
図3】ビデオコーディング技法を実行し得るビデオデコーダの一例を例示するブロック図である。
図4】波面並列処理を実現するように構成されたビデオビットストリームを例示する。
図5】コーディングされたビデオビットストリームを復号する方法の一実施形態である。
図6】コーディングされたビデオビットストリームを符号化する方法の一実施形態である。
図7】ビデオコーディングデバイスの概略図である。
図8】コーディングするための手段の一実施形態の概略図である。
【発明を実施するための形態】
【0036】
1つまたは複数の実施形態の例示的な実装が以下で提供されるが、現在知られているかまたは存在しているかにかかわらず、開示されるシステムおよび/または方法が任意の数の技法を使用して実現され得ることが最初に理解されるべきである。開示は、ここで例示され説明される例示の設計および実装を含む、以下で例示される例示的な実装、図面、および技法に決して限定されるべきでないが、等価物のそれらの完全な範囲とともに添付された請求項の範囲内で修正され得る。
【0037】
以下の用語は、ここで反対のコンテキストで使用されるのでなければ、以下のように定義される。特に、以下の定義は、追加の明確さを本開示に与えることが意図される。しかしながら、用語は、異なるコンテキストで異なって説明され得る。したがって、以下の定義は補足として考えられるべきであり、ここでそのような用語のために提供される説明の任意の他の定義を限定すると考えられるべきでない。
【0038】
ビットストリームは、エンコーダとデコーダの間での送信のために圧縮されるビデオデータを含むシーケンスビットである。エンコーダは、ビデオデータをビットストリームに圧縮するために、符号化プロセスを採用するように構成されるデバイスである。デコーダは、表示のためにビットストリームからビデオデータを再構築するために、復号プロセスを採用するように構成されるデバイスである。ピクチャは、ビデオシーケンス内の対応する瞬間におけるユーザへの完全なまたは部分的な表示のために意図される完全な画像である。参照ピクチャは、インター予測に従って参照によって他のピクチャをコーディングするときに使用されることが可能である参照サンプルを含むピクチャである。コーディングされたピクチャは、インター予測またはイントラ予測に従ってコーディングされているピクチャの表現であり、ビットストリーム内の単一のアクセスユニット内に含まれ、ピクチャのコーディングツリーユニット(coding tree unit(CTU))の完全なセットを含む。スライスは、整数個の完全なタイル、またはピクチャのタイル内の整数個の連続する完全なCTU行を含むピクチャの区分であり、ここで、スライスおよびすべての細分は、単一のネットワーク・アブストラクション・レイヤ(network abstraction layer(NAL))ユニット内に排他的に含まれる。参照スライスは、参照サンプルを含むか、またはインター予測に従って参照によって他のスライスをコーディングするときに使用される参照ピクチャのスライスである。スライスヘッダは、すべてのタイル、またはスライス内で表現されるタイル内のCTU行に関係するデータ要素を含むコーディングされたスライスの一部である。エントリポイントは、コーディングされたスライスの対応するサブセットについてのビデオデータの最初のビットを含むビットストリーム内のビット位置である。オフセットは、知られているビット位置とエントリポイントの間のビットでの距離である。サブセットは、タイル、CTU行、またはCTUのようなセットの細分である。CTUは、スライスのサブセットである。コーディングツリーユニット(CTU)は、コーディングツリーによって区分されることが可能である予め定義されたサイズのサンプルのグループである。CTUは、ルマ/クロマ成分ごとにコーディングツリーブロック(CTB)に分割される。CTBは、64×64、32×32、または16×16であることが可能であり、より大きいピクセルブロックサイズが、通常、コーディング効率を増加させる。CTBは、次いで、1つまたは複数のコーディングユニット(coding unit(CU))に分割され、そのためCTUサイズは最大コーディングユニットサイズでもある。
【0039】
CTU行は、左のスライス境界と右のスライス境界の間で水平に延びるCTUのグループである。CTB行は、左のスライス境界と右のスライス境界の間で水平に延びるCTBのグループである。CTU列は、上のスライス境界と下のスライス境界の間で垂直に延びるCTUのグループである。CTB列は、上のスライス境界と下のスライス境界の間で垂直に延びるCTBのグループである。CTB行終了ビットは、CTB行の終了におけるビットである。バイト整列ビットは、データサブセット、CTU行、CTB行、タイルなどの終了にパディングとして追加されるビットである。バイト整列ビットは、WPPによって導入される遅延を考慮し、または補償するために使用され得る。WPPは、異なるスレッドによって各行が並行して復号されることを可能にする遅延を用いて、スライスのCTU行をコーディングするメカニズムである。スライスアドレスは、スライスまたはそれらの下位部分の識別可能な位置である。
【0040】
以下の頭字語、すなわち、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)、コーディングされたビデオシーケンス(Coded Video Sequence(CVS))、共同ビデオエキスパートチーム(Joint Video Experts Team(JVET))、動き制約付きタイルセット(Motion-Constrained Tile Set(MCTS))、最大転送単位(Maximum Transfer Unit(MTU))、ネットワーク・アブストラクション・レイヤ(NAL)、ピクチャ順序カウント(Picture Order Count(POC))、ローバイトシーケンスペイロード(Raw Byte Sequence Payload(RBSP))、シーケンスパラメータセット(Sequence Parameter Set(SPS))、サブピクチャユニット(Sub-Picture Unit(SPU))、多用途ビデオコーディング(Versatile Video Coding(VVC))、およびワーキングドラフト(Working Draft(WD))がここで使用される。
【0041】
図1は、ここで説明されるようなビデオコーディング技法を利用し得る一例のコーディングシステム10を例示するブロック図である。図1に表されたように、コーディングシステム10は、宛先デバイス14によって後に復号されるべき符号化されたビデオデータを提供するソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを提供し得る。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、または同様のものを含む、広い範囲のデバイスのうちのいずれかを含み得る。いくつかの場合において、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
【0042】
宛先デバイス14は、コンピュータ可読媒体16を介して、復号されるべき符号化されたビデオデータを受信し得る。コンピュータ可読媒体16は、符号化されたビデオデータをソースデバイス12から宛先デバイス14に移動させることが可能な任意のタイプの媒体またはデバイスを含み得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が符号化されたビデオデータを宛先デバイス14へリアルタイムで直接に送信することを有効にするための通信媒体を含み得る。符号化されたビデオデータは、ワイヤレス通信プロトコルのような通信規格に従って変調され、宛先デバイス14へ送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理送信線のような任意のワイヤレスまたは有線の通信媒体を含み得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークのような、パケットに基づくネットワークの部分を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る任意の他の機器を含み得る。
【0043】
いくつかの例では、符号化されたデータは、出力インターフェース22から記憶デバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、Blu-ray(登録商標)ディスク、デジタルビデオディスク(DVD)、コンパクトディスク・リードオンリメモリ(CD-ROM)、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の適したデジタル記憶媒体のような、各種の分散されるかまたは局所的にアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、記憶デバイスは、ソースデバイス12によって生成された符号化されたビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して記憶デバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス14へ送信することが可能な任意のタイプのサーバであり得る。例示のファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準データ接続を通じて符号化されたビデオデータにアクセスし得る。これは、ファイルサーバにおいて記憶された符号化されたビデオデータにアクセスするために適した、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、デジタル加入者線(DSL)、ケーブルモデムなど)、またはその両方の組み合わせを含み得る。記憶デバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組み合わせであり得る。
【0044】
この開示の技法は、ワイヤレスの応用または設定に限定されるとは限らない。技法は、地上波テレビ放送、ケーブルテレビ送信、衛星テレビ送信、動的適応ストリーミングオーバーHTTP(dynamic adaptive streaming over HTTP(DASH))のようなインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の応用のような、各種のマルチメディア応用のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、コーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、および/またはビデオ電話のような応用をサポートするために、一方向または二方向のビデオ送信をサポートするように構成され得る。
【0045】
図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。この開示によれば、ソースデバイス12のビデオエンコーダ20および/または宛先デバイス14のビデオデコーダ30は、ビデオコーディングのための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または配置を含み得る。たとえば、ソースデバイス12は、外部カメラのような外部のビデオソースからビデオデータを受信し得る。同様に、宛先デバイス14は、統合されたディスプレイデバイスを含むのではなく、外部のディスプレイデバイスとインターフェースし得る。
【0046】
図1の例示されたコーディングシステム10は、単に一例である。ビデオコーディングのための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。この開示の技法は一般にビデオコーディングデバイスによって実行されるが、技法は、また、典型的に「コーデック」と呼ばれるビデオエンコーダ/デコーダによって実行され得る。その上、この開示の技法は、また、ビデオプリプロセッサによって実行され得る。ビデオエンコーダおよび/またはデコーダは、グラフィックス処理ユニット(GPU)または類似するデバイスであり得る。
【0047】
ソースデバイス12および宛先デバイス14は、単に、ソースデバイス12が宛先デバイス14への送信のためにコーディングされたビデオデータを生成する、そのようなコーディングデバイスの例である。いくつかの例では、ソースデバイス12および宛先デバイス14は、ソースおよび宛先デバイス12、14の各々がビデオ符号化および復号構成要素を含むように、実質上、対称的なやり方で動作し得る。したがって、コーディングシステム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話のために、ビデオデバイス12、14の間での一方向または二方向のビデオ送信をサポートし得る。
【0048】
ソースデバイス12のビデオソース18は、ビデオカメラ、前にキャプチャされたビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースのような、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスに基づくデータ、またはライブビデオと、アーカイブされたビデオと、コンピュータ生成されたビデオとの組み合わせを生成してよい。
【0049】
いくつかの場合において、ビデオソース18がビデオカメラであるとき、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。しかしながら、上記で言及されたように、この開示において説明される技法は、一般にビデオコーディングに適用可能であってもよく、ワイヤレスおよび/または有線の応用に適用されてもよい。各々の場合において、キャプチャされ、プリキャプチャされ、またはコンピュータ生成されたビデオが、ビデオエンコーダ20によって符号化され得る。符号化されたビデオ情報は、次いで、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
【0050】
コンピュータ可読媒体16は、ワイヤレスブロードキャストもしくは有線ネットワーク送信のような一時的媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu-ray(登録商標)ディスク、もしくは他のコンピュータ可読媒体のような、記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(表されていない)が、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化されたビデオデータを受信し、宛先デバイス14に符号化されたビデオデータを提供し得る。同様に、ディスクスタンピング設備のような媒体作成設備のコンピューティングデバイスが、ソースデバイス12から符号化されたビデオデータを受信し、符号化されたビデオデータを含むディスクを作り出し得る。したがって、様々な例では、コンピュータ可読媒体16は、様々な形式の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
【0051】
宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ブロックおよび他のコーディングされたユニット、たとえば、グループオブピクチャ(group of pictures(GOP))の特性および/または処理を記述するシンタックス要素を含む、ビデオデコーダ30によっても使用される、ビデオエンコーダ20によって定義されるシンタックス情報を含み得る。ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような、各種のディスプレイデバイスのいずれかを含み得る。
【0052】
ビデオエンコーダ20およびビデオデコーダ30は、現在開発中の高効率ビデオコーディング(High Efficiency Video Coding(HEVC))規格のようなビデオコーディング規格に従って動作してもよく、HEVCテストモデル(HEVC Test Model(HM))に準拠してもよい。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的に、ムービングピクチャエキスパートグループ(Moving Picture Expert Group(MPEG))-4パート10と呼ばれる、国際電気通信連合電気通信規格セクタ(International Telecommunications Union Telecommunication Standardization Sector(ITU-T))H.264規格、アドバンストビデオコーディング(Advanced Video Coding(AVC))、H.265/HEVC、またはそのような規格の拡張のような、他の独自のまたは業界の規格に従って動作し得る。しかしながら、この開示の技法は、どの特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例は、MPEG-2およびITU-T H.263を含む。図1に表されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、各々、オーディオエンコーダおよびデコーダと統合されてもよく、共通のデータストリームまたは別個のデータストリーム内のオーディオとビデオの両方の符号化を処理するための、適切なマルチプレクサ-デマルチプレクサ(MUX-DEMUX)ユニット、または他のハードウェアおよびソフトウェアを含んでもよい。適用可能ならば、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)のような他のプロトコルに準拠し得る。
【0053】
ビデオエンコーダ20およびビデオデコーダ30は、各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別のロジック、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせのような、各種の適したエンコーダ回路のいずれかとして実現され得る。技法が部分的にソフトウェアで実現されるとき、デバイスは、適した非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、この開示の技法を実行するために、1つまたは複数のプロセッサを使用してハードウェアで命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダ内に含められてもよく、それらのいずれかは、組み合わせられたエンコーダ/デコーダ(コーデック)の一部としてそれぞれのデバイス内に統合されてもよい。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話のようなワイヤレス通信デバイスを含み得る。
【0054】
図2は、ビデオコーディング技法を実行し得るビデオエンコーダ20の一例を例示するブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間的な冗長性を低減または除去するために、空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレームまたはピクチャ内のビデオにおける時間的な冗長性を低減または除去するために、時間予測に依拠する。イントラモード(Iモード)は、いくつかの空間に基づくコーディングモードのいずれかを指し得る。単方向(単予測としても知られる)予測(Pモード)または双予測(bi-prediction)(双予測(bi prediction)としても知られる)(Bモード)のようなインターモードは、いくつかの時間に基づくコーディングモードのいずれかを指し得る。
【0055】
図2に表わされたように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、モード選択ユニット40、参照フレームメモリ64、加算器50、変換処理ユニット52、量子化ユニット54、およびエントロピーコーディングユニット56を含む。次に、モード選択ユニット40は、動き補償ユニット44、動き推定ユニット42、イントラ予測(intra-prediction)(イントラ予測(intra prediction)としても知られる)ユニット46、および区分ユニット48を含む。ビデオブロック再構築のために、ビデオエンコーダ20は、また、逆量子化ユニット58、逆変換ユニット60、および加算器62を含む。ブロック境界をフィルタリングして再構築されたビデオからブロック状アーティファクトを除去するために、デブロッキングフィルタ(図2に表わされていない)も含まれ得る。望まれるならば、デブロッキングフィルタは、典型的に、加算器62の出力をフィルタリングすることになる。デブロッキングフィルタに加えて、(ループ内またはループ後の)追加のフィルタも使用され得る。そのようなフィルタは、簡潔さのために表されていないが、望まれるならば、(ループ内フィルタとして)加算器50の出力をフィルタリングし得る。
【0056】
符号化プロセスの間、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、1つまたは複数の参照フレーム内の1つまたは複数のブロックに対して受信されたビデオブロックのインター予測コーディングを実行して、時間予測を提供する。イントラ予測ユニット46は、代替的に、コーディングされるべきブロックと同じフレームまたはスライス内の1つまたは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを実行して、空間予測を提供し得る。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
【0057】
その上、区分ユニット48は、前のコーディングパスにおける、前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、区分ユニット48は、最初にフレームまたはスライスを最大コーディングユニット(largest coding unit(LCU))に区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいてLCUの各々をサブコーディングユニット(サブCU)に区分し得る。モード選択ユニット40は、サブCUへのLCUの区分を示す4分木データ構造をさらに作り出し得る。4分木のリーフノードCUは、1つまたは複数の予測ユニット(prediction unit(PU))および1つまたは複数の変換ユニット(transform unit(TU))を含み得る。
【0058】
本開示は、HEVCのコンテキストにおけるCU、PU、もしくはTU、または他の規格のコンテキストにおける類似するデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそれらのサブブロック)のいずれかを指すために、用語「ブロック」を使用する。CUは、コーディングノード、PU、およびコーディングノードに関連付けられたTUを含む。CUのサイズは、コーディングノードのサイズに対応し、形状が正方形である。CUのサイズは、8×8ピクセルから、最大64×64ピクセル以上を有するツリーブロックのサイズまでに及び得る。各CUは、1つまたは複数のPUおよび1つまたは複数のTUを含み得る。CUに関連付けられたシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。CUが、スキップまたはダイレクトモードで符号化されるのか、イントラ予測モードで符号化されるのか、あるいはインター予測(inter-prediction)(インター予測(inter prediction)としても知られる)モードで符号化されるのかの間で、区分モードは異なり得る。PUは、形状が非正方形であるように区分され得る。CUに関連付けられたシンタックスデータは、また、たとえば、4分木に従う1つまたは複数のTUへのCUの区分を記述し得る。TUは、形状が正方形または非正方形(たとえば、長方形)であることが可能である。
【0059】
モード選択ユニット40は、たとえば、誤差結果に基づいて、コーディングモード、イントラまたはインターのうちの1つを選択してもよく、残差ブロックデータを生成するために加算器50に、参照フレームとしての使用のために符号化されたブロックを再構築するために加算器62に、結果としてのイントラまたはインターコーディングされたブロックを提供する。モード選択ユニット40は、また、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報のようなシンタックス要素を、エントロピーコーディングユニット56に提供する。
【0060】
動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念的な目的のために別個に例示される。動き推定ユニット42によって実行される動き推定は、ビデオブロックについての動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム(または、他のコーディングされたユニット)内でコーディングされている現在のブロックに対する参照フレーム(または、他のコーディングされたユニット)内の予測ブロックに対して現在のビデオフレームまたはピクチャ内でのビデオブロックのPUの変位を示し得る。予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分の観点から、コーディングされるべきブロックに密接に適合することが見出されるブロックである。いくつかの例では、ビデオエンコーダ20は、参照フレームメモリ64に記憶された参照ピクチャの整数より下のピクセル位置についての値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に対して動き探索を実行し、分数ピクセル精度を有する動きベクトルを出力し得る。
【0061】
動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライス内のビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択されることが可能であり、それらの各々が参照フレームメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56および動き補償ユニット44へ送信する。
【0062】
動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。再び、動き推定ユニット42および動き補償ユニット44は、いくつかの例では機能的に統合され得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストのうちの1つの中で、動きベクトルが指し示す予測ブロックを位置特定し得る。加算器50は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算することによって残差ビデオブロックを形成して、以下で論じられるようにピクセル差分値を形成する。一般に、動き推定ユニット42は、ルマ成分に対して動き推定を実行し、動き補償ユニット44は、ルマ成分に基づいて計算された動きベクトルを、クロマ成分とルマ成分の両方のために使用する。モード選択ユニット40は、また、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30による使用のためのビデオブロックおよびビデオスライスに関連付けられたシンタックス要素を生成し得る。
【0063】
イントラ予測ユニット46は、上記で説明されたように、動き推定ユニット42および動き補償ユニット44によって実行されるインター予測への代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パスの間に、様々なイントラ予測モードを使用して現在のブロックを符号化してもよく、イントラ予測ユニット46(または、いくつかの例ではモード選択ユニット40)は、使用すべき適切なイントラ予測モードを、テストされたモードから選択してよい。
【0064】
たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードについてレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中から最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、一般に、符号化されたブロックと、符号化されたブロックを作り出すために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化されたブロックを作り出すために使用されるビットレート(すなわち、ビットの数)を決定する。イントラ予測ユニット46は、様々な符号化されたブロックについて、ひずみおよびレートから比率を計算して、ブロックについてどのイントラ予測モードが最良のレートひずみ値を示すかを決定し得る。
【0065】
加えて、イントラ予測ユニット46は、深度モデリングモード(depth modeling mode(DMM))を使用して深度マップの深度ブロックをコーディングするように構成され得る。モード選択ユニット40は、利用可能なDMMモードが、たとえば、レートひずみ最適化(rate-distortion optimization(RDO))を使用して、イントラ予測モードおよび他のDMMモードよりも良好なコーディング結果を作り出すかどうかを決定し得る。深度マップに対応するテクスチャ画像についてのデータが、参照フレームメモリ64に記憶され得る。動き推定ユニット42および動き補償ユニット44は、また、深度マップの深度ブロックをインター予測するように構成され得る。
【0066】
ブロックのためのイントラ予測モード(たとえば、イントラ予測モード、またはDMMモードのうちの1つ)を選択した後、イントラ予測ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピーコーディングユニット56に提供し得る。エントロピーコーディングユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)、様々なブロックについての符号化コンテキストの定義、およびコンテキストの各々について使用すべき、最も可能性のあるイントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示を含み得る構成データを、送信されるビットストリーム内に含め得る。
【0067】
ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって、残差ビデオブロックを形成する。加算器50は、この減算動作を実行する1つまたは複数の構成要素を表す。
【0068】
変換処理ユニット52は、離散コサイン変換(DCT)または概念的に類似する変換のような変換を残差ブロックに適用して、残差変換係数値を含むビデオブロックを作り出す。変換処理ユニット52は、DCTと概念的に類似する他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換、または他のタイプの変換も使用されることが可能である。
【0069】
変換処理ユニット52は、残差ブロックに変換を適用して、残差変換係数のブロックを作り出す。変換は、残差情報をピクセル値領域から周波数領域のような変換領域に変換し得る。変換処理ユニット52は、結果としての変換係数を量子化ユニット54に送信し得る。量子化ユニット54は、変換係数を量子化してビットレートをさらに低減する。量子化プロセスは、係数のいくつかまたは全てに関連付けられたビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
【0070】
量子化に続いて、エントロピーコーディングユニット56は、量子化された変換係数をエントロピーコーディングする。たとえば、エントロピーコーディングユニット56は、コンテキスト適応可変長コーディング(CAVLC)、コンテキスト適応バイナリ算術コーディング(CABAC)、シンタックスに基づくコンテキスト適応バイナリ算術コーディング(SBAC)、確率区間区分エントロピー(PIPE)コーディング、または別のエントロピーコーディング技法を実行し得る。コンテキストに基づくエントロピーコーディングの場合には、コンテキストは隣接ブロックに基づき得る。エントロピーコーディングユニット56によるエントロピーコーディングに続いて、符号化されたビットストリームが、別のデバイス(たとえば、ビデオデコーダ30)へ送信され、または後の送信または取り出しのためにアーカイブされ得る。
【0071】
逆量子化ユニット58および逆変換ユニット60は、それぞれ、逆量子化および逆変換を適用して、たとえば、参照ブロックとしての後の使用のために、ピクセル領域における残差ブロックを再構築する。動き補償ユニット44は、参照フレームメモリ64のフレームのうちの1つの予測ブロックに残差ブロックを加算することによって、参照ブロックを計算し得る。動き補償ユニット44は、また、再構築された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定における使用のための整数より下のピクセル値を計算し得る。加算器62は、動き補償ユニット44によって作り出された、動き補償された予測ブロックに、再構築された残差ブロックを加算して、参照フレームメモリ64における記憶のための再構築されたビデオブロックを作り出す。再構築されたビデオブロックは、後続のビデオフレーム内のブロックをインターコーディングするための参照ブロックとして、動き推定ユニット42および動き補償ユニット44によって使用され得る。
【0072】
図3は、ビデオコーディング技法を実行し得るビデオデコーダ30の一例を例示するブロック図である。図3の例では、ビデオデコーダ30は、エントロピー復号ユニット70、動き補償ユニット72、イントラ予測ユニット74、逆量子化ユニット76、逆変換ユニット78、参照フレームメモリ82、および加算器80を含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明された符号化パスと全般的に逆の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成し得るが、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。
【0073】
復号プロセスの間、ビデオデコーダ30は、符号化されたビデオスライスのビデオブロックおよび関連付けられたシンタックス要素を表現する符号化されたビデオビットストリームを、ビデオエンコーダ20から受信する。ビデオデコーダ30のエントロピー復号ユニット70は、ビットストリームをエントロピー復号して、量子化された係数、動きベクトルまたはイントラ予測モードインジケータ、および他のシンタックス要素を生成する。エントロピー復号ユニット70は、動きベクトルおよび他のシンタックス要素を動き補償ユニット72に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
【0074】
ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モード、および現在のフレームまたはピクチャの、前に復号されたブロックからのデータに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコーディングされた(たとえば、B、P、またはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを作り出す。予測ブロックは、参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つから作り出され得る。ビデオデコーダ30は、参照フレームメモリ82に記憶された参照ピクチャに基づいてデフォルトの構築技法を使用して、参照フレームリスト、リスト0およびリスト1を構築し得る。
【0075】
動き補償ユニット72は、動きベクトルおよび他のシンタックス要素を解析することによって、現在のビデオスライスのビデオブロックのための予測情報を決定し、予測情報を使用して、復号されている現在のビデオブロックのための予測ブロックを作り出す。たとえば、動き補償ユニット72は、受信されたシンタックス要素のうちのいくつかを使用して、ビデオスライスのビデオブロックをコーディングするために使用された予測モード(たとえば、イントラまたはインター予測)、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)、スライスのための参照ピクチャリストのうちの1つまたは複数についての構築情報、スライスのインター符号化されたビデオブロックごとの動きベクトル、スライスのインターコーディングされたビデオブロックごとのインター予測ステータス、および現在のビデオスライス内のビデオブロックを復号するための他の情報を決定する。
【0076】
動き補償ユニット72は、また、補間フィルタに基づいて補間を実行し得る。動き補償ユニット72は、ビデオブロックの符号化の間にビデオエンコーダ20によって使用されたような補間フィルタを使用して、参照ブロックの整数より下のピクセルについての補間値を計算し得る。この場合、動き補償ユニット72は、ビデオエンコーダ20によって使用された補間フィルタを、受信されたシンタックス要素から決定し、その補間フィルタを使用して予測ブロックを作り出し得る。
【0077】
深度マップに対応するテクスチャ画像についてのデータが、参照フレームメモリ82に記憶され得る。動き補償ユニット72は、また、深度マップの深度ブロックをインター予測するように構成され得る。
【0078】
一実施形態では、ビデオデコーダ30はユーザインターフェース(UI)84を含む。ユーザインターフェース84は、ビデオデコーダ30のユーザ(たとえば、ネットワーク管理者)から入力を受け取るように構成される。ユーザインターフェース84を通じて、ユーザは、ビデオデコーダ30における設定を管理または変更することができる。たとえば、ユーザは、ユーザの好みに従ってビデオデコーダ30の構成および/または動作を制御するために、パラメータ(たとえば、フラグ)についての値を入力し、または別のやり方で提供することができる。ユーザインターフェース84は、たとえば、ユーザがグラフィカルアイコン、ドロップダウンメニュー、チェックボックスなどを通じてビデオデコーダ30と対話することを可能にする、グラフィカルユーザインターフェース(GUI)であり得る。いくつかの場合において、ユーザインターフェース84は、キーボード、マウス、または他の周辺デバイスを介してユーザから情報を受け取り得る。一実施形態では、ユーザは、スマートフォン、タブレットデバイス、ビデオデコーダ30から離れて位置するパーソナルコンピュータなどを介して、ユーザインターフェース84にアクセスすることができる。ここで使用されるように、ユーザインターフェース84は、外部入力または外部手段と呼ばれ得る。
【0079】
上記を念頭に置いて、ビデオ圧縮技法は、空間(イントラピクチャ)予測および/または時間(インターピクチャ)予測を実行して、ビデオシーケンスに固有の冗長性を低減または除去する。ブロックに基づくビデオコーディングについて、ビデオスライス(すなわち、ビデオピクチャ、またはビデオピクチャの一部分)は、ツリーブロック、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)、および/またはコーディングノードとも呼ばれ得るビデオブロックに区分され得る。ピクチャのイントラコーディングされた(I)スライス内のビデオブロックは、同じピクチャ内の隣接ブロック内の参照サンプルに関して空間予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライス内のビデオブロックは、同じピクチャ内の隣接ブロック内の参照サンプルに関して空間予測、または他の参照ピクチャ内の参照サンプルに関して時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【0080】
空間または時間予測は、コーディングされるべきブロックのための予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表現する。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトル、およびコーディングされたブロックと予測ブロックとの間の差分を示す残差データに従って符号化される。イントラコーディングされたブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されてもよく、残差変換係数をもたらし、これは、次いで、量子化され得る。最初に2次元アレイに配置された量子化された変換係数は、変換係数の1次元ベクトルを作り出すために走査されてもよく、さらに多くの圧縮を達成するためにエントロピーコーディングが適用されてもよい。
【0081】
画像およびビデオ圧縮は、様々なコーディング規格に導く、急速な成長を経験してきた。そのようなビデオコーディング規格は、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)のような拡張を含む。
【0082】
ITU-TとISO/IECとの共同ビデオエキスパートチーム(JVET)によって開発されている多用途ビデオコーディング(VVC)と名付けられた新たなビデオコーディング規格もある。VVC規格はいくつかのワーキングドラフトを有するが、特にVVCの1つのワーキングドラフト(WD)、すなわち、B.Bross、J.Chen、およびS.Liu、「Versatile Video Coding (Draft 5)」、JVET-N1001-v3、第13回JVET会合、2019年3月27日(VVCドラフト5)が、ここで参照される。
【0083】
ここで開示される技法の説明は、開発中のビデオコーディング規格、ITU-TとISO/IECとの共同ビデオエキスパートチーム(JVET)による多用途ビデオコーディング(VVC)に基づく。しかしながら、技法は、他のビデオコーデック仕様にも適用される。
【0084】
HEVCにおけるピクチャ区分方式が論じられる。
【0085】
HEVCは、4つの異なるピクチャ区分方式、すなわち、通常スライス、従属スライス、タイル、および波面並列処理(WPP)を含み、これらは、最大転送単位(MTU)サイズ適合、並列処理、および低減されたエンド・エンド間遅延のために適用され得る。
【0086】
通常スライスは、H.264/AVCにおけるものと類似である。各通常スライスは、それ自体のネットワーク・アブストラクション・レイヤ(NAL)ユニット内にカプセル化され、スライス境界を渡るピクチャ内予測(イントラサンプル予測、動き情報予測、コーディングモード予測)およびエントロピーコーディング依存関係が無効にされる。したがって、(ループフィルタリング動作に起因する相互依存関係が依然としてあり得るが、)通常スライスは、同じピクチャ内の他の通常スライスから独立に再構築されることが可能である。
【0087】
通常スライスは、実質的に同一の形式でH.264/AVCにおいて利用可能でもある並列化のために使用されることが可能である唯一のツールである。通常スライスに基づく並列化は、(ピクチャ内予測に起因して典型的にプロセッサ間またはコア間データ共有よりもずっと重い、予測的にコーディングされたピクチャを復号するときの動き補償のためのプロセッサ間またはコア間データ共有を除いて)プロセッサ間またはコア間通信をあまり多く採用しない。しかしながら、同じ理由で、通常スライスの使用は、スライスヘッダのビットコストに起因して、およびスライス境界を渡る予測の欠如に起因して、かなりのコーディングオーバーヘッドを招き得る。さらに、通常スライスのピクチャ内独立性に起因して、および各通常スライスがそれ自体のNALユニット内にカプセル化されるので、通常スライスは、また、(以下で言及される他のツールとは対照的に)ビットストリーム区分がMTUサイズ要件に適合するための重要なメカニズムとして働く。多くの場合、並列化の目標およびMTUサイズ適合の目標は、ピクチャ内のスライスレイアウトに矛盾した要求を出す。この状況の実現は、以下で言及される並列化ツールの開発に導いた。
【0088】
従属スライスは短いスライスヘッダを有し、いずれのピクチャ内予測も破壊することなく、ツリーブロック境界におけるビットストリームの区分を可能にする。基本的に、従属スライスは、複数のNALユニットへの通常スライスの断片化を提供し、これは、通常スライス全体の符号化が完了する前に通常スライスの一部が送出されることを可能にすることによって、低減されたエンド・エンド間遅延を提供する。
【0089】
WPPでは、ピクチャは、コーディングツリーブロック(CTB)の単一の行に区分される。エントロピー復号および予測は、他の区分内のCTBからのデータを使用することが可能にされる。CTB行の並列復号を通じて並列処理が可能であり、ここで、対象CTBが復号される前に対象CTBの上および右のCTBに関連するデータが利用可能であることを確実にするように、CTB行の復号の開始は2つのCTBだけ遅延される。(図式的に表現されるとき波面のように見える)このずらされた開始を使用して、ピクチャがCTB行を含むのと同数までのプロセッサ/コアを用いて並列化が可能である。ピクチャ内の隣接ツリーブロック行の間のピクチャ内予測が許容されるので、ピクチャ内予測を有効にするために要求されるプロセッサ間/コア間通信はかなりであり得る。WPP区分は、それが適用されないときと比較して追加のNALユニットの作成をもたらさず、したがって、WPPはMTUサイズ適合のためのツールではない。しかしながら、MTUサイズ適合が採用されるとき、あるコーディングオーバーヘッドを有して通常スライスがWPPとともに使用されることが可能である。
【0090】
タイルは、ピクチャをタイル列および行に区分する水平および垂直境界を定義する。ピクチャのタイルラスタ走査の順序で次のタイルの左上のCTBを復号する前に、CTBの走査順序は(タイルのCTBラスタ走査の順序で)タイル内で局所的であるように変更される。通常スライスと同様に、タイルは、ピクチャ内予測依存関係ならびにエントロピー復号依存関係を破壊する。しかしながら、それらは個々のNALユニット内に含まれることが必要でなく(この点についてWPPと同じ)、したがって、タイルはMTUサイズ適合のために使用されることが可能でない。各タイルは、1つのプロセッサ/コアによって処理されることが可能であり、隣接タイルを復号する処理ユニットの間でのピクチャ内予測のために要求されるプロセッサ間/コア間通信は、スライスが1つより多くのタイルに及ぶ場合に共有されるスライスヘッダを伝達すること、および再構築されるサンプルおよびメタデータのループフィルタリングに関連する共有に限定される。スライス内に1つより多くのタイルまたはWPPセグメントが含まれるとき、スライス内の最初のもの以外のタイルまたはWPPセグメントごとのエントリポイントバイトオフセットが、スライスヘッダ内でシグナリングされる。
【0091】
簡単さのために、4つの異なるピクチャ区分方式の適用への制約が、HEVCにおいて指定されている。所与のコーディングされたビデオシーケンスは、HEVCにおいて指定されるプロファイルの大部分についてタイルと波面の両方を含むことが可能でない。スライスおよびタイルごとに、次の条件、すなわち、1)スライス内のすべてのコーディングされたツリーブロックが同じタイルに属する、2)タイル内のすべてのコーディングされたツリーブロックが同じスライスに属する、のいずれかまたは両方が満たされるべきである。最後に、波面セグメントは、正確に1つのCTB行を含み、WPPが使用中であるとき、スライスがCTB行内で開始するならば、それは同じCTB行内で終了するべきである。
【0092】
VVCにおけるピクチャ区分方式が論じられる。
【0093】
上記で注記されたように、HEVCは、4つの異なるピクチャ区分方式、すなわち、スライス、タイル、およびブリック、および波面並列処理(WPP)を含み、これらは、最大転送単位(MTU)サイズ適合、並列処理、および低減されたエンド・エンド間遅延のために適用され得る。
【0094】
VVCにおけるタイルはHEVCにおけるタイルと類似する。タイルは、ピクチャをタイル列および行に区分する水平および垂直境界を定義する。VVCでは、タイルが水平にさらに分割されてブリックを形成することを可能にすることによって、タイルの概念がさらに改善される。さらに分割されないタイルもブリックと考えられる。ピクチャのブリックラスタ走査の順序で次のブリックの左上のCTBを復号する前に、CTBの走査順序は(ブリックのCTBラスタ走査の順序で)ブリック内で局所的であるように変更される。
【0095】
VVCにおけるスライスは、1つまたは複数のブリックを含む。各スライスは、それ自体のNALユニット内にカプセル化され、スライス境界を渡るピクチャ内予測(イントラサンプル予測、動き情報予測、コーディングモード予測)およびエントロピーコーディング依存関係が無効にされる。したがって、(ループフィルタリング動作に起因する相互依存関係を依然として有することがあるが、)通常スライスは、同じピクチャ内の他の通常スライスから独立に再構築されることが可能である。VVCは2種類のスライスを定義し、それらは長方形スライスおよびラスタ走査スライスである。長方形スライスは、ピクチャ内の長方形領域を占有する1つまたは複数のブリックを含む。ラスタ走査スライスは、ピクチャ内のブリックのラスタ走査順序にある1つまたは複数のブリックを含む。
【0096】
VVCにおけるWPPの特徴は、HEVC WPPが2つのCTUの遅延を有するのに対してVVC WPPが1つのCTUの遅延を有することを除いて、HEVCにおけるWPPの特徴と類似する。HEVC WPPについて、新しい復号スレッドは、前のCTU行がその最初の2つのCTUをすでに復号した後に、その割り当てられたCTU行内の最初のCTUを復号することを開始することができ、他方、VVC WPPについて、新しい復号スレッドは、前のCTU行がその最初のCTUをすでに復号した後に、その割り当てられたCTU行内の最初のCTUを復号することを開始することができる。
【0097】
長方形スライスのシグナリングが論じられる。
【0098】
長方形スライスの構造は、ピクチャ内の長方形スライスの数を記述することによってピクチャパラメータセット(picture parameter set(PPS))内でシグナリングされる。スライスごとに、ピクチャ内でのスライスの位置、およびそのサイズ(すなわち、ブリックの単位で)を記述するために、左上のブリックインデックスのセット、および右下のブリックのインデックスを導出するための差分値がシグナリングされる。ラスタ走査スライスについて、その情報は、ラスタ走査スライス内の最初のブリックのインデックス、およびスライス内のブリックの数を使用して、スライスヘッダ内でシグナリングされる。
【0099】
以下に表されたPPSシンタックステーブルの部分は、PPS内のタイル、ブリック、および長方形スライス情報のシグナリングを記述するシンタックス要素を含む。
【0100】
【表1】
【0101】
1に等しいsingle_brick_per_slice_flagは、このPPSを参照する各スライスが1つのブリックを含むことを指定する。0に等しいsingle_brick_per_slice_flagは、このPPSを参照するスライスが1つより多くのブリックを含み得ることを指定する。存在しないとき、single_brick_per_slice_flagの値は1に等しいと推論される。
【0102】
0に等しいrect_slice_flagは、各スライス内のブリックがラスタ走査順序にあり、PPS内でスライス情報がシグナリングされないことを指定する。1に等しいrect_slice_flagは、各スライス内のブリックがピクチャの長方形領域をカバーし、PPS内でスライス情報がシグナリングされることを指定する。single_brick_per_slice_flagが1に等しいとき、rect_slice_flagは1に等しいと推論される。
【0103】
num_slices_in_pic_minus1に1を加えたものは、PPSを参照する各ピクチャ内のスライスの数を指定する。num_slices_in_pic_minus1の値は、両端を含めて0からNumBricksInPic - 1の範囲内にあるものとする。存在せず、かつsingle_brick_per_slice_flagが1に等しいとき、num_slices_in_pic_minus1の値はNumBricksInPic - 1に等しいと推論される。
【0104】
top_left_brick_idx[ i ]は、第iのスライスの左上隅に位置するブリックのブリックインデックスを指定する。jに等しくない任意のiについて、top_left_brick_idx[ i ]の値はtop_left_brick_idx[ j ]の値に等しくないものとする。存在しないとき、top_left_brick_idx[ i ]の値はiに等しいと推論される。top_left_brick_idx[ i ]シンタックス要素の長さは、Ceil( Log2( NumBricksInPic )ビットである。
【0105】
bottom_right_brick_idx_delta[ i ]は、第iのスライスの右下隅に位置するブリックのブリックインデックスとtop_left_brick_idx[ i ]との間の差分を指定する。single_brick_per_slice_flagが1に等しいとき、bottom_right_brick_idx_delta[ i ]の値は0に等しいと推論される。bottom_right_brick_idx_delta[ i ]シンタックス要素の長さは、Ceil( Log2( NumBricksInPic - top_left_brick_idx[ i ] ) )ビットである。
【0106】
スライスが、いくつかの完全なタイル、または1つのタイルの完全なブリックの連続するシーケンスのみ、のいずれかを含むものとすることが、ビットストリーム準拠の要件である。
【0107】
第iのスライス内のブリックの数およびスライスへのブリックのマッピングを指定する変数NumBricksInSlice[ i ]およびBricksToSliceMap[ j ]が、次のように導出される。
【0108】
【数1】
【0109】
VVCにおけるWPPのシグナリングが論じられる。
【0110】
PPS、スライスヘッダ、およびスライスデータのシンタックステーブルおよびセマンティックにおいて、VVCにおけるWPPのためのシグナリング方法が説明される。
【0111】
以下のPPSシンタックステーブルの部分内に表されたように、entropy_coding_sync_enabled_flagと呼ばれるPPS内のフラグが、PPSを参照するピクチャのコーディングのためにWPPが使用されるかどうかを指定する。
【0112】
【表2】
【0113】
ピクチャのコーディングのためにWPPが有効にされているとき、ピクチャのすべてのスライスのスライスヘッダは、エントリポイント(すなわち、スライスペイロードデータの冒頭からのオフセット)についての情報を含む。エントリポイントは、WPP方法に従って処理するためにCTU行の各サブセットにアクセスするために使用される。この情報は、以下のスライスヘッダシンタックステーブルの部分内に表されたようにシグナリングされる。
【0114】
【表3】
【0115】
WPPが有効にされているとき、各CTU行は、スライスデータペイロード内のデータサブセットと呼ばれる。各データサブセットの終了において、データサブセットの終了を示すためにend_of_subset_one_bitと称されるビットがシグナリングされる。さらに、データサブセットのサイズがバイト(すなわち、8ビット)の倍数であることを確実にするために、バイト整列が実行されて各データサブセットの終了においてバイト整列ビットを追加する。end_of_subset_one_bitのシグナリング、および各サブセットの終了におけるバイト整列が、以下のスライスデータシンタックステーブル内に表される。
【0116】
【表4】
【0117】
WPPおよびブリックを用いる課題のいくつかが論じられる。
【0118】
最初に、スライスが複数のブリックを含み、かつスライスを含むピクチャのコーディングのためにWPPが有効にされているとき、スライス内の各ブリックの各CTU行は、データサブセットである。各データサブセットの終了において、CTU行の終了を示すためにシンタックス要素end_of_subset_one_bitがシグナリングされるか、またはブリックのCTUの終了を示すためにシンタックス要素end_of_brick_one_bitがシグナリングされるかのいずれかである。しかしながら、両方のシンタックス要素をシグナリングすることは必要でない。同様に、各データサブセットの終了において、バイト整列が存在するべきであるが、それを重複させる必要はない。
【0119】
タイル、ブリック、およびWPPが一緒に使用されるとき、スライスが1つまたは複数のタイルを含んでもよく、かつ各タイルが1つまたは複数のブリックを含んでもよいことを考えると、WPPの実装はより複雑であり得る。
【0120】
上記で説明された課題を解決するために、本開示は以下の態様を提供する(それらの各々は個々に適用されることが可能であり、それらのいくつかは組み合わせて適用されることが可能である)。
【0121】
第1の解決策は、ビデオビットストリームを復号するための方法を含む。一実施形態では、ビデオビットストリームは、複数のスライスを含む少なくとも1つのピクチャを含み、複数のスライスの各スライスは、複数のブリックを含み、複数のブリックの各ブリックは、複数のコーディングツリーブロック(CTU)を含む。方法は、現在のピクチャについて、かつ/または現在のスライスについて、波面並列処理が有効にされているかどうかを決定するためにパラメータセットを解析するステップを含む。方法は、ブリックおよび各ブリック内のCTUを取得するために現在のスライスのスライスデータを解析するステップを含む。方法は、ブリック内にある現在のCTUを解析するステップと、現在のCTUの位置を決定するステップとをさらに含む。加えて、方法は、次の条件のすべて、すなわち、現在のスライスのコーディングのためにWPPが有効にされており、現在のCTUが現在のブリックの最後のCTUでない、およびブリックの復号順序における次のCTUが現在のブリック内のCTU行の最初のCTUでない、が満たされるとき、CTU行の終了を示すためにビットをシグナリングし、バイト整列ビットをシグナリングするステップを含む。方法は、現在のCTUが現在のブリック内の最後のCTUであるとき、ブリックの終了を示すためにビットをシグナリングし、現在のブリックが現在のブリック内の最後のCTUであるが現在のスライスの最後のCTUではないとき、バイト整列ビットをシグナリングするステップを含む。
【0122】
第2の解決策は、ビデオビットストリームを符号化するための方法を含む。ビデオビットストリームは、複数のスライスを含む少なくとも1つのピクチャを含み、複数のスライスの各スライスは、複数のタイルおよびブリックを含み、各タイルは、1つまたは複数のブリックを含む。方法は、現在のピクチャを符号化するためにWPPが有効にされているとき、現在のピクチャの各スライスを1つのタイルのみを含むように、かつ各タイルを1つのブリックのみを含むように制約するステップを含む。
【0123】
代替の第2の解決策は、ビデオビットストリームを符号化するための方法を含む。ビデオビットストリームは、複数のスライスを含む少なくとも1つのピクチャを含み、複数のスライスの各スライスは、複数のタイルおよびブリックを含み、各タイルは、1つまたは複数のブリックを含む。方法は、現在のピクチャの符号化のためにWPPが有効にされているとき、現在のピクチャの各タイルを1つのブリックのみを含むように制約するステップを含む。すなわち、entropy_coding_sync_enabled_flagの値が1に等しいとき、brick_splitting_present_flagの値は0に等しいものとする。
【0124】
代替の第2の解決策は、ビデオビットストリームを符号化するための方法を含む。ビデオビットストリームは、複数のスライスを含む少なくとも1つのピクチャを含み、複数のスライスの各スライスは、複数のタイルおよびブリックを含み、各タイルは、1つまたは複数のブリックを含む。方法は、現在のピクチャの符号化のためにWPPが有効にされているとき、現在のピクチャの各スライスを1つのブリックのみを含むように制約するステップを含む。すなわち、entropy_coding_sync_enabled_flagの値が1に等しいとき、変数NumBricksInCurrSliceの値は1に等しいものとする。
【0125】
図4は、WPP450を実現するように構成されたビデオビットストリーム400を例示する。ここで使用されるビデオビットストリーム400は、コーディングされたビデオビットストリーム、ビットストリーム、またはそれらの変形とも呼ばれ得る。図4に表されたように、ビットストリーム400は、シーケンスパラメータセット(SPS)402、ピクチャパラメータセット(PPS)404、スライスヘッダ406、および画像データ408を含む。
【0126】
SPS402は、ピクチャのシーケンス(sequence of pictures(SOP))内のすべてのピクチャに共通であるデータを含む。対照的に、PPS404は、ピクチャ全体に共通であるデータを含む。スライスヘッダ406は、たとえば、スライスタイプ、参照ピクチャのうちのどれが使用されるかなどのような、現在のスライスについての情報を含む。SPS402およびPPS404は、総称的にパラメータセットと呼ばれ得る。SPS402、PPS404、およびスライスヘッダ406は、ネットワーク・アブストラクション・レイヤ(NAL)ユニットのタイプである。NALユニットは、続くべきデータ(たとえば、コーディングされたビデオデータ)のタイプの指示を含むシンタックス構造である。NALユニットは、ビデオコーディングレイヤ(VCL)および非VCL NALユニットに分類される。VCL NALユニットは、ビデオピクチャ内のサンプルの値を表現するデータを含み、非VCL NALユニットは、パラメータセット(多数のVCL NALユニットに適用されることが可能である重要なヘッダデータ)のような任意の関連付けられた追加情報、および補足エンハンスメント情報(タイミング情報、および復号されたビデオ信号の有用性を向上させ得るが、ビデオピクチャ内のサンプルの値を復号するために必要でない他の補足データ)を含む。ビットストリーム400が、実際の応用では他のパラメータおよび情報を含み得ることをこの技術分野の当業者は理解するであろう。
【0127】
図4の画像データ408は、符号化または復号されている画像またはビデオに関連付けられたデータを含む。画像データ408は、単に、ペイロード、またはビットストリーム400内に保持されているデータと呼ばれ得る。画像データ408は、ピクチャ410、ピクチャ412、およびピクチャ414のような1つまたは複数のピクチャに区分され得る。3つのピクチャ410~414が図4に表されているが、実際の応用では、より多くのまたはより少ないピクチャが存在してもよい。
【0128】
一実施形態では、ピクチャ410~414は、各々、スライス416、スライス418、およびスライス420のようなスライスに区分される。3つのスライス(たとえば、スライス416~420)が表されているが、実際の応用では、より多くのまたはより少ないスライスが存在してもよい。一実施形態では、スライス416~420は、各々、タイル422、タイル424、およびタイル426のようなタイルに区分される。3つのタイル(たとえば、タイル422~426)が表されているが、実際の応用では、より多くのまたはより少ないタイルが存在してもよい。一実施形態では、タイル422~426は、各々、CTB428およびCTB430のようなCTBに区分される。40個のCTB(たとえば、CTB428~430)が表されているが、実際の応用では、より多くのまたはより少ないCTBが存在してもよい。
【0129】
スライス(たとえば、スライス416~420)を符号化および/または復号するために、WPP450が採用され得る。したがって、WPP450は、エンコーダ(たとえば、ビデオエンコーダ20)またはデコーダ(たとえば、ビデオデコーダ30)によって採用され得る。
【0130】
一実施形態では、WPP450はタイル424に適用され、これはスライス416の区分であり、これはピクチャ410の区分である。タイルは、CTB428およびCTB430のような複数のCTBを含む。各CTB(たとえば、CTB428~430)は、コーディングツリーによってコーディングブロックに区分されることが可能である予め定義されたサイズのサンプルのグループである。複数のCTB428および複数のCTB430は、CTB行460、462、464、466、および468、およびCTB列470、472、474、476、478、480、482、および484に配置され得る。CTB行460~468は、タイル424の左の境界とタイル424の右の境界との間で水平に延びるCTB428~430のグループである。CTB列470~484は、タイル424の上の境界とタイル424の下の境界との間で垂直に延びるCTB428~430のグループである。一実施形態では、WPP450は、タイル(たとえば、424)の代わりにスライス(たとえば、スライス416)に適用される。すなわち、いくつかの実施形態ではタイルは任意選択である。
【0131】
WPP450は、CTB428~430をコーディングするために並行して動作する複数の計算スレッドを採用し得る。表された例では、CTB428(陰影を付けられた)はコーディングされたが、CTB430(陰影を付けられていない)はまだコーディングされていない。たとえば、第1のスレッドは、第1の時間においてCTB行460をコーディングし始めてよい。VVCでは、いったん第1のCTB行460内で1つのCTB428がコーディングされると、第2のスレッドがCTB行462をコーディングし始めてよい。いったん第2のCTB行462内で1つのCTB428がコーディングされると、第3のスレッドがCTB行464をコーディングし始めてよい。いったん第3のCTB行464内でCTB428がコーディングされると、第4のスレッドがCTB行466をコーディングし始めてよい。いったん第4のCTB行466内で1つのCTB428がコーディングされると、第5のスレッドが第5のCTB行468をコーディングし始めてよい。これは、図4に表されたようなパターンをもたらす。必要に応じて追加のスレッドが採用されてよい。すなわち、前の行内のCTBがコーディングされた後に新しいCTB行を始めるプロセスが繰り返されてよい。このメカニズムは、波面のような外観を有するパターンを生み出し、したがって、名称WPP450である。いくつかのビデオコーディングメカニズムは、現在のCTB430の上または左に位置するコーディングされたCTB428に基づいて現在のCTB430をコーディングする。VVCでは、コーディングされるべき任意の現在のCTB430に到達するとそのようなCTB428がすでにコーディングされたことを確実にするために、WPP450は、各スレッドを起動することの間に1つのCTB430コーディング遅延を残す。HEVCでは、コーディングされるべき任意の現在のCTB430に到達するとそのようなCTB428がすでにコーディングされたことを確実にするために、WPP450は、各スレッドを起動することの間に2つのCTB430コーディング遅延を残す。
【0132】
CTB428は、CTB行460~468内でビットストリーム(たとえば、ビットストリーム400)にコーディングされる。したがって、各CTB行460~468は、ビットストリーム400内のタイル424の独立にアドレス指定可能なサブセットであってよい。たとえば、各CTB行460~468は、エントリポイント486においてアドレス指定されることが可能である。エントリポイント486は、タイル424が符号化された後のタイル424の対応するサブセットについてのビデオデータの最初のビットを含む、ビットストリーム400内のビット位置である。WPP450が採用されるとき、エントリポイント486は、対応するCTB行460~468の最初のビットを含むビット位置である。したがって、エントリポイントの数(NumEntryPoints)488は、CTB行460~468についてのエントリポイント486の数である。
【0133】
一例として図4におけるタイル424を使用して、エンコーダは、WPPでは各CTB行460~468の終了においてCTB行終了ビットを追加する。CTB行終了ビットは、CTB行460~468の終了をデコーダにシグナリングする。エンコーダは、次いで、バイト整列を実行してパディングとしてバイト整列ビットを追加する。加えて、エンコーダは、また、WPPではCTB行468の終了においてタイル終了ビットを追加する。タイル終了ビットは、タイル424の終了をデコーダにシグナリングする。エンコーダは、次いで、バイト整列を実行してパディングとしてバイト整列ビットを追加する。CTB行468の終了がタイル424の終了でもあるので、WPPにおけるエンコーダは、CTB行468内の最後のCTB430がコーディングされた後にCTB行終了ビットおよびタイル終了ビットを符号化し、バイト整列を2回実行する。したがって、WPPではシグナリングおよびバイト整列の重複がある。
【0134】
WPPにおけるシグナリングおよびバイト整列の重複を防止する技法が、ここで開示される。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0135】
上記で説明されたWPPとは異なり、本開示は、CTB行468内の最後のCTB430がコーディングされた後に、タイルビットの終了をシグナリングするのみであり、一回のみバイト整列を実行する。そうする際に、シグナリングビットの数およびパディングとして使用されるビットの数が、WPPに対して低減される。
【0136】
図5は、ビデオデコーダ(たとえば、ビデオデコーダ30)によって実行されるコーディングされたビデオビットストリームを復号する方法500の一実施形態である。方法500は、ビデオエンコーダ(たとえば、ビデオエンコーダ20)から復号されたビットストリームが直接または間接に受信された後に実行され得る。方法500は、タイル(たとえば、タイル424)の最後のCTB行(たとえば、CTB行468)内の最後のCTB(たとえば、CTB430)のコーディングに続くシグナリングビットの数およびパディングとして使用されるビットの数を低減することによって、復号プロセスを改善する。したがって、実際の事項として、コーデックの性能が改善され、これはより良好なユーザ体験に導く。
【0137】
ブロック502において、ビデオデコーダは、コーディングされたビデオビットストリーム(たとえば、ビットストリーム400)を受信する。一実施形態では、コーディングされたビデオビットストリームは、ピクチャ(たとえば、ピクチャ410)を含む。一実施形態では、ピクチャは、1つまたは複数のタイル(たとえば、タイル422~426)を有する1つまたは複数のスライス(たとえば、スライス416~420)を含む。一実施形態では、各タイルは、複数のコーディングツリーブロック(たとえば、CTB428~430)を含む。
【0138】
ブロック504において、ビデオデコーダは、コーディングされたビデオビットストリーム内で、第1の値を有するタイル終了ビット、およびバイト整列ビットに遭遇する。一実施形態では、タイル終了ビットはend_of_tile_one_bitと称される。一実施形態では、第1の値は1である。一実施形態では、バイト整列ビットは、エンコーダ(たとえば、ビデオエンコーダ20)によって実行されたビット整列プロセスの結果である。一実施形態では、第1の値を有するタイル終了ビット、およびバイト整列ビットは、複数のCTB(たとえば、CTB428~430)からの現在のCTB(たとえば、CTB430)がタイル(たとえば、タイル424)内の最後のCTBであることを示す。
【0139】
ブロック506において、ビデオデコーダは、コーディングされたビデオビットストリーム内で、第1の値を有するCTB行終了ビット、およびバイト整列ビットに遭遇する。一実施形態では、CTB行終了ビットはend_of_subset_bitと称される。一実施形態では、第1の値は1である。一実施形態では、バイト整列ビットは、エンコーダ(たとえば、ビデオエンコーダ20)によって実行されたビット整列プロセスの結果である。一実施形態では、第1の値を有するCTB行終了ビット、およびバイト整列ビットは、WPPが有効にされていること、および複数のCTB(たとえば、CTB428~430)からの現在のCTB(たとえば、CTB430)がCTB行(たとえば、CTB行460~466)内の最後のCTBであるがタイル(たとえば、タイル424)内の最後のCTBではないことを示す。
【0140】
ブロック508において、ビデオデコーダは、第1の値を有するタイル終了ビット、第1の値を有するCTB行終了ビット、およびバイト整列ビットに基づいて、タイル内の複数のCTBを再構築する。一実施形態では、画像は、再構築された複数のCTBに基づいて生成される。一実施形態では、画像は、電子デバイス(たとえば、スマートフォン、タブレット、ラップトップ、パーソナルコンピュータなど)のユーザのために表示され得る。
【0141】
図6は、ビデオエンコーダ(たとえば、ビデオエンコーダ20)によって実行されるビデオビットストリームを符号化する方法600の一実施形態である。方法600は、(たとえば、ビデオからの)ピクチャがビデオビットストリームに符号化され、次いで、ビデオデコーダ(たとえば、ビデオデコーダ30)に向けて送信されるべきときに、実行され得る。方法600は、タイル(たとえば、タイル424)の最後のCTB行(たとえば、CTB行468)内の最後のCTB(たとえば、CTB430)のコーディングに続くシグナリングビットの数およびパディングとして使用されるビットの数を低減することによって、符号化プロセスを改善する。したがって、実際の事項として、コーデックの性能が改善され、これは、より良好なユーザ体験に導く。
【0142】
ブロック602において、ビデオエンコーダは、ピクチャ(たとえば、ピクチャ410)を1つまたは複数のスライス(たとえば、スライス416~420)に区分する。一実施形態では、各スライスは、1つまたは複数のタイル(たとえば、タイル422~426)を含む。一実施形態では、各タイルは、複数のコーディングツリーブロック(たとえば、CTB428~430)を含む。
【0143】
ブロック604において、ビデオエンコーダは、複数のCTBからの現在のCTBがタイル内の最後のCTBであるとき、第1の値を有するタイル終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化する。一実施形態では、タイル終了ビットはend_of_tile_one_bitと称される。一実施形態では、第1の値は1である。一実施形態では、バイト整列ビットは、エンコーダ(たとえば、ビデオエンコーダ20)によって実行されたビット整列プロセスの結果である。一実施形態では、第1の値を有するタイル終了ビット、およびバイト整列ビットは、複数のCTB(たとえば、CTB428~430)からの現在のCTB(たとえば、CTB430)がタイル(たとえば、タイル424)内の最後のCTBであることを示す。
【0144】
ブロック606において、ビデオエンコーダは、WPPが有効にされているとき、かつ現在のCTBがCTB行内の最後のCTBであるがタイル内の最後のCTBではないとき、第1の値を有するCTB行終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化する。一実施形態では、CTB行終了ビットはend_of_subset_bitと称される。一実施形態では、第1の値は1である。一実施形態では、バイト整列ビットは、エンコーダ(たとえば、ビデオエンコーダ20)によって実行されたビット整列プロセスの結果である。一実施形態では、第1の値を有するCTB行終了ビット、およびバイト整列ビットは、WPPが有効にされていること、および複数のCTB(たとえば、CTB428~430)からの現在のCTB(たとえば、CTB430)がCTB行(たとえば、CTB行460~466)内の最後のCTBであるがタイル(たとえば、タイル424)内の最後のCTBではないことを示す。
【0145】
ブロック608において、ビデオエンコーダは、ビデオデコーダに向けた送信のためにビデオビットストリームを記憶する。一実施形態では、ビデオエンコーダは、ビデオビットストリームをビデオデコーダに向けて送信する。
【0146】
ここで開示される実施形態を実現するために、以下のシンタックスおよびセマンティックが採用され得る。以下の説明は、最新のVVCドラフト仕様である基礎テキストに関連する。言い換えれば、差分のみが説明されるが、以下で言及されない基礎テキスト内のテキストは、そのまま適用される。基礎テキストに対しての追加されるテキストはボールドで表され、除去されるテキストはイタリック体で表される。
【0147】
図7は、開示の一実施形態によるビデオコーディングデバイス700(たとえば、ビデオエンコーダ20またはビデオデコーダ30)の概略図である。ビデオコーディングデバイス700は、ここで説明されるような開示される実施形態を実行するために適している。ビデオコーディングデバイス700は、データを受信するための入口ポート710および受信機ユニット(Rx)720、データを処理するためのプロセッサ、論理ユニット、または中央処理ユニット(CPU)730、データを送信するための送信機ユニット(Tx)740および出口ポート750、およびデータを記憶するためのメモリ760を含む。ビデオコーディングデバイス700は、また、光または電気信号の出口または入口のために、入口ポート710、受信機ユニット720、送信機ユニット740、および出口ポート750に結合された光電気(optical-to-electrical(OE))構成要素および電気光(electrical-to-optical(EO))構成要素を含み得る。
【0148】
プロセッサ730は、ハードウェアおよびソフトウェアによって実現される。プロセッサ730は、1つまたは複数のCPUチップ、コア(たとえば、マルチコアプロセッサとして)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、およびデジタル信号プロセッサ(DSP)として実現され得る。プロセッサ730は、入口ポート710、受信機ユニット720、送信機ユニット740、出口ポート750、およびメモリ760と通信する。プロセッサ730は、コーディングモジュール770を含む。コーディングモジュール770は、上記で説明された開示される実施形態を実行する。たとえば、コーディングモジュール770は、様々なコーデック機能を実行し、処理し、準備し、または提供する。したがって、コーディングモジュール770の包含は、ビデオコーディングデバイス700の機能へのかなり改善を提供し、異なる状態へのビデオコーディングデバイス700の変換に影響する。代替的に、コーディングモジュール770は、メモリ760に記憶され、プロセッサ730によって実行される命令として実現される。
【0149】
ビデオコーディングデバイス700はまた、ユーザへのおよびユーザからのデータを通信するための入力および/または出力(I/O)デバイス780を含み得る。I/Oデバイス780は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカーなどのような出力デバイスを含み得る。I/Oデバイス780は、また、キーボード、マウス、トラックボールなどのような入力デバイス、および/またはそのような出力デバイスと相互作用するための対応するインターフェースを含み得る。
【0150】
メモリ760は、1つまたは複数のディスク、テープドライブ、およびソリッドステートドライブを含み、プログラムを、そのようなプログラムが実行のために選択されるときに記憶するために、およびプログラム実行の間に読み取られる命令およびデータを記憶するために、オーバーフローデータ記憶デバイスとして使用され得る。メモリ760は、揮発性および/または不揮発性であってもよく、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(ternary content-addressable memory(TCAM))、および/またはスタティックランダムアクセスメモリ(SRAM)であってもよい。
【0151】
図8は、コーディングするための手段800の一実施形態の概略図である。一実施形態では、コーディングするための手段800は、ビデオコーディングデバイス802(たとえば、ビデオエンコーダ20またはビデオデコーダ30)内に実現される。ビデオコーディングデバイス802は受信手段801を含む。受信手段801は、符号化すべきピクチャ受信し、または復号すべきビットストリームを受信するように構成される。ビデオコーディングデバイス802は、受信手段801に結合された送信手段807を含む。送信手段807は、ビットストリームをデコーダへ送信し、または復号された画像を表示手段(たとえば、I/Oデバイス780のうちの1つ)へ送信するように構成される。
【0152】
ビデオコーディングデバイス802は記憶手段803を含む。記憶手段803は、受信手段801または送信手段807のうちの少なくとも1つに結合される。記憶手段803は、命令を記憶するように構成される。ビデオコーディングデバイス802は、また、処理手段805を含む。処理手段805は、記憶手段803に結合される。処理手段805は、ここで開示される方法を実行するために、記憶手段803に記憶された命令を実行するように構成される。
【0153】
ここに記載される例示の方法のステップが、説明された順序で実行されることを要求されるとは限らないことも理解されるべきであり、そのような方法のステップの順序は、単に例示であると理解されるべきである。同様に、そのような方法に追加のステップが含まれてもよく、あるステップは、本開示の様々な実施形態に一致する方法において省略され、または組み合わせられてもよい。
【0154】
本開示ではいくつかの実施形態が提供されたが、開示されるシステムおよび方法が、本開示の精神または範囲から逸脱することなく、多くの他の特定の形式で具現され得ることが理解されるべきである。本例は、例示的であり、限定的でないと考えられるべきであり、意図はここで与えられる詳細に限定されない。たとえば、様々な要素または構成要素が別のシステム内に組み合わせられ、または統合されてもよく、またはある特徴が省略され、または実現されなくてもよい。
【0155】
加えて、様々な実施形態において個別または別個として説明され、例示された技法、システム、サブシステム、および方法は、本開示の範囲から逸脱することなく、他のシステム、モジュール、技法、または方法と組み合わせられ、または統合されてもよい。結合され、または直接に結合され、または互いに通信するとして表され、または論じられた他の項目は、電気的に、機械的に、または別のやり方であるかにかかわらず、いくつかのインターフェース、デバイス、または中間構成要素を通じて、間接に結合され、または通信してもよい。変更、置換、および改変の他の例は、この技術分野の当業者によって確認可能であり、ここで開示される精神および範囲から逸脱することなく行われることが可能である。
【符号の説明】
【0156】
10 コーディングシステム
12 ソースデバイス、ビデオデバイス
14 宛先デバイス
16 コンピュータ可読媒体
18 ビデオソース
20 ビデオエンコーダ
22 出力インターフェース
28 入力インターフェース
30 ビデオデコーダ
32 ディスプレイデバイス
40 モード選択ユニット
42 動き推定ユニット
44 動き補償ユニット
46 イントラ予測ユニット
48 区分ユニット
50 加算器
52 変換処理ユニット
54 量子化ユニット
56 エントロピーコーディングユニット、エントロピー符号化ユニット
58 逆量子化ユニット
60 逆変換ユニット
62 加算器
64 参照フレームメモリ
70 エントロピー復号ユニット
72 動き補償ユニット
74 イントラ予測ユニット
76 逆量子化ユニット
78 逆変換ユニット
80 加算器
82 参照フレームメモリ
84 ユーザインターフェース(UI)
400 ビデオビットストリーム
402 シーケンスパラメータセット(SPS)
404 ピクチャパラメータセット(PPS)
406 スライスヘッダ
408 画像データ
410 ピクチャ
412 ピクチャ
414 ピクチャ
416 スライス
418 スライス
420 スライス
422 タイル
424 タイル
426 タイル
428 CTB
430 CTB
450 WPP
486 エントリポイント
700 ビデオコーディングデバイス
710 入口ポート
720 受信機ユニット(Rx)
730 プロセッサ、論理ユニット、中央処理ユニット(CPU)
740 送信機ユニット(Tx)
750 出口ポート
760 メモリ
770 コーディングモジュール
780 入力および/または出力(I/O)デバイス
800 コーディングするための手段
801 受信手段
802 ビデオコーディングデバイス
803 記憶手段
805 処理手段
807 送信手段
図1
図2
図3
図4
図5
図6
図7
図8
【手続補正書】
【提出日】2024-05-29
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【0001】
一般に、この開示は、ビデオコーディングにおける波面並列処理(wavefront parallel processing(WPP))をサポートする技法を説明する。より詳細には、この開示は、WPPにおけるビットおよびバイト整列の不必要な重複を防止する。
【背景技術】
【0002】
比較的短いビデオでさえ描写するために必要とされるビデオデータの量はかなりであることがあり、これは、限定された帯域幅容量を有する通信ネットワークを渡ってデータがストリーミングされ、または別のやり方で通信されるべきときに困難をもたらし得る。したがって、ビデオデータは、一般に、現代の電気通信ネットワークを渡って通信される前に圧縮される。メモリリソースが限定され得るので、ビデオが記憶デバイスにおいて記憶されるとき、ビデオのサイズも問題であり得る。ビデオ圧縮デバイスは、しばしば、ソースにおいてソフトウェアおよび/またはハードウェアを使用して、送信または記憶の前にビデオデータをコーディングし、それによって、デジタルビデオ画像を表現するために必要とされるデータの量を減らす。圧縮されたデータは、次いで、ビデオデータを復号するビデオ圧縮解除デバイスによって宛先において受信される。限定されたネットワークリソースおよびますます増加するより高いビデオ品質の需要を有して、画像品質における犠牲をほとんど乃至全く有さずに圧縮率を改善する、改善された圧縮および圧縮解除技法が望ましい。
【発明の概要】
【課題を解決するための手段】
【0003】
第1の態様は、ビデオデコーダによって実行される、コーディングされたビデオビットストリームを復号する方法に関する。方法は、ビデオデコーダによって、コーディングされたビデオビットストリームを受信するステップであって、コーディングされたビデオビットストリームは、ピクチャを含み、ピクチャは、1つまたは複数のタイルを有する1つまたは複数のスライスを含み、各タイルは、複数のコーディングツリーブロック(coding tree block(CTB))を含む、ステップと、ビデオデコーダによって、コーディングされたビデオビットストリーム内で、第1の値を有するタイル終了ビット、およびバイト整列ビットに遭遇するステップであって、第1の値を有するタイル終了ビット、およびバイト整列ビットは、複数のCTBからの現在のCTBがタイル内の最後のCTBであることを示す、ステップと、ビデオデコーダによって、コーディングされたビデオビットストリーム内で、第1の値を有するCTB行終了ビット、およびバイト整列ビットに遭遇するステップであって、第1の値を有するCTB行終了ビット、およびバイト整列ビットは、波形並列処理(waveform parallel processing(WPP))が有効にされていること、および複数のCTBからの現在のCTBがCTB行内の最後のCTBであるがタイル内の最後のCTBではないことを示す、ステップと、ビデオデコーダによって、第1の値を有するタイル終了ビット、第1の値を有するCTB行終了ビット、およびバイト整列ビットに基づいて、タイル内の複数のCTBを再構築するステップと、を含む。
【0004】
方法は、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0005】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、タイル終了ビットがend_of_tile_one_bitと称されることを提供する。
【0006】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、CTB行終了ビットがend_of_subset_bitと称されることを提供する。
【0007】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、WPPが、パラメータセット内に配置されたフラグによって有効にされることを提供する。
【0008】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、WPPが、entropy_coding_sync_enabled_flagとして称されるフラグによって有効にされることを提供する。
【0009】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、WPPが有効にされているとき、第1の値が1であることを提供する。
【0010】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、再構築された複数のCTBに基づいて生成された画像を表示することを提供する。
【0011】
第2の態様は、ビデオエンコーダによって実行される、ビデオビットストリームを符号化する方法に関する。方法は、ビデオエンコーダによって、ピクチャを1つまたは複数のスライスに区分するステップであって、各スライスは、1つまたは複数のタイルを含み、各タイルは、複数のコーディングツリーブロック(CTB)を含む、ステップと、複数のCTBからの現在のCTBがタイル内の最後のCTBであるとき、ビデオエンコーダによって、第1の値を有するタイル終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化するステップと、波形並列処理(WPP)が有効にされているとき、かつ現在のCTBがCTB行内の最後のCTBであるがタイル内の最後のCTBではないとき、ビデオエンコーダによって、第1の値を有するCTB行終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化するステップと、ビデオエンコーダによって、ビデオデコーダに向けた送信のためにビデオビットストリームを記憶するステップと、を含む。
【0012】
方法は、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0013】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、タイル終了ビットがend_of_tile_one_bitと称されることを提供する。
【0014】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、CTB行終了ビットがend_of_subset_bitと称されることを提供する。
【0015】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、WPPが、パラメータセット内に配置されたフラグによって有効にされることを提供する。
【0016】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、WPPが、entropy_coding_sync_enabled_flagとして称されるフラグによって有効にされることを提供する。
【0017】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、WPPが有効にされているとき、第1の値が1であることを提供する。
【0018】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、ビデオビットストリームをビデオデコーダに向けて送信することを提供する。
【0019】
第3の態様は、復号デバイスに関する。復号デバイスは、コーディングされたビデオビットストリームを受信するように構成された受信機と、受信機に結合されたメモリであって、命令を記憶するメモリと、メモリに結合されたプロセッサであって、命令を実行して、復号デバイスに、コーディングされたビデオビットストリームを受信することであって、コーディングされたビデオビットストリームは、ピクチャを含み、ピクチャは、1つまたは複数のタイルを有する1つまたは複数のスライスを含み、各タイルは、複数のコーディングツリーブロック(CTB)を含む、前記受信することと、コーディングされたビデオビットストリーム内で、第1の値を有するタイル終了ビット、およびバイト整列ビットに遭遇することであって、第1の値を有するタイル終了ビット、およびバイト整列ビットは、複数のCTBからの現在のCTBがタイル内の最後のCTBであることを示す、前記遭遇することと、コーディングされたビデオビットストリーム内で、第1の値を有するCTB行終了ビット、およびバイト整列ビットに遭遇することであって、第1の値を有するCTB行終了ビット、およびバイト整列ビットは、波形並列処理(WPP)が有効にされていること、および複数のCTBからの現在のCTBがCTB行内の最後のCTBであるがタイル内の最後のCTBではないことを示す、前記遭遇することと、第1の値を有するタイル終了ビット、第1の値を有するCTB行終了ビット、およびバイト整列ビットに基づいて、タイル内の複数のCTBを再構築することと、をさせるように構成されたプロセッサと、を含む。
【0020】
復号デバイスは、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0021】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、タイル終了ビットがend_of_tile_one_bitと称され、CTB行終了ビットはend_of_subset_bitと称され、第1の値は1であることを提供する。
【0022】
第4の態様は、符号化デバイスに関する。符号化デバイスは、命令を含むメモリと、メモリに結合されたプロセッサであって、命令を実行して、符号化デバイスに、ピクチャを1つまたは複数のスライスに区分することであって、各スライスは、1つまたは複数のタイルを含み、各タイルは、複数のコーディングツリーブロック(CTB)を含む、前記区分することと、複数のCTBからの現在のCTBがタイル内の最後のCTBであるとき、第1の値を有するタイル終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化することと、波形並列処理(WPP)が有効にされているとき、かつ現在のCTBがCTB行内の最後のCTBであるがタイル内の最後のCTBではないとき、第1の値を有するCTB行終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化することと、ビデオデコーダに向けた送信のためにビデオビットストリームを記憶することと、をさせるように構成されたプロセッサと、を含む。
【0023】
符号化デバイスは、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0024】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、符号化デバイスが、プロセッサに結合された送信機であって、ビデオビットストリームをビデオデコーダに向けて送信するように構成された送信機をさらに含むことを提供する。
【0025】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、タイル終了ビットがend_of_tile_one_bitと称され、CTB行終了ビットはend_of_subset_bitと称され、第1の値は1であることを提供する。
【0026】
第5の態様は、コーディング装置に関する。コーディング装置は、符号化すべきピクチャを受信し、または復号すべきビットストリームを受信するように構成された受信機と、受信機に結合された送信機であって、ビットストリームをデコーダへ送信し、または復号された画像をディスプレイへ送信するように構成された送信機と、受信機または送信機のうちの少なくとも1つに結合されたメモリであって、命令を記憶するように構成されたメモリと、メモリに結合されたプロセッサであって、メモリに記憶された命令を実行して、ここで開示される方法のうちのいずれかを実行するように構成されたプロセッサと、を含む。
【0027】
コーディング装置は、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0028】
任意選択で、先行する態様のいずれかにおいて、態様の別の実装は、画像を表示するように構成されたディスプレイを提供する。
【0029】
第6の態様は、システムに関する。システムは、エンコーダと、エンコーダと通信するデコーダとを含み、エンコーダまたはデコーダは、ここで開示される復号デバイス、符号化デバイス、またはコーディング装置を含む。
【0030】
システムは、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0031】
第7の態様は、コーディングするための手段に関する。コーディングするための手段は、符号化すべきピクチャを受信し、または復号すべきビットストリームを受信するように構成された受信手段と、受信手段に結合された送信手段であって、ビットストリームを復号手段へ送信し、または復号された画像を表示手段へ送信するように構成された送信手段と、受信手段または送信手段のうちの少なくとも1つに結合された記憶手段であって、命令を記憶するように構成された記憶手段と、記憶手段に結合された処理手段であって、記憶手段に記憶された命令を実行して、ここで開示される方法のうちのいずれかを実行するように構成された処理手段と、を含む。
【0032】
コーディングするための手段は、WPPにおけるシグナリングおよびバイト整列の重複を防止する技法を提供する。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、行/タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0033】
この開示のより完全な理解のために、添付図面および詳細な説明に関して用いられる、以下の簡単な説明への参照がここで行われ、同様の参照番号は同様の部分を表現する。
【図面の簡単な説明】
【0034】
図1】ビデオコーディング技法を利用し得る一例のコーディングシステムを例示するブロック図である。
図2】ビデオコーディング技法を実行し得る一例のビデオエンコーダを例示するブロック図である。
図3】ビデオコーディング技法を実行し得るビデオデコーダの一例を例示するブロック図である。
図4】波面並列処理を実現するように構成されたビデオビットストリームを例示する。
図5】コーディングされたビデオビットストリームを復号する方法の一実施形態である。
図6】コーディングされたビデオビットストリームを符号化する方法の一実施形態である。
図7】ビデオコーディングデバイスの概略図である。
図8】コーディングするための手段の一実施形態の概略図である。
【発明を実施するための形態】
【0035】
1つまたは複数の実施形態の例示的な実装が以下で提供されるが、現在知られているかまたは存在しているかにかかわらず、開示されるシステムおよび/または方法が任意の数の技法を使用して実現され得ることが最初に理解されるべきである。開示は、ここで例示され説明される例示の設計および実装を含む、以下で例示される例示的な実装、図面、および技法に決して限定されるべきでないが、等価物のそれらの完全な範囲とともに添付された請求項の範囲内で修正され得る。
【0036】
以下の用語は、ここで反対のコンテキストで使用されるのでなければ、以下のように定義される。特に、以下の定義は、追加の明確さを本開示に与えることが意図される。しかしながら、用語は、異なるコンテキストで異なって説明され得る。したがって、以下の定義は補足として考えられるべきであり、ここでそのような用語のために提供される説明の任意の他の定義を限定すると考えられるべきでない。
【0037】
ビットストリームは、エンコーダとデコーダの間での送信のために圧縮されるビデオデータを含むシーケンスビットである。エンコーダは、ビデオデータをビットストリームに圧縮するために、符号化プロセスを採用するように構成されるデバイスである。デコーダは、表示のためにビットストリームからビデオデータを再構築するために、復号プロセスを採用するように構成されるデバイスである。ピクチャは、ビデオシーケンス内の対応する瞬間におけるユーザへの完全なまたは部分的な表示のために意図される完全な画像である。参照ピクチャは、インター予測に従って参照によって他のピクチャをコーディングするときに使用されることが可能である参照サンプルを含むピクチャである。コーディングされたピクチャは、インター予測またはイントラ予測に従ってコーディングされているピクチャの表現であり、ビットストリーム内の単一のアクセスユニット内に含まれ、ピクチャのコーディングツリーユニット(coding tree unit(CTU))の完全なセットを含む。スライスは、整数個の完全なタイル、またはピクチャのタイル内の整数個の連続する完全なCTU行を含むピクチャの区分であり、ここで、スライスおよびすべての細分は、単一のネットワーク・アブストラクション・レイヤ(network abstraction layer(NAL))ユニット内に排他的に含まれる。参照スライスは、参照サンプルを含むか、またはインター予測に従って参照によって他のスライスをコーディングするときに使用される参照ピクチャのスライスである。スライスヘッダは、すべてのタイル、またはスライス内で表現されるタイル内のCTU行に関係するデータ要素を含むコーディングされたスライスの一部である。エントリポイントは、コーディングされたスライスの対応するサブセットについてのビデオデータの最初のビットを含むビットストリーム内のビット位置である。オフセットは、知られているビット位置とエントリポイントの間のビットでの距離である。サブセットは、タイル、CTU行、またはCTUのようなセットの細分である。CTUは、スライスのサブセットである。コーディングツリーユニット(CTU)は、コーディングツリーによって区分されることが可能である予め定義されたサイズのサンプルのグループである。CTUは、ルマ/クロマ成分ごとにコーディングツリーブロック(CTB)に分割される。CTBは、64×64、32×32、または16×16であることが可能であり、より大きいピクセルブロックサイズが、通常、コーディング効率を増加させる。CTBは、次いで、1つまたは複数のコーディングユニット(coding unit(CU))に分割され、そのためCTUサイズは最大コーディングユニットサイズでもある。
【0038】
CTU行は、左のスライス境界と右のスライス境界の間で水平に延びるCTUのグループである。CTB行は、左のスライス境界と右のスライス境界の間で水平に延びるCTBのグループである。CTU列は、上のスライス境界と下のスライス境界の間で垂直に延びるCTUのグループである。CTB列は、上のスライス境界と下のスライス境界の間で垂直に延びるCTBのグループである。CTB行終了ビットは、CTB行の終了におけるビットである。バイト整列ビットは、データサブセット、CTU行、CTB行、タイルなどの終了にパディングとして追加されるビットである。バイト整列ビットは、WPPによって導入される遅延を考慮し、または補償するために使用され得る。WPPは、異なるスレッドによって各行が並行して復号されることを可能にする遅延を用いて、スライスのCTU行をコーディングするメカニズムである。スライスアドレスは、スライスまたはそれらの下位部分の識別可能な位置である。
【0039】
以下の頭字語、すなわち、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)、コーディングされたビデオシーケンス(Coded Video Sequence(CVS))、共同ビデオエキスパートチーム(Joint Video Experts Team(JVET))、動き制約付きタイルセット(Motion-Constrained Tile Set(MCTS))、最大転送単位(Maximum Transfer Unit(MTU))、ネットワーク・アブストラクション・レイヤ(NAL)、ピクチャ順序カウント(Picture Order Count(POC))、ローバイトシーケンスペイロード(Raw Byte Sequence Payload(RBSP))、シーケンスパラメータセット(Sequence Parameter Set(SPS))、サブピクチャユニット(Sub-Picture Unit(SPU))、多用途ビデオコーディング(Versatile Video Coding(VVC))、およびワーキングドラフト(Working Draft(WD))がここで使用される。
【0040】
図1は、ここで説明されるようなビデオコーディング技法を利用し得る一例のコーディングシステム10を例示するブロック図である。図1に表されたように、コーディングシステム10は、宛先デバイス14によって後に復号されるべき符号化されたビデオデータを提供するソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを提供し得る。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイス、または同様のものを含む、広い範囲のデバイスのうちのいずれかを含み得る。いくつかの場合において、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
【0041】
宛先デバイス14は、コンピュータ可読媒体16を介して、復号されるべき符号化されたビデオデータを受信し得る。コンピュータ可読媒体16は、符号化されたビデオデータをソースデバイス12から宛先デバイス14に移動させることが可能な任意のタイプの媒体またはデバイスを含み得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が符号化されたビデオデータを宛先デバイス14へリアルタイムで直接に送信することを有効にするための通信媒体を含み得る。符号化されたビデオデータは、ワイヤレス通信プロトコルのような通信規格に従って変調され、宛先デバイス14へ送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理送信線のような任意のワイヤレスまたは有線の通信媒体を含み得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークのような、パケットに基づくネットワークの部分を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る任意の他の機器を含み得る。
【0042】
いくつかの例では、符号化されたデータは、出力インターフェース22から記憶デバイスに出力され得る。同様に、符号化されたデータは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、Blu-ray(登録商標)ディスク、デジタルビデオディスク(DVD)、コンパクトディスク・リードオンリメモリ(CD-ROM)、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の適したデジタル記憶媒体のような、各種の分散されるかまたは局所的にアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、記憶デバイスは、ソースデバイス12によって生成された符号化されたビデオを記憶し得るファイルサーバまたは別の中間記憶デバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して記憶デバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス14へ送信することが可能な任意のタイプのサーバであり得る。例示のファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準データ接続を通じて符号化されたビデオデータにアクセスし得る。これは、ファイルサーバにおいて記憶された符号化されたビデオデータにアクセスするために適した、ワイヤレスチャネル(たとえば、Wi-Fi接続)、有線接続(たとえば、デジタル加入者線(DSL)、ケーブルモデムなど)、またはその両方の組み合わせを含み得る。記憶デバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組み合わせであり得る。
【0043】
この開示の技法は、ワイヤレスの応用または設定に限定されるとは限らない。技法は、地上波テレビ放送、ケーブルテレビ送信、衛星テレビ送信、動的適応ストリーミングオーバーHTTP(dynamic adaptive streaming over HTTP(DASH))のようなインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の応用のような、各種のマルチメディア応用のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、コーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、および/またはビデオ電話のような応用をサポートするために、一方向または二方向のビデオ送信をサポートするように構成され得る。
【0044】
図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。この開示によれば、ソースデバイス12のビデオエンコーダ20および/または宛先デバイス14のビデオデコーダ30は、ビデオコーディングのための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または配置を含み得る。たとえば、ソースデバイス12は、外部カメラのような外部のビデオソースからビデオデータを受信し得る。同様に、宛先デバイス14は、統合されたディスプレイデバイスを含むのではなく、外部のディスプレイデバイスとインターフェースし得る。
【0045】
図1の例示されたコーディングシステム10は、単に一例である。ビデオコーディングのための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。この開示の技法は一般にビデオコーディングデバイスによって実行されるが、技法は、また、典型的に「コーデック」と呼ばれるビデオエンコーダ/デコーダによって実行され得る。その上、この開示の技法は、また、ビデオプリプロセッサによって実行され得る。ビデオエンコーダおよび/またはデコーダは、グラフィックス処理ユニット(GPU)または類似するデバイスであり得る。
【0046】
ソースデバイス12および宛先デバイス14は、単に、ソースデバイス12が宛先デバイス14への送信のためにコーディングされたビデオデータを生成する、そのようなコーディングデバイスの例である。いくつかの例では、ソースデバイス12および宛先デバイス14は、ソースおよび宛先デバイス12、14の各々がビデオ符号化および復号構成要素を含むように、実質上、対称的なやり方で動作し得る。したがって、コーディングシステム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオ電話のために、ビデオデバイス12、14の間での一方向または二方向のビデオ送信をサポートし得る。
【0047】
ソースデバイス12のビデオソース18は、ビデオカメラ、前にキャプチャされたビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースのような、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスに基づくデータ、またはライブビデオと、アーカイブされたビデオと、コンピュータ生成されたビデオとの組み合わせを生成してよい。
【0048】
いくつかの場合において、ビデオソース18がビデオカメラであるとき、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。しかしながら、上記で言及されたように、この開示において説明される技法は、一般にビデオコーディングに適用可能であってもよく、ワイヤレスおよび/または有線の応用に適用されてもよい。各々の場合において、キャプチャされ、プリキャプチャされ、またはコンピュータ生成されたビデオが、ビデオエンコーダ20によって符号化され得る。符号化されたビデオ情報は、次いで、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
【0049】
コンピュータ可読媒体16は、ワイヤレスブロードキャストもしくは有線ネットワーク送信のような一時的媒体、またはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu-ray(登録商標)ディスク、もしくは他のコンピュータ可読媒体のような、記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(表されていない)が、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化されたビデオデータを受信し、宛先デバイス14に符号化されたビデオデータを提供し得る。同様に、ディスクスタンピング設備のような媒体作成設備のコンピューティングデバイスが、ソースデバイス12から符号化されたビデオデータを受信し、符号化されたビデオデータを含むディスクを作り出し得る。したがって、様々な例では、コンピュータ可読媒体16は、様々な形式の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
【0050】
宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ブロックおよび他のコーディングされたユニット、たとえば、グループオブピクチャ(group of pictures(GOP))の特性および/または処理を記述するシンタックス要素を含む、ビデオデコーダ30によっても使用される、ビデオエンコーダ20によって定義されるシンタックス情報を含み得る。ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような、各種のディスプレイデバイスのいずれかを含み得る。
【0051】
ビデオエンコーダ20およびビデオデコーダ30は、現在開発中の高効率ビデオコーディング(High Efficiency Video Coding(HEVC))規格のようなビデオコーディング規格に従って動作してもよく、HEVCテストモデル(HEVC Test Model(HM))に準拠してもよい。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的に、ムービングピクチャエキスパートグループ(Moving Picture Expert Group(MPEG))-4パート10と呼ばれる、国際電気通信連合電気通信規格セクタ(International Telecommunications Union Telecommunication Standardization Sector(ITU-T))H.264規格、アドバンストビデオコーディング(Advanced Video Coding(AVC))、H.265/HEVC、またはそのような規格の拡張のような、他の独自のまたは業界の規格に従って動作し得る。しかしながら、この開示の技法は、どの特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例は、MPEG-2およびITU-T H.263を含む。図1に表されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、各々、オーディオエンコーダおよびデコーダと統合されてもよく、共通のデータストリームまたは別個のデータストリーム内のオーディオとビデオの両方の符号化を処理するための、適切なマルチプレクサ-デマルチプレクサ(MUX-DEMUX)ユニット、または他のハードウェアおよびソフトウェアを含んでもよい。適用可能ならば、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)のような他のプロトコルに準拠し得る。
【0052】
ビデオエンコーダ20およびビデオデコーダ30は、各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別のロジック、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせのような、各種の適したエンコーダ回路のいずれかとして実現され得る。技法が部分的にソフトウェアで実現されるとき、デバイスは、適した非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、この開示の技法を実行するために、1つまたは複数のプロセッサを使用してハードウェアで命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダ内に含められてもよく、それらのいずれかは、組み合わせられたエンコーダ/デコーダ(コーデック)の一部としてそれぞれのデバイス内に統合されてもよい。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話のようなワイヤレス通信デバイスを含み得る。
【0053】
図2は、ビデオコーディング技法を実行し得るビデオエンコーダ20の一例を例示するブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間的な冗長性を低減または除去するために、空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレームまたはピクチャ内のビデオにおける時間的な冗長性を低減または除去するために、時間予測に依拠する。イントラモード(Iモード)は、いくつかの空間に基づくコーディングモードのいずれかを指し得る。単方向(単予測としても知られる)予測(Pモード)または双予測(bi-prediction)(双予測(bi prediction)としても知られる)(Bモード)のようなインターモードは、いくつかの時間に基づくコーディングモードのいずれかを指し得る。
【0054】
図2に表わされたように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、モード選択ユニット40、参照フレームメモリ64、加算器50、変換処理ユニット52、量子化ユニット54、およびエントロピーコーディングユニット56を含む。次に、モード選択ユニット40は、動き補償ユニット44、動き推定ユニット42、イントラ予測(intra-prediction)(イントラ予測(intra prediction)としても知られる)ユニット46、および区分ユニット48を含む。ビデオブロック再構築のために、ビデオエンコーダ20は、また、逆量子化ユニット58、逆変換ユニット60、および加算器62を含む。ブロック境界をフィルタリングして再構築されたビデオからブロック状アーティファクトを除去するために、デブロッキングフィルタ(図2に表わされていない)も含まれ得る。望まれるならば、デブロッキングフィルタは、典型的に、加算器62の出力をフィルタリングすることになる。デブロッキングフィルタに加えて、(ループ内またはループ後の)追加のフィルタも使用され得る。そのようなフィルタは、簡潔さのために表されていないが、望まれるならば、(ループ内フィルタとして)加算器50の出力をフィルタリングし得る。
【0055】
符号化プロセスの間、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、1つまたは複数の参照フレーム内の1つまたは複数のブロックに対して受信されたビデオブロックのインター予測コーディングを実行して、時間予測を提供する。イントラ予測ユニット46は、代替的に、コーディングされるべきブロックと同じフレームまたはスライス内の1つまたは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを実行して、空間予測を提供し得る。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
【0056】
その上、区分ユニット48は、前のコーディングパスにおける、前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、区分ユニット48は、最初にフレームまたはスライスを最大コーディングユニット(largest coding unit(LCU))に区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいてLCUの各々をサブコーディングユニット(サブCU)に区分し得る。モード選択ユニット40は、サブCUへのLCUの区分を示す4分木データ構造をさらに作り出し得る。4分木のリーフノードCUは、1つまたは複数の予測ユニット(prediction unit(PU))および1つまたは複数の変換ユニット(transform unit(TU))を含み得る。
【0057】
本開示は、HEVCのコンテキストにおけるCU、PU、もしくはTU、または他の規格のコンテキストにおける類似するデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそれらのサブブロック)のいずれかを指すために、用語「ブロック」を使用する。CUは、コーディングノード、PU、およびコーディングノードに関連付けられたTUを含む。CUのサイズは、コーディングノードのサイズに対応し、形状が正方形である。CUのサイズは、8×8ピクセルから、最大64×64ピクセル以上を有するツリーブロックのサイズまでに及び得る。各CUは、1つまたは複数のPUおよび1つまたは複数のTUを含み得る。CUに関連付けられたシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。CUが、スキップまたはダイレクトモードで符号化されるのか、イントラ予測モードで符号化されるのか、あるいはインター予測(inter-prediction)(インター予測(inter prediction)としても知られる)モードで符号化されるのかの間で、区分モードは異なり得る。PUは、形状が非正方形であるように区分され得る。CUに関連付けられたシンタックスデータは、また、たとえば、4分木に従う1つまたは複数のTUへのCUの区分を記述し得る。TUは、形状が正方形または非正方形(たとえば、長方形)であることが可能である。
【0058】
モード選択ユニット40は、たとえば、誤差結果に基づいて、コーディングモード、イントラまたはインターのうちの1つを選択してもよく、残差ブロックデータを生成するために加算器50に、参照フレームとしての使用のために符号化されたブロックを再構築するために加算器62に、結果としてのイントラまたはインターコーディングされたブロックを提供する。モード選択ユニット40は、また、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報のようなシンタックス要素を、エントロピーコーディングユニット56に提供する。
【0059】
動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念的な目的のために別個に例示される。動き推定ユニット42によって実行される動き推定は、ビデオブロックについての動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム(または、他のコーディングされたユニット)内でコーディングされている現在のブロックに対する参照フレーム(または、他のコーディングされたユニット)内の予測ブロックに対して現在のビデオフレームまたはピクチャ内でのビデオブロックのPUの変位を示し得る。予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分の観点から、コーディングされるべきブロックに密接に適合することが見出されるブロックである。いくつかの例では、ビデオエンコーダ20は、参照フレームメモリ64に記憶された参照ピクチャの整数より下のピクセル位置についての値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に対して動き探索を実行し、分数ピクセル精度を有する動きベクトルを出力し得る。
【0060】
動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライス内のビデオブロックのPUのための動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択されることが可能であり、それらの各々が参照フレームメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56および動き補償ユニット44へ送信する。
【0061】
動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。再び、動き推定ユニット42および動き補償ユニット44は、いくつかの例では機能的に統合され得る。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、参照ピクチャリストのうちの1つの中で、動きベクトルが指し示す予測ブロックを位置特定し得る。加算器50は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算することによって残差ビデオブロックを形成して、以下で論じられるようにピクセル差分値を形成する。一般に、動き推定ユニット42は、ルマ成分に対して動き推定を実行し、動き補償ユニット44は、ルマ成分に基づいて計算された動きベクトルを、クロマ成分とルマ成分の両方のために使用する。モード選択ユニット40は、また、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30による使用のためのビデオブロックおよびビデオスライスに関連付けられたシンタックス要素を生成し得る。
【0062】
イントラ予測ユニット46は、上記で説明されたように、動き推定ユニット42および動き補償ユニット44によって実行されるインター予測への代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パスの間に、様々なイントラ予測モードを使用して現在のブロックを符号化してもよく、イントラ予測ユニット46(または、いくつかの例ではモード選択ユニット40)は、使用すべき適切なイントラ予測モードを、テストされたモードから選択してよい。
【0063】
たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードについてレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中から最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、一般に、符号化されたブロックと、符号化されたブロックを作り出すために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化されたブロックを作り出すために使用されるビットレート(すなわち、ビットの数)を決定する。イントラ予測ユニット46は、様々な符号化されたブロックについて、ひずみおよびレートから比率を計算して、ブロックについてどのイントラ予測モードが最良のレートひずみ値を示すかを決定し得る。
【0064】
加えて、イントラ予測ユニット46は、深度モデリングモード(depth modeling mode(DMM))を使用して深度マップの深度ブロックをコーディングするように構成され得る。モード選択ユニット40は、利用可能なDMMモードが、たとえば、レートひずみ最適化(rate-distortion optimization(RDO))を使用して、イントラ予測モードおよび他のDMMモードよりも良好なコーディング結果を作り出すかどうかを決定し得る。深度マップに対応するテクスチャ画像についてのデータが、参照フレームメモリ64に記憶され得る。動き推定ユニット42および動き補償ユニット44は、また、深度マップの深度ブロックをインター予測するように構成され得る。
【0065】
ブロックのためのイントラ予測モード(たとえば、イントラ予測モード、またはDMMモードのうちの1つ)を選択した後、イントラ予測ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピーコーディングユニット56に提供し得る。エントロピーコーディングユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)、様々なブロックについての符号化コンテキストの定義、およびコンテキストの各々について使用すべき、最も可能性のあるイントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示を含み得る構成データを、送信されるビットストリーム内に含め得る。
【0066】
ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって、残差ビデオブロックを形成する。加算器50は、この減算動作を実行する1つまたは複数の構成要素を表す。
【0067】
変換処理ユニット52は、離散コサイン変換(DCT)または概念的に類似する変換のような変換を残差ブロックに適用して、残差変換係数値を含むビデオブロックを作り出す。変換処理ユニット52は、DCTと概念的に類似する他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換、または他のタイプの変換も使用されることが可能である。
【0068】
変換処理ユニット52は、残差ブロックに変換を適用して、残差変換係数のブロックを作り出す。変換は、残差情報をピクセル値領域から周波数領域のような変換領域に変換し得る。変換処理ユニット52は、結果としての変換係数を量子化ユニット54に送信し得る。量子化ユニット54は、変換係数を量子化してビットレートをさらに低減する。量子化プロセスは、係数のいくつかまたは全てに関連付けられたビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
【0069】
量子化に続いて、エントロピーコーディングユニット56は、量子化された変換係数をエントロピーコーディングする。たとえば、エントロピーコーディングユニット56は、コンテキスト適応可変長コーディング(CAVLC)、コンテキスト適応バイナリ算術コーディング(CABAC)、シンタックスに基づくコンテキスト適応バイナリ算術コーディング(SBAC)、確率区間区分エントロピー(PIPE)コーディング、または別のエントロピーコーディング技法を実行し得る。コンテキストに基づくエントロピーコーディングの場合には、コンテキストは隣接ブロックに基づき得る。エントロピーコーディングユニット56によるエントロピーコーディングに続いて、符号化されたビットストリームが、別のデバイス(たとえば、ビデオデコーダ30)へ送信され、または後の送信または取り出しのためにアーカイブされ得る。
【0070】
逆量子化ユニット58および逆変換ユニット60は、それぞれ、逆量子化および逆変換を適用して、たとえば、参照ブロックとしての後の使用のために、ピクセル領域における残差ブロックを再構築する。動き補償ユニット44は、参照フレームメモリ64のフレームのうちの1つの予測ブロックに残差ブロックを加算することによって、参照ブロックを計算し得る。動き補償ユニット44は、また、再構築された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定における使用のための整数より下のピクセル値を計算し得る。加算器62は、動き補償ユニット44によって作り出された、動き補償された予測ブロックに、再構築された残差ブロックを加算して、参照フレームメモリ64における記憶のための再構築されたビデオブロックを作り出す。再構築されたビデオブロックは、後続のビデオフレーム内のブロックをインターコーディングするための参照ブロックとして、動き推定ユニット42および動き補償ユニット44によって使用され得る。
【0071】
図3は、ビデオコーディング技法を実行し得るビデオデコーダ30の一例を例示するブロック図である。図3の例では、ビデオデコーダ30は、エントロピー復号ユニット70、動き補償ユニット72、イントラ予測ユニット74、逆量子化ユニット76、逆変換ユニット78、参照フレームメモリ82、および加算器80を含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明された符号化パスと全般的に逆の復号パスを実行し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成し得るが、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。
【0072】
復号プロセスの間、ビデオデコーダ30は、符号化されたビデオスライスのビデオブロックおよび関連付けられたシンタックス要素を表現する符号化されたビデオビットストリームを、ビデオエンコーダ20から受信する。ビデオデコーダ30のエントロピー復号ユニット70は、ビットストリームをエントロピー復号して、量子化された係数、動きベクトルまたはイントラ予測モードインジケータ、および他のシンタックス要素を生成する。エントロピー復号ユニット70は、動きベクトルおよび他のシンタックス要素を動き補償ユニット72に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
【0073】
ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モード、および現在のフレームまたはピクチャの、前に復号されたブロックからのデータに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコーディングされた(たとえば、B、P、またはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを作り出す。予測ブロックは、参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つから作り出され得る。ビデオデコーダ30は、参照フレームメモリ82に記憶された参照ピクチャに基づいてデフォルトの構築技法を使用して、参照フレームリスト、リスト0およびリスト1を構築し得る。
【0074】
動き補償ユニット72は、動きベクトルおよび他のシンタックス要素を解析することによって、現在のビデオスライスのビデオブロックのための予測情報を決定し、予測情報を使用して、復号されている現在のビデオブロックのための予測ブロックを作り出す。たとえば、動き補償ユニット72は、受信されたシンタックス要素のうちのいくつかを使用して、ビデオスライスのビデオブロックをコーディングするために使用された予測モード(たとえば、イントラまたはインター予測)、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)、スライスのための参照ピクチャリストのうちの1つまたは複数についての構築情報、スライスのインター符号化されたビデオブロックごとの動きベクトル、スライスのインターコーディングされたビデオブロックごとのインター予測ステータス、および現在のビデオスライス内のビデオブロックを復号するための他の情報を決定する。
【0075】
動き補償ユニット72は、また、補間フィルタに基づいて補間を実行し得る。動き補償ユニット72は、ビデオブロックの符号化の間にビデオエンコーダ20によって使用されたような補間フィルタを使用して、参照ブロックの整数より下のピクセルについての補間値を計算し得る。この場合、動き補償ユニット72は、ビデオエンコーダ20によって使用された補間フィルタを、受信されたシンタックス要素から決定し、その補間フィルタを使用して予測ブロックを作り出し得る。
【0076】
深度マップに対応するテクスチャ画像についてのデータが、参照フレームメモリ82に記憶され得る。動き補償ユニット72は、また、深度マップの深度ブロックをインター予測するように構成され得る。
【0077】
一実施形態では、ビデオデコーダ30はユーザインターフェース(UI)84を含む。ユーザインターフェース84は、ビデオデコーダ30のユーザ(たとえば、ネットワーク管理者)から入力を受け取るように構成される。ユーザインターフェース84を通じて、ユーザは、ビデオデコーダ30における設定を管理または変更することができる。たとえば、ユーザは、ユーザの好みに従ってビデオデコーダ30の構成および/または動作を制御するために、パラメータ(たとえば、フラグ)についての値を入力し、または別のやり方で提供することができる。ユーザインターフェース84は、たとえば、ユーザがグラフィカルアイコン、ドロップダウンメニュー、チェックボックスなどを通じてビデオデコーダ30と対話することを可能にする、グラフィカルユーザインターフェース(GUI)であり得る。いくつかの場合において、ユーザインターフェース84は、キーボード、マウス、または他の周辺デバイスを介してユーザから情報を受け取り得る。一実施形態では、ユーザは、スマートフォン、タブレットデバイス、ビデオデコーダ30から離れて位置するパーソナルコンピュータなどを介して、ユーザインターフェース84にアクセスすることができる。ここで使用されるように、ユーザインターフェース84は、外部入力または外部手段と呼ばれ得る。
【0078】
上記を念頭に置いて、ビデオ圧縮技法は、空間(イントラピクチャ)予測および/または時間(インターピクチャ)予測を実行して、ビデオシーケンスに固有の冗長性を低減または除去する。ブロックに基づくビデオコーディングについて、ビデオスライス(すなわち、ビデオピクチャ、またはビデオピクチャの一部分)は、ツリーブロック、コーディングツリーブロック(CTB)、コーディングツリーユニット(CTU)、コーディングユニット(CU)、および/またはコーディングノードとも呼ばれ得るビデオブロックに区分され得る。ピクチャのイントラコーディングされた(I)スライス内のビデオブロックは、同じピクチャ内の隣接ブロック内の参照サンプルに関して空間予測を使用して符号化される。ピクチャのインターコーディングされた(PまたはB)スライス内のビデオブロックは、同じピクチャ内の隣接ブロック内の参照サンプルに関して空間予測、または他の参照ピクチャ内の参照サンプルに関して時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【0079】
空間または時間予測は、コーディングされるべきブロックのための予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表現する。インターコーディングされたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトル、およびコーディングされたブロックと予測ブロックとの間の差分を示す残差データに従って符号化される。イントラコーディングされたブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されてもよく、残差変換係数をもたらし、これは、次いで、量子化され得る。最初に2次元アレイに配置された量子化された変換係数は、変換係数の1次元ベクトルを作り出すために走査されてもよく、さらに多くの圧縮を達成するためにエントロピーコーディングが適用されてもよい。
【0080】
画像およびビデオ圧縮は、様々なコーディング規格に導く、急速な成長を経験してきた。そのようなビデオコーディング規格は、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)のような拡張を含む。
【0081】
ITU-TとISO/IECとの共同ビデオエキスパートチーム(JVET)によって開発されている多用途ビデオコーディング(VVC)と名付けられた新たなビデオコーディング規格もある。VVC規格はいくつかのワーキングドラフトを有するが、特にVVCの1つのワーキングドラフト(WD)、すなわち、B.Bross、J.Chen、およびS.Liu、「Versatile Video Coding (Draft 5)」、JVET-N1001-v3、第13回JVET会合、2019年3月27日(VVCドラフト5)が、ここで参照される。
【0082】
ここで開示される技法の説明は、開発中のビデオコーディング規格、ITU-TとISO/IECとの共同ビデオエキスパートチーム(JVET)による多用途ビデオコーディング(VVC)に基づく。しかしながら、技法は、他のビデオコーデック仕様にも適用される。
【0083】
HEVCにおけるピクチャ区分方式が論じられる。
【0084】
HEVCは、4つの異なるピクチャ区分方式、すなわち、通常スライス、従属スライス、タイル、および波面並列処理(WPP)を含み、これらは、最大転送単位(MTU)サイズ適合、並列処理、および低減されたエンド・エンド間遅延のために適用され得る。
【0085】
通常スライスは、H.264/AVCにおけるものと類似である。各通常スライスは、それ自体のネットワーク・アブストラクション・レイヤ(NAL)ユニット内にカプセル化され、スライス境界を渡るピクチャ内予測(イントラサンプル予測、動き情報予測、コーディングモード予測)およびエントロピーコーディング依存関係が無効にされる。したがって、(ループフィルタリング動作に起因する相互依存関係が依然としてあり得るが、)通常スライスは、同じピクチャ内の他の通常スライスから独立に再構築されることが可能である。
【0086】
通常スライスは、実質的に同一の形式でH.264/AVCにおいて利用可能でもある並列化のために使用されることが可能である唯一のツールである。通常スライスに基づく並列化は、(ピクチャ内予測に起因して典型的にプロセッサ間またはコア間データ共有よりもずっと重い、予測的にコーディングされたピクチャを復号するときの動き補償のためのプロセッサ間またはコア間データ共有を除いて)プロセッサ間またはコア間通信をあまり多く採用しない。しかしながら、同じ理由で、通常スライスの使用は、スライスヘッダのビットコストに起因して、およびスライス境界を渡る予測の欠如に起因して、かなりのコーディングオーバーヘッドを招き得る。さらに、通常スライスのピクチャ内独立性に起因して、および各通常スライスがそれ自体のNALユニット内にカプセル化されるので、通常スライスは、また、(以下で言及される他のツールとは対照的に)ビットストリーム区分がMTUサイズ要件に適合するための重要なメカニズムとして働く。多くの場合、並列化の目標およびMTUサイズ適合の目標は、ピクチャ内のスライスレイアウトに矛盾した要求を出す。この状況の実現は、以下で言及される並列化ツールの開発に導いた。
【0087】
従属スライスは短いスライスヘッダを有し、いずれのピクチャ内予測も破壊することなく、ツリーブロック境界におけるビットストリームの区分を可能にする。基本的に、従属スライスは、複数のNALユニットへの通常スライスの断片化を提供し、これは、通常スライス全体の符号化が完了する前に通常スライスの一部が送出されることを可能にすることによって、低減されたエンド・エンド間遅延を提供する。
【0088】
WPPでは、ピクチャは、コーディングツリーブロック(CTB)の単一の行に区分される。エントロピー復号および予測は、他の区分内のCTBからのデータを使用することが可能にされる。CTB行の並列復号を通じて並列処理が可能であり、ここで、対象CTBが復号される前に対象CTBの上および右のCTBに関連するデータが利用可能であることを確実にするように、CTB行の復号の開始は2つのCTBだけ遅延される。(図式的に表現されるとき波面のように見える)このずらされた開始を使用して、ピクチャがCTB行を含むのと同数までのプロセッサ/コアを用いて並列化が可能である。ピクチャ内の隣接ツリーブロック行の間のピクチャ内予測が許容されるので、ピクチャ内予測を有効にするために要求されるプロセッサ間/コア間通信はかなりであり得る。WPP区分は、それが適用されないときと比較して追加のNALユニットの作成をもたらさず、したがって、WPPはMTUサイズ適合のためのツールではない。しかしながら、MTUサイズ適合が採用されるとき、あるコーディングオーバーヘッドを有して通常スライスがWPPとともに使用されることが可能である。
【0089】
タイルは、ピクチャをタイル列および行に区分する水平および垂直境界を定義する。ピクチャのタイルラスタ走査の順序で次のタイルの左上のCTBを復号する前に、CTBの走査順序は(タイルのCTBラスタ走査の順序で)タイル内で局所的であるように変更される。通常スライスと同様に、タイルは、ピクチャ内予測依存関係ならびにエントロピー復号依存関係を破壊する。しかしながら、それらは個々のNALユニット内に含まれることが必要でなく(この点についてWPPと同じ)、したがって、タイルはMTUサイズ適合のために使用されることが可能でない。各タイルは、1つのプロセッサ/コアによって処理されることが可能であり、隣接タイルを復号する処理ユニットの間でのピクチャ内予測のために要求されるプロセッサ間/コア間通信は、スライスが1つより多くのタイルに及ぶ場合に共有されるスライスヘッダを伝達すること、および再構築されるサンプルおよびメタデータのループフィルタリングに関連する共有に限定される。スライス内に1つより多くのタイルまたはWPPセグメントが含まれるとき、スライス内の最初のもの以外のタイルまたはWPPセグメントごとのエントリポイントバイトオフセットが、スライスヘッダ内でシグナリングされる。
【0090】
簡単さのために、4つの異なるピクチャ区分方式の適用への制約が、HEVCにおいて指定されている。所与のコーディングされたビデオシーケンスは、HEVCにおいて指定されるプロファイルの大部分についてタイルと波面の両方を含むことが可能でない。スライスおよびタイルごとに、次の条件、すなわち、1)スライス内のすべてのコーディングされたツリーブロックが同じタイルに属する、2)タイル内のすべてのコーディングされたツリーブロックが同じスライスに属する、のいずれかまたは両方が満たされるべきである。最後に、波面セグメントは、正確に1つのCTB行を含み、WPPが使用中であるとき、スライスがCTB行内で開始するならば、それは同じCTB行内で終了するべきである。
【0091】
VVCにおけるピクチャ区分方式が論じられる。
【0092】
上記で注記されたように、HEVCは、4つの異なるピクチャ区分方式、すなわち、スライス、タイル、およびブリック、および波面並列処理(WPP)を含み、これらは、最大転送単位(MTU)サイズ適合、並列処理、および低減されたエンド・エンド間遅延のために適用され得る。
【0093】
VVCにおけるタイルはHEVCにおけるタイルと類似する。タイルは、ピクチャをタイル列および行に区分する水平および垂直境界を定義する。VVCでは、タイルが水平にさらに分割されてブリックを形成することを可能にすることによって、タイルの概念がさらに改善される。さらに分割されないタイルもブリックと考えられる。ピクチャのブリックラスタ走査の順序で次のブリックの左上のCTBを復号する前に、CTBの走査順序は(ブリックのCTBラスタ走査の順序で)ブリック内で局所的であるように変更される。
【0094】
VVCにおけるスライスは、1つまたは複数のブリックを含む。各スライスは、それ自体のNALユニット内にカプセル化され、スライス境界を渡るピクチャ内予測(イントラサンプル予測、動き情報予測、コーディングモード予測)およびエントロピーコーディング依存関係が無効にされる。したがって、(ループフィルタリング動作に起因する相互依存関係を依然として有することがあるが、)通常スライスは、同じピクチャ内の他の通常スライスから独立に再構築されることが可能である。VVCは2種類のスライスを定義し、それらは長方形スライスおよびラスタ走査スライスである。長方形スライスは、ピクチャ内の長方形領域を占有する1つまたは複数のブリックを含む。ラスタ走査スライスは、ピクチャ内のブリックのラスタ走査順序にある1つまたは複数のブリックを含む。
【0095】
VVCにおけるWPPの特徴は、HEVC WPPが2つのCTUの遅延を有するのに対してVVC WPPが1つのCTUの遅延を有することを除いて、HEVCにおけるWPPの特徴と類似する。HEVC WPPについて、新しい復号スレッドは、前のCTU行がその最初の2つのCTUをすでに復号した後に、その割り当てられたCTU行内の最初のCTUを復号することを開始することができ、他方、VVC WPPについて、新しい復号スレッドは、前のCTU行がその最初のCTUをすでに復号した後に、その割り当てられたCTU行内の最初のCTUを復号することを開始することができる。
【0096】
長方形スライスのシグナリングが論じられる。
【0097】
長方形スライスの構造は、ピクチャ内の長方形スライスの数を記述することによってピクチャパラメータセット(picture parameter set(PPS))内でシグナリングされる。スライスごとに、ピクチャ内でのスライスの位置、およびそのサイズ(すなわち、ブリックの単位で)を記述するために、左上のブリックインデックスのセット、および右下のブリックのインデックスを導出するための差分値がシグナリングされる。ラスタ走査スライスについて、その情報は、ラスタ走査スライス内の最初のブリックのインデックス、およびスライス内のブリックの数を使用して、スライスヘッダ内でシグナリングされる。
【0098】
以下に表されたPPSシンタックステーブルの部分は、PPS内のタイル、ブリック、および長方形スライス情報のシグナリングを記述するシンタックス要素を含む。
【0099】
【表1】
【0100】
1に等しいsingle_brick_per_slice_flagは、このPPSを参照する各スライスが1つのブリックを含むことを指定する。0に等しいsingle_brick_per_slice_flagは、このPPSを参照するスライスが1つより多くのブリックを含み得ることを指定する。存在しないとき、single_brick_per_slice_flagの値は1に等しいと推論される。
【0101】
0に等しいrect_slice_flagは、各スライス内のブリックがラスタ走査順序にあり、PPS内でスライス情報がシグナリングされないことを指定する。1に等しいrect_slice_flagは、各スライス内のブリックがピクチャの長方形領域をカバーし、PPS内でスライス情報がシグナリングされることを指定する。single_brick_per_slice_flagが1に等しいとき、rect_slice_flagは1に等しいと推論される。
【0102】
num_slices_in_pic_minus1に1を加えたものは、PPSを参照する各ピクチャ内のスライスの数を指定する。num_slices_in_pic_minus1の値は、両端を含めて0からNumBricksInPic - 1の範囲内にあるものとする。存在せず、かつsingle_brick_per_slice_flagが1に等しいとき、num_slices_in_pic_minus1の値はNumBricksInPic - 1に等しいと推論される。
【0103】
top_left_brick_idx[ i ]は、第iのスライスの左上隅に位置するブリックのブリックインデックスを指定する。jに等しくない任意のiについて、top_left_brick_idx[ i ]の値はtop_left_brick_idx[ j ]の値に等しくないものとする。存在しないとき、top_left_brick_idx[ i ]の値はiに等しいと推論される。top_left_brick_idx[ i ]シンタックス要素の長さは、Ceil( Log2( NumBricksInPic )ビットである。
【0104】
bottom_right_brick_idx_delta[ i ]は、第iのスライスの右下隅に位置するブリックのブリックインデックスとtop_left_brick_idx[ i ]との間の差分を指定する。single_brick_per_slice_flagが1に等しいとき、bottom_right_brick_idx_delta[ i ]の値は0に等しいと推論される。bottom_right_brick_idx_delta[ i ]シンタックス要素の長さは、Ceil( Log2( NumBricksInPic - top_left_brick_idx[ i ] ) )ビットである。
【0105】
スライスが、いくつかの完全なタイル、または1つのタイルの完全なブリックの連続するシーケンスのみ、のいずれかを含むものとすることが、ビットストリーム準拠の要件である。
【0106】
第iのスライス内のブリックの数およびスライスへのブリックのマッピングを指定する変数NumBricksInSlice[ i ]およびBricksToSliceMap[ j ]が、次のように導出される。
【0107】
【数1】
【0108】
VVCにおけるWPPのシグナリングが論じられる。
【0109】
PPS、スライスヘッダ、およびスライスデータのシンタックステーブルおよびセマンティックにおいて、VVCにおけるWPPのためのシグナリング方法が説明される。
【0110】
以下のPPSシンタックステーブルの部分内に表されたように、entropy_coding_sync_enabled_flagと呼ばれるPPS内のフラグが、PPSを参照するピクチャのコーディングのためにWPPが使用されるかどうかを指定する。
【0111】
【表2】
【0112】
ピクチャのコーディングのためにWPPが有効にされているとき、ピクチャのすべてのスライスのスライスヘッダは、エントリポイント(すなわち、スライスペイロードデータの冒頭からのオフセット)についての情報を含む。エントリポイントは、WPP方法に従って処理するためにCTU行の各サブセットにアクセスするために使用される。この情報は、以下のスライスヘッダシンタックステーブルの部分内に表されたようにシグナリングされる。
【0113】
【表3】
【0114】
WPPが有効にされているとき、各CTU行は、スライスデータペイロード内のデータサブセットと呼ばれる。各データサブセットの終了において、データサブセットの終了を示すためにend_of_subset_one_bitと称されるビットがシグナリングされる。さらに、データサブセットのサイズがバイト(すなわち、8ビット)の倍数であることを確実にするために、バイト整列が実行されて各データサブセットの終了においてバイト整列ビットを追加する。end_of_subset_one_bitのシグナリング、および各サブセットの終了におけるバイト整列が、以下のスライスデータシンタックステーブル内に表される。
【0115】
【表4】
【0116】
WPPおよびブリックを用いる課題のいくつかが論じられる。
【0117】
最初に、スライスが複数のブリックを含み、かつスライスを含むピクチャのコーディングのためにWPPが有効にされているとき、スライス内の各ブリックの各CTU行は、データサブセットである。各データサブセットの終了において、CTU行の終了を示すためにシンタックス要素end_of_subset_one_bitがシグナリングされるか、またはブリックのCTUの終了を示すためにシンタックス要素end_of_brick_one_bitがシグナリングされるかのいずれかである。しかしながら、両方のシンタックス要素をシグナリングすることは必要でない。同様に、各データサブセットの終了において、バイト整列が存在するべきであるが、それを重複させる必要はない。
【0118】
タイル、ブリック、およびWPPが一緒に使用されるとき、スライスが1つまたは複数のタイルを含んでもよく、かつ各タイルが1つまたは複数のブリックを含んでもよいことを考えると、WPPの実装はより複雑であり得る。
【0119】
上記で説明された課題を解決するために、本開示は以下の態様を提供する(それらの各々は個々に適用されることが可能であり、それらのいくつかは組み合わせて適用されることが可能である)。
【0120】
第1の解決策は、ビデオビットストリームを復号するための方法を含む。一実施形態では、ビデオビットストリームは、複数のスライスを含む少なくとも1つのピクチャを含み、複数のスライスの各スライスは、複数のブリックを含み、複数のブリックの各ブリックは、複数のコーディングツリーブロック(CTU)を含む。方法は、現在のピクチャについて、かつ/または現在のスライスについて、波面並列処理が有効にされているかどうかを決定するためにパラメータセットを解析するステップを含む。方法は、ブリックおよび各ブリック内のCTUを取得するために現在のスライスのスライスデータを解析するステップを含む。方法は、ブリック内にある現在のCTUを解析するステップと、現在のCTUの位置を決定するステップとをさらに含む。加えて、方法は、次の条件のすべて、すなわち、現在のスライスのコーディングのためにWPPが有効にされており、現在のCTUが現在のブリックの最後のCTUでない、およびブリックの復号順序における次のCTUが現在のブリック内のCTU行の最初のCTUでない、が満たされるとき、CTU行の終了を示すためにビットをシグナリングし、バイト整列ビットをシグナリングするステップを含む。方法は、現在のCTUが現在のブリック内の最後のCTUであるとき、ブリックの終了を示すためにビットをシグナリングし、現在のブリックが現在のブリック内の最後のCTUであるが現在のスライスの最後のCTUではないとき、バイト整列ビットをシグナリングするステップを含む。
【0121】
第2の解決策は、ビデオビットストリームを符号化するための方法を含む。ビデオビットストリームは、複数のスライスを含む少なくとも1つのピクチャを含み、複数のスライスの各スライスは、複数のタイルおよびブリックを含み、各タイルは、1つまたは複数のブリックを含む。方法は、現在のピクチャを符号化するためにWPPが有効にされているとき、現在のピクチャの各スライスを1つのタイルのみを含むように、かつ各タイルを1つのブリックのみを含むように制約するステップを含む。
【0122】
代替の第2の解決策は、ビデオビットストリームを符号化するための方法を含む。ビデオビットストリームは、複数のスライスを含む少なくとも1つのピクチャを含み、複数のスライスの各スライスは、複数のタイルおよびブリックを含み、各タイルは、1つまたは複数のブリックを含む。方法は、現在のピクチャの符号化のためにWPPが有効にされているとき、現在のピクチャの各タイルを1つのブリックのみを含むように制約するステップを含む。すなわち、entropy_coding_sync_enabled_flagの値が1に等しいとき、brick_splitting_present_flagの値は0に等しいものとする。
【0123】
代替の第2の解決策は、ビデオビットストリームを符号化するための方法を含む。ビデオビットストリームは、複数のスライスを含む少なくとも1つのピクチャを含み、複数のスライスの各スライスは、複数のタイルおよびブリックを含み、各タイルは、1つまたは複数のブリックを含む。方法は、現在のピクチャの符号化のためにWPPが有効にされているとき、現在のピクチャの各スライスを1つのブリックのみを含むように制約するステップを含む。すなわち、entropy_coding_sync_enabled_flagの値が1に等しいとき、変数NumBricksInCurrSliceの値は1に等しいものとする。
【0124】
図4は、WPP450を実現するように構成されたビデオビットストリーム400を例示する。ここで使用されるビデオビットストリーム400は、コーディングされたビデオビットストリーム、ビットストリーム、またはそれらの変形とも呼ばれ得る。図4に表されたように、ビットストリーム400は、シーケンスパラメータセット(SPS)402、ピクチャパラメータセット(PPS)404、スライスヘッダ406、および画像データ408を含む。
【0125】
SPS402は、ピクチャのシーケンス(sequence of pictures(SOP))内のすべてのピクチャに共通であるデータを含む。対照的に、PPS404は、ピクチャ全体に共通であるデータを含む。スライスヘッダ406は、たとえば、スライスタイプ、参照ピクチャのうちのどれが使用されるかなどのような、現在のスライスについての情報を含む。SPS402およびPPS404は、総称的にパラメータセットと呼ばれ得る。SPS402、PPS404、およびスライスヘッダ406は、ネットワーク・アブストラクション・レイヤ(NAL)ユニットのタイプである。NALユニットは、続くべきデータ(たとえば、コーディングされたビデオデータ)のタイプの指示を含むシンタックス構造である。NALユニットは、ビデオコーディングレイヤ(VCL)および非VCL NALユニットに分類される。VCL NALユニットは、ビデオピクチャ内のサンプルの値を表現するデータを含み、非VCL NALユニットは、パラメータセット(多数のVCL NALユニットに適用されることが可能である重要なヘッダデータ)のような任意の関連付けられた追加情報、および補足エンハンスメント情報(タイミング情報、および復号されたビデオ信号の有用性を向上させ得るが、ビデオピクチャ内のサンプルの値を復号するために必要でない他の補足データ)を含む。ビットストリーム400が、実際の応用では他のパラメータおよび情報を含み得ることをこの技術分野の当業者は理解するであろう。
【0126】
図4の画像データ408は、符号化または復号されている画像またはビデオに関連付けられたデータを含む。画像データ408は、単に、ペイロード、またはビットストリーム400内に保持されているデータと呼ばれ得る。画像データ408は、ピクチャ410、ピクチャ412、およびピクチャ414のような1つまたは複数のピクチャに区分され得る。3つのピクチャ410~414が図4に表されているが、実際の応用では、より多くのまたはより少ないピクチャが存在してもよい。
【0127】
一実施形態では、ピクチャ410~414は、各々、スライス416、スライス418、およびスライス420のようなスライスに区分される。3つのスライス(たとえば、スライス416~420)が表されているが、実際の応用では、より多くのまたはより少ないスライスが存在してもよい。一実施形態では、スライス416~420は、各々、タイル422、タイル424、およびタイル426のようなタイルに区分される。3つのタイル(たとえば、タイル422~426)が表されているが、実際の応用では、より多くのまたはより少ないタイルが存在してもよい。一実施形態では、タイル422~426は、各々、CTB428およびCTB430のようなCTBに区分される。40個のCTB(たとえば、CTB428~430)が表されているが、実際の応用では、より多くのまたはより少ないCTBが存在してもよい。
【0128】
スライス(たとえば、スライス416~420)を符号化および/または復号するために、WPP450が採用され得る。したがって、WPP450は、エンコーダ(たとえば、ビデオエンコーダ20)またはデコーダ(たとえば、ビデオデコーダ30)によって採用され得る。
【0129】
一実施形態では、WPP450はタイル424に適用され、これはスライス416の区分であり、これはピクチャ410の区分である。タイルは、CTB428およびCTB430のような複数のCTBを含む。各CTB(たとえば、CTB428~430)は、コーディングツリーによってコーディングブロックに区分されることが可能である予め定義されたサイズのサンプルのグループである。複数のCTB428および複数のCTB430は、CTB行460、462、464、466、および468、およびCTB列470、472、474、476、478、480、482、および484に配置され得る。CTB行460~468は、タイル424の左の境界とタイル424の右の境界との間で水平に延びるCTB428~430のグループである。CTB列470~484は、タイル424の上の境界とタイル424の下の境界との間で垂直に延びるCTB428~430のグループである。一実施形態では、WPP450は、タイル(たとえば、424)の代わりにスライス(たとえば、スライス416)に適用される。すなわち、いくつかの実施形態ではタイルは任意選択である。
【0130】
WPP450は、CTB428~430をコーディングするために並行して動作する複数の計算スレッドを採用し得る。表された例では、CTB428(陰影を付けられた)はコーディングされたが、CTB430(陰影を付けられていない)はまだコーディングされていない。たとえば、第1のスレッドは、第1の時間においてCTB行460をコーディングし始めてよい。VVCでは、いったん第1のCTB行460内で1つのCTB428がコーディングされると、第2のスレッドがCTB行462をコーディングし始めてよい。いったん第2のCTB行462内で1つのCTB428がコーディングされると、第3のスレッドがCTB行464をコーディングし始めてよい。いったん第3のCTB行464内でCTB428がコーディングされると、第4のスレッドがCTB行466をコーディングし始めてよい。いったん第4のCTB行466内で1つのCTB428がコーディングされると、第5のスレッドが第5のCTB行468をコーディングし始めてよい。これは、図4に表されたようなパターンをもたらす。必要に応じて追加のスレッドが採用されてよい。すなわち、前の行内のCTBがコーディングされた後に新しいCTB行を始めるプロセスが繰り返されてよい。このメカニズムは、波面のような外観を有するパターンを生み出し、したがって、名称WPP450である。いくつかのビデオコーディングメカニズムは、現在のCTB430の上または左に位置するコーディングされたCTB428に基づいて現在のCTB430をコーディングする。VVCでは、コーディングされるべき任意の現在のCTB430に到達するとそのようなCTB428がすでにコーディングされたことを確実にするために、WPP450は、各スレッドを起動することの間に1つのCTB430コーディング遅延を残す。HEVCでは、コーディングされるべき任意の現在のCTB430に到達するとそのようなCTB428がすでにコーディングされたことを確実にするために、WPP450は、各スレッドを起動することの間に2つのCTB430コーディング遅延を残す。
【0131】
CTB428は、CTB行460~468内でビットストリーム(たとえば、ビットストリーム400)にコーディングされる。したがって、各CTB行460~468は、ビットストリーム400内のタイル424の独立にアドレス指定可能なサブセットであってよい。たとえば、各CTB行460~468は、エントリポイント486においてアドレス指定されることが可能である。エントリポイント486は、タイル424が符号化された後のタイル424の対応するサブセットについてのビデオデータの最初のビットを含む、ビットストリーム400内のビット位置である。WPP450が採用されるとき、エントリポイント486は、対応するCTB行460~468の最初のビットを含むビット位置である。したがって、エントリポイントの数(NumEntryPoints)488は、CTB行460~468についてのエントリポイント486の数である。
【0132】
一例として図4におけるタイル424を使用して、エンコーダは、WPPでは各CTB行460~468の終了においてCTB行終了ビットを追加する。CTB行終了ビットは、CTB行460~468の終了をデコーダにシグナリングする。エンコーダは、次いで、バイト整列を実行してパディングとしてバイト整列ビットを追加する。加えて、エンコーダは、また、WPPではCTB行468の終了においてタイル終了ビットを追加する。タイル終了ビットは、タイル424の終了をデコーダにシグナリングする。エンコーダは、次いで、バイト整列を実行してパディングとしてバイト整列ビットを追加する。CTB行468の終了がタイル424の終了でもあるので、WPPにおけるエンコーダは、CTB行468内の最後のCTB430がコーディングされた後にCTB行終了ビットおよびタイル終了ビットを符号化し、バイト整列を2回実行する。したがって、WPPではシグナリングおよびバイト整列の重複がある。
【0133】
WPPにおけるシグナリングおよびバイト整列の重複を防止する技法が、ここで開示される。WPPにおけるシグナリングおよびバイト整列の重複を除去することによって、タイルの終了をシグナリングするために使用されるビットの数、およびパディングとして使用されるビットの数が低減される。WPPのために必要とされるビットの数を低減することによって、ビデオコーディングにおけるコーダ/デコーダ(「コーデック」としても知られる)が、現在のコーデックに対して改善される。実際の事項として、改善されたビデオコーディングプロセスは、ビデオが送信され、受信され、かつ/または見られるとき、より良好なユーザ体験をユーザに与える。
【0134】
上記で説明されたWPPとは異なり、本開示は、CTB行468内の最後のCTB430がコーディングされた後に、タイルビットの終了をシグナリングするのみであり、一回のみバイト整列を実行する。そうする際に、シグナリングビットの数およびパディングとして使用されるビットの数が、WPPに対して低減される。
【0135】
図5は、ビデオデコーダ(たとえば、ビデオデコーダ30)によって実行されるコーディングされたビデオビットストリームを復号する方法500の一実施形態である。方法500は、ビデオエンコーダ(たとえば、ビデオエンコーダ20)から復号されたビットストリームが直接または間接に受信された後に実行され得る。方法500は、タイル(たとえば、タイル424)の最後のCTB行(たとえば、CTB行468)内の最後のCTB(たとえば、CTB430)のコーディングに続くシグナリングビットの数およびパディングとして使用されるビットの数を低減することによって、復号プロセスを改善する。したがって、実際の事項として、コーデックの性能が改善され、これはより良好なユーザ体験に導く。
【0136】
ブロック502において、ビデオデコーダは、コーディングされたビデオビットストリーム(たとえば、ビットストリーム400)を受信する。一実施形態では、コーディングされたビデオビットストリームは、ピクチャ(たとえば、ピクチャ410)を含む。一実施形態では、ピクチャは、1つまたは複数のタイル(たとえば、タイル422~426)を有する1つまたは複数のスライス(たとえば、スライス416~420)を含む。一実施形態では、各タイルは、複数のコーディングツリーブロック(たとえば、CTB428~430)を含む。
【0137】
ブロック504において、ビデオデコーダは、コーディングされたビデオビットストリーム内で、第1の値を有するタイル終了ビット、およびバイト整列ビットに遭遇する。一実施形態では、タイル終了ビットはend_of_tile_one_bitと称される。一実施形態では、第1の値は1である。一実施形態では、バイト整列ビットは、エンコーダ(たとえば、ビデオエンコーダ20)によって実行されたビット整列プロセスの結果である。一実施形態では、第1の値を有するタイル終了ビット、およびバイト整列ビットは、複数のCTB(たとえば、CTB428~430)からの現在のCTB(たとえば、CTB430)がタイル(たとえば、タイル424)内の最後のCTBであることを示す。
【0138】
ブロック506において、ビデオデコーダは、コーディングされたビデオビットストリーム内で、第1の値を有するCTB行終了ビット、およびバイト整列ビットに遭遇する。一実施形態では、CTB行終了ビットはend_of_subset_bitと称される。一実施形態では、第1の値は1である。一実施形態では、バイト整列ビットは、エンコーダ(たとえば、ビデオエンコーダ20)によって実行されたビット整列プロセスの結果である。一実施形態では、第1の値を有するCTB行終了ビット、およびバイト整列ビットは、WPPが有効にされていること、および複数のCTB(たとえば、CTB428~430)からの現在のCTB(たとえば、CTB430)がCTB行(たとえば、CTB行460~466)内の最後のCTBであるがタイル(たとえば、タイル424)内の最後のCTBではないことを示す。
【0139】
ブロック508において、ビデオデコーダは、第1の値を有するタイル終了ビット、第1の値を有するCTB行終了ビット、およびバイト整列ビットに基づいて、タイル内の複数のCTBを再構築する。一実施形態では、画像は、再構築された複数のCTBに基づいて生成される。一実施形態では、画像は、電子デバイス(たとえば、スマートフォン、タブレット、ラップトップ、パーソナルコンピュータなど)のユーザのために表示され得る。
【0140】
図6は、ビデオエンコーダ(たとえば、ビデオエンコーダ20)によって実行されるビデオビットストリームを符号化する方法600の一実施形態である。方法600は、(たとえば、ビデオからの)ピクチャがビデオビットストリームに符号化され、次いで、ビデオデコーダ(たとえば、ビデオデコーダ30)に向けて送信されるべきときに、実行され得る。方法600は、タイル(たとえば、タイル424)の最後のCTB行(たとえば、CTB行468)内の最後のCTB(たとえば、CTB430)のコーディングに続くシグナリングビットの数およびパディングとして使用されるビットの数を低減することによって、符号化プロセスを改善する。したがって、実際の事項として、コーデックの性能が改善され、これは、より良好なユーザ体験に導く。
【0141】
ブロック602において、ビデオエンコーダは、ピクチャ(たとえば、ピクチャ410)を1つまたは複数のスライス(たとえば、スライス416~420)に区分する。一実施形態では、各スライスは、1つまたは複数のタイル(たとえば、タイル422~426)を含む。一実施形態では、各タイルは、複数のコーディングツリーブロック(たとえば、CTB428~430)を含む。
【0142】
ブロック604において、ビデオエンコーダは、複数のCTBからの現在のCTBがタイル内の最後のCTBであるとき、第1の値を有するタイル終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化する。一実施形態では、タイル終了ビットはend_of_tile_one_bitと称される。一実施形態では、第1の値は1である。一実施形態では、バイト整列ビットは、エンコーダ(たとえば、ビデオエンコーダ20)によって実行されたビット整列プロセスの結果である。一実施形態では、第1の値を有するタイル終了ビット、およびバイト整列ビットは、複数のCTB(たとえば、CTB428~430)からの現在のCTB(たとえば、CTB430)がタイル(たとえば、タイル424)内の最後のCTBであることを示す。
【0143】
ブロック606において、ビデオエンコーダは、WPPが有効にされているとき、かつ現在のCTBがCTB行内の最後のCTBであるがタイル内の最後のCTBではないとき、第1の値を有するCTB行終了ビット、およびバイト整列ビットを、ビデオビットストリームに符号化する。一実施形態では、CTB行終了ビットはend_of_subset_bitと称される。一実施形態では、第1の値は1である。一実施形態では、バイト整列ビットは、エンコーダ(たとえば、ビデオエンコーダ20)によって実行されたビット整列プロセスの結果である。一実施形態では、第1の値を有するCTB行終了ビット、およびバイト整列ビットは、WPPが有効にされていること、および複数のCTB(たとえば、CTB428~430)からの現在のCTB(たとえば、CTB430)がCTB行(たとえば、CTB行460~466)内の最後のCTBであるがタイル(たとえば、タイル424)内の最後のCTBではないことを示す。
【0144】
ブロック608において、ビデオエンコーダは、ビデオデコーダに向けた送信のためにビデオビットストリームを記憶する。一実施形態では、ビデオエンコーダは、ビデオビットストリームをビデオデコーダに向けて送信する。
【0145】
ここで開示される実施形態を実現するために、以下のシンタックスおよびセマンティックが採用され得る。以下の説明は、最新のVVCドラフト仕様である基礎テキストに関連する。言い換えれば、差分のみが説明されるが、以下で言及されない基礎テキスト内のテキストは、そのまま適用される。基礎テキストに対しての追加されるテキストはボールドで表され、除去されるテキストはイタリック体で表される。
【0146】
図7は、開示の一実施形態によるビデオコーディングデバイス700(たとえば、ビデオエンコーダ20またはビデオデコーダ30)の概略図である。ビデオコーディングデバイス700は、ここで説明されるような開示される実施形態を実行するために適している。ビデオコーディングデバイス700は、データを受信するための入口ポート710および受信機ユニット(Rx)720、データを処理するためのプロセッサ、論理ユニット、または中央処理ユニット(CPU)730、データを送信するための送信機ユニット(Tx)740および出口ポート750、およびデータを記憶するためのメモリ760を含む。ビデオコーディングデバイス700は、また、光または電気信号の出口または入口のために、入口ポート710、受信機ユニット720、送信機ユニット740、および出口ポート750に結合された光電気(optical-to-electrical(OE))構成要素および電気光(electrical-to-optical(EO))構成要素を含み得る。
【0147】
プロセッサ730は、ハードウェアおよびソフトウェアによって実現される。プロセッサ730は、1つまたは複数のCPUチップ、コア(たとえば、マルチコアプロセッサとして)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、およびデジタル信号プロセッサ(DSP)として実現され得る。プロセッサ730は、入口ポート710、受信機ユニット720、送信機ユニット740、出口ポート750、およびメモリ760と通信する。プロセッサ730は、コーディングモジュール770を含む。コーディングモジュール770は、上記で説明された開示される実施形態を実行する。たとえば、コーディングモジュール770は、様々なコーデック機能を実行し、処理し、準備し、または提供する。したがって、コーディングモジュール770の包含は、ビデオコーディングデバイス700の機能へのかなり改善を提供し、異なる状態へのビデオコーディングデバイス700の変換に影響する。代替的に、コーディングモジュール770は、メモリ760に記憶され、プロセッサ730によって実行される命令として実現される。
【0148】
ビデオコーディングデバイス700はまた、ユーザへのおよびユーザからのデータを通信するための入力および/または出力(I/O)デバイス780を含み得る。I/Oデバイス780は、ビデオデータを表示するためのディスプレイ、オーディオデータを出力するためのスピーカーなどのような出力デバイスを含み得る。I/Oデバイス780は、また、キーボード、マウス、トラックボールなどのような入力デバイス、および/またはそのような出力デバイスと相互作用するための対応するインターフェースを含み得る。
【0149】
メモリ760は、1つまたは複数のディスク、テープドライブ、およびソリッドステートドライブを含み、プログラムを、そのようなプログラムが実行のために選択されるときに記憶するために、およびプログラム実行の間に読み取られる命令およびデータを記憶するために、オーバーフローデータ記憶デバイスとして使用され得る。メモリ760は、揮発性および/または不揮発性であってもよく、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(ternary content-addressable memory(TCAM))、および/またはスタティックランダムアクセスメモリ(SRAM)であってもよい。
【0150】
図8は、コーディングするための手段800の一実施形態の概略図である。一実施形態では、コーディングするための手段800は、ビデオコーディングデバイス802(たとえば、ビデオエンコーダ20またはビデオデコーダ30)内に実現される。ビデオコーディングデバイス802は受信手段801を含む。受信手段801は、符号化すべきピクチャ受信し、または復号すべきビットストリームを受信するように構成される。ビデオコーディングデバイス802は、受信手段801に結合された送信手段807を含む。送信手段807は、ビットストリームをデコーダへ送信し、または復号された画像を表示手段(たとえば、I/Oデバイス780のうちの1つ)へ送信するように構成される。
【0151】
ビデオコーディングデバイス802は記憶手段803を含む。記憶手段803は、受信手段801または送信手段807のうちの少なくとも1つに結合される。記憶手段803は、命令を記憶するように構成される。ビデオコーディングデバイス802は、また、処理手段805を含む。処理手段805は、記憶手段803に結合される。処理手段805は、ここで開示される方法を実行するために、記憶手段803に記憶された命令を実行するように構成される。
【0152】
ここに記載される例示の方法のステップが、説明された順序で実行されることを要求されるとは限らないことも理解されるべきであり、そのような方法のステップの順序は、単に例示であると理解されるべきである。同様に、そのような方法に追加のステップが含まれてもよく、あるステップは、本開示の様々な実施形態に一致する方法において省略され、または組み合わせられてもよい。
【0153】
本開示ではいくつかの実施形態が提供されたが、開示されるシステムおよび方法が、本開示の精神または範囲から逸脱することなく、多くの他の特定の形式で具現され得ることが理解されるべきである。本例は、例示的であり、限定的でないと考えられるべきであり、意図はここで与えられる詳細に限定されない。たとえば、様々な要素または構成要素が別のシステム内に組み合わせられ、または統合されてもよく、またはある特徴が省略され、または実現されなくてもよい。
【0154】
加えて、様々な実施形態において個別または別個として説明され、例示された技法、システム、サブシステム、および方法は、本開示の範囲から逸脱することなく、他のシステム、モジュール、技法、または方法と組み合わせられ、または統合されてもよい。結合され、または直接に結合され、または互いに通信するとして表され、または論じられた他の項目は、電気的に、機械的に、または別のやり方であるかにかかわらず、いくつかのインターフェース、デバイス、または中間構成要素を通じて、間接に結合され、または通信してもよい。変更、置換、および改変の他の例は、この技術分野の当業者によって確認可能であり、ここで開示される精神および範囲から逸脱することなく行われることが可能である。
【符号の説明】
【0155】
10 コーディングシステム
12 ソースデバイス、ビデオデバイス
14 宛先デバイス
16 コンピュータ可読媒体
18 ビデオソース
20 ビデオエンコーダ
22 出力インターフェース
28 入力インターフェース
30 ビデオデコーダ
32 ディスプレイデバイス
40 モード選択ユニット
42 動き推定ユニット
44 動き補償ユニット
46 イントラ予測ユニット
48 区分ユニット
50 加算器
52 変換処理ユニット
54 量子化ユニット
56 エントロピーコーディングユニット、エントロピー符号化ユニット
58 逆量子化ユニット
60 逆変換ユニット
62 加算器
64 参照フレームメモリ
70 エントロピー復号ユニット
72 動き補償ユニット
74 イントラ予測ユニット
76 逆量子化ユニット
78 逆変換ユニット
80 加算器
82 参照フレームメモリ
84 ユーザインターフェース(UI)
400 ビデオビットストリーム
402 シーケンスパラメータセット(SPS)
404 ピクチャパラメータセット(PPS)
406 スライスヘッダ
408 画像データ
410 ピクチャ
412 ピクチャ
414 ピクチャ
416 スライス
418 スライス
420 スライス
422 タイル
424 タイル
426 タイル
428 CTB
430 CTB
450 WPP
486 エントリポイント
700 ビデオコーディングデバイス
710 入口ポート
720 受信機ユニット(Rx)
730 プロセッサ、論理ユニット、中央処理ユニット(CPU)
740 送信機ユニット(Tx)
750 出口ポート
760 メモリ
770 コーディングモジュール
780 入力および/または出力(I/O)デバイス
800 コーディングするための手段
801 受信手段
802 ビデオコーディングデバイス
803 記憶手段
805 処理手段
807 送信手段
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
多用途ビデオコーディング(VVC)に従ってビデオデコーダによって実行される復号の方法であって、
ーディングされたビデオビットストリームを受信するステップであって、前記コーディングされたビデオビットストリームは、パラメータセットと、ピクチャを表現するコーディングされたデータとを含み、前記ピクチャは、1つのタイルのみを有する1つまたは複数のスライスを含み、各タイルは、1つのブリックのみを含み、各ブリックは、複数のコーディングツリーブロック(CTB)を含む、ステップと、
前記パラメータセット内のパラメータを解析して、現在のピクチャについて、かつ/または現在のスライスについて、波面並列処理(WPP)が有効にされているかどうかを決定するステップと、
前記現在のスライスのスライスデータを解析して、ブリックおよび各ブリック内のCTBを取得するステップと、
前記WPPが有効にされているかどうかに関係なく、前記複数のCTBからの現在のCTBがブリック内の最後のCTBであるならば、前記コーディングされたビデオビットストリーム内の、第1の値を有するブリック終了ビット、およびバイト整列ビットを解析するステップと
前記WPPが有効にされ、かつ前記複数のCTBからの前記現在のCTBがCTB行内の前記最後のCTBであるが前記ブリック内の前記最後のCTBではないならば、前記コーディングされたビデオビットストリーム内の、前記第1の値を有するCTB行終了ビット、および前記バイト整列ビットを解析するステップと
記第1の値を有する前記ブリック終了ビット、前記第1の値を有する前記CTB行終了ビット、および前記バイト整列ビットに基づいて、前記ブリック内の前記複数のCTBを再構築して、複数の再構築されたブロックを取得するステップと、
前記複数の再構築されたブロックにループフィルタリング動作を適用して、出力ビデオを生成するステップと、
を含む方法。
【請求項2】
前記ブリック終了ビットはend_of_brick_one_bitと称される、請求項1に記載の方法。
【請求項3】
前記CTB行終了ビットはend_of_subset_bitと称される、請求項1または2に記載の方法。
【請求項4】
前記WPPは、entropy_coding_sync_enabled_flagとして称されるフラグによって有効にされる、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記出力ビデオに基づいて生成された画像を表示するステップをさらに含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
復号デバイスであって、
コーディングされたビデオビットストリームを受信するように構成された受信機と、
前記受信機に結合されたメモリであって、命令を記憶するメモリと、
前記メモリに結合されたプロセッサであって、前記命令を実行して、前記復号デバイスに、請求項1から5のいずれか一項に記載の方法実行させるように構成されたプロセッサと、
を含む復号デバイス。
【請求項7】
デコーダであって、
1つまたは複数のプロセッサと、
前記プロセッサに結合され、前記プロセッサによる実行のためのプログラミングを記憶した非一時的コンピュータ可読記憶媒体であって、前記プログラミングは、前記プロセッサによって実行されるとき、前記デコーダを、請求項1から5のいずれか一項に記載の方法を実行するように構成する、非一時的コンピュータ可読記憶媒体と、
を含むデコーダ。
【請求項8】
エンコーダと、
前記エンコーダと通信するデコーダと、を含むシステムであって
記デコーダが、請求項6に記載の復号デバイスを含む、システム。
【請求項9】
号すべきビットストリームを受信するように構成された受信手段と、
前記受信手段に結合された送信手段であって、前記ビットストリームを復号手段へ送信するように構成された送信手段と、
前記受信手段または前記送信手段のうちの少なくとも1つに結合された記憶手段であって、命令を記憶するように構成された記憶手段と、
前記記憶手段に結合された処理手段であって、前記記憶手段に記憶された前記命令を実行して、請求項1から5のいずれか一項に記載の方法を実行するように構成された処理手段と、
を含む、コーディングするための手段。
【請求項10】
請求項1から5のいずれか一項に記載の方法を実行するための処理回路を含むデコーダ。
【請求項11】
コンピュータまたはプロセッサにおいて実行されるとき、請求項1から5のいずれか一項に記載の方法を実行するためのプログラムコードを含むコンピュータプログラム。
【請求項12】
コンピュータデバイスによって実行されるとき、前記コンピュータデバイスに、請求項1から5のいずれか一項に記載の方法を実行させるプログラムコードを保持する非一時的コンピュータ可読媒体。
【外国語明細書】