(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-06
(54)【発明の名称】ビデオコーデックにおけるシーケンスレベルおよびスライスレベルの構文表現
(51)【国際特許分類】
H04N 19/70 20140101AFI20240730BHJP
【FI】
H04N19/70
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024500653
(86)(22)【出願日】2022-07-07
(85)【翻訳文提出日】2024-01-12
(86)【国際出願番号】 US2022036360
(87)【国際公開番号】W WO2023283336
(87)【国際公開日】2023-01-12
(32)【優先日】2021-07-07
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】516227559
【氏名又は名称】オッポ広東移動通信有限公司
【氏名又は名称原語表記】GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP., LTD.
【住所又は居所原語表記】No. 18 Haibin Road,Wusha, Chang’an,Dongguan, Guangdong 523860 China
(74)【代理人】
【識別番号】100120031
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100152205
【氏名又は名称】吉田 昌司
(74)【代理人】
【識別番号】100137523
【氏名又は名称】出口 智也
(74)【代理人】
【識別番号】100120385
【氏名又は名称】鈴木 健之
(72)【発明者】
【氏名】ユイ、ユエ
(72)【発明者】
【氏名】ユイ、ハオピン
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME01
5C159PP04
5C159RC11
5C159UA02
5C159UA05
(57)【要約】
ビデオは、画像のシーケンスを含み、各当該画像は、1つまたは複数のスライスを含む。ビットストリームを解析して第1フラグの値を取得する。当該第1フラグの値がヘッダ拡張パラメータセットが存在することを示しているか否かを決定する。当該第1フラグの値が、当該ヘッダ拡張パラメータセットが存在することを示していることに応答して、当該ビットストリームを解析して第2フラグの値を取得する。当該第2フラグの値が、当該シーケンスに対して当該ヘッダ拡張パラメータセット内の第1パラメータがイネーブルになっていることを示しているか否かを決定する。当該第2フラグの値が、当該第1パラメータがイネーブルになっていることを示していることに応答して、当該ビットストリームを解析して、当該シーケンス内の当該スライスの1つのために使用される当該第1パラメータの値を取得する。当該第1パラメータの値に基づいて、当該スライスを復号化する。
【特許請求の範囲】
【請求項1】
ビデオの復号化方法であって、前記ビデオは、画像のシーケンスを含み、各前記画像は、1つまたは複数のスライスを含み、前記方法は、
プロセッサが、ビットストリームを解析して第1フラグの値を取得するステップと、
前記プロセッサが、前記第1フラグの値がヘッダ拡張パラメータセットが存在することを示しているか否かを決定するステップと、
前記第1フラグの値が、前記ヘッダ拡張パラメータセットが存在することを示していることに応答して、前記プロセッサが、前記ビットストリームを解析して前記第2フラグの値を取得するステップと、
前記プロセッサが、前記第2フラグの値が、前記画像のシーケンスに対して前記ヘッダ拡張パラメータセット内の第1パラメータがイネーブルになっていることを示しているか否かを決定するステップと、
前記第2フラグの値が、前記画像のシーケンスに対して前記第1パラメータがイネーブルになっていることを示していることに応答して、前記プロセッサが、前記ビットストリームを解析して、前記画像のシーケンス内の前記スライスの1つのために使用される前記第1パラメータの値を取得するステップと、
前記プロセッサが、前記スライスのために使用される前記第1パラメータの値に基づいて、前記スライスを復号化するステップと、を含む、ビデオの復号化方法。
【請求項2】
前記第1パラメータは、最後有効係数の位置を参照するための参照位置を指示する最後有効係数逆フラグを含む、
請求項1に記載のビデオの復号化方法。
【請求項3】
前記第1のパラメータは、前記スライスが高スループットモードで符号化されているか否かを指示する高スループットモードフラグを含む、
請求項1に記載のビデオの復号化方法。
【請求項4】
前記第1パラメータは、前記スライスの残差符号化において残差データビットがシフトするか否かを指示する残差データビットシフトフラグを含む、
請求項1に記載のビデオの復号化方法。
【請求項5】
前記第2フラグの値は、前記画像のシーケンスのヘッダ拡張に符号化される、
請求項1に記載のビデオの復号化方法。
【請求項6】
前記第1パラメータの値は、前記スライスのヘッダに符号化される、
請求項1に記載のビデオの復号化方法。
【請求項7】
前記ビデオの復号化方法は、
前記第1フラグの値が、前記ヘッダ拡張パラメータセットが存在することを示していることに応答して、前記プロセッサが、前記ビットストリームを解析して第3フラグの値を取得するステップと、
前記プロセッサが、前記第3フラグの値が、前記画像のシーケンスに対して前記ヘッダ拡張パラメータセット内の第2パラメータがイネーブルになっていることを示しているか否かを決定するステップと、
前記第3フラグの値が、前記画像のシーケンスに対して前記第2パラメータがイネーブルになっていることを示していることに応答して、前記プロセッサが、前記ビットストリームを解析して、前記スライスのために使用される前記第2パラメータの値を取得するステップと、
前記プロセッサが、前記スライスのために使用される前記第1パラメータの値および前記第2パラメータの値に基づいて、前記スライスを復号化するステップと、をさらに含む、
請求項1に記載のビデオの復号化方法。
【請求項8】
ビデオの復号化システムであって、前記ビデオは、画像のシーケンスを含み、各前記画像は、1つまたは複数のスライスを含み、前記システムは、
命令を記憶するように構成されるメモリと、
前記メモリに結合されたプロセッサと、を備え、前記プロセッサは、前記命令を実行するときに、
ビットストリームを解析して第1フラグの値を取得するステップと、
前記第1フラグの値が、ヘッダ拡張パラメータセットが存在することを示しているか否かを決定するステップと、
前記第1フラグの値が、前記ヘッダ拡張パラメータセットが存在することを示していることに応答して、前記ビットストリームを解析して前記第2フラグの値を取得するステップと、
前記第2フラグの値が、前記画像のシーケンスに対して前記ヘッダ拡張パラメータセット内の第1パラメータがイネーブルになっていることを示しているか否かを決定するステップと、
前記第2フラグの値が、前記画像のシーケンスに対して前記第1パラメータがイネーブルになっていることを示していることに応答して、前記ビットストリームを解析して、前記画像のシーケンス内の前記スライスの1つのために使用される前記第1パラメータの値を取得するステップと、
前記スライスのために使用される前記第1パラメータの値に基づいて、前記スライスを復号化するステップと、を実行するように構成される、ビデオの復号化システム。
【請求項9】
前記第1パラメータは、最後有効係数の位置を参照するための参照位置を指示する最後有効係数逆フラグを含む、
請求項8に記載のビデオの復号化システム。
【請求項10】
前記第1パラメータは、前記スライスが高スループットモードで符号化されているか否かを指示する高スループットモードフラグを含む、
請求項8に記載のビデオの復号化システム。
【請求項11】
前記第1パラメータは、前記スライスの残差符号化において残差データビットがシフトするか否かを指示する残差データビットシフトフラグを含む、
請求項8に記載のビデオの復号化システム。
【請求項12】
前記第2フラグの値は、前記画像のシーケンスのヘッダ拡張に符号化される、
請求項8に記載のビデオの復号化システム。
【請求項13】
前記第1パラメータの値は、前記スライスのヘッダに符号化される、
請求項8に記載のビデオの復号化システム。
【請求項14】
前記プロセッサはさらに、
前記第1フラグの値が、前記ヘッダ拡張パラメータセットが存在することを示していることに応答して、前記ビットストリームを解析して第3フラグの値を取得するステップと、
前記第3フラグの値が、前記画像のシーケンスに対して前記ヘッダ拡張パラメータセット内の第2パラメータがイネーブルになっていることを示しているか否かを決定するステップと、
前記第3フラグの値が、前記画像のシーケンスに対して前記第2パラメータがイネーブルになっていることを示していることに応答して、前記ビットストリームを解析して、前記スライスのために使用される前記第2パラメータの値を取得するステップと、
前記スライスのために使用される前記第1パラメータの値および前記第2パラメータの値に基づいて、前記スライスを復号化するステップと、を実行するように構成される、
請求項8に記載のビデオの復号化システム。
【請求項15】
ビデオの符号化方法であって、前記ビデオは、画像のシーケンスを含み、各前記画像は、1つまたは複数のスライスを含み、前記ビデオの符号化方法は、
プロセッサが、前記画像のシーケンス内の少なくとも1つの前記スライスのヘッダ拡張パラメータセット内の第1パラメータの値を決定するステップと、
前記プロセッサが、前記第1パラメータの値に基づいて、前記ヘッダ拡張パラメータセットが存在するか否かを指示する第1フラグの値を決定するステップと、
前記プロセッサが、前記第1パラメータの値に基づいて、前記画像のシーケンスに対して前記第1パラメータがイネーブルになっているか否かを指示する第2フラグの値を決定するステップと、
前記プロセッサが、前記第1パラメータの値に基づいて、前記少なくとも1つのスライスをビットストリームに符号化するステップと、
前記プロセッサが、前記第1フラグの値、前記第2フラグの値、および前記第1パラメータの値を、前記ビットストリームに符号化するステップと、を含む、ビデオの符号化方法。
【請求項16】
前記第1パラメータは、最後有効係数の位置を参照するための参照位置を指示する最後有効係数逆フラグを含む、
請求項15に記載のビデオの符号化方法。
【請求項17】
前記第1パラメータは、前記少なくとも1つのスライスが高スループットモードで符号化されているか否かを指示する高スループットモードフラグを含む、
請求項15に記載のビデオの符号化方法。
【請求項18】
前記第1パラメータは、前記少なくとも1つのスライスの残差符号化において残差データビットがシフトするか否かを指示する残差データビットシフトフラグを含む、
請求項15に記載のビデオの符号化方法。
【請求項19】
前記第2フラグの値は、前記画像のシーケンスのヘッダ拡張に符号化される、
請求項15に記載のビデオの符号化方法。
【請求項20】
前記第1パラメータの値は、前記少なくとも1つのスライスのヘッダに符号化される、
請求項15に記載のビデオの符号化方法。
【請求項21】
前記ビデオの符号化方法は、
前記プロセッサが、前記少なくとも1つのスライスの前記ヘッダ拡張パラメータセット内の第2パラメータの値を決定するステップと、
前記プロセッサが、前記第2パラメータの値に基づいて、前記画像のシーケンスに対して前記第2パラメータがイネーブルになっているか否かを指示する第3フラグの値を決定するステップと、
前記プロセッサが、前記第1パラメータの値および前記第2パラメータの値に基づいて、前記少なくとも1つのスライスを前記ビットストリームに符号化するステップと、
前記プロセッサが、前記第1フラグの値、前記第2フラグの値、前記第1パラメータの値、および前記第2パラメータの値を、前記ビットストリームに符号化するステップと、をさらに含む、
請求項15に記載のビデオの符号化方法。
【請求項22】
ビデオの符号化システムであって、前記ビデオは、画像のシーケンスを含み、各前記画像は、1つまたは複数のスライスを含み、前記システムは、
命令を記憶するように構成されるメモリと、
前記メモリに結合されたプロセッサと、を備え、前記プロセッサは、前記命令を実行するときに、
前記画像のシーケンス内の少なくとも1つの前記スライスのヘッダ拡張パラメータセット内の第1パラメータの値を決定するステップと、
前記第1パラメータの値に基づいて、前記ヘッダ拡張パラメータセットが存在するか否かを指示する第1フラグの値を決定するステップと、
前記第1パラメータの値に基づいて、前記画像のシーケンスに対して前記第1パラメータがイネーブルになっているか否かを指示する第2フラグの値を決定するステップと、
前記第1パラメータの値に基づいて、前記少なくとも1つのスライスをビットストリームに符号化するステップと、
前記第1フラグの値、前記第2フラグの値、および前記第1パラメータの値を、前記ビットストリームに符号化するステップと、を実行するように構成される、ビデオの符号化システム。
【請求項23】
前記第1パラメータは、最後有効係数の位置を参照するための参照位置を指示する最後有効係数逆フラグを含む、
請求項22に記載のビデオの符号化システム。
【請求項24】
前記第1パラメータは、前記少なくとも1つのスライスが高スループットモードで符号化されているか否かを指示する高スループットモードフラグを含む、
請求項22に記載のビデオの符号化システム。
【請求項25】
前記第1パラメータは、前記少なくとも1つのスライスの残差符号化において残差データビットがシフトするか否かを指示する残差データビットシフトフラグを含む、
請求項22に記載のビデオの符号化システム。
【請求項26】
前記第2フラグの値は、前記画像のシーケンスのヘッダ拡張に符号化される、
請求項22に記載のビデオの符号化システム。
【請求項27】
前記第1パラメータの値は、前記少なくとも1つのスライスのヘッダに符号化される、
請求項22に記載のビデオの符号化システム。
【請求項28】
前記プロセッサはさらに、
前記少なくとも1つのスライスの前記ヘッダ拡張パラメータセット内の第2パラメータの値を決定するステップと、
前記第2パラメータの値に基づいて、前記画像のシーケンスに対して前記第2パラメータがイネーブルになっているか否かを指示する第3フラグの値を決定するステップと、
前記第1パラメータの値および前記第2パラメータの値に基づいて、前記少なくとも1つのスライスを前記ビットストリームに符号化するステップと、
前記第1フラグの値、前記第2フラグの値、前記第1パラメータの値、および前記第2パラメータの値を、前記ビットストリームに符号化するステップと、を実行するように構成される、
請求項22に記載のビデオの符号化システム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願への相互参照)
本願は、2021年07月07日に提出された、発明の名称が「REPRESENTATION OF SEVERAL SPS AND SLICE RELATED SYNTAX ELEMENTS FOR VIDEO CODING」であり、出願番号が63/219,173である米国仮出願の優先権を主張し、その内容の全てが引用により本願に組み込まれる。
【0002】
本発明の実施例は、ビデオコーデックに関するものである。
【背景技術】
【0003】
デジタルビデオは主流になり、デジタルテレビ、ビデオテレ電話、遠隔会議などのアプリケーションに幅広く応用されている。このようなデジタルビデオアプリケーションは、コンピューティングと通信技術の進歩と効率的なビデオコーデック技術のおかげで実現可能となる。様々なビデオコーデック技術を使用してビデオデータを圧縮することができ、これにより、1つまたは複数のビデオコーデック規格でビデオデータのコーデックを実行することができる。ビデオコーデック規格の例としては、汎用ビデオコーデック(H.266/VVC)、高効率ビデオコーデック(H.265/HEVC)、高性能ビデオコーデック(H.264/AVC)、動画像専門家グループ(MPEG:moving picture expert group)コーデックなどが挙げられるが、これらに限定されない。
【発明の概要】
【0004】
本発明の一態様によれば、ビデオの復号化方法を開示する。当該ビデオは、画像のシーケンスを含み、各当該画像は、1つまたは複数のスライスを含む。プロセッサは、ビットストリームを解析して第1フラグの値を取得する。当該プロセッサは、当該第1フラグの値がヘッダ拡張パラメータセットが存在することを示しているか否かを決定する。当該第1フラグの値が、当該ヘッダ拡張パラメータセットが存在することを示していることに応答して、当該プロセッサは、当該ビットストリームを解析して第2フラグの値を取得する。当該プロセッサは、当該第2フラグの値が、当該画像のシーケンスに対して当該ヘッダ拡張パラメータセット内の当該第1パラメータがイネーブルになっていることを示しているか否かを決定する。当該第2フラグの値が、当該画像のシーケンスに対して当該第1パラメータがイネーブルなっていることを示していることに応答して、当該ビットストリームを解析して、当該画像のシーケンス内の当該スライスの1つのために使用される当該第1パラメータの値を取得する。当該プロセッサは、当該スライスのために使用される当該第1パラメータの値に基づいて、当該スライスを復号化する。
【0005】
本発明の別の態様によれば、ビデオの復号化システムは、命令を記憶するように構成されるメモリと、当該メモリに結合されたプロセッサと、を備える。当該ビデオは、画像のシーケンスを含み、各当該画像は、1つまたは複数のスライスを含む。当該プロセッサは、当該命令を実行するときに、ビットストリームを解析して第1フラグの値を取得するように構成される。当該プロセッサはさらに、当該命令を実行するときに、当該第1フラグの値がヘッダ拡張パラメータセットが存在することを示しているか否かを決定し、当該第1フラグの値が当該ヘッダ拡張パラメータセットが存在することを示していることに応答して、当該ビットストリームを解析して第2フラグの値を取得するように構成される。当該プロセッサはさらに、当該命令を実行するときに、当該第2フラグの値が、当該画像のシーケンスに対して当該ヘッダ拡張パラメータセット内の当該第1パラメータがイネーブルになっていることを示しているか否かを決定し、当該第2フラグの値が、前記画像のシーケンスに対して当該第1パラメータがイネーブルになっていることを示していることに応答して、当該ビットストリームを解析して、当該画像のシーケンス内の当該スライスの1つのために使用される当該第1パラメータの値を取得するように構成される。当該プロセッサはさらに、当該命令を実行するときに、当該スライスのために使用される当該第1パラメータの値に基づいて、当該スライスを復号化するように構成される。
【0006】
本発明のさらに別の態様によれば、ビデオの符号化方法を開示する。当該ビデオは、画像のシーケンスを含み、各当該画像は、1つまたは複数のスライスを含む。プロセッサは、当該画像のシーケンス内の少なくとも1つの当該スライスのヘッダ拡張パラメータセット内の第1パラメータの値を決定する。当該プロセッサは、当該第1パラメータの値に基づいて、当該ヘッダ拡張パラメータセットが存在するか否かを指示する第1フラグの値を決定する。当該第1パラメータの値に基づいて、当該画像のシーケンスに対して当該第1パラメータがイネーブルになっているか否かを指示する第2フラグの値を決定する。当該プロセッサは、当該第1パラメータの値に基づいて、当該少なくとも1つのスライスをビットストリームに符号化する。当該プロセッサは、当該第1フラグの値、当該第2フラグの値、および当該第1パラメータの値を、当該ビットストリームに符号化する。
【0007】
本発明のさらに別の態様によれば、ビデオの符号化システムは、命令を記憶するように構成されるメモリと、当該メモリに結合されたプロセッサと、を備える。当該ビデオは、画像のシーケンスを含み、各当該画像は、1つまたは複数のスライスを含む。当該プロセッサは、当該命令を実行するときに、当該画像のシーケンス内の少なくとも1つの当該スライスのヘッダ拡張パラメータセット内の第1パラメータの値を決定するように構成される。当該プロセッサはさらに、当該命令を実行するときに、当該第1パラメータの値に基づいて、当該ヘッダ拡張パラメータセットが存在するか否かを指示する第1フラグの値を決定するように構成される。当該プロセッサはさらに、当該命令を実行するときに、当該第1パラメータの値に基づいて、当該画像のシーケンスに対して当該第1パラメータがイネーブルになっているか否かを指示する第2フラグの値を決定するように構成される。当該プロセッサはさらに、当該命令を実行するときに、当該第1パラメータの値に基づいて、当該少なくとも1つのスライスをビットストリームに符号化し、当該第1フラグの値、当該第2フラグの値、および当該第1パラメータの値を、当該ビットストリームに符号化するように構成される。
【0008】
これらの例示的な実施例は、本発明を限定または定義することを意図したものではなく、理解を容易にする例を提供することを意図したものである。追加の実施例は、明細書において詳細に説明され、以下に更なる説明を提供する。
【図面の簡単な説明】
【0009】
【
図1】本発明のいくつかの実施例による例示的な符号化システムのブロック図である。
【
図2】本発明のいくつかの実施例による例示的な復号化システムのブロック図である。
【
図3】本発明のいくつかの実施例による、
図1の符号化システムにおける例示的なエンコーダの詳細ブロック図である。
【
図4】本発明のいくつかの実施例による、
図2の復号化システムにおける例示的なデコーダの詳細ブロック図である。
【
図5A】本発明のいくつかの実施例による、画像のシーケンスに分割されたビデオの一例を示す。
【
図5B】本発明のいくつかの実施例による、スライスに分割された画像の一例を示す。
【
図5C】本発明のいくつかの実施例による、符号化ツリーユニット(CTU:coding tree unit)に分割されたスレイスの一例を示す。
【
図5D】本発明のいくつかの実施例による、符号化ユニット(CU:coding unit)に分割されたCTUの一例を示す。
【
図6】本発明のいくつかの実施例による、正規残差符号化(RRC:regular residual coding)を使用して符号化された変換ブロックの一例を示す。
【
図8A】本発明のいくつかの実施例による、RRCにおける例示的な高スループットモードを示す。
【
図8B】本発明のいくつかの実施例による、RRCにおける別の例示的な高スループットモードを示す。
【
図8C】本発明のいくつかの実施例による、変換ユニット(TU:transform unit)符号化におけるさらに別の例示的な高スループットモードを示す。
【
図8D】本発明のいくつかの実施例による、TU符号化における例示的な高スループットモードを示す。
【
図9】本発明のいくつかの実施例による例示的なビデオの復号化方法のフローチャートを示す。
【
図10】本発明のいくつかの実施例による例示的なビデオの符号化方法のフローチャートを示す。
【発明を実施するための形態】
【0010】
本明細書に組み込まれ、本明細書の一部を構成する図面は、本発明の実施例を例示し、本明細書の説明とともに本発明の原理をさらに説明するために使用され、それにより、当業者が本発明を実施し、使用できるようにする。
【0011】
図面を参照しながら本発明の実施例を説明する。
【0012】
いくつかの構成および配置について説明するが、これは例示のためにのみ行われることを理解されたい。当業者であれば、本発明の精神および範囲から逸脱することなく、他の構成および配置を使用できることを理解することができる。明らかに、当業者にとって本発明は様々な他の用途にも使用できる。
【0013】
なお、本明細書において、「一つの実施例」、「一実施例」、「例示的実施例」、「いくつかの実施例」、「特定の実施例」などは、記載された実施例が特定の特徴、構造または特性を含み得ることを示すが、すべての実施例が必ずしも当該特定の特徴、構造または特性を含むとは限らない。また、このような表現は、必ずしも同じ実施例を指すとは限らない。さらに、特定の特徴、構造または特性が実施例に関連して説明される場合、それが明示的に説明されているか否かにかかわらず、そのような特徴、構造または特性は、当業者の知識の範囲内で他の実施例と組み合わせることによって実現される。
【0014】
一般的に、用語はコンテキストにおける使用から少なくとも部分的に理解されることができる。例えば、本明細書で使用される「1つまたは複数」という用語は、少なくとも部分的にコンテキストに応じて、単数の意味で任意の特徴、構造または特性を記述するために使用されてもよいし、複数の意味で特徴、構造または特性の組み合わせを記述するために使用されてもよい。同様に、「一」、「1つ」、または「前記」などの用語も、少なくとも部分的にコンテキストに応じて、単数形または複数形の用法を伝えるように理解され得る。また、「~に基づく」という用語は、必ずしも排他的な要因のセットを伝えることを意図しているものではなく、代わりに、必ずしも明示的に記述されていないが、少なくとも部分的にコンテキストに応じて、追加的な要因の存在を許容する場合がある。
【0015】
次に、ビデオコーデックシステムの様々な態様について、様々な装置および方法を参照して説明する。これらの装置および方法については、以下の詳細な説明において説明され、各種モジュール、構成要素、回路、ステップ、動作、プロセス、アルゴリズムなど(「要素」と総称する)によって図示される。これらの要素は、電子ハードウェア、ファームウェア、コンピュータソフトウェア、またはそれらの任意の組み合わせを使用して実装することができる。このような要素がハードウェア、ファームウェア、またはソフトウェアとして実装されるかどうかは、システム全体に課される特定のアプリケーションおよび設計制約に依存する。
【0016】
本明細書で説明される技術は、様々なビデオコーデックアプリケーションに使用され得る。本明細書に記載されているように、ビデオコーデックには、ビデオの符号化と復号化が含まれる。ビデオの符号化と復号化は、ブロック単位で実行することができる。例えば、変換、量子化、予測、ループ内フィルタリング、再構成などの符号化/復号化処理は、符号化ブロック、変換ブロック、または予測ブロックに対して実行され得る。本明細書に記載されているように、符号化/復号化されるブロックは、「現在ブロック」と呼ばれる。例えば、現在の符号化/復号化プロセスに応じて、現在ブロックは、コーデックブロック、変換ブロック、または予測ブロックを表すことができる。さらに、本発明における「ユニット」という用語は、特定の符号化/復号化プロセスを実行するための基本単位を示し、用語「ブロック」は、所定のサイズのサンプル配列を示すことを理解されたい。特に明記されていない限り、「ブロック」と「ユニット」は同じ意味で使用されることができる。
【0017】
ビデオ符号化では、量子化は、変換されたまたは変換されていないビデオ信号のダイナミックレンジを減らすために使用され、これにより、より少ないビット数でビデオ信号を表現することができる。量子化前、特定の位置における変換されたまたは変換されていないビデオ信号は、「係数」と呼ばれる。量子化後、係数の量子化値は、「量子化レベル」または「レベル」と呼ばれる。本発明において、ある位置の量子化レベルとは、その位置における係数の量子化レベルを指す。ビデオ符号化では、残差符号化は、位置の量子化レベルをビットストリームに符号化するために使用される。量子化後、N×Mサイズの符号化ブロックに対してN×M個の量子化レベルが存在する。これらのN×M個の量子化レベルは、ゼロ値でも非ゼロ値でもよい。非ゼロレベルが2値でない場合、2値化方法を使用して非ゼロレベルを2値表現(2値binなど)にさらに変換(例えば、2値化)する。次に、符号化アルゴリズム(エントロピー符号化アルゴリズムなど)を使用して2値表現(2値binなど)をビットストリームに圧縮する。2値化方法の例としては、複合(combined)TR(Truncated Rice)2値化、有限k次指数ゴロム(limited EGk(k-th order Exp-Golomb))2値化、およびk次Exp-Golomb2値化などのゴロム・ライス(Golomb-Rice)2値化が挙げられるが、これらに限定されない。エントロピー符号化アルゴリズムの例としては、可変長符号化(VLC:variable-length coding)方式、コンテキスト適応型VLC方式(CAVLC:context-adaptive VLC scheme)、算術符号化方式、2値化、コンテキスト適応型2値算術符号化(CABAC:context adaptive binary arithmetic coding)、構文ベースのコンテキスト適応型2値算術符号化(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔分割エントロピー(PIPE:probability interval partitioning entropy)符号化、または他のエントロピー符号化技術が挙げられるが、これらに限定されない。
【0018】
レベル(または場合によっては係数)の表現に加えて、ビデオ符号化に使用される他の情報(構文要素など)の表現も、ビットストリームに符号化される/書き込まれる場合がある。ビデオ符号化は、ビデオを異なるピース(pieces)(シーケンス、画像、スライスなど)に分割することによって、異なるレベルで構成されるため、構文要素の表現も、例えば、対応するヘッダ情報として、異なるレベル(シーケンスレベル、画像レベル、スライスレベルなど)で配置される。さらに、ビデオ符号化におけるいくつかの構文要素を解析するには、複数の条件チェックを必要とする場合があり、これにより、構文要素の表現を編成および解析する複雑さがさらに増加される。
【0019】
本発明は、ビデオ符号化における構文要素の表現を編成および解析する効率を向上させ、複雑さを低減するための様々な方案を提供する。本発明のいくつかの態様によれば、異なるレベルの様々な構文要素(例えば、シーケンスレベルフラグおよびスライスレベルフラグ)は、異なるレベルの対応する条件チェックと組み合わせて、簡素化された効率的な方法で特定のオプションパラメータ(ヘッダ拡張パラメータ(header extension parameter)など)を編成および解析するために使用され得る。いくつかの実施例では、フラグは、ヘッダ拡張パラメータセットの存在を指示する。ヘッダ拡張パラメータは、いくつかの画像のシーケンスには関連付けられ得るが、他の画像のシーケンスには関連付けられない様々なパラメータを含み得る。いくつかの実施例では、このようなヘッダ拡張パラメータセットが存在する場合、シーケンスレベルフラグは、当該ヘッダ拡張パラメータセット内の各パラメータに使用され、ビデオ内の特定の画像のシーケンスに対して対応するパラメータがイネーブルになっているか否かを指示する。いくつかの実施例では、パラメータがシーケンスレベルでイネーブルになっている場合、スライスレベル構文要素は、各パラメータに使用され、画像のシーケンス内の特定のスライスを符号化/復号化するためのパラメータの値を指示する。
【0020】
本発明のいくつかの態様によれば、同じレベルで同じ条件チェックを有する異なる構文要素の表現は、条件チェックの数を減らすためにグループ化されることができ、それによって当該方案をさらに簡素化することができる。
【0021】
図1は、本発明のいくつかの実施例による例示的な符号化システム100のブロック図である。
図2は、本発明のいくつかの実施例による例示的な復号化システム200のブロック図である。システム100またはシステム200はそれぞれ、コンピュータや無線通信装置など、データ処理が可能な様々なシステムおよび装置に適用または統合されることができる。例えば、システム100またはシステム200は、携帯電話、デスクトップコンピュータ、ラップトップコンピュータ、タブレット、車両コンピュータ、ゲーミングコンソール、プリンタ、測位機器、ウェアラブル電子機器、スマートセンサ、仮想現実(VR:virtual reality)機器、拡張現実(AR:argument reality)機器、またはデータ処理機能を有する他の任意の適切な電子機器の全体または一部であってもよい。
図1および
図2に示すように、システム100またはシステム200は、プロセッサ102、メモリ104、およびインターフェース106を含み得る。これらの構成要素は、バスによって互いに接続されているように示されているが、他の接続タイプも許容される。なお、システム100またはシステム200は、本明細書で説明する機能を実行するための他の任意の適切な構成要素を含んでもよい。
【0022】
プロセッサ102は、グラフィック処理ユニット(GPU:graphic processing unit)、画像信号プロセッサ(ISP:image signal processor)、中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、テンソル処理ユニット(TPU:tensor processing unit)、ビジョン処理ユニット(VPU:vision processing unit)、ニューラル処理ユニット(NPU:neural processing unit)、相乗処理ユニット(SPU:synergistic processing unit)、または物理処理ユニット(PPU:physics processing unit)などのマイクロプロセッサ、マイクロコントローラユニット(MCU:microcontroller unit)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックデバイス(PLD)、ステートマシン、ゲーテッドロジック、ディスクリートハードウェア回路、および本発明全体で説明される様々な機能を実行するように構成された他の適切なハードウェアを含み得る。
図1および
図2には、1つのプロセッサのみが示されているが、複数のプロセッサを含み得ることが理解され得る。プロセッサ102は、1つ以上の処理コアを有するハードウェアデバイスであってもよい。プロセッサ102はソフトウェアを実行することができる。ソフトウェアとは、一般的に、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語などと呼ばれるかどうかにかかわらず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行スレッド、手続き、関数などを指すものとして、広く解釈されるべきである。ソフトウェアは、インタープリタ型言語、コンパイル言語、またはマシンコードで書かれたコンピュータ命令を含み得る。ハードウェアを指示するための他の手法も、ソフトウェアという大まかなカテゴリに含まれる。
【0023】
メモリ104は、広義には、メモリ(プライマリメモリ/システムメモリとも呼ばれる)およびストレージ(セカンダリメモリとも呼ばれる)を含み得る。例えば、メモリ104は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、強誘電体RAM(FRAM)、電気的に消去可能なプログラマブルROM(EEPROM)、コンパクトディスク読み取り専用メモリ(CD-ROM)または他の光ディスクストレージ、ハードディスクドライブ(HDD:hard disk drive)、例えば、磁気ディスク記憶装置または他の磁気記憶装置、フラッシュドライブ、ソリッドステートドライブ(SSD:solid-state drive)、またはプロセッサ102がアクセスおよび実行できる命令の形態で所望のプログラムコードを携帯または記憶するために使用できる任意の他の媒体を含み得る。広義には、メモリ104は、非一時的コンピュータ可読媒体など、任意のコンピュータ可読媒体によって具現化され得る。
図1および
図2には、1つのメモリのみが示されているが、複数のメモリを含んでもよいことが理解できる。
【0024】
インターフェース106は、広義には、データインターフェースおよび通信インターフェースを含み得、当該通信インターフェースは、他の外部ネットワーク要素との情報の送受信プロセスにおいて信号を受信および送信するように構成される。例えば、インターフェース106は、入力/出力(I/O)機器、有線または無線トランシーバを含み得る。
図1および
図2には、1つのインターフェースのみが示されているが、複数のインターフェースが含まれていてもよいことが理解される。
【0025】
プロセッサ102、メモリ104、およびインターフェース106は、ビデオ符号化機能を実行するために、システム100またはシステム200において様々な形態で実装され得る。いくつかの実施例では、システム100またはシステム200のプロセッサ102、メモリ104、およびインターフェース106は、1つまたは複数のシステムオンチップ(SoC:system-on-chip)上に実装(例えば、統合)される。一例では、プロセッサ102、メモリ104、およびインターフェース106は、アプリケーションプロセッサ(AP:application processor)SoCに統合され得、当該AP SoCは、オペレーティングシステム(OS:operating system)環境における、ビデオエンコードおよびデコードアプリケーションの実行を含むアプリケーション処理を取り扱う。別の例では、プロセッサ102、メモリ104、およびインターフェース106は、例えば、リアルタイムオペレーティングシステム(RTOS:real-time operating system)内の画像およびビデオ処理専用のGPUまたはISPチップなど、ビデオコーデック専用のプロセッサチップに統合されてもよい。
【0026】
図1に示すように、符号化システム100では、プロセッサ102は、エンコーダ101などの1つまたは複数のモジュールを含み得る。
図1は、エンコーダ101が1つのプロセッサ102内にあることを示しているが、理解可能なこととして、エンコーダ101は、1つまたは複数のサブモジュールを含み得、これらのサブモジュールは、互いに密接または遠隔に配置された異なるプロセッサに実装され得る。エンコーダ101(および任意の対応するサブモジュールまたはサブユニット)は、プロセッサ102のハードウェアユニット(例えば、集積回路の一部)であり得、当該ハードウェアユニットは、プロセッサ102がプログラムの少なくとも一部(即ち、命令)を実行することによって実装する他の構成要素またはソフトウェアユニットと共に使用するように設計される。プログラムの命令は、メモリ104などのコンピュータ可読媒体に記憶されてもよく、プロセッサ102によって実行されるときに、当該命令は、以下に詳述するように、画像分割、インター予測、イントラ予測、変換、量子化、フィルタリング、エントロピー符号化などのビデオ符号化に関連する1つまたは複数の機能を有するプロセスを実行することができる。
【0027】
同様に、
図2に示すように、復号化システム200では、プロセッサ102は、デコーダ201などの1つまたは複数のモジュールを含み得る。
図2には、デコーダ201が1つのプロセッサ102内にあることが示されているが、理解可能なこととして、デコーダ201は、1つまたは複数のサブモジュールを含み得、これらのサブモジュールは、互いに密接または遠隔に配置された異なるプロセッサに実装され得る。デコーダ201(および任意の対応するサブモジュールまたはサブユニット)は、プロセッサ102のハードウェアユニット(例えば、集積回路の一部)であり得、当該ハードウェアユニットは、プロセッサ102がプログラムの少なくとも一部(即ち、命令)を実行することによって実装する他の構成要素またはソフトウェアユニットと共に使用するように設計される。プログラムの命令は、メモリ104などのコンピュータ可読媒体に記憶されてもよく、プロセッサ102によって実行されるときに、当該命令は、以下に詳述するように、エントロピー復号化、逆量子化、逆変換、インター予測、イントラ予測、変換、量子化、フィルタリングなどのビデオ復号化に関連する1つまたは複数の機能を有するプロセスを実行することができる。
【0028】
図3は、本発明のいくつかの実施例による、
図1の符号化システム100における例示的なエンコーダ101の詳細ブロック図である。
図3に示すように、エンコーダ101は、分割モジュール302、インター予測モジュール304、イントラ予測モジュール306、変換モジュール308、量子化モジュール310、逆量子化モジュール312、逆変換モジュール314、フィルタモジュール316、バッファモジュール318、および符号化モジュール320を備える。なお、
図3に示す各要素は、ビデオエンコーダにおいて互いに異なる特徴的な機能を表すために独立して示されているが、これは、各構成要素が個別のハードウェアや単一のソフトウェアの構成単位によって形成されていることを意味するものではない。つまり、含まれる各要素は、説明の便宜上、単一の要素として列挙されており、少なくとも2つの要素が組み合わされて単一の要素を形成しもよいし、1つの要素が複数の要素に分割されて機能を実行してもよい。また、一部の要素は、本発明に記載された機能を実行するために必要なものではなく、性能を向上させるための任意選択的な要素であってもよい。さらに、これらの要素は、電子ハードウェア、ファームウェア、コンピュータソフトウェア、またはそれらの任意の組み合わせを使用して実装され得る。このような要素がハードウェア、ファームウェア、またはソフトウェアとして実装されるかは、エンコーダ101に課される特定のアプリケーションおよび設計上の制約に依存する。
【0029】
分割モジュール302は、ビデオの入力画像を少なくとも1つの処理ユニットに分割するように構成され得る。画像は、ビデオのフレーム、またはビデオのフィールドであり得る。
図5A~
図5Dに示すように、ビデオは、異なるレベルのピースに分割されて、ビデオコーデックに使用される。例えば、
図5Aにおいて、ビデオ500は、1つまたは複数のシーケンス502に分割され得、各シーケンス502は、1つまたは複数の画像504を含み得る。いくつかの実施例では、画像504は、モノクロ形式のルーマサンプル(luma sample)のアレイ、または1つのルーマサンプルと2つの対応するクロマサンプルのアレイを含む。この場合、処理ユニットは、予測ユニット(PU:prediction unit)、変換ユニット(TU:transform unit)またはCUであってもよい。分割モジュール302は、画像を符号化ユニット、予測ユニット、および変換ユニットの複数の組み合わせに分割し、所定の基準(例えば、コスト関数)に基づいて、符号化ユニット、予測ユニット、および変換ユニットの組み合わせを選択することによって画像を符号化してもよい。
【0030】
いくつかの実施例では、例えば、
図5Bに示すように、分割モジュール302によって、画像504は、1つまたは複数のスライス(slice)506に分割される。なお、各画像504内のスライス506の形状およびスライス506の数は、異なる例において異なってもよい。いくつかの実施例によれば、各スライス506は、そのルート画像504と同じサイズであってもよいし、ルート画像504の細分(subdivision)であってもよい。
【0031】
H.265/HEVCと同様に、H.266/VVCはブロックベースのハイブリッド時間および空間予測コーデック方式である。
図5Cに示すように、符号化中に、スライス506は、分割モジュール302によって、正方形のブロックCTU508にさらに分割され得る。例えば、CTU508は128×128ピクセルのブロックであってもよい。換言すれば、スライス506は、複数のCTU508を含み得る。
図5Dに示すように、各CTU508は、分割モジュール302によって、予測および変換のための1つまたは複数のCU510にさらに分割され得る。H.265/HEVCとは異なり、H.266/VVCでは、CU510は長方形または正方形であり得、予測ユニットまたは変換ユニットにさらに分割されることなく符号化され得る。例えば、
図5Dに示すように、CTU508からCU510への分割は、4分木分割(実線で示す)、2分木分割(破線で示す)、および3分木分割(一点鎖線で示す)を含み得る。いくつかの実施例によれば、各CU510は、そのルートCTU508と同じ大きさであってもよいし、ルートCTU508の4×4ブロックという小さい細分(subdivision)あってもよい。以下に詳述するように、ビデオ500を異なるレベルの複数のピース(シーケンス502、画像504、スライス506、CTU508、CU510など)に分割することにより、ビデオ500を符号化するときに、異なるレベルで構文要素を使用して、ビデオ符号化の柔軟性および効率を向上させることができる。
【0032】
図3を参照すると、インター予測モジュール304は、予測ユニットに対してインター予測を実行するように構成され得、イントラ予測モジュール306は、予測ユニットに対してイントラ予測を実行するように構成され得る。予測ユニットに対して、インター予測を実行するか、イントラ予測を実行するかを決定し、各予測方法に基づいて特定の情報(例えば、イントラ予測モード、動きベクトル、参照画像など)を決定することができる。この場合、予測を実行するための処理ユニットは、予測方法や特定のコンテンツを決定するための処理ユニットと異なってもよい。例えば、予測ユニットで予測方法と予測モードを決定し、変換ユニットで予測を実行するようにしてもよい。生成された予測ブロックと元のブロックとの間の残差ブロックにおける残差係数を変換モジュール308に入力することができる。さらに、符号化モジュール320は、予測に使用される予測モード情報、動きベクトル情報などを、残差係数または量子化レベルとともに、ビットストリームに符号化することができる。なお、特定の符号化モードでは、予測モジュール304または予測モジュール306を介して予測ブロックを生成することなく、元のブロックをそのまま符号化してもよい。さらに、特定の符号化モードでは、予測、変換および/または量子化をスキップしてもよい。
【0033】
いくつかの実施例では、インター予測モジュール304は、現在画像の前後の画像のうちの少なくとも1つの画像の情報に基づいて予測ユニットを予測してもよく、場合によっては、現在画像の符号化された一部の領域に関する情報に基づいて、予測ユニットを予測してもよい。インター予測モジュール304は、参照画像補間モジュール、動き予測モジュール、および動き補償モジュール(図示せず)などのサブモジュールを含み得る。例えば、参照画像補間モジュールは、バッファモジュール318から参照画像情報を受信し、参照画像から整数ピクセルまたはより少ないピクセルのピクセル情報を生成することができる。ルーマピクセルの場合、可変フィルタ係数を有する、離散コサイン変換(DCT:discrete cosine transform)ベースの8タップ補間フィルタは、1/4ピクセルの単位で、整数ピクセルまたはより少ないピクセルのピクセル情報を生成することができる。色差信号の場合、可変フィルタ係数を有する、DCTベースの4タップ補間フィルタは、1/8ピクセルの単位で、整数ピクセルまたはより少ないピクセルのピクセル情報を生成することができる。動き予測モジュールは、参照画像補間部によって補間された参照画像に基づいて動き予測を実行することができる。動きベクトルの計算方法として、完全探索型ブロックマッチングアルゴリズム(FBMA:full search-based block matching algorithm)、3段階探索(TSS:three-step search)、新3段階探索アルゴリズム(NTS:new three-step search algorithm)など、様々な方法を使用することができる。動きベクトルは、1/2ピクセル、1/4ピクセルまたは1/16ピクセル単位とする動きベクトル値、または補間ピクセルに基づく整数ピクセル単位の動きベクトル値を有することができる。動き予測モジュールは、動き予測方法を変更することで、現在の予測ユニットを予測することができる。動き予測方法として、スキップ法、マージ法、AMVP(Advanced Motion Vector Prediction)法、ブロック内コピー法などの様々な方法を使用することができる。
【0034】
いくつかの実施例では、イントラ予測モジュール306は、現在ブロック周辺の参照ピクセルの情報に基づいて予測ユニットを生成することができ、当該情報は、現在画像内のピクセル情報である。現在の予測単位の近傍のブロックがインター予測が実行されたブロックであり、参照ピクセルがインター予測が実行されたピクセルである場合、イントラ予測が実行された近傍のブロックの参照ピクセル情報の代わりに、インター予測が実行されたブロック内の参照ピクセルを使用してもよい。即ち、参照ピクセルが利用できない場合、利用可能な参照ピクセルのうちの少なくとも1つを、利用できない参照ピクセル情報の代わりに使用することができる。イントラ予測では、予測モードは、予測方向に応じて参照ピクセル情報を使用する角度予測モードと、予測の実行時に方向情報を使用しない非角度予測モードとを有し得る。ルーマ(luma)情報を予測するモードは、色差情報を予測するモードとは異なってもよく、ルーマ情報の予測に使用されるイントラ予測モード情報または予測されたルーマ信号情報は、色差情報の予測に使用され得る。イントラ予測が実行されるときに、予測ユニットのサイズが変換ユニットのサイズと同じである場合、予測ユニットの左側ピクセル、左上側ピクセル、および上部ピクセルに基づいて、予測ユニットに対してイントラ予測を実行することができる。しかしながら、イントラ予測が実行されるときに、予測ユニットのサイズが変換ユニットのサイズと異なる場合、変換ユニットに基づいた参照ピクセルを使用してイントラ予測を実行することができる。
【0035】
イントラ予測方法は、予測モードに基づいて参照ピクセルに適応型イントラ平滑化(AIS:adaptive intra smoothing)フィルタを適用した後、予測ブロックを生成することができる。参照ピクセルに適用されるAISフィルタのタイプは変更可能である。イントラ予測方法を実行するために、現在の予測ユニットの近傍の予測ユニットのイントラ予測モードから、現在の予測ユニットのイントラ予測モードを予測することができる。近傍の予測ユニットから予測されたモード情報を使用して現在の予測ユニットの予測モードを予測する場合、現在の予測ユニットのイントラ予測モードが近傍の予測ユニットのイントラ予測ユニットと同じであれば、所定のフラグ情報を使用して、現在の予測ユニットの予測モードが近傍の予測ユニットの予測モードと同じであることを指示する情報を伝送することができる。また、現在の予測ユニットの予測モードが近傍の予測ユニットの予測モードと異なる場合、追加のフラグ情報に基づいて現在ブロックの予測モード情報を符号化することができる。
【0036】
図3に示すように、予測モジュール304または予測モジュール306によって生成された予測ユニットに基づいて予測を実行した予測ユニットと、残差係数情報とを含む残差ブロックを生成することができ、当該残差係数情報は、予測ユニットと元のブロックとの差分値である。生成された残差ブロックは、変換モジュール308に入力できる。
【0037】
【0038】
量子化モジュール310は、符号化ブロック内の各位置の係数を量子化して、位置の量子化レベルを生成するように構成され得る。現在ブロックは、残差ブロックであり得る。つまり、量子化モジュール310は、各残差ブロックに対して量子化処理を実行することができる。残差ブロックは、N×M個の位置(サンプル)を含み得、各位置(サンプル)は、ルーマ(luma)および/またはクロマ(chroma)情報などの、変換されたまたは変換されていないビデオ信号/データに関連付けられ、ここで、NおよびMは正の整数である。本発明では、量子化前に、特定の位置にある変換されたまたは変換されていないビデオ信号は、本明細書では「係数」と呼ばれる。量子化後、当該係数の量子化値は、本明細書では「量子化レベル」または「レベル」と呼ばれる。
【0039】
量子化を使用して、変換されたまたは変換されていないビデオ信号のダイナミックレンジを減らすことができ、これにより、より少ないビット数でビデオ信号を表現することができる。量子化は、通常、量子化ステップ長による除算と丸めを含み、逆量子化(反量子化とも呼ばれる)は、量子化ステップ長による乗算を含む。量子化ステップ長は、量子化パラメータ(QP:quantization parameter)で指示することができる。このような量子化プロセスはスカラー量子化と呼ばれる。1つの符号化ブロック内のすべての係数の量子化は独立して行うことができ、このような量子化方法は、H.264/AVCやH.265/HEVCなどのいくつかの既存のビデオ圧縮規格で使用されている。量子化におけるQPは、ビデオ符号化に使用されるビットレートに影響を与える可能性がある。例えば、QPが高いとビットレートが低くなり、QPが低いとビットレートが高くなる。
【0040】
N×Mサイズの符号化ブロックの場合、特定の符号化スキャン順序を使用して、ブロックの2次元(2D)係数を1次元(1D)順序に変換して、係数量子化および符号化を行うことができる。通常、符号化スキャンは、符号化ブロックの左上隅から始まり、符号化ブロックの右下隅または右下方向の最後の非ゼロ係数/レベルで停止する。なお、符号化スキャン順序は、ジグザグスキャン順序、垂直(列)スキャン順序、水平(行)スキャン順序、斜め方向スキャン順序、またはそれらの任意の組み合わせなどの任意の適切な順序を含み得る。符号化ブロック内の係数の量子化は、符号化スキャン順序情報を利用することができる。例えば、符号化スキャン順序に沿った、以前の量子化レベルの状態に依存することができる。符号化効率をさらに向上させるために、量子化モジュール310は、複数の量子化器、例えば、2つのスカラー量子化器を使用することができる。どの量子化器が現在の係数の量子化に使用されるかは、符号化スキャン順序において現在の係数の前の情報に依存することができる。このような量子化プロセスは、従属量子化と呼ばれる。
【0041】
図3を参照すると、符号化モジュール320は、符号化ブロック内の各位置の量子化レベルをビットストリームに符号化するように構成される。いくつかの実施例では、符号化モジュール320は、符号化ブロックに対してエントロピー符号化を実行することができる。エントロピー符号化は、例えば、EGk2値化、複合TR2値化、および有限EGk2値化などを含む、Golomb-Rice2値化などの様々な2値化方法を使用して、各量子化レベルを2値binなどの対応する2値表現に変換することができる。次に、VLC、CAVLC、CABAC、SBAC、PIPE符号化などのエントロピー符号化アルゴリズムを使用して、2値表現をさらに圧縮することができる。圧縮されたデータをビットストリームに追加することができる。いくつかの実施例では、符号化モジュール320は、符号化ブロックに対して残差符号化を実行して、量子化レベルをビットストリームに変換することができる。例えば、量子化後、N×Mサイズのブロックに対してN×M個の量子化レベルが存在し得る。これらのN×M個の量子化レベルは、ゼロ値または非ゼロ値であってもよい。非ゼロレベルが2値でない場合、複合TR2値化と有限EGk2値化などを使用して、非ゼロレベルを2値binにさらに2値化することができる。
【0042】
量子化レベルに加えて、符号化モジュール320は、符号化ユニットのブロックタイプ情報、予測モード情報、分割ユニット情報、予測ユニット情報、伝送ユニット情報、動きベクトル情報、参照フレーム情報、ブロック補間情報、および予測モジュール304および予測モジュール306から入力されるフィルタリング情報などの様々な他の情報を符号化することができる。量子化レベルまたは係数を除いた情報(ビデオ符号化で使用されるパラメータなど)は、シーケンス502のヘッダ、画像504のヘッダ、スライス506のヘッダ、CTU508のヘッダ、CU510のヘッダなど、異なるレベルのヘッダに編成されて含まれることができる。例えば、各シーケンス502のヘッダは、シーケンスレベル構文要素(フラグなど)を含み得、各シーケンスレベル構文要素は、対応するシーケンス502内のすべての画像504に適用される値を有し、各スライス506のヘッダは、スライスレベル構文要素(フラグなど)も含み得、各スライスレベル構文要素は、対応するスライス506内のすべてのCTU508に適用される値を有する。
【0043】
本発明の範囲と一貫して、H.266/VVCでは、ビデオ符号化のためのいくつかのパラメータは、オプションであると考えられ、例えば、各シーケンス502に常に適用できるわけではないため、これらのパラメータは、ヘッダ拡張パラメータのセットと呼ばれ得、適切なレベルでヘッダの末尾において、これらのパラメータが当該レベルに存在するか否かに基づいて定義または解析され得る。例えば、当該ヘッダ拡張パラメータセットは、例示のみを目的として以下に詳述するようなスライスレベル構文要素を含み得る。即ち、(i)最後有効係数の位置を参照するための参照位置を指示する最後有効係数逆フラグ(last significant coefficient reverse flag)、(ii)スライスが高スループットモードで符号化されているか否かを指示する高スループットモードフラグ(high throughput mode flag)、(iii)スライスの残差符号化において残差データビットがシフトするか否かを指示する残差データビットシフトフラグ(residual data bit shift flag)、(iv)スライスのルーマ/クロマ残差符号化においてシフトされたビット数を指示するルーマ/クロマシフト構文要素(luma/chroma shift syntax element)を含む。
【0044】
本発明のいくつかの態様によれば、H.266/VVCでは、符号化ブロックは、正規残差符号化(RRC:regular residual coding)を使用して符号化された変換ブロックである。4×4より大きい変換ブロックは、4×4サブブロックに分割することができ、これらのサブブロックは、逆斜め方向スキャンモードを使用して処理される。なお、H.266/VVCは、非正方形の長方形形状の変換ブロックをサポートしているため、非4×4サブブロックをサポートする。説明を容易にし、一般性を失わないために、
図6には、16×16の変換ブロックの例が示されており、当該変換ブロックは、4×4のサブブロックにさらに分割される。逆斜め方向スキャンモードは、変換ブロックのサブブロックの処理と、各サブブロック内の周波数位置の処理に使用される。
【0045】
RRCでは、最後の非ゼロレベルの位置(最後有効スキャン位置とも呼ばれる)は、符号化スキャン順序に沿った最後の非ゼロレベルの位置として定義され得る。最後の非ゼロレベルの2D座標(last_sig_coeff_xおよびlast_sig_coeff_y)は、最初に最大4つの構文要素、即ち、2つの最後有効係数プレフィックス(last_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefix)である2つのコンテキスト符号化の構文要素と、2つの最後有効係数サフィックス(last_sig_coeff_x_suffixおよびlast_sig_coeff_x_suffix)である2つのバイパス符号化の構文要素を使用して符号化することができる。サブブロック内で、RRCは最初に、コンテキスト符号化bin(context-coded bin)、即ち、符号化されたサブブロックフラグ(sb_coded_flag)を符号化して、現在のサブブロック内のすべてのレベルが0に等しいか否かを指示することができる。例えば、sb_coded_flagが1に等しい場合、現在のサブブロックに少なくとも1つの非ゼロ係数が存在する可能性があり、sb_coded_flagが0に等しい場合、現在のサブブロック内のすべての係数は0となる。なお、最後の非ゼロレベルを有する最後の非ゼロサブブロックのsb_coded_flagは、ビットストリームに符号化することなく、符号化スキャン順序に従ってlast_sig_coeff_xおよびlast_sig_coeff_yから導出され得る。同様に、ブロック全体のDCが存在する第1サブブロックのsb_coded_flagは、ビットストリームに符号化することなく、符号化スキャン順序に従って導出され得る。他のsb_coded_flagは、コンテキスト符号化binとして符号化され得る。RRCは、最後の非ゼロサブブロックから、逆符号化スキャン順序でサブブロックごとに符号化することができる。
【0046】
いくつかの実施例では、左上隅(0,0)を参照して、最後有効スキャン位置/係数の座標を測定する。高ビット深度のビデオ符号化(例えば、ビデオ符号化の高スループットモード)を伴う高ビットレート(例えば、16ビット以上)の場合、変換係数は、変換ブロック内でより広く分布される。その結果、最後有効係数スキャン位置/係数は、左上隅よりも右下隅に近くなる傾向がある。したがって、いくつかの実施例では、変換ブロックの右下隅を参照して、最後有効係数の代替座標セットを測定および符号化する。実際の座標は、幅マイナス1または高さマイナス1から代替座標を減算することによって計算することができる。いくつかの実施例では、実際の座標を符号化するときに、変換ブロックにゼロアウト(zero-out)処理を適用してもよい。例えば、座標は、(Log2ZoTbWidth<<1)-1、(Log2ZoTbHeight<<1)-1に対して符号化されてもよく、ここで、(Log2ZoTbWidth<<1)と(Log2ZoTbHeight<<1)は、変換ブロック内のゼロアウト領域の幅および高さを指し、当該ゼロアウト領域は、変換ブロック内のサブ領域として定義され、ゼロアウト領域外のすべての係数は、それぞれ0である。
【0047】
本発明の範囲と一貫して、例えば、特定シーケンスのヘッダ拡張にシーケンスレベルフラグ(sps_reverse_last_sig_coeff_enabled_flag)を提供して、当該シーケンス内のスライスに対してスライスレベルフラグ(sh_reverse_last_sig_coeff_flag)をイネーブルにするか否かを指示する。スライスレベルフラグ(sh_reverse_last_sig_coeff_flag)は、スライスにおける最後有効係数の位置を参照するための参照位置を指示する最後有効係数逆フラグであり得、シーケンスレベルフラグ(sps_reverse_last_sig_coeff_enabled_flag)は、対応するシーケンスにおける最後有効係数逆フラグの使用のイネーブルメント(enablement)/ディセーブルメント(disablement)を示すフラグであり得る。すると、例えば、シーケンス内の各スライスのヘッダに、対応するスライスレベルフラグ(sh_reverse_last_sig_coeff_flag)が提供され、当該フラグの値は、最後有効係数の位置を参照するための参照位置(例えば、左上隅または右下隅)、即ち、対応するスライス内の最後有効係数に対して、代替座標を使用するか否かを指示する。例えば、シーケンスヘッダ拡張(sequence header extension)内のsps_reverse_last_sig_coeff_enabled_flagが1に等しい場合、シーケンス内の各スライスについて、代替座標の使用は、スライスヘッダ内のsh_reverse_last_sig_coeff_flagによってさらにシグナリングされる。sh_reverse_last_sig_coeff_flagが1に等しい場合、対応するスライスの代替座標を使用して最後有効係数を符号化することができる。そうでない場合、最後有効係数の正規座標は、対応するスライスに使用され得る。シーケンスヘッダ拡張内のsps_reverse_last_sig_coeff_enabled_flagが0に等しい場合、最後有効係数の正規座標は、sh_reverse_last_sig_coeff_flagを使用してスライスレベルで更にシグナリングすることなく、シーケンス内のすべてのスライスに使用され得る。以下の例では、シーケンスヘッダ拡張内のsps_reverse_last_sig_coeff_enabled_flaggと、スライスヘッダ内のsh_reverse_last_sig_coeff_flagについて説明する。
【表1】
【0048】
本発明のいくつかの態様によればH.266/VVC、H.265/HEVC、およびH.264/AVCに使用される、コンテキスト適応モデリングベースの2値算術符号化(CABAC:context-adaptive modeling based binary arithmetic coding)は、binを使用して位置の量子化レベルをビットに符号化する。CABACは、コンテキストモデリングベースの2つの符号化方法を使用する。コンテキストベースの方法は、隣接する符号化情報に基づいてコンテキストモデルを適応的に更新する。この方法で符号化されたbinは、コンテキスト符号化bin(CCB:context-coded bin)と呼ばれる。これに対して、他のバイパス方法は、1または0の確率が常に50%であると想定しているため、適応なしで常に固定のコンテキストモデリングを使用する。この方法で符号化されたbinは、バイパス符号化bin(BCB:bypass-coded bin)と呼ばれる。高ビット深度および高ビットレートのビデオ符号化では、スループットがより深刻な問題となる。しかしながら、バイパス符号化binの符号化に比べて、コンテキスト符号化binを使用した符号化は、一般に、比較的複雑なハードウェア実装を必要とし、ビデオ符号化のスループットを低下させるため、高ビット深度および高ビットレートのビデオ符号化のスループットの改善のネックとなっている。
【0049】
ビデオ符号化のスループット、特に、高ビット深度および高ビットレートのビデオ符号化のスループットを向上させるために、例えば、より良いスループットを得るために高ビット深度および高ビットレートのビデオ符号化を必要とするアプリケーションの場合、必要に応じて、残差符号化中に高スループットモードをイネーブルにすることができる。いくつかの実施例では、高スループットモードにおいて、残差符号化のためのコンテキスト符号化binの一部または全部をバイパス符号化binに変更することができる。いくつかの実施例では、高スループットモードにおいて、残差符号化のためのコンテキスト符号化binの一部またはすべてをスキップすることができる。その結果、高スループットモードにおいて、バイパス符号化binのみが残差符号化に使用され得る。さらに、バイパスビットアライメント(Bypass bit-alignment)を高スループットモードで適用して、バイパス符号化のスループットをさらに向上させることができる。バイパス符号化は、ビットアライメントを適用した後に通常のCABAC操作を経る代わりに、シフト操作によって実現できるため、複数のバイパス符号化ビンを使用して同時に符号化することが可能になる。高スループットモードでは、バイパスビットアライメントは、現在の符号化ブロックの符号化処理の開始、変換ユニットの符号化処理の開始など、必要に応じて残差符号化の異なる段階で呼び出すことができる。
【0050】
最悪のケースのスループットを確保するために、残りのコンテキスト符号化bin(remBinsPass1)の値を使用して、コンテキスト符号化binの最大数を制限することができる。remBinsPass1の初期値は、少なくとも部分的には、符号化ブロックの長さと幅に基づいて計算することができる。サブブロック内では、RRCは、逆符号化スキャン順序で各位置のレベルを符号化することができる。事前に定義された閾値とremBinsPass1を比較して、コンテキスト符号化binの最大数に達したか否かを決定することができる。例えば、H.266/VVCにおけるremBinsPass1の閾値は、4に事前定義されてもよい。
【0051】
【0052】
絶対レベルが5より大きいか、またはremBinsPass1の値が4より小さい場合、前述のコンテキスト符号化binを符号化した後、残りのレベルに対して、第2符号化パス(
図7の「パス2」)および第3符号化パス(
図7の「パス3」)において、他の2つの構文要素、即ち、残余(abs_remainder、
図7の「rem」、本発明では「残りのレベル」とも呼ばれる)および絶対レベル(dec_abs_level、
図7の「decAbsLevel」)をバイパス符号化binとしてそれぞれ符号化してもよい。また、第4符号化パス(
図7の「パス4」)において、各非ゼロレベルの係数サインフラグ(coeff_sign_flag、
図7の「sign」)も、バイパス符号化binとして符号化して、量子化レベルを完全に表してもよい。
【0053】
いくつかの実施例では、より一般的な残差符号化方法は、より大きいレベルフラグ(abs_level_gtxX_flag)および残りのレベルbinを使用して、変換ブロックのレベル符号化のための構文要素を条件付きで解析できるようにし、レベルの絶対値の対応する2値化は以下の表Iに示す。ここで、abs_level_gtxX_flagは、レベルの絶対値がXより大きいか否かを記述し、ここで、Xは、0、1、2.....またはNなどの整数である。abs_level_gtxX_flagが0であり、Xが0~N-1の整数である場合、abs_level_gtx(X+1)_flagは存在しない。abs_level_gtxX_flagが1である場合、abs_level_gtx(X+1)_flagが存在する。また、abs_level_gtxN_flagが0である場合、残余(remainder)は存在しない。abs_level_gtxN_flagが1である場合、残余が存在し、当該残余は、レベルから(N+1)を取り除いた値を表す。通常、abs_level_gtxX_flagは、コンテキスト符号化binとして符号化され、残りのレベルbinは、バイパス符号化binとして符号化されることができる。
【表2】
【0054】
図8Aは、本発明のいくつかの実施例による、RRCにおける例示的な高スループットモードを示す。
図8Aに示すように、ビットストリームは、変換ユニットの変換ユニットbinから開始してもよい。様々な変換ユニットbinは、CABACにおけるコンテキスト符号化のためのコンテキスト符号化binとして予約され得る。変換ユニットbinは、符号化されたCb変換ブロックフラグ(tu_cb_coded_flag)、符号化されたCr変換ブロックフラグ(tu_cr_coded_flag)、符号化されたルーマ変換ブロックフラグ(tu_y_coded_flag)、量子化パラメータデルタ値(cu_qp_delta_abs)、クロマ量子化パラメータオフセットフラグ(cu_chroma_qp_offset_flag)、クロマ量子化パラメータオフセットインデックス(cu_chroma_qp_offset_idx)、ジョイントクロマフラグ(tu_joint_cbcr_residual_flag)、およびトランスフォームスキップフラグ(transform_skip_flag)を含み得る。なお、変換ユニットbinは、いくつかの例における量子化パラメータデルタ符号フラグ(cu_qp_delta_sign_flag)などのバイパス符号化binをさらに含み得る。
【0055】
図8Aに示すように、変換ユニットは、ルーマサンプル(
図8Aの「Y」)の1つの符号化ブロック(例えば、RRC用の変換ブロック)と、クロマサンプルの2つの対応する符号化ブロック(
図8Aの「Cb」および「Cr」)とに対応され得る。したがって、変換ユニットbinは、それぞれY、Cb、およびCr符号化ブロックのための3つのtransform_skip_flagを含み得、それぞれがコンテキスト符号化binである。各符号化ブロックについて、transform_skip_flagの後にビットストリームに符号化/復号化される符号化ブロックの第1残差符号化binは、コンテキスト符号化binのままである最後有効係数プレフィックス(last_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefix)であってもよい。
図8Aに示すように、各符号化ブロックにおける他のすべての残差符号化binは、バイパス符号化binであってもよい。例えば、バイパス符号化された残差符号化binは、最後有効係数サフィックス(last_sig_coeff_x_suffixおよびlast_sig_coeff_y_suffix)、符号化されたサブブロックフラグ(sb_coded_flag)、絶対レベル(dec_abs_level)、および係数サインフラグ(coeff_sign_flag)を含み得る。
【0056】
つまり、last_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefixの後、sb_coded_flagの前に、各符号化ブロックに対して高スループットモードがイネーブルになってもよい。last_sig_coeff_x_sufixおよびlast_sig_coeff_y_sufixも符号化する必要のあるいくつかの実施例では、last_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefixの後、last_sig_coeff_x_sufixおよびlast_sig_coeff_y_sufixの前に、各符号化ブロックに対して高スループットモードがイネーブルになってもよい。換言すれば、last_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefixの直後に、各符号化ブロックに対して高スループットモードがイネーブルになってもよい。高スループットモードにおいて、各サブブロックの各位置について、残差符号化bin、即ち、sb_coded_flagは、コンテキスト符号化binからバイパス符号化binに変更できる。残りのコンテキスト符号化bin(remBinsPass1)の値を閾値4より小さい値(例えば0)に設定することなどにより、有効フラグ(sig_coeff_flag)、1より大きいフラグ(abs_level_gtx_flag[n][0])、パリティフラグ(par_level_flag)および大なりフラグ(abs_level_gtx_flag[n][1])などの他のすべてのコンテキスト符号化binの符号化をスキップすることができる。したがって、残りのレベル/残余(abs_remainder[n])の符号化もスキップすることができる。換言すれば、高スループットモードにおいて、符号化ブロックの各サブブロックの各位置における第1符号化パスおよび第2符号化パスをスキップすることにより、コンテキスト符号化binが第1符号化パスで現れないようにすることができる。その結果、高スループットモードにおいて、last_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefixを除き、バイパス符号化binのみを使用して各符号化ブロックを符号化することができる。各量子化レベルの符号化は、残りのレベル/残余(abs_remainder)ではなく、バイパス符号化された絶対レベル(dec_abs_level)によって行ってもよい。
【0057】
図8Bは、本発明のいくつかの実施例による、RRCにおける別の例示的な高スループットモードを示す。
図8Aのバイパス符号化とは異なり、
図8Bの高スループットモードはさらに、last_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefixをコンテキスト符号化binからバイパス符号化binに変更し、
図8Bの高スループットモードにおいて、バイパス符号化binのみを使用して各符号化ブロックを符号化することができる。
図8Bに示すように、符号化ブロックレベルで高スループットモードをイネーブルにすることができる。
図8Aの方式と比較して、
図8Bの方式は、最後有効係数プレフィックスをコンテキスト符号化binからバイパス符号化binに変更することによって、ビデオ符号化のスループットをさらに向上させることができる。非常に高いビットレートおよび高ビット深度の動作範囲の場合、ほとんどのブロックが小さいブロックサイズに符号化されるため、最後有効係数の位置のビットもかなり高くなる可能性がある。コンテキスト変数のインデックスがlast_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefixの各binに対して導出されるため、last_sig_coeff_x_prefixおよびlast_sig_coeff_y_prefixのコンテキストインデックスの導出は、スループットに影響を与える可能性がある。
【0058】
図8Cは、本発明のいくつかの実施例による、変換ユニット符号化におけるさらに別の例示的な高スループットモードを示す。
図8Bの高スループットモードとは異なり、
図8Cのバイパス符号化モードは、さらに、transform_skip_flagをコンテキスト符号化binからバイパス符号化binに変更する。
【0059】
図8Dは、本発明のいくつかの実施例による、変換ユニット符号化におけるさらに別の例示的な高スループットモードを示す。
図8Cとは異なり、
図8Dの高スループットモードは、さらに、変換ユニットの変換ユニットbinをコンテキスト符号化binからバイパス符号化binに変更して、変換ユニットのすべての変換ユニットbinも高スループットモードでバイパス符号化binとして符号化されるようにする。例えば、バイパス符号化モードでは、transform_skip_flagsに加えて、tu_cb_coded_flag、tu_cr_coded_flag、tu_y_coded_flag、cu_qp_delta_abs、cu_chroma_qp_offset_flag、cu_chroma_qp_offset_idx、およびtu_joint_cbcr_residual_flagをコンテキスト符号化binからバイパス符号化binに変更することもできる。その結果、
図8Dの高スループットモードでは、バイパス符号化binのみを使用して変換ユニットおよび3つの対応する符号化ブロックを符号化することができる。
図8Cの方式と比較して、
図8Dのバイパス符号化モードは、変換ユニットbinをバイパス符号化binのみとして符号化して、変換ユニットを符号化するときに、CABAC符号化エンジンによるコンテキスト符号化とバイパス符号化との間の切り替えを回避することによって、ビデオ符号化のスループットをさらに向上させることができる。バイパス符号化モードは、変換ユニットレベルでイネーブルにすることができる。
【0060】
本発明の範囲と一貫して、別のシーケンスレベルフラグ(sps_high_throughput_mode_enabled_flag)は、例えば、特定シーケンスのヘッダ拡張で提供され、当該シーケンス内のスライスに対してスライスレベルフラグ(sh_high_throughput_mode_flag)がイネーブルになっているか否かを指示する。すると、対応するスライスレベルフラグ(sh_high_throughput_mode_flag)は、例えば、シーケンス内の各スライスのヘッダ提供され、当該フラグの値は、当該スライスが高スループットモードで符号化されているか否かを指示する。例えば、シーケンスヘッダ拡張内のsps_high_throughput_mode_enabled_flagが1に等しい場合、スライスを符号化するための高スループットモードの使用は、シーケンス内の各スライスのスライスヘッダ内のsh_high_throughput_mode_flagでさらにシグナルされ得る。sh_high_throughput_mode_flagが1に等しい場合、高スループットモードでスライスを符号化してもよい。そうでない場合、高スループットモードでスライスを符号化しなくてもよい。シーケンスヘッダ拡張内のsps_high_throughput_mode_enabled_flagが0に等しい場合、シーケンス内のすべてのスライスに対して高スループットモードを呼び出さなくてもよく、sh_high_throughput_mode_flagを使用したスライスレベルでの更なるシグナリングは不要である。以下の例では、シーケンスヘッダ拡張内のsps_high_throughput_mode_enabled_flagと、スライスヘッダ内のsh_high_throughput_mode_flagについて説明する。
【表3】
【0061】
本発明のいくつかの態様によれば、重要性(significance)、GT1、およびGT2が数ビット左にシフトされる、残差データの符号化の修正が使用され得る。これは、フラグ自体の符号化効率は低いが、係数値に関するより多くの情報を与えるため、係数符号化の効率を向上させることができる。セットbinの割合の減少により、係数の数が減少するため、Golomb-Rice符号化が必要である。
【0062】
本発明の範囲と一貫して、さらに別のシーケンスレベルフラグ(sps_shift_residual_data_enabled_flag)は、例えば、特定シーケンスのヘッダ拡張で提供され、当該シーケンス内のスライスに対してスライスレベル構文要素(slice_flagshift_lumaおよびslice_flagshift_chroma)がイネーブルになっているか否かを指示する。スライスレベル構文要素(slice_flagshift_lumaおよびslice_flagshift_chroma)は、スライスの残差符号化におけるルーマ/クロマデータのシフトビット数を指示する構文要素であってもよく、シーケンスレベルフラグ(sps_shift_residual_data_enabled_flag)は、対応するシーケンスにおいて、スライスレベルビットシフト構文要素の使用のイネーブルメント/ディセーブルメントを指示するフラグであってもよい。すると、対応するスライスレベル構文要素(slice_flagshift_lumaおよびslice_flagshift_chroma)は、例えば、シーケンス内の各スライスのヘッダで提供され、これらの構文要素の値は、当該スライスのルーマ/クロマ残差符号化におけるシフトビット数を指示する。例えば、シーケンスヘッダ拡張内のsps_shift_residual_data_enabled_flagが1に等しい場合、シーケンス内の各スライスについて、スライスを符号化するための残差データビットシフトの使用は、スライスヘッダ内のslice_flagshift_lumaおよびslice_flagshift_chromaでさらにシグナルされ得る。slice_flagshift_lumaおよびslice_flagshift_chromaの値は、対応するルーマおよびクロマ残差データに対してシフトされたビット数を指示することができる。シーケンスヘッダ拡張内のsps_shift_residual_data_enabled_flagが0に等しい場合、シーケンス内のすべてのスライスに対して残差データビットシフティングを呼び出さなくてもよいため、slice_flagshift_lumaおよびslice_flagshift_chromaを使用してスライスレベルでさらに指定する必要がない。以下の例では、シーケンスヘッダ拡張内のsps_shift_residual_data_enabled_flag、およびスライスヘッダ内のslice_flagshift_lumaおよびslice_flagshift_chromaについて説明する。
【表4】
【0063】
いくつかの実施例では、シーケンスレベルフラグ(sps_shift_residual_data_enabled_flag)と、スライスレベル構文要素(slice_flagshift_lumaおよびslice_flagshift_chroma)との間に、別のスライスレベルフラグ(sh_shift_residual_data_enabled_flag)を追加して、スライスレベルでの条件チェック/解析の別のレイヤを追加する。例えば、特定シーケンスのヘッダ拡張で提供されるsps_shift_residual_data_enabled_flagは、残差データビットシフトフラグ(sh_shift_residual_data_enabled_flag)が、当該シーケンス内のスライスに対して、当該スライスの残差符号化における残差データビットシフトがイネーブルになっているか否かを指示するか否かを指示することができる。すると、対応するスライスレベルフラグ(sh_shift_residual_data_enabled_flag)は、例えば、シーケンス内の各スライスのヘッダで提供され、当該フラグの値(「0」または「1」)は、スライスの残差符号化において残差データビットがシフトするか否かを指示する。例えば、スライスヘッダ内のsh_shift_residual_data_enabled_flagが1に等しい場合、上述のように、スライスの残差符号化における残差データビットシフトの使用は、slice_flagshift_lumaおよびslice_flagshift_chromaによってさらに指定され得る。そうでない場合、スライスは、残差データビットシフトなしで符号化でき、slice_flagshift_lumaおよびslice_flagshift_chromaの値をさらに指定する必要がない。以下の例では、スライスヘッダ内のsh_shift_residual_data_enabled_flag、slice_flagshift_luma、およびslice_flagshift_chromaについて説明する。
【表5】
【0064】
上述したように、上記の最後有効係数逆フラグ、高スループットモードフラグ、残差データビットシフトフラグ、およびルーマ/クロマシフトフラグは、構文要素の例であり、これらの構文要素は、スライスレベルでそれらの値によって指定され、対応するシーケンスレベルフラグによってシーケンスレベルでイネーブル(enabled)/デイセーブル(disabled)され得る。これらの構文要素の例は、他の任意の適切な構文要素とともに、任意の適切なレベルのヘッダ拡張パラメータセットに属するパラメータの一部であってもよい。本発明の範囲と一貫して、PPSフラグ(pps_slice_header_extension_present_flag)は、例えば、任意の適切なレベルのヘッダで提供され、当該レベルのヘッダ拡張パラメータセットが存在するか否かを指示する。特定のシーケンスレベルフラグ(例えば、sps_reverse_last_sig_coeff_enabled_flag、sps_high_throughput_mode_enabled_flag、およびsps_shift_residual_data_enabled_flag)は、例えば、シーケンスのヘッダ拡張で提供され、それらの値は、上記で詳細に説明したように、シーケンスおいて、対応するヘッダ拡張パラメータがイネーブルになっているか否かを指示する。例えば、pps_slice_header_extension_present_flagが1に等しい場合、ヘッダ拡張パラメータのための特定のシーケンスレベルフラグ(例えば、sps_reverse_last_sig_coeff_enabled_flag、sps_high_throughput_mode_enabled_flag、およびsps_shift_residual_data_enabled_flag)は、シーケンスヘッダからさらに解析されることができる。pps_slice_header_extension_present_flagが0に等しい場合、ヘッダ拡張パラメータは使用されず、シーケンスを符号化するためにヘッダ拡張パラメータの特定のシーケンスレベルフラグをさらに解析する必要がない。
【0065】
本発明のいくつかの態様によれば、同じ条件チェック/解析における構文要素は一緒にグループ化され、複雑さをさらに低減し、ビデオ符号化効率を向上させることができる。例えば、構文要素の一部またはすべて(例えば、ヘッダ拡張パラメータおよびそれらに対応する特定のシーケンスレベルフラグ)は、以下の2つの例に示すように、同じ条件チェック/解析において、一般フラグ(general flag)(pps_slice_header_extension_present_flag)によってグループ化されてもよい。
【表6】
【0066】
いくつかの実施例では、設計の複雑さを低減するために、スライスヘッダ拡張において、ヘッダ拡張パラメータのスライスレベル構文要素を条件付きで解析してもよい。例えば、ヘッダ拡張パラメータのいくつかのスライスレベル構文要素によって消費されるビットの合計が複数のバイトである場合、これらの構文要素は、バイト境界に存在し得る。一例では、スライスレベル拡張のためのヘッダ拡張パラメータに5つの構文要素があり、3つの構文要素が要素ごとに1ビットを消費し、2つの構文要素が要素ごとに4ビットを消費する場合、2つの8ビット(バイト)構文を一緒に使用して、これらの5つの構文要素を表すことができ、当該バイトをバイトアラインメント境界(byte alignment boundary)に置くことにより、当該バイトをアラインメントさせるために追加のビットを使用することを回避することができる。上記の例に示すように、more_data_in_slice_header_extension( )は任意の値であり得、slice_header_extension_data_bitを指定する条件として使用され得る。例えば、スライスヘッダ内の現在の位置から、slice_header_extension_lengthの直後の位置を減算した値が(slice_header_extension_length×8)より小さい場合、more_data_in_slice_header_extension( )の戻り値はTRUEに等しく、これにより、slice_header_extension_data_bitがトリガされる。そうでない場合、more_data_in_slice_header_extension( )の戻り値は、FALSEに等しくなる。
【0067】
図3に戻って参照すると、逆量子化モジュール312は、逆量子化モジュール312によって量子化レベルを逆量子化するように構成され得、逆変換モジュール314は、変換モジュール308によって変換された係数を逆変換するように構成され得る。逆量子化モジュール312および逆変換モジュール314によって生成された再構成残差ブロックは、予測モジュール304または予測モジュール306によって予測された予測ユニットと組み合わされて、再構成ブロックを生成することができる。
【0068】
フィルタモジュール316は、デブロッキングフィルタ、サンプリング適応オフセット(SAO:Sample Adaptive Offset)フィルタ、適応ループ内フィルタ(ALF:Adaptive Loop Filter)のうちの少なくとも1つを含み得る。デブロッキングフィルタは、再構成画像内のブロック間の境界によって生成されたブロック歪みを除去することができる。SAOモジュールは、デブロッキングが実行されたビデオに対して、ピクセル単位で元のビデオに対するオフセットを補正することができる。ALFは、再構成およびフィルタリングされたビデオと元のビデオとを比較して取得される値に基づいて実行できる。バッファモジュール318は、フィルタモジュール316によって計算された再構成ブロックまたは画像を格納するように構成され得、インター予測が実行されるときに、再構成され格納されたブロックまたは画像をインター予測モジュール304に提供することができる。
【0069】
図4は、本発明のいくつかの実施例による、
図2の復号化システム200における例示的なデコーダ201の詳細ブロック図である。
図4に示すように、デコーダ201は、復号化モジュール402、逆量子化モジュール404、逆変換モジュール406、インター予測モジュール408、イントラ予測モジュール410、フィルタモジュール412、およびバッファモジュール414を備えることができる。なお、
図4に示す各要素は、ビデオデコーダにおいて互いに異なる特徴的な機能を表すために独立して示されているが、各構成要素が個別のハードウェアや単一のソフトウェアの構成ユニットによって形成されていることを意味するものではない。つまり、含まれる各要素は、説明の便宜上、単一の要素として列挙されており、少なくとも2つの要素が組み合わされて1つの要素とされてもよいし、1つの要素が複数の要素に分割されて機能を実行されてもよい。また、一部の要素は、本発明に記載された機能を実行するために必要なものではなく、性能を向上させるための任意選択的な要素であってもよい。さらに、これらの要素は、電子ハードウェア、ファームウェア、コンピュータソフトウェア、またはそれらの任意の組み合わせを使用して実装され得る。このような要素がハードウェア、ファームウェア、またはソフトウェアとして実装されるかは、デコーダ201に課される特定のアプリケーションおよび設計上の制約に依存する。
【0070】
ビデオビットストリームがビデオエンコーダ(例えば、エンコーダ101)から入力されと、入力されたビットストリームは、ビデオエンコーダのプロセスとは反対のプロセスでデコーダ201によって復号化されてもよい。したがって、説明の便宜上、上記の符号化に関する説明に対応する復号化の詳細の一部は省略される。復号化モジュール402は、ビットストリームを復号化して、符号化ブロック内の各位置の量子化レベルなど、ビットストリームに符号化された様々な情報を取得するように構成され得る。いくつかの実施例では、復号化モジュール402は、エンコーダによって実行されたエントロピー符号化(圧縮)(例えば、VLC、CAVLC、CABAC、SBAC、PIPE符号化など)に対応するエントロピー復号化(解凍)を実行して、2値表現(例えば、2値bin)を取得することができる。復号化モジュール402はさらに、Golomb-Rice2値化(例えば、EGk2値化、複合TR2値化、および有限EGk2値化などを含む)を使用して、2値表現を量子化レベルに変換することができる。変換ユニット内の位置の量子化レベルに加えて、復号化モジュール402は、Golomb-Rice2値化に使用されるパラメータ(例えば、Riceパラメータ)、符号化ユニットのブロックタイプ情報、予測モード情報、分割ユニット情報、予測ユニット情報、伝送ユニット情報、動きベクトル情報、参照フレーム情報、ブロック補間情報、およびフィルタリング情報などの様々な他の情報を復号化することができる。復号化処理中に、復号化モジュール402は、エンコーダによって使用される符号化スキャン順序に基づく逆スキャン方法で、ビットストリームに対して再配列を実行して、データを1D順序から2D再配列ブロックに再構成および再配列することができる。
【0071】
本発明の範囲と一貫して、復号化モジュール402は、ビットストリームを解析して、ヘッダ拡張パラメータの存在を指示する一般フラグ、様々なヘッダ拡張パラメータのシーケンスレベルフラグ、および様々なスライスレベルヘッダ拡張パラメータなど、本明細書で開示される異なるレベルのヘッダ拡張パラメータに関連する様々な構文要素の値を取得することができる。いくつかの実施例では、復号化モジュール402は、同じ条件(例えば、上記で詳述したようなヘッダ拡張パラメータの存在)下で、1グループの構文要素の条件付き解析を実行することができる。条件チェックの結果によっては、下位レベルの構文要素の解析はスキップされてもよい。例えば、シーケンスレベルでの条件チェックに不合格になった場合、スライスレベルフラグに対する解析はデコーダ201によって実行される必要がなくなり、そのため、デコーダ201によるプロセスが簡素化される。シーケンスレベルの条件チェックに合格になった場合、復号化モジュール402は、特定のスライスのヘッダ拡張パラメータの値を取得し、取得した値に基づいてスライスを復号化することができる。
【0072】
逆量子化モジュール404は、符号化ブロック(例えば、2D再構成ブロック)の各位置の量子化レベルを逆量子化して、各位置の係数を取得するように構成され得る。いくつかの実施例では、逆量子化モジュール404は、エンコーダによって提供される量子化パラメータに基づいて、従属逆量子化を実行することもでき、当該量子化パラメータは、例えば、各量子化器で使用される量子化ステップ長など、従属量子化で使用される量子化器に関連する情報を含む。
【0073】
逆変換モジュール406は、エンコーダによって実行されるDCT、DST、およびKLTに対してそれぞれ逆変換(例えば、逆DCT、逆DST、および逆KLT)を実行して、データを変換ドメイン(係数など)からピクセルドメイン(例えば、ルーマおよび/またはクロマ情報)に変換し戻すように構成され得る。いくつかの実施例では、逆変換モジュール406は、予測方法、現在ブロックのサイズ、予測方向などの複数の情報に従って、変換動作(例えば、DCT、DST、KLT)を選択的に実行することができる。
【0074】
インター予測モジュール408およびイントラ予測モジュール410は、復号化モジュール402によって提供される予測ブロックの生成に関する情報と、バッファモジュール414によって提供される以前に復号化されたブロックまたは画像の情報とに基づいて、予測ブロックを生成するように構成され得る。上述したように、エンコーダの動作と同じ方式でイントラ予測を実行する際、予測ユニットのサイズと、変換ユニットのサイズが同じである場合、予測ユニットの左側に存在するピクセル、左上側に存在するピクセル、および上部に存在するピクセルに基づいて、予測ユニットに対してイントラ予測を実行することができる。しかしながら、イントラ予測を実行する際、予測ユニットのサイズが変換ユニットのサイズと異なる場合、変換ユニットに基づいた参照ピクセルを使用してイントラ予測を実行することができる。
【0075】
逆変換モジュール406と、予測モジュール408または予測モジュール410の出力から組み合わされた再構成ブロックまたは再構成画像をフィルタモジュール412に提供することができる。フィルタモジュール412は、デブロッキングフィルタ、オフセット補正モジュール、およびALFを含み得る。バッファモジュール414は、再構成された画像またはブロックを格納し、それをインター予測モジュール408の参照画像または参照ブロックとして使用し、再構成画像を出力することができる。
【0076】
本発明の範囲と一貫して、符号化モジュール320および復号化モジュール402は、ビデオ符号化における構文要素の表現を編成および解析する効率を向上させ、複雑さを低減するために、本明細書に開示される様々な方案を実装するように構成され得る。
【0077】
図9は、本発明のいくつかの実施例による例示的なビデオの復号化方法900のフローチャートを示す。方法900は、復号化システム200におけるデコーダ201または任意の他の適切なビデオの復号化システムによって、シーケンスレベルおよびスライスレベルで実行され得る。以下に説明するように、方法900は、動作902、904、906、908、910、912、914、916、および918を含み得る。なお、いくつかの動作は任意選択的であってもよく、同時に実行されてもよく、
図9に示す順序と異なる順序で実行されてもよい。
【0078】
動作902において、ビットストリームを解析して第1フラグの値を取得する。当該第1フラグの値は、ヘッダ拡張パラメータセットが存在するか否かを指示する。例えば、
図4に示すように、復号化モジュール402は、入力ビットストリームを解析して、一般フラグ(pps_slice_header_extension_present_flag)の値(例えば、「0」または「1」)を取得するように構成され得る。
【0079】
動作904において、当該第1フラグの値がヘッダ拡張パラメータセットが存在することを示しているか否かを決定する。例えば、
図4に示すように、復号化モジュール402は、一般フラグの値が「1」であることはヘッダ拡張パラメータが存在することを指示し、値が「0」であることはヘッダ拡張パラメータが存在しないことを指示すると決定するように構成され得る。
【0080】
動作906において、当該第1フラグの値が当該ヘッダ拡張パラメータセットが存在することを示していることに応答して、当該ビットストリームを解析して第2フラグの値を取得する。当該第2フラグの値は、当該画像のシーケンスに対して当該ヘッダ拡張パラメータセット内の第1パラメータがイネーブルになっているか否かを指示する。当該第1パラメータは、最後有効係数の位置を参照するための参照位置を指示する最後有効係数逆フラグ、スライスが高スループットモードで符号化されているか否かを指示する高スループットモードフラグ、または当該スライスの残差符号化において残差データビットがシフトするか否かを指示する残差データビットシフトフラグを含み得る。例えば、
図4に示すように、復号化モジュール402がヘッダ拡張パラメータが存在すると決定した場合にのみ、復号化モジュール402は、入力ビットストリームをさらに解析して、ヘッダ拡張パラメータの特定のシーケンスレベルフラグ(sps_shift_residual_data_enabled_flag、sps_reverse_last_sig_coeff_enabled_flagまたはsps_high_throughput_flag)の値(例えば、「0」または「1」)を取得するように構成され得る。そうでない場合、復号化モジュール402は、ヘッダ拡張パラメータの任意の特定のシーケンスレベルフラグの値を取得するために入力ビットストリームをさらに解析しなくてもよい。
【0081】
動作908において、当該第2フラグの値が、当該画像のシーケンスに対して当該ヘッダ拡張パラメータセット内の当該第1パラメータがイネーブルになっていることを示しているか否かを決定する。例えば、
図4に示すように、復号化モジュール402は、特定のシーケンスレベルフラグの値が「1」である場合、当該シーケンスに対して対応するヘッダ拡張パラメータがイネーブルになっていることを示し、値が「0」である場合、当該シーケンスに対して対応するヘッダ拡張パラメータがディセーブルになっていることを示すと決定するように構成され得る。
【0082】
動作910において、当該第2フラグの値が、前記画像のシーケンスに対して当該第1パラメータがイネーブルになっていることを示していることに応答して、当該ビットストリームを解析して、当該画像のシーケンス内の当該スライスの1つのために使用される当該第1パラメータの値を取得する。例えば、
図4に示すように、復号化モジュール402がシーケンスに対して対応するヘッダ拡張パラメータがイネーブルになっていると決定した場合にのみ、復号化モジュール402は、入力ビットストリームをさらに解析して、対応するヘッダ拡張パラメータ(sh_shift_residual_data_flag、slice_flagshift_luma/slice_flagshift_chroma、sh_reverse_last_sig_coeff_flagまたはsh_high_throughput_mode_flag)の値を取得するように構成され得る。そうでない場合、復号化モジュール402は、対応するヘッダ拡張パラメータの値を取得するために入力ビットストリームをさらに解析しなくてもよい。
【0083】
任意選択的に、動作912において、当該第1フラグの値が、当該ヘッダ拡張パラメータセットが存在することを示していることに応答して、当該ビットストリームを解析して第3フラグの値を取得する。当該第3フラグの値は、当該画像のシーケンスに対して当該ヘッダ拡張パラメータセット内の第2パラメータがイネーブルになっているか否かを指示する。当該第2パラメータは、最後有効係数逆フラグ、高スループットモードフラグ、またはスライスの残差符号化において残差データビットがシフトするか否かを指示する残差データビットシフトフラグを含み得る。例えば、
図4に示すように、復号化モジュール402が、シーケンスに対してヘッダ拡張パラメータが存在すると決定する場合にのみ、復号化モジュール402は、入力ビットストリームをさらに解析して、別のヘッダ拡張パラメータの別の特定のシーケンスレベルフラグ(sps_shift_residual_data_enabled_flag、sps_reverse_last_sig_coeff_enabled_flagまたはsps_high_throughput_flag)の値(例えば、「0」または「1」)を取得するように構成され得る。
【0084】
任意選択的に、動作914において、当該第3フラグの値が、当該画像のシーケンスに対して当該ヘッダ拡張パラメータセット内の当該第2パラメータがイネーブルになっていることを示しているか否かを決定する。例えば、
図4に示すように、復号化モジュール402は、別の特定のシーケンスレベルフラグの値が「1」である場合、当該シーケンスに対して対応する別のヘッダ拡張パラメータがイネーブルになってることを示し、値が「0」である場合、当該シーケンスに対して対応する別のヘッダ拡張パラメータがディセーブルになっていることを示すと決定するように構成され得る。
【0085】
任意選択的に、動作916において、当該第3フラグの値が、前記画像のシーケンスに対して当該第2パラメータがイネーブルになっていることを示していることに応答して、当該ビットストリームを解析して、当該スライスのために使用される当該第2パラメータの値を取得する。例えば、
図4に示すように、復号化モジュール402がシーケンスに対して対応する別のヘッダ拡張パラメータがイネーブルになっていると決定した場合にのみ、復号化モジュール402は、入力ビットストリームをさらに解析して、対応するヘッダ拡張パラメータ(sh_shift_residual_data_flag、slice_flagshift_luma/slice_flagshift_chroma、sh_reverse_last_sig_coeff_flagまたはsh_high_throughput_mode_flag)の値を取得するように構成され得る。そうでない場合、復号化モジュール402は、対応する別のヘッダ拡張パラメータの値を取得するために入力ビットストリームをさらに解析しなくてもよい。
【0086】
動作918において、当該スライスのために使用される当該第1パラメータの値および当該第2パラメータの値に基づいて、当該スライスを復号化する。例えば、
図4に示すように、復号化モジュール402は、取得したヘッダ拡張パラメータの値に基づいてスライスを復号化するように構成され得、当該ヘッダ拡張パラメータは、最後有効係数の位置を参照するための参照位置、スライスが高スループットモードで符号化されているか否か、および/またはスライスのルーマ/クロマ残差符号化におけるシフトビットの数などである。
【0087】
図10は、本発明のいくつかの実施例による例示的なビデオの符号化方法1000のフローチャートを示す。方法1000は、符号化システム100におけるエンコーダ101または任意の他の適切なビデオの符号化システムによって、変換ユニットレベルで実行され得る。以下に説明するように、方法1000は、動作1002、1004、1006、1008、1010、1012、および1014を含み得る。なお、いくつかの動作は任意選択てきであってもよく、同時に実行されてもよく、
図10に示す順序と異なる順序で実行されてもよい。
【0088】
動作1002において、画像のシーケンス内の少なくとも1つのスライスのヘッダ拡張パラメータセット内の第1パラメータの値を決定する。当該第1パラメータは、最後有効係数の位置を参照するための参照位置を指示する最後有効係数逆フラグ、ライスが高スループットモードで符号化されているか否かを指示する高スループットモードフラグ、または当該少なくとも1つのスライスの残差符号化において残差データビットがシフトするか否かを指示する残差データビットシフトフラグを含み得る。例えば、
図3に示すように、符号化モジュール320は、スライスを符号化するときに、少なくとも1つのスライスで、対応するヘッダ拡張パラメータを使用する(例えば、高スループットモードにおいて、代替座標を使用して最後有効係数を符号化するか、または残差データビットシフトを残差符号化に適用する)必要がある場合、スライスレベルフラグ(sh_shift_residual_data_flag、sh_reverse_last_sig_coeff_flagまたはsh_high_throughput_mode_flag)内のいずれかの値は「1」に等しいと決定するように構成される。
【0089】
動作1004において、当該第1パラメータの値に基づいて、当該ヘッダ拡張パラメータセットが存在するか否かを指示する第1フラグの値を決定する。例えば、
図3に示すように、符号化モジュール320は、ヘッダ拡張パラメータのいずれかの決定された値(「0」または「1」)に基づいて、一般フラグ(pps_slice_header_extension_present_flag)の値(「0」または「1」)を決定することができる。例えば、スライスレベルフラグ(sh_shift_residual_data_flag、sh_reverse_last_sig_coeff_flagまたはsh_high_throughput_mode_flag)のいずれかの値が「1」に等しい場合、これは、少なくとも1つのスライスを符号化するときに対応するヘッダ拡張パラメータを使用する必要があることを意味し、一般フラグ(pps_slice_header_extension_present_flag)の値も「1」に等しいと決定され、これにより、ヘッダ拡張パラメータが存在することを指示することができる。
【0090】
動作1006において、当該第1パラメータの値に基づいて、当該画像のシーケンスに対して当該第1パラメータがイネーブルになっているか否かを指示する第2フラグの値を決定する。例えば、
図3に示すように、符号化モジュール320は、ヘッダ拡張パラメータの決定された値(「0」または「1」)に基づいて、対応するシーケンスレベルフラグ(sps_shift_residual_data_enabled_flag、sps_reverse_last_sig_coeff_enabled_flagまたはsps_high_throughput_flag)の値(「0」または「1」)を決定することもできる。例えば、スライスレベルフラグ(sh_shift_residual_data_flag、sh_reverse_last_sig_coeff_flagまたはsh_high_throughput_mode_flag)のいずれかの値が「1」に等しい場合、これは、少なくとも1つのスライスを符号化するときに対応するヘッダ拡張パラメータを使用する必要があることを意味し、対応するシーケンスレベルフラグ(sps_shift_residual_data_enabled_flag、sps_reverse_last_sig_coeff_enabled_flag、sps_high_throughput_flag)の値も「1」に等しいと決定され、これにより、シーケンスレベルでのヘッダ拡張パラメータのイネーブルメント(enablement)を指示することができる。
【0091】
任意選択的に、動作1008において、当該少なくとも1つのスライスの当該ヘッダ拡張パラメータセット内の第2パラメータの値を決定する。当該第2パラメータは、当該最後有効係数の位置を参照するための参照位置を指示する当該最後有効係数逆フラグ、ライスが当該高スループットモードで符号化されているか否かを指示する当該高スループットモードフラグ、または当該少なくとも1つのスライスの残差符号化において残差データビットがシフトするか否かを指示する当該残差データビットシフトフラグを含み得る。例えば、
図3に示すように、符号化モジュール320は、スライスを符号化するときに、少なくとも1つのスライスで、対応する別のヘッダ拡張パラメータを使用する(例えば、高スループットモードにおいて、代替座標を使用して最後有効係数を符号化するか、または残差データビットシフトを残差符号化に適用する)必要がある場合、スライスレベルフラグ(sh_shift_residual_data_flag、sh_reverse_last_sig_coeff_flagまたはsh_high_throughput_mode_flag)内の別の値も「1」に等しいと決定するように構成される。
【0092】
任意選択的に、動作1010において、当該第2パラメータの値に基づいて、当該画像のシーケンスに対して当該第2パラメータがイネーブルになっているか否かを指示する第3フラグの値を決定する。例えば、
図3に示すように、符号化モジュール320は、別のヘッダ拡張パラメータの決定された値(「0」または「1」)に基づいて、対応するシーケンスレベルフラグ(sps_shift_residual_data_enabled_flag、sps_reverse_last_sig_coeff_enabled_flagまたはsps_high_throughput_flag)の値(「0」または「1」)を決定することもできる。例えば、スライスレベルフラグ(sh_shift_residual_data_flag、sh_reverse_last_sig_coeff_flagまたはsh_high_throughput_mode_flag)のうちの別の1つの値が「1」に等しい場合、これは、少なくとも1つのスライスを符号化するときに対応する別のヘッダ拡張パラメータを使用する必要があることを意味し、対応するシーケンスレベルフラグ(sps_shift_residual_data_enabled_flag、sps_reverse_last_sig_coeff_enabled_flag、またはsps_high_throughput_flag)の値も「1」に等しいと決定され、これにより、シーケンスレベルでの別のヘッダ拡張パラメータのイネーブルメント(enablement)を指示することができる。
【0093】
動作1012において、当該スライスのために使用される当該第1パラメータの値および当該第2パラメータの値に基づいて、当該スライスをビットストリームに符号化する。例えば、
図3に示すように、符号化モジュール320は、ヘッダ拡張パラメータの値に基づいてスライスを符号化するように構成され得、当該ヘッダ拡張パラメータは、最後有効係数の位置を参照するための参照位置、スライスが高スループットモードで符号化されているか否か、および/またはスライスのルーマ/クロマ残差符号化におけるシフトビットの数などである。
【0094】
動作1014において、当該第1フラグの値、当該第2フラグの値、当該第1パラメータの値、および当該第2パラメータの値を、当該ビットストリームに符号化する。例えば、
図3に示すように、符号化モジュール320は、取得した、一般フラグの値、シーケンスレベルフラグの値、およびヘッダ拡張パラメータの値を、ビットストリームに符号化するように構成され得る。
【0095】
本発明の様々な態様では、本明細書で説明される機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実装することができる。ソフトウェアで実装される場合、これらの機能は、非一時的コンピュータ可読媒体内の命令として記憶され得る。コンピュータ可読媒体は、コンピュータ記憶媒体を含む。記憶媒体は、
図1および
図2のプロセッサ102などのプロセッサがアクセスできる任意の利用可能な媒体であってもよい。限定ではない例として、このようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク記憶装置、HDD(磁気ディスク記憶装置または他の磁気記憶装置)、フラッシュドライブ、SSDまたは任意の他の媒体を含み得る。当該媒体は、命令またはデータ構造の形態で所望のプログラムコードを搬送または記憶するために使用され得、処理システム(モバイル機器またはコンピュータなど)によってアクセスすることができる。本明細書で使用するディスク(disk)およびディスク(disc)は、CD、レーザーディスク、光ディスク、デジタルビデオディスク(DVD:digital video disc)、およびフロッピーディスクを含み、ディスク(disk)は通常、磁気的にデータを再生する一方、ディスク(disc)はレーザーで光学的にデータを再生する。上記の組み合わせも、コンピュータ可読媒体の範囲に含まれるべきである。
【0096】
本発明の一態様によれば、ビデオの復号化方法を開示する。当該ビデオは、画像のシーケンスを含み、各当該画像は、1つまたは複数のスライスを含む。プロセッサは、ビットストリームを解析して第1フラグの値を取得する。当該プロセッサは、当該第1フラグの値が、ヘッダ拡張パラメータセットが存在することを示しているか否かを決定する。当該第1フラグの値が、当該ヘッダ拡張パラメータセットが存在することを示していることに応答して、当該プロセッサは、当該ビットストリームを解析して第2フラグの値を取得する。当該プロセッサは、当該第2フラグの値が、当該画像のシーケンスに対して当該ヘッダ拡張パラメータセット内の当該第1パラメータがイネーブルになっていることを示しているか否かを決定する。当該第2フラグの値が、前記画像のシーケンスに対して当該第1パラメータがイネーブルになっていることを示していることに応答して、当該ビットストリームを解析して、当該画像のシーケンス内の当該スライスの1つのために使用される当該第1パラメータの値を取得する。当該プロセッサは、当該スライスのために使用される当該第1パラメータの値に基づいて、当該スライスを復号化する。
【0097】
いくつかの実施例では、当該第1パラメータは、最後有効係数の位置を参照するための参照位置を指示する最後有効係数逆フラグを含む。
【0098】
いくつかの実施例では、当該第1パラメータは、当該スライスが高スループットモードで符号化されているか否かを指示する高スループットモードフラグを含む。
【0099】
いくつかの実施例では、当該第1パラメータは、当該スライスの残差符号化において残差データビットがシフトするか否かを指示する残差データビットシフトフラグを含む。
【0100】
いくつかの実施例では、当該第2フラグの値は、当該画像のシーケンスのヘッダ拡張に符号化される。
【0101】
いくつかの実施例では、当該第1パラメータの値は、当該スライスのヘッダに符号化される。
【0102】
いくつかの実施例では、当該第1フラグの値が、当該ヘッダ拡張パラメータセットが存在することを示していることに応答して、当該プロセッサは、当該ビットストリームを解析して第3フラグの値を取得する。いくつかの実施例では、当該プロセッサは、当該第3フラグの値が、当該画像のシーケンスに対して当該ヘッダ拡張パラメータセット内の第2パラメータがイネーブルになっていることを示しているか否かを決定する。いくつかの実施例では、当該第3フラグの値が、前記画像のシーケンスに対して当該第2パラメータがイネーブルになっていることを示していることに応答して、当該プロセッサは、当該ビットストリームを解析して、当該スライスのために使用される当該第2パラメータの値を取得する。いくつかの実施例では、当該プロセッサは、当該スライスのために使用される当該第1パラメータの値および当該第2パラメータの値に基づいて、当該スライスを復号化する。
【0103】
本発明の別の態様によれば、ビデオの復号化システムは、命令を記憶するように構成されるメモリと、当該メモリに結合されたプロセッサと、を備える。当該ビデオは、画像のシーケンスを含み、各当該画像は、1つまたは複数のスライスを含む。当該プロセッサは、当該命令を実行するときに、ビットストリームを解析して第1フラグの値を取得するように構成される。当該プロセッサはさらに、当該命令を実行するときに、当該第1フラグの値が、ヘッダ拡張パラメータセットが存在することを示しているか否かを決定し、当該第1フラグの値が、当該ヘッダ拡張パラメータセットが存在することを示していることに応答して、当該ビットストリームを解析して第2フラグの値を取得するように構成される。当該プロセッサはさらに、当該命令を実行するときに、当該第2フラグの値が、当該画像のシーケンスに対して当該ヘッダ拡張パラメータセット内の当該第1パラメータがイネーブルになっていることを示しているか否かを決定し、当該第2フラグの値が、前記画像のシーケンスに対して当該第1パラメータがイネーブルになっていることを示していることに応答して、当該ビットストリームを解析して、当該画像のシーケンス内の当該スライスの1つのために使用される当該第1パラメータの値を取得するように構成される。当該プロセッサはさらに、当該命令を実行するときに、当該スライスのために使用される当該第1パラメータの値に基づいて、当該スライスを復号化するように構成される。
【0104】
いくつかの実施例では、当該第1パラメータは、最後有効係数の位置を参照するための参照位置を指示する最後有効係数逆フラグを含む。
【0105】
いくつかの実施例では、当該第1パラメータは、当該スライスが高スループットモードで符号化されているか否かを指示する高スループットモードフラグを含む。
【0106】
いくつかの実施例では、当該第1パラメータは、当該スライスの残差符号化において残差データビットがシフトするか否かを指示する残差データビットシフトフラグを含む。
【0107】
いくつかの実施例では、当該第2フラグの値は、当該画像のシーケンスのヘッダ拡張に符号化される。
【0108】
いくつかの実施例では、当該第1パラメータの値は、当該スライスのヘッダに符号化される。
【0109】
いくつかの実施例では、当該プロセッサはさらに、当該第1フラグの値が、当該ヘッダ拡張パラメータセットが存在することを示していることに応答して、当該ビットストリームを解析して第3フラグの値を取得するように構成される。いくつかの実施例では、当該プロセッサはさらに、当該第3フラグの値が、当該画像のシーケンスに対して当該ヘッダ拡張パラメータセット内の第2パラメータがイネーブルになっていることを示しているか否かを決定するように構成される。いくつかの実施例では、当該プロセッサはさらに、当該第3フラグの値が、前記画像のシーケンスに対して当該第2パラメータがイネーブルになっていることを示していることに応答して、当該ビットストリームを解析して、当該スライスのために使用される当該第2パラメータの値を取得するように構成される。いくつかの実施例では、当該プロセッサはさらに、当該スライスのために使用される当該第1パラメータの値および当該第2パラメータの値に基づいて、当該スライスを復号化するように構成される。
【0110】
本発明のさらに別の態様によれば、ビデオの符号化方法を開示する。当該ビデオは、画像のシーケンスを含み、各当該画像は、1つまたは複数のスライスを含む。プロセッサは、当該画像のシーケンス内の少なくとも1つの当該スライスのヘッダ拡張パラメータセット内の第1パラメータの値を決定する。当該プロセッサは、当該第1パラメータの値に基づいて、当該ヘッダ拡張パラメータセットが存在するか否かを指示する第1フラグの値を決定する。当該第1パラメータの値に基づいて、当該画像のシーケンスに対して当該第1パラメータがイネーブルになっているか否かを指示する第2フラグの値を決定する。当該プロセッサは、当該第1パラメータの値に基づいて、当該少なくとも1つのスライスをビットストリームに符号化する。当該プロセッサは、当該第1フラグの値、当該第2フラグの値、および当該第1パラメータの値を、当該ビットストリームに符号化する。
【0111】
いくつかの実施例では、当該第1パラメータは、最後有効係数の位置を参照するための参照位置を指示する最後有効係数逆フラグを含む。
【0112】
いくつかの実施例では、当該第1パラメータは、当該少なくとも1つのスライスが高スループットモードで符号化されているか否かを指示する高スループットモードフラグを含む。
【0113】
いくつかの実施例では、当該第1パラメータは、当該少なくとも1つのスライスの残差符号化において残差データビットがシフトするか否かを指示する残差データビットシフトフラグを含む。
【0114】
いくつかの実施例では、当該第2フラグの値は、当該画像のシーケンスのヘッダ拡張に符号化される。
【0115】
いくつかの実施例では、当該第1パラメータの値は、当該少なくとも1つのスライスのヘッダに符号化される。
【0116】
いくつかの実施例では、当該プロセッサは、当該少なくとも1つのスライスの当該ヘッダ拡張パラメータセット内の第2パラメータの値を決定する。いくつかの実施例では、当該プロセッサは、当該第2パラメータの値に基づいて、当該画像のシーケンスに対して当該第2パラメータがイネーブルになっているか否かを指示する第3フラグの値を決定する。いくつかの実施例では、当該プロセッサは、当該第1パラメータの値および当該第2パラメータの値に基づいて、当該少なくとも1つのスライスを当該ビットストリームに符号化する。いくつかの実施例では、当該プロセッサは、当該第1フラグの値、当該第2フラグの値、当該第1パラメータの値、および当該第2パラメータの値を、当該ビットストリームに符号化する。
【0117】
本発明のさらに別の態様によれば、ビデオの符号化システムは、命令を記憶するように構成されるメモリと、当該メモリに結合されたプロセッサと、を備える。当該ビデオは、画像のシーケンスを含み、各当該画像は、1つまたは複数のスライスを含む。当該プロセッサは、当該命令を実行するときに、当該画像のシーケンス内の少なくとも1つの当該スライスのヘッダ拡張パラメータセット内の第1パラメータの値を決定するように構成される。当該プロセッサはさらに、当該命令を実行するときに、当該第1パラメータの値に基づいて、当該ヘッダ拡張パラメータセットが存在するか否かを指示する第1フラグの値を決定するように構成される。当該プロセッサはさらに、当該命令を実行するときに、当該第1パラメータの値に基づいて、当該画像のシーケンスに対して当該第1パラメータがイネーブルになっているか否かを指示する第2フラグの値を決定するように構成される。当該プロセッサはさらに、当該命令を実行するときに、当該第1パラメータの値に基づいて、当該少なくとも1つのスライスをビットストリームに符号化し、当該第1フラグの値、当該第2フラグの値、および当該第1パラメータの値を、当該ビットストリームに符号化するように構成される。
【0118】
いくつかの実施例では、当該第1パラメータは、最後有効係数の位置を参照するための参照位置を指示する最後有効係数逆フラグを含む。
【0119】
いくつかの実施例では、当該第1パラメータは、少なくとも1つのスライスが高スループットモードで符号化されているか否かを指示する高スループットモードフラグを含む。
【0120】
いくつかの実施例では、当該第1パラメータは、当該少なくとも1つのスライスの残差符号化において残差データビットがシフトするか否かを指示する残差データビットシフトフラグを含む。
【0121】
いくつかの実施例では、当該第2フラグの値は、当該画像のシーケンスのヘッダ拡張に符号化される。
【0122】
いくつかの実施例では、当該第1パラメータの値は、当該少なくとも1つのスライスのヘッダに符号化される。
【0123】
いくつかの実施例では、当該プロセッサはさらに、当該少なくとも1つのスライスの当該ヘッダ拡張パラメータセット内の第2パラメータの値を決定するように構成される。いくつかの実施例では、当該プロセッサはさらに、当該第2パラメータの値に基づいて、当該画像のシーケンスに対して当該第2パラメータがイネーブルになっているか否かを指示する第3フラグの値を決定するように構成される。いくつかの実施例では、当該プロセッサはさらに、当該第1パラメータの値および当該第2パラメータの値に基づいて、当該少なくとも1つのスライスを当該ビットストリームに符号化するように構成される。いくつかの実施例では、当該プロセッサはさらに、当該第1フラグの値、当該第2フラグの値、当該第1パラメータの値、および当該第2パラメータの値を、当該ビットストリームに符号化するために構成される。
【0124】
実施例の前述の説明は、本発明の一般的な性質を明らかにするものであり、他の人は、過度の実験を行うことなく、当技術分野の知識を適用して、本発明の一般的な構想から逸脱することなく、これらの実施例を容易に変更し、および/またはこれらの実施例を様々な適用に適合させることができる。したがって、このような適合と変更は、本明細書で提出された教示およびガイダンスに基づいて開示される実施例の同等物の意味および範囲内にあることが意図される。なお、本明細書における術語または用語は、説明のためのものであり、限定のためのものではないため、本願明細書の術語または用語は、教示およびガイダンスに照らして当業者によって解釈されるべきである。
【0125】
本発明の実施例は、指定された機能とその関係の実装を示す機能的な構成要素の助けを借りて説明されている。説明の便宜上、これらの機能的な構成要素の境界は、本明細書では任意に定義されている。指定された機能とその関係が適切に実行される限り、代替境界を定義することができる。
【0126】
発明の概要および要約書は、本発明者が熟慮した、本発明のすべての実施例ではない、1つまたは複数の例示的な実施例を示すことができる。したがって、発明の概要および要約書は、本発明および添付の特許請求の範囲を何らかの形で限定することを意図するものではない。
【0127】
上記では、様々な機能ブロック、モジュール、およびステップが開示されている。提供される配置は例示的なものであり、限定するものではない。したがって、機能ブロック、モジュール、およびステップは、上記で提供された例とは異なる方法で並び替えられたり、組み合わせられたりしてもよい。同様に、いくつかの実施例は、機能ブロック、モジュール、およびステップのサブセットのみを含み、そのようなサブセットはいずれも許容される。
【0128】
本発明の広さおよび範囲は、上述の例示的な実施例のいずれかによって限定されるべきではなく、以下の特許請求の範囲およびその同等物に基づいてのみ定義されるべきである。
【国際調査報告】