"複数のデータ列をそれぞれ符号化する複数の符号化回路と、前記複数の符号化回路により符号化された符号をそれぞれバッファリングする複数の符号バッファと、前記複数の符号化回路により符号化された前回の符号のそれぞれの符号長で、前記複数の符号バッファ内の符号列をそれぞれ切り出す複数の切り出し部と、前記複数の切り出し部により切り出された複数の符号列をインターリーブさせながら結合する結合器とを有することを特徴とする可変長符号化装置。前記複数の切り出し部は、最初、前記複数の符号化回路により符号化される符号の中のそれぞれの最大の符号長で、前記複数の符号バッファ内の符号列をそれぞれ切り出すことを特徴とする請求項1記載の可変長符号化装置。複数の符号列がインターリーブされた符号列をバッファリングするメインバッファと、前記メインバッファ内の符号列と所定の符号列とを連接するサブビット連接部と、前記サブビット連接部により連接された符号列を所定の符号長だけシフトするサブシフタと、前記サブシフタによりシフトされた符号列を複数の符号列に分割してバッファリングする複数のサブバッファと、前記複数のサブバッファによりバッファリングされた複数の符号を復号する復号器とを有し、前記サブビット連接部は、前記メインバッファ内の符号列と、前記複数のサブバッファ内の符号列の中で前記復号器により復号されなかった残りの符号列とを連接し、前記サブシフタは、前記復号器により復号された前回の符号の符号長だけシフトすることを特徴とする可変長復号装置。さらに、複数の符号列がインターリーブされた符号列と所定の符号列とを連接するメインビット連接部と、前記メインビット連接部により連接された符号列を所定の符号長だけシフトするメインシフタとを有し、前記メインビット連接部は、複数の符号列がインターリーブされた符号列と、前記複数のメインバッファ内の符号列の中で前記サブビット連接部に出力されなかった残りの符号列とを連接し、前記メインシフタは、前記復号器により復号された前回の符号の符号長だけシフトすることを特徴とする請求項3記載の可変長復号装置。前記サブビット連接部は、第1のサブビット連接部及び第2のサブビット連接部を有し、前記サブシフタは、第1のサブシフタ及び第2のサブシフタを有し、前記複数のサブバッファは、第1のサブバッファ及び第2のサブバッファを有し、前記復号器は、第1の復号器及び第2の復号器を有し、前記第1のサブビット連接部は、前記メインバッファ内の符号列と所定の符号列とを連接し、前記第1のサブシフタは、前記第1のサブビット連接部により連接された符号列を所定の符号長だけシフトし、前記第1のサブバッファは、前記第1のサブシフタによりシフトされた符号列が分割された一部の符号列をバッファリングし、前記第1の復号器は、前記第1のサブバッファによりバッファリングされた符号を復号し、前記第1のサブビット連接部は、前記メインバッファ内の符号列と、前記第1のサブバッファ内の符号列の中で前記第1の復号器により復号されなかった残りの符号列とを連接し、前記第1のサブシフタは、前記第1の復号器により復号された前回の符号の符号長だけシフトし、前記第2のサブビット連接部は、前記第1のサブシフタによりシフトされた符号列が分割された他の符号列と、所定の符号列とを連接し、前記第2のサブシフタは、前記第2のサブビット連接部により連接された符号列を所定の符号長だけシフトし、前記第2のサブバッファは、前記第2のサブシフタによりシフトされた符号列をバッファリングし、前記第2の復号器は、前記第2のサブバッファによりバッファリングされた符号を復号し、前記第2のサブビット連接部は、前記第1のサブシフタによりシフトされた符号列が分割された他の符号列と、前記第2のサブバッファ内の符号列の中で前記第2の復号器により復号されなかった残りの符号列とを連接し、前記第2のサブシフタは、前記第2の復号器により復号された前回の符号の符号長だけシフトすることを特徴とする請求項3又は4記載の可変長復号装置。特許文献1及び特許文献2は、共に1クロックサイクル内での復号シンボル数を増加させていることが特徴であり、そのために低遅延な回路を構築することに主眼を置いている。ところで並列度を増加させた場合の回路規模の増大は回路の消費電力やチップ単価に直接的に影響するため、並列度の増加に対して回路規模が比例するなど、妥当なレベルでの回路規模増加に収めることが要求される。また、並列復号器は主にリアルタイム性が必要な状況において用いられるため、その復号器は入力符号列の特性に依存せず必ず毎サイクル並列度分の復号処理を行うことが要求される。上記要求を鑑みるに、特許文献1では復号過程が第2の復号器102と第3の復号器104の直列構成になった場合のみ1サイクルで複数シンボルの復号が可能となる。符号がこのパスを通るか否かは入力符号に依存してしまうため、並列度は確率的にしか議論できない。すなわち、可変長復号装置の処理速度をワーストケースの1クロックサイクル1復号を想定してシステムを構築しなければ復号処理が間に合わず、処理が破綻してしまう可能性が否めず、リアルタイム性を要求するシステムでは適用困難である。また、3並列又は4並列など並列度を上げた場合、復号器が直列接続されている構成のため、遅延時間の増大によって動作周波数が上げられず、結果として単位時間当たりの復号シンボル数はある一定の値に収束してしまうことが予想される。さらには、複数並列にした場合は並列化できる確率が低下してしまうため、並列度の増加は困難である。特許文献2では、第1の復号器201の消費ビット数分の第2の復号器203が並列に構成されているため、必ず1サイクル2復号処理が可能である。しかし、この構成において並列度を増加させた場合、複数の第2の復号器203が第1の復号器201の消費し得るビット数分だけ並列に接続されてしまうため、回路規模が多項式的に増大してしまい、現実的な回路規模での実装が困難である。本発明の目的は、小面積で高速な処理を行うことができる可変長符号化装置及び可変長復号装置を提供することである。可変長符号化装置は、複数のデータ列をそれぞれ符号化する複数の符号化回路と、前記複数の符号化回路により符号化された符号をそれぞれバッファリングする複数の符号バッファと、前記複数の符号化回路により符号化された前回の符号のそれぞれの符号長で、前記複数の符号バッファ内の符号列をそれぞれ切り出す複数の切り出し部と、前記複数の切り出し部により切り出された複数の符号列をインターリーブさせながら結合する結合器とを有する。可変長復号装置は、複数の符号列がインターリーブされた符号列をバッファリングするメインバッファと、前記メインバッファ内の符号列と所定の符号列とを連接するサブビット連接部と、前記サブビット連接部により連接された符号列を所定の符号長だけシフトするサブシフタと、前記サブシフタによりシフトされた符号列を複数の符号列に分割してバッファリングする複数のサブバッファと、前記複数のサブバッファによりバッファリングされた複数の符号を復号する復号器とを有し、前記サブビット連接部は、前記メインバッファ内の符号列と、前記複数のサブバッファ内の符号列の中で前記復号器により復号されなかった残りの符号とを連接し、前記サブシフタは、前記復号器により復号された前回の符号の符号長だけシフトする。小面積で高速な処理を行うことができる。第1の実施形態図3Aは第1の実施形態による可変長符号化装置の構成例を示す図であり、図3Bは第1の実施形態による可変長復号装置の構成例を示す図であり、図4はハフマン符号の符号表の例を示す図であり、図5は図3Aの可変長符号化装置の処理を説明するための符号列を示す図である。図4のハフマン符号は、可変長符号である。まず、図3Aを参照しながら、可変長符号化装置を説明する。可変長符号化装置は、A系統の符号化器302a及びB系統の符号化器302bを有する。符号化器302a及び302bは、並列に符号化を行う。符号化器302a及び302bは、同じ符号表を基に符号化を行ってもよいし、異なる符号表を基に符号化を行ってもよい。A系統の符号化器302aは、A系統のシンボル列データ列301aを例えば図4の符号表を基に可変長符号に符号化し、その符号化した符号を切り出し部304aに出力し、その符号の符号長を符号長バッファ303aに出力する。符号長バッファ303aは、FIFOファーストインファーストアウトであり、上記の符号長をバッファリングする。切り出し部304aは、符号バッファを有し、符号化器302aにより符号化された符号をバッファリングする。例えば、切り出し部304aは、図5の符号列DT1をバッファリングする。符号化器302aは、まず符号長a0の符号を出力し、次に符号長a1の符号を出力し、次に符号長a2の符号を出力し、その後も符号の出力を繰り返す。その結果、切り出し部304aは、符号列DT1として、符号長a0の符号、符号長a1の符号及び符号長a2の符号を順次、バッファリングする。次に、切り出し部304aは、最初、符号化器302aにより符号化される図4の符号表の符号の中の最大の符号長の12ビットで、符号バッファ内の符号列DT1を切り出し、その切り出した符号列305aをマルチプレクサ306に出力する。この切り出しにより、符号長a2の符号は、符号長a2αの符号及び符号長a2βの符号に分割される。切り出された12ビットの符号列305aは、符号長a0の符号、符号長a1の符号及び符号長a2αの符号により構成される。切り出し部304a内の符号バッファには、符号長a2βの符号が残される。切り出し部304aは、2回目以降では、符号化器302aにより符号化された前回の符号の符号長を符号長バッファ303aから入力し、その符号長で、符号バッファ内の符号列DT1を切り出す。同様に、B系統の符号化器302bは、B系統のシンボル列データ列301bを例えば図4の符号表を基に可変長符号に符号化し、その符号化した符号を切り出し部304bに出力し、その符号の符号長を符号長バッファ303bに出力する。符号長バッファ303bは、FIFOであり、上記の符号長をバッファリングする。切り出し部304bは、符号バッファを有し、符号化器302bにより符号化された符号をバッファリングする。例えば、切り出し部304bは、図5の符号列DT2をバッファリングする。符号化器302bは、まず符号長b0の符号を出力し、次に符号長b1の符号を出力し、その後も符号化を繰り返す。その結果、切り出し部304bは、符号列DT2として、符号長b0の符号及び符号長b1の符号を順次、バッファリングする。次に、切り出し部304bは、最初、符号化器302bにより符号化される図4の符号表の符号の中の最大の符号長の12ビットで、符号バッファ内の符号列DT2を切り出し、その切り出した符号列305bをマルチプレクサ306に出力する。この切り出しにより、符号長b1の符号は、符号長b1αの符号及び符号長b1βの符号に分割される。切り出された12ビットの符号列305bは、符号長b0の符号及び符号長b1αの符号により構成される。切り出し部304b内の符号バッファには、符号長b1βの符号が残される。切り出し部304bは、2回目以降では、符号化器302bにより符号化された前回の符号の符号長を符号長バッファ303bから入力し、その符号長で、符号バッファ内の符号列DT2を切り出す。マルチプレクサ306は、切り出し部304aにより切り出された符号列305a及び切り出し部304bにより切り出された符号列305bを交互に多重化し、符号列DT3を出力する。図5に示すように、データ列DT3において、前半の12ビットは、切り出し部304aにより切り出された12ビットの符号列305aであり、後半の12ビットは、切り出し部304bにより切り出された12ビットの符号列305bである。次に、図3Bを参照しながら、可変長復号装置を説明する。可変長復号装置は、A系統の復号器317a及びB系統の復号器317bを有する。復号器317a及び317bは、並列に復号を行う。復号器317a及び317bは、同じ復号表を基に復号を行ってもよいし、異なる復号表を基に復号を行ってもよい。符号列DT3は、図3Aの可変長符号化装置により符号化された符号列である。読み出し部312は、所定の符号長の符号列DT3を読み出し、符号列313をデマルチプレクサ314に出力する。符号列313は、A系統の符号列とB系統の符号列を有する。デマルチプレクサ314は、逆多重化により、符号列313のうちの前部のA系統の符号を復号用バッファ315内のA系統符号列316aの残部に連接結合し、符号列313のうちの後部のB系統の符号を復号用バッファ315内のB系統符号列316bの残部に連接結合する。復号器317aは、図3Aの符号化器302aの符号表に対応する復号表を用いて、符号列316aの先頭の符号を復号し、復号シンボルを出力すると共に、復号した符号の符号長をデマルチプレクサ314に出力する。A系統符号列316aは、復号器317aで復号された符号の符号長だけ減り、その減った符号長だけデマルチプレクサ314によりA系統の符号列313が追加される。その結果、A系統符号列316aの長さは、最大符号長Nになる。最大符号長Nは、図4の場合には12ビットである。復号器317bは、図3Aの符号化器302bの符号表に対応する復号表を用いて、符号列316bの先頭の符号を復号し、復号シンボルを出力すると共に、復号した符号の符号長をデマルチプレクサ314に出力する。B系統符号列316bは、復号器317bで復号された符号の符号長だけ減り、その減った符号長だけデマルチプレクサ314によりB系統の符号列313が追加される。その結果、B系統符号列316bの長さは、最大符号長Nになる。以上のように、図3Aの可変長符号化装置では、シンボル列301a及び301bの符号を逐次的に結合するのではなく、切り出し部304a及び304bで切り出された符号列305a及び305bを順次結合することにより、新たな符号列DT3を構築する。符号列DT3のフォーマットは、A系統のシンボル列301a及びB系統のシンボル列301bから生成されたビットストリームが交互に再配置されている形式となり、特に各ビットストリームからそれぞれ何ビットを取り出して配置するかの単位を、過去に各系統で符号化された符号の符号長を基に決定する。具体的な取り出し単位決定方法としては、各系統毎に符号化した符号の符号長を格納する符号長バッファFIFO303a及び303bを設け、切り出し部304a及び304bは、各系統で過去に符号化した符号の符号長の中から、最も過去に格納された符号長を使用し、符号列の切り出しを行う。ここで、各系統で最初に符号化される際には過去に符号化した符号が存在しないが、この際は、切り出し部304a及び304bは、最大符号長N例えば12ビットの符号列を切り出す。また、符号化器302a及び302bは、符号化処理が終了した系統の符号列の末尾に符号の終了を示すEOSEndOfSequenceを挿入する。EOSに割り当てる符号は任意であるが、符号化対象シンボルに対する符号群の一部とみなし、復号過程で符号列から取り出され得る最大のビット幅を超えてはならない。図3Aの可変長符号化装置は、2個の符号化器302a及び302bが並列に符号化処理を行うので、小面積で高速に符号化処理を行うことができる。また、図3Bの可変長復号装置は、2個の復号器317a及び317bが並列に復号処理を行うので、小面積で高速に復号処理を行うことができる。第2の実施形態図6は、第2の実施形態による可変長符号化装置の構成例を示す図である。A系統のシンボルバッファ601aは、A系統のシンボル列データ列を記憶する。A系統の符号化回路602aは、例えば図4の符号表を用いて、シンボルバッファ601a内のシンボル列を先頭から順次、符号に符号化し、その符号をストリームバッファ603aに出力し、その符号の符号長を符号長バッファ604aに出力する。ストリームバッファ603aは、符号化回路602aにより符号化された符号を順次バッファリングする。符号長バッファ604aは、FIFOであり、符号化回路602aにより符号化された符号の符号長を順次バッファリングする。なお、符号長バッファ604aは、最初、最大符号長N例えば12ビットを記憶する。例えば、ストリームバッファ603aは、図5の符号列DT1をバッファリングする。まず、符号化回路602aが符号長a0の符号を出力すると、ストリームバッファ603aには符号長a0の符号が記憶され、符号長バッファ604aには符号長a0が記憶される。次に、符号化回路602aが符号長a1の符号を出力すると、ストリームバッファ603aには符号長a1の符号が記憶され、符号長バッファ604aには符号長a1が記憶される。次に、符号化回路602aが符号長a2の符号を出力すると、ストリームバッファ603aには符号長a2の符号が記憶され、符号長バッファ604aには符号長a2が記憶される。以下、同様に、符号化回路603aは、符号長a3及びa4の符号等の出力を繰り返す。切り出し部605aは、符号長バッファ604a内の先頭に記憶されている最大符号長N12ビットを取り出し、最大符号長Nで、ストリームバッファ603a内の符号列DT1を切り出し、その切り出した符号列をマルチプレクサ606に出力する。切り出された12ビットの符号列は、図5に示すように、符号長a0の符号、符号長a1の符号及び符号長a2αの符号により構成される。符号長バッファ604aは、最大符号長Nが取り出されると、最大符号長Nを破棄する。ストリームバッファ603aには、符号長a2βの符号が残される。次に、切り出し部605aは、符号長バッファ604aから符号長a0を取り出し、符号長a0で、ストリームバッファ603a内の符号列を切り出し、マルチプレクサ606に出力する。符号長バッファ604aは、符号長a0が取り出されると、符号長a0を破棄する。次に、切り出し部605aは、符号長バッファ604aから符号長a1を取り出し、符号長a1で、ストリームバッファ603a内の符号列を切り出し、マルチプレクサ606に出力する。符号長バッファ604aは、符号長a1が取り出されると、符号長a1を破棄する。以下、同様に、切り出し部605aは、符号化回路602aにより符号化された前回の符号の符号長を符号長バッファ604aから入力し、その符号長で、ストリームバッファ603a内の符号列を切り出し、マルチプレクサ606に出力する。同様に、B系統のシンボルバッファ601bは、B系統のシンボル列データ列を記憶する。B系統の符号化回路602bは、例えば図4の符号表を用いて、シンボルバッファ601b内のシンボル列を先頭から順次、符号に符号化し、その符号をストリームバッファ603bに出力し、その符号の符号長を符号長バッファ604bに出力する。ストリームバッファ603bは、符号化回路602bにより符号化された符号を順次バッファリングする。符号長バッファ604bは、FIFOであり、符号化回路602bにより符号化された符号の符号長を順次バッファリングする。なお、符号長バッファ604bは、最初、最大符号長N例えば12ビットを記憶する。例えば、ストリームバッファ603bは、図5の符号列DT2をバッファリングする。まず、符号化回路602bが符号長b0の符号を出力すると、ストリームバッファ603bには符号長b0の符号が記憶され、符号長バッファ604bには符号長b0が記憶される。次に、符号化回路602bが符号長b1の符号を出力すると、ストリームバッファ603bには符号長b1の符号が記憶され、符号長バッファ604bには符号長b1が記憶される。次に、符号化回路602bが符号長b2の符号を出力すると、ストリームバッファ603bには符号長b2の符号が記憶され、符号長バッファ604bには符号長b2が記憶される。以下、同様に、符号化回路603bは、符号長b3及びb4の符号等の出力を繰り返す。切り出し部605bは、符号長バッファ604b内の先頭に記憶されている最大符号長N12ビットを取り出し、最大符号長Nで、ストリームバッファ603b内の符号列DT2を切り出し、その切り出した符号列をマルチプレクサ606に出力する。切り出された12ビットの符号列は、図5に示すように、符号長b0の符号及び符号長b1αの符号により構成される。符号長バッファ604bは、最大符号長Nが取り出されると、最大符号長Nを破棄する。ストリームバッファ603bには、符号長b1βの符号が残される。次に、切り出し部605bは、符号長バッファ604bから符号長b0を取り出し、符号長b0で、ストリームバッファ603b内の符号列を切り出し、マルチプレクサ606に出力する。符号長バッファ604bは、符号長b0が取り出されると、符号長b0を破棄する。次に、切り出し部605bは、符号長バッファ604bから符号長b1を取り出し、符号長b1で、ストリームバッファ603b内の符号列を切り出し、マルチプレクサ606に出力する。符号長バッファ604bは、符号長b1が取り出されると、符号長b1を破棄する。以下、同様に、切り出し部605bは、符号化回路602bにより符号化された前回の符号の符号長を符号長バッファ604bから入力し、その符号長で、ストリームバッファ603b内の符号列を切り出し、マルチプレクサ606に出力する。マルチプレクサ606は、切り出し部605aにより切り出された符号列及び切り出し部605bにより切り出された符号列を交互に多重化し、符号列DT3を結合済符号バッファ607に出力する。結合済符号バッファ607は、符号列DT3を記憶する。例えば、図5に示すように、データ列DT3において、前半の12ビットは、切り出し部605aにより切り出された12ビットの符号列であり、後半の12ビットは、切り出し部605bにより切り出された12ビットの符号列である。図7は、本実施形態による可変長符号化装置の具体的な構成例を示す図である。可変長符号化装置は、2個の符号化回路703a及び703bにより2並列の符号化を行う。シンボルバッファ701は、例えばSRAMスタティックランダムアクセスメモリ:StaticRandomAccessMemoryであり、シンボル列データ列を記憶する。分配器セレクタ702は、シンボルバッファ701内のシンボル列をシンボル単位で交互にA系統の符号化回路703a及びB系統の符号化回路703bに出力する。符号化回路703aは、分配器702により出力されたA系統のシンボル列を可変長符号に符号化し、その符号化した符号をセレクタ704aに出力し、その符号の符号長をセレクタ706aに出力する。符号長は、例えば5ビットデータとして表現される。セレクタ704aは、符号化回路703aが符号を出力している間は符号化回路703aが出力する符号を選択し、シンボルバッファ701内のA系統のシンボル列が空になり、符号化回路703aの符号化が終了するとEOSコード符号化終了コードを選択し、符号バッファ705aに出力する。符号バッファ705aは、例えば144ビットレジスタであり、セレクタ704aにより出力される符号又はEOSコードを順次バッファリングし、図6のストリームバッファ603aと同様に、例えば図5の符号列DT1を記憶する。セレクタ706aは、符号化回路703aの符号化開始前に最大符号長Nの12ビットを選択し、符号化回路703aの符号化が開始すると符号化回路703aにより出力される符号長を選択し、符号長FIFO707aに出力する。符号長FIFO707aは、例えば5ビット×16ワードの記憶容量を有し、図6の符号長バッファ604aと同様に、最大符号長N12ビット、符号長a0~a4等を順次バッファリングする。切り出し部708aは、図6の切り出し部605aと同様に、符号長FIFO707aに記憶されている符号長を順次取り出し、取り出した符号長で、符号バッファ705a内の符号列を順次切り出し、その切り出した符号列を結合器709に出力する。すなわち、切り出し部708aは、最初、符号化回路703aにより符号化される符号の中の最大符号長Nで、符号バッファ705a内の符号列を切り出し、その後、符号化回路703aにより符号化された前回の符号の符号長で、符号バッファ705a内の符号列を切り出す。同様に、符号化回路703bは、分配器702により出力されたB系統のシンボル列を可変長符号に符号化し、その符号化した符号をセレクタ704bに出力し、その符号の符号長をセレクタ706bに出力する。符号長は、例えば5ビットデータとして表現される。セレクタ704bは、符号化回路703bが符号を出力している間は符号化回路703bが出力する符号を選択し、シンボルバッファ701内のB系統のシンボル列が空になり、符号化回路703bの符号化が終了するとEOSコード符号化終了コードを選択し、符号バッファ705bに出力する。符号バッファ705bは、例えば144ビットレジスタであり、セレクタ704bにより出力される符号又はEOSコードを順次バッファリングし、図6のストリームバッファ603bと同様に、例えば図5の符号列DT2を記憶する。セレクタ706bは、符号化回路703bの符号化開始前に最大符号長Nの12ビットを選択し、符号化回路703bの符号化が開始すると符号化回路703bにより出力される符号長を選択し、符号長FIFO707bに出力する。符号長FIFO707bは、例えば5ビット×16ワードの記憶容量を有し、図6の符号長バッファ604bと同様に、最大符号長N12ビット、符号長b0~b4等を順次バッファリングする。切り出し部708bは、図6の切り出し部605bと同様に、符号長FIFO707bに記憶されている符号長を順次取り出し、取り出した符号長で、符号バッファ705b内の符号列を順次切り出し、その切り出した符号列を結合器709に出力する。すなわち、切り出し部708bは、最初、符号化回路703bにより符号化される符号の中の最大符号長Nで、符号バッファ705b内の符号列を切り出し、その後、符号化回路703bにより符号化された前回の符号の符号長で、符号バッファ705b内の符号列を切り出す。結合器709は、切り出し部708aにより切り出されたA系統の符号列及び切り出し部708bにより切り出されたB系統の符号列を交互に結合する。すなわち、結合器709は、切り出し部708a及び708bにより切り出された符号列をインターリーブさせながら結合する。セレクタ710は、切り出し部708a及び708bの切り出しが終了すると、結合器709により結合された符号列を結合済符号バッファ711に出力する。結合済符号バッファ711は、セレクタ710により出力された符号列を記憶する。セレクタ710により出力される符号列は、結合済符号バッファ711に格納された符号列の末尾に結合される。図8は、図7の可変長符号化装置の符号化方法の例を示すフローチャートである。ステップS801では、初期化時に、セレクタ706a及び706bは最大符号長N12ビットを選択し、符号長FIFO707a及び707bに最大符号長Nをプッシュする記憶させる。次に、ステップS802では、符号長FIFO707a及び707bの両方が空か否かをチェックする。空であれば符号化処理を終了し、空でなければステップS803及びS807の並列処理に進む。ステップS803では、符号長FIFO707aが空か否かをチェックする。空であればステップS806へ進み、空でなければステップS804に進む。ステップS806では、符号長lenAに0を設定し、ステップS811に進む。ステップS804では、符号化回路703aは、符号化を行い、その符号を符号バッファ705aにプッシュし、符号長を符号長バッファ707aにプッシュする。次に、ステップS805では、切り出し部708aは、符号長FIFO707a内の符号長を読み出し、その符号長を符号長lenAに設定し、ステップS811に進む。ステップS807では、符号長FIFO707bが空か否かをチェックする。空であればステップS810へ進み、空でなければステップS808に進む。ステップS810では、符号長lenBに0を設定し、ステップS811に進む。ステップS808では、符号化回路703bは、符号化を行い、その符号を符号バッファ705bにプッシュし、符号長を符号長バッファ707bにプッシュする。次に、ステップS809では、切り出し部708bは、符号長FIFO707b内の符号長を読み出し、その符号長を符号長lenBに設定し、ステップS811に進む。分配器702は、シンボルバッファ701から毎サイクル1シンボルずつ読み出し、符号化回路703a及び703bに交互に出力する。符号化回路703a及び703bは、幅広い可変長符号化処理を対象としているが、その一例としてハフマン符号化を例とする。ハフマン符号は、入力シンボル群の確率分布に基づいた符号表を用いて符号化する方式であり、1シンボルに整数ビットを割り当てる符号化方式でも特に高い符号化効率を示す。図4のハフマン符号では、最小符号長が1ビット、最大符号長が12ビットの符号表を用いて対象シンボルを符号化していく。ステップS811では、切り出し部708aは、符号バッファ705aに格納されている符号列の長さが符号長lenA以上であるか否かをチェックする。符号長lenA以上であればステップS812に進み、符号長lenA未満であればステップS802に戻る。ステップS812では、切り出し部708bは、符号バッファ705bに格納されている符号列の長さが符号長lenB以上であるか否かをチェックする。符号長lenB以上であればステップS813及びS817の並列処理に進み、符号長lenB未満であればステップS802に戻る。ステップS813では、切り出し部708aは、符号バッファ705a内の符号列を符号長lenAで切り出し、結合器709及びセレクタ710を介して、結合済符号バッファ711に格納する。次に、ステップS814では、切り出し部708aは、符号長バッファ707aから符号長をポップする取り出す。次に、ステップS815では、分配器702は、シンボルバッファ701に符号化対象シンボルがあるか否かをチェックする。符号化対象シンボルがあればステップS802に戻り、符号化対象シンボルがなければステップS816へ進む。ステップS816では、セレクタ704aは、EOSコードを選択し、符号バッファ705aに書き込む。その後、ステップS802の処理に戻る。ステップS817では、切り出し部708bは、符号バッファ705b内の符号列を符号長lenBで切り出し、結合器709及びセレクタ710を介して、結合済符号バッファ711に格納する。次に、ステップS818では、切り出し部708bは、符号長バッファ707bから符号長をポップする。次に、ステップS819では、分配器702は、シンボルバッファ701に符号化対象シンボルがあるか否かをチェックする。符号化対象シンボルがあればステップS802に戻り、符号化対象シンボルがなければステップS820へ進む。ステップS820では、セレクタ704bは、EOSコードを選択し、符号バッファ705bに書き込む。その後、ステップS802の処理に戻る。以上のように、切り出し部708a及び708bは、それぞれ、符号バッファ705a及び705bに格納された符号列が符号長lenA及びlenB以上になった場合のみ、符号バッファ705a及び705b内の符号列を切り出し、結合器709へ出力する。符号バッファ705a及び705bのいずれかが符号長lenA及びlenBに満たない場合は、切り出し部708a及び708bは結合器709に符号列を出力せず、符号化回路703a及び703bは、シンボルの符号化処理を継続する。符号バッファ705a及び705bのサイズは、符号バッファ705a及び705bの格納容量の偏りがワーストケースの場合から計算可能である。ワーストケースの場合は、符号バッファ705aに毎サイクル1ビットの符号が書き込まれ、符号バッファ705bには毎サイクル12ビットの符号が書き込まれる場合であり、切り出し部708a及び708bから結合済符号バッファ711に符号列が書き込まれるのは符号バッファ705aに12ビットの符号が格納された場合である。この時、符号バッファ705bには12×12ビットの符号が格納されていることとなり、これが符号バッファ705a及び705bに必要なメモリ容量となる。シンボルバッファ701及び結合済符号バッファ711は、入力するシンボル列に依存するため、その最低/最大容量はシステムに依存し、SRAM又はDRAMダイナミックランダムアクセスメモリ:DynamicRandomAccessMemoryで実装することが望ましい。符号化の終了条件は、符号長FIFO707a及び707bが空になった場合である。A系統の符号化対象シンボル数とB系統の符号化対象シンボル数が異なる場合は、一方が先に符号化処理を終了するが、その場合は終了した系統を停止させ、他方の系統の符号化回路が全シンボルを符号化するまで継続する。図9は、第2の実施形態による可変長復号装置の構成例を示す図である。可変長復号装置は、A系統の復号部911a及びB系統の復号部911bが2並列に復号処理を行う。結合済符号バッファ901は、例えばSRAMであり、図7の可変長符号化装置により生成された符号列を記憶する。結合済符号バッファ901は、A系統の符号列及びB系統の符号列がインターリーブされた符号列をメインビット連接部902に出力する。メインビット連接部902は、結合済符号バッファ901により出力される符号列とメインバッファ904により出力される所定の符号列とを連接する。メインシフタ903は、メインビット連接部902により連接された符号列を所定の符号長lenAlenBだけシフトし、2系統×N=24ビットの符号列をメインバッファ904に出力する。メインバッファ904は、24ビットの符号列をバッファリングする。24ビットの符号列は、図5の符号列DT3のように、A系統の符号列及びB系統の符号列を有する。第1のサブビット連接部905aは、メインバッファ904内の符号列と第1のサブバッファにより出力される所定の符号列とを連接する。第1のサブシフタ906aは、第1のサブビット連接部905aにより連接された符号列を所定の符号長lenAだけシフトし、24ビットの符号列を出力する。具体的には、第1のサブシフタ906aは、24ビットの符号列のうちの前半の12ビットのA系統の符号列を第1のサブバッファ907aに出力し、後半の12ビットのB系統の符号列を第2のサブビット連接部905bに出力する。第1のサブバッファ907aは、第1のサブシフタ906aによりシフトされた24ビットの符号列が分割された一部の前半の12ビットのA系統の符号列をバッファリングする。第1の復号器908aは、第1のサブバッファ907aによりバッファリングされた符号列の先頭の符号をシンボルデータに復号し、その復号したシンボルdecAをシンボルバッファ910に出力し、その復号した符号の符号長lenAを第1のサブシフタ906a及び加算器909に出力する。第1のサブビット連接部905aは、メインバッファ904内の符号列と、第1のサブバッファ907a内の符号列の中で第1の復号器908aにより復号されなかった残りの符号とを連接する。第1のサブシフタ906aは、第1のサブビット連接部905aにより連接された符号列を、第1の復号器908aにより復号された前回の符号の符号長lenAだけシフトする。第2のサブビット連接部905bは、第1のサブシフタ906aによりシフトされた符号列が分割された他の符号列後半12ビットのB系統の符号列と、第2のサブバッファ907bの所定の符号列とを連接する。第2のサブシフタ906bは、第2のサブビット連接部905bにより連接された符号列を所定の符号長lenBだけシフトする。第2のサブバッファ907bは、第2のサブシフタ906bによりシフトされた12ビット符号列をバッファリングする。第2の復号器908bは、第2のサブバッファ907bによりバッファリングされた先頭の符号をシンボルデータに復号し、その復号したシンボルdecBをシンボルバッファ910に出力し、その復号した符号の符号長lenBを第2のサブシフタ906b及び加算器909に出力する。第2のサブビット連接部905bは、第1のサブシフタ906aによりシフトされた符号列が分割された他の符号列後半12ビットのB系統の符号列と、第2のサブバッファ907b内の符号列の中で第2の復号器908bにより復号されなかった残りの符号とを連接する。第2のサブシフタ906bは、第2のサブビット連接部905bにより連接された符号列を、第2の復号器908bにより復号された前回の符号の符号長lenBだけシフトする。加算器909は、第1の復号器908aにより復号された符号の符号長lenAと第2の復号器908bにより復号された符号の符号長lenBとを加算し、符号長lenAlenBをメインシフタ903に出力する。メインビット連接部902は、結合済符号バッファ901内の符号列と、メインバッファ904内の符号列の中で第1のサブビット連接部905aに出力されなかった残りの符号列とを連接する。メインシフタ903は、メインビット連接部902により連接された符号列を、第1の復号器908a及び第2の復号器908bにより復号された前回の符号の合計の符号長lenAlenBだけシフトする。以上のように、可変長復号装置は、複数系統の符号列がインターリーブされた符号を復号することができる。メインシフタ903は、系統数×最大符号長=2×12=24ビット分のシフト処理が可能である。メインバッファ904は、系統数×最大符号長=2×12=24ビット分のバッファリングを行う。第1のサブシフタ906a及び第2のサブシフタ906bは、それぞれ、最大符号長=12ビット分のシフトが可能である。第1のサブバッファ907a及び第2のサブバッファ907bは、それぞれ、各系統に対して最大符号長=12ビット分の符号を格納可能である。図10は、図9の可変長復号装置の復号方法の例を示すフローチャートである。ステップS1001では、初期化時にはメインバッファ904及びサブバッファ907a,907b共に符号が格納されていないため、メインバッファ904は、初期化直後に結合済符号バッファ901からデータを読み出し、24ビットのデータを書き込む。24ビット容量のメインバッファ904は、毎サイクル符号列を第1のサブビット連接部905aに供給し、復号器908a及び908bで消費された符号の符号長lenA及びlenBの合計符号長lenAlenB分を、結合済符号バッファ901から補充する。初期化直後は、サブバッファ907a及び907bに符号が格納されていないが、最初の読み出し長は最大符号長の12ビットであることが符号化装置の符号化時に約束されているため、サブシフタ906a及び906bのシフト量を0ビットとしてサブバッファ907a及び907bにデータを供給する。第1のサブバッファ907aにはメインバッファ904内の24ビットの符号列のうちの前半の12ビットが格納され、第2のサブバッファ907bにはメインバッファ904内の24ビットの符号列のうちの後半の12ビットが格納される。初期化終了後に、ステップS1002及びS1007の並列処理に進む。ステップS1002では、可変長復号装置は、A系統のEOS復号終了フラグがアサートされていればA系統の復号処理の終了を意味するのでステップS1006に進み、A系統のEOS復号終了フラグがアサートされていなければA系統の復号処理の未終了を意味するのでステップS1003に進む。ステップS1003では、第1の復号器908aは、第1のサブバッファ907a内の先頭の符号をシンボル復号データdecAに復号し、その符号の符号長消費ビット長lenAを出力する。次に、ステップS1004では、可変長復号装置は、シンボルdecAがEOSコードであるか否かをチェックし、EOSコードであれば終了を意味するのでステップS1005へ進み、EOSコードでなければステップS1012及びS1014の並列処理に進む。ステップS1005では、可変長復号装置は、A系統のEOS復号終了フラグをアサートし、ステップS1012及びS1014の並列処理に進む。ステップS1006では、第1の復号器908aは、シンボルdecAとして終了コードNONEを出力し、符号長lenAとして0を出力し、ステップS1012及びS1014の並列処理に進む。ステップS1007では、可変長復号装置は、B系統のEOS復号終了フラグがアサートされていればB系統の復号処理の終了を意味するのでステップS1011に進み、B系統のEOS復号終了フラグがアサートされていなければB系統の復号処理の未終了を意味するのでステップS1008に進む。ステップS1008では、第2の復号器908bは、第2のサブバッファ907b内の先頭の符号をシンボル復号データdecBに復号し、その符号の符号長消費ビット長lenBを出力する。次に、ステップS1009では、可変長復号装置は、シンボルdecBがEOSコードであるか否かをチェックし、EOSコードであれば終了を意味するのでステップS1010へ進み、EOSコードでなければステップS1012及びS1014の並列処理に進む。ステップS1010では、可変長復号装置は、B系統のEOS復号終了フラグをアサートし、ステップS1012及びS1014の並列処理に進む。ステップS1011では、第2の復号器908bは、シンボルdecBとして終了コードNONEを出力し、符号長lenBとして0を出力し、ステップS1012及びS1014の並列処理に進む。ステップS1012では、加算器909は、符号長lenA及び符号長lenBを加算し、その加算値lenAlenBを符号長lenMainとして出力する。次に、ステップS1013では、メインシフタ903は、ビット連接部902により出力される符号列を符号長lenMainだけシフトする。その後、ステップS1016へ進む。ステップS1014では、第1のサブシフタ906aは、第1のサブビット連接部905aにより連接された符号列を符号長lenAだけシフトする。次に、ステップS1015では、第2のサブシフタ906bは、第2のサブビット連接部905bにより連接された符号列を符号長lenBだけシフトする。その後、ステップS1016へ進む。ステップS1016では、可変長復号装置は、A系統のEOS復号終了フラグがアサートであり、かつB系統のEOS復号終了フラグがアサートであれば、処理を終了し、それ以外の場合にはステップS1002及びS1007の並列処理に戻る。以上のように、メインバッファ904に格納された符号列はA系統の符号列とB系統の符号列とが交互に並んでいるため、まず第1のサブバッファ907aは符号列のシフト処理によって第1の復号器908aで消費した符号を破棄し、第1のサブビット連接部905aは第1のサブバッファ907aの残余符号列とメインバッファ904の符号列とを結合する。結合されたデータの上位12ビットは再度、第1のサブバッファ907aに格納され、その次の12ビットは、第2のサブバッファ906bに格納される。加算器909は、第1の復号器908a及び第2の復号器908bで復号された符号の符号長lenA及びlenBを加算し、合計の符号長lenAlenBを出力する。メインシフタ903は、メインバッファ904の符号列から現復号処理によってA系統の復号部911a及びB系統の復号部911bに補充された符号列を破棄するため、メインバッファ904の出力を符号長lenAlenBだけシフトし、補充ビット分を破棄する。シフトされた符号列は、結合済符号バッファ901の符号列と連結され、その上位24ビットは再度メインバッファ904に格納される。図7の可変長符号化装置によれば、必ず1サイクルで並列度分の復号処理が可能な符号を生成することができる。結合済符号列は、各系統の符号がインターリーブマージされた構成となっており、それぞれの符号列から何ビットを切り出して結合済符号列を構築するかを各系統で過去に符号化された符号の符号長から決定する。そのため、復号処理で置き換えると、各系統の符号の先頭位置が前のサイクルで各系統で復号した符号の符号長からわかることを意味する。特に、前のサイクルの符号の符号長の結合済符号列を連結することで、並列復号時の各系統では常に復号処理で復号した符号の符号長と、各系統へ補充するビット長が一致するため、復号時における各系統では常に最大符号長分の符号が保持され、各系統の復号処理が停止することは無い。ここで、復号開始時に各系統の復号部911a及び911bに何ビットを供給するかが不明のため、最初の供給量を符号列から取り出され得る最大符号長Nに一致させることで、必ず1サイクルで並列度分の符号が復号可能になることを保障する。符号化対象シンボルを複数の系統に分割して符号化するため、各系統の符号化対象シンボル数が一致しない場合が発生する。これが発生した場合、各系統の復号器908a及び908bをどのタイミングで停止させるかが不明となるため、復号処理がオーバーランしてしまう問題が発生する。そのため、符号化回路703a及び703bの各符号列の末尾にEOSコードを付加することで、復号終了時には各系統にEOSコードが復号されることになる。このため、EOSコードを復号した系統を停止させることで、処理のオーバーランを防止することが可能である。復号装置においては、各系統の復号部911a及び911bが並列に接続されている構成となり、各系統で少なくとも最大符号長Nと一致する容量のサブバッファ907a及び907bを有する。1クロックサイクルで並列度分の符号を復号するためには、必ずサブバッファ907a及び907bには最大符号長N分の符号が充填されていなければならない。本実施形態では、常に復号器908a及び908bで復号した符号の符号長の符号列が、結合済符号バッファ901からサブバッファ907a及び907bに補充するビット長と一致しているため、必ず最大符号長N分の符号がサブバッファ907a及び907bに格納されていることとなる。これは各系統で毎サイクル1シンボルが復号可能であるということを意味する。また、復号装置内で最も遅延時間が支配的な復号器908a及び908bが並列接続されているため、並列度を増加させても最大遅延時間を決定する各系統のパスクリティカルパスには常に1つずつの復号器908a及び908bしか存在していないため、並列度向上による遅延時間増大を抑制することができる。また、並列度と復号器908a,908bの個数が比例関係となるため、並列度に対する回路規模も線形的増加で済む。本実施形態では、符号化装置における各系統のシンボルの符号化と、復号装置における各系列からのシンボル取得の順序が同一であればよく、各サイクルで必ず並列度分のシンボルを取得する構成でなくても良い。復号装置の構成によっては複数サイクルが必要な復号器908a,908bを用いることも可能であり、レンジコーダのように特定のサイクルでのみビットを消費するような符号化復号アルゴリズムにも適用可能である。第3の実施形態図11は、第3の実施形態による可変長復号装置の構成例を示す図である。以下、図11が図9と異なる点を説明する。サブビット連接部905は、図9の第1のサブビット連接部905a及び第2のサブビット連接部905bに対応する。サブシフタ906は、図9の第1のサブシフタ906a及び第2のサブシフタ906bに対応する。復号器908は、図9の第1の復号器908a及び第2の復号器908bに対応する。サブビット連接部905は、メインバッファ904内の符号列とセレクタ1102により出力される所定の符号列とを連接する。サブシフタ906は、サブビット連接部905により連接された符号列を所定の符号長lenだけシフトする。第1のサブバッファ907aは、サブシフタ906によりシフトされた24ビットの符号列を2系統の符号列に分割し、前半12ビットのA系統の符号列をバッファリングする。第2のサブバッファ907bは、サブシフタ906によりシフトされた24ビットの符号列を2系統の符号列に分割し、後半12ビットのB系統の符号列をバッファリングする。セレクタ1101は、第1のサブバッファ907aの符号列と第2のサブバッファ907bの符号列を交互に選択し、復号器908に出力する。復号器908は、セレクタ1101により出力される符号列を入力し、第1のサブバッファ907aの符号と第2のサブバッファ907bの符号とを交互に復号し、復号したシンボルをシンボルバッファ910に出力し、復号した符号の符号長lenをサブシフタ906及びメインシフタ903に出力する。セレクタ1102は、第1のサブバッファ907a内の符号列の中で復号器908により復号されなかった残りの符号列と、第2のサブバッファ907b内の符号列の中で復号器908により復号されなかった残りの符号列とを交互に選択し、サブビット連接部905に出力する。サブビット連接部905は、メインバッファ904内の符号列と、セレクタ1102により出力されるサブバッファ907a及び907b内の符号列の中で復号器908により復号されなかった残りの符号列とを連接する。メインシフタ903は、メインビット連接部902により連接された符号列を、復号器908により復号された前回の符号の符号長lenだけシフトする。サブシフタ906は、サブビット連接部905により連接された符号列を、復号器908により復号された前回の符号の符号長lenだけシフトする。本実施形態の可変長復号装置は、2系統の結合済符号列を単体の復号器908で復号する例を示す。本実施形態は、サブバッファ907a及び907bの出力端子に接続されるセレクタ1101及び1102の選択を毎サイクル交互に切り替える。回路規模が大きい復号器908及びサブシフタ906がそれぞれ1個ずつに統合されたことによって、回路規模削減に繋がる。本実施形態では、任意の並列度による並列復号化が可能であり、さらには同じ結合済符号列を最大並列度以下で任意の復号並列度に変更することが可能である。第4の実施形態図12は、第4の実施形態による可変長符号化装置の構成例を示す図であり、図7に対して、C系統の符号化部及びD系統の符号化部を追加したものである。可変長符号化装置は、A系統の符号化部、B系統の符号化部、C系統の符号化部及びD系統の符号化部が並列に接続される。以下、図12が図7と異なる点を説明する。C系統の符号化部は、図7と同様に、第3の符号化回路703c、セレクタ704c、第3の符号バッファ705c、セレクタ706c、第3の符号長FIFO707c及び第3の切り出し部708cを有する。D系統の符号化部は、図7と同様に、第4の符号化回路703d、セレクタ704d、第4の符号バッファ705d、セレクタ706d、第4の符号長FIFO707d及び第4の切り出し部708dを有する。分配器702は、シンボルバッファ701内のシンボルを4系統の符号化回路703a,703b,703c,703dに交互に分配する。第3の切り出し部708cは、切り出した符号列を結合器709に出力する。第4の切り出し部708dは、切り出した符号列を結合器709に出力する。結合器709は、4系統の切り出し部708a,708b,708c,708dの符号列を結合し、結合済符号バッファ711に出力する。結合済符号バッファ711には、4系統の符号列がインターリーブされた符号列が格納される。インターリーブは、複数系統例えば4系統の符号列を順番に交互に結合することを意味する。本実施形態によれば、2並列より高い並列度の符号化装置を構成することができる。図13は、第4の実施形態による可変長復号装置の構成例を示す図であり、図9に対して、C系統の復号部911c及びD系統の復号部911dを追加したものである。可変長復号装置は、A系統の復号部911a、B系統の復号部911b、C系統の復号部911c及びD系統の復号部911dが並列に接続される。以下、図13が図9と異なる点を説明する。C系統の復号部911cは、復号部911a及び911bと同様に、第3のサブビット連接部905c、第3のサブシフタ906c、第3のサブバッファ907c及び第3の復号器908cを有する。D系統の復号部911dも、復号部911a及び911bと同様に、第4のサブビット連接部905d、第4のサブシフタ906d、第4のサブバッファ907d及び第4の復号器908dを有する。メインシフタ903及びメインバッファ904は、系統数×最大符号長=4×12=48ビットの符号列を出力する。第1のサブシフタ906aは、48ビットの符号列のうちの先頭の最大符号長Nである12ビットを第1のサブバッファ907aに出力し、残りの3×N=3×12=36ビットの符号列を第2のサブビット連接部905bに出力する。第2のサブシフタ906bは、36ビットの符号列のうちの先頭の最大符号長Nである12ビットを第2のサブバッファ907bに出力し、残りの2×N=2×12=24ビットの符号列を第3のサブビット連接部905cに出力する。第3のサブシフタ906cは、24ビットの符号列のうちの先頭の最大符号長Nである12ビットを第3のサブバッファ907cに出力し、残りの1×N=1×12=12ビットの符号列を第4のサブビット連接部905dに出力する。第3の復号器908cは、復号したシンボルdecCをシンボルバッファ911に出力し、復号した符号の符号長lenCを第3のサブシフタ906c及び加算器909に出力する。第4の復号器908dは、復号したシンボルdecDをシンボルバッファ911に出力し、復号した符号の符号長lenDを第4のサブシフタ906d及び加算器909に出力する。加算器909は、符号長lenA、lenB、lenC及びlenDを加算し、加算値lenAlenBlenClenDをメインシフタ903に出力する。メインシフタ903は、メインビット連接部902により連接された符号列を符号長lenAlenBlenClenDだけシフトする。シンボルバッファ911には、4系統のシンボルが格納される。復号装置では、4系統のサブシフタ906a~906dをカスケード接続するため遅延時間の若干の増加は発生するが、遅延時間が支配的な4系統の復号器908a~908dは全て並列に接続されているため、遅延時間の大幅な増加は発生せず、高い並列度で低遅延な復号装置が構築可能である。第5の実施形態図14は、第5の実施形態による可変長復号装置の構成例を示す図である。図14は、図9に対して、復号器908a及び908bの代わりにレンジデコーダ1401及び1401bを設け、逆二値化部1402を追加したものである。以下、図14が図9と異なる点を説明する。本実施形態は、ハフマン符号化に限らず、幅広い可変長符号化に適用可能であり、その一例として並列度を2とし、各系統の符号化方法として算術符号の一種であるレンジコーダレンジ幅16ビットを用いた場合の可変長復号装置の構成例を示す。可変長符号化装置の構成は図7と同様である。レンジデコーダ1401a及び1401bは、それぞれ、復号したデータを逆二値化部1402に出力する。逆二値化部1402は、二値化データを逆二値化することによりシンボルを生成し、シンタックスエレメントバッファ910に出力する。図15Aは、図7の可変長符号化装置の符号化回路レンジエンコーダ703a,703bの符号化エンコード処理例を示すフローチャートである。ステップS1501では、レンジエンコーダ703a,703bは、初期化処理を行う。次に、ステップS1502では、レンジエンコーダ703a,703bは、1ビット処理を行う。その詳細は、後に図15Bを参照しながら説明する。次に、ステップS1503では、レンジエンコーダ703a,703bは、全ビットの処理が完了したか否かをチェックする。完了していなければステップS1502に戻り、完了していればステップS1504へ進む。ステップS1504では、レンジエンコーダ703a,703bは、最終処理として、残余ビットを出力する。図15Bは、図15AのステップS1502の1ビット処理の処理例を示すフローチャートである。ステップS1511では、レンジエンコーダ703a,703bは、レンジRange及びローLowの更新処理を行う。次に、ステップS1512では、レンジエンコーダ703a,703bは、引き伸ばしの必要があるか否かをチェックする。必要がある場合にはステップS1513に進み、必要がない場合には処理を終了する。ステップS1513では、レンジエンコーダ703a,703bは、引き伸ばし処理を行い、ビット出力を行う。図16Aは、図14の可変長復号装置のレンジデコーダ1401a,1401bの復号デコード処理例を示すフローチャートである。ステップS1601では、レンジデコーダ1401a,1401bは、初期化処理を行い、ビット取り込みを行う。次に、ステップS1602では、レンジデコーダ1401a,1401bは、1ビット処理を行う。その詳細は、後に図16Bを参照しながら説明する。次に、ステップS1603では、レンジデコーダ1401a,1401bは、全ビットの処理が完了したか否かをチェックする。完了していなければステップS1602に戻り、完了していれば処理を終了する。図16Bは、図16AのステップS1602の1ビット処理の処理例を示すフローチャートである。ステップS1611では、レンジデコーダ1401a,1401bは、レンジRange及びローLowの更新処理を行う。次に、ステップS1612では、レンジデコーダ1401a,1401bは、引き伸ばしの必要があるか否かをチェックする。必要がある場合にはステップS1613に進み、必要がない場合には処理を終了する。ステップS1613では、レンジデコーダ1401a,1401bは、引き伸ばし処理を行い、ビット取り込みを行う。ここで、2つのレンジエンコーダ703a及び703bにおける引き伸ばし処理のタイミングは、レンジエンコーダ703a及び703bでの符号化対象となるシンボル列によって規定されているものとする。例えば、動画圧縮規格H264におけるCABACContextbasedAdaptiveBinaryArithmeticCodingに類似した動画像符号化の例を考える。H264における符号化では符号化処理前のデータはシンタックスエレメント列であるが、まずこれに二値化を施し、二値化の結果であるビット列に対してレンジエンコーダ703a,703bを適用する。この例におけるH264に類似した符号化においては、シンタックスエレメント列を二値化した後のビットを交互に振り分けることで2系統のシンボル列を形成する。符号化処理においてビットをレンジエンコーダ703a,703bで符号化する順序と、デコード処理においてレンジデコーダ1401a,1401bからビットを取り出す順序は動画像符号化方式の文法と各シンタックスエレメントの二値化処理によってのみ規定され、符号化と復号における引き伸ばし処理のタイミングは同じビットにおいて発生する。よって、符号化処理中の引き伸ばし処理における出力ビットをハフマン符号における出力ビット、復号処理中の引き伸ばし処理における取り込みビットをハフマン符号における消費ビットとすれば、レンジエンコーダ703a,703b及びレンジデコーダ1401a,1401b以外の処理はハフマン符号における実施形態と等しくなる。図17は、可変長符号化装置1701及び可変長復号装置1702を用いた動画像符号化装置1705の構成例を示す図である。可変長符号化装置1701は第1~第5の実施形態の可変長符号化装置であり、可変長復号装置1702は第1~第5の実施形態の可変長復号装置である。第1~第5の実施形態の可変長符号化装置及び可変長復号装置の適用範囲は特に限定されず、画像の符号化から無線パケット伝送など幅広い形態が考えられるが、特にリアルタイムの復号処理が要求されるシステムに適用することが望ましい。図17には、動画像可変長符号化装置1705におけるバッファ1704のメモリ帯域削減を想定したシステム図である。撮像装置1703は、撮像した動画像をローカルデコード画像格納バッファDRAM1704を介して動画像符号化装置1705に出力する。H264やMPEG-2に代表される動画像可変長符号化装置1705は、時間的に近接する画像同士の相関性を利用したフレーム間予測画面間予測を行う画面間予測部1707と、隣接する画素同士の相関性を利用したフレーム内予測画面内予測、イントラ予測を行う画面内予測部1707とをスイッチ1712の選択によって動画像を圧縮している。画面内予測では、時間的に近い位置にあるフレームから、圧縮対象ブロックマクロブロックの動き情報を予測して圧縮し、符号の復号の際には動き情報を基に、予測元の参照領域を読み出して復号に使用する。既に符号化されたピクチャとの相関性を利用する画面間予測を行うためには、一度符号化した過去の画像を内部で複号する必要がある。ローカルデコード画像生成部1710でローカルデコードされた画像は非圧縮の状態であり、その状態を保ったままバッファ1704へアクセスすると、帯域圧迫の原因となってしまう。そのため、バッファ1704へ書き込む際に符号化装置1701がローカルデコード画像を符号化してバッファ1704に書き込み、復号装置1702がバッファ1704から符号を読み出して復号することによってバッファ1704のメモリ帯域を削減することができる。ここで、符号化装置1701及び復号装置1702の処理速度が遅いと、バッファ1704から読み出すレイテンシが増加してしまうため、フレームレートに対して処理時間が超過してしまい、処理が破綻する可能性が存在するため、符号化装置1701及び復号装置1702の処理には高いリアルタイム性と並列度の保障が要求される。第1~第5の実施形態は並列度を任意に設定でき、かつ必ず並列度を保った復号処理が実現できるため、システムの要求性能に対して柔軟に並列度を設定でき、このような構成においても適用可能である。例えば、バッファ1704のデータビット幅を64ビットとし、1画素のビット深度を8ビットとすると、符号化装置1701及び復号装置1702を8並列構成にすることによって、バッファ1704のアクセスのレイテンシは可変長復号装置1702のサブバッファ及びメインバッファへの格納に必要な数サイクル程度となり、実質的に符号化及び復号処理による処理時間の増大を抑制することが可能である。復号装置1702は、参照領域格納バッファ1708を介して、復号した画像を画面間予測部1707に出力する。DCT量子化部1709は、画面内予測部1706又は画面間予測部1707により圧縮されたデータに対して、DCT離散コサイン変換:DiscreteCosineTransform及び量子化を行い、符号化部1711に出力する。符号化部1711は、符号化により符号を生成してバッファ1704に書き込む。第1~第5の実施形態によれば、2以上の並列度に対して回路規模の増大は並列度に対して比例関係で収まり、かつ並列度を上げても必ず1サイクルで並列度分の復号が保障されるので、小面積、低遅延かつ高速な符号化装置及び復号装置を提供することができる。また、符号化装置及び復号装置は、SoCシステムオンチップ:SystemOnChipにおけるメモリ帯域削減や、無線通信における伝送路のトラフィック削減のために、符号化及び復号することが有用であり、特に復号処理を高速化することができる。なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。"