(58)【調査した分野】(Int.Cl.,DB名)
グラフィック処理ユニット(300)における前記メモリ(340)からバッファメモリ(430)へデータバス(380)により前記組み合わせシーケンス(70)を送信する工程(S10)をさらに有することを特徴とする請求項1に記載の方法。
前記メモリ(140)からバッファメモリ(430)へデータバス(380)により前記組み合わせシーケンス(70)を送信するよう構成された出力ユニット(150)をさらに有することを特徴とする請求項6に記載の装置。
【発明を実施するための形態】
【0019】
図中、同一の図中符号は、同様の要素又は対応する要素に対して使用される。
【0020】
実施形態は、一般に画像処理に関し、特に画素値バッファの少なくとも一部を構成する画素のタイルの符号化及び復号化に関する。それにより実施形態は、画素値バッファをバッファメモリに書き込んで更新する際に書き込み帯域幅を更に低減するために、バッファ圧縮に対する従来技術をタイルアーキテクチャと組み合わせる。タイルの符号化及び復号化は、符号化タイルの種々の部分を同時に復号化できるようにすることで復号化時間の短縮を可能にする特定の方法で更に実行される。
【0021】
実施形態によると、画素のタイルは、画素値バッファの少なくとも一部を表す。従って、画素値バッファは、1つ又は一般に複数、すなわち少なくとも2つのこの技術分野においてタイルで示される重なり合わない部分に分割される。特に非常に小さな画素値バッファの場合、単一のタイルが画素値バッファ全体を占有できる。しかし、最も実際的な実施例において、画素値バッファは、別個の重なり合わないタイルに分割されるものとして考えられる。
【0022】
しかしながら、タイル全体を符号化することは、一般に、長時間の符号化及び復号化、並びに符号化効率の低下により実現不可能である。従って、タイルを複数の画素からなる多数のブロックに分割したいという要望があり、その場合、画素数に関するそのようなブロックのサイズは、符号化及び復号化の観点から効率的に処理されるように選択される。
【0023】
しかしながら、符号化及び復号化の効率に対してタイルを多数のより小さなブロックに分割することにより、データ転送に関する問題が発生する。結果として得られる符号化表現のシンボルサイズ又はシンボル長は、一般に、データバスを介した効率的な転送にはあまり適応しない。従って、グラフィックスシステムのデータバスは、一般に、符号化及び復号化の観点から所望されるものより長いシンボル長に対して効率的なバースト転送を実現するように設計される。
【0024】
実施形態において、多数のブロックを符号化することで取得されたシンボルのシーケンスを、データバスを介して効率的に転送可能な組み合わせシーケンスに合同編成することによりこれらの相反する要望を解決するが、シンボルの個別のシーケンスは、符号化及び復号化の要件に非常に適応するサイズを有する。
【0025】
実施形態に従えば、組み合わせシーケンスへのシンボルのシーケンスの合同編成は、ブロックを符号化するために可変長符号化方式が採用される場合でもシンボルの個別のシーケンスを同時に復号化できるようにする方法で実行される。
【0026】
可変長符号化は、シンボルのシーケンスが、単一の固定のシンボル長を有さないが種々のシンボル長を採用できることを示唆する。シンボルのシーケンスが組み合わせシーケンスにおいて開始及び終了する場所について復号器が全く知らないため、組み合わせシーケンスにおいて互いに隣接するシンボルのシーケンスを編成することにより、復号化側における特定のブロックのシンボルのシーケンスへのランダムアクセスを防止する。従って、組み合わせシーケンスにおいてシンボルのシーケンス毎にそれぞれの開始シンボル及び終了シンボルを識別する唯一の手段は、最上位シンボルから開始して最下位シンボルに向けて継続して組み合わせシーケンスを構文解析して復号化することである。しかし、そのような手法では、シンボルの個別のシーケンスを同時に復号化できず、且つ単一の復号器のみが組み合わせシーケンス毎に動作できることを示唆している。
【0027】
実施形態は、多数の復号器が組み合わせシーケンスに対して同時に動作できるようにすることで単一の連続した復号化ラインと比較して復号化遅延時間を大幅に短縮するように、組み合わせシーケンスにおけるシンボルのシーケンスの特定の合同編成によりこの問題を解決する。
【0028】
実施形態によると、各画素はそれぞれの画素値を有する。種々のそのような画素値は、特定の適応例に依存して、この技術分野において使用される。そのような画素値の一般的な例は、色値であり、より好ましくは複数の構成要素から成る色値である。後者の場合、画素の色は多数の色成分から構成される。そのような色の一般的な例は、3つの色成分を有する赤色、緑色、青色(RGB)である。YUV、YCoCg又はYCrCb等の他の複数の構成要素から成る色は、この技術分野においても知られており、実施形態に従って使用可能である。
【0029】
実施形態に従って使用可能な画素値の別の例は、奥行き値又はいわゆるZ値である。この特徴は、特定の画素に対する眼までの奥行き又は距離を表し、レンダリング中に実際にどの画素が表示されるのかを制御する。
【0030】
タイルは、カラーバッファ又はデプスバッファの少なくとも一部を構成できる。
【0031】
カラーバッファ及びデプスバッファに加えて実施形態を適用できる画素値バッファの別の例は、いわゆるステンシルバッファである。ステンシルバッファは、レンダリングの領域を制限するために使用可能であり、この技術分野においてステンシリングとして示される。ステンシルバッファは、レンダリングパイプラインにおいてデプスバッファと組み合わせても使用可能である。例えば、ステンシル値は、デプステストに不合格又は合格する全ての画素に対して自動的に更新、すなわち増加又は減少される。ステンシルバッファは、シャドウ、複雑なプリミティブ間の交点のオンラインでの描画又は強調表示等の種々の効果の実現に応用される。そのような場合、タイルは、ステンシルバッファの少なくとも一部を構成でき、画素値は、ステンシルバッファのステンシル値である。
【0032】
実際には、画素値は、画素毎に割り当てられることが望ましいあらゆるプロパティであり、複数の画素は複数のタイルにグループ化される。グラフィックスシステム内でプログラマブルシェーダーを使用することにより、種々の画素値バッファの作成と使用を可能にしており、実施形態は、そのような画素値バッファにも適用可能である。例えば、遅延レンダリングにおいて、法線は、各画素が法線(X、Y、Z座標又は単位法線が採用される場合に2つの座標しか必要ない)を表すようにバッファに書き込まれる。また、そのような適応例はその実施形態では利点がある。
【0033】
符号化
図1は、画素のタイルを符号化する方法の一実施形態を示すフローチャートであり、各画素はそれぞれの画素値を有する。この方法はステップS1において開始し、少なくとも複数の画素の第1のブロックと複数の画素の第2のブロックは可変長符号化される。第1のブロックはタイルの第1のサブセットを構成し、第2のブロックは、そのタイルの第2の異なるサブセット、すなわち第2の重なり合わないサブセットを同様に構成する。ステップS1の可変長符号化は、第1のブロックにおける複数の画素の画素値の符号化表現としてシンボルの第1のシーケンスを生成する。ステップS1は、第2のブロックにおける複数の画素の画素値の符号化表現としてシンボルの第2のシーケンスを更に生成する。シンボルの第1のシーケンスと第2のシーケンスは、データ符号化内で従来より採用されているシンボルアルファベットのうちのいずれかに従うものであってよい。例えば、シンボルのアルファベットは二進のアルファベットであってよい。そのような場合、シンボルは0
bin又は1
binであってよい。使用可能なシンボルの他のアルファベットは、16進シンボル、すなわち0−9
hex及びA−F
hex、10進シンボル、すなわち0−9
decを含む。好適な適応例において、ビットのシーケンスを含む二進アルファベットは、シンボルアルファベットの例示的な一実施形態として使用される。本明細書において使用されるようなシンボルは、ブロックの終了等の特定の事象を示すために採用されることもあるVLCシンボル、すなわち可変長符号化シンボルを表さない。
【0034】
可変長符号化は、従来カラーバッファデータ又はデプスバッファデータ、あるいは他の画素値バッファを符号化するために採用されたあらゆる可変長符号化方式に従って実行可能である。しかし、これらの可変長符号化方式の従来の使用法と比較して重要な差異は、ここでそれらが完全な画素値バッファではなくタイルのブロックに対して動作することである。従って、実施形態は、タイルアーキテクチャとバッファの符号化又は圧縮との組合せに基づいている。実施形態に従って採用可能な適切な可変長符号化方式の例は、非特許文献1、非特許文献2、国際公開第2009/092455号、国際公開第2009/092454号及び国際公開第2009/093947号において開示されている、可変長符号化方式に対するそれらの教示は、ここで参照により本明細書に組み込まれる。しかし、実施形態は、いずれの特定の可変長符号化方式にも限定されず、画素値を有する画素のブロックをシンボルのシーケンスに符号化できるあらゆる既知のそのような可変長符号化方式と組み合わせて適用及び使用可能である。
【0035】
図2はタイル1の概略図であり、タイル1を画素6のより小さな単位に分割できる方法の一例を示す。タイル1は、非限定的であり、例示的な例において、32画素×32画素のサイズを有する。そのような場合、タイル1は、例えば32画素×8画素の4つの垂直スライス2に分割可能である。オプションの手法において、スライス2は、結果として例えば16画素×8画素の2つのチャンク3に分割される。チャンク3は、平均でデータバスを介した効率的なバースト転送を可能にするシンボル長を有するチャンク3の符号化表現としてシンボルのシーケンスを生成する画素6数に関するサイズを有することが好ましい。しかし、チャンク3における画素6の符号化表現のシンボル長が効率的なバースト転送に適応可能であるが、結果として得られる相対的に長いシンボル長は、復号器遅延時間の観点から最適ではない。実施形態によると、従って、チャンク3は、画素6の複数のブロック4、5に分割されるものとして考えられる。一例において、そのようなブロック4、5は、4画素×4画素を含むことができ、結果としてチャンク3毎に8個のブロック4、5が得られる。
【0036】
画素6毎に1クロックサイクルの割合で符号化を実行できる場合、スライス2の符号化及び復号化は、この例において結果的に32×8=256クロックサイクルの遅延時間になる。しかし、復号化のために最大64クロックサイクルしか使用可能でないことは稀である。従って、効率的な復号化を達成するという点で、スライス2は大きすぎる可能性がある。一方、4×4=16画素のブロック4、5は、この例において復号化のために16クロックサイクルしか必要ないだろう。しかし、ブロック4、5の符号化表現のシンボル長は、一般に、効率的なバースト転送に対しては小さすぎる。実際に、各画素が色成分毎に8ビットを有するRGB色値と関連付けられる場合、ブロック4、5の圧縮されていないシーケンスでさえ結果として4×4×3×8=384シンボル又はビットとなる。しかし、これは、一般に4サイクルで512ビットを転送できてもよい効率的なバーストサイズに対しては既に小さすぎる。可変長符号化が更に結果として例えば1/6の圧縮となりうる場合、結果として得られるビット長はたった64ビットである。これは、効率的なバースト転送に対してはあまりにも小さすぎる。
【0037】
しかし、例えば8個のブロック4、5のチャンク3は、非圧縮の場合には結果として8×384=3072ビットの総ビット長となる。圧縮が平均で1/6となる場合、総ビット長は、本発明の例においてバースト転送に対して最適化される512ビットとなる。従って、タイル1は、データバスを介して転送される場合に少なくとも2つのブロック4、5のチャンク3において個々に可変長符号化されるが共に処理される複数のより小さなブロック4、5に分割されるという利点がある。
【0038】
図1の方法の次のステップS2は、可変長符号化ステップS1から取得された第1のシーケンスのシンボルと第2のシーケンスのシンボルを合同編成にする。これらのシンボルはそれぞれ、第1のシーケンスと第2のシーケンスに属するシンボルの読出しを容易にするために、特定の方法でシンボルの組み合わせシーケンスに組み合わされる。従って、第1のシーケンスのシンボルは、組み合わせシーケンスから第1の読出し方向、すなわちデフォルトの読出し方向に読出し可能である。しかし、第2のシーケンスのシンボルの少なくとも一部は、組み合わせシーケンスから第1の読出し方向とは逆の第2の読出し方向に読出し可能である。この特定のシンボルの合同編成により、第1のシーケンス又は第2のシーケンスに属するそれぞれのシンボルを同時に読出せるようになるため、第1のシーケンスと第2のシーケンスを同時に復号化できるようになる。可変長符号化の結果第1のシーケンス及び第2のシーケンスが得られる場合でも、同時に読出し、復号化できる。従って、第1のシーケンスと第2のシーケンスのそれぞれの長さを事前に認識していなくても、同時に読出し、復号化できる。
【0039】
次のステップS3は、組み合わせシーケンスをメモリに格納する。一般にメモリは、いわゆるオンチップメモリであり、特にグラフィカル処理ユニットのオンチップメモリである。そのような場合、ステップS1〜S3の方法は、オンチップメモリに格納されたデータに対して動作でき、シンボルの組み合わせシーケンスを生成するために、外部メモリへの時間のかかる外部メモリへのフェッチは必要ない。
【0040】
ステップS1〜S3の方法は、タイルの前のチャンクのブロック等の多数のブロックに対して共に実行される。多数のブロックの次のチャンクが処理されると、ステップS1〜S3の動作は、そのチャンクの多数のブロックに対してもう1度実行される。特定の実施例に依存して、少なくとも部分的に同時に少なくとも2つのチャンクを処理することも可能である。どちらの場合でも、ステップS1〜S3のループは、全タイルを符号化するために同時に又は順次十分な回数実行されることが好ましい。タイルのサイズに依存して、これは、タイルの全てのブロックが符号化されるまでステップS1〜S3のループが1回又は一般には複数回実行可能であることを示す。
【0041】
図3は、
図1の方法の更なるステップを示すフローチャートである。この方法は、
図1のステップS3から続く。次のステップS10は、グラフィカル処理ユニットのメモリからディスプレイユニットのバッファメモリあるいはそれに接続されたバッファメモリに組み合わせシーケンスを送信する。組み合わせシーケンスの送信は、多数のブロックから取得されたシンボルのシーケンスを組み合わせることによりバースト転送が効率的な方法で実行可能である。シンボルの1つのそのようなシーケンスは、一般に、効率的なバースト転送をするにはサイズが小さすぎる。
【0042】
実施形態のタイル手法は、バッファメモリにおける各画素を1回しか書き込む必要がないために帯域幅消費量が減少することを示す。また、符号化及びそれにより圧縮された画素値データをバッファメモリに転送できるため、画素のブロックの可変長符号化により、この帯域幅消費量は更に減少する。
【0043】
次に、種々の実現例の実施形態を更に詳細に説明する。
【0044】
図4は、
図1の合同編成ステップの特定の一実施形態を示すフローチャートである。この方法は、
図1のステップS1から続く。次のステップS20は、組み合わせシーケンスの第1の部分において第1の読出し方向に第1のシーケンスのシンボルを編成する。ステップS21は、組み合わせシーケンスにおける第2のシーケンスのシンボルを編成する。これらのシンボルは、組み合わせシーケンスの後続部分である第2の部分において第1の読出し方向とは逆の第2の読出し方向に編成される。
【0045】
図5は、本実施形態を更に詳細に示す。組み合わせシーケンス70は、第1のシーケンス10のシンボルを含む第1の部分7Aと、後続の第2の部分8Aとを含む。これは、組み合わせシーケンス70の最上位シンボルが、
図5の左側に対して見出され、一般に第1のシーケンス10の最上位シンボルと一致することを意味する。第2の部分8Aは、第1の読出し方向に従って第1の部分7Aの後に続く。第1のシーケンス10とは明らかに対照的に、第2のシーケンス20におけるシンボルは、第1の読出し方向とは逆の第2の読出し方向に編成される。
図5において、それぞれの読出し方向を矢印で示す。第2のシーケンス20に対して第1の読出し方向とは逆の第2の読出し方向を使用することは、第2のシーケンス20の最上位シンボルが組み合わせシーケンス70の最下位シンボルになることを意味する。
【0046】
図5に示されたように第1のシーケンス10と第2のシーケンス20におけるシンボルを逆の読出し方向に編成することにより、双方のシーケンス10、20を同時に読出し、復号化できるようになる。従って、第1のシーケンス10のシンボルは、組み合わせシーケンス70の最上位シンボルから開始し、組み合わせシーケンス70の最下位シンボルに向けて読出しを続けるが、第1のシーケンス10の最終部に到達すると読出しを停止するようにして読み出される。あるいは、第2のシーケンス20におけるシンボルは、本実施形態において、組み合わせシーケンス70の最下位シンボルから開始し、組み合わせシーケンス70の最上位シンボルに向けて読出しを続け、第2のシーケンス20の最終部において読出しを停止するようにして読み出される。従って、組み合わせシーケンス70における2つのシーケンス10、20に対するそれぞれの開始位置を見つけるために、第1のシーケンス10と第2のシーケンス20それぞれのシンボル長の情報は必要ない。
【0047】
組み合わせシーケンスにおける2つの逆の読出し方向を利用するこのような概念は、3つ以上のブロックが可変長符号化され且つ結果として得られるシンボルのシーケンスが組み合わせシーケンスに合同編成される場合にも適用可能である。
【0048】
そのような場合、タイルのそれぞれのサブセット又は一部分を構成する画素のN個のブロックは、可変長符号化されてN個のブロックにおける画素値の符号化表現としてシンボルのN個のシーケンスを形成する。ここで、パラメータNは3以上の整数である。N個のシーケンスのシンボルは組み合わせシーケンスに合同編成される。
【0049】
一実施形態において、N個のシーケンスのうちの最初のシーケンスにおけるシンボルが第1の読出し方向に読出し可能であり、且つN個のシーケンスのうちの最後のシーケンス、すなわちシーケンス番号Nのシンボルが第1の読出し方向とは逆の第2の読出し方向に読出し可能であるように、シンボルは組み合わせシーケンスに合同編成される。残りのシーケンスの全ての偶数シーケンスが第1の読出し方向とは逆の第2の読出し方向に読出し可能であるのに対し、N個のシーケンスの残りのシーケンスの全ての奇数シーケンスのシンボルが第1の読出し方向に読出し可能であるように、残りの(N−2)個のシーケンスのシンボルは組み合わせシーケンスに編成される。
【0050】
従って、この実施形態において、(N−1)個の最初のシーケンスのシンボルは、互いに順番に且つ交互の読出し方向に編成される。最後のシーケンスのシンボルは、第1の方向とは逆の第2の方向に常に読出し可能であることが好ましい。そのような例において、組み合わせシーケンスが奇数のシーケンスを含む場合、最後の2つのシーケンスが第1の方向とは逆の第2の方向に編成されたシンボルを有するのに対し、Nが偶数の場合、読出し方向は、組み合わせシーケンスにおける全てのシーケンスに対して交互になる。
【0051】
シーケンス番号N、すなわち最後のシーケンスのシンボルが第1の読出し方向とは逆の第2の読出し方向に読出し可能であるように、N個のシーケンスのシンボルを組み合わせシーケンスに合同編成するものとして上述の実施形態を規定できる。N個のシーケンスのシーケンス番号2m+1のシンボルは、第1の読出し方向に読出し可能である。N個のシーケンスのシーケンス番号2nのシンボルは、第1の読出し方向とは逆の第2の読出し方向に読出し可能である。
【0052】
パラメータmは整数であり、かつ、m∈[0,(N−2)/2]、即ち、m=0,……,[(N−2)/2]であり、[…]は床関数を示す。本明細書において、整数は、自然数の負数と共にゼロを含む自然数に対応する。しかし、mは閉区間[0,(N−2)/2]から選択された整数であるため、負数にはなり得ない。例えば、N=3はm=0を与え、N=4はm=0、1を与え、N=5はm=0、1を与え、N=6はm=0、1、2を与える等である。パラメータnは整数であり、かつ、n∈[1,(N−1)/2]である。従って、N=3はn=1を与え、N=4はn=1を与え、N=5はn=1、2を与え、N=6はn=1、2を与える等である。
【0053】
シーケンスが正しい順序で提供されるように、N個のシーケンスにおけるシンボルは組み合わせシーケンスに合同編成されることが好ましい。従って、シーケンス番号iは、組み合わせシーケンスにおいてシーケンス番号i+1に先行する。ここで、i=1,2,……,N−1である。
【0054】
先に提示された実施形態において、組み合わせシーケンスにおける最初のシーケンス及び最後のシーケンスのシンボルは、組み合わせシーケンスから同時に読出し、復号化可能である。しかし、最初のシーケンスと最後のシーケンスのそれぞれの最終部、すなわち他のシーケンスとの組み合わせシーケンスにおける開始位置は、何らかの追加情報を提供しなければ認識されない。
【0055】
一実施形態において、そのような追加情報は提供されない。そのような場合、第1のラウンドにおいて、最初のシーケンスと最後のシーケンスは読出し、復号化可能である。復号化には、更なるシーケンスの読出しと復号化のために少なくとも1つの更なるラウンドが必要である。しかし、そのような場合、第2のシーケンスは第1のシーケンスと同一の第1の読出し方向に配置され、最後から2番目のシーケンスは、最後のシーケンスとして第1の読出し方向とは逆の第2の読出し方向に提供される。それに対応して、組み合わせシーケンスがシンボルの3つのシーケンスを含む場合、最初の3つが第1の読出し方向に配置されることが好ましいのに対し、最後の3つは第1の読出し方向とは逆の第2の読出し方向に配置されることが好ましい。そのような場合、3つの復号化ラウンドは、組み合わせシーケンスにおける全てのシーケンスを復号化するために必要である。
【0056】
別の一実施形態において、少なくとも1つのポインタは、追加情報として提供され、第1のラウンド中に組み合わせシーケンスにおける中間シーケンスの読出しと復号化も容易にする。本実施形態を
図6に更に詳細に示す。この方法は、
図1のステップS2から継続する。次のステップS30は、組み合わせシーケンスにおける中間シーケンスの最上位シンボルを規定する少なくとも1つのポインタを判定する。ステップS30は、各々がそれぞれの中間シーケンスの最上位シンボルを規定する1つ以上のそのようなポインタを判定する。ステップS30で判定されたポインタの実際の数は、パラメータN、すなわち組み合わせシーケンスにおけるシーケンスの総数に依存する。Nが奇数の場合、ステップS30は、(N−1)/2個のポインタ、即ち、例えばN=3の場合に1個のポインタ、N=5の場合に2個のポインタを判定することを含むことが好ましい。同様に、Nが偶数の場合、ステップS30は、N/2−1個のポインタ、即ち、例えばN=4の場合に1個のポインタ、N=6の場合に2個のポインタを判定することが好ましい。(N−1)/2個又はN/2−1個のポインタのポインタ番号kは、組み合わせシーケンスにおけるシーケンス番号2kの最上位シンボル位置を規定する。例えば、これは、第1のポインタが最上位シンボルを識別することで組み合わせシーケンスにおけるシーケンス番号2の開始を識別し、且つ第2のポインタがシーケンス番号4の最上位シンボルを識別することなどを意味する。パラメータkは整数であり、Nが奇数の場合にはk∈[1,(N−1)/2]であり、Nが偶数の場合にはk∈[1,N/2−1]である。
【0057】
図7A〜
図7Dは、N=3〜6である組み合わせシーケンス70を示す。
図7Aにおいて、組み合わせシーケンス70は、シンボルの3つのシーケンス10、20、30を含む。第1のシーケンス10のシンボルが第1の読出し方向に読出し可能であるのに対し、第2のシーケンス20と最後のシーケンス30のシンボルは、第1の読出し方向とは逆の第2の読出し方向に読出し可能である。ポインタ11は、組み合わせシーケンス70に対して決定され、第2のシーケンス20の最上位シンボル位置を規定する。
【0058】
図7Bは、組み合わせシーケンス70における4つのシーケンス10、20、30、40を含む例を示す。第1のシーケンス10と第3のシーケンス30が第1の読出し方向にシンボルを有するのに対し、第2のシーケンス20と最後のシーケンス40におけるシンボルは第1の読出し方向とは逆の第2の読出し方向に読出し可能である。ポインタ11により、第2のシーケンス20の最上位シンボル位置を識別できるようになる。更にポインタ11により、第3のシーケンス30の最上位シンボル位置を識別できるようになる。従って、第2のシーケンス20と第3のシーケンス30が逆の方向に読出し可能であるため、第3のシーケンス30の最上位シンボルは、この実施形態においては、第2のシーケンス20の最上位シンボルの後の組み合わせシーケンス70における次のシンボル位置を占有する。これは、ポインタ11が組み合わせシーケンス70におけるシンボル位置S
1の方向を指し示す場合(第1の読出し方向に従って)、第3のシーケンス30の最上位シンボルがシンボル位置S
1+1を占有することを意味する。従って、ポインタ11により、この例において第2のシーケンス20と第3のシーケンス30の双方の開始を識別できるようになる。あるいは、ポインタ11は、第3のシーケンス30の最上位シンボルに対応する組み合わせシーケンス70におけるシンボル位置S
1の方向を指し示す。第2のシーケンス20の開始位置は、読出し方向に従って組み合わせシーケンス70における先行するシンボル位置S
1−1となる。
【0059】
図7Cは、
図7Bと比較して1つの更なるシーケンス50を有する。第1のシーケンス10と第3のシーケンス30のシンボルが第1の読出し方向に読出し可能であるのに対し、第2のシーケンス20と第4のシーケンス40と最後のシーケンス50とは第1の方向とは逆の第2の方向に読出し可能である。第1のポインタ11は、
図7Bの例と同様に第2のシーケンス20と第3のシーケンス30の開始を規定する。第2のポインタ13は、
図7Cにおいて組み合わせシーケンス70に対しても決定される。第2のポインタ13は、第4のシーケンス40の最上位シンボル位置を規定する。
【0060】
図7Dにおいて、第1の読出し方向は、第1のシーケンス10と第3のシーケンス30と第5のシーケンス50とにより採用される。残りのシーケンス、すなわち第2のシーケンス20と第4のシーケンス40と第6のシーケンス60とにおけるシンボルは、第1の読出し方向とは逆の第2の読出し方向に読出し可能である。上述したように、第1のポインタ11は、第2のシーケンス20と第3のシーケンス30の開始を規定する。第2のポインタ13により、第4のシーケンス40の開始だけではなく、第5のシーケンス50の開始も識別できるようになる。そのような場合、第2のポインタ13は、組み合わせシーケンス70内の第4のシーケンス40の最上位シンボル位置S
2を規定することが好ましい。そのような場合、第5のシーケンス50の最上位シンボル及び開始は、第1の読出し方向に従って組み合わせシーケンス70における次のシンボル位置S
2+1であることが好ましい。
【0061】
図7A〜
図7Dにおける組み合わせシーケンス70に対する1つ以上のポインタ11、13の決定と種々の読出し方向でのシンボルの特定の編成により、組み合わせシーケンス70の全てのシーケンス10、20、30、40、50、60を同時に読出し、復号化できる。それにより、全組み合わせシーケンス70を復号化するために並列の復号器と共に単一の復号化ラウンドを使用できるため、復号化側の遅延時間は最小限になる。
【0062】
図7A〜
図7Dは、可変長符号化の結果、すなわち全てのシーケンス10、20、30、40、50、60が必ずしもシンボルの数に関して同一のサイズを有さなくてもよいことを更に示している。
【0063】
図7A及び
図7Cに最適に示されるように、ポインタ11、13が採用される場合、組み合わせシーケンス70の最後のシーケンス30、50は、必ずしも第1の読出し方向とは逆の第2の読出し方向に編成されなければならないことはない。そのような場合、
図7Aのポインタ11及び
図7Cのポインタ13は、最後のシーケンス30、50の最上位シンボルのシンボル位置に先行するシンボル位置の方向を指し示すことにより、最後のシーケンス30、50の開始位置を規定できる。
【0064】
しかし、復号化側が偶数Nを含む組み合わせシーケンスに対してだけではなく第1の方向とは逆の第2の方向に読み出すことにより常に最後のシーケンスを取り出するように予め設定可能であるため、一般に第1の方向とは逆の第2の方向に従って常に最後のシーケンスを有することが好ましい。また、第1の方向とは逆の第2の方向に最後のシーケンスを有することは、ポインタが採用されない場合でもシンボルの少なくとも2つのシーケンスが組み合わせシーケンスから読出し可能であることを示唆する。
【0065】
ステップS30の一実施形態において、ポインタは、組み合わせシーケンスにおけるシーケンス番号2kの最上位シンボルのシンボル位置に対応する値を有するように決定される。例えば、組み合わせシーケンスの長さが最大3072ビットである場合、ポインタは12ビットとなる。しかし、ポインタが独立していないという事実を使用することにより、ポインタのサイズを小さくできる。従って、第2のポインタ及び更なるポインタのシンボル位置は、第1のポインタ及び前のポインタのビット位置より小さくなり得ない。別の一実施形態において、ポインタは、必ずしも組み合わせシーケンスにおける絶対位置ではなく、前のポインタに対するシンボル位置に等しい。
【0066】
そのような場合、第1のポインタは、第2のシーケンスの最上位シンボルのシンボル位置に等しいようにステップS30で決定される。ステップS30は、組み合わせシーケンスにおけるシーケンス番号2j+2の最上位シンボルのシンボル位置とシーケンス番号2jの最上位シンボルのシンボル位置との差に等しいポインタ番号j+1を判定することを更に含む。これは、
図7C及び
図7Dから分かるように、第2のポインタ13が組み合わせシーケンス70における第4のシーケンス40と第2のシーケンス20の最上位シンボルのシンボル位置の差に等しくなることを意味する。パラメータjは整数であり、Nが奇数の場合にj∈[1,(N−2)/2]、(N−1)/2≧2であり、Nが偶数の場合に j∈[1,(N−1)/2−1]、N/2−1≧2である。
【0067】
この実施形態において、各ポインタを個々に判定する場合と比較して、ビット数又はシンボル数に関する第2のポインタ及び更なるポインタの長さを短縮できる。
【0068】
ステップS30で決定された少なくとも1つのポインタは、ステップS31でメモリに格納される。このメモリは、グラフィカル処理ユニットのオンチップメモリであるという利点があり、組み合わせシーケンスが格納される同一のメモリであることが好ましい。ステップS31でポインタをメモリに格納することは、メモリが2つ以上の組み合わせシーケンスを含むことができる場合にポインタが属する組み合わせシーケンスを識別できるような方法で実行される。
【0069】
別の又は更なる一実施形態において、ある特定のシンボル位置の方向を指し示すようにポインタを制限することにより、ポインタのサイズを更に縮小できる。例えば、強制的に組み合わせシーケンスのポインタが組み合わせシーケンスにおける偶数のシンボル位置又は奇数のシンボル位置の方向のみを指し示すようにすることにより、ポインタの長さを短縮できる。これは、シーケンスの少なくとも1つの開始位置を移動させるために組み合わせシーケンスに追加されるいわゆるパディングシンボルを使用することにより可能である。これは、4、8又は他の何らかの固定の数で除算可能なシンボル位置及びアドレスのみを指し示すことができるようポインタを制限するように更に拡張可能である。
【0070】
図8は、この概念を示すフローチャートである。この方法は、
図1のステップS2から継続する。次のステップS40は、少なくとも1つのパディングシンボルを組み合わせシーケンスに追加する。ステップS40は、組み合わせシーケンスにおけるシーケンス番号2k−1の最下位シンボルとシーケンス番号2kとの間に少なくとも1つのパディングシンボルを追加することを含むことが好ましい。それにより、少なくとも1つのパディングシンボルは、既に偶数又は奇数のシンボル位置にない限り、シーケンス番号2kの最上位シンボルのシンボル位置を強制的に組み合わせシーケンスにおける偶数のシンボル位置又は奇数のシンボル位置にする。従って、ポインタが偶数(又は奇数)のシンボル位置においてのみ開始すると判定される場合、組み合わせシーケンスにおける第2及び第4等のシーケンス番号2kの最上位シンボルのシンボル位置が調べられる。シンボル位置が偶数(又は奇数)の場合、パディングシンボルは追加されない。しかし、シンボル位置が代わりに奇数(又は偶数)になる場合、少なくとも1つのパディングシンボルは、組み合わせシーケンスにおける現在のシーケンス番号2kと前のシーケンス番号2k−1の最下位シンボルの間に追加される。それにより、パディングシンボルは、最上位シンボルに対するシンボル位置を移動させ、ポインタの位置を偶数(又は奇数)のシンボル位置へと移動する。
【0071】
図9は、この概念を概略的に示す。
図9において、パディングシンボル21は、第1のシーケンス10と第2のシーケンス20の最下位シンボルの間に追加されていることにより、第2のシーケンス20の開始位置に移動し、これにより第1のポインタ11のシンボル位置を所望のシンボル位置に移動させる。同様に、パディングシンボル23は、第3のシーケンス30と第4のシーケンス40の最下位シンボルの間に追加されており、第4のシーケンス40の開始位置と第2のポインタ13のシンボル位置を移動させる。
【0072】
パディングシンボルは、組み合わせシーケンスにおけるポインタの位置を移動させるためだけに使用されなくてもよい。パディングシンボルは、効率的なバースト転送のために所望のシンボル長に正確に一致するパディングシンボルを含む組み合わせシーケンスの合計サイズを得るように組み合わせシーケンスにも追加可能である。例えば、バースト転送の観点からの組み合わせシーケンスの最適な長さが512個のシンボルである場合、パディングシンボルは、ブロックの可変長符号化の結果、符号化ブロックの組み合わせシンボルに対する長さが短くなった場合にこの目標の長さに到達するように組み合わせシーケンスに追加可能である。これらのパディングシンボルは、例えば、組み合わせシーケンスにおける最後のシーケンスと最後から2番目のシーケンスとの間の連続シーケンスに全て追加可能である。あるいは、パディングシンボルは、連続したシーケンス間で組み合わせシーケンスにおける多数の位置において分散される。余分なパディングシンボルは、あらゆるポインタに対するシンボル位置が効率的に容易に表現可能な位置に進むような方法で挿入可能である。例えばパディングシンボルは、ポインタ位置を予め定義されたシンボル位置に近接させるように追加可能である。この概念を以下に示す。即ち、
A.......B.......C...............D..............................E
00000xaaaa11111xbb2222cccc33333xxxxxxxxxxxxxxxxxxxxxxxxxxxxddddd
^ ^ ^
である。
【0073】
上記のシーケンスにおいて、Aはシンボル位置0を表し、Bはシンボル位置8を表し、Cはシンボル位置16を表し、Dはシンボル位置32を表し、Eはシンボル位置63である。数字は、第1、第3、第5及び第7のシーケンスのシンボルを表し、アルファベットは、第2、第4、第6及び第8のシーケンスのシンボルを表す。xはパディングシンボルを表し、^はポインタのシンボル位置を示す。
【0074】
この例示的な例において、パディングシンボルは、強制的にポインタが奇数のシンボル位置を指し示すように追加されている。更にパディングシンボルは、この例においては64個のシンボルの最適な長さに到達するように第7のシーケンスと第8のシーケンスとの間に追加されている。しかし、余分なパディングシンボルが異なる方法で分散される場合、ポインタはシンボル位置B、C及びDに対してより近くへ動かされる。即ち、
A.......B.......C...............D..............................E
00000aaaa11111xbb2222xxxxxxxxcccc33333xxxxxxxxxxxxxxxxxxxxxddddd
^ ^ ^
である。
【0075】
この場合、パディングシンボルは、ポインタがシンボル位置B、C、D、すなわち8、16及び32に近接するようにシーケンス間に追加されている。その場合、これらの又は他のいくつかの規定のシンボル位置に関連してポインタを規定することがより効率的だろう。従って、各ポインタは、この例においては第2、第4又は第6のシーケンスの最上位シンボルと規定のシンボル位置8、16又は32とのシンボル長の差分を示す。ポインタを表すために6ビットを必要とするのではなく、この手法は、代わりに位置の差分を示すことでパディングシンボルを用いてポインタ長を6ビットより短くなるように削減できる。
【0076】
再度
図3を参照すると、ステップS10は、データバスを介してグラフィカルユニットのメモリからディスプレイユニットのバッファメモリに組み合わせシーケンスを送信することを含む。ステップS10は、この実施形態において、データバスを介してグラフィカルユニットのメモリからディスプレイユニットのメモリあるいはそれに接続されたメモリに組み合わせシーケンスに対して決定されたポインタを送信することを更に含む。このメモリは、バッファメモリ又は別のメモリであってよい。
【0077】
別の一実施形態において、少なくとも2つのシーケンスのシンボルは、多重化技術又はインタリービング技術と同様に合同編成される。この実施形態は、第1のシーケンスと第2のシーケンスのうちの一方の全てのシンボルが第1の読出し方向に読出し可能であるのに対し、第1のシーケンスと第2のシーケンスのうちの他方のシンボルの第1の部分が第1の読出し方向に読出し可能であり、そのシンボルの残りの第2の部分が第1の読出し方向とは逆の第2の読出し方向に読出し可能であるようにシンボルを合同編成する。双方の読出し方向に読出し可能なシンボルを有するシーケンスは、他のシーケンスより多くのシンボルを含む。
【0078】
例えば、第2のシンボルシーケンスが第1のシンボルシーケンスより多くのシンボルを含むと仮定する。第1のシーケンスのシンボルが組み合わせシーケンスの第1の部分における全ての奇数又は偶数のシンボル位置を占有するように、シンボルの合同編成は、第1のシーケンスと第2のシーケンスにおけるシンボルをシンボルの組み合わせシーケンスに合同編成することを含む。第2のシーケンスのシンボルの第1の部分は、組み合わせシーケンスの第1の部分における全ての偶数又は奇数のシンボル位置を占有し、組み合わせシーケンスの残りの第2の部分における全ての偶数又は奇数のシンボル位置も占有する。第1のシーケンスのシンボルと第2のシーケンスにおけるシンボルの第1の部分は、第1の読出し方向に読出し可能である。第2のシーケンスにおけるシンボルの残りの第2の部分は、組み合わせシーケンスの残りの第2の部分における全ての奇数又は偶数のシンボル位置を占有し、第1の読出し方向とは逆の第2の読出し方向に読出し可能である。
【0079】
図10は、この概念を視覚的に示す。
図10において、第1のシーケンス10のシンボルが白色であるのに対し、第2のシーケンス20のシンボルは斜線が施されて示される。
図10は、シンボル毎のそれぞれの読出し方向を更に示している。図示された例において、第1のシーケンス10のシンボルは、組み合わせシーケンス70の第1の部分7Bにおける偶数のシンボル位置(0,2,4,……)を占有する。第1の部分7Bにおける奇数のシンボル位置(1,3,5,……)は、第2のシーケンス20の最上位シンボルにより占有される。第2のシーケンス20は、組み合わせシーケンス70の残りの第2の部分8Bにおける奇数のシンボル位置を更に占有する。組み合わせシーケンス70におけるこれらの全てのシンボル、すなわち奇数のシンボル位置における第1のシーケンス10の全てのシンボルと第2のシーケンス20のシンボルは、第1の読出し方向に読出し可能である。組み合わせシーケンス70の最終部に到達すると、第2のシーケンス20の残りのシンボルは、組み合わせシーケンス70の残りの第2の部分8Bにおける偶数の位置を占有する。その後、第2のシーケンス20は、最初に組み合わせシーケンス70における奇数のシンボル位置を占有するシンボルを第1の読出し方向に読出し、次に第1の読出し方向とは逆の第2の読出し方向にではあるが組み合わせシーケンス70の残りの第2の部分8Bにおける偶数のシンボル位置を読出すことに続くようにして読み出される。
【0080】
例えば、第1のシーケンスが012345により示され、且つ第2のシーケンスがabcdefghijであると仮定すると、結果として得られる組み合わせシーケンスは、0a1b2c3d4e5fjgihのように見えるだろう。第1のシーケンスは、第1のシーケンスの最終部に到達するまで第1の読出し方向に偶数のシンボル位置を読出す、すなわち組み合わせシーケンスにおけるシンボル位置0、2、4、6、8を読出すことで取得される。第2のシーケンスは、最初に組み合わせシーケンスの最終部まで第1の読出し方向に奇数のシンボル位置を読出すことで、すなわちシンボル位置1、3、5、7、9、11、13、15を読出すことで取得される。その場合、第2のシーケンスのこれらの第1のシンボルはabcdefghである。第2のシーケンスの残りのシンボルは、第2のシーケンスの最終部に到達するまで第1の読出し方向とは逆の第2の読出し方向に偶数のシンボル位置、すなわち最後の2つのシンボルijを与える読出しシンボル位置14、12から読出される。
【0081】
更にこの実施形態において、双方のシーケンスは同時に読出し、復号化可能である。
【0082】
この実施形態は、逆の読出し方向にシーケンスを配置することで組み合わされる。そのような場合、
図10に示されたような組み合わせシーケンスは基本的には、ミラー型のインタリーブされたシーケンスで補完される。組み合わせシーケンスは少なくとも4つのシーケンスを含む。最初の2つのシーケンスはインタリーブされ、それらのうちの一方のシーケンスは第1の読出し方向にだけ読出される。他方のシーケンスが第1の読出し方向に従って部分的に読出されるのに対し、残りのシンボルは、第1の読出し方向とは逆の第2の読出し方向に従って読出される。残りの2つのシーケンスもインタリーブされるが、それらのうちの一方のシーケンスは、第1の読出し方向とは逆の第2の読出し方向にだけ読出される。他方のシーケンスが第1の読出し方向とは逆の第2の読出し方向に部分的に読み出されるのに対し、残りのシンボルは第1の読出し方向に従って読み出される。
【0083】
そのような組み合わせシーケンスの一例は、0a1b2c3d4e5fjgihqrpso9n8m7lk6であってよい。上記のように、第1のシーケンスは012345であり、第2のシーケンスはabcdefghijである。第3のシーケンスは6789であり、第4のシーケンスはklmnopqrsである。
【0084】
復号化
図11は、画素のタイルを復号化する方法を示すフローチャートである。その方法はステップS50において開始し、組み合わせシーケンスはバッファメモリから取り出される。組み合わせシーケンスは、上述したように、少なくとも第1のブロックにおける複数の画素の画素値の可変長符号化表現であるシンボルの第1のシーケンスと第2のブロックにおける複数の画素の画素値の可変長符号化表現であるシンボルの第2のシーケンスを含む。第1のブロックと第2のブロックとは、タイルの異なるサブセットを構成する。
【0085】
次のステップS51は、組み合わせシーケンスにおける規定の第1のシンボル位置から開始して第1の読出し方向に取り出された組み合わせシーケンスの一部を読出すことにより、第1のシーケンスを識別する。ステップS51は、組み合わせシーケンスにおける規定の第2のシンボル位置から開始して第1の読出し方向とは逆の第2の読出し方向に取り出された組み合わせシーケンスの一部を読出すことにより、第2のシーケンスを識別することを更に含む。
【0086】
以下のステップS52とS53では、識別された第1のシーケンスと第2のシーケンスを復号化して、第1のブロックと第2のブロックとにおける複数の画素の画素値の復号化表現を取得する。ステップS52、S53で実行された復号化は基本的には、上述した可変長符号化の逆の処理であり、可変長符号化方式に関して本明細書において引用された参考文献は、この実施形態に従って採用される種々の対応する復号化方式を更に開示している。
【0087】
ステップS51は、第1のシーケンスと第2のシーケンスの双方が組み合わせシーケンスから同時に識別され、読出されるように実行されることが好ましい。また。第2のシーケンスを復号化する復号化ステップS53は、第1のシーケンスを復号化する復号化ステップS52と少なくとも部分的に同時に実行されることが好ましい。そのような場合、それぞれのシーケンスを識別し復号化する合計時間を短縮することにより、復号化遅延時間を最短にできる。
【0088】
図12は、
図11の識別ステップの一実施形態を示すフローチャートである。この実施形態は、特に
図5に示されたような組み合わせシーケンスに適している。この方法は、
図11のステップS50から継続する。次のステップS60は、組み合わせシーケンス70の最上位シンボル位置から開始して第1の読出し方向に組み合わせシーケンス70の第1の部分7Aを読出すことにより、第1のシーケンス10を識別する。可変長符号化は、規定の開始シンボル位置から開始してシーケンスのシンボル位置によりシンボル位置を読出すことにより、シーケンスの最終部に到達する時を識別できるように実行される。これは、この実施形態により採用された可変長符号化方式の固有の特性である。従って、ステップS60は、最下位シンボルに向かって第1の読出し方向に最上位シンボル位置からシンボルを読み出すことと、第1のシーケンス10の最終部に到達すると読出しを停止することとを含む。
【0089】
同様に、ステップS61は、一般に組み合わせシーケンス70の後続部分である第2の部分8Aの最下位シンボルから開始して第1の読出し方向とは逆の第2の読出し方向に組み合わせシーケンス70の後続部分である第2の部分8Aを読み出すことにより、第2のシーケンス20を識別することを含む。
【0090】
2つのステップS60とS61では、組み合わせシーケンス70の両端から開始して双方の読出し方向に組み合わせシーケンス70を読出すことにより、少なくとも部分的に同時に実行されることが好ましい。その後、この方法はステップS52とS53に続き、識別されたシーケンスが復号化される。
【0091】
組み合わせシーケンスが本明細書において上述したように編成されたN個のシーケンスを含む場合、
図11の識別ステップは、組み合わせシーケンスにおける最上位シンボル位置から開始して第1の読出し方向に組み合わせシーケンスを読出すことにより、N個のシーケンスのうちの最初のシーケンスを識別することを含むことが好ましい。識別ステップは、組み合わせシーケンスの最下位シンボル位置から開始して第1の読出し方向とは逆の第2の読出し方向に組み合わせシーケンスを読出すことにより、N個のシーケンスのうちの最後のシーケンスを識別することを更に含む。組み合わせシーケンスにおける残りのシーケンスは、それぞれの規定のシンボル位置において開始して第1の読出し方向とは逆の第2の読出し方向に残りのシーケンスの偶数の番号を付けられた全てのシーケンスに対して組み合わせシーケンスを読出すことにより識別される。残りのシーケンスの奇数の番号を付けられたそれぞれのシーケンスは、それぞれの規定のシンボル位置において開始して第1の読出し方向に組み合わせシーケンスを読出すことにより識別される。
【0092】
従って、この場合、N個のシーケンスのシーケンス番号Nは、前記組み合わせシーケンスの最下位シンボルから開始して第1の読出し方向とは逆の第2の読出し方向の読出し位置における組み合わせシーケンスの一部を読み出すことにより識別される。N個のシーケンスのシーケンス番号2m+1は、それぞれの規定のシンボル位置から第1の読出し方向に組み合わせシーケンスのそれぞれの部分を読出すことにより識別される。パラメータmは整数であり、かつ、m∈[0,(N−2)/2]である。その識別は、それぞれの規定のシンボル位置から第1の読出し方向とは逆の第2の読出し方向に組み合わせシーケンスのそれぞれの部分を読み出すことにより、N個のシーケンスのシーケンス番号2nを識別することを更に含む。パラメータnは整数であり、n∈[1,(N−1)/2]である。
【0093】
第1のラウンドにおける最初のシーケンスと最後のシーケンスの識別に続いて、組み合わせシーケンスにおける中間シーケンス又は残りのシーケンスのそれぞれの規定のシンボル位置を取得できる。従って、第1の読出し方向に最初のシーケンスの最終部に後続するかあるいは第1の読出し方向とは逆の第2の読出し方向に最後のシーケンスの最終部に続く次のシンボル位置は、組み合わせシーケンスにおける別のシーケンスに対する規定のシンボル位置及び開始シンボルであってよい。別の手法において、少なくとも1つのポインタが、規定のシンボル位置を見つけるために採用される。
【0094】
図13は、組み合わせシーケンスにおけるシーケンスに対する規定のシンボル位置を識別するためにポインタを使用する方法を示すフローチャートである。その方法は、
図11のステップS50から続く。一実施形態において、ステップS70が省略されるため、この方法はステップS71に直接続く。ステップS71は、組み合わせシーケンスと関連付けられたポインタに基づいてシーケンスに対する規定のシンボル位置を識別する。特定の一実施形態では、ステップS71は、Nが奇数の場合には(N−1)/2個のポインタから、そして、Nが偶数の場合にはN/2−1個のポインタからとられたポインタに基づいて、シーケンス番号2kそしてオプションとしては2k+1の最上位シンボルに対応する規定のシンボル位置を識別することを含む。ポインタは、N個のシーケンスのシーケンス番号2kに対する最上位シンボルのシンボル位置を規定することが好ましい。第1の読出し方向の次のシンボル位置は、次のシーケンス、すなわちシーケンス番号2k+1に対する最上位シンボルであることが好ましい。従って、各ポインタにより、1つ又は2つのシーケンスに対する開始位置を識別できる。例えば、
図7Cにおいて、第1のポインタ11により、第2のシーケンス20と第3のシーケンス30の双方に対する開始位置を識別できるようになる。しかし、第5のシーケンス50の開始位置がこの実施形態において組み合わせシーケンス70の最下位シンボルと一致するため、第2のポインタ13により、第4のシーケンス40に対する開始位置のみを識別できる。組み合わせシーケンスにおけるN個のシーケンスが読出し方向に対して全て交互になっている場合、各ポインタは、2つのシーケンス、すなわちシーケンス番号2k及び2k+1に対するそれぞれの規定のシンボル位置を規定する。パラメータkは整数であり、Nが奇数の場合にはk∈[1,(N−1)/2]であり、Nが偶数の場合にはk∈[1,N/2−1]である。
【0095】
シーケンスが
図7A〜
図7Dに示された技術に従って合同編成される場合、Nが奇数の場合に最後のポインタを除く各ポインタにより、組み合わせシーケンスにおける2つのシーケンスに対する規定のシンボル位置を識別できる。従って、このことは、ポインタが単一のシーケンスの開始位置のみを識別する2k+1=Nの場合を除くパラメータkの全ての許容値に対して生じる。
【0096】
規定のシンボル位置を識別するためにステップS71で採用されたポインタは、それぞれの規定のシンボル位置を直接規定できる。別の手法において、ポインタは、
図13のステップS70で最初に算出される。そのような場合、シーケンスの規定のシンボル位置は、組み合わせシーケンスに対する現在のポインタと全ての前のポインタとの和を算出することによりうまく取得される。これは、その後組み合わせシーケンスにおける関連するシーケンスに対する開始位置を直接規定する最初のポインタを除く全てのポインタに当てはまることが好ましい。
【0097】
従って、特に一実施形態において、ステップS70は、ポインタ番号j+1とポインタ番号jとの和に基づいてシーケンス番号2j+2、そして、オプションとしては2j+3に対する規定のシンボル位置を算出することを含む。パラメータjは整数であり、Nが奇数の場合にj∈[1,(N−3)/2]であり、Nが偶数の場合にj∈[1,N/2−2] である。この場合、パラメータNのより小さな値に対しては単一のポインタしか必要とされないため、N≧5である。
【0098】
別の一実施形態において、組み合わせシーケンス70は、
図10に示されたように編成される。そのような場合、
図11の識別ステップは、組み合わせシーケンス70の第1の部分7Bにおける全ての奇数と偶数のシンボル位置のうちの一方を第1の読出し方向に読み出すことにより、第1のシーケンス10を識別することを含む。第2のシーケンス20は、組み合わせシーケンス70における全ての奇数又は偶数のシンボル位置、すなわち第1の部分7Bと残りの第2の部分8Bの双方のうちの他方を第1の読出し方向に読出すことにより識別される。また、組み合わせシーケンス70の最終部に到達すると、組み合わせシーケンスの残りの第2の部分における全ての奇数と偶数のシンボル位置のうちの一方を第1の読出し方向とは逆の第2の読出し方向に読出すことで読出しは継続する。
【0099】
双方の読出し方向に従って読出されるように提供されたインタリーブされたシーケンスを含む組み合わせシーケンスを使用することも可能である。従って、第1のシーケンスと第2のシーケンスとは第1の読出し方向から読み出され、第2のシーケンスの最後のシンボルは第1の読出し方向とは逆の第2の読出し方向から読み出される。第3のシーケンスと第4のシーケンスとは第1の読出し方向とは逆の第2の読出し方向から読み出され、代わりに、第4のシーケンスの最後のシンボルは上述したように第1の読出し方向から読み出される。
【0100】
実装の特徴
図14は、一実施形態に係るグラフィックスシステムを示す概略図である。グラフィックスシステムは、3つの主要なユニット又はエンティティ、すなわちデータバス380、385を介して相互接続された
図14においてGPUで示されたグラフィカル処理ユニット300、バッファメモリ430及びディスプレイ装置400を備える。グラフィックスシステムは、あらゆるデータ処理ユニット又はデータ処理端末において実現される。非限定的な例には、ラップトップを含むコンピュータ、ゲーム機、移動電話、並びに情報携帯端末(PDA)、iPad(登録商標)及び他のタブレットコンピュータ等の他の移動処理ユニットが含まれる。
【0101】
グラフィカル処理ユニット300は、可変長符号器310により符号化されている時にタイル1を格納するように構成されたオンチップメモリ340を含む。結果として得られるそれぞれの組み合わせシーケンスは、データバス380を介してオンチップメモリ340からバッファメモリ430に転送される。バッファメモリ430は、符号化圧縮形式で提供された画素値バッファ9を含む。ディスプレイ装置400のディスプレイ470あるいはディスプレイ装置400に接続されたディスプレイ470上にデータを表示する際、圧縮された画素値バッファ9の少なくとも一部に対応する符号化データは、バッファメモリ430から読出され、データバス385を介して並列の復号器440のセットに提供される。次にこれらの復号器440は、ディスプレイ470上に表示可能な画素値を取得するためにフェッチされた符号化データを復号化する。
【0102】
別の実装例の実施形態において、単一のデータバスは、GPU300からバッファメモリ430に、そしてバッファメモリ430からディスプレイ装置400にデータを転送するために採用される。ディスプレイ装置400の一部としてバッファメモリ430を配置することも可能である。
【0103】
特定の一実施形態において、GPU300は、チャンクにおける全てのブロックを可変長符号化し圧縮する。ブロックを表すために必要とされ、選択的にあらゆるポインタビット及びあらゆるパディングビットを含む一般的には複数のビットからなる全てのシンボルの和は、チャンクの合計サイズを規定する。例えば、チャンクにおける8個の4ブロック×4ブロックを仮定する。圧縮されていないチャンクは、RGB888のカラーバッファの場合に4×4×8×3=3072ビットのサイズを有する。圧縮によりサイズを66%、33%又は1/6まで縮小できる場合、対応する合計サイズは、2048ビット、1024ビット又は512ビットとなる。これは、2つのサイズビット00
bin〜11
binを使用することで信号が送られる。タイル1の符号化中、チャンクに対するこれらのサイズビットは、オンチップメモリ340におけるGPU300に格納される。全タイル1は、符号化されるとデータバス380を介してGPU300からバッファメモリ430に送出される。サイズビットは、好ましくはディスプレイ装置400又はバッファメモリ430の別の部分におけるサイズメモリ等の別のメモリ領域に更に転送される。サイズビットは、例えば、第1のタイル1における全てのチャンク、次に第2のタイルに対する全てのサイズビットから開始するサイズメモリに互いに後で格納されることが好ましい。
【0104】
ディスプレイ装置400は、バッファメモリ430からデータを読出そうとしている場合、バッファメモリ430からバーストインされるべきデータ量を判定するために適切なサイズビットを最初に読み出す。例えば、01
binのサイズビットは、現在のチャンクに対して2048ビットバーストインすることを示せる。これらの2048ビットの全てが必ずしもディスプレイ装置400の復号器440により使用され復号化されなくてもよい。
【0105】
GPU300は、タイルの符号化後に全てのサイズビットをサイズメモリに必ずしも転送する必要はない。格納されたこれらのサイズビットの合計サイズがデータバス380、385を介した効率的な転送のために所望のバーストサイズに適切に適合するまで、多くのサイズビットをオンチップメモリ340に格納できるとよい。
【0106】
代わりに、サイズビットは、ディスプレイ装置400の復号器440に直接送出されてよい。復号器440は、ディスプレイ470上に表示される全てのタイルに対する全てのサイズビットを格納するのに十分に大きなオンチップメモリを含むか、あるいはそれに接続される。
【0107】
符号器
図15は、一実施形態に係るタイルを符号化する装置100を示す概略ブロック図である。装置100は、少なくとも複数の画素の第1のブロックと複数の画素の第2のブロックを可変長符号化してシンボルの第1のシーケンスとシンボルの第2のシーケンスを形成するように構成された可変長符号器110を備える。装置100は、少なくとも第1のブロックと第2のブロックの画素値に対して連続して動作する単一の可変長符号器110を備えると良い。あるいは、装置100は、タイルにおける種々のブロックからの画素データに対して同時に動作できる多数の可変長符号器110のセットを含んでも良い。
【0108】
シンボル編成器120が、装置100に実装され、可変長符号器110からの第1のシーケンスと第2のシーケンスのシンボルをシンボルの組み合わせシーケンスに合同編成するように構成される。第1のシーケンスのシンボルが第1の読出し方向に読出し可能であるのに対し、第2のシーケンスにおけるシンボルの少なくとも一部が第1の読出し方向とは逆の第2の読出し方向に読出し可能であるように、シンボル編成器120はシンボルを合同編成するように構成される。シンボル編成器120により生成された組み合わせシーケンスは、装置100のメモリ140にデータを書込み、メモリ140からデータを読出すように構成されたメモリコントローラ130によりメモリ140に格納される。
【0109】
装置100は、一般的な入出力(I/O)ユニット150として図示された出力ユニット150を備えることが好ましい。出力ユニット150は、
図14に示されたデータバスを介してメモリ140からバッファメモリに組み合わせシーケンスを送信又は転送するように構成される。I/Oユニット150は、I/Oユニット150をデータバスと相互接続する1つ以上のI/Oポートを含むことが好ましい。
【0110】
特定の一実施形態において、シンボル編成器120は、組み合わせシーケンスの第1の部分において第1の読出し方向に第1のシーケンスのシンボルを編成するように構成される。シンボル編成器120は、組み合わせシーケンスの後続部分である第2の部分において第1の読出し方向とは逆の第2の読出し方向に第2のシーケンスのシンボルを更に編成する。
【0111】
可変長符号器110は、一実施形態において画素の3つ以上のブロックを符号化して、すなわちタイルのN個のブロックを可変長符号化して、N個のブロックの画素値の符号化表現としてシンボルのN個のシーケンスを形成する。ここで、Nは3以上の整数である。シーケンス番号N、すなわち最後のシーケンスのシンボルが第1の読出し方向とは逆の第2の読出し方向に読出し可能であるように、シンボル編成器120は、この実施形態においてN個のシーケンスのシンボルを組み合わせシーケンスに合同編成するように構成されることが好ましい。更にシンボル編成器120は、第1の読出し方向に読出し可能となるようにN個のシーケンスのシーケンス番号2m+1のシンボルを編成し、前記第1の読出し方向とは逆の第2の読出し方向に読出し可能となるようにN個のシーケンスのシーケンス番号2nのシンボルを編成する。パラメータm,nは、前に規定されたようなパラメータである。更にシンボル編成器120は、昇順にシーケンスを編成することが好ましい。従って、シーケンス番号iが組み合わせシーケンスにおいてシーケンス番号i+1に先行するように、シンボル編成器120は、組み合わせシーケンスにおけるN個のシーケンスを提供する。ここで、i=1,2,……,N−1である。
【0112】
オプションの一実施形態において、装置100は、組み合わせシーケンスにおける少なくとも1つのシーケンスの開始位置を識別できる少なくとも1つのポインタを決定するように構成されたポインタ生成器160を備える。ポインタ生成器160は、Nが奇数の場合には(N−1)/2個のポインタを、Nが偶数の場合にはN/2−1個のポインタを決定するように構成されることが好ましい。ポイント生成器160は、ポインタ番号kが組み合わせシーケンスにおけるシーケンス番号2kの最上位シンボルのシンボル位置を規定するように少なくとも1つのポインタを決定する。パラメータkは、前に規定されたようなパラメータである。メモリコントローラ130は、組み合わせシーケンスと共に決定されたポインタをメモリ140に格納することが好ましい。また、出力ユニット150は、データバスを介して組み合わせシーケンスをバッファメモリに送信することに加えて、データバスを介してメモリ140から例えばディスプレイユニットのメモリにポインタを更に送信する。
【0113】
一実施形態において、ポインタ生成器160は、それぞれのシーケンス番号2kの最上位シンボルに対応する組み合わせシーケンスにおけるそれぞれのシンボル位置を示すポインタを決定する。別の一実施形態において、ポインタ生成器160は、それぞれのシーケンスのうちの1つと組み合わせシーケンスにおける先行するそれぞれのシーケンスとの最上位シンボルのシンボル位置の差分に等しい少なくとも1つのポインタを決定する。ポインタ生成器160は、組み合わせシーケンスにおけるシーケンス番号2j+2の最上位シンボルのシンボル位置とシーケンス番号2jの最上位シンボルのシンボル位置との差分に等しいポインタ番号j+1を決定するように構成されることが好ましい。パラメータjは、前に規定されたようなパラメータである。
【0114】
オプションのパディング提供器170は、少なくとも1つのパディングシンボルを組み合わせシーケンスに追加する装置100において実現可能である。パディング提供器170は、既に規定のシンボル位置にない限り、強制的にシーケンス番号2kの最上位シンボルが組み合わせシーケンスにおける規定のシンボル位置にあるようにするために、シーケンス番号2k−1の最下位シンボルとシーケンス番号2kの最下位シンボルとの間に少なくとも1つのパディングシンボルを追加するように構成される。従って、パディング提供器170は、シーケンス番号2kの最上位シンボル及びこの最上位シンボルと関連付けられたポインタを効率的に、すなわちポインタに対してシンボル又はビットを殆ど必要としないポインタにより容易に表現可能な規定のシンボル位置に移動するためにパディングシンボルを使用できる。特定の一実施形態において、パディング提供器170は、パディングシンボルを追加し、強制的にポインタが規定する全てのシンボル位置が偶数のシンボル位置又は奇数のシンボル位置にあるようにする。
【0115】
追加的に、或いは、代替的に、パディング提供器170は、シンボルの数に関する組み合わせシーケンスの目標の長さに到達するために、少なくとも1つのパディングシンボルを組み合わせシーケンスに追加できる。結果として得られる目標の長さは、データバスを介した効率的なバースト転送に適応可能である。
【0116】
装置100は、必ずしも組み合わせシーケンスにおけるシーケンスを互いに順番に編成しなくてもよい。別の手法において、例えば、第1のシーケンスのシンボルが組み合わせシーケンスの第1の部分における全ての奇数(又は偶数)のシンボル位置を占有するように、シンボル編成器120は、少なくとも第1のシーケンスと第2のシーケンスのシンボルを組み合わせシーケンスに合同編成するように構成される。シンボル編成器120は、組み合わせシーケンス、すなわち組み合わせシーケンスの第1の部分と残りの第2の部分の双方における全ての偶数(又は奇数)のシンボル位置を占有するように第2のシーケンスにおけるシンボルの第1の部分を更に編成する。第1のシーケンスのシンボルと第2のシーケンスにおけるシンボルの第1の部分は、第1の読出し方向、すなわちデフォルトの読出し方向に読出し可能である。第2のシーケンスにおけるシンボルの残りの第2の部分は、組み合わせシーケンスの残りの第2の部分における奇数(又は偶数)のシンボル位置を占有するようにシンボル編成器120により代わりに編成される。第2のシーケンスにおけるシンボルのこの残りの第2の部分は、第1の読出し方向とは逆の第2の読出し方向に読出し可能である。この概念は、上述したような4つ以上のシーケンスを含む場合に拡張可能である。
【0117】
装置100のユニット110〜130、140〜170は、ハードウェア又はハードウェアとソフトウェアとの組合せとして実現又は提供されてもよい。ソフトウェアによる実装例の場合、装置100又はその一部を実現するコンピュータプログラムは、汎用又は専用のコンピュータ、プロセッサ又はマイクロプロセッサ上で実行されたソフトウェア又はコンピュータプログラムを含む。ソフトウェアは、
図15に示されたコンピュータプログラムコード要素又はソフトウェアコード部分を含む。プログラムの全て又は一部は、RAM等の1つ以上の適切な揮発性コンピュータ可読媒体又はデータ記憶媒体、あるいは磁気ディスク、CD−ROM、DVDディスク、ハードディスク等の1つ以上の不揮発性コンピュータ可読媒体又はデータ記憶手段上又はそれらに格納されてもよく、あるいはROM又はフラッシュメモリに格納されてもよい。データ記憶手段は、ローカルデータ記憶手段であってよく、あるいはデータサーバ等にリモートで提供される。
【0118】
装置100のユニット110〜170は、
図14に示されたようなグラフィカル処理ユニットにおいて実装されることが好ましく、グラフィックスチップ上にあって良い。そのような場合、ユニット110〜170はハードウェアで実現されるという利点がある。
【0119】
復号器
図16は、画素のタイルを復号化する装置200を示す概略ブロック図である。装置200は、データバスを介して符号化形式でタイルを格納するように構成されたバッファメモリに接続されるか、あるいはそれを含む。ここで、タイルは、バッファメモリに格納された画素値バッファの少なくとも一部を構成する。
【0120】
装置200のシーケンス取り出し器210は、選択的に汎用I/Oユニット270として図示された入力ユニット270を使用してデータバスを介してバッファメモリからシンボルの組み合わせシーケンスを取り出すように構成される。I/Oユニット270は、I/Oユニット270をデータバスと相互接続する1つ以上のI/Oポートを含むことが好ましい。読み出された組み合わせシーケンスは、一般に装置200のメモリ230に入力される。組み合わせシーケンスは、それぞれ、少なくとも複数の画素の第1のブロックと第2のブロックにおける画素値の可変長符号化表現としてシンボルの第1のシーケンスと第2のシーケンスとを含む。これらの第1のブロックと第2のブロックは、タイルの異なるサブセット又は一部分を構成する。
【0121】
オプション的なアプローチにおいて、シーケンス取り出し器210は、組み合わせシーケンスの最大サイズ及びバッファメモリから読み出されるべきシンボルの数を判定するために、メモリ230又は他の何らかのサイズメモリからサイズビット又はサイズ表示を最初に読み出す。
【0122】
シーケンス識別器220は、組み合わせシーケンスにおける規定された第1のシンボル位置から開始して第1の読出し方向にシーケンス取り出し器210により取り出された組み合わせシーケンスを読出すことにより、第1のシーケンスを識別するように装置200において実現される。シーケンス識別器220は、組み合わせシーケンスにおける規定された第2のシンボル位置から開始して第1の読出し方向とは逆の第2の読出し方向に取り出された組み合わせシーケンスの少なくとも一部を読出すことにより第2のシーケンスを更に識別する。
【0123】
装置200は、シーケンス識別器220により識別されたシンボルのそれぞれのシーケンスを処理して復号化するように構成された少なくとも2つの復号器240、250のセットを更に含む。複数の復号器240、250を有することにより、装置200は、同時に多数のシーケンスを復号化でき、それにより合計復号化時間が高速化され、復号化遅延時間が短くなる。
【0124】
第1の復号器240は、シーケンス識別器220により識別された第1のシーケンスを復号化して、第1のブロックにおける複数の画素の画素値の復号化表現を取得するように構成される。第2の復号器250は、識別された第2のシーケンスを復号化して、第2のブロックにおける複数の画素の画素値の復号化表現を取得するように同様に構成される。第2の復号器250が識別された第1のシーケンスを復号化する第1の復号器240と少なくとも部分的に同時に第2のシーケンスを復号化するように、第1の復号器240と第2の復号器250とは、少なくとも部分的に同時に動作するように構成されることが好ましい。
【0125】
一実施形態において、シーケンス識別器220は、組み合わせシーケンスの最上位シンボルから開始して第1の読出し方向に組み合わせシーケンスの第1の部分を読出すことにより、第1のシーケンスを識別するように構成される。シーケンス識別器220は、好ましくは第1のシーケンスの識別と同時に、組み合わせシーケンスから第2のシーケンスを更に識別する。第2のシーケンスは、一般に組み合わせシーケンスの後続部分である第2の部分の最下位シンボル位置から開始して第1の読出し方向とは逆の第2の読出し方向に組み合わせシーケンスの後続部分である第2の部分を読出すことにより識別される。
【0126】
組み合わせシーケンスが3つ以上のシーケンス、すなわち3以上の整数であるN個のシーケンスを含む場合、シーケンス識別器220は、組み合わせシーケンスの最下位シンボルから開始して第1の読出し方向とは逆の第2の読出し方向の読出し位置における組み合わせシーケンスの一部を読み出すことにより、N個のシーケンスのうちの最後のシーケンス、すなわちシーケンス番号Nを識別することが好ましい。シーケンス識別器220は、それぞれの規定のシンボル位置から第1の読出し方向に組み合わせシーケンスのそれぞれの部分を読み出すことにより、N個のシーケンスのシーケンス番号2m+1を更に識別する。N個のシーケンスの残りのシーケンス、すなわちシーケンス番号2nは、それぞれの規定のシンボル位置から第1の読出し方向とは逆の第2の読出し方向に組み合わせシーケンスのそれぞれの部分を読み出すことによりシーケンス識別器220により識別される。パラメータm,nは、前に規定されたようなパラメータである。装置200は、N個の復号器240、250を備えることが好ましい。これらの復号器240、250の各々は、シーケンス識別器により識別されたそれぞれのシーケンスを復号化して、タイルにおけるN個のブロックからのそれぞれのブロックにおける複数の画素の画素値の復号化表現を取得するように構成される。あるいは、装置200は、例えば、第1の復号化ラウンドにおいて組み合わせシーケンスにおけるシーケンス番号1とシーケンス番号Nを復号化し、そして、第2のラウンド以降においてシーケンス番号2とシーケンス番号N−1を復号化する第1の復号器240及び第2の復号器250を備える。
【0127】
特定の一実施形態において、シーケンス識別器220は、組み合わせシーケンスと関連付けられ、且つ装置200のバッファメモリあるいはそれに接続されたバッファメモリ又は別のメモリ230に格納されたポインタに少なくとも基づいて、組み合わせシーケンスにおけるシーケンスのうちの少なくとも1つに対する規定のシンボル位置、すなわち開始位置を識別するように構成される。そのような場合、シーケンス識別器230は、Nが奇数の場合には(N−1)/2個のポインタから、そして、Nが偶数の場合にはN/2−1個のポインタからのポインタに基づいてシーケンス番号2kとオプション的には2k+1に対する規定のシンボル位置を識別するように構成される。パラメータkは、前に規定されたようなパラメータである。
【0128】
組み合わせシーケンスと関連付けられたポインタは、シーケンス識別器220によりメモリ230から取り出されたものとして直接使用可能である。別の一実施形態において、ポインタの実際値は、最初に装置200の計算器260により算出される必要がある。計算器260は、ポインタ番号j+1とポインタ番号jとの和に基づいてシーケンス番号2j+2とオプション的には2j+3に対する規定のシンボル位置を算出するように構成される。パラメータjは、前に規定されたようなパラメータである。従って、所定のポインタの規定のシンボル位置は、組み合わせシーケンスに対する第1の読出し方向に所定のポインタの値と前のポインタの値とを合計することで取得されることが好ましい。この手法は、追加のポインタを全く使用しない場合と比較して、ポインタ上で使用されたシンボルの数に関する長さを短縮できることを意味する。
【0129】
別の一実施形態において、第1のシーケンスと第2のシーケンスは、
図10に示されたような組み合わせシーケンスに編成される。シーケンス識別器220は、組み合わせシーケンスの第1の部分において第1の読出し方向に全ての奇数(又は偶数)のシンボル位置を読出すことにより、第1のシーケンスを識別するように構成される。シーケンス識別器220は、組み合わせシーケンスの第1の部分と残りの第2の部分において第1の読出し方向に全ての偶数(又は奇数)のシンボル位置を読出すことにより第2のシーケンスを更に識別する。これらの読出されたシンボルは、第2のシーケンスの第1の部分に対応する。第2のシーケンスにおけるシンボルの残りの第2の部分は、組み合わせシーケンスの残りの第2の部分において第1の読出し方向とは逆の第2の読出し方向に全ての奇数(又は偶数)のシンボル位置を読出すことでシーケンス識別器220により取得される。
【0130】
装置200のユニット210、220、240〜260は、ハードウェア又はハードウェアとソフトウェアとの組合せとして実現又は提供されてもよい。ソフトウェアによる実装例の場合、装置200又はその一部を実現するコンピュータプログラムは、汎用又は専用のコンピュータ、プロセッサ又はマイクロプロセッサ上で実行されたソフトウェア又はコンピュータプログラムを含む。ソフトウェアは、
図16に示されたコンピュータプログラムコード要素又はソフトウェアコード部分を含む。プログラムの全て又は一部は、RAM等の1つ以上の適切な揮発性コンピュータ可読媒体又はデータ記憶媒体、あるいは磁気ディスク、CD−ROM、DVDディスク、ハードディスク等の1つ以上の不揮発性コンピュータ可読媒体又はデータ記憶手段上又はそれらに格納されてもよく、あるいはROM又はフラッシュメモリに格納されてもよい。データ記憶手段は、ローカルデータ記憶手段であってよく、あるいはデータサーバ等にリモートで提供される。
【0131】
装置200のユニット210〜260は、
図14に示されたようなディスプレイユニットにおいて実現されることが好ましい。特定の一実施形態では、ユニット210〜260はハードウェアでうまく実現される。
【0132】
上述の実施形態は、本発明のいくつかの例示的な例として理解されるべきものである。本発明の範囲を逸脱することなく種々の変形、組合せ及び変更が実施形態に対して行われてもよいことは、当業者により理解されるだろう。特に、技術的に可能である場合、種々の実施形態における種々の部分的な解決方法は、他の構成において組み合わされてよい。しかし、本発明の範囲は添付の請求の範囲により規定される。