(57)【特許請求の範囲】
【請求項１】
レングス情報とデータ情報の組を単位符号とするパックビッツ符号化された符号化データを、１つのパックビッツ符号化データのレングス情報が表わし得る復号後の出力データの最大個数よりも少ないＭ個以下の出力データの個数を示すレングス情報とデータ情報で表わされる新たなパックビッツ符号化データに変換するデータ変換装置であって、
変換対象の符号化データを入力する入力手段と、
入力した符号化データを、レングス情報とデータ情報とに分離する分離手段と、
レングス情報を記憶するバッファと、
該分離手段で得られたレングス情報を着目レングス情報として入力し、入力したレングス情報が示す復号後の出力データの個数を累積カウントするカウント手段であって、前記バッファに有効なレングス情報が格納されている場合には、前記分離手段で分離したレングス情報を入力せず、前記バッファに格納されたレングス情報を前記着目レングス情報として取得するカウント手段と、
前記着目レングス情報を入力し、分割するレングス情報分割手段であって、
（ａ）前記カウント手段による累積結果が前記Ｍより小さい場合、入力した前記着目レングス情報を出力し、
（ｂ）前記カウント手段による累積結果が前記Ｍである場合、前記着目レングス情報を出力し、前記Ｍに達したことを示す区切り情報を出力すると共に、前記累積結果をリセットし、
（ｃ）前記カウント手段による累積結果が前記Ｍより大きい場合、前記着目レングス情報を、前記Ｍと前記着目レングス情報の直前のレングス情報までのカウントした値との差分を示す第１のレングス情報と、残りの出力データ数を示す第２のレングス情報とに分割し、前記第１のレングス情報を出力し、前記Ｍに達したことを示す区切り情報を出力し、前記第２のレングス情報を前記カウント手段による次回のカウントのために前記バッファに格納するレングス情報分割手段と、
該レングス情報分割手段から出力されるレングス情報を入力し、前記区切り情報が入力される度に、既に入力したレングス情報のうち、データ情報を１回出力することを示すレングス情報が複数連続する場合、それら連続する複数のレングス情報から新たな１つのレングス情報を生成するレングス情報生成手段と、
該レングス情報生成手段を介して得られたレングス情報を参照し、当該レングス情報と前記分離手段で分離したデータ情報とを混合し、新たなパックビッツ符号化データとして出力するデータ混合手段と
を備えることを特徴とするデータ変換装置。
【請求項２】
画像データを入力し、入力した画像データに対して標準のパックビッツ符号化を行なうパックビッツ符号化手段を備え、
前記入力手段は、前記パックビッツ符号化手段で符号化されたパックビッツ符号化データを入力することを特徴とする請求項１に記載のデータ変換装置。
【請求項３】
前記データ混合手段で生成されたパックビッツ符号化データを、Ｍ個のデータを単位に復号する復号手段を更に備えることを特徴とする請求項１に記載のデータ変換装置。
【請求項４】
レングス情報とデータ情報の組を単位符号とするパックビッツ符号化された符号化データを、１つのパックビッツ符号化データのレングス情報が表わし得る復号後の出力データの最大個数よりも少ないＭ個以下の出力データの個数を示すレングス情報とデータ情報で表わされる新たなパックビッツ符号化データに変換するデータ変換装置の制御方法であって、
変換対象の符号化データを入力する入力工程と、
入力した符号化データを、レングス情報とデータ情報とに分離する分離工程と、
該分離工程で得られたレングス情報を入力し、予め設けられたバッファを利用して、入力したレングス情報が示す復号後の出力データの個数を累積カウントするカウント工程であって、前記バッファに有効なレングス情報が格納されている場合には、前記分離工程で分離したレングス情報を入力せず、前記バッファに格納されたレングス情報を前記着目レングス情報として取得するカウント工程と、
前記着目レングス情報を入力し、分割するレングス情報分割工程であって、
（ａ）前記カウント工程による累積結果が前記Ｍより小さい場合、入力した前記着目レングス情報を出力し、
（ｂ）前記カウント工程による累積結果が前記Ｍである場合、前記着目レングス情報を出力し、前記Ｍに達したことを示す区切り情報を出力すると共に、前記累積結果をリセットし、
（ｃ）前記カウント工程による累積結果が前記Ｍより大きい場合、前記着目レングス情報を、前記Ｍと前記着目レングス情報の直前のレングス情報までのカウントした値との差分を示す第１のレングス情報と、残りの出力データ数を示す第２のレングス情報とに分割し、前記第１のレングス情報を出力し、前記Ｍに達したことを示す区切り情報を出力し、前記第２のレングス情報を前記カウント工程による次回のカウントのために前記バッファに格納するレングス情報分割工程と、
該レングス情報分割工程から出力されるレングス情報を入力し、前記区切り情報が入力される度に、既に入力したレングス情報のうち、データ情報を１回出力することを示すレングス情報が複数連続する場合、それら連続する複数のレングス情報から新たな１つのレングス情報を生成するレングス情報生成工程と、
該レングス情報生成工程を介して得られたレングス情報を参照し、当該レングス情報と前記分離工程で分離したデータ情報とを混合し、新たなパックビッツ符号化データとして出力するデータ混合工程と
を有することを特徴とするデータ変換装置の制御方法。
【請求項５】
コンピュータに読み込ませ実行させることで、前記コンピュータを請求項１乃至３のいずれか１項に記載のデータ変換装置として機能させることを特徴とするコンピュータプログラム。
【請求項６】
請求項５に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号データを扱うデータ変換装置、及びその制御方法に関するものである。
【背景技術】
【０００２】
データ列を扱うシステムにおいて、データ転送に必要なバス帯域やデータ記憶に必要な領域を削減するために、データの転送や記憶を行う前に符号化処理（エンコード処理）によるデータ圧縮を行う技術がある。そのデータの内容が必要となったときに復号処理（デコード処理）によるデータ伸張を行う技術である。
【０００３】
符号化形式は様々な種類が存在するが、同じ画素値が連続することの多い文書画像データに関しては、単純かつ低コストなハードウェア構成で実現が可能なランレングス符号化の形式が採用されることが多い。このとき、一つの画素が１バイトで表わされる場合、レングス情報も１バイトを使用したバイト単位でのランレングス圧縮を行うことが一般的である。
【０００４】
一方、プリンタ（もしくはプリンタエンジン）での印刷動作に利用される画像データにおいても上記のデータ符号化・復号処理によるデータ量削減が行われている。この場合、符号化された画像データはプリンタがデータを要求するタイミングに間に合うように復号されて、順次プリンタに転送する。すなわち、復号処理にはリアルタイム性が要求される。そのため、プリンタ動作で利用するデータに欠損を発生させないためには、復号の処理速度はプリンタがデータを要求する速度と等しいか、それを上回っている必要がある。
【０００５】
ここで、ランレングス符号化された符号データを復号する処理は、符号データ単位毎の逐次処理となる。その理由は、ランレングス符号の符号データはレングス情報とデータ情報の組（以下、単位符号という）が複数連続したもので、レングス情報の内容によりそれに続くデータ情報のデータ数が決定する可変長の符号化方式であるためである。次のレングス情報を見つけるためには、前のレングス情報を評価する必要があり、単純な並列処理ができないことによる。
【０００６】
一方、一つのレングス情報の評価によって出力できるデータ数は可変であるが、通常、最小の場合で１になる。従って、クロック同期で動作する復号回路の処理速度は最小の場合で１データ／サイクルとなる。例えば１バイト単位でランレングス符号化された符号データを復号する場合には最小の場合で１バイト／サイクルとなるのが一般的である。スループット（単位時間内に処理可能なデータ量）で表現すれば、最低スループットが１、または単に、スループットが１となる。
【０００７】
近年、プリンタ技術が向上することによって、従来より高解像なプリントや高速なプリントが可能なプリンタが登場してきている。解像度やプリント速度が高まると単位時間内のプリントに必要となるデータ量も多くなり、必然、プリンタに転送するデータ量が多くなる。高解像や高速のプリンタの中には、例えば１サイクルの内に６データのデータ転送を要求するものがある。この場合、ランレングス復号の処理速度（スループット１）が、プリンタがデータを要求する速度（スループット６）を下回る。そのため、単純にリアルタイムで復号を行ってプリンタに対して転送する構成では、プリンタへのデータ転送速度が間に合わないという問題がある。
【０００８】
そのため、あらかじめ符号データを復号して中間バッファに蓄えておき、プリンタの要求に応じて中間バッファからの読み出しとデータ転送を行うことでデータ欠損を防ぐ技術が考えられる。または、復号回路をデータ転送回路に対して６倍の周波数を持つクロック信号で駆動して、データ転送１サイクルあたり６データの復号が可能となるように回路を構成する手法が考えられる。または、目的のスループット達成のために必要な数だけ、複数の単位符号（レングス情報とデータ情報の組）を同時に復号する技術が提案されている（例えば特許文献１）。
【特許文献１】特開２００７−１８９５２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、前述した従来の技術における中間バッファは、プリンタが一度のプリント動作に必要とするデータ量を記憶するページメモリ装置により実現されるために、大幅なコスト増加となってしまう。また、前述した従来の技術における６倍の周波数を持つクロック信号による駆動は、コストの高いものとなってしまう。なぜなら、データ転送回路の動作周波数の６倍の周波数を利用することは、半導体物理設計と製造技術および製造の面において技術的な難易度が高くなるためである。
【００１０】
また、前述した従来の技術における目的のスループット達成のために必要な数だけ、複数の単位符号（レングス情報とデータ情報の組）を同時に伸張処理する技術では、スループット６を実現する構成にした場合に回路規模と動作速度に問題が出る。なぜなら、上記技術では入力される符号データのレングス情報の並び方をあらかじめ記憶した複数のパターンに照合して動作を決定しているが、このパターン数が組み合わせ論的に増加するためである。具体的には、スループット４を実現する構成でパターン数は４１であるが、例えばスループット６を実現する構成ではパターン数は２３９となり、入力データとのパターンマッチング回路の回路規模および処理遅延時間が大きくなってしまう。回路規模が大きくなるとコストが増加し、また、処理遅延時間が大きくなると１サイクル以内に処理することが技術的に難しくなりコスト増加につながる。
【００１１】
本発明はかかる問題点に鑑みなされたものであり、比較的簡単な構成で、高いスループットで復号を行なえる符号化データを生成する技術を提供しようとするものである。
【課題を解決するための手段】
【００１２】
かかる課題を解決するため、例えば本発明のデータ変換装置は以下の構成を備える。すなわち、
レングス情報とデータ情報の組を単位符号とするパックビッツ符号化された符号化データを、１つのパックビッツ符号化データのレングス情報が表わし得る復号後の出力データの最大個数よりも少ないＭ個以下の出力データの個数を示すレングス情報とデータ情報で表わされる新たなパックビッツ符号化データに変換するデータ変換装置であって、
変換対象の符号化データを入力する入力手段と、
入力した符号化データを、レングス情報とデータ情報とに分離する分離手段と、
レングス情報を記憶するバッファと、
該分離手段で得られたレングス情報を着目レングス情報として入力し、入力したレングス情報が示す復号後の出力データの個数を累積カウントするカウント手段であって、前記バッファに有効なレングス情報が格納されている場合には、前記分離手段で分離したレングス情報を入力せず、前記バッファに格納されたレングス情報を前記着目レングス情報として取得するカウント手段と、
前記着目レングス情報を入力し、分割するレングス情報分割手段であって、
（ａ）前記カウント手段による累積結果が前記Ｍより小さい場合、入力した前記着目レングス情報を出力し、
（ｂ）前記カウント手段による累積結果が前記Ｍである場合、前記着目レングス情報を出力し、前記Ｍに達したことを示す区切り情報を出力すると共に、前記累積結果をリセットし、
（ｃ）前記カウント手段による累積結果が前記Ｍより大きい場合、前記着目レングス情報を、前記Ｍと前記着目レングス情報の直前のレングス情報までのカウントした値との差分を示す第１のレングス情報と、残りの出力データ数を示す第２のレングス情報とに分割し、前記第１のレングス情報を出力し、前記Ｍに達したことを示す区切り情報を出力し、前記第２のレングス情報を前記カウント手段による次回のカウントのために前記バッファに格納するレングス情報分割手段と、
該レングス情報分割手段から出力されるレングス情報を入力し、前記区切り情報が入力される度に、既に入力したレングス情報のうち、データ情報を１回出力することを示すレングス情報が複数連続する場合、それら連続する複数のレングス情報から新たな１つのレングス情報を生成するレングス情報生成手段と、
該レングス情報生成手段を介して得られたレングス情報を参照し、当該レングス情報と前記分離手段で分離したデータ情報とを混合し、新たなパックビッツ符号化データとして出力するデータ混合手段とを備える。
【発明の効果】
【００１３】
本発明によれば、パックビッツ符号化データから、スループットＭ、すなわち、１サイクル当たりＭ個のデータを復号する符号化データに再変換することが可能になる。
【発明を実施するための最良の形態】
【００１４】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１５】
［第１の実施形態］
実施形態では、パックビッツ（PackBits）符号化データのデータ変換装置を説明する。
【００１６】
一般に、パックビッツ符号化することで得られる符号化データは、レングス情報とデータ情報の対でその符号単位を表わしてる。特に、バイトを単位にするパックビッツ符号化データにおけるレングス情報で示される出力データの最大個数で１２８個である。本実施形態では、この最大個数よりも少ないＭ個以下の符号化データに再変換し、且つ、スループットＭの復号効率の良い符号化データに再変換する例を説明する。説明を簡単なものとするため、実施形態ではＭ＝６の例を説明する。
【００１７】
図１は本実施の形態に係るデータ変換装置１の内部構成を示すブロック図である。図中、１０１は符号データ入力部で、１０２はレングス情報抽出部で、１０３は符号データ変換部で、１０４は符号データ出力部である。
【００１８】
符号データ入力部１０１はレングス情報抽出部１０２と接続されており、外部より受信した再符号化対象（変換対象）の符号データを１２バイト毎にレングス情報抽出部１０２に対して転送する。
【００１９】
レングス情報抽出部１０２は符号データ入力部１０１および符号データ変換部１０３と接続されている。レングス情報抽出部１０２は、符号データ入力部１０１から受信した符号データをバイト毎にレングス情報とデータ情報とに分けて、符号データ変換部１０３に転送する。符号データをレングス情報とデータ情報とに分ける処理手順の詳細については後述する。
【００２０】
符号データ変換部１０３はレングス情報抽出部１０２および符号データ出力部１０４に接続されている。符号データ変換部１０３は、レングス情報抽出部１０２からレングス情報およびデータ情報を受信して符号データに変換し、符号データ出力部１０４に対して転送する。受信したレングス情報およびデータ情報を変換する処理手順の詳細についても後述する。
【００２１】
符号データ出力部１０４は符号データ変換部１０３に接続されており、符号データ変換部１０３から受信した符号データを出力する。
【００２２】
図２はデータ変換装置１が扱う符号データに含まれるレングス情報に関する仕様テーブルである。符号データは本仕様テーブルに従って復号することができる。ここで、データ変換装置１が扱う符号データはバイト単位のデータをランレングス符号化したものである。ランレングス符号化による符号データは、レングス情報（１バイト）と、その直後に続くデータ情報（可変長バイト）とを一組の単位符号とする、単位符号が複数個連続したものである。各単位符号はその先頭に１バイトのレングス情報を必ず含む。そしてそのレングス情報の直後に可変長バイトのデータ情報が続く。レングス情報はデータ情報のバイト数情報、又は、繰り返し回数情報を持っている。これは、図２に示すレングス情報仕様テーブルを用いて解釈することでデータ情報のバイト数、又は、復号するときにデータ情報の繰り返し出力すべき回数が判定できる。
【００２３】
図２におけるレングス情報の末尾の“ｈ”は１６進数であることを示している。図２からもわかるように、レングス情報の最上位ビット（ＭＳＢ）が“０”の場合、すなわち、レングス情報が“７Ｆｈ”以下の場合、後続するデータ情報のバイト数は、レングス情報に応じたものとなる。また、レングス情報のＭＳＢが“１”以上（但し、８０ｈは未定義）の場合、後続するデータ情報は必ず１バイトとなり、そのデータの出力回数がレングス情報に依存したものとなる。
【００２４】
このように、着目している単位符号の直後には次の単位符号が続くので、着目単位符号のデータ情報のバイト数がわかると次の単位符号のバイト位置がわかり、次の単位符号のレングス情報を抽出することができる。ここまで示したように、ランレングス符号化による符号データは、データの先頭から順にレングス情報を解釈して可変長のデータ情報を処理していくことで、一意に復号処理が行われる符号データである。
【００２５】
図３はデータ変換装置１が扱う符号データの一例である。図中の１つのマス目は１バイトのデータを表しており、各マス目内に示される数値は１６進数で表わされるデータである。
【００２６】
図４は図３に示す符号データの各バイトに識別のための番号ｃ０〜ｃ２３を付けて、また、符号データのレングス情報に太線で囲みを付けた図である。バイト０、６、８、１３、１５、２２、すなわち、番号Ｃ０、Ｃ６、Ｃ８、Ｃ１３、Ｃ１５、Ｃ２２がレングス情報である。ただし、符号データはレングス情報の位置を各バイト値の他に持っているわけではなく、本図はあくまで説明のための図である。符号データ中の各バイトがレングス情報なのかデータ情報なのかについては、前述した通り、符号データの先頭バイトから順に解析処理していくことにより判別することが可能である。
【００２７】
図５は図３および図４に示す符号データを復号して得られるデータを示した図である。図中の四角は１バイトのデータを表しており、記載されている数字は１６進数でデータの内容を示している。また、各バイトデータには説明のための識別番号ｄ０〜ｄ３１を順に付けてある。図４によると先頭の１バイト（レングス情報）が“０４”であるので、後続する５バイト｛０１、０２、０３、０４、０５｝が最終的に出力される。それ故、図５での先頭から５バイトがこれらの値になっている。
【００２８】
図６はデータ変換装置１が扱う符号データの復号の一つの手順を示すフローチャートである。符号データを先頭バイトから順に１バイトずつ処理する手順となっている。
【００２９】
手順６０１では、未処理の符号データの先頭に位置するバイトデータを１バイト取得する。手順６０２では、取得したバイトデータをレングス情報として図２で示したテーブルに照合して解析し、データ情報のバイト数および出力の繰り返し回数を得る。また、すでに取得済みのバイト数を記憶する内部カウンタであるバイトカウンタの値を０に初期化する。
【００３０】
手順６０３では、未処理の符号データの先頭に位置するバイトデータを１バイト取得して、バイトカウンタを１増やし、また、出力の繰り返し回数を記憶する内部カウンタである繰り返しカウンタの値を０に初期化する。
【００３１】
手順６０４では、取得したバイトデータをデータ情報として１バイト出力し、繰り返しカウンタを１増やす。
【００３２】
手順６０５では、繰り返しカウンタの値と手順６０２で得た出力の繰り返し回数とを比較して、繰り返し回数分だけすでに出力が終了されていれば手順６０６へ、まだ出力されていなければ手順６０４へ進む。手順６０６では、バイトカウンタの値と手順２で得た出力のデータ情報のバイト数とを比較して、バイト数だけすでに出力が終了されていれば手順６０７へ、まだ出力されていなければ手順６０３へ進む。
【００３３】
手順６０７では、符号データのすべてのバイトについての処理が終了していれば終了し、終了していなければ手順６０１へ進む。
【００３４】
ここで、図４に示す符号データを復号して図５で示すデータが得られる手順を、図６に示すフローチャートに沿って、図中の手順番号および識別番号を使って説明する。
手順６０１：符号データ未処理部分の先頭の１バイト（ｃ０）をレングス情報として取得する。
手順６０２：レングス情報（ｃ０）の値０４ｈ（末尾のｈは１６進数を表す）を図３で示すテーブルと照合し、バイト数５、繰り返し数１を得る。また、バイトカウンタを０に初期化する。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ１）をデータ情報として取得し、バイトカウンタを１増やして１とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ１）の値０１ｈを出力し（ｄ０）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値１とバイト数５とを比較して、バイト数出力未終了と判断し、手順６０３に進む。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ２）をデータ情報として取得し、バイトカウンタを１増やして２とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ２）の値０２ｈを出力し（ｄ１）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値２とバイト数５とを比較して、バイト数出力未終了と判断し、手順６０３に進む。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ３）をデータ情報として取得し、バイトカウンタを１増やして３とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ３）の値０３ｈを出力し（ｄ２）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値３とバイト数５とを比較して、バイト数出力未終了と判断し、手順６０３に進む。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ４）をデータ情報として取得し、バイトカウンタを１増やして４とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ４）の値０４ｈを出力し（ｄ３）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値４とバイト数５とを比較して、バイト数出力未終了と判断し、手順６０３に進む。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ５）をデータ情報として取得し、バイトカウンタを１増やして５とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ５）の値０５ｈを出力し（ｄ４）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値５とバイト数５とを比較して、バイト数出力終了と判断し、手順６０７に進む。
手順６０７：まだ未処理の符号データが残っているため（ｃ６）、手順６０１に進む。
【００３５】
手順６０１：符号データ未処理部分の先頭の１バイト（ｃ６）をレングス情報として取得する。
手順６０２：レングス情報（ｃ６）の値ＦＥｈ（後付きのｈは１６進数を表す）を図３で示すテーブルと照合し、バイト数１、繰り返し数３を得る。また、バイトカウンタを０に初期化する。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ７）をデータ情報として取得し、バイトカウンタを１増やして１とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ７）の値０６ｈを出力し（ｄ５）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数３とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ７）の値０６ｈを出力し（ｄ６）、繰り返しカウンタを１増やして２にする。
手順６０５：繰り返しカウンタの値２と繰り返し数３とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ７）の値０６ｈを出力し（ｄ７）、繰り返しカウンタを１増やして３にする。
手順６０５：繰り返しカウンタの値３と繰り返し数３とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値１とバイト数１とを比較して、バイト数出力終了と判断し、手順６０７に進む。
手順６０７：まだ未処理の符号データが残っているため（ｃ８）、手順６０１に進む。
【００３６】
手順６０１：符号データ未処理部分の先頭の１バイト（ｃ８）をレングス情報として取得する。
手順６０２：レングス情報（ｃ８）の値０３ｈ（後付きのｈは１６進数を表す）を図３で示すテーブルと照合し、バイト数４、繰り返し数１を得る。また、バイトカウンタを０に初期化する。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ９）をデータ情報として取得し、バイトカウンタを１増やして１とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ９）の値０７ｈを出力し（ｄ８）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値１とバイト数４とを比較して、バイト数出力未終了と判断し、手順６０３に進む。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ１０）をデータ情報として取得し、バイトカウンタを１増やして２とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ１０）の値０８ｈを出力し（ｄ９）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値２とバイト数４とを比較して、バイト数出力未終了と判断し、手順６０３に進む。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ１１）をデータ情報として取得し、バイトカウンタを１増やして３とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ１１）の値０９ｈを出力し（ｄ１０）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値３とバイト数４とを比較して、バイト数出力未終了と判断し、手順６０３に進む。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ１２）をデータ情報として取得し、バイトカウンタを１増やして４とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ１２）の値０Ａｈを出力し（ｄ１１）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値４とバイト数４とを比較して、バイト数出力終了と判断し、手順６０７に進む。
手順６０７：まだ未処理の符号データが残っているため（ｃ１３）、手順６０１に進む。
【００３７】
手順６０１：符号データ未処理部分の先頭の１バイト（ｃ１３）をレングス情報として取得する。
手順６０２：レングス情報（ｃ１３）の値ＦＡｈ（後付きのｈは１６進数を表す）を図３で示すテーブルと照合し、バイト数１、繰り返し数７を得る。また、バイトカウンタを０に初期化する。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ１４）をデータ情報として取得し、バイトカウンタを１増やして１とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ１４）の値０Ｂｈを出力し（ｄ１２）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数７とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ１４）の値０Ｂｈを出力し（ｄ１３）、繰り返しカウンタを１増やして２にする。
手順６０５：繰り返しカウンタの値２と繰り返し数７とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ１４）の値０Ｂｈを出力し（ｄ１４）、繰り返しカウンタを１増やして３にする。
手順６０５：繰り返しカウンタの値３と繰り返し数７とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ１４）の値０Ｂｈを出力し（ｄ１５）、繰り返しカウンタを１増やして４にする。
手順６０５：繰り返しカウンタの値４と繰り返し数７とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ１４）の値０Ｂｈを出力し（ｄ１６）、繰り返しカウンタを１増やして５にする。
手順６０５：繰り返しカウンタの値５と繰り返し数７とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ１４）の値０Ｂｈを出力し（ｄ１７）、繰り返しカウンタを１増やして６にする。
手順６０５：繰り返しカウンタの値６と繰り返し数７とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ１４）の値０Ｂｈを出力し（ｄ１８）、繰り返しカウンタを１増やして７にする。
手順６０５：繰り返しカウンタの値７と繰り返し数７とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値１とバイト数１とを比較して、バイト数出力終了と判断し、手順６０７に進む。
手順６０７：まだ未処理の符号データが残っているため（ｃ１５）、手順６０１に進む。
【００３８】
手順６０１：符号データ未処理部分の先頭の１バイト（ｃ１５）をレングス情報として取得する。
手順６０２：レングス情報（ｃ５）の値０５ｈ（後付きのｈは１６進数を表す）を図３で示すテーブルと照合し、バイト数６、繰り返し数１を得る。また、バイトカウンタを０に初期化する。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ１６）をデータ情報として取得し、バイトカウンタを１増やして１とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ１６）の値０Ｃｈを出力し（ｄ１９）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値１とバイト数６とを比較して、バイト数出力未終了と判断し、手順６０３に進む。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ１７）をデータ情報として取得し、バイトカウンタを１増やして２とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ１７）の値０Ｄｈを出力し（ｄ２０）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値２とバイト数６とを比較して、バイト数出力未終了と判断し、手順６０３に進む。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ１８）をデータ情報として取得し、バイトカウンタを１増やして３とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ１８）の値０Ｅｈを出力し（ｄ２１）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値３とバイト数６とを比較して、バイト数出力未終了と判断し、手順６０３に進む。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ１９）をデータ情報として取得し、バイトカウンタを１増やして４とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ１９）の値０Ｆｈを出力し（ｄ２２）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値４とバイト数６とを比較して、バイト数出力未終了と判断し、手順６０３に進む。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ２０）をデータ情報として取得し、バイトカウンタを１増やして５とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ２０）の値１０ｈを出力し（ｄ２３）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値５とバイト数６とを比較して、バイト数出力未終了と判断し、手順６０３に進む。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ２１）をデータ情報として取得し、バイトカウンタを１増やして６とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ２１）の値１１ｈを出力し（ｄ２４）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数１とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値６とバイト数６とを比較して、バイト数出力終了と判断し、手順６０７に進む。
手順６０７：まだ未処理の符号データが残っているため（ｃ２２）、手順６０１に進む。
【００３９】
手順６０１：符号データ未処理部分の先頭の１バイト（ｃ２２）をレングス情報として取得する。
手順６０２：レングス情報（ｃ２２）の値ＦＡｈ（後付きのｈは１６進数を表す）を図３で示すテーブルと照合し、バイト数１、繰り返し数７を得る。また、バイトカウンタを０に初期化する。
手順６０３：符号データ未処理部分の先頭の１バイト（ｃ２３）をデータ情報として取得し、バイトカウンタを１増やして１とし、また、繰り返しカウンタを０に初期化する。
手順６０４：データ情報（ｃ２３）の値１２ｈを出力し（ｄ２５）、繰り返しカウンタを１増やして１にする。
手順６０５：繰り返しカウンタの値１と繰り返し数７とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ２３）の値１２ｈを出力し（ｄ２６）、繰り返しカウンタを１増やして２にする。
手順６０５：繰り返しカウンタの値２と繰り返し数７とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ２３）の値１２ｈを出力し（ｄ２７）、繰り返しカウンタを１増やして３にする。
手順６０５：繰り返しカウンタの値３と繰り返し数７とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ２３）の値１２ｈを出力し（ｄ２８）、繰り返しカウンタを１増やして４にする。
手順６０５：繰り返しカウンタの値４と繰り返し数７とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ２３）の値１２ｈを出力し（ｄ２９）、繰り返しカウンタを１増やして５にする。
手順６０５：繰り返しカウンタの値５と繰り返し数７とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ２３）の値１２ｈを出力し（ｄ３０）、繰り返しカウンタを１増やして６にする。
手順６０５：繰り返しカウンタの値６と繰り返し数７とを比較して、繰り返し出力未終了と判断し、手順６０４に進む。
手順６０４：データ情報（ｃ２３）の値１２ｈを出力し（ｄ３１）、繰り返しカウンタを１増やして７にする。
手順６０５：繰り返しカウンタの値７と繰り返し数７とを比較して、繰り返し出力終了と判断し、手順６０６に進む。
手順６０６：バイトカウンタの値１とバイト数１とを比較して、バイト数出力終了と判断し、手順６０７に進む。
手順６０７：もう未処理の符号データが残っていないため、手順を終了する。
【００４０】
なお、復号の手順はこのフローチャートで示したものだけに限られるわけではない。
【００４１】
図７はデータ変換装置１が扱う符号データを復号して４バイト以上のデータが得られる符号データのパターンを列挙したリストである。復号して４バイト以上のデータが得られる符号データは数多く存在するが、それを下記の分類方法により複数のパターンに分類すると、図７に示すように４１パターンに分けることができる。ここで、分類方法の一つは、４バイト以上のデータを得るのに必要十分な複数個のレングス情報について、レングス情報のバイト位置が同一の符号データを同じパターンとして分類する方法である。また、分類方法の一つは、４バイト以上のデータを得るのに必要十分な複数個のレングス情報について、レングス情報のバイト数情報と繰り返し回数のいずれかが同一の符号データを同じパターンとして分類する方法である。また、分類方法の一つは、復号により得られるバイト数がちょうど４バイトになる符号データと、５バイト以上になる符号データを別のパターンとして分類する方法である。こうしてパターンに分類した符号データを表現するために、各パターンの各バイトは当てはまる範囲値で表記している箇所がある。特に「＊」マークのバイトは、範囲「００ｈ〜ＦＦｈ」を表し、あらゆるバイト値に当てはまる。パターン数は全部で４１あり、復号時には符号データが４１パターンのどれに当てはまるかを判別して、該パターンに対応した処理を行うことで４バイトのスループットでの復号を行うことができる。この復号の手順については、特許文献１に記載されている。
【００４２】
図８Ａ乃至８Ｄは、本実施形態のデータ変換装置１が扱う符号データを復号して６バイト以上のデータが得られる符号データのパターンを列挙したリストである。復号して６バイト以上のデータが得られる符号データは数多く存在するが、それを下記の分類方法により複数のパターンに分類すると、図８Ａ乃至８Ｄのリストにある２３９パターンに分けることができる。ここで、分類方法の一つは、６バイト以上のデータを得るのに必要十分な複数個のレングス情報について、レングス情報のバイト位置が同一の符号データを同じパターンとして分類する方法である。また、分類方法の一つは、６バイト以上のデータを得るのに必要十分な複数個のレングス情報について、レングス情報のバイト数情報と繰り返し回数のいずれかが同一の符号データを同じパターンとして分類する方法である。また、分類方法の一つは、復号により得られるバイト数がちょうど６バイトになる符号データと、７バイト以上になる符号データを別のパターンとして分類する方法である。この２３９パターンについて、特許文献１と同様の手順によって復号し、６バイトのスループットでの復号を行うことができる。しかしながら前述の通り、入力データとのパターンマッチング回路の回路規模および処理遅延時間が大きくなってしまう。回路規模が大きくなるとコストが増加し、また、処理遅延時間が大きくなると１サイクル以内に処理することが技術的に難しくなりコスト増加につながるという問題がある。
【００４３】
図９は、実施形態におけるデータ変換装置１内のレングス情報抽出部１０２の内部構成を示すブロック図である。１０２１はレングス情報判別部で、１０２２はレングス情報バッファで、１０２３はデータ情報バッファである。
【００４４】
レングス情報判別部１０２１は符号データ入力部１０１、レングス情報バッファ１０２２、および、データ情報バッファ１０２３に接続されている。レングス情報判別部１０２１は、符号データ入力部１０１から受信する符号データをレングス情報とデータ情報とに分離する。レングス情報判別部１０２１は処理クロックに同期して動作し、処理サイクル毎に、符号データ入力部１０１から１２バイトの符号データを受信して、各バイト（バイト０〜バイト１１）についてレングス情報か否か判断する。各バイトの判断は、それぞれに用意された判別回路を用いた方法で、各バイトの判別回路についての詳細は後述する。レングス情報判別部１０２１は、レングス情報と判断されたバイトをレングス情報バッファ１０２２に、レングス情報ではないと判断されたバイトをデータ情報バッファ１０２３に順に転送する。
【００４５】
レングス情報バッファ１０２２は、レングス情報判別部１０２１、および、符号データ変換部１０３に接続されている。レングス情報バッファ１０２２は、レングス情報判別部１０２１から受信したレングス情報を内部に格納する。また、レングス情報バッファ１０２２は、内部に格納したレングス情報を符号データ変換部１０３に対して転送する。
【００４６】
データ情報バッファ１０２３は、レングス情報判別部１０２１、および、符号データ変換部１０３に接続されている。データ情報バッファ１０２３は、レングス情報判別部１０２１から受信したデータ情報を内部に格納する。また、データ情報バッファ１０２３は、内部に格納したデータ情報を符号データ変換部１０３に対して転送する。
【００４７】
図１０および図１１はレングス情報判別部１０２１において、バイト０がレングス情報か否か判別するための回路を示した模式図である。ここで、レングス情報となるバイトの条件というのは、２つある。１つは、その着目バイトが符号データ全体で一番最初のバイトであるという条件である。もう１つは、その着目バイトの直前のバイトが、データ情報の終端であるという条件である。前者の条件は一意に決まる。後者の条件は、直前のバイトでデータ情報が終わっているかどうかの判断により決まる。この判断は、２つ前のバイトがレングス情報で、かつ、バイト数情報が１の場合や、３つ前のバイトがレングス情報でかつバイト数情報が２の場合、などといった、先行するレングス情報を利用した論理で実現される。
【００４８】
図１１の「この処理サイクルでバイト０はレングス情報」という論理は、前者の条件を表している。また、図１１の「１つ後の処理サイクルでバイト０はレングス情報」から「１１後の処理サイクルでバイト０はレングス情報」までの条件は、後者の条件を表している。後者の条件がサイクル毎に別れているのは、レングス情報判別部１０２１が同時に判断するのが１サイクルあたり１２バイトずつということが理由である。レングス情報のバイト数情報が最小１から最大１２８のいずれの場合にも、次のレングス情報となるバイトを識別するために、最大１１サイクル後の処理において参照できるようにフリップフロップを使った構成としている。なお、「３つ後の処理サイクルでバイト０はレングス情報」から「９つ後の処理サイクルでバイト０はレングス情報」までの条件および構成は、他と同様のルールに基づいて構成できるため、図示では省略している。
【００４９】
図１２および図１３はレングス情報判別部１０２１において、バイト１がレングス情報か否か判別するための回路を示した模式図である。３つ後の処理サイクルから９つ後の処理サイクルにおいてレングス情報か否かの判断条件および構成は、他と同様のルールに基づいて構成できるため、本実施形態では図示と説明を省略している。
【００５０】
図１４および図１５はレングス情報判別部１０２１において、バイト２がレングス情報か否か判別するための回路を示した模式図である。３つ後の処理サイクルから９つ後の処理サイクルにおいてレングス情報か否かの判断条件および構成は、他と同様のルールに基づいて構成できるため、本実施形態では図示と説明を省略している。
【００５１】
図１６および図１７はレングス情報判別部１０２１において、バイト３がレングス情報か否か判別するための回路を示した模式図である。３つ後の処理サイクルから９つ後の処理サイクルにおいてレングス情報か否かの判断条件および構成は、他と同様のルールに基づいて構成できるため、本実施形態では図示と説明を省略している。
【００５２】
また、バイト４からバイト１０がレングス情報か否かを判断するための回路は他と同様のルールに基づいて構成できるため、本実施形態では図示と説明を省略している。
【００５３】
図１８および図１９はレングス情報判別部１０２１において、バイト１１がレングス情報か否か判別するための回路を示した模式図である。３つ後の処理サイクルから９つ後の処理サイクルにおいてレングス情報か否かの判断条件および構成は、他と同様のルールに基づいて構成できるため、本実施形態では図示と説明を省略している。
【００５４】
図２０はデータ変換装置１内の符号データ変換部１０３の内部構成を示すブロック図である。１０３１はレングス情報分割部で、１０３２はレングス情報結合部で、１０３３はデータ情報混合部である。
【００５５】
レングス情報分割部１０３１は、レングス情報抽出部１０２のレングス情報バッファ１０２２と、レングス情報結合部１０３２とに接続されている。レングス情報分割部１０３１は、レングス情報バッファ１０２２から受信するレングス情報の分割処理を行う。分割処理の内容は後述する。レングス情報分割部１０３１は、分割したレングス情報をレングス情報結合部１０３２に対して転送する。
【００５６】
レングス情報結合部１０３２は、レングス情報分割部１０３１と、データ情報混合部１０３３とに接続されている。レングス情報結合部１０３２は、レングス情報分割部１０３１から受信するレングス情報の結合処理を行う。結合処理の内容は後述する。レングス情報結合部１０３２は、結合したレングス情報をデータ情報混合部１０３３に対して転送する。
【００５７】
データ情報混合部１０３３は、レングス情報抽出部１０２のデータ情報バッファ１０２３と、レングス情報結合部１０３２に接続されている。データ情報混合部１０３３は、レングス情報結合部１０３２からレングス情報を受信して、符号データ出力部１０４に対してレングス情報を転送し、また、そのレングス情報からバイト数情報を読み取る。データ情報混合部１０３３は、バイト数情報の数だけデータ情報バッファ１０２３からデータ情報を受信して、符号データ出力部１０４に対してデータ情報を転送する。ここで、レングス情報結合部１０３２から転送されるレングス情報には、リピート属性が付加されている場合がある。データ情報混合部１０３３は、リピート属性が付加されているレングス情報の場合には、直前に転送したデータ情報の最後の１バイトを再利用して残りのバイト数分のデータ情報のみをデータ情報バッファ１０２３から受信する。この場合、データ情報混合部１０３３は、再利用の１バイトと受信した残りのバイト数とを合わせて符号データ出力部１０４に対して転送する。
【００５８】
要するに、データ情報混合部１０３３は、レングス情報結合部１０３２からのレングス情報と、レングス情報抽出部１０２で得られたデータ情報のデータ混合処理を行ない、新たな符号化データを生成し、出力する。
【００５９】
図２１はレングス情報分割部１０３１におけるレングス情報の分割処理の手順を示すフローチャートである。なお、レングス情報分割部１０３１の内部には、積算復号後バイト数（データ数）を保持するレジスタ（第１のレジスタ）と、レングス情報を格納するレジスタ（第２のレジスタ）が設けられているものとする。
手順２１００では、レングス情報を格納する内部レジスタを“８０ｈ”でクリア（リセット）する。この８０ｈは、図２からもわかるように、パックビッツ符号化データでは不使用の符号語である。なお、詳細は以下の説明から明らかになるが、意味のあるレングス情報が格納されているか否かは判別出来れば良いので、別途フラグを設け、このフラグをセット／リセットされているか否かで、意味のあるレングス情報が格納されているか否かを判定しても構わない。
手順２１０１にて、積算復号後バイト数を格納する内部レジスタを“０”に初期化する。
手順２１０２では、レングス情報抽出部１０２のレングス情報バッファ１０２２からのレングス情報転送が終了したかどうかを判断し、終了の場合は処理を終了するとともに、後続するレングス情報結合部１０３２にレングス情報の入力終了を通知する。
手順２１０３では、レングス情報抽出部１０２のレングス情報バッファ１０２２からレングス情報を１バイト受信して取得する。但し、レングス情報を格納する内部レジスタに格納されたレングス情報が“８０ｈ”以外の場合、すなわち、有意なレンズス情報が内部レジスタに格納されている場合、レングス情報抽出部１０２から受信せずに、内部バッファに記憶されているレングス情報を取得する。以下に説明するレングス情報とは、レングス情報抽出部１０２、もしくは、内部レジスタのいずれか一方から取得したものである点に注意されたい。
手順２１０４では、取得したレングス情報を図２で示したテーブルに照合して解析し、データ情報のバイト数および出力の繰り返し回数を得る。
手順２１０５では、積算復号後バイト数に｛バイト数×繰り返し回数｝を積算（加算）する。すなわち、復号されることになるデータ数（バイト数）を累積カウントする。
手順２１０６では、積算復号後バイト数が６未満かどうか判断し、６未満の場合は手順２１０７に進み、小さくない場合は手順２１０８に進む。
手順２１０７では、取得したレングス情報をレングス情報結合部１０３２に転送して、手順２１０２に進む。
手順２１０８では、積算復号後バイト数が６と等しいかどうか判断し、等しい場合は手順２１０９に進み、等しくない場合は手順２１１１に進む。
手順２１０９では、取得したレングス情報をレングス情報結合部１０３２に転送する。このとき、次回、手順２１０３に処理が進んだ場合、外部からレングス情報を取得するため、内部レジスタに“８０ｈ”を設定する。この後、手順２１１０に進む。
手順２１１０では、区切り信号をレングス情報結合部１０３２に転送して、手順２１０１に進む。この区切り信号は、レングス情報結合部１０３２を制御する制御信号でもある。また、このとき、内部レジスタの積算復号後バイト数を“０”クリアする。
手順２１１１では、繰り返し回数が１と等しいかどうか判断して、等しい場合は手順２１１２に進み、等しくない場合は手順２１１５に進む。
手順２１１２では、レングス情報を前部と後部とに分割する。具体的には、元のレングス情報の値を使って、別の新たな２つのレングス情報を生成する処理となる。レングス情報（後部）はバイト数情報として（６−積算復号後バイト数）を持ち、繰り返し回数として１を持つように生成する。レングス情報（前部）はバイト数情報として（元のバイト数情報−レングス情報（後部）のバイト数情報）を持ち、繰り返し回数として１を持つように生成する。
【００６０】
例えば、着目レングス情報が７Ｆｈであったとする。図２から、レングス情報“７Ｆｈ”は、着目レングス情報に後続する１２８バイトを１回出力することを意味している。今、着目レングス情報で示されるデータ個数を加算した結果（ステップＳ２１０５の積算結果）が、１３２になったとする。これは、着目レングス情報の直前までのデータの個数Ｎが“４”であった場合でもある。実施形態では、スループットＭとして“６”を実現する例を示している。従って、着目レングス情報“７Ｆｈ”を、その差分“２”（＝Ｍ−Ｎ）で示されるデータ個数を示す前部のレングス情報（第１のレングス情報）０１ｈと、残りの１２６個の出力データ数を示す後部のレングス情報（第２のレングス情報）７Ｄｈとに分割する。
手順２１１３では、前部のレングス情報（第１のレングス情報）をレングス情報結合部１０３２に転送する。
手順２１１４では、後部のレングス情報（第２のレングス情報）を内部レジスタに記憶（設定する）する。この結果、内部レジスタには、後部のレングス情報（有意なレングス情報）がカウント対象として設定されることになる。
手順２１１５では、レングス情報を前部と後部とに分割する。具体的には、元のレングス情報の値を使って、別の新たな２つのレングス情報を生成する処理となる。レングス情報（後部）はバイト数情報として１を持ち、繰り返し回数として（６−積算復号後バイト数）を持つように生成する。レングス情報（前部）はバイト数情報として１を持ち、繰り返し回数として（元の繰り返し回数−レングス情報（後部）の繰り返し回数）を持つように生成する。
【００６１】
例えば、着目レングス情報が８１ｈであったとする。これは、図２から着目レングス情報に後続する１２８バイトを１回出力することを意味する。今、着目レングス情報で示されるデータ個数を加算した結果が、１３２になったとする。これは、着目レングス情報の直前までのデータ個数Ｎが“４”であった場合でもある。実施形態では、スループットＭとして“６”を実現する例を示している。従って、着目レングス情報“８１ｈ”を、その差分“２”（＝Ｍ−Ｎ）で示されるデータ個数を示す前部のレングス情報（第１のレングス情報）“ＦＦｈ”と、残りの１２６個の出力データ数を示す後部のレングス情報（第２のレングス情報）“８３ｈ”とに分割する。
手順２１１６では、前部のレングス情報をレングス情報結合部１０３２に転送する。
手順２１１７では、後部のレングス情報にリピート属性を付加する。
手順２１１８では、後部のレングス情報を次に取得するレングス情報として内部レジスタに記憶して、手順２１１０に進む。
【００６２】
以上のようにして、レングス情報分割部１０３１は、積算復号後バイト数が６となる１個以上のレングス情報を生成する。また、積算復号後バイト数が６になる度に、区切り信号をレングス情報結合部１０３２に出力し、積算復号後バイト数が“０”にリセットされる。
【００６３】
次に、図２２のフローチャートに従い、実施形態におけるレングス情報結合部１０３２におけるレングス情報の結合処理の手順を説明する。なお、レングス情報結合部１０３２の内部には一時記憶用のバッファが設けられているものとする。
手順２２０１では、内部バッファである一時バッファを初期化してなにも格納されていない状態にする。
手順２２０２では、レングス情報分割部１０３１からレングス情報を１バイトを受信する。
手順２２０３では、受信したレングス情報を一時バッファに追加記憶する。
手順２２０４では、レングス情報分割部１０３１から区切り信号を受信したか、レングス情報分割部１０３１からのレングス情報が終了したかどうかを判断する。区切り信号を受信したかレングス情報が終了した場合は手順２２０５に進み、それ以外の場合は手順２２０２に戻る。
手順２２０５では、一時バッファに記憶されているレングス情報を先頭から調べて、既定の条件に当てはまるかどうかを判断する。規定の条件とは、繰り返し回数１のレングス情報が２つ連続して存在するかどうかである。これは、レングス情報として７Ｆｈ以下の値が連続するか否かで判断すれば良い（図２参照）。条件に当てはまる場合は手順２２０６に進み、当てはまらない場合は手順２２０７に進む。
手順２２０６では、２つの繰り返し回数１のレングス情報を結合して、別の新しい１つのレングス情報に変換する。そして、一時バッファからそれらのレングス情報を削除して、その代わりにその位置に新しい１つのレングス情報を記憶させ、手順２２０５に進み、再度判定する。この結果、繰り返し回数１のレングス情報が連続する限り、それらは１つに結合されてくことなる。なお、結合後のレングス情報は、それ以前の２つのレングス情報で示されるバイト数を合算したものにする。なお、説明が前後するが、レングス情報分割部１０３１は１つのレングス情報を２つに分割する場合、その２つのレングス情報の内、後に位置するものにリピート属性が付加されることはない。
手順２２０７では、一時バッファに記憶されているレングス情報をデータ情報混合部１０３３に対して転送する。このとき、レングス情報にリピート属性が付加されている場合は、リピート属性を付加したままデータ情報結合部１０３３に転送する。
手順２２０８では、レングス情報分割部１０３１からのレングス情報の入力が終了したかどうかを判断して、終了した場合は処理を終了し、終了していない場合は手順２２０１に進む。
【００６４】
上記を具体的に説明すると、次の通りである。
【００６５】
先ず、先に説明したように、レングス情報分割部１０３１で生成される繰り返し回数が１のレングス情報は、必ず００ｈ乃至０５ｈの範囲内になる。同様に、レングス情報分割部１０３１で生成される繰り返し回数が２以上のレングス情報は、必ずＦＢｈ乃至ＦＦｈになる。
【００６６】
今、レングス情報結合部１０３２内のバッファに次のシーケンスでレングス情報が入力されるものとする。
００ｈ、０１ｈ、００ｈ、ＦＦｈ（リピート信号を含む）、区切り信号、…
【００６７】
上記の場合、００ｈ、０１ｈは共に繰り返し回数が１であり、連続しているので、これらを１つのレングス情報に結合する。レングス情報“００ｈ”は後続する１バイトのデータ、レングス情報“０１ｈ”に後続する２バイトのデータを出力することを意味している。従って、００ｈと０１ｈの結合後のレングス情報は０２ｈとなる。つまり、レングス情報結合部１０３２内のバッファは次のように更新される。
０２ｈ、００ｈ、ＦＦｈ
また、０２ｈと００ｈは共に繰り返し回数が１であり、連続しているわけであるから、これらを結合して、バッファは最終的に次のように更新される。
０３ｈ、ＦＦｈ
【００６８】
レングス情報結合部１０３２は、上記の０３ｈ、リピート信号を含むＦＦｈをデータ情報結合部１０３３に出力することになる。
【００６９】
図２３Ａ乃至２３Ｄは、図８Ａ乃至８Ｄで示した符号データのパターンのうち、データ変換装置１から出力されるパターンを無地に、出力されないパターンを網掛けにしたリストを示す図である。この網掛けで示したパターンは、データ変換装置１が変換の対象とするパターンを表している。具体的には、データ変換装置１は、復号により得られるバイト数が７バイト以上になる符号データを、復号により得られるバイト数がちょうど６バイトになる符号データに変換する。また、データ変換装置１は、繰り返し回数１のレングス情報が２つ隣り合った位置に連続して存在している場合はそれらの符号データを、別の１つの符号データに変換する。つまり、リストでは、復号により得られるバイト数が７バイト以上になるパターン、および、繰り返し回数１のレングス情報が２つ以上隣り合っているパターンが網掛けになっている。データ変換装置１の出力する符号データには網掛けのパターンは含まれないため、その符号データを復号する装置は、網掛けのパターンに対しての処理を行う必要がない。
【００７０】
図２４は、図２３Ａ乃至２３Ｄで示した符号データのパターンのうち、データ変換装置１から出力されるパターンのみを列挙したリストである。パターン数は全部で３２パターンであり、かつ、６バイトの復号に必要な符号データは最大でも８バイトである。また、各パターンを復号した結果はちょうど６バイトになるため、復号を行うときに単位符号の分割を考慮する必要がない。このため、データ変換装置１の出力する符号データだけを復号する復号装置は、任意の符号データを復号する復号装置と比較して回路規模が小さく、処理遅延時間が小さく、かつ、低コストで実現することが可能である。
【００７１】
以上の構成において、データ変換装置１の動作を、図３に示す符号データを例に説明する。
【００７２】
符号データ入力部１０１は、前述の通り、受信した符号データを１２バイト毎にレングス情報抽出部１０２に対して転送する。したがって、符号データ入力部１０１は、先ず、「０４，０１，０２,０３，０４，０５，ＦＥ，０６，０３，０７，０８，０９」をレングス情報抽出部１０２に転送する。そして、次のステージで、符号データ入力部１０１は、「０Ａ，ＦＡ，０Ｂ，０５，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０，１１，ＦＡ，１２」をレングス情報抽出部１０２に転送する。
【００７３】
レングス情報抽出部１０２は、１２バイトの符号データ「０４，０１，０２,０３，０４，０５，ＦＥ，０６，０３，０７，０８，０９」を受信すると、レングス情報とデータ情報とに分けて内部バッファに格納する。また、レングス情報抽出部１０２は、続く１２バイトの符号データ「０Ａ，ＦＡ，０Ｂ，０５，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０，１１，ＦＡ，１２」を受信すると、レングス情報とデータ情報とに分けて内部バッファに格納する。そして、レングス情報抽出部１０２は、前述の通り符号データをレングス情報とデータ情報とに分けて符号データ変換部１０３に対して転送する。ここでの分割の手順については後述するが、まず分割した結果だけを説明すると以下の通りである。
【００７４】
上記の場合、レングス情報は「０４，ＦＥ，０３，ＦＡ，０５，ＦＡ」である。また、データ情報は「０１，０２，０３，０４，０５，０６，０７，０８，０９，０Ａ，０Ｂ，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０，１１，１２」である。
【００７５】
レングス情報およびデータ情報は、レングス情報抽出部１０２内部のレングス情報バッファ１０２２およびデータ情報バッファ１０２３にそれぞれ一時的に記憶されて、符号データ変換部１０３の要求に応じて転送される。したがって、符号データ変換部１０３はレングス情報として「０４，ＦＥ，０３，ＦＡ，０５，ＦＡ」の先頭からバイト単位で受信することになる。また、符号データ変換部１０３はデータ情報として「０１，０２，０３，０４，０５，０６，０７，０８，０９，０Ａ，０Ｂ，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０，１１，１２」の先頭からバイト単位で受信することになる。
【００７６】
符号データ変換部１０３は、前述の通りレングス情報およびデータ情報をレングス情報抽出部１０２から受信して、変換した符号データを符号データ出力部１０４に対して転送する。ここでの変換の手順は後述するが、まず出力結果だけを説明すると以下の通りである。ここでの符号データ転送は、復号後のバイト数が６バイトになる毎に行われるため、数回に分かれて転送が行われる。
【００７７】
１サイクル目では「０５，０１，０２，０３，０４，０５，０６」が転送される。この符号データは図２４におけるパターン２に該当する。
【００７８】
２サイクル目では「ＦＦ，０６，０３，０７，０８，０９，０Ａ」が転送される。この符号データは図２４におけるパターン１４に該当する。
【００７９】
３サイクル目では「ＦＢ，０Ｂ」が転送される。この符号データは図２４におけるパターン１に該当する。
【００８０】
４サイクル目では「０５，０Ｂ，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０」が転送される。この符号データは図２４におけるパターン２に該当する。
【００８１】
５サイクル目では「００，１１，ＦＣ，１２」が転送される。この符号データは図２４におけるパターン２５に該当する。
【００８２】
６サイクルめは「ＦＦ，１２」が転送される。６サイクルめの符号データは入力の符号データが途中で終了したため、例外的に復号後のバイト数が６未満で転送が行われている。この符号データは２バイトのみであるため、図２４における複数のパターン１３・１４・１６・１８・１９・２０・２３・２４に該当する。
【００８３】
符号データ出力部１０４は、前述の通り符号データ変換部１０３から受信した符号データを出力する。出力は符号データ変換部１０３からの転送と同じ内容であり、すべての転送サイクルにおける符号データをつなげると図２５に示した符号データとなる。この符号データは、図２４で示したパターンのみを含む符号データとなっており、前述した通り、この符号データを復号する復号装置は回路規模が小さく、処理遅延時間が小さく、かつ、低コストで実現することが可能である。
【００８４】
次に、レングス情報抽出部１０２および符号データ変換部１０３の詳細な動作手順について説明する。
以下、図９におけるレングス情報抽出部１０２の動作を、図３に示す符号データを例に説明する。前述の通り、符号データ入力部１０１は、受信した符号データを１２バイト毎にレングス情報抽出部１０２内のレングス情報判別部１０２１に対して転送する。したがって、符号データはまず「０４，０１，０２,０３，０４，０５，ＦＥ，０６，０３，０７，０８，０９」が転送され、次に「０Ａ，ＦＡ，０Ｂ，０５，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０，１１，ＦＡ，１２」が転送される。
【００８５】
最初の処理サイクルでは、レングス情報判別部１０２１は「０４，０１，０２,０３，０４，０５，ＦＥ，０６，０３，０７，０８，０９」を受信して、この符号データの各バイトをバイト０からバイト１１までに割り当てる。そして、「最初の処理サイクル」であるため、図１１で示した判別回路により、「この処理サイクルでバイト０はレングス情報」と判断される。また、図１０で示した判別回路により、「バイト０はレングス情報」と判断される。そして、バイト０の値は０４であり、図２により「バイト０のバイト数情報が５」であることから、図示しない判別回路により「このサイクルでバイト６はレングス情報」と判断される。また、図示しない判別回路により「バイト６はレングス情報」と判断される。そして、バイト６の値はＦＥであり、図２により「バイト６のバイト数情報が１」であることから、図示しない判別回路により「このサイクルでバイト８はレングス情報」と判断される。また、図示しない判別回路により「バイト８はレングス情報」と判断される。そして、バイト８の値は０３であり、図２により「バイト８のバイト数情報が４」であることから、図１３で示した判別回路により「１つ後の処理サイクルでバイト１はレングス情報」と判断される。ここまでの処理により、バイト０、バイト６、および、バイト８がレングス情報であると判断され、これらのバイトはレングス情報バッファ１０２２に転送され、これら以外のバイトはデータ情報バッファ１０２３に転送される。したがって、この処理サイクルで、レングス情報バッファ１０２２には「０４，ＦＥ，０３」が転送される。また、この処理サイクルで、データ情報バッファ１０２３には「０１，０２，０３，０４，０５，０６，０７，０８，０９」が転送される。
【００８６】
次の処理サイクルでは、レングス情報判別部１０２１は「０Ａ，ＦＡ，０Ｂ，０５，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０，１１，ＦＡ，１２」を受信して、この符号データの各バイトをバイト０からバイト１１までに割り当てる。ここで、前の処理サイクルにおいて、図１３で示した判別回路により「１つ後の処理サイクルでバイト１はレングス情報」と判断された。そのため、図１２で示した判別回路により「バイト１はレングス情報」と判断される。そして、バイト１の値はＦＡであり、図２により「バイト１のバイト数情報が１」であることから、図１７で示した判別回路により「この処理サイクルでバイト３はレングス情報」と判断される。また、図１６で示した判別回路により「バイト３はレングス情報」と判断される。そして、バイト３の値は０５であり、図２により「バイト３のバイト数情報が６」であることから、図示しない判別回路により「この処理サイクルでバイト１０はレングス情報」と判断される。また、図示しない判別回路により「バイト１０はレングス情報」と判断される。そして、バイト１０の値はＦＡであり、図２により「バイト１０のバイト数情報が１」であることから、図１１で示した判別回路により「１つ後の処理サイクルでバイト０はレングス情報」と判断される。ここまでの処理により、バイト１、バイト３、および、バイト１０がレングス情報であると判断され、これらのバイトはレングス情報バッファ１０２２に転送され、これら以外のバイトはデータ情報バッファ１０２３に転送される。したがって、この処理サイクルで、レングス情報バッファ１０２２には「ＦＡ，０５，ＦＡ」が転送される。また、この処理サイクルで、データ情報バッファ１０２３には「０Ａ，０Ｂ，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０，１１，１２」が転送される。
【００８７】
したがって、レングス情報バッファ１０２２には「０４，ＦＥ，０３，ＦＡ，０５，ＦＡ」が格納される。また、データ情報バッファ１０２３には「０１，０２，０３，０４，０５，０６，０７，０８，０９，０Ａ，０Ｂ，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０，１１，１２」が格納される。
【００８８】
次に、図２０における符号データ変換部１０３の動作を、図３に示す符号データを例に説明する。前述の通り、レングス情報抽出部１０２は、符号データをレングス情報とデータ情報とに分けて内部バッファに格納し、符号データ変換部１０３の要求に応じて転送する。前述の通り、レングス情報は「０４，ＦＥ，０３，ＦＡ，０５，ＦＡ」である。また、データ情報は「０１，０２，０３，０４，０５，０６，０７，０８，０９，０Ａ，０Ｂ，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０，１１，１２」である。
【００８９】
レングス情報分割部１０３１は、前述の通り図２１で示したフローチャートに従って動作する。以下に図中の手順番号を使って説明する。
【００９０】
以下に、１サイクル目の動作を示す。
手順２１０１：積算復号後バイト数を０に初期化する。
手順２１０２：レングス情報の入力は終了していないため、手順２１０３に進む。
手順２１０３：１バイトのレングス情報（０４）を取得する。
手順２１０４：レングス情報（０４）を解析して、データ情報のバイト数（５）と繰り返し回数（１）を取得する。
手順２１０５：積算復号後バイト数（０）に５×１＝５を積算して、積算復号後バイト数は５になる。
手順２１０６：積算復号後バイト数（５）は６より小さいので、手順２１０７に進む。
手順２１０７：レングス情報（０４）をレングス情報結合部１０３２に対して出力する。
手順２１０２：レングス情報の入力は終了していないため、手順２１０３に進む。
手順２１０３：１バイトのレングス情報（ＦＥ）を取得する。
手順２１０４：レングス情報（ＦＥ）を解析して、データ情報のバイト数（１）と繰り返し回数（３）を取得する。
手順２１０５：積算復号後バイト数（５）に１×３＝３を積算して、積算復号後バイト数は８になる。
手順２１０６：積算復号後バイト数（８）は６より小さくないので、手順２１０８に進む。
手順２１０８：積算復号後バイト数（８）は６と等しくないので、手順２１１１に進む。
手順２１１１：繰り返し回数（３）は１と等しくないので、手順２１１５に進む。
手順２１１５：レングス情報（ＦＥ）を前部と後部とに分割する。前述の通り計算して、レングス情報（前部）はバイト数情報が１で繰り返し回数が１のレングス情報（００）となる。また、レングス情報（後部）はバイト数情報が１で繰り返し回数が２のレングス情報（ＦＦ）となる。
手順２１１６：レングス情報（前部）（００）をレングス情報結合部１０３２に対して出力する。
手順２１１７：レングス情報（後部）（ＦＦ）にリピート属性を付加する。
手順２１１８：レングス情報（後部）（ＦＦ・リピート）を次に取得するレングス情報として内部バッファに記憶して、手順２１１０に進む。
手順２１１０：区切り信号をレングス情報結合部１０３２に転送して、手順２１０１に進む。
【００９１】
以下に、２サイクル目の動作を示す。
手順２１０１：積算復号後バイト数を０に初期化する。
手順２１０２：レングス情報の入力は終了していないため、手順２１０３に進む。
手順２１０３：内部バッファに次に取得するレングス情報（ＦＦ・リピート）が記憶されているため、１バイトのレングス情報としてこのレングス情報（ＦＦ・リピート）を取得する。
手順２１０４：レングス情報（ＦＦ・リピート）を解析して、データ情報のバイト数（１）と繰り返し回数（２）を取得する。
手順２１０５：積算復号後バイト数（０）に１×２＝２を積算して、積算復号後バイト数は２になる。
手順２１０６：積算復号後バイト数（２）は６より小さいので、手順２１０７に進む。
手順２１０７：レングス情報（ＦＦ・リピート）をレングス情報結合部１０３２に対して出力する。
手順２１０２：レングス情報の入力は終了していないため、手順２１０３に進む。
手順２１０３：１バイトのレングス情報（０３）を取得する。
手順２１０４：レングス情報（０３）を解析して、データ情報のバイト数（４）と繰り返し回数（１）を取得する。
手順２１０５：積算復号後バイト数（２）に４×１＝４を積算して、積算復号後バイト数は６になる。
手順２１０６：積算復号後バイト数（６）は６より小さくないので、手順２１０８に進む。
手順２１０８：積算復号後バイト数（６）は６と等しいので、手順２１０９に進む。
手順２１０９：レングス情報（０３）をレングス情報結合部１０３２に対して出力して、手順２１１０に進む。
手順２１１０：区切り信号をレングス情報結合部１０３２に転送して、手順２１０１に進む。
【００９２】
以下に、３サイクル目の動作を示す。
手順２１０１：積算復号後バイト数を０に初期化する。
手順２１０２：レングス情報の入力は終了していないため、手順２１０３に進む。
手順２１０３：１バイトのレングス情報（ＦＡ）を取得する。
手順２１０４：レングス情報（ＦＡ）を解析して、データ情報のバイト数（１）と繰り返し回数（７）を取得する。
手順２１０５：積算復号後バイト数（０）に１×７＝７を積算して、積算復号後バイト数は７になる。
手順２１０６：積算復号後バイト数（７）は６より小さくないので、手順２１０８に進む。
手順２１０８：積算復号後バイト数（７）は６と等しくないので、手順２１１１に進む。
手順２１１１：繰り返し回数（７）は１と等しくないので、手順２１１５に進む。
手順２１１５：レングス情報（ＦＡ）を前部と後部とに分割する。前述の通り計算して、レングス情報（前部）はバイト数情報が１で繰り返し回数が６のレングス情報（ＦＢ）となる。また、レングス情報（後部）はバイト数情報が１で繰り返し回数が１のレングス情報（００）となる。
手順２１１６：レングス情報（前部）（ＦＢ）をレングス情報結合部１０３２に対して出力する。
手順２１１７：レングス情報（後部）（００）にリピート属性を付加する。
手順２１１８：レングス情報（後部）（００・リピート）を次に取得するレングス情報として内部バッファに記憶して、手順２１１０に進む。
手順２１１０：区切り信号をレングス情報結合部１０３２に転送して、手順２１０１に進む。
【００９３】
以下に、４サイクル目の動作を示す。
手順２１０１：積算復号後バイト数を０に初期化する。
手順２１０２：レングス情報の入力は終了していないため、手順２１０３に進む。
手順２１０３：内部バッファに次に取得するレングス情報（００・リピート）が記憶されているため、１バイトのレングス情報としてこのレングス情報（００・リピート）を取得する。
手順２１０４：レングス情報（００・リピート）を解析して、データ情報のバイト数（１）と繰り返し回数（１）を取得する。
手順２１０５：積算復号後バイト数（０）に１×１＝１を積算して、積算復号後バイト数は１になる。
手順２１０６：積算復号後バイト数（１）は６より小さいので、手順２１０７に進む。
手順２１０７：レングス情報（００・リピート）をレングス情報結合部１０３２に対して出力する。
手順２１０２：レングス情報の入力は終了していないため、手順２１０３に進む。
手順２１０３：１バイトのレングス情報（０５）を取得する。
手順２１０４：レングス情報（０５）を解析して、データ情報のバイト数（６）と繰り返し回数（１）を取得する。
手順２１０５：積算復号後バイト数（１）に６×１＝６を積算して、積算復号後バイト数は７になる。
手順２１０６：積算復号後バイト数（７）は６より小さくないので、手順２１０８に進む。
手順２１０８：積算復号後バイト数（７）は６と等しくないので、手順２１１１に進む。
手順２１１１：繰り返し回数（１）は１と等しいので、手順２１１２に進む。
手順２１１２：レングス情報（０５）を前部と後部とに分割する。前述の通り計算して、レングス情報（前部）はバイト数情報が５で繰り返し回数が１のレングス情報（０４）となる。また、レングス情報（後部）はバイト数情報が１で繰り返し回数が１のレングス情報（００）となる。
手順２１１３：レングス情報（前部）（０４）をレングス情報結合部１０３２に対して出力する。
手順２１１４：レングス情報（後部）（００）を次に取得するレングス情報として内部バッファに記憶して、手順２１１０に進む。
手順２１１０：区切り信号をレングス情報結合部１０３２に転送して、手順２１０１に進む。
【００９４】
以下に、５サイクル目の動作を示す。
手順２１０１：積算復号後バイト数を０に初期化する。
手順２１０２：レングス情報の入力は終了していないため、手順２１０３に進む。
手順２１０３：内部バッファに次に取得するレングス情報（００）が記憶されているため、１バイトのレングス情報としてこのレングス情報（００）を取得する。
手順２１０４：レングス情報（００）を解析して、データ情報のバイト数（１）と繰り返し回数（１）を取得する。
手順２１０５：積算復号後バイト数（０）に１×１＝１を積算して、積算復号後バイト数は１になる。
手順２１０６：積算復号後バイト数（１）は６より小さいので、手順２１０７に進む。
手順２１０７：レングス情報（００）をレングス情報結合部１０３２に対して出力する。
手順２１０２：レングス情報の入力は終了していないため、手順２１０３に進む。
手順２１０３：１バイトのレングス情報（ＦＡ）を取得する。
手順２１０４：レングス情報（ＦＡ）を解析して、データ情報のバイト数（１）と繰り返し回数（７）を取得する。
手順２１０５：積算復号後バイト数（１）に１×７＝７を積算して、積算復号後バイト数は８になる。
手順２１０６：積算復号後バイト数（８）は６より小さくないので、手順２１０８に進む。
手順２１０８：積算復号後バイト数（８）は６と等しくないので、手順２１１１に進む。
手順２１１１：繰り返し回数（７）は１と等しくないので、手順２１１５に進む。
手順２１１５：レングス情報（ＦＡ）を前部と後部とに分割する。前述の通り計算して、レングス情報（前部）はバイト数情報が１で繰り返し回数が５のレングス情報（ＦＣ）となる。また、レングス情報（後部）はバイト数情報が１で繰り返し回数が２のレングス情報（ＦＦ）となる。
手順２１１６：レングス情報（前部）（ＦＣ）をレングス情報結合部１０３２に対して出力する。
手順２１１７：レングス情報（後部）（ＦＦ）にリピート属性を付加する。
手順２１１８：レングス情報（後部）（ＦＦ・リピート）を次に取得するレングス情報として内部バッファに記憶して、手順２１１０に進む。
手順２１１０：区切り信号をレングス情報結合部１０３２に転送して、手順２１０１に進む。
【００９５】
以下に、６サイクル目の動作を示す。
手順２１０１：積算復号後バイト数を０に初期化する。
手順２１０２：レングス情報の入力は終了していないため、手順２１０３に進む。
手順２１０３：内部バッファに次に取得するレングス情報（ＦＦ・リピート）が記憶されているため、１バイトのレングス情報としてこのレングス情報（ＦＦ・リピート）を取得する。
手順２１０４：レングス情報（ＦＦ・リピート）を解析して、データ情報のバイト数（１）と繰り返し回数（２）を取得する。
手順２１０５：積算復号後バイト数（０）に１×２＝２を積算して、積算復号後バイト数は２になる。
手順２１０６：積算復号後バイト数（２）は６より小さいので、手順２１０７に進む。
手順２１０７：レングス情報（ＦＦ・リピート）をレングス情報結合部１０３２に対して出力する。
手順２１０２：レングス情報の入力は終了したため、処理を終了する。
【００９６】
以上に示したように、レングス情報分割部１０３１はレングス情報結合部１０３２に対して以下のようにレングス情報および区切り信号を転送する。
１サイクルめ：０４，００，区切り信号
２サイクルめ：ＦＦ・リピート，０３，区切り信号
３サイクルめ：ＦＢ，区切り信号
４サイクルめ：００・リピート，０４，区切り信号
５サイクルめ：００，ＦＣ，区切り信号
６サイクルめ：ＦＦ・リピート
【００９７】
レングス情報結合部１０３２は、前述の通り図２２で示したフローチャートに従って動作する。以下に図中の手順番号を使って説明する。
【００９８】
以下に、１サイクルめの動作を示す。
手順２２０１：一時バッファを初期化してなにも格納されていない状態にする。
手順２２０２：レングス情報分割部１０３１からレングス情報（０４）を１バイト受信する。
手順２２０３：レングス情報を一時バッファに格納する（０４）。
手順２２０３：レングス情報分割部１０３１からの区切り信号の入力がなく、かつ、レングス情報の入力は終了していないため、手順２２０２に進む。
手順２２０２：レングス情報分割部１０３１からレングス情報（００）を１バイト受信する。
手順２２０３：レングス情報を一時バッファに格納する（０４，００）。
手順２２０３：レングス情報分割部１０３１からの区切り信号が入力されるため、手順２２０５に進む。
手順２２０５：一時バッファ（０４，００）に記憶されているレングス情報を先頭から調べると、繰り返し回数１のレングス情報が２つ隣り合った位置に連続して存在している（０４，００）ため、手順２２０６に進む。
手順２２０６：２つ隣り合っている繰り返し回数１のレングス情報（０４，００）を結合して、別の新しい１つのレングス情報（０５）に変換する。一時バッファを更新して（０５）とし、手順２２０５に進む。
手順２２０５：一時バッファ（０５）に記憶されているレングス情報を先頭から調べると、繰り返し回数１のレングス情報が２つ隣り合った位置に連続して存在していないため、手順２２０７に進む。
手順２２０７：一時バッファ（０５）に記憶されているレングス情報（０５）をデータ情報混合部１０３３に対して転送する。
手順２２０８：レングス情報分割部１０３１からのレングス情報の入力は終了していないため、手順２２０１に進む。
【００９９】
以下に、２サイクル目の動作を示す。
手順２２０１：一時バッファを初期化してなにも格納されていない状態にする。
手順２２０２：レングス情報分割部１０３１からレングス情報（ＦＦ・リピート）を１バイト受信する。
手順２２０３：レングス情報を一時バッファに格納する（ＦＦ・リピート）。
手順２２０３：レングス情報分割部１０３１からの区切り信号の入力がなく、かつ、レングス情報の入力は終了していないため、手順２２０２に進む。
手順２２０２：レングス情報分割部１０３１からレングス情報（０３）を１バイト受信する。
手順２２０３：レングス情報を一時バッファに格納する（ＦＦ・リピート，０３）。
手順２２０３：レングス情報分割部１０３１からの区切り信号が入力されるため、手順２２０５に進む。
手順２２０５：一時バッファ（ＦＦ・リピート，０３）に記憶されているレングス情報を先頭から調べると、繰り返し回数１のレングス情報が２つ隣り合った位置に連続して存在していないため、手順２２０７に進む。
手順２２０７：一時バッファ（ＦＦ・リピート，０３）に記憶されているレングス情報（ＦＦ・リピート，０３）をデータ情報混合部１０３３に対して転送する。このとき、１つめのレングス情報（ＦＦ・リピート）にはリピート属性が付加されており、転送時にもリピート属性を付加したまま転送する。
手順２２０８：レングス情報分割部１０３１からのレングス情報の入力は終了していないため、手順２２０１に進む。
【０１００】
以下に、３サイクル目の動作を示す。
手順２２０１：一時バッファを初期化してなにも格納されていない状態にする。
手順２２０２：レングス情報分割部１０３１からレングス情報（ＦＢ）を１バイト受信する。
手順２２０３：レングス情報を一時バッファに格納する（ＦＢ）。
手順２２０３：レングス情報分割部１０３１からの区切り信号が入力されるため、手順２２０５に進む。
手順２２０５：一時バッファ（ＦＢ）に記憶されているレングス情報を先頭から調べると、繰り返し回数１のレングス情報が２つ隣り合った位置に連続して存在していないため、手順２２０７に進む。
手順２２０７：一時バッファ（ＦＢ）に記憶されているレングス情報（ＦＢ）をデータ情報混合部１０３３に対して転送する。
手順２２０８：レングス情報分割部１０３１からのレングス情報の入力は終了していないため、手順２２０１に進む。
【０１０１】
以下に、４サイクルめの動作を示す。
手順２２０１：一時バッファを初期化してなにも格納されていない状態にする。
手順２２０２：レングス情報分割部１０３１からレングス情報（００・リピート）を１バイト受信する。
手順２２０３：レングス情報を一時バッファに格納する（００・リピート）。
手順２２０４：レングス情報分割部１０３１からの区切り信号の入力がなく、かつ、レングス情報の入力は終了していないため、手順２２０２に進む。
手順２２０２：レングス情報分割部１０３１からレングス情報（０４）を１バイト受信する。
手順２２０３：レングス情報を一時バッファに格納する（００・リピート，０４）。
手順２２０３：レングス情報分割部１０３１からの区切り信号が入力されるため、手順２２０５に進む。
手順２２０５：一時バッファ（００・リピート，０４）に記憶されているレングス情報を先頭から調べると、繰り返し回数１のレングス情報が２つ隣り合った位置に連続して存在している（００・リピート，０４）ため、手順２２０６に進む。
手順２２０６：２つ隣り合っている繰り返し回数１のレングス情報（００・リピート，０４）を結合して、別の新しい１つのレングス情報（０５・リピート）に変換する。ここで、元の１つめのレングス情報（００・リピート）にリピート属性が付加されているため、新しい１つのレングス情報（０５・リピート）にもリピート属性を付加している。そして、一時バッファを更新して（０５・リピート）とし、手順２２０５に進む。
手順２２０５：一時バッファ（０５・リピート）に記憶されているレングス情報を先頭から調べると、繰り返し回数１のレングス情報が２つ隣り合った位置に連続して存在していないため、手順２２０７に進む。
手順２２０７：一時バッファ（０５・リピート）に記憶されているレングス情報（０５・リピート）をデータ情報混合部１０３３に対して転送する。このとき、レングス情報（０５・リピート）にはリピート属性が付加されており、転送時にもリピート属性を付加したまま転送する。
手順２２０８：レングス情報分割部１０３１からのレングス情報の入力は終了していないため、手順２２０１に進む。
【０１０２】
以下に、５サイクル目の動作を示す。
手順２２０１：一時バッファを初期化してなにも格納されていない状態にする。
手順２２０２：レングス情報分割部１０３１からレングス情報（００）を１バイト受信する。
手順２２０３：レングス情報を一時バッファに格納する（００）。
手順２２０３：レングス情報分割部１０３１からの区切り信号の入力がなく、かつ、レングス情報の入力は終了していないため、手順２２０２に進む。
手順２２０２：レングス情報分割部１０３１からレングス情報（ＦＣ）を１バイト受信する。
手順２２０３：レングス情報を一時バッファに格納する（００，ＦＣ）。
手順２２０３：レングス情報分割部１０３１からの区切り信号が入力されるため、手順２２０５に進む。
手順２２０５：一時バッファ（００，ＦＣ）に記憶されているレングス情報を先頭から調べると、繰り返し回数１のレングス情報が２つ隣り合った位置に連続して存在していないため、手順２２０７に進む。
手順２２０７：一時バッファ（００，ＦＣ）に記憶されているレングス情報（００，ＦＣ）をデータ情報混合部１０３３に対して転送する。
手順２２０８：レングス情報分割部１０３１からのレングス情報の入力は終了していないため、手順２２０１に進む。
【０１０３】
以下に、６サイクルめの動作を示す。
手順２２０１：一時バッファを初期化してなにも格納されていない状態にする。
手順２２０２：レングス情報分割部１０３１からレングス情報（ＦＦ・リピート）を１バイト受信する。
手順２２０３：レングス情報を一時バッファに格納する（ＦＦ・リピート）。
手順２２０３：レングス情報の入力は終了したため、手順２２０５に進む。
手順２２０５：一時バッファ（ＦＦ・リピート）に記憶されているレングス情報を先頭から調べると、繰り返し回数１のレングス情報が２つ隣り合った位置に連続して存在していないため、手順２２０７に進む。
手順２２０７：一時バッファ（ＦＦ・リピート）に記憶されているレングス情報（ＦＦ・リピート）をデータ情報混合部１０３３に対して転送する。このとき、レングス情報（ＦＦ・リピート）にはリピート属性が付加されており、転送時にもリピート属性を付加したまま転送する。
手順２２０８：レングス情報分割部１０３１からのレングス情報の入力は終了したため、処理を終了する。
【０１０４】
以上に示したように、レングス情報結合部１０３２はデータ情報混合部１０３３に対して以下のようにレングス情報を転送する。
１サイクルめ：０５
２サイクルめ：ＦＦ・リピート，０３
３サイクルめ：ＦＢ
４サイクルめ：０５・リピート
５サイクルめ：００，ＦＣ
６サイクルめ：ＦＦ・リピート
【０１０５】
次に、データ情報混合部１０３３の動作を以下に説明する。
【０１０６】
先ず、１サイクル目の動作を示す。
【０１０７】
データ情報混合部１０３３は、レングス情報結合部１０３２からレングス情報（０５）を受信して、符号データ出力部１０４に対して出力する（０５）。
【０１０８】
データ情報混合部１０３３は、受信したレングス情報（０５）のバイト数情報（６）を読み取り、バイト数情報（６）の数だけデータ情報バッファ１０２３からデータ情報（０１，０２，０３，０４，０５，０６）を受信して、符号データ出力部１０４に対して出力する（０１，０２，０３，０４，０５，０６）。
【０１０９】
次に、２サイクルめの動作を示す。
【０１１０】
データ情報混合部１０３３は、レングス情報結合部１０３２からレングス情報（ＦＦ・リピート）を受信して、符号データ出力部１０４に対して出力する（ＦＦ）。
【０１１１】
データ情報混合部１０３３は、受信したレングス情報（ＦＦ・リピート）のバイト数情報（１）を読み取るが、レングス情報にはリピート属性が付加されているため、直前に転送したデータ情報の最後の１バイト（０６）を再利用して残りのバイト数分（０）のデータ情報のみをデータ情報バッファ１０２３からデータ情報（なし）を受信して結合し、符号データ出力部１０４に対して出力する（０６）。
【０１１２】
さらに、データ情報混合部１０３３は、レングス情報結合部１０３２からレングス情報（０３）を受信して、符号データ出力部１０４に対して出力する（０３）。
【０１１３】
データ情報混合部１０３３は、受信したレングス情報（０３）のバイト数情報（４）を読み取り、バイト数情報（４）の数だけデータ情報バッファ１０２３からデータ情報（０７，０８，０９，０Ａ）を受信して、符号データ出力部１０４に対して出力する（０７，０８，０９，０Ａ）。
【０１１４】
以下に、３サイクル目の動作を示す。
【０１１５】
データ情報混合部１０３３は、レングス情報結合部１０３２からレングス情報（ＦＢ）を受信して、符号データ出力部１０４に対して出力する（ＦＢ）。
【０１１６】
データ情報混合部１０３３は、受信したレングス情報（ＦＢ）のバイト数情報（１）を読み取り、バイト数情報（１）の数だけデータ情報バッファ１０２３からデータ情報（０Ｂ）を受信して、符号データ出力部１０４に対して出力する（０Ｂ）。
【０１１７】
以下に、４サイクルめの動作を示す。
【０１１８】
データ情報混合部１０３３は、レングス情報結合部１０３２からレングス情報（０５・リピート）を受信して、符号データ出力部１０４に対して出力する（０５）。
【０１１９】
データ情報混合部１０３３は、受信したレングス情報（０５・リピート）のバイト数情報（６）を読み取るが、レングス情報にはリピート属性が付加されているため、直前に転送したデータ情報の最後の１バイト（０Ｂ）を再利用して残りのバイト数分（５）のデータ情報のみをデータ情報バッファ１０２３からデータ情報（０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０）を受信して結合し、符号データ出力部１０４に対して出力する（０Ｂ，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０）。
【０１２０】
以下に、５サイクル目の動作を示す。
【０１２１】
データ情報混合部１０３３は、レングス情報結合部１０３２からレングス情報（００）を受信して、符号データ出力部１０４に対して出力する（００）。
【０１２２】
データ情報混合部１０３３は、受信したレングス情報（００）のバイト数情報（１）を読み取り、バイト数情報（１）の数だけデータ情報バッファ１０２３からデータ情報（１１）を受信して、符号データ出力部１０４に対して出力する（１１）。
【０１２３】
さらに、データ情報混合部１０３３は、レングス情報結合部１０３２からレングス情報（ＦＣ）を受信して、符号データ出力部１０４に対して出力する（ＦＣ）。
【０１２４】
データ情報混合部１０３３は、受信したレングス情報（ＦＣ）のバイト数情報（１）を読み取り、バイト数情報（１）の数だけデータ情報バッファ１０２３からデータ情報（１２）を受信して、符号データ出力部１０４に対して出力する（１２）。
【０１２５】
以下に、６サイクル目の動作を示す。
【０１２６】
データ情報混合部１０３３は、レングス情報結合部１０３２からレングス情報（ＦＦ・リピート）を受信して、符号データ出力部１０４に対して出力する（ＦＦ）。
【０１２７】
データ情報混合部１０３３は、受信したレングス情報（ＦＦ・リピート）のバイト数情報（１）を読み取るが、レングス情報にはリピート属性が付加されているため、直前に転送したデータ情報の最後の１バイト（１２）を再利用して残りのバイト数分（０）のデータ情報のみをデータ情報バッファ１０２３からデータ情報（なし）を受信して結合し、符号データ出力部１０４に対して出力する（１２）。
【０１２８】
以上に示したように、データ情報混合部１０３３は符号データ出力部１０４に対して以下のように符号データを転送（出力）する。
１サイクルめ：０５，０１，０２，０３，０４，０５，０６
２サイクルめ：ＦＦ，０６，０３，０７，０８，０９，０Ａ
３サイクルめ：ＦＢ，０Ｂ
４サイクルめ：０５，０Ｂ，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０
５サイクルめ：００，１１，ＦＣ，１２
６サイクルめ：ＦＦ，１２
【０１２９】
以上で、レングス情報抽出部１０２および符号データ変換部１０３の詳細な動作手順についての説明を終了する。
【０１３０】
上記実施形態に従えば、一旦、本実施形態で説明したデータ変換装置で変換処理を行なうと、６バイト（スループット６）の復号データを生成する符号化データを生成することが可能になる。しかも、その６バイトの復号データを生成するための１以上の単位符号化データの個数も少なくなり、効率良く復号可能なデータに変換することが可能になる。
【０１３１】
なお、実施形態では、スループット６を一例として説明したが、同様に他のスループットに対しても本発明は適用可能である。すなわち、スループットＭを実現する場合には、以下の構成を備えればよい。すなわち、
レングス情報とデータ情報の組を単位符号とするパックビッツ符号化された符号化データを、１つのパックビッツ符号化データのレングス情報が表わし得る復号後の出力データの最大個数よりも少ないＭ個以下の出力データの個数を示すレングス情報とデータ情報で表わされる新たなパックビッツ符号化データに変換するデータ変換装置であって、
変換対象の符号化データを入力する入力手段と、
入力した符号化データを、レングス情報とデータ情報とに分離する分離手段と、
該分離手段で得られたレングス情報を入力し、入力したレングス情報が示す復号後の出力データの個数を累積カウントするカウント手段と、
前記分離手段で分離されたレングス情報を入力し、分割するレングス情報分割手段であって、（ａ）前記カウント手段でカウントした値が前記Ｍより小さい間は入力したレングス情報を出力し、（ｂ）前記カウント手段でカウントした値が前記Ｍになった場合、着目レングス情報を出力し、前記Ｍに達したことを示す区切り情報を出力すると共に、前記カウント手段をリセットし、（ｃ）前記カウント手段でカウントした値が前記Ｍより大きくなった場合、前記着目レングス情報を、前記Ｍと前記着目レングス情報の直前のレングス情報までのカウントした値との差分を示す第１のレングス情報と、残りの出力データ数を示す第２のレングス情報とに分割し、前記第１のレングス情報を出力し、前記Ｍに達したことを示す区切り情報を出力し、前記第２のレングス情報を前記カウント手段がカウントする初期のカウント対象として設定するレングス情報分割手段と、
該レングス情報分割手段からのレングス情報を入力し、前記区切り情報が入力される度に、既に入力したレングス情報のうち、データ情報を１回出力することを示すレングス情報が複数連続する場合、それら連続する複数のレングス情報から新たな１つのレングス情報を生成するレングス情報結合手段と、
該レングス情報結合手段を介して得られたレングス情報を参照し、当該レングス情報と前記分離手段で分離したデータ情報とを混合し、新たなパックビッツ符号化データとして出力するデータ混合手段と
を備えることを特徴とするデータ変換装置。
【０１３２】
図２６は、本第２の実施形態に係るデータ変換装置（以下、データ変換装置２）の内部構成を示すブロック図である。１０１は符号データ入力部で、１０２はレングス情報抽出部で、１０３は符号データ変換部で、１０４は符号データ出力部で、２０１は符号化部で、２０２は記憶部である。
【０１３３】
符号データ入力部１０１、レングス情報抽出部１０２、符号データ変換部１０３、符号データ出力部１０４は、先に説明した第１の実施形態におけるデータ変換装置１における各処理部と同じであるため、その説明を省略する。
【０１３４】
符号化部２０１は符号データ入力部１０１と接続されており、受信したデータ（非符号化データ）を図２に示した仕様表に適合するように、標準のランレングス符号化（パックビッツ符号化）により符号化し、符号データ入力部１０１に対して転送する。
【０１３５】
記憶部２０２は符号データ出力部１０４と接続されており、符号データ出力部１０４から受信した符号データを内部に記憶する。記憶した符号データは、出力要求に応じて出力することができる。
【０１３６】
以上の構成におけるデータ変換装置２の動作を、図５に示すデータを例に説明する。
【０１３７】
符号化部２０１は、図５のデータを受信すると、受信したデータを先頭から順番にパックビッツ符号化して符号データ入力部１０１に対して出力する。
【０１３８】
図５の場合、符号化部２０１は、同じ値を持つバイトが２つ以上連続しない限り、なるべく多くのバイト数情報を持つ単位符号となるように符号化する。図５においては、ｄ０からｄ４の５バイトは同じ値を持つバイトが２つ以上連続していないので、この５バイトを単位符号（０４，０１，０２，０３，０４，０５）に符号化する。また、符号化部２０１は、同じ値を持つバイトが２つ以上連続する場合は、なるべく多くの繰り返し回数を持つ単位符号になるように符号化を行う。図５においては、ｄ５からｄ７の３バイトが同じ値０６を持つので、この３バイトを単位符号（ＦＥ，０６）に符号化する。同様に、符号化部２０１は、ｄ８からｄ１１の４バイトは同じ値を持つバイトが２つ以上連続していないので、この４バイトを単位符号（０３，０７，０８，０９，０Ａ）に符号化する。また、符号化部２０１は、ｄ１２からｄ１８の７バイトが同じ値０Ｂを持つので、この７バイトを単位符号（ＦＡ，０Ｂ）に符号化する。また、符号化部２０１は、ｄ１９からｄ２４の６バイトは同じ値を持つバイトが２つ以上連続していないので、この５バイトを単位符号（０５，０Ｃ，０Ｄ，０Ｅ，０Ｆ，１０，１１）に符号化する。また、符号化部２０１は、ｄ２５からｄ３１の７バイトが同じ値１２を持つので、この７バイトを単位符号（ＦＡ，１２）に符号化する。したがって、符号化部２０１の出力は、図３で示した符号データとなる。
【０１３９】
符号データ入力部１０１の動作で、図３で示した符号データの例は、第１の実施形態で説明しているため省略する。同様に、続くレングス情報抽出部１０２、符号データ変換部１０３、および、符号データ出力部１０４の動作についての説明も第１の実施形態に記載したため省略する。
【０１４０】
記憶部２０２に転送される符号データは、図２５で示した符号データとなる。記憶部２０２は、この符号データを内部に記憶し、出力要求に応じて出力することが可能である。
【０１４１】
以上、示したように、データ変換装置２は、任意のデータ入力から、図２４で示したパターンだけを考慮して復号することができる符号データを生成することができる。また、その符号データを記憶して、要求に応じて出力することができる。これにより、データ変換装置２から出力される符号データを復号する復号装置は、任意の符号データを復号する復号装置と比較して回路規模が小さく、処理遅延時間が小さく、かつ、低コストで実現することが可能である。
【０１４２】
［第３の実施形態］
以下、本発明にかかる第３の実施形態を説明する。
【０１４３】
図２７は、本実施の形態に係るデータ変換装置（以下、データ変換装置３）の内部構成を示すブロック図である。１０１は符号データ入力部で、１０２はレングス情報抽出部で、１０３は符号データ変換部で、１０４は符号データ出力部で、３０１は記憶部で、３０２は復号部である。
【０１４４】
記憶部３０１は符号データ入力部１０４と接続されており、入力された符号データを内部に記憶し、記憶した符号データを符号データ入力部１０１に転送する。
【０１４５】
符号データ入力部１０１、レングス情報抽出部１０２、符号データ変換部１０３、符号データ出力部１０４は、第１の実施形態におけるデータ変換装置１における各処理部と同じであるため、説明を省略する。
【０１４６】
復号部３０２は符号データ出力部１０４と接続されており、符号データ出力部１０４が出力する符号データを受信し、受信したデータを図２に示した仕様表に適合するようにランレングス符号により復号して出力する。復号部３０２は、スループット６となるように構成されている。内部構成および動作手順は、特許文献１に示されているスループット４の復号をパターン数を変更することでスループット６に拡張したものであるため、詳細説明は省略する。ただし、復号部３０２が復号できる符号データは、任意の符号データではなく、パターン数が限定されたものである。具体的には、図８で示した２３９パターンすべてではなく、図２４で示した３２パターンのみを復号するように構成している。そのため、回路規模と遅延時間が小さくできる。
【０１４７】
以上の構成におけるデータ変換装置３の動作を、図３に示すデータを例に説明する。
【０１４８】
記憶部３０１に、図３で示す符号データが転送されてくると、記憶部３０１はこの符号データを内部に記憶する。記憶部３０１は、内部に記憶されている符号データを読み出して、符号データ入力部１０１に対して転送する。したがって、記憶部３０１の出力は、図３で示した符号データとなる。
【０１４９】
符号データ入力部１０１の動作で、図３で示した符号データの例は、第１の実施形態で説明しているため省略する。同様に、続くレングス情報抽出部１０２、符号データ変換部１０３、および、符号データ出力部１０４の動作についての説明も第１の実施形態に記載したため省略する。
【０１５０】
復号部３０２に転送される符号データは、図２５で示した符号データとなる。復号部３０２は、この符号データを復号して、スループット６で出力する。出力されるデータは図２８のタイミングチャートで示すように、クロックに同期して１サイクルあたり６バイトが復号され、出力することになる。
【０１５１】
以上、示したように、データ変換装置３は、任意の符号データ入力から、スループット６で復号したデータを出力することができる。また、復号を行う復号部３０２は、任意の符号データを復号する復号装置と比較して回路規模が小さく、処理遅延時間が小さく、かつ、低コストで実現することが可能である。
【０１５２】
以上本発明に係る実施形態を説明した。本実施形態では、１バイト（８ビット）を単位とするパックビッツ符号化データを再変換する例を説明したが、単位データの長さは１バイトに限らず、何ビットでも構わない。また、実施形態では、主要部の処理内容をフローチャートに従って説明していることからもわかるように、本発明はコンピュータに実行させるコンピュータプログラムでもって実現しても構わない。この場合、このコンピュータプログラムは、各処理部に相当する部分を関数、若しくはサブルーチンとして機能させれば良い。また、通常、コンピュータプログラムは、ＣＤ−ＲＯＭ等のコンピュータ可読記憶媒体に格納されており、それをコンピュータを有する読取部（ＣＤ−ＲＯＭドライブ）にセットし、システムにコピーもしくはインストールすることで実行可能になる。それ故、かかるコンピュータ可読記憶媒体も本発明の範疇にあることは明らかである。
【図面の簡単な説明】
【０１５３】
【図１】実施形態に係るデータ変換装置のブロック構成図である。
【図２】実施形態における符号化データのテーブルを示す図である。
【図３】実施形態における符号データの一例を示す図である。
【図４】図３に示す符号データの各バイトをレングス情報とデータ情報とを区別して示す図である。
【図５】図３および図４に示す符号データを復号して得られるデータを示す図である。
【図６】図３の符号化データを復号する場合の復号処理手順を示すフローチャートである。
【図７】１サイクルで４バイト以上のデータが得られる符号データのパターンを示す図である。
【図８Ａ】１サイクル６バイト以上のデータが得られる符号データのパターンを示す図である。
【図８Ｂ】１サイクル６バイト以上のデータが得られる符号データのパターンを示す図である。
【図８Ｃ】１サイクル６バイト以上のデータが得られる符号データのパターンを示す図である。
【図８Ｄ】１サイクル６バイト以上のデータが得られる符号データのパターンを示す図である。
【図９】第１の実施形態におけるレングス情報抽出のブロック構成図である。
【図１０】レングス情報判別部において、バイト０がレングス情報か否か判別するための回路図である。
【図１１】レングス情報判別部において、バイト０がレングス情報か否か判別するための回路を模式的に示す図である。
【図１２】レングス情報判別部において、バイト１がレングス情報か否か判別するための回路図である。
【図１３】レングス情報判別部において、バイト１がレングス情報か否か判別するための回路を模式的に示す図である。
【図１４】レングス情報判別部において、バイト２がレングス情報か否か判別するための回路図である。
【図１５】レングス情報判別部において、バイト２がレングス情報か否か判別するための回路を模式的に示す図である。
【図１６】レングス情報判別部において、バイト３がレングス情報か否か判別するための回路図である。
【図１７】レングス情報判別部において、バイト３がレングス情報か否か判別するための回路を模式的に示す図である。
【図１８】レングス情報判別部において、バイト１１がレングス情報か否か判別するための回路図である。
【図１９】レングス情報判別部において、バイト１１がレングス情報か否か判別するための回路を模式的に示す図である。
【図２０】データ変換装置内の符号データ変換部のブロック構成図である。
【図２１】レングス情報分割部におけるレングス情報の分割処理手順を示すフローチャートである。
【図２２】レングス情報結合部におけるレングス情報の結合処理の手順を示すフローチャートである。
【図２３Ａ】図８Ａで示した符号データのパターンのうち、第１の実施形態のデータ変換装置から出力されるパターンと、出力されないパターンを区別して示す図である。
【図２３Ｂ】図８Ｂで示した符号データのパターンのうち、第１の実施形態のデータ変換装置から出力されるパターンと、出力されないパターンを区別して示す図である。
【図２３Ｃ】図８Ｃで示した符号データのパターンのうち、第１の実施形態のデータ変換装置から出力されるパターンと、出力されないパターンを区別して示す図である。
【図２３Ｄ】図８Ｄで示した符号データのパターンのうち、第１の実施形態のデータ変換装置から出力されるパターンと、出力されないパターンを区別して示す図である。
【図２４】図２３Ａ乃至２３Ｄで示した符号データのパターンのうち、第１の実施形態のデータ変換装置１から出力されるパターンのみを示す図である。
【図２５】第１の実施形態が生成する符号データの例を示す図である。
【図２６】第２の実施形態のデータ変換装置のブロック構成図である。
【図２７】第３の実施形態の復号装置のブロック構成図である。
【図２８】第３の実施形態の復号装置の復号したデータとその出力タイミングを示すタイミングチャートである。
【図１】
0004989548.tif 000002
【図２】
0004989548.tif 000003
【図３】
0004989548.tif 000004
【図４】
0004989548.tif 000005
【図５】
0004989548.tif 000006
【図６】
0004989548.tif 000007
【図７】
0004989548.tif 000008
【図８Ａ】
0004989548.tif 000009
【図８Ｂ】
0004989548.tif 000010
【図８Ｃ】
0004989548.tif 000011
【図８Ｄ】
0004989548.tif 000012
【図９】
0004989548.tif 000013
【図１０】
0004989548.tif 000014
【図１１】
0004989548.tif 000015
【図１２】
0004989548.tif 000016
【図１３】
0004989548.tif 000017
【図１４】
0004989548.tif 000018
【図１５】
0004989548.tif 000019
【図１６】
0004989548.tif 000020
【図１７】
0004989548.tif 000021
【図１８】
0004989548.tif 000022
【図１９】
0004989548.tif 000023
【図２０】
0004989548.tif 000024
【図２１】
0004989548.tif 000025
【図２２】
0004989548.tif 000026
【図２３Ａ】
0004989548.tif 000027
【図２３Ｂ】
0004989548.tif 000028
【図２３Ｃ】
0004989548.tif 000029
【図２３Ｄ】
0004989548.tif 000030
【図２４】
0004989548.tif 000031
【図２５】
0004989548.tif 000032
【図２６】
0004989548.tif 000033
【図２７】
0004989548.tif 000034
【図２８】
0004989548.tif 000035