ここで、具体的な実装を詳細に参照し、その例が添付の図面に示されている。以下の詳細な説明において、本明細書において提示される主題を理解する助けとするために、多数の非限定的な具体的詳細が記載される。しかしながら、請求項の範囲から逸脱しない限りにおいて様々な代替例が用いられてよく、主題がこれらの具体的詳細なしに実施されてよいことは、当業者には明らかであろう。例えば、本明細書において提示される主題が、デジタルビデオ機能を有する多くのタイプの電子デバイス上で実装され得ることは、当業者には明らかであろう。
図1は、本開示のいくつかの実装に係る、ビデオブロックを並列に符号化および復号するための例示的システム10を示すブロック図である。図1に示されるように、システム10は、後に宛先デバイス14によって復号されるビデオデータを生成および符号化するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、デスクトップまたはラップトップ・コンピュータ、タブレット・コンピュータ、スマート・フォン、セット・トップ・ボックス、デジタル・テレビ、カメラ、ディスプレイデバイス、デジタル・メディア・プレーヤ、ビデオ・ゲーム・コンソール、ビデオストリーミング・デバイス等を含む多種多様な電子デバイスのいずれかを含んでよい。いくつかの実装において、ソースデバイス12および宛先デバイス14には、無線通信機能が搭載される。
いくつかの実装において、宛先デバイス14は、リンク16を介して復号対象の符号化ビデオデータを受信してよい。リンク16は、符号化ビデオデータをソースデバイス12から宛先デバイス14へと移動させることが可能な任意のタイプの通信媒体またはデバイスを含んでよい。一例において、リンク16は、ソースデバイス12が符号化ビデオデータをリアルタイムで宛先デバイス14に直接伝送することを可能とする通信媒体を含んでよい。符号化ビデオデータは、無線通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に伝送されてよい。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理的伝送線などの任意の無線または有線通信媒体を含んでよい。通信媒体は、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはインターネットなどのグローバル・ネットワークなどのパケットベースのネットワークの一部を形成してよい。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を促進するのに有用であり得る任意の他の機器を含んでよい。
いくつかの他の実装において、符号化ビデオデータは、出力インターフェース22からストレージデバイス32に伝送されてよい。その後、ストレージデバイス32における符号化ビデオデータは、入力インターフェース28を介して宛先デバイス14によってアクセスされてよい。ストレージデバイス32は、ハード・ドライブ、Blu-rayディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、または符号化ビデオデータを格納するための任意の他の適当なデジタル記憶媒体などの、種々の分散型のまたはローカルでアクセスされるデータ記憶媒体のいずれかを含んでよい。さらなる例において、ストレージデバイス32は、ソースデバイス12によって生成される符号化ビデオデータを保持し得るファイル・サーバまたは別の中間ストレージデバイスに対応してよい。宛先デバイス14は、格納されたビデオデータに対して、ストレージデバイス32からストリーミングまたはダウンロードを介してアクセスしてよい。ファイル・サーバは、符号化ビデオデータを格納し符号化ビデオデータを宛先デバイス14に伝送することが可能な任意のタイプのコンピュータであってよい。例示的なファイル・サーバは、(例えばウェブサイト用の)ウェブ・サーバ、FTPサーバ、ネットワーク・アタッチド・ストレージ(NAS)デバイス、またはローカル・ディスク・ドライブを含む。宛先デバイス14は、ファイル・サーバに格納された符号化ビデオデータにアクセスするのに適当な無線チャネル(例えばWi-Fi接続)、有線接続(例えばDSL、ケーブル・モデム等)、またはそれら両方の組み合わせを含む任意の標準的なデータ接続を通して符号化ビデオデータにアクセスしてよい。ストレージデバイス32からの符号化ビデオデータの伝送は、ストリーミング伝送、ダウンロード伝送、またはそれら両方の組み合わせであってよい。
図1に示されるように、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20および出力インターフェース22を含む。ビデオソース18は、例えばビデオ・カメラのようなビデオキャプチャ・デバイス、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツ・プロバイダからビデオを受信するためのビデオフィード・インターフェース、および/またはソースビデオとしてのコンピュータ・グラフィクス・データを生成するためのコンピュータ・グラフィクス・システム、またはそのようなソースの組み合わせなどのソースを含んでよい。一例として、ビデオソース18が警備監視システムのビデオ・カメラである場合、ソースデバイス12および宛先デバイス14は、カメラ・フォンまたはビデオ・フォンを形成してよい。しかしながら、本出願において説明される実装は、一般にビデオコーディングに適用可能であってよく、無線および/または有線のアプリケーションに適用されてよい。
キャプチャされ、予めキャプチャされ、またはコンピュータで生成されたビデオは、ビデオエンコーダ20によって符号化されてよい。符号化ビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14に直接伝送されてよい。符号化ビデオデータはさらに(または代替的に)、復号および/または再生のために宛先デバイス14または他のデバイスによって後にアクセスするために、ストレージデバイス32に格納されてよい。出力インターフェース22は、モデムおよび/または送信機をさらに含んでよい。
宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス34を含む。入力インターフェース28は、受信機および/またはモデムを含み、リンク16を介して符号化ビデオデータを受信してよい。リンク16を介して通信され、またはストレージデバイス32上で提供される符号化ビデオデータは、ビデオデータを復号する際におけるビデオデコーダ30による使用のためにビデオエンコーダ20によって生成される種々の構文要素を含んでよい。そのような構文要素は、通信媒体上で伝送され、記憶媒体に格納され、またはファイル・サーバに格納される符号化ビデオデータ内に含まれてよい。
いくつかの実装において、宛先デバイス14は、一体化されたディスプレイデバイスおよび宛先デバイス14と通信するように構成された外部ディスプレイデバイスであり得るディスプレイデバイス34を含んでよい。ディスプレイデバイス34は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマ・ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの種々のディスプレイデバイスのいずれかを含んでよい。
ビデオエンコーダ20およびビデオデコーダ30は、VVC、HEVC、MPEG-4、Part 10、Advanced Video Coding(AVC)、またはそのような規格の拡張版などの独自規格または産業規格に従って動作してよい。本出願は、特定のビデオ符号化/復号規格に限定されず、他のビデオ符号化/復号規格に適用可能であってよいことが理解されるべきである。ソースデバイス12のビデオエンコーダ20は、これらの現在または将来の規格のいずれかに従ってビデオデータを符号化するように構成されてよいことが一般に想定される。同様に、宛先デバイス14のビデオデコーダ30は、これらの現在または将来の規格のいずれかに従ってビデオデータを復号するように構成されてよいこともまた、一般に想定される。
ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル・シグナル・プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、ディスクリート・ロジック、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組み合わせなどの種々の適当なエンコーダ回路のいずれかとして実装されてよい。部分的にソフトウェアで実装される場合、電子デバイスが、当該ソフトウェアのための命令を適当な非一時的コンピュータ可読媒体に格納し、本開示において開示されるビデオ符号化/復号動作を行うよう、1つまたは複数のプロセッサを用いてそれらの命令をハードウェアで実行してよい。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、そのいずれも、それぞれのデバイスにおいて、組み合わされたエンコーダ/デコーダ(CODEC)の一部として一体化されてよい。
図2は、本出願において説明されるいくつかの実装に係る例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオフレーム内のビデオブロックのイントラおよびインター予測符号化を行ってよい。イントラ予測符号化は、所与のビデオフレームまたはピクチャ内のビデオデータにおける空間的冗長性を低減または除去するための空間的予測に依拠する。インター予測符号化は、ビデオシーケンスの隣接するビデオフレームまたはピクチャ内のビデオデータにおける時間的冗長性を低減または除去するための時間的予測に依拠する。
図2に示されるように、ビデオエンコーダ20は、ビデオデータメモリ40、予測処理ユニット41、復号化ピクチャバッファ(DPB)64、加算器50、変換処理ユニット52、量子化ユニット54、およびエントロピー符号化ユニット56を含む。予測処理ユニット41は、モーション推定ユニット42、モーション補償ユニット44、区分ユニット45、イントラ予測処理ユニット46、およびイントラブロックコピー(BC)ユニット48をさらに含む。いくつかの実装において、ビデオエンコーダ20はまた、ビデオブロック再構成のための逆量子化ユニット58、逆変換処理ユニット60、および加算器62を含む。再構成されたビデオからブロック歪みアーチファクトを除去するようブロック境界をフィルタリングするために、デブロッキング・フィルタ(不図示)が加算器62とDPB64との間に配置されてよい。加算器62の出力をフィルタリングするために、デブロッキング・フィルタに加えてループ内フィルタ(不図示)が用いられてもよい。ビデオエンコーダ20は、固定のまたはプログラミング可能なハードウェア・ユニットの形態を取ってもよく、または、例示される固定のまたはプログラミング可能なハードウェア・ユニットのうちの1つまたは複数の間で分割されてもよい。
ビデオデータメモリ40は、ビデオエンコーダ20の構成要素によって符号化されるビデオデータを格納してよい。ビデオデータメモリ40におけるビデオデータは、例えばビデオソース18から得られてよい。DPB64は、(例えばイントラまたはインター予測符号化モードで)ビデオエンコーダ20によってビデオデータを符号化する際に用いるための参照ビデオデータを格納するバッファである。ビデオデータメモリ40およびDPB64は、種々のメモリ・デバイスのいずれかによって形成されてよい。様々な例において、ビデオデータメモリ40は、ビデオエンコーダ20の他の構成要素と同一チップ上、またはそれらの構成要素に対してチップ外であってよい。
図2に示されるように、ビデオデータを受信した後、予測処理ユニット41内の区分ユニット45は、ビデオデータをビデオブロックに区分する。この区分は、ビデオデータに関連付けられる四分木構造などの予め定められた分割構造に従って、ビデオフレームをスライス、タイル、または他のより大きいコーディングユニット(CU)に区分することを含んでもよい。ビデオフレームは、複数のビデオブロック(またはタイルと称されるビデオブロックのセット)に分割されてよい。予測処理ユニット41は、誤り結果(例えば符号化率および歪みレベル)に基づいて、現在のビデオブロックについて、複数のイントラ予測符号化モードのうちの1つ、または複数のインター予測符号化モードのうちの1つなどの、複数の可能な予測符号化モードのうちの1つを選択してよい。予測処理ユニット41は、結果として得られるイントラまたはインター予測符号化されたブロックを、残差ブロックを生成するために加算器50に、また、後に参照フレームの一部として用いるために符号化ブロックを再構成するために加算器62に提供してよい。予測処理ユニット41はまた、モーションベクトル、イントラモードインジケータ、区分情報、および他のそのような構文情報などの構文要素を、エントロピー符号化ユニット56に提供する。
現在のビデオブロックについて適切なイントラ予測符号化モードを選択するべく、予測処理ユニット41内のイントラ予測処理ユニット46は、空間的予測を提供するために、符号化対象の現在のブロックと同じフレームにおける1つまたは複数の隣接ブロックに対して現在のビデオブロックのイントラ予測符号化を行ってよい。予測処理ユニット41内のモーション推定ユニット42およびモーション補償ユニット44は、時間的予測を提供するために、1つまたは複数の参照フレームにおける1つまたは複数の予測ブロックに対して現在のビデオブロックのインター予測符号化を行う。ビデオエンコーダ20は、例えばビデオデータの各ブロックについて適切な符号化モードを選択するために
84、複数の符号化パスを行ってよい。
いくつかの実装において、モーション推定ユニット42は、ビデオフレームのシーケンス内の予め決定されたパターンに従って、参照ビデオフレーム内の予測ブロックに対する現在のビデオフレーム内のビデオブロックの予測ユニット(PU)の変位を示すモーションベクトルを生成することにより、現在のビデオフレームについてのインター予測モードを決定する。モーション推定ユニット42によって行われるモーション推定は、ビデオブロックについてのモーションを推定するモーションベクトルを生成するプロセスである。モーションベクトルは、例えば、現在のフレーム(または他の符号化単位)内で符号化されている現在のブロックに対する参照フレーム(または他の符号化単位)内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示してよい。予め決定されたパターンは、シーケンスにおけるビデオフレームをPフレームまたはBフレームとして指定してよい。イントラBCユニット48は、インター予測のためのモーション推定ユニット42によるモーションベクトルの決定と同様の方式で、イントラBC符号化のために例えばブロック・ベクトルのようなベクトルを決定してよく、または、モーション推定ユニット42を利用してブロック・ベクトルを決定してよい。
予測ブロックは、差分絶対値和(SAD)、差分二乗和(SSD)、または他の差分メトリックによって決定され得る画素差に関して、符号化対象のビデオブロックのPUと密接に合致するものとみなされる参照フレームのブロックである。いくつかの実装において、ビデオエンコーダ20は、DPB64に格納された参照フレームのサブ整数画素位置についての値を算出してよい。例えば、ビデオエンコーダ20は、参照フレームの4分の1画素位置、8分の1画素位置、または他の分数画素位置の値を補間してよい。したがって、モーション推定ユニット42は、フル画素位置および分数画素位置に対してモーション探索を行い、分数画素精度と共にモーションベクトルを出力してよい。
モーション推定ユニット42は、第1の参照フレームリスト(リスト0)または第2の参照フレームリスト(リスト1)(その各々が、DPB64に格納された1つまたは複数の参照フレームを特定する)から選択される参照フレームの予測ブロックの位置とPUの位置を比較することにより、インター予測符号化されたフレームにおけるビデオブロックのPUについてのモーションベクトルを算出する。モーション推定ユニット42は、算出されたモーションベクトルをモーション補償ユニット44に、次いでエントロピー符号化ユニット56に送信する。
モーション補償ユニット44によって行われるモーション補償は、モーション推定ユニット42によって決定されたモーションベクトルに基づいて予測ブロックをフェッチまたは生成することを伴ってよい。現在のビデオブロックのPUについてのモーションベクトルを受信すると、モーション補償ユニット44は、モーションベクトルが参照フレームリストのうちの1つにおいて指し示す予測ブロックの位置を特定し、DPB64から予測ブロックを取得し、予測ブロックを加算器50に転送してよい。加算器50は次いで、モーション補償ユニット44によって提供された予測ブロックの画素値を、符号化されている現在のビデオブロックの画素値から減算することにより、画素差分値の残差ビデオブロックを形成する。残差ビデオブロックを形成する画素差分値は、輝度または彩度の差分成分またはその両方を含んでよい。モーション補償ユニット44はまた、ビデオフレームのビデオブロックを復号する際におけるビデオデコーダ30による使用のために、ビデオフレームのビデオブロックに関連付けられる構文要素を生成してよい。構文要素は、例えば、予測ブロックを特定するために用いられるモーションベクトルを定義する構文要素、予測モードを示す任意のフラグ、または本明細書に説明される任意の他の構文情報を含んでよい。モーション推定ユニット42およびモーション補償ユニット44は、高度に一体化されてよいが、概念的な目的で別個に示されていることに留意されたい。
いくつかの実装において、イントラBCユニット48は、モーション推定ユニット42およびモーション補償ユニット44に関連して上記で説明されているものと同様の方式で、ベクトルを生成し予測ブロックをフェッチしてよいが、予測ブロックは、符号化されている現在のブロックと同じフレームにおけるものであり、ベクトルは、モーションベクトルとは対照的にブロック・ベクトルと称される。特に、イントラBCユニット48は、現在のブロックを符号化するために用いるべきイントラ予測モードを決定してよい。いくつかの例において、イントラBCユニット48は、例えば別個の符号化パスの間に、様々なイントラ予測モードを用いて現在のブロックを符号化し、レート歪み解析によってそれらの性能を試験してよい。次に、イントラBCユニット48は、様々な試験されるイントラ予測モードの中から、用いるべき適切なイントラ予測モードを選択し、それに応じてイントラモードインジケータを生成してよい。例えば、イントラBCユニット48は、様々な試験されるイントラ予測モードについてレート歪み解析を用いてレート歪み値を算出し、試験モードのうち最良のレート歪み特性を有するイントラ予測モードを、用いるべき適切なイントラ予測モードとして選択してよい。レート歪み解析は、一般に、符号化ブロックを作成するために用いられるビットレート(すなわちビットの数)と共に、符号化ブロックと、符号化ブロックを作成するように符号化された元の未符号化ブロックとの間の歪み(または誤差)の量を決定する。イントラBCユニット48は、どのイントラ予測モードがブロックについての最良のレート歪み値を呈するかを決定するために、様々な符号化ブロックについての歪みおよびレートからの比を算出してよい。
他の例において、イントラBCユニット48は、本明細書において説明される実装に従って、イントラBC予測のためのそのような機能を行うために、全体的または部分的にモーション推定ユニット42およびモーション補償ユニット44を用いてよい。いずれの場合においても、イントラブロックコピーについて、予測ブロックは、差分絶対値和(SAD)、差分二乗和(SSD)、または他の差分メトリックによって決定され得る画素差に関して、符号化対象のブロックと密接に合致するものとみなされるブロックであってよく、予測ブロックの特定は、サブ整数画素位置についての値の算出を含んでよい。
予測ブロックがイントラ予測による同じフレームからのものであるか、またはインター予測による異なるフレームからのものであるかに関わらず、ビデオエンコーダ20は、符号化されている現在のビデオブロックの画素値から予測ブロックの画素値を減算することにより、残差ビデオブロックを形成してよく、これにより画素差分値を形成する。残差ビデオブロックを形成する画素差分値は、輝度および彩度の両成分の差分を含んでよい。
イントラ予測処理ユニット84は、上述のように、モーション推定ユニット42およびモーション補償ユニット44によって行われるインター予測、またはイントラBCユニット48によって行われるイントラブロックコピー予測の代替として、現在のビデオブロックをイントラ予測してよい。特に、イントラ予測処理ユニット46は、現在のブロックを符号化するために用いるべきイントラ予測モードを決定してよい。これを行うために、イントラ予測処理ユニット46は、例えば別個の符号化パスの間に、様々なイントラ予測モードを用いて現在のブロックを符号化してよく、イントラ予測処理ユニット46(またはいくつかの例においてはモード選択ユニット)は、試験されたイントラ予測モードから、用いるべき適切なイントラ予測モードを選択してよい。イントラ予測処理ユニット46は、そのブロックについての選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供してよい。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報をビットストリームにおいて符号化してよい。
予測処理ユニット41がインター予測またはイントラ予測のいずれかを介して現在のビデオブロックについての予測ブロックを決定した後、加算器50は現在のビデオブロックから予測ブロックを減算することにより残差ビデオブロックを形成する。残差ブロックにおける残差ビデオデータは、1つまたは複数の変換ユニット(TU)に含まれてよく、変換処理ユニット52に提供される。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に類似の変換などの変換を用いて、残差ビデオデータを残差変換係数に変換する。
変換処理ユニット52は、結果として得られた変換係数を量子化ユニット54に送信してよい。量子化ユニット54は、ビット・レートをさらに低減するために、変換係数を量子化する。量子化プロセスは、係数の一部または全てに関連付けられるビット深度を低減してもよい。量子化度は、量子化パラメータを調整することにより修正されてよい。いくつかの例において、量子化ユニット54は次いで、量子化された変換係数を含む行列の走査を行ってよい。代替的に、エントロピー符号化ユニット56がこの走査を行ってよい。
量子化に続き、エントロピー符号化ユニット56は、例えばコンテキスト適応可変長符号化(CAVLC)、コンテキスト適応バイナリ算術符号化(CABAC)、シンタックスベースのコンテキスト適応バイナリ算術符号化(SBAC)、確率区間区分エントロピー(PIPE)符号化または別のエントロピー符号化方法または技法を用いて、量子化された変換係数をビデオビットストリームにエントロピー符号化する。符号化ビットストリームは次いで、ビデオデコーダ30に伝送され、または、後のビデオデコーダ30への伝送またはビデオデコーダ30による取得のためにストレージデバイス32にアーカイブされてよい。エントロピー符号化ユニット56は、符号化されている現在のビデオフレームについてのモーションベクトルおよび他の構文要素をエントロピー符号化してもよい。
逆量子化ユニット58および逆変換処理ユニット60は、それぞれ逆量子化および逆変換を適用することで、他のビデオブロックの予測のための参照ブロックを生成するために、残差ビデオブロックを画素ドメインに再構成する。上記のように、モーション補償ユニット44は、DPB64に格納されたフレームの1つまたは複数の参照ブロックから、モーション補償された予測ブロックを生成してよい。モーション補償ユニット44は、モーション推定に用いるためのサブ整数画素値を算出するために、予測ブロックに1つまたは複数の補間フィルタを適用してもよい。
加算器62は、DPB64への格納のために参照ブロックを作成するために、再構成された残差ブロックを、モーション補償ユニット44によって作成されたモーション補償された予測ブロックに加算する。参照ブロックは次いで、イントラBCユニット48、モーション推定ユニット42およびモーション補償ユニット44によって、後続のビデオフレームにおける別のビデオブロックをインター予測するための予測ブロックとして用いられてよい。
図3は、本出願のいくつかの実装に係る例示的なビデオデコーダ30を示すブロック図である。ビデオデコーダ30は、ビデオデータメモリ79、エントロピー復号ユニット80、予測処理ユニット81、逆量子化ユニット86、逆変換処理ユニット88、加算器90、およびDPB92を含む。予測処理ユニット81は、モーション補償ユニット82、イントラ予測処理ユニット84、およびイントラBCユニット85をさらに含む。ビデオデコーダ30は、図2に関連してビデオエンコーダ20に関して上記で説明されている符号化プロセスと概して反対の復号プロセスを行ってよい。例えば、モーション補償ユニット82は、エントロピー復号ユニット80から受信されたモーションベクトルに基づいて予測データを生成してよく、一方でイントラ予測ユニット84は、エントロピー復号ユニット80から受信されたイントラ予測モードインジケータに基づいて予測データを生成してよい。
いくつかの例において、ビデオデコーダ30のあるユニットが、本出願の実装を実行することを課されてよい。また、いくつかの例において、本開示の実装は、ビデオデコーダ30の1つまたは複数のユニットの間で分割されてよい。例えば、イントラBCユニット85は、単独で、またはモーション補償ユニット82、イントラ予測処理ユニット84、およびエントロピー復号ユニット80などのビデオデコーダ30の他のユニットとの組み合わせで、本出願の実装を行ってよい。いくつかの例において、ビデオデコーダ30は、イントラBCユニット85を含まなくてよく、イントラBCユニット85の機能は、モーション補償ユニット82などの予測処理ユニット81の他の構成要素によって行われてよい。
ビデオデータメモリ79は、ビデオデコーダ30の他の構成要素によって復号される、符号化ビデオビットストリームなどのビデオデータを格納してよい。ビデオデータメモリ79に格納されたビデオデータは、例えば、ストレージデバイス32から、カメラなどのローカルのビデオソースから、ビデオデータの有線または無線ネットワーク通信を介して、または物理的データ記憶媒体(例えばフラッシュ・ドライブまたはハード・ディスク)にアクセスすることにより、得られてよい。ビデオデータメモリ79は、符号化ビデオビットストリームからの符号化ビデオデータを格納する符号化ピクチャバッファ(CPB)を含んでよい。ビデオデコーダ30の復号化ピクチャバッファ(DPB)92は、(例えばイントラまたはインター予測符号化モードで)ビデオデコーダ30によってビデオデータを復号する際に用いるための参照ビデオデータを格納する。ビデオデータメモリ79およびDPB92は、シンクロナスDRAM(SDRAM)を含むダイナミック・ランダム・アクセス・メモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗変化RAM(RRAM)、または他のタイプのメモリ・デバイスなどの種々のメモリ・デバイスのいずれかによって形成されてよい。例示の目的で、ビデオデータメモリ79およびDPB92は、図3においてビデオデコーダ30の2つの別個の構成要素として図示されている。しかしながら、ビデオデータメモリ79およびDPB92が同じメモリ・デバイスまたは別個のメモリ・デバイスによって提供されてよいことは、当業者には明らかであろう。いくつかの例において、ビデオデータメモリ79は、ビデオデコーダ30の他の構成要素と同一チップ上、またはそれらの構成要素に対してチップ外であってよい。
復号プロセスの間、ビデオデコーダ30は、符号化ビデオフレームのビデオブロックおよび関連付けられる構文要素を表す符号化ビデオビットストリームを受信する。ビデオデコーダ30は、ビデオフレームのレベルおよび/またはビデオブロックのレベルで構文要素を受信してよい。ビデオデコーダ30のエントロピー復号ユニット80は、ビットストリームをエントロピー復号して、量子化係数、モーションベクトルまたはイントラ予測モードインジケータ、および他の構文要素を生成する。エントロピー復号ユニット80は次いで、モーションベクトルおよび他の構文要素を予測処理ユニット81に転送する。
ビデオフレームが、イントラ予測符号化された(I)フレームとして、または他のタイプのフレームにおけるイントラ符号化された予測ブロックについて符号化される場合、予測処理ユニット81のイントラ予測処理ユニット84は、信号伝送されるイントラ予測モードと、現在のフレームの以前に復号されたブロックからの参照データとに基づいて、現在のビデオフレームのビデオブロックについての予測データを生成してよい。
ビデオフレームが、インター予測符号化された(すなわちBまたはP)フレームとして符号化される場合、予測処理ユニット81のモーション補償ユニット82は、エントロピー復号ユニット80から受信されたモーションベクトルおよび他の構文要素に基づいて、現在のビデオフレームのビデオブロックについての1つまたは複数の予測ブロックを作成する。予測ブロックの各々は、参照フレームリストのうちの1つにおける参照フレームから作成されてよい。ビデオデコーダ30は、DPB92に格納された参照フレームに基づいて、デフォルトの構成技法を用いて、参照フレームリスト、リスト0およびリスト1を構成してよい。
いくつかの例において、ビデオブロックが本明細書において説明されるイントラBCモードに従って符号化される場合、予測処理ユニット81のイントラBCユニット85は、エントロピー復号ユニット80から受信されたブロック・ベクトルおよび他の構文要素に基づいて、現在のビデオブロックについての予測ブロックを作成する。予測ブロックは、ビデオエンコーダ20によって定められる現在のビデオブロックと同じピクチャの再構成された領域内のものであってよい。
モーション補償ユニット82および/またはイントラBCユニット85は、モーションベクトルおよび他の構文要素を構文解析することにより、現在のビデオフレームのビデオブロックについての予測情報を決定し、次いで、予測情報を用いて、復号されている現在のビデオブロックについての予測ブロックを作成する。例えば、モーション補償ユニット82は、受信された構文要素のいくつかを用いて、ビデオフレームのビデオブロックを符号化するために用いられる予測モード(例えばイントラまたはインター予測)、インター予測フレーム・タイプ(例えばBまたはP)、フレームについての参照フレームリストのうちの1つまたは複数についての構成情報、フレームのインター予測符号化された各ビデオブロックについてのモーションベクトル、フレームのインター予測符号化された各ビデオブロックについてのインター予測ステータス、現在のビデオフレームにおけるビデオブロックを復号するための他の情報を決定する。
同様に、イントラBCユニット85は、例えばフラグのような受信された構文要素のいくつかを用いて、現在のビデオブロックがイントラBCモードを用いて予測されたこと、フレームのどのビデオブロックが再構成された領域内にあり、DPB92に格納されているはずであるかについての構成情報、フレームのイントラBC予測された各ビデオブロックについてのブロック・ベクトル、フレームのイントラBC予測された各ビデオブロックについてのイントラBC予測ステータス、および現在のビデオフレームにおけるビデオブロックを復号するための他の情報を決定してよい。
モーション補償ユニット82はまた、ビデオブロックの符号化の間にビデオエンコーダ20によって用いられるように、補間フィルタを用いて補間を行って、参照ブロックのサブ整数画素についての補間された値を算出してよい。この場合、モーション補償ユニット82は、受信された構文要素からビデオエンコーダ20によって用いられる補間フィルタを決定し、補間フィルタを用いて予測ブロックを作成してよい。
逆量子化ユニット86は、ビデオフレームにおける各ビデオブロックについてビデオエンコーダ20によって算出されたものと同じ量子化パラメータを用いて、ビットストリームにおいて提供され、エントロピー復号ユニット80によってエントロピー復号された量子化された変換係数を逆量子化して、量子化度を決定する。逆変換処理ユニット88は、残差ブロックを画素ドメインにおいて再構成するために、例えば逆DCT、逆整数変換、または概念的に類似の逆変換プロセスのような逆変換を変換係数に適用する。
モーション補償ユニット82またはイントラBCユニット85が、ベクトルおよび他の構文要素に基づいて、現在のビデオブロックについての予測ブロックを生成した後、加算器90は、逆変換処理ユニット88からの残差ブロックと、モーション補償ユニット82およびイントラBCユニット85によって生成された対応する予測ブロックとを加算することにより、現在のビデオブロックについての復号化ビデオブロックを再構成する。復号化ビデオブロックをさらに処理するために、ループ内フィルタ(不図示)が加算器90とDPB92との間に配置されてよい。所与のフレームにおける復号化ビデオブロックは、次いで、次のビデオブロックの後続のモーション補償に用いられる参照フレームを格納するDPB92に格納される。DPB92、またはDPB92とは別個のメモリ・デバイスは、図1のディスプレイデバイス34などのディスプレイデバイス上における後の提示のために、復号化ビデオを格納してもよい。
典型的なビデオコーディングプロセスにおいて、ビデオシーケンスは典型的に、フレームまたはピクチャの順序付けられたセットを含む。各フレームは、SL、SCb、およびSCrと表記される3つのサンプル配列を含んでよい。SLは、輝度サンプルの2次元配列である。SCbは、Cb彩度サンプルの2次元配列である。SCrは、Cr彩度サンプルの2次元配列である。他の事例において、フレームは、単色であってよく、したがって輝度サンプルの1つの2次元配列のみを含む。
図4Aに示されるように、ビデオエンコーダ20(またはより具体的には区分ユニット45)は、まずフレームをコーディングツリーユニット(CTU)のセットに区分することにより、フレームの符号化表現を生成する。ビデオフレームは、左から右へ、上から下へのラスター・スキャン順に連続して順序付けられた整数のCTUを含んでよい。各CTUは、最も大きい論理的コーディングユニットであり、ビデオシーケンスにおける全てのCTUが128×128、64×64、32×32、および16×16のいずれかの同じサイズを有するように、CTUの幅および高さが、シーケンスパラメータセットにおいてビデオエンコーダ20によって信号伝送される。しかしながら、本出願は、必ずしも特定のサイズに限定されないことが留意されるべきである。図4Bに示されるように、各CTUは、輝度サンプルの1つの符号化ツリーブロック(CTB)と、彩度サンプルの2つの対応する符号化ツリーブロックと、符号化ツリーブロックのサンプルを符号化するために用いられる構文要素とを含んでよい。構文要素は、インターまたはイントラ予測、イントラ予測モード、モーションベクトル、および他のパラメータを含む、符号化される画素ブロックの異なるタイプの単位の特性、および、ビデオシーケンスがどのようにビデオデコーダ30において再構成され得るかを記述する。単色ピクチャ、または3つの別個の色平面を有するピクチャにおいて、CTUは、単一の符号化ツリーブロックと、符号化ツリーブロックのサンプルを符号化するために用いられる構文要素とを含んでよい。符号化ツリーブロックは、サンプルのN×Nブロックであってよい。
より良好な性能を実現するために、ビデオエンコーダ20は、CTUの符号化ツリーブロックに対して二分木区分、三分木区分、四分木区分、または両方の組み合わせなどの分木区分を再帰的に行い、CTUをより小さいコーディングユニット(CU)に分割してよい。図4Cに図示されるように、まず64×64のCTU400が、各々32×32のブロックサイズを有する4つのより小さいCUに分割される。4つのより小さいCUのうち、CU410およびCU420が、各々、ブロックサイズ16×16の4つのCUに分割される。2つの16×16のCU430および440は、各々、ブロックサイズ8×8の4つのCUにさらに分割される。図4Dは、図4Cに図示されるようなCTU400の区分プロセスの最終結果を示す四分木データ構造を図示し、四分木の各葉ノードは、それぞれのサイズが32×32から8×8までの範囲である1つのCUに対応する。図4Bに図示されるCTUと同様、各CUは、同じサイズのフレームの、輝度サンプルの符号化ブロック(CB)および彩度サンプルの2つの対応する符号化ブロックと、符号化ブロックのサンプルを符号化するために用いられる構文要素とを含んでよい。単色ピクチャ、または3つの別個の色平面を有するピクチャにおいて、CUは、単一の符号化ブロックと、符号化ブロックのサンプルを符号化するために用いられる構文構造とを含んでよい。図4Cおよび図4Dに図示される四分木区分は、単に例示を目的としたものであり、四分木/三分木/二分木区分に基づいて様々な局所的特性に適合するように、1つのCTUがCUに分けられ得ることが、留意されるべきである。多分木構造においては、1つのCTUが、四分木構造によって区分され、四分木の各葉CUが、二分木および三分木構造によってさらに区分され得る。図4Eに示されるように、5つの区分タイプ、すなわち四区分、水平二区分、垂直二区分、水平三区分、および垂直三区分が存在する。
いくつかの実装において、ビデオエンコーダ20は、CUの符号化ブロックを1つまたは複数のM×N予測ブロック(PB)にさらに区分してよい。予測ブロックは、インターまたはイントラの同じ予測が適用されるサンプルの矩形(正方形または非正方形)ブロックである。CUの予測ユニット(PU)は、輝度サンプルの予測ブロックと、彩度サンプルの2つの対応する予測ブロックと、予測ブロックを予測するために用いられる構文要素とを含んでよい。単色ピクチャ、または3つの別個の色平面を有するピクチャにおいて、PUは、単一の予測ブロックと、予測ブロックを予測するために用いられる構文構造とを含んでよい。ビデオエンコーダ20は、CUの各PUの輝度、Cb、およびCr予測ブロックについての予測輝度、Cb、およびCrブロックを生成してよい。
ビデオエンコーダ20は、イントラ予測またはインター予測を用いて、PUについての予測ブロックを生成してよい。ビデオエンコーダ20がイントラ予測を用いてPUについての予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたフレームの復号されたサンプルに基づいて、PUの予測ブロックを生成してよい。ビデオエンコーダ20がインター予測を用いてPUについての予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたフレーム以外の1つまたは複数のフレームの復号されたサンプルに基づいて、PUの予測ブロックを生成してよい。
ビデオエンコーダ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残差ブロックを生成してよい。
さらに、図4Cに例示されるように、ビデオエンコーダ20は、四分木区分を用いて、CUの輝度、Cb、およびCr残差ブロックを1つまたは複数の輝度、Cb、およびCr変換ブロックに分解してよい。変換ブロックは、同じ変換が適用されるサンプルの矩形(正方形または非正方形)ブロックである。CUの変換ユニット(TU)は、輝度サンプルの変換ブロックと、彩度サンプルの2つの対応する変換ブロックと、変換ブロックサンプルを変換するために用いられる構文要素とを含んでよい。よって、CUの各TUは、輝度変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連付けられてよい。いくつかの例において、TUに関連付けられた輝度変換ブロックは、CUの輝度残差ブロックのサブブロックであってよい。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであってよい。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであってよい。単色ピクチャ、または3つの別個の色平面を有するピクチャにおいて、TUは、単一の変換ブロックと、変換ブロックのサンプルを変換するために用いられる構文構造とを含んでよい。
ビデオエンコーダ20は、1つまたは複数の変換をTUの輝度変換ブロックに適用して、TUについての輝度係数ブロックを生成してよい。係数ブロックは、変換係数の2次元配列であってよい。変換係数は、スカラ量であってよい。ビデオエンコーダ20は、1つまたは複数の変換をTUのCb変換ブロックに適用して、TUについてのCb係数ブロックを生成してよい。ビデオエンコーダ20は、1つまたは複数の変換をTUのCr変換ブロックに適用して、TUについてのCr係数ブロックを生成してよい。
係数ブロック(例えば輝度係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化してよい。量子化は、一般に、可能な場合に変換係数を表すために用いられるデータの量を低減することで、さらなる圧縮を提供するために、変換係数が量子化されるプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数を示す構文要素をエントロピー符号化してよい。例えば、ビデオエンコーダ20は、量子化された変換係数を示す構文要素に対してコンテキスト適応バイナリ算術符号化(CABAC)を行ってよい。最後に、ビデオエンコーダ20は、ストレージデバイス32に保存されるか、または宛先デバイス14に伝送される、符号化されたフレームおよび関連付けられたデータの表現を形成するビット系列を含むビットストリームを出力してよい。
ビデオエンコーダ20によって生成されたビットストリームを受信した後、ビデオデコーダ30は、ビットストリームを構文解析して、ビットストリームから構文要素を得てよい。ビデオデコーダ30は、ビットストリームから得られた構文要素に少なくとも部分的に基づいて、ビデオデータのフレームを再構成してよい。ビデオデータを再構成するプロセスは、ビデオエンコーダ20によって行われる符号化プロセスと概して反対である。例えば、ビデオデコーダ30は、現在のCUのTUに関連付けられた係数ブロックを逆変換して、現在のCUのTUに関連付けられた残差ブロックを再構成してよい。ビデオデコーダ30はまた、現在のCUのPUについての予測ブロックのサンプルを、現在のCUのTUの変換ブロックの対応するサンプルに加算することにより、現在のCUの符号化ブロックを再構成する。フレームの各CUについての符号化ブロックを再構成した後、ビデオデコーダ30は、フレームを再構成してよい。
上記のように、ビデオコーディングは、主に2つのモード、すなわちフレーム内予測(またはイントラ予測)およびフレーム間予測(またはインター予測)を用いて、ビデオ圧縮を実現する。パレットベースコーディングは、多くのビデオコーディング規格によって採用されている別の符号化方式である。スクリーン生成されたコンテンツの符号化に特に適当であり得るパレットベースコーディングにおいては、ビデオコーダ(例えばビデオエンコーダ20またはビデオデコーダ30)が、所与のブロックのビデオデータを表す色のパレットテーブルを形成する。パレットテーブルは、所与のブロックにおける最も支配的な(例えば頻繁に使用される)画素値を含む。所与のブロックのビデオデータにおいて頻繁に現れない画素値は、パレットテーブルに含まれないか、またはエスケープ色としてパレットテーブルに含まれる。
パレットテーブルにおける各エントリは、パレットテーブルにおける対応する画素値についてのインデックスを含む。ブロックにおけるサンプルについてのパレットインデックスは、パレットテーブルからのどのエントリが、どのサンプルを予測または再構成するために用いられるべきであるかを示すように符号化されてよい。このパレットモードは、ピクチャ、スライス、タイル、または他のそのようなビデオブロックの分類の第1のブロックについてのパレット予測子を生成するプロセスで開始する。下記で説明されるように、後続のビデオブロックについてのパレット予測子は、典型的には、以前に使用されたパレット予測子を更新することによって生成される。例示の目的で、パレット予測子がピクチャのレベルで定義されることが仮定される。換言すると、ピクチャは、各々がそれ自体のパレットテーブルを有する複数の符号化ブロックを含んでよいが、ピクチャ全体について1つのパレット予測子が存在する。
ビデオビットストリームにおいてパレットエントリを信号伝送するために必要なビットを低減するべく、ビデオデコーダは、ビデオブロックを再構成するために用いられるパレットテーブルにおける新たなパレットエントリを決定するためにパレット予測子を利用してよい。例えば、パレット予測子は、以前に使用されたパレットテーブルからのパレットエントリを含んでよく、または、最も近くで使用されたパレットテーブルの全てのエントリを含めることにより、最も近くで使用されたパレットテーブルで初期化されてもよい。いくつかの実装において、パレット予測子は、最も近くで使用されたパレットテーブルからの全てのエントリよりも少数のエントリを含んでよく、このとき、他の以前に使用されたパレットテーブルからのいくつかのエントリを組み入れてよい。パレット予測子は、異なるブロックを符号化するために用いられるパレットテーブルと同じサイズを有してもよく、または、異なるブロックを符号化するために用いられるパレットテーブルよりも大きいまたは小さくてもよい。一例において、パレット予測子は、64のパレットエントリを含む先入れ先出し(FIFO)テーブルとして実装される。
パレット予測子からビデオデータのブロックについてのパレットテーブルを生成するべく、ビデオデコーダは、パレット予測子の各エントリについての1ビットフラグを符号化ビデオビットストリームから受信してよい。1ビットフラグは、パレット予測子の関連付けられたエントリがパレットテーブルに含まれるべきであることを示す第1の値(例えば二値の1)、または、パレット予測子の関連付けられたエントリがパレットテーブルに含まれるべきでないことを示す第2の値(例えば二値の0)を有してよい。パレット予測子のサイズが、ビデオデータのブロックに用いられるパレットテーブルよりも大きい場合、ビデオデコーダは、パレットテーブルについての最大サイズに達した時点で、それ以上のフラグを受信することを停止してよい。
いくつかの実装において、パレットテーブルにおけるいくつかのエントリは、パレット予測子を用いて決定される代わりに、符号化ビデオビットストリームにおいて直接信号伝送されてよい。そのようなエントリについて、ビデオデコーダは、エントリに関連付けられた輝度および2つの彩度成分についての画素値を示す3つの別個のmビット値を、符号化ビデオビットストリームから受信してよく、ここでmはビデオデータのビット深度を表す。直接信号伝送されるパレットエントリに必要とされる複数のmビット値と比較して、パレット予測子から導出されるパレットエントリは、1ビットフラグのみを必要とする。したがって、パレット予測子を用いて一部または全てのパレットエントリを信号伝送することは、新たなパレットテーブルのエントリを信号伝送するのに必要とされるビットの数を大幅に低減することができ、これにより、パレットモード符号化の全体的な符号化効率が向上する。
多くの事例において、1つのブロックについてのパレット予測子は、1つまたは複数の以前に符号化されたブロックを符号化するために用いられたパレットテーブルに基づいて決定される。しかしながら、ピクチャ、スライスまたはタイルにおける最初のコーディングツリーユニットを符号化するときは、以前に符号化されたブロックのパレットテーブルが利用可能でない場合がある。したがって、以前に使用されたパレットテーブルのエントリを用いてパレット予測子が生成されることができない。そのような場合には、以前に使用されたパレットテーブルが利用可能でない場合にパレット予測子を生成するために用いられる値であるシーケンスパラメータセット(SPS)および/またはピクチャパラメータセット(PPS)において、一連のパレット予測子初期化子(palette predictor initializer)が信号伝送されてよい。SPSは一般に、各スライスセグメントヘッダに見出される構文要素によって参照されるPPSに見出される構文要素の内容によって決定される、符号化ビデオシーケンス(CVS)と称される一連の連続した符号化ビデオピクチャに適用する構文要素の構文構造を指す。PPSは一般に、各スライスセグメントヘッダに見出される構文要素によって決定される、CVS内の1つまたは複数の個々のピクチャに適用する構文要素の構文構造を指す。よって、SPSは一般に、PPSよりも上位レベルの構文構造とみなされ、これは、SPSに含まれる構文要素は、一般に、PPSに含まれる構文要素と比較して、より低頻度で変化し、ビデオデータのより大部分に適用することを意味する。
図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に対応してよく、ブロックは、任意の特定の符号化規格のブロック構造に限定されず、将来のブロックベースの符号化規格に適合するものであってよいことに留意されたい。
一般に、パレットテーブルは、現在符号化されているブロック(例えば図5におけるブロック510または530)について支配的および/または代表的である複数の画素値を含む。いくつかの例において、ビデオコーダ(例えばビデオエンコーダ20またはビデオデコーダ30)は、ブロックの色成分ごとに別個にパレットテーブルを符号化してよい。例えば、ビデオエンコーダ20は、ブロックの輝度成分についてのパレットテーブル、ブロックの彩度Cb成分についての別のパレットテーブル、およびブロックの彩度Cr成分についてのさらに別のパレットテーブルを符号化してよい。この場合、第1のパレットテーブル520および第2のパレットテーブル540は、各々、複数のパレットテーブルとなってよい。他の例において、ビデオエンコーダ20は、ブロックの全ての色成分について単一のパレットテーブルを符号化してよい。この場合、パレットテーブルにおけるi番目のエントリは(Yi、Cbi、Cri)の三重値であり、各値が画素の1つの成分に対応する。したがって、第1のパレットテーブル520および第2のパレットテーブル540の表現は、単に一例であり、限定的であることは意図されていない。
本明細書において説明されているように、第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における決定されたエントリによって指定される画素値で置き換える。
いくつかの実装において、ビデオコーダ(例えばビデオエンコーダ20またはビデオデコーダ30)は、ピクチャ500に関連付けられたパレット予測子550に少なくとも部分的に基づいて、第2のパレットテーブル540を決定する。パレット予測子550は、第1のパレットテーブル520のエントリの一部または全てを含んでよく、場合により他のパレットテーブルからのエントリを含んでもよい。いくつかの例において、パレット予測子550は、先入れ先出しテーブルを用いて実装され、この場合、第1のパレットテーブル520のエントリをパレット予測子550に追加すると、パレット予測子550を最大サイズ以下に保つように、現在パレット予測子550にある最も古いエントリが削除される。他の例において、パレット予測子550は、異なる技法を用いて更新および/または保持されてよい。
一例において、ビデオエンコーダ20は、ブロックについてのパレットテーブルが、隣接ブロック510などの1つまたは複数の他のブロックに関連付けられた1つまたは複数のパレットテーブルから予測されるか否かを示すように、各ブロック(例えば第2のブロック530)についてpred_palette_flagを符号化してよい。例えば、そのようなフラグの値が二値の1である場合、ビデオデコーダ30は、第2のブロック530についての第2のパレットテーブル540が1つまたは複数の以前に復号されたパレットテーブルから予測され、したがって第2のブロック540についての新たなパレットテーブルがpred_palette_flagを含むビデオビットストリームに含まれないと決定してよい。そのようなフラグが二値の0である場合、ビデオデコーダ30は、第2のブロック530についての第2のパレットテーブル540が新たなパレットテーブルとしてビデオビットストリームに含まれると決定してよい。いくつかの例において、pred_palette_flagは、ブロックの異なる色成分ごとに別個に符号化されてよい(例えば、YCbCr空間におけるビデオブロックについて、1つはY、1つはCb、1つはCrについてのものである3つのフラグ)。他の例において、ブロックの全ての色成分について、単一のpred_palette_flagが符号化されてよい。
上記の例において、pred_palette_flagは、現在のブロックについてのパレットテーブルの全てのエントリが予測されることを示すように、ブロックごとに信号伝送される。これは、第2のパレットテーブル540が第1のパレットテーブル520と同一であり、追加の情報が信号伝送されないことを意味する。他の例において、1つまたは複数の構文要素がエントリごとに信号伝送されてよい。すなわち、以前のパレットテーブルの各エントリについて、そのエントリが現在のパレットテーブルに存在するか否かを示すように、フラグが信号伝送されてよい。パレットエントリが予測されない場合、パレットエントリは、明示的に信号伝送されてよい。他の例において、これら2つの方法が組み合わされ得る。
第1のパレットテーブル520に従って第2のパレットテーブル540を予測する場合、ビデオエンコーダ20および/またはビデオデコーダ30は、予測パレットテーブルが決定される元となるブロックの位置を特定してよい。予測パレットテーブルは、現在符号化されているブロック、すなわち第2のブロック530の1つまたは複数の隣接ブロックに関連付けられてよい。図5に図示されるように、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のブロック530についての予測パレットテーブルを決定するときに、左の隣接ブロック、すなわち第1のブロック510の位置を特定してよい。他の例において、ビデオエンコーダ20および/またはビデオデコーダ30は、ピクチャ500における上のブロックなどの、第2のブロック530に対する他の位置における1つまたは複数のブロックの位置を特定してよい。別の例において、パレットモードを用いた走査順序における最後のブロックについてのパレットテーブルが、第2のブロック530についての予測パレットテーブルとして用いられてよい。
ビデオエンコーダ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番目のエントリが、再使用される、または現在のブロックについてのパレットテーブルにコピーされることを意味する。
さらに他の例において、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測の複数の潜在的な候補を含む候補リストを構成してよい。そのような例において、ビデオエンコーダ20は、パレット予測に用いられる現在のブロックが選択される元のリストにおいて候補ブロックを示すように、候補リストにインデックスを符号化してよい。ビデオデコーダ30は、同じようにして候補リストを構成し、インデックスを復号し、復号されたインデックスを用いて、現在のブロックで用いるために対応するブロックのパレットを選択してよい。別の例において、リストにおける示される候補ブロックのパレットテーブルは、現在のブロックについてのパレットテーブルのエントリごとの予測のための予測パレットテーブルとして用いられてよい。
いくつかの実装において、1つまたは複数の構文要素が、第2のパレットテーブル540などのパレットテーブルの全体が予測パレット(例えば、1つまたは複数の以前に符号化されたブロックからのエントリで構成され得る第1のパレットテーブル520)から予測されるか否か、または、第2のパレットテーブル540の特定のエントリが予測されるか否かを示してよい。例えば、初期の構文要素が、第2のパレットテーブル540における全てのエントリが予測されるか否かを示してよい。初期の構文要素が、全てのエントリが予測されるのではないことを示す(例えば二値の0の値を有するフラグ)場合、1つまたは複数の追加の構文要素が、第2のパレットテーブル540のどのエントリが予測パレットテーブルから予測されるかを示してよい。
いくつかの実装において、例えばパレットテーブルに含まれる画素値の数に関して、パレットテーブルのサイズは、固定されてもよく、または、符号化ビットストリームにおいて1つまたは複数の構文要素を用いて信号伝送されてもよい。
いくつかの実装において、ビデオエンコーダ20は、パレットテーブルにおける画素値をビデオデータの対応するブロックにおける実際の画素値と厳密に合致させることなく、ブロックの画素を符号化してよい。例えば、ビデオエンコーダ20およびビデオデコーダ30は、エントリの画素値が互いの予め決定された範囲内である場合、パレットテーブルにおける異なるエントリを結合または組み合わせ(すなわち量子化)してよい。換言すると、新たな画素値の誤差マージン内である既存の画素値が既に存在する場合、新たな画素値はパレットテーブルに追加されず、一方で新たな画素値に対応するブロックにおけるサンプルが既存の画素値のインデックスで符号化される。この有損失符号化のプロセスは、特定のパレットテーブルが無損失であるか有損失であるかに関わらず、同じように画素値を復号し得るビデオデコーダ30の動作に影響を及ぼさないことに留意されたい。
いくつかの実装において、ビデオエンコーダ20は、ブロックにおける画素値を符号化するための予測画素値としてパレットテーブルにおけるエントリを選択してよい。次に、ビデオエンコーダ20は、実際の画素値と選択されたエントリとの間の差を残差として決定し、残差を符号化してよい。ビデオエンコーダ20は、パレットテーブルにおけるエントリによって予測されたブロックにおける画素についての残差値を含む残差ブロックを生成し、次いで(図2に関連して上記で説明されているように)残差ブロックに変換および量子化を適用してよい。このようにして、ビデオエンコーダ20は、量子化残差変換係数を生成してよい。別の例において、残差ブロックは、損失なく(変換および量子化なしで)または変換なしで符号化されてよい。ビデオデコーダ30は、変換係数を逆変換および逆量子化して残差ブロックを再現し、次いで画素値についての予測パレットエントリ値および残差値を用いて画素値を再構成してよい。
いくつかの実装において、ビデオエンコーダ20は、パレットテーブルを構成するために、デルタ値と称される誤差閾値を決定してよい。例えば、ブロックにおけるある位置についての実際の画素値が、デルタ値以下の、実際の画素値とパレットテーブルにおける既存の画素値エントリとの間の絶対差を生じさせる場合、ビデオエンコーダ20は、その位置についての実際の画素値を再構成する際に用いるために、パレットテーブルにおける画素値エントリの対応するインデックスを特定するように、インデックス値を送信してよい。ブロックにおけるある位置についての実際の画素値が、デルタ値よりも大きい、実際の画素値とパレットテーブルにおける既存の画素値エントリとの間の絶対差の値を生じさせる場合、ビデオエンコーダ20は、実際の画素値を送信し、実際の画素値を新たなエントリとしてパレットテーブルに追加してよい。パレットテーブルを構成するために、ビデオデコーダ30は、エンコーダにより信号伝送されたデルタ値を用い、固定のまたは既知のデルタ値に依拠し、またはデルタ値を推測もしくは導出してよい。
上記のように、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータを符号化するときに、イントラ予測モード、インター予測モード、無損失符号化パレットモード、および有損失符号化パレットモードを含む符号化モードを用いてよい。ビデオエンコーダ20およびビデオデコーダ30は、パレットベースコーディングが有効化されるか否かを示す1つまたは複数の構文要素を符号化してよい。例えば、各ブロックにおいて、ビデオエンコーダ20は、パレットベースコーディングモードがそのブロック(例えばCUまたはPU)について用いられるべきであるか否かを示す構文要素を符号化してよい。例えば、この構文要素は、ブロックレベル(例えばCUレベル)で符号化ビデオビットストリームにおいて信号伝送され、次いで、符号化ビデオビットストリームを復号したときにビデオデコーダ30によって受信されてよい。
いくつかの実装において、上述の構文要素は、ブロックレベルよりも上位のレベルで伝送されてよい。例えば、ビデオエンコーダ20は、スライスレベル、タイルレベル、PPSレベル、またはSPSレベルでそのような構文要素を信号伝送してよい。この場合、1に等しい値は、例えばパレットモードまたは他のモードといった追加のモード情報がブロックレベルで信号伝送されないように、このレベル以下のブロックの全てがパレットモードを用いて符号化されることを示す。0に等しい値は、このレベル以下のブロックのいずれもパレットモードを用いて符号化されないことを示す。
いくつかの実装において、より上位のレベルの構文要素がパレットモードを有効化することは、このより上位のレベル以下の各ブロックがパレットモードで符号化されなければならないことを意味しない。むしろ、別のCUレベルまたはさらにTUレベルの構文要素は、この場合にも、CUまたはTUレベルのブロックがパレットモードで符号化されるか否か、および、そうである場合に、対応するパレットテーブルが構成されるべきか否かを示す必要があり得る。いくつかの実装において、ビデオコーダ(例えばビデオエンコーダ20およびビデオデコーダ30)は、ブロックサイズが閾値未満であるブロックについてパレットモードが許容されないように、最小ブロックサイズについてのブロック内サンプル数に関する閾値(例えば32)を選定する。この場合、そのようなブロックについては、いずれの構文要素の信号伝送も行われない。最小ブロックサイズについての閾値は、ビットストリームにおいて明示的に信号伝送され、または、ビデオエンコーダ20およびビデオデコーダ30の両方により適合される既定値として暗示的に設定され得ることに留意されたい。
ブロックの1つの位置における画素値は、ブロックの他の位置における画素値と同じ(またはそのデルタ値以内)であってよい。例えば、ブロックの隣接する画素位置が、同じ画素値を有する、またはパレットテーブルにおける同じインデックス値にマッピングされ得ることは一般的である。したがって、ビデオエンコーダ20は、同じ画素値またはインデックス値を有する、所与の走査順序における複数の連続する画素またはインデックス値を示す1つまたは複数の構文要素を符号化してよい。一続きの同様の値の画素またはインデックス値は、本明細書において「ラン」と称される場合がある。例えば、所与の走査順序における2つの連続する画素またはインデックスが異なる値を有する場合、ランは0に等しい。所与の走査順序における2つの連続する画素またはインデックスが同じ値を有するが、走査順序における3つ目の画素またはインデックスが異なる値を有する場合、ランは1に等しい。同じ値を有する3つの連続するインデックスまたは画素については、ランは2であり、以下同様である。ビデオデコーダ30は、符号化ビットストリームからランを示す構文要素を得、そのデータを用いて、同じ画素またはインデックス値を有する連続する位置の数を決定してよい。
図6は、本開示のいくつかの実装に係る、ビデオエンコーダがパレットベース方式を用いてビデオデータを符号化する技法を実装する例示的プロセス600を示すフローチャートである。例えば、ビデオエンコーダ20は、パレットモードを用いてビデオビットストリームを符号化するように構成され、ビデオビットストリームは、階層構造に組織化され、例えば、それぞれ図4Cおよび図4Eに図示されるように、ビデオにおける各ピクチャは、複数のCTUに区分され、各CTUは、異なる形状およびサイズの複数のCUにさらに分割される。パレットベース方式を実装するべく、ビデオエンコーダ20は、ビデオストリームに含めるために、階層構造の第1のレベルに関連付けられた第1の構文要素を生成する(610)。上記のように、第1の構文要素に関連付けられた第1のレベルは、CUレベルよりも上位のレベル、例えば、タイル、スライス、またはさらにピクチャのレベルとなるように選定される。第1の構文要素は、SPS、PPS、タイルグループヘッダまたはスライスヘッダの一部として格納されてよい。第1の構文要素が二値の1の値を有する場合、これは、ビデオビットストリームにおける第1のレベルよりも下の1つまたは複数のコーディングユニット(CU)についてパレットモードが有効化されることを示す。
次に、ビデオエンコーダ20は、1つまたは複数のCUの画素値および第1の構文要素をビデオビットストリームに符号化し、各CUは、対応するパレットテーブルを有する(630)。例えば、ビデオビットストリームに符号化される各CUについて、ビデオエンコーダ20は、CUに関連付けられた第2の構文要素を生成する(630-1)。上記のように、1つまたは複数のCUについてパレットモードが有効化されていることを第1の構文要素が示す場合であっても、これは、各個のCUが必ずパレットテーブルに従って符号化されることを意味しない。むしろ、特定のCUのビデオブロックがパレットモードに従って符号化されるか否かを決定するのは、第2の構文要素の値である。第2の構文要素が、CUについてパレットモードが有効化されることを示す二値の1の値を有すると仮定すると、ビデオエンコーダ20は次いで、CUについてのパレットテーブルを構成する(630-3)。
パレットテーブルを構成するための様々な技法が、図5に関連して上記で説明されている。例えば、パレットテーブルを構成するためにパレット予測子が用いられてよく、いくつかの実装において、パレット予測子は、ビデオデータによって最も頻繁に使用されるパレットエントリのセットを保持するFIFOテーブルである。パレットテーブルを用いて、ビデオエンコーダ20は次いで、CUのビデオブロックにおけるサンプルを特定し、サンプルの画素値およびパレットテーブルにおけるサンプルについてのパレットインデックスを決定する(630-5)。上記のように、CUにおけるサンプルについては異なる可能性が存在する。第1に、CUにおけるサンプルに対応するパレットテーブルにおける既存のパレットエントリが存在する。そうである場合、この既存のパレットエントリのパレットインデックスは、ビデオビットストリームにおけるサンプルを表すために用いられる。第2に、サンプルの画素値に合致する既存のパレットエントリが存在しない。そうである場合、ビデオエンコーダ20は、パレットテーブルに新たなエントリを追加し、サンプルを表すために新たなエントリのパレットインデックスを用いてよい。この場合、新たなエントリは、同じまたは同様の(デルタ値以内の)画素値を有するCUにおける他のサンプルを表すために用いられてよい。いくつかの実装において、ビデオエンコーダ20は、サンプルの画素値を、パレットテーブルにおけるエスケープ色エントリとして符号化してよい。いずれの場合においても、ビデオエンコーダ20は、サンプルに対応する決定されたパレットインデックスをビデオビットストリームに符号化する(630-7)。
いくつかの実装において、ビデオエンコーダ20は、特定のCUについて、CUについてパレットモードが無効化されることを示す二値の0の第2の構文値を選定してよい。この場合、ビデオエンコーダ20は、他の予測方式、例えばイントラ予測またはインター予測を用いてCUを符号化することを選定し、それに応じて対応する構文要素を符号化してよい。換言すると、パレットモードが有効化されることを第1の構文要素が示すことは、この場合にも、第1のレベルよりも下の特定のCUが非パレットモードを選定することを許容してよい。これに対し、第1の構文要素が、第1のレベルにおいてパレットモードが無効化されることを示す二値の0に設定される場合、第1のレベルよりも下のCUのいずれも、パレットモードを用いて符号化されることはなく、したがって第2の構文要素またはパレットテーブルは、ビデオビットストリームに符号化されることはない。
最後に、ビデオエンコーダ20は、図1に図示されるように、第1のレベルにおける符号化された1つまたは複数のCUおよび第1の構文要素ならびにCUレベルにおける第2の構文要素を含む符号化ビデオビットストリームを、ビデオデコーダ30またはストレージデバイスに出力する(650)。いくつかの実装において、第1のレベルは、第1のレベルよりも下の1つまたは複数のCUに関連付けられた予め定められた閾値以上である関連付けられたブロックサイズを有する。例えば、128サンプルのサイズを有する先祖ノードが、それぞれ32、64および32サンプルのサイズを有する3つのCUに三分されると仮定する。パレットモードを共有するための第1のレベルを決定するために用いられる予め定められた閾値が64である場合、3つのCUは、同じパレットモードを共有する3つの葉ノードである。いくつかの実装において、符号化効率のために32以下のサンプルを有するブロックについてパレットモードが有効化されないように、予め定められた閾値に対してより低い限度(例えば32サンプル)が存在する。いくつかの実装において、第1の構文要素および第2の構文は各々、1ビットフラグである。
いくつかの実装において、CUは、パレットモードの下で、各セグメントが複数のサンプル(例えばM個のサンプル)を含む複数のセグメントに分割され、Mは16または32の正数である。各セグメントについて、パレットインデックス値、パレットインデックス・ラン、および量子化された色などのパレット関連構文のCABAC構文解析および/または符号化は、同じCUにおける他のセグメントのものとは独立である。これを実現するために、パレットモードの下での全てのCABAC構文解析の依存性(例えばコンテキスト・モデリング)および復号の依存性(例えばcopy-aboveモード)は、隣接するセグメントにわたって無効化される。
いくつかの実装において、例えば横断走査順序(traverse scan order)に基づいて、パレットモードの下でCUを複数のセグメントに分割するために異なる方法が用いられてよく、すなわち、走査順序に沿った最初のM個のサンプルがセグメント1にグループ化され、走査順序に沿った次のM個のサンプルがセグメント2にグループ化され、以下同様である。別の例において、CUは、二分木、三分木または四分木区分構造に基づいて複数のセグメントに分割されてよい。各セグメント内において、やはり横断走査順序がセグメントのパレット符号化に用いられてよい。例えば、セグメントについてのインデックス値の数が最初に信号伝送され、それに続いて、切り捨て二値符号化(truncated binary coding)を用いたセグメント全体についての実際のパレットインデックス値の信号伝送が行われる。インデックス数とパレットインデックス値との両方が、インデックス関連のバイパスビンを共にグループ化するバイパスモードで符号化される。次いでインデックス・ランが信号伝送される。最後に、セグメントにおけるエスケープサンプルに対応する成分エスケープ値が、共にグループ化され、バイパスモードで符号化される。
上記のように、共有パレットノードを特定するために異なるブロックサイズ閾値が用いられてよい。一実施形態において、1つの固定の閾値が、信号伝送なしでエンコーダおよびデコーダの両方によって共有される。別の実施形態において、1つの構文要素がビットストリームにおいて共有パレット閾値を信号伝送することが提案される。
図7は、本開示のいくつかの実装に係る、ビデオデコーダ30がパレットベース方式を用いてビデオデータを復号する技法を実装する例示的プロセスを示すフローチャートである。例えば、ビデオデコーダ30は、パレットモードを用いてビデオビットストリームを復号するように構成され、ビデオビットストリームは、階層構造に組織化され、例えば、それぞれ図4Cおよび図4Eに図示されるように、ビデオにおける各ピクチャは、複数のCTUに区分され、各CTUは、異なる形状およびサイズの複数のCUにさらに分割される。パレットベース方式を実装するべく、ビデオデコーダ30は、階層構造の第1のレベルに関連付けられた第1の構文要素をビデオビットストリームから受信する(710)。上記のように、第1の構文要素に関連付けられた第1のレベルは、CUレベルよりも上位のレベル、例えば、タイル、スライス、またはさらにピクチャのレベルとなるように選定される。第1の構文要素は、ビデオエンコーダ20によって生成されたものであり、SPS、PPS、タイルグループヘッダまたはスライスヘッダの一部として格納されてよい。第1の構文要素が二値の1の値を有する場合、これは、ビデオビットストリームにおける第1のレベルよりも下の1つまたは複数のコーディングユニット(CU)についてパレットモードが有効化されることを示す。
第1の構文要素の1の値に基づいて、ビデオデコーダ30は、対応するパレットテーブルに従って1つまたは複数のCUのうちの少なくとも1つの画素値をビデオビットストリームから再構成する(730)。例えば、ビデオビットストリームに符号化される各CUについて、ビデオデコーダ30は、CUに関連付けられた第2の構文要素を受信する(730-1)。上記のように、1つまたは複数のCUについてパレットモードが有効化されていることを第1の構文要素が示す場合であっても、これは、各個のCUが必ずパレットテーブルに従って符号化されることを意味しない。特定のCUのビデオブロックがパレットモードに従って符号化されたか否かを決定するのは、第2の構文要素の値である。第2の構文要素が、CUについてパレットモードが有効化されることを示す二値の1の値を有すると仮定すると、ビデオデコーダ30は、それぞれのCUについてのパレットテーブルをビデオビットストリームから再構成する(730-3)。
パレットテーブルを構成するための様々な技法が、図5に関連して上記で説明されている。例えば、パレットテーブルを構成するためにパレット予測子が用いられてよく、いくつかの実装において、パレット予測子は、ビデオデータによって最も頻繁に使用されるパレットエントリのセットを保持するFIFOテーブルである。パレットテーブルを用いて、ビデオデコーダ30は次いで、CUのビデオブロックにおけるサンプルを特定し、パレットインデックス、次いでパレットテーブルにおけるサンプルについての画素値を決定し、次いでサンプルについての画素値を再構成する(730-5)。上記のように、画素値の再構成は、サンプルの再構成された画素値としてパレットテーブルからの画素値に加算される、サンプルについての残差値の逆量子化および逆変換を必要としてよい。いくつかの実装において、ビデオデコーダ30は、サンプルの画素値を、パレットテーブルにおけるエスケープ色エントリから再構成してよい。
第1の構文要素が、CUについてパレットモードが無効化されることを示す0の値を有する場合、ビデオデコーダ30は、非パレット方式に従って1つまたは複数のCUの画素値をビデオビットストリームから再構成する(750)。上記のように、ビデオデコーダ30は、別のモード、例えば上述のイントラ予測またはインター予測を用いて、CUを再構成してよい。図6に関連して上記で説明されている第1および第2の構文要素に関する全ての特徴が、図7に関連して本明細書で説明されるパレットベース復号プロセスに当てはまることに留意されたい。
いくつかの実装において、交差成分線形モデル(cross-component linear model)(CCLM)が、輝度パレット予測から彩度パレット予測を生成するために用いられる。一例において、CCLMは、隣接する輝度および彩度サンプルを用いて算出され得る。線形モデルが決定された後、線形モデルと共に、同じCUの輝度パレットテーブルに基づいて、彩度パレット予測が算出され得る。一例において、彩度パレット予測は、以下のように導出され得る。
predC(i,j)=α・recL’(i,j)+β
式中、predC(i,j)は、CUにおける予測された彩度パレットを表し、recL’(i,j)は、同じCUの再構成された輝度パレット・サンプルを表す。線形モデル・パラメータαおよびβが導出され、異なる導出方法が用いられてよい。1つの例示的な方法は、輝度パレットテーブルにおける2つのサンプル、すなわち最小輝度サンプルA(xA,yA)および最大輝度サンプルB(xB,yB)からの輝度値と彩度値との間の直線関係である。ここで、(xA,yA)はサンプルAについての輝度値および彩度値であり、(xB,yB)はサンプルBについての輝度値および彩度値である。線形モデル・パラメータαおよびβは、以下の式に従って得られる。
いくつかの実装において、パレットモードの下で横断走査方向(traverse scan direction)を信号伝送するために、現在のブロックの形状に基づく異なるコンテキストが用いられる。現在のブロックの形状に依存して、異なるCABACコンテキストが選択されてよく、これにより、異なるCABAC確率が用いられることになる。そのようなコンテキストはまた、隣接ブロックの横断走査方向に依存してよい。
いくつかの実装において、現在のブロックの形状に依存して、横断走査方向の信号伝送が条件付きで省略されてよい。この場合、ビデオデコーダ30は、現在のブロックの形状に基づいて、横断走査方向を推測する。例えば、ブロックがある特定の閾値を超える縦横比を有する場合、その横断走査方向は、パレットモードの下で信号伝送されないが、ブロックの長辺と同じであると推測される。あるいは、その横断走査方向が通常通りに信号伝送される。別の例において、ブロックがある特定の閾値を超える縦横比を有する場合、その横断走査方向はパレットモードの下で信号伝送されない。ビデオデコーダ30は、横断走査方向をブロックの短辺と同じであると推測する。あるいは、その横断走査方向が通常通りに信号伝送される。
1つまたは複数の例において、説明されている機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいて実装されてよい。ソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体に格納されまたはそれを介して伝送され、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体、または、例えば通信プロトコルに従って、1つの場所から別の場所へのコンピュータプログラムの転送を促進する任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含んでよい。このように、コンピュータ可読媒体は一般に、(1)非一時的な有形のコンピュータ可読記憶媒体または(2)信号または搬送波などの通信媒体に対応してよい。データ記憶媒体は、本出願において説明されている実装の実装のための命令、コードおよび/またはデータ構造を取得するために1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であってよい。コンピュータプログラム製品は、コンピュータ可読媒体を含んでよい。
本明細書の実装の説明において用いられる用語は、特定の実装を説明することのみを目的としたものであり、請求項の範囲を限定することは意図されていない。実装の説明および添付の請求項において用いられる場合、単数形の「a」、「an」および「the」は、別途文脈による明示のない限り、複数形も含むことが意図されている。また、本明細書において用いられる用語「および/または」は、関連付けられた列挙されている項目のうちの1つまたは複数の任意のかつ全ての可能な組み合わせを参照および包含することが理解されよう。さらに、本明細書において用いられる場合の用語「含む(comprise)」および/または「含む(comprising)」は、記載される特徴、要素、および/または構成要素の存在を規定するが、1つまたは複数の他の特徴、要素、構成要素、および/またはそれらの群の存在または追加を排除するものではないことが理解されよう。
また、様々な要素を説明するために第1、第2等の用語が本明細書において用いられる場合があるが、これらの要素はこれらの用語によって限定されるべきでないことが理解されよう。これらの用語は、1つの要素を別の要素と区別するためにのみ用いられる。例えば、実装の範囲から逸脱しない限りにおいて、第1の電極が第2の電極と称されることも可能であり、同様に第2の電極が第1の電極と称されることも可能である。第1の電極および第2の電極は、両方が電極であるが、これらは同じ電極ではない。
本出願の説明は、例示および説明の目的で提示されており、網羅的である、または開示されている形態の発明に限定されることは意図されていない。多くの修正、変形、および代替的実装が、前述の説明および関連する図面において提示される教示の利益を得る当業者には明らかであろう。実施形態は、本発明の原理、実際の応用を最も良く明らかにし、他の当業者が様々な実装について本発明を理解し、想定される特定の用途に好適なように様々な修正を伴って根本的な原理および様々な実装を最も良く利用することを可能とするために、選定および説明されたものである。したがって、請求項の範囲は、開示されている実装の具体例に限定されるべきでなく、修正および他の実装が添付の請求項の範囲内に含まれるよう意図されていることが、理解されるべきである。