コンテクストベースの適応演算エントロピーコード化データをデコーディングする方法において、aエンコードされたデータをデコーディングして第1のデコードされたデータを発生するステップと、b記号の少なくとも一部分に対してコンテクストベースの適応演算エンコーディングを含む並列エンコーディング機構を使用して前記デコードされたデータをエントロピーエンコーディングして、第2のエンコードされたデータを発生するステップと、c前記第2のエンコードされたデータを先入れ先出しFIFOメモリに記憶するステップと、d前記第2のエンコードされたデータをFIFOメモリから読み取るステップと、eFIFOメモリから読み取ったデータをデコーディングして、デコードされたエントロピーコード化データである第2のデコードされたデータを発生するステップと、を備えた方法。前記ステップbにおいて、エンコーダは、Nビット記号をエンコードし、この記号は、複数のストリームに分割され、そしてそれらストリームの少なくとも2つは、対応する数の演算エンコーディングユニットを使用して並列にエンコードされる、請求項1に記載の方法。前記ステップbにおいて、コンテクストの数は、データを最初にエンコーディングするのに使用されるものより小さい、請求項1又は2に記載の方法。前記ステップbにおいて、特定のシンタックスが解釈され、そして演算エンコーディングのためのコンテクストは、エンコードされるシンタックスエレメントに基づいて選択され、前記シンタックスは、コンテクストがその直前にエンコードされた記号に依存しないよう確保するように構成される、請求項1から3のいずれかに記載の方法。前記ステップbにおいて、ほぼ同程度の確率であるデータをエンコードするのに演算コーディングが使用されない、請求項1から4のいずれかに記載の方法。ほぼ同程度の確率であるデータは、可変長さコーディング機構を使用してエンコードされる、請求項5に記載の方法。前記ステップbにおいて、発生確率の低いデータをエンコードするのに演算コーディングが使用されない、請求項1から6のいずれかに記載の方法。発生確率の低いデータは、可変長さコーディング機構を使用してエンコードされる、請求項7に記載の方法。コンテクストベースの適応演算エントロピーエンコードデータをデコーディングする装置において、エンコードされたデータをデコーディングして、第1のデコードされたデータを形成する第1デコーダと、その第1のデコードされたデータをエンコードするためのエンコーダであって、デコードされたデータの少なくとも一部分に対してコンテクストベースの適応演算エンコーディングを含む並列エンコーディング機構を使用して、第2のエンコードされたデータを発生するエンコーダと、その第2のエンコードされたデータを記憶するための先入れ先出しFIFOメモリと、前記第2のエンコードされたデータをFIFOの出力から読み取り、そしてその第2のエンコードされたデータをデコーディングして、デコードされたコンテクストベースの適応演算エントロピーエンコードデータを発生するためのデコーダと、を備えた装置。前記エンコーダは、Nビット記号をエンコードするように構成され、この記号は、複数のストリームに分割され、そしてそれらストリームの少なくとも2つは、それに対応する数の演算エンコーディングユニットを使用して並列にエンコードされる、請求項9に記載の装置。前記エンコーダは、特定のシンタックスを解釈して、処理されるシンタックスエレメントに基づき演算エンコーダのコンテクストを選択するように構成された状態マシンを含み、前記シンタックスは、コンテクストが直前の記号に依存しないよう確保するために選択される、請求項9又は10に記載の装置。前記デコーダは、特定のシンタックスを解釈して、処理されるシンタックスエレメントに基づき演算デコーダのコンテクストを選択するように構成された状態マシンを含み、前記シンタックスは、コンテクストが直前にデコードされた記号に依存しないよう確保するために選択される、請求項11に記載の装置。コンテクストの数は、最初にエンコードされたデータをエンコードするのに使用されるコンテクストの数より小さい、請求項9から12のいずれかに記載の装置。単一のFIFOを備え、前記エンコーダは、エンコードされたデータストリームを、FIFOへ書き込む前に、インターリーブするための手段を備え、そして前記デコーダは、FIFOから読み取ったデータストリームをデインターリーブするための手段を備えた、請求項9ないし13のいずれかに記載の装置。前記エンコーダは、可変長さコード化機構を使用して、同程度の確率の見込みがあるか又は存在する見込みが少ない各記号を表わすデータビットの部分をエンコードするための手段を備えた、請求項9ないし14のいずれかに記載の装置。第1のデコードされたデータをエンコーディングするための複数のエンコーダと、ラウンドロビン形態でエンコーダに記号を付与するための手段と、エンコードされたデータをデコーディングするための対応する複数のデコーダとを備え、各デコーダは、デコードされた記号を順次発生するように構成される、請求項9から15のいずれかに記載の装置。上述したように、演算エンコーディングは、分数個のビットで記号を表すことができ、潜在的に高い圧縮レベルを導くという点で、VLC/ハフマン解決策よりも優れている。問題は、適応できる機構は、若干シーケンシャルにデコードできるものであり、従って、クロック当たりに1つの完全なマルチビット記号というピークレートの達成を困難にすることである。デコードされたデータのプロデューサとコンシューマとの間にレート平滑FIFOを導入することができるが、これが単純な形態で表わされる場合には、非常に大きなFIFOを必要とすることになる。FIFOへ送られるデータに圧縮機構を適用して、FIFOに必要なサイズを減少することはできるが、FIFOの必要サイズを更に減少するために既知の圧縮機構の効率を高めることが望まれる。第1の態様において、本発明は、コンテクストベースの適応演算エントロピーコード化データをデコーディングする方法であって、aエンコードされたデータをデコーディングして、第1のデコードされたデータを発生するステップと、b記号の少なくとも一部分に対してコンテクストベースの適応演算エンコーディングを含む並列エンコーディング機構を使用して前記デコードされたデータをエントロピーエンコーディングして、第2のエンコードされたデータを発生するステップと、c前記第2のエンコードされたデータを先入れ先出しFIFOメモリに記憶するステップと、d前記第2のエンコードされたデータをFIFOメモリから読み取るステップと、eFIFOメモリから読み取ったデータをデコーディングして、デコードされたエントロピーコード化データである第2のデコードされたデータを発生するステップと、を備えた方法を提供する。前記ステップbにおいて、エンコーダは、Nビット記号をエンコードし、この記号は、複数のストリームに分割され、そしてそれらストリームの少なくとも2つは、対応する数の演算エンコーディングユニットを使用して並列にエンコードされる。本発明は、a最大エンコードサイズを小さく保持することができ、b演算エンコーディングを使用することによりVLC方法より高い圧縮比を得ることができ、そしてcほとんどの環境の下で、クロック当たり1つ多ビットの記号というデコード/エンコードレートを達成することができる。本出願は、クロック当たり1つの記号というレートを実質上保証しつつも、相応の圧縮比を達成する演算エンコーディング及びデコーディングを使用してFIFOデータを圧縮及び解凍する方法を説明する。これは、エンコード/デコードプロセスの少なくとも一部分を並列化することにより、そしてある実施形態では、以前にデコードされた記号から記号に対するコンテクスト選択をデカップルすることでシステムのパイプライン動作を改善することにより、行われる。更に、言語シンタックスをリエンコーダ-デコーダのトップに適用して、H264ビデオストリームの多数の部分及び他のビデオ規格簡単なVLCコードを使用するものでもによりそれを使用できるようにし、これは、ひいては、これらデコーディングユニットに対するタイミング制約を容易にすることができる。この説明及び特許請求の範囲において、演算コーディングという語は、特定の実施形態の特定の細部に関するものを除いてレンジコーディングを含むものと解釈されない。エンコーダは、Nビットの数値である記号を受け入れ、そしてそれを単一クロックにおいてエンコードすることができる非常に稀な環境を除いて。このプロセスの一部分として、記号は多数のストリームに分割され、それらストリームの少なくとも2つは、多数の演算エンコーディングユニット、又は演算及びVLCエンコーディングの組み合わせで並列に圧縮される。他の実施形態では、演算エンコーディングに代わってレンジエンコーディングを使用することができる。というのは、それらが非常に類似しているからである。各ストリームの出力は、外部メモリに存在できるFIFO1つ又は複数へ送信される。マッチングデコーダは、FIFOからのデータを受け入れ、そしてオリジナルの記号を再デコードし、アッセンブルする。第2の態様において、本発明は、コンテクストベースの適応演算エントロピーエンコードデータをデコーディングする装置であって、エンコードされたデータをデコーディングして、第1のデコードされたデータを発生する第1デコーダと、その第1のデコードされたデータをエンコードするためのエンコーダであって、デコードされたデータの少なくとも一部分に対してコンテクストベースの適応演算エンコーディングを含む並列エンコーディング機構を使用して、第2のエンコードされたデータを発生するエンコーダと、その第2のエンコードされたデータを記憶するための先入れ先出しFIFOメモリと、前記第2のエンコードされたデータをFIFOの出力から読み取り、そしてその第2のエンコードされたデータをデコーディングして、デコードされたコンテクストベースの適応演算エントロピーエンコードデータを発生するためのデコーダと、を備えた装置を提供する。エンコーダは、Nビット記号をエンコードするように構成され、この記号は、複数のストリームに分割され、そしてそれらストリームの少なくとも2つは、対応する数の演算エンコーディングユニットを使用して並列にエンコードされる。エンコーダは、特定のシンタックスを解釈して、処理されているシンタックスエレメントに基づき演算エンコーダのコンテクストを選択するように構成された状態マシンを含み、シンタックスは、コンテクストが以前の記号に依存しないよう確保するために選択される。デコーダは、特定のシンタックスを解釈して、処理されているシンタックスエレメントに基づき演算デコーダのコンテクストを選択するように構成された状態マシンを含み、シンタックスは、コンテクストが以前のデコードされた記号に依存しないよう確保するために選択される。前記装置は、単一のFIFOを備え、前記エンコーダは、エンコードされたデータストリームを、FIFOへ書き込む前に、インターリーブするための手段を備え、そして前記デコーダは、FIFOから読み取ったデータストリームをデインターリーブするための手段を備えている。前記エンコーダは、可変長さコード化機構を使用して、同程度の確率の見込みがあるか又は存在する見込みが少ない各記号を表わすデータビットの部分をエンコードするための手段を備えている。これは、必要とされる演算エンコーダ/デコーダの数を減少することによりエンコーダ/デコーダのコストを最小限にすることができる。本発明の前記及び他の特徴並びに効果は、添付図面を参照した本発明の実施形態の以下の説明から明らかとなろう。図1は、本発明の実施形態をブロック図の形態で示す。圧縮されたデータが上流のデコーダユニット1へ供給される。このデコーダユニットは、例えば、H264ビデオエンコーディング規格に規定されたものでよい。デコーダ1から供給される値は、予想されるシンタックスにフォーマットされ、リエンコーダユニット2へ16ビット値のストリームとして入力される。リエンコーダ2は、これらの値を圧縮し、その結果を先入れ先出しFIFOメモリ3へ出力する。FIFO3は、単一のFIFOではなくFIFOのセットでもよい。デコーダユニット4は、FIFO3から圧縮されたデータを読み取り、そのデータを再拡張して、オリジナルデータストリームを得、そしてそれを出力5へ通す。特定記号のエンコーディングとデコーディングとの間には、FIFO3にどれほど多くのデータが維持されるかに基づいて、可変時間遅延が生じることが明らかである。本発明の目的は、パイプラインのストールを防止し、又は少なくとも必要なフレームデコードレートを満足するシステムを停止するストールを防止する最小サイズのFIFOを割り当てできるようにすることである。実際に、その構成体は、中央処理ユニットがFIFO3におけるデータの量を監視できるようにするための手段を含むことができる。本発明に使用するのに適したエンコーディングユニット2の実施形態を、図2を参照して以下に説明する。図2に示すように、上流のデコーダユニット1は、16ビット値Aをエンコーダユニット2に供給する。この16ビット値Aは、経路13を経て状態マシン10の第1入力に供給され、そして経路14を経て演算論理ユニットALU20の第1入力に供給される。16ビット値の幾つかは、後続データの解釈を制御するためにシンタックスにより使用される。状態マシン内には、nビットカウンタ11nは、例えば、9であると、以前の記号数を記憶するためのメモリ12がある。実際には、考えられるエンコーディングモードの各々に対応する多数の以前の記号数レジスタがある。状態マシン10は、ALU20によって遂行されるオペレーションを含むリエンコーダ2における種々のサブユニットの振舞いを制御する。従って、状態マシン10からの出力は、ライン15を経てALU20の第2入力に供給され、そしてライン6を経て他のビット選択ユニット31の第1入力に供給される。ALU20は、16ビット値Aを受け取り、そしてそれに対して状態マシン10の制御の下で動作して、2つの出力を発生する。サインフラグである第1出力は、ライン21を経て他のビット選択ユニット31の第2入力に供給され、一方、非サインの16ビット値Bは、ライン22を経て先導1検出器30に供給され、該検出器は、最上位ビットの位置を決定し、そしてそれを範囲0から16の5ビット値Dとしてエンコードする。例えば、Bが0の場合には、Dも0であるが、Bが0x12の場合には、Dが5となる。値Bは、先導1検出器30から経路33を経て他のビット選択ユニット31の更に別の入力へ供給され、一方、値Dは、先導1検出器30から経路34を経て他のビット選択ユニット31の更に別の入力に供給される。他のビット選択ユニット31は、ライン33を経て与えられたB値から最上位ビットを剥離し、そしてライン21を経て受け取られたサインフラグを他のビットに付加して、値Cを発生する。この振舞いは、次のC擬似コードにより正確に記述される。それにより得られて、値Cを作り上げるビット数は、0ないし16のいずれかであり、それらは、ライン35を経て出力ストリーム0ユニット32へ出力される。これは、ビットを収集して、全パケットを、経路38を経て出力マージユニット80へ出力する小型FIFOでよい。これは、次のことを除いて、H264規格で使用される指数関数的ゴロンエンコーディング機構における変形として見ることができる。a減算ユニットを必要とせず、従って、ハードウェアで実施するのが非常に低廉である。bBの長さ、即ちD値は、単項エンコーディング方法ではエンコードされず、むしろ、別のエンコーディングユニットへ通される。c小さな値を好むエンコードされたデータの長さには若干の相違がある。先導1検出器30により発生された値Dは、ライン36を経て小さな先導1検出器40の入力に供給され、この検出器は、範囲0から5の3ビット値Fを生成する。値Dは、先導1検出器40から経路46を経て更に別の他のビット選択ユニット41へ供給される。又、値Fは、先導1検出器40から経路43を経て他のビット選択ユニット41へも供給される。ここでも、他のビット選択ユニット41は、Dの最上位ビットを除去し、残りのビットEを、ライン44を経て出力ストリーム1ユニット42へ出力するが、F=5、即ちD=16、従って、Eが0で、出力する必要がない特殊なケースは除く。この振舞は、次の擬似コードにより記述される。FFindLeading1PositionIFORNumBitsToOutput0ELSENumBitsToOutputF1Output出力ストリーム1ユニット42の出力は、更に、経路38を経て出力マージユニット18へ供給される。先導1検出器40からの3ビット値Fは、経路45を経て先導1検出器50の入力に供給される。先導1検出器50は、範囲0から3の2ビット値Hを発生する。3ビット値Fは、先導1検出器50から経路53を経て更に別の他のビット選択ユニット51へ供給される。更に、2ビット値Hは、経路54を経て他のビット選択ユニット51へ供給される。他のビット選択ユニット51は、暗示されたビット先導1を含むを除去して、出力Gを発生する。Fの限定入力値のために、出力Gは、単一ビット値を有し、ライン55を経て出力ストリーム2ユニット52へ供給され、従って、エンコードされる各記号に対して最大1ビットが必要とされる。これは、次の擬似コードにより記述される。HFindLeading1PositionIfNumBitsToOutput0ElseNumBitsToOutput1Outputこれは、次のテーブルにより要約することができる。2ビット値Hは、その後、演算エンコーディングを使用してエンコードされるので、G及びHへのFのエンコーディングが別の仕方で選択される場合には、システムがより効率的に機能できる。このため、先導1検出器50及び他のビット選択ユニット51の別の実施形態では、次のエンコーディングが、次のテーブルにより要約されるように使用される。この別の実施形態に対してデコーダ4に相補的なユニットが存在しなければならないことに注意されたい。別の実施形態では、両エンコーディング方法が、エンコーダ及びデコーダに合体され、そして各状態マシンは、現在エンコーディングモード及びエンコードされるべきシンタックスエレメントに基づいて必要なエンコーディング及びデコーディング方法を選択する。値Hの2ビットは、先導1検出器50から経路62を経てコンテクストベースのバイナリー演算エンコーダ60の第1入力へ供給され、そして経路72を経て更に別のコンテクストベースのバイナリー演算エンコーダ70の第1入力へ供給される。これらのエンコーダは、維持されるコンテクストの数が著しく減少される以外、H264エンコーダに使用されるものと同様である。エンコーダ60及び70のコンテクスト制御は、状態マシン10により発生されて、経路17を経てエンコーダ60及び70の第2入力に供給される。エンコーダ60及び70からの最終的なビットストリームは、各出力ストリームユニット61及び71を経、経路75を経て、出力マージユニット80へ供給される。出力マージユニット80の出力は、エンコードされたデータであり、FIFO3の入力に供給される。図3に示す別の構成において、図2に示した実施形態は、出力ストリーム0ユニット32、出力ストリーム1ユニット42及び出力ストリーム2ユニット52を、少量のビットシフトハードウェアを使用してC、E及びG信号を連結する単一の出力ストリームユニット39に置き換えることにより変更される。これは、実施コストを減少することができる。この変更は、ALU20のような図2の実施形態の無関係な部分には影響しないことに注意されたい。状態マシン10、ALU20、並びにエンコーダユニット60及び70の更に詳細な説明に進む前に、データストリームに対する支配シンタックスを見ることが重要である。これは、それ自体、制御値及びエンコードされるべき記号より成る16ビット値のストリームに過ぎない。これは、次のEBNFExtendedBackusNaurForm表現により最良に要約される。図4に示すように、好ましい実施形態では、UNITARATOR100、DataBlockHeader101及びNumSymbolsLess1102も、16ビット値である。この実施形態では、UNITARATORトークンは、16ビット値、0x3としてエンコードされる。DataBlockHeaderトークン101は、2つのフィールド、即ち14ビットのHardwareCode値101a、及び2ビットのencodingmodeフィールド101bより成る。この後者のフィールドは、3つの考えられる値を次のようにエンコードする。所与のエンコーディングでは、UNITARATOR及びDataBlockHeaderは、最後の2ビットが常に異なるので、互いに間違えることはあり得ない点に注意されたい。又、これらの値は、数字的にできるだけ小さくなるように選択される。というのは、圧縮システムが小さな値を好むので、これが圧縮効率を改善するからである。HWCODE値は、エンコーダ/デコーダモジュールの各側でユニットにより使用するための任意のフィールドであるが、可能な限り小さな値が選択されることが推奨される。DataBlockHeaderは、RUNLEVELPAIR、SIGNED、又はSIGMAPVALUESの1つであるエンコーディング方法を含む。これらの名前は、おそらくそれらの意図された使い方を表すが、汎用性も高い。別の実施形態では、SIGMAPVALUESモードは、除去されてもよいし、又は優勢な大きな記号値を見込むもののような別のエンコーディング機構と置き換えてもよい。別の実施形態に対する他の組合せ又はエンコーディングパターンは、当業者に明らかであろう。RUNLEVELPAIRモードは、ペアのリストより成るデータに対して最適なものとされ、各ペアは、非サイン値と、それに続く非ゼロサイン値で構成される。SIGNEDモードは、単に、サイン値のリストで構成され、そしてSIGMAPVALUESは、単一の非サイン値と、それに続く非ゼロサイン値のリストで構成される。全てのケースにおいて、小さな値がデータを支配することが一般的に予想される。これらのエンコーディング方法は、供給された記号リストをどのように処理するか、例えば、ALU20がどんなオペレーションを遂行すべきか、且つCABACエンコーダユニット60及び70にどんなコンテクストを使用すべきか選択することを状態マシン10に命令する。SeparableUnit論理的グループ分けの目的は、システムがFIFOにおける圧縮されたデータに再同期ポイントをもつのを許すことである。状態マシン10のエンコーダは、各SeparableUnitの後に、経路18を経て内部バッファの出力ストリーム0ユニット32、出力ストリーム1ユニット42及び出力ストリーム2ユニット52をフラッシュし、そして経路19を経て出力3ユニット61及び出力4ユニット62をフラッシュし、必要に応じて、デコーダによりこれらを順にスキップできるようにする。例えば、H264では、フレームは、ある数の独立したスライスより成り、これらは、送信データが崩壊した場合に部分エラー回復を許すように意図される。スライスがSeparableUnitにパックされる場合には、デコーダ及びパイプラインの残りの部分によりそれを完全にスキップすることができる。この機構は、多数の異なるストリームを、例えば、スライスレベルで混合するのも許す。各SeparableUnit内のデータは、DataBlockの任意のリストより成り、その各々は、使用すべきエンコーディングの方法と、エンコードされるべき記号の数1未満と、ブロックにおいてエンコードされるべき記号とを記述するヘッダを含む。DataBlockは、典型的に、IDCT係数のブロックのような記号の論理的グループに対して使用されるか、又はマクロブロックに属するモーションベクトル値のセットに対して使用される。エンコーダのための状態マシンの概略が図5に示されている。プロセスがベース/アイドル状態200でスタートすると仮定すれば、次の予想されるデータアイテムは、UNITARATOR又はDataBlockHeaderである。これらの値のいずれかが受け取られると、デコードプロセスについて考慮するときに明らかとなる理由で、それが全く同様にエンコードされる201。状態マシン10は、状態202へ進む。これら記号の後に、常に、非サインの16ビット値が続き、これは、任意の値であるか、又はそれに続くデータの長さを表す。又、これらの値は、両方とも同様にエンコードされる210。以前の記号がUNITARATORであった場合には、経路211が取られ、状態マシン10は、SeparableUnitのエンコーディングを終了し、演算エンコーダのコンテクスト/統計学的情報をリセットし、そしてバッファ220をフラッシュするようにエンコーダに通知する。これは、多数のクロックサイクルを要するが、非常に頻度の低いオペレーションであることが予想されるので、全コストを無視できる。これを達成するために、状態マシン10は、経路18を経てバッファ32、42、52のコンテンツを空にし、経路19を経てバッファ61及び71のコンテンツを空にし、且つ経路17を経てエンコーダ60及び70のコンテクスト統計学的情報をリセットするためのインストラクションを発行する。そうではなく、Datablockheaderが状態201において受け取られた場合には、状態マシン10は、経路212をたどり、少なくとも1つのデータ記号230を受け取ることを期待する。これは、Datablockheaderに定義されたモードを使用してエンコードされる240。同時に、状態マシン10の内部カウンタ11がモードに基づいて初期化される。モードがSIGNED又はSIGMAPである場合には、それが、供給されたNumSymbolsLess1にセットされ、さもなければ、NumSymbolsLess121にセットされる。後者が行われるのは、RUNLEVEL値が常にペアで供給されて、その供給された値から冗長ビットを除去するからである。次いで、状態270及びプロセス280は、データブロックで供給された残りの記号をエンコードした後に、ベース状態200に復帰する。プロセス208は、状態マシン10のカウンタ11を減少させ、従って、データブロックの全ての記号がエンコードされたときにベース状態200に到達する。ALU20の制御と、演算エンコーダ60、70の振舞いを支配するコンテクスト情報とについて、以下に説明する。文字通り数百のコンテクストを有するH264CABACとは異なり、好ましい実施形態は、6個のコンテクストグループのセットしか有していない。各グループは、2つのCABACユニットの各々について1つの、一対のコンテクスト値を有する。コンテクストとは、全ての意図及び目的で2つのバイナリー値0及び1の現在の確率を記憶する。H264CABAC設計では、これが8ビット値にパックされる。実施が容易であるために、同じ機構が実施形態により使用されてもよい。又、各グループには、ALU20により実行されるオペレーションに対する設定も関連付けられる。これらのオペレーションを、図6を参照して以下に説明する。到来するデータ値Aに対して実行されて出力値Bを発生することのできる任意のオペレーションが3つある。この図において、これらは、3つの直列ステージとして説明されることに注意されたい。これは、単に明瞭化のために行われるが、ハードウェアシステムは、これらオペレーションを結合してもよく、そのようにした場合には、面積が減少され及び/又はタイミングが改善される。オプションがイネーブルされない場合には、そのオプションへの入力が、その出力へ通される。第1のオプション300は、到来する値Aから以前のNumSymbolsLess1値12を減算して、A’を発生する。C擬似コードでは、このオペレーションは、次の通りである。IFAAPrevNumSymsELSEAA第2の任意のオペレーション301は、その入力A’の絶対値を計算し、そしてオリジナルサイン値フラグも出力する。C擬似コードでは、このオペレーションは、次の通りである。最終的に、オプション302は、入力値Aから1を減算し、最下位16ビットを保持する。C擬似コードでは、このオペレーションは、次の通りである。IFB0xFFFFELSEBAALUに対する6個のコンテクストグループ及びそれらの設定は、次のテーブルに要約される。各SeparableUnitの始めにコンテクストに指定される、コンテクストのための初期確率値は、例示のために示されたものに過ぎない。好ましい実施形態では、これらの値は、例えば、CPUによりプログラムできるレジスタのセットから得られる。又、例示値は、SIGMAPエンコードモードを要求しない実施形態により生成されたものであり、従って、それに対する初期確率は含まれない。コンテクストグループと図5に示す状態との関係を以下に説明する。状態201において、ヘッダグループが選択される。状態210において、デルタ長さグループが使用される。テーブルから明らかなように、供給された長さ1値が以前の値から減算され、その結果の絶対値が取り出される。この結果及び減算結果のオリジナルサインがエンコードされる。状態240及び280において、ヘッダデータで指定されたエンコーディングモードに基づいて残りの4つのコンテクストグループ‘S’、‘RLU’、‘SMM’又は‘SNZ’の1つを使用して記号値がエンコードされる。‘SIGNED’モードを使用してエンコーディングするときには、データブロックにおける全ての残りの値に対して‘S’グループが使用される。‘RUNLEVEL’モードでエンコードするときには、選択されたグループが‘RLU’と‘SNZ’との間で交替し、一方、‘SIGMAP’モードの場合には、第1記号が‘SMM’モードでエンコードされ、そして残りが‘SNZ’でエンコードされる。実施形態により多数のストリームが発生されるときには、単一のFIFOを有するのが好ましい。というのは、これは、システムが利用可能な外部メモリ空間を先験的に多数の固定サイズのFIFOに分割する必要がないことを意味するからである。従って、単一の外部FIFOが存在する実施形態では、エンコーダにおいて種々の出力ストリームをインターリーブし、次いで、デコーダへデータが読み込まれるときにそれらをデインターリーブする効率的な手段があるのが好ましい。これは、実際には、多数の理由で、重要なタスクである。aストリームは、各々、記号当り異なる数のビットを発生し、b特定の記号‘x’に対して、‘C’、‘E’及び‘G’に対応するビットは、ほとんど即座に発生されるが、演算エンコーダは、それらのエンコードされたビットを、ある数の記号の後まで発生しないことがある。ある状況において、これは、数十又は数百個の記号の後であり、そしてc記号のデコーディングを開始するために、ストリームに対する全ての関連データがデコーダにおいて同時に入手できねばならない。更に、メモリサブシステムは、効率的に使用されねばならない。多くのシステムでは、これは、読み取り及び書き込みをあるサイズのバーストで行わねばならないことを意味し、これは、数十ないし数百のバイトを必要とすることがある。例えば、個々のバイトをランダムにアクセスすることは、効率的でない。この問題に対する解決策を、図7を参照して以下に述べる。この実施形態ではサイズが約4MバイトであるFIFOメモリ500は、固定サイズの割り当てブロック501へ論理的に分割され、各ブロックは、最小の効率的メモリ転送バーストサイズの倍数となるように選択されるのが好ましい。好ましい実施形態では、各ブロックは、サイズが256ビットである。FIFOメモリに対する3つのポインタが維持される。分離可能ユニットヘッド510は、エンコーダ2によって現在記憶されている分離可能ユニットのためのデータの開始を指す。分離可能ユニットテール511は、デコーダ4により現在処理されている分離可能ユニットの開始を指す。これが分離可能ユニットヘッドポインタと同じように前進する場合には、デコーダは、エンコーダがその現在の分離可能ユニットを終了するまでストールする。フリーブロックポインタ512は、エンコーダがその出力ストリームの1つから新たなブロックの価値あるデータを発生するときに増加される。これがFIFOメモリブロックの終りに到達すると、開始点へラップアラウンドする。フリーブロックポインタが分離可能ユニットテールに到達する場合には、FIFOがいっぱいになったと考えられ、エンコーダは、デコーダがその現在分離可能ユニットを終了するまでストールし、そしてポインタを、次に記憶された分離可能ブロックの開始点へ前進させる。各割り当てブロックは、データ部分512及び次のポインタ513を含む。好ましい実施形態では、次のポインタは、16ビット値である。これは、ブロックのチェーンにおいて次の割り当てブロックをインデックスし、次のように使用される。N個の出力ストリームをもつ実施形態のマージユニット80内で、新たな分離可能ユニットの開始に、最初のN個の割り当てブロックが、現在の分離可能ブロックの開始点フリーブロックポインタに等しいに対して、N個のストリームに予め指定され、そしてフリーブロックポインタがNだけ前進される。マージユニットは、割り当てユニットのサイズのN個多重バッファされる場合にはそれ以上のバッファと、N個の16ビットアドレス値、A[0]A[N-1]とを含む。アドレス値は、分離可能ユニットヘッドないし分離可能ユニットヘッドN-1の値に各々初期化される。データがそれに対応するストリーム[i]により供給されるときには、マージユニットが各バッファ[i]を並列に充填し始める。バッファ[j]がいっぱいになると、バッファ[j]の次のポインタがフリーブロックポインタの値にセットされ、バッファ[j]がA[j]のアドレスに書き込まれ、A[j]がフリーブロックポインタにセットされ、そしてフリーブロックポインタが増加される。デコーダ4において要求されるマッチングデマージユニットは、ブロックを単に読み取り、そしてコンテンツをそれらの各ストリームに転送する。ある事項に対して読み取るべき次のブロックが、現在読み取られたブロックに含まれたポインタにより指示される。デコーダ4は、本質的にエンコードプロセスの逆であるデコーディングプロセスを遂行する。図8は、図2のエンコーダにより発生されたエンコードされたデータをデコードするのに適したデコーダをブロック図の形態で示す。図8に示すデコーダは状態マシン800を備え、これは、Nビットカウンタ801及び以前の数字記号のレジスタ802を含む。状態マシン800の出力は、経路803を経て演算論理ユニットALU860の入力に接続されると共に、経路804を経て他ビット選択ユニット851の入力に接続される。入力デマージユニット805は、FIFOから受け取られたデータを並列ストリームに分割し、その出力は、経路859を経て、入力ストリーム0ユニット850、入力ストリーム1ユニット840、及び入力ストリーム2ユニット830へ接続されると共に、経路819を経て、入力3ユニット821及び入力4ユニット811へ接続される。状態マシン800の更に別の出力は、経路806を経て2つのコンテクストベースの適応演算CABACデコーダ810及び820の入力に接続される。この経路は、810及び820に使用されるコンテクストを選択して、現在ビットをデコードする。入力3ユニット821は、その出力が経路822を経てCABACデコーダ820の更に別の入力に接続され、一方、入力4ユニット811は、その出力が経路812を経てCABACデコーダ810の更に別の入力に接続される。CABACデコーダ810及び820の出力は、経路823を経て加算先導1ユニット832及び他ビット選択ユニット831の入力に接続される。加算先導1ユニット832の出力は、経路833を経て、更に別の加算先導1ユニット842及び更に別の他ビット選択ユニット841の入力に接続される。加算先導1ユニット842の出力は、経路843を経て、最終的な加算先導1ユニット852及び最終的な他ビット選択ユニット851の入力に接続される。加算先導1ユニット852の出力は、経路853を経てALU860の更に別の入力に接続される。入力ストリーム2ユニット830の出力は、経路834を経て他ビット選択ユニット831の更に別の入力に接続される。同様に、入力ストリーム1ユニット840の出力は、経路844を経て他ビット選択ユニット841の更に別の入力に接続され、一方、入力ストリーム0ユニット850の出力は、経路854を経て他ビット選択ユニット851の更に別の入力に接続される。他ビット選択ユニット831の出力は、経路835を経て加算先導1ユニット832の更に別の入力に接続される。同様に、他ビット選択ユニット841の出力は、経路845を経て加算先導1ユニット842の更に別の入力に接続され、そして他ビット選択ユニット851の出力は、経路855を経て加算先導1ユニット852の更に別の入力に接続される。デコードされたサインフラグを任意に含む他ビット選択ユニット851の更に別の出力は、経路856を経て、ALU860の更に別の入力に接続される。状態マシン800の更に別の再スタート出力は、経路807を経て、入力ストリーム0ユニット850、入力ストリーム1ユニット840及び入力ストリーム2ユニット830のリセット入力に接続され、一方、状態マシン800の同じ出力が経路808を経て入力3ユニット821及び入力4ユニット811のリセット入力に供給される。この再スタート出力は、各SeparableUnitの始動時に状態マシン800によりシグナリングされる。オペレーション中に、FIFO3からのデータは、入力デマージユニット805へ供給され、このユニットが発生する5つのデータストリームは、入力データストリーム0ユニット850、入力ストリーム1ユニット840、入力ストリーム2ユニット830、入力3ユニット821及び入力4ユニット811へ供給される。入力3ユニット821は、データストリームの一部分をCABACデコーダ820へビット0データとして供給し、一方、入力4ユニット811は、データストリームの一部分をCABACデコーダ810へ供給する。CABACデコーダ810及び820は、図2のエンコーダ60及び70へ最初に供給された信号Hを再生する。この点において、定義されたシンタックスは、演算デコーダのためのコンテクスト選択を、その直前の記号の値から分離するので、ハードウェアデコーダは、デコーディングステージにどこかに挿入されるパイプラインステージを有してもよく、ストールを招くことはないことに注意されたい。このようなパイプラインステージの便利な場所は、Hが計算されるポイントである。Hの値は、他ビット選択ユニット831及び加算先導1ユニット832へ供給される。入力ストリーム2ユニット830は、入力デマージストリームから値Gを選択し、そしてそれを他ビット選択ユニット831へ供給する。他ビット選択ユニット831は、Hの値に応答してGの値から値Fを発生する。加算先導1ユニット832は、値Hにより指定された位置に基づく新たな最上位ビットを加算して、3ビット値Fを発生する。これは、エンコーダユニット50ないし52により実行されるプロセスの逆である。加算先導1ユニット832の出力に発生された3ビット値Fは、更に別の加算先導1ユニット842の第1入力及び更に別の他ビット選択ユニット841の第1入力に供給される。入力ストリーム1ユニット840は、値Eを、他ビット選択ユニット841の第2入力に供給する。他ビット選択ユニット841は、その入力に値E及びFを取り込み、そして値Dを発生する。値Dは、加算先導1ユニット842の第2入力に供給され、該ユニットは、データDに対する5ビット値をその出力に発生する。加算先導1ユニット842からの出力は、更に別の加算先導1ユニット852の第1入力及び更に別の他ビット選択ユニット851の第1入力に供給される。他ビット選択ユニット851は、入力ストリーム0ユニット850の出力からの信号Cをその第2入力に受け取る。これは、エンコーダユニット40、41及び42により遂行されるプロセスの逆である。又、他ビット選択ユニット851は、状態マシン800から経路804を経て制御入力も受け取る。又、他ビット選択ユニット851は、状態マシン800から経路804を経て制御入力も受け取る。他ビット選択ユニット851は、出力信号Bを発生し、これは、加算先導1ユニット852の第2入力に供給される。又、他ビット選択ユニット851は、サインアウト出力も発生し、これは、経路856を経て演算論理ユニットALU860の入力へ供給される。加算先導1ユニット852は、信号Bをその出力に発生しそしてこれをALU860の更に別の入力に供給する。これは、エンコーダユニット30、31及び32により遂行されるプロセスの逆である。例示の目的で、ユニット850、851及び852のファンクションを擬似コードで以下に示す。状態マシン800が発生する出力は、デコーダ820及び810へ供給され、経路806を経てコンテクスト制御データが転送される。又、状態マシン800が発生する制御出力は、経路803を経てALU860の更に別の入力へ供給される。状態マシン800からの更に別の出力は、入力ストリーム0ユニット850、入力ストリーム1ユニット840及び入力ストリーム2ユニット830の入力に供給される再スタート信号と、入力3ユニット821及び入力4ユニット811に供給されるフラッシュ信号とを発生する。演算論理ユニット860が発生する出力Aは、出力値コードであって、状態マシン800にも供給される。デコーダは、図2に示されたエンコーダとは逆のファンクションを有効に遂行し、従って、H264デコーダから図2に示すエンコーダへ供給されるデータを再生する。図6に戻り、デコーダALU860の振舞いを説明する。これは、本質的に、‘B’値を‘A’値に変換するという点で、エンコーダALU20のオペレーションの逆を遂行する。テーブルのコンテクストを再び参照すれば、所与のコンテクストに対してサブユニット302がエンコーダにおいてイネーブルされた場合には、そのコンテクストがデコーダに使用されるときに加算1ユニット310がデコーダALUにおいてイネーブルされる。同様に、ユニット301がエンコードに対してイネーブルされる場合には、任意の否定ユニット311がイネーブルされる。最終的に、エンコード手順においてコンテクストに対してユニット300がイネーブルされると、デコード手順においてそのコンテクストに対して加算以前のNumSyms312がイネーブルされる。ユニット311は、次の擬似コードにより説明される。ユニット300及び302の前記説明を読めば、ユニット310及び312により遂行されるオペレーションが当業者に明らかであろう。図9に振舞いを示すデコーダ状態マシン800は、図5のエンコーダ状態マシン10の振舞いに類似している。プロセスがベース/アイドル状態900でスタートすると仮定すれば、システムは16ビット記号をデコードし901、これは後続システム5へ出力される。次いで、状態マシン800は、別の16ビット値910をデコードすることが期待される。901でデコードされた値がUNITARATORである場合は、デコーダは、経路911を経てステージ920へ至り、これは、出力を終了し、エンコーダの統計学的情報を再初期化し、そして入力バッファをリセットした後に、状態900へ戻る。そうではなくて、901でデコードされた値がDataBlockHeaderである場合は、システムは、第1データ記号をデコードし940、次いで、ステップ910でデコードされてカウンタ801に記憶されたカウント値を使用して、残りの記号を通して繰り返した後に、最終的に、状態900に復帰する。シンタックスは、直前の記号に基づいて分岐判断を行わないので、1つの記号のデコーディングの若干を、次のデコーディングと重畳させ、容易なハードウェアパイプライン構成を許すことに注意されたい。例えば、ステップ901及び902が完了する前に、デコーディングをスタートすることができる。上述したように、所与のシンタックスは、ハードウェアの容易なパイプライン構成を許すが、使用できる唯一のシンタックスがこの特性を有することを意味するのではない。実際に、ここに述べるシンタックスは、全ての用途には適さないことがある。ここに述べるシンタックスでは、データブロックでエンコードされるべき記号の数を、データ送信の前に、エンコーダ2へ送信しなければならない。あるアプリケーションでは、この情報が前もって分からないことがあり、従って、バッファすることが不可能であるか又は少なくとも高価なバッファを伴うことになる。この制約をもたない別のシンタックスは、次の通りである。このシンタックスでは、1つの16ビット値、例えば、ゼロが予約され、そして後続値を最後であるとして識別する。次いで、全ての値が調整されて、それらが、予約された値を偶発的に使用しないようにする。例えば、エスケープコードを使用する他の機構が当業者に明らかであろう。ここに示す実施形態は、この又は他の別のシンタックスを使用するように変更することができる。本発明は、デコードされた到来するデータを、そのデータの部分に対してコンテクストベースの適応演算エンコーディングを使用する第2の並列エントロピーエンコード化構成へ再エンコーディングし、コンテクストの数を、H264規格に使用されるものから減少し、そしてコンテクストを直前のデコードされた記号とは独立したものにするようにシンタックスを選択して、デコーダが、エンコードされたデータの特定の部分をデコードするのに要する時間にあまり変化がない状態で、エンコードされたデータをデコードできるようにすることにより、最小サイズのFIFOを使用できるようにすることが明らかであろう。図2を参照して述べたものとは別のエンコーダの実施形態では、図10に示すように、エンコーダ2における2つの単一ビットCABACエンコーダユニット60、61及びそれに関連するストリームデータユニット61、71が、単一の‘CABAC’エンコーダ60aに置き換えられ、これは、一度に2ビットを直接エンコードし、そして単一ストリーム出力ユニット61aへ出力する。この単一のCABACエンコーダ61aは、60又は61コスト~Oより高価であるがコストはほぼO、結合したユニットよりは若干安価であり、出力ストリームの1つに対する必要性も排除する。当然、同等の2ビットCABACデコーダユニットが、図11に示すように、マッチングデコーダ4に存在することになろう。ここで、入力デマージャー805aがデータを入力3FIFO821aに供給し、これが、次いで、データを2ビットCABACデコードユニット820aに供給する。これは、値Hの量ビットを発生し、それらは、上述したように、他ビット選択ユニット831及び加算先導1ユニット832へ供給される。又、このシステムを使用する実施形態は、Hの4つの考えられる各値が、それ自身の正確な確率値を有し、従って、より高い圧縮ファクタを与えるという点で、前記実施形態に勝る効果を有する。前記実施形態では、Hの各値の確率が、Hを形成する2つのビットの確率の積から有効に形成され、従って、これらは、最適状態に満たない仕方で相互作用し得る。更に別の実施形態では、図10の2ビットエンコーダ/デコーダ実施形態が、図3に示す実施形態でなされた変更と組み合わされるデコーダのためのマッチングユニットと共に。この実施形態では、出力ストリームの数が丁度2つに減少され、これは、エンコーダユニット39及び61aに対応する。この実施形態は、図7のマージ構造及びユニット80、805を見合わせ、エンコーダユニットとデコーダユニットとの間に2つの独立したFIFOを維持するだけである。上述した実施形態では、エンコードされるべきデータの上位ビットの大半が直接エンコーディング機構で取り扱われ、従って、それが存在するときには、ビットごとに50:50の確率を仮定する。これらビットの幾つかを演算エンコーディングでエンコードすることにより、より経費のかかる実施であることを犠牲にして、圧縮比のある程度の改善を得ることができる。典型的なビデオデータの分析から、値Bの先導意義ビットが除去されたときには、Bの、次の最上位5ビットそれらが存在するときがゼロである典型的な確率は、次のテーブルにより要約される。明らかなように、これらビットがゼロであるのは、50:50確率より高く、従って、ある数の次の最上位ビットを演算エンコーダ/デコーダでエンコードすることにより、高レベルの圧縮を達成することができる。しかしながら、演算エンコーディングの経費が与えられると、より多くの演算エンコード/デコードユニットの追加が、利益を急速に縮小する結果となることに注意するのが重要である。例えば、このようなビットが、エンコードされる各記号に実際に存在する確率は、テーブルの第3列に要約されたように、著しく速く低下する。ここに示す実施形態は、最上位ビットの位置を暗示するので、使用しないビットに対する記憶コストは実際上生じない。それ故、このような実施形態では、コスト効率が良いのは、演算エンコーディングを使用して、せいぜい、次の最上位値をエンコードすることだけである。図11に示すように、概念的に簡単であるが、一般的に効率の低い別の実施形態では、値Bは、同程度の確率であるサインビットはさておき、単にコンテクストベースの演算エンコーダユニットを使用してエンコードされる。値Bは、16ビットに分割され1000、そして最上位の15から最下位の0まで番号が付けられた各ビットは、1115ないし1100で各々示されたそれ自身の各CABACユニットへ供給される。これらからの出力ストリームは、1215ないし1200であり、そしてサインビット値1216は、それが存在するときに、上述したように、ユニット80を経てマージされる。示唆された実施形態例えば、図2又は図10のいずれかへの拡張において、M個のエンコーダを並列に使用して、エンコーディングレートを高めることができる。16ビット記号は、ラウンドロビンの順序で、M個のエンコーダの各々に順次に送信される。同様に、各エンコーダは、順次に結果を発生する。このような構成において、幾つかの簡単化が可能となる。a増加した並行性で個々のユニットのゆっくりとしたエンコードレートが相殺されるので、個々のエンコーダ/デコーダをゆっくりと動作することができる。bデコーダは並列に動作され、直列化ペナルティを招くことなく以前の記号をデコーディングするデコーダの状態を知ることができないので、コンテクストが簡単化される。先の実施形態において拡張する別の実施形態では、各エンコーダは、最初に入力値をVLCフォーマット、好ましくは、指数関数的ゴロンへ変換する直列化ユニットを含ませることにより、全てのデータに対して演算エンコーディングを使用する。次いで、各エンコーダは、それ自身の演算エンコーダを使用して、一度に1ビットずつ、多数のクロックサイクルにわたり、そのVLCをエンコードする。各ビット位置が、それ自身のコンテクストを有するのが好ましい。数字Mは、各記号をエンコードするのに必要なVLCビットの平均数より大きくなるように選択され、従って、平均で、リエンコーダ及びデコーダが、非常に稀な環境はさておき、クロック当たり1記号より高速で動作することを許す。しかしながら、本発明のこれら最後の実施形態は、先の実施形態と同じ圧縮性能を達成できない。というのは、エンコーディング/デコーディングユニットが、エンコーディング/デコーディングタスク間に、依存性、ひいては、直列化を導入せずに、統計学的情報を共有できないからである。又、本発明は、他のビデオデコーディング規格、例えば、VC1、又はおそらく、オーディオデコーディング規格にも適用でき、従って、より簡単なフロントエンドのエントロピーデコーディングユニットを使用できるようにする。同様に、均一に配布されず即ち、圧縮可能でありそしてFIFOを経てレートフィルタ例えば、おそらく、ある送信システムを経てバーストで受信されねばならないデータを有する他の非ビデオシステムも、本発明から利益を得ることができる。以上に鑑み、本発明の概念は、次の方法にあることが明らかであろう。エントロピーデコーディング機構をレート平滑化する方法であって、a第1のエントロピーエンコードされた表現をデコードされた表現へと変換するステップと、b前記デコードされた表現を、データの部分に対してコンテクストベースの適応演算エンコーディングを含む並列エンコーディング機構を使用する第2のエントロピーエンコードされた機構へとエンコードするステップと、c前記第2のエンコードされたデータをFIFOに記憶するステップと、d前記FIFOから第2のデータを検索するステップと、e第2のデータをデコードされたデータへとデコーディングするステップと、を備えた方法。この方法は、更に、ほぼ同程度の確率のデータ又は非常に発生頻度の低いデータに対して安価なエンコーディング技術を使用すると共に、他の部分に対して演算コーディングを使用することを含んでもよい。この方法は、更に、少なくとも1つの記号によりデコードコンテクストをデカップルする制御シンタックスの適用を含んでもよい。