JP2013512482A - エンコード済みのテクスチャ要素ブロックについて使用することができるデコーディングシステムおよび方法 - Google Patents

エンコード済みのテクスチャ要素ブロックについて使用することができるデコーディングシステムおよび方法 Download PDF

Info

Publication number
JP2013512482A
JP2013512482A JP2012539846A JP2012539846A JP2013512482A JP 2013512482 A JP2013512482 A JP 2013512482A JP 2012539846 A JP2012539846 A JP 2012539846A JP 2012539846 A JP2012539846 A JP 2012539846A JP 2013512482 A JP2013512482 A JP 2013512482A
Authority
JP
Japan
Prior art keywords
adder
output
operator
texel
decoder
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.)
Pending
Application number
JP2012539846A
Other languages
English (en)
Inventor
ヤコブ ストレム,
Original Assignee
テレフオンアクチーボラゲット エル エム エリクソン(パブル)
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 テレフオンアクチーボラゲット エル エム エリクソン(パブル) filed Critical テレフオンアクチーボラゲット エル エム エリクソン(パブル)
Publication of JP2013512482A publication Critical patent/JP2013512482A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image 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/127Prioritisation of hardware or computational resources
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • 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/17Methods 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 an image region, e.g. an object
    • H04N19/176Methods 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 an image region, e.g. an object the region being a block, e.g. a macroblock
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/16Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/08Bandwidth reduction
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria

Abstract

デコーディングシステム(1)が、N個の異なるデコーダ(100、200、300、400)を備えており、各々のデコーダが、他のN−1個のデコーダの回路とは異なる独自の回路を有している。各々のデコーダ(100、200、300、400)が、入力されるエンコード済みのテクセルブロック(40)に基づいて少なくとも1つのテクセル値を生成する。値選択部(500)が、少なくともN個のテクセル(30〜36)のうちの少なくとも1つを含むテクセルブロック(10)の境界に対する、少なくともN個のテクセル(30〜36)の位置に基づいて、少なくともN個のテクセル値を、デコーダ(100、200、300、400)のうちの少なくとも1つから選択的に出力するように構成されている。ピクセル計算部(600)が、値選択部(500)からの少なくともN個の選択されたテクセル値に基づいて、デコード後のピクセルのピクセル値を計算する。
【選択図】図3

Description

本発明は、広くにはデコーディングに関し、とくにはエンコード済みのテクスチャ要素ブロックについて使用することができるデコーディングシステムおよび方法に関する。
グラフィクス・プロセッシング・ユニット(GPU)の性能を高めようと試みるとき、1つの解決策は、メモリ帯域幅の消費を削減するための種々の技法を適用することである。帯域幅の削減は、処理能力に関する性能向上の速度がランダム・アクセス・メモリ(RAM)の帯域幅およびレイテンシに関する性能向上の速度よりもはるかに大きいことからも、ますます重要になってきている。
テクスチャ圧縮が、必要な帯域幅を削減するための1つの一般的なやり方である。テクスチャを圧縮された形態でメモリに保存し、圧縮されたデータのブロックを、バスを介して転送することによって、テクスチャの帯域幅を大きく減らすことができる。
今日において、最も使用されているテクスチャ圧縮システムは、Windows(登録商標)ベースのシステムおよびXbox用のDXTC[1]ならびに携帯電話機用のETC[2]である。これらのシステムのどちらも、テクスチャと称される画像を、4×4個のテクスチャ要素(テクセル)からなるテクセルブロックへと分割し、次いでテクセルの赤色、緑色、青色(RGB)データを(8+8+8)×16=384ビットから64ビットへと圧縮する。したがって、各々のテクセルブロックに同数のビットが与えられる。これは、解凍に使用されるラスタライザが、テクスチャの任意の部分にアクセスしなければならない可能性があり、所望のテクセルブロックのメモリアドレスを容易に計算できる必要があるため、重要である。換言すると、固定レートのコーデック、すなわちすべてのテクセルブロックが同量の記憶領域を占めるコーデックがきわめて望ましく、今日のテクスチャ圧縮アルゴリズムにおける標準である。
ETCデコーダの開発によって、いわゆるTモード、Hモード、およびPLANARモードを取り扱う追加の機能を有するいわゆるETC2デコーダ[3]がもたらされている。TモードおよびHモードは、それぞれ、色の不均一な分布、および2つのグループに配置された色を有するテクセルブロックを取り扱うように設計されている。ETCデコーダのハードウェア回路を、かなりの程度まで、追加のTモードおよびHモードを包含するように再利用することができる。しかしながら、PLANARモードは、ETCならびにTモードおよびHモードから相当に異なっており、滑らかな色の推移を有するテクセルブロックを取り扱うように設計されている。PLANARモードのための複雑なハードウェア回路は、ETC2デコーダの複雑さが、ETCデコーダと比べて大きく増加することを意味すると考えられる。
したがって、PLANARモードの効率的な実現をもたらし、とくには費用効率の高い回路を用いたハードウェアの実装として提供できるような実現をもたらすことに、ニーズが存在する。そのような費用効率の高い回路は、PLANARモードがETC2デコーダを構成すべくETCデコーダならびにTモードおよびHモードとともに使用される場合に、とくに望ましい。
同様の問題が、当技術分野において一般に存在し、すなわち実装の複雑さを低減するという目的でデコーディングシステムへと適用することができる技術が、一般に必要とされている。
[1]米国特許第5,956,431号明細書 [4]国際公開第2006/126949号パンフレット
[2]StroemおよびMoeller、「iPACKMAN:High−Quality,Low−Complexity Texture Compression for Mobile Phones」、Graphics Hardware、2005、ACM Press、pp.63−70 [3]StroemおよびPettersson、「ETC2:Texture Compression using Invalid Combinations」、Graphics Hardware、2007、ACM Press、pp.49−54
一般的な目的は、エンコードされたテクセルブロックの効率的なデコーディングを提供することにある。
特定の目的は、ハードウェアにおいて効率的に実現することができるデコーディング構造を提供することにある。
これらの目的および他の目的が、本明細書に開示のとおりの実施形態によって達成される。
要約すると、一実施形態は、少なくとも1つのエンコード済みのテクセルブロックに基づいてデコード後のピクセルを生成するためのデコーディングシステムに関する。このデコーディングシステムは、エンコード済みのテクセルブロックをデコードして1つまたは複数のテクセル値を生成するようにそれぞれが構成されたN個の並列のデコーダを備える。この実施形態によれば、N個のデコーダの回路が、N個のデコーダの各々が他のN−1個のデコーダの回路とは異なる独自の回路を有するように、互いに比べて異なっている。これにより、デコーダが、該デコーダによって処理することができるテクセルブロック内のテクセル位置に関して異なる能力を有するため、デコーダ回路に異なるレベルの複雑さを持たせることができる。
さらに、このデコーディングシステムは、N個のデコーダへと接続されてN個のテクセル値を選択的に出力するように構成された値選択部を備える。さらに、これらN個のテクセル値は、N個のデコーダの内の1つまたは複数から出力される。どのデコーダから出力されるどの特定のテクセル値を出力すべきかは、N個のテクセルのうちの少なくとも1つを含むテクセルブロックに対する、N個のテクセル値を有するN個のテクセルからなるパッチの位置に依存して決まる。換言すると、テクスチャのテクセルブロックの境界に対するN個のテクセルの位置により、どのデコーダ出力が値選択部によって選択されてピクセル計算部へとさらに送られるかが決定される。ピクセル計算部は、値選択部によって選択的に出力されるN個のテクセル値に基づいてデコード後のピクセル値を計算するように構成される。
値選択部による注意深い選択により、N個のデコーダのうちの少なくともいくつかが他のデコーダよりも複雑でない回路を有することができるように、デコーダを設計することができる。これは、デコーダのうちのいくつかを、テクセルブロック内の特定のテクセル位置についてのみテクセル値をデコードして出力できるように制限することによって可能である。結果として、N個のデコーダが、同一の回路を有する必要がなく、むしろ対照的に、回路ごとのハードウェア構造に関して異なるレベルの複雑さを有する異なる回路を有することができる。
一実施形態は、少なくとも1つのエンコード済みのテクセルブロックをデコードすることによってピクセルを生成する方法を規定する。この方法は、N個の異なるデコーダのうちの少なくとも1つからN個のテクセル値を選択的に出力するステップを含み、各々が他のN−1個のデコーダの回路とは異なる独自の回路を有している。さらに、各々のデコーダが、入力されるエンコード済みのテクセルブロックに基づいて少なくとも1つのテクセル値を出力する。デコードすべきピクセルのピクセル値の計算に、N個のデコーダからのどのテクセル値を使用するかの選択が、テクセルブロックの境界に対する、N個のテクセル値に関するN個のテクセルの位置に基づいて実行される。次いで、選択されたN個のテクセル値が、ピクセル値の計算に使用される。
実施形態は、並列のデコーダの少なくとも一部について必要とされる複雑さを低減することによって、ピクセルデコーディング構造を効率的に実現できるようにする。これにより、デコーディング構造の全体としての複雑さが、先行技術のようにN個の同一の並列のデコーダを有する場合と比べ、低減される。
本発明ならびに本発明のさらなる目的および利点を、以下の説明を参照し、添付の図面と併せて言及することによって、最もよく理解することができる。
テクセルブロックの境界に対するバイリニアパッチの種々の位置を示している。 テクセルブロックの境界に対するバイリニアパッチの種々の位置を示している。 テクセルブロックの境界に対するバイリニアパッチの種々の位置を示している。 テクセルブロックの境界に対するバイリニアパッチの種々の位置を示している。 一実施形態によるデコーディングシステムを備えるデコーディング装置の概略の全体図である。 一実施形態によるデコーディングシステムの図である。 一実施形態によるエンコード済みのテクセルブロックを概略的に示している。 テクセルブロックにおいてテクセル特性値の平面近似を使用する考え方を示している。 図3の第4のデコーダのハードウェアの実装の実施例である。 図3の第3のデコーダのハードウェアの実装の実施例である。 図3の第2のデコーダのハードウェアの実装の実施例である。 図3の第1のデコーダのハードウェアの実装の実施例である。 7ビットから8ビットへのエクステンダのハードウェアの実施例である。 クランパのハードウェアの実装の実施例である。 クランパの別のハードウェアの実装態様である。 図3の値選択部のハードウェアの実装の実施例である。 一実施形態によるデコーディング方法を説明するフロー図である。
図面の全体を通して、類似または対応する構成要素には、同じ参照番号が使用されている。
実施形態は、広くには、エンコードまたは圧縮されたテクスチャ要素(テクセル)ブロックをデコードまたは解凍して、デコード済みのピクセル値を生成することに関する。
デコードは、ゲーム、3Dマップおよびシーン、3Dメッセージ(例えば、アニメーションによるメッセージ)、スクリーンセーバ、マン・マシン・インターフェイス(MMI)、などの三次元(3D)グラフィクスにおける使用にうまく適合するが、これらに限られるわけではない。すなわち、実施形態を、例えば一次元(1D)、二次元(2D)、または3D画像など、他の種類の画像またはグラフィクスのデコードにも使用することが可能である。
3Dグラフィクスのレンダリングプロセスは、典型的には3つの部分段階を含む。要約すると、第1の段階であるアプリケーション段階において、いくつかの三角形が生成される。これらの三角形の角が、第2の段階であるジオメトリ段階において、変換、投影、および照明される。第3の段階であるラスタ化段階において、画像はテクスチャと称されることが多いが、これを三角形に「貼り付け」、レンダリングされる画像のリアルさを高めることができる。第3の段階においては、Zバッファを用いたソートも実行される。
しかしながら、テクスチャ、およびとくには、3D画像およびグラフィクスのレンダリングは、グラフィクスシステムに要求されるメモリ帯域幅および処理能力に関し、計算処理上で高価につく作業である。例えば、テクスチャは、テクスチャを高速のオンチップメモリに配置する必要があるというメモリの観点、および1つのピクセルを描画するためにテクスチャへのアクセスが複数回行なわれる可能性があるというメモリ帯域幅の観点の両方に関して高価につく。さらに、ピクセルを描画するために複数のテクスチャが必要になる可能性もある。
必要とされる帯域幅および処理電力を低減するために、テクスチャエンコーディング法またはテクスチャ・エンコーディング・システムが、典型的に使用される。そのようなエンコーディングシステムは、レンダリングの際に高価なオンチップメモリおよび少ないメモリ帯域幅のより効率的な使用をもたらさなければならず、すなわち消費電力の低減および/またはより高速のレンダリングをもたらさなければならない。この必要とされる帯域幅および処理電力の低減は、メモリの量が少なく、メモリ帯域幅が狭く、電力が限られている、すなわち、電池で動作する、モバイルユニットおよび携帯電話機などのシンクライアントにとって、とくに重要である。
当技術分野では、テクスチャが、いわゆるテクセルブロックに分割され、各々のテクセルブロックが、いくつかのテクセルを含んでいる。このようなテクセルブロックは、典型的には矩形または正方形であって、例えばM×M個のテクセルからなるサイズであり、ここでM、Mは、正の整数であるが、MおよびMの両方が同時に1になることはない。好ましくは、M=2mおよびM=2mであり、ここでm、mは、正の整数である。典型的な実装態様では、M=Mであり、このようなブロックの好ましい実施形態は、4×4のテクセルであってよい。
当技術分野では、ピクセルまたは画素が、テクスチャのテクスチャ要素を指して使用されることもある。しかしながら、以下の説明においては、テクセルが、テクスチャのテクスチャ要素を指して使用され、ピクセルが、ラスタ化に関連してそのようなテクセルから生成される画素を指して使用される。
テクセルには、テクセル値が関連づけられ、ピクセルには、ピクセル値が関連づけられる。テクセル値およびピクセル値は、有利には色値であってよい。色値を、赤、緑、青(RGB)色あるいは輝度およびクロミナンスなど、さまざまな色フォーマットで表現することができる。さらに、テクセル値は、正規値またはZ値など、テクセルの他の特性を表わすことができる。以下の説明においては、テクセル値を、色値として例示するが、これに限られるわけではない。
典型的なラスタライザは、テクスチャについて、1度に単一のテクセルにアクセスするのではない。代わりに、2×2個のテクセルなど、小さな隣接テクセルが使用される。例えば、バイリニアフィルタリングの際には、このような4つの隣接テクセルが、バイリニアフィルタリング後の値、すなわち、ピクセル値を生成するために読み出される。当技術分野においては、ピクセル値を生成するために同時に処理されるこのような隣接テクセルのグループが、典型的にはパッチと称される。したがって、バイリニアフィルタリングに使用される2×2のテクセルグループは、バイリニアパッチと称される。この考え方を、例えばトリリニアフィルタリングへとさらに拡張することができる。トリリニアフィルタリングは、2つの異なるミップマップからの2つのバイリニアパッチを使用する。
テクセルのパッチの処理における問題は、1つのパッチのテクセルが2つ以上のテクセルブロックにまたがる可能性がある点にある。これが、図1A〜図1Dに概略的に示されている。図1Aは、4つのテクセル30〜36からなるバイリニアパッチ20が、単一のテクセルブロック10内に見られる事例を示している。図1Bおよび図1Cは、バイリニアパッチ20が互いに左右(図1B)または上下(図1C)に存在する2つのピクセルブロック10、12、14にまたがる別の状況を示している。バイリニアパッチ20の各々のテクセル30〜36が別々のテクセルブロック10〜16に存在する極端な事例が、図1Dに示されている。
この問題を解決するための伝統的なやり方は、4つの同一のデコーダを使用し、各々のデコーダにてバイリニアパッチの所定のテクセルをデコードすることである。例えば、図1Aの事例においては、テクセルブロック10を表わすエンコード済みのテクセルブロックが、4つのデコーダに入力される。第1のデコーダが、テクセル(1,2)30を出力し、テクセル(2,2)が、第2のデコーダから得られ、第3および第4のデコーダが、バイリニアパッチのテクセル(1,3)および(2,3)36をそれぞれ生成する。ここでは、原点がテクセルブロック10の左上に位置する座標系を仮定している。図1Dにおいては、テクセルブロック10のエンコード済みのテクセルブロックが、第1のデコーダに入力されて、テクセル(3,3)10が生成され、テクセルブロック12のエンコード済みのテクセルブロックが、第2のデコーダによって処理されて、テクセル(0,3)32が得られる。テクセル(3,0)34が、テクセルブロック14のエンコード済みのテクセルブロックに基づいて第3のデコーダから得られ、第4のデコーダが、テクセルブロック16のエンコード済みのテクセルブロックからテクセル(0,0)36を出力する。
したがって、このやり方で、どの種類の状況(図1A〜1D)に直面しても、各々のクロックサイクルにおいて2×2のバイリニアパッチを生成することが可能である。高性能なラスタ化ハードウェアは、トリリニアフィルタリングを可能にするために、各々のクロックサイクルにおいて上述のようなバイリニアパッチを2つ生成する。しかしながら、このような場合には、先行技術の技法によれば、8つの同一のデコーダが必要である。
しかしながら、並列のデコーダでのテクセルの同時処理という考え方は、デコーディングシステムの複雑さを劇的に増大させ、これはシンクライアントにとって問題である。例えば、すでに述べたPLANARモードをETCデコーディングシステムに追加することは、加算器の数として定義される複雑さの増大(デコーダあたり6個の加算器から、21個の加算器へ)につながると考えられる[3]。このように、PLANARは、ETCの3.5倍の加算器を使用し、4つのETCデコーダおよび4つのPLANARデコーダを有するデコーディングシステムの複雑さが、3.5倍も増加すると考えられる。
本明細書に開示の実施形態は、同一の並列デコーダを利用しないことで、デコーディングシステムの複雑さを低減する。きわめて対照的に、デコーダがパッチ内の異なる数のテクセルおよび異なるテクセル位置を取り扱うように設計される場合、デコーダについて異なるデコーダ回路を使用することができる。
一般的な実施形態においては、デコーディングシステムが、N個の異なるデコーダを備える。例えば、Nが4と例示される、このようなデコーディングシステム1が、図3に示されている。一般的な実施形態において、Nは2以上の整数であり、好ましくは4に等しい。各々のデコーダ100、200、300、400が、他のN−1個のデコーダの回路とは異なる回路を有している。したがって、デコーディングシステム1は、従来技術と異なり同一のデコーダを含んでおらず、むしろきわめて対照的に、異なる独自の回路を有する異なるデコーダ100、200、300、400を備えている。N個のデコーダ100、200、300、400の回路の相違は、或る1つのデコーダの回路要素の組み合わせが、残りのデコーダにおける回路要素の組み合わせと異なることを意味する。したがって、デコーダ100、200、300、400は、異なる実装コストおよび複雑さを有している。
各々のデコーダ100、200、300、400は、エンコード済みのテクセルブロックをデコードして、少なくとも1つのテクセル値を生成するように、さらに構成されている。さらに、デコーディングシステム1は、N個のデコーダ100、200、300、400へと接続され、少なくともN個のテクセル値、好ましくは、N個のテクセル値を選択的に出力するように構成された値選択部500を備えている。これらの少なくともN個のテクセル値は、N個のデコーダ100、200、300、400のうちの少なくとも1個から出力される。さらに、値選択部500は、どの少なくともN個のテクセル値を出力すべきか、およびどのデコーダからのテクセル値を出力すべきかを、N個のテクセルのうちの少なくとも1つを含むテクセルブロックの境界に対する、少なくともN個のテクセル値に関する少なくともN個のテクセルの位置に基づいて選択する。したがって、デコーディングシステム1によってテクセル値を生成すべきN個のテクセルについて、それらテクセルのテクセルブロックに対する位置が、どのデコーダから、またはN個のデコーダ100、200、300、400のうちのどのデコーダからテクセル値を取り出すべきかを決定する。デコーディングシステム1のピクセル計算部600が、値選択部500へと接続され、値選択部500によって選択的に出力される少なくともN個のテクセル値に基づいて、デコードされたピクセルのデコード後のピクセル値を計算するように構成されている。
一般的な実施形態は、デコーダ100、200、300、400のうちの一部をテクセルブロック内の特定のテクセル位置のテクセルだけしか処理できないように制限することによって、デコーダの複雑さの低減を達成する。結果として、これらのデコーダ100、200、300、400の回路を、そのようなデコーダについての制限が存在しない先行技術の事例と比べて、大幅に低減することができる。
好ましい実施形態においては、N個のデコーダ100、200、300、400のうちの第1のデコーダ100が、入力されるエンコード済みのテクセルブロックをデコードして、N個のテクセル値を生成するように構成される。次いで、値選択部500が、N個のテクセルがテクセルブロックの境界の内側に位置する場合に、これらN個の第1のデコーダ100からのテクセル値をさらにピクセル計算部500へと選択的に出力するように構成される。図1Aが、N=4におけるこの事例を示している。すなわち、バイリニアパッチ20の4つのテクセル30〜36がすべて、単一のテクセルブロック10の内側に位置する場合、4つのテクセル値はすべて、第1のデコーダ100によって生成される。これは、他のデコーダ200、300、400からのいかなる出力も、値選択部500によって選択されることがなく、ピクセル計算部600におけるデコード後のピクセル値の計算に使用されることがないことを意味する。
N個のテクセルのうちの半分のテクセル30、34(30、32)がテクセルブロック10の境界の内側に位置し、N個のテクセルのうちの残りの半分のテクセル32、36(34、36)が隣のピクセルブロック12(14)の境界の内側に位置する場合(図1B(図1C)を参照)、値選択部500は、好ましくは、第1のデコーダ100からN個のテクセル値のうちの半分を選択的に出力し、第2のデコーダ200からN個のテクセル値のうちの残りの半分を選択的に出力するように構成される。
N=4での好ましい実施形態においては、第1のデコーダ100が、入力されるエンコード済みのテクセルブロックをデコードして4個のテクセル値を生成するように構成された第1の回路を有する。第2のデコーダ200は、第2の回路を有し、入力されるエンコード済みのテクセルブロックに基づいて2つのテクセル値を出力する。第3のデコーダ300および第4のデコーダ400は、第3の回路および第4の回路をそれぞれ備える。第3のデコーダ300および第4のデコーダ400の各々は、入力されるエンコード済みのテクセルブロックに鑑みて、ただ1つのテクセル値を出力する。
図1Dに示されている状況においては、好ましくは4つのデコーダ100、200、300、400のすべてが、値選択部500によって選択されるテクセル値を出力する。すなわち、値選択部500が、第1のデコーダ100から第1のテクセル値を、第2のデコーダ200から第2のテクセル値を、第3のデコーダ300から第3のテクセル値を、最後に第4のデコーダ400から第4のテクセル値を、選択的に出力するように構成される。この場合、4つのテクセル30〜36の各々が、それぞれのテクセルブロック10〜16に位置している。
図2が、一実施形態によるデコーディングシステム1を有する実装の構造を概略的に示している。この構造は、エンコード済みのテクセルブロック40を含むメモリ位置を有するメモリ5(典型的には、RAM)を備えている。グラフィカル・プロセッシング・ユニット(GPU)4が、メモリバスを介してメモリ5に接続されている。GPU4は、テクセルブロックを特定するためのテクセルブロック特定部2を含んでおり、テクセルブロックのエンコード済みのブロックが、メモリ5から取り出されるべきである。テクセルブロック特定部2が、基本的には、メモリ5におけるエンコード済みのテクセルブロック40のアドレスを計算し、メモリアクセス要求を、バスを介してメモリ5へと送信する。テクセルブロックに割り当てられたメモリ位置、または、テクセルブロックに専用のメモリ位置に存在するエンコード済みのテクセルブロック40が、メモリ5から読み出され、バスを介してデコーディングシステム1またはGPU4のキャッシュ3へと転送される。
デコーディングシステム1は、エンコード済みのテクセルブロックまたはデコード後のテクセル値を保存するためのキャッシュ位置または領域を有する少なくとも1つのキャッシュ3を備え、あるいはそのような少なくとも1つのキャッシュ3に接続されている。別の実施形態においては、GPU4が、テクスチャキャッシュおよび色バッファキャッシュなどの複数のキャッシュ3を備えることができる。GPU4は、典型的には、デコード後の画像が表示される表示画面6へと接続される。
GPU4およびGPU4に備えられるユニット1、2、3を、例えばグラフィクスカード、ビデオカード、またはマザーボードの1つまたは複数のチップにてもたらすことができる。図2の実装の構造を、任意の画像またはテクスチャの処理ユニット、あるいは、例えばコンピュータ、ゲーム機、ポータブルデバイス(携帯電話機など)、またはメディア処理デバイスなどを含むデバイスに実装することができる。
以下で、デコーディングシステムの実施形態を、種々の実装の実施例に関連してさらに詳しく説明する。これらの実施例は、[3、4]に記載のPLANARに従ってエンコードされたテクセルブロックの処理に適するようにさらに設計されている。要約すると、PLANARは、クロミナンスが滑らかに変化するテクセルブロックを処理するために設計されている。PLANARは、テクセルブロックの色成分(赤、緑、青)を平面近似によって近似する。平面を特定するためには、テクセルブロック内の3つの位置における色を特定すれば充分である。図5が、この考え方を、テクセルブロック10に対する特定の位置の3つの赤色成分R、R、およびRによって示している。この3つの赤色成分の位置によって、テクセルブロック10のあらゆる位置の赤色成分を、以下の式を使用して計算することができる。
Figure 2013512482
青色および緑色成分が、赤色成分と同じやり方で計算される。したがって、図4に示されるとおりのエンコード済みのテクセルブロック40は、色成分ごとに3つの色符号語41〜49を含み、すなわちX、X、およびXを含みここで、Xは、赤色成分についてRであり、緑色成分についてGであり、青色成分についてBである。好ましい実施例においては、好ましくは赤色の符号語41〜43および青色の符号語47〜49の各々について6個のビットが費やされ、緑色の符号語44〜46の各々について7個のビットが費やされる。なぜならば、人間の眼は、緑色成分に対する感度が赤色および青色成分に対する感度と比べて高いからである。エンコード済みのテクセルブロックの総サイズは、57ビットになり、ETC2[3]の57ビットモードに正確にフィットする。PLANARが、ETCの特別なモードとしてではなく、単独で使用される場合には、エンコード済みのテクセルブロック40が、好都合には色符号語41〜47のうちの1つを除くすべてに7ビットを費やし、1つ(Gなど)に8ビットを費やす。したがって、総サイズは64ビットになる。
PLANARの実施態様においては、図3の第1のデコーダ100が、4つのテクセルのすべてがテクセルブロックの内側にある任意の2×2のバイリニアパッチ(図1Aを参照)をデコードすることができる。第2のデコーダ200は、より遅れており、テクセルブロックの第1の行または第1の列のテクセル(図1Bのテクセル32、36および図1Cのテクセル34、36を参照)のテクセル値を生成する。したがって、第2のデコーダ200は、好ましくは一度に2つのテクセル値を出力し、すなわち2×1のパッチまたは1×2のパッチのいずれかを出力する。第3のデコーダ300は、エンコード済みのテクセルブロックをデコードして、単一のテクセル値を生成し、すなわち好ましくは座標(3,0)に位置する右上のテクセル値(図1Dのテクセル34を参照)を生成する。第4のデコーダ400は、好ましくは原点(0,0)のテクセル(図1Dのテクセル36を参照)の単一のテクセル値を出力する。
これは、図1Aのようにバイリニアパッチ20のすべてのテクセル30〜36がテクセルブロック10の境界の内側にある場合に、第1のデコーダ100からの出力が値選択部500によって選択されることを意味する。図1Bおよび図1Cのように、2つのテクセル30、34(30、32)が或る1つのテクセルブロック10に位置し、2つのテクセル32、36(34、36)が隣のテクセルブロック12(14)に位置する場合、左の2つのテクセル30、34または上の2つのテクセル30、32のテクセル値が、第1のデコーダ100から得られ、右の2つのテクセル32、36または下の2つのテクセル34、36からのテクセル値が、第2のデコーダ200から得られる。最後に、図1Dのように4つのテクセル30〜36がすべて異なるテクセルブロック10〜16に位置する場合、値選択部500は、左上のテクセル30のテクセル値を第1のデコーダ100から選択し、右上のテクセル32のテクセル値を第2のデコーダ200から選択し、右下のテクセル34のテクセル値を第3のデコーダ300から選択し、左下のテクセル36のテクセル値を第4のデコーダ400から選択する。このようにして、バイリニアパッチ20の4つのテクセル30〜36のすべてを、単一のクロックサイクルにて得ることが可能でありながら、好都合なことに第2〜4のデコーダ200、300、400をきわめてわずかなハードウェアしか使用せずに実現することができる。

Figure 2013512482

から、原点(0,0)のテクセルは、とくに簡単に
Figure 2013512482

と計算される。上述のように、第4のデコーダが、好ましくは原点のテクセルだけをデコードするように構成される。これは、第4のデコーダの回路をきわめて単純に製作できることを意味する。図6が、色成分のうちの1つのための第4のデコーダ400の回路を示している。この図から見られるとおり、唯一の構造は、入力される第1の色符号語Xを所定のビット長、好ましくは、8ビットへと拡張するように構成された、随意によるが、存在する方が好ましいエクステンダ480である。図10に関して本明細書においてさらに開示されるとおり、このようなエクステンダ480を、いかなるハードウェア構造も必要とせずに、それぞれの色成分を第4のデコーダ400の出力へと保存するワイヤのみで実現することが可能である。
したがって、第4のデコーダ400を、いかなるゲートも必要とせずに実現することができる。
第3のデコーダ300は、上述の検討に従い、好ましくは位置(3,0)
Figure 2013512482

のテクセルを処理しなければならない。最後の項は寄与しないため、取り除くことが可能である。演算子round()を取り除くために、結果を(1/4)を単位にして計算することができ、2を加え、2回の右へのシフト(>>2で表わされている)を行なうことができる。X(3,0)=((X<<2)+(X−X)×3+2)>>2。
3による乗算を、その数を、その数をシフトさせたものに加えることによって代用することができ、すなわち、3t=2t+t=(t<<1)+t
であり、ここでt=X−Xである。したがって、上記式を、
X(3,0)=((X<<2)+(t<<1)+t+2)>>2
と記述することができる。
各々の加算器において、キャリーインを0ではなくて1に設定することによって1を加えることができる。したがって、2の加算を、このやり方で2つの加算器を変更することによって置き換えることができる。以下の式において、キャリーインが1に設定された加算器を示すために、+!が使用される。X(3,0)=((X<<2)+!(t<<1)+!t)>>2。
別の表現によれば、
Figure 2013512482

である。上記と同様にして、この式を、X(3,0)=(X+!((X<<1)+!X))>>2
と記述することができる。この式は、上記提示の式と比べてハードウェアにおける実現がより容易である。
シフト演算子を、ワイヤを異なる接続にすることによって実現することができる。X(3,0)を計算するために必要な残りの演算は、3つの加算だけである。
図7が、第3のデコーダ300の回路の実施形態を示している。第3のデコーダ300は、第2の色符号語Xを1ビット位置だけ左方にシフトさせ、左シフト後のビット列を得るための左シフト演算子310を備えている。左シフト演算子310は、キャリーインが1に設定された第1の加算器320へと接続されている。この第1の加算器320は、左シフト後のビット列を第2の色符号語Xに加える。得られる出力が、キャリーインが1に設定されるとともに、第1の加算器320へと接続された第2の加算器322において、第1の色符号語Xへと加えられる。最後に、第2の加算器322は、第2の加算器322の出力に相当するビット列を2ビット位置だけ右方にシフトさせて、第3のデコーダ300の最終的な出力、すなわち、テクセル値X(3,0)を形成するように構成された右シフト演算子330へと接続されている。
随意によるが、好ましい実施形態においては、第1の色符号語Xおよび第2の色符号語Xが、好ましくは最初に6または7ビットから8ビットへと拡張または拡大される。結果として、第1のエクステンダ380が、好ましくは第2の加算器322へと接続され、第1の色符号語Xを所定のビットサイズ、好ましくは、8ビットへと拡張するように構成される。第2のエクステンダ382が、好ましくは左シフト演算子310および第1の加算器320へと接続され、第2の色符号語Xを所定のビットサイズ(好ましくは、8ビット)へと拡張または拡大するように構成される。
エクステンダは、lビットのビット列のk個の最上位ビット(k<l)がk個の最下位ビットへとコピーされて、l+kビットのビット列が得られるような単純な配線を行なうことによって、きわめて容易に実現可能である。図10が、緑色成分に適した第1および第2のエクステンダ380、382の実施態様の概略図である。この図に見られるように、7ビットの入力ビット列の最上位ビットが最下位ビットの位置へとコピーされ、8ビットの出力ビット列が得られる。赤色および青色成分については、2つの最上位ビットが2つの最下位ビット位置へとコピーされ、6ビットのビット列が8ビットのビット列になる。
上述のエンコード済みのテクセルブロックのビットサイズ、すなわち、赤色および青色成分については色符号語ごとに6ビット、緑色成分については色符号語ごとに7ビット、および2つのエクステンダの使用において、第3のデコーダ300のハードウェア回路を、各々の加算器が1ビットあたり4.4ゲートのコストである場合には、合計で250.8個のゲートで実現することができる。
R/G/B:9ビットの加算器が1個→9×4.4=39.6ゲート
10ビットの加算器が1個→10×4.4=44ゲート
合計:3×83.6=250.8ゲート
第3のデコーダ300においても、本明細書においてさらに後述される第1および第2のデコーダの好ましい実施態様と同様に、クランパは不要である。
図8が、第2のデコーダのハードウェアの実装の実施形態を示している。第2のデコーダは、第2の色符号語Xおよび第3の色符号語Xの一方を出力するように構成された第1のマルチプレクサ250を備えている。色符号語の選択は、第2のデコーダ200へと入力されるエンコード済みのテクセルブロックについて、4つのテクセルのうちの半分がテクセルブロックの境界の内側の第1の行または第1の列のどちらに位置するのかに応じて決まる。2つのピクセルが第1の行に位置する場合、第2の色符号語Xが第1のマルチプレクサ250から出力され、そうでない場合には、第3の色符号語Xが出力される。否定演算子240が、第1の色符号語Xの符号を反転させるように構成されている。第1の加算器220が、第1のマルチプレクサ250および否定演算子240へと接続され、これらのユニット240、250からの出力を足し合わせて、差X−XまたはX−Xを形成する。別の実施態様では、否定演算子240がNOT演算子で置き換えられ、第1の加算器220が、キャリーインが1に設定された加算器である。通常は、NOT演算子をキャリーインが1に設定された加算器とともに使用することが、ハードウェアの複雑さという点で、否定演算子および通常の加算器よりも好ましい。
左シフト演算子210が、第1の加算器220へと接続され、加算器の出力に相当するビット列を1ビット位置だけ左方にシフトさせるように構成される。
第2のマルチプレクサ252が、テクセルの行座標および列座標の一方を出力するように構成される。このテクセルは、第2のデコーダ200へと入力されるエンコード済みのテクセルブロックについて、テクセルブロックに存在する2つのテクセルの内の第1のテクセルである。図において、Sがこのテクセルの列座標を指し、Sが行座標を指す。2つのテクセルが第1の行に位置する場合、列座標Sが第2のマルチプレクサ252から出力され、そうでない場合には行座標Sが出力される。
第3のマルチプレクサ254が、左シフト演算子210および第1の加算器220へと接続される。第3のマルチプレクサ254は、2×(XH/V−X)=2d、すなわち左シフト演算子210からの出力と、(XH/V−X)=d、すなわち第1の加算器220の出力との間で選択を行なう。選択は、第2のマルチプレクサ252から出力される行座標または列座標の最上位ビットの値に基づいて行なわれる。
OR演算子360が、第2のマルチプレクサ352へと接続され、第2のマルチプレクサ352からの行座標または列座標の最上位ビットおよび最下位ビットについてOR演算を実行するように構成される。OR演算子360および第3のマルチプレクサ254は、さらにAND演算子270へと接続される。このAND演算子270は、マルチプレクサの出力について、OR演算子260からの単一のビットとのビットごとのAND演算を実行する。結果として、ここでは、ORの出力が1binである場合にマルチプレクサの出力が維持され、ORの出力が0binである場合にAND演算子270からの出力がゼロになる。したがって、AND演算子270からの出力は、2d、d、または0である。
第2の加算器222が、AND演算子270へと接続され、AND演算子270の出力、および第1の色符号語Xに続く2つの最下位ビットとしての10binを有するビット列を加えるように構成されている。このビット列は、f=4×X+2に相当し、これは、第1の色符号語Xのビット列を2ビット位置だけ左方へとシフトさせ、シフト後に本来であればゼロになる最後の2ビットとして2=10binを挿入することによって実現される。したがって、第2の加算器222からの出力は、2d+f、d+f、またはfである。
第3の加算器224が、第1の加算器220および第2の加算器222へと接続され、これらの加算器220、222からの出力を加えるように構成される。したがって、この第3の加算器224は、3d+f、2d+f、またはd+fという結果をもたらす。第1の右シフト演算子230が、第3の加算器224へと接続され、第3の加算器224からのビット列を2ビット位置だけ右方へとシフトさせて、バイリニアパッチの第1の列または第1の行の2つのテクセルのうちの下方または右方のテクセルのテクセル値を得るように構成されている。第2の右シフト演算子232が、第2の加算器222へと接続され、この加算器の出力を2ビット位置だけ右方へとシフトさせて、第1の列または第1の行の2つのテクセルのうちの上方または左方のテクセルのテクセル値を形成する。
入力される色符号語X、X、Xは、好ましくは図7の第3のデコーダと同様に6または7ビットから8ビットへと拡張される。したがって、随意によるが好ましいエクステンダ280、282、284が、好ましくは入力端子に配置され、第1のエクステンダ280が、この場合には10ビットのビット列を形成すべく2つの最下位ビットとして10binを加える前に、第1の色符号語Xを拡張するように構成される。第1のエクステンダ280は、否定演算子240にも接続されている。第2のエクステンダ282および第3のエクステンダ284は、第1のマルチプレクサ250へと接続され、それぞれ第2の色符号語Xおよび第3の色符号語Xを拡張する。
随意による実施態様では、右シフト演算子230、232が、好ましくはそれぞれのクランパまたはクランプ演算子290、292へと接続される。これらのクランパ290、292は、右シフト演算子230、232からの出力を最小テクセル値および最大テクセル値の間にクランプするように構成される。したがって、クランパ290、292は、第2のデコーダ200からの出力ビット列が許容値区間内にあることを保証する。このような許容値区間の実施例は、第2のデコーダ200からの出力ビット列が8ビットであるべき場合の0〜255である。
図11が、図8の第2のデコーダまたは図9の第1のデコーダに使用されるクランパなど、クランパ190〜196、290、292のハードウェアの実装の実施例を示している。このクランパの実施形態は、[−1024,1023]の区間の値を潜在的に表わすことができる11ビットのビット列を、[0,255]の区間の値を表わす8ビットのビット列へとクランプするように設計されている。クランパ190〜196、290、292は、入力ビット列の8つの最下位ビットのうちの1つをそれぞれ受け取る8個のOR演算子701〜708を備えている。それぞれのOR演算子701〜708の他方の入力は、もう1つのOR演算子700の出力に接続されている。このOR演算子700は、入力ビット列の2つの最上位ビットを受け取る。8つのOR演算子701〜708の出力は、それぞれ対応するAND演算子711〜718へと接続されている。それぞれのAND演算子711〜718の他方の入力は、入力ビット列の符号ビットを受け取る。
クランパ190〜196、290、292の別の実装の実施形態が、図12に示されている。この実施形態においては、8つのOR演算子が、8つのNOR演算子721〜724によって置き換えられている。これに対応して、図11の8つのAND演算子も、8つのNOR演算子731〜738によって置き換えられている。加えて、NOT演算子740が、8つのNOR演算子731〜738と入力ビット列の符号ビットの入力との間に接続されている。
図12に示したハードウェアの実施形態を実現するためのコストは、以下のとおりである。
16個のNOR→16×1=16ゲート
1個のOR→1×1.5=1.5ゲート
1個のNOT→1×0.5=0.5ゲート
合計:16+1.5+0.5=18ゲート
図8の第2のデコーダ200の実装の実施例について、ゲートの数は、クランパを除いて、以下のとおりである。
R/G/B:8ビットの加算器が1個→8×4.4=35.2ゲート
11ビットの加算器が1個→11×4.4=48.4ゲート
12ビットの加算器が1個→12×4.4=52.8ゲート
8ビットのmuxが1個→8×2.2=17.6ゲート
10ビットのmuxが1個→10×2.2=22ゲート
2ビットのmuxが1個→2×2.2=4.4ゲート
1ビットのORが1個→1×1.5=1.5ゲート
10ビットのANDが1個→10×1.5=15ゲート
8ビットのNOTが1個→8×0.5=4ゲート
合計:3×200.9=602.7ゲート
最後に、図9が、第1のデコーダ100のハードウェアの実装の実施例である。第1のデコーダ100は、第1の色符号語Xの符号を反転させるように構成された否定演算子140を備えている。第1の加算器120が、否定演算子140へと接続され、符号を反転させた第1の色符号語を第2の色符号語Xに加え、g=X−Xを得る。第2の加算器122も、否定演算子140へと接続され、符号を反転させた第1の色符号語を第3の色符号語Xに加え、h=X−Xを得る。別の実施態様では、否定演算子140がNOT演算子で置き換えられる。したがって、第1の加算器120および第2の加算器122の両方が、1に設定されたキャリーインを有する。
第1の左シフト演算子110が、第1の加算器120へと接続され、この加算器の出力を1ビット位置だけ左方へとシフトさせ、2gに相当する左方にシフトされたビット列を得る。第2の左シフト演算子112が、第2の加算器122へと接続され、この加算器の出力を1ビット位置だけ左方へとシフトさせ、2hのビット列を得る。第1のマルチプレクサ150が、第1の左シフト演算子110および第1の加算器120へと接続され、列座標Sの最上位ビットに基づいてgおよび2gの間の選択を行なうように構成されている。これに対応して、第2のマルチプレクサ152が、第2の左シフト演算子112および第2の加算器122へと接続され、行座標Sの最上位ビットに基づいてhおよび2hの間の選択を行なう。列座標および行座標は、2×2のバイリニアパッチの左上のテクセル、すなわち、図1A〜図1Dのテクセル30の座標である。
第1のOR演算子160が、列座標Sの最上位ビットおよび最下位ビットについてOR演算を実行する。第2のOR演算子162が、行座標Sの最上位ビットおよび最下位ビットについてOR演算を実行する。第1のOR演算子160および第1のマルチプレクサ150が、マルチプレクサの出力について第1のOR演算子160からの単一のビットとのビットごとのAND演算を実行する第1のAND演算子170へと接続される。したがって、第1のAND演算子170からの出力は、2g、g、または0である。第2のAND演算子172が、第2のマルチプレクサ152および第2のOR演算子162へと接続されている。第2のAND演算子172は、マルチプレクサの出力について、第2のOR演算子162からのビットとのビットごとのAND演算を実行し、2h、h、または0の出力を得る。
第3の加算器124が、第1のAND演算子170へと接続され、加算器の出力を、10binを第1の色符号語に続く2つの最下位ビットとして有しているビット列へと加える。このビット列は、すでに述べたようにf=4×X+2に相当する。したがって、加算器の出力は、2g+f、g+f、またはfである。第4の加算器126が、第1の加算器120および第3の加算器124へと接続され、これらの加算器120、124からの出力を足し合わせ、3g+f、2g+f、またはg+fを得るように構成されている。第5の加算器128が、第2の加算器122および第2のAND演算子172へと接続され、これら2つのユニット122、172からの出力を足し合わせ、3h、2h、またはhを得る。
第6の加算器121が、第3の加算器124および第2のAND演算子172へと接続され、これらのユニット124、172からの出力を足し合わせるように構成されている。第1の右シフト演算子130が、第6の加算器121へと接続され、加算器の出力のビット列を2ビット位置だけ右方へとシフトさせ、図1Aのテクセル30のテクセル値を得るように構成されている。
第7の加算器123が、第4の加算器126および第2のAND演算子172へと接続され、これらのユニット126、172からの出力を足し合わせるように構成されている。第2の右シフト演算子132が、第7の加算器123へと接続され、加算器の出力のビット列を2ビット位置だけ右方へとシフトさせ、図1Aのテクセル32のテクセル値を得るように構成されている。
第8の加算器125が、第3の加算器124および第5の加算器128へと接続され、これらの加算器124、128からの出力を足し合わせるように構成されている。第3の右シフト演算子134が、第8の加算器125へと接続され、加算器の出力のビット列を2ビット位置だけ右方へとシフトさせ、図1Aのテクセル34のテクセル値を得るように構成されている。
第9の加算器127が、第4の加算器126および第5の加算器128へと接続され、これらの加算器126、128からの出力を足し合わせるように構成されている。第4の右シフト演算子136が、第4の加算器127へと接続され、加算器の出力のビット列を2ビット位置だけ右方へとシフトさせ、図1Aのテクセル36のテクセル値を得るように構成されている。
随意によるが好ましい実施態様においては、入力される色符号語X、X、Xが、最初に6または7ビットから8ビットへと拡張される。したがって、第1のビットエクステンダ180が、好ましくは否定演算子140へと接続され、10ビットのビット列を得るべく10binが最下位ビットとして加えられる前に、第1の色符号語Xを所定のビット列、好ましくは、8ビットへと拡張または拡大するようにさらに構成される。同様に、第2のエクステンダ182が、第1の加算器120へと接続され、第2の色符号語Xを拡張するように構成される。最後に、第3のエクステンダ184が、第2の加算器122へと接続され、第3の色符号語Xを拡張するように構成される。
随意による実施態様においては、右シフト演算子130〜136の各々が、好ましくはそれぞれのクランパまたはクランプ演算子190〜196へと接続される。これらのクランパ190〜196は、右シフト演算子130〜136からの出力を最小テクセル値および最大テクセル値の間にクランプするように構成される。したがって、クランパ190〜196は、第1のデコーダ100からの出力ビット列が許容値区間内にあることを保証する。そのような許容値区間の実施例は、第1のデコーダ100からの出力ビット列が8ビットであるべき場合の0〜255である。
図8の実装の実施例におけるゲートの数は、随意によるクランパ190〜196を除いて、以下のとおりである。
R/G/B:8ビットの加算器が2個→16×4.4=70.4ゲート
10ビットの加算器が1個→10×4.4=44.4ゲート
11ビットの加算器が1個→11×4.4=48.4ゲート
12ビットの加算器が5個→60×4.4=264ゲート
10ビットのmuxが2個→20×2.2=44ゲート
1ビットのORが2個→2×1.5=3ゲート
10ビットのANDが2個→20×1.5=30ゲート
8ビットのNOTが1個→8×0.5=4ゲート
合計:3×507.8=1523.4ゲート
したがって、デコーディングシステムの4つのデコーダを、クランパを除いて、わずかに0+250.8+602.7+1523.4=2376.9のゲートで実現することができる。
先行技術[3]に提案されているような4つの同一のデコーダを備える伝統的な実施態様は、図9の第1のデコーダにきわめてよく似て見えると考えられる。唯一の相違は、この図のような4つではなく、ただ1つのテクセルが出力に必要とされる点にあると考えられる。したがって、4つの加算器121、123、125、127が、2つの4入力マルチプレクサおよび後続の加算器によって置き換えられると考えられる。これは、色チャネルごとに6個の加算器、4個のマルチプレクサ、および2つのAND演算子を必要とすると考えられる。すなわち、4つのデコーダおよび3つの異なる色成分により、先行技術によるハードウェアのコストまたは複雑さは、以下のようであると考えられる。
6×3×4=72個の加算器
4×3×4=48個のマルチプレクサ
2×3×4=24個のAND演算子
これを、下記しか必要としない図6〜8に開示の実装の実施形態と比較すべきである。
(9+3+2+0)×3=42個の加算器
(2+3+0+0)×3=15個のマルチプレクサ
(2+1+0+0)×3=9個のAND演算子
すなわち、加算器の数が、72個から42個へと減少し、すなわち42%減少している。マルチプレクサは、相対的にさらに減少しており、48個から15個へと、69%も減少している。
図13が、値選択部500のハードウェア実装の実施形態を示している。この実施形態において、値選択部500は、バイリニアパッチのテクセル30〜36のテクセル値をそれぞれ出力する4つのマルチプレクサ510を備えている。第1のマルチプレクサ510が、第1のデコーダ100の4つの出力へと接続され、4つのビット列のうちの1つをバイリニアパッチの第1のテクセル30のテクセル値として選択する。第2のマルチプレクサ520が、第1のデコーダ100の第2および第4の出力、ならびに第2のデコーダ200の2つの出力に接続されている。この第2のマルチプレクサ520は、バイリニアパッチの第2のテクセル32のテクセル値を出力する。第3のマルチプレクサ530は、第1のデコーダ100の第3および第4の出力、第2のデコーダ200の第1の出力、ならびに第3のデコーダ300の単一の出力に接続されている。第3のマルチプレクサ530は、バイリニアパッチの第3のテクセル34のテクセル値を出力する。最後に、第4のマルチプレクサ540が、第1のデコーダ100の第4の出力、第2のデコーダ200の第2の出力、および第4のデコーダ400の単一の出力へと接続されている。第4のマルチプレクサ540は、バイリニアパッチの第4のテクセル36のテクセル値を選択して出力する。
テクセルブロックの境界に対するバイリニアパッチの位置によって、どのビット列がマルチプレクサ510〜540から出力されるかが決定される。すなわち、図1Aに示した状況においては、第1のデコーダ100の4つの出力からのビット列が、マルチプレクサ510〜540によって選択される。さらに詳しくは、第1のマルチプレクサ510が、第1のデコーダ100の第1の出力からのビット列を出力し、第2のマルチプレクサ520が第2の出力からのビット列を出力し、第3のマルチプレクサ530および第4のマルチプレクサ540が、第3および第4のデコーダの出力からのビット列をそれぞれ出力する。図1Bに示されているように位置するバイリニアパッチにおいては、第1のマルチプレクサ510が、第1のデコーダ100の第2の出力からのビット列を選択する。第2のマルチプレクサ520が、第2のデコーダ200の第1の出力のビット列を選択する。第3のデコーダ300が、第1のデコーダ100からの第4の出力のビット列を選択し、第4のデコーダ400が、第2のデコーダ200の第2の出力からのビット列を選択する。次いで、この考え方を、図1Cおよび図1Dに示すとおりの他の2つのパッチ位置にも同様のやり方で当てはめることができる。
図13に示すとおりの値選択部500の実施形態の実現について、ゲートの数に関するコストは、以下のとおりである。
8ビットの4入力muxが3個→24×6.6=158.4ゲート
8ビットの3入力muxが1個→8×4.4=35.2ゲート
合計:158.4+35.2=193.6ゲート
デコーダおよび値選択部の総コストは、クランパも含め、2376.9+6×18+193.6=2678.5ゲートである。
図8および図9に示すとおりの第1および第2のデコーダのクランパが省略され、代わりに値選択部500のマルチプレクサ510〜540のうちの1つへとそれぞれが接続される4つのクランパによって置き換えられる場合、値選択部500を実現するコストが、3個の11ビットの4入力マルチプレクサおよび1個の11ビットの3入力マルチプレクサが必要になると考えられるため、193.6ゲートではなくて266.2ゲートのコストへと上昇すると考えられる。
デコーディングシステムのピクセル計算部を、当技術分野においてよく知られた技法に従ってハードウェアにて実現することができる。さらに詳しくは、バイリニアフィルタリングの場合において、値選択部からの4つのテクセル値がA、B、C、およびDと称されると仮定する。したがって、ピクセル計算部は、ピクセル値を
ピクセル値=A(1−dx)(1−dy)+Bdx(1−dy)+C(1−dx)dy+Ddxdy
と計算し、ここでdxは、テクセルAの中点とピクセルのサンプル点との間のx軸に沿った距離であり、dyは、テクセルAの中点とピクセルのサンプル点との間のy軸に沿った対応する距離である。
上述の式は、赤色、緑色、および青色成分について並行に実行される。次いで、ハードウェアの実装形態を、この式に基づいて定めることができる。例えば、サンプル点の位置を3桁の2進化10進数で表現できると仮定し、例えばdxの位置が以下の値[0.000,0.125,0.250,0.375,0.500,0.625,0.750,0.875]をとることができると仮定する。そのような場合、位置を8つ定めることができ、上述の値を[0,1,2,3,4,5,6,7]によって表わすことができる。したがって、上述の式を
ピクセル値=(A(8−DX)(8−DY)+BDX(8−DY)+C(8−DX)DY+DDXDY)>>6
と書き直すことができ、ここで、DX=8×dxおよびDY=8×dyであり、DX、DYは、0〜7の間の整数である。
第2の項8DX(8−DY)を調べると、DXおよび(8−DY)の両方が0〜8の間の整数であることが分かる。8を表わすために、4ビットが必要である。各々の入力において4ビットを取り扱って8ビットのビット列を出力する乗算演算子を使用することができる。しかしながら、乗算演算子が出力できる最大の数は7×8=56であり、したがって6つの最下位ビットだけが出力から必要である。
次いで、乗算演算子からの出力を、テクセル値B、好ましくは、0〜255の間の数で乗算すべきである。この乗算を、8ビットの入力を2つ有し、16ビットのビット列を出力する乗算演算子によって処理することができる。しかしながら、考えられる最大の数が56×255<214であるため、乗算演算子からの14個の最下位ビットだけが必要である。
次いで、同様の方法が、式の残りの項についても実行され、それぞれの最後の乗算演算子からの出力が合計され、右方への6段階のシフトが行なわれて、最終的な8ビットのピクセル値が得られる。
上述の実装の実施例を、あくまでもデコーディングシステムの各ユニットをどのようにハードウェアにおいて実現できるかについての好ましいがこれらに限られない実施形態と理解すべきである。種々の変形形態が可能であり、本発明の範囲に包含される。重要な特徴は、デコーダに含まれる回路が互いに相違することで複雑さが増すものの、各々のデコーダがパッチ内の所定の位置の1つまたは複数のテクセルのテクセル値を処理および出力するように構成される点にある。
図14が、少なくとも1つのエンコード済みのテクセルブロックをデコードすることによってデコード後のピクセルを生成する方法を説明するフロー図である。この方法は、工程S1にて始まり、工程S1において、少なくともN個のテクセル値、すなわち、パッチについて、テクセルブロックの境界に対する位置が割り出される。それぞれのエンコード済みのテクセルブロックは、割り出されたパッチの相対位置に応じて、同じエンコード済みのテクセルブロックまたは異なるエンコード済みのテクセルブロックが、デコード後のテクセル値を得るためにN個のデコーダへと入力される。次の工程S2において、少なくともN個のテクセル値が、N個のデコーダのうちの少なくとも1つから選択的に出力される。工程S2において選択すべき特定の少なくともN個のテクセル値、およびそれらを取り出すべきデコーダは、工程S1において得られたパッチの相対位置に基づいて決定される。さらに、N個のデコーダの各々は、残りのN−1個のデコーダの回路とは異なる個別の回路を有している。最後の工程S3において、デコード後のピクセル値が、工程S2において選択された少なくともN個のテクセル値に基づいて、好ましくはこれら少なくともN個のテクセル値の線形結合として計算される。次いで、この方法は終了し、または新たなデコード後のピクセルを生成する目的で工程S1においてもう一度始まる。
工程S2は、好ましくは、N個のテクセルがテクセルブロックの境界の内側に位置する場合には、N個のデコーダのうちの第1のデコーダからN個のテクセル値のすべてを選択的に出力するステップを含む。一方で、N個のテクセルのうちの半分が或る1つのテクセルブロックの内側に位置し、残りの半分のテクセルが隣のテクセルブロックの内側に位置する場合、好ましくはN個のテクセル値のうちの半分が第1のデコーダの出力から選択され、残りの半分のテクセル値が第2のデコーダの出力から選択される。
好ましい実施形態においては、N=4である。したがって、4つのテクセルが、各々のテクセルが別々のテクセルブロックに存在するように位置する場合には、工程S2が、好ましくは4つのデコーダの各々からそれぞれ1つのテクセル値を選択するステップを含む。
上述の実施形態を、本発明の説明のためのいくつかの実施例として理解すべきである。これらの実施形態について、本発明の範囲から逸脱することなく、さまざまな修正、組み合わせ、および変更が可能であることを、当業者であれば理解できるであろう。とくには、別々の実施形態における別々の部分的解決策を、技術的に可能であれば、他の構成にて組み合わせることが可能である。しかしながら、本発明の範囲は、添付の特許請求の範囲によって定められる。

Claims (17)

  1. 少なくとも1つのエンコード済みのテクセルブロック(40)に基づいてデコード後のピクセルを生成するためのデコーディングシステム(1)であって、
    N個の異なるデコーダ(100、200、300、400)であって、該N個のデコーダの各々が、他のN−1個のデコーダの回路とは異なる回路を有するとともに、エンコード済みのテクセルブロック(40)をデコードして少なくとも1つのそれぞれのテクセル値を生成するように構成されたN個の異なるデコーダ(100、200、300、400)と、
    前記N個のデコーダ(100、200、300、400)へと接続された値選択部(500)であって、少なくともN個のテクセル(30〜36)のうちの少なくとも1つを含むテクセルブロック(10)の境界に対する、前記少なくともN個のテクセル値に関する前記少なくともN個のテクセル(30〜36)の位置に基づいて、少なくともN個のテクセル値を、前記N個のデコーダ(100、200、300、400)のうちの少なくとも1つから選択的に出力するように構成された値選択部(500)と、
    前記値選択部(500)によって選択的に出力される前記少なくともN個のテクセル値に基づいて、前記デコード後のピクセルのデコード後のピクセル値を計算するように構成されたピクセル計算部(600)と
    を備えるデコーディングシステム(1)。
  2. 前記値選択部(500)が、前記N個のテクセル値に関するN個のテクセル(30〜36)がテクセルブロック(10)の前記境界の内側に位置する場合に、前記N個のデコーダ(100、200、300、400)のうちの第1のデコーダ(100)からN個のテクセル値を選択的に出力するように構成された請求項1に記載のデコーディングシステム。
  3. 前記値選択部(500)が、前記N個のテクセル値に関するN個のテクセル(30〜36)のうちの半分が前記テクセルブロック(10)の前記境界の内側に位置し、かつ、前記N個のテクセル(30〜36)のうちの半分が隣のテクセルブロック(12、14)の境界の内側に位置する場合に、前記N個のデコーダ(100、200、300、400)のうちの第1のデコーダ(100)からN個のテクセル値の半分を選択的に出力し、かつ、前記N個のデコーダ(100、200、300、400)のうちの第2のデコーダ(200)から前記N個のテクセル値のうちの残りの半分を選択的に出力するように構成された請求項1または2に記載のデコーディングシステム。
  4. Nが4に等しく、前記値選択部(500)が、前記4個のテクセル(30〜36)のうちの1つが前記テクセルブロック(10)の前記境界の内側に位置し、残りの3個のテクセルの各々が隣のそれぞれのテクセルブロック(12、14、16)の境界の内側に位置する場合に、前記4個のデコーダ(100、200、300、400)のうちの第1のデコーダ(100)から前記4個のテクセル値のうちの第1のテクセル値を、前記4個のデコーダ(100、200、300、400)のうちの第2のデコーダ(200)から前記4個のテクセル値のうちの第2のテクセル値を、前記4個のデコーダ(100、200、300、400)のうちの第3のデコーダ(300)から前記4個のテクセル値のうちの第3のテクセル値を、前記4個のデコーダ(100、200、300、400)のうちの第4のデコーダ(400)から前記4個のテクセル値のうちの第4のテクセル値を、選択的に出力するように構成された請求項1〜3のいずれか一項に記載のデコーディングシステム。
  5. Nが4に等しく、
    前記4個のデコーダ(100、200、300、400)のうちの第1のデコーダ(100)が、第1の回路を有するとともに、エンコード済みのテクセルブロック(40)をデコードして4個のテクセル値を生成するように構成され、
    前記4個のデコーダ(100、200、300、400)のうちの第2のデコーダ(200)が、第2の回路を有するとともに、エンコード済みのテクセルブロック(40)をデコードして2個のテクセル値を生成するように構成され、
    前記4個のデコーダ(100、200、300、400)のうちの第3のデコーダ(300)が、第3の回路を有するとともに、エンコード済みのテクセルブロック(40)をデコードして1個のテクセル値を生成するように構成され、
    前記4個のデコーダ(100、200、300、400)のうちの第4のデコーダ(400)が、第4の回路を有しており、エンコード済みのテクセルブロック(40)をデコードして1個のテクセル値を生成するように構成された請求項1〜4のいずれか一項に記載のデコーディングシステム。
  6. 前記エンコード済みのテクセルブロック(40)が、第1の色符号語(41、44、47)、第2の色符号語(42、45、48)、および第3の色符号語(43、46、49)を含む請求項1〜5のいずれか一項に記載のデコーディングシステム。
  7. 前記第4のデコーダ(400)が、前記第1の色符号語(41、44、47)を出力するための少なくとも1つのワイヤを備える請求項5または6に記載のデコーディングシステム。
  8. 前記第3のデコーダ(300)が、
    前記第2の色符号語(42、45、48)に相当するビット列を1ビット位置だけ左方へとシフトさせて、左方へとシフトされたビット列を形成するように構成された左シフト演算子(310)と、
    1に設定されたキャリーインを有するとともに、前記左シフト演算子(310)へと接続され、かつ、前記第2の色符号語(42、45、48)と前記左方へとシフトされたビット列とを加えるように構成された第1の加算器(320)と、
    1に設定されたキャリーインを有するとともに、前記第1の加算器(320)へと接続され、かつ、前記第1の加算器(320)の出力と前記第1の色符号語(41、44、47)とを加えるように構成された第2の加算器(322)と、
    前記第2の加算器(322)へと接続されるとともに、前記第2の加算器(322)の出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、右方へとシフトされたビット列を形成するように構成された右シフト演算子(330)と
    を備える請求項6または7に記載のデコーディングシステム。
  9. 前記第2のデコーダ(200)が、
    4個のテクセル(30〜36)のうちの半分が前記テクセルブロック(10)の前記境界の内側の行または列のどちらに位置するかに基づいて、前記第2の色符号語(42、45、48)および前記第3の色符号語(43、46、49)のうちの1つを出力するように構成された第1のマルチプレクサ(250)と、
    前記第1の色符号語(41、44、47)の符号を反転させるように構成された否定演算子(240)と、
    前記第1のマルチプレクサ(250)および前記否定演算子(240)に接続されるとともに、前記第1のマルチプレクサ(250)の出力と前記符号を反転させた第1の色符号語とを加えるように構成された第1の加算器(220)と、
    前記第1の加算器(220)へと接続されるとともに、前記第1の加算器(220)の出力に相当するビット列を1ビット位置だけ左方にシフトさせて、左方へとシフトされたビット列を形成するように構成された左シフト演算子(210)と、
    4個のテクセル(30〜36)のうちの前記半分が前記テクセルブロック(10)の前記境界の内側の行または列のどちらに位置するかに基づいて、テクセル(32、24)の行座標および列座標の一方を出力するように構成された第2のマルチプレクサ(252)と、
    前記左シフト演算子(210)および前記第1の加算器(220)へと接続されるとともに、前記第2のマルチプレクサ(252)の出力の最上位ビットに基づいて、前記第1の加算器(220)の前記出力および前記左方へとシフトされたビット列の一方を出力するように構成された第3のマルチプレクサ(254)と、
    前記第2のマルチプレクサ(252)へと接続されるとともに、前記第2のマルチプレクサ(252)の前記出力の前記最上位ビットおよび前記第2のマルチプレクサの前記出力の最下位ビットを受け取るように構成されたOR演算子(260)と、
    前記第3のマルチプレクサ(254)および前記OR演算子(260)へと接続されるとともに、前記第3のマルチプレクサ(254)の出力および前記OR演算子(260)の出力を受け取るように構成されたAND演算子(270)と、
    前記AND演算子(270)へと接続されるとともに、前記AND演算子(270)の出力と、10binを2つの最下位ビットとして前記第1の色符号語(41、44、47)の後ろに有するビット列とを加えるように構成された第2の加算器(222)と、
    前記第1の加算器(220)および前記第2の加算器(222)へと接続されるとともに、前記第1の加算器(220)の前記出力と前記第2の加算器(222)の出力とを加えるように構成された第3の加算器(224)と、
    前記第3の加算器(224)へと接続されるとともに、前記第3の加算器(224)の出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、第1の右方へとシフトされたビット列を形成する第1の右シフト演算子(230)と、
    前記第2の加算器(222)へと接続されるとともに、前記第2の加算器(222)の前記出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、第2の右方へとシフトされたビット列を形成する第2の右シフト演算子(232)と
    を備える請求項6〜8のいずれか一項に記載のデコーディングシステム。
  10. 前記第2のデコーダ(200)が、
    4個のテクセル(30〜36)のうちの半分が前記テクセルブロック(10)の前記境界の内側の行または列のどちらに位置するかに基づいて、前記第2の色符号語(42、45、48)および前記第3の色符号語(43、46、49)のうちの1つを出力するように構成された第1のマルチプレクサ(250)と、
    前記第1の色符号語(41、44、47)の符号を反転させるように構成されたnot演算子と、
    1に設定されたキャリーを有するとともに、前記第1のマルチプレクサ(250)および前記not演算子に接続され、かつ、前記第1のマルチプレクサ(250)の出力と前記符号を反転させた第1の色符号語とを加えるように構成された第1の加算器(220)と、
    前記第1の加算器(220)へと接続されるとともに、前記第1の加算器(220)の出力に相当するビット列を1ビット位置だけ左方にシフトさせて、左方へとシフトされたビット列を形成するように構成された左シフト演算子(210)と、
    4個のテクセル(30〜36)のうちの前記半分が前記テクセルブロック(10)の前記境界の内側の行または列のどちらに位置するかに基づいて、テクセル(32、24)の行座標および列座標の一方を出力するように構成された第2のマルチプレクサ(252)と、
    前記左シフト演算子(210)および前記第1の加算器(220)へと接続されるとともに、前記第2のマルチプレクサ(252)の出力の最上位ビットに基づいて、前記第1の加算器(220)の前記出力および前記左方へとシフトされたビット列の一方を出力するように構成された第3のマルチプレクサ(254)と、
    前記第2のマルチプレクサ(252)へと接続されるとともに、前記第2のマルチプレクサ(252)の前記出力の前記最上位ビットおよび前記第2のマルチプレクサの前記出力の最下位ビットを受け取るように構成されたOR演算子(260)と、
    前記第3のマルチプレクサ(254)および前記OR演算子(260)へと接続されるとともに、前記第3のマルチプレクサ(254)の出力および前記OR演算子(260)の出力を受け取るように構成されたAND演算子(270)と、
    前記AND演算子(270)へと接続されるとともに、前記AND演算子(270)の出力と、10binを2つの最下位ビットとして前記第1の色符号語(41、44、47)の後ろに有しているビット列とを加えるように構成された第2の加算器(222)と、
    前記第1の加算器(220)および前記第2の加算器(222)へと接続されるとともに、前記第1の加算器(220)の前記出力と前記第2の加算器(222)の出力とを加えるように構成された第3の加算器(224)と、
    前記第3の加算器(224)へと接続されるとともに、前記第3の加算器(224)の出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、第1の右方へとシフトされたビット列を形成する第1の右シフト演算子(230)と、
    前記第2の加算器(222)へと接続されるとともに、前記第2の加算器(222)の前記出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、第2の右方へとシフトされたビット列を形成する第2の右シフト演算子(232)と
    を備える請求項6〜8のいずれか一項に記載のデコーディングシステム。
  11. 前記第1のデコーダ(100)が、
    前記第1の色符号語(41、44、47)の符号を反転させるように構成された否定演算子(140)と、
    前記否定演算子(140)へと接続されるとともに、前記第2の色符号語(42、45、48)と前記符号を反転させた第1の色符号語とを加えるように構成された第1の加算器(120)と、
    前記否定演算子(140)へと接続されるとともに、前記第3の色符号語(43、46、49)と前記符号を反転させた第1の色符号語とを加えるように構成された第2の加算器(122)と、
    前記第1の加算器(120)へと接続されるとともに、前記第1の加算器(120)の出力に相当するビット列を1ビット位置だけ左方にシフトさせて、第1の左方へとシフトされたビット列を形成するように構成された第1の左シフト演算子(110)と、
    前記第2の加算器(122)へと接続されるとともに、前記第2の加算器(122)の出力に相当するビット列を1ビット位置だけ左方にシフトさせて、第2の左方へとシフトされたビット列を形成するように構成された第2の左シフト演算子(112)と、
    前記第1の加算器(120)および前記第1の左シフト演算子(110)へと接続されるとともに、テクセル(30)の列座標の最上位ビットに基づいて、前記第1の加算器(120)の前記出力および前記第1の左方へとシフトされたビット列の一方を出力するように構成された第1のマルチプレクサ(150)と、
    前記第2の加算器(122)および前記第2の左シフト演算子(112)へと接続されるとともに、前記テクセル(30)の行座標の最上位ビットに基づいて、前記第2の加算器(122)の前記出力および前記第2の左方へとシフトされたビット列の一方を出力するように構成された第2のマルチプレクサ(152)と、
    前記列座標の前記最上位ビットおよび前記列座標の前記最下位ビットを受け取るように構成された第1のOR演算子(160)と、
    前記行座標の前記最上位ビットおよび前記行座標の前記最下位ビットを受け取るように構成された第2のOR演算子(162)と、
    前記第1のマルチプレクサ(150)および前記第1のOR演算子(160)へと接続されるとともに、前記第1のマルチプレクサ(150)の出力および前記第1のOR演算子(160)の出力を受け取るように構成された第1のAND演算子(170)と、
    前記第2のマルチプレクサ(152)および前記第2のOR演算子(162)へと接続されるとともに、前記第2のマルチプレクサ(152)の出力および前記第2のOR演算子(162)の出力を受け取るように構成された第2のAND演算子(172)と、
    前記第1のAND演算子(170)へと接続されるとともに、前記第1のAND演算子(170)の出力と、10binを2つの最下位ビットとして前記第1の色符号語(41、44、47)の後ろに有しているビット列とを加えるように構成された第3の加算器(124)と、
    前記第1の加算器(120)および前記第3の加算器(124)へと接続され、前記第1の加算器(120)の前記出力と前記第3の加算器(124)の出力とを加えるように構成された第4の加算器(126)と、
    前記第2の加算器(122)および前記第2のAND演算子(172)へと接続されるとともに、前記第2の加算器(122)の前記出力と前記第2のAND演算子(172)の出力とを加えるように構成された第5の加算器(128)と、
    前記第3の加算器(124)および前記第2のAND演算子(172)へと接続されるとともに、前記第3の加算器(124)の前記出力と前記第2のAND演算子(172)の前記出力とを加えるように構成された第6の加算器(121)と、
    前記第4の加算器(126)および前記第2のAND演算子(172)へと接続されるとともに、前記第4の加算器(126)の前記出力と前記第2のAND演算子(172)の前記出力とを加えるように構成された第7の加算器(123)と、
    前記第3の加算器(124)および前記第5の加算器(128)へと接続されるとともに、前記第3の加算器(124)の前記出力と前記第5の加算器(128)の出力とを加えるように構成された第8の加算器(125)と、
    前記第4の加算器(126)および前記第5の加算器(128)へと接続されるとともに、前記第4の加算器(126)の前記出力と前記第5の加算器(128)の前記出力とを加えるように構成された第9の加算器(127)と、
    前記第6の加算器(121)へと接続されるとともに、前記第6の加算器(121)の出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、第1の右方へとシフトされたビット列を形成する第1の右シフト演算子(130)と、
    前記第7の加算器(123)へと接続されるとともに、前記第7の加算器(123)の出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、第2の右方へとシフトされたビット列を形成する第2の右シフト演算子(132)と、
    前記第8の加算器(125)へと接続されるとともに、前記第8の加算器(125)の出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、第3の右方へとシフトされたビット列を形成する第3の右シフト演算子(134)と、
    前記第9の加算器(127)へと接続されるとともに、前記第9の加算器(127)の出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、第4の右方へとシフトされたビット列を形成する第4の右シフト演算子(136)と
    を備える請求項6〜10のいずれか一項に記載のデコーディングシステム。
  12. 前記第1のデコーダ(100)が、
    前記第1の色符号語(41、44、47)の符号を反転させるように構成されたnot演算子と、
    1に設定されたキャリーインを有し、前記not演算子へと接続されるとともに、前記第2の色符号語(42、45、48)と前記符号を反転させた第1の色符号語とを加えるように構成された第1の加算器(120)と、
    1に設定されたキャリーインを有し、前記not演算子へと接続されるとともに、前記第3の色符号語(43、46、49)と前記符号を反転させた第1の色符号語とを加えるように構成された第2の加算器(122)と、
    前記第1の加算器(120)へと接続されるとともに、前記第1の加算器(120)の出力に相当するビット列を1ビット位置だけ左方にシフトさせて、第1の左方へとシフトされたビット列を形成するように構成された第1の左シフト演算子(110)と、
    前記第2の加算器(122)へと接続されるとともに、前記第2の加算器(122)の出力に相当するビット列を1ビット位置だけ左方にシフトさせて、第2の左方へとシフトされたビット列を形成するように構成された第2の左シフト演算子(112)と、
    前記第1の加算器(120)および前記第1の左シフト演算子(110)へと接続されるとともに、テクセル(30)の列座標の最上位ビットに基づいて、前記第1の加算器(120)の前記出力および前記第1の左方へとシフトされたビット列の一方を出力するように構成された第1のマルチプレクサ(150)と、
    前記第2の加算器(122)および前記第2の左シフト演算子(112)へと接続されるとともに、前記テクセル(30)の行座標の最上位ビットに基づいて、前記第2の加算器(122)の前記出力および前記第2の左方へとシフトされたビット列の一方を出力するように構成された第2のマルチプレクサ(152)と、
    前記列座標の前記最上位ビットおよび前記列座標の前記最下位ビットを受け取るように構成された第1のOR演算子(160)と、
    前記行座標の前記最上位ビットおよび前記行座標の前記最下位ビットを受け取るように構成された第2のOR演算子(162)と、
    前記第1のマルチプレクサ(150)および前記第1のOR演算子(160)へと接続されるとともに、前記第1のマルチプレクサ(150)の出力および前記第1のOR演算子(160)の出力を受け取るように構成された第1のAND演算子(170)と、
    前記第2のマルチプレクサ(152)および前記第2のOR演算子(162)へと接続されるとともに、前記第2のマルチプレクサ(152)の出力および前記第2のOR演算子(162)の出力を受け取るように構成された第2のAND演算子(172)と、
    前記第1のAND演算子(170)へと接続されるとともに、前記第1のAND演算子(170)の出力と、10binを2つの最下位ビットとして前記第1の色符号語(41、44、47)の後ろに有しているビット列とを加えるように構成された第3の加算器(124)と、
    前記第1の加算器(120)および前記第3の加算器(124)へと接続されるとともに、前記第1の加算器(120)の前記出力と前記第3の加算器(124)の出力とを加えるように構成された第4の加算器(126)と、
    前記第2の加算器(122)および前記第2のAND演算子(172)へと接続されるとともに、前記第2の加算器(122)の前記出力と前記第2のAND演算子(172)の出力とを加えるように構成された第5の加算器(128)と、
    前記第3の加算器(124)および前記第2のAND演算子(172)へと接続されるとともに、前記第3の加算器(124)の前記出力と前記第2のAND演算子(172)の前記出力とを加えるように構成された第6の加算器(121)と、
    前記第4の加算器(126)および前記第2のAND演算子(172)へと接続されるとともに、前記第4の加算器(126)の前記出力と前記第2のAND演算子(172)の前記出力とを加えるように構成された第7の加算器(123)と、
    前記第3の加算器(124)および前記第5の加算器(128)へと接続されるとともに、前記第3の加算器(124)の前記出力と前記第5の加算器(128)の出力とを加えるように構成された第8の加算器(125)と、
    前記第4の加算器(126)および前記第5の加算器(128)へと接続されるとともに、前記第4の加算器(126)の前記出力と前記第5の加算器(128)の前記出力とを加えるように構成された第9の加算器(127)と、
    前記第6の加算器(121)へと接続されるとともに、前記第6の加算器(121)の出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、第1の右方へとシフトされたビット列を形成する第1の右シフト演算子(130)と、
    前記第7の加算器(123)へと接続されるとともに、前記第7の加算器(123)の出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、第2の右方へとシフトされたビット列を形成する第2の右シフト演算子(132)と、
    前記第8の加算器(125)へと接続されるとともに、前記第8の加算器(125)の出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、第3の右方へとシフトされたビット列を形成する第3の右シフト演算子(134)と、
    前記第9の加算器(127)へと接続されるとともに、前記第9の加算器(127)の出力に相当するビット列を2ビット位置だけ右方へとシフトさせて、第4の右方へとシフトされたビット列を形成する第4の右シフト演算子(136)と
    を備える請求項6〜10のいずれか一項に記載のデコーディングシステム。
  13. 前記値選択部(500)が、
    前記第1のデコーダ(100)へと接続されるとともに、第1のテクセル値を出力するように構成された第1のマルチプレクサ(510)と、
    前記第1のデコーダ(100)および前記第2のデコーダ(200)へと接続されるとともに、第2のテクセル値を出力するように構成された第2のマルチプレクサ(520)と、
    前記第1のデコーダ(100)、前記第2のデコーダ(200)、および前記第3のデコーダ(300)へと接続されるとともに、第3のテクセル値を出力するように構成された第3のマルチプレクサ(530)と、
    前記第1のデコーダ(100)、前記第2のデコーダ(200)、および前記第4のデコーダ(400)へと接続されるとともに、第4のテクセル値を出力するように構成された第4のマルチプレクサ(540)と
    を備える請求項6〜12のいずれか一項に記載のデコーディングシステム。
  14. 少なくとも1つのエンコード済みのテクセルブロック(40)をデコードすることによってデコード後のピクセルを生成する方法であって、
    N個の異なるデコーダ(100、200、300、400)であって、各々が他のN−1個のデコーダの回路とは異なる回路を有し、かつ、エンコード済みのテクセルブロック(40)をデコードして少なくとも1つのそれぞれのテクセル値を生成するように構成されたN個の異なるデコーダ(100、200、300、400)のうちの少なくとも1つから、少なくともN個のテクセル値を、少なくともN個のテクセル(30〜36)のうちの少なくとも1つを含むテクセルブロック(10)の境界に対する、前記少なくともN個のテクセル値に関する前記少なくともN個のテクセル(30〜36)の位置に基づいて、選択的に出力するステップと、
    前記少なくともN個のテクセル値に基づいて、前記デコード後のピクセルのデコード後のピクセル値を計算するステップと
    を含む方法。
  15. 前記選択的に出力するステップが、N個のテクセル値に関するN個のテクセル(30〜36)がテクセルブロック(10)の前記境界の内側に位置する場合に、前記N個のデコーダ(100、200、300、400)のうちの第1のデコーダ(100)から前記N個のテクセル値を選択的に出力するステップを含む請求項14に記載の方法。
  16. 前記選択的に出力するステップが、N個のテクセル値に関するN個のテクセル(30〜36)のうちの半分が前記テクセルブロック(10)の前記境界の内側に位置し、かつ、前記N個のテクセル(30〜36)のうちの半分が隣のテクセルブロック(12、14)の境界の内側に位置する場合に、前記N個のデコーダ(100、200、300、400)のうちの第1のデコーダ(100)からN個のテクセル値の半分を選択的に出力するとともに、前記N個のデコーダ(100、200、300、400)のうちの第2のデコーダ(200)から前記N個のテクセル値のうちの残りの半分を選択的に出力するステップを含む請求項14または15に記載の方法。
  17. Nが4に等しく、前記選択的に出力するステップが、前記4個のテクセル(30〜36)のうちの1つが前記テクセルブロック(10)の前記境界の内側に位置し、かつ、残りの3個のテクセルの各々が隣のそれぞれのテクセルブロック(12、14、16)の境界の内側に位置する場合に、前記4個のデコーダ(100、200、300、400)のうちの第1のデコーダ(100)から前記4個のテクセル値のうちの第1のテクセル値を、前記4個のデコーダ(100、200、300、400)のうちの第2のデコーダ(200)から前記4個のテクセル値のうちの第2のテクセル値を、前記4個のデコーダ(100、200、300、400)のうちの第3のデコーダ(300)から前記4個のテクセル値のうちの第3のテクセル値を、前記4個のデコーダ(100、200、300、400)のうちの第4のデコーダ(400)から前記4個のテクセル値のうちの第4のテクセル値を、選択的に出力するステップを含む請求項14〜16のいずれか一項に記載の方法。
JP2012539846A 2009-11-24 2010-02-24 エンコード済みのテクスチャ要素ブロックについて使用することができるデコーディングシステムおよび方法 Pending JP2013512482A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US26392209P 2009-11-24 2009-11-24
US61/263,922 2009-11-24
US26631609P 2009-12-03 2009-12-03
US61/266,316 2009-12-03
PCT/SE2010/050217 WO2011065886A1 (en) 2009-11-24 2010-02-24 Decoding system and method operable on encoded texture element blocks

Publications (1)

Publication Number Publication Date
JP2013512482A true JP2013512482A (ja) 2013-04-11

Family

ID=44066774

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012539846A Pending JP2013512482A (ja) 2009-11-24 2010-02-24 エンコード済みのテクスチャ要素ブロックについて使用することができるデコーディングシステムおよび方法

Country Status (11)

Country Link
US (1) US8655063B2 (ja)
EP (1) EP2504814B1 (ja)
JP (1) JP2013512482A (ja)
KR (1) KR101709822B1 (ja)
CN (1) CN102687175B (ja)
BR (1) BR112012012273B1 (ja)
DK (1) DK2504814T3 (ja)
ES (1) ES2635540T3 (ja)
PL (1) PL2504814T3 (ja)
RU (1) RU2510939C2 (ja)
WO (1) WO2011065886A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013009224A1 (en) * 2011-07-08 2013-01-17 Telefonaktiebolaget L M Ericsson (Publ) Multi-mode processing of texture blocks
US10148972B2 (en) * 2016-01-08 2018-12-04 Futurewei Technologies, Inc. JPEG image to compressed GPU texture transcoder
US10181176B2 (en) 2016-03-04 2019-01-15 Samsung Electronics Co., Ltd. Efficient low-power texture cache architecture
GB2584764B (en) * 2017-04-28 2021-12-29 Imagination Tech Ltd Decoder unit for texture decompression
GB2562041B (en) 2017-04-28 2020-11-25 Imagination Tech Ltd Multi-output decoder for texture decompression
US11244492B2 (en) * 2018-11-02 2022-02-08 Facebook Technologies, Llc. Parallel texture sampling

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6111582A (en) * 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
US5956431A (en) 1997-10-02 1999-09-21 S3 Incorporated System and method for fixed-rate block-based image compression with inferred pixel values
JPH11341496A (ja) * 1998-05-28 1999-12-10 Matsushita Electric Ind Co Ltd 画像処理方法,画像処理装置,及びデータ記憶媒体
DE19917092A1 (de) 1999-04-15 2000-10-26 Sp3D Chip Design Gmbh Verfahren zur Rasterisierung eines Graphikgrundelements
US6968006B1 (en) * 2001-06-05 2005-11-22 At&T Corp. Method of content adaptive video decoding
SE0401850D0 (sv) 2003-12-19 2004-07-08 Ericsson Telefon Ab L M Image processing
SE526226C2 (sv) * 2003-12-19 2005-08-02 Ericsson Telefon Ab L M Bildbehandling
SE0401852D0 (sv) * 2003-12-19 2004-07-08 Ericsson Telefon Ab L M Image processing
CA2572967C (en) * 2004-07-08 2012-10-16 Telefonaktiebolaget L M Ericsson (Publ) Multi-mode image processing
WO2006126949A1 (en) 2005-05-27 2006-11-30 Telefonaktiebolaget Lm Ericsson (Publ) Weight based image processing
EP1977605B1 (en) * 2006-01-23 2020-04-15 Telefonaktiebolaget LM Ericsson (publ) Image processing
WO2007116551A1 (ja) * 2006-03-30 2007-10-18 Kabushiki Kaisha Toshiba 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法
US9020047B2 (en) * 2006-05-24 2015-04-28 Panasonic Intellectual Property Management Co., Ltd. Image decoding device
US7890750B2 (en) * 2006-07-06 2011-02-15 Accenture Global Services Limited Encryption and decryption on a graphics processing unit
US9967590B2 (en) * 2008-04-10 2018-05-08 Qualcomm Incorporated Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter

Also Published As

Publication number Publication date
RU2012126120A (ru) 2013-12-27
WO2011065886A8 (en) 2012-07-19
EP2504814B1 (en) 2017-05-03
BR112012012273B1 (pt) 2020-11-03
PL2504814T3 (pl) 2017-10-31
US20120281915A1 (en) 2012-11-08
EP2504814A4 (en) 2016-04-06
RU2510939C2 (ru) 2014-04-10
DK2504814T3 (en) 2017-08-21
KR101709822B1 (ko) 2017-02-23
CN102687175B (zh) 2015-02-04
WO2011065886A1 (en) 2011-06-03
EP2504814A1 (en) 2012-10-03
BR112012012273A2 (pt) 2018-04-17
KR20120097515A (ko) 2012-09-04
CN102687175A (zh) 2012-09-19
US8655063B2 (en) 2014-02-18
ES2635540T3 (es) 2017-10-04

Similar Documents

Publication Publication Date Title
RU2407222C2 (ru) Обработка изображений на основе весов
US9159114B2 (en) Texture decompression for graphics processors
JP2013512482A (ja) エンコード済みのテクスチャ要素ブロックについて使用することができるデコーディングシステムおよび方法
JP2006014341A (ja) Mcuバッファを用いて画像データを格納するための方法及び装置
US11663743B2 (en) Image data decompression
KR20190120166A (ko) 델타 색상 압축의 비디오 적용
US9111328B2 (en) Texture compression and decompression
CN114040246A (zh) 图形处理器的图像格式转换方法、装置、设备及存储介质
US20180097527A1 (en) 32-bit hdr pixel format with optimum precision
CN110782387B (zh) 图像处理方法、装置、图像处理器及电子设备
US9129543B2 (en) Texture compression and decompression
JP2010519796A (ja) データ・チャネル情報のプログラム可能なパターンに基づく解凍及び圧縮
US11263786B2 (en) Decoding data arrays
JP2023152589A (ja) 動画レンダリング方法、装置、電子機器及び記憶媒体
JP2014502807A (ja) タイルの符号化及び復号化
US20180096513A1 (en) Method and apparatus for determining number of bits assigned to channels based on variations of channels
US20210304446A1 (en) Image Data Compression
US8737750B2 (en) Pixel block compression and decompression
JP2011175542A (ja) 画像データ処理装置
CN110175269B (zh) 一种顶点索引的压缩及解压缩方法、装置及计算机存储介质
US11327687B2 (en) Encoding data arrays
GB2605577A (en) Accessing Encoded Blocks of Data
TW201131514A (en) Order-of-two texture compression method
JP2008502975A (ja) データ処理装置