[0001] 本出願は、2013年7月12日に出願された米国仮特許出願第61/845,850号、2013年7月15日に出願された米国仮特許出願第61/846,512号、2013年9月25日に出願された米国仮特許出願第61/882,536号、2013年11月1日に出願された米国仮特許出願第61/898,968号、2013年11月22日に出願された米国仮特許出願第61/907,693号、および2013年12月12日に出願された米国仮特許出願第61/915,337号の利益を主張するもので、その各々の内容全体が参照により本明細書に組み込まれる。
[0024] 本開示は、ビデオコーディングプロセスにおいて残差データに関連する係数をコーディングするための技法について説明する。本技法は、ビデオコーディングプロセスにおいて係数レベルコーディングのためのコードを定義するために使用されるライスパラメータの初期化のために構成される。特に、本開示は、係数のブロックのための係数レベルの残りの絶対値をコーディングするためのコード、例えば、ゴロムライスコード(Golomb-Rice codes)または指数ゴロムコード(Exponential-Golomb codes)を定義するために使用されるライスパラメータの初期値を決定するための技法について説明し、ここで、有意係数、1よりも大きい係数レベル、および2よりも大きい係数レベルの指示をコーディングするためにコンテキスト適応型バイナリ算術コーディング(CABAC)が使用される。係数レベルは、ロッシーコーディングの場合、変換係数のレベルであるか、あるいは変換スキップモードにおけるロスレスコーディングまたはロッシーコーディングの場合、変換がそれに適用されない係数(すなわち、残差ピクセル値)のレベルであり得る。いくつかの例では、本技法が、高効率ビデオコーディング(HEVC:High Efficiency Video Coding)規格の範囲拡張における係数レベルコーディングのためのライスパラメータ初期化に適用され得る。
[0025] ライスパラメータは、ゴロムコードのファミリー、例えば、ゴロムライスコードまたは指数ゴロムコードからコードワードセットを選択するために使用される調節可能な値である。ライスパラメータによって定義されるコードは、係数グループ(CG)、すなわち、係数のブロック中の少なくとも1つの係数のための係数レベルの残りの絶対値をコーディングするために使用され得る。HEVCの例では、CGの各々が、ビデオデータの4×4変換ブロック、または変換ブロックの4×4サブブロックを備え得る。CGは、ロッシーコーディングの場合、変換係数を含むか、あるいは変換スキップモードにおけるロスレスコーディングまたはロッシーコーディングの場合、変換がそれに適用されない係数を含み得る。いくつかのプロセスでは、ライスパラメータの初期値が、各CGの開始において0に等しく設定され、CG中の係数レベルの残りの絶対値をコーディングした後に条件付きで更新される。スクリーンコンテンツのための係数レベルをコーディングする場合、あるいはロスレスコーディングまたは変換スキップモードでのロッシーコーディングの場合、各CGについてライスパラメータの値を0に初期化することは最適でないことがある。
[0026] 本開示で説明する技法は、各CGをコーディング(例えば、符号化または復号)するために、全ての場合についてライスパラメータの初期値を0に設定するのではなく、ライスパラメータの初期値を適応的に設定する。特に、本開示は、前にコーディングされた係数について収集される係数レベルの統計値に基づいて現在のCGのためのライスパラメータの初期値を決定するための技法について説明する。本開示ではまた、ビデオデータの、前にコーディングされた係数のための係数レベルの統計値を決定するための技法について説明する。
[0027] 統計値は、前にコーディングされた係数の係数レベルの絶対値または係数レベルの残りの絶対値の統計値であり得る。統計値の値は、ビデオデータの各スライスの開始において0に初期化され得、統計値は、スライスの各CG中でコーディングされる1つまたは複数の係数レベルに基づいて更新され得る。場合によっては、統計値は、CGにおいて係数レベルの第1の絶対値または係数レベルの第1の残りの絶対値がコーディングされるとき、CGごとに1回更新され得る。他の場合には、統計値は、例えば、CGにおいて係数レベルの最後の絶対値または係数レベルの最後の残りの絶対値がコーディングされるとき、より頻繁にまたは異なる係数レベルに基づいて収集され得る。
[0028] 一例として、統計値は、所与の前にコーディングされた係数のための係数レベルを統計値の予め定義された関数と比較し、次いで、この比較に基づいて統計値の値を増加させるべきか減少させるべきかを決定することによって決定され得る。統計値を更新するために使用される統計値の予め定義された関数は、第2の一定値で除算された統計値の値だけ左シフトされた第1の一定値に基づき得る。他の例では、統計値が、異なる技法に従って決定され得る。
[0029] 場合によっては、統計値は、CGを含む変換ブロックの特性に基づいて定義されるCGの複数の異なるカテゴリーの各々について別々に収集され得る。この場合、変換ブロック中の現在のCGのカテゴリーは、変換ブロックの特性に基づいて決定され得、ライスパラメータは、現在のCGについて、決定されたカテゴリーの統計値に基づいて初期化され得る。一例では、変換ブロックがルーマブロック(luma blocks)であるか否かと、変換ブロックが変換スキップブロックであるか否かとに基づいて、4つの異なるカテゴリーの各々について別々の統計値が収集され得る。他の例では、統計値が、異なるタイプの変換ブロック特性に基づいて定義される異なる数のカテゴリーに区分され得る。
[0030] 本開示の技法によれば、現在のCGの開始において、統計値の値は、現在のCGのためのライスパラメータの初期値にマッピングされる。いくつかの例では、統計値の値が、統計値の関数に従って初期ライスパラメータ値にマッピングされ得る。ライスパラメータを初期化するために使用される統計値の関数は、ライスパラメータの最大値、または一定値で除算された統計値の値のいずれかの最小値の選択に基づき得る。他の例では、統計値の値が、異なる関数に従ってまたは記憶されたテーブルに従ってライスパラメータの初期値にマッピングされ得る。現在のCGのためのライスパラメータの初期値は、現在のCG中の少なくとも1つの係数のための係数レベルの残りの絶対値をコーディングするためのコード、例えば、ゴロムライスコードまたは指数ゴロムコードを定義するために使用される。
[0031] いくつかの例では、ビデオエンコーダが、ビデオデコーダまたは記憶デバイスへの送信のために残差ビデオデータに関連付けられる係数の係数レベルをビットストリーム(bitstream)中に符号化し得る。符号化されたビストリーム(bistream)を受信すると、ビデオデコーダは、ビデオエンコーダとは逆の様式で残差ビデオデータの係数レベルを復号し得る。ロッシービデオコーディングの場合、係数は、量子化された変換係数であり得る。この場合、量子化変換係数は、例えば、残差ビデオデータに離散コサイン変換(DCT)などの変換を適用し、次いで、変換係数に量子化を適用することによって生成され得る。ロスレスビデオコーディング、あるいは変換スキッピングまたはバイパスを伴うロッシービデオコーディングの場合、係数は、残差ビデオデータのピクセル値であり得、大きい絶対値をもつ係数レベル、すなわちピクセル値を有し得る。係数が、グラフィックおよびテキスト領域を含み得るスクリーンコンテンツを表すとき、そのコンテンツはうまく予測されないことがあり、その結果、係数のための係数レベルの大きい絶対値が生じる。
[0032] 本開示で説明するライスパラメータ初期化方式は、現在のCGがスクリーンコンテンツを含むかあるいは変換スキッピングまたはバイパスを伴ってコーディングされる場合に発生し得る大きい係数値にライスパラメータが迅速および効率的に適応するために、現在のCGの開始においてライスパラメータの初期値が非0値に設定されることを可能にする。本技法によれば、ライスパラメータの初期値は、前にコーディングされた係数のための係数レベルの統計値に基づいて決定され得る。このようにして、ライスパラメータは、スクリーンコンテンツおよび/または変換もしくは量子化されていない係数のスライスまたはコーディングユニットに適応するために非0値に初期化され得るが、自然コンテンツのスライスまたはコーディングユニットの場合は依然として0に初期化され得る。例えば、前にコーディングされた係数のための大きい係数レベルが大きい値の統計値を生じるとき、現在のCG中におそらく発生する大きい係数値により迅速に適応するために、ライスパラメータの初期値は、大きい値の統計値に従って非0値に等しく設定され得る。
[0033] 図1は、本開示で説明する係数レベルをコーディングするための技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示されているように、システム10は、通信チャネル16を介して符号化ビデオを宛先デバイス14に送信するソースデバイス12を含む。符号化ビデオデータはまた、記憶媒体34またはファイルサーバ36に記憶され得、所望に応じて宛先デバイス14によってアクセスされ得る。記憶媒体またはファイルサーバに記憶されたとき、ビデオエンコーダ20は、コード化ビデオデータを記憶媒体に記憶するための、ネットワークインターフェース、コンパクトディスク(CD)、Blu−ray(登録商標)またはデジタルビデオディスク(DVD)バーナーまたはスタンピングファシリティデバイス、あるいは他のデバイスなど、別のデバイスにコード化ビデオデータを与え得る。同様に、ネットワークインターフェース、CDまたはDVDリーダーなど、ビデオデコーダ30とは別個のデバイスが、記憶媒体からコード化ビデオデータを取り出し得、取り出されたデータをビデオデコーダ30に与えた。
[0034] ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆるスマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソールなどを含む、多種多様なデバイスのいずれかを備え得る。多くの場合、そのようなデバイスはワイヤレス通信のために装備され得る。従って、通信チャネル16は、符号化ビデオデータの送信に好適なワイヤレスチャネル、ワイヤードチャネル、またはワイヤレスチャネルとワイヤードチャネルとの組合せを備え得る。同様に、ファイルサーバ36は、インターネット接続を含む任意の標準的なデータ接続を通じて宛先デバイス14によってアクセスされ得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(例えば、Wi−Fi(登録商標)接続)、ワイヤード接続(例えば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。
[0035] 本開示の例による、係数レベルをコーディングするための技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、例えばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10が、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または二方向のビデオ送信をサポートするように構成され得る。
[0036] 図1の例では、ソースデバイス12が、ビデオソース18と、ビデオエンコーダ20と、変調器/復調器22と、送信機24とを含む。ソースデバイス12において、ビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/または、ソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得、これらは、例えば、スマートフォンまたはタブレットコンピュータ内に与えられ得る。ただし、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例、あるいは符号化ビデオデータがローカルディスクに記憶された適用例に適用され得る。
[0037] キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオ情報は、ワイヤード通信プロトコルまたはワイヤレス通信プロトコルなどの通信規格に従ってモデム22によって変調され、送信機24を介して宛先デバイス14に送信され得る。モデム22は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機24は、増幅器と、フィルタと、ワイヤレス通信の場合には1つまたは複数のアンテナとを含む、データを送信するために設計された回路を含み得る。
[0038] ビデオエンコーダ20によって符号化された、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオはまた、後で消費するために記憶媒体34またはファイルサーバ36に記憶され得る。記憶媒体34は、Blu−rayディスク、DVD、CD−ROM、フラッシュメモリ、または符号化ビデオを記憶するための任意の他の好適なデジタル記憶媒体を含み得る。記憶媒体34に記憶された符号化ビデオは、次いで、復号および再生のために宛先デバイス14によってアクセスされ得る。図1には示されていないが、いくつかの例では、記憶媒体34および/またはファイルサーバ36が送信機24の出力を記憶し得る。
[0039] ファイルサーバ36は、符号化ビデオを記憶すること、およびその符号化ビデオを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(例えば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、ローカルディスクドライブ、または、符号化ビデオデータを記憶することおよび符号化ビデオデータを宛先デバイスに送信することが可能な任意の他のタイプのデバイスを含む。ファイルサーバ36からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。ファイルサーバ36は、インターネット接続を含む任意の標準的なデータ接続を通じて宛先デバイス14によってアクセスされ得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル(例えば、Wi−Fi接続)、ワイヤード接続(例えば、DSL、ケーブルモデム、イーサネット(登録商標)、USBなど)、または両方の組合せを含み得る。
[0040] 宛先デバイス14は、図1の例で、受信機26と、モデム28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。宛先デバイス14の受信機26はチャネル16を介して情報を受信し、モデム28は、その情報を復調して、ビデオデコーダ30のための復調されたビットストリームを生成する。チャネル16を介して通信される情報は、ビデオデータを復号する際にビデオデコーダ30が使用する、ビデオエンコーダ20によって生成された様々なシンタックス情報を含み得る。そのようなシンタックスはまた、記憶媒体34またはファイルサーバ36に記憶される符号化ビデオデータとともに含まれ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、ビデオデータを符号化または復号することが可能であるそれぞれのエンコーダデコーダ(コーデック)の一部を形成し得る。
[0041] ディスプレイデバイス32は、宛先デバイス14と一体化されるか、または宛先デバイス14の外部にあり得る。いくつかの例では、宛先デバイス14が、一体型ディスプレイデバイスを含み、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス14がディスプレイデバイスであり得る。概して、ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
[0042] 図1の例では、通信チャネル16が、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。通信チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信チャネル16は、概して、ワイヤード媒体またはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス12から宛先デバイス14に送信するための任意の好適な通信媒体、または様々な通信媒体の集合体を表す。通信チャネル16は、ソースデバイス12から宛先デバイス14への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[0043] ビデオエンコーダ20およびビデオデコーダ30は、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)とのジョイントコラボレーションチームオンビデオコーディング(JCT−VC:Joint Collaboration Team on Video Coding)によって開発された高効率ビデオコーディング(HEVC)規格など、ビデオ圧縮規格に従って動作し得る。文書JCTVC−L1003v34、Brossら、「High efficiency video coding (HEVC) text specification draft 10」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのジョイントコラボレーティブチームオンビデオコーディング(JCT−VC)、第12回会合:ジュネーブ、スイス、2013年1月14〜23日におけるHEVC規格のドラフトは、http://phenix.int−evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC−L1003−v34.zipから入手可能である。
[0044] 図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30が、それぞれオーディオエンコーダおよびオーディオデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットが、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0045] ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な好適なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアに対する命令を好適な非一時的コンピュータ可読媒体に記憶し、1つまたは複数のプロセッサを使用して命令をハードウェアで実行して本開示の技法を行い得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれもが、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0046] ビデオエンコーダ20は、ビデオ符号化プロセスにおいて係数レベルを符号化するために本開示の技法のいずれかまたは全てを実装し得る。同様に、ビデオデコーダ30は、ビデオ復号プロセスにおいて係数レベルを復号するためにこれらの技法のいずれかのまたは全てを実装し得る。本開示で説明するビデオコーダは、ビデオエンコーダまたはビデオデコーダを指し得る。同様に、ビデオコーディングユニットはビデオエンコーダまたはビデオデコーダを指し得る。同様に、ビデオコーディングはビデオ符号化またはビデオ復号を指し得る。
[0047] デジタルビデオデバイスは、デジタルビデオ情報をより効率的に符号化および復号するためのビデオ圧縮技法を実装する。ビデオ圧縮は、ビデオシーケンスに固有の冗長性を低減または除去するために空間的(フレーム内)予測および/または時間的(フレーム間)予測技法を適用し得る。上で説明されたHEVC規格は、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスの発展的モデルに基づいている。HMは、例えばITU−T H.264/AVCに従う既存のデバイスに対して、ビデオコーディングデバイスのいくつかの追加の能力を仮定する。例えば、H.264は、9つのイントラ予測符号化モードを提供するが、HEVC HMは、33個ものイントラ予測符号化モードを提供し得る。以下のセクションは、HMのいくつかの態様についてより詳細に説明する。
[0048] HEVC規格に従うビデオコーディングの場合、ビデオフレームはコーディングユニットに区分され得る。コーディングユニット(CU:coding unit)は、概して、ビデオ圧縮のために様々なコーディングツールが適用される基本ユニットとして働く画像領域を指す。CUは通常、Yとして示されるルミナンス成分と、UおよびVとして示される2つのクロマ成分(chroma components)とを有する。ビデオサンプリングフォーマットに応じて、U成分とV成分とのサイズは、サンプル数に関して、Y成分のサイズと同じであるか、またはY成分のサイズとは異なり得る。
[0049] CUは、一般に正方形であり、例えば、ITU−T H.264などの他のビデオコーディング規格の下でのいわゆるマクロブロックと同様であると見なされ得る。開発中のHEVC規格の現在提案されている態様のいくつかに従うコーディングが本願で例示のために、説明される。ただし、本開示で説明する技法は、H.264または他の規格に従って定義されるビデオコーディングプロセスあるいはプロプライエタリビデオコーディングプロセス(proprietary video coding processes)など、他のビデオコーディングプロセスのために有用であり得る。
[0050] HMによれば、CUは、1つもしくは複数の予測ユニット(PU:prediction unit)および/または1つもしくは複数の変換ユニット(TU:transform unit)を含み得る。ビットストリーム内のシンタックスデータは、ピクセルの数に関して最大CUである最大コーディングユニット(LCU:largest coding unit)を定義し得る。概して、CUは、CUがサイズの差異を有しないことを除いて、H.264のマクロブロックと同様の目的を有する。従って、CUはサブCUに分割され得る。概して、本開示におけるCUへの言及は、ピクチャの最大コーディングユニットまたはLCUのサブCUを指すことがある。LCUはサブCUに分割され得、各サブCUはさらにサブCUに分割され得る。ビットストリームのためのシンタックスデータは、CU深度と呼ばれる、LCUが分割され得る最大回数を定義し得る。それに応じて、ビットストリームは最小コーディングユニット(SCU:smallest coding unit)をも定義し得る。本開示ではまた、CU、PU、またはTUのいずれかを指すために「ブロック」または「部分」という用語を使用する。概して、「部分」は、ビデオフレームの任意のサブセットを指すことがある。
[0051] LCUは4分木データ構造に関連付けられ得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはLCUに対応する。CUが4つのサブCUに分割される場合、CUに対応するノードは4つのリーフノードを含み、その各々は、サブCUのうちの1つに対応する。4分木データ構造の各ノードは、対応するCUのシンタックスデータを提供し得る。例えば、4分木のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUのためのシンタックス要素は、再帰的に定義され得、CUがサブCUに分割されるかどうかに依存し得る。CUがさらに分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的な分割が存在しなくても、リーフCUの4つのサブCUがリーフCUとも呼ばれる。例えば、16×16サイズのCUがさらに分割されない場合、この16×16CUが決して分割されなくても、4つの8×8サブCUがリーフCUとも呼ばれる。
[0052] リーフCUは、1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUの全部または一部分を表し、そのPUの参照サンプルを取り出すためのデータを含み得る。例えば、PUがインターモード符号化されるとき、PUは、PUの動きベクトルを定義するデータを含み得る。動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(例えば、1/4ピクセル精度もしくは1/8ピクセル精度)、動きベクトルが指す参照フレーム、および/または動きベクトルの参照リスト(例えば、リスト0もしくはリスト1)を記述し得る。PUを定義するリーフCUのデータはまた、例えば、CUを1つまたは複数のPUに区分することを記述し得る。区分モードは、CUがコーディングされないか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかに応じて異なり得る。イントラコーディングの場合、PUは、以下で説明するリーフ変換ユニットと同じように扱われ得る。
[0053] 新生のHEVC規格は、CUごとに異なり得る変換ユニット(TU)に従う変換を可能にする。TUは、通常、区分されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、これは常にそうであるとは限らない。TUは、通常、PUと同じサイズであるか、またはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルが、「残差4分木」(RQT:residual quad tree)と呼ばれる4分木構造を使用して、より小さいユニットにさらに分割され得る。RQTのリーフノードは変換ユニット(TU)と呼ばれることがある。TUに関連付けられたピクセル差分値は、変換係数を生成するために変換され得、その変換係数は量子化され得る。TUは、1つのルーマ変換ブロック(luma transform block)と、2つのクロマ変換ブロック(chroma transform blocks)とを含む。従って、TUに適用される後述の任意のコーディングプロセスは、実際には、ルーマおよびクロマの変換ブロックに適用され得る。
[0054] 概して、PUは、予測プロセスに関係するデータを指す。例えば、PUがイントラモード符号化されるとき、PUは、PUのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化されるとき、PUは、PUの動きベクトルを定義するデータを含み得る。
[0055] 概して、TUは、変換プロセスと量子化プロセスとのために使用される。1つまたは複数のPUを有する所与のCUは、1つまたは複数の変換ユニット(TU)をも含み得る。予測に続いて、ビデオエンコーダ20は、PUに従ってコーディングノードによって識別されたビデオブロックから残差値を計算し得る。コーディングノードは、次いで、元のビデオブロックではなく、残差値を参照するように更新される。残差値はピクセル差分値を備え、ピクセル差分値は、エントロピーコーディングのためのシリアル化変換係数(serialized transform coefficient)を生成するためにTU中で指定された変換および他の変換情報を使用して変換係数に変換され、量子化され、走査され得る。コーディングノードは、これらのシリアル化変換係数を参照するように、もう一度更新され得る。本開示は、一般に、CUのコーディングノードを指すために「ビデオブロック」という用語を使用する。いくつかの特定の場合において、本開示は、コーディングノードならびにPUおよびTUを含む、ツリーブロック、すなわち、LCUまたはCUを指すためにも「ビデオブロック」という用語を使用し得る。
[0056] ビデオシーケンスは、一般に、一連のビデオフレームまたはピクチャを含む。ピクチャグループ(GOP:group of pictures)は、概して、ビデオピクチャのうちの一連の1つまたは複数を備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャのうちの1つまたは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスのための符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、通常、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに作用する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。
[0057] ブロック(例えば、ビデオデータの予測ユニット)をコーディングするために、ブロックの予測子(predictor)が最初に導出される。予測ブロックとも呼ばれる予測子は、イントラ(I)予測(すなわち、空間的予測)またはインター(PもしくはB)予測(すなわち時間的予測)のいずれかを通じて導出され得る。従って、いくつかの予測ユニットは、同じフレーム(またはスライス)中の隣接参照ブロック中の参照サンプルに対する空間的予測を使用してイントラコーディング(I)され得、他の予測ユニットは、他の以前にコーディングされたフレーム(またはスライス)中の参照サンプルのブロックに対して単方向にインターコーディング(P)されるかまたは双方向にインターコーディング(B)され得る。各場合において、参照サンプルは、コーディングされるべきブロックの予測ブロックを形成するために使用され得る。
[0058] 予測ブロックの識別時に、元のビデオデータブロック中のピクセルとそれの予測ブロック中のピクセルとの間の差分が決定される。この差分は予測残差データと呼ばれることがあり、コーディングされるべきブロック中のピクセル値と、コード化ブロックを表すように選択された予測ブロック中のピクセル値との間のピクセル差分を示す。より良好な圧縮を実現するために、予測残差データは、例えば、離散コサイン変換(DCT:discrete cosine transform)、離散サイン変換(DST:discrete sine transform)、整数変換、カルーネンレーベ(K−L)変換、または変換係数を生成するための別の変換を使用して変換され得る。
[0059] TUなどの変換ブロック中の残差データは、空間的ピクセル領域中に存在するピクセル差分値の2次元(2D)アレイで構成され得る。変換は、周波数領域などの変換領域において残差ピクセル値を変換係数の2次元アレイに変換する。さらなる圧縮のために、変換係数は、エントロピーコーディングに先立って量子化され得る。ロスレスコーディング、あるいは変換スキッピングまたはバイパスを伴うロッシーコーディングなど、いくつかの例では、係数について変換プロシージャと量子化プロシージャの両方がスキップされ得る。
[0060] 次いで、エントロピーコーダは、係数に、コンテキスト適応型可変長コーディング(CAVLC:Context Adaptive Variable Length Coding)、コンテキスト適応型バイナリ算術コーディング(CABAC)、確率間隔区分エントロピーコーディング(PIPE:Probability Interval Partitioning Entropy Coding)などのエントロピーコーディングを適用する。いくつかの例では、ビデオエンコーダ20が、エントロピー符号化され得るシリアル化ベクトルを生成するために、係数を走査するために予め定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20が適応走査を行い得る。係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ20は、1次元ベクトルをエントロピー符号化し得る、ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するための、符号化ビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
[0061] 本開示は、コンテキスト適応型バイナリ算術コーディング(CABAC)エントロピーコーダ、あるいは確率間隔区分エントロピーコーディング(PIPE)または関係するコーダなど、他のエントロピーコーダとともにバイパスコーディングするための技法に関する。算術コーディングは、シンボルを非整数長さコードワードにマッピングすることが可能であるので、高いコーディング効率を有する多くの圧縮アルゴリズムにおいて使用されるエントロピーコーディングの形態である。算術コーディングアルゴリズムの一例はコンテキストベースバイナリ算術コーディング(CABAC)である。
[0062] 概して、CABACを使用してデータシンボルをエントロピーコーディングすることは、以下のステップのうちの1つまたは複数を伴う。
(1)2値化:コーディングされるべきシンボルが非2進値化された場合、そのシンボルは、いわゆる「ビン」のシーケンスにマッピングされる。各ビンは「0」または「1」の値を有することができる。
(2)コンテキスト割当て:各ビン(標準モードにおいて)はコンテキストに割り当てられる。コンテキストモデルは、以前に符号化されたシンボルの値またはビン数など、ビンについて利用可能な情報に基づいて所与のビンのコンテキストがどのように計算されるかを決定する。
(3)ビン符号化:ビンは算術エンコーダを用いて符号化される。ビンを符号化するために、算術エンコーダは、入力として、ビンの値の確率、すなわち、ビンの値が「0」に等しい確率と、ビンの値が「1」に等しい確率とを必要とする。各コンテキストの推定された確率は、「コンテキスト状態」と呼ばれる整数値によって表される。各コンテキストはある状態を有し、従って、その状態(すなわち、推定された確率)は、1つのコンテキストに割り当てられたビンに対して同じであり、コンテキスト間で異なる。
(4)状態更新:選択されたコンテキストの確率状態は、ビンの実際のコード化値に基づいて更新される(例えば、ビン値が「1」であった場合、「1」の確率が増加される)。
[0063] バイパスモードにおいてCABACを使用してデータシンボルをエントロピーコーディングする場合、コーディングされるべきシンボルは、ビンのシーケンスに2値化され、固定等確率モデルを用いて(例えば、指数ゴロムコードまたはゴロムライスコードを用いて)算術的にコーディングされる。バイパスモードは、コンテキスト割当てまたは確率状態更新を必要としない。例えば、本開示は、ライスパラメータによって定義されるコードを使用する、係数のための係数レベルの残りの絶対値のバイパスコーディングのための技法について説明する。確率間隔区分エントロピーコーディング(PIPE)は、算術コーディングの原理と同様の原理を使用し、従って、本開示の技法をも利用できることに留意されたい。
[0064] H.264/AVCおよびHEVCにおけるCABACは状態を使用し、各状態は暗黙的に確率に関係する。シンボル(「0」または「1」)の確率が直接使用される、すなわち、確率または確率の整数バージョンが状態である、CABACの変形態が存在する。例えば、CABACのそのような変形態は、以下において「JCTVC−A114」と呼ぶ、「Description of video coding technology proposal by France Telecom, NTT, NTT DOCOMO, Panasonic and Technicolor」、JCTVC−A114、第1回JCT−VC会合、ドレスデン、ドイツ、2010年4月、および、以下において「JCTVC−F254」と呼ぶ、A.AlshinおよびE.Alshina、「Multi−parameter probability upgrade for CABAC」、JCTVC−F254、第6回JCT−VC会合、トリノ、イタリア、2011年7月に記載されている。
[0065] 変換され量子化されるのかまたは変換も量子化もされないのかにかかわらず、係数のブロックをエントロピーコーディングするために、ブロック中の係数の2次元(2D)アレイが、特定の走査順序に従って係数の順序付き1次元(1D)アレイ、すなわちベクトルに再構成されるように、通常、走査プロセスが行われる。次いで、係数のベクトルにエントロピーコーディングが適用される。変換ユニット中の係数の走査は、エントロピーコーダのために係数の2Dアレイをシリアル化する。有意(すなわち、非0(non-zero))係数の位置を示すための有意性マップ(significance map)が生成され得る。走査は、有意(すなわち、非0(nonzero))係数のレベルを走査するために、および/または有意係数の符号をコーディングするために適用され得る。
[0066] HEVC規格では、有意変換係数の位置情報(例えば、有意性マップ)が、走査順序内の非0係数および最後の非0係数のロケーションを示すために、変換ブロックについて最初にコーディングされる。有意性マップおよびレベル情報(すなわち、係数の絶対値と符号)は、逆方向走査順序で係数ごとにコーディングされる。
[0067] 図2は、係数レベルコーディングのための例示的な逆方向走査順序を示す概念図である。H.264規格はジグジグ(zig-zig)走査を定義している。HEVC規格は、サブブロック対角走査、サブブロック水平走査、およびサブブロック垂直走査という、3つの異なる走査を定義している。図2は、逆方向ジグザグ走査パターン29と、逆方向垂直走査パターン31と、逆方向水平走査パターン33と、逆方向対角走査パターン35とを示しており、それぞれ変換ブロックの8×8サブブロックに適用される。逆方向対角走査パターン35と、逆方向ジグザグ走査パターン29と、逆方向垂直走査パターン31と、逆方向水平走査パターン33との各々は、変換ブロックの右下隅におけるより高い周波数の係数から変換ブロックの左上隅におけるより低い周波数の係数に進むことに留意されたい。
[0068] サブブロック対角走査パターン35と、サブブロック水平走査パターン33と、サブブロック垂直走査パターン31とは、HEVC規格の4×4および8×8変換ブロックに適用され得る。サブブロック対角走査パターン35はまた、HEVC規格で、16×16および32×32変換ブロックに適用され得る。いくつかの例では、サブブロック対角走査パターン35がまた、8×8TUに適用され得る。サブブロックベースの走査では、より大きい変換ブロックのある4×4サブブロックが、そのより大きい変換ブロック内の別の4×4サブブロックに進む前に走査される。他の例では、「サブブロック」が、使用される走査順序によるいくつかの連続的に走査される係数からなり得る。例えば、「サブブロック」は、対角走査順序に沿った16個の連続的に走査される係数からなり得る。
[0069] 図3は、係数グループ(CG)の係数レベルコーディングのための例示的なサブブロックベースの逆方向対角走査順序を示す概念図である。図3は、4つの4×4サブブロック(37A、37B、37C、37D)からなる8×8変換ブロック38を示している。図3に示されているように、サブブロック37Dにおける係数が走査され、その後、サブブロック37Cにおける係数を走査する。次いで走査は、サブブロック37Cからサブブロック37Bに進み、最後にサブブロック37Aに進む。図3は、各サブブロックにおいて逆方向対角走査順序を示している。他の例では、どんな走査順序でも使用され得る(例えば、水平、垂直、ジグザグなど)。いくつかの例では、各サブブロック内で順方向走査順序が使用され得る。
[0070] HEVC規格では、係数がチャンクまたはサブセットにグループ化され得る。係数の有意性マップおよびレベル情報(すなわち、絶対値および符号)は、サブセットごとにコーディングされる。係数のサブセットは、本開示では係数グループ(CG:coefficient group)と呼ばれることがある。CGは、4×4サブブロックに対応し得る、変換ブロックのための走査順序でn個(例えば、n=16)の連続する係数として定義され得る。一例では、サブセットが、4×4変換ブロックと8×8変換ブロックとのための走査順序(例えば、順方向または逆方向の対角走査順序、水平走査順序、または垂直走査順序)に沿った16個の連続する係数からなる。16×16および32×32変換ブロックの場合、そのより大きい変換ブロック内の係数の4×4サブブロックはサブセットとして扱われる。図3の例では、サブブロック37の各々がCGであり得る。
[0071] CG内の係数レベル情報を表すために、以下で説明するシンボルがコーディングされる。一例では、全てのシンボルが逆方向走査順序でコーディングされる。シンボルの各々は、その逆方向走査順序に従ってCGの別個の走査においてコーディングされ得る。以下のシンボルは「フラグ」と呼ばれることがある。本開示で説明する「フラグ」のいずれもバイナリシンボルに限定される必要はなく、複数のビットシンタックス要素としても実装され得ることに留意されたい。
[0072] sigMapFlagとも呼ばれるsignificant_coeff_flagは、サブセットにおける各係数の有意性を示す。0を超える絶対値をもつ係数は有意であると見なされる。一例として、0のsigMapFlagは、係数が有意でないこと、すなわち、0以下であることを示し、一方、1の値は、係数が有意であること、すなわち、0よりも大きいことを示す。このフラグは概して、有意性フラグと呼ばれ得る。signFlagとも呼ばれるcoeff_sign_flagは、任意の非0係数(すなわち、sigMapFlagを1としてもつ係数)についての符号情報を示す。例えば、このフラグの0は正の符号を示し、一方、1は負の符号を示す。
[0073] gr1Flagとも呼ばれるcoeff_abs_level_greater1_flagは、任意の非0係数(すなわち、sigMapFlagを1としてもつ係数、またはsigMapFlagが暗黙的に1として導出される場合)について、係数の絶対値が1よりも大きいかどうかを示す。一例として、0のgr1Flag値は、係数が1よりも大きい絶対値を有しないことを示し、一方、1のgr1Flag値は、係数が1よりも大きい絶対値を有することを示す。このフラグは概して、1超フラグ(greater-than-one flag)と呼ばれることがある。
[0074] gr2Flagとも呼ばれるcoeff_abs_level_greater2_flagは、1よりも大きい絶対値をもつ任意の係数(すなわち、gr1Flagを1としてもつ係数)について、係数の絶対値が2よりも大きいかどうかを示す。一例として、0のgr2Flag値は、係数が2よりも大きい絶対値を有しないことを示し、一方、1のgr2Flag値は、係数が2よりも大きい絶対値を有することを示す。このフラグは概して、2超フラグ(greater-than-two flag)と呼ばれることがある。sigMapFlag、gr1Flag、およびgr2Flagはそれぞれ、CABACを使用してコーディングされ得る。
[0075] levelRemシンタックス要素とも呼ばれるcoeff_abs_level_remainingシンタックス要素は、前のフラグによってコーディングされた値よりも大きい絶対値をもつ任意の係数について、係数レベルの残りの絶対値を示す。概して、levelRemシンタックス要素の場合、2よりも大きい絶対値を有する係数(すなわち、gr2Flagを1としてもつ係数)ごとに、係数レベルの絶対値から3を差し引いた値(すなわち、abs(level)−3)がコーディングされる。いくつかの例では、現在のCGについてgr1Flagおよび/またはgr2Flagの最大数に達したとき、2以下の絶対値をもつ係数レベルをコーディングするためにlevelRemシンタックス要素が使用され得る。levelRemシンタックス要素は、ライスパラメータ、例えばゴロムライスコードまたは指数ゴロムコードの値によって定義されるコードを使用してコーディングされ得る。
[0076] 図4は、CG39のための係数レベルをコーディングするための例示的な逆方向対角走査順序を示す概念図である。CG39は、4×4変換ブロックであり得るか、あるいは8×8、16×16または32×32変換ブロック中の4×4サブブロックであり得る。逆方向走査順序で走査される図4に示された係数の符号化シンボルが、表1に要約されている。表1において、scan_posは、図4に示されたCG39の逆方向対角走査パターンに沿った係数の位置を指す。scan_pos15が、走査される最初の係数であり、CG39の右下隅にある。scan_pos15における係数は、0の絶対値を有する。scan_pos0が、走査される最後の係数であり、CG39の左上隅にある。scan_pos0における量子化係数は、10の絶対値を有する。4×4変換ブロック、またはより大きい変換ブロック中の最後の4×4サブブロックの場合、最後の非0係数の位置が知られているので、最初の4つのsigMapFlagはコーディングされる必要がない。すなわち、sigMapFlagのコーディングは、最後の非0係数(この例で、scan_pos11における係数)で始まり得る。
[0077] これらのシンボルのうち、sigMapFlag、gr1Flagおよびgr2Flagのビンは、適応コンテキストモデルを用いて、例えば、CABACを使用して符号化される。signFlagと、levelRemの2値化されたビンとは、固定等確率モデル(例えば、指数ゴロムコードまたはゴロムライスコード)でバイパスモードを通して符号化される。
[0078] 上で説明されたように、HEVC規格におけるシンタックス要素coeff_abs_level_remaining(すなわち、levelRem)は、係数のための係数レベルの残りの絶対値が、係数コーディングのための前の走査パスにおいてコーディングされた値よりも大きい場合、その係数のための係数レベルの残りの絶対値を示す。このシンタックス要素は、スループットを増加させるためにバイパスモードでコーディングした。HEVC規格は、小さい値のためにはゴロムライスコーディングを採用し、より大きい値のためには指数ゴロム(Exp−Golomb)コーディングに切り替わる。ゴロムライスコードと指数ゴロムコードとの間の遷移点(transition point)は、単項コード長(unary code length)が4に等しいときである。ライスパラメータは、ゴロムコードのファミリーからコードワードセットを選択するための調節可能な値(tunable value)である。
[0079] 例えば、ゴロムライスコードはゴロムコードのサブセットであり、調節可能なライスパラメータmを仮定すれば、商q=floor(n/m)および剰余r=n−q×mとして値n>=0を表し、ただし、mは2のべき乗である。商qはプレフィックスであり、単項コード表現を有する。剰余rはサフィックスであり、固定長表現を有する。指数ゴロムコードで、コード構造は、固定長サフィックスが後続する単項プレフィックスによって同様に形成されるが、サフィックス部分におけるコードワードの数は、単項コード中の各ビットの後に2倍になる。指数ゴロムコードは、従って、コードワード長のより遅い増大を有する。概して、ライスパラメータの値が大きくなるほど、コードの増大は遅くなり、それにより、大きい係数値をコーディングするときのより大きい効率が可能になる。ライスパラメータに関するさらなる詳細は、J.Sole、R.Joshi、M.Karczewicz、N.Nguyen、T.Ji、G.Clare、F.Henry、A.Duenasによる、Transform Coefficient Coding in HEVC、IEEE Transactions on Circuits and Systems for Video Transmission(HEVCに関する特別号)、2012年12月において見つけられよう。
[0080] HEVC規格において、ライスパラメータは、各係数グループ(CG)の開始においてゼロの初期値に等しく設定され、以下のように、ライスパラメータの値と、コーディングされている現在の係数のための係数レベルの絶対値とに応じてCGのコーディング中に条件付きで更新される。
ただし、cRiceParamはライスパラメータであり、absCoeffLevelは現在の係数のための係数レベルの絶対値であり、min( )は最小値を選択する関数である。HEVCライスパラメータ更新方式により、2値化プロセスは、分布において大きい絶対値が観測されたとき、係数統計値に漸進的に適応することが可能になる。
[0081] 上述のように、HEVC規格では、ライスパラメータが、前のCG中の係数の残りの絶対値をコーディングした後に、ビデオデータの変換ブロック中の現在のCGについて0の初期値にリセットされる。スクリーンコンテンツのための係数レベルをコーディングする場合、あるいはロスレスコーディングまたは変換スキップモードでのロッシーコーディングの場合、ライスパラメータの値を0に初期化することは最適でないことがある。本開示の技法は、ライスパラメータを常に0にリセットする代わりに、各CGの開始においてライスパラメータの初期値を適応的に設定する。本技法によれば、現在のCGのためのライスパラメータの初期値は、非0値に等しく設定され得る。いくつかの例では、ライスパラメータの初期値が、特にスクリーンコンテンツおよびロスレスコーディングについて、より良いコーディング性能を提供するためにビデオデータの統計値に基づいて決定され得る。
[0082] ライスパラメータ初期化方式の一例では、ライスパラメータが、前のCGをコーディングした後にリセットされないことがある。現在のCGのためのライスパラメータの初期値は、代わりに、前のCGのコーディングの終了においてライスパラメータについて取得されたのと同じ値に設定され得る。HEVC初期化方式の場合のように、初期値は、現在のCGの開始において0に等しく設定され得る。しかしながら、HEVC方式とは異なり、ライスパラメータの初期値は0に設定される必要はない。
[0083] ライスパラメータ初期化方式の別の例では、現在のCGのためのライスパラメータの初期値が、前のCGをコーディングした後のライスパラメータの値に基づく値に設定され得る。特定の例では、各CGの開始におけるライスパラメータが次のように初期化され得る。
上記の例では、ライスパラメータの値が、前のCGをコーディングした後に、0またはライスパラメータの値の減少のいずれかの最大値の選択に基づいて、現在のCGについて初期化される。いくつかの他の例では、ライスパラメータの初期値が、以下の例におけるように上限を定められ得る。
この例では、ライスパラメータの初期値が2よりも大きくならないように上限を定められる。
[0084] いくつかの例では、ライスパラメータの前の値から1ではなく2(すなわち、nは2に等しい)を減算することを含めて、ライスパラメータの前の値を低減するために1以外の値(例えば、値n)が使用され得る。例えば、変換がそれに適用される変換ブロック中に現在のCGが含まれるかどうかに基づいて、ライスパラメータを初期化するための減少の値は変動し得る。例示的な式は以下の通りであり得る。
上記の例では、変換ブロックが変換スキップブロックである場合(すなわち、transform_skip_flag=1)、ライスパラメータの値は、前のCGをコーディングした後に、0またはライスパラメータの値の1だけの減少のいずれかの最大値の選択に基づいて、現在のCGについて初期化される。一方、変換ブロックが変換スキップブロックである場合(すなわち、transform_skip_flag=0)、ライスパラメータの値は、前のCGをコーディングした後に、0またはライスパラメータの値の2だけの減少のいずれかの最大値の選択に基づいて、現在のCGについて初期化される。
[0085] 本開示で説明するライスパラメータ初期化方式の例示的な場合は、全ての変換ブロック中に含まれるCGに適用され得るか、または、変換ブロックに変換が適用されるかどうかに基づいてCGに適用され得る。例えば、変換スキッピングまたは変換バイパスを伴う変換ブロックの場合、ライスパラメータ値は、変換ブロック中の現在のCGについて0にリセットされないことがあるが、変換がそれに適用されている変換ブロックについては、ライスパラメータは変換ブロック中の現在のCGについて0にリセットされ得る。
[0086] 例えば、変換スキップモードでのロッシーコーディングの場合、現在のCGについて初期化されるライスパラメータの値の減少は、変換スキップブロック中のCGのみに適用され得る。例示的な式は以下の通りであり得る。
上記の例では、変換ブロックが変換スキップブロックである場合(すなわち、transform_skip_flag=1)、ライスパラメータの値が、前のCGをコーディングした後に、0またはライスパラメータの値の1だけの減少のいずれかの最大値の選択に基づいて、現在のCGについて初期化される。一方、変換ブロックが変換スキップブロックである場合(すなわち、transform_skip_flag=0)、ライスパラメータの値は、HEVC初期化方式の場合のように、現在のCGについて0に初期化される。
[0087] ライスパラメータ初期化方式のさらなる一例では、現在のCGのためのライスパラメータの初期値が、前に復号された係数のための係数レベルの統計値に基づいて決定され得る。係数レベルの統計値は、前にコーディングされた係数のための係数レベルの絶対値の統計値または係数レベルの残りの絶対値の統計値を含み得る。初期化方式は、現在のCGと同じ変換ブロック中に含まれるCG中の前にコーディングされた係数、および/または現在のCGを含む変換ブロックに対して前にある異なる変換ブロック中に含まれるCG中の前にコーディングされた係数に依存し得る。
[0088] 場合によっては、統計値ベースのライスパラメータ初期化方式は、変換ブロックタイプと、変換ブロックサイズと、変換ブロック中のCGの位置と、変換ブロックがイントラ予測スライスタイプを有するかインター予測スライスタイプを有するかと、変換ブロックの色成分と、変換ブロックのビット深度とのうちの1つまたは複数に依存し得る。さらに、統計値ベースのライスパラメータ初期化方式は、前のおよび現在の変換ブロック中の前にコーディングされた係数の残りの絶対レベルに依存し得る。例えば、ライスパラメータ初期化方式は、前のCG中の係数レベルの最後のコーディングされた絶対値または係数レベルの最後のコーディングされた残りの絶対値に、前のCG中の前にコーディングされた係数のための係数レベルの合計または他の統計値に、あるいは、より単純に、前のCG中でコーディングされる第1の係数の係数レベルに依存し得る。
[0089] 以下で、統計値ベースのライスパラメータ初期化方式のために使用される統計値収集(statistics gathering)のいくつかの例について説明する。本開示では、「statCoeff」という用語および「m_sumCoeff」という用語が、統計値を示すために互換的に使用され、「uiLevel」という用語が、前にコーディングされた係数の係数レベルの絶対値または残りの絶対値を示すために使用される。
[0090] 一例では、統計値が、ビデオデータのスライスまたはコーディングユニット(CU)にわたって、前のコーディングされた係数の係数レベルの絶対値または残りの絶対値の平均または移動平均(running average)または同様の統計値を計算することによって決定され得る。コンテキスト適応型バイナリ算術コーディング(CABAC)コンテキストと同様の様式で、この平均または移動平均は、ビデオデータのスライスの開始において初期化され、スライスの各CGにおいて、CG中の現在のコーディングされた係数レベルに基づいて更新され得る。係数レベルの残りの絶対値(すなわち、coeff_abs_level_remaining値)は、ライスパラメータによって定義されるコード、例えば、ゴロムライスコードまたは指数ゴロムコードを使用してバイパスコーディングされることを理解されたい。理解を助けるのみのために、CABAC、およびCABACコンテキストの初期化との比較について説明を行う。
[0091] 別の例では、統計値が、所与の前にコーディングされた係数のための係数レベルを統計値の値と直接比較し、次いで、この比較に基づいて統計値の値を増加させるべきか減少させるべきかまたは維持すべきかを決定することによって決定され得る。例えば、統計値は、以下の条件式に従って決定され得る。
上記の式において、統計値(statCoeff)の値は、現在の係数レベル(uiLevel)が前のstatCoeffよりも大きい場合は増加されるか、現在の係数レベルがstatCoeffよりも小さい場合は減少されるか、または現在の係数レベルが前のstatCoeffに等しい場合は不変のままにされる。statCoeffの値は、CABACコンテキストが初期化されるとき、すなわち、コーディングされているビデオデータの各スライスの開始におけるコーディングプロセス中の同じポイントにおいて0に初期化され得る。
[0092] 別の例では、統計値が、所与の前にコーディングされた係数のための係数レベルを統計値の予め定義された関数と比較し、次いで、この比較に基づいて統計値の値を増加させるべきか減少させるべきかを決定することによって決定され得る。同じく、この例では、統計値(m_sumCoeff)の値が、ビデオデータの各スライスの開始において0にリセットされ得る。統計値の予め定義された関数は、第2の一定値で除算された統計値の値だけ左シフトされた第1の一定値に基づき得る。統計値(m_sumCoeff)の関数の一例は次のように与えられる。
上記の擬似コード(pseudo-code)において、a、b、c、d、e、f、gおよびhはパラメータであり、<<は左シフト演算を示す。
[0093] 以下は、パラメータa、b、c、d、e、f、gおよびhの例示的な値を使用する上記の式のいくつかの例である。a=3、d=2、第1の一定値(h)が1に等しく、第2の一定値(f)が4に等しく、残りのパラメータが0に等しく設定される場合、統計値(m_sumCoeff)の関数は次のように与えられる。
[0094] a=1、d=1、第1の一定値(h)が1に等しく、第2の一定値(f)が4に等しく、残りのパラメータが0に等しく設定される場合、統計値(m_sumCoeff)の関数は次のように与えられる。
[0095] いくつかの例では、係数レベルの統計値の関数が、スライスの開始において0に初期化された以後に統計値に適用される更新の総数に関係する変数を含み得る。総カウンタ変数(m_total_counter)を含む統計値(m_sumCoeff)の関数の一例は次のように与えられる。
上記の擬似コードにおいて、a、b、c、d、e、f、gおよびhはパラメータであり、<<は左シフト演算を示し、m_total_counterは、統計値(m_sumCoeff)が増加されるか減少されるかにかかわらず、統計値の各更新の後に増加する。
[0096] 上で説明された統計値収集は、予め定義された頻度に従って統計値ベースのライスパラメータ初期化方式について行われ得る。一例では、統計値が、CG中の係数レベルの各絶対値をコーディングした後に、またはCG中の係数レベルの各残りの絶対値をコーディングした後に更新され得る。別の例では、複雑さの増加を制限するために、統計値が、CGごとにまたは変換ブロックごとに1回のみ更新され得る。この手法では、各コード化係数レベルについて統計値を更新することが不要であり得るが、代わりに、統計値が、変換ブロックごとにまたはCGごとに1回更新され得る(これは、HEVCでは16個の係数ごとに1回である)。
[0097] 場合によっては、統計値は、CG中の係数レベルの第1の絶対値がコーディングされるときのみ更新され得る。他の場合には、統計値は、CG中の係数レベルの第1の残りの絶対値がコーディングされるときのみ更新され得る。以下の擬似コードは、上で説明された統計値収集式に関するこの制限を示し、ここで、第1のコード化係数レベル(uiLevel)の値は、統計値(statCoeff)の値と直接比較される。
上記の式において、「firstGolombCoeffinCG」という用語は、現在のコード化係数レベルがCG中の第1の残りの絶対値であるかどうかを示すために使用され、「statCoeff」という用語は、統計値を示すために使用され、「uiLevel」という用語は、前にコーディングされた係数の係数レベルの第1の絶対値または第1の残りの絶対値を示すために使用される。
[0098] 頻度制限が、上で説明された統計値収集式に同様に適用され得、ここで、第1のコード化係数レベル(uiLevel)の値は、以下の擬似コードに示されているように、統計値(statCoeff)の予め定義された関数と比較される。
[0099] 場合によっては、上で説明された統計値収集は、CGを含む変換ブロックの特性に基づいて定義されるCGの複数の異なるカテゴリーの各々について別々に行われ得る。この場合、変換ブロック中の現在のCGのカテゴリーは、変換ブロックの特性に基づいて決定され得、ライスパラメータは、現在のCGについて、決定されたカテゴリーの統計値に基づいて初期化され得る。以下で、統計値ベースのライスパラメータ初期化方式のために使用される統計値を区分するいくつかの例について説明する。
[0100] 統計値を区分またはカテゴリー分類するために使用される変換ブロックの特性は、変換ブロックがルーマブロックタイプであるかクロマブロックタイプであるかと、変換ブロックがイントラ予測スライスタイプを有するかインター予測スライスタイプを有するかどうかと、変換ブロックのサイズと、変換ブロック内のCGの位置とのうちの1つまたは複数を含み得る。変換ブロック内のCGの位置の特性は、現在のCGが変換ブロック中の左上4×4サブブロックであるか否かを示し得る。さらに、特性は、変換ブロックが変換スキップブロックとしてコーディングされるか否か、または変換ブロックが変換量子化バイパスブロックとしてコーディングされるかどうかを含み得る。統計値は、従って、上記の特性のうちの1つまたは複数に応じて別々に保持され得る。別々の統計値が、CGまたは変換ブロックの各タイプまたはカテゴリーについて決定され得る。別々の統計値は、統計値ベースのライスパラメータ初期化方式のためにより正確な推定を提供するが、より多くのストレージリソースも必要とし得る。
[0101] 第1の例として、変換ブロックがルーマブロックであるか否かと、CGが変換ブロック中の左上サブブロックであるか否かとに依存する変数TYPEに基づいて統計値の区分またはカテゴリーを決定するために、以下の関数が使用され得る。
上記の関数によれば、変数TYPEは、変換ブロックがルーマブロックである(isLuma=1)かクロマブロックである(isLuma=0)かと、CGが左上サブブロックである(iSubSet==0)か否(iSubSet>0)かとに応じて、4つの値を有することができる。
[0102] 別の例では、変換ブロックがルーマブロックであるか否かと、変換ブロックが変換スキップモードでコーディングされるか否かとに、統計値の区分またはカテゴリーが依存する。
この関数によれば、変数TYPEは、変換ブロックがルーマブロックである(isLuma=1)かクロマブロックである(isLuma=0)かと、変換ブロックが変換スキップモードでコーディングされる(isTransformSkip=1)か否(isTransformSkip=0)かとに応じて、4つの値を有することができる。
[0103] 別の例では、変換ブロックがルーマブロックであるか否かと、CGが変換ブロック中の左上サブブロックであるか否かと、変換ブロックが変換スキップモードでコーディングされるか否かとに、統計値の区分またはカテゴリーが依存する。
この関数によれば、変数TYPEは、変換ブロックがルーマブロックである(isLuma=1)かクロマブロックである(isLuma=0)かと、変換ブロックが変換スキップモードでコーディングされる(isTransformSkip=1)か否(isTransformSkip=0)かと、CGが左上サブブロックである(iSubSet==0)か否(iSubSet>0)かとに応じて、8つの値を有することができる。
[0104] 別の例では、変換ブロックが変換量子化バイパスとしてコーディングされるか否か、すなわち、変換プロセスと量子化プロセスの両方がロスレスコーディングについてバイパスされるか否かに、統計値の区分またはカテゴリーが依存する。
[0105] 上で説明されたいくつかの例のうちの1つに従って定義されるTYPE変数を使用すると、ならびに、このTYPE変数を、第1のコード化係数レベル(uiLevel)の値が統計値(statCoeff)の値と直接比較されるという上で説明された統計値収集式、およびCG中の第1の係数レベル(firstGolombCoeffinCG)がコーディングされるときのみ統計値が更新されるという上で説明された統計値収集頻度制限と組み合わせると、この合成手法は次のようになり得る。
上記の擬似コードにおいて、「statCoeff[TYPE] 」という用語は、変数TYPEによって示されるCGのカテゴリーについて収集される統計値を示す。
[0106] 第1のコード化係数レベル(uiLevel)の値が、統計値(statCoeff)の予め定義された関数と比較されるという上で説明された統計値収集式を使用する合成手法の別の例は、次のようになり得る。
この場合も、上記の擬似コードにおいて、「statCoeff[TYPE] 」という用語は、変数TYPEによって示されるCGのカテゴリーについて収集される統計値を示す。
[0107] いくつかの例では、コーデック(すなわち、ビデオエンコーダ/デコーダ)が、CGのためのTYPE変数を決定するために複数の方法をサポートし得る。例えば、コーデックは、TYPE変数について上で説明された例示的な関数のうちの2つ以上をサポートし得る。この場合、コーデックは、コーディングまたは導出された指示に基づいて統計値ベースのライスパラメータ初期化方式のために使用される統計値を区分すべき様式を決定するための方法のうちの1つを選択し得る。複数の方法の場合のための例示的な擬似コードが以下に与えられる。
Method1:
Method2:
[0108] ある場合には、シンタックス要素は、CGの異なるカテゴリーを定義するために変換ブロックのどの特性が使用されるかを示すために、コード化ビットストリーム中でシグナリングされ得る。シンタックス要素は、残差ビデオデータのためのシーケンスパラメータセット(SPS)またはピクチャパラメータセット(PPS)のうちの1つ中に含まれるフラグを備え得る。一例として、ビデオエンコーダ20は、コード化ビットストリーム中で高レベルシンタックスでフラグ(例えば、method_flag)をシグナリングし得、ビデオデコーダ30は、method_flagを受信するためにコード化ビットストリームをパースし得る。この例で、method_flag=0は、変換ブロックがルーマブロックであるか否かと、変換ブロックが変換スキップモードでコーディングされるか否かとに基づいて統計値のカテゴリーを決定するためにMethod1が使用されることを示す。method_flag=1は、変換ブロックが変換スキップモードでコーディングされるか否かのみに基づいて統計値のカテゴリーを決定するためにMethod2が使用されることを示す。コーデックによってサポートされる3つ以上の方法がある場合、シンタックス要素は、バイナリフラグの代わりに、選択された方法を示すためのインデックス値を備え得る。
[0109] 別の場合には、コーデックは、ビデオデータのカラーフォーマットに基づいてCGの様々なカテゴリーを定義するために使用される方法のうちの1つを選択し得、その場合、方法を示すために追加のシンタックス要素がビットストリーム中でシグナリングされる必要はない。例えば、ビデオデータのCGのためのTYPE変数を決定するために使用される方法は、ビデオデータをコーディングするためにYUVカラーフォーマットが使用されるかRGBカラーフォーマットが使用されるかに基づいて選択され得る。一例として、変換ブロックがルーマブロックであるか否かと、変換ブロックが変換スキップモードでコーディングされるか否かとに基づいて統計値のカテゴリーを決定するMethod1は、コーディングされるビデオデータがYUVカラーフォーマットであるときに使用される。変換ブロックが変換スキップモードでコーディングされるか否かのみに基づいて統計値のカテゴリーを決定するMethod2は、コーディングされるビデオデータがRGBカラーフォーマットであるときに使用される。ビデオエンコーダ20とビデオデコーダ30とがビデオデータのカラーフォーマットを検出することが可能である場合、選択された方法を示すシンタックス要素、例えば、方法フラグまたは方法インデックス)は、ビットストリーム中でシグナリングされない。
[0110] 本開示で説明する技法によれば、統計値ベースのライスパラメータ初期化方式は、上で説明された例のいずれかの組合せに従って、前にコーディングされた係数について収集される係数レベル統計値に基づいて現在のCGのためのライスパラメータの初期値を決定する。収集された統計値の値を現在のCGのためのライスパラメータの初期値にマッピングするいくつかの例示的な技法について以下で説明する。ライスパラメータの初期値への統計値のマッピングは、各CG(例えば、4×4変換ブロック、または変換ブロックの4×4サブブロック)について行われ得るか、あるいは各TUについて(例えば、TUの開始において)1回のみ行われ得る。
[0111] 一例では、統計値の値が、記憶されたテーブルに従って初期ライスパラメータにマッピングされ得る。マッピングテーブルの入力は統計値の値であり得、テーブルの出力はライスパラメータの初期値であり得る。場合によっては、マッピングテーブルへの入力として、統計値のクリッピングされたバージョンが使用され得る。例えば、最大ライスパラメータが5であり、統計値が0と31との間にクリッピングされる場合、マッピングテーブルは次のように与えられ得る。
各CGの開始において、収集された統計値に基づいてライスパラメータの初期値を決定するために、上記のテーブルが使用され得る。他の例では、収集された統計値に基づいてライスパラメータの初期値を決定するために、異なるマッピングテーブルが使用され得る。
[0112] 統計値収集の3つの主要な例示的な方法が上で説明され、ここで、「statCoeff」および「m_sumCoeff」という記法が次の統計値を示すために互換的に使用され得る。(1)コード化係数レベル(uiLevel)値が統計値(statCoeff)の値と直接比較される統計値収集、(2)コード化係数レベル(uiLevel)の値が統計値(m_sumCoeff)の予め定義された関数と比較される統計値収集、および(3)コード化係数レベル(uiLevel)の値が、総カウンタ変数(m_total_counter)を含む統計値(m_sumCoeff)の予め定義された関数と比較される、統計値収集。
[0113] 統計値収集の特定の例示的な方法のうちの1つと、上で説明されたマッピングテーブルとを使用すると、変数TYPEによって示されるCGのカテゴリーについて収集される統計値に基づくライスパラメータ初期化は、次のように行われ得る。
[0114] 他の例では、統計値の値が、マッピングを行う関数に従ってライスパラメータの初期値にマッピングされ得る。場合によっては、マッピング関数は、収集される統計値の関数であり得る。マッピング関数を使用することにより、マッピングテーブルのさらなるストレージ消費が回避し得る。
[0115] 一例として、ライスパラメータは、以下に与えられるように、一定値だけ右シフトされた収集される統計値に基づいて初期化され得る。
上記の式において、「>>」は右シフト演算を示し、Rはパラメータである。場合によっては、ライスパラメータの最大値を、4よりも大きいかまたはそれに等しい整数値であり得るMAX_RICEに制限することが望ましいことがある。この場合、関数は次のように与えられ得る。
[0116] 別の例として、ライスパラメータは、以下に与えられるように、収集された統計値の線形関数に基づいて初期化され得る。
上記の式において、a、b、cおよびdはパラメータ値である。
[0117] さらなる一例として、ライスパラメータは、収集された統計値の区分線形関数に基づいて初期化され得る。区分線形関数の2つの特定の例は次のように与えられる。
[0118] 別の例では、コード化係数レベル(uiLevel)の値が統計値(m_sumCoeff)の予め定義された関数と比較されるという上で説明された統計値収集の方法に基づいてライスパラメータが初期化され得る。この場合、収集された統計値の値は、統計値の関数に従ってライスパラメータの初期値にマッピングされる。一例では、ライスパラメータを初期化するために使用される統計値の関数が、ライスパラメータの最大値、または一定値で除算された統計値の値のいずれかの最小値の選択に基づき得る。
[0119] マッピング関数の一例は次のように与えられる。
上記の式において、DELAYは一定値であり、MAX_RICE_PARAM_INITはライスパラメータの最大値である。場合によっては、ライスパラエムタ(paraemter)の最大値は、4よりも大きいかまたはそれに等しくなり得る。一定値はユーザ定義のパラメータであり得る。DELAY=4でのマッピング関数の一例は次のように与えられる。
上記の例において、「statCoeff」という用語は、「m_sumCoeff」の代わりに統計値の値を示すために使用され、maxRiceParaは、MAX_RICE_PARAM_INITの代わりにライスパラメータの最大値を示すために使用される。
[0120] さらなる一例では、コード化係数レベル(uiLevel)の値が、総カウンタ変数(m_total_counter)を含む統計値(m_sumCoeff)の予め定義された関数と比較されるという上で説明された統計値収集の方法に基づいてライスパラメータが初期化され得る。この場合、収集された統計値の値が、統計値の関数に従ってライスパラメータの初期値にマッピングされる。マッピング関数の一例は次のように与えられる。
上記の式において、「thres0」という用語は第1のしきい値を示し、「thres1」は第2のしきい値を示し、k0およびk1はパラメータである。この関数によれば、統計値更新の総数で除算された統計値の値がthres0よりも大きい場合、ライスパラメータの初期値は、k0だけ増分されたライスパラメータの前の値に等しく設定される。統計値更新の総数で除算された統計値の値がthres1よりも小さい場合、ライスパラメータの初期値は、k1だけ増分されたライスパラメータの前の値に等しく設定される。
[0121] いくつかの例では、初期ライスパラメータが、最小値と最大値との間にクリッピングされ得る。この場合、ライスパラメータを初期化するために使用されるマッピング関数に余分のクリッピング関数が追加されることになる。クリッピングされたマッピング関数の一例は次のように与えられる。
上記の式において、MIN_RICEはライスパラメータの最小値であり、MAX_RICEはライスパラメータの最大値である。一例では、MIN_RICEの値が0に等しくなり得、MAX_RICEの値が、4よりも大きいかまたはそれに等しい整数値であり得る。MIN_RICEとMAX_RICEとの値は、ビット深度、プロファイル、カラーフォーマット、コーディングモード(すなわち、ロスレスコーディングまたはロッシーコーディング)、および他のタイプのサイド情報のうちの1つまたは複数など、サイド情報に依存し得る。
[0122] 上で説明されたように、HEVCでは、ライスパラメータの値が、CG中の係数レベルの各残りの絶対値をコーディングした後に更新され得る。いくつかの例では、ライスパラメータの更新された値に、同様のクリッピングが適用され得る。範囲(すなわち、ミニナム(mininum)値および最大値)は、更新プロシージャで、初期化プロシージャのためのものと異なり得るか、または範囲は、初期化のために使用される範囲と同じであり得る。同様に、範囲は、ビット深度、プロファイル、カラーフォーマット、コーディングモード(すなわち、ロスレスコーディングまたはロッシーコーディング)、および他のサイド情報のうちの1つまたは複数に依存し得る。
[0123] 統計値をライスパラメータの初期値にマッピングする4つの追加の例が以下に与えられる。
[0124] 第1の例では、m_sumCoeffおよびm_sumCoeff2と呼ばれる2つの統計値が使用される。m_sumCoeffの値は、次のように、コード化係数レベル(uiLevel)の値が統計値(m_sumCoeff)の予め定義された関数と比較されるという上で説明された統計値収集の方法を使用して導出され得る。
[0125] m_sumCoeff2の値は、次のように、コード化係数レベル(uiLevel)の値が統計値(m_sumCoeff2)の値と直接比較されるという上で説明された統計値収集の方法を使用して導出され得る。
[0126] この第1の例では、ライスパラメータの初期値への統計値のマッピングが、変換コード化ブロックで、変換スキップブロックのためのものと異なり得る。変換スキップブロックの場合、初期化関数は次のように与えられ得る。
変換コード化ブロックの場合、初期化関数は次のように与えられ得る。
上記のセドゥオ(pseduo)コードにおいて、「Th」はしきい値である。Thの例示的な値は(1<<uiGoRiceParam)であり得る。
[0127] 第2の例で、m_sumCoeffと呼ばれる統計値は、コード化係数レベル(uiLevel)の値が統計値(m_sumCoeff)の予め定義された関数と比較されるという上で説明された統計値収集の方法を使用して導出され得る。この第2の例では、ライスパラメータの初期値への統計値のマッピングが、変換コード化ブロックで、変換スキップブロックのためのものと異なり得る。変換スキップブロックの場合、初期化関数は次のように与えられ得る。
変換コード化ブロックの場合、初期化関数は次のように与えられ得る。
上記のセドゥオコードにおいて、「Th」はしきい値である。Thの例示的な値はMAX_RICE_PARAM_INIT/2−2であり得る。
[0128] 第3の例で、m_sumCoeffと呼ばれる統計値は、コード化係数レベル(uiLevel)の値が統計値(m_sumCoeff)の予め定義された関数と比較されるという上で説明された統計値収集の方法を使用して導出され得る。この第3の例では、ライスパラメータの初期値への統計値のマッピングが次のように与えられ得る。
上記のセドゥオコードにおいて、「Th」はしきい値であり、「d」はパラメータである。
[0129] 第4の例で、m_sumCoeffと呼ばれる統計値は、コード化係数レベル(uiLevel)の値が統計値(m_sumCoeff)の予め定義された関数と比較されるという上で説明された統計値収集の方法を使用して導出され得る。この第4の例では、ライスパラメータの初期値への統計値のマッピングが次のように与えられ得る。
上記のセドゥオコードにおいて、「Th」はしきい値であり、「d」、DELAY0およびDELAY1はパラメータである。この第4の例で、統計値の値がしきい値(Th)に等しいとき、上記の式のいずれかを使用して導出されるライスパラメータの初期値(uiGoRiceParam)は同じである。
[0130] いくつかの例では、ライスパラメータの初期値としきい値とを決定するために使用されるマッピング関数が固定であり、ビデオエンコーダ20とビデオデコーダ30の両方に知られ得る。他の例では、ライスパラメータの初期値としきい値とを決定するために使用されるマッピング関数が、サイド情報に基づいて適応的に決定され得る。サイド情報は、ビデオエンコーダ20とビデオデコーダ30との各々によって独立して導出され得るか、あるいはサイド情報は、SPSまたはPPSのいずれかにおいて高レベルシンタックスを使用してビデオエンコーダ20からビデオデコーダ30にシグナリングされ得るか、あるいは、サイド情報を決定するために導出とシグナリングとの何らかの組合せが使用され得る。例えば、サイド情報は、フレームサイズ、フレームタイプ、CUサイズ、TUサイズ、TUタイプ(例えば、変換スキップモードまたは変換モード)、色成分、イントラまたはインター予測モード、量子化パラメータ(QP)、ビット深度、カラーフォーマット(例えば、444/422/420)、有意係数フラグ(数と配信の両方)、1超過(すなわち、1よりも大きい)フラグ(数と配信の両方)、および2超過(すなわち、2よりも大きい)フラグ(数と配信の両方)のうちの1つまたは複数を含み得る。それらはまた、明示的にシグナリングされ得る。
[0131] 現在のCGのためのライスパラメータを初期化した後に、ライスパラメータの初期値は、ライスパラメータによって定義されるコード、例えば、ゴロムライスコードまたは指数ゴロムコードを使用して現在のCG中の少なくとも1つの係数のための係数レベルの残りの絶対値をコーディングした後に更新され得る。統計値ベースのライスパラメータ初期化方式のための統計値は、ライスパラメータの値を更新する前または更新した後のいずれかに、現在のCG中の1つまたは複数の係数レベルに基づいて決定され得る。
[0132] いくつかの例では、統計値が、現在のCG中のコード化係数レベルと、現在のCGのためのライスパラメータの現在値との比較または計算に基づき得る。係数レベルとライスパラメータ値とに基づく統計値の一例は次のように与えられる。
上記の擬似コードにおいて、「UndershootCnt」、「OvershootCnt」および「TotalCnt」は、ライスパラメータを初期化するために使用されることになる統計値を示す。さらに、「uiGoRiceParam」はライスパラメータの値を示し、「s」はパラメータであり、absCoeff[idx] は、インデックスidxにおける係数のための係数レベルの絶対値である。
[0133] いくつかの例では、統計値が、ライスパラメータの値を更新する前に決定され得る。この場合、統計値を決定するために使用される比較または計算において、ライスパラメータの更新されていない値が使用される。係数レベルと、ライスパラメータの更新されていない値とに基づいて統計値を決定し、次いで、ライスパラメータの値を更新する例示的な組合せは次のように与えられる。
上記の擬似コードにおいて、「MAX_RICE_PARAM」はライスパラメータの最大値を示し、min<UInt>( )は、最小値を選択する関数である。いくつかの例では、ライスパラメータの最大値が、少なくとも4の整数値に等しくなり得る。他の例では、統計値が、ライスパラメータの値を更新した後に決定され得る。この場合、統計値を決定するために使用される比較または計算において、ライスパラメータの更新された値が使用される。
[0134] いくつかの例では、上で説明された統計値ベースのライスパラメータ初期化方式のための統計値の更新が、ライスパラメータの更新と統合され得る。上で説明されたように、HEVCでは、ライスパラメータの初期値が、ライスパラメータの初期値と、現在の係数グループ中でコーディングされている係数のための係数レベルの絶対値とに基づいて、条件付きで更新され得る。ライスパラメータの値は、現在のCG中の係数のための各残りの絶対レベルをコーディングした後に、条件付きで更新され続け得る。HEVC条件付き更新方式は次のように与えられる。
上記の擬似コードにおいて、「uiGoRiceParam」はライスパラメータの値を示し、absCoeff[idx]は、インデックスidxにおける係数のための係数レベルの絶対値であり、「MAX_RICE_PARAM」はライスパラメータの最大値を示し、min<UInt>( )は、最小値を選択する関数である。
[0135] いくつかの例では、後続のCGの開始においてライスパラメータの値を初期化するために使用される統計値の更新が、現在のCGの係数レベルに基づくライスパラメータ更新と統合され得る。統計値とライスパラメータ値との統合された更新の一例は次の通りある。
上記の擬似コードにおいて、「UndershootCnt++」は統計値の更新を示す。
[0136] いくつかの例では、次のコーディングユニット(例えば、4×4CG、TU、またはCU)についてのライスパラメータ(または、予測子、例えば、ライスパラメータの現在値と比較されるΔ値)の更新された値が、統計値のために使用されるパラメータの一部または全部に基づいて計算される。例えば、一例では、OvershootCntの値が高くなるほど、更新されたライスパラメータの値がより小さくなる。別の例では、UndershootCntの値が高くなるほど、更新されたライスパラメータの値がより大きくなる。
[0137] ビデオデータのビット深度または別の特性に基づいて各CGについてライスパラメータを初期化するいくつかの例について以下で説明する。これらの例では、各CGについてのライスパラメータの初期化が、収集される統計値に依存しない。上で説明された統計値ベースのライスパラメータ初期化方式の場合のように、ライスパラメータ初期化は、各CG(例えば、4×4変換ブロック、または変換ブロックの4×4サブブロック)について行われ得るか、あるいは各TUについて(例えば、TUの開始において)1回のみ行われ得る。
[0138] 一例では、ライスパラメータの初期値が、代わりに、ビデオデータのビット深度に基づき得る。以下は、各CGについてのライスパラメータcRiceParamの初期値が、CGの現在の成分(例えば、ルーマ成分、またはクロマ成分のうちの1つ)のビット深度の関数である例である。
上記の式において、bitDepthは現在の成分のビット深度であり、nはパラメータである。一例では、パラメータnが9に等しく設定され得る。
[0139] 別の例では、各CGについてのライスパラメータcRiceParamの初期値が、CGの成分タイプ(例えば、ルーマまたはクロマ)に依存し得る。別の例で、各CGについてのライスパラメータcRiceParamの初期値は、現在のブロックが、変換と量子化の両方がスキップされる変換量子化バイパスモードでコーディングされるか否かに依存し得る。別の例で、各CGについてのライスパラメータcRiceParamの初期値は、現在のブロックが、変換がスキップされるが量子化が適用され得る変換スキップモードでコーディングされるか否かに依存し得る。別の例で、各CGについてのライスパラメータcRiceParamの初期値は、TUの量子化パラメータ(QP)に依存し得る。別の例で、各CGについてのライスパラメータcRiceParamの初期値は、ビデオデータの色成分および/または色空間に依存し得る。
[0140] 別の例で、各CGについてのライスパラメータcRiceParamの初期値は、CUサイズ、TUサイズ、フレーム解像度、フレームレート、予測モード(例えば、イントラ、インター、イントラBC(イントラブロックコピー))、フレームタイプ、ならびにクロス成分残余予測のモードおよび重みのうちの1つまたは複数に依存し得る。クロス成分残余予測のモードおよび重みの例は、2013年7月15日に出願された米国仮出願第61/846,581号、2013年7月18日に出願された米国仮出願第61/847,839号、2013年5月22日に出願された米国仮出願第61/826,396号、および2013年6月21日に出願された米国仮出願第61/838,152号に記載されている。
[0141] 以下で、一例としてHEVCを使用して、coeff_abs_level_greater1フラグとcoeff_abs_level_greater2フラグとに関する若干の背景情報を提供する。HEVCでは、CG(例えば、4×4サブブロック)について、非0係数レベルをもつ係数の位置を示すために有意性マップが最初にコーディングされる。次いで、有意係数を有する位置について、係数の絶対値が1よりも大きいかどうかを示すためにcoeff_abs_level_greater1フラグが符号化され得る。coeff_abs_level_greater1=1をもつ位置について、係数の絶対値が2よりも大きいかどうかを示すためにcoeff_abs_level_greater2フラグが符号化され得る。
[0142] いくつかの例では、各CGについてのライスパラメータcRiceParamの初期値が、0もしくは1のいずれかに等しいcoeff_abs_level_greater1フラグのコーディングによって示され得る、有意(すなわち、非0)値をもつ、前にコーディングされた係数レベルの数、および/または、0もしくは1のいずれかに等しいcoeff_abs_level_greater2フラグをコーディングすることによって示され得る、1よりも大きい値をもつ、前にコーディングされた係数レベルの数に依存し得る。他の例では、各CGについてのライスパラメータcRiceParamの初期値が、coeff_abs_level_greater1=1をコーディングすることによって示される、1よりも大きい値を有する、前にコーディングされた係数レベルの数、および/または、coeff_abs_level_greater2=1をコーディングすることによって示される、2よりも大きい値を有する、前にコーディングされた係数レベルの数に依存し得る。
[0143] 別の例では、各CGについてのライスパラメータcRiceParamの初期値が、上記の例の任意の組合せに依存し得る。ビデオデータのビット深度に基づいてライスパラメータの初期値を決定する2つの詳細な例が以下に与えられる。
[0144] 例1:
上記の擬似コードにおいて、iQPはQP値であり、BDはビデオデータのビット深度である。この第1の例で、ライスパラメータの初期値は、変換スキップモードまたは変換量子化バイパスモードのいずれかでコーディングされる変換ブロック中にCGが含まれるときは、第1の式に基づいて設定され、変換コード化ブロック中にCGが含まれるときは、第2の式に基づいて設定される。いずれの場合も、初期値は、ビデオデータのビット深度(BD)に基づいて決定される。
[0145] 例2:
上記の擬似コードにおいて、Gr1は、コーディングされたcoeff_abs_level_greater1フラグの数であり、BDはビデオデータのビット深度である。この第2の例で、ライスパラメータの初期値は、変換スキップモードまたは変換量子化バイパスモードのいずれかでコーディングされる変換ブロック中にCGが含まれるときは、第1の式に基づいて設定され、変換コード化ブロック中にCGが含まれるときは、第2の式に基づいて設定される。いずれの場合も、初期値は、ビデオデータのビット深度(BD)に基づいて決定される。
[0146] 上で説明された例の任意の組合せによる各CGについてのライスパラメータ初期化を、オフセット値の明示的シグナリングと組み合わせる、ハイブリッド方式の一例について以下で説明する。例えば、CGの開始においてライスパラメータを初期化するために使用されるオフセットは、(1)一定オフセットおよび(2)適応オフセットという、2つの部分の和に分解され得る。適応オフセットは、本開示で説明する例示的な技法のうちの1つまたは複数を使用して導出され得る。一定オフセットは、ビデオエンコーダ20からビデオデコーダ30にビットストリーム中でシグナリングされ得る。
[0147] 別の例として、明示的ライスパラメータシグナリングを、本開示で説明する初期ライスパラメータ導出プロセスと組み合わせるために、ライスパラメータをシグナリングすべきかどうかの決定は、ビデオエンコーダ20において初期ライスパラメータの導出された値に依存し得る。例えば、初期ライスパラメータの導出された値が、予め定義された値と同様である(例えば、導出された値としきい値との間の差がしきい値よりも小さい)場合、ライスパラメータは、ビデオデコーダ30にシグナリングされないことがあるが、代わりに、上で説明されたように導出され得る。この場合、導出された値または予め定義された値のいずれかがライスパラメータの初期値として使用され得る。そうでない場合、ライスパラメータの初期値はシグナリングされ得るか、または、ライスパラメータの初期値と予め定義された値との間の差がシグナリングされ得る。シグナリング技法のいくつかの追加の例は、2013年8月26日に出願された米国仮出願第61/870,120号、2013年9月20日に出願された米国仮出願第61/880,616号、および2013年10月11日に出願された米国仮出願第61/889,654号において見つけられ得る。
[0148] ライスパラメータ初期化方式の上で説明された例に関するいくつかの追加の例および考慮事項について以下で説明する。本開示の技法について、主として、個々におよび/または他の技法との特定の組合せの一部として説明されていることがあるが、本開示で説明する技法のうちのどの2つ以上も、互いに組み合わされ得る。さらに、本開示で説明する技法のうちのどの1つも、別々に実装されることが可能であり得る。
[0149] ロッシーコーディングの場合、統計値ベースのライスパラメータ初期化方式は、次の条件式に示されているように、変換スキップブロックのみに適用され得る。一方、変換ブロックに変換が適用されるとき、ライスパラメータは、HEVC初期化方式に従って0に初期化される。
他の例では、統計値ベースのライスパラメータ初期化方式が変換スキップブロックのみに適用され得るが、次の式に示されているように、ブロックに変換が適用されるとき、ライスパラメータを0に自動的に初期化することは不要であり得る。
[0150] いくつかの例では、CG内で行われるHEVCライスパラメータ更新方式が無効にされ得る。代わりに、ライスパラメータの初期値は、上で説明された例示的な技法の任意の組合せに従って決定され得、ライスパラメータの初期値は、次いで、ブロック全体にわたって使用され得る。他の例では、異なるライスパラメータ更新方式がCG内で行われ得る。場合によっては、上で説明された例示的な技法のうちの1つまたは複数は、ブロック全体にわたって、所与の順序に従ってまたは統合された方法としてライスパラメータ更新と統計値更新とを行うために使用され得る。また、場合によっては、上で説明された例示的な技法のうちの1つまたは複数は、ブロック全体にわたってライスパラメータのビット深度依存の初期化を行うために使用され得る。
[0151] ライスパラメータの初期値を決定する例示的な方法について、上記では別々に説明したが、本開示の技法はそのように限定されない。概して、上で説明された例示的な技法の様々な組合せが可能であり得る。上で説明された例示的な方法はまた、別々に実装され得る。さらに、上で説明された方法の全てまたはそれらの組合せは、全ての変換ブロック内のCGに適用されるか、あるいは変換がそれについてスキップまたはバイパスされる変換ブロックのみに適用され得る。
[0152] 図5は、本開示で説明する係数レベルを符号化するための技法を実装し得る例示的なビデオエンコーダを示すブロック図である。ビデオエンコーダ20について、例示のためにHEVCコーディングのコンテキストにおいて説明するが、変換係数の走査を必要とし得る他のコーディング規格または方法に関して本開示を限定するものではない。ビデオエンコーダ20は、ビデオフレーム内のCUのイントラコーディングおよびインターコーディングを行い得る。イントラコーディングは、所与のビデオフレーム内のビデオデータの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの現在のフレームと以前にコーディングされたフレームとの間の時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースのビデオ圧縮モードのいずれかを指し得る。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースのビデオ圧縮モードのいずれかを指し得る。
[0153] 図5に示されているように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図5の例では、ビデオエンコーダ20が、モード選択ユニット40と、ビデオデータメモリ41と、動き補償ユニット44と、動き推定ユニット42と、イントラ予測処理ユニット46と、復号ピクチャバッファ(DPB)64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。図5に示された変換処理ニット52は、残差データのブロックに実際の変換または変換の組合せを適用するユニットであり、CUの変換ユニット(TU)と呼ばれることもある変換係数のブロックと混同されるべきでない。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換処理ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するために、デブロッキングフィルタ(図5に図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは、通常、加算器62の出力をフィルタ処理することになる。
[0154] ビデオデータメモリ41は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ41に記憶されたビデオデータは、例えば、ビデオソース18から取得され得る。復号ピクチャバッファ64は、例えば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ20によってビデオデータを符号化する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ41および復号ピクチャバッファ64は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)など、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ41および復号ピクチャバッファ64は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ41が、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0155] 符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロック、例えば、最大コーディングユニット(LCU)に分割され得る。動き推定ユニット42および動き補償ユニット44は、時間圧縮を行うために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して受信されたビデオブロックのインター予測コーディングを行う。イントラ予測処理ニット46は、空間圧縮を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを行い得る。
[0156] モード選択ユニット40は、例えば、各モードについての誤差(すなわち、ひずみ)結果に基づいて、コーディングモードのうちの1つ、すなわち、イントラまたはインターを選択し得、得られたイントラまたはインター予測ブロック(例えば、予測ユニット(PU))を、残差ブロックデータを生成するために加算器50に与え、参照フレーム中で使用する符号化ブロックを再構成するために加算器62に与える。加算器62は、以下でより詳細に説明するように、予測ブロックを、そのブロックについての、逆変換処理ユニット60からの逆量子化され逆変換されたデータと合成して、符号化ブロックを再構成する。いくつかのビデオフレームはIフレームに指定され得、Iフレーム中の全てのブロックはイントラ予測モードで符号化される。場合によっては、例えば、動き推定ユニット42によって行われた動き探索によって得られたブロックの予測が不十分であったとき、イントラ予測処理ユニット46は、PフレームまたはBフレーム中のブロックのイントラ予測符号化を行い得る。
[0157] 動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定(または動き探索)は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、参照フレームの参照サンプルに対する、現在のフレーム中の予測ユニットの変位を示し得る。動き推定ユニット42は、予測ユニットを復号ピクチャバッファ64に記憶された参照ピクチャの参照サンプルと比較することによってインターコード化フレームの予測ユニットの動きベクトルを計算する。参照サンプルは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of squared difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされているPUを含むCUの部分にぴったり一致することがわかるブロックであり得る。参照サンプルは、参照フレームまたは参照スライス内のどこにでも発生し得、必ずしも、参照フレームまたはスライスのブロック(例えば、コーディングユニット)境界において発生するとは限らない。いくつかの例では、参照サンプルが分数ピクセル位置において発生し得る。
[0158] 動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。動きベクトルによって識別される参照フレームの部分は参照サンプルと呼ばれることがある。動き補償ユニット44は、例えば、PUの動きベクトルによって識別される参照サンプルを取り出すことによって、現在のCUの予測ユニットについての予測値を計算し得る。
[0159] イントラ予測処理ユニット46は、動き推定ユニット42と動き補償ユニット44とによって行われるインター予測の代替として、受信ブロックをイントラ予測し得る。イントラ予測処理ユニット46は、隣接する、以前にコーディングされたブロック、例えば、ブロックについての左から右へ、上から下への符号化順序を仮定すると、現在のブロックの上、右上、左上、または左のブロックに対して受信ブロックを予測し得る。イントラ予測処理ユニット46は多種多様なイントラ予測モードで構成され得る。例えば、イントラ予測処理ユニット46は、符号化されているCUのサイズに基づいて、一定数の方向性予測モード、例えば、33個の方向性予測モードで構成され得る。
[0160] イントラ予測処理ユニット46は、例えば、様々なイントラ予測モードの誤差値を計算し、最も低い誤差値を生じるモードを選択することによって、イントラ予測モードを選択し得る。方向性予測モードは、空間的に隣接するピクセルの値を合成し、その合成された値をPU中の1つまたは複数のピクセル位置に適用するための機能を含み得る。PU中の全てのピクセル位置の値が計算されると、イントラ予測処理ユニット46は、PUと符号化されるべき受信ブロックとの間のピクセル差分に基づいて予測モードの誤差値を計算し得る。イントラ予測処理ユニット46は、許容できる誤差値を生じるイントラ予測モードが発見されるまでイントラ予測モードをテストし続け得る。イントラ予測処理ユニット46は、次いで、PUを加算器50に送り得る。
[0161] ビデオエンコーダ20は、コーディングされている元のビデオブロックから、動き補償ユニット44またはイントラ予測処理ユニット46によって計算された予測データを減算することによって残差ブロックを形成する。加算器50は、この減算動作を行う1つまたは複数の構成要素を表す。残差ブロックはピクセル差分値の2次元行列に対応し得、ここで、残差ブロック中の値の数は、残差ブロックに対応するPU中のピクセルの数と同じである。残差ブロック中の値は、PU中と、コーディングされるべき元のブロック中とのコロケートピクセルの値の差分、すなわち、誤差に対応し得る。差分は、コーディングされるブロックのタイプに応じてクロマ差分またはルーマ差分であり得る。
[0162] 変換処理ユニット52は、残差ブロックから1つまたは複数の変換ユニット(TU)を形成し得る。変換処理ユニット52は、複数の変換の中から変換を選択する。例えば、変換処理ユニット52は、変換係数を生成するために離散コサイン変換(DCT)、離散サイン変換(DST)、整数変換、カルーネンレーベ(K−L)変換、または別の変換のうちの1つを選択し得る。変換は、ブロックサイズ、コーディングモードなど、1つまたは複数のコーディング特性に基づいて選択され得る。変換処理ユニット52は、次いで、選択された変換をTUに適用して、変換係数の2次元アレイを備えるビデオブロックを生成する。変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、次いで、その変換係数を量子化し得る。
[0163] エントロピー符号化ユニット56が、次いで、走査モードに従って行列中の係数の走査を行い得る。ロッシーコーディングの場合、係数は、量子化された変換係数であり得る。ロスレスコーディングあるいは変換スキッピングまたはバイパスを伴うロッシーコーディングの場合、係数は、変換または量子化されていない係数であり得る。本開示は、エントロピー符号化ユニット56が走査を行うものとして説明する。ただし、他の例では、量子化ユニット54などの他の処理ユニットが走査を行い得ることを理解されたい。
[0164] 変換係数が1次元アレイに走査されると、エントロピー符号化ユニット56は、CABAC、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE)、または別のエントロピーコーディング方法などのエントロピーコーディングを係数に適用し得る。エントロピー符号化ユニット56は、本開示の技法に従って係数をコーディングするように構成され得る。CABACの例では、エントロピー符号化ユニット56が、通常コーディングモードまたはバイパスモードのいずれかを使用して係数を符号化し得る。CABACを行うために、エントロピー符号化ユニット56は、送信されるべきシンボルを符号化するためのあるコンテキストを適用するためにコンテキストモデルを選択し得る。コンテキストは、例えば、隣接値が非0であるか否かに関係し得る。エントロピー符号化ユニット56は、コンテキストモデル選択のために使用される要因の中でも、例えば、イントラ予測モードのためのイントラ予測方向、シンタックス要素に対応する係数の走査位置、ブロックタイプ、および/または変換タイプに基づいて、これらのシンボルを符号化するために使用されるコンテキストモデルを選択し得る。
[0165] エントロピー符号化ユニット56は、ビデオデコーダまたは記憶デバイスへの送信のために残差ビデオデータの係数レベルをビットストリーム中に符号化し得る。ロスレスビデオコーディング、あるいは変換スキッピングまたはバイパスを伴うロッシービデオコーディングの場合、符号化されるべき係数は、大きい絶対値をもつ係数レベルを有し得る。係数が、グラフィックおよびテキスト領域を含み得るスクリーンコンテンツを表すとき、そのコンテンツはうまく予測されないことがあり、その結果、符号化されるべき係数のための係数レベルの大きい絶対値が生じる。
[0166] エントロピー符号化ユニット56は、ライスパラメータによって定義されるコードを使用してCABACまたは別のエントロピーコーディングエンジンのバイパスモードで現在の係数グループ(CG)中の少なくとも1つの係数のための係数レベルの残りの絶対値(例えば、coeff_abs_level_remainingまたはlevelRem)を符号化する。本開示の技法によれば、エントロピー符号化ユニット56は、前に符号化された係数のための係数レベルの統計値に基づいて現在のCGのためのライスパラメータの初期値を決定するように構成される。統計値は、前にコーディングされた係数の係数レベルの絶対値または係数レベルの残りの絶対値の統計値であり得る。本開示で説明する統計値ベースのライスパラメータ初期化方式は、スクリーンコンテンツのブロックと変換スキッピングまたはバイパスを伴うブロックとにおいて生じ得る大きい係数値にライスパラメータが迅速におよび効率的に適応することを可能にする。
[0167] 一例では、エントロピー符号化ユニット56が、所与の前に符号化された係数のための係数レベルを統計値の関数と比較し、次いで、この比較に基づいて統計値の値を増加させるべきか減少させるべきかを決定することによって、統計値を決定するように構成され得る。統計値の値は、ビデオデータの各スライスの開始において0に初期化され得、エントロピー符号化ユニット56は、スライスのCGごとに統計値を1回更新し得る。いくつかの例では、エントロピー符号化ユニット56が、CGの複数の異なるカテゴリーの各々について別々の統計値を決定するように構成され得る。カテゴリーは、例えば、変換ブロックがルーマブロックであるか否か、および変換ブロックが変換スキップブロックであるか否かなど、CGを含む変換ブロックの特性に基づいて定義され得る。
[0168] 現在のCGの開始において、エントロピー符号化ユニット56は、統計値の値を現在のCGのためのライスパラメータの初期値にマッピングするように構成される。一例では、エントロピー符号化ユニット56が、ライスパラメータの最大値、または一定値で除算された統計値の値のいずれかの最小値の選択に基づく統計値の関数に従って、統計値の値を初期ライスパラメータ値にマッピングし得る。ライスパラメータ初期化方式のための統計値収集、統計値区分、および統計値マッピングプロシージャを表す例示的な式については、上記でより詳細に説明される。
[0169] エントロピー符号化ユニット56によるエントロピーコーディングの後に、得られた符号化ビデオは、ビデオデコーダ30などの別のデバイスに送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。場合によっては、エントロピー符号化ユニット56またはビデオエンコーダ20の別のユニットは、エントロピーコーディングに加えて、他のコーディング機能を行うように構成され得る。
[0170] 逆量子化ユニット58および逆変換処理ユニット60は、それぞれ逆量子化および逆変換を適用して、例えば参照ブロックとして後で使用するために、ピクセル領域において残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを復号ピクチャバッファ64の参照ピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器62は、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算して、復号ピクチャバッファ64に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするための参照ブロックとして動き推定ユニット42および動き補償ユニット44によって使用され得る。
[0171] 図6は、本開示で説明する係数レベルを復号するための技法を実装し得るビデオデコーダ30の一例を示すブロック図である。図6の例では、ビデオデコーダ30が、エントロピー復号ユニット70と、ビデオデータメモリ71と、動き補償ユニット72と、イントラ予測処理ユニット74と、逆量子化ユニット76と、逆変換処理ユニット78と、復号ピクチャバッファ(DPB)82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例で、ビデオエンコーダ20(図5参照)に関して説明した符号化パスとは概して逆の復号パスを行い得る。
[0172] ビデオデータメモリ71は、ビデオエンコーダ30の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ71に記憶されたビデオデータは、例えば、コンピュータ可読媒体16から、例えば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードまたはワイヤレスネットワーク通信を介して、あるいは物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ71は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成し得る。復号ピクチャバッファ82は、例えば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ30によってビデオデータを復号する際に使用するための、参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ71および復号ピクチャバッファ82は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)など、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ71および復号ピクチャバッファ82は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ71が、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0173] エントロピー復号ユニット70は、残差ビデオデータ係数の1次元アレイを取り出すために、符号化ビットストリームに対してエントロピー復号プロセスを行う。使用されるエントロピー復号プロセスは、ビデオエンコーダ20によって使用されたエントロピーコーディング(例えば、CABAC)に依存する。エンコーダによって使用されたエントロピーコーディングプロセスは、符号化ビットストリーム中でシグナリングされるか、または所定のプロセスであり得る。エントロピー復号ユニット70は、本開示の技法に従って係数を復号するように構成され得る。CABACの例では、エントロピー復号ユニット70が、通常コーディングモードまたはバイパスモードのいずれかを使用して係数を復号し得る。
[0174] いくつかの例では、エントロピー復号ユニット70が、ビデオエンコーダ20のエントロピー符号化ユニット56によって使用された走査モードをミラーリングする走査を使用して受信値を走査し得る。係数の走査は逆量子化ユニット76において行われ得るが、走査については、例示のために、エントロピー復号ユニット70によって実施されるものとして説明する。さらに、説明しやすいように別個の機能ユニットとして示されているが、ビデオデコーダ30のエントロピー復号ユニット70、逆量子化ユニット76、および他のユニットの構造および機能は、互いに高度に統合され得る。
[0175] エントロピー復号ユニット70は、ビデオエンコーダ20とは逆の様式でビットストリームからの残差ビデオデータ係数の係数レベルを復号する。ロッシービデオコーディングの場合、復号されるべき係数は、量子化された変換係数であり得る。ロスレスビデオコーディング、あるいは変換スキッピングまたはバイパスを伴うロッシービデオコーディングの場合、復号されるべき係数は、符号化されたピクセル値であり得、大きい絶対値をもつ係数レベル(すなわち、ピクセル値)を有し得る。係数が、グラフィックおよびテキスト領域を含み得るスクリーンコンテンツを表すとき、そのコンテンツはうまく予測されないことがあり、その結果、復号されるべき係数のための係数レベルの大きい絶対値が生じる。
[0176] エントロピー復号ユニット70は、ライスパラメータによって定義されるコードを使用して係数グループ(CG)中の少なくとも1つの係数のための係数レベルの残りの絶対値を復号する。本開示の技法によれば、エントロピー復号ユニット70は、前に復号された係数のための係数レベルの統計値に基づいて現在のCGのためのライスパラメータの初期値を決定するように構成される。統計値は、前に復号された係数の係数レベルの絶対値または係数レベルの残りの絶対値の統計値であり得る。本開示で説明する統計値ベースのライスパラメータ初期化方式は、スクリーンコンテンツのブロックと変換スキッピングまたはバイパスを伴うブロックとにおいて生じ得る大きい係数値にライスパラメータが迅速におよび効率的に適応することを可能にする。
[0177] 一例では、エントロピー復号ユニット70が、所与の前に復号された係数のための係数レベルを統計値の関数と比較し、次いで、この比較に基づいて統計値の値を増加させるべきか減少させるべきかを決定することによって、統計値を決定するように構成され得る。統計値の値は、ビデオデータの各スライスの開始において0に初期化され得、エントロピー復号ユニット70は、スライスのCGごとに統計値を1回更新し得る。いくつかの例では、エントロピー復号ユニット70が、CGの複数の異なるカテゴリーの各々について別々の統計値を決定するように構成され得る。カテゴリーは、例えば、変換ブロックがルーマブロックであるか否か、および変換ブロックが変換スキップブロックであるか否かなど、CGを含む変換ブロックの特性に基づいて定義され得る。
[0178] 現在のCGの開始において、エントロピー復号ユニット70は、統計値の値を現在のCGのためのライスパラメータの初期値にマッピングするように構成される。一例では、エントロピー復号ユニット70が、ライスパラメータの最大値、または一定値で除算された統計値の値のいずれかの最小値の選択に基づく統計値の関数に従って、統計値の値を初期ライスパラメータ値にマッピングし得る。ライスパラメータ初期化方式のための統計値収集、統計値区分、および統計値マッピングプロシージャを表す例示的な式については、上記でより詳細に説明される。
[0179] 逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された、量子化された変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、例えば、HEVCのために提案されたプロセスまたはH.264復号規格によって定義されたプロセスと同様の、従来のプロセスを含み得る。逆量子化処理は、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、CUについてビデオエンコーダ20によって計算される量子化パラメータQPの使用を含み得る。逆量子化ユニット76は、係数が1次元アレイから2次元アレイに変換される前または変換された後に変換係数を逆量子化し得る。
[0180] 逆変換処理ユニット78は、逆量子化された変換係数に逆変換を適用する。例えば、逆変換処理ユニット78は、残差データを生成するために離散コサイン変換(DCT)、離散サイン変換(DST)、整数変換、カルーネンレーベ(K−L)変換、または別の変換のうちの1つを適用し得る。いくつかの例では、逆変換処理ユニット78が、ビデオエンコーダ20からのシグナリングに基づいて、あるいはブロックサイズ、コーディングモードなどの1つまたは複数のコーディング特性から変換を推測することによって、逆変換を決定し得る。いくつかの例では、逆変換処理ユニット78が、現在のブロックを含むLCUのための4分木のルートノードにおけるシグナリングされた変換に基づいて、現在のブロックに適用すべき変換を決定し得る。代替的に、変換は、LCU4分木中のリーフノードCUのためのTU4分木のルートにおいてシグナリングされ得る。いくつかの例では、逆変換処理ユニット78が、逆変換処理ユニット78が、復号されている現在のブロックの変換係数に2つ以上の逆変換を適用する、カスケード逆変換を適用し得る。
[0181] イントラ予測処理ユニット74は、シグナリングされたイントラ予測モードと、現在のフレームについて以前に復号されたブロックからのデータとに基づいて、現在のフレームの現在のブロックについての予測データを生成し得る。
[0182] 動き補償ユニット72は、符号化ビットストリームから、動きベクトルと、動き予測方向と、参照インデックスとを取り出し得る。参照予測方向は、インター予測モードが単方向である(例えば、Pフレーム)か、双方向である(Bフレーム)かを示す。参照インデックスは、候補動きベクトルがどの参照フレームに基づくかを示す。取り出された動き予測方向と、参照フレームインデックスと、動きベクトルとに基づいて、動き補償ユニット72は、現在の部分についての動き補償ブロックを生成する。これらの動き補償ブロックは、本質的に、残差データを生成するために使用される予測ブロックを再現する。
[0183] 動き補償ユニット72は、動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を行い得る。サブピクセル精度をもつ動き推定に使用されるべき補間フィルタの識別子は、シンタックス要素中に含まれ得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。動き補償ユニット72は、受信されたシンタックス情報に従って、ビデオエンコーダ20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
[0184] さらに、動き補償ユニット72およびイントラ予測処理ユニット74は、HEVCの例で、(例えば、4分木によって与えられる)シンタックス情報の一部を使用して、符号化ビデオシーケンスのフレームを符号化するために使用されるLCUのサイズを決定し得る。動き補償ユニット72およびイントラ予測処理ユニット74はまた、シンタックス情報を使用して、符号化ビデオシーケンスのフレームの各CUがどのように分割されるか(および、同様に、サブCUがどのように分割されるか)を記述する分割情報を決定し得る。シンタックス情報はまた、各分割がどのように符号化されるかを示すモード(例えば、イントラまたはインター予測、およびイントラ予測の場合はイントラ予測符号化モード)と、各インター符号化PUについての1つまたは複数の参照フレーム(および/またはそれらの参照フレームの識別子を含んでいる参照リスト)と、符号化ビデオシーケンスを復号するための他の情報とを含み得る。
[0185] 加算器80は、残差ブロックを、動き補償ユニット72またはイントラ予測処理ユニット74によって生成された対応する予測ブロックと合成して、復号ブロックを形成する。所望される場合、ブロッキネスアーティファクトを除去するために復号されたブロックをフィルタ処理するために、デブロッキングフィルタも適用され得る。復号されたビデオブロックは、次いで、復号ピクチャバッファ82に記憶され、復号ピクチャバッファ82は、参照ブロックを後続の動き補償のために与え、また、(図1のディスプレイデバイス32などの)ディスプレイデバイス上での提示のために復号されたビデオを生成する。
[0186] 図7は、本開示で説明する技法に従って係数レベルのエントロピー符号化中にライスパラメータの初期値を決定する例示的な動作を示すフローチャートである。例示的な動作について、図5からのエントロピー符号化ユニット56を含むビデオエンコーダ20に関して説明する。
[0187] エントロピー符号化ユニット56は、ビデオデコーダ30への送信のためにあるいは記憶媒体34またはファイルサーバ36上の記憶のために、ビットストリーム中に符号化されるべき残差ビデオデータの係数を受信する。残差ビデオデータ係数は係数グループ(CG)中に含まれ得、CGの各々は変換ブロックのサブブロック(例えば、図4に示されている4×4サブブロック)である。CG中の係数の符号化中に、エントロピー符号化ユニット56は、前に符号化された係数のための係数レベルの統計値を決定する(100)。図9に関して以下でより詳細に説明する例において、前に符号化された係数のための係数レベルの統計値を決定することは、統計値の関数への、前に符号化された係数のうちの1つまたは複数のための係数レベルの比較に基づいて、統計値の値を増加させるべきか減少させるべきかを決定することを備え得る。統計値の値は、残差ビデオデータの各スライスの開始において0に初期化され得る。
[0188] いくつかの例では、前に符号化された係数のための係数レベルの統計値を決定することが、残差ビデオデータのスライスまたはコーディングユニット(CU)にわたって係数レベルの平均または移動平均を計算することを備え得る。他の例では、前に符号化された係数のための係数レベルの統計値を決定することが、統計値の値への、前に符号化された係数のうちの1つのための係数レベルの比較に基づいて、統計値の値を増加させるべきか減少させるべきかまたは維持すべきかを決定することを備え得る。
[0189] 係数レベルの統計値は、前に符号化された係数のための係数レベルの絶対値の統計値または係数レベルの残りの絶対値の統計値を含み得る。係数レベルの統計値は、同じ変換ブロック中に全て含まれるCG中の前に符号化された係数について収集されるか、または2つ以上の異なる変換ブロック中に含まれるCG中の前に符号化された係数について収集され得る。
[0190] いくつかの例では、エントロピー符号化ユニット56が、係数グループごとに、前に符号化された係数のための係数レベルの統計値を1回決定し得る。統計値収集の頻度については、図9に関して以下でより詳細に説明する。例えば、エントロピー符号化ユニット56は、前のCGの各々において係数レベルの第1の絶対値が符号化されるときに統計値を決定し得る。代替的に、エントロピー符号化ユニット56は、前のCGの各々において係数レベルの第1の残りの絶対値が符号化されるときに統計値を決定し得る。他の例では、エントロピー符号化ユニット56が、係数の各々を符号化するときに、前に符号化された係数のための係数レベルの統計値を決定し得る。
[0191] さらに、図9に関して以下でより詳細に説明するように、エントロピー符号化ユニット56は、CGの複数の異なるカテゴリーの各々について別々の統計値を決定し得る。カテゴリーは、CGを含む変換ブロックの特性に基づいて定義され得る。例えば、変換ブロックの特性は、変換ブロックがルーマブロックタイプであるかクロマブロックタイプであるか、変換ブロックが変換スキップブロックとして符号化されるか変換量子化バイパスブロックとして符号化されるか、変換ブロックがイントラ予測スライスタイプを有するかインター予測スライスタイプを有するか、変換ブロックのサイズ、および/または変換ブロック内のCGの位置を含み得る。
[0192] 符号化されるべき残差ビデオデータの変換ブロック中の現在のCGについて、エントロピー符号化ユニット56は、前に符号化された係数のための係数レベルの収集された統計値に基づいてライスパラメータの初期値を決定する(102)。従来、ライスパラメータの値は、各CGの開始において0に初期化され、CG中の係数レベルの残りの絶対値を符号化した後に条件付きで更新される。スクリーンコンテンツのための係数レベルをコーディングする場合、あるいはロスレスコーディングまたは変換スキップモードでのロッシーコーディングの場合、各CGについてライスパラメータの値を0に初期化することは最適でないことがある。本開示の技法は、ライスパラメータの値を0に自動的にリセットする代わりに、収集された統計値に基づいて各CGの開始においてライスパラメータの値を設定することについて説明する。
[0193] 図10に関して以下でより詳細に説明する一例では、エントロピー符号化ユニット56が、統計値の関数に従って、収集された統計値の値をライスパラメータの初期値にマッピングすることによって現在のCGのためのライスパラメータの初期値を決定する。他の例では、エントロピー符号化ユニット56が、記憶されたテーブルに従って、収集された統計値の値をライスパラメータの初期値にマッピングし得る。
[0194] 上記でより詳細に説明したように、エントロピー符号化ユニット56は、現在のCG中の係数の係数レベルを符号化するために、逆方向走査順序に従って現在のCGについて1つまたは複数の走査を行い得る。例えば、エントロピー符号化ユニット56は、通常コーディングモードでコンテキストモデルを使用して、係数が、1よりも大きい絶対値をもつ係数レベルを有するか、または2よりも大きい絶対値をもつ係数レベルを有するかを示すためのフラグまたはシンタックス要素を符号化し得る。エントロピー符号化ユニット56は、次いで、ライスパラメータによって定義されるコードを使用して現在のCG中の係数のうちの少なくとも1つのための係数レベルの残りの絶対値を示すためのフラグまたはシンタックス要素を符号化する(104)。例えば、エントロピー符号化ユニット56は、バイパスモードで2よりも大きい係数レベルをもつ係数の全てのための係数レベルの残りの絶対値を示すシンタックス要素を符号化し得る。いくつかの例では、現在のCG中の係数レベルの第1の残りの絶対値を符号化するときに、エントロピー符号化ユニット56が、符号化された係数の係数レベルに基づいて統計値を更新し得る。
[0195] 場合によっては、エントロピー符号化ユニット56は、ライスパラメータの初期値と、現在のCG中で符号化されている係数のための係数レベルの絶対値とに基づいて、ライスパラメータの初期値を条件付きで更新し得る。エントロピー符号化ユニット56は、現在のCG中の係数のための各残りの絶対レベルを符号化した後に、ライスパラメータの値を条件付きで更新し続け得る。現在のCGの終了において、エントロピー符号化ユニット56は、現在のCG中に含まれる最近符号化された係数を含む、前に符号化された係数のための係数レベルの統計値に基づいて、後続のCGのためのライスパラメータの初期値を決定し得る。
[0196] 図8は、本開示で説明する技法に従って係数レベルのエントロピー復号中にライスパラメータの初期値を決定する例示的な動作を示すフローチャートである。例示的な動作について、図6からのエントロピー復号ユニット70を含むビデオデコーダ30に関して説明する。
[0197] ビデオデコーダ30は、ビデオエンコーダ20から、あるいは記憶媒体34またはファイルサーバ36などの記憶デバイスから符号化ビデオビットストリームを受信する。受信されたビデオビストリームは、復号されるべき残差ビデオデータの係数を表す。残差ビデオデータ係数は係数グループ(CG)中に含まれ得、CGの各々は変換ブロックのサブブロック(例えば、図4に示されている4×4サブブロック)である。CG中の係数の復号中に、エントロピー復号ユニット70は、前に復号された係数のための係数レベルの統計値を決定する(110)。図9に関して以下でより詳細に説明する例において、前に復号された係数のための係数レベルの統計値を決定することは、統計値の関数への、前に復号された係数のうちの1つまたは複数のための係数レベルの比較に基づいて、統計値の値を増加させるべきか減少させるべきかを決定することを備え得る。統計値の値は、残差ビデオデータの各スライスの開始において0に初期化され得る。
[0198] いくつかの例では、前に復号された係数のための係数レベルの統計値を決定することが、残差ビデオデータのスライス、コーディングユニット(CU)、または変換ユニット(TU)にわたって係数レベルの平均または移動平均を計算することを備え得る。他の例では、前に復号された係数のための係数レベルの統計値を決定することが、統計値の値への、前に符号化された係数のうちの1つのための係数レベルの比較に基づいて、統計値の値を増加させるべきか減少させるべきかまたは維持すべきかを決定することを備え得る。
[0199] 係数レベルの統計値は、前に復号された係数のための係数レベルの絶対値の統計値または係数レベルの残りの絶対値の統計値を含み得る。係数レベルの統計値は、同じ変換ブロック中に全て含まれるCG中の前に復号された係数について収集されるか、または2つ以上の異なる変換ブロック中に含まれるCG中の前に復号された係数について収集され得る。
[0200] いくつかの例では、エントロピー復号ユニット70が、係数グループごとに、前に復号された係数のための係数レベルの統計値を1回決定し得る。統計値収集の頻度については、図9に関して以下でより詳細に説明する。例えば、エントロピー復号ユニット70は、前のCGの各々において係数レベルの第1の絶対値が復号されるときに統計値を決定し得る。代替的に、エントロピー復号ユニット70は、前のCGの各々において係数レベルの第1の残りの絶対値が復号されるときに統計値を決定し得る。他の例では、エントロピー復号ユニット70が、係数の各々を復号するときに、前に復号された係数のための係数レベルの統計値を決定し得る。
[0201] さらに、図9に関して以下でより詳細に説明するように、エントロピー復号ユニット70は、CGの複数の異なるカテゴリーの各々について別々の統計値を決定し得る。カテゴリーは、CGを含む変換ブロックの特性に基づいて定義され得る。例えば、変換ブロックの特性は、変換ブロックがルーマブロックタイプであるかクロマブロックタイプであるか、変換ブロックが変換スキップブロックとして復号されるか変換量子化バイパスブロックとして復号されるか、変換ブロックがイントラ予測スライスタイプを有するかインター予測スライスタイプを有するか、変換ブロックのサイズ、および/または変換ブロック内のCGの位置を含み得る。
[0202] 復号されるべき残差ビデオデータの変換ブロック中の現在のCGについて、エントロピー復号ユニット70は、前に復号された係数のための係数レベルの収集された統計値に基づいてライスパラメータの初期値を決定する(112)。いくつかのプロセスでは、ライスパラメータの値が、各CGの開始において0に初期化され、CG中の係数レベルの残りの絶対値を復号した後に条件付きで更新される。スクリーンコンテンツのための係数レベルをコーディングする場合、あるいはロスレスコーディングまたは変換スキップモードでのロッシーコーディングの場合、各CGについてライスパラメータの値を0に初期化することは最適でないことがある。本開示の技法は、ライスパラメータの値を0に自動的にリセットする代わりに、収集された統計値に基づいて各CGの開始においてライスパラメータの値を設定することについて説明する。
[0203] 図10に関して以下でより詳細に説明する一例では、エントロピー復号ユニット70が、統計値の関数に従って、収集された統計値の値をライスパラメータの初期値にマッピングすることによって現在のCGのためのライスパラメータの初期値を決定する。他の例では、エントロピー復号ユニット70が、記憶されたテーブルに従って、収集された統計値の値をライスパラメータの初期値にマッピングし得る。
[0204] 上記でより詳細に説明したように、エントロピー復号ユニット70は、現在のCG中の係数の係数レベルを復号するために、逆方向走査順序に従って現在のCGについて1つまたは複数の走査を行い得る。例えば、エントロピー復号ユニット70は、フラグまたはシンタックス要素を復号して、係数が、通常コーディングモードでコンテキストモデルを使用して、1よりも大きいまたは2よりも大きい絶対値をもつ係数レベルを有するかどうかを示し得る。エントロピー復号ユニット70は次いで、フラグまたはシンタックス要素を復号して、ライスパラメータによって定義されるコードを使用して現在のCG中の係数のうちの少なくとも1つのための係数レベルの残りの絶対値を示す(114)。例えば、エントロピー復号ユニット70は、バイパスモードで2よりも大きい係数レベルをもつ係数の全てのための係数レベルの残りの絶対値を示すシンタックス要素を復号し得る。いくつかの例では、現在のCG中の係数レベルの第1の残りの絶対値を復号するときに、エントロピー復号ユニット70が、復号された係数の係数レベルに基づいて統計値を更新し得る。
[0205] 場合によっては、エントロピー復号ユニット70は、ライスパラメータの初期値と、現在のCG中で復号されている係数のための係数レベルの絶対値とに基づいて、ライスパラメータの初期値を条件付きで更新し得る。エントロピー復号ユニット70は、現在のCG中の係数のための各残りの絶対レベルを復号した後に、ライスパラメータの値を条件付きで更新し続け得る。現在のCGの終了において、エントロピー復号ユニット70は、現在のCG中に含まれる最近復号された係数を含む、前に復号された係数のための係数レベルの統計値に基づいて、後続のCGのためのライスパラメータの初期値を決定し得る。
[0206] 図9は、本開示で説明する技法に従って係数レベルのエントロピーコーディング中に前にコーディングされた係数のための係数レベルの統計値を決定する例示的な動作を示すフローチャートである。図示された動作は、図7からのステップ100または図8からのステップ110の一例であり得る。例示的な動作について、図6からのエントロピー復号ユニット70を含むビデオデコーダ30に関して説明する。他の例では、この動作が、図5からのビデオエンコーダ20のエントロピー符号化ユニット56によって行われ得る。
[0207] エントロピー復号ユニット70が、変換ブロック中に含まれるCG中の係数のための係数レベルを復号する(120)。係数レベルは、係数レベルの絶対値または係数レベルの残りの絶対値のいずれかを備え得る。復号された係数レベルがCG中の第1の係数レベルでない場合(122のいいえ(NO)分岐)、エントロピー復号ユニット70は、復号された係数レベルに基づいて統計値を更新しない(124)。この例では、統計値は、CGの各々において係数レベルの第1の絶対値または係数レベルの第1の残りのアブソリューション(remaining absolution value)値がコーディングされるとき、CGごとに1回のみ更新される。他の例では、統計値が、より頻繁にまたは異なる係数レベルのコーディングに基づいて更新され得る。
[0208] 復号された係数レベルがCG中の第1の係数レベルである場合(122のはい(YES)分岐)、エントロピー復号ユニット70は、変換ブロックの特性に基づいてCGのカテゴリーを決定する(126)。一例で、CGのカテゴリーを決定するために使用される変換ブロックの特性は、変換ブロックがルーマブロックであるか否かと、変換ブロックが変換スキップブロックであるか否かとを含む。他の例で、CGのカテゴリーを決定するために使用される特性は異なり、例えば、変換ブロックが変換量子化バイパスブロックであるか否か、変換ブロックがイントラ予測スライスタイプを有するかインター予測スライスタイプを有するか、変換ブロックのサイズ、および/または変換ブロック内の現在のCGの位置であり得る。いくつかの例で、ビデオデコーダ30は、CGの異なるカテゴリーを定義するために変換ブロックのどの特性が使用されるかを示すシンタックス要素を受信し得る。
[0209] エントロピー復号ユニット70は、次いで、CG中の第1の係数レベルを、決定されたカテゴリーのための統計値の関数と比較する(128)。一例では、統計値を更新するために使用される統計値の関数が、第2の一定値で除算された統計値の値だけ左シフトされた第1の一定値に基づく。他の例では、統計値が、ビデオデータのスライスまたはコーディングユニット(CU)にわたって係数レベルの平均または移動平均を計算すること、あるいはCG中の係数レベルを統計値の値と直接比較することなど、異なる技法に従って決定され得る。
[0210] CG中の第1の係数レベルが統計値の関数の結果よりも大きいかまたはそれに等しい場合(130のYES分岐)、エントロピー復号ユニット70は、決定されたカテゴリーについて統計値の値を増加させる(132)。CG中の第1の係数レベルが統計値の関数の結果よりも小さい場合(130のNO分岐)、エントロピー復号ユニット70は、決定されたカテゴリーについて統計値の値を減少させる(134)。いずれの場合も、エントロピー復号ユニット70は、図10に関して以下でより詳細に説明するように、決定されたカテゴリーの後続のCGのためのライスパラメータの初期値を決定するために、更新された統計値を使用し得る。
[0211] 図9の例では、統計値を決定するための動作が、CGごとに1回のみ統計値を更新し、CGの複数の異なるカテゴリーについて別々の統計値を収集する。他の例では、統計値を決定するための動作が、CG中の係数レベルのための残りの絶対値をコーディングした後に統計値を更新し得る。追加の例では、統計値を決定するための動作が、統計値の1つのカテゴリーのみを収集し得る。
[0212] 図10は、本開示で説明する技法に従って、決定された統計値に基づいて現在の係数グループのためのライスパラメータの初期値を決定する例示的な動作を示すフローチャートである。図示された動作は、図7からのステップ102または図8からのステップ112の一例であり得る。例示的な動作について、図6からのエントロピー復号ユニット70を含むビデオデコーダ30に関して説明する。他の例では、この動作が、図5からのビデオエンコーダ20のエントロピー符号化ユニット56によって行われ得る。
[0213] 変換ブロック中の現在のCGの開始において(140)、エントロピー復号ユニット70が、現在のCGを含む変換ブロックの特性に基づいて現在のCGのカテゴリーを決定する(142)。一例で、現在のCGのカテゴリーを決定するために使用される変換ブロックの特性は、変換ブロックがルーマブロックであるか否かと、変換ブロックが変換スキップブロックであるか否かとを含む。他の例で、現在のCGのカテゴリーを決定するために使用される特性は異なる場合があり、例えば、変換ブロックが変換量子化バイパスブロックであるか否か、変換ブロックがイントラ予測スライスタイプを有するかインター予測スライスタイプを有するか、変換ブロックのサイズ、および/または変換ブロック内の現在のCGの位置であり得る。いくつかの例で、ビデオデコーダ30は、CGの異なるカテゴリーを定義するために変換ブロックのどの特性が使用されるかを示すシンタックス要素を受信し得る。
[0214] エントロピー復号ユニット70は、次いで、統計値の関数に従って、決定されたカテゴリーのための統計値の値を現在のCGのためのライスパラメータの初期値にマッピングする(144)。一例で、ライスパラメータを初期化するために使用される統計値の関数は、ライスパラメータの最大値、または一定値で除算された統計値の値のいずれかの最小値の選択に基づく。他の例で、ライスパラメータの初期値は、一定値だけ統計値の値を右シフトすること、あるいは統計値の線形関数または区分線形関数を適用することなど、異なる技法に従って統計値から決定され得る。さらに他の例で、エントロピー復号ユニット70は、予め定義されたレンジ内の統計値の各値が、ライスパラメータの最大値までライスパラメータの値にマッピングされた、記憶されたテーブルに従って、統計値の値をライスパラメータの初期値にマッピングし得る。
[0215] 1つまたは複数の例では、説明された機能が、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得るか、または、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技術の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0216] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0217] 命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。従って、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明した機能が、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用ハードウェアおよび/またはソフトウェアモジュール内で提供され得る。また、本技法は、1つまたは複数の回路または論理要素において完全に実装され得る。
[0218] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。様々な構成要素、モジュール、またはユニットについて、開示する技術を行うように構成されたデバイスの機能的態様を強調するために本開示で説明したが、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で説明されたように、様々なユニットは、好適なソフトウェアおよび/またはファームウェアとともに、上で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされるか、または相互動作ハードウェアユニットの集合によって提供され得る。
[0219] 様々な例について説明した。これらおよび他の例は、以下の特許請求の範囲内にある。
以下に、本願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオ復号プロセスにおいて係数を復号する方法であって、
残差ビデオデータの、前に復号された係数のための係数レベルの統計値を決定することと、
前記統計値に基づいて前記残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定することと、
前記ライスパラメータによって定義されるコードを使用して前記現在の係数グループ中の少なくとも1つの係数のための係数レベルの残りの絶対値を復号することとを備える、方法。
[C2]
前記統計値は、前記前に復号された係数のための前記係数レベルの絶対値または前記係数レベルの残りの絶対値のうちの1つの統計値を備える、C1に記載の方法。
[C3]
前記統計値は、前記現在の係数グループと同じ変換ブロックまたは前記現在の係数グループとは異なる変換ブロックのうちの1つまたは複数中に含まれる、前の係数グループ中の前記前に復号された係数のための前記係数レベルの統計値を備える、C1に記載の方法。
[C4]
前記統計値を決定することは、
前記前に復号された係数のうちの少なくとも1つのための係数レベルを前記統計値の関数と比較することと、
前記比較に基づいて前記統計値の前記値を増加させるべきか減少させるべきかを決定することとを備える、C1に記載の方法。
[C5]
前記統計値の前記関数は、第2の一定値で除算された前記統計値の値だけ左シフトされた第1の一定値を備える、C4に記載の方法。
[C6]
前記残差ビデオデータの各スライスの開始において前記統計値の値を0に初期化することをさらに備える、C1に記載の方法。
[C7]
前記統計値を決定することは、係数グループごとに1回前記統計値を決定することを備える、C1に記載の方法。
[C8]
係数グループごとに1回前記統計値を決定することは、複数の前の係数グループの各々において係数レベルの第1の絶対値または係数レベルの第1の残りの絶対値のうちの1つが復号されるときに前記統計値を決定することを備える、C7に記載の方法。
[C9]
前記統計値を決定することは、係数グループの複数の異なるカテゴリーの各々について別々の統計値を決定することを備え、ここにおいて、前記異なるカテゴリーは、前記係数グループを含む変換ブロックの特性に基づいて定義される、C1に記載の方法。
[C10]
前記変換ブロックの前記特性は、前記変換ブロックがルーマブロックであるかどうかと、前記変換ブロックが変換スキップブロックであるかどうかとを少なくとも含む、C9に記載の方法。
[C11]
係数グループの前記異なるカテゴリーを定義するために前記変換ブロックのどの特性が使用されるかを示すシンタックス要素を受信することをさらに備え、ここにおいて、前記シンタックス要素は、前記残差ビデオデータのためのシーケンスパラメータセット(SPS)またはピクチャパラメータセット(PPS)のうちの1つにおいて受信される、C9に記載の方法。
[C12]
前記現在の係数グループを含む前記変換ブロックの特性に基づいて前記現在の係数グループのカテゴリーを決定することをさらに備え、ここにおいて、前記ライスパラメータの前記初期値を決定することは、前記決定されたカテゴリーのための前記統計値に基づいて前記変換ブロック中の前記現在の係数グループのための前記ライスパラメータの前記初期値を決定することを備える、C9に記載の方法。
[C13]
前記現在の係数グループのための前記ライスパラメータの前記初期値を決定することは、前記統計値の関数に従って前記統計値の値を前記ライスパラメータの前記初期値にマッピングすることを備える、C1に記載の方法。
[C14]
前記統計値の前記関数は、前記ライスパラメータの最大値、または一定値で除算された前記統計値の前記値のいずれかの最小値の選択を備える、C13に記載の方法。
[C15]
前記ライスパラメータの前記初期値と、前記現在の係数グループ中で復号されている前記係数のための前記係数レベルの絶対値とに基づいて、前記ライスパラメータの前記初期値を更新することをさらに備える、C1に記載の方法。
[C16]
前記ライスパラメータによって定義される前記コードは、ゴロムライスコードまたは指数ゴロムコードのうちの1つを備える、C1に記載の方法。
[C17]
前記現在の係数グループは、変換係数、または変換がそれに適用されない係数のいずれかを備える、C1に記載の方法。
[C18]
ビデオ符号化プロセスにおいて係数を符号化する方法であって、
残差ビデオデータの、前に符号化された係数のための係数レベルの統計値を決定することと、
前記統計値に基づいて前記残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定することと、
前記ライスパラメータによって定義されるコードを使用して前記現在の係数グループ中の少なくとも1つの係数のための係数レベルの残りの絶対値を符号化することとを備える、方法。
[C19]
前記統計値は、前記前に符号化された係数のための前記係数レベルの絶対値または前記係数レベルの残りの絶対値のうちの1つの統計値を備える、C18に記載の方法。
[C20]
前記統計値は、前記現在の係数グループと同じ変換ブロックまたは前記現在の係数グループとは異なる変換ブロックのうちの1つまたは複数中に含まれる、前の係数グループ中の前記前に符号化された係数のための前記係数レベルの統計値を備える、C18に記載の方法。
[C21]
前記統計値を決定することは、
前記前に符号化された係数のうちの少なくとも1つのための係数レベルを前記統計値の関数と比較することと、
前記比較に基づいて前記統計値の前記値を増加させるべきか減少させるべきかを決定することとを備える、C18に記載の方法。
[C22]
前記統計値の前記関数は、第2の一定値で除算された前記統計値の値だけ左シフトされた第1の一定値を備える、C21に記載の方法。
[C23]
前記残差ビデオデータの各スライスの開始において前記統計値の値を0に初期化することをさらに備える、C18に記載の方法。
[C24]
前記統計値を決定することは、係数グループごとに1回前記統計値を決定することを備える、C18に記載の方法。
[C25]
係数グループごとに1回前記統計値を決定することは、複数の前の係数グループの各々において係数レベルの第1の絶対値または係数レベルの第1の残りの絶対値のうちの1つが符号化されるときに前記統計値を決定することを備える、C24に記載の方法。
[C26]
前記統計値を決定することは、係数グループの複数の異なるカテゴリーの各々について別々の統計値を決定することを備え、ここにおいて、前記異なるカテゴリーは、前記係数グループを含む変換ブロックの特性に基づいて定義される、C18に記載の方法。
[C27]
前記変換ブロックの前記特性は、前記変換ブロックがルーマブロックであるかどうかと、前記変換ブロックが変換スキップブロックであるかどうかとを少なくとも含む、C26に記載の方法。
[C28]
係数グループの前記異なるカテゴリーを定義するために前記変換ブロックのどの特性が使用されるかを示すシンタックス要素を生成することをさらに備え、ここにおいて、前記シンタックス要素は、前記残差ビデオデータのためのシーケンスパラメータセット(SPS)またはピクチャパラメータセット(PPS)のうちの1つにおいて生成される、C26に記載の方法。
[C29]
前記現在の係数グループを含む前記変換ブロックの特性に基づいて前記現在の係数グループのカテゴリーを決定することをさらに備え、ここにおいて、前記ライスパラメータの前記初期値を決定することは、前記決定されたカテゴリーのための前記統計値に基づいて前記変換ブロック中の前記現在の係数グループのための前記ライスパラメータの前記初期値を決定することを備える、C26に記載の方法。
[C30]
前記現在の係数グループのための前記ライスパラメータの前記初期値を決定することは、前記統計値の関数に従って前記統計値の値を前記ライスパラメータの前記初期値にマッピングすることを備える、C18に記載の方法。
[C31]
前記統計値の前記関数は、前記ライスパラメータの最大値、または一定値で除算された前記統計値の前記値のいずれかの最小値の選択を備える、C30に記載の方法。
[C32]
前記ライスパラメータの前記初期値と、前記現在の係数グループ中で符号化されている前記係数のための前記係数レベルの絶対値とに基づいて、前記ライスパラメータの前記初期値を更新することをさらに備える、C18に記載の方法。
[C33]
前記ライスパラメータによって定義される前記コードは、ゴロムライスコードまたは指数ゴロムコードのうちの1つを備える、C18に記載の方法。
[C34]
前記現在の係数グループは、変換係数、または変換がそれに適用されない係数のいずれかを備える、C18に記載の方法。
[C35]
ビデオデータを記憶するように構成されるメモリと、
残差ビデオデータの、前にコーディングされた係数のための係数レベルの統計値を決定することと、
前記統計値に基づいて前記残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定することと、
前記ライスパラメータによって定義されるコードを使用して前記現在の係数グループ中の少なくとも1つの係数のための係数レベルの残りの絶対値をコーディングすることと
を行うように構成される1つまたは複数のプロセッサとを備えるビデオコーディングデバイス。
[C36]
前記統計値は、前記前にコーディングされた係数のための前記係数レベルの絶対値または前記係数レベルの残りの絶対値のうちの1つの統計値を備える、C35に記載のデバイス。
[C37]
前記統計値は、前記現在の係数グループと同じ変換ブロックまたは前記現在の係数グループとは異なる変換ブロックのうちの1つまたは複数中に含まれる、前の係数グループ中の前記前にコーディングされた係数のための前記係数レベルの統計値を備える、C35に記載のデバイス。
[C38]
前記プロセッサは、
前記前にコーディングされた係数のうちの少なくとも1つのための係数レベルを前記統計値の関数と比較することと、
前記比較に基づいて前記統計値の前記値を増加させるべきか減少させるべきかを決定することとを行うように構成される、C35に記載のデバイス。
[C39]
前記統計値の前記関数は、第2の一定値で除算された前記統計値の値だけ左シフトされた第1の一定値を備える、C38に記載のデバイス。
[C40]
前記残差ビデオデータの各スライスの開始において前記統計値の値が0に初期化される、C35に記載のデバイス。
[C41]
前記統計値を決定することは、係数グループごとに1回前記統計値を決定することを備える、C35に記載のデバイス。
[C42]
前記プロセッサは、複数の前の係数グループの各々において係数レベルの第1の絶対値または係数レベルの第1の残りの絶対値のうちの1つがコーディングされるときに前記統計値を決定するように構成される、C41に記載のデバイス。
[C43]
前記プロセッサは、係数グループの複数の異なるカテゴリーの各々について別々の統計値を決定するように構成され、ここにおいて、前記異なるカテゴリーは、前記係数グループを含む変換ブロックの特性に基づいて定義される、C35に記載のデバイス。
[C44]
前記変換ブロックの前記特性は、前記変換ブロックがルーマブロックであるかどうかと、前記変換ブロックが変換スキップブロックであるかどうかとを少なくとも含む、C43に記載のデバイス。
[C45]
前記プロセッサは、係数グループの前記異なるカテゴリーを定義するために前記変換ブロックのどの特性が使用されるかを示すシンタックス要素を決定するように構成され、ここにおいて、前記シンタックス要素は、前記残差ビデオデータのシーケンスパラメータセット(SPS)またはピクチャパラメータセット(PPS)のうちの1つ中に含まれる、C43に記載のデバイス。
[C46]
前記プロセッサは、前記現在の係数グループを含む前記変換ブロックの特性に基づいて前記現在の係数グループのカテゴリーを決定することと、前記決定されたカテゴリーのための前記統計値に基づいて前記変換ブロック中の前記現在の係数グループのための前記ライスパラメータの前記初期値を決定することとを行うように構成される、C43に記載のデバイス。
[C47]
前記プロセッサは、前記統計値の関数に従って前記統計値の値を前記現在の係数グループのための前記ライスパラメータの前記初期値にマッピングするように構成される、C35に記載のデバイス。
[C48]
前記統計値の前記関数は、前記ライスパラメータの最大値、または一定値で除算された前記統計値の前記値のいずれかの最小値の選択を備える、C47に記載のデバイス。
[C49]
前記プロセッサは、前記ライスパラメータの前記初期値と、前記現在の係数グループ中でコーディングされている前記係数のための前記係数レベルの絶対値とに基づいて、前記ライスパラメータの前記初期値を更新するように構成される、C35に記載のデバイス。
[C50]
前記ビデオコーディングデバイスはビデオ復号デバイスを備え、前記ビデオ復号デバイスの前記プロセッサは、前記ライスパラメータによって定義されるコードを使用して前記現在の係数グループ中の前記係数のための前記係数レベルの前記残りの絶対値を復号するように構成される、C35に記載のデバイス。
[C51]
前記ビデオコーディングデバイスはビデオ符号化デバイスを備え、前記ビデオ符号化デバイスの前記プロセッサは、前記ライスパラメータによって定義されるコードを使用して前記現在の係数グループ中の前記係数のための前記係数レベルの前記残りの絶対値を符号化するように構成される、C35に記載のデバイス。
[C52]
前記ライスパラメータによって定義される前記コードは、ゴロムライスコードまたは指数ゴロムコードのうちの1つを備える、C35に記載のデバイス。
[C53]
前記現在の係数グループは、変換係数、または変換がそれに適用されない係数のいずれかを備える、C35に記載のデバイス。
[C54]
残差ビデオデータの、前にコーディングされた係数のための係数レベルの統計値を決定するための手段と、
前記統計値に基づいて前記残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定するための手段と、
前記ライスパラメータの前記初期値によって定義されるコードを使用して前記現在の係数グループ中の少なくとも1つの係数のための係数レベルの残りの絶対値をコーディングするための手段とを備えるビデオコーディングデバイス。
[C55]
前記統計値を決定するための前記手段は、
前記前にコーディングされた係数のうちの少なくとも1つのための係数レベルを前記統計値の関数と比較するための手段と、ここにおいて、前記統計値の前記関数は、第2の一定値で除算された前記統計値の値だけ左シフトされた第1の一定値を備える、
前記比較に基づいて前記統計値の前記値を増加させるべきか減少させるべきかを決定するための手段とを備える、C54に記載のデバイス。
[C56]
前記統計値を決定するための前記手段は、複数の前の係数グループの各々において係数レベルの第1の絶対値または係数レベルの第1の残りの絶対値のうちの1つがコーディングされるとき、係数グループごとに1回前記統計値を決定するための手段を備える、C54に記載のデバイス。
[C57]
前記統計値を決定するための前記手段は、係数グループの複数の異なるカテゴリーの各々について別々の統計値を決定するための手段を備え、ここにおいて、前記異なるカテゴリーは、前記係数グループを含む変換ブロックの特性に基づいて定義され、およびここにおいて、前記変換ブロックの前記特性は、前記変換ブロックがルーマブロックであるかどうかと、前記変換ブロックが変換スキップブロックであるかどうかとを少なくとも含む、C54に記載のデバイス。
[C58]
前記現在の係数グループのための前記ライスパラメータの前記初期値を決定するための前記手段は、前記統計値の関数に従って前記統計値の値を前記ライスパラメータの前記初期値にマッピングするための手段を備え、ここにおいて、前記統計値の前記関数は、前記ライスパラメータの最大値、または一定値で除算された前記統計値の前記値のいずれかの最小値の選択を備える、C54に記載のデバイス。
[C59]
ビデオコーディングデバイスの1つまたは複数のプロセッサによって実行されたとき、
残差ビデオデータの、前にコーディングされた係数のための係数レベルの統計値を決定することと、
前記統計値に基づいて前記残差ビデオデータの変換ブロック中の現在の係数グループのためのライスパラメータの初期値を決定することと、
前記ライスパラメータによって定義されるコードを使用して前記現在の係数グループ中の少なくとも1つの係数のための係数レベルの残りの絶対値をコーディングすることとを前記プロセッサに行わせる命令を備えるコンピュータ可読記憶媒体。