データ処理装置、及びデータ処理方法
【課題】符号化データの並列化された復号処理を高速化する。
【解決手段】連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部とにより復号処理ごとの符号化データ数および符号長を略均等化できる。そして、前記N個の累積部に累積された前記符号化データをそれぞれ並列して復号するN個の復号部と、前記N個の復号部によりそれぞれ復号されたN個の復号データを前記振分部による振分けに従ってもとの順序に並べ替える並替部とにより、符号化データの並列化された復号処理を高速化することができる。
【解決手段】連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部とにより復号処理ごとの符号化データ数および符号長を略均等化できる。そして、前記N個の累積部に累積された前記符号化データをそれぞれ並列して復号するN個の復号部と、前記N個の復号部によりそれぞれ復号されたN個の復号データを前記振分部による振分けに従ってもとの順序に並べ替える並替部とにより、符号化データの並列化された復号処理を高速化することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置、及びデータ処理方法に関する。
【背景技術】
【0002】
可変長符号化は、固定符号長のデータをその発生頻度に応じた符号長の符号化データに変換し、平均符号長を短縮するデータ圧縮方法である。可変長符号化は、たとえば、画像データや音声データの圧縮に用いられる。たとえば、画像データを圧縮する場合、ラスタスキャン順に並んだ画素値データが、それぞれの発生頻度に応じた可変長の符号化データに変換される。そして、圧縮された画像データを展開するときには、個々の符号化データが順次復号される。復号処理では、符号化データが、もとの画素値データに変換される。
【0003】
可変調符号化・復号を高速化するための方法の一つとして、復号処理の並列化が提案されている(たとえば、特許文献1〜3)。一例では、符号化時に符号化データを所定の単位で複数のに分割し、その分割単位ごとにユニークコードを挿入する。復号時には、ユニークコードを検出することにより、符号化時に分割されたデータを認識し、分割された単位で複数の復号回路に分配し、並列して復号処理が行われる。そして、系列ごとの復号データを連結することで、展開したデータが得られる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平01−209819号公報
【特許文献2】特開平07−23397号公報
【特許文献3】特開平11−341489号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
可変長符号化における復号処理において、複数の復号回路に分配された系列毎の処理時間について考える。可変長符号化データの復号処理は、処理単位内に符号化されているデータ数や各符号化データの符号長によって、処理時間が異なる。処理単位内の符号化データ数や符号長が大きい系列ほど、処理時間が長くなり、その一方で、処理単位内の符号化データ数や符号長が小さい系列では、無駄な待ち時間が生じる。よって、復号処理全体としての処理時間は、合計の符号化データ数や符号長が大きい系列での処理時間に制約される。このように、復号処理を並列化したとしても、処理の高速化が制限されるという問題がある。
【0006】
そこで、本発明の目的は、符号化データの並列化された復号処理をさらに高速化する、データ処理装置等を提供することにある。
【課題を解決するための手段】
【0007】
上記の目的を達成するための一態様におけるデータ処理装置は、符号化処理部においては、連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部とを有する。
【0008】
また、復号処理部においては、前記N個の累積部に累積された前記符号化データをそれぞれ並列して順次復号するN個の復号部と、前記N個の復号部によりそれぞれ復号されたN個の復号データを前記振分部による振分けに従ってもとの順序に並べ替える並替部とを有する。
【発明の効果】
【0009】
以下に説明する実施形態によれば、振り分けられた符号化データ系列の符号化データ数および符号長を略均等化でき、符号化データの並列化された復号処理をさらに高速化することができる。
【図面の簡単な説明】
【0010】
【図1】データ処理装置が適用される、画像処理装置の構成例を示す図である。
【図2】画像圧縮展開部14の詳細な構成を示す図である。
【図3】可変長符号化部22の詳細な構成例を示す図である。
【図4】累積部VSFT_Aの詳細な構成例を示す図である。
【図5】振分部30による振分けの具体例を示す図である
【図6】可変長符号化部22の動作手順を説明するフローチャート図である。
【図7】可変長復号部24の詳細な構成例を示す図である。
【図8】復号部VLD_Aの詳細な構成例を示す図である。
【図9】並替部50による並べ替えを説明する図である。
【図10】可変長復号部24の動作手順を説明するフローチャート図である。
【図11】N=3の例における可変長符号化部22の構成を示す図である。
【図12】可変長符号化部22の動作手順を説明するフローチャート図である。
【図13】可変長符号化部22の動作手順を説明するフローチャート図である。
【図14】N=3の例における可変長復号部24の構成を示す図である。
【図15】図14の可変長復号部24の動作手順を説明するフローチャート図である
【図16】第2の実施形態における可変長符号化部22の構成例を示す図である。
【図17】テーブル種別TBL0の例を示す図である。
【図18】符号化データのビットパターンについて説明する図である。
【図19】第2の実施形態における累積部VSFT_Aの詳細な構成例である。
【図20】第2の実施形態における可変長符号化部22の動作手順を説明するフローチャート図である。
【図21】サブルーチンSR1のフローチャート図である。
【図22】サブルーチンSR2のフローチャート図である。
【図23】サブルーチンSR3のフローチャート図である。
【図24】サブルーチンSR4のフローチャート図である。
【図25】第2の実施形態における可変長復号部24の構成例を示す図である。
【図26】第2の実施形態における復号部VLD_Aの詳細な構成例を示す図である。
【図27】第2の実施形態における可変長復号24の動作手順を説明するフローチャート図である。
【図28】サブルーチンSR11のフローチャート図である。
【図29】サブルーチンSR12のフローチャート図である。
【発明を実施するための形態】
【0011】
以下、図面にしたがって本発明の実施の形態について説明する。但し、適用される技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【0012】
図1は、データ処理装置が適用される、画像処理装置の構成例を示す。画像処理装置2は、画像入力、画像処理、及び画像出力の各処理を行う。画像処理装置2は、たとえば画像処理用のLSI(Large Scale Integration)である。入力される画像データは、たとえば、不図示の撮像装置から送られる、撮像画像の画素値データである。画像データは、たとえば、フレームや、フレームを分割した領域といった処理単位ごとに画像処理される。また、画像処理された画像データの出力先は、たとえば不図示の表示装置や記録装置などである。画像処理装置2は、画像処理の前後に、処理単位ごとの画像データを外部メモリ4に格納する。その際、画像圧縮展開部14が、画像データの圧縮・展開を行う。ここでは、画像圧縮展開部14に、データ処理装置が含まれる。なお、外部メモリ4は、たとえば、SDRAM(Synchronous Dynamic Random Access Memory)などの大容量のメモリである。
【0013】
画像処理装置2では、制御部6からの制御信号に応答して、画像入力部8、画像処理部10、画像出力部12、画像圧縮展開部14、及びメモリ制御部16が動作する。画像入力が行われるとき、画像入力部8は、外部から入力される画像データを画像圧縮展開部14に送る。画像圧縮展開部14は、画像データを圧縮してメモリ制御部16に送る。メモリ制御部16は、圧縮された画像データ(以下、圧縮画像データ)を外部メモリ4に格納する。次いで、画像処理が行われるとき、メモリ制御部16は、外部メモリ4から圧縮画像データを読み出し、画像圧縮展開部14に送る。画像圧縮展開部14は、圧縮画像データを展開し、画像処理部10に送る。画像処理部10は、展開された画像データに画像処理を行い、画像圧縮展開部14に送る。画像処理は、たとえば、輝度等の補正処理や色変換処理などである。画像圧縮展開部14は、画像処理された画像データを圧縮し、メモリ制御部16に送る。メモリ制御部16は、圧縮画像データを外部メモリ4に格納する。そして、画像出力が行われるとき、メモリ制御部16は、外部メモリ4から圧縮画像データを読み出し、画像圧縮展開部14に送る。画像圧縮展開部14は、圧縮画像データを展開し、画像出力部12に送る。画像出力部12は、展開された画像データを外部に出力する。
【0014】
図2は、画像圧縮展開部14の詳細な構成を示す。画像圧縮展開部14は、画像圧縮部18と、画像展開部19とを有する。
【0015】
画像圧縮部18は、画素予測差分算出部20と可変長符号化部22を有する。画素予測差分算出部20は、入力される画像データから、連続する符号化対象データD_m(m=0、1、2、3、・・・)を生成する。入力される画像データは、ラスタスキャン順に連続した画素値データである。画素予測差分算出部20は、連続する画素における先行の画素の画素値から後続の画素の画素値を予測する。そして、画素予測差分算出部20は、後続の画素の予測値と実際の画素値との差分である画素予測差分を算出する。よって、ラスタスキャン順に連続した画素予測値差分が、連続する符号化対象データD_mとして生成される。なお、画素予測差分値に0が連続する場合には、連続する0値をまとめて符号化するランレングス符号化を用いて、符号化対象データ数を減らすことも可能である。例えば、画素予測差分として0が複数個続いていることを示すデータを一つの符号化対象データとすることで、画素予測差分(値は0)を複数個符号化するよりも、符号化データ数を削減することができる。次いで、可変長符号化部22は、連続する符号化対象データD_mを可変長符号化し、連続する符号化データE_mに変換する。個々の符号化対象データD_mは、その発生頻度に応じた符号長の符号化データE_mに変換される。連続する可変長符号化データE_mはビット列化され、圧縮画像データとしてメモリ制御部16に出力される。そして、圧縮画像データが、外部メモリ4に格納される。
【0016】
画像展開部19は、可変長復号部24と画素予測補償部26を有する。可変長復号部24は、連続する符号化データE_mを取得して復号する。符号化データE_mは、ビット列化された状態で、メモリ制御部16により外部メモリ4から読み出される。可変長復号部24は、個々の符号化データE_mを、その符号長に応じた発生頻度を有する復号データF_mに復号する。ここで、復号される復号データF_mは、画素値予測差分データである。よって、ラスタスキャン順に連続する画素値予測差分データが、可変長復号部24から出力される。次いで、画素予測補償部26は、復号データF_mに基づき、画素ごとの画素値を算出する。ラスタスキャン順に連続する画素値データは、展開された画像データとして出力される。
【0017】
ここでは、可変長符号化部22と可変長復号部24が、データ処理装置に対応する例である。以下、可変長符号化部22と可変長復号部24の詳細について、第1、第2の実施形態に分けて説明する。
【0018】
[第1の実施形態]
図3は、可変長符号化部22の詳細な構成例を示す。ここでは、可変長符号化部22は、2系列の復号処理用の符号化を行うための構成を有する。符号化テーブルTBL0_1、TBL0_2には、連続する符号化対象データD_nが、N個ずつ(図3では、N=2個ずつ)並列して入力される。たとえば、符号化対象データD_n(n=0、2、4、6、・・・)は符号化テーブルTBL0_1に、符号化対象データD_n+1は符号化テーブルTBL0_2に入力される。符号化テーブルTBL0_1、TBL0_2は、符号化対象データの値と、その発生頻度に応じた符号長の符号化データを対応付ける。ここでは、符号化テーブルTBL0_1、TBL0_2は、同じテーブルである。符号化テーブルTBL0_1、TBL0_2は、符号化対象データD_n、D_n+1がそれぞれ入力されると、対応する符号化データE_n、E_n+1をそれぞれ出力する。また、符号化テーブルTBL0_1、TBL0_2は、符号化データE_n、E_n+1の符号長L_n、L_n+1をそれぞれ出力する。符号長L_n、L_n+1は、比較部32に入力される。
【0019】
振分部30は、符号化データE_n、E_n+1を、2個の累積部VSFT_A、VSFT_Bに、それぞれの累積符号長の差が小さくなるように振り分ける。振り分け部30の詳細については、後述する。累積部VSFT_A、VSFT_Bは、振分けられる符号化データE_n、またはE_n+1をそれぞれ累積する。累積部VSFT_A、VSFT_Bには、振分けられる符号化データE_n、またはE_n+1とともに、符号長L_n、またはL_n+1が入力される。累積部VSFT_A、VSFT_Bは、符号長L_n、またはL_n+1から、それぞれ累積する符号化データの累積符号長を算出する。符号化データE_n、またはE_n+1は、累積符号長が所定のビット長になるまで、各累積部に累積される。所定のビット長は、任意に設定されるビット長であり、たとえば32ビットである。累積された符号化データE_n、またはE_n+1からなる32ビット長の累積符号化データDt_A、Dt_Bは、それぞれ記憶部36a、36bに格納される。このとき、累積部VSFT_A、VSFT_Bは、記憶部36a、36bに、データ書込みを指示するライトイネーブル信号WEを出力する。記憶部36a、36bは、たとえば、フリップフロップ回路である。また、累積部VSFT_A、VSFT_Bは、算出した累積符号長Sum_A、Sum_Bを、比較部38に出力する。
【0020】
ここで、図4に、累積部VSFT_Aの詳細な構成例を示す。なお、累積部VSFT_Bも、同じ構成を有する。よって、次の説明は、累積部VSFT_Bにも適用される。
【0021】
各部の動作について、符号化データE_nとその符号長L_nが入力される場合を例として説明する。記憶部60は、図示しないクロックに同期して入力される符号化データE_nを一時的にラッチし、符号化データE_nを可変シフタ・連結部62に出力する。可変シフタ・連結部62は、記憶部64内のそれまでの累積符号化データDt_Aに、記憶部60内の符号化データE_nを、その時点での累積符号長Sum_1に応じてシフトして連結する。累積符号長Sum_1は、加算器68から入力される。こうして符号化データE_nが累積され、累積符号化データDt_Aが記憶部64に格納される。なお、記憶部60、64は、たとえばフリップフロップ回路である。
【0022】
一方、記憶部66は、記憶部60が符号化データE_nをラッチするタイミングと同期して、入力される符号長L_nをラッチし、加算器68に出力する。加算器68は、可変シフタ・連結部62におけるシフト量や記憶部36aに対する書込みイネーブル信号WEを生成するための回路である。加算器68は、記憶部70内のその時点での累積符号長Sum_1に、符号長L_nを加算する。こうして累計された累積符号長Sum_1は、可変シフタ・連結部62に入力され、また、記憶部70に格納される。累積符号長Sum_1は、32ビット長を示すたとえば5ビットのデータである。累積符号長Sum_1が32ビットを超えたことを示す繰り上げビットが、書込みイネーブル信号WEとして、記憶部36aに出力される。よって、累積符号長Sum_1が32ビットを超えたとき、書込みイネーブル信号WEは、書込みを許可する値「1」になる。これにより、記憶部64に格納される累積符号化データDt_Aは、累積符号長Sum_1が32ビットを超えたときに、記憶部36aに32ビット分格納される。なお、記憶部66、70は、たとえば、フリップフロップ回路である。
【0023】
また、加算器72は、記憶部74内のそれまでの累積符号長Sum_Aに、符号長L_nを加算する。記憶部74は、たとえば、フリップフロップ回路である。そして、累計された累積符号長Sum_Aは、比較部38に出力される。
【0024】
図3に戻る。振分部30は、符号化データE_n、E_n+1を2個の累積部VSFT_A、VSFT_Bのいずれかに、2個の累積部VSFT_A、VSFT_Bにおける符号化データE_n、E_n+1の累積符号長Sum_A、Sum_Bの差が小さくなるように振り分ける。具体的には、振分判定部31により、符号化データE_n、E_n+1のうち符号長が長い方が、累積部VSFT_A、VSFT_Bのうち累積符号長が短い方に振分けられる。また、符号化データE_n、E_n+1のうち符号長が短い方が、累積部VSFT_A、VSFT_Bのうち累積符号長が長い方に振り分けられる。ここにおいて実行される振り分けは、次の2通りである。なお、振り分け先は「→」で示される。
振分けA0:符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B
振分けA1:符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A
比較部32は、2つの符号長L_n、L_n+1の大小を比較する。比較結果は、振分判定部31に入力される。また、比較部38は、累積符号長Sum_A、Sum_Bの大小を比較する。比較結果は、振分判定部31に入力される。一方で、セレクタ34a、34bの両方に、符号化データE_nとその符号長L_n、及び符号化データE_n+1とその符号長L_n+1が入力される。振分判定部31は、符号化データE_n、E_n+1の累積部VSFT_A、VSFT_Bへの振分けを示す振分けデータCSを生成する。振分けデータCSは、たとえば1ビットのデータである。振分けデータCSの値は、たとえば、振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)のときには「0」である。また、振分けデータCSは、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)のときには「1」である。振分けデータCSは、制御信号としてセレクタ34a、34bに入力される。
【0025】
振分けデータCSが「0」のとき、セレクタ34aは、符号化データE_nとその符号長L_nを累積部VSFT_Aに出力する。また、このとき、セレクタ34bは、符号化データE_n+1とその符号長L_n+1を累積部VSFT_Bに出力する。また、振分けデータCSが「1」のとき、セレクタ34aは、符号化データE_n+1とその符号長L_n+1を累積部VSFT_Aに出力する。また、このとき、セレクタ34bは、符号化データE_nとその符号長L_nを累積部VSFT_Bに出力する。
【0026】
ビット列生成部40は、2個の累積部VSFT_A、VSFT_Bに累積された符号化データE_n、E_n+1を、一定のビット数ずつ連結してビット列BSを生成する。具体的には、ビット列生成部40は、記憶部36aに格納された累積符号化データDt_Aと、記憶部36bに格納された累積符号化データDt_Bを、一定のビット数ずつ交互に連結する。ビット列生成部40は、たとえばマルチプレクサを有する。一定のビット数は、任意のビット数が可能であり、たとえば1ビットである。生成されたビット列BSは、たとえば、可変長符号化部22内のバッファメモリ42に格納される。バッファメモリ42は、たとえばSRAM(Static RAM)である。
【0027】
また、バッファメモリ42には、振分判定部31が生成する振分けデータCSも格納される。振分けデータCSは、ビット列BSとは別に、あるいはビット列BSの一部として格納される。ビット列BSとは別に格納される場合、振分けデータCSは、たとえば、バッファメモリ42のビット列BSと異なる領域に格納される。その場合、たとえば、一対の累積符号化データDt_A、Dt_Bに対応する複数の振分けデータCSを、可変長符号化して圧縮してもよい。ビット列BSの一部として格納される場合、たとえば、一対の累積符号化データDt_A、Dt_Bがマルチプレクスされるごとに、振分けデータCSが連結される。
【0028】
バッファメモリに格納されたビット列BSと振分けデータCSは、圧縮画像データとして、たとえば図1の外部メモリ4に格納される。このように、符号化データE_n、E_n+1をビット列化することで、単一のアクセスにより符号化データE_n、E_n+1をバッファメモリ42に格納できる。
【0029】
図5は、振分部30による振分けの具体例を示す図である。図5(A)〜(C)には、n=0、2、4、6、・・・の場合における符号化データE_n、E_n+1と、振分けデータCSと、累積部VSFT_A、VSFT_Bで累積される累積符号化データDt_A、Dt_Bの例が、時系列で示される。図5(A)〜(C)では、矩形により符号化データE_n、E_n+1が示される。また、矩形の高さと矩形内の数字により、符号長(ビット数)が示される。
【0030】
図5(A)には、符号化データE_2、E_3の振分けが行われるときの状態が示される。このとき、累積部VSFT_A、VSFT_Bに、符号化データE_0、E_1が累積符号化データDt_A、Dt_Bとしてそれぞれ累積されている。なお、初期状態では、累積符号長Sum_A、Sum_Bはともに「0」であるので、たとえば、符号化データE_0は累積部VSFT_Aに、符号化データE_1は累積部VSFT_Bに振り分けられたものとする。
【0031】
符号化データE_0、E_1の符号長は、それぞれ「2」、「3」である。よって、累積符号長Sum_A、Sum_Bはそれぞれ「2」、「3」であり、累積符号長Sum_Aは、累積符号長Sum_Bより小さい。一方、あらたな符号化データE_2、E_3の符号長L_2、L_3はそれぞれ「5」、「3」であり、符号長L_2は符号長L_3より大きい。よって、このとき、符号化データE_2は累積部VSFT_Aに、符号化データE_3は累積部VSFT_Bに振分けられる。つまり、振分けA0が行われる。このとき、振分けデータCSは、「0」である。
【0032】
上記の振分けが行われると、累積符号長Sum_A、Sum_Bは、それぞれ「5」、「3」が加算されて「7」、「6」になり、その差は「1」になる。これは、振分けA1が行われて符号化データE_2が累積部VSFT_Bに、符号化データE_3が累積部VSFT_Aに振分けられた場合の、累積符号長Sum_A、Sum_B「5」、「8」の差「3」より小さくなる。
【0033】
次いで、図5(B)には、あらたな符号化データE_4、E_5の振分けが行われるときの状態が示される。このとき、図5(A)の振分けにより、累積符号長Sum_A、Sum_Bは「7」、「6」である。よって、累積符号長Sum_Aは、累積符号長Sum_Bより大きい。一方、符号化データE_4、E_5の符号長L_4、L_5はそれぞれ「4」、「2」であり、符号長L_4は符号長L_5より大きい。よって、符号化データE_4は累積部VSFT_Bに、符号化データE_5は累積部VSFT_Aに振分けられる。つまり、振分けA1が行われる。このとき、振分けデータCSは、「1」である。
【0034】
すると、累積符号化データDt_Aの累積符号長Sum_Aは、符号化データE_5の符号長「2」が加算されて「9」になる。一方、累積符号化データDt_Bの累積符号長Sum_Bは、符号化データE_4の符号長「4」が加算されて「10」になる。すると、累積符号長Sum_A、Sum_Bの差は、「1」である。これは、たとえば振分けA0が行われて累積符号長Sum_A、Sum_Bがそれぞれ「12」、「8」になる場合の差「4」より小さくなる。
【0035】
次いで、図5(C)には、あらたな符号化データE_6、E_7の振分けが行われるときの状態が示される。このとき、図5(B)の振り分けにより、累積符号長Sum_A、Sum_Bは「9」、「10」であり、累積符号長Sum_Aは、累積符号長Sum_Bより小さい。一方、符号化データE_6、E_7の符号長L_6、L_7はそれぞれ「3」、「1」であり、符号長L_6は符号長L_7より大きい。よって、符号化データE_6は累積部VSFT_Aに、符号化データE_7は累積部VSFT_Bに振分けられる。つまり、振分けA0が行われる。このとき、振分けデータCSは、「0」である。
【0036】
すると、累積符号化データDt_Aの累積符号長Sum_Aは、符号化データE_6の符号長「3」が加算されて「12」になる。一方、累積符号化データDt_Bの累積符号長Sum_Bは、符号化データE_7の符号長「1」が加算されて「11」になる。すると、累積符号長Sum_A、Sum_Bの差は、「1」である。これは、たとえば振分けA1が行われて累積符号長Sum_A、Sum_Bは、それぞれ「10」、「13」になる場合の差「3」より小さくなる。
【0037】
図6は、可変長符号化部22の動作手順を説明するフローチャート図である。図6に示す手順は、可変長符号化部22の各部により実行される。可変長符号化部22の各部の動作は、図3では図示を省略した制御部により制御される。
【0038】
まず、符号化データE_n、E_n+1のカウンタ変数nの値が「0」に初期設定される。また、累積符号長Sum_A、Sum_Bの値が「0」にそれぞれ初期設定される(S2)。たとえば、振分判定部31がカウンタ変数nを初期設定する。また、累積部VSFT_A、VSFT_Bが記憶部70の累積符号長Sum_A、Sum_Bを初期設定する。次いで、セレクタ34a、34bは、符号化テーブルTBL0_1、TBL0_2から、符号化データE_n、E_n+1を取得する(S4)。次いで、セレクタ34a、34b、及び比較部32は、符号化テーブルTBL0_1、TBL0_2から、符号化対象データE_n、E_n+1の符号長L_n、L_n+1を取得する(S6)。
【0039】
次いで、振分判定部31は、比較部38による比較結果から、累積符号長Sum_Aが累積符号長Sum_Bより小さいかを判定する(S8)。累積符号長Sum_Aが累積符号長Sum_Bより小さいとき(S8のYes)、振分判定部31は、比較部32による比較結果から、符号長L_nが符号長L_n+1より大きいかを判定する(S10)。一方、累積符号長Sum_Aが累積符号長Sum_B以上のとき(S8のNo)、振分判定部31は、符号長L_nが符号長L_n+1より大きいかを判定する(S12)。
【0040】
累積符号長Sum_Aが累積符号長Sum_Bより小さく、かつ符号長L_nが符号長L_n+1より大きいとき、手順S10の判定結果はYesになる。また、累積符号長Sum_Aが累積符号長Sum_B以上であり、かつ符号長L_nが符号長L_n+1以下のとき、手順S12の判定結果はNoになる。この2つのケースでは、振分判定部31は、振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)を行う(S14)。そして、累積部VSFT_Aは、累積符号長Sum_Aに符号長L_nを加算する。また、累積部VSFT_Bは、累積符号長Sum_Bに符号長L_n+1を加算する(S16)。そして、振分判定部31は、値「0」の振分けデータCSを、ビット列生成部40またはバッファメモリ42に出力する(S18)。
【0041】
累積符号長Sum_Aが累積符号長Sum_B以上、かつ符号長L_nが符号長L_n+1以下のとき、手順S10の判定結果はNoになる。また、累積符号長Sum_Aが累積符号長Sum_Bより小さく、かつ符号長L_nが符号長L_n+1より大きいとき、手順S12の判定結果はYesになる。この2つのケースでは、振分判定部31は、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)を行う(S20)。そして、累積部VSFT_Aは、累積符号長Sum_Aに符号長L_n+1を加算する。また、累積部VSFT_Bは、累積符号長Sum_Bに符号長L_nを加算する(S22)。そして、振分判定部31は、値「1」の振分けデータCSを、ビット列生成部40またはバッファメモリ42に出力する(S24)。
【0042】
そして、カウンタ変数nが「2」インクリメントされる(S26)。そして、処理単位の領域におけるすべての符号化対象データD_n、D_n+1の符号化と振分けが完了するまで、手順S4〜S26が繰り返される(S28のNo)。
【0043】
このように、第1の実施形態によれば、連続する2個の可変調符号化データE_n、E_n+1を2個の累積部VSFT_A、VSFT_Bのいずれかに、それらの累積符号長Sum_A、Sum_Bの差が小さくなるように振り分けるので、2個の系列に対して符号化データ数が均等に振り分けられるとともに、累積符号長Sum_A、Sum_Bが略均等化される。その結果、後述する2個の復号部での復号処理時間が均等化され、全体の処理時間を短くできる。
【0044】
図7は、可変長復号部24の詳細な構成例を示す。ここでは、可変長復号部24は、2系列の復号処理を並列して行うための構成を有する。可変長復号部24内のバッファメモリ44には、外部メモリ4からビット列BSが読み出される。これとともに、振分けデータCSが、ビット列BSとは別に、またはビット列BSの一部として、外部メモリ4から可変長復号部24内のバッファメモリ44に読み出される。符号化データE_n、E_n+1がビット列化されることで、単一のアクセスによりバッファメモリ44から符号化データE_n、E_n+1を読み出すことができる。
【0045】
符号化データ復元部46は、ビット列BSを一定のビット数(たとえば1ビット)ずつ分割して、二つの系列の累積符号化データDt_A、Dt_Bを復元する。ビット列BSは、バッファメモリ44から読み出される。符号化データ復元部46は、たとえば、ビット列生成部40のマルチプレクサに対応するデマルチプレクサを有する。これにより、ビット列BSは、累積符号化データDt_A、Dt_Bに分割される。符号化データE_n、E_n+1は、累積符号化データDt_A、Dt_Bに含まれている。累積符号化データDt_A、Dt_Bは、それぞれ記憶部48a、48bに格納される。記憶部48a、48bは、次に説明する2個の復号部VLD_A、VLD_Bにそれぞれ対応するバッファであり、たとえばフリップフロップ回路である。また、バッファメモリ44のビット列BSとは別領域格納されている振分けデータCSは、並替部50に出力される。
【0046】
2個の復号部VLD_A、VLD_Bは、2個の累積部VSFT_A、VSFT_Bに累積された符号化データE_n、E_n+1をそれぞれ並列して順次復号する。復号部VLD_Aは、記憶部48aに格納された累積符号化データDt_Aから順次符号化データE_n、またはE_n+1を読み出して,復号データF_Aに復号する。また、復号部VLD_Bは、記憶部48bに格納された累積符号化データDt_Bから順次符号化データE_n、またはE_n+1を読み出して、復号データF_Bに復号する。
【0047】
ここで、図8に、復号部VLD_Aの詳細な構成例を示す。なお、復号部VLD_Bも、同じ構成を有する。よって、次の説明は、復号部VLD_Bにも適用される。セレクタ76には、累積符号化データDt_A(復号部VLD_Bの側では累積符号化データDt_B)が入力される。セレクタ76は、データ要求信号Reqに応答して、32ビット長の累積符号化データDt_Aを選択して記憶部78に格納する。記憶部78は、たとえばフリップフロップ回路である。記憶部78に格納された累積符号化データDt_Aは、セレクタ76に帰還入力され、一方で可変シフタ80に入力される。セレクタ76に帰還入力された累積符号化データDt_Aは、新たな累積符号化データDt_Aが要求されるまで、繰り返し記憶部78に格納される。可変シフタ80は、累積符号化データDt_Aにおける復号済みの符号長分ビットシフトした位置からビットデータを読み出し、記憶部82に格納する。記憶部82は、たとえばフリップフロップ回路である。復号済みの符号長SUM_1´は、後述するように加算器86から入力される。
【0048】
記憶部82に格納されたビットデータは、順次復号テーブルTBL0_Aに入力される。復号テーブルTBL0_Aは、符号化データと、その符号長に応じた発生頻度の復号データとを対応付ける。復号テーブルTBL0_Aは、可変長符号化部22の符号化テーブルTBL0_1、TBL0_2に対応する。復号テーブルTBL0_Aは、入力されたビットデータとテーブル内の符号化データとを上位ビットから順に照合し、一致する符号化データを検索する。そして、検索された符号化データE_Aに対応する復号データF_A(復号部VLD_B側では、復号データF_B)が出力される。出力された復号データF_Aは、記憶部84に格納される。記憶部84は、たとえばフリップフロップ回路である。記憶部84に格納された復号データF_Aは、セレクタ50a、50bに出力される。また、復号テーブルTBL0_Aは、復号済みの符号長L_Aを出力する。復号済みの符号長L_Aは、加算器86に送られる。
【0049】
加算器86は、記憶部88に格納された復号済みの符号長SUM_1´に、あらたな復号済みの符号長L_Aを加算する。記憶部88は、たとえばフリップフロップ回路である。こうして累計された復号済みの符号長SUM_1´が、記憶部88に格納され、また、可変シフタ80に入力される。その一方で、復号済み符号長SUM_1´の繰り上げビットが、データ要求信号Reqとして、セレクタ76と図7の記憶部48aに入力される。復号済み符号長SUM_1´は、たとえば、累積符号化データDt_Aの上限の符号長32ビットを示す5ビットのデータである。復号済みの符号長SUM_1´の繰り上げビットが、データ要求信号Reqとしてセレクタ76や記憶部48aに送られる。よって、復号済みの符号長が32ビットを超えたとき、新たなデータ要求を示す値「1」のデータ要求信号Reqが送られる。これに応答して、記憶部48aからセレクタ76に、あらたな32ビット長の累積符号化データDt_Aが送られる。
【0050】
図7に戻る。並替部50は、2個の復号部VLD_A、VLD_Bによりそれぞれ復号された2個の復号データF_A、F_Bを、振分部30による振分けに従ってもとの順序に並べ替える。たとえば、図9(A)には、可変長符号化部22の振分部30において振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)が行われた場合が示される。このことは、振分けデータCSの値「0」に示される。このとき、累積符号化データDt_A、Dt_Bからそれぞれ復号された復号データF_A、F_Bは、それぞれ、符号化データE_n、E_n+1から復号されたものである。よって、復号データF_Aは復号データF_nとして、復号データF_Bは復号データF_n+1として並べ替えられる。また、図9(B)には、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)が行われた場合が示される。このことは、振分けデータCSの値「1」に示される。このとき復号データF_A、F_Bは、それぞれ、符号化データE_n+1、E_nから復号されたものである。よって、復号データF_Aは復号データF_n+1として、復号データF_Bは復号データF_nとして並べ替えられる。このようにして、復号データF_A、F_Bが、もとの順に並べ替えられる。
【0051】
並替部50では、復号データF_A、F_Bの両方がセレクタ50a、50bに入力される。そして、セレクタ50a、50bは、振分けデータCSに応じて、2つの入力のいずれかを選択して出力する。たとえば、振分けデータCSの値が「0」のとき、セレクタ50aは復号データF_Aを選択して出力し、セレクタ50bは復号データF_Bを選択して出力する。一方、振分けデータCSの値が「1」のとき、セレクタ50aは復号データF_Bを選択して出力し、セレクタ50bは復号データF_Aを選択して出力する。こうして、セレクタ50aは、復号データF_A、F_Bのうち、符号化データE_nから復号された復号データを選択して出力する。また、セレクタ50bは、復号データF_A、F_Bのうち、符号化データE_n+1から復号された復号データを選択して出力する。
【0052】
セレクタ50aから出力される復号データF_AまたはF_Bは、記憶部52aに格納される。また、セレクタ50bから出力される復号データF_AまたはF_Bは、記憶部52bに格納される。こうして、2個の復号データF_A、F_Bが、符号化データE_n、E_n+1に対応するもとの順序で並べ替えられ、記憶部52a、52bに格納される。そして、記憶部52a、52bから、符号化データE_n、E_n+1からそれぞれ復号された復号データF_n、F_n+1が出力される。
【0053】
図10は、可変長復号部24の動作手順を説明するフローチャート図である。図10に示す手順は、可変長復号部24の各部により実行される。可変長復号部24の各部の動作は、図7では図示を省略した制御部により制御される。
【0054】
まず、符号化データ復元部46が、ビット列BSを分割して、累積符号化データDt_A、Dt_Bを復元する(S30)。次いで、復号データF_n、F_n+1をカウントするカウンタ変数nの値が「0」に初期化される(S30)。たとえば、記憶部52a、52bが復号データF_n、F_n+1のカウンタ変数nの値を「0」に設定する。次いで、復号部VDL_A、VDL_Bが、復号データF_A、F_Bを復号する(S32)。次いで、並替部50は、振分けデータCSを取得する(S34)。
【0055】
振分けA0が行われたとき、振分けデータCSは「0」である(S36のYes)。よって、このとき、並替部50は、復号データF_Aが符号化データE_nに、復号データF_Bが符号化データE_n+1に対応するように並べ替える(S38)。一方、振分けA1が行われたとき、振分けデータCSは「0」でなく「1」である(S36のNo)。よって、このとき、並替部50は、復号データF_Aが符号化データE_n+1に、復号データF_Bが符号化データE_nに対応するように並べ替える(S40)。
【0056】
そして、カウンタ変数nが「2」インクリメントされる(S42)。そして、処理単位の領域におけるすべての符号化データが復号されるまで、手順S31〜S42が繰り返される(S44のNo)。
【0057】
このように、第1の実施形態によれば、2個の系列に振り分けられた符号化データ数が均等であり、かつ、2個の累積部VSFT_A、VSFT_Bでの累積符号長Sum_A、Sum_Bが略均等化されることで、2個の復号部VLD_A、VLD_Bによる累積符号化データDt_A、Dt_Bの復号処理速度が略均等化される。よって、復号対象データの符号化データ数、あるいは符号長が不均等であることにより、符号化データ数、あるいは符号長が大きい方の処理時間に全体の処理時間が制約されるといったことを回避できる。よって、並列化された復号処理がさらに高速化される。
【0058】
[N=3の例]
上述の説明では、N=2の場合の2系列の振分け、及び復号処理の例を示した。しかしながら、本実施形態は、Nが3以上の場合の3系列以上の振分け、及び復号処理を行う場合にも適用できる。次に、N=3の例について説明する。
【0059】
図11は、N=3の例における可変長符号化部22の構成を示す。ここでは、可変長符号化部22は、図3の構成に加えて、符号化テーブルTBL0_3、累積部VSFT_C、及び記憶部36cを有する。また、振分部30は、セレクタ34cを有する。
【0060】
符号化テーブルTBL0_3は、符号化テーブルTBL0_1、TBL0_2と同じ構成を有する。ここでは、符号化テーブルTBL0_1、TBL0_2、及びTBL0_3は、それぞれ、連続する符号化対象データD_n(n=0、3、6、9、・・・)、D_n+1、及びD_n+2を、符号化データE_n、En+1、及びE_n+2にそれぞれ符号化する。また、符号化テーブルTBL0_1、TBL0_2、及びTBL0_3は、対応する符号長L_n、L_n+1、及び符号長L_n+2をそれぞれ出力する。
【0061】
符号化テーブルTBL0_1〜TBL0_3からそれぞれ出力される符号化データE_nとその符号長L_n、符号化データE_n+1とその符号長L_n+1、及び符号化データE_n+2とその符号長L_n+2は、いずれもセレクタ34a〜34cに入力される。また、符号長Ln〜L_n+2は、比較部32に入力される。
【0062】
累積部VSFT_Cは、累積部VSFT_A、VSFT_Bと同じ構成を有する。累積部VSFT_A、VSFT_B、及びVSFT_Cは、符号化データE_n、E_n+1、及びE_n+2のいずれかをそれぞれ累積する。累積部VSFT_Cが累積した符号化データは、累積符号化データDt_Cとして記憶部36cに格納される。また、累積部VSFT_Cは、累積符号化データDt_Cの累積符号長Sum_Cを算出する。累積符号長Sum_Cは、累積符号長Sum_A、Sum_Bとともに比較部38に入力される。
【0063】
振分部30は、累積部VSFT_A、VSFT_B、及びVSFT_Cにおける累積符号長Sum_A、Sum_B、及びSum_Cの差が小さくなるような振分けを行う。具体的には、符号化データE_n、E_n+1、E_n+2のうち最も符号長が長いものが、累積部VSFT_A、VSFT_B、VSFT_Cのうち最も累積符号長が短いものに振り分けられる。そして、最も符号長が長いもの以外の2個の符号化データは、一定のルールで、最も累積符号長が短いもの以外の2個の累積部に振り分けられる。そうすることで、累積符号長Sum_A、Sum_B、及びSum_Cの差をできるだけ小さくすることができる。たとえば、累積符号長Sum_A、Sum_B、及びSum_Cの差を、符号長L_n、L_n+1、及びL_n+2のうちの最大符号長以下にすることができる。また、振分判定部31は、振分けを示す振分けデータCSを生成する。振分けデータCSは、たとえば2ビットのデータである。上記の一定のルールに基づく振分けと振分けデータCSの値は、次の3通りである。
振分けB0:
振分けデータCS=0
符号化データE_n→累積部VSFT_A、
符号化データE_n+1→累積部VSFT_B、
符号化データE_n+2→累積部VSFT_C
振分けB1:
振分けデータCS=1
符号化データE_n+1→累積部VSFT_A、
符号化データE_n+2→累積部VSFT_B、
符号化データE_n→累積部VSFT_C
振分けB2:
振分けデータCS=2
符号化データE_n+2→累積部VSFT_A、
符号化データE_n→累積部VSFT_B、
符号化データE_n+1→累積部VSFT_C
振分けデータCSは、制御信号として、セレクタ34a、34b、及び34cに入力される。また、セレクタ34a、34b、及び34cは、振分けデータCSに応じていずれかの入力を選択して出力する。たとえば、振分けデータCSが「0」のとき、セレクタ34aは、符号化データE_nとその符号長L_nを累積部VSFT_Aに出力する。また、このとき、セレクタ34bは、符号化データE_n+1とその符号長L_n+1を累積部VSFT_Bに出力する。また、このとき、セレクタ34cは、符号化データE_n+2とその符号長L_n+2を累積部VSFT_Cに出力する。また、振分けデータCSが「1」のとき、セレクタ34aは、符号化データE_n+1とその符号長L_n+1を累積部VSFT_Aに出力する。また、このとき、セレクタ34bは、符号化データE_n+2とその符号長L_n+2を累積部VSFT_Bに出力する。また、このとき、セレクタ34cは、符号化データE_nとその符号長L_nを累積部VSFT_Cに出力する。そして、振分けデータCSが「2」のとき、セレクタ34aは、符号化データE_n+2とその符号長L_n+2を累積部VSFT_Aに出力する。また、このとき、セレクタ34bは、符号化データE_nとその符号長L_nを累積部VSFT_Bに出力する。また、このとき、セレクタ34cは、符号化データE_n+1とその符号長L_n+1を累積部VSFT_Cに出力する。
【0064】
ビット列生成部40は、記憶部36a、36b、及び36cにそれぞれ格納された累積符号化データDt_A、Dt_B、及びDt_Cを、たとえば1ビットずつ順番に連結して、ビット列BSを生成する。さらに、ビット列生成部40は、ビット列BSに振分けデータCSを連結してもよい。そして、ビット列BSと振分けデータCSは、バッファメモリ42に格納される。
【0065】
図12、13は、図11の可変長符号化部22の動作手順を説明するフローチャート図である。図12では、まず、符号化データE_n、E_n+1、及びE_n+2のカウンタ変数nが「0」に初期設定される。また、累積符号長データSum_A、Sum_B、及びSum_Cが「0」に初期設定される(S102)。次いで、セレクタ34a、34b、及び34cは、符号化テーブルTBL0_1、TBL0_2、及びTBL0_3から符号化データE_n、E_n+1、及びE_n+2を取得する(S104)。次いで、比較部32、ならびにセレクタ34a、34b、及び34cは、符号化テーブルTBL0_1、TBL0_2、及びTBL3から符号化対象データE_n、E_n+1、及びE_n+2の符号長L_n、L_n+1、及びL_n+2を取得する(S106)。
【0066】
次いで、振分判定部31は、比較部38による比較結果から、累積符号長Sum_A、Sum_B、Sum_Cのうちで、累積符号長Sum_Aが最小かを判定する(S108)。累積符号長Sum_Aが最小のとき(S108のYes)、振分判定部31は判定結果SUM_STATE=0を生成する(S114)。また、累積符号長Sum_Aが最小でないとき(S108のNo)、振分判定部31は、累積符号長Sum_Bが最小かを判定する(S110)。累積符号長Sum_Bが最小のとき(S110のYes)、振分判定部31は判定結果SUM_STATE=1を生成する(S116)。また、累積符号長Sum_Bが最小でないとき(S110のNo)、振分判定部31は、累積符号長Sum_Cが最小と判定し、振分判定部31は判定結果SUM_STATE=2を生成する(S118)。
【0067】
次いで、振分判定部31は、比較部32による比較結果から、符号長L_n、L_n+1、及びL_n+2のうちで、符号長L_nが最大かを判定する(S120)。符号長L_nが最大のとき(S120のYes)、振分判定部31は、判定結果LN_STATE=0を生成する(S126)。符号長L_nが最大でないとき(S120のNo)、振分判定部31は、符号長L_n+1が最大かを判定する(S122)。符号長L_n+1が最大のとき(S122のYes)、振分判定部31は、判定結果LN_STATE=1を生成する(S128)。また、符号長L_n+1が最大でないとき(S122のNo)、振分判定部31は、符号長L_n+2が最大と判定し、振分判定部31は、判定結果LN_STATE=2を生成する(S130)。
【0068】
次いで、図13に進み、振分判定部31は、判定結果の組合せ(SUM_STATE、LN_STATE)が、(0、0)、(1、1)、または(2、2)であるかを判定する(S132)。ここで、次の3通りのいずれかの場合、判定結果がYesになる。
[1]累積符号長Sum_Aが最小、かつ符号長L_nが最大
[2]累積符号長Sum_Bが最小、かつ符号長L_n+1が最大
[3]累積符号長Sum_Cが最小、かつ符号長L_n+2が最大
判定結果がYesの場合、振分判定部31は、振分けB0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B、符号化データE_n+2→累積部VSFT_C)を行う(S138)。次いで、累積部VSFT_Aが、累積符号長Sum_Aに符号長L_nを加算する。また、累積部VSFT_Bが、累積符号長Sum_Bに符号長L_n+1を加算する。そして、累積部VSFT_Cが、累積符号長Sum_Cに符号長L_n+3を加算する(S144)。次いで、振分判定部31は、値「0」の振分けデータCSを、ビット列生成部40、あるいはバッファメモリ42に出力する(S150)。
【0069】
手順S132の判定結果がNoの場合、振分判定部31は、データSUM_STATE、LN_STATEが、(0、1)、(1、2)、または(2、0)であるかを判定する(S134)。
ここで、次の3通りのいずれかの場合、判定結果がYesになる。
[4]累積符号長Sum_Aが最小、かつ符号長L_n+1が最大
[5]累積符号長Sum_Bが最小、かつ符号長L_n+2が最大
[6]累積符号長Sum_Cが最小、かつ符号長L_nが最大
判定結果がYesの場合、振分判定部31は、振分けB1(符号化データE_n+1→累積部VSFT_A、符号化データE_n+2→累積部VSFT_B、符号化データE_n→累積部VSFT_C)を行う(S140)。次いで、累積部VSFT_Aが、累積符号長Sum_Aに符号長L_n+1を加算する。また、累積部VSFT_Bが、累積符号長Sum_Bに符号長L_n+2を加算する。そして、累積部VSFT_Cが、累積符号長Sum_Cに符号長L_nを加算する(S146)。次いで、振分判定部31は、値「1」の振分けデータCSを、ビット列生成部40、あるいはバッファメモリ42に出力する(S152)。
【0070】
手順S134の判定結果がNoの場合、振分判定部31は、データSUM_STATE、LN_STATEが、(0、2)、(1、0)、または(2、1)であると判定する。
この場合、次の3通りのいずれかに対応する。
[7]累積符号長Sum_Aが最小、かつ符号長L_n+2が最大
[8]累積符号長Sum_Bが最小、かつ符号長L_nが最大
[9]累積符号長Sum_Cが最小、かつ符号長L_n+1が最大
振分判定部31は、振分けB2(符号化データE_n+2→累積部VSFT_A、符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_C)を行う(S142)。次いで、累積部VSFT_Aが、累積符号長Sum_Aに符号長L_n+2を加算する。また、累積部VSFT_Bが、累積符号長Sum_Bに符号長L_nを加算する。そして、累積部VSFT_Cが、累積符号長Sum_Cに符号長L_n+1を加算する(S148)。次いで、振分判定部31は、値「2」の振分けデータCSを、ビット列生成部40、あるいはバッファメモリ42に出力する(S154)。
【0071】
そして、カウンタ変数nが「3」だけインクリメントされる(S156)。そして、処理対象の領域におけるすべての符号化対象データの符号化と振分け処理が完了するまで、手順S104〜S154が繰り返される(S158のNo)。
【0072】
図14は、N=3の例における可変長復号部24の構成を示す。図14では、可変長復号部24は、図7の構成に加え、記憶部48c、復号部VLD_C、及び記憶部52Cを有する。また、並替部50は、セレクタ50Cを有する。
【0073】
符号化データ復元部46は、ビット列BSを一定のビット数(たとえば1ビット)ずつ分割して、累積符号化データDt_A、Dt_B、及びDt_Cを復元する。累積符号化データDt_A、Dt_B、及びDt_Cには、符号化データE_n、E_n+1、及びE_n+2が振分けB0〜B2に基づいて振り分けられている。復元された累積符号化データDt_A、Dt_B、及びDt_Cは、それぞれ、記憶部48a、48b、及び48cに格納される。
【0074】
復号部VLD_Cは、復号部VLD_A、VLD_Bと同じ構成を有する。復号部VLD_A、VLD_B、及びVLD_Cは、記憶部48a、48b、及び48cに格納される累積符号化データDt_A、Dt_B、及びDt_Cを順次復号する。復号部VLD_A、VLD_B、及びVLD_Cで復号された復号データF_A、F_B、及びF_Cは、いずれも並替部50のセレクタ50a、50b、及び50cに入力される。
【0075】
並替部50では、セレクタ50a、50b、及び50cが、振分けデータCSに基づいて、復号データF_A、F_B、及びF_Cのいずれかを選択して出力する。たとえば、振分けデータCSの値が「0」のとき、セレクタ50aは復号データF_Aを、セレクタ50bは復号データF_Bを、セレクタ50cは復号データF_Cをそれぞれ選択して出力する。また、振分けデータCSの値が「1」のとき、セレクタ50aは復号データF_Bを、セレクタ50bは復号データF_Cを、セレクタ50cは復号データF_Aをそれぞれ選択して出力する。また、振分けデータCSの値が「2」のとき、セレクタ50aは復号データF_Cを選択して出力する。このとき、セレクタ50bは復号データF_Aを選択して出力する。また、このとき、セレクタ50cは復号データF_Bを選択して出力する。
【0076】
こうして、セレクタ50aは、復号データF_A、F_B、及びF_Cのうち、符号化データE_nから復号された復号データを選択して出力する。また、セレクタ50bは、復号データF_A、F_B、及びF_Cのうち、符号化データE_n+1から復号された復号データを選択して出力する。そして、セレクタ50cは、復号データF_A、F_B、及びF_Cのうち、符号化データE_n+2から復号された復号データを選択して出力する。
【0077】
こうして、符号化データE_n、E_n+1、及びE_n+2から復号された復号データが、それぞれ記憶部52a、52b、及び52cに格納される。そして、記憶部52a、52b、及び52cに格納された復号データが、それぞれ、復号データF_n、F_n+1、及びF_n+2として出力される。これら復号データF_n、F_n+1、及びF_n+2を順番に並べることで、もとのデータに戻すことができる。このようにして、復号データが、もとの順に並べ替えられる。
【0078】
図15は、図14の可変長復号部24の動作手順を説明するフローチャート図である。まず、符号化データ復元部46が、ビット列BSを分割して、累積符号化データDt_A、Dt_B、及びDt_Cを復元する(S160)。次いで、復号データF_n、F_n+1、及びF_n+2をカウントするカウンタ変数nが値「0」に初期化される(S162)。次いで、復号部VDL_A、VDL_B、及びVDL_Cは、復号データF_A、F_B、及びF_Cを復号する(S164)。次いで、並替部50は、振分けデータCSを取得する(S166)。
【0079】
振分けデータCSが「0」のとき(S168のYes)、並替部50は、復号データF_Aが復号データF_n、復号データF_Bが復号データF_n+1、そして、復号データF_Cが復号データF_n+2に対応するように、並べ替える(S172)。また、振分けデータCSが「0」でなく「1」のとき(S168のNo、S170のYes)、並替部50は、復号データF_Aが復号データF_n+1、復号データF_Bが復号データF_n+2、そして、復号データF_Cが復号データF_nに対応するように並べ替える(S174)。そして、振分けデータCSが「1」でなく「2」のとき(S170のNo)、並替部50は、復号データF_Aが復号データF_n+2、復号データF_Bが復号データF_n、そして、復号データF_Cが復号データF_n+1に対応するように並べ替える(S174)。
【0080】
そして、カウンタ変数nが「3」インクリメントされる(S178)。そして、すべての符号化データが処理されるまで、手順S164〜S178が繰り返される(S180のNo)。
【0081】
上述の説明では、符号化データE_n、E_n+1、及びE_n+2のうち最も符号長が長いものが、累積部VSFT_A、VSFT_B、VSFT_Cのうち最も累積符号長が短いものに振り分けられる例が示された。この例は、累積符号部の数が4個以上の場合にも適用できる。あるいは、たとえば、符号長が長い符号化データから順に、累積符号長が短い累積部へ振り分けることも可能である。そうすることで、累積部における累積符号長の差が小さくなるような振分けが可能になる。
【0082】
上述のように、第1の実施形態によれば、N個の符号化データをN個の累積部のいずれかに、N個の累積部における符号化データ数が均等で、かつ、累積符号長の差が小さくなるように振り分けることで、累積部ごとのN個の復号部が処理する符号化データの累積符号長の差が小さくなる。よって、N個の復号部の処理時間の差が小さくなるので、符号長が長い方の復号部の処理時間に全体としての処理時間が制約されるといったことを回避できる。よって、全体としての復号処理が高速化される。
【0083】
また、たとえば、1フレーム分の圧縮画像データを画像の領域単位で分割して復号処理を並列化する場合と比較すると、第1の実施形態は次のような有利な効果を奏する。たとえば、1フレームを前半、後半に分割する場合、展開された画像データに対し、近傍の画素を用いた画像処理(たとえば、平滑化)を行おうとすると、前半の圧縮画像データがすべて展開されないと、後半における前半との境界付近の画素に対する画像処理が開始できない。この点、第1の実施形態では、符号化データごとに復号処理が並列化されるので、近傍の画素がある程度まとまった状態で順次展開される。よって、展開された画像データから順次画像処理を行うことができ、画像処理まで含めた全体としての処理が高速化される。
【0084】
また、領域単位で復号処理を並列化する場合、領域ごとに画像データを格納するためのバッファ用メモリが必要になる。あるいは、単一のメモリに複数の領域の画像データを格納すると、複数の復号部からのアクセスを調停するための処理負荷が増大する。この点、第1の実施形態では、符号化データを一つのバッファ用メモリに格納すればよいので、バッファ用メモリの数、容量、あるいはアクセス調停回路を節約できる。さらに、符号化データを所定のビットずつマルチプレクスしてビット列化することで、単一のアクセスによりバッファ用メモリから符号化データを読み出すことができる。よって、全体としての処理負荷が軽減でき、復号処理がさらに高速化される。
【0085】
第1の実施形態では、並替部50が、振分けデータCSに基づいて、復号データの並べ替えを行う例を示した。次に、振分けデータCSを用いずに、復号データの並べ替えを行う第2の実施形態について説明する。
【0086】
[第2の実施形態]
第2の実施形態は、2個の符号化データの2個の累積部への振り分けに関する。2個の累積部の累積符号長の差が短くなるように振り分けるという点において、第2の実施形態は第1の実施形態と同じである。ただし、第2の実施形態では、振分けデータの代わりに、符号化データのビットパターンが振分けを示す情報を有する。
【0087】
図16は、第2の実施形態における可変長符号化部22の構成例を示す。第1の実施形態と重複する部分には、図4と同じ符号が付される。第2の実施形態では、累積部VSFT_A、VSFT_Bは、2個の符号化データE_n、E_n+1のうち符号長がたとえば短い方の符号化データ(以下、判定用符号化データという)を、その順序に応じた(判定用符号化データがE_nからE_n+1かに応じた)ビットパターンで累積する。符号化データE_nが短い方であり判定用符号化データなら、たとえば先頭ビット「0」を有するビットパターン(以下、ビットパターンBP0という)で累積される。また、符号化データE_n+1が短い方であり判定用符号化データなら、たとえば先頭ビット「1」を有するビットパターン(以下、ビットパターンBP1という)で累積される。このように、2個の符号化データE_n、E_n+1のうち短い方の判定用符号化データを、その短い方がE_nかE_n+1かに応じて先頭ビットが「0」または「1」のビットパターンにしておけば、後の並替えでもとの順序にもどすとき、符号長が短い方の先頭ビットが「0」ならその符号化データがE_n、「1」ならその符号化データがE_n+1と判定でき、振分け情報を符号化データE_n、E_n+1から抽出できる。
【0088】
具体例を示す前に、符号化テーブルのテーブル種別について説明する。図17には、符号化テーブルTBL0_1、TBL0_2内のテーブル種別TBL0の例が示される。テーブル種別TBL0では、符号化対象データの発生頻度が高い方から順に、符号長が短い符号化データが対応づけられる。たとえば、符号化対象データ「0」〜「2」には符号長が2〜3ビットの符号化データ「10」〜「111」が、符号化対象データ「3」〜「14」には、符号長が4〜5ビットの符号化データ「0000」〜「01111」が対応付けられる。また、テーブル種別TBL0は、一の符号化データが他の符号化データと先頭部で一致しないように構成される。符号化データ「10」を例とすると、テーブル種別TBL0には、先頭部に「10」を有する他の符号化データは含まれない。かかるテーブル種別TBL0において、符号長が2〜3ビットの符号化データ「10」〜「111」は、先頭ビットが「1」のビットパターンBP1に対応する。また、符号長が4〜5ビットの符号化データ「0000」〜「01111」は、先頭ビットが「0」のビットパターンBP0に対応する。
【0089】
なお、テーブル種別TBL1は、テーブル種別TBL0の反転を示す。たとえば、テーブル種別TBL1では、符号長が2〜3ビットの符号化データ「01」〜「000」はビットパターン/BP1であり、符号長が4〜5ビットの符号化データ「1111」〜「10000」はビットパターン/BP0である。ただし、実際の符号化テーブルTBL0_1、TBL0_2内の種別は、テーブル種別TBL0である。
【0090】
符号化データE_n、E_n+1は、テーブル種別TBL0の符号化テーブルTBL0_1、またはTBL0_2で符号化される。よって、符号化データE_n、E_n+1は、符号長L_n、L_n+1が4ビット未満の場合はビットパターンBP1内のいずれかである。一方、符号化データE_n、E_n+1は、符号長L_n、L_n+1が4ビット以上の場合はビットパターンBP0内のいずれかである。
【0091】
図18は、符号化データE_n、E_n+1の、符号化時と累積時のビットパターンの具体例を示す。図18(A)、(B)は、符号化データE_nが短い方の判定用符号化データである場合を示す。たとえば、図18(A)では、符号化データE_nは2ビット長の「10」、符号化データE_n+1は3ビット長の「110」である。このとき、短い方の判定用符号化データE_nは、先頭ビット「1」のビットパターンBP1である。よって、判定用符号化データE_nは、ビットパターン/BP1の「01」に反転されて累積される。一方、長い方の符号化データE_n+1は、先頭ビット「1」のビットパターンBP1のまま累積される。図18(B)では、符号化データE_nは4ビット長の「0011」、符号化データE_n+1は5ビット長の「01000」である。このとき、短い方の判定用符号化データE_nは、先頭ビット「0」のビットパターンBP0である。よって、判定用符号化データE_nは、そのままのビットパターンで累積される。長い方の符号化データE_n+1も、先頭ビット「0」のビットパターンBP0のまま累積される。
【0092】
図18(C)、(D)は、符号化データE_n+1が短い方の判定用符号化データである場合を示す。たとえば、図18(C)では、符号化データE_nは3ビット長の「110」、符号化データE_n+1は2ビット長の「10」である。このとき、短い方の判定用符号化データE_n+1は、先頭ビット「1」のビットパターンBP1である。よって、判定用符号化データE_nは、ビットパターンBP1のまま累積される。長い方の符号化データE_nも、先頭ビットが「1」のビットパターンBP1のまま累積される。図18(D)では、符号化データE_nは5ビット長の「01000」、符号化データE_n+1は4ビット長の「0011」である。このとき、短い方の判定用符号化データE_n+1は、先頭ビット「0」のビットパターンBP0である。よって、判定用符号化データE_n+1は、ビットパターン/BP0の「1100」に反転されて累積される。一方、長い方の符号化データE_nは、先頭ビット「0」のビットパターンBP0のまま累積される。
【0093】
図18(A)〜(D)をまとめると、図18(E)、(F)に示すようになる。図18(E)に示すように、符号化データE_nの方が符号長が短く、符号化データE_nが判定用符号化データである場合、符号長L_nが4ビット未満であればそのビットパターンはBP1であり、ビットパターン/BP1に反転され累積される。一方、符号長L_nが4ビット以上であれば、判定用符号化データE_nはビットパターンBP0のまま累積される。また、図18(F)に示すように、符号化データE_n+1の方が符号長が短く、符号化データE_n+1が判定用符号化データである場合、符号長L_n+1が4ビット未満であればそのビットパターンはBP1であり、そのまま累積される。一方、符号長L_nが4ビット以上であれば、判定用符号化データE_nはビットパターンBP0であり、ビットパターン/BP0に反転されて累積される。
【0094】
図16に戻る。振分判定部31は、第1の実施形態と同様にして、セレクタ34a、34bに制御信号を送り、符号化データE_n、E_n+1を累積部VSFT_A、VSFT_Bに振り分ける。また、振分判定部31は、比較部32による符号長L_n、L_n+1の比較結果により、どちらの符号長が長いかを判定する。そして、振分判定部31は、累積部VSFT_A、VSFT_Bに対し、IsEn信号と、IsLng信号を出力する。IsEn信号は、振り分けた符号化データが符号化データのうちどちらか、つまり符号化データE_nか否かを示す。また、IsLng信号は、振り分けた符号化データが長い方か否かを示す。
【0095】
累積部VSFT_A、VSFT_Bは、IsLng信号に基づいて、それぞれに振分けられた符号化データが短い方の判定用符号化データであるか否かを判定する。たとえば、また、累積部VSFT_A、VSFT_Bは、IsEn信号に基づいて、判定用符号化データが符号化データE_nであるか、または符号化データE_n+1であるかを判定する。そして、累積部VSFT_A、VSFT_Bは、図18に示した場合分けに応じて、符号化データE_n、またはE_n+1を、そのままのビットパターン、または反転したビットパターンで累積する。さらに、累積部VSFT_A、VSFT_Bは、判定用符号化データを復号するためのテーブル種別の情報を、必要に応じて生成する。
【0096】
図19は、第2の実施形態における累積部VSFT_Aの詳細な構成例である。第2の実施形態では、累積部VSFT_Aは、図4で示した構成に加え、一点鎖線で囲った、テーブル種別判定部102、ビット反転部104、セレクタ106、テーブル種別ビット埋込制御部108、及び、加算器110を有する。累積部VSFT_Bも、ここに示す構成を有する。よって、次の説明は、累積部VSFT_Bにも適用される。
【0097】
テーブル種別判定部102は、入力されるIsLng信号から、振分けられた符号化データE_A(累積部VSFT_B側では符号化データE_B)が短い符号長で振分け判定に用いられる判定用符号化データであるかを判定する。また、テーブル種別判定部102は、入力されるIsEn信号から、符号化データE_Aが符号化データE_nか、またはE_n+1かを判定する。
【0098】
たとえば、符号化データE_Aが判定用符号化データでない場合、テーブル種別TBL0により符号化された符号化データE_Aは、そのままのビットパターンで累積される。よって、テーブル種別判定部102は、テーブル種別TBL0を示すテーブル種別信号TSを生成する。テーブル種別信号TSは、制御信号としてセレクタ106に送られる。セレクタ106は、テーブル種別TBL0を示すテーブル種別信号TS_Aに応じて、符号化データE_Aを反転せずに記憶部60に格納する。
【0099】
一方、符号化データE_Aが判定用符号化データである場合、テーブル種別判定部102は、判定用符号化データE_Aの先頭ビットHB_Aから、判定用符号化データE_Aのビットパターンを判定する。たとえば、先頭ビットHB_Aが「0」であれば、ビットパターンBP0である。また、先頭ビットHB_Aが「1」であれば、ビットパターンBP1である。
【0100】
第1に、判定用符号化データE_AがビットパターンBP0の符号化データE_nであるとき、または、ビットパターンBP1の符号化データE_n+1であるときは、図18に示されるように、判定用符号化データE_Aは、そのままのビットパターンで累積される。よって、このとき、テーブル種別判定部102は、テーブル種別TBL0を示すテーブル種別信号TSをセレクタ106に入力する。すると、セレクタ106は、符号化データE_Aをそのままのビットパターンで記憶部60に格納する。一方、第2に、判定用符号化データE_Aが、ビットパターンBP1の符号化データE_nであるとき、または、ビットパターンBP0の符号化データE_n+1であるときは、図18に示されるように、判定用符号化データE_Aは、反転したビットパターンで累積される。よって、このとき、テーブル種別判定部102は、テーブル種別TBL1を示すテーブル種別信号TSをセレクタ106に入力する。すると、セレクタ106は、反転部104によりビットが反転された符号化データE_Aを、記憶部60に格納する。
【0101】
ここで、図17を参照する。図18において示したとおり、符号長が長い方の符号化データはテーブル種別TBL0で符号化されたまま反転されずに累積される。一方で、符号長が短い方の判定用符号化データのビットが反転されると、符号化データE_nはビットパターン/BP1に反転され、符号化データE_n+1はビットパターン/BP0に反転されるので、テーブル種別TBL1で符号化されたことと等価になる。よって、詳しくは後述するように、符号化データの復号時には、テーブル種別TBL0、TBL1のどちらを用いるかが判定される。まず、テーブル種別TBL0、TBL1では、4ビット未満の符号化データはそれぞれ一意に特定できる。よって符号化データE_n、E_n+1の符号長L_n、L_n+1が両方とも4ビット未満のときには、判定用符号化データE_n、またはE_n+1の先頭ビットが「0」か「1」かにより、テーブル種別TBL0、TBL1のどちらで符号化されたか判定される。つまり、テーブル種別TBL0、TBL1のどちらで復号すべきか判定される。しかしながら、4ビット以上の符号化データを含めると、一の符号化データが他の符号化データの先頭部と一致して、一意に特定できない場合がある。よって、判定用符号化データE_n、またはE_n+1のビットパターンは、先頭ビットにより判定できない。かかる場合、次のようにして、判定用符号化データを復号するためのテーブル種別を示す情報が付加される。
【0102】
まず、テーブル種別判定部102は、符号化データE_n、E_n+1の符号長L_n、L_n+1のうち長い方が4ビット未満であるかを判定する。たとえば、符号長が長い方の符号化データはテーブル種別TBL0で符号化されているので、先頭ビットが「1」であれば符号長は4ビット未満であると判定される。長い方が4ビット未満である場合、短い方も当然4ビット未満である。よって、この場合、判定用符号化データE_n、またはE_n+1がBP1、/BP1内のどのビットパターンであるかは、先頭ビットにより判定できる。よって、復号のための追加的なテーブル種別情報は付加されない。一方、符号長L_n、L_n+1のうち長い方が4ビット以上の場合、テーブル種別判定部102は、累積部VSFT_B側のテーブル種別ビット埋込制御部108にテーブル種別信号TS_Aを送る。また、累積部VSFT_B側でも、符号化データE_Bの符号長L_Bに基づいて同じ処理が行われる。テーブル種別ビット埋込制御部108は、符号化データE_Aの符号長が長い方である場合、累積部VSFT_B側から送られるテーブル種別信号TS_Bに応じて、テーブル種別ビットTBを符号化データE_Aの後に付加する。テーブル種別ビットTBは、判定用符号化データを復号するためのテーブル種別を示す。テーブル種別ビットTBの値は、たとえば、テーブル種別TBL0を示す「0」、またはTBL1を示す「1」である。
【0103】
また、このとき、加算器110は、テーブル種別ビットTB分の1ビットを符号長L_Aに加算し、テーブル種別ビットTBが付加されることで、符号長L_Aは1ビット分長くなる。
【0104】
以降、図4で説明したようにして、符号化データE_n、またはE_n+1が累積される。このようにして、累積部VSFT_A、VSFT_Bは、判定用符号化データをその順序(つまり、それがE_nかE_n+1か)に応じたビットパターンで累積する。
【0105】
図20〜24は、第2の実施形態における可変長符号化部22の動作手順を説明するフローチャート図である。図20がメインルーチンを示し、図21〜24は、それぞれサブルーチンを示す。図20〜24は、符号長が短い方の符号化データを判定用符号化データとしたときの手順例である。図20のメインルーチンでは、まず、符号化データE_n、E_n+1のカウンタ変数nの値が「0」に初期設定される。また、累積符号長Sum_A、Sum_Bの値が「0」にそれぞれ初期設定される(S202)。次いで、セレクタ34a、34bは、符号化テーブルTBL0_1、TBL0_2から、符号化データE_n、E_n+1を取得する(S204)。次いで、セレクタ34a、34b、及び比較部32は、符号化テーブルTBL0_1、TBL0_2から符号化対象データE_n、E_n+1の符号長L_n、L_n+1を取得する(S206)。
【0106】
次いで、振分判定部31は、累積符号長Sum_Aが累積符号長Sum_Bより小さいかを判定する(S208)。累積符号長Sum_Aが累積符号長Sum_Bより小さいとき(S208のYes)、振分判定部31は、符号長L_nが符号長L_n+1より大きいかを判定する(S210)。一方、累積符号長Sum_Aが累積符号長Sum_B以上のとき(S208のNo)、振分判定部31は、符号長L_nが符号長L_n+1より大きいかを判定する(S212)。
【0107】
累積符号長Sum_Aが累積符号長Sum_Bより短く、かつ符号長L_nが符号長L_n+1より長いとき、手順S210の判定結果はYesである。このとき、サブルーチンSR1が実行される。また、累積符号長Sum_Aが累積符号長Sum_Bより短く、かつ符号長L_nが符号長L_n+1以下のとき、手順S210の判定結果はNoである。このとき、サブルーチンSR2が実行される。また、累積符号長Sum_Aが累積符号長Sum_B以下であり、かつ符号長L_nが符号長L_n+1より長いとき、手順S212の判定結果はYesである。このとき、サブルーチンSR3が実行される。そして、累積符号長Sum_Aが累積符号長Sum_B以下であり、かつ符号長L_nが符号長L_n+1以下のとき、手順S212の判定結果はNoである。このとき、サブルーチンSR4が実行される。サブルーチンSR1〜SR4は、累積部VSFT_A、VSFT_Bで、符号化データE_n、E_n+1が累積されるときの手順である。サブルーチンSR1〜SR4の手順は、後に、図21〜24において示される。
【0108】
サブルーチンSR1〜SR4のいずれかが終了すると、カウンタ変数nが「2」インクリメントされる(S214)。そして、処理単位の領域におけるすべての符号化対象データD_n、D_n+1の符号化と振分けが完了するまで、手順S204〜S214が繰り返される(S216のNo)。
【0109】
図21は、サブルーチンSR1の手順を示す。サブルーチンSR1は、上述したように、累積符号長Sum_Aが累積符号長Sum_Bより短く、かつ符号長L_nが符号長L_n+1より長い場合に実行される。つまり、サブルーチンSR1は、振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)が行われ、符号化データE_n+1が判定用符号化データである場合に実行される。
【0110】
短い方の符号長Ln+1が閾値Th(たとえば、4ビット)以上のとき(S220のYes)、累積部VSFT_B側では、判定用符号化データE_n+1はビットが反転して累積される(S222)。このことは、判定用符号化データE_n+1をテーブル種別TBL1で符号化したことと等価である。そして、この場合、長い方の符号長L_nは当然に閾値Th以上である。このとき、判定用符号化データE_n+1はテーブル種別TBL1で符号化されているので、テーブル種別ビットTBの値が「1」に設定される(S228)。
【0111】
一方、短い方の符号長Ln+1が閾値Th未満のとき(S220のNo)、累積部VSFT_B側では、判定用符号化データE_n+1は、そのままのビットパターンで累積される。このとき、判定用符号化データE_n+1はテーブル種別TBL0で符号化された状態である。そして、長い方の符号長L_nが閾値Th以上のとき(S226のYes)、判定用符号化データE_n+1はテーブル種別TBL0で符号化されているので、累積部VSFT_A側では、テーブル種別ビットTBの値が「0」に設定される(S230)。一方、長い方の符号長L_nが閾値Th未満のとき(S226のNo)、サブルーチンSR1が終了する。この場合、符号長Ln、L_n+1は両方とも閾値Th未満である。よって、判定用符号化データの先頭ビットにより復号処理のためのテーブル種別が判定できる。よって、テーブルビットTBは付加されない。
【0112】
手順S228、またはS230に次いで、テーブル種別ビット埋込制御部108は、符号長が長い方の符号化データE_nに、テーブル種別ビットTBを付加する(S232)。そして、累積部VSFT_A側では、累積符号長Sum_Aにテーブル種別ビットTBのビット長「1」が加算される(S234)。そして、累積符号長Sum_Aに符号長L_nが加算される。また、累積部VSFT_B側では、累積符号長Sum_Bに符号長L_n+1が加算される(S236)。そして、サブルーチンSR1が終了すると、図20の手順S214に移行する。
【0113】
図22は、サブルーチンSR2の手順を示す。サブルーチンSR2は、累積符号長Sum_Aが累積符号長Sum_Bより小さく、かつ符号長L_nが符号長L_n+1以下である場合に実行される。つまり、サブルーチンSR1は、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)が行われ、符号化データE_nが判定用符号化データである場合に実行される。
【0114】
短い方の符号長Lnが閾値Th未満のとき(S240のYes)、累積部VSFT_B側では、判定用符号化データE_nはビットが反転して累積される(S242)。このことは、判定用符号化データE_nをテーブル種別TBL1で符号化したことと等価である。そして、長い方の符号長L_n+1は当然に閾値Th以上であるとき(S244のYes)、テーブル種別ビットTBの値が「1」に設定される(S248)。一方、長い方の符号長L_n+1が閾値Th未満のとき(S244のNo)、サブルーチンSR2が終了する。このとき、短い方の符号長L_nも当然に閾値Th未満なので、テーブルビットTBは付加されない。
【0115】
一方、短い方の符号長Lnが閾値Th以上のとき(S240のNo)、累積部VSFT_B側では、判定用符号化データE_nは、そのままのビットパターンで累積される。このとき、判定用符号化データE_nはテーブル種別TBL0で符号化された状態である。よって、テーブル種別ビットTBの値が「0」に設定される(S250)。そして、この場合、長い方の符号長L_n+1は当然に閾値Th以上である。
【0116】
手順S248、またはS250に次いで、累積部VSFT_A側では、テーブル種別ビット埋込制御部108が、符号長が長い方の符号化データE_n+1に、テーブル種別ビットTBを付加する(S252)。そして、累積符号長Sum_Aにテーブル種別ビットTBのビット長「1」が加算される(S254)。そして、累積符号長Sum_Aに符号長L_n+1が加算される。また、累積部VSFT_B側では、累積符号長Sum_Bに符号長L_nが加算される(S256)。そして、サブルーチンSR2が終了すると、図20の手順S214に移行する。
【0117】
図23は、サブルーチンSR3の手順を示す。サブルーチンSR3は、累積符号長Sum_Bが累積符号長Sum_A以下であり、かつ符号長L_nが符号長L_n+1より長い場合に実行される。つまり、サブルーチンSR3は、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)が行われ、符号化データE_n+1が判定用符号化データである場合に実行される。
【0118】
短い方の符号長Ln+1が閾値Th以上のとき(S260のYes)、累積部VSFT_A側では、判定用符号化データE_n+1はビットが反転して累積される(S262)。このことは、判定用符号化データE_nをテーブル種別TBL1で符号化したことと等価である。そして、この場合、長い方の符号長L_nは当然に閾値Th以上である。このとき、判定用符号化データE_n+1はテーブル種別TBL1で符号化されているので、テーブル種別ビットTBの値が「1」に設定される(S268)。
【0119】
一方、短い方の符号長Ln+1が閾値Th未満のとき(S260のNo)、累積部VSFT_A側では、判定用符号化データE_n+1は、そのままのビットパターンで累積される。このとき、判定用符号化データE_n+1はテーブル種別TBL0で符号化された状態である。そして、長い方の符号長L_nが閾値Th以上のとき(S266のYes)、判定用符号化データE_n+1はテーブル種別TBL0で符号化されているので、テーブル種別ビットTBの値が「0」に設定される(S270)。一方、長い方の符号長L_nが閾値Th未満のとき(S266のNo)、サブルーチンSR3が終了する。このとき、短い方の符号長L_n+1も当然に閾値Th未満なので、テーブルビットTBは付加されない。
【0120】
手順S268、またはS270に次いで、累積部VSFT_B側では、テーブル種別ビット埋込制御部108が、符号長が長い方の符号化データE_nに、テーブル種別ビットTBを付加する(S272)。そして、累積符号長Sum_Bにテーブル種別ビットTBのビット長「1」が加算される(S274)。そして、累積部VSFT_A側では、累積符号長Sum_Aに符号長L_n+1が加算される。また、累積部VSFT_B側では、累積符号長Sum_Bに符号長L_nが加算される(S276)。そして、サブルーチンSR3が終了すると、図20の手順S214に移行する。
【0121】
図24は、サブルーチンSR4の手順を示す。サブルーチンSR4は、累積符号長Sum_Bが累積符号長Sum_A以下であり、かつ符号長L_nが符号長L_n+1以下である場合に実行される。つまり、サブルーチンSR4は、振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)が行われ、符号化データE_nが判定用符号化データである場合に実行される。
【0122】
短い方の符号長Lnが閾値Th未満のとき(S280のYes)、累積部VSFT_A側では、判定用符号化データE_nはビットが反転して累積される(S282)。このことは、判定用符号化データE_nをテーブル種別TBL1で符号化したことと等価である。そして、長い方の符号長L_n+1は当然に閾値Th以上であるとき(S284のYes)、テーブル種別ビットTBの値が「1」に設定される(S288)。一方、長い方の符号長L_n+1が閾値Th未満のとき(S284のNo)、サブルーチンSR4が終了する。このとき、短い方の符号長L_nも当然に閾値未満なので、テーブルビットTBは付加されない。
【0123】
一方、短い方の符号長Lnが閾値Th以上のとき(S280のNo)、累積部VSFT_A側では、判定用符号化データE_nは、そのままのビットパターンで累積される。このとき、判定用符号化データE_nはテーブル種別TBL0で符号化された状態である。よって、テーブル種別ビットTBの値が「0」に設定される(S290)。そして、この場合、長い方の符号長L_n+1は当然に閾値Th以上である。
【0124】
手順S288、またはS290に次いで、累積部VSFT_B側では、テーブル種別ビット埋込制御部108が、符号長が長い方の符号化データE_n+1に、テーブル種別ビットTBを付加する(S292)。そして、累積符号長Sum_Bにテーブル種別ビットTBのビット長「1」が加算される(S294)。そして、累積符号長Sum_Aに符号長L_nが加算され、また、累積符号長Sum_Bに符号長L_n+1が加算される(S296)。そして、サブルーチンSR4が終了すると、図20の手順S214に移行する。
【0125】
このような手順で、累積部VSFT_A、VSFT_Bでは、図18に示したように、判定用符号化データがその順序(それがE_nかE_n+1か)に応じたビットパターンで累積される。
【0126】
図25は、第2の実施形態における可変長復号部24の構成例を示す。図25では、可変長復号部24は、図7で示した構成に加え、一点鎖線で囲まれた、比較部54と、選択判定部56を有する。比較部54には、復号部VLD_A、VLD_Bから、復号済みの符号化データの累積符号長Sum_A´、Sum_B´が入力される。比較部54は、復号済みの累積符号長Sum_A´、Sum_B´の大きさを比較して、比較結果を選択判定部56に入力する。選択判定部56には、復号部VLD_A、VLD_Bから、判定用符号化データの先頭ビットHB_A、HB_Bと、テーブル種別ビットTBが入力される。
【0127】
選択判定部56は、復号済みの累積符号長Sum_A´、Sum_B´から、復号部VLD_A、VLD_Bのうち、判定用符号化データを含む方を判定する。復号時の復号済みの累積符号長Sum_A´、Sum_B´は、振分け時の累積符号長Sum_A、Sum_Bに対応する。符号化後の振分けでは、この累積符号長Sum_A、Sum_Bに基づき、符号長が短い方が累積符号長が長い方に振り分けられた。よって、復号部VLD_A、VLD_Bのうち、復号済みの累積符号長が長い方に、符号化データE_n、E_n+1のうち符号長が短い方が含まれる。一方、復号済みの累積符号長が短い方に、符号化データE_n、E_n+1のうち符号長が長い方が含まれる。
【0128】
また、選択判定部56は、先頭ビットHB_A、またはHB_Bから、短い方の判定用符号化データのビットパターンを判定する。たとえば、先頭ビットが「0」であれば、ビットパターンBP0であり、先頭ビットが「1」であれば、ビットパターンBP1である。すなわち、判定用符号化データの先頭ビットが「0」なら符号化データE_nであることが判明し、「1」なら符号化データE_n+1であることが判明する。よって、振分け情報を抽出することができる。選択判定部56は、判定用符号化データのビットパターンから、復号データF_A、F_Bを並べ替えるための振分けデータCSを生成する。この振分けデータCSは、並替部50に送られる。
【0129】
また、選択判定部56は、テーブル種別ビットTBの有無、あるいは先頭ビットHB_A、またはHB_Bにより、判定用符号化データを復号するためのテーブル種別を判定する。たとえば、テーブル種別ビットTBがある場合、選択判定部56は、テーブル種別ビットの値に応じてテーブル種別TBL0、またはTBL1を判定する。一方、テーブル種別ビットTBがない場合、つまり、符号化データE_n、E_n+1の符号長が両方とも閾値(4ビット)未満の場合、選択判定部56は、判定用符号化データの先頭ビットHB_A、またはHB_Bから、判定用符号化データを復号するためのテーブル種別を判定する。たとえば、先頭ビットが「1」の場合、テーブル種別TBL0と判定され、先頭ビットが「0」の場合、テーブル種別TBL1と判定される。そして、選択判定部56は、判定したテーブル種別を示すテーブル選択信号TS1を、復号部VLD_A、VLD_Bに送る。
【0130】
並替部50は、たとえば、振分けデータCSが「0」のときには、復号データF_A、F_BをそれぞれF_n、F_n+1として並べ替える。あるいは、並替部50は、振分けデータCSが「1」のときには、復号データF_A、F_BをそれぞれF_n+1、F_nとして並べ替える。
【0131】
図26は、第2の実施形態における復号部VLD_Aの詳細な構成例である。第2の実施形態では、累積部VLD_Aは、図8で示した構成に加え、一点鎖線で囲った、反転部120、セレクタ122、加算器124、及び記憶部126を有する。なお、復号部VLD_Bも、ここに示す構成を有する。よって、次の説明は、復号部VLD_Bにも適用される。
【0132】
図8で説明したように、記憶部82には、累積符号化データDt_Aから取り出される符号化データが格納される。かかる符号化データE_A(復号部VLD_B側では符号化データE_B)は、反転部120とセレクタ122に送られる。反転部120は、符号化データE_Aを反転してセレクタ122に送る。セレクタ122は、記憶部82から送られる符号化データE_Aと、反転された符号化データE_Aのいずれかを、テーブル選択信号TS1に応じて選択し、復号テーブルTBL0_Aに入力する。テーブルTBL0_Aは、符号化テーブルTBL0_1、TBL0_2内の、テーブル種別TBL0に対応する復号テーブルである。テーブル選択信号TS1がテーブル種別TBL0を示す「0」の場合、セレクタ122は記憶部82から送られる符号化データE_Aを出力する。あるいは、テーブル選択信号TS1がテーブル種別TBL1を示す「1」の場合、セレクタ122は符号化データE_Aを反転したビットデータを出力する。この場合、符号化データE_Aをビット反転したデータが復号テーブルTBL0_Aで復号されると、符号化データE_Aがテーブル種別TBL1で復号されたことになる。このようにして、復号テーブルのテーブル種別TBL0、またはTBL1が選択的に切り替えられる。
【0133】
復号テーブルTBL0_Aは、累積符号化データDt_Aから取り出される符号化データE_Aまたは符号化データE_Aをビット反転したデータを復号し、復号データF_Aを出力する。復号データF_Aは、記憶部84に格納される。また、復号テーブルTBL0_Aは、テーブル種別ビットTBが付加いるた判断されたとき、符号長が長い方の符号化データを復号する場合に、後に付加されたテーブル種別ビットTBを抽出して出力する。テーブル種別ビットTBは、選択判定部56に送られる。
【0134】
このようにして、復号部VLD_A、VLD_Bは、符号化データE_n、E_n+1のビットパターンに応じたテーブル種別により、復号処理を行うことができる。
【0135】
図27〜29は、第2の実施形態における可変長復号24の動作手順を説明するフローチャート図である。図27はメインルーチンを示し、図28、29はそれぞれサブルーチンを示す。図27のメインルーチンにおいて、まず、符号化データE_n、E_n+1のカウンタ変数nの値が「0」に初期設定される(S302)。次いで、復号済みの累積符号長Sum_A´が復号済みの累積符号長Sum_B´より短いとき、サブルーチンSR11が実行される。一方、復号済みの累積符号長Sum_A´が復号済みの累積符号長Sum_B´以上であるとき、サブルーチンSR12が実行される。サブルーチンSR11、SR12では、振分けデータCSが決定される。サブルーチンSR11、SR12は、それぞれ図28、29に示される。
【0136】
サブルーチンSR11、SR12が終了し、振分けデータCSが「0」のとき(S306のYes)、復号データF_Aが復号データF_n、復号データF_Bが復号データF_n+1に対応するように並べ替えられる(S308)。一方、振分けデータCSが「1」のとき(S306のNo)、復号データF_Aが符号化データF_n+1、復号データF_Bが復号データF_nに対応するように並べ替えられる(S310)。そして、カウンタ変数nが「2」インクリメントされる(S312)。そして、処理単位の領域におけるすべての符号化データが復号されるまで、手順S304〜S312が繰り返される(S314のNo)。
【0137】
図28は、サブルーチンSR11の手順を示す。サブルーチンSR11は、復号済みの累積符号長Sum_A´が復号済みの累積符号長Sum_B´未満であるとき実行される。このとき、復号部VLD_A側で復号される符号化データE_Aの方が、復号部VLD_B側で復号される符号化データE_Bより符号長が長い。一方、符号長が短い方の符号化データE_Bが判定用符号化データである。また、符号化データE_Aは、テーブル種別TBL0で符号化されたものである。そして、その先頭ビットHB_Aにより、符号長が閾値(4ビット)以上か、閾値未満かが判定される。
【0138】
符号化データE_Aの先頭ビットHB_Aが「1」のとき、符号化データE_Aの符号長は閾値未満である。よって、符号化データE_Bの符号長も閾値未満である。このとき、手順S320の判定結果はYesになる。すると、符号化データE_Aは、テーブル種別TBL0で復号される(S322)。次いで、復号済みの符号長SUM_A´に、符号化データE_Aの符号長L_Aが加算される(S324)。
【0139】
そして、符号長が短い方の、つまり判定用符号化データE_Bの先頭ビットHB_Bに基づいて、振分けが判定される。また、符号化データE_Bの符号長も閾値未満であるので、先頭ビットH_Bにより、復号するためのテーブル種別が判定される。判定用符号化データE_Bの先頭ビットHB_Bが「0」のとき(S326のYes)、判定用符号化データE_Bは符号化データE_nである。このことは、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)が実行されたことを示す。よって、振分けデータCSが「1」に設定される(S328)。また、このことは、判定用符号化データE_Bがテーブル種別TBL1で符号化されたことを示す。よって、値「1」のテーブル種別ビットTBが生成される(S330)。なお、ここでは、符号化データE_A、E_Bの符号長がいずれも閾値未満であるので、符号化時にはテーブル種別ビットTBは付加されていない。よって、後の処理のために、テーブル種別ビットTBが生成される。
【0140】
一方、判定用符号化データE_Bの先頭ビットHB_Bが「1」のとき(S326のNo)、判定用符号化データE_Bは符号化データE_n+1である。このことは、振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)が実行されたことを示す。よって、振分けデータCSが「0」に設定される(S332)。また、このことは、判定用符号化データE_Bがテーブル種別TBL0で符号化されたことを示す。よって、値「0」のテーブル種別ビットTBが生成される(S334)。
【0141】
また、手順S320で、符号化データE_Aの先頭ビットHB_Aが「0」のとき、符号化データE_Aの符号長は閾値以上である。このとき、手順S320の判定結果はNoになる。すると、符号化データE_Aがテーブル種別TBL0で復号される(S336)。そして、復号済みの符号長SUM_A´に、符号化データE_Aの符号長L_Aが加算される(S338)。そして、このとき、符号化時にテーブル種別ビットTBが付加されているので、符号化データE_Aからテーブル種別ビットTBが取得され(S340)、復号済みの符号長SUM_A´に1ビット分加算される(S342)。
【0142】
次いで、判定用符号化データE_Bの先頭ビットHB_Bが「0」のとき(S344のYes)、振分けビットCSが「1」に設定される(S346)。このことは、振分けA1が実行されたことに対応する。一方、判定用符号化データE_Bの先頭ビットHB_Bが「1」のとき(S344のNo)、振分けビットCSが「0」に設定される(S348)。このことは、振分けA0が実行されたことに対応する。
【0143】
次いで、手順S350で、テーブル種別ビットTBの値が判定される。テーブル種別ビットTBが「0」のとき(S350のYes)、判定用符号化データE_Bは、テーブル種別TBL0で復号される(S352)。あるいは、テーブル種別ビットTBが「1」のとき(S350のNo)、判定用符号化データE_Bは、テーブル種別TBL1で復号される(S354)。そして、復号部VLD_B側の復号済み累積符号長Sum_B´に、符号化データE_Bの符号長L_Bが加算される(S356)。
【0144】
このようなサブルーチンSR11により、判定用符号化データE_Bの先頭ビットに基づいて、振分けデータCSが設定される。それとともに、判定用符号化データE_Bは、そのビットパターンに応じたテーブル種別で復号される。そして、図27の手順S306に移行する。
【0145】
図29は、サブルーチンSR12の手順を示す。サブルーチンSR12は、復号済みの累積符号長Sum_A´が復号済みの累積符号長Sum_B´以上であるとき実行される。このとき、符号化データE_Bの方が符号化データE_Aより符号長が長い。よって、符号化データE_Bは、テーブル種別TBL0で符号化されたものである。そして、その先頭ビットHB_Bより、符号長が閾値以上か、閾値未満かが判定される。また、符号化データE_Aが判定用符号化データである。
【0146】
符号化データE_Bの先頭ビットHB_Bが「1」のとき、符号化データE_Bの符号長は閾値未満である。よって、符号化データE_Aの符号長も閾値未満である。このとき、手順S360の判定結果はYesになる。すると、符号化データE_Bは、テーブル種別TBL0で復号される(S362)。次いで、復号済みの符号長SUM_B´に、符号化データE_Bの符号長L_Bが加算される(S364)。
【0147】
そして、符号長が短い方の、つまり判定用符号化データE_Aの先頭ビットHB_Aに基づいて、振分けが判定される。また、符号化データE_Aの符号長も閾値未満であるので、先頭ビットH_Aにより、復号するためのテーブル種別が判定される。判定用符号化データE_Aの先頭ビットHB_Aが「0」のとき(S366のYes)、判定用符号化データE_Aは符号化データE_nである。このことは、振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)が実行されたことを示す。よって、振分けデータCSが「0」に設定される(S368)。また、このことは、判定用符号化データE_Aがテーブル種別TBL1で符号化されたことを示す。よって、値「1」のテーブル種別ビットTBが生成される(S370)。
【0148】
一方、判定用符号化データE_Aの先頭ビットHB_Aが「1」のとき(S366のNo)、判定用符号化データE_Aは符号化データE_n+1である。このことは、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)が実行されたことを示す。よって、振分けデータCSが「1」に設定される(S372)。また、このことは、判定用符号化データE_Aがテーブル種別TBL0で符号化されたことを示す。よって、値「0」のテーブル種別ビットTBが生成される(S374)。
【0149】
また、手順S360で、符号化データE_Bの先頭ビットHB_Bが「0」のとき、符号化データE_Bの符号長は閾値以上である。このとき、手順S360の判定結果はNoになる。すると、符号化データE_Bがテーブル種別TBL0で復号される(S376)。そして、復号済みの符号長SUM_B´に、符号化データE_Bの符号長L_Bが加算される(S378)。そして、このとき、符号化時にテーブル種別ビットTBが付加されているので、符号化データE_Bからテーブル種別ビットTBが取得され(S380)、復号済みの符号長SUM_B´に1ビット分加算される(S382)。
【0150】
次いで、判定用符号化データE_Aの先頭ビットHB_Bが「0」のとき(S384のYes)、振分けビットCSが「0」に設定される(S386)。このことは、振分けA0が実行されたことに対応する。一方、判定用符号化データE_Aの先頭ビットHB_Bが「1」のとき(S384のNo)、振分けビットCSが「1」に設定される(S388)。このことは、振分けA1が実行されたことに対応する。
【0151】
次いで、手順S390で、テーブル種別ビットTBの値が判定される。テーブル種別ビットTBが「0」のとき(S390のYes)、判定用符号化データE_Aは、テーブル種別TBL0で復号される(S392)。あるいは、テーブル種別ビットTBが「1」のとき(S390のNo)、判定用符号化データE_Aは、テーブル種別TBL1で復号される(S394)。そして、復号部VLD_A側の復号済み累積符号長Sum_A´に、符号化データE_Aの符号長L_Aが加算される(S396)。
【0152】
このようなサブルーチンSR12により、判定用符号化データE_Aの先頭ビットに基づいて、振分けデータCSが設定される。それとともに、判定用符号化データE_Aは、そのビットパターンに応じたテーブル種別で復号される。そして、図27の手順S306に移行する。
【0153】
このような手順によれば、符号化データのビットパターンに基づいて並べ替えを行うことができる。それとともに、符号化データのビットパターンに応じたテーブル種別で復号を行うことができる。
【0154】
上述の説明では、符号長が短い方の符号化データを判定用符号化データとする例を示した。しかしながら、符号長が長い方の符号化データを判定用符号化データとする場合にも、第2の実施形態は適用される。
【0155】
上述したように、第2の実施形態によれば、振分けデータの代わりに符号化データのビットパターンが振分けを示す情報を有するため、符号化データに振分けデータを付加する必要がない。一方、テーブル種別ビットは特定のパターンでのみ付加すれば良いので、実施例1と比べて符号長をより短くすることができる。よって、圧縮効率がさらに向上する。
【0156】
なお、上述の説明では、可変長符号化部22と可変長復号部24が、単一のデータ処理装置に設けられる場合を示した。しかしながら、可変長復号部と可変長復号部は、それぞれ別個のデータ処理装置に設けることが可能である。たとえば、動画データを圧縮して送信する放送局側に可変長復号部を設け、受信局側に可変長復号部を設けてもよい。
【0157】
以上の実施の形態をまとめると、次の付記のとおりである。
【0158】
(付記1)
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、
前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部を有し、
前記振分部は、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成することを特徴としたデータ処理装置。
【0159】
(付記2)
付記1において、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結してビット列を生成する生成部を有するデータ処理装置。
【0160】
(付記3)
連続する2個の可変長符号化された符号化データをそれぞれ累積する2個の累積部と、
前記符号化データを前記2個の累積部のいずれかに、当該2個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部を有し、
前記累積部は、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積することを特徴としたデータ処理装置。
【0161】
(付記4)
付記3において、
前記2個の累積部に累積された符号化データを所定のビット数ずつ連結してビット列を生成する生成部を有するデータ処理装置。
【0162】
(付記5)
付記1乃至2のいずれかのデータ処理装置が生成した符号化データを処理するデータ処理装置であって、
前記符号化データをそれぞれ並列して復号するN個の復号部と、
前記N個の復号部によりそれぞれ復号されたN個の復号データを前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータに従ってもとの順序に並べ替える並替部とを有するデータ処理装置。
【0163】
(付記6)
付記3乃至4のいずれかのデータ処理装置が生成した符号化データを処理するデータ処理装置であって、
前記符号化データをそれぞれ並列して復号する2個の復号部と、
前記2個の復号部によりそれぞれ復号された2個の復号データをもとの順序に並べ替える並替部とを有し、
前記並替部は、前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データをもとの順序に並べ替えるデータ処理装置。
【0164】
(付記7)
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結し、さらに前記振分けデータを連結してビット列を生成する生成部と、
前記ビット列に含まれる前記符号化データをそれぞれ並列して復号するN個の復号部と、
前記N個の復号部によりそれぞれ復号されたN個の復号データを前記振分部による振分けに従ってもとの順序に並べ替える並替部とを有するデータ処理装置。
【0165】
(付記8)
付記7において、
前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部を含むデータ処理装置。
【0166】
(付記9)
付記7または8において、
前記振分部は、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成し、
前記並替部は、前記N個の復号データを前記振分けデータに基づいてもとの順序に並べ替えるデータ処理装置。
【0167】
(付記10)
付記7または8において、
N=2であり、
前記累積部は、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積し、
前記並替部は、前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データをもとの順序に並べ替えるデータ処理装置。
【0168】
(付記11)
付記7乃至10のいずれかにおいて、
前記ビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データを復元する復元部とを有するデータ処理装置。
【0169】
(付記12)
付記9において、
前記ビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データと、前記並替部が前記N個の復号データを並べ替えるための前記振分けデータとを復元する復元部とを有するデータ処理装置。
【0170】
(付記13)
付記11または12において、
前記生成部により生成される前記ビット列は外部に出力された後、当該外部から取り込まれて前記復元部に入力されるデータ処理装置。
【0171】
(付記14)
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように前記符号化データが振り分けられ、前記N個の累積部に累積された前記符号化データをそれぞれ並列して復号するN個の復号部と、
前記N個の復号部によりそれぞれ復号されたN個の復号データを前記振分部による振分けに従ってもとの順序に並べ替える並替部とを有するデータ処理装置。
【0172】
(付記15)
付記14において、
前記並替部は、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータに基づいて、前記N個の復号データをもとの順序に並べ替えるデータ処理装置。
【0173】
(付記16)
付記14において、
N=2であり、
前記累積部では、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データが、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積され、
前記並替部は、前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データをもとの順序に並べ替えるデータ処理装置。
【0174】
(付記17)
付記14乃至16のいずれかにおいて、
前記N個の累積部に累積された符号化データが所定のビット数ずつ連結されたビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データを復元する復元部を有するデータ処理装置。
【0175】
(付記18)
付記15において、
前記N個の累積部に累積された符号化データが所定のビット数ずつ連結され、さらに前記振分けデータが連結されたビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データと、前記並替部が前記N個の復号データを並べ替えるための前記振分けデータとを復元する復元部を有するデータ処理装置。
【0176】
(付記19)
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、
前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部とを有し、
前記N個の累積部に累積された前記符号化データが、N個の復号部によりそれぞれ並列して復号され、前記N個の復号部によりそれぞれ復号されたN個の復号データが、前記振分部による振分けに従ってもとの順序に並べ替えられるデータ処理装置。
【0177】
(付記20)
付記19において、
前記振分部は、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成し、
前記N個の復号データが前記振分けデータに基づいてもとの順序に並べ替えられるデータ処理装置。
【0178】
(付記21)
付記19において、
N=2であり、
前記累積部は、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積し、
前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データがもとの順序に並べ替えられるデータ処理装置。
【0179】
(付記22)
付記19乃至21のいずれかにおいて、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結してビット列を生成する生成部をさらに有し、
前記ビット列が前記所定のビット数ずつ分割され、前記N個の復号部が復号するためのN個の前記符号化データが復元されるデータ処理装置。
【0180】
(付記23)
付記20において、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結し、さらに前記振分けデータを連結してビット列を生成する生成部をさらに有し、
前記ビット列が前記所定のビット数ずつ分割され、前記N個の復号部が復号するためのN個の前記符号化データと、前記並替部が前記N個の復号データを並べ替えるための前記振分けデータとが復元されるデータ処理装置。
【0181】
(付記24)
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部のいずれかに、前記符号化データを、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるような振分けで振り分け、
前記N個の累積部に累積された前記符号化データをそれぞれ並列して復号し、
前記復号されたN個の復号データを前記振分けに従ってもとの順序に並べ替える、
データ処理方法。
【0182】
(付記25)
付記24において、
前記振分けでは、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成し、
前記N個の復号データを前記振分けデータに基づいてもとの順序に並べ替える、
データ処理方法。
【0183】
(付記26)
付記24において、
N=2であり、
前記累積部に、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積し、
前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データをもとの順序に並べ替える、
データ処理方法。
【0184】
(付記27)
付記24乃至26のいずれかにおいて、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結してビット列を生成し、
前記ビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データを復元する、
データ処理方法。
【0185】
(付記28)
付記25において、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結し、さらに前記振分けデータを連結してビット列を生成し、
前記ビット列を前記所定のビット数ずつ分割して、N個の復号データに復号するためのN個の前記符号化データと、前記N個の復号データを並べ替えるための前記振分けデータとを復元する、
データ処理方法。
【符号の説明】
【0186】
14:画像圧縮展開部、 22:可変長符号化部、 24:可変長復号部、 30:振分部、40:ビット列生成部、 50:並替部、 46:符号化データ復元部、
E_n:符号化データ、 F_n:復号データ、 VSFT_A、VSFT_B:累積部、
VLD_A、VLD_B:復号部
【技術分野】
【0001】
本発明は、データ処理装置、及びデータ処理方法に関する。
【背景技術】
【0002】
可変長符号化は、固定符号長のデータをその発生頻度に応じた符号長の符号化データに変換し、平均符号長を短縮するデータ圧縮方法である。可変長符号化は、たとえば、画像データや音声データの圧縮に用いられる。たとえば、画像データを圧縮する場合、ラスタスキャン順に並んだ画素値データが、それぞれの発生頻度に応じた可変長の符号化データに変換される。そして、圧縮された画像データを展開するときには、個々の符号化データが順次復号される。復号処理では、符号化データが、もとの画素値データに変換される。
【0003】
可変調符号化・復号を高速化するための方法の一つとして、復号処理の並列化が提案されている(たとえば、特許文献1〜3)。一例では、符号化時に符号化データを所定の単位で複数のに分割し、その分割単位ごとにユニークコードを挿入する。復号時には、ユニークコードを検出することにより、符号化時に分割されたデータを認識し、分割された単位で複数の復号回路に分配し、並列して復号処理が行われる。そして、系列ごとの復号データを連結することで、展開したデータが得られる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平01−209819号公報
【特許文献2】特開平07−23397号公報
【特許文献3】特開平11−341489号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
可変長符号化における復号処理において、複数の復号回路に分配された系列毎の処理時間について考える。可変長符号化データの復号処理は、処理単位内に符号化されているデータ数や各符号化データの符号長によって、処理時間が異なる。処理単位内の符号化データ数や符号長が大きい系列ほど、処理時間が長くなり、その一方で、処理単位内の符号化データ数や符号長が小さい系列では、無駄な待ち時間が生じる。よって、復号処理全体としての処理時間は、合計の符号化データ数や符号長が大きい系列での処理時間に制約される。このように、復号処理を並列化したとしても、処理の高速化が制限されるという問題がある。
【0006】
そこで、本発明の目的は、符号化データの並列化された復号処理をさらに高速化する、データ処理装置等を提供することにある。
【課題を解決するための手段】
【0007】
上記の目的を達成するための一態様におけるデータ処理装置は、符号化処理部においては、連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部とを有する。
【0008】
また、復号処理部においては、前記N個の累積部に累積された前記符号化データをそれぞれ並列して順次復号するN個の復号部と、前記N個の復号部によりそれぞれ復号されたN個の復号データを前記振分部による振分けに従ってもとの順序に並べ替える並替部とを有する。
【発明の効果】
【0009】
以下に説明する実施形態によれば、振り分けられた符号化データ系列の符号化データ数および符号長を略均等化でき、符号化データの並列化された復号処理をさらに高速化することができる。
【図面の簡単な説明】
【0010】
【図1】データ処理装置が適用される、画像処理装置の構成例を示す図である。
【図2】画像圧縮展開部14の詳細な構成を示す図である。
【図3】可変長符号化部22の詳細な構成例を示す図である。
【図4】累積部VSFT_Aの詳細な構成例を示す図である。
【図5】振分部30による振分けの具体例を示す図である
【図6】可変長符号化部22の動作手順を説明するフローチャート図である。
【図7】可変長復号部24の詳細な構成例を示す図である。
【図8】復号部VLD_Aの詳細な構成例を示す図である。
【図9】並替部50による並べ替えを説明する図である。
【図10】可変長復号部24の動作手順を説明するフローチャート図である。
【図11】N=3の例における可変長符号化部22の構成を示す図である。
【図12】可変長符号化部22の動作手順を説明するフローチャート図である。
【図13】可変長符号化部22の動作手順を説明するフローチャート図である。
【図14】N=3の例における可変長復号部24の構成を示す図である。
【図15】図14の可変長復号部24の動作手順を説明するフローチャート図である
【図16】第2の実施形態における可変長符号化部22の構成例を示す図である。
【図17】テーブル種別TBL0の例を示す図である。
【図18】符号化データのビットパターンについて説明する図である。
【図19】第2の実施形態における累積部VSFT_Aの詳細な構成例である。
【図20】第2の実施形態における可変長符号化部22の動作手順を説明するフローチャート図である。
【図21】サブルーチンSR1のフローチャート図である。
【図22】サブルーチンSR2のフローチャート図である。
【図23】サブルーチンSR3のフローチャート図である。
【図24】サブルーチンSR4のフローチャート図である。
【図25】第2の実施形態における可変長復号部24の構成例を示す図である。
【図26】第2の実施形態における復号部VLD_Aの詳細な構成例を示す図である。
【図27】第2の実施形態における可変長復号24の動作手順を説明するフローチャート図である。
【図28】サブルーチンSR11のフローチャート図である。
【図29】サブルーチンSR12のフローチャート図である。
【発明を実施するための形態】
【0011】
以下、図面にしたがって本発明の実施の形態について説明する。但し、適用される技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【0012】
図1は、データ処理装置が適用される、画像処理装置の構成例を示す。画像処理装置2は、画像入力、画像処理、及び画像出力の各処理を行う。画像処理装置2は、たとえば画像処理用のLSI(Large Scale Integration)である。入力される画像データは、たとえば、不図示の撮像装置から送られる、撮像画像の画素値データである。画像データは、たとえば、フレームや、フレームを分割した領域といった処理単位ごとに画像処理される。また、画像処理された画像データの出力先は、たとえば不図示の表示装置や記録装置などである。画像処理装置2は、画像処理の前後に、処理単位ごとの画像データを外部メモリ4に格納する。その際、画像圧縮展開部14が、画像データの圧縮・展開を行う。ここでは、画像圧縮展開部14に、データ処理装置が含まれる。なお、外部メモリ4は、たとえば、SDRAM(Synchronous Dynamic Random Access Memory)などの大容量のメモリである。
【0013】
画像処理装置2では、制御部6からの制御信号に応答して、画像入力部8、画像処理部10、画像出力部12、画像圧縮展開部14、及びメモリ制御部16が動作する。画像入力が行われるとき、画像入力部8は、外部から入力される画像データを画像圧縮展開部14に送る。画像圧縮展開部14は、画像データを圧縮してメモリ制御部16に送る。メモリ制御部16は、圧縮された画像データ(以下、圧縮画像データ)を外部メモリ4に格納する。次いで、画像処理が行われるとき、メモリ制御部16は、外部メモリ4から圧縮画像データを読み出し、画像圧縮展開部14に送る。画像圧縮展開部14は、圧縮画像データを展開し、画像処理部10に送る。画像処理部10は、展開された画像データに画像処理を行い、画像圧縮展開部14に送る。画像処理は、たとえば、輝度等の補正処理や色変換処理などである。画像圧縮展開部14は、画像処理された画像データを圧縮し、メモリ制御部16に送る。メモリ制御部16は、圧縮画像データを外部メモリ4に格納する。そして、画像出力が行われるとき、メモリ制御部16は、外部メモリ4から圧縮画像データを読み出し、画像圧縮展開部14に送る。画像圧縮展開部14は、圧縮画像データを展開し、画像出力部12に送る。画像出力部12は、展開された画像データを外部に出力する。
【0014】
図2は、画像圧縮展開部14の詳細な構成を示す。画像圧縮展開部14は、画像圧縮部18と、画像展開部19とを有する。
【0015】
画像圧縮部18は、画素予測差分算出部20と可変長符号化部22を有する。画素予測差分算出部20は、入力される画像データから、連続する符号化対象データD_m(m=0、1、2、3、・・・)を生成する。入力される画像データは、ラスタスキャン順に連続した画素値データである。画素予測差分算出部20は、連続する画素における先行の画素の画素値から後続の画素の画素値を予測する。そして、画素予測差分算出部20は、後続の画素の予測値と実際の画素値との差分である画素予測差分を算出する。よって、ラスタスキャン順に連続した画素予測値差分が、連続する符号化対象データD_mとして生成される。なお、画素予測差分値に0が連続する場合には、連続する0値をまとめて符号化するランレングス符号化を用いて、符号化対象データ数を減らすことも可能である。例えば、画素予測差分として0が複数個続いていることを示すデータを一つの符号化対象データとすることで、画素予測差分(値は0)を複数個符号化するよりも、符号化データ数を削減することができる。次いで、可変長符号化部22は、連続する符号化対象データD_mを可変長符号化し、連続する符号化データE_mに変換する。個々の符号化対象データD_mは、その発生頻度に応じた符号長の符号化データE_mに変換される。連続する可変長符号化データE_mはビット列化され、圧縮画像データとしてメモリ制御部16に出力される。そして、圧縮画像データが、外部メモリ4に格納される。
【0016】
画像展開部19は、可変長復号部24と画素予測補償部26を有する。可変長復号部24は、連続する符号化データE_mを取得して復号する。符号化データE_mは、ビット列化された状態で、メモリ制御部16により外部メモリ4から読み出される。可変長復号部24は、個々の符号化データE_mを、その符号長に応じた発生頻度を有する復号データF_mに復号する。ここで、復号される復号データF_mは、画素値予測差分データである。よって、ラスタスキャン順に連続する画素値予測差分データが、可変長復号部24から出力される。次いで、画素予測補償部26は、復号データF_mに基づき、画素ごとの画素値を算出する。ラスタスキャン順に連続する画素値データは、展開された画像データとして出力される。
【0017】
ここでは、可変長符号化部22と可変長復号部24が、データ処理装置に対応する例である。以下、可変長符号化部22と可変長復号部24の詳細について、第1、第2の実施形態に分けて説明する。
【0018】
[第1の実施形態]
図3は、可変長符号化部22の詳細な構成例を示す。ここでは、可変長符号化部22は、2系列の復号処理用の符号化を行うための構成を有する。符号化テーブルTBL0_1、TBL0_2には、連続する符号化対象データD_nが、N個ずつ(図3では、N=2個ずつ)並列して入力される。たとえば、符号化対象データD_n(n=0、2、4、6、・・・)は符号化テーブルTBL0_1に、符号化対象データD_n+1は符号化テーブルTBL0_2に入力される。符号化テーブルTBL0_1、TBL0_2は、符号化対象データの値と、その発生頻度に応じた符号長の符号化データを対応付ける。ここでは、符号化テーブルTBL0_1、TBL0_2は、同じテーブルである。符号化テーブルTBL0_1、TBL0_2は、符号化対象データD_n、D_n+1がそれぞれ入力されると、対応する符号化データE_n、E_n+1をそれぞれ出力する。また、符号化テーブルTBL0_1、TBL0_2は、符号化データE_n、E_n+1の符号長L_n、L_n+1をそれぞれ出力する。符号長L_n、L_n+1は、比較部32に入力される。
【0019】
振分部30は、符号化データE_n、E_n+1を、2個の累積部VSFT_A、VSFT_Bに、それぞれの累積符号長の差が小さくなるように振り分ける。振り分け部30の詳細については、後述する。累積部VSFT_A、VSFT_Bは、振分けられる符号化データE_n、またはE_n+1をそれぞれ累積する。累積部VSFT_A、VSFT_Bには、振分けられる符号化データE_n、またはE_n+1とともに、符号長L_n、またはL_n+1が入力される。累積部VSFT_A、VSFT_Bは、符号長L_n、またはL_n+1から、それぞれ累積する符号化データの累積符号長を算出する。符号化データE_n、またはE_n+1は、累積符号長が所定のビット長になるまで、各累積部に累積される。所定のビット長は、任意に設定されるビット長であり、たとえば32ビットである。累積された符号化データE_n、またはE_n+1からなる32ビット長の累積符号化データDt_A、Dt_Bは、それぞれ記憶部36a、36bに格納される。このとき、累積部VSFT_A、VSFT_Bは、記憶部36a、36bに、データ書込みを指示するライトイネーブル信号WEを出力する。記憶部36a、36bは、たとえば、フリップフロップ回路である。また、累積部VSFT_A、VSFT_Bは、算出した累積符号長Sum_A、Sum_Bを、比較部38に出力する。
【0020】
ここで、図4に、累積部VSFT_Aの詳細な構成例を示す。なお、累積部VSFT_Bも、同じ構成を有する。よって、次の説明は、累積部VSFT_Bにも適用される。
【0021】
各部の動作について、符号化データE_nとその符号長L_nが入力される場合を例として説明する。記憶部60は、図示しないクロックに同期して入力される符号化データE_nを一時的にラッチし、符号化データE_nを可変シフタ・連結部62に出力する。可変シフタ・連結部62は、記憶部64内のそれまでの累積符号化データDt_Aに、記憶部60内の符号化データE_nを、その時点での累積符号長Sum_1に応じてシフトして連結する。累積符号長Sum_1は、加算器68から入力される。こうして符号化データE_nが累積され、累積符号化データDt_Aが記憶部64に格納される。なお、記憶部60、64は、たとえばフリップフロップ回路である。
【0022】
一方、記憶部66は、記憶部60が符号化データE_nをラッチするタイミングと同期して、入力される符号長L_nをラッチし、加算器68に出力する。加算器68は、可変シフタ・連結部62におけるシフト量や記憶部36aに対する書込みイネーブル信号WEを生成するための回路である。加算器68は、記憶部70内のその時点での累積符号長Sum_1に、符号長L_nを加算する。こうして累計された累積符号長Sum_1は、可変シフタ・連結部62に入力され、また、記憶部70に格納される。累積符号長Sum_1は、32ビット長を示すたとえば5ビットのデータである。累積符号長Sum_1が32ビットを超えたことを示す繰り上げビットが、書込みイネーブル信号WEとして、記憶部36aに出力される。よって、累積符号長Sum_1が32ビットを超えたとき、書込みイネーブル信号WEは、書込みを許可する値「1」になる。これにより、記憶部64に格納される累積符号化データDt_Aは、累積符号長Sum_1が32ビットを超えたときに、記憶部36aに32ビット分格納される。なお、記憶部66、70は、たとえば、フリップフロップ回路である。
【0023】
また、加算器72は、記憶部74内のそれまでの累積符号長Sum_Aに、符号長L_nを加算する。記憶部74は、たとえば、フリップフロップ回路である。そして、累計された累積符号長Sum_Aは、比較部38に出力される。
【0024】
図3に戻る。振分部30は、符号化データE_n、E_n+1を2個の累積部VSFT_A、VSFT_Bのいずれかに、2個の累積部VSFT_A、VSFT_Bにおける符号化データE_n、E_n+1の累積符号長Sum_A、Sum_Bの差が小さくなるように振り分ける。具体的には、振分判定部31により、符号化データE_n、E_n+1のうち符号長が長い方が、累積部VSFT_A、VSFT_Bのうち累積符号長が短い方に振分けられる。また、符号化データE_n、E_n+1のうち符号長が短い方が、累積部VSFT_A、VSFT_Bのうち累積符号長が長い方に振り分けられる。ここにおいて実行される振り分けは、次の2通りである。なお、振り分け先は「→」で示される。
振分けA0:符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B
振分けA1:符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A
比較部32は、2つの符号長L_n、L_n+1の大小を比較する。比較結果は、振分判定部31に入力される。また、比較部38は、累積符号長Sum_A、Sum_Bの大小を比較する。比較結果は、振分判定部31に入力される。一方で、セレクタ34a、34bの両方に、符号化データE_nとその符号長L_n、及び符号化データE_n+1とその符号長L_n+1が入力される。振分判定部31は、符号化データE_n、E_n+1の累積部VSFT_A、VSFT_Bへの振分けを示す振分けデータCSを生成する。振分けデータCSは、たとえば1ビットのデータである。振分けデータCSの値は、たとえば、振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)のときには「0」である。また、振分けデータCSは、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)のときには「1」である。振分けデータCSは、制御信号としてセレクタ34a、34bに入力される。
【0025】
振分けデータCSが「0」のとき、セレクタ34aは、符号化データE_nとその符号長L_nを累積部VSFT_Aに出力する。また、このとき、セレクタ34bは、符号化データE_n+1とその符号長L_n+1を累積部VSFT_Bに出力する。また、振分けデータCSが「1」のとき、セレクタ34aは、符号化データE_n+1とその符号長L_n+1を累積部VSFT_Aに出力する。また、このとき、セレクタ34bは、符号化データE_nとその符号長L_nを累積部VSFT_Bに出力する。
【0026】
ビット列生成部40は、2個の累積部VSFT_A、VSFT_Bに累積された符号化データE_n、E_n+1を、一定のビット数ずつ連結してビット列BSを生成する。具体的には、ビット列生成部40は、記憶部36aに格納された累積符号化データDt_Aと、記憶部36bに格納された累積符号化データDt_Bを、一定のビット数ずつ交互に連結する。ビット列生成部40は、たとえばマルチプレクサを有する。一定のビット数は、任意のビット数が可能であり、たとえば1ビットである。生成されたビット列BSは、たとえば、可変長符号化部22内のバッファメモリ42に格納される。バッファメモリ42は、たとえばSRAM(Static RAM)である。
【0027】
また、バッファメモリ42には、振分判定部31が生成する振分けデータCSも格納される。振分けデータCSは、ビット列BSとは別に、あるいはビット列BSの一部として格納される。ビット列BSとは別に格納される場合、振分けデータCSは、たとえば、バッファメモリ42のビット列BSと異なる領域に格納される。その場合、たとえば、一対の累積符号化データDt_A、Dt_Bに対応する複数の振分けデータCSを、可変長符号化して圧縮してもよい。ビット列BSの一部として格納される場合、たとえば、一対の累積符号化データDt_A、Dt_Bがマルチプレクスされるごとに、振分けデータCSが連結される。
【0028】
バッファメモリに格納されたビット列BSと振分けデータCSは、圧縮画像データとして、たとえば図1の外部メモリ4に格納される。このように、符号化データE_n、E_n+1をビット列化することで、単一のアクセスにより符号化データE_n、E_n+1をバッファメモリ42に格納できる。
【0029】
図5は、振分部30による振分けの具体例を示す図である。図5(A)〜(C)には、n=0、2、4、6、・・・の場合における符号化データE_n、E_n+1と、振分けデータCSと、累積部VSFT_A、VSFT_Bで累積される累積符号化データDt_A、Dt_Bの例が、時系列で示される。図5(A)〜(C)では、矩形により符号化データE_n、E_n+1が示される。また、矩形の高さと矩形内の数字により、符号長(ビット数)が示される。
【0030】
図5(A)には、符号化データE_2、E_3の振分けが行われるときの状態が示される。このとき、累積部VSFT_A、VSFT_Bに、符号化データE_0、E_1が累積符号化データDt_A、Dt_Bとしてそれぞれ累積されている。なお、初期状態では、累積符号長Sum_A、Sum_Bはともに「0」であるので、たとえば、符号化データE_0は累積部VSFT_Aに、符号化データE_1は累積部VSFT_Bに振り分けられたものとする。
【0031】
符号化データE_0、E_1の符号長は、それぞれ「2」、「3」である。よって、累積符号長Sum_A、Sum_Bはそれぞれ「2」、「3」であり、累積符号長Sum_Aは、累積符号長Sum_Bより小さい。一方、あらたな符号化データE_2、E_3の符号長L_2、L_3はそれぞれ「5」、「3」であり、符号長L_2は符号長L_3より大きい。よって、このとき、符号化データE_2は累積部VSFT_Aに、符号化データE_3は累積部VSFT_Bに振分けられる。つまり、振分けA0が行われる。このとき、振分けデータCSは、「0」である。
【0032】
上記の振分けが行われると、累積符号長Sum_A、Sum_Bは、それぞれ「5」、「3」が加算されて「7」、「6」になり、その差は「1」になる。これは、振分けA1が行われて符号化データE_2が累積部VSFT_Bに、符号化データE_3が累積部VSFT_Aに振分けられた場合の、累積符号長Sum_A、Sum_B「5」、「8」の差「3」より小さくなる。
【0033】
次いで、図5(B)には、あらたな符号化データE_4、E_5の振分けが行われるときの状態が示される。このとき、図5(A)の振分けにより、累積符号長Sum_A、Sum_Bは「7」、「6」である。よって、累積符号長Sum_Aは、累積符号長Sum_Bより大きい。一方、符号化データE_4、E_5の符号長L_4、L_5はそれぞれ「4」、「2」であり、符号長L_4は符号長L_5より大きい。よって、符号化データE_4は累積部VSFT_Bに、符号化データE_5は累積部VSFT_Aに振分けられる。つまり、振分けA1が行われる。このとき、振分けデータCSは、「1」である。
【0034】
すると、累積符号化データDt_Aの累積符号長Sum_Aは、符号化データE_5の符号長「2」が加算されて「9」になる。一方、累積符号化データDt_Bの累積符号長Sum_Bは、符号化データE_4の符号長「4」が加算されて「10」になる。すると、累積符号長Sum_A、Sum_Bの差は、「1」である。これは、たとえば振分けA0が行われて累積符号長Sum_A、Sum_Bがそれぞれ「12」、「8」になる場合の差「4」より小さくなる。
【0035】
次いで、図5(C)には、あらたな符号化データE_6、E_7の振分けが行われるときの状態が示される。このとき、図5(B)の振り分けにより、累積符号長Sum_A、Sum_Bは「9」、「10」であり、累積符号長Sum_Aは、累積符号長Sum_Bより小さい。一方、符号化データE_6、E_7の符号長L_6、L_7はそれぞれ「3」、「1」であり、符号長L_6は符号長L_7より大きい。よって、符号化データE_6は累積部VSFT_Aに、符号化データE_7は累積部VSFT_Bに振分けられる。つまり、振分けA0が行われる。このとき、振分けデータCSは、「0」である。
【0036】
すると、累積符号化データDt_Aの累積符号長Sum_Aは、符号化データE_6の符号長「3」が加算されて「12」になる。一方、累積符号化データDt_Bの累積符号長Sum_Bは、符号化データE_7の符号長「1」が加算されて「11」になる。すると、累積符号長Sum_A、Sum_Bの差は、「1」である。これは、たとえば振分けA1が行われて累積符号長Sum_A、Sum_Bは、それぞれ「10」、「13」になる場合の差「3」より小さくなる。
【0037】
図6は、可変長符号化部22の動作手順を説明するフローチャート図である。図6に示す手順は、可変長符号化部22の各部により実行される。可変長符号化部22の各部の動作は、図3では図示を省略した制御部により制御される。
【0038】
まず、符号化データE_n、E_n+1のカウンタ変数nの値が「0」に初期設定される。また、累積符号長Sum_A、Sum_Bの値が「0」にそれぞれ初期設定される(S2)。たとえば、振分判定部31がカウンタ変数nを初期設定する。また、累積部VSFT_A、VSFT_Bが記憶部70の累積符号長Sum_A、Sum_Bを初期設定する。次いで、セレクタ34a、34bは、符号化テーブルTBL0_1、TBL0_2から、符号化データE_n、E_n+1を取得する(S4)。次いで、セレクタ34a、34b、及び比較部32は、符号化テーブルTBL0_1、TBL0_2から、符号化対象データE_n、E_n+1の符号長L_n、L_n+1を取得する(S6)。
【0039】
次いで、振分判定部31は、比較部38による比較結果から、累積符号長Sum_Aが累積符号長Sum_Bより小さいかを判定する(S8)。累積符号長Sum_Aが累積符号長Sum_Bより小さいとき(S8のYes)、振分判定部31は、比較部32による比較結果から、符号長L_nが符号長L_n+1より大きいかを判定する(S10)。一方、累積符号長Sum_Aが累積符号長Sum_B以上のとき(S8のNo)、振分判定部31は、符号長L_nが符号長L_n+1より大きいかを判定する(S12)。
【0040】
累積符号長Sum_Aが累積符号長Sum_Bより小さく、かつ符号長L_nが符号長L_n+1より大きいとき、手順S10の判定結果はYesになる。また、累積符号長Sum_Aが累積符号長Sum_B以上であり、かつ符号長L_nが符号長L_n+1以下のとき、手順S12の判定結果はNoになる。この2つのケースでは、振分判定部31は、振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)を行う(S14)。そして、累積部VSFT_Aは、累積符号長Sum_Aに符号長L_nを加算する。また、累積部VSFT_Bは、累積符号長Sum_Bに符号長L_n+1を加算する(S16)。そして、振分判定部31は、値「0」の振分けデータCSを、ビット列生成部40またはバッファメモリ42に出力する(S18)。
【0041】
累積符号長Sum_Aが累積符号長Sum_B以上、かつ符号長L_nが符号長L_n+1以下のとき、手順S10の判定結果はNoになる。また、累積符号長Sum_Aが累積符号長Sum_Bより小さく、かつ符号長L_nが符号長L_n+1より大きいとき、手順S12の判定結果はYesになる。この2つのケースでは、振分判定部31は、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)を行う(S20)。そして、累積部VSFT_Aは、累積符号長Sum_Aに符号長L_n+1を加算する。また、累積部VSFT_Bは、累積符号長Sum_Bに符号長L_nを加算する(S22)。そして、振分判定部31は、値「1」の振分けデータCSを、ビット列生成部40またはバッファメモリ42に出力する(S24)。
【0042】
そして、カウンタ変数nが「2」インクリメントされる(S26)。そして、処理単位の領域におけるすべての符号化対象データD_n、D_n+1の符号化と振分けが完了するまで、手順S4〜S26が繰り返される(S28のNo)。
【0043】
このように、第1の実施形態によれば、連続する2個の可変調符号化データE_n、E_n+1を2個の累積部VSFT_A、VSFT_Bのいずれかに、それらの累積符号長Sum_A、Sum_Bの差が小さくなるように振り分けるので、2個の系列に対して符号化データ数が均等に振り分けられるとともに、累積符号長Sum_A、Sum_Bが略均等化される。その結果、後述する2個の復号部での復号処理時間が均等化され、全体の処理時間を短くできる。
【0044】
図7は、可変長復号部24の詳細な構成例を示す。ここでは、可変長復号部24は、2系列の復号処理を並列して行うための構成を有する。可変長復号部24内のバッファメモリ44には、外部メモリ4からビット列BSが読み出される。これとともに、振分けデータCSが、ビット列BSとは別に、またはビット列BSの一部として、外部メモリ4から可変長復号部24内のバッファメモリ44に読み出される。符号化データE_n、E_n+1がビット列化されることで、単一のアクセスによりバッファメモリ44から符号化データE_n、E_n+1を読み出すことができる。
【0045】
符号化データ復元部46は、ビット列BSを一定のビット数(たとえば1ビット)ずつ分割して、二つの系列の累積符号化データDt_A、Dt_Bを復元する。ビット列BSは、バッファメモリ44から読み出される。符号化データ復元部46は、たとえば、ビット列生成部40のマルチプレクサに対応するデマルチプレクサを有する。これにより、ビット列BSは、累積符号化データDt_A、Dt_Bに分割される。符号化データE_n、E_n+1は、累積符号化データDt_A、Dt_Bに含まれている。累積符号化データDt_A、Dt_Bは、それぞれ記憶部48a、48bに格納される。記憶部48a、48bは、次に説明する2個の復号部VLD_A、VLD_Bにそれぞれ対応するバッファであり、たとえばフリップフロップ回路である。また、バッファメモリ44のビット列BSとは別領域格納されている振分けデータCSは、並替部50に出力される。
【0046】
2個の復号部VLD_A、VLD_Bは、2個の累積部VSFT_A、VSFT_Bに累積された符号化データE_n、E_n+1をそれぞれ並列して順次復号する。復号部VLD_Aは、記憶部48aに格納された累積符号化データDt_Aから順次符号化データE_n、またはE_n+1を読み出して,復号データF_Aに復号する。また、復号部VLD_Bは、記憶部48bに格納された累積符号化データDt_Bから順次符号化データE_n、またはE_n+1を読み出して、復号データF_Bに復号する。
【0047】
ここで、図8に、復号部VLD_Aの詳細な構成例を示す。なお、復号部VLD_Bも、同じ構成を有する。よって、次の説明は、復号部VLD_Bにも適用される。セレクタ76には、累積符号化データDt_A(復号部VLD_Bの側では累積符号化データDt_B)が入力される。セレクタ76は、データ要求信号Reqに応答して、32ビット長の累積符号化データDt_Aを選択して記憶部78に格納する。記憶部78は、たとえばフリップフロップ回路である。記憶部78に格納された累積符号化データDt_Aは、セレクタ76に帰還入力され、一方で可変シフタ80に入力される。セレクタ76に帰還入力された累積符号化データDt_Aは、新たな累積符号化データDt_Aが要求されるまで、繰り返し記憶部78に格納される。可変シフタ80は、累積符号化データDt_Aにおける復号済みの符号長分ビットシフトした位置からビットデータを読み出し、記憶部82に格納する。記憶部82は、たとえばフリップフロップ回路である。復号済みの符号長SUM_1´は、後述するように加算器86から入力される。
【0048】
記憶部82に格納されたビットデータは、順次復号テーブルTBL0_Aに入力される。復号テーブルTBL0_Aは、符号化データと、その符号長に応じた発生頻度の復号データとを対応付ける。復号テーブルTBL0_Aは、可変長符号化部22の符号化テーブルTBL0_1、TBL0_2に対応する。復号テーブルTBL0_Aは、入力されたビットデータとテーブル内の符号化データとを上位ビットから順に照合し、一致する符号化データを検索する。そして、検索された符号化データE_Aに対応する復号データF_A(復号部VLD_B側では、復号データF_B)が出力される。出力された復号データF_Aは、記憶部84に格納される。記憶部84は、たとえばフリップフロップ回路である。記憶部84に格納された復号データF_Aは、セレクタ50a、50bに出力される。また、復号テーブルTBL0_Aは、復号済みの符号長L_Aを出力する。復号済みの符号長L_Aは、加算器86に送られる。
【0049】
加算器86は、記憶部88に格納された復号済みの符号長SUM_1´に、あらたな復号済みの符号長L_Aを加算する。記憶部88は、たとえばフリップフロップ回路である。こうして累計された復号済みの符号長SUM_1´が、記憶部88に格納され、また、可変シフタ80に入力される。その一方で、復号済み符号長SUM_1´の繰り上げビットが、データ要求信号Reqとして、セレクタ76と図7の記憶部48aに入力される。復号済み符号長SUM_1´は、たとえば、累積符号化データDt_Aの上限の符号長32ビットを示す5ビットのデータである。復号済みの符号長SUM_1´の繰り上げビットが、データ要求信号Reqとしてセレクタ76や記憶部48aに送られる。よって、復号済みの符号長が32ビットを超えたとき、新たなデータ要求を示す値「1」のデータ要求信号Reqが送られる。これに応答して、記憶部48aからセレクタ76に、あらたな32ビット長の累積符号化データDt_Aが送られる。
【0050】
図7に戻る。並替部50は、2個の復号部VLD_A、VLD_Bによりそれぞれ復号された2個の復号データF_A、F_Bを、振分部30による振分けに従ってもとの順序に並べ替える。たとえば、図9(A)には、可変長符号化部22の振分部30において振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)が行われた場合が示される。このことは、振分けデータCSの値「0」に示される。このとき、累積符号化データDt_A、Dt_Bからそれぞれ復号された復号データF_A、F_Bは、それぞれ、符号化データE_n、E_n+1から復号されたものである。よって、復号データF_Aは復号データF_nとして、復号データF_Bは復号データF_n+1として並べ替えられる。また、図9(B)には、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)が行われた場合が示される。このことは、振分けデータCSの値「1」に示される。このとき復号データF_A、F_Bは、それぞれ、符号化データE_n+1、E_nから復号されたものである。よって、復号データF_Aは復号データF_n+1として、復号データF_Bは復号データF_nとして並べ替えられる。このようにして、復号データF_A、F_Bが、もとの順に並べ替えられる。
【0051】
並替部50では、復号データF_A、F_Bの両方がセレクタ50a、50bに入力される。そして、セレクタ50a、50bは、振分けデータCSに応じて、2つの入力のいずれかを選択して出力する。たとえば、振分けデータCSの値が「0」のとき、セレクタ50aは復号データF_Aを選択して出力し、セレクタ50bは復号データF_Bを選択して出力する。一方、振分けデータCSの値が「1」のとき、セレクタ50aは復号データF_Bを選択して出力し、セレクタ50bは復号データF_Aを選択して出力する。こうして、セレクタ50aは、復号データF_A、F_Bのうち、符号化データE_nから復号された復号データを選択して出力する。また、セレクタ50bは、復号データF_A、F_Bのうち、符号化データE_n+1から復号された復号データを選択して出力する。
【0052】
セレクタ50aから出力される復号データF_AまたはF_Bは、記憶部52aに格納される。また、セレクタ50bから出力される復号データF_AまたはF_Bは、記憶部52bに格納される。こうして、2個の復号データF_A、F_Bが、符号化データE_n、E_n+1に対応するもとの順序で並べ替えられ、記憶部52a、52bに格納される。そして、記憶部52a、52bから、符号化データE_n、E_n+1からそれぞれ復号された復号データF_n、F_n+1が出力される。
【0053】
図10は、可変長復号部24の動作手順を説明するフローチャート図である。図10に示す手順は、可変長復号部24の各部により実行される。可変長復号部24の各部の動作は、図7では図示を省略した制御部により制御される。
【0054】
まず、符号化データ復元部46が、ビット列BSを分割して、累積符号化データDt_A、Dt_Bを復元する(S30)。次いで、復号データF_n、F_n+1をカウントするカウンタ変数nの値が「0」に初期化される(S30)。たとえば、記憶部52a、52bが復号データF_n、F_n+1のカウンタ変数nの値を「0」に設定する。次いで、復号部VDL_A、VDL_Bが、復号データF_A、F_Bを復号する(S32)。次いで、並替部50は、振分けデータCSを取得する(S34)。
【0055】
振分けA0が行われたとき、振分けデータCSは「0」である(S36のYes)。よって、このとき、並替部50は、復号データF_Aが符号化データE_nに、復号データF_Bが符号化データE_n+1に対応するように並べ替える(S38)。一方、振分けA1が行われたとき、振分けデータCSは「0」でなく「1」である(S36のNo)。よって、このとき、並替部50は、復号データF_Aが符号化データE_n+1に、復号データF_Bが符号化データE_nに対応するように並べ替える(S40)。
【0056】
そして、カウンタ変数nが「2」インクリメントされる(S42)。そして、処理単位の領域におけるすべての符号化データが復号されるまで、手順S31〜S42が繰り返される(S44のNo)。
【0057】
このように、第1の実施形態によれば、2個の系列に振り分けられた符号化データ数が均等であり、かつ、2個の累積部VSFT_A、VSFT_Bでの累積符号長Sum_A、Sum_Bが略均等化されることで、2個の復号部VLD_A、VLD_Bによる累積符号化データDt_A、Dt_Bの復号処理速度が略均等化される。よって、復号対象データの符号化データ数、あるいは符号長が不均等であることにより、符号化データ数、あるいは符号長が大きい方の処理時間に全体の処理時間が制約されるといったことを回避できる。よって、並列化された復号処理がさらに高速化される。
【0058】
[N=3の例]
上述の説明では、N=2の場合の2系列の振分け、及び復号処理の例を示した。しかしながら、本実施形態は、Nが3以上の場合の3系列以上の振分け、及び復号処理を行う場合にも適用できる。次に、N=3の例について説明する。
【0059】
図11は、N=3の例における可変長符号化部22の構成を示す。ここでは、可変長符号化部22は、図3の構成に加えて、符号化テーブルTBL0_3、累積部VSFT_C、及び記憶部36cを有する。また、振分部30は、セレクタ34cを有する。
【0060】
符号化テーブルTBL0_3は、符号化テーブルTBL0_1、TBL0_2と同じ構成を有する。ここでは、符号化テーブルTBL0_1、TBL0_2、及びTBL0_3は、それぞれ、連続する符号化対象データD_n(n=0、3、6、9、・・・)、D_n+1、及びD_n+2を、符号化データE_n、En+1、及びE_n+2にそれぞれ符号化する。また、符号化テーブルTBL0_1、TBL0_2、及びTBL0_3は、対応する符号長L_n、L_n+1、及び符号長L_n+2をそれぞれ出力する。
【0061】
符号化テーブルTBL0_1〜TBL0_3からそれぞれ出力される符号化データE_nとその符号長L_n、符号化データE_n+1とその符号長L_n+1、及び符号化データE_n+2とその符号長L_n+2は、いずれもセレクタ34a〜34cに入力される。また、符号長Ln〜L_n+2は、比較部32に入力される。
【0062】
累積部VSFT_Cは、累積部VSFT_A、VSFT_Bと同じ構成を有する。累積部VSFT_A、VSFT_B、及びVSFT_Cは、符号化データE_n、E_n+1、及びE_n+2のいずれかをそれぞれ累積する。累積部VSFT_Cが累積した符号化データは、累積符号化データDt_Cとして記憶部36cに格納される。また、累積部VSFT_Cは、累積符号化データDt_Cの累積符号長Sum_Cを算出する。累積符号長Sum_Cは、累積符号長Sum_A、Sum_Bとともに比較部38に入力される。
【0063】
振分部30は、累積部VSFT_A、VSFT_B、及びVSFT_Cにおける累積符号長Sum_A、Sum_B、及びSum_Cの差が小さくなるような振分けを行う。具体的には、符号化データE_n、E_n+1、E_n+2のうち最も符号長が長いものが、累積部VSFT_A、VSFT_B、VSFT_Cのうち最も累積符号長が短いものに振り分けられる。そして、最も符号長が長いもの以外の2個の符号化データは、一定のルールで、最も累積符号長が短いもの以外の2個の累積部に振り分けられる。そうすることで、累積符号長Sum_A、Sum_B、及びSum_Cの差をできるだけ小さくすることができる。たとえば、累積符号長Sum_A、Sum_B、及びSum_Cの差を、符号長L_n、L_n+1、及びL_n+2のうちの最大符号長以下にすることができる。また、振分判定部31は、振分けを示す振分けデータCSを生成する。振分けデータCSは、たとえば2ビットのデータである。上記の一定のルールに基づく振分けと振分けデータCSの値は、次の3通りである。
振分けB0:
振分けデータCS=0
符号化データE_n→累積部VSFT_A、
符号化データE_n+1→累積部VSFT_B、
符号化データE_n+2→累積部VSFT_C
振分けB1:
振分けデータCS=1
符号化データE_n+1→累積部VSFT_A、
符号化データE_n+2→累積部VSFT_B、
符号化データE_n→累積部VSFT_C
振分けB2:
振分けデータCS=2
符号化データE_n+2→累積部VSFT_A、
符号化データE_n→累積部VSFT_B、
符号化データE_n+1→累積部VSFT_C
振分けデータCSは、制御信号として、セレクタ34a、34b、及び34cに入力される。また、セレクタ34a、34b、及び34cは、振分けデータCSに応じていずれかの入力を選択して出力する。たとえば、振分けデータCSが「0」のとき、セレクタ34aは、符号化データE_nとその符号長L_nを累積部VSFT_Aに出力する。また、このとき、セレクタ34bは、符号化データE_n+1とその符号長L_n+1を累積部VSFT_Bに出力する。また、このとき、セレクタ34cは、符号化データE_n+2とその符号長L_n+2を累積部VSFT_Cに出力する。また、振分けデータCSが「1」のとき、セレクタ34aは、符号化データE_n+1とその符号長L_n+1を累積部VSFT_Aに出力する。また、このとき、セレクタ34bは、符号化データE_n+2とその符号長L_n+2を累積部VSFT_Bに出力する。また、このとき、セレクタ34cは、符号化データE_nとその符号長L_nを累積部VSFT_Cに出力する。そして、振分けデータCSが「2」のとき、セレクタ34aは、符号化データE_n+2とその符号長L_n+2を累積部VSFT_Aに出力する。また、このとき、セレクタ34bは、符号化データE_nとその符号長L_nを累積部VSFT_Bに出力する。また、このとき、セレクタ34cは、符号化データE_n+1とその符号長L_n+1を累積部VSFT_Cに出力する。
【0064】
ビット列生成部40は、記憶部36a、36b、及び36cにそれぞれ格納された累積符号化データDt_A、Dt_B、及びDt_Cを、たとえば1ビットずつ順番に連結して、ビット列BSを生成する。さらに、ビット列生成部40は、ビット列BSに振分けデータCSを連結してもよい。そして、ビット列BSと振分けデータCSは、バッファメモリ42に格納される。
【0065】
図12、13は、図11の可変長符号化部22の動作手順を説明するフローチャート図である。図12では、まず、符号化データE_n、E_n+1、及びE_n+2のカウンタ変数nが「0」に初期設定される。また、累積符号長データSum_A、Sum_B、及びSum_Cが「0」に初期設定される(S102)。次いで、セレクタ34a、34b、及び34cは、符号化テーブルTBL0_1、TBL0_2、及びTBL0_3から符号化データE_n、E_n+1、及びE_n+2を取得する(S104)。次いで、比較部32、ならびにセレクタ34a、34b、及び34cは、符号化テーブルTBL0_1、TBL0_2、及びTBL3から符号化対象データE_n、E_n+1、及びE_n+2の符号長L_n、L_n+1、及びL_n+2を取得する(S106)。
【0066】
次いで、振分判定部31は、比較部38による比較結果から、累積符号長Sum_A、Sum_B、Sum_Cのうちで、累積符号長Sum_Aが最小かを判定する(S108)。累積符号長Sum_Aが最小のとき(S108のYes)、振分判定部31は判定結果SUM_STATE=0を生成する(S114)。また、累積符号長Sum_Aが最小でないとき(S108のNo)、振分判定部31は、累積符号長Sum_Bが最小かを判定する(S110)。累積符号長Sum_Bが最小のとき(S110のYes)、振分判定部31は判定結果SUM_STATE=1を生成する(S116)。また、累積符号長Sum_Bが最小でないとき(S110のNo)、振分判定部31は、累積符号長Sum_Cが最小と判定し、振分判定部31は判定結果SUM_STATE=2を生成する(S118)。
【0067】
次いで、振分判定部31は、比較部32による比較結果から、符号長L_n、L_n+1、及びL_n+2のうちで、符号長L_nが最大かを判定する(S120)。符号長L_nが最大のとき(S120のYes)、振分判定部31は、判定結果LN_STATE=0を生成する(S126)。符号長L_nが最大でないとき(S120のNo)、振分判定部31は、符号長L_n+1が最大かを判定する(S122)。符号長L_n+1が最大のとき(S122のYes)、振分判定部31は、判定結果LN_STATE=1を生成する(S128)。また、符号長L_n+1が最大でないとき(S122のNo)、振分判定部31は、符号長L_n+2が最大と判定し、振分判定部31は、判定結果LN_STATE=2を生成する(S130)。
【0068】
次いで、図13に進み、振分判定部31は、判定結果の組合せ(SUM_STATE、LN_STATE)が、(0、0)、(1、1)、または(2、2)であるかを判定する(S132)。ここで、次の3通りのいずれかの場合、判定結果がYesになる。
[1]累積符号長Sum_Aが最小、かつ符号長L_nが最大
[2]累積符号長Sum_Bが最小、かつ符号長L_n+1が最大
[3]累積符号長Sum_Cが最小、かつ符号長L_n+2が最大
判定結果がYesの場合、振分判定部31は、振分けB0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B、符号化データE_n+2→累積部VSFT_C)を行う(S138)。次いで、累積部VSFT_Aが、累積符号長Sum_Aに符号長L_nを加算する。また、累積部VSFT_Bが、累積符号長Sum_Bに符号長L_n+1を加算する。そして、累積部VSFT_Cが、累積符号長Sum_Cに符号長L_n+3を加算する(S144)。次いで、振分判定部31は、値「0」の振分けデータCSを、ビット列生成部40、あるいはバッファメモリ42に出力する(S150)。
【0069】
手順S132の判定結果がNoの場合、振分判定部31は、データSUM_STATE、LN_STATEが、(0、1)、(1、2)、または(2、0)であるかを判定する(S134)。
ここで、次の3通りのいずれかの場合、判定結果がYesになる。
[4]累積符号長Sum_Aが最小、かつ符号長L_n+1が最大
[5]累積符号長Sum_Bが最小、かつ符号長L_n+2が最大
[6]累積符号長Sum_Cが最小、かつ符号長L_nが最大
判定結果がYesの場合、振分判定部31は、振分けB1(符号化データE_n+1→累積部VSFT_A、符号化データE_n+2→累積部VSFT_B、符号化データE_n→累積部VSFT_C)を行う(S140)。次いで、累積部VSFT_Aが、累積符号長Sum_Aに符号長L_n+1を加算する。また、累積部VSFT_Bが、累積符号長Sum_Bに符号長L_n+2を加算する。そして、累積部VSFT_Cが、累積符号長Sum_Cに符号長L_nを加算する(S146)。次いで、振分判定部31は、値「1」の振分けデータCSを、ビット列生成部40、あるいはバッファメモリ42に出力する(S152)。
【0070】
手順S134の判定結果がNoの場合、振分判定部31は、データSUM_STATE、LN_STATEが、(0、2)、(1、0)、または(2、1)であると判定する。
この場合、次の3通りのいずれかに対応する。
[7]累積符号長Sum_Aが最小、かつ符号長L_n+2が最大
[8]累積符号長Sum_Bが最小、かつ符号長L_nが最大
[9]累積符号長Sum_Cが最小、かつ符号長L_n+1が最大
振分判定部31は、振分けB2(符号化データE_n+2→累積部VSFT_A、符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_C)を行う(S142)。次いで、累積部VSFT_Aが、累積符号長Sum_Aに符号長L_n+2を加算する。また、累積部VSFT_Bが、累積符号長Sum_Bに符号長L_nを加算する。そして、累積部VSFT_Cが、累積符号長Sum_Cに符号長L_n+1を加算する(S148)。次いで、振分判定部31は、値「2」の振分けデータCSを、ビット列生成部40、あるいはバッファメモリ42に出力する(S154)。
【0071】
そして、カウンタ変数nが「3」だけインクリメントされる(S156)。そして、処理対象の領域におけるすべての符号化対象データの符号化と振分け処理が完了するまで、手順S104〜S154が繰り返される(S158のNo)。
【0072】
図14は、N=3の例における可変長復号部24の構成を示す。図14では、可変長復号部24は、図7の構成に加え、記憶部48c、復号部VLD_C、及び記憶部52Cを有する。また、並替部50は、セレクタ50Cを有する。
【0073】
符号化データ復元部46は、ビット列BSを一定のビット数(たとえば1ビット)ずつ分割して、累積符号化データDt_A、Dt_B、及びDt_Cを復元する。累積符号化データDt_A、Dt_B、及びDt_Cには、符号化データE_n、E_n+1、及びE_n+2が振分けB0〜B2に基づいて振り分けられている。復元された累積符号化データDt_A、Dt_B、及びDt_Cは、それぞれ、記憶部48a、48b、及び48cに格納される。
【0074】
復号部VLD_Cは、復号部VLD_A、VLD_Bと同じ構成を有する。復号部VLD_A、VLD_B、及びVLD_Cは、記憶部48a、48b、及び48cに格納される累積符号化データDt_A、Dt_B、及びDt_Cを順次復号する。復号部VLD_A、VLD_B、及びVLD_Cで復号された復号データF_A、F_B、及びF_Cは、いずれも並替部50のセレクタ50a、50b、及び50cに入力される。
【0075】
並替部50では、セレクタ50a、50b、及び50cが、振分けデータCSに基づいて、復号データF_A、F_B、及びF_Cのいずれかを選択して出力する。たとえば、振分けデータCSの値が「0」のとき、セレクタ50aは復号データF_Aを、セレクタ50bは復号データF_Bを、セレクタ50cは復号データF_Cをそれぞれ選択して出力する。また、振分けデータCSの値が「1」のとき、セレクタ50aは復号データF_Bを、セレクタ50bは復号データF_Cを、セレクタ50cは復号データF_Aをそれぞれ選択して出力する。また、振分けデータCSの値が「2」のとき、セレクタ50aは復号データF_Cを選択して出力する。このとき、セレクタ50bは復号データF_Aを選択して出力する。また、このとき、セレクタ50cは復号データF_Bを選択して出力する。
【0076】
こうして、セレクタ50aは、復号データF_A、F_B、及びF_Cのうち、符号化データE_nから復号された復号データを選択して出力する。また、セレクタ50bは、復号データF_A、F_B、及びF_Cのうち、符号化データE_n+1から復号された復号データを選択して出力する。そして、セレクタ50cは、復号データF_A、F_B、及びF_Cのうち、符号化データE_n+2から復号された復号データを選択して出力する。
【0077】
こうして、符号化データE_n、E_n+1、及びE_n+2から復号された復号データが、それぞれ記憶部52a、52b、及び52cに格納される。そして、記憶部52a、52b、及び52cに格納された復号データが、それぞれ、復号データF_n、F_n+1、及びF_n+2として出力される。これら復号データF_n、F_n+1、及びF_n+2を順番に並べることで、もとのデータに戻すことができる。このようにして、復号データが、もとの順に並べ替えられる。
【0078】
図15は、図14の可変長復号部24の動作手順を説明するフローチャート図である。まず、符号化データ復元部46が、ビット列BSを分割して、累積符号化データDt_A、Dt_B、及びDt_Cを復元する(S160)。次いで、復号データF_n、F_n+1、及びF_n+2をカウントするカウンタ変数nが値「0」に初期化される(S162)。次いで、復号部VDL_A、VDL_B、及びVDL_Cは、復号データF_A、F_B、及びF_Cを復号する(S164)。次いで、並替部50は、振分けデータCSを取得する(S166)。
【0079】
振分けデータCSが「0」のとき(S168のYes)、並替部50は、復号データF_Aが復号データF_n、復号データF_Bが復号データF_n+1、そして、復号データF_Cが復号データF_n+2に対応するように、並べ替える(S172)。また、振分けデータCSが「0」でなく「1」のとき(S168のNo、S170のYes)、並替部50は、復号データF_Aが復号データF_n+1、復号データF_Bが復号データF_n+2、そして、復号データF_Cが復号データF_nに対応するように並べ替える(S174)。そして、振分けデータCSが「1」でなく「2」のとき(S170のNo)、並替部50は、復号データF_Aが復号データF_n+2、復号データF_Bが復号データF_n、そして、復号データF_Cが復号データF_n+1に対応するように並べ替える(S174)。
【0080】
そして、カウンタ変数nが「3」インクリメントされる(S178)。そして、すべての符号化データが処理されるまで、手順S164〜S178が繰り返される(S180のNo)。
【0081】
上述の説明では、符号化データE_n、E_n+1、及びE_n+2のうち最も符号長が長いものが、累積部VSFT_A、VSFT_B、VSFT_Cのうち最も累積符号長が短いものに振り分けられる例が示された。この例は、累積符号部の数が4個以上の場合にも適用できる。あるいは、たとえば、符号長が長い符号化データから順に、累積符号長が短い累積部へ振り分けることも可能である。そうすることで、累積部における累積符号長の差が小さくなるような振分けが可能になる。
【0082】
上述のように、第1の実施形態によれば、N個の符号化データをN個の累積部のいずれかに、N個の累積部における符号化データ数が均等で、かつ、累積符号長の差が小さくなるように振り分けることで、累積部ごとのN個の復号部が処理する符号化データの累積符号長の差が小さくなる。よって、N個の復号部の処理時間の差が小さくなるので、符号長が長い方の復号部の処理時間に全体としての処理時間が制約されるといったことを回避できる。よって、全体としての復号処理が高速化される。
【0083】
また、たとえば、1フレーム分の圧縮画像データを画像の領域単位で分割して復号処理を並列化する場合と比較すると、第1の実施形態は次のような有利な効果を奏する。たとえば、1フレームを前半、後半に分割する場合、展開された画像データに対し、近傍の画素を用いた画像処理(たとえば、平滑化)を行おうとすると、前半の圧縮画像データがすべて展開されないと、後半における前半との境界付近の画素に対する画像処理が開始できない。この点、第1の実施形態では、符号化データごとに復号処理が並列化されるので、近傍の画素がある程度まとまった状態で順次展開される。よって、展開された画像データから順次画像処理を行うことができ、画像処理まで含めた全体としての処理が高速化される。
【0084】
また、領域単位で復号処理を並列化する場合、領域ごとに画像データを格納するためのバッファ用メモリが必要になる。あるいは、単一のメモリに複数の領域の画像データを格納すると、複数の復号部からのアクセスを調停するための処理負荷が増大する。この点、第1の実施形態では、符号化データを一つのバッファ用メモリに格納すればよいので、バッファ用メモリの数、容量、あるいはアクセス調停回路を節約できる。さらに、符号化データを所定のビットずつマルチプレクスしてビット列化することで、単一のアクセスによりバッファ用メモリから符号化データを読み出すことができる。よって、全体としての処理負荷が軽減でき、復号処理がさらに高速化される。
【0085】
第1の実施形態では、並替部50が、振分けデータCSに基づいて、復号データの並べ替えを行う例を示した。次に、振分けデータCSを用いずに、復号データの並べ替えを行う第2の実施形態について説明する。
【0086】
[第2の実施形態]
第2の実施形態は、2個の符号化データの2個の累積部への振り分けに関する。2個の累積部の累積符号長の差が短くなるように振り分けるという点において、第2の実施形態は第1の実施形態と同じである。ただし、第2の実施形態では、振分けデータの代わりに、符号化データのビットパターンが振分けを示す情報を有する。
【0087】
図16は、第2の実施形態における可変長符号化部22の構成例を示す。第1の実施形態と重複する部分には、図4と同じ符号が付される。第2の実施形態では、累積部VSFT_A、VSFT_Bは、2個の符号化データE_n、E_n+1のうち符号長がたとえば短い方の符号化データ(以下、判定用符号化データという)を、その順序に応じた(判定用符号化データがE_nからE_n+1かに応じた)ビットパターンで累積する。符号化データE_nが短い方であり判定用符号化データなら、たとえば先頭ビット「0」を有するビットパターン(以下、ビットパターンBP0という)で累積される。また、符号化データE_n+1が短い方であり判定用符号化データなら、たとえば先頭ビット「1」を有するビットパターン(以下、ビットパターンBP1という)で累積される。このように、2個の符号化データE_n、E_n+1のうち短い方の判定用符号化データを、その短い方がE_nかE_n+1かに応じて先頭ビットが「0」または「1」のビットパターンにしておけば、後の並替えでもとの順序にもどすとき、符号長が短い方の先頭ビットが「0」ならその符号化データがE_n、「1」ならその符号化データがE_n+1と判定でき、振分け情報を符号化データE_n、E_n+1から抽出できる。
【0088】
具体例を示す前に、符号化テーブルのテーブル種別について説明する。図17には、符号化テーブルTBL0_1、TBL0_2内のテーブル種別TBL0の例が示される。テーブル種別TBL0では、符号化対象データの発生頻度が高い方から順に、符号長が短い符号化データが対応づけられる。たとえば、符号化対象データ「0」〜「2」には符号長が2〜3ビットの符号化データ「10」〜「111」が、符号化対象データ「3」〜「14」には、符号長が4〜5ビットの符号化データ「0000」〜「01111」が対応付けられる。また、テーブル種別TBL0は、一の符号化データが他の符号化データと先頭部で一致しないように構成される。符号化データ「10」を例とすると、テーブル種別TBL0には、先頭部に「10」を有する他の符号化データは含まれない。かかるテーブル種別TBL0において、符号長が2〜3ビットの符号化データ「10」〜「111」は、先頭ビットが「1」のビットパターンBP1に対応する。また、符号長が4〜5ビットの符号化データ「0000」〜「01111」は、先頭ビットが「0」のビットパターンBP0に対応する。
【0089】
なお、テーブル種別TBL1は、テーブル種別TBL0の反転を示す。たとえば、テーブル種別TBL1では、符号長が2〜3ビットの符号化データ「01」〜「000」はビットパターン/BP1であり、符号長が4〜5ビットの符号化データ「1111」〜「10000」はビットパターン/BP0である。ただし、実際の符号化テーブルTBL0_1、TBL0_2内の種別は、テーブル種別TBL0である。
【0090】
符号化データE_n、E_n+1は、テーブル種別TBL0の符号化テーブルTBL0_1、またはTBL0_2で符号化される。よって、符号化データE_n、E_n+1は、符号長L_n、L_n+1が4ビット未満の場合はビットパターンBP1内のいずれかである。一方、符号化データE_n、E_n+1は、符号長L_n、L_n+1が4ビット以上の場合はビットパターンBP0内のいずれかである。
【0091】
図18は、符号化データE_n、E_n+1の、符号化時と累積時のビットパターンの具体例を示す。図18(A)、(B)は、符号化データE_nが短い方の判定用符号化データである場合を示す。たとえば、図18(A)では、符号化データE_nは2ビット長の「10」、符号化データE_n+1は3ビット長の「110」である。このとき、短い方の判定用符号化データE_nは、先頭ビット「1」のビットパターンBP1である。よって、判定用符号化データE_nは、ビットパターン/BP1の「01」に反転されて累積される。一方、長い方の符号化データE_n+1は、先頭ビット「1」のビットパターンBP1のまま累積される。図18(B)では、符号化データE_nは4ビット長の「0011」、符号化データE_n+1は5ビット長の「01000」である。このとき、短い方の判定用符号化データE_nは、先頭ビット「0」のビットパターンBP0である。よって、判定用符号化データE_nは、そのままのビットパターンで累積される。長い方の符号化データE_n+1も、先頭ビット「0」のビットパターンBP0のまま累積される。
【0092】
図18(C)、(D)は、符号化データE_n+1が短い方の判定用符号化データである場合を示す。たとえば、図18(C)では、符号化データE_nは3ビット長の「110」、符号化データE_n+1は2ビット長の「10」である。このとき、短い方の判定用符号化データE_n+1は、先頭ビット「1」のビットパターンBP1である。よって、判定用符号化データE_nは、ビットパターンBP1のまま累積される。長い方の符号化データE_nも、先頭ビットが「1」のビットパターンBP1のまま累積される。図18(D)では、符号化データE_nは5ビット長の「01000」、符号化データE_n+1は4ビット長の「0011」である。このとき、短い方の判定用符号化データE_n+1は、先頭ビット「0」のビットパターンBP0である。よって、判定用符号化データE_n+1は、ビットパターン/BP0の「1100」に反転されて累積される。一方、長い方の符号化データE_nは、先頭ビット「0」のビットパターンBP0のまま累積される。
【0093】
図18(A)〜(D)をまとめると、図18(E)、(F)に示すようになる。図18(E)に示すように、符号化データE_nの方が符号長が短く、符号化データE_nが判定用符号化データである場合、符号長L_nが4ビット未満であればそのビットパターンはBP1であり、ビットパターン/BP1に反転され累積される。一方、符号長L_nが4ビット以上であれば、判定用符号化データE_nはビットパターンBP0のまま累積される。また、図18(F)に示すように、符号化データE_n+1の方が符号長が短く、符号化データE_n+1が判定用符号化データである場合、符号長L_n+1が4ビット未満であればそのビットパターンはBP1であり、そのまま累積される。一方、符号長L_nが4ビット以上であれば、判定用符号化データE_nはビットパターンBP0であり、ビットパターン/BP0に反転されて累積される。
【0094】
図16に戻る。振分判定部31は、第1の実施形態と同様にして、セレクタ34a、34bに制御信号を送り、符号化データE_n、E_n+1を累積部VSFT_A、VSFT_Bに振り分ける。また、振分判定部31は、比較部32による符号長L_n、L_n+1の比較結果により、どちらの符号長が長いかを判定する。そして、振分判定部31は、累積部VSFT_A、VSFT_Bに対し、IsEn信号と、IsLng信号を出力する。IsEn信号は、振り分けた符号化データが符号化データのうちどちらか、つまり符号化データE_nか否かを示す。また、IsLng信号は、振り分けた符号化データが長い方か否かを示す。
【0095】
累積部VSFT_A、VSFT_Bは、IsLng信号に基づいて、それぞれに振分けられた符号化データが短い方の判定用符号化データであるか否かを判定する。たとえば、また、累積部VSFT_A、VSFT_Bは、IsEn信号に基づいて、判定用符号化データが符号化データE_nであるか、または符号化データE_n+1であるかを判定する。そして、累積部VSFT_A、VSFT_Bは、図18に示した場合分けに応じて、符号化データE_n、またはE_n+1を、そのままのビットパターン、または反転したビットパターンで累積する。さらに、累積部VSFT_A、VSFT_Bは、判定用符号化データを復号するためのテーブル種別の情報を、必要に応じて生成する。
【0096】
図19は、第2の実施形態における累積部VSFT_Aの詳細な構成例である。第2の実施形態では、累積部VSFT_Aは、図4で示した構成に加え、一点鎖線で囲った、テーブル種別判定部102、ビット反転部104、セレクタ106、テーブル種別ビット埋込制御部108、及び、加算器110を有する。累積部VSFT_Bも、ここに示す構成を有する。よって、次の説明は、累積部VSFT_Bにも適用される。
【0097】
テーブル種別判定部102は、入力されるIsLng信号から、振分けられた符号化データE_A(累積部VSFT_B側では符号化データE_B)が短い符号長で振分け判定に用いられる判定用符号化データであるかを判定する。また、テーブル種別判定部102は、入力されるIsEn信号から、符号化データE_Aが符号化データE_nか、またはE_n+1かを判定する。
【0098】
たとえば、符号化データE_Aが判定用符号化データでない場合、テーブル種別TBL0により符号化された符号化データE_Aは、そのままのビットパターンで累積される。よって、テーブル種別判定部102は、テーブル種別TBL0を示すテーブル種別信号TSを生成する。テーブル種別信号TSは、制御信号としてセレクタ106に送られる。セレクタ106は、テーブル種別TBL0を示すテーブル種別信号TS_Aに応じて、符号化データE_Aを反転せずに記憶部60に格納する。
【0099】
一方、符号化データE_Aが判定用符号化データである場合、テーブル種別判定部102は、判定用符号化データE_Aの先頭ビットHB_Aから、判定用符号化データE_Aのビットパターンを判定する。たとえば、先頭ビットHB_Aが「0」であれば、ビットパターンBP0である。また、先頭ビットHB_Aが「1」であれば、ビットパターンBP1である。
【0100】
第1に、判定用符号化データE_AがビットパターンBP0の符号化データE_nであるとき、または、ビットパターンBP1の符号化データE_n+1であるときは、図18に示されるように、判定用符号化データE_Aは、そのままのビットパターンで累積される。よって、このとき、テーブル種別判定部102は、テーブル種別TBL0を示すテーブル種別信号TSをセレクタ106に入力する。すると、セレクタ106は、符号化データE_Aをそのままのビットパターンで記憶部60に格納する。一方、第2に、判定用符号化データE_Aが、ビットパターンBP1の符号化データE_nであるとき、または、ビットパターンBP0の符号化データE_n+1であるときは、図18に示されるように、判定用符号化データE_Aは、反転したビットパターンで累積される。よって、このとき、テーブル種別判定部102は、テーブル種別TBL1を示すテーブル種別信号TSをセレクタ106に入力する。すると、セレクタ106は、反転部104によりビットが反転された符号化データE_Aを、記憶部60に格納する。
【0101】
ここで、図17を参照する。図18において示したとおり、符号長が長い方の符号化データはテーブル種別TBL0で符号化されたまま反転されずに累積される。一方で、符号長が短い方の判定用符号化データのビットが反転されると、符号化データE_nはビットパターン/BP1に反転され、符号化データE_n+1はビットパターン/BP0に反転されるので、テーブル種別TBL1で符号化されたことと等価になる。よって、詳しくは後述するように、符号化データの復号時には、テーブル種別TBL0、TBL1のどちらを用いるかが判定される。まず、テーブル種別TBL0、TBL1では、4ビット未満の符号化データはそれぞれ一意に特定できる。よって符号化データE_n、E_n+1の符号長L_n、L_n+1が両方とも4ビット未満のときには、判定用符号化データE_n、またはE_n+1の先頭ビットが「0」か「1」かにより、テーブル種別TBL0、TBL1のどちらで符号化されたか判定される。つまり、テーブル種別TBL0、TBL1のどちらで復号すべきか判定される。しかしながら、4ビット以上の符号化データを含めると、一の符号化データが他の符号化データの先頭部と一致して、一意に特定できない場合がある。よって、判定用符号化データE_n、またはE_n+1のビットパターンは、先頭ビットにより判定できない。かかる場合、次のようにして、判定用符号化データを復号するためのテーブル種別を示す情報が付加される。
【0102】
まず、テーブル種別判定部102は、符号化データE_n、E_n+1の符号長L_n、L_n+1のうち長い方が4ビット未満であるかを判定する。たとえば、符号長が長い方の符号化データはテーブル種別TBL0で符号化されているので、先頭ビットが「1」であれば符号長は4ビット未満であると判定される。長い方が4ビット未満である場合、短い方も当然4ビット未満である。よって、この場合、判定用符号化データE_n、またはE_n+1がBP1、/BP1内のどのビットパターンであるかは、先頭ビットにより判定できる。よって、復号のための追加的なテーブル種別情報は付加されない。一方、符号長L_n、L_n+1のうち長い方が4ビット以上の場合、テーブル種別判定部102は、累積部VSFT_B側のテーブル種別ビット埋込制御部108にテーブル種別信号TS_Aを送る。また、累積部VSFT_B側でも、符号化データE_Bの符号長L_Bに基づいて同じ処理が行われる。テーブル種別ビット埋込制御部108は、符号化データE_Aの符号長が長い方である場合、累積部VSFT_B側から送られるテーブル種別信号TS_Bに応じて、テーブル種別ビットTBを符号化データE_Aの後に付加する。テーブル種別ビットTBは、判定用符号化データを復号するためのテーブル種別を示す。テーブル種別ビットTBの値は、たとえば、テーブル種別TBL0を示す「0」、またはTBL1を示す「1」である。
【0103】
また、このとき、加算器110は、テーブル種別ビットTB分の1ビットを符号長L_Aに加算し、テーブル種別ビットTBが付加されることで、符号長L_Aは1ビット分長くなる。
【0104】
以降、図4で説明したようにして、符号化データE_n、またはE_n+1が累積される。このようにして、累積部VSFT_A、VSFT_Bは、判定用符号化データをその順序(つまり、それがE_nかE_n+1か)に応じたビットパターンで累積する。
【0105】
図20〜24は、第2の実施形態における可変長符号化部22の動作手順を説明するフローチャート図である。図20がメインルーチンを示し、図21〜24は、それぞれサブルーチンを示す。図20〜24は、符号長が短い方の符号化データを判定用符号化データとしたときの手順例である。図20のメインルーチンでは、まず、符号化データE_n、E_n+1のカウンタ変数nの値が「0」に初期設定される。また、累積符号長Sum_A、Sum_Bの値が「0」にそれぞれ初期設定される(S202)。次いで、セレクタ34a、34bは、符号化テーブルTBL0_1、TBL0_2から、符号化データE_n、E_n+1を取得する(S204)。次いで、セレクタ34a、34b、及び比較部32は、符号化テーブルTBL0_1、TBL0_2から符号化対象データE_n、E_n+1の符号長L_n、L_n+1を取得する(S206)。
【0106】
次いで、振分判定部31は、累積符号長Sum_Aが累積符号長Sum_Bより小さいかを判定する(S208)。累積符号長Sum_Aが累積符号長Sum_Bより小さいとき(S208のYes)、振分判定部31は、符号長L_nが符号長L_n+1より大きいかを判定する(S210)。一方、累積符号長Sum_Aが累積符号長Sum_B以上のとき(S208のNo)、振分判定部31は、符号長L_nが符号長L_n+1より大きいかを判定する(S212)。
【0107】
累積符号長Sum_Aが累積符号長Sum_Bより短く、かつ符号長L_nが符号長L_n+1より長いとき、手順S210の判定結果はYesである。このとき、サブルーチンSR1が実行される。また、累積符号長Sum_Aが累積符号長Sum_Bより短く、かつ符号長L_nが符号長L_n+1以下のとき、手順S210の判定結果はNoである。このとき、サブルーチンSR2が実行される。また、累積符号長Sum_Aが累積符号長Sum_B以下であり、かつ符号長L_nが符号長L_n+1より長いとき、手順S212の判定結果はYesである。このとき、サブルーチンSR3が実行される。そして、累積符号長Sum_Aが累積符号長Sum_B以下であり、かつ符号長L_nが符号長L_n+1以下のとき、手順S212の判定結果はNoである。このとき、サブルーチンSR4が実行される。サブルーチンSR1〜SR4は、累積部VSFT_A、VSFT_Bで、符号化データE_n、E_n+1が累積されるときの手順である。サブルーチンSR1〜SR4の手順は、後に、図21〜24において示される。
【0108】
サブルーチンSR1〜SR4のいずれかが終了すると、カウンタ変数nが「2」インクリメントされる(S214)。そして、処理単位の領域におけるすべての符号化対象データD_n、D_n+1の符号化と振分けが完了するまで、手順S204〜S214が繰り返される(S216のNo)。
【0109】
図21は、サブルーチンSR1の手順を示す。サブルーチンSR1は、上述したように、累積符号長Sum_Aが累積符号長Sum_Bより短く、かつ符号長L_nが符号長L_n+1より長い場合に実行される。つまり、サブルーチンSR1は、振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)が行われ、符号化データE_n+1が判定用符号化データである場合に実行される。
【0110】
短い方の符号長Ln+1が閾値Th(たとえば、4ビット)以上のとき(S220のYes)、累積部VSFT_B側では、判定用符号化データE_n+1はビットが反転して累積される(S222)。このことは、判定用符号化データE_n+1をテーブル種別TBL1で符号化したことと等価である。そして、この場合、長い方の符号長L_nは当然に閾値Th以上である。このとき、判定用符号化データE_n+1はテーブル種別TBL1で符号化されているので、テーブル種別ビットTBの値が「1」に設定される(S228)。
【0111】
一方、短い方の符号長Ln+1が閾値Th未満のとき(S220のNo)、累積部VSFT_B側では、判定用符号化データE_n+1は、そのままのビットパターンで累積される。このとき、判定用符号化データE_n+1はテーブル種別TBL0で符号化された状態である。そして、長い方の符号長L_nが閾値Th以上のとき(S226のYes)、判定用符号化データE_n+1はテーブル種別TBL0で符号化されているので、累積部VSFT_A側では、テーブル種別ビットTBの値が「0」に設定される(S230)。一方、長い方の符号長L_nが閾値Th未満のとき(S226のNo)、サブルーチンSR1が終了する。この場合、符号長Ln、L_n+1は両方とも閾値Th未満である。よって、判定用符号化データの先頭ビットにより復号処理のためのテーブル種別が判定できる。よって、テーブルビットTBは付加されない。
【0112】
手順S228、またはS230に次いで、テーブル種別ビット埋込制御部108は、符号長が長い方の符号化データE_nに、テーブル種別ビットTBを付加する(S232)。そして、累積部VSFT_A側では、累積符号長Sum_Aにテーブル種別ビットTBのビット長「1」が加算される(S234)。そして、累積符号長Sum_Aに符号長L_nが加算される。また、累積部VSFT_B側では、累積符号長Sum_Bに符号長L_n+1が加算される(S236)。そして、サブルーチンSR1が終了すると、図20の手順S214に移行する。
【0113】
図22は、サブルーチンSR2の手順を示す。サブルーチンSR2は、累積符号長Sum_Aが累積符号長Sum_Bより小さく、かつ符号長L_nが符号長L_n+1以下である場合に実行される。つまり、サブルーチンSR1は、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)が行われ、符号化データE_nが判定用符号化データである場合に実行される。
【0114】
短い方の符号長Lnが閾値Th未満のとき(S240のYes)、累積部VSFT_B側では、判定用符号化データE_nはビットが反転して累積される(S242)。このことは、判定用符号化データE_nをテーブル種別TBL1で符号化したことと等価である。そして、長い方の符号長L_n+1は当然に閾値Th以上であるとき(S244のYes)、テーブル種別ビットTBの値が「1」に設定される(S248)。一方、長い方の符号長L_n+1が閾値Th未満のとき(S244のNo)、サブルーチンSR2が終了する。このとき、短い方の符号長L_nも当然に閾値Th未満なので、テーブルビットTBは付加されない。
【0115】
一方、短い方の符号長Lnが閾値Th以上のとき(S240のNo)、累積部VSFT_B側では、判定用符号化データE_nは、そのままのビットパターンで累積される。このとき、判定用符号化データE_nはテーブル種別TBL0で符号化された状態である。よって、テーブル種別ビットTBの値が「0」に設定される(S250)。そして、この場合、長い方の符号長L_n+1は当然に閾値Th以上である。
【0116】
手順S248、またはS250に次いで、累積部VSFT_A側では、テーブル種別ビット埋込制御部108が、符号長が長い方の符号化データE_n+1に、テーブル種別ビットTBを付加する(S252)。そして、累積符号長Sum_Aにテーブル種別ビットTBのビット長「1」が加算される(S254)。そして、累積符号長Sum_Aに符号長L_n+1が加算される。また、累積部VSFT_B側では、累積符号長Sum_Bに符号長L_nが加算される(S256)。そして、サブルーチンSR2が終了すると、図20の手順S214に移行する。
【0117】
図23は、サブルーチンSR3の手順を示す。サブルーチンSR3は、累積符号長Sum_Bが累積符号長Sum_A以下であり、かつ符号長L_nが符号長L_n+1より長い場合に実行される。つまり、サブルーチンSR3は、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)が行われ、符号化データE_n+1が判定用符号化データである場合に実行される。
【0118】
短い方の符号長Ln+1が閾値Th以上のとき(S260のYes)、累積部VSFT_A側では、判定用符号化データE_n+1はビットが反転して累積される(S262)。このことは、判定用符号化データE_nをテーブル種別TBL1で符号化したことと等価である。そして、この場合、長い方の符号長L_nは当然に閾値Th以上である。このとき、判定用符号化データE_n+1はテーブル種別TBL1で符号化されているので、テーブル種別ビットTBの値が「1」に設定される(S268)。
【0119】
一方、短い方の符号長Ln+1が閾値Th未満のとき(S260のNo)、累積部VSFT_A側では、判定用符号化データE_n+1は、そのままのビットパターンで累積される。このとき、判定用符号化データE_n+1はテーブル種別TBL0で符号化された状態である。そして、長い方の符号長L_nが閾値Th以上のとき(S266のYes)、判定用符号化データE_n+1はテーブル種別TBL0で符号化されているので、テーブル種別ビットTBの値が「0」に設定される(S270)。一方、長い方の符号長L_nが閾値Th未満のとき(S266のNo)、サブルーチンSR3が終了する。このとき、短い方の符号長L_n+1も当然に閾値Th未満なので、テーブルビットTBは付加されない。
【0120】
手順S268、またはS270に次いで、累積部VSFT_B側では、テーブル種別ビット埋込制御部108が、符号長が長い方の符号化データE_nに、テーブル種別ビットTBを付加する(S272)。そして、累積符号長Sum_Bにテーブル種別ビットTBのビット長「1」が加算される(S274)。そして、累積部VSFT_A側では、累積符号長Sum_Aに符号長L_n+1が加算される。また、累積部VSFT_B側では、累積符号長Sum_Bに符号長L_nが加算される(S276)。そして、サブルーチンSR3が終了すると、図20の手順S214に移行する。
【0121】
図24は、サブルーチンSR4の手順を示す。サブルーチンSR4は、累積符号長Sum_Bが累積符号長Sum_A以下であり、かつ符号長L_nが符号長L_n+1以下である場合に実行される。つまり、サブルーチンSR4は、振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)が行われ、符号化データE_nが判定用符号化データである場合に実行される。
【0122】
短い方の符号長Lnが閾値Th未満のとき(S280のYes)、累積部VSFT_A側では、判定用符号化データE_nはビットが反転して累積される(S282)。このことは、判定用符号化データE_nをテーブル種別TBL1で符号化したことと等価である。そして、長い方の符号長L_n+1は当然に閾値Th以上であるとき(S284のYes)、テーブル種別ビットTBの値が「1」に設定される(S288)。一方、長い方の符号長L_n+1が閾値Th未満のとき(S284のNo)、サブルーチンSR4が終了する。このとき、短い方の符号長L_nも当然に閾値未満なので、テーブルビットTBは付加されない。
【0123】
一方、短い方の符号長Lnが閾値Th以上のとき(S280のNo)、累積部VSFT_A側では、判定用符号化データE_nは、そのままのビットパターンで累積される。このとき、判定用符号化データE_nはテーブル種別TBL0で符号化された状態である。よって、テーブル種別ビットTBの値が「0」に設定される(S290)。そして、この場合、長い方の符号長L_n+1は当然に閾値Th以上である。
【0124】
手順S288、またはS290に次いで、累積部VSFT_B側では、テーブル種別ビット埋込制御部108が、符号長が長い方の符号化データE_n+1に、テーブル種別ビットTBを付加する(S292)。そして、累積符号長Sum_Bにテーブル種別ビットTBのビット長「1」が加算される(S294)。そして、累積符号長Sum_Aに符号長L_nが加算され、また、累積符号長Sum_Bに符号長L_n+1が加算される(S296)。そして、サブルーチンSR4が終了すると、図20の手順S214に移行する。
【0125】
このような手順で、累積部VSFT_A、VSFT_Bでは、図18に示したように、判定用符号化データがその順序(それがE_nかE_n+1か)に応じたビットパターンで累積される。
【0126】
図25は、第2の実施形態における可変長復号部24の構成例を示す。図25では、可変長復号部24は、図7で示した構成に加え、一点鎖線で囲まれた、比較部54と、選択判定部56を有する。比較部54には、復号部VLD_A、VLD_Bから、復号済みの符号化データの累積符号長Sum_A´、Sum_B´が入力される。比較部54は、復号済みの累積符号長Sum_A´、Sum_B´の大きさを比較して、比較結果を選択判定部56に入力する。選択判定部56には、復号部VLD_A、VLD_Bから、判定用符号化データの先頭ビットHB_A、HB_Bと、テーブル種別ビットTBが入力される。
【0127】
選択判定部56は、復号済みの累積符号長Sum_A´、Sum_B´から、復号部VLD_A、VLD_Bのうち、判定用符号化データを含む方を判定する。復号時の復号済みの累積符号長Sum_A´、Sum_B´は、振分け時の累積符号長Sum_A、Sum_Bに対応する。符号化後の振分けでは、この累積符号長Sum_A、Sum_Bに基づき、符号長が短い方が累積符号長が長い方に振り分けられた。よって、復号部VLD_A、VLD_Bのうち、復号済みの累積符号長が長い方に、符号化データE_n、E_n+1のうち符号長が短い方が含まれる。一方、復号済みの累積符号長が短い方に、符号化データE_n、E_n+1のうち符号長が長い方が含まれる。
【0128】
また、選択判定部56は、先頭ビットHB_A、またはHB_Bから、短い方の判定用符号化データのビットパターンを判定する。たとえば、先頭ビットが「0」であれば、ビットパターンBP0であり、先頭ビットが「1」であれば、ビットパターンBP1である。すなわち、判定用符号化データの先頭ビットが「0」なら符号化データE_nであることが判明し、「1」なら符号化データE_n+1であることが判明する。よって、振分け情報を抽出することができる。選択判定部56は、判定用符号化データのビットパターンから、復号データF_A、F_Bを並べ替えるための振分けデータCSを生成する。この振分けデータCSは、並替部50に送られる。
【0129】
また、選択判定部56は、テーブル種別ビットTBの有無、あるいは先頭ビットHB_A、またはHB_Bにより、判定用符号化データを復号するためのテーブル種別を判定する。たとえば、テーブル種別ビットTBがある場合、選択判定部56は、テーブル種別ビットの値に応じてテーブル種別TBL0、またはTBL1を判定する。一方、テーブル種別ビットTBがない場合、つまり、符号化データE_n、E_n+1の符号長が両方とも閾値(4ビット)未満の場合、選択判定部56は、判定用符号化データの先頭ビットHB_A、またはHB_Bから、判定用符号化データを復号するためのテーブル種別を判定する。たとえば、先頭ビットが「1」の場合、テーブル種別TBL0と判定され、先頭ビットが「0」の場合、テーブル種別TBL1と判定される。そして、選択判定部56は、判定したテーブル種別を示すテーブル選択信号TS1を、復号部VLD_A、VLD_Bに送る。
【0130】
並替部50は、たとえば、振分けデータCSが「0」のときには、復号データF_A、F_BをそれぞれF_n、F_n+1として並べ替える。あるいは、並替部50は、振分けデータCSが「1」のときには、復号データF_A、F_BをそれぞれF_n+1、F_nとして並べ替える。
【0131】
図26は、第2の実施形態における復号部VLD_Aの詳細な構成例である。第2の実施形態では、累積部VLD_Aは、図8で示した構成に加え、一点鎖線で囲った、反転部120、セレクタ122、加算器124、及び記憶部126を有する。なお、復号部VLD_Bも、ここに示す構成を有する。よって、次の説明は、復号部VLD_Bにも適用される。
【0132】
図8で説明したように、記憶部82には、累積符号化データDt_Aから取り出される符号化データが格納される。かかる符号化データE_A(復号部VLD_B側では符号化データE_B)は、反転部120とセレクタ122に送られる。反転部120は、符号化データE_Aを反転してセレクタ122に送る。セレクタ122は、記憶部82から送られる符号化データE_Aと、反転された符号化データE_Aのいずれかを、テーブル選択信号TS1に応じて選択し、復号テーブルTBL0_Aに入力する。テーブルTBL0_Aは、符号化テーブルTBL0_1、TBL0_2内の、テーブル種別TBL0に対応する復号テーブルである。テーブル選択信号TS1がテーブル種別TBL0を示す「0」の場合、セレクタ122は記憶部82から送られる符号化データE_Aを出力する。あるいは、テーブル選択信号TS1がテーブル種別TBL1を示す「1」の場合、セレクタ122は符号化データE_Aを反転したビットデータを出力する。この場合、符号化データE_Aをビット反転したデータが復号テーブルTBL0_Aで復号されると、符号化データE_Aがテーブル種別TBL1で復号されたことになる。このようにして、復号テーブルのテーブル種別TBL0、またはTBL1が選択的に切り替えられる。
【0133】
復号テーブルTBL0_Aは、累積符号化データDt_Aから取り出される符号化データE_Aまたは符号化データE_Aをビット反転したデータを復号し、復号データF_Aを出力する。復号データF_Aは、記憶部84に格納される。また、復号テーブルTBL0_Aは、テーブル種別ビットTBが付加いるた判断されたとき、符号長が長い方の符号化データを復号する場合に、後に付加されたテーブル種別ビットTBを抽出して出力する。テーブル種別ビットTBは、選択判定部56に送られる。
【0134】
このようにして、復号部VLD_A、VLD_Bは、符号化データE_n、E_n+1のビットパターンに応じたテーブル種別により、復号処理を行うことができる。
【0135】
図27〜29は、第2の実施形態における可変長復号24の動作手順を説明するフローチャート図である。図27はメインルーチンを示し、図28、29はそれぞれサブルーチンを示す。図27のメインルーチンにおいて、まず、符号化データE_n、E_n+1のカウンタ変数nの値が「0」に初期設定される(S302)。次いで、復号済みの累積符号長Sum_A´が復号済みの累積符号長Sum_B´より短いとき、サブルーチンSR11が実行される。一方、復号済みの累積符号長Sum_A´が復号済みの累積符号長Sum_B´以上であるとき、サブルーチンSR12が実行される。サブルーチンSR11、SR12では、振分けデータCSが決定される。サブルーチンSR11、SR12は、それぞれ図28、29に示される。
【0136】
サブルーチンSR11、SR12が終了し、振分けデータCSが「0」のとき(S306のYes)、復号データF_Aが復号データF_n、復号データF_Bが復号データF_n+1に対応するように並べ替えられる(S308)。一方、振分けデータCSが「1」のとき(S306のNo)、復号データF_Aが符号化データF_n+1、復号データF_Bが復号データF_nに対応するように並べ替えられる(S310)。そして、カウンタ変数nが「2」インクリメントされる(S312)。そして、処理単位の領域におけるすべての符号化データが復号されるまで、手順S304〜S312が繰り返される(S314のNo)。
【0137】
図28は、サブルーチンSR11の手順を示す。サブルーチンSR11は、復号済みの累積符号長Sum_A´が復号済みの累積符号長Sum_B´未満であるとき実行される。このとき、復号部VLD_A側で復号される符号化データE_Aの方が、復号部VLD_B側で復号される符号化データE_Bより符号長が長い。一方、符号長が短い方の符号化データE_Bが判定用符号化データである。また、符号化データE_Aは、テーブル種別TBL0で符号化されたものである。そして、その先頭ビットHB_Aにより、符号長が閾値(4ビット)以上か、閾値未満かが判定される。
【0138】
符号化データE_Aの先頭ビットHB_Aが「1」のとき、符号化データE_Aの符号長は閾値未満である。よって、符号化データE_Bの符号長も閾値未満である。このとき、手順S320の判定結果はYesになる。すると、符号化データE_Aは、テーブル種別TBL0で復号される(S322)。次いで、復号済みの符号長SUM_A´に、符号化データE_Aの符号長L_Aが加算される(S324)。
【0139】
そして、符号長が短い方の、つまり判定用符号化データE_Bの先頭ビットHB_Bに基づいて、振分けが判定される。また、符号化データE_Bの符号長も閾値未満であるので、先頭ビットH_Bにより、復号するためのテーブル種別が判定される。判定用符号化データE_Bの先頭ビットHB_Bが「0」のとき(S326のYes)、判定用符号化データE_Bは符号化データE_nである。このことは、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)が実行されたことを示す。よって、振分けデータCSが「1」に設定される(S328)。また、このことは、判定用符号化データE_Bがテーブル種別TBL1で符号化されたことを示す。よって、値「1」のテーブル種別ビットTBが生成される(S330)。なお、ここでは、符号化データE_A、E_Bの符号長がいずれも閾値未満であるので、符号化時にはテーブル種別ビットTBは付加されていない。よって、後の処理のために、テーブル種別ビットTBが生成される。
【0140】
一方、判定用符号化データE_Bの先頭ビットHB_Bが「1」のとき(S326のNo)、判定用符号化データE_Bは符号化データE_n+1である。このことは、振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)が実行されたことを示す。よって、振分けデータCSが「0」に設定される(S332)。また、このことは、判定用符号化データE_Bがテーブル種別TBL0で符号化されたことを示す。よって、値「0」のテーブル種別ビットTBが生成される(S334)。
【0141】
また、手順S320で、符号化データE_Aの先頭ビットHB_Aが「0」のとき、符号化データE_Aの符号長は閾値以上である。このとき、手順S320の判定結果はNoになる。すると、符号化データE_Aがテーブル種別TBL0で復号される(S336)。そして、復号済みの符号長SUM_A´に、符号化データE_Aの符号長L_Aが加算される(S338)。そして、このとき、符号化時にテーブル種別ビットTBが付加されているので、符号化データE_Aからテーブル種別ビットTBが取得され(S340)、復号済みの符号長SUM_A´に1ビット分加算される(S342)。
【0142】
次いで、判定用符号化データE_Bの先頭ビットHB_Bが「0」のとき(S344のYes)、振分けビットCSが「1」に設定される(S346)。このことは、振分けA1が実行されたことに対応する。一方、判定用符号化データE_Bの先頭ビットHB_Bが「1」のとき(S344のNo)、振分けビットCSが「0」に設定される(S348)。このことは、振分けA0が実行されたことに対応する。
【0143】
次いで、手順S350で、テーブル種別ビットTBの値が判定される。テーブル種別ビットTBが「0」のとき(S350のYes)、判定用符号化データE_Bは、テーブル種別TBL0で復号される(S352)。あるいは、テーブル種別ビットTBが「1」のとき(S350のNo)、判定用符号化データE_Bは、テーブル種別TBL1で復号される(S354)。そして、復号部VLD_B側の復号済み累積符号長Sum_B´に、符号化データE_Bの符号長L_Bが加算される(S356)。
【0144】
このようなサブルーチンSR11により、判定用符号化データE_Bの先頭ビットに基づいて、振分けデータCSが設定される。それとともに、判定用符号化データE_Bは、そのビットパターンに応じたテーブル種別で復号される。そして、図27の手順S306に移行する。
【0145】
図29は、サブルーチンSR12の手順を示す。サブルーチンSR12は、復号済みの累積符号長Sum_A´が復号済みの累積符号長Sum_B´以上であるとき実行される。このとき、符号化データE_Bの方が符号化データE_Aより符号長が長い。よって、符号化データE_Bは、テーブル種別TBL0で符号化されたものである。そして、その先頭ビットHB_Bより、符号長が閾値以上か、閾値未満かが判定される。また、符号化データE_Aが判定用符号化データである。
【0146】
符号化データE_Bの先頭ビットHB_Bが「1」のとき、符号化データE_Bの符号長は閾値未満である。よって、符号化データE_Aの符号長も閾値未満である。このとき、手順S360の判定結果はYesになる。すると、符号化データE_Bは、テーブル種別TBL0で復号される(S362)。次いで、復号済みの符号長SUM_B´に、符号化データE_Bの符号長L_Bが加算される(S364)。
【0147】
そして、符号長が短い方の、つまり判定用符号化データE_Aの先頭ビットHB_Aに基づいて、振分けが判定される。また、符号化データE_Aの符号長も閾値未満であるので、先頭ビットH_Aにより、復号するためのテーブル種別が判定される。判定用符号化データE_Aの先頭ビットHB_Aが「0」のとき(S366のYes)、判定用符号化データE_Aは符号化データE_nである。このことは、振分けA0(符号化データE_n→累積部VSFT_A、符号化データE_n+1→累積部VSFT_B)が実行されたことを示す。よって、振分けデータCSが「0」に設定される(S368)。また、このことは、判定用符号化データE_Aがテーブル種別TBL1で符号化されたことを示す。よって、値「1」のテーブル種別ビットTBが生成される(S370)。
【0148】
一方、判定用符号化データE_Aの先頭ビットHB_Aが「1」のとき(S366のNo)、判定用符号化データE_Aは符号化データE_n+1である。このことは、振分けA1(符号化データE_n→累積部VSFT_B、符号化データE_n+1→累積部VSFT_A)が実行されたことを示す。よって、振分けデータCSが「1」に設定される(S372)。また、このことは、判定用符号化データE_Aがテーブル種別TBL0で符号化されたことを示す。よって、値「0」のテーブル種別ビットTBが生成される(S374)。
【0149】
また、手順S360で、符号化データE_Bの先頭ビットHB_Bが「0」のとき、符号化データE_Bの符号長は閾値以上である。このとき、手順S360の判定結果はNoになる。すると、符号化データE_Bがテーブル種別TBL0で復号される(S376)。そして、復号済みの符号長SUM_B´に、符号化データE_Bの符号長L_Bが加算される(S378)。そして、このとき、符号化時にテーブル種別ビットTBが付加されているので、符号化データE_Bからテーブル種別ビットTBが取得され(S380)、復号済みの符号長SUM_B´に1ビット分加算される(S382)。
【0150】
次いで、判定用符号化データE_Aの先頭ビットHB_Bが「0」のとき(S384のYes)、振分けビットCSが「0」に設定される(S386)。このことは、振分けA0が実行されたことに対応する。一方、判定用符号化データE_Aの先頭ビットHB_Bが「1」のとき(S384のNo)、振分けビットCSが「1」に設定される(S388)。このことは、振分けA1が実行されたことに対応する。
【0151】
次いで、手順S390で、テーブル種別ビットTBの値が判定される。テーブル種別ビットTBが「0」のとき(S390のYes)、判定用符号化データE_Aは、テーブル種別TBL0で復号される(S392)。あるいは、テーブル種別ビットTBが「1」のとき(S390のNo)、判定用符号化データE_Aは、テーブル種別TBL1で復号される(S394)。そして、復号部VLD_A側の復号済み累積符号長Sum_A´に、符号化データE_Aの符号長L_Aが加算される(S396)。
【0152】
このようなサブルーチンSR12により、判定用符号化データE_Aの先頭ビットに基づいて、振分けデータCSが設定される。それとともに、判定用符号化データE_Aは、そのビットパターンに応じたテーブル種別で復号される。そして、図27の手順S306に移行する。
【0153】
このような手順によれば、符号化データのビットパターンに基づいて並べ替えを行うことができる。それとともに、符号化データのビットパターンに応じたテーブル種別で復号を行うことができる。
【0154】
上述の説明では、符号長が短い方の符号化データを判定用符号化データとする例を示した。しかしながら、符号長が長い方の符号化データを判定用符号化データとする場合にも、第2の実施形態は適用される。
【0155】
上述したように、第2の実施形態によれば、振分けデータの代わりに符号化データのビットパターンが振分けを示す情報を有するため、符号化データに振分けデータを付加する必要がない。一方、テーブル種別ビットは特定のパターンでのみ付加すれば良いので、実施例1と比べて符号長をより短くすることができる。よって、圧縮効率がさらに向上する。
【0156】
なお、上述の説明では、可変長符号化部22と可変長復号部24が、単一のデータ処理装置に設けられる場合を示した。しかしながら、可変長復号部と可変長復号部は、それぞれ別個のデータ処理装置に設けることが可能である。たとえば、動画データを圧縮して送信する放送局側に可変長復号部を設け、受信局側に可変長復号部を設けてもよい。
【0157】
以上の実施の形態をまとめると、次の付記のとおりである。
【0158】
(付記1)
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、
前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部を有し、
前記振分部は、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成することを特徴としたデータ処理装置。
【0159】
(付記2)
付記1において、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結してビット列を生成する生成部を有するデータ処理装置。
【0160】
(付記3)
連続する2個の可変長符号化された符号化データをそれぞれ累積する2個の累積部と、
前記符号化データを前記2個の累積部のいずれかに、当該2個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部を有し、
前記累積部は、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積することを特徴としたデータ処理装置。
【0161】
(付記4)
付記3において、
前記2個の累積部に累積された符号化データを所定のビット数ずつ連結してビット列を生成する生成部を有するデータ処理装置。
【0162】
(付記5)
付記1乃至2のいずれかのデータ処理装置が生成した符号化データを処理するデータ処理装置であって、
前記符号化データをそれぞれ並列して復号するN個の復号部と、
前記N個の復号部によりそれぞれ復号されたN個の復号データを前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータに従ってもとの順序に並べ替える並替部とを有するデータ処理装置。
【0163】
(付記6)
付記3乃至4のいずれかのデータ処理装置が生成した符号化データを処理するデータ処理装置であって、
前記符号化データをそれぞれ並列して復号する2個の復号部と、
前記2個の復号部によりそれぞれ復号された2個の復号データをもとの順序に並べ替える並替部とを有し、
前記並替部は、前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データをもとの順序に並べ替えるデータ処理装置。
【0164】
(付記7)
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結し、さらに前記振分けデータを連結してビット列を生成する生成部と、
前記ビット列に含まれる前記符号化データをそれぞれ並列して復号するN個の復号部と、
前記N個の復号部によりそれぞれ復号されたN個の復号データを前記振分部による振分けに従ってもとの順序に並べ替える並替部とを有するデータ処理装置。
【0165】
(付記8)
付記7において、
前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部を含むデータ処理装置。
【0166】
(付記9)
付記7または8において、
前記振分部は、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成し、
前記並替部は、前記N個の復号データを前記振分けデータに基づいてもとの順序に並べ替えるデータ処理装置。
【0167】
(付記10)
付記7または8において、
N=2であり、
前記累積部は、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積し、
前記並替部は、前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データをもとの順序に並べ替えるデータ処理装置。
【0168】
(付記11)
付記7乃至10のいずれかにおいて、
前記ビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データを復元する復元部とを有するデータ処理装置。
【0169】
(付記12)
付記9において、
前記ビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データと、前記並替部が前記N個の復号データを並べ替えるための前記振分けデータとを復元する復元部とを有するデータ処理装置。
【0170】
(付記13)
付記11または12において、
前記生成部により生成される前記ビット列は外部に出力された後、当該外部から取り込まれて前記復元部に入力されるデータ処理装置。
【0171】
(付記14)
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように前記符号化データが振り分けられ、前記N個の累積部に累積された前記符号化データをそれぞれ並列して復号するN個の復号部と、
前記N個の復号部によりそれぞれ復号されたN個の復号データを前記振分部による振分けに従ってもとの順序に並べ替える並替部とを有するデータ処理装置。
【0172】
(付記15)
付記14において、
前記並替部は、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータに基づいて、前記N個の復号データをもとの順序に並べ替えるデータ処理装置。
【0173】
(付記16)
付記14において、
N=2であり、
前記累積部では、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データが、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積され、
前記並替部は、前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データをもとの順序に並べ替えるデータ処理装置。
【0174】
(付記17)
付記14乃至16のいずれかにおいて、
前記N個の累積部に累積された符号化データが所定のビット数ずつ連結されたビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データを復元する復元部を有するデータ処理装置。
【0175】
(付記18)
付記15において、
前記N個の累積部に累積された符号化データが所定のビット数ずつ連結され、さらに前記振分けデータが連結されたビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データと、前記並替部が前記N個の復号データを並べ替えるための前記振分けデータとを復元する復元部を有するデータ処理装置。
【0176】
(付記19)
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、
前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部とを有し、
前記N個の累積部に累積された前記符号化データが、N個の復号部によりそれぞれ並列して復号され、前記N個の復号部によりそれぞれ復号されたN個の復号データが、前記振分部による振分けに従ってもとの順序に並べ替えられるデータ処理装置。
【0177】
(付記20)
付記19において、
前記振分部は、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成し、
前記N個の復号データが前記振分けデータに基づいてもとの順序に並べ替えられるデータ処理装置。
【0178】
(付記21)
付記19において、
N=2であり、
前記累積部は、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積し、
前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データがもとの順序に並べ替えられるデータ処理装置。
【0179】
(付記22)
付記19乃至21のいずれかにおいて、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結してビット列を生成する生成部をさらに有し、
前記ビット列が前記所定のビット数ずつ分割され、前記N個の復号部が復号するためのN個の前記符号化データが復元されるデータ処理装置。
【0180】
(付記23)
付記20において、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結し、さらに前記振分けデータを連結してビット列を生成する生成部をさらに有し、
前記ビット列が前記所定のビット数ずつ分割され、前記N個の復号部が復号するためのN個の前記符号化データと、前記並替部が前記N個の復号データを並べ替えるための前記振分けデータとが復元されるデータ処理装置。
【0181】
(付記24)
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部のいずれかに、前記符号化データを、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるような振分けで振り分け、
前記N個の累積部に累積された前記符号化データをそれぞれ並列して復号し、
前記復号されたN個の復号データを前記振分けに従ってもとの順序に並べ替える、
データ処理方法。
【0182】
(付記25)
付記24において、
前記振分けでは、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成し、
前記N個の復号データを前記振分けデータに基づいてもとの順序に並べ替える、
データ処理方法。
【0183】
(付記26)
付記24において、
N=2であり、
前記累積部に、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積し、
前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データをもとの順序に並べ替える、
データ処理方法。
【0184】
(付記27)
付記24乃至26のいずれかにおいて、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結してビット列を生成し、
前記ビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データを復元する、
データ処理方法。
【0185】
(付記28)
付記25において、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結し、さらに前記振分けデータを連結してビット列を生成し、
前記ビット列を前記所定のビット数ずつ分割して、N個の復号データに復号するためのN個の前記符号化データと、前記N個の復号データを並べ替えるための前記振分けデータとを復元する、
データ処理方法。
【符号の説明】
【0186】
14:画像圧縮展開部、 22:可変長符号化部、 24:可変長復号部、 30:振分部、40:ビット列生成部、 50:並替部、 46:符号化データ復元部、
E_n:符号化データ、 F_n:復号データ、 VSFT_A、VSFT_B:累積部、
VLD_A、VLD_B:復号部
【特許請求の範囲】
【請求項1】
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、
前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部を有し、
前記振分部は、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成することを特徴としたデータ処理装置。
【請求項2】
連続する2個の可変長符号化された符号化データをそれぞれ累積する2個の累積部と、
前記符号化データを前記2個の累積部のいずれかに、当該2個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部を有し、
前記累積部は、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積することを特徴としたデータ処理装置。
【請求項3】
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結し、さらに前記振分けデータを連結してビット列を生成する生成部と、
前記ビット列に含まれる前記符号化データをそれぞれ並列して復号するN個の復号部と、
前記N個の復号部によりそれぞれ復号されたN個の復号データを前記振分部による振分けに従ってもとの順序に並べ替える並替部とを有するデータ処理装置。
【請求項4】
請求項3において、
前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部を含むデータ処理装置。
【請求項5】
請求項3または4において、
前記振分部は、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成し、
前記並替部は、前記N個の復号データを前記振分けデータに基づいてもとの順序に並べ替えるデータ処理装置。
【請求項6】
請求項3または4において、
N=2であり、
前記累積部は、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積し、
前記並替部は、前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データをもとの順序に並べ替えるデータ処理装置。
【請求項7】
請求項3乃至6のいずれかにおいて、
前記ビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データを復元する復元部とを有するデータ処理装置。
【請求項8】
請求項5において、
前記ビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データと、前記並替部が前記N個の復号データを並べ替えるための前記振分けデータとを復元する復元部とを有するデータ処理装置。
【請求項9】
請求項7または8において、
前記生成部により生成される前記ビット列は外部に出力された後、当該外部から取り込まれて前記復元部に入力されるデータ処理装置。
【請求項10】
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように前記符号化データが振り分けられ、前記N個の累積部に累積された前記符号化データをそれぞれ並列して復号するN個の復号部と、
前記N個の復号部によりそれぞれ復号されたN個の復号データを前記振分部による振分けに従ってもとの順序に並べ替える並替部とを有するデータ処理装置。
【請求項11】
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、
前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部とを有し、
前記N個の累積部に累積された前記符号化データが、N個の復号部によりそれぞれ並列して復号され、前記N個の復号部によりそれぞれ復号されたN個の復号データが、前記振分部による振分けに従ってもとの順序に並べ替えられるデータ処理装置。
【請求項12】
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部のいずれかに、前記符号化データを、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるような振分けで振り分け、
前記N個の累積部に累積された前記符号化データをそれぞれ並列して復号し、
前記復号されたN個の復号データを前記振分けに従ってもとの順序に並べ替える、
データ処理方法。
【請求項13】
請求項12において、
前記振分けでは、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成し、
前記N個の復号データを前記振分けデータに基づいてもとの順序に並べ替える、
データ処理方法。
【請求項14】
請求項12において、
N=2であり、
前記累積部に、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積し、
前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データをもとの順序に並べ替える、
データ処理方法。
【請求項1】
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、
前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部を有し、
前記振分部は、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成することを特徴としたデータ処理装置。
【請求項2】
連続する2個の可変長符号化された符号化データをそれぞれ累積する2個の累積部と、
前記符号化データを前記2個の累積部のいずれかに、当該2個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部を有し、
前記累積部は、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積することを特徴としたデータ処理装置。
【請求項3】
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、
前記N個の累積部に累積された符号化データを所定のビット数ずつ連結し、さらに前記振分けデータを連結してビット列を生成する生成部と、
前記ビット列に含まれる前記符号化データをそれぞれ並列して復号するN個の復号部と、
前記N個の復号部によりそれぞれ復号されたN個の復号データを前記振分部による振分けに従ってもとの順序に並べ替える並替部とを有するデータ処理装置。
【請求項4】
請求項3において、
前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部を含むデータ処理装置。
【請求項5】
請求項3または4において、
前記振分部は、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成し、
前記並替部は、前記N個の復号データを前記振分けデータに基づいてもとの順序に並べ替えるデータ処理装置。
【請求項6】
請求項3または4において、
N=2であり、
前記累積部は、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積し、
前記並替部は、前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データをもとの順序に並べ替えるデータ処理装置。
【請求項7】
請求項3乃至6のいずれかにおいて、
前記ビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データを復元する復元部とを有するデータ処理装置。
【請求項8】
請求項5において、
前記ビット列を前記所定のビット数ずつ分割して、前記N個の復号部が復号するためのN個の前記符号化データと、前記並替部が前記N個の復号データを並べ替えるための前記振分けデータとを復元する復元部とを有するデータ処理装置。
【請求項9】
請求項7または8において、
前記生成部により生成される前記ビット列は外部に出力された後、当該外部から取り込まれて前記復元部に入力されるデータ処理装置。
【請求項10】
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように前記符号化データが振り分けられ、前記N個の累積部に累積された前記符号化データをそれぞれ並列して復号するN個の復号部と、
前記N個の復号部によりそれぞれ復号されたN個の復号データを前記振分部による振分けに従ってもとの順序に並べ替える並替部とを有するデータ処理装置。
【請求項11】
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部と、
前記符号化データを前記N個の累積部のいずれかに、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるように振り分ける振分部とを有し、
前記N個の累積部に累積された前記符号化データが、N個の復号部によりそれぞれ並列して復号され、前記N個の復号部によりそれぞれ復号されたN個の復号データが、前記振分部による振分けに従ってもとの順序に並べ替えられるデータ処理装置。
【請求項12】
連続するN個(Nは複数)の可変長符号化された符号化データをそれぞれ累積するN個の累積部のいずれかに、前記符号化データを、当該N個の累積部における前記符号化データの累積符号長の差が小さくなるような振分けで振り分け、
前記N個の累積部に累積された前記符号化データをそれぞれ並列して復号し、
前記復号されたN個の復号データを前記振分けに従ってもとの順序に並べ替える、
データ処理方法。
【請求項13】
請求項12において、
前記振分けでは、前記N個の符号化データの前記N個の累積部への振分けを示す振分けデータを生成し、
前記N個の復号データを前記振分けデータに基づいてもとの順序に並べ替える、
データ処理方法。
【請求項14】
請求項12において、
N=2であり、
前記累積部に、2個の前記符号化データのうち符号長が長い方または短い方の第1の符号化データを、当該2個の符号化データにおける順序に応じて第1のビットパターンまたはそれが反転した第2のビットパターンで累積し、
前記第1の符号化データのビットパターンに基づいて、前記2つの符号化データから復号される2個の前記復号データをもとの順序に並べ替える、
データ処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【公開番号】特開2012−244519(P2012−244519A)
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願番号】特願2011−114413(P2011−114413)
【出願日】平成23年5月23日(2011.5.23)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願日】平成23年5月23日(2011.5.23)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]