(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023078462
(43)【公開日】2023-06-06
(54)【発明の名称】ビデオ符号化方法、電子機器、およびプログラム
(51)【国際特許分類】
H04N 19/124 20140101AFI20230530BHJP
H04N 19/136 20140101ALI20230530BHJP
H04N 19/176 20140101ALI20230530BHJP
H04N 19/70 20140101ALI20230530BHJP
【FI】
H04N19/124
H04N19/136
H04N19/176
H04N19/70
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023056640
(22)【出願日】2023-03-30
(62)【分割の表示】P 2022509701の分割
【原出願日】2020-08-14
(31)【優先権主張番号】62/887,660
(32)【優先日】2019-08-15
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】521248394
【氏名又は名称】ベイジン、ターチア、インターネット、インフォメーション、テクノロジー、カンパニー、リミテッド
【氏名又は名称原語表記】BEIJING DAJIA INTERNET INFORMATION TECHNOLOGY CO.,LTD.
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】チュ、ホン-チョン
(72)【発明者】
【氏名】シウ、シアオユイ
(72)【発明者】
【氏名】ワン、シアンリン
(72)【発明者】
【氏名】チェン、イー-ウェン
(72)【発明者】
【氏名】マー、ツォン-チョアン
(72)【発明者】
【氏名】イェー、ショイミン
(72)【発明者】
【氏名】ユイ、ピン
(57)【要約】
【課題】ビデオ符号化方法を提供する。
【解決手段】ビデオフレームを複数のブロックに分割し、前記複数のブロックの現在ブロックの量子化パラメータを決定し、前記現在ブロックのエスケープサンプルを識別し、前記量子化パラメータがしきい値よりも大きい場合、所定の式を用いて、前記エスケープサンプルの値に基づいて、再構成されたサンプルの値を取得し、前記量子化パラメータが前記しきい値と等しい場合、再構成されたサンプルの値を前記エスケープサンプルの値に決定し、前記量子化パラメータに関連する情報をビットストリームに符号化する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
ビデオフレームを複数のブロックに分割し、
前記複数のブロックの現在ブロックの量子化パラメータを決定し、
前記現在ブロックのエスケープサンプルを識別し、
前記量子化パラメータがしきい値よりも大きい場合、
所定の式を用いて、前記エスケープサンプルの値に基づいて、再構成されたサンプルの値を取得し、
前記量子化パラメータが前記しきい値と等しい場合、
再構成されたサンプルの値を前記エスケープサンプルの値に決定し、
前記量子化パラメータに関連する情報をビットストリームに符号化する、
ビデオ符号化方法。
【請求項2】
前記量子化パラメータがしきい値よりも大きいという決定に従って、
再構成された前記サンプルを損失プロセスによって取得し、
前記量子化パラメータが前記しきい値と等しいという決定に従って、
再構成された前記サンプルを無損失プロセスによって取得する、
請求項1に記載のビデオ符号化方法。
【請求項3】
前記所定の式は、
【表1】
のように定義されるルックアップテーブルに関連する、
請求項1に記載のビデオ符号化方法。
【請求項4】
前記量子化パラメータに関連する情報をビットストリームに符号化することは、
前記量子化パラメータに関連する情報を前記ビットストリームのシーケンスパラメータセットに符号化する、ことを含む、
請求項1に記載のビデオ符号化方法。
【請求項5】
前記エスケープサンプルに関連する追加のオーバヘッドを前記ビットストリームに符号化する、
ことをさらに含む、請求項1に記載のビデオ符号化方法。
【請求項6】
前記しきい値は4に等しい、
請求項1に記載のビデオ符号化方法。
【請求項7】
前記ビットストリームを送信する、
請求項1に記載のビデオ符号化方法。
【請求項8】
前記量子化パラメータを決定することは、
式:MAX(4,QPcu)に従って前記量子化パラメータを制限し、
QPcuは、前記現在ブロックに対応する量子化パラメータ値を表す、
請求項1に記載のビデオ符号化方法。
【請求項9】
電子機器であって、
1つ以上の処理ユニットと、
1つ以上の前記処理ユニットに接続されたメモリと、
1つ以上の前記処理ユニットによって実行されると、前記電子機器に請求項1~請求項8のいずれか1項に記載のビデオ符号化方法を実行させる、前記メモリに記憶された複数のプログラムと、
を含む、
電子機器。
【請求項10】
1つ以上のプロセッサを含む電子機器によって実行されるプログラムであって、
1つ以上の前記プロセッサによって実行されると、前記電子機器に、請求項1~請求項8のいずれか1項に記載のビデオ符号化方法を実行させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、一般に、ビデオデータの符号化および圧縮、詳細には、パレットモードを用いたビデオ符号化の方法およびシステムに関する。
【背景技術】
【0002】
デジタルビデオは、デジタルテレビ、ラップトップ又はデスクトップコンピュータ、タブレットコンピュータ、デジタルカメラ、デジタル記録装置、デジタルメディアプレーヤ、ビデオゲームコンソール、スマートフォン、ビデオテレビ会議装置、ビデオストリーミング装置等の様々な電子装置によってサポートされる。電子デバイスは、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、パート10、AVC(Advanced Video Coding)、HEVC(High Efficiency Video Coding)、およびVVC(Versatile Video Coding)規格によって定義されるビデオ圧縮/解凍規格を実装することによって、デジタルビデオデータを送信、受信、符号化、復号化、および/または格納する。ビデオ圧縮は、通常、ビデオデータに固有の冗長性を低減または除去するために、空間(イントラフレーム)予測および/または時間(インターフレーム)予測を実行することを含む。ブロックベースのビデオ符号化の場合、ビデオフレームは1つまたは複数のスライスに分割され、各スライスは符号化ツリーユニット(CTU)とも呼ばれ得る複数のビデオブロックを有する。各CTUは、所定の最小符号化ユニット(CU)サイズに達するまで、1つのCUを含むか、またはより小さなCUに再帰的に分割することができる。各CU(リーフCUとも呼ばれる)は1つまたは複数の変換ユニット(TU)を含み、各CUは、1つまたは複数の予測ユニット(PU)も含む。各CUは、イントラモード、インターモード、またはIBCモードのいずれかで符号化することができる。ビデオフレームのイントラ符号化(I)スライス内のビデオブロックは、同じビデオフレーム内の隣接ブロック内の参照サンプルに関する空間予測を使用して符号化される。ビデオフレームのインター符号化(PまたはB)スライス内のビデオブロックは、同じビデオフレーム内の隣接ブロック内の参照サンプルに関する空間予測、または他の以前および/または将来の参照ビデオフレーム内の参照サンプルに関する時間予測を使用することができる。
【0003】
以前に符号化された参照ブロック、例えば、隣接ブロックに基づく空間的または時間的予測は、符号化されるべき現在のビデオブロックのための予測ブロックをもたらす。参照ブロックを見つけるプロセスは、ブロックマッチングアルゴリズムによって達成することができる。符号化される現在のブロックと予測ブロックとの間の画素差を表す残差データは、残差ブロックまたは予測誤差と呼ばれる。インター符号化されたブロックは、予測ブロックを形成する参照フレーム内の参照ブロック、および残差ブロックを指し示す動きベクトルに従って符号化される。動きベクトルを決定するプロセスは、典型的には動き推定と呼ばれる。イントラ符号化ブロックは、イントラ予測モード及び残差ブロックに従って符号化される。さらなる圧縮のために、残差ブロックは、画素領域から変換領域、例えば周波数領域に変換され、結果として残差変換係数が得られ、次いで、量子化され得る。量子化された変換係数は、まず、2次元アレイに配置され、変換係数の1次元ベクトルを生成するために走査され、次いで、ビデオビットストリームにエントロピー符号化されて、さらに多くの圧縮を達成することができる。
【0004】
次いで、符号化されたビデオビットストリームはデジタルビデオ機能を有する別の電子装置によってアクセスされるか、または有線または無線で電子装置に直接送信されるように、コンピュータ可読記憶媒体(例えば、フラッシュメモリ)に保存される。次いで、電子デバイスはビットストリームから構文要素を得るために符号化ビデオビットストリーム
を構文解析し、ビットストリームから得られた構文要素に少なくとも部分的に基づいて符号化ビデオビットストリームから元のフォーマットにデジタルビデオデータを再構成することによって、ビデオ解凍(上述のビデオ圧縮とは反対の処理である)を実行し、再構成されたデジタルビデオデータを電子デバイスのディスプレイ上にレンダリングする。
【0005】
高精細度から4K×2Kまたは8K×4Kに至るデジタルビデオ品質では、符号化/復号化されるビデオデータの量は指数関数的に増大する。復号化ビデオデータの画質を維持しつつ、ビデオデータをより効率的に符号化/復号化する方法が、常に問題となっている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本願はビデオデータの符号化および復号化に関連する実装、さらに詳細には、パレットモードを用いたビデオの符号化および復号化のシステムおよび方法について説明する。
【課題を解決するための手段】
【0007】
本願の第1態様によれば、ビデオデータを復号化する方法は、ビットストリームから、パレットモード符号化ブロックに対応するビデオデータを受信し、パレットモード符号化ブロックに関連するパラメータセットに含まれる情報から量子化パラメータ値を決定し、パレットモード符号化ブロックの量子化エスケープサンプルを識別し、量子化パラメータ値がしきい値よりも大きいという判定に従って、再構成エスケープサンプル値を取得するために、所定の式に従って量子化されたエスケープサンプルに対して逆量子化を実行し、量子化パラメータ値がしきい値以下であるという判定に従って、再構成エスケープサンプルを量子化エスケープサンプル値に設定する。
【0008】
本願の第2態様によれば、電子機器は、1つ以上の処理ユニットと、メモリと、メモリに格納された複数のプログラムとを含む。プログラムは、1つ以上の処理ユニットによって実行されると、電子機器に、上述したようなビデオデータを復号化する方法を実行させる。
【0009】
本願の第3態様によれば、非一時的コンピュータ可読記憶媒体は、1つ以上の処理ユニットを有する電子機器によって実行される複数のプログラムを記憶する。プログラムは、1つ以上の処理ユニットによって実行されると、電子機器に、上述したようなビデオデータを復号化する方法を実行させる。
【図面の簡単な説明】
【0010】
【
図1】本開示のいくつかの実装形態による例示的なビデオ符号化および復号化システムを示すブロック図である。
【
図2】本開示のいくつかの実装形態による例示的なビデオエンコーダを示すブロック図である。
【
図3】本開示のいくつかの実装形態による例示的なビデオデコーダを示すブロック図である。
【
図4A】本開示のいくつかの実装形態による、フレームが、異なるサイズおよび形状の複数のビデオブロックに、再帰的にどのように分割されるかを示すブロック図である。
【
図4B】本開示のいくつかの実装形態による、フレームが、異なるサイズおよび形状の複数のビデオブロックに、再帰的にどのように分割されるかを示すブロック図である。
【
図4C】本開示のいくつかの実装形態による、フレームが、異なるサイズおよび形状の複数のビデオブロックに、再帰的にどのように分割されるかを示すブロック図である。
【
図4D】本開示のいくつかの実装形態による、フレームが、異なるサイズおよび形状の複数のビデオブロックに、再帰的にどのように分割されるかを示すブロック図である。
【
図4E】本開示のいくつかの実装形態による、フレームが、異なるサイズおよび形状の複数のビデオブロックに、再帰的にどのように分割されるかを示すブロック図である。
【
図5】本開示のいくつかの実装形態による、ビデオデータを符号化するためのパレットテーブルを決定し、使用する例を示すブロック図である。
【
図6】本開示のいくつかの実装形態による、パレットベースのスキームを使用してビデオデータを復号化する技法をビデオデコーダが実装する例示的なプロセスを示すフローチャートである。
【発明を実施するための形態】
【0011】
添付の図面は実施形態のさらなる理解を提供するために含まれ、本明細書に組み込まれ、本明細書の一部を構成し、説明された実施形態を示し、説明とともに、基礎となる原理を説明するのに役立つ。同様の参照符号は、対応する要素を指す。
【0012】
特定の実施例を詳細に参照し、その例を添付の図面に示す。以下の詳細な説明では、本明細書で提示される主題の理解を助けるために、多数の非限定的な特定の詳細が記載される。しかし、当業者には、特許請求の範囲から逸脱することなく、様々な代替形態を使用することができ、主題はこれらの特定の詳細なしに実施することができることが明らかであろう。例えば、本明細書で提示される主題はデジタルビデオ機能を有する多くのタイプの電子デバイス上で実施され得ることが、当業者には明らかであろう。
【0013】
図1は、本開示のいくつかの実装形態による、ビデオブロックを並列に符号化および復号化する例示的なシステム10を示すブロック図である。
図1に示すように、システム10はソースデバイス12を含み、ソースデバイス12はデスティネーションデバイス14によって後で復号化されるビデオデータを生成し、符号化する。ソースデバイス12およびデスティネーションデバイス14は、デスクトップまたはラップトップコンピュータ、タブレットコンピュータ、スマートフォン、セットトップボックス、デジタルテレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、多種多様な電子デバイスのいずれかを備えることができる。一部の実装では、ソースデバイス12及びデスティネーションデバイス14は無線通信機能を備える。
【0014】
ある実装では、デスティネーションデバイス14がリンク16を介して復号化される符号化ビデオデータを受信することができる。リンク16は、符号化されたビデオデータをソースデバイス12からデスティネーションデバイス14に移動させることができる任意のタイプの通信媒体または装置を含むことができる。一例では、リンク16は、ソースデバイス12が符号化されたビデオデータをデスティネーションデバイス14に直接リアルタイムで送信できるようにするための通信媒体を備えてもよい。符号化されたビデオデータは、無線通信プロトコルなどの通信規格に従って変調され、デスティネーションデバイス14に送信されてもよい。通信媒体は、無線周波数(RF)スペクトル、または、1つまたは複数の物理的伝送線など、任意の無線または有線通信媒体を備えることができる。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、または、インターネットのようなグローバルネットワークなどのパケットベースのネットワークの一部を形成することができる。通信媒体は、ルータ、スイッチ、ベースステーション、またはソースデバイス12からデスティネーションデバイス14への通信を容易にするために有用であり得る任意の他の機器を含み得る。
【0015】
他のいくつかの実装では、符号化されたビデオデータが出力インターフェイス22からストレージデバイス32に送信されてもよい。続いて、ストレージデバイス32内の符号化されたビデオデータは、入力インターフェイス28を介してデスティネーションデバイス14によってアクセスされることができる。ストレージデバイス32は、ハードドライブ、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、揮発性又は不揮発性メモリ、又は符号化されたビデオデータを記憶する他の任意の適切なデジタル記憶媒体のような、様々な分散又はローカルアクセスデータ記憶媒体のいずれかを含むことができる。さらなる例では、ストレージデバイス32は、ソースデバイス12によって生成される符号化ビデオデータを保持することができるファイルサーバまたは別の中間ストレージデバイスに対応することができる。デスティネーションデバイス14は、ストリーミング又はダウンロードを介してストレージデバイス32から記憶されたビデオデータにアクセスすることができる。ファイルサーバは符号化されたビデオデータを記憶し、符号化されたビデオデータをデスティネーションデバイス14に送信することができる任意のタイプのコンピュータであってもよい。例示的なファイルサーバは、ウェブサーバ、FTPサーバ、NAS(network attached storage)デバイス、またはローカルディスクドライブを含む。デスティネーションデバイス14は、無線チャネル(例えば、Wi-Fi接続)、有線接続(例えば、DSL、ケーブルモデム等)、又はファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した両方の組み合わせを含む、任意の標準データ接続を介して符号化ビデオデータにアクセスすることができる。ストレージデバイス32からの符号化されたビデオデータの伝送は、ストリーミング伝送、ダウンロード伝送、またはその両方の組み合わせであってもよい。
【0016】
図1に示すように、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェイス22とを含む。ビデオソース18はビデオキャプチャ装置、例えば、ビデオカメラ、以前キャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェイス、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステム、あるいはそのようなソースの組み合わせなどのソースを含むことができる。一例として、ビデオソース18がセキュリティ監視システムのビデオカメラである場合、ソースデバイス12およびデスティネーションデバイス14は、カメラ付き電話またはビデオ電話を形成することができる。しかしながら、本願に記載されている実装は一般にビデオ符号化に適用可能であり、無線および/または有線アプリケーションに適用可能である。
【0017】
キャプチャされた、事前キャプチャされた、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオデータは、ソースデバイス12の出力インターフェイス22を介してデスティネーションデバイス14に直接送信されてもよい。符号化されたビデオデータは、復号化および/または再生のために、デスティネーションデバイス14または他の装置によって後でアクセスされるように、ストレージデバイス32に記憶することもできる。出力インターフェイス22は、モデムおよび/または送信機をさらに含むことができる。
【0018】
デスティネーションデバイス14は、入力インターフェイス28と、ビデオデコーダ30と、ディスプレイデバイス34とを含む。入力インターフェイス28は受信機および/またはモデムを含み、リンク16を介して符号化ビデオデータを受信することができる。リンク16を介して通信されるか、またはストレージデバイス32上に提供される符号化されたビデオデータは、ビデオデータを復号化する際にビデオデコーダ30によって使用するためにビデオエンコーダ20によって生成される様々な構文要素を含むことができる。このような構文要素は、通信媒体上で送信されるか、記憶媒体上に記憶されるか、また
はファイルサーバに記憶される、符号化されたビデオデータ内に含まれてもよい。
【0019】
一部の実装では、デスティネーションデバイス14が統合ディスプレイデバイスとすることができるディスプレイデバイス34と、デスティネーションデバイス14と通信するように構成された外部ディスプレイデバイスとを含むことができる。ディスプレイデバイス34は復号化されたビデオデータをユーザに表示し、液晶ディスプレイ、プラズマディスプレイ、有機発光ダイオード、または別のタイプのディスプレイデバイスのような様々なディスプレイデバイスのいずれかを含むことができる。
【0020】
ビデオエンコーダ20およびビデオデコーダ30は、VVC、HEVC、MPEG-4、パート10、AVC(Advanced video Coding)、またはそのような規格の拡張など、独自仕様または業界規格に従って動作することができる。本願は、特定のビデオ符号化/復号化規格に限定されず、他のビデオ符号化/復号化規格に適用可能であることを理解されたい。一般に、ソースデバイス12のビデオエンコーダ20は、これらの現在または将来の規格のいずれかに従ってビデオデータを符号化するように構成され得ることが企図される。同様に、一般に、デスティネーションデバイス14のビデオデコーダ30は、これらの現在または将来の規格のいずれかに従ってビデオデータを復号化するように構成され得ることも企図される。
【0021】
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなど、様々な適切なエンコーダ回路のいずれかとして実装することができる。部分的にソフトウェアで実装される場合、電子デバイスは適切な非一時的コンピュータ可読媒体にソフトウェアの命令を格納し、本開示のビデオ符号化/復号化動作を実行するために1つまたは複数のプロセッサを使用してハードウェアで命令を実行することができる。ビデオエンコーダ20およびビデオデコーダ30のそれぞれは、1つまたは複数のエンコーダまたはデコーダに含まれてもよく、そのいずれも、それぞれの装置内の複合エンコーダ/デコーダ(CODEC)の一部として統合されてもよい。
【0022】
図2は、本願で説明されるいくつかの実装形態による例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオフレーム内のビデオブロックのイントラ予測符号化およびインター予測符号化を実行し得る。イントラ予測符号化は所与のビデオフレームまたはピクチャ内のビデオデータにおける空間冗長性を低減または除去するために、空間予測に依存する。インター予測符号化はビデオシーケンスの隣接するビデオフレームまたはピクチャ内のビデオデータにおける時間的冗長性を低減または除去するために、時間的予測に依存する。
【0023】
図2に示すように、ビデオエンコーダ20は、ビデオデータメモリ40と、予測処理ユニット41と、復号化ピクチャバッファ(DPB)64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。予測処理ユニット41はさらに、動き推定ユニット42、動き補償ユニット44、分割部45、イントラ予測処理ユニット46、イントラブロックコピーユニット48を有する。幾つかの実装形態では、ビデオエンコーダ20はまた、逆量子化ユニット58、逆変換処理ユニット60、及びビデオブロック再構成のための加算器62を含む。デブロッキングフィルタ(図示せず)を加算器62とDPB64との間に配置して、ブロック境界をフィルタリングして、再構成されたビデオからブロックノイズアーチファクトを除去することができる。インループフィルタ(図示せず)が、デブロッキングフィルタに加えて、加算器62の出力をフィルタリングするために使用されてもよい。ビデオエンコーダ20は固定また
はプログラマブルハードウェアユニットの形態をとることができ、あるいは、図示された固定またはプログラマブルハードウェアユニットのうちの1つまたは複数の間で分割されることができる。
【0024】
ビデオデータメモリ40は、ビデオエンコーダ20の構成要素によって符号化されるビデオデータを記憶することができる。ビデオデータメモリ40内のビデオデータは例えば、ビデオソース18から取得することができる。DPB64はビデオエンコーダ20によるビデオデータの符号化(例えば、イントラ予測符号化モードまたはインター予測符号化モード)に使用するための参照ビデオデータを格納するバッファである。ビデオデータメモリ40およびDPB64は、様々なメモリデバイスのいずれかによって形成することができる。様々な例では、ビデオデータメモリ40がビデオエンコーダ20の他の構成要素と共にオンチップであってもよく、またはこれらの構成要素に関してオフチップであってもよい。
【0025】
図2に示すように、ビデオデータを受信した後、予測処理ユニット41内の分割ユニット45は、ビデオデータをビデオブロックに分割する。この分割はまた、ビデオフレームを、ビデオデータに関連付けられた4分木構造などの事前定義された分割構造に従って、スライス、タイル、または他のより大きな符号化ユニット(CU)に分割することを含むことができる。ビデオフレームは、複数のビデオブロック(またはタイルと呼ばれるビデオブロックのセット)に分割することができる。予測処理ユニット41はエラー結果(例えば、符号化レート及び歪みレベル)に基づいて、現在のビデオブロックに対して、複数のイントラ予測符号化モードの1つ又は複数のインター予測符号化モードの1つのような、複数の可能な予測符号化モードの1つを選択することができる。予測処理ユニット41は結果として生じるイントラ又はインター予測符号化ブロックを加算器50に提供して、残差ブロックを生成し、続いて参照フレームの一部として使用するために符号化ブロックを再構成する加算器62に提供することができる。予測処理ユニット41はまた、動きベクトル、イントラモードインジケータ、分割情報、および他のそのような構文情報などの構文要素をエントロピー符号化ユニット56に提供する。
【0026】
現在のビデオブロックのための適切なイントラ予測符号化モードを選択するために、予測処理ユニット41内のイントラ予測処理ユニット46は空間予測を提供するために、符号化される現在のブロックと同じフレーム内の1つまたは複数の隣接ブロックに対して、現在のビデオブロックのイントラ予測符号化を実行し得る。予測処理ユニット41内の動き推定ユニット42および動き補償ユニット44は時間予測を提供するために、1つまたは複数の参照フレーム内の1つまたは複数の予測ブロックに対する現在のビデオブロックのインター予測符号化を実行する。ビデオエンコーダ20は、例えば、ビデオデータの各ブロックについて適切な符号化モードを選択するために、複数の符号化パスを実行することができる。
【0027】
いくつかの実装形態では、動き推定ユニット42がビデオフレームのシーケンス内の所定のパターンに従って、参照ビデオフレーム内の予測ブロックに対する現在のビデオフレーム内のビデオブロックの予測ユニット(PU)の変位を示す動きベクトルを生成することによって、現在のビデオフレームのインター予測モードを決定する。動き推定ユニット42によって実行される動き推定は動きベクトルを生成するプロセスであり、動きベクトルは、ビデオブロックの動きを推定する。動きベクトルは、例えば、現在のフレーム(または他の符号化ユニット)内で符号化されている現在のブロックに対する、参照フレーム(または他の符号化ユニット)内の予測ブロックに対する、現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。所定のパターンは、シーケンス内のビデオフレームをPフレームまたはBフレームとして指定することができる。イントラBCユニット48はインター予測のための動き推定ユニット42による動きベクトルの決
定に類似した方法で、イントラBC符号化のためのベクトル、例えばブロックベクトルを決定することができ、又は、ブロックベクトルを決定するために動き推定ユニット42を利用することができる。
【0028】
予測ブロックは、SAD(sum of absolute difference)、SSD(sum of square difference)、または他の差分メトリックによって決定され得る、画素差分に関して符号化されるべきビデオブロックのPUに密接に一致すると見なされる参照フレームのブロックである。いくつかの実装形態では、ビデオエンコーダ20がDPB64に格納された参照フレームのサブ整数画素位置の値を計算することができる。例えば、ビデオエンコーダ20は、参照フレームの1/4画素位置、1/8画素位置、または他の分数画素位置の値を補間することができる。従って、動き推定ユニット42は全画素位置及び分数画素位置に対して動き探索を行い、分数画素精度で動きベクトルを出力することができる。
【0029】
動き推定ユニット42は、PUの位置を、それぞれがDPB64に格納された1つまたは複数の参照フレームを識別する第1参照フレームリスト(List0)または第2参照フレームリスト(List1)から選択された参照フレームの予測ブロックの位置と比較することによって、インター予測符号化フレーム内のビデオブロックのPUの動きベクトルを計算する。動き推定ユニット42は計算された動きベクトルを動き補償ユニット44に送り、次いでエントロピー符号化ユニット56に送る。
【0030】
動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを含むことができる。現在のビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照フレームリストのうちの1つの、動きベクトルが指す予測ブロックを探し出し、DPB64から予測ブロックを取り出し、予測ブロックを加算器50に伝送することができる。次いで、加算器50は、動き補償ユニット44によって提供される予測ブロックの画素値を、符号化されている現在のビデオブロックの画素値から差し引くことによって、画素差分値の残差ビデオブロックを形成する。残差ビデオブロックを形成する画素差分値は、輝度又は彩度成分又はその両方を含むことができる。動き補償ユニット44はまた、ビデオフレームのビデオブロックを復号化する際にビデオデコーダ30によって使用されるために、ビデオフレームのビデオブロックに関連する構文要素を生成し得る。構文要素は例えば、予測ブロックを識別するために使用される動きベクトルを定義する構文要素、予測モードを示す任意のフラグ、または本明細書に記載する他の任意の構文情報を含むことができる。動き推定ユニット42および動き補償ユニット44は高度に統合されてもよいが、概念目的のために別々に図示されていることに留意されたい。
【0031】
いくつかの実装形態ではイントラBCユニット48が動き推定ユニット42および動き補償ユニット44に関連して上述したのと同様の方法でベクトルを生成し、予測ブロックをフェッチすることができるが、予測ブロックは符号化されている現在のブロックと同じフレーム内にあり、ベクトルは動きベクトルとは対照的にブロックベクトルと呼ばれる。特に、イントラBCユニット48は、現在のブロックを符号化するために使用するイントラ予測モードを決定することができる。いくつかの例では、イントラBCユニット48が例えば別個の符号化パスの間に、様々なイントラ予測モードを用いて現在のブロックを符号化し、レート歪み解析を通してそれらの性能をテストすることができる。次に、イントラBCユニット48は種々の試験されたイントラ予測モードの中で、適切なイントラ予測モードを使用し、それに応じてイントラモードインジケータを生成することができる。例えば、イントラBCユニット48は種々の試験されたイントラ予測モードに対してレート歪み解析を用いてレート歪み値を計算し、使用する適切なイントラ予測モードとして、試
験されたモードの中で最良のレート歪み特性を有するイントラ予測モードを選択することができる。レート歪み解析は一般に、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(またはエラー)の量、ならびに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラBCユニット48はどのイントラ予測モードがブロックのための最良のレート歪み値を示すかを決定するために、様々な符号化されたブロックのための歪みおよびレートから比率を計算することができる。
【0032】
他の例では、イントラBCユニット48が本明細書で説明される実装形態によるイントラBC予測のためのそのような機能を実行するために、全体的にまたは部分的に、動き推定ユニット42および動き補償ユニット44を使用することができる。いずれの場合も、イントラブロックコピーの場合、予測ブロックはSAD(sum of absolute difference)、SSD(sum of squared difference)、または他の差分メトリックによって決定され得る、画素差に関して、符号化されるブロックに密接に一致すると見なされるブロックであり得、予測ブロックの識別はサブ整数画素位置の値の計算を含み得る。
【0033】
予測ブロックがイントラ予測に従って同じフレームからであるか、あるいはインター予測に従って異なるフレームからであるかにかかわらず、ビデオエンコーダ20は、予測ブロックの画素値を、符号化されている現在のビデオブロックの画素値から差し引いて、画素差分値を形成することによって、残差ビデオブロックを形成することができる。残差ビデオブロックを形成する画素差分値は、輝度成分差分及び彩度差分の両方を含むことができる。
【0034】
イントラ予測処理ユニット46は上述したように、動き推定ユニット42及び動き補償ユニット44によって実行されるインター予測、又はイントラBCユニット48によって実行されるイントラブロックコピー予測に代わるものとして、現在のビデオブロックをイントラ予測することができる。特に、イントラ予測処理ユニット46は、現在のブロックを符号化するために使用するイントラ予測モードを決定することができる。そうするために、イントラ予測処理ユニット46は例えば、別々の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化することができ、イントラ予測処理ユニット46(または、いくつかの例ではモード選択ユニット)がテストされたイントラ予測モードから使用するための適切なイントラ予測モードを選択することができる。イントラ予測処理ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供することができる。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報をビットストリーム中に符号化することができる。
【0035】
予測処理ユニット41がインター予測またはイントラ予測のいずれかを介して現在のビデオブロックの予測ブロックを決定した後、加算器50は、現在のビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロック内の残差ビデオデータは1つまたは複数の変換ユニット(TU)に含めることができ、変換処理ユニット52に供給される。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様な変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。
【0036】
変換処理ユニット52は、得られた変換係数を量子化ユニット54に送ることができる。量子化ユニット54は、変換係数を量子化してビットレートをさらに低減する。また、量子化プロセスは、係数の一部又は全てに関連するビット深度を低減することができる。量子化の度合いは、量子化パラメータを調整することによって修正されてもよい。いくつ
かの例では、量子化ユニット54が次に、量子化変換係数を含む行列の走査を実行することができる。あるいは、エントロピー符号化ユニット56が走査を実行してもよい。
【0037】
量子化に続いて、エントロピー符号化ユニット56は例えば、コンテキスト適応可変長符号化(CAVLC)、コンテキスト適応バイナリ算術符号化(CABAC)、構文ベースのコンテキスト適応バイナリ算術符号化(SBAC)、確率間隔分割エントロピー(PIPE)符号化、または別のエントロピー符号化方法または技法を使用して、量子化された変換係数をビデオビットストリームにエントロピー符号化する。符号化されたビットストリームは次に、ビデオデコーダ30に送信されてもよいし、又は、将来のビデオデコーダ30への送信又は検索のためにストレージデバイス32にアーカイブされてもよい。エントロピー符号化ユニット56はまた、符号化されている現在のビデオフレームのための動きベクトルおよび他の構文要素をエントロピー符号化することができる。
【0038】
逆量子化ユニット58および逆変換処理ユニット60は、それぞれ逆量子化および逆変換を適用して、他のビデオブロックの予測のための参照ブロックを生成するための画素領域内の残差ビデオブロックを再構成する。上述のように、動き補償ユニット44は、DPB64に記憶されたフレームの1つまたは複数の参照ブロックから動き補償予測ブロックを生成することができる。動き補償ユニット44はまた、動き推定で使用するためのサブ整数画素値を計算するために、予測ブロックに1つまたは複数の補間フィルタを適用することができる。
【0039】
加算器62は、動き補償ユニット44によって生成された動き補償予測ブロックに再構成された残差ブロックを追加して、DPB64に記憶するための参照ブロックを生成する。次いで、参照ブロックは、後続のビデオフレーム内の別のビデオブロックを予測するための予測ブロックとして、イントラBCユニット48、動き推定ユニット42および動き補償ユニット44によって使用され得る。
【0040】
図3は、本願のいくつかの実装形態による例示的なビデオデコーダ30を示すブロック図である。ビデオデコーダ30は、ビデオデータメモリ79、エントロピー復号化ユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、加算器90、およびDPB92を含む。予測処理ユニット81はさらに、動き補償ユニット82、イントラ予測処理ユニット84、イントラBCユニット85を有している。ビデオデコーダ30は、
図2に関連してビデオエンコーダ20に関して上述した符号化プロセスとほぼ逆の復号化プロセスを実行することができる。例えば、動き補償ユニット82はエントロピー復号化ユニット80から受け取った動きベクトルに基づいて予測データを生成することができ、一方、イントラ予測ユニット84は、エントロピー復号化ユニット80から受け取ったイントラ予測モードインジケータに基づいて予測データを生成することができる。
【0041】
いくつかの例では、ビデオデコーダ30のユニットが本願の実装を実行するようにタスクを割り当てられてもよい。また、いくつかの例では、本開示の実装がビデオデコーダ30のユニットのうちの1つまたは複数の間で分割され得る。例えば、イントラBCユニット85は、単独で、または動き補償ユニット82、イントラ予測処理ユニット84、およびエントロピー復号化ユニット80などのビデオデコーダ30の他のユニットと組み合わせて、本願の実装を実行することができる。いくつかの例ではビデオデコーダ30がイントラBCユニット85を含んでいなくてもよく、イントラBCユニット85の機能は動き補償ユニット82のような予測処理ユニット81の他の構成要素によって実行されてもよい。
【0042】
ビデオデータメモリ79はビデオデコーダ30の他の構成要素によって復号化されるた
めに、符号化されたビデオビットストリームなどのビデオデータを記憶することができる。ビデオデータメモリ79に記憶されたビデオデータは例えば、ストレージデバイス32から、カメラなどのローカルビデオソースから、ビデオデータの有線または無線ネットワーク通信を介して、または物理データ記憶媒体(例えば、フラッシュドライブまたはハードディスク)にアクセスすることによって、取得することができる。ビデオデータメモリ79は、符号化ビデオビットストリームからの符号化ビデオデータを記憶する符号化ピクチャバッファ(CPB)を含むことができる。ビデオデコーダ30の復号化されたピクチャバッファ(DPB)92はビデオデコーダ30によってビデオデータを(例えば、イントラまたはインター予測符号化モードで)復号化する際に使用するための参照ビデオデータを記憶するビデオデータメモリ79およびDPB92は、シンクロナスDRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)などの様々なメモリデバイスのいずれかによって形成され得る。説明のために、ビデオデータメモリ79およびDPB92は、
図3のビデオデコーダ30の2つの別個の構成要素として示されている。しかしながら、当業者には、ビデオデータメモリ79およびDPB92が同じメモリデバイスまたは別個のメモリデバイスによって提供されてもよいことは明らかであろう。いくつかの例では、ビデオデータメモリ79がビデオデコーダ30の他の構成要素とオンチップであってもよく、またはそれらの構成要素に対してオフチップであってもよい。
【0043】
復号化プロセスの間に、ビデオデコーダ30は、符号化されたビデオフレームのビデオブロックおよび関連する構文要素を表す符号化されたビデオビットストリームを受信する。ビデオデコーダ30は、ビデオフレームレベルおよび/またはビデオブロックレベルで構文要素を受信することができる。ビデオデコーダ30のエントロピー復号化ユニット80は、ビットストリームをエントロピー復号化して、量子化された係数、動きベクトルまたはイントラ予測モードインジケータ、および他の構文要素を生成する。次に、エントロピー復号化ユニット80は、動きベクトルおよび他の構文要素を予測処理ユニット81に転送する。
【0044】
ビデオフレームがイントラ予測符号化(I)フレームとして、または他のタイプのフレーム中のイントラ符号化予測ブロックのために符号化される場合、予測処理ユニット81のイントラ予測処理ユニット84は、シグナリングされたイントラ予測モードと、現在のフレームの以前に復号化されたブロックからの参照データとに基づいて、現在のビデオフレームのビデオブロックのための予測データを生成し得る。
【0045】
ビデオフレームがインター予測符号化(すなわち、BまたはP)フレームとして符号化されるとき、予測処理ユニット81の動き補償ユニット82は、エントロピー復号化ユニット80から受信された動きベクトルおよび他の構文要素に基づいて、現在のビデオフレームのビデオブロックのための1つまたは複数の予測ブロックを生成する。予測ブロックの各々は、参照フレームリストのうちの1つの中の参照フレームから生成され得る。ビデオデコーダ30は、DPB92に記憶された参照フレームに基づくデフォルト構成技術を使用して、参照フレームリスト、リスト0およびリスト1を構成することができる。
【0046】
いくつかの例ではビデオブロックが本明細書で説明されるイントラBCモードに従って符号化される場合、予測処理ユニット81のイントラBCユニット85はエントロピー復号化ユニット80から受信されるブロックベクトルおよび他の構文要素に基づいて、現在のビデオブロックのための予測ブロックを生成する。予測ブロックは、ビデオエンコーダ20によって定義された現在のビデオブロックと同じピクチャの再構成された領域内にあってもよい。
【0047】
動き補償ユニット82および/またはイントラBCユニット85は動きベクトルおよび他の構文要素を構文解析することによって、現在のビデオフレームのビデオブロックの予測情報を決定し、次いで、その予測情報を使用して、復号化されている現在のビデオブロックの予測ブロックを生成する。例えば、動き補償ユニット82は受信した構文要素のうちのいくつかを使用して、ビデオフレームのビデオブロックを符号化するために使用される予測モード(例えば、イントラ予測またはインター予測)、インター予測フレームタイプ(例えば、BまたはP)、フレームのための参照フレームリストのうちの1つまたは複数のための構成情報、フレームの各インター予測符号化ビデオブロックのための動きベクトル、フレームの各インター予測符号化ビデオブロックのためのインター予測ステータス、および現在のビデオフレーム中のビデオブロックを復号化するための他の情報を決定する。
【0048】
同様に、イントラBCユニット85は受信した構文要素のいくつか、例えばフラグを使用して、現在のビデオブロックがイントラBCモードを使用して予測されたこと、フレームのどのビデオブロックが再構成領域内にあり、DPB92に格納されるべきであるとの構成情報、フレームの各イントラBC予測ビデオブロックのブロックベクトル、フレームの各イントラBC予測ビデオブロックのイントラBC予測ステータス、および現在のビデオフレーム内のビデオブロックを復号化するための他の情報を決定することができる。
【0049】
また、動き補償ユニット82はビデオブロックの符号化中にビデオエンコーダ20によって使用されるような補間フィルタを使用して補間を実行し、参照ブロックのサブ整数画素に対する補間値を計算してもよい。この場合、動き補償ユニット82は受信した構文要素からビデオエンコーダ20によって使用される補間フィルタを決定し、補間フィルタを使用して予測ブロックを生成することができる。
【0050】
逆量子化ユニット86は、ビデオフレーム内の各ビデオブロックに対してビデオエンコーダ20によって計算された同じ量子化パラメータを使用して、エントロピー復号化ユニット80によって復号されたビットストリームおよびエントロピーに提供された量子化された変換係数を逆量子化して、量子化の程度を決定する。逆変換処理ユニット88は画素領域内の残差ブロックを再構成するために、逆変換、例えば、逆DCT、逆整数変換、または概念的に類似した逆変換処理を変換係数に適用する。
【0051】
動き補償ユニット82またはイントラBCユニット85がベクトルおよび他の構文要素に基づいて現在のビデオブロックのための予測ブロックを生成した後、加算器90は、逆変換処理ユニット88からの残差ブロックと、動き補償ユニット82およびイントラBCユニット85によって生成された対応する予測ブロックとを加算することによって、現在のビデオブロックのための復号化されたビデオブロックを再構成する。インループフィルタ(図示せず)を加算器90とDPB92との間に配置して、復号化されたビデオブロックをさらに処理することができる。所定のフレーム内の復号化されたビデオブロックは、次のビデオブロックの後続の動き補償のために使用される参照フレームを格納するDPB92に格納される。DPB92、またはDPB92とは別個のメモリデバイスは
図1のディスプレイデバイス34のようなディスプレイデバイス上に後で提示するために、復号化されたビデオを記憶することもできる。
【0052】
典型的なビデオ符号化プロセスでは、ビデオシーケンスが典型的にはフレームまたはピクチャの順序付けられたセットを含む。各フレームは、SL、SCb、およびSCrで示される3つのサンプルアレイを含むことができる。SLは、輝度サンプルの2次元アレイである。SCbは、Cb彩度サンプルの2次元アレイである。SCrは、Cr彩度サンプルの2次元アレイである。他の例では、フレームは単色であってもよく、したがって、輝度サンプルの1つの2次元アレイのみを含む。
【0053】
図4Aに示すように、ビデオエンコーダ20(またはより具体的には分割ユニット45)は、最初にフレームを符号化ツリーユニット(CTU)セットに分割することによって、フレームの符号化表現を生成する。ビデオフレームは、左から右へ、および上から下へのラスタ走査順序で連続的に順序付けられた整数個のCTUを含むことができる。各CTUは最大の論理符号化単位であり、CTUの幅および高さは、ビデオシーケンス内のすべてのCTUが128×128、64×64、32×32、および16×16のうちの1つと同じサイズを有するように、シーケンスパラメータセットでビデオエンコーダ20によってシグナリングされる。しかし、本願は、必ずしも特定のサイズに限定されないことに留意されたい。
図4Bに示すように、各CTUは、輝度サンプルの1つの符号化ツリーブロック(CTB)、彩度サンプルの2つの対応する符号化ツリーブロック、および符号化ツリーブロックのサンプルを符号化するために使用される構文要素を備えることができる。構文要素は、インターまたはイントラ予測、イントラ予測モード、動きベクトル、および他のパラメータを含む、画素の符号化ブロックの異なるタイプのユニットのプロパティ、およびビデオシーケンスがビデオデコーダ30においてどのように再構成され得るかを記述する。モノクロピクチャまたは3つの別々のカラープレーンを有するピクチャでは、CTUが単一の符号化ツリーブロックと、符号化ツリーブロックのサンプルを符号化するために使用される構文要素とを備えることができる。符号化ツリーブロックは、サンプルのN×Nブロックであってもよい。
【0054】
より良好な性能を達成するために、ビデオエンコーダ20はCTUの符号化ツリーブロック上で、2分木分割、3分木分割、4分木分割、または両方の組合せなどのツリー分割を再帰的に実行し、CTUをより小さい符号化単位(CU)に分割することができる。
図4Cに示すように、64×64CTU400は、まず、各々が32×32のブロックサイズを有する4つのより小さなCUに分割される。4つのより小さいCUの中で、CU410およびCU420は、それぞれ、ブロックサイズによって16×16の4つのCUに分割される。2つの16×16CU430および440はそれぞれ、ブロックサイズによって8×8の4つのCUにさらに分割される。
図4Dは
図4Cに示されるようなCTU400の分割プロセスの最終結果を示す4分木データ構造を示し、4分木の各リーフノードは、32×32から8×8の範囲のそれぞれのサイズの1つのCUに対応する。
図4Bに示すCTUと同様に、各CUは、輝度サンプルの符号化ブロック(CB)と、同じサイズのフレームの彩度サンプルの2つの対応する符号化ブロックと、符号化ブロックのサンプルを符号化するために使用される構文要素とを備えることができる。モノクロピクチャまたは3つの別々のカラープレーンを有するピクチャでは、CUが単一の符号化ブロックと、符号化ブロックのサンプルを符号化するために使用される構文構造とを備えることができる。
図4Cおよび
図4Dに示された4分木分割は例示の目的のためだけのものであり、1つのCTUをCUに分割して、4分木/3分木/2分木分割に基づいて様々なローカル特性に適応させることができることに留意されたい。マルチタイプツリー構造では1つのCTUが4分木構造によって分割され、各4分木リーフCUは2分木構造および3分木構造によってさらに分割することができる。
図4Eに示すように、5つの分割タイプ、すなわち、4分木分割、水平2分木分割、垂直2分木分割、水平3分木分割、および垂直3分木分割がある。
【0055】
いくつかの実装形態では、ビデオエンコーダ20がCUの符号化ブロックを1つまたは複数のM×N予測ブロック(PB)にさらに分割することができる。予測ブロックは、同じ予測、インターまたはイントラが適用されるサンプルの矩形(正方形または非正方形)ブロックである。CUの予測ユニット(PU)は、輝度サンプルの予測ブロックと、彩度サンプルの2つの対応する予測ブロックと、予測ブロックを予測するために使用される構文要素とを備え得る。モノクロピクチャまたは3つの別個のカラープレーンを有するピクチャでは、PUが単一の予測ブロックと、予測ブロックを予測するために使用される構文構造とを備えることができる。ビデオエンコーダ20は、CUの各PUの輝度、Cb、およびCr予測ブロックについて、予測輝度、Cb、およびCrブロックを生成することができる。
【0056】
ビデオエンコーダ20はPUに対する予測ブロックを生成するために、イントラ予測またはインター予測を使用してもよい。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連するフレームの復号化されたサンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連するフレーム以外の1つまたは複数のフレームの復号化サンプルに基づいて、PUの予測ブロックを生成し得る。
【0057】
ビデオエンコーダ20がCUの1つまたは複数のPUのための予測輝度、Cb、およびCrブロックを生成した後、ビデオエンコーダ20は、CUの輝度残差ブロック内の各サンプルがCUの予測輝度ブロックのうちの1つ内の輝度サンプルと、CUの元の輝度符号化ブロック内の対応するサンプルとの間の差を示すように、元の輝度符号化ブロックからCUの予測輝度ブロックを減算することによって、CUのための輝度残差ブロックを生成し得る。同様に、ビデオエンコーダ20は、CUのCb残差ブロック内の各サンプルがCUの予測Cbブロックのうちの1つ内のCbサンプルと、CUの元のCb符号化ブロック内の対応するサンプルとの間の差を示し、CUのCr残差ブロック内の各サンプルがCUの予測Crブロックのうちの1つ内のCrサンプルと、CUの元のCr符号化ブロック内の対応するサンプルとの間の差を示し得るように、CUのためのCb残差ブロックおよびCr残差ブロックをそれぞれ生成し得る。
【0058】
さらに、
図4Cに示すように、ビデオエンコーダ20はCUの輝度、Cb、およびCr残差ブロックを1つまたは複数の輝度、Cb、およびCr変換ブロックに分解するために、4分木分割を使用してもよい。変換ブロックは、同じ変換が適用されるサンプルの矩形(正方形または非正方形)ブロックである。CUの変換ユニット(TU)は、輝度サンプルの変換ブロックと、彩度サンプルの2つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用される構文要素とを備え得る。したがって、CUの各TUは、輝度変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連付けられ得る。いくつかの例では、TUに関連する輝度変換ブロックがCUの輝度残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであってもよい。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであってもよい。モノクロピクチャまたは3つの別々のカラープレーンを有するピクチャでは、TUが単一の変換ブロックと、変換ブロックのサンプルを変換するために使用される構文構造とを備えることができる。
【0059】
ビデオエンコーダ20は、TUの輝度変換ブロックに1つ以上の変換を適用して、TUの輝度係数ブロックを生成することができる。係数ブロックは、変換係数の2次元配列であってもよい。変換係数は、スカラー量であってもよい。ビデオエンコーダ20は、TUのCb変換ブロックに1つまたは複数の変換を適用して、TUのCb係数ブロックを生成することができる。ビデオエンコーダ20は、TUのCr変換ブロックに1つ以上の変換を適用して、TU用のCr係数ブロックを生成することができる。
【0060】
係数ブロック(例えば、輝度係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化することができる。量子化とは、一般に、変換係数が量子化されて、変換係数を表現するために使用されるデータの量がおそらく減少し、さらなる圧縮が提供されるプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数を
示す構文要素をエントロピー符号化することができる。例えば、ビデオエンコーダ20は、量子化された変換係数を示す構文要素に対して、コンテキスト適応バイナリ算術符号化(CABAC)を実行することができる。最後に、ビデオエンコーダ20は符号化されたフレームと関連データの表現を形成するビット列を含むビットストリームを出力することができ、これは、ストレージデバイス32に保存されるか、またはデスティネーションデバイス14に送信されるかのいずれかである。
【0061】
ビデオエンコーダ20によって生成されたビットストリームを受信した後、ビデオデコーダ30はビットストリームを解析してビットストリームから構文要素を得ることができる。ビデオデコーダ30は、ビットストリームから得られた構文要素に少なくとも部分的に基づいて、ビデオデータのフレームを再構成してもよい。ビデオデータを再構成するプロセスは一般に、ビデオエンコーダ20によって実行される符号化プロセスと逆である。例えば、ビデオデコーダ30は、現在のCUのTUに関連付けられた係数ブロックに対して逆変換を実行して、現在のCUのTUに関連付けられた残差ブロックを再構成することができる。ビデオデコーダ30はまた、現在のCUのPUのための予測ブロックのサンプルを、現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUの符号化ブロックを再構成する。フレームの各CUについて符号化ブロックを再構成した後、ビデオデコーダ30は、フレームを再構成することができる。
【0062】
上述のように、ビデオ符号化は主に2つのモード、すなわち、イントラフレーム予測(またはイントラ予測)およびインターフレーム予測(またはインター予測)を使用してビデオ圧縮を達成する。パレットベースの符号化は、多くのビデオ符号化規格によって採用されている別の符号化方式である。画面生成コンテンツ符号化に特に適し得るパレットベースの符号化ではビデオコーダ(例えば、ビデオエンコーダ20またはビデオデコーダ30)は所与のブロックのビデオデータを表す色のパレットテーブルを形成する。パレットテーブルは所与のブロック内の最も優勢な(例えば、頻繁に使用される)画素値を含む。指定されたブロックのビデオデータで頻繁に表現されない画素値は、パレットテーブルに含まれないか、エスケープカラーとしてパレットテーブルに含まれる。
【0063】
パレットテーブルの各エントリには、パレットテーブルの対応する画素値のインデックスが含まれる。ブロック内のサンプルに対するパレットインデックスは、パレットテーブルからのどのエントリがどのサンプルを予測または再構成するために使用されるかを示すために符号化されてもよい。このパレットモードは、ピクチャ、スライス、タイル、またはその他のビデオブロックのグループ化の最初のブロックのパレット予測子を生成するプロセスから始まる。以下に説明するように、後続のビデオブロックのパレット予測子は、典型的には以前に使用されたパレット予測子を更新することによって生成される。説明のために、パレット予測子は画像レベルで定義されると仮定される。言い換えると、ピクチャはそれぞれが独自のパレットテーブルを有する複数の符号化ブロックを含むことができるが、ピクチャ全体に対する1つのパレット予測子が存在する。
【0064】
ビデオビットストリーム内のパレットエントリのシグナリングに必要なビットを減らすために、ビデオデコーダは、ビデオブロックの再構成に使用されるパレットテーブル内の新しいパレットエントリを決定するためのパレット予測子を利用することができる。例えば、パレット予測子は以前に使用されたパレットテーブルからのパレットエントリを含むことができ、あるいは最後に使用されたパレットテーブルの全てのエントリを含むことによって、最後に使用されたパレットテーブルで開始されることさえできる。一部の実装では、パレット予測子が最後に使用されたパレットテーブルからのすべてのエントリより少ないエントリを含み、その後、他の以前に使用されたパレットテーブルからのいくつかのエントリを組み込むことができる。パレット予測子は、異なるブロックを符号化するために使用されるパレットテーブルと同じサイズを有してもよく、あるいは異なるブロックを
符号化するために使用されるパレットテーブルよりも大きくても小さくてもよい。1つの例では、パレット予測子が64のパレットエントリを含む先入れ先出し(FIFO)テーブルとして実装されている。
【0065】
パレット予測子からビデオデータのブロックのパレットテーブルを生成するために、ビデオデコーダは符号化されたビデオビットストリームから、パレット予測子の各エントリに対して1ビットのフラグを受信することができる。1ビットフラグはパレット予測子の関連するエントリがパレットテーブルに含まれることを示す第1値(例えば、バイナリ1)、またはパレット予測子の関連するエントリがパレットテーブルに含まれないことを示す第2値(例えば、バイナリ0)を有することができる。パレット予測子のサイズがビデオデータのブロックに使用されるパレットテーブルより大きい場合、ビデオデコーダは、パレットテーブルの最大サイズに達すると、より多くのフラグの受信を停止することがある。
【0066】
一部の実装では、パレットテーブルの一部のエントリがパレット予測子を使用して決定される代わりに、符号化されたビデオビットストリーム内で直接シグナリングされてもよい。このようなエントリの場合、ビデオデコーダは、符号化されたビデオビットストリームから、エントリに関連する輝度成分と彩度成分の画素値を示す3つの別々のmビット値を受け取ることができる(mはビデオデータのビット深度を表す)。直接シグナリングされたパレットエントリに必要な複数のmビット値と比較して、パレット予測子から派生したそれらのパレットエントリは、1ビットフラグのみを必要とする。したがって、パレット予測子を使用していくつかのまたはすべてのパレットエントリをシグナリングすることは、新しいパレットテーブルのエントリをシグナリングするために必要とされるビット数を大幅に低減することができ、それによってパレットモード符号化の全体的な符号化効率を改善する。
【0067】
多くの場合、1つのブロックのパレット予測子は、以前に符号化された1つ以上のブロックを符号化するために使用されるパレットテーブルに基づいて決定される。しかし、ピクチャ、スライス、またはタイル内の最初の符号化ツリーユニットを符号化するとき、以前に符号化されたブロックのパレットテーブルは利用できないことがある。したがって、以前に使用したパレットテーブルのエントリを使用してパレット予測子を生成することはできない。このような場合、パレット予測子イニシャライザのシーケンスはシーケンスパラメータセット(SPS)および/またはピクチャパラメータセット(PPS)でシグナリングされることがあり、これは、以前に使用されたパレットテーブルが利用できないときにパレット予測子を生成するために使用される値である。SPSは一般に、各スライスセグメントヘッダに見られる構文要素によって参照されるPPSに見られる構文要素の内容によって決定される、符号化ビデオシーケンス(CVS)と呼ばれる一連の連続符号化ビデオ画像に適用される構文要素の構文構造を指す。PPSは一般に、各スライスセグメントヘッダに見られる構文要素によって決定されるように、CVS内の1つ以上の個々のピクチャに適用される構文要素の構文構造を指す。それゆえ、SPSは一般に、PPSより高いレベルの構文構造と見なされ、SPSに含まれる構文要素は一般に、PPSに含まれる構文要素と比較して、あまり頻繁に変更されず、ビデオデータのより大きな部分に適用されることを意味する。
【0068】
図5は本開示のいくつかの実装形態による、ピクチャ500内のビデオデータを符号化するためのパレットテーブルを決定し、使用する例を示すブロック図である。ピクチャ500は、第1パレットテーブル520に関連する第1ブロック510と、第2パレットテーブル540に関連する第2ブロック530とを含む。第2ブロック530は第1ブロック510の右側にあるので、第2パレットテーブル540は第1パレットテーブル520に基づいて決定されてもよい。パレット予測子550は画像500に関連付けられ、第1
パレットテーブル520からゼロ個以上のパレットエントリを収集し、第2パレットテーブル540内にゼロ個以上のパレットエントリを構築するために使用される。
図5に示される様々なブロックは上述のようなCTU、CU、PU、またはTUに対応することができ、ブロックは、任意の特定の符号化規格のブロック構造に限定されず、将来のブロックベースの符号化規格と互換性があり得ることに留意されたい。
【0069】
一般に、パレットテーブルは現在符号化されているブロック(例えば、
図5のブロック510または530)において支配的なおよび/または代表的な多数の画素値を含む。いくつかの例ではビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)はブロックの各彩度について別々にパレットテーブルを符号化することができる。例えば、ビデオエンコーダ20は、ブロックの輝度成分のためのパレットテーブル、ブロックの彩度Cb成分のための別のパレットテーブル、およびブロックの彩度Cr成分のためのさらに別のパレットテーブルを符号化することができる。この場合、第1パレットテーブル520及び第2パレットテーブル540は、それぞれ複数のパレットテーブルとなってもよい。他の例では、ビデオエンコーダ20がブロックのすべての彩度について単一のパレットテーブルを符号化することができる。この場合、パレットテーブルのi番目のエントリは(Yi、Cbi、Cri)の3つの値であり、各値は画素の1つの成分に対応する。したがって、第1パレットテーブル520および第2パレットテーブル540の表現は一例にすぎず、限定するものではない。
【0070】
本明細書で説明するように、第1ブロック510の実際の画素値を直接符号化するのではなく、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、パレットベースの符号化方式を使用して、インデックスI1、…、INを使用して第1ブロック510の画素を符号化することができる。例えば、第1ブロック510内の各画素について、ビデオエンコーダ20は画素のインデックス値を符号化することができ、インデックス値は、第1パレットテーブル520内の画素値に関連付けられる。ビデオエンコーダ20は第1パレットテーブル520を符号化し、デコーダ側でパレットベースの復号化のためにビデオデコーダ30によって使用される符号化されたビデオデータビットストリームでそれを送信することができる。一般に、1つ以上のパレットテーブルは、ブロックごとに送信されてもよく、または異なるブロック間で共有されてもよい。ビデオデコーダ30はビデオエンコーダ20によって生成されたビデオビットストリームからインデックス値を取得し、第1パレットテーブル520内のインデックス値の対応する画素値を使用して画素値を再構成することができる。換言すれば、ブロックに対するそれぞれのインデックス値に対して、ビデオデコーダ30は、第1パレットテーブル520内のエントリを決定してもよい。次いで、ビデオデコーダ30は、ブロック内のそれぞれのインデックス値を、第1パレットテーブル520内の決定されたエントリによって指定された画素値で置き換える。
【0071】
いくつかの実装形態ではビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)はピクチャ500に関連するパレット予測子550に少なくとも部分的に基づいて、第2パレットテーブル540を決定する。パレット予測子550は第1パレットテーブル520のエントリの一部または全部を含み、他のパレットテーブルからのエントリも含み得る。いくつかの例ではパレット予測子550が先入れ先出しテーブルを使用して実装され、ここで、第1パレットテーブル520のエントリをパレット予測子550に追加すると、パレット予測子550内の現在最も古いエントリはパレット予測子550を最大サイズ以下に保つために追い出される。他の例では、異なる技法を使用して、パレット予測子550を更新および/または維持することができる。
【0072】
一例では、ビデオエンコーダ20がブロック(例えば、第2ブロック530)ごとにpred_palette_flagを符号化して、ブロックのパレットテーブルが隣接ブ
ロック510のような1つ以上の他のブロックに関連付けられた1つ以上のパレットテーブルから予測されるかどうかを示すことができる。例えば、このようなフラグの値がバイナリである場合、ビデオデコーダ30は、第2ブロック530の第2パレットテーブル540が1つ以上の以前に復号化されたパレットテーブルから予測され、したがって、第2ブロック540のための新しいパレットテーブルがpred_palette_flagを含むビデオビットストリームに含まれないことを決定してもよい。このようなフラグがバイナリゼロである場合、ビデオデコーダ30は、第2ブロック530の第2パレットテーブル540が新しいパレットテーブルとしてビデオビットストリームに含まれていると判定してもよい。いくつかの例では、pred_palette_flagがブロックの異なる彩度ごとに別々に符号化され得る(例えば、YCbCr空間内のビデオブロックについて、1つはY、1つはCb、1つはCrの3つのフラグ)。他の例では、単一のpred_palette_flagをブロックのすべての彩度に対して符号化してもよい。
【0073】
上記の例では、pred_palette_flagはブロックごとにシグナリングされ、現在のブロックのパレットテーブルのすべてのエントリが予測されることを示している。これは、第2パレットテーブル540は第1パレットテーブル520と同一であり、付加情報はシグナリングされないことを意味する。他の例では、一つ以上の構文要素がエントリ毎にシグナリングされることがある。すなわち、フラグはそのエントリが現在のパレットテーブルの中に存在するか否かを示すために、前のパレットテーブルの各エントリに対してシグナリングすることができる。パレットエントリが予測されない場合、パレットエントリは明示的にシグナリングされてもよい。他の例では、これらの2つの方法を組み合わせることができる。
【0074】
第1のパレットテーブル520に従って第2のパレットテーブル540を予測するとき、ビデオエンコーダ20および/またはビデオデコーダ30は、予測パレットテーブルが決定されるブロックを突き止めることができる。予測パレットテーブルは、現在符号化されているブロック、すなわち第2ブロック530の1つ以上の隣接するブロックに関連付けられてもよい。
図5に示すように、ビデオエンコーダ20および/またはビデオデコーダ30は第2ブロック530の予測パレットテーブルを決定するときに、左隣接ブロック、すなわち第1ブロック510を突き止めることができる。他の例では、ビデオエンコーダ20及び/又はビデオデコーダ30がピクチャ500内の上部ブロックのような、第2ブロック530に対して他の位置に1つ以上のブロックを配置することができる。別の例では、パレットモードを使用した走査順序における最後のブロックのパレットテーブルを、第2ブロック530の予測パレットテーブルとして使用することができる。
【0075】
ビデオエンコーダ20および/またはビデオデコーダ30は、ブロック位置の所定の順序に従ってパレット予測のためのブロックを決定することができる。例えば、ビデオエンコーダ20および/またはビデオデコーダ30はパレット予測のために、最初に左隣接ブロック、すなわち第1ブロック510を識別することができる。左隣接ブロックが予測に利用可能でない場合(例えば、左隣接ブロックがイントラ予測モードまたはインター予測モードなどのパレットベースの符号化モード以外のモードで符号化されるか、またはピクチャまたはスライスの最左端に位置する場合)、ビデオエンコーダ20および/またはビデオデコーダ30は、ピクチャ500内の上側の隣接ブロックを識別することができる。ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測に利用可能なパレットテーブルを有するブロックを見つけるまで、ブロック位置の所定の順序に従って利用可能なブロックを探索し続けることができる。いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30が1つまたは複数の式、関数、規則などを適用して、1つまたは複数の隣接ブロックのパレットテーブルに基づいて、または複数の隣接ブロックの組合せに基づいて(空間的にまたは走査順に)予測パレットテーブルを生成することによって、隣接ブロックの複数のブロックおよび/または再構成されたサンプルに基
づいて予測パレットを決定することができる。一例では1つ以上の以前に符号化された隣接ブロックからのパレットエントリを含む予測パレットテーブルがエントリ数、Nを含む。この場合、ビデオエンコーダ20はまず、予測パレットテーブルと同じサイズ、すなわちサイズNを有するバイナリベクトルVをビデオデコーダ30に送信する。バイナリベクトルの各エントリは、予測パレットテーブルの対応するエントリが再利用されるか、現在のブロックのパレットテーブルにコピーされるかを示す。たとえば、V(i)=1は、隣接ブロックの予測パレットテーブルのi番目のエントリが現在のブロックのパレットテーブルに再利用またはコピーされることを意味する。現在のブロックには別のインデックスがある場合がある。
【0076】
さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30がパレット予測のための多数の潜在的な候補を含む候補リストを構築することができる。このような例では、ビデオエンコーダ20がパレット予測に使用される現在のブロックが選択されるリスト内の候補ブロックを示すために、候補リストへのインデックスを符号化することができる。ビデオデコーダ30は同じ方法で候補リストを構築し、インデックスを復号化し、復号化されたインデックスを使用して、現在のブロックと共に使用するために対応するブロックのパレットを選択することができる。別の例では、リスト内の指示された候補ブロックのパレットテーブルを、現在のブロックのパレットテーブルのエントリごとの予測用パレットテーブルとして使用することができる。
【0077】
いくつかの実装では、1つ以上の構文要素が第2パレットテーブル540のようなパレットテーブルが予測パレット(例えば、1つ以上の以前に符号化されたブロックからのエントリから構成されることがある第1パレットテーブル520)から完全に予測されるか、または第2パレットテーブル540の特定のエントリが予測されるかを示すことができる。例えば、初期構文要素は、第2パレットテーブル540内のエントリのすべてが予測されるかどうかを示すことができる。すべてのエントリが予測されるわけではないことを初期構文要素が示す場合(例えば、バイナリゼロの値を有するフラグ)、1つ以上の追加の構文要素は、第2パレットテーブル540のどのエントリが予測パレットテーブルから予測されるかを示すことができる。
【0078】
一部の実装ではパレットテーブルのサイズ、例えばパレットテーブルに含まれる画素値の数に関しては固定されていてもよいし、符号化ビットストリーム内の1つ以上の構文要素を使用してシグナリングされてもよい。
【0079】
いくつかの実装形態では、ビデオエンコーダ20がパレットテーブル内の画素値をビデオデータの対応するブロック内の実際の画素値に正確に一致させることなく、ブロックの画素を符号化することができる。例えば、ビデオエンコーダ20およびビデオデコーダ30はエントリの画素値が互いに所定の範囲内にあるときに、パレットテーブル内の異なるエントリをマージまたは結合(すなわち、量子化)することができる。換言すれば、新たな画素値の誤差マージン内にある既存の画素値が既に存在する場合、新たな画素値はパレットテーブルに追加されず、新たな画素値に対応するブロック内のサンプルは既存の画素値のインデックスで符号化される。損失符号化のこのプロセスは、ビデオデコーダ30の動作に影響を及ぼさないことに注意されたい。ビデオデコーダが特定のパレットテーブルが無損失であるか損失であるかにかかわらず、同じ方法で画素値を復号化することができる。
【0080】
いくつかの実装形態では、ビデオエンコーダ20がパレットテーブル内のエントリを、ブロック内の画素値を符号化するための予測画素値として選択することができる。次のビデオエンコーダ20は実際の画素値と選択されたエントリとの間の差を残差として決定し、残差を符号化することができる。ビデオエンコーダ20はパレットテーブル内のエント
リによって予測されるブロック内の画素についての残差値を含む残差ブロックを生成し、次いで、(
図2に関連して上述したように)変換および量子化を残差ブロックに適用することができる。このようにして、ビデオエンコーダ20は、量子化残差変換係数を生成することができる。別の例では、残差ブロックは無損失に(変換および量子化なしに)または変換なしに符号化されてもよい。ビデオデコーダ30は残差ブロックを再現するために変換係数を逆変換し、逆量子化し、次いで、予測パレット入力値と画素値に対する残差値とを用いて画素値を再構成することができる。
【0081】
いくつかの実装形態では、ビデオエンコーダ20がパレットテーブルを構築するために、デルタ値と呼ばれるエラーしきい値を決定することができる。例えば、ブロック内の位置の実際の画素値が、デルタ値以下の実際の画素値とパレットテーブル内の既存の画素値エントリとの間の絶対差を生成する場合、ビデオエンコーダ20はその位置の実際の画素値を再構成する際に使用するために、パレットテーブル内の画素値エントリの対応するインデックスを識別するためにインデックス値を送信することができる。ブロック内の位置の実際の画素値がデルタ値よりも大きい、パレットテーブル内の実際の画素値と既存の画素値エントリとの間の絶対差分値を生成する場合、ビデオエンコーダ20は実際の画素値を送信し、実際の画素値を新しいエントリとしてパレットテーブルに追加することができる。パレットテーブルを構成するために、ビデオデコーダ30は、エンコーダによってシグナリングされたデルタ値を使用するか、固定または既知のデルタ値に依存するか、またはデルタ値を推論または導出することができる。
【0082】
上述のように、ビデオエンコーダ20および/またはビデオデコーダ30はビデオデータを符号化するときに、イントラ予測モード、インター予測モード、無損失符号化パレットモード、および損失符号化パレットモードを含む符号化モードを使用することができる。ビデオエンコーダ20およびビデオデコーダ30は、パレットベースの符号化が有効かどうかを示す1つ以上の構文要素を符号化することができる。例えば、各ブロックにおいて、ビデオエンコーダ20はパレットベースの符号化モードがブロック(例えば、CUまたはPU)に使用されるかどうかを示す構文要素を符号化することができる。例えば、この構文要素はブロックレベル(例えば、CUレベル)で符号化されたビデオビットストリームでシグナリングされ、その後、符号化されたビデオビットストリームを復号化する際にビデオデコーダ30によって受信されてもよい。
【0083】
いくつかの実装では、上記の構文要素がブロックレベルより高いレベルで送信されてもよい。例えば、ビデオエンコーダ20は、そのような構文要素をスライスレベル、タイルレベル、PPSレベル、またはSPSレベルでシグナリングすることができる。この場合、1に等しい値はこのレベル以下のすべてのブロックがパレットモードを使用して符号化され、追加のモード情報、例えば、パレットモードまたは他のモードがブロックレベルでシグナリングされないことを示す。ゼロに等しい値は、このレベル以下のブロックがパレットモードを使用して符号化されないことを示す。
【0084】
一部の実装では、上位レベルの構文要素がパレットモードを有効にするという事実がこの上位レベルまたは下位レベルの各ブロックをパレットモードで符号化しなければならないことを意味しない。むしろ、CUレベルまたはTUレベルのブロックがパレットモードで符号化されているかどうかを示すために、別のCUレベルまたはTUレベルの構文要素が依然として必要であり、もしそうであれば、対応するパレットテーブルが構築されるべきである。いくつかの実装形態では、ビデオコーダ(たとえば、ビデオエンコーダ20およびビデオデコーダ30)はブロックサイズがしきい値未満であるブロックに対してパレットモードが許可されないように、最小ブロックサイズのブロック内のサンプル数に関してしきい値(たとえば、32)を選択する。この場合、そのようなブロックに対する構文要素のシグナリングは行われない。最小ブロックサイズのしきい値はビットストリーム内
で明示的にシグナリングすることができ、またはビデオエンコーダ20およびビデオデコーダ30の両方によってコンパイルされるデフォルト値に暗黙的に設定することができることに留意されたい。
【0085】
ブロックの1つの位置における画素値は、ブロックの他の位置における画素値と同じ(またはデルタ値の範囲内にある)ことがある。例えば、ブロックの隣接する画素位置は、同じ画素値を有するか、またはパレットテーブル内の同じインデックス値にマッピングされ得ることが一般的である。したがって、ビデオエンコーダ20は、同じ画素値またはインデックス値を有する所与の走査順序での連続する画素またはインデックス値の数を示す1つまたは複数の構文要素を符号化することができる。同様の値の画素またはインデックス値のストリングは、本明細書では「ラン」と呼ばれることがある。例えば、所与の走査順序における2つの連続する画素またはインデックスが異なる値を有する場合、ランはゼロに等しい。所与の走査順序における2つの連続する画素またはインデックスが同じ値を有するが、走査順序における第3の画素またはインデックスが異なる値を有する場合、ランは1に等しい。同じ値を有する3つの連続したインデックスまたは画素については、ランは2であり、以下同様である。ビデオデコーダ30は符号化されたビットストリームからランを示す構文要素を取得し、そのデータを使用して、同じ画素またはインデックス値を有する連続する位置の数を決定することができる。
【0086】
図6は、本開示のいくつかの実装形態による、パレットベースのスキームを使用してビデオデコーダ30がビデオデータを復号化する技法を実装する例示的なプロセス600を示すフローチャートである。具体的には、ビデオデコーダ30が量子化パラメータに関連する情報を使用して、パレットモード符号化ブロック内のエスケープサンプル(例えば、
図5に関連して上述したようにパレットテーブル内のパレットエントリによって表されず、シグナリングのためにビットストリーム内の追加のオーバヘッドを必要とする画素)が無損失方式(すなわち、エスケープサンプルの再構成画素値が元の画素値と同じである)で復号化されるか、または損失方式(すなわち、エスケープサンプルの再構成画素値が量子化のため元の画素値と異なる)で復号化されるかを判定する。
【0087】
パレットベース方式を実現するために、ビデオデコーダ30はビットストリームから、パレットモード符号化ブロック(610)に対応するビデオデータを受信する。例えば、パレットモード符号化ブロックはエスケープサンプルと非エスケープサンプルの両方(例えば、パレットテーブル内のパレットエントリによって表される画素値)を含む。
【0088】
次に、ビデオデコーダ30は、パレットモード符号化ブロックに関連するパラメータセットに含まれる情報から量子化パラメータ値を決定する(620)。例えば、量子化パラメータ値は複数の符号化レベルのうちの1つに関連付けられてもよく、例えば、シーケンスパラメータセット、ピクチャパラメータセット、タイルのグループに対応するグループヘッダ、タイルヘッダなどから取得されてもよい。
【0089】
いくつかの実施形態ではエスケープサンプルのための量子化設計のために、エスケープサンプルに対する量子化のスケールは特定の量子化パラメータが与えられた場合、他の符号化ツールでサンプル(例えば、変換スキップケースおよび/または変換ケースの下のサンプル)に使用される通常の量子化と同じであるが、エスケープサンプル量子化のための実際の動作は通常の量子化動作とは異なるように定義される。例えば、エスケープサンプルに対する量子化操作は、規則的な量子化からの異なるシフト及び/又はオフセット操作を含む。
【0090】
いくつかの実施形態では、エスケープサンプルおよび非エスケープサンプルについての量子化プロセスは同じである。一例では、パレットモードでのエスケープサンプルの量子
化に、標準的な量子化プロセスが使用される。結果として、エスケープサンプルの量子化設計は、変換スキップモードおよび/または変換モードでのサンプルの量子化プロセスと同じになる。以下の式は、パレットエスケープカラーを符号化する変換スキップモードの量子化/逆量子化を使用する場合のエンコーダおよびデコーダで適用される対応する量子化および逆量子化プロセスに関する。
【数1】
【0091】
pResiおよびpResi’は元のおよび再構成された残差係数であり、pLevelは量子化された値であり、transformShiftは2D変換によるダイナミックレンジ増加を補償するために使用されるビットシフトであり、これは15-bitDepth-(log2(W)+log2(H))/2に等しく、WおよびHは現在の変換ユニットの幅および高さであり、bitDepthは符号化ビット深度である。scale[]およびdescale[]は14ビットおよび6ビットの精度であり、以下のように定義される量子化および逆量子化ルックアップテーブルである。
【表1】
表1
【0092】
変換ブロックのサイズが4の累乗でない場合、別のルックアップテーブルは次のように定義される。
【表2】
表2
【0093】
次に、ビデオデコーダ30は、パレットモード符号化ブロック内の量子化されたエスケープサンプルを識別する(630)。例えば、量子化されたエスケープサンプルはパレットテーブル内のパレットエントリによって表される非エスケープサンプルと区別するために、ビットストリーム内の追加のオーバヘッドに関連付けることができる。
【0094】
ビデオデコーダ30がパレットモード符号化ブロック内のエスケープサンプルを決定すると、ビデオデコーダ30は、量子化パラメータ値からの情報に基づいて、量子化されたエスケープサンプルを復号化するための特定の方法を決定する。量子化パラメータ値がし
きい値より大きい(例えば、量子化パラメータ(QP)の値が4より大きい)という判定に従い(640)、ビデオデコーダ30は再構成されたエスケープサンプル値を得るために、予め定義された式(例えば、上述の式(2)および表1または表2に基づく)に従って、量子化エスケープサンプルに対して逆量子化を行う(640-1)。再構成されたエスケープサンプル値は量子化のために元のサンプル値とは異なることがあるので、この復号化プロセスは典型的には損失の多いプロセスである。量子化パラメータ値がしきい値より小さいか、またはしきい値と等しい(例えば、QPの値が4と等しいか、または4より小さい)という判定に従って(650)、ビデオデコーダ30は、再構成されたエスケープサンプルを量子化されたエスケープサンプル値に設定する(650-1)。この場合、再構成されたエスケープサンプル値は元のサンプル値と同じであるので、復号化プロセスは無損失プロセスである。いくつかの実施形態では、ビデオデコーダ30が並列に、かつパレットモード符号化ブロックに関連するパラメータセットに含まれる情報から量子化パラメータ値を決定しながら(例えば、ステップ620を実行しながら)、ステップ640およびステップ650を実行する。
【0095】
いくつかの実施形態では、ビデオデコーダ30が、量子化パラメータ値がシグナリングされるレベル内またはそれ以下のすべてのCUの量子化エスケープサンプルに対して、逆量子化を実行する。例えば、量子化パラメータ値がピクチャパラメータセットから得られる場合、ピクチャ内のCUの全ての量子化されたエスケープサンプルは、所定の式に従って復号化される。言い換えれば、QPの値が特定の値、例えば4以下である場合、量子化パラメータ情報がシグナリングされるレベル以下のすべてのCUは、無損失パレットモードで符号化されてもよく、QPの値が特定の値、例えば4より大きい場合、このQP情報がシグナリングされるレベル以下の任意のCUを符号化するために無損失パレットモードが利用できないことを意味する。
【0096】
いくつかの実施形態では、ビデオデコーダ30は、まず、パレットモード符号化ブロックに関連付けられたパラメータセットに含まれる情報からデルタ量子化パラメータを決定し、次に、デルタ量子化パラメータを量子化パラメータ値として参照量子化パラメータ値に可算することによって、量子化パラメータ値を決定する。パレットモード符号化CUのデルタ量子化パラメータ値をシグナリングするための例示的なコードを以下に示す。
【表3】
表3
【0097】
いくつかの実施形態では、デルタ量子化パラメータがパレットモード符号化ブロックについて常にシグナリングされる。パレットモード符号化ブロックのデルタ量子化パラメータを常にシグナリングするためのコードの例を以下に示す。
【表4】
表4
【0098】
いくつかの実施形態では、輝度成分および彩度成分のためのデルタ量子化パラメータはパレットモード符号化ブロックのために常に別々にシグナリングされる。デルタ量子化パラメータをパレットモード符号化ブロックの輝度成分と彩度成分とに別々にシグナリングするための例示的なコードを以下に示す。
【表5】
【表6】
表5
【0099】
いくつかの実施形態では、パレットモード符号化ブロックのエスケープサンプルに対応する量子化係数は量子化パラメータ値およびビット深度に基づく固定長2値化を使用したバイナリ符号化である。固定長のバイナリ長は以下の式のいずれかに従って決定される。
バイナリ長=(ビット深度-量子化パラメータ値/6) (3)
バイナリ長=(ビット深度-(floor(量子化パラメータ-4)/6)))
(4)
【0100】
いくつかの実施形態では、2値化方法がシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、スライス、および/または符号化ブロックのグループなど、異なる符号化レベルで適応的に切り替えられる。そのような場合、エンコーダは、ビットストリームで情報をシグナリングするために2値化方法を動的に選択する柔軟性を有する。
【0101】
いくつかの実施形態では、パレットモードが無損失であるとき、固定長2値化プロセスがエスケープサンプルに使用される。一例では、エスケープサンプルがそのバイナリフォーマット値に基づいて直接符号化され、各ビットはパレットモードが無損失の場合にCABACバイパスビンとして符号化される。
【0102】
いくつかの実施形態では、パレットモード符号化ブロックに関連するパラメータセットは、以下を含む。パレットモード符号化ブロックの最大許容パレットサイズを指定するための第1構文要素(例えば、palette_max_size)、パレットモード符号化ブロックの最大許容パレット領域を指定するための第2構文要素(例えば、palette_max_area)、パレットモード符号化ブロックの最大許容パレット予測子サイズを指定するための第3構文要素(例えば、palette_max_predictor_size)、パレットモード符号化ブロックの最大許容パレット予測子サイズと最大許容パレットサイズとの間の差を指定するための第4構文要素(例えば、delta_palette_max_predictor_size)、パレットモード符号化ブロックのためのシーケンスパレット予測子を初期化するための第5構文要素(例えば、palette_predictor_initializer_present_flag)、パレットモード符号化ブロックの1減算したパレット予測子イニシャライザのエントリ数を特定する第6構文要素(例えば、num_palette_predictor_initializer_minus1)、予測子パレットエントリの配列を初期化する
ために使用されるi番目のパレットエントリのコンポーネントの値を指定するための第7構文要素(例えば、palette_predictor_initializers[component][i])、8減算したパレット予測子イニシャライザのエントリの輝度コンポーネントのビット深度値を特定する第8構文要素(例えばluma_bit_depth_entry_minus8_initializers)、8減算したパレット予測子イニシャライザのエントリの彩度成分のビット深度値を特定する第9構文要素(例えば、chroma_bit_depth_entry_minus8_initializers)、8減算したパレットのエントリの輝度成分のビット深度値を特定する第10構文要素(例えば、luma_bit_depth_entry_minus8)、8減算したパレットのエントリの彩度成分のビット深度値を特定する第11構文要素(例えば、chroma_bit_depth_entry_minus8_initializers)。
【0103】
いくつかの実施形態において、パレットモード符号化ブロックに関連するパラメータセットに含まれる情報から量子化パラメータ値を決定することは、以下を含む。パレットモード符号化ブロックの量子化係数がパレットモード符号化ブロックのエスケープサンプルに対応しないという決定に従い(例えば、係数がパレットで符号化されている)、量子化パラメータ値を、現在のCUに対応するパラメータセットに含まれる量子化パラメータ値(QPcu)に等しく設定し、パレットモード符号化ブロックの量子化係数がパレットモード符号化ブロックのエスケープサンプルに対応するとの決定に従って、式MIN(((MAX(4,QPcu)-2)/6)*6+4,61)に従って量子化パラメータ値を計算する。
【0104】
いくつかの実施形態では、ビデオデコーダ30は、パレットモード符号化ブロックの量子化係数がパレットモード符号化ブロックのエスケープサンプルに対応するという判定に従って、パレットモード符号化ブロックに関連するパラメータセットに含まれる情報から量子化パラメータ値を決定し、式MAX(4,QPcu)に従って量子化パラメータ値を制限する。
【0105】
1つまたは複数の例では、説明された機能がハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実施される場合、機能は、1つ以上の命令またはコードとして、コンピュータ可読媒体上に記憶され、またはそれを介して送信され、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ可読媒体はデータ記憶媒体のような有形媒体に対応するコンピュータ可読記憶媒体、または例えば通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このように、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応することができる。データ記憶媒体は本願に記載の実施のための命令、コードおよび/またはデータ構造を検索するために、1つ以上のコンピュータまたは1つ以上のプロセッサによってアクセス可能な任意の利用可能な媒体であってもよい。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0106】
本明細書の実施態様の説明で使用される用語は特定の実施態様を説明するためだけのものであり、特許請求の範囲を限定することを意図するものではない。実施形態の説明および添付の特許請求の範囲で使用されるように、単数形「1つの」などは文脈が別段の明確な指示をしない限り、複数形も同様に含むことが意図される。また、本明細書で使用される用語「および/または」は関連する列挙された項目のうちの1つまたは複数の任意の、およびすべての可能な組合せを指し、包含することが理解されるであろう。用語「含む」などは本明細書で使用される場合、述べられた特徴、要素、および/または構成要素の存
在を指定するが、1つまたは複数の他の特徴、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことがさらに理解されるであろう。
【0107】
また、第1、第2などの用語は様々な要素を説明するために本明細書で使用され得るが、これらの要素はこれらの用語によって限定されるべきではないことも理解されるであろう。これらの用語は、1つの要素を別の要素から区別するためにのみ使用される。例えば、実施の範囲から逸脱することなく、第1電極を第2電極と呼ぶことができ、同様に、第2電極を第1電極と呼ぶことができる。第1電極および第2電極は両方とも電極であるが、それらは同じ電極ではない。
【0108】
本願の説明は例示および説明の目的で提示されており、網羅的であることも、開示された形態の本発明に限定されることも意図されていない。前述の説明および関連する図面に提示された教示の恩恵を受ける当業者には、多くの修正形態、変形形態、および代替実施形態が明らかになるであろう。本実施形態は本発明の原理、実際の応用を最もよく説明するために、また、他の当業者が様々な実施のために本発明を理解し、考えられる特定の用途に適した様々な修正を伴う基礎となる原理および様々な実施を最もよく利用することができるように、選択され、説明される。したがって、特許請求の範囲は開示された実施態様の特定の例に限定されるべきではなく、修正および他の実施態様は添付の特許請求の範囲内に含まれることが意図されることを理解されたい。