(57)【特許請求の範囲】
【請求項１】
複数のビットブロックから構成されたビットストリームに対して、前記ビットブロック毎に、そのビットの配列順を逆順に変更する第１の配列変更部と、
該第１の配列変更部によりビットの配列順が変更された前記ビットブロックを一時格納するバッファと、
自身の処理対象となるビットブロックに含まれるビットを、所定の処理単位のビット数毎に前記バッファにおける配列順に読み出して処理する第１の処理部と、
前記第１の処理部が処理対象とするビットブロックと異なるビットブロックを処理対象とする第２の処理部と、
該第２の処理部の処理対象となる前記ビットブロックに含まれるビットを前記バッファにおける配列順に読み出して、それに含まれるビットの配列順を逆順に変更して前記第２の処理部に供する第２の配列変更部と、
その種類によってビットブロック内におけるビットの配列順が異なるビットストリームの前記種類に応じて、前記第１の配列変更部と前記第２の配列変更部によるビットの配列順の変更を行うか否かを制御する制御部とを有し、
前記第１の処理部は、ビットストリームにおける可変長データ部分を含むビットブロックを処理対象とし、
前記第２の処理部は、ビットストリームにおける固定長データ部分を含むビットブロックを処理対象とし、
前記制御部は、前記固定長を含むビットブロック内のビットの配列順が同じで、前記可変長データ部分を含むビットブロック内のビットの配列順が逆である２種類のビットストリームのうちの一方のビットスストリームに対しては配列順の変更を行わず、他方のビットストリームに対しては配列順の変更を行うように前記第１の配列変更部および第２の配列変更部を制御することを特徴とするデータ処理装置。
【請求項２】
前記２種類のビットストリームは、ＪＰＥＧのビットストリームとＰＮＧのビットストリームであることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記制御部は、ＪＰＥＧのビットストリームに対して、前記第１の配列変更部および前記第２の配列変更部による配列順の変更を行わせない一方、ＰＮＧのビットストリームに対して、前記第１の配列変更部および前記第２の配列変更部による配列順の変更を行わせるように制御することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
複数のビットブロックから構成されたビットストリームに対して、前記ビットブロック毎に、そのビットの配列順を逆順に変更する第１の配列変更処理をし、
該第１の配列変更処理によりビットの配列順が変更された前記ビットブロックをバッファに一時格納し、
前記ビットブロックのうちの特定のビットブロックに含まれるビットを、所定の処理単位のビット数毎に前記バッファにおける配列順に読み出して処理し、
前記特定のビットブロックと異なるビットブロックに含まれるビットを前記バッファにおける配列順に読み出し、
読み出された前記ビットブロックにおけるビットの配列順を逆順に変更する第２の配列変更処理をし、
前記第２の配列変更処理によりビットの配列順が変更された前記ビットブロックを処理し、
その種類によってビットブロック内におけるビットの配列順が異なるビットストリームの前記種類に応じて、前記第１の配列変更処理と前記第２の配列変更処理が実行されるかの制御を行うデータ処理方法において、
前記特定のビットブロックは、ビットストリームにおける可変長データ部分を含むビットブロックであり、
前記特定のビットブロックと異なるビットブロックは、ビットストリームにおける固定長データ部分を含むビットブロックであり、
前記固定長を含むビットブロック内のビットの配列順が同じで、前記可変長データ部分を含むビットブロック内のビットの配列順が逆である２種類のビットストリームのうちの一方のビットスストリームに対しては前記第１の配列変更処理と前記第２の配列変更処理が実行されず、他方のビットストリームに対しては前記第１の配列変更処理と前記第２の配列変更処理が実行されるように制御を行うことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理、具体的には、異なるビット配列順のビットストリームを共通に処理する技術に関する。
【背景技術】
【０００２】
デジタル画像データが日常的に扱われるようになっている。画像データを格納する記憶媒体の容量の節約、画像データを伝送する時間の短縮などのニーズから、画像データは通常、格納時または伝送時において、符号化によって圧縮され、再生時において復号される。
【０００３】
画像データの圧縮規格としてＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）が知られている。ＪＰＥＧに基づいた画像フォーマットは、ウェブページ、デジタルカメラ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）などに広く用いられている。
【０００４】
ＪＰＥＧによる圧縮データを再生する際に、圧縮データであるビットストリームを記憶装置から読み出してハフマン符号を切り出すことが行われる。切り出されたハフマン符号は、復号装置へ入力され、復号装置により復号処理が施される（特許文献１）。
【０００５】
図１３は、ＪＰＥＧのフォーマットを示す。図示のように、ＪＰＥＧのビットストリームは、複数の８ビットのビットブロックから構成され、先頭には、８ビット固定長データのビットブロックが１つ以上あり、それに続いて可変長符号（ＶＬＣ）部分のビットブロックがある。ＶＬＣ部分のビットブロックの数も、ＶＬＣの符号長に応じて１つ以上である。ＶＬＣ部分における最後のビットブロックの末尾部には、ＶＬＣに続く固定長データのビットブロックの先頭を、ストリームの８ビット境界に揃えるために挿入された無効ビットであるパディングビットが含まれる。そのビット数は、０〜７ビットである。
【０００６】
ＪＰＥＧのフォーマット以外に、近年、新たな画像フォーマットとしてＰＮＧ（Ｐｏｒｔａｂｌｅ  Ｎｅｔｗｏｒｋ  Ｇｒａｐｈｉｃｓ）が広く用いられるようになっており、その構造は、図１３に示すＪＰＥＧのフォーマットと大変相似している。
【０００７】
また、この２種類の画像フォーマットは、次世代ＤＶＤの規格となるＨＤ  ＤＶＤ（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  ＤＶＤ）やＢｌｕ−ｒａｙ  Ｄｉｓｃでも採用されており、両フォーマットの混在が規格上認められている。
【０００８】
このような背景において、ＪＰＥＧとＰＮＧの両方の画像フォーマットに対応する再生装置が必要とされる。このような再生装置において、ＪＰＥＧとＰＮＧのフォーマットの相似性を考慮し、１つの再生装置でＪＰＥＧとＰＮＧの両画像のフォーマットを再生可能とすることで、再生装置全体の小型化や、製造コストを低減することが望まれる。
【０００９】
たとえば、ＪＰＥＧのビットストリームにおけるＶＬＣ部分と同じように、ＰＮＧのＶＬＣ部分も、ハフマン符号であり、それの復号手法と、ＪＰＥＧにおけるＶＬＣ部分の復号手法とは基本的に同じである。そのため、ＪＰＥＧとＰＮＧのビットストリームにおけるＶＬＣ部分を共通に処理する装置が考えられる。
【特許文献１】特開平１１−２６１４２４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ところで、図１４に示すように、ＪＰＥＧとＰＮＧのビットストリームにおける８ビット固定長データのブロック内のビットの並び順は同じであるが、ＶＬＣブロック内のビットの並び順は異なる。
【００１１】
そこで、ＪＰＥＧとＰＮＧのビットストリームのＶＬＣ部分を処理する装置を共有させたい場合には、互いのＶＬＣブロックにおけるビットの配列順を、ＶＬＣ処理装置へ入力する前に揃えておく必要がある。しかし、これを実現しようとした場合、ビットストリームの読出に対する制御が煩雑になるという問題がある。
【課題を解決するための手段】
【００１２】
本発明の一つの態様はデータ処理装置である。このデータ処理装置は、複数のビットブロックから構成されたビットストリームに対して、ビットブロック毎に、そのビットの配列順を逆順に変更する第１の配列変更部と、第１の配列変更部によりビットの配列順が変更された前記ビットブロックを一時格納するバッファと、自身の処理対象となるビットブロックに含まれるビットを、所定の処理単位のビット数毎にバッファにおける配列順に読み出して処理する第１の処理部とを備える。
【００１３】
ここで、「ビットブロック」は、ビットストリームの基本構成単位を示す。規格によって異なるが、たとえば、ＪＰＥＧまたはＰＮＧの場合には、そのビットストリームは８ビットのビットブロックから構成される。
【００１４】
なお、上記装置を、方法、システム、プログラムに置き換えたものも、本発明の態様としては有効である。
【発明の効果】
【００１５】
本発明にかかるデータ処理装置によれば、異なるビット配列順を有するビットストリームを処理する装置を共有させることができるとともに、処理装置へのデータ供給の制御を簡単にできる。
【発明を実施するための最良の形態】
【００１６】
本発明の具体的な実施の形態を説明する前に、まず、図１に示すデータ処理システム１００を例にして、本発明によるデータ処理技術の原理について説明する。
【００１７】
図１に示すデータ処理システム１００は、符号化された画像データ（以下ビットストリームという）を復号する例であり、記憶部１０、ストリーム処理部８０、制御部９０を有する。記憶部１０は、ビットストリームを保存しており、ストリーム処理部８０は、記憶部１０に保存されたビットストリームを復号する。制御部９０は、ストリーム処理部８０を制御する。
【００１８】
なお、データ処理システム１００の様々な処理を行う機能ブロックとして図中に記載れた各要素は、ハードウェア的には、プロセッサ、メモリ、その他のＬＳＩで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００１９】
ストリーム処理部８０は、読出部２０、第１の配列変更部３０、バッファ４０、第１の処理部５０、第２の配列変更部６０、第２の処理部７０を有する。データ処理システム１００は、一部のビットの配列順が異なる複数の種類のビットストリームに対応可能なものである。ここで、例として、図１４に示すＪＰＥＧのビットストリームとＰＮＧのような、ＶＬＣ部分と固定長データ部分とを有するビットストリームをデータ処理システム１００の処理対象とし、２つの部分に対して、第１の処理部５０と第２の処理部７０によりそれぞれ処理が施される。以下、第１の処理部５０により処理される部分をＡ部分といい、第２の処理部７０により処理される部分をＢ部分という。なお、図１４に示す例では、ＶＬＣ部分（パディングビットを含む）をＡ部分、固定長データ部分をＢ部分とすることができる。
【００２０】
読出部２０は、記憶部１０からビットストリームを、それを構成するビットブロック毎に読み出して第１の配列変更分３０に出力する。たとえばビットブロックにおけるビット数がｎビットであればｎビットずつ読み出す。なお、ＪＰＥＧおよびＰＮＧのビットストリームの場合には、ビットブロックのビット数が８ビットであるので、８ビットずつ読出す。
【００２１】
第１の配列変更部３０は、制御部９０（その詳細については後述する）の制御にしたがって、読出部２０から出力されたｎビットの配列順を逆順に変更（以下スワップという）してバッファ４０に出力するかそのまま出力する。
【００２２】
バッファ４０は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）であり、それに一時格納されたデータは、先入れ先出しの原則の下で、Ａ部分のデータであれば第１の処理部５０に、Ｂ部分のデータであれば第２の配列変更部６０を介して第２の処理部７０に出力される。
【００２３】
第１の処理部５０は、ビットストリームのＡ部分を処理する。
第２の配列変更部６０は、制御部９０の制御にしたがって、バッファ４０から出力されたＢ部分のｎビットをスワップして第２の処理部７０に出力するかそのまま出力する。
【００２４】
第２の処理部７０は、第２の配列変更部６０から出力されてきたビットストリームのＢ部分を処理する。
【００２５】
ここで、制御部９０について説明する。制御部９０は、２つの制御を行う。１つは、第１の配列変更部３０と第２の配列変更部６０によりビットの配列順を変更するか否かの制御である。もう１つは、バッファ４０からデータが読み出された後に、バッファ４０の先頭が次に処理すべきビットブロックの先頭になるように、バッファ４０の内容をシフトするシフタ（図示せず）の制御である。
【００２６】
前述したように、データ処理システム１００は、一部のビットの配列順が異なる複数の種類のビットストリームに対応可能なものである。これらのビットストリームに対して、Ａ部分を処理する装置としては共通した第１の処理部５０を、Ｂ部分を処理する装置として共通した第２の処理部７０を用いる。そのため、ビットストリームにおけるＡ部分とＢ部分のビットの配列順を、第１の処理部５０と第２の処理部７０が処理する処理順に揃える必要がある。制御部９０は、ビットストリームの種類に応じて、第１の配列変更部３０と第２の配列変更部６０を制御し、ビットの配列順を揃えさせる。
【００２７】
ここで、図２を参照して、制御部９０が取りうる４種類の制御パターン、および制御パターン毎に、第１の配列変更部３０と第２の配列変更部６０の動作およびそれらの動作によって、ビット列の配列順の変化を説明する。図中「ＯＮ」、「ＯＦＦ］」は、それぞれ「変更する」、「変更せず」を意味する。
【００２８】
図２の最上部は、記憶部１０に保存されたストリームの元の配列順を示す。このビットストリームは、読出部２０によりその配列順に読み出され、第１の配列変更３０に入力される。そして、バッファ４０に格納された後に、Ａ部分は第１の処理部５０に入力され、Ｂ部分はさらに第２の配列変更部６０を経て、第２の処理部７０に入力される。
【００２９】
図２の左端の欄は、制御パターンを示し、図２の右端の欄は、第１の処理部５０に入力されるＡ部分のビットの配列態様と、第２の処理部７０に入力されるＢ部分のビットの配列態様とを制御パターン毎に示す。
【００３０】
図２に示す制御パターン１の場合において、第１の配列変更部３０と第２の配列変更部６０の２つとも、ビットスワップをしない。そのため、第１の処理部５０に入力されるデータ（Ａ部分）と、第２の処理部７０に入力されるデータ（Ｂ部分）は、それらのビット列の配列順が元のままである。この制御パターンは、Ａ部分とＢ部分のビットの配列順が、第１の処理部５０による処理順と第２の処理部７０による処理順とそれぞれ同じであるビットストリームに対応できる。
【００３１】
図２に示す制御パターン２の場合において、第１の配列変更部３０はビットスワップしないが、第２の配列変更部６０はビットスワップする。そのため、第１の処理部５０に入力されるデータ（Ａ部分）のビットの配列順が元の配列順のままである一方、第２の処理部７０に入力されるデータ（Ｂ部分）のビットの配列順が元の配列順と逆になる。この制御パターンは、Ａ部分のビットの配列順が第１の処理部５０による処理順と同じである一方、Ｂ部分のビットの配列順が第２の処理部７０による処理順と逆である場合のビットストリームに対応できる。
【００３２】
図２に示す制御パターン３の場合において、第１の配列変更部３０はビットスワップするが、第２の配列変更部６０はビットスワップしない。そのため、第１の処理部５０に入力されるデータ（Ａ部分）のビットの配列順と、第２の処理部７０に入力されるデータ（Ｂ部分）のビットの配列順とも、元の配列順と逆になる。この制御パターンは、Ａ部分とＢ部分のビットの配列順が、第１の処理部５０による処理順と第２の処理部７０による処理順とそれぞれ逆であるビットストリームに対応できる。
【００３３】
図２に示す制御パターン４の場合において、第１の配列変更部３０と第２の配列変更部６０の２つともビットスワップする。そのため、第１の処理部５０に入力されるデータ（Ａ部分）のビットの配列順が元の配列順と逆になる一方、第２の処理部７０に入力されるデータ（Ｂ部分）のビットの配列順が元の配列順のままである。この制御パターンは、Ａ部分のビットの配列順が第１の処理部５０による処理順と逆である一方、Ｂ部分のビットの配列順が第２の処理部７０による処理順と同じであるビットストリームに対応できる。
【００３４】
このように、図１に示すデータ処理システム１００によれば、共通した第１の処理部５０と第２の処理部７０を用いながら、Ａ部分またはＢ部分の配列が異なる複数の種類のビットストリームを処理することができる。
【００３５】
ここで、Ａ部分のビットブロックにおけるビットの配列順が逆であるが、Ｂ部分のビットブロックにおけるビットの配列順が同じである２種類（種類１と種類２）のビットストリームを処理する場合について考える。また例として、第１の処理部５０と第２の処理部７０は、種類１のビットストリームのビットブロックにおけるビットの元の配列順で処理をするものとする。この場合、記憶部１０からビットストリームを読み出して直接第１の処理部５０または第２の処理部７０に供給すると、種類２のビットストリームのＡ部分のビットブロックにおけるビットの配列順が、第１の処理部５０の処理順と逆であるため、読み出す際にその配列順を調整する必要がある。一方、Ｂ部分については配列順を調整する必要がない。そのため、同じビットストリームであるのにもかかわらず、Ａ部分とＢ部分の読み出しに異なる制御を加える必要があり、この制御の切替えに起因してデータ供給のレーテンシが生じてしまう。
【００３６】
それに対して、図に示すデータ処理システム１００によれば、第１の配列変更部３０と第２の配列変更部６０の組合せによって、Ａ部分とＢ部分のビットの配列順を第１の処理部５０と第２の処理部７０の処理順に揃えるので、一つのビットストリームを処理する際に、一度第１の配列変更部３０と第２の配列変更部６０のＯＮ／ＯＦＦの設定をしておけば、処理中において読出部２０によるＡ部分とＢ部分の読出しに対して制御を切り替える必要がない。これによって、高速なデータ供給を実現することができる。
【００３７】
また、読出部２０は、記憶部１０から次の１処理単位（たとえば８ビット）のデータを読み出すべきか否かを判断するときに、バッファ４０の空容量が１処理単位分があるか否かのみを参照すればよいので、読出の制御が簡単である。
【００３８】
次いで、上述した本発明の原理を具現化した実施の形態について説明する。
図３は、本発明の実施の形態にかかるデータ処理システム２００の構成を示す。データ処理システム２００は、符号化された画像データすなわちビットストリームを保存する記憶部１１０と、記憶部１１０に保存されたビットストリームを復号する復号部１８０と、復号部１８０を制御する制御部１９０を有する。なお、例として、データ処理システム２００の処理対象のデータは、図１４に示すＪＰＥＧとＰＮＧのビットストリームである。
【００３９】
図４は、復号部１８０の構成を示す。復号部１８０は、読出部１２０、第１のビットスワップ部１３０、バッファ１４０、シフタ１４８、ＶＬＣ処理部１５０、第２のビットスワップ部１６０、固定長データ処理部１７０を有する。読出部１２０は、記憶部１１０からビットストリームを８ビットずつ読み出して、第１のビットスワップ部１３０に出力する。
【００４０】
第１のビットスワップ部１３０は、制御部１９０（その詳細については後述する）の制御にしたがって、読出部１２０出力された８ビットのデータの配列順を逆にしてバッファ１４０に出力するかそのまま出力する。
【００４１】
バッファ１４０は、ＦＩＦＯであり、図１にデータ処理システム１００におけるバッファ４０と同じであるため、ここでその詳細な説明を省略する。
【００４２】
シフタ１４８は、バッファ１４０の記憶領域の先頭が常に次に処理すべきデータの先頭となるようにバッファ１４０の内容をシフトするものであり、これはＶＬＣ処理部１５０からのシフト要求Ａおよび符号長、固定長データ処理部１７０からのシフト要求Ｂ（これらの詳細については後述する）に応じて行われる。
【００４３】
ＶＬＣ処理部１５０は、図１にデータ処理システム１００における第１の処理部５０に対応し、ビットストリームにおけるＶＬＣ部分を復号するものである。
【００４４】
第２のビットスワップ部１６０は、制御部１９０の制御にしたがって、バッファ１４０から出力された固定長データ部分の８ビットの配列順を逆にして固定長データ処理部１７０に出力する。
【００４５】
固定長データ処理部１７０は、図１に示すデータ処理システム１００における第２の処理部７０に対応し、第２のビットスワップ部１６０から出力されてきた固定長データ部分を復号する。
【００４６】
前述したように、ＪＰＥＧとＰＮＧのビットストリームは、固定長データ部分のビットの配列順が同じであるが、ＶＬＣ部分のビットの配列順が互いに逆になっている。本実施の形態において、ＪＰＥＧのビットストリームをデフォルトの処理対象とし、ＶＬＣ処理部１５０と固定長データ処理部１７０は、ＪＰＥＧのＶＬＣ部分のデータの配列順と固定長データ部分のビットの配列順にそれぞれ処理を行うものとする。
【００４７】
図４において、第１のビットスワップ部１３０と第２のビットスワップ部１６０が受信する「ＯＮ」または「ＯＦＦ」の制御信号と、ＶＬＣ処理部１５０と固定長データ処理部１７０が受信する「読出開始」を示す制御信号は、制御部１９０により発行される。制御部１９０は、第１のビットスワップ部１３０と第２のビットスワップ部１６０に制御信号を送信することによりビットスワップをするか否かの制御を行い、ＶＬＣ処理部１５０と固定長データ処理部１７０に制御信号を送信することによりバッファ１４０からのデータの読出を開始させる。
【００４８】
次いで、データ処理システム２００を構成する各機能ブロックの動作を具体的に説明する。
図５は、データ処理システム２００における復号部１８０と制御部１９０による処理の流れを示すフローチャートである。左側は制御部１９０の処理の流れを示し、右側は復号部１８０の処理の流れを示す。
【００４９】
制御部１９０は、まず、記憶部１１０に保存された、これから処理するビットストリームの種類に応じて第１のビットスワップ部１３０と第２のビットスワップ部１６０のＯＮ／ＯＦＦの制御を行う。ここで、具体的には、処理対象のビットストリームがＪＰＥＧのビットストリームであれば（Ｓ１０：ＪＰＥＧ）、第１のビットスワップ部１３０と第２のビットスワップ部１６０がともに「ＯＦＦ」になるように制御信号を送る（Ｓ３０）。
【００５０】
これにより、第１のビットスワップ部１３０と第２のビットスワップ部１６０は「ＯＦＦ」、すなわち両方ともビットスワップを行わないように設定される（Ｓ１１０）。
【００５１】
一方、処理対象のビットストリームがＰＮＧのビットストリームであれば（Ｓ１０：ＰＮＧ）、制御部１９０は、第１のビットスワップ部１３０と第２のビットスワップ部１６０がともに「ＯＮ」になるように制御信号を送る（Ｓ２０）。これにより、第１のビットスワップ部１３０と第２のビットスワップ部１６０は「ＯＮ」、すなわち両方ともビットスワップを行うように設定される（Ｓ１１０）。
【００５２】
次に制御部１９０は、固定長データ処理部１７０に「読出開始ＯＮ」信号を送り、バッファ１４０に記憶されたビットストリーム（その詳細については後述する）の先頭にある固定長データの読出しを開始させる（Ｓ４０）。その後、制御部１９０は、固定長データ処理部１７０から固定長データの終端を示す信号（以下固定長データ終端信号という）を受信すると、ＶＬＣ処理部１５０に「読出開始ＯＮ」信号を送り、バッファ１４０からＶＬＣの読出しを開始させる（Ｓ５０：固定長データ終端信号、Ｓ７０）一方、ＶＬＣ処理部１５０からＶＬＣの終端を示す信号（以下ＶＬＣ終端信号という）を受信すると、固定長データ処理部１７０に「読出開始ＯＮ」信号を送る（Ｓ５０：ＶＬＣ終端信号、Ｓ６０）処理を繰り返す。
【００５３】
なお、制御部１９０は、復号部１８０が１つのビットストリームの処理を終えたとき（Ｓ８０、Ｙｅｓ）、データ処理システム２００の処理を終了させる（Ｓ９０）。ここで、ステップＳ８０における処理の終了の判定は、復号部１８０のＶＬＣ処理部１５０により行われ、その詳細については後述する。
【００５４】
復号部１８０は、記憶部１１０に記憶されたビットストリームを復号するために、まず、読出部１２０が記憶部１１０から、ビットストリームの先頭から順に８ビットずつ読み出し、第１のビットスワップ部１３０に出力する（Ｓ１２０）。
【００５５】
読出部１２０により読み出されたデータは、第１のビットスワップ部１３０を経て、バッファ１４０に一時格納され、ＶＬＣ処理部１５０または固定長データ処理部１７０により順次処理される（Ｓ１３０〜Ｓ１５０）。固定長データ処理部１７０は、制御部１９０から「読出ＯＮ」信号を受信すると、バッファ１４０から固定長データを読み出して復号し（Ｓ１３０：固定長データ、Ｓ１４０）、ＶＬＣ処理部１５０は、制御部１９０から「読出ＯＮ」信号を受信すると、バッファ１４０からＶＬＣを読み出して復号する（Ｓ１３０：ＶＬＣ、Ｓ１５０）。これらの処理は制御部１９０により終了させられるまで繰り返される（Ｓ１７０）。
【００５６】
図６は、ステップＳ１２０において、読出部１２０により読出処理の詳細を示すフローチャートである。読出部１２０は、バッファ１４０の空き容量が８ビット以上であるか否かに応じて、８ビット以上であれば、記憶部１１０から８ビットを読み出して、第１のビットスワップ部１３０を介してバッファ１４０に格納し（Ｓ１２２：Ｎｏ、Ｓ１２４）、８ビット未満であれば、バッファ１４０の空き容量が８ビット以上になるまで記憶部１１０からの読出を中止する（Ｓ１２２：Ｙｅｓ）。
【００５７】
以下ＰＮＧのビットストリームが処理対象である場合を例にしてＶＬＣ処理部１５０、第２のビットスワップ部１６０、固定長データ処理部１７０、シフタ１４８の処理を説明する。この場合、処理対象がＰＮＧのビットストリームであるので、第１のビットスワップ部１３０および第２のビットスワップ部１６０は、「ＯＮ」すなわちスワップするように設定されている。
【００５８】
図７は、図５におけるステップＳ１４０固定長データ処理（Ｓ１４０）を示すフローチャートである。固定長データ処理部１７０は、制御部１９０から読出開始を示す信号を受信すると、バッファ１４０から先頭の８ビットのデータを読み出す（Ｓ１４１）。
【００５９】
図９の欄１、欄２に示すように、この場合、読出部１２０から読み出された固定長データが、８ビット毎に配列順がスワップされて、記憶部１１０に保存されていたときの配列順と逆の配列順になってバッファ１４０に格納されている。
【００６０】
固定長データ処理部１７０は、バッファ１４０から８ビットの固定長データを読み出すとともに、読出の完了をもって、シフタ１４８にシフト要求（ＶＬＣ処理部１５０からのシフト要求と区別するために、シフト要求Ｂとする）をする（Ｓ１４２）。
【００６１】
ここで、固定長データ処理部１７０によりバッファ１４０から読み出した８ビットの固定長データは、まず、第２のビットスワップ部１６０に入力される。第２のビットスワップ部１６０は、この８ビットのデータの配列順を逆に変更する（Ｓ１４３）。図９の欄３に示すように、第２のビットスワップ部１６０により、バッファ１４０から読み出された８ビットの固定長データは、配列順が逆にされ、すなわち、記憶部１１０に保存されていたときの配列順に戻されている。
【００６２】
固定長データ処理部１７０は、第２のビットスワップ部１６０によりビットスワップされた後の８ビットの固定長データを復号する（Ｓ１４４）。
【００６３】
なお、図７に示していないが、シフタ１４８は、シフト要求Ｂを受信すると、バッファ１４０の内容を８ビット先頭に向かってシフトする。それによって、固定長データ処理部１７０により既に読出がなされた８ビットの次の８ビットの先頭がバッファ１４０の先頭に位置するようになる（図９の欄４）。
【００６４】
固定長データ処理部１７０は、第２のビットスワップ部１６０により配列順が元に戻された８ビットに対して復号するとともに、処理中の８ビットの最後のビットが、固定長データの終端であるか否かを検出する（Ｓ１４４）。ここで、「固定長データの終端」は、図８に示すように、固定長データとそれに続くＶＬＣの境界Ａを意味する。
【００６５】
固定長データ処理部１７０は、復号した８ビットの固定長データの最終ビットが境界Ａではない場合（Ｓ１４５：Ｎｏ）において、図９の欄５に示すように、バッファ１４０から８ビットの読出（およびシフト要求Ｂの送信）、読み出された８ビットに対して第２のビットスワップ部１６０によりビットスワップされた後の復号（境界Ａの検出を含む）処理を繰り返す（Ｓ１４１〜Ｓ１４４）。一方、固定長データ処理部１７０は、復号した８ビットの固定長データの最終ビットが境界Ａである場合（Ｓ１４５：Ｙｅｓ）において、制御部１９０に固定長データ終端信号を送信して（Ｓ１４６）、処理を終了する。
【００６６】
なお、このとき、シフタ１４８によるシフトにより、バッファ１４０の先頭のビットが、固定長データ処理部１７０により処理された固定長データに続くＶＬＣの先頭ビットになる（図９の欄６）。
【００６７】
前述したように、制御部１９０は、固定長データ処理部１７０から固定長データ終端信号を受信すると、ＶＬＣ処理部１５０に読出を開始させる信号を送信する。ＶＬＣ処理部１５０がこの信号を受信した後の処理を、図１０のフローチャートに示す。
【００６８】
ＶＬＣ処理部１５０は、制御部１９０から読出開始を示す信号を受信すると、バッファ１４０から先頭の所定数のビットのデータを読み出す（Ｓ１５２）。なお、ＶＬＣ処理部１５０が一度に読み出すビット数は、設計によって任意とされるが、ここでは例として１０ビットである。
【００６９】
ＰＮＧのＶＬＣ部分のビットの配列順が、ＪＰＥＧのＶＬＣ部分のビットの配列順と逆になっていることについて前述した。図１１の欄１、欄２に示すように、この場合、読出部１２０から読み出されたＶＬＣ部分のデータが、８ビット毎に配列順がスワップされて、記憶部１１０に記憶されたときの配列順と逆の配列順になってバッファ１４０に格納されている。すなわち、バッファ１４０に格納されたＶＬＣ部分のビットの配列順が、ＪＰＥＧのＶＬＣ部分のビットの配列順と同じである。図示の例では、このＶＬＣ部分は１９ビットの有効データがあり、最後の８ビットのブロックにストリームの８ビット境界を揃えるための５ビットのパディングビットがある。
【００７０】
ＶＬＣ処理部１５０は、まず、バッファ１４０から１０ビットのデータを読み出し（Ｓ１５２）、この１０ビットのデータを復号するとともに、ＶＬＣの終端ビットがあるか否かを検出する（Ｓ１５４）。ここで、ＶＬＣの終端は、図８に示すように、ＶＬＣの有効ビットとパディングビットの境界Ｂ１を意味する。
【００７１】
ＶＬＣ処理部１５０は、処理中の１０ビットからＶＬＣが検出されていない場合（Ｓ１５６：Ｎｏ）において、復号した符号長（ここでは１０ビット）とともに、シフト要求Ａをシフタ１４８に出力する（Ｓ１５８）。図１０に示していないが、シフタ１４８は、ＶＬＣ処理部１５０からシフト要求Ａを受信すると、バッファ１４０の内容を、シフト要求Ａとともに出力されてきた符号長の分先頭に向かってシフトする。それによって、ＶＬＣ処理部１５０により既に読出がなされた１０ビットの次のデータの先頭がバッファ１４０の先頭に位置するようになる（図１１の欄４）。
【００７２】
また、この場合、ＶＬＣ処理部１５０は、図１１の欄５に示すように、バッファ１４０からさらに１０ビットを読み出して、復号、および境界Ｂ１の検出を行う（Ｓ１５２〜Ｓ１５４）。
【００７３】
一方、ＶＬＣ処理部１５０は、復号の過程において、境界Ｂ１を検出した場合（Ｓ１５６：Ｙｅｓ）において、境界Ｂ１を検出した時点で復号した符号長と、パディングビットのビット数との和をシフトすべき符号長として、シフト要求Ａとともにシフタ１４８に出力する。そして、制御部１９０にＶＬＣ終端信号を送信して（Ｓ１６４）、処理を終了する。
【００７４】
なお、このとき、シフタ１４８によるシフトにより、パディングビットが除去され、バッファ１４０における先頭のビットが、ＶＬＣ処理部１５０により処理されたＶＬＣに続く固定長データの先頭ビットになる（図１１の欄６）。
【００７５】
このように、ビットストリームに対して、固定長データ処理部１７０およびＶＬＣ処理部１５０による処理がビットストリームが終了するまで行われる。ここで、ビットストリームの終了の検知は、たとえば下記のように行うことができる。ＶＬＣ処理部１５０にカウンタを設け、このカウンタにより、ＶＬＣ処理部１５０が復号したピクセル数をカウントする。カウントされたピクセル数が、１フィールドまたは１フレームを構成するピクセル数に達した時点でストリームが終了したとする。また、ＶＬＣ処理部１５０がストリームの終了を検知したとき、制御部１９０にその旨を示す信号を送信し、制御部１９０は、それを受信したことをもって、データ処理システム２００の処理を終了するように制御する（図５におけるＳ８０：Ｙｅｓ、Ｓ９０）。
【００７６】
上記において、ＶＬＣ処理部１５０および固定長データ処理部１７０による処理を説明する際に、シフタ１４８の動作を説明したが、ここでシフタ１４８による処理をまとめて説明する。
【００７７】
図１２は、シフタ１４８の処理を示すフローチャートである。シフタ１４８は、固定長データ処理部１７０からシフト要求Ｂを受信する（Ｓ１８０：Ｂ）と、バッファ１４０の内容を８ビットシフトする（Ｓ１８４）。一方、ＶＬＣ処理部１５０からシフト要求Ａを受信する（Ｓ１８０：Ａ）と、シフト要求Ａととともに送信されてきた符号長の分、バッファ１４０の内容をシフトする（Ｓ１８２）。
【００７８】
以上、ＰＮＧのビットストリームの場合の処理について説明した。ＪＰＥＧのビットストリームの場合において、第１のビットスワップ部１３０と第２のビットスワップ部１６０が「ＯＦＦ」すなわちビットスワップしないように設定されているため、各機能ブロックは、ＪＰＥＧのビットストリームのビット配列順に処理を行う。この点を除いて、各処理が上述したＰＮＧのビットストリームの場合の処理と同じであるので、ここで詳細な説明を省略する。
【００７９】
このように、本実施の形態のデータ処理システム２００によれば、共通したＶＬＣ処理部１５０を用いて、ＪＰＥＧとＰＮＧのビットストリームを処理することができる。また、第１のビットスワップ部１３０がＰＮＧのビットストリームのＶＬＣのビット配列を反転させるようにしているので、バッファ１４０からのＶＬＣの読出しは、ＪＰＥＧの場合と同じように、ＦＩＦＯに従って行えばよく、簡単である。
【００８０】
また、同じように、第２のビットスワップ部１６０が、第１のビットスワップ部１３０によりビットスワップされたＰＮＧのビットストリームにおける固定長データのビット配列をさらにスワップして元に戻しているので、バッファ１４０からの固定長データの読出も、ＦＩＦＯに従って行えばよく、簡単である。
【００８１】
さらに、ＰＮＧかＪＰＥＧかに応じて一度第１のビットスワップ部１３０と第２のビットスワップ部１６０の設定をしておけば、その後、該当するビットストリームの処理中に、ＶＬＣなのか固定長データかにかかわらず、２つのビットスワップの設定を変更する必要がない。そのため、読出部１２０からバッファ１４０までのデータの読出しは、ＶＬＣの終端の検出結果を待たずに行うことができる。これによって高速なデータ供給を実現することができる。
【００８２】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【００８３】
【図１】本発明の原理を説明するために用いられたデータ処理システムを示すブロック図である。
【図２】図１に示すデータ処理システムにおける第１の配列変更部および第２の配列変更部の動作を説明するための図である。
【図３】本発明の実施の形態にかかるデータ処理システムの構成を示すブロック図である。
【図４】図３に示すデータ処理システムにおける復号部の構成を示す図である。
【図５】図３に示すデータ処理システムにおける制御部および復号部の処理を示すフローチャートである。
【図６】図４に示す復号部における読出部の処理を示すフローチャートである。
【図７】固定長データの部分に対する処理を示すフローチャートである。
【図８】データブロック間の境界を示す図である。
【図９】固定長データに対して行われる処理を説明するための図である。
【図１０】ＶＬＣ部分に対する処理を示すフローチャートである。
【図１１】ＶＬＣに対して行われる処理を説明するための図である。
【図１２】図４に示す復号部におけるシフタの処理を示すフローチャートである。
【図１３】ＪＰＥＧのフォーマットを示す図である。
【図１４】ＪＰＥＧとＰＮＧのビットの配列順の違いを説明するための図である。
【符号の説明】
【００８４】
１０  記憶部  ２０  読出部
３０  第１の配列変更部  ４０  バッファ
５０  第１の処理部  ６０  第２の配列変更部
７０  第２の処理部  ８０  ストリーム処理部
９０  制御部  １００  データ処理システム
１１０  記憶部  １２０  読出部
１３０  第１のビットスワップ部  １４０  バッファ
１４８  シフタ  １５０  ＶＬＣ処理部
１６０  第２のビットスワップ部  １７０  固定長データ処理部２００
１８０  復号部  １９０  制御部
２００  データ処理システム
【図１】
0004717704.tif 000002
【図２】
0004717704.tif 000003
【図３】
0004717704.tif 000004
【図４】
0004717704.tif 000005
【図５】
0004717704.tif 000006
【図６】
0004717704.tif 000007
【図７】
0004717704.tif 000008
【図８】
0004717704.tif 000009
【図９】
0004717704.tif 000010
【図１０】
0004717704.tif 000011
【図１１】
0004717704.tif 000012
【図１２】
0004717704.tif 000013
【図１３】
0004717704.tif 000014
【図１４】
0004717704.tif 000015