JP2019511865A - ディスプレイストリーム圧縮のためのベクトルベースエントロピーコード化のための装置および方法 - Google Patents

ディスプレイストリーム圧縮のためのベクトルベースエントロピーコード化のための装置および方法 Download PDF

Info

Publication number
JP2019511865A
JP2019511865A JP2018546866A JP2018546866A JP2019511865A JP 2019511865 A JP2019511865 A JP 2019511865A JP 2018546866 A JP2018546866 A JP 2018546866A JP 2018546866 A JP2018546866 A JP 2018546866A JP 2019511865 A JP2019511865 A JP 2019511865A
Authority
JP
Japan
Prior art keywords
video
sample
code
samples
vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018546866A
Other languages
English (en)
Other versions
JP6800991B2 (ja
JP2019511865A5 (ja
Inventor
ティルマライ、ビジャヤラガバン
ヤコブソン、ナタン・ハイム
ジョーシー、ラジャン・ラクスマン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2019511865A publication Critical patent/JP2019511865A/ja
Publication of JP2019511865A5 publication Critical patent/JP2019511865A5/ja
Application granted granted Critical
Publication of JP6800991B2 publication Critical patent/JP6800991B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

複数のビデオサンプルを有するビデオ情報をコード化するための方法および装置が開示される。ビデオサンプルは、単一のクロックサイクル内での送信のためのグループへと区分化され、ここにおいて、これらのサンプルは、ビット長Bと関連付けられており、グループは、グループサイズKを有する。サンプルグループは、コード番号にマッピングされ、このマッピングを実行するために使用されるルックアップテーブルのタイプを識別する第1の部分と、このグループのサンプルを表す第2の部分とを備えるベクトルベースコードを形成するためにコード化される。ルックアップテーブルは、異なるサンプルグループの生起確率に基づいて構築され得る。加えて、異なるタイプのルックアップテーブルが、異なるB値およびK値に対して使用され得る。【選択図】図7

Description

[0001]本開示は、ビデオコード化および圧縮の分野に関し、特に、ディスプレイストリーム圧縮(DSC)のような、ディスプレイリンクを介した送信のためのビデオ圧縮に関する。
[0002]デジタルビデオ能力は、デジタルテレビ、携帯情報端末(PDA)、ラップトップコンピュータ、デスクトップモニタ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラまたは衛星無線電話、ビデオ電話会議デバイス、等を含む、広範囲のディスプレイに組み込まれることができる。ディスプレイリンクは、ディスプレイを好適なソースデバイスに接続するために使用される。ディスプレイリンクの帯域幅要件は、ディスプレイの解像度に比例し、ゆえに、高解像度ディスプレイは、広帯域幅のディスプレイリンクを必要とする。いくつかのディスプレイリンクは、高解像度ディスプレイをサポートする帯域幅を有さない。ビデオ圧縮を使用してこの帯域幅要件を低減することで、より低い帯域幅のディスプレイリンクが、高解像度ディスプレイにデジタルビデオを提供するのに使用されることができる。
[0003]画素データに対して画像圧縮を利用しようともした。しかしながら、そのようなスキームは、時に、視覚的にロスレスでないかまたは従来のディスプレイデバイスでインプリメントするのが困難かつ高価であり得る。
[0004]VESA(Video Electronics Standards Association)は、ディスプレイリンクビデオ圧縮のための規格として、ディスプレイストリーム圧縮(DSC)を開発してきた。DSCのようなディスプレイリンクビデオ圧縮技法は、とりわけ、視覚的にロスレスなピクチャ品質(例えば、圧縮がアクティブであることをユーザに悟られないような品質レベルを有するピクチャ)を提供するべきである。ディスプレイリンクビデオ圧縮技法はまた、従来のハードウェアでリアルタイムにインプリメントするのが容易かつ高価でないスキームを提供するべきである。
[0005]本開示のシステム、方法、およびデバイスは各々、いくつかの革新的な態様を有し、それらはいずれも、本明細書で開示される望ましい属性を単独で担うものではない。
[0006]一態様では、複数のビデオサンプルを有するビデオ情報をコード化するための方法および装置が開示される。ビデオサンプルは、単一のクロックサイクル内での送信のためにグループへと区分化され、ここにおいて、サンプルは、ビット長Bに関連付けられており、グループは、グループサイズKを有する。サンプルグループは、コード番号にマッピングされ、このマッピングを実行するために使用されるルックアップテーブルのタイプを識別する第1の部分と、このグループのサンプルを表す第2の部分とを備えるベクトルベースコードを形成するためにコード化される。ルックアップテーブルは、異なるサンプルグループの生起確率に基づいて構築され得る。加えて、異なるタイプのルックアップテーブルが、異なるB値およびK値に対して使用され得る。
[0007]図1Aは、本開示で説明される態様に係る技法を利用し得る例示的なビデオ符号化および復号システムを例示するブロック図である。 [0008]図1Bは、本開示で説明される態様に係る技法を実行し得る別の例となるビデオ符号化および復号システムを例示するブロック図である。 [0009]図2Aは、本開示で説明される態様に係る技法をインプリメントし得るビデオエンコーダの例を例示するブロック図である。 [0010]図2Bは、本開示で説明される態様に係る技法をインプリメントし得るビデオデコーダの例を例示するブロック図である。 [0011]図3は、量子化パラメータ(QP)調整値を決定することへの例示的なアプローチを示す。 [0012]図4は、K=4個のサンプルを有するベクトルのためのDSU−VLC構造を示す。 [0013]図5は、4個のサンプルの例示的なグループのためのDSU−VLCコードを例示する。 [0014]図6は、均一グループ化の例を例示し、ここで、2×8ブロックは、4つのグループへと区分化される。 [0015]図7は、ベクトルベースECプロセスの例示的なブロック図を例示する。 [0016]図8は、K=4のサンプルを含むグループをコード化するために使用され得るベクトルベースECの構造を示し、ここで、使用されるLUTのタイプは、明示的にシグナリングされる。 [0017]図9は、組み合わせられたLUTタイプ信号およびVLCコードプレフィックスを備えるコードを例示する。 [0018]図10Aは、符号絶対値表現(sign-magnitude representation)を使用して複数のサンプルベクトルをエントロピーコード化する例を例示する。 図10Bは、符号絶対値表現を使用して複数のサンプルベクトルをエントロピーコード化する例を例示する。 [0019]図11は、符号絶対値を使用してコード化されたサンプルベクトルをパースおよび復号するために必要とされ得る多数の(a number of)クロックサイクルを例示する例示的なグラフを例示する。 [0020]図12は、複数のサンプルベクトルのハイブリッドエントロピーコード化の例を例示する。 [0021]図13は、ハイブリッドコード化スキームを使用してコード化されたサンプルベクトルをパースおよび復号するために必要とされ得る多数のクロックサイクルを例示する例示的なグラフを例示する。 [0022]図14Aは、サンプルベクトルデータを符号化/復号するためのプロセスのフローチャートを例示する。 図14Bは、サンプルベクトルデータを符号化/復号するためのプロセスのフローチャートを例示する。 [0023]図15は、ハイブリッドコード化を使用してサンプルベクトルデータを符号化するための例示的なプロセスのフローチャートを例示する。
発明の詳細な説明
[0024]一般に、本開示は、ディスプレイストリーム圧縮(DSC)のようなビデオ圧縮技法を改善する技法に関する。より具体的には、本開示は、ブロック値をサンプルベクトルへと区分化することで、1クロックサイクルあたりに複数のサンプル値を送信することと、サンプルベクトルの生起確率に少なくとも部分的に基づいてサンプルベクトルをコード化することとを行うためのシステムおよび方法に関する。
[0025]本明細書では特定の実施形態は、DSC規格のコンテキストで説明されているが、当業者であれば、本明細書で開示されるシステムおよび方法が、任意の適切なビデオコード化規格に適用可能であり得ることは認識するであろう。例えば、本明細書で開示される実施形態は、国際電気通信連合(ITU)電気通信標準化部門(ITU−T)H.261、国際標準化機構/国際電気標準会議(ISO/IEC)MPEG−1(Moving Picture Experts Group-1)ビジュアル、ITU−T H.262すなわちISO/IEC MPEG−2ビジュアル、ITU−T H.263、ISO/IEC MPEG−4ビジュアル、(ISO/IEC MPEG−4 AVCとしても知られている)ITU−T H.264、高効率ビデオコーディング(HEVC)といった規格およびそのような規格に対する任意の拡張のうちの1つまたは複数に適用可能であり得る。本明細書で説明される技法は、固定ビットレート(CBR)バッファモデルを組み込む規格に特に適用可能であり得る。また、本開示で説明される技法は、将来開発される規格の一部になり得る。換言すると、本開示で説明される技法は、前に開発されたビデオコード化規格、現在開発中のビデオコード化規格、および今度のビデオコード化規格に適用可能であり得る。
[0026]本開示の概念は、実質上視覚的にロスレスなパフォーマンスで様々なタイプのコンテンツを符号化/復号することを目的としているいくつかの要素および/またはモードを含むコーデック(例えば、DSC)に統合され得るかそれの一部であり得る。本開示は、単一のクロックサイクル内での送信のためにグループへとビデオサンプルを区分化するためのシステムおよび方法を提供し、ここにおいて、サンプルは、ビット長Bに関連付けられており、グループは、グループサイズKを有する。サンプルグループは、コード番号にマッピングされ得、このマッピングを実行するために使用されるルックアップテーブルのタイプを識別する第1の部分と、このグループのサンプルを表す第2の部分とを備えるベクトルベースコードを形成するためにコード化される。ルックアップテーブルは、異なるサンプルグループの生起確率に基づいて構築され得る。加えて、異なるタイプのルックアップテーブルが、異なるB値およびK値に対して使用され得、これにより、より効率的なコード化が可能になる。
ビデオコード化規格
[0027]ビデオ画像、TV画像、静止画像、またはビデオレコーダもしくはコンピュータによって生成された画像のようなデジタル画像は、水平線および垂直線に配列された画素またはサンプルを含み得る。単一の画像中の画素数は典型的に数万である。各画素は典型的に、輝度およびクロミナンス情報を含む。圧縮なしの場合、画像エンコーダから画像デコーダに伝達されるべき膨大な量の情報は、リアルタイムの画像送信を実現困難なものするであろう。送信されることとなる情報の総量(the amount)を低減するために、JPEG、MPEG、およびH.263規格のような多数の異なる圧縮方法が開発されてきた。
[0028]ビデオコード化規格には、ITU−T H.261、ISO/IEC MPEG−1ビジュアル、ITU−T H.262すなわちISO/IEC MPEG−2ビジュアル、ITU−T H.263、ISO/IEC MPEG−4ビジュアル、(ISO/IEC MPEG−4 AVCとしても知られている)ITU−T H.264、およびHEVCと、それらの規格の拡張とが含まれる。
[0029]加えて、ビデオコード化規格、すなわちDSC、は、VESAによって開発されてきた。DSC規格は、ディスプレイリンクを介した送信のためにビデオを圧縮することができるビデオ圧縮規格である。ディスプレイの解像度が増加するにつれ、このディスプレイを駆動するのに必要とされるビデオデータの帯域幅が相応して増加する。いくつかのディスプレイリンクは、そのような解像度について、ビデオデータのすべてをディスプレイに送信するための帯域幅を有さない可能性がある。したがって、DSC規格は、ディスプレイリンクを介した相互利用可能で視覚的にロスレスな圧縮のための圧縮規格を規定する。
[0030]DSC規格は、H.264およびHEVCのような他のビデオコード化規格とは異なる。DSCは、イントラフレーム圧縮を含むがインターフレーム圧縮は含まず、つまり、ビデオデータをコード化する際に時間的情報がDSC規格によって使用されないであろうことを意味する。対照的に、他のビデオコード化規格は、それらのビデオコード化技法においてインターフレーム圧縮を用い得る。
ビデオコード化システム
[0031]新規なシステム、装置、および方法の様々な態様が、添付の図面を参照して以下でより十分に説明される。しかしながら、本開示は、多くの異なる形式で具現化され得、本開示全体にわたって提示される任意の特定の構造または機能に限定されるものとして解釈されるべきではない。むしろ、これらの態様は、本開示が徹底的かつ完全となり得、本開示の範囲を当業者に十分に伝達し得るように提供される。本明細書における教示に基づき、当業者は、本開示の範囲が、本明細書で開示される新規なシステム、装置、および方法の任意の態様を、本発明の任意の他の態様から独立してインプリメントされようとそれと組み合わせられようと、カバーするように意図されることは認識するはずである。例えば、本明細書で示される任意の数の態様を使用して、装置がインプリメントされ得るか、方法が実施され得る。加えて、本開示の範囲は、本明細書で示される開示の様々な態様に加えて、または、それ以外に、他の構造、機能性、または構造と機能性を使用して実施されるこのような装置または方法をカバーするように意図されている。本明細書で開示される任意の態様が、請求項の1つまたは複数の要素によって具現化され得ることは理解されるべきである。
[0032]特定の態様が本明細書で説明されるが、これらの態様の多くの変形および並替えは、本開示の範囲内である。好ましい態様のいくつかの利益および利点が述べられるが、本開示の範囲は、特定の利益、用途、または目的に限定されるように意図されるものではない。むしろ、本開示の態様は、いくつかが、図においておよび好ましい態様の以下の説明において例として例示される異なるワイヤレス技術、システム構成、ネットワーク、および送信プロトコルに広く適用可能であるように意図される。詳細な説明および図面は、限定するものというよりはむしろ、本開示の単なる例にすぎず、本開示の範囲は、添付の特許請求の範囲およびそれらの同等物によって定義されている。
[0033]添付の図面は例を例示する。添付の図面において参照番号で示される要素は、以下の説明において同様の参照番号で示される要素に対応する。本開示では、順序を示す言葉(例えば、「第1の」、「第2の」、「第3の」、等)で始まる名前を有する要素は、必ずしも、それら要素が特定の順序を持つことを意味するものではない。むしろ、そのような順序を示す言葉は、単に、同じまたは同様のタイプの異なる要素を指すために使用される。
[0034]図1Aは、本開示で説明される態様に係る技法を利用し得る例示的なビデオコード化システム10を例示するブロック図である。本明細書で説明される使用される場合、「ビデオコーダ」または「コーダ」という用語は、概して、ビデオエンコーダおよびビデオデコーダの両方を指す。本開示では、「ビデオコード化」または「コード化」という用語は、概して、ビデオ符号化およびビデオ復号を指し得る。ビデオエンコーダおよびビデオデコーダに加えて、本願で説明される態様は、トランスコーダ(例えば、ビットストリームを復号し、別のビットストリームを再符号化することができるデバイス)およびミドルボックス(例えば、ビットストリームを修正、変換、および/または他の方法で操作することができるデバイス)のような他の関連デバイスに拡張され得る。
[0035]図1Aに示されるように、ビデオコード化システム10は、宛先デバイス14によって後に復号されることとなる符号化済みビデオデータを生成するソースデバイス12を含む。図1Aの例では、ソースデバイス12および宛先デバイス14は、別個のデバイスを構成する。しかしながら、図1Bの例で示されるように、ソースデバイス12および宛先デバイス14が同じデバイス上にあり得ることまたは同じデバイスの一部であり得ることに留意されたい。
[0036]図1Aを再度参照すると、ソースデバイス12および宛先デバイス14は、それぞれ、デスクトップコンピュータ、ノートブック(例えば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、車載コンピュータ、ビデオストリーミングデバイス、エンティティ内に配置されている、取り込まれている、または消費されること(consumed)ができるアイウェアおよび/またはウェアラブルなコンピュータ、デバイス、または装置のようなエンティティ(例えば、人間、動物、および/または別の被制御デバイス)によってウェアラブルな(または、それに取り外し可能に取り付けられている)デバイス、および/または同様のものを含む広範囲のデバイスのうちの任意のものを備え得る。様々な実施形態では、ソースデバイス12および宛先デバイス14は、ワイヤレス通信に対応し得る。
[0037]宛先デバイス14は、復号されることとなる符号化済みビデオデータを、リンク16を介して受け取り得る。リンク16は、符号化済みビデオデータをソースデバイス12から宛先デバイス14に移動することができる任意のタイプの媒体またはデバイスを備え得る。図1Aの例では、リンク16は、ソースデバイス12が符号化済みビデオデータを宛先デバイス14に、リアルタイムに送信することを可能にする通信媒体を備え得る。符号化済みビデオデータは、ワイヤレス通信プロトコルのような通信規格にしたがって変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線のような任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、広域ネットワーク、またはインターネットのようなグローバルネットワークといった、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするのに有益であり得る任意の他の機器を含み得る。
[0038]図1Aの例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかのケースでは、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12では、ビデオソース18は、例えば、ビデオカメラのようなビデオキャプチャデバイス、前に撮られたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受け取るためのビデオフィードインターフェース、および/または、ソースビデオとしてコンピュータグラフィックデータを生成するためのコンピュータグラフィックシステムのようなソースまたはそのようなソースの組み合わせを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、図1Bの例で例示されるような、いわゆる「カメラ付電話」または「ビデオ電話」を形成し得る。しかしながら、本開示で説明される技法は、概して、ビデオコード化に適用可能であり得、ワイヤレスおよび/またはワイヤードアプリケーションに適用され得る。
[0039]撮られた、事前に撮られた(pre-captured)、またはコンピュータにより生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化済みビデオデータは、ソースデバイス12の出力インターフェース22を介して、宛先デバイス14に直接送信され得る。符号化済みビデオデータはまた(または、代替的に)、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのために記憶デバイス31上に記憶され得る。図1Aおよび1Bに例示されるビデオエンコーダ20は、図2Aに例示されるビデオエンコーダ20または本明細書で説明される任意の他のビデオエンコーダを備え得る。
[0040]図1Aの例では、宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。いくつかのケースでは、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を介しておよび/または記憶デバイス31から、符号化済みビデオデータを受け取り得る。リンク16を介して通信される、または記憶デバイス31上で提供される、符号化済みビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30のようなビデオデコーダによる使用のためにビデオエンコーダ20によって生成される様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体に記憶されるか、ファイルサーバに記憶される符号化済みビデオデータに含まれ得る。図1Aおよび1Bに例示されるビデオデコーダ30は、図2Bに例示されるビデオデコーダ30または本明細書で説明される任意の他のビデオデコーダを備え得る。
[0041]ディスプレイデバイス32は、宛先デバイス14と統合され得るか、それに外付けであり得る。いくつかの例では、宛先デバイス14は、統合されたディスプレイデバイスを含み得、同じく、外部のディスプレイデバイスとインターフェース接続するように構成され得る。他の例では、宛先デバイス14は、ディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような、様々なディスプレイデバイスのうちの任意のものを備え得る。
[0042]関連する態様では、図1Bは、例示的なビデオコード化システム10’を示し、ここにおいて、ソースデバイス12および宛先デバイス14は、デバイス11上にあるか、その一部である。デバイス11は、「スマート」フォンのような電話ハンドセットまたは同様のものであり得る。デバイス11は、ソースデバイス12および宛先デバイス14と動作可能に通信状態にある(オプションで存在する)プロセッサ/コントローラデバイス13を含み得る。図1Bのビデオコード化システム10’およびその構成要素は、他の点では(otherwise)、図1Aのビデオコード化システム10およびその構成要素に類似し得る。
[0043]ビデオエンコーダ20およびビデオデコーダ30は、DSCのような、ビデオ圧縮規格にしたがって動作し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、別名、MPEG−4,Part10,AVCと呼ばれるITU−T H.264規格、HEVC、またはそのような規格の拡張のような、他の専有または工業規格にしたがって動作し得る。しかしながら、本開示の技法は、いずれの特定のコード化規格にも限定されない。ビデオ圧縮規格の他の例には、MPEG−2およびITU−T H.263が含まれる。
[0044]図1Aおよび1Bの例では示されていないが、ビデオエンコーダ20およびビデオデコーダ30は、各々、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリームにおけるオーディオおよびビデオの両方の符号化に対処するために、好適なMUX−DEMUXユニットまたは他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)のような他のプロトコルに準拠し得る。
[0045]ビデオエンコーダ20およびビデオデコーダ30は、各々、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組み合わせのような、様々な適切なエンコーダ回路の任意のものとしてインプリメントされ得る。本技法が部分的にソフトウェアでインプリメントされる場合、デバイスは、このソフトウェアのための命令を、適切で非一時的なコンピュータ読取可能な媒体に記憶し、1つまたは複数のプロセッサを使用してハードウェアで命令を実行して、本開示の技法を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、それらのどちらも、それぞれのデバイスにおける複合エンコーダ/デコーダの一部として統合され得る。
ビデオコード化プロセス
[0046]簡単に上述したように、ビデオエンコーダ20は、ビデオデータを符号化する。ビデオデータは、1つまたは複数のピクチャを備え得る。ピクチャの各々は、ビデオの一部を形成する静止画像である。いくつかの事例では、ピクチャは、ビデオ「フレーム」と呼ばれ得る。ビデオエンコーダ20がビデオデータを符号化するとき、ビデオエンコーダ20は、ビットストリームを生成し得る。ビットストリームは、ビデオデータのコード化表現を形成するビットのシーケンスを含み得る。ビットストリームは、コード化されたピクチャと関連データとを含み得る。コード化されたピクチャは、ピクチャのコード化表現である。
[0047]ビットストリームを生成するために、ビデオエンコーダ20は、ビデオデータ中の各ピクチャに対して符号化動作を実行し得る。ビデオエンコーダ20がピクチャに対して符号化動作を実行するとき、ビデオエンコーダ20は、一連のコード化されたピクチャと関連データとを生成し得る。関連データは、QPのようなコード化パラメータのセットを含み得る。コード化されたピクチャを生成するために、ビデオエンコーダ20は、ピクチャを、サイズが等しいビデオブロックへと区分化し得る。ビデオブロックは、2次元アレイのサンプルであり得る。コード化パラメータは、ビデオデータのすべてのブロックについてコード化オプション(例えば、コード化モード)を定義し得る。所望のレート−歪みパフォーマンス(desired rate-distortion performance)を達成するために、コード化オプションが選択され得る。
[0048]いくつかの例では、ビデオエンコーダ20は、ピクチャを、複数のスライスへと区分化し得る。スライスの各々は、画像(例えば、フレーム)中に空間的に異なる領域を含み得、それは、この画像またはフレーム中の残りの領域からの情報なしに独立して復号されることができる。各画像またはビデオフレームが単一のスライスにおいて符号化され得るか、各画像またはビデオフレームがいくつかのスライスにおいて符号化され得る。DSCでは、各スライスを符号化するために割り振られるターゲットビットは、略一定であり得る。ピクチャに対して符号化動作を実行することの一部として、ビデオエンコーダ20は、ピクチャの各スライスに対して符号化動作を実行し得る。ビデオエンコーダ20がスライスに対して符号化動作を実行するとき、ビデオエンコーダ20は、このスライスに関連付けられた符号化済みデータを生成し得る。スライスに関連付けられた符号化済みデータは、「コード化済みスライス」と呼ばれ得る。
DSCビデオエンコーダ
[0049]図2Aは、本開示で説明される態様に係る技法をインプリメントし得るビデオエンコーダ20の例を例示するブロック図である。ビデオエンコーダ20は、本開示の技法のうちのいくつかまたはすべてを実行するように構成され得る。いくつかの例では、本開示で説明される技法は、ビデオエンコーダ20の様々な構成要素の間で共有され得る。いくつかの例では、追加的または代替的に、プロセッサ(図示されない)は、本開示で説明される技法のうちのいくつかまたはすべてを実行するように構成され得る。
[0050]説明の目的のために、本開示は、DSCコード化のコンテキストにおいてビデオエンコーダ20を説明する。しかしながら、本開示の技法は、他のコード化規格または方法に適用可能であり得る。
[0051]図2Aの例では、ビデオエンコーダ20は、複数の機能的な構成要素を含む。ビデオエンコーダ20の機能的な構成要素は、色空間コンバータ105と、バッファ110と、平坦度検出器115と、レートコントローラ120と、予測器、量子化器、および再構築器構成要素125と、ラインバッファ130と、インデックス付き色履歴135と、エントロピーエンコーダ140と、サブストリームマルチプレクサ145と、レートバッファ150とを含む。他の例では、ビデオエンコーダ20は、より多い、より少ない、または異なる機能的な構成要素を含み得る。
[0052]色空間105コンバータは、入力された色空間を、コード化インプリメンテーションで使用される色空間に変換し得る。例えば、1つの例示的な実施形態では、入力ビデオデータの色空間は、赤、緑、青(RGB)色空間であり、コード化は、輝度Y、クロミナンス緑Cg、およびクロミナンスオレンジCo(YCgCo)色空間においてインプリメントされる。色空間変換は、ビデオデータへの追加およびシフトを含む方法によって実行され得る。他の色空間にある入力ビデオデータが処理され得、他の色空間への変換が同じく実行され得ることに留意されたい。
[0053]関連する態様では、ビデオエンコーダ20は、バッファ110、ラインバッファ130、および/またはレートバッファ150を含み得る。例えば、バッファ110は、ビデオエンコーダ20の他の部分による使用より前、色空間変換されたビデオデータを保持し得る。別の例では、ビデオデータは、RGB色空間で記憶され得、色空間変換は、色空間変換されたデータがより多くのビットを必要とされ得るため、必要に応じて実行され得る。
[0054]レートバッファ150は、ビデオエンコーダ20においてレート制御メカニズムの一部として機能し得、これは、レートコントローラ120に関連して以下でより詳細に説明されるであろう。各ブロックを符号化するのに費やされるビットは、極めて実質的にこのブロックの性質に基づいて変動することができる。レートバッファ150は、圧縮ビデオにおけるレート変動を滑らかにすることができる。いくつかの実施形態では、固定ビットレートでバッファからビットが取り出されるCBRバッファモデルが用いられる。CBRバッファモデルでは、ビデオエンコーダ20が過度に多くのビットをビットストリームに追加する場合、レートバッファ150がオーバーフローし得る。他方で、ビデオエンコーダ20は、レートバッファ150のアンダーフローを防ぐために、十分なビットを追加しなければならない。
[0055]ビデオデコーダ側では、ビットが、固定ビットレートでビデオデコーダ30のレートバッファ155(以下でさらに詳細に説明される図2Bを参照)に追加され得、ビデオデコーダ30は、ブロックごとにビットの変数(variable numbers)を取り除き得る。適切な復号を確実にするために、ビデオデコーダ30のレートバッファ155は、圧縮ビットストリームの復号中、「アンダーフロー」も「オーバーフロー」もするべきではない。
[0056]いくつかの実施形態では、バッファフルネス(BF)は、バッファ中に現在あるビット数を表す値BufferCurrentSizeと、レートバッファ150のサイズを表すBufferMaxSize、例えば、任意の時点でレートバッファ150に記憶されることができる最大ビット数、とに基づいて定義され得る。BFは、次のように算出され得る:
BF=((BufferCurrentSize×100)/BufferMaxSize)
[0057]BFを算出することへの上記アプローチが単なる例示であること、および、BFが、特定のインプリメンテーションまたはコンテキストに依存して、任意の数の異なる方法で算出され得ることが留意されたい。
[0058]平坦度検出器115は、ビデオデータ中の複雑な(例えば、平坦でない)エリアからビデオデータ中の平坦な(例えば、単純なまたは均一の)エリアへの、および/または、その逆への変化を検出することができる。「複雑(な)」および「平坦(な)」という用語は、一般に、ビデオエンコーダ20がビデオデータのそれぞれの領域を符号化することの難しさを示すために本明細書で使用されるであろう。ゆえに、複雑(な)という用語は、本明細書で使用される場合、一般に、ビデオデータの領域を、ビデオエンコーダ20が符号化し辛いものとして説明し、例えば、テキスチャ化されたビデオデータ、高空間周波数、および/または符号化し辛い他の特徴を含み得る。平坦(な)という用語は、本明細書で使用される場合、一般に、ビデオデータの領域を、ビデオエンコーダ20が符号化し易いものとして説明し、例えば、ビデオデータ中の滑らかな勾配、低空間周波数、および/または符号化し易い他の特徴を含み得る。符号化済みビデオデータ中の量子化アーティファクトを低減するために、複雑領域から平坦領域への遷移がビデオエンコーダ20によって使用され得る。具体的には、レートコントローラ120および予測器、量子化器、および再構築器構成要素125は、複雑領域から平坦領域への遷移が識別されるときに、そのような量子化アーティファクトを低減することができる。同様に、現在ブロックをコード化するのに必要とされる予想レートを低減するためにQPを増加するため、平坦領域から複雑領域への遷移がビデオエンコーダ20によって使用され得る。
[0059]レートコントローラ120は、コード化パラメータ、例えばQP、のセットを決定する。QPは、レートバッファ150がオーバーフローまたはアンダーフローしないことを確実にするターゲットビットレートのピクチャ品質を最大化するために、レートバッファ150のバッファフルネスとビデオデータの画像アクティビティ(例えば、複雑領域から平坦領域への遷移またはその逆)とに基づいて、レートコントローラ120によって調整され得る。レートコントローラ120はまた、最適なレート歪みパフォーマンスを達成するために、ビデオデータの各ブロックについて特定のコード化オプション(例えば、特定のモード)を選択する。レートコントローラ120は、ビットレート制約を満たすように、例えば、実際のコード化レート全体がターゲットビットレート内に収まるように、再構築画像の歪みを最小化する。ゆえに、レートコントローラ120の1つの目的は、レート歪みパフォーマンスを最大化しつつレートに対する瞬間的および平均的な制約を満たすために、QP、コード化モード、等のコード化パラメータのセットを決定することである。
[0060]予測器、量子化器、および再構築器構成要素125は、少なくとも、ビデオエンコーダ20の3つの符号化動作を実行し得る。予測器、量子化器、および再構築器構成要素125は、多数の異なるモードで予測を実行し得る。1つの例となる断定モードは、中央値適応予測の修正バージョンである。中央値適応予測は、ロスレスなJPEG規格(JPEG−LS)によってインプリメントされ得る。予測器、量子化器、および再構築器構成要素125によって実行され得る中央値適応予測の修正バージョンは、3つの連続したサンプル値の並行予測を可能にし得る。別の例となる予測モードは、ブロック予測である。ブロック予測では、上の線または同じ線の左にある、前に再構築された画素からサンプルが予測される。いくつかの実施形態では、ビデオエンコーダ20およびビデオデコーダ30は両方とも、再構築された画素に対して同一探索を実行して、ブロック予測用法を決定し得るため、ブロック予測モードではいずれのビットも送られる必要はない。他の実施形態では、ビデオエンコーダ20は、探索を実行し、ビデオデコーダ30が別個の探索を実行する必要がないように、ビットストリームにおいてブロック予測ベクトルをシグナリングし得る。構成要素範囲(component range)の中間点を使用してサンプルが予測される中間点予測モードもまたインプリメントされ得る。中間点予測モードは、ワーストケースのサンプルであっても、圧縮ビデオに必要とされるビット数の制限(bounding)を可能にし得る。
[0061]予測器、量子化器、および再構築器構成要素125もまた、量子化を実行する。例えば、量子化は、シフタを使用してインプリメントされ得る2のべき乗量子化器(power-of-2 quantizer)を介して実行され得る。2のべき乗量子化器の代わりに他の量子化技法がインプリメントされ得ることに留意されたい。予測器、量子化器、および再構築器構成要素125によって実行される量子化は、レートコントローラ120によって決定されるQPに基づき得る。最後に、予測器、量子化器、および再構築器構成要素125はまた、逆量子化残差を予測値に加えることと、その結果がサンプル値の有効範囲外にならないことを確実にすることとを含む再構築を実行する。
[0062]予測器、量子化器、および再構築器構成要素125によって実行される予測、量子化、および再構築への上述した例となるアプローチは単なる例示であること、および、他のアプローチがインプリメントされ得ることに留意されたい。予測器、量子化器、および再構築器構成要素125が、予測、量子化、および/または再構築を実行するための従属構成要素を含み得ることも留意されたい。予測、量子化、および/または再構築が、予測器、量子化器、および再構築器構成要素125の代わりに、いくつかの別個のエンコーダ構成要素によって実行され得ることにさらに留意されたい。
[0063]ラインバッファ130は、予測器、量子化器、および再構築器構成要素125とインデックス付き色履歴135とが、バッファされたビデオデータを使用することできるように、予測器、量子化器、および再構築器構成要素125からの出力を保持する。インデックス付き色履歴135は、最近使用された画素値を記憶する。これらの最近使用された画素値は、専用シンタックスを介して、ビデオエンコーダ20によって直接参照されることができる。
[0064]エントロピーエンコーダ140は、インデックス付き色履歴135と、平坦度検出器115によって識別される平坦度遷移とに基づいて、予測器、量子化器、および再構築器構成要素125から受け取った予測残差および任意の他のデータ(例えば、予測器、量子化器、および再構築器構成要素125によって識別されるインデックス)を符号化する。いくつかの例では、エントロピーエンコーダ140は、サブストリームエンコーダにつき1クロックあたり3つのサンプルを符号化し得る。サブストリームマルチプレクサ145は、ヘッダーレスパケット多重化スキームに基づいて、ビットストリームを多重化し得る。これは、ビデオデコーダ30が、並行して3つのエントロピーデコーダを稼働させることを可能にし、これは、1クロックあたり3つの画素の復号を容易にする。サブストリームマルチプレクサ145は、パケットがビデオデコーダ30によって効率的に復号されることができるようにパケット順序を最適化し得る。エントロピーコード化への異なるアプローチがインプリメントされ得、これは、1クロックあたり2のべき乗個の画素(例えば、2画素/クロックまたは4画素/クロック)の復号を容易にし得ることに留意されたい。
DSCビデオデコーダ
[0065]図2Bは、本開示で説明される態様に係る技法をインプリメントし得るビデオデコーダ30の例を例示するブロック図である。ビデオデコーダ30は、本開示の技法のうちのいくつかまたはすべてを実行するように構成され得る。いくつかの例では、本開示で説明される技法は、ビデオデコーダ30の様々な構成要素の間で共有され得る。いくつかの例では、追加的または代替的に、プロセッサ(図示されない)は、本開示で説明される技法のうちのいくつかまたはすべてを実行するように構成され得る。
[0066]説明の目的のために、本開示は、DSCコード化のコンテキストにおいてビデオデコーダ30を説明する。しかしながら、本開示の技法は、他のコード化規格または方法に適用可能であり得る。
[0067]図2Bの例では、ビデオデコーダ30は、複数の機能的な構成要素を含む。ビデオデコーダ30の機能的な構成要素は、レートバッファ155と、サブストリームデマルチプレクサ160と、エントロピーデコーダ165と、レートコントローラ170と、予測器、量子化器、および再構築器構成要素175と、インデックス付き色履歴180と、ラインバッファ185と、色空間コンバータ190とを含む。ビデオデコーダ30の例示される構成要素は、図2Aのビデオエンコーダ20に関連して上で説明した対応する構成要素に類似する。このように、ビデオデコーダ30の構成要素の各々は、上で説明したようなビデオエンコーダ20の対応する構成要素と同様の方式で動作し得る。
QP算出
[0068]1つのアプローチでは、レートコントローラ120は、次の式に基づいて、ビデオデータの現在ブロックについてのQP(currQPと表される)を導出または算出し得る:
currQP=prevQ+QpAdj*(diffBits>0?1:−1)
ここで、prevQPは、前のブロックに関連付けられたQPであり、QpAdjは、diffBitsの大きさ(magnitude)に基づいて算出され得るQPオフセット値(例えば、QP調整値)である。diffBitsは、previousBlockBitsとtargetBitsとの間の差分を表し、ここで、previousBlockBitsは、前のブロックをコード化するために使用されるビット数を表し、targetBitsは、現在ブロックをコード化するためのターゲットビット数を表す。previousBlockBits>targetBitsであるとき、diffBitsは正であり、レートコントローラ120は、オフセット値QpAdjをprevQP値に加算することで現在ブロックのQP(currQP)を導出し得る。換言すると、QP値currQPは、diffBitsが正であるとき、prevQP値から値が減少しない。previousBlockBits≦targetBitsであるとき、diffBitsは負またはゼロであり、レートコントローラ120によって導出されるcurrQPは、prevQP値から増加しない。いくつかの実施形態では、レートコントローラ120は、QpAdjがdiffBitsの大きさの増加に伴って単調に増加するように、diffBitsの関数としてオフセット値QpAdjを算出し得ることに留意されたい。
[0069]図3は、QP調整値QpAdjを算出するための例示的な技法を描写するグラフ300を例示する。グラフ300は、ゼロから開始してdiffBitsの値がプロットされている水平軸302を例示する。いくつかのインプリメンテーションでは、diffBits>0であるとき、diffBitsの値は、K個の閾値を使用してK+1個の範囲へと分類され得る。図3では、K個の閾値は、閾値1、閾値2、閾値3…および閾値Kというラベルで例示され、K+1個の範囲は、範囲1、範囲2、範囲3、…および範囲K+1というラベルで例示されている。K+1個の範囲の各範囲は、特定のQpAdj値に関連付けられ得る。例えば、レートコントローラ120は、diffBitsの値の範囲インデックスが増加するに伴い、QpAdj値を増加させ得る。いくつかの実施形態では、diffBits≦0であるとき、レートコントローラ120は、J個の閾値(図示されない)を使用してdiffBitsの絶対値をJ+1個の範囲へと分類し得、ここで、特定のQpAdj値が、J+1個の範囲の各々に割り当てられている。
[0070]他の態様では、レートコントローラ120は、バッファ110のアンダーフローおよび/またはオーバーフローを防ぐために、図2Aに例示されたバッファ110のフルネスに基づいてcurrQP値を調整し得る。バッファ110のフルネスは、算出されたバッファフルネスパラメータBFの観点から表され得る。特に、BFが特定の閾値(例えば、P)を超えるとき、レートコントローラ120は、currQPを、固定オフセット値(例えば、p)だけインクリメントし得る。例えば、currQPは、次のように調整され得る:currQP+=p。さらに、BFが特定の閾値(例えば、Q)を下回るとき、レートコントローラ120は、固定値qだけcurrQPをデクリメントし得る、例えば、currQP−=q。特定の態様では、図3のdiffBitsに関連して例示される閾値および範囲と同様に、BFに対する複数の閾値が用いられ得る。例えば、BFの各閾値は、currQPを調整するために、対応するオフセット値に関連付けられ得る。
デルタサイズ単位−可変長コード化
[0071]いくつかの実施形態では、コーダ(例えば、ビデオエンコーダ20またはビデオデコーダ30)は、低コストで固定レートの視覚的にロスレスな圧縮を提供するためにデルタサイズ単位(DSU)コード化を使用し得る。コーダは、(ブロックサイズP×Qでの)ブロックベースアプローチに基づいて設計され、多数のコード化モードを備え得る。例えば、ビデオデータの各ブロックについてのコード化モードは、変換(例えば、DCT、アダマール)、ブロック予測、DPCM、パターン、中間点予測(MPP)、および中間点予測フォールバック(MPPF)モードを含み得るがそれらに限定されるわけではない。いくつかの実施形態では、異なるタイプのコンテンツまたは画像を効率的に圧縮するために、いくつかの異なるコード化モードがエンコーダ20によってインプリメントされることができる。例えば、いくつかの実施形態では、エンコーダ20は、パターンモードを使用してテキスト画像を、変換モードを使用して自然画像を圧縮し得る。
[0072]いくつかの実施形態では、エンコーダ20は、レート制御メカニズム(例えば、図2Aに例示されるようなレートコントローラ120)に基づいて、ビデオデータの各それぞれのブロックに対して複数のコード化モードから1つのコード化モードを選択する、選ぶ、または決定する。エンコーダ20はまた、選択されたコード化モードをビデオデータビットストリームにおいてシグナリングし得、それにより、デコーダ30は、このビットストリームを受信すると、ビデオデータをコード化するために使用されるコード化モードを決定することができ得る。レートコントローラ120は、各ブロックに対して効率的なコード化モードを、このモードのレートと歪みの両方を考慮することで、選択することを目的とし得る。レートコントローラ120は、(図2Aに例示されるような)バッファ110または到来するブロックデータを記憶するための他のタイプのメモリに関連付けられたバッファモデルによってサポートされ得る。バッファ110は、バッファ110が一度も(例えば、バッファ中のゼロビットより少ない)アンダーフローの状態にも(例えば、バッファサイズが、設定された最大サイズを過ぎて増加している)オーバーフローの状態にもならないように、例えば、DSCのようなコーデックの要件にしたがって構成され得る。
[0073]上で述べたように、エンコーダ20の予測器、量子化器、および再構築器構成要素125は、コード化されたビデオデータのブロックにおいてロスをもたらし得る量子化を実行し得、ここにおいて、ロスの総量は、ブロックの量子化パラメータ(QP)によって制御されることができる。例えば、いくつかの実施形態では、予測器、量子化器、および再構築器構成要素125は、1つまたは複数のビットプレーンをドロップすることで量子化を実行し得、ここにおいて、ドロップされるビットプレーンの数は、ブロックのQPに関連付けられた量子化ステップサイズによって示され得る。いくつかの実施形態では、エンコーダ20が各QPについての量子化ステップサイズを記憶する代わりに、エンコーダ20は、QPの関数としてスケーリングマトリックスを指定し得る。各QPについての量子化ステップサイズは、このスケーリングマトリックスから導出されることができ、導出される値は、必ずしも2の累乗である必要はなく、例えば、導出される値は、2の累乗以外に等しい値でもあり得る。いくつかの実施形態では、エンコーダ20によるスケーリングマトリックスの使用は、予測器、量子化器、および再構築器構成要素125が、単にビットプレーンを取り除くことより大きい粒度で量子化を実行し、潜在的にパフォーマンスを向上させることを可能し得る。
[0074]いくつかの実施形態では、ビデオデータの所与のブロック中の単一の構成要素(例えば、特定の色成分、ルーマまたはクロマ成分、等)のすべての値がゼロである場合、エンコーダ20は、スキップモードを使用してこのブロックを効率的にコード化し得る。スキップモードコード化では、エンコーダ20は、現在ブロックがスキップモードを使用してコード化される(成分のすべての値が現在ブロックについてゼロである場合)か、スキップモードでコード化されない(ブロック中の成分の少なくとも1つの値が非ゼロである場合)かを示す、デコーダ30によって読み取られ得るシンタックス要素またはインジケータ(例えば、1ビットフラグ)をコード化し得る。
[0075]いくつかの実施形態では、エンコーダ20は、プレフィックス部分およびサフィックス部分を使用して(「グループ」とも呼ばれる)長さKのサンプルベクトル(K-length sample vector)の量子化された残差値をコード化するためにデルタサイズ単位−可変長コード化(DSU−VLC)を使用し得る。サンプルは、例えば、RGB444の場合、単一の色成分中の値、を指すことができ、各画素は、3つのサンプルを有する。プレフィックス部分は、サフィックス部分に続く残差値のサイズ(例えば、ビットで表した長さ)(このサイズは、Bビットとして表される)を示し、サフィックス部分は、サンプルベクトル中のすべてのサンプルの実際の残差値を示す。いくつかの実施形態では、グループ中のK個の残差値の各々は、同じ数のビットを使用して、2の補数でコード化される。
[0076]図4は、いくつかの実施形態に係る、K=4個のサンプルを有するサンプルベクトル402をコード化するためのDSU−VLC構造404を示す。いくつかの実施形態では、DSU−VLC構造404は、図2Aに例示されるようなエントロピーエンコーダ140に対応し得る。サンプルベクトル402は、ビデオデータの特定の色成分の残差値に各々対応する複数のサンプルを備え得る。図4に例示されるように、サンプルベクトル402は、4つのサンプル(S0、S1、S2、およびS3)を備え得る。DSU−VLC構造404は、受け取ったサンプルベクトル402をコード化して、DSU−VLCコード406(以降、コード406)を形成し得る。コード406は、プレフィックス408およびサフィックス410を備える。サフィックス410は、サンプルベクトル402の受け取ったサンプル(例えば、S0、S1、等)に各々対応する複数のサフィックス部分(例えば、サフィックス1、サフィックス2、等)を備える。コード406のプレフィックス408およびサフィックス410のさらなる説明は、図5を参照して以下に説明される。
[0077]図5は、値[1,−2,−1,0]を有する4つのサンプルを備えるサンプルベクトル(図示されない)のためにエントロピーエンコーダ140によってコード化され得るコード502を例示する。コード502は、図4に例示さるコード406に対応し得る。加えて、コード502は、(それぞれ、図4のプレフィックス408およびサフィックス410に対応し得る)プレフィックス504およびサフィックス506を備える。サフィックス506は、サンプルベクトルのサンプル値に各々対応する4つのサフィックス部分を備え得る。
[0078]2の補数表現(two's complement representation)を使用して、エントロピーエンコーダ140は、サンプルベクトルのサンプルの各々をコード化するためにB=2ビットを使用し得る。コード502において、プレフィックス504は、サフィックス506のコード化されたサフィックス部分の各々の長さが2ビットであることを示す単項コード‘001’を使用して表され得る。サフィックス506は、各々2ビットを使用してコード化された、実際のコード化されたサンプル値サンプルベクトルをそれぞれ表す値[01,10,11,00]によって表され得る。プレフィックス504の復号、これは通常単一クロックにおいて行われ得る、を行うことで、デコーダ30は、サフィックス506の4つのシンボルすべてを並行して復号することができ得る。
グループ区分化
[0079]図6は、いくつかの実施形態に係る、ビデオデータの所与のP×Qブロックのサンプルを複数のサンプルベクトル(グループ)へと区分化する例を例示する。図6に例示されるように、ブロック602は、16個のサンプルを備える2×8ブロックであり得る。ブロック602の各サンプルは、ブロック602に対応するビデオデータの特定の色成分の量子化された残差値に対応し得る。サンプルがDSU−VLC構造404を使用してコード化される前に、エンコーダ20は、サンプルを複数のグループへと区分化し得る。例えば、図6は、4つのサンプルを各々備える4つのサンプルベクトル604(例えば、サンプルベクトル604A、604B、604C、および604D)へと区分化されるブロック602の16個のサンプルを例示する。DSU−VLC構造404は、(例えば、図4に例示されるような)プレフィックスおよびサフィックスを各々有するコード(図示されない)を作り出するために、サンプルベクトル604A−604Dをコード化し得る。上で説明したように、(図3に例示されるような)デコーダ30は、これらコードの各コードのプレフィックスおよびサフィックスを並行して復号することができ得、これは、デコーダ30が、1クロックサイクルあたり4つのサンプルを復号することを可能にする。
[0080]ブロック602のサンプルをグループへと区分化するためにエンコーダ20を使用することで、コード化されたグループを復号するときに、1クロックあたり複数のサンプルというスループットがデコーダ30によって達成されることができる。図6は、ブロック602のサンプルがサンプルベクトル604へと均一に区分化されていることを例示するが、エンコーダ20が、サンプルのブロックをN個のサンプルベクトルへと均一にまたは不均一に区分化し得ることが理解される。均一のグループ化方法では、N個すべてのサンプルベクトル604は、同じ数のサンプルを有するであろう。他方で、不均一グループ化方法を使用するときは、各サンプルベクトル604中のサンプルの数が異なり得る。
[0081]いくつかの実施形態では、ブロック602の区分化が均一であるか不均一であるかは、このブロック602に関連付けられたコード化モードに基づき得る。例えば、エンコーダ20は、ブロック予測モードでは均一のグループ化方法を使用し得、変換モードでは不均一グループ化方法を使用する。
ベクトルベースエントロピーコード化
[0082]図7は、図2Aに例示されたエントロピーエンコーダ140に対応し得るコーダ702を使用してベクトルベースECプロセスの例示的なブロック図を例示する。コーダ702は、サンプルベクトル704をコード化するために使用され得る。サンプルベクトル704は、図4に例示されたようなサンプルベクトル402および図6に例示されたようなサンプルベクトル604に類似し得る。
[0083]図7に例示されるように、サンプルベクトル704は、ベクトルサイズK(例えば、[S,S,・・・SK−1])を有する。加えて、サンプルベクトル704は、Bビットという必要とされるサンプルサイズを有し得る(例えば、コーダ702は、グループ中の各サンプルを正確に表すために1サンプルあたりBビットを必要とし得る)。所与のK値およびB値について、可能な(possible)長さKのサンプルベクトルの合計数は2BKである。例えば、K=2およびB=1であるとき、1ビットを使用して表されることができるサンプルを有する、可能なすべての長さ2のサンプルベクトルのセットは、4つ、すなわち、(2の補数表現を使用するとき)[−1,0]、[−1,−1]、[0,0]、[0,−1]である。図4−5に例示されたコード化スキームを使用して、コーダ702は、同じ数のビット(例えば、BKビット、または2ビット)を使用して、これらのサンプルベクトルの各々に対応するサフィックスをコード化し得る。このように、K値およびB値の所与の組合せについて、サンプルベクトルをコード化するために使用されるビット数は、2BK個の可能なベクトルのセット中の長さKのサンプルベクトルがコード化されているかにかかわらず、同じである。これは、セット中の各サンプルベクトルの生起確率を考慮に入れない。
[0084]しかしながら、画像情報をコード化するとき、特定のサンプルベクトル704は、長さKのサンプルベクトルのセット中の他のサンプルベクトルと比べて、より確からしい(probable)傾向にあり得る。いくつかの実施形態では、2BK個のベクトルのセット中の長さKのサンプルベクトルの分布が均一でない(例えば、セット中のすべてのベクトルが等しく確からしいとは限らない)とき、コーダ702は、生起確率に基づいて、長さKのサンプルベクトル704を別々にコード化し得る。例えば、コーダ702は、より確からしくない長さKのサンプルベクトル704と比べて、より少ない数のビットを使用して、より確からしい長さKのサンプルベクトル704をコード化し得る。以下に説明される技法は、可能な長さKのサンプルベクトル704のセットが不均一分布から引き出されるとき、長さKのサンプルベクトル704をコード化するための効率的なコード化ストラテジを対象としている。
[0085]いくつかの実施形態では、コーダ702は、可能な長さKのサンプルベクトル704のセットが不均一分布から引き出されるとき、長さKのサンプルベクトル704をより効率的にコード化するためにベクトルベースエントロピーコード化(EC)方法を使用し得る。いくつかの実施形態では、コーダ702は、所与の長さKのサンプルベクトル704を一意的な単一値(例えば、「インデックス」706)へと変換するために変換712を実行することで、グループ中の長さKのサンプルベクトル704に対してベクトルベースECを実行し得る。長さKのサンプルベクトル704と「インデックス」706との間には1対1対応が存在し得る。
[0086]コーダ702は、算出されたインデックス値706を使用して、このインデックス値706を「codeNumber」708にマッピングするマッピング714を実行し得る。VLCコード716を使用して、コーダ702は、ビデオデータビットストリームの一部としてデコーダ165に送信され得るコード化されたビット710のシーケンスを形成するために、「codeNumber」708をコード化し得る。VLCコード716は、非構造化または構造化され得る。非構造化VLCコード716の例には、ハフマン、算術が含まれ、構造化VLCコード化には、指数ゴロム(EG)、ゴロム−ライス(GR)、またはEGとGRの混合が含まれ得る。デコーダ165において、コード化されたビット710の単一シーケンスをパースする(典型的に単一のクロックにおいて行われることができる)と、サンプルベクトル704中のすべてのK個のサンプルは、再構築されることができる。したがって、ベクトルベースECの使用は、典型的にK個のサンプル/クロックという高いスループットを供給する。
[0087]いくつかの実施形態では、コーダ702は、算出された「インデックス」値706を「codeNumber」708にマッピングするために使用されることができるLUT(ルックアップテーブル、図示されない)を使用して、マッピング714を実行し得る。LUTは、所与のグループの長さKのサンプルベクトル704の確率値(probability value)に基づいて構築されることができる。例えば、いくつかの実施形態では、LUTは、より確からしいと考えられるサンプルベクトル704が、より小さい値を有するかそうでなければより少ない数のビットを使用してコード化されることができるcodeNumbers708(例えば、より短いコード長を有するcodeNumbers708)にマッピングされるように構築され得る。例えば、より高い確率のサンプルベクトルのためのcodeNumbers708は、BKビットより少ない数を使用してコード化され得る。いくつかの実施形態では、サンプルベクトル704をcodeNumbers708にマッピングするためのLUTまたはデータ構造は、LUTまたはデータ構造中のサンプルベクトル704をルックアップするときに、より確からしいと考えられるサンプルベクトル704がより迅速にまたはより高い優先度でアクセスされ得るように構築され得、これは、デコーダ165によるより正確なアクセスを可能にする。
[0088]いくつかの実施形態では、エンコーダ20は、ルーマ成分サンプルおよびクロマ成分サンプルの両方について同じLUTを記憶し得、他の実施形態では、異なるLUTが、ルーマ成分サンプルおよびクロマ成分サンプルをコード化するために使用され得る。加えて、デコーダ30は、エンコーダ20によって使用されるLUTまたはデータ構造のそれ自体の複写を記憶し得る。例えば、デコーダ30は、コード化されたビデオデータのビットストリームを受け取ることと、1つまたは複数のcodeNumbers708を復号することとに応答して、対応するサンプルベクトル704を決定するために、それ自体のLUTを使用し得る。
[0089]いくつかの実施形態では、コーダ702は、すべてのサイズBに対して単一のLUTを使用する。他の実施形態では、コーダ702は、異なるサイズのBに対して別個のLUTを使用し得る。例えば、ある実施形態では、コーダ702は、B=1であるときには第1のLUT1を、B=2であるときには第2のLUT2を使用し得る。コーダ702がサイズBに基づいて特定のLUTを選択するとき、コーダ702は、使用されるLUTのタイプが明示的にシグナリングされ得るように、コード化されたビット710のシーケンスをコード化し得る(例えば、B=1のときにはLUTタイプ=1がシグナリングされ、B=2のときには、LUTタイプ=2がシグナリングされる、等)。コード化されたビット710においてLUTのタイプをシグナリングすることで、デコーダ165は、ビット710のシーケンスを復号するときに使用されるべき対応するLUTを識別することができるであろう。いくつかの実施形態では、シグナリングは、単項コードの形であり得る。代替的に、コード化されたビット710においてLUTタイプをシグナリングすることは、固定長のコードを使用して行われ得る。他の実施形態では、コーダ702は、コード化されたビット710においてLUTタイプをシグナリングするために、ハフマンまたは算術のようなVLCコードを使用し得る。
[0090]図8は、コード化されたビット806のシーケンスを作り出すため、K=4個のサンプルを含むサンプルベクトル402をコード化するためにベクトルベースECを使用するコーダ702の例を示す。(図7に例示されたコード化されたビット710のシーケンスに対応し得る)コード化されたビット806は、LUTタイプ信号808と、ベクトルベースVLCコード810とを備え得る。LUTタイプ信号808は、コード化されたビット806を生成するためにコーダ702によって使用された(例えば、図7に例示されるようなコード番号708へのインデックス値706のマッピングを実行するために使用される)LUTのタイプを明示的にシグナリングする。ベクトルベースVLCコード810は、サンプルベクトル802中の4つすべてのサンプルを表す。いくつかの実施形態では、LUTタイプ信号808はまた、サンプルベクトル402のサンプルの値をコード化するのに必要とされるビット数(a number of bits)Bを示し得る。
[0091]いくつかの実施形態では、エンコーダ20が、特定のコード化モード(例えば、変換モード)についてのサンプルベクトル402を構築するために不均一区分化方法(例えば、異なるK値)を適用するとき、別個のLUTは、各サンプルベクトル中のサンプルの数Kが異なることにより異なるサンプルベクトルサイズKに対して使用され得る。このように、異なるB値、異なるK値、または異なるKおよびB値の組み合わせに対応する異なるLUTが使用され得る。
[0092]インデックス値706を対応するcodeNumbers708にマッピングするためのLUTのサイズは、サイズBが増加するに伴い増加し得る。このように、いくつかの実施形態では、ベクトルベースECは、サンプルベクトル402のサイズBが特定の閾値より小さいとき、コーダ702によってのみ使用される。これは、エンコーダ20およびデコーダ30に、Bのより大きな値のためのより大きなサイズのLUTを記憶させないことでメモリ要件を低減するために行われ得る。例えば、Bが閾値限界(threshold limit)を超えると、コーダ702は、非ベクトルベースコード化技法(例えば、図4−5に例示されたDSU−VLCコード化スキーム)を使用して、サンプルベクトル402をコード化し得る。例えば、閾値が4である実施形態では、コーダ702は、受け取ったサンプルベクトル704がサイズB=1、2、または3であるときにのみベクトルベースECを使用し、(図4−5に例示されるような)DSU−VLCコード化は、サイズBが4以上であるサンプルベクトル704に対して使用される。
[0093]本明細書で開示される技法は、ブロック予測(BP)、変換モード、BPスキップモード、変換スキップ、MPP、またはMPPFのような、ビデオデータのブロックをコード化するために使用される任意のコード化モードに適用されることができる。ベクトルベースエントロピーコーダ702が1つよりも多くのコード化モードに対してベクトルベースECを適用する実施形態では、各コード化モードがそれ自体のLUTに関連付けられ得るか、共通のLUTが複数のモードに関連付けられ得る。共通のLUTが使用されるか別個のLUTが使用されるかは、メモリ要件とパフォーマンスとの間のトレードオフに基づいて決定され得る。例えば、いくつかの実施形態では、BPおよび変換は、インデックス706をcodeNumbers708にマッピングするために、同じLUTまたはデータ構造を使用し得、他の実施形態では、BPおよび変換は、異なるLUTまたはデータ構造を使用し得る。いくつかの実施形態では、コーダ702は、特定のモード(例えば、BPモード)でのみベクトルベースECを使用し得、他のコード化技法は、他のモード(例えば、BPモード以外)で使用される。加えて、本明細書で開示される技法は、任意のタイプのサンプリングフォーマット、例えば、4:4:4、4:2:2、4:2:0に適用されることができる。
[0094]図9は、LUTタイプ信号808がVLCコード810のプレフィックスと組み合わせられている、コード化されたビット806のシーケンスの例を例示する。(EG、GR、またはEGとGRの混合といった構造化VLCコードのような)codeNumber708をコード化するためにコーダ702によって使用され得るVLCコード716のいくつかのタイプは、プレフィックス908およびサフィックス910を備えるVLCコード810という結果になり得る。いくつかの実施形態では、VLCコード810のプレフィックス908は、単項コード、または、デコーダ(例えば、デコーダ165)が処理するのに時間のかかる何らかの他のコードフォーマットであり得、サフィックス910は、固定長であり得る。処理時間を低減するために、コーダ702は、プレフィックス908とLUTタイプ信号808とを組み合わせて、単一のVLCコード部分912にし得る。
[0095]例えば、図9に例示されるように、コーダ702は、VLCコード部分912を形成するために、VLCコード化の第2のステージ(図示されない)を通して、コード化されたビット806の可変長部分(例えば、LUTタイプ信号808およびプレフィックス908)を組み合わせ、コード化し得る。いくつかの実施形態では、VLCコード化の第2のステージは、図2Aに例示されるように、エントロピーエンコーダ140によって実行され得る。LUTタイプ信号808およびVLCコードプレフィックス908の両方が単項コードまたは何らかの他の処理が高価なフォーマットであるため、VLCコード化の第2のステージを実行することは、コード化されたビット806を受け取るデコーダ165がLUTタイプ信号808およびVLCコードプレフィックス908を処理するのに必要な処理量を減らすのに役立ち得る。いくつかの実施形態では、コーダ702は、LUTタイプ信号808およびプレフィックス908を単一のコード番号にマッピングするために第2の別個のLUT(図示されない)を使用し得る。次いで、コーダ702は、VLCコード部分912を形成するために、結果として得られるコード番号を(例えば、第2のステージのVLCコードを使用して)コード化し得る。デコーダ165によって受け取られると、デコーダ165は、完全なコード化されたビット806のシーケンスを取得する目的で、完全なVLCコード810のLUTタイプ信号808およびプレフィックス908を決定するためにVLCコード部分912を最初に復号し得る。いくつかの実施形態では、コード化されたビット806の可変長部分をコード化するために使用される第2のステージのVLCコードは、コード化されたビット806のシーケンスを形成する目的でcodeNumber708をコード化するために使用されたのと同じタイプのVLCコード716であり得る。他の実施形態では、第2のステージのVLCコードは、VLCコード716とは異なり得る。
符号絶対値コード化
[0096]上で述べたように、サイズBは、所与のグループ内のすべてのサンプル(例えば、サンプルベクトル402、604、または704)を正確に表すのに必要なビット数を表し得る。いくつかの実施形態では、Bの値は、2の補数表現に基づいて算出され得、ここで、−(2B−1)から+(2B−1−1)までのサンプル値を表すのにBビットが必要とされる。しかしながら、本明細書で開示される技法は、2の補数レジストレーションを使用した実施形態に限定されず、他のタイプの表現を使用して算出されたサンプル値に対して適用されることができる。例えば、いくつかの実施形態では、エンコーダ20は、符号絶対値表現を使用してサンプル値をコード化し得、ここで、0から2−1までの範囲にあるサンプル値を表すのにBビットが必要とされる。
[0097]図10Aは、符号絶対値表現を使用して、(例えば、図6に例示されるような)例示的なサンプルベクトル604のエントロピーコード化の例を示す。符号絶対値表現が特定の実施形態において使用されるとき、コーダ702は、サンプルベクトル604中のサンプルの(大きさまたは絶対部分とも呼ばれる)絶対値をコード化し、サンプルベクトル604のサンプルの符号値に対応する符号ビットコード化が続き得る。
[0098]コーダ702は、コード化されたビット1002のそれぞれのグループ(例えば、グループ1002A、1002B、1002C、および1002D)を形成するために、サンプルベクトル604A乃至604Dの各々をコード化し得る。コード化されたビット1002の各グループは、プレフィックス部分1004と、サフィックス部分1006と、ゼロ以上の(zero or more)符号ビット1008とを備える。プレフィックス部分1002は、それぞれのサンプルベクトル604中のサンプルの最大絶対値をシグナリングするのに必要なビット数Bを示す。サフィックス部分1006は、それぞれのサンプルベクトル604の各サンプルの絶対値を表す。最後に、符号ビット1008は、それぞれのサンプルベクトル604の非ゼロサンプルについての符号値を表す。
[0099]例として、サンプルベクトル604Aが、[1,−3,−1,0]の値を有する4つのサンプルを含むと仮定する。この例では、コード化されたビット1002Aのプレフィックス部分1004は、B=2の値を示す(これは、絶対値[1,3,10]から算出される)。サフィックス部分1006は、サンプルベクトル604Aの絶対サンプル値に対応する部分(例えば、01,11,01,00としてコード化される)を備え得る。符号ビット1008は、サンプルベクトル604Aの非ゼロサンプルの各々についての符号値を示し得る。例えば、符号ビット1008は、「100」としてシグナリングされ得、ここで、「1」は正を示し、「0」は負を示す。ゼロ値を有するサンプルベクトル604Aのサンプルについての符号は、符号ビット1008においてシグナリングされない。
[0100]いくつかの実施形態では、コーダ702は、サンプルベクトル604のサンプルの大きさまたは絶対部分に対して(例えば、図7−8に例示されるような)ベクトルベースエントロピーコード化を使用して、サンプルベクトル604Aをコード化し得る。サンプルベクトル604A中のサンプルの絶対値は、本明細書で開示されるベクトルベース技法を使用してコード化され得る。
[0101]例えば、4つのサンプルS0、S1、S8、およびS9を備えるサンプルベクトル604Aの場合、ベクトルベースエントロピーコーダ702は、プレフィックス部分1004およびサフィックス部分1006を作り出すために、|S0|、|S1|、|S8|、|S9|のような、ベクトルベースECをグループ中のサンプルの絶対値に適用し得る。プレフィックス部分1004は、使用されるLUTのタイプを示し得、サフィックス部分1006は、サンプルベクトル604Aのすべてのサンプルの絶対値が決定され得るcodeNumberに対応し得る。
[0102]他方で、コーダ702は、サンプルS0、S1、S8、およびS9の符号ビット1008を、ベクトルベースエントロピーコード化を使用することなく、別々にシグナリングし得る。例えば、符号ビット1008は、固定長のコードを使用してシグナリングされ得、ここで、非ゼロサンプルごとに1ビットが、このサンプルが正であるか負であるかを示すために、シグナリングされる。いくつかの実施形態では、符号ビットは、対応するサンプル値がゼロであるときシグナリングされない。
[0103]図10Bは、いくつかの実施形態に係る、符号絶対値表現を使用してサンプルベクトル604をコード化するための代替の配列を例示する。いくつかの実施形態では、コーダ702は、複数のサンプルベクトル604A乃至604Dの各々についてのプレフィックス部分1004およびサフィックス部分1006がコード化された後に、ビットストリームにおいて複数のサンプルベクトル604A乃至604Dについての符号ビット1008をコード化し得る。例えば、いくつかの実施形態では、コーダ702は、最初に、ビットストリームにおいてすべてのサンプルベクトル604A−Dのプレフィックス部分1004およびサフィックス部分1006をコード化し得、すべてのグループ604A−Dの符号ビット1008は、すべてのプレフィックス部分1004およびサフィックス部分1006がコード化された後に、ビットストリームにおいてコード化され得る。
[0104]2の補数表現と比べて、符号絶対値表現がもたらす利点は、値がゼロであるシンボルについての符号情報がシグナリングされないことである。したがって、符号絶対値表現は、例えば、ブロック予測および変換モードのような、ゼロ値がより確からしいモードにおいて、優れたコード化パフォーマンスに帰着することができる。
[0105]上で説明したように、コーダ702は、サンプルベクトル604をコード化するために符号絶対値表現を使用し得、ここにおいて、ゼロの値に対応するサンプルベクトル604のサンプルのための符号ビットは、符号ビット1008においてシグナリングされない。このように、デコーダ30のパーサロジックは、ビットストリームから、サンプルベクトル604のサンプルの各々について符号ビット1008からの符号情報を読み取るかどうかを知るために、(サフィックス部分1006としてコード化された)サンプルベクトル604のサンプルを再構築または復号する必要があり得る。いくつかの実施形態では、デコーダ30のパーサは、サブストリームデマルチプレクサ160の一部としてインプリメントされ得る。
[0106]換言すると、デコーダ30のパーサロジックは、それがサンプルベクトル604についての符号ビット1008をパースし得る前に、サンプルベクトル604の各サンプルがゼロ値を有するか非ゼロ値を有するかを知る必要がある。サンプル値が非ゼロである場合、デコーダ30は、符号ビット1008の一部としてビットストリームからサンプルについての符号情報をパースする。そうではなく、サンプル値がゼロである場合、符号ビットは、ビットストリームから読み取られない。デコーダ30の(例えば、エントロピーデコーダ165としてインプリメントされた、サンプルを復号するための)復号機能とパース機能との間のこの依存性により、デコーダ30の最大デコーダスループットは、いくつかの実施形態では低減され得る。
[0107]いくつかの実施形態では、ビデオデータビットストリームから、コード化されたサンプルベクトルを受け取ることに応答して、パーサは、単項コードであり得る、受け取ったコード化されたサンプルベクトルのプレフィックスを、このサンプルベクトルの各サフィックス部分の長さを決定するために、復号し得る。次いで、パーサは、エントロピーデコーダ165によって復号するために、サンプルベクトルのサフィックスに対応する固定数のビットを取り出し、次いで、次のクロックサイクル中に次のサンプルベクトルへと進み得る。
[0108]デコーダ(例えば、エントロピーデコーダ165)は、コード化されたサンプルベクトルのサフィックスに対応するビットをパーサから受け取る。次いで、デコーダ165は、codeNumber708を決定するために、受け取ったビットを復号し得る。次いで、デコーダ165は、LUTを使用して、codeNumber708をインデックス値706にマッピングし得、これは、次に、サンプルベクトルの実際のサンプル値を取得するために使用される。いくつかの実施形態では、この復号は、コード化されたサンプルベクトルをパーサがパースした後の次のクロックサイクル(例えば、パーサが後続のサンプルベクトルをパースしているのと同じクロックサイクル)において実行され得る。
[0109]図11は、いくつかの実施形態に係る、符号絶対値を使用してコード化されたサンプルベクトル604A−Dをパースおよび復号するために必要とされ得る多数のクロックサイクルを例示する例示的なグラフ1100を例示する。いくつかの実施形態では、デコーダ30は、(プレフィックス部分1004が、サフィックス部分1006中のビット数を直接識別するであろうことから)単一のクロックにおいて各サンプルベクトル604のプレフィックス部分1004およびサフィックス部分1006をパースすることができ得る。図10Aに例示されるようなサンプルベクトル604A−604Dを考慮すると、いくつかの実施形態では、デコーダ30は、4つのサンプルベクトル604A乃至604Dをパースするのに少なくとも5つのクロックサイクルを必要とし得る。
[0110]クロックサイクル1において、デコーダ30は、サンプルベクトル604Aのプレフィックス部分およびサフィックス部分をパースする。クロックサイクル2において、デコーダ30は、サンプルベクトル604Bのプレフィックス部分およびサフィックス部分をパースする。それと同時に、デコーダ30は、サンプルベクトル604Aの絶対サンプル値を復号し、サンプルベクトル604Aについての符号ビットをパースする。クロックサイクル3において、デコーダ30は、サンプルベクトル604Bの絶対サンプル値を復号し、サンプルベクトル604Bの符号ビットだけでなく、サンプルベクトル604Cのプレフィックス部分およびサフィックス部分をパースする。クロックサイクル4において、デコーダ30は、サンプルベクトル604Cのサンプル値を復号し、サンプルベクトル604Cの符号ビットおよびサンプルベクトル604Dのプレフィックスおよびサフィックスをパースする。デコーダ30がサンプルベクトル604Dの絶対値を復号して、サンプルベクトル604Dについての対応する符号情報をパースするのに、追加のクロックサイクル(クロックサイクル5)が必要とされる。したがって、図10Aに例示されるようなこの表現は、いくつかの実施形態では、デコーダ20の達成可能な最大スループットを低減し得る。各サンプルベクトルの絶対サンプル値がベクトルエントロピーコード化を使用してコード化されるとき、同様の結果が導き出され得る。
[0111]いくつかの実施形態では、図10Bに例示されたように、複数のサンプルベクトル604A−Dに対応する符号ビット1008は、ビットストリームにおいてグループ604A−Dのプレフィックス部分1004およびサフィックス部分1006の後に位置付けられ得る。これらのケースでは、デコーダ30は、複数のサンプルベクトルのうちの最後のサンプルベクトル(例えば、グループ604D)のプレフィックスおよびサフィックスをパースしてから1クロックサイクル後に、符号ビット1008をパースし得る。このように、複数のサンプルベクトル604A−Dのすべてのサンプルベクトルが、符号絶対値を使用してコード化されるとき、デコーダ30は、サンプルベクトル604A−Dのプレフィックスおよびサフィックスをパースした後に、符号ビット1008をパースするために余分な(extra)クロックサイクル(例えば、クロックサイクル5)を必要とし得、これは、デコーダ165の達成可能な最大スループットを低減する可能性がある。例えば、n個のグループ604をパースするために、デコーダ30は、n+1個のクロックサイクルを必要とし得る。
[0112]図12は、(例えば、図6に例示されるような)例示的なサンプルベクトル604のハイブリッドエントロピーコード化の例を例示す。いくつかの実施形態では、デコーダ30のスループットを増やすために、コーダ702は、ハイブリッド法を使用し得る。例えば、コーダ702は、符号絶対値表現を使用して、初期数のサンプルベクトル604(例えば、サンプルベクトル604A−C)をコード化し得る。他方では、コーダ702は、2の補数表現のような異なる表現を使用して、残りのサンプルベクトル(例えば、サンプルベクトル604D)をコード化し得る。コーダ702は、(図4−5に例示されるような)DSU−VLCまたは(例えば、図7−9に例示されるような)ベクトルECに基づいて、サンプルベクトル604A−Dの各々をコード化し得る。例えば、2の補数表現のためのベクトルECは、サンプルベクトル604のシンボルが単一のcodeNumber708にマッピングされる図8に基づき得る。他方で、符号絶対値表現では、コーダ702は、サンプルベクトル604についての符号ビット1008がサンプルベクトル604の非ゼロシンボルごとに別々にシグナリングされ得るのと同時に、サンプルベクトル604の各シンボルの絶対値のセットを単一のcodeNumber708にマッピングし得る。
[0113]4つのサンプルベクトル604A−Dをコード化するための1つの例示的な実施形態では、符号絶対値表現が、最初の3つのサンプルベクトル604A−Cに対して使用され、2の補数表現が最後のサンプルベクトル604Dに対して使用される。図13は、いくつかの実施形態に係る、図12に例示されたハイブリッドコード化スキームを使用してコード化されたサンプルベクトル604A−Dをパースおよび復号するのに必要とされ得る多数のクロックサイクルを例示する例示的なグラフ1300を例示する。上で説明したようにパーサおよびシンボルデコーダ165をパイプラインすることで、第4のクロックサイクルの間に、サンプルベクトル604Cのサンプルが復号されるのと同時に、サンプルベクトル604Dのサンプルが、デコーダ165によってパースされる。サンプルベクトル604Dのサンプルは2の補数表現に基づいてコーダ702によって符号化されるため、デコーダ165が、サンプルベクトル604Dについての符号ビットをパースするためにサンプルベクトル604Dの絶対サンプル値を復号する必要はない。したがって、ハイブリッド法を使用すると、デコーダ30が、4つのクロックサイクルにおいて4つすべてのサンプルベクトル604A−Dをパースすることが可能であり得る。ゆえに、いくつかの実施形態では、n個のサンプルベクトルをパースするときに余分なクロックサイクルが必要となるのを回避するために、コーダ702は、符号絶対値表現を使用して最初のn−1個のサンプルベクトルをコード化し、それと同時に、2の補数表現のような異なる表現を使用して最後のサンプルベクトルをコード化し得る。ゆえに、デコーダ30は、n個のクロックサイクルにおいてn個のサンプルベクトルをパースすることができ得る。
[0114]いくつかの実施形態では、コーダ702は、非ゼロサンプル値を有するサンプルベクトル604の数に基づいて、2の補数表現を使用するか符号絶対値表現を使用するかを決定し得る。一例では、コーダ702は、前のサンプルベクトル604A乃至604Cの各々が少なくとも1つの非ゼロサンプル値を含む場合にのみ、最後のサンプルベクトル604Dに対して2の補数表現を使用し得る。それ以外の場合、コーダ702は、最後のサンプルベクトル604Dをコード化するために、符号絶対値表現を使用し得る。いくつかの実施形態では、最後のサンプルベクトル604Dをコード化するために2の補数を使用することは、圧縮効率のかなりのロスを伴い得る。3つのサンプルベクトル604A乃至604Cの各々が少なくとも1つの非ゼロサンプル値を含むときにのみ2の補数で最後のサンプルベクトル604Dをコード化する(ゆえに、符号ビット1008のコード化を必要とする)ことによって、2の補数の使用は、所望のスループットを達成するために、必要なときにのみそれを使用することで最小限にされ得る。例えば、3つのサンプルベクトル604A乃至604Cのうちの1つでも少なくとも1つの非ゼロサンプル値を含まない場合、サンプルベクトルは、グループスキップモードを使用してコード化され得る。ゆえに、デコーダ30は、サンプルベクトル604A乃至604Cをより迅速にパースすることができ得、これにより、4つすべてのサンプルベクトルが4つのクロックサイクル内にパースされることができる。
[0115]上の例では、DSU−VLCベースエントロピーコード化は、符号絶対値表現および2の補数表現の両方に対して使用される。しかしながら、同じ技法は、両方の表現についてのベクトルECに拡張されることができる。
プロセスフロー
[0116]本開示の態様が、図2Aのビデオエンコーダ20のようなエンコーダまたは図8に例示されたベクトルベースエントロピーコーダ804のようなエンコーダの一部の観点から説明されていることは留意されるべきである。上で説明したものの逆動作が、例えば、図2Bのビデオデコーダ30によって、生成されたビットストリームを復号するために適用され得る。
[0117]例えば、図14Aは、サンプルベクトルデータを符号化するためのプロセスのフローチャートを例示し、図14Bは、サンプルベクトルデータに対応する受け取ったビットシーケンスを復号するためのプロセスのフローチャートを例示する。例えば、図14Aのブロック1402において例示されるように、エンコーダは、受け取ったサンプルベクトルをインデックス値に変換する。いくつかの実施形態では、異なるサンプルベクトルが2つとして同じインデックス値を有することがないように、サンプルベクトルとインデックス値との間には1対1の対応が存在する。ブロック1404において、エンコーダは、LUTを使用して、インデックス値をコード番号にマッピングする。LUTは、可能なサンプルベクトルのグループのうちの所与のサンプルベクトルの生起確率に少なくとも部分的に基づいて構築され得る。いくつかの実施形態では、エンコーダは、サンプルベクトルをコード化するために使用されるコード化モード、サンプルベクトルの各サンプル値を表すのに必要なビット数、サンプルベクトル中のサンプル値の数(a number of)、および/または同様のものに基づいてLUTを識別し得る。ブロック1406において、エンコーダは、ビットストリームの一部として記憶または送信されるべき、コード化されたビットのシーケンスを形成するために、VLCスキームを使用して、コード番号をコード化し得る。
[0118]図14Bのブロック1412に例示されるように、デコーダは、コード番号を形成するために、VLCスキームを使用して、(例えば、受け取ったビットストリームから)受け取ったビットのシーケンスを復号する。ブロック1414において、デコーダは、LUTを使用して、コード番号をインデックス値にマッピングする。いくつかの実施形態では、デコーダは、ビットのシーケンスの一部として(例えば、このシーケンスのプレフィックス部分として)受け取ったインジケーションに基づいて、このマッピングを実行するために使用されるLUTタイプを識別する。ブロック1416において、デコーダは、インデックス値をサンプルベクトルについての値へと変換する。
[0119]図15は、ハイブリッドコード化を使用してサンプルベクトルデータを符号化するための例示的なプロセスのフローチャートを例示する。ブロック1502において、エンコーダは、複数のサンプル値を受け取り、受け取ったサンプル値をn個のサンプルベクトルへと分ける。ブロック1504において、エンコーダは、符号絶対値表現を使用して、n個のサンプルベクトルの第1の部分をコード化する。いくつかの実施形態では、サンプルベクトルの第1の部分は、n個のサンプルベクトルのうちの最初のn−1個のサンプルベクトルを備え得る。ブロック1506において、エンコーダは、2の補数表現を使用して、n個のサンプルベクトルのうちの1つまたは複数の残りのサンプルベクトルをコード化し得る。いくつかの実施形態では、1つまたは複数の残りのサンプルベクトルは、n個のサンプルベクトルのうちの最後のサンプルベクトル(the last sample vectors)を備え得る。いくつかの実施形態では、エンコーダは、サンプルベクトルの第1の部分の各々が、非ゼロ値を有する少なくとも1つのサンプルを含む場合にのみ、2の補数表現で、1つまたは複数の残りのサンプルベクトルをコード化する。n個のサンプルベクトルのうちのサンプルベクトルの第1の部分を符号絶対値表現を使用しておよび残りのグループを2の補数表現を使用してコード化することで、n個のサンプルベクトルのすべてのサンプル値の絶対値が復号された後に非ゼロサンプル値の符号ビットを復号することが必要となることで引き起こされ得るデコーダスループットの低減を回避しつつ、符号絶対値表現を使用してコード化することの利点が実現され得る。
他の検討事項
[0120]本明細書で開示された情報および信号は、多種多様な技術および技法のうちの任意のものを使用して表され得る。例えば、上の説明全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場または磁性粒子、光場または光粒子、またはこれらの任意の組合せによって表され得る。
[0121]本明細書で開示された実施形態と関連して説明された実例となる様々な論理ブロックおよびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとしてインプリメントされ得る。このハードウェアとソフトウェアとの互換性を明確に例示するために、実例となる様々な構成要素、ブロック、およびステップが、概してそれらの機能性の観点から上で説明されている。このような機能性がハードウェアとしてインプリメントされるかソフトウェアとしてインプリメントされるかは、特定の用途とシステム全体に課せられる設計制約とに依存する。当業者は、説明された機能性を特定の用途ごとに様々な方法でインプリメントし得るが、このようなインプリメンテーションの決定は、本開示の範囲からの逸脱をさせるものとして解釈されるべきでない。
[0122]本明細書で説明された技法は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組合せでインプリメントされ得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、または、ワイヤレス通信デバイスハンドセット、自動車、電気器具、ウェアラブルなもの、および/または他のデバイスにおけるアプリケーションを含む複数の用途を有する集積回路デバイスのような様々なデバイスの任意のものでインプリメントされ得る。デバイスまたは構成要素として説明された任意の特徴は、1つの集積論理デバイスでまとめて、または、ディスクリートではあるが相互動作可能な複数の論理デバイスとして別々にインプリメントされ得る。ソフトウェアでインプリメントされる場合、本技法は、少なくとも部分的に、命令を含むプログラムコードを備えるコンピュータ読取可能なデータ記憶媒体によって実現され得、これらの命令は、実行されると、上で説明した方法のうちの1つまたは複数を実行する。コンピュータ読取可能なデータ記憶媒体は、パッケージングマテリアルを含み得る、コンピュータプログラム製品の一部を形成し得る。コンピュータ読取可能な媒体は、同期動的ランダムアクセスメモリ(SDRAM)のようなランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、不揮発ランダムアクセスメモリ(NVRAM)、電気的消去可能なプログラマブル読取専用メモリ(EEPROM(登録商標))、FLASHメモリ、磁気または光学データ記憶媒体、等のメモリまたはデータ記憶媒体を備え得る。本技法は、追加的にまたは代替的に、少なくとも部分的に、伝播される信号または波のような、コンピュータによってアクセス、読み取り、および/または実行されることができ、かつ、データ構造または命令の形式でプログラムコードを搬送または通信するコンピュータ読取可能な通信媒体によって実現され得る。
[0123]プログラムコードは、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の同等の集積回路またはディスクリート論理回路のような1つまたは複数のプロセッサを含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示で説明された技法のうちの任意のものを実行するように構成され得る。汎用プロセッサは、マイクロプロセッサであり得るが、代替的に、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、例えば、DSPと、1つのマイクロプロセッサ、複数のマイクロプロセッサ、DSPコアに連結した1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成との組合せとしてインプリメントされ得る。したがって、「プロセッサ」という用語は、本明細書で使用される場合、前述の構造の任意のもの、前述の構造の任意の組合せ、または本明細書で説明された技法のインプリメンテーションに適した任意の他の構造または装置を指し得る。加えて、いくつかの態様では、本明細書で説明された機能性は、符号化および復号するために構成された専用のソフトウェアまたはハードウェア内に提供され得るか、または、複合ビデオエンコーダ−デコーダ(CODEC)に組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で完全にインプリメントされ得る。
[0124]本開示の技法は、ワイヤレスハンドセット、IC、またはICのセット(例えば、チップセット)を含む、幅広い種類のデバイスまたは装置でインプリメントされ得る。様々な構成要素またはユニットは、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するように本開示では説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上で説明したように、様々なユニットは、コデックハードウェアユニットへと組み合わせられるか、適切なソフトウェアおよび/またはファームウェアと併せて、上で説明した1つまたは複数のプロセッサを含む、相互動作するハードウェアユニットの集合体によって提供され得る。
[0125]前述のものは、様々な異なる実施形態に関連して説明されているが、1つの実施形態からの特徴または要素は、本開示の教示から逸脱することなく、他の実施形態と組み合わせられる。しかしながら、それぞれの実施形態間での特徴の組み合わせは、必ずしもそれらに限定されるわけではない。本開示の様々な実施形態が説明されている。これらのおよび他の実施形態は、以下の特許請求の範囲の範囲内である。
[0125]前述のものは、様々な異なる実施形態に関連して説明されているが、1つの実施形態からの特徴または要素は、本開示の教示から逸脱することなく、他の実施形態と組み合わせられる。しかしながら、それぞれの実施形態間での特徴の組み合わせは、必ずしもそれらに限定されるわけではない。本開示の様々な実施形態が説明されている。これらのおよび他の実施形態は、以下の特許請求の範囲の範囲内である。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
[C1]
複数のビデオサンプルを有するビデオ情報をコード化するための装置であって、
1つのグループに配列される複数のビデオサンプルを記憶するように構成されたメモリと、各ビデオサンプルは、ビットサイズBを有し、前記グループは、グループサイズKを有する、
ハードウェアプロセッサと、前記プロセッサは、可変長コード化(VLC)スキームを使用して、ベクトルベースコードを形成するために前記グループ中の前記複数の前記ビデオサンプルをコード化するように構成され、前記ベクトルベースコードは、少なくとも、前記ビットサイズBまたは前記グループサイズKのうちの少なくとも1つに対応するルックアップテーブルのタイプを識別する第1の部分と、前記グループ中の前記複数のビデオサンプルを表す第2の部分とを備える、
を備える装置。
[C2]
前記プロセッサは、
前記グループをインデックス値に変換することと、
前記グループに関連付けられた前記グループサイズKまたは前記ビットサイズBのうちの少なくとも1つに対応する前記タイプのルックアップテーブルを使用して、前記インデックス値をコード番号にマッピングすることと、
前記VLCスキームを使用して、前記ベクトルベースコードを形成するために前記コード番号を符号化することと
を行うようにさらに構成される、C1に記載の装置。
[C3]
前記プロセッサは、
可変長コード化(VLC)スキームを使用して、コード番号を形成するために前記ベクトルベースコードを復号することと、
前記ベクトルベースコードの前記第1の部分によって識別される前記タイプのルックアップテーブルを使用して、前記コード番号をインデックス値にマッピングすることと、
前記インデックス値を前記グループの前記複数のビデオサンプルに変換することと
を行うようにさらに構成される、C1に記載の装置。
[C4]
前記第1の部分は、単項コードフォーマットを使用してコード化される、C1に記載の装置。
[C5]
前記複数のビデオサンプルは、2の補数表現を使用して表される、C1に記載の装置。
[C6]
前記プロセッサが、前記ベクトルベースコードを形成するために前記グループ中の前記複数のビデオサンプルの前記絶対値をコード化するように構成されるような、符号絶対値表現を使用した前記複数のビデオサンプル、C1に記載の装置。
[C7]
前記プロセッサ回路は、前記ビットサイズBが閾値より小さいとき、前記ベクトルベースコードを供給するように構成される、C1に記載の装置。
[C8]
前記プロセッサ回路は、第2のVLCスキームを使用して、前記ベクトルベースコードの前記第1の部分と、少なくとも前記第2の部分のプレフィックス部分とを符号化するようにさらに構成される、C1に記載の装置。
[C9]
前記タイプのルックアップテーブルは、可能なKサイズのグループのセットのうちの前記グループの生起確率に少なくとも部分的に基づく、C1に記載の装置。
[C10]
ビデオ情報をコード化するための方法であって、前記情報は、サンプルのセットを備え、前記方法は、
前記サンプルのセットを1つまたは複数のサンプルベクトルへと区分化することと、前記1つまたは複数のサンプルベクトルのうちの1つのサンプルベクトルは、ビットサイズBに関連付けられたK個のサンプルを備える、
ルックアップテーブルを使用して、前記サンプルベクトルをコード番号にマッピングすることと、前記ルックアップテーブルは、可能な長さKのサンプルベクトルのセットのうちの前記サンプルベクトルの生起確率に少なくとも部分的に基づく、
前記K個のサンプルを表す可変長コード化(VLC)コードを生成するために、VLCスキームを使用して、前記コード番号をコード化することと、前記VLCコードは、少なくとも、前記ルックアップテーブルを識別する第1の部分と、前記サンプルベクトルの前記K個のサンプルを表す第2の部分とを備える、
を備える方法。
[C11]
サンプルは、画素の色成分に対応する、C10に記載の方法。
[C12]
前記サンプルのセットは、ビデオ情報のブロックに関連付けられた量子化された残余に対応する、C10に記載の方法。
[C13]
前記VLCスキームは、ハフマン、算術、指数ゴロム(EG)、およびゴロムライス(GR)のうちの少なくとも1つを備える、C10に記載の方法。
[C14]
前記サンプルベクトルをコード番号にマッピングすることは、前記サンプルベクトルを、前記サンプルベクトルに対応する一意的なインデックス値に変換することと、前記ルックアップテーブルを使用して、前記インデックス値を前記コード番号にマッピングすることとを備える、C10に記載の方法。
[C15]
前記LUTは、前記ビットサイズBまたは前記長さKのうちの少なくとも1つに基づいて選択される、C10に記載の方法。
[C16]
前記第2の部分は、少なくともプレフィックス部分およびサフィックス部分を備え、前記方法は、VLCスキームを使用して、前記第1の部分および前記プレフィックス部分をコード化することをさらに備える、C10に記載の方法。
[C17]
前記第1の部分は、単項フォーマットで表される、C10に記載の方法。
[C18]
前記サンプルのセットは、2の補数表現を使用して表される、C10に記載の方法。
[C19]
複数のビデオサンプルを有するビデオ情報をコード化するための装置であって、
送信のために複数のグループへと分けられる複数のビデオサンプルを記憶するように構成されたメモリと、各グループは、1つまたは複数のビデオサンプルを備える、
ハードウェアプロセッサと、前記プロセッサは、ビデオサンプルの前記複数のグループをコード化するように構成される、ここにおいて、前記複数のグループのうちの第1の複数のグループからのビデオサンプルは、符号絶対値フォーマットを使用してコード化され、前記複数のグループのうちの1つまたは複数の残りのグループは、2の補数フォーマットを使用してコード化される、
を備える装置。
[C20]
前記複数のグループは、n個のグループを備え、前記第1の複数のグループは、前記複数のグループのうちの最初のn−1個のグループを備える、C19に記載の装置。
[C21]
前記1つまたは複数の残りのグループは、前記第1の複数のグループの各グループの少なくとも1つのサンプル値が非ゼロ値に対応する場合にのみ、2の補数フォーマットを使用してコード化される、C19に記載の装置。

Claims (21)

  1. 複数のビデオサンプルを有するビデオ情報をコード化するための装置であって、
    1つのグループに配列される複数のビデオサンプルを記憶するように構成されたメモリと、各ビデオサンプルは、ビットサイズBを有し、前記グループは、グループサイズKを有する、
    ハードウェアプロセッサと、前記プロセッサは、可変長コード化(VLC)スキームを使用して、ベクトルベースコードを形成するために前記グループ中の前記複数の前記ビデオサンプルをコード化するように構成され、前記ベクトルベースコードは、少なくとも、前記ビットサイズBまたは前記グループサイズKのうちの少なくとも1つに対応するルックアップテーブルのタイプを識別する第1の部分と、前記グループ中の前記複数のビデオサンプルを表す第2の部分とを備える、
    を備える装置。
  2. 前記プロセッサは、
    前記グループをインデックス値に変換することと、
    前記グループに関連付けられた前記グループサイズKまたは前記ビットサイズBのうちの少なくとも1つに対応する前記タイプのルックアップテーブルを使用して、前記インデックス値をコード番号にマッピングすることと、
    前記VLCスキームを使用して、前記ベクトルベースコードを形成するために前記コード番号を符号化することと
    を行うようにさらに構成される、請求項1に記載の装置。
  3. 前記プロセッサは、
    可変長コード化(VLC)スキームを使用して、コード番号を形成するために前記ベクトルベースコードを復号することと、
    前記ベクトルベースコードの前記第1の部分によって識別される前記タイプのルックアップテーブルを使用して、前記コード番号をインデックス値にマッピングすることと、
    前記インデックス値を前記グループの前記複数のビデオサンプルに変換することと
    を行うようにさらに構成される、請求項1に記載の装置。
  4. 前記第1の部分は、単項コードフォーマットを使用してコード化される、請求項1に記載の装置。
  5. 前記複数のビデオサンプルは、2の補数表現を使用して表される、請求項1に記載の装置。
  6. 前記プロセッサが、前記ベクトルベースコードを形成するために前記グループ中の前記複数のビデオサンプルの前記絶対値をコード化するように構成されるような、符号絶対値表現を使用した前記複数のビデオサンプル、請求項1に記載の装置。
  7. 前記プロセッサ回路は、前記ビットサイズBが閾値より小さいとき、前記ベクトルベースコードを供給するように構成される、請求項1に記載の装置。
  8. 前記プロセッサ回路は、第2のVLCスキームを使用して、前記ベクトルベースコードの前記第1の部分と、少なくとも前記第2の部分のプレフィックス部分とを符号化するようにさらに構成される、請求項1に記載の装置。
  9. 前記タイプのルックアップテーブルは、可能なKサイズのグループのセットのうちの前記グループの生起確率に少なくとも部分的に基づく、請求項1に記載の装置。
  10. ビデオ情報をコード化するための方法であって、前記情報は、サンプルのセットを備え、前記方法は、
    前記サンプルのセットを1つまたは複数のサンプルベクトルへと区分化することと、前記1つまたは複数のサンプルベクトルのうちの1つのサンプルベクトルは、ビットサイズBに関連付けられたK個のサンプルを備える、
    ルックアップテーブルを使用して、前記サンプルベクトルをコード番号にマッピングすることと、前記ルックアップテーブルは、可能な長さKのサンプルベクトルのセットのうちの前記サンプルベクトルの生起確率に少なくとも部分的に基づく、
    前記K個のサンプルを表す可変長コード化(VLC)コードを生成するために、VLCスキームを使用して、前記コード番号をコード化することと、前記VLCコードは、少なくとも、前記ルックアップテーブルを識別する第1の部分と、前記サンプルベクトルの前記K個のサンプルを表す第2の部分とを備える、
    を備える方法。
  11. サンプルは、画素の色成分に対応する、請求項10に記載の方法。
  12. 前記サンプルのセットは、ビデオ情報のブロックに関連付けられた量子化された残余に対応する、請求項10に記載の方法。
  13. 前記VLCスキームは、ハフマン、算術、指数ゴロム(EG)、およびゴロムライス(GR)のうちの少なくとも1つを備える、請求項10に記載の方法。
  14. 前記サンプルベクトルをコード番号にマッピングすることは、前記サンプルベクトルを、前記サンプルベクトルに対応する一意的なインデックス値に変換することと、前記ルックアップテーブルを使用して、前記インデックス値を前記コード番号にマッピングすることとを備える、請求項10に記載の方法。
  15. 前記LUTは、前記ビットサイズBまたは前記長さKのうちの少なくとも1つに基づいて選択される、請求項10に記載の方法。
  16. 前記第2の部分は、少なくともプレフィックス部分およびサフィックス部分を備え、前記方法は、VLCスキームを使用して、前記第1の部分および前記プレフィックス部分をコード化することをさらに備える、請求項10に記載の方法。
  17. 前記第1の部分は、単項フォーマットで表される、請求項10に記載の方法。
  18. 前記サンプルのセットは、2の補数表現を使用して表される、請求項10に記載の方法。
  19. 複数のビデオサンプルを有するビデオ情報をコード化するための装置であって、
    送信のために複数のグループへと分けられる複数のビデオサンプルを記憶するように構成されたメモリと、各グループは、1つまたは複数のビデオサンプルを備える、
    ハードウェアプロセッサと、前記プロセッサは、ビデオサンプルの前記複数のグループをコード化するように構成される、ここにおいて、前記複数のグループのうちの第1の複数のグループからのビデオサンプルは、符号絶対値フォーマットを使用してコード化され、前記複数のグループのうちの1つまたは複数の残りのグループは、2の補数フォーマットを使用してコード化される、
    を備える装置。
  20. 前記複数のグループは、n個のグループを備え、前記第1の複数のグループは、前記複数のグループのうちの最初のn−1個のグループを備える、請求項19に記載の装置。
  21. 前記1つまたは複数の残りのグループは、前記第1の複数のグループの各グループの少なくとも1つのサンプル値が非ゼロ値に対応する場合にのみ、2の補数フォーマットを使用してコード化される、請求項19に記載の装置。
JP2018546866A 2016-03-08 2017-03-06 ディスプレイストリーム圧縮のためのベクトルベースエントロピーコード化のための装置および方法 Active JP6800991B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201662305380P 2016-03-08 2016-03-08
US62/305,380 2016-03-08
US201662415999P 2016-11-01 2016-11-01
US62/415,999 2016-11-01
US15/449,755 US10666984B2 (en) 2016-03-08 2017-03-03 Apparatus and method for vector-based entropy coding for display stream compression
US15/449,755 2017-03-03
PCT/US2017/020897 WO2017155864A1 (en) 2016-03-08 2017-03-06 Apparatus and method for vector-based entropy coding for display stream compression

Publications (3)

Publication Number Publication Date
JP2019511865A true JP2019511865A (ja) 2019-04-25
JP2019511865A5 JP2019511865A5 (ja) 2020-08-13
JP6800991B2 JP6800991B2 (ja) 2020-12-16

Family

ID=59787516

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018546866A Active JP6800991B2 (ja) 2016-03-08 2017-03-06 ディスプレイストリーム圧縮のためのベクトルベースエントロピーコード化のための装置および方法

Country Status (9)

Country Link
US (1) US10666984B2 (ja)
EP (1) EP3427480B1 (ja)
JP (1) JP6800991B2 (ja)
KR (1) KR102185027B1 (ja)
CN (1) CN108702520B (ja)
BR (1) BR112018067872A2 (ja)
CA (1) CA3012869C (ja)
TW (1) TWI705693B (ja)
WO (1) WO2017155864A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10110931B2 (en) * 2016-04-27 2018-10-23 Aspeed Technology Inc. Variable length coding and decoding methods and devices for grouped pixels
US20180288439A1 (en) * 2017-03-31 2018-10-04 Mediatek Inc. Multiple Transform Prediction
US10855997B2 (en) * 2017-04-14 2020-12-01 Mediatek Inc. Secondary transform kernel size selection
US10706492B2 (en) 2017-09-05 2020-07-07 Texas Instruments Incorporated Image compression/decompression in a computer vision system
KR20220090887A (ko) 2020-12-23 2022-06-30 삼성전자주식회사 이미지 처리 장치 및 이미지 처리 장치의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013508867A (ja) * 2009-10-23 2013-03-07 サンプリファイ システムズ インコーポレイテッド 信号データのブロック浮動小数点圧縮
WO2015191535A2 (en) * 2014-06-09 2015-12-17 Qualcomm Incorporated Entropy coding techniques for display stream compression (dsc)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6909744B2 (en) * 1999-12-09 2005-06-21 Redrock Semiconductor, Inc. Processor architecture for compression and decompression of video and images
US7055018B1 (en) * 2001-12-31 2006-05-30 Apple Computer, Inc. Apparatus for parallel vector table look-up
CA2679995C (en) * 2007-03-13 2014-06-03 Nokia Corporation System and method for video encoding and decoding using sub-vectors
US20100098156A1 (en) * 2008-10-16 2010-04-22 Qualcomm Incorporated Weighted prediction based on vectorized entropy coding
US9516316B2 (en) * 2011-06-29 2016-12-06 Qualcomm Incorporated VLC coefficient coding for large chroma block
US10402166B2 (en) * 2016-02-05 2019-09-03 Sony Corporation System and method for processing data in an adder based circuit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013508867A (ja) * 2009-10-23 2013-03-07 サンプリファイ システムズ インコーポレイテッド 信号データのブロック浮動小数点圧縮
WO2015191535A2 (en) * 2014-06-09 2015-12-17 Qualcomm Incorporated Entropy coding techniques for display stream compression (dsc)

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
BAI-JUE SHIEH, TERNG-YIN HSU AND CHEN-YI LEE: "A New Approach of Group-Based VLC Codec System", ISCAS 2000 - IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS, JPN6020040888, 2000, pages 609 - 612, XP010503674, ISSN: 0004374605 *
BAI-JUE SHIEH, YEW-SAN LEE AND CHEN-YI LEE: "A New Approach of Group-Based VLC Codec System with Full Table Programmability", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, vol. 11, no. 2, JPN6020040890, February 2001 (2001-02-01), pages 210 - 221, XP011014167, ISSN: 0004374606 *
FREDERICK WALLS AND ALEXANDER (SANDY) MACINNIS: "BDC-1: A ROBUST ALGORITHM FOR DISPLAY STREAM COMPRESSION", PCS 2013, JPN6020040889, 2013, pages 434 - 437, XP032567035, ISSN: 0004374608, DOI: 10.1109/PCS.2013.6737776 *
PEI-YIN CHEN, YI-MING LIN AND MIN-YI CHO: "An Efficient Design of Variable Length Decoder for MPEG-1/2/4", IEEE TRANSACTIONS ON MULTIMEDIA, vol. 10, no. 7, JPN6020040892, December 2008 (2008-12-01), pages 1307 - 1315, XP011346547, ISSN: 0004374607, DOI: 10.1109/TMM.2008.2004909 *

Also Published As

Publication number Publication date
CA3012869A1 (en) 2017-09-14
JP6800991B2 (ja) 2020-12-16
TW201737706A (zh) 2017-10-16
KR102185027B1 (ko) 2020-12-01
TWI705693B (zh) 2020-09-21
US20170264918A1 (en) 2017-09-14
KR20180118653A (ko) 2018-10-31
CA3012869C (en) 2022-03-29
EP3427480B1 (en) 2023-09-13
CN108702520A (zh) 2018-10-23
US10666984B2 (en) 2020-05-26
BR112018067872A2 (pt) 2019-01-02
EP3427480A1 (en) 2019-01-16
CN108702520B (zh) 2020-12-25
WO2017155864A1 (en) 2017-09-14

Similar Documents

Publication Publication Date Title
EP3632114B1 (en) Substream multiplexing for display stream compression
KR102229045B1 (ko) 디스플레이 스트림 압축 (dsc) 을 위한 엔트로피 코딩 기법들
KR102120571B1 (ko) 넌-4:4:4 크로마 서브-샘플링의 디스플레이 스트림 압축 (dsc) 을 위한 엔트로피 코딩 기법들
KR102342660B1 (ko) 디스플레이 스트림 압축을 위한 서브스트림 멀티플렉싱
US10631005B2 (en) System and method for coding in block prediction mode for display stream compression (DSC)
JP6800991B2 (ja) ディスプレイストリーム圧縮のためのベクトルベースエントロピーコード化のための装置および方法
JP2018531556A6 (ja) 非4:4:4クロマサブサンプリングのディスプレイストリーム圧縮(dsc)のためのエントロピーコーディング技法
JP2019512970A (ja) ディスプレイストリーム圧縮における量子化パラメータの適応計算のための装置および方法
JP2017515374A (ja) ディスプレイストリーム圧縮(dsc)のための平坦度検出のためのシステムおよび方法
JP2018515015A (ja) ディスプレイストリーム圧縮(dsc)のための量子化パラメータ(qp)更新分類
JP2019514290A (ja) ディスプレイストリーム圧縮用の知覚的量子化パラメータ(qp)重み付けのための装置および方法
JP2017517190A (ja) ディスプレイストリーム圧縮(dsc)用のパターンモードでのコーディングのためのシステムおよび方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200210

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200706

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200706

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20201019

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201021

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201027

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201125

R150 Certificate of patent or registration of utility model

Ref document number: 6800991

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250