(57)【特許請求の範囲】
【請求項１】
符号化すべきランレングスとレベルとの組み合わせを、そのランレングスとレベルの値に対応して可変長符号またはエスケープ符号に符号化する符号化装置において、
前記ランレングスの範囲が第１の閾値以上である場合、または前記レベルの範囲が第２の閾値以上である場合、第１のエスケープ信号を生成する第１のエスケープ信号生成手段と、
前記可変長符号が予め割り当てられている領域を含むデータを記憶している記憶手段と、
前記ランレングスと前記レベルとを所定の方法に基づいて組み合わせることにより、アドレスデータを生成するアドレス生成手段と、
前記アドレス生成手段によって生成されたアドレスデータを参照して、前記記憶手段から対応する可変長符号を読み出す読み出し手段と、
前記アドレス生成手段によって生成されたアドレスデータが、前記可変長符号が予め割り当てられた領域を含むデータであり、かつ、前記アドレスデータに対応する可変長符号が存在しない場合に、第２のエスケープ信号を生成する第２のエスケープ信号生成手段と、
前記第１または第２のエスケープ信号生成手段の一方からエスケープ信号が出力されている場合には、エスケープ符号を生成し、前記エスケープ符号に前記ランレングスとレベルとを付加して出力する出力手段と
を備え、
前記記憶手段は、前記可変長符号が内包すべきレベルが正または負の極性を有するか否かを示す情報を記憶しており、
前記読み出し手段が読み出したデータから前記極性を有するか否かを示す情報が極性を示している場合には、前記可変長符号の末尾のビットに対して正または負を示すデータを付加する
ことを特徴とする符号化装置。
【請求項２】
前記記憶手段に記憶されているデータは、書き換え可能とされている
ことを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記領域に属さないアドレスデータを、前記領域内の特定のアドレスに対応するデータに変換する変換手段を更に備え、
前記記憶手段は、前記可変長符号が記憶されていない領域と、前記特定のアドレスにはエスケープ符号を記憶しており、
前記出力手段は、前記記憶手段から出力されたエスケープ符号に対して、前記ランレングスとレベルとを付加して出力する
ことを特徴とする請求項１に記載の符号化装置。
【請求項４】
前記記憶手段は、エンドオブブロック符号を特定のアドレスに記憶しており、前記アドレス生成手段が、前記特定のアドレスに対応するデータを生成した場合には、前記読み出し手段が前記エンドオブブロック符号を読み出す
ことを特徴とする請求項１に記載の符号化装置。
【請求項５】
符号化すべきランレングスとレベルとがブロックの最初の係数であることを検出する検出手段を更に備え、
前記記憶手段は、前記ブロックの最初の係数のレベルが“１”であることを示す符号を特定のアドレスに記憶しており、
前記検出手段によって、符号化すべきランレングスとレベルとがブロックの最初の係数であることが検出されている場合であって、前記レベルが“１”である場合には、前記読み出し手段は、前記特定のアドレスに記憶されている前記ブロックの最初の係数のレベルが“１”であることを示す符号を読み出す
ことを特徴とする請求項１に記載の符号化装置。
【請求項６】
前記特定のアドレスに記憶されている前記ブロックの最初の係数のレベルが“１”であることを示す符号は、前記エンドオブブロックに対応するランレングスとレベルとが入力された場合にも読み出される
ことを特徴とする請求項５に記載の符号化装置。
【請求項７】
前記記憶手段は、エンドオブブロック符号とブロックの最初の係数のレベルが“１”であることを示す符号とを同一の特定アドレスに記憶しており、
前記エンドオブブロックに対応するランレングスとレベルとが入力された場合には、前記レベルの値を“０”とすることにより、前記可変長符号の末尾のビットを“０”にする
ことを特徴とする請求項１に記載の符号化装置。
【請求項８】
前記記憶手段は、エンドオブブロック符号とブロックの最初の係数のレベルが“１”であることを示す符号とを同一の特定アドレスに記憶しており、
前記エンドオブブロックに対応するランレングスとレベルとが入力された場合には、前記レベルを正の値とすることにより、前記可変長符号の末尾のビットに“０”を付加する
ことを特徴とする請求項１に記載の符号化装置。
【請求項９】
前記記憶手段は、エンドオブブロック符号とブロックの最初の係数のレベルが“１”であることを示す符号とを同一の特定アドレスに記憶しており、
前記エンドオブブロックに対応するランレングスとレベルとが入力された場合には、前記抽出手段が抽出した前記極性を有するか否かを示すデータを無効化する無効化手段を更に備える
ことを特徴とする請求項１に記載の符号化装置。
【請求項１０】
前記記憶手段は、エンドオブブロック符号とブロックの最初の係数のレベルが“１”であることを示す符号とを同一の特定アドレスに記憶しており、
前記エンドオブブロックに対応するランレングスとレベルとが入力された場合には、前記付加手段を停止する停止手段を更に備える
ことを特徴とする請求項１に記載の符号化装置。
【請求項１１】
符号化すべきランレングスとレベルとの組み合わせを、そのランレングスとレベルの値に対応して可変長符号またはエスケープ符号に符号化する符号化方法において、
前記可変長符号が予め割り当てられている領域を含むデータを記憶している記憶ステップと、
前記ランレングスの範囲が第１の閾値以上である場合、または前記レベルの範囲が第２の閾値以上である場合、第１のエスケープ信号を生成する第１のエスケープ信号生成ステップと、
前記ランレングスと前記レベルとを組み合わせることにより、アドレスデータを生成するアドレス生成ステップと、
前記アドレス生成ステップによって生成されたアドレスデータを参照して、前記記憶ステップにより記憶されているデータから対応する可変長符号を読み出す読み出しステップと、
前記アドレス生成ステップによって生成されたアドレスデータが、前記可変長符号が予め割り当てられた領域を含むデータであり、かつ、前記アドレスデータに対応する可変長符号が存在しない場合に、第２のエスケープ信号を生成する第２のエスケープ信号生成ステップと、
前記第１または第２のエスケープ信号生成ステップの一方からエスケープ信号が出力されている場合には、エスケープ符号を生成し、前記エスケープ符号に前記ランレングスとレベルとを付加して出力する出力ステップと
を含み、
前記記憶ステップにおいて、前記可変長符号が内包すべきレベルが正または負の極性を有するか否かを示す情報が記憶されており、
前記読み出しステップにおいて読み出したデータから前記極性を有するか否かを示す情報が極性を示している場合には、前記可変長符号の末尾のビットに対して正または負を示すデータを付加する
ことを特徴とする符号化方法。
【請求項１２】
入力データである復号化すべき可変長符号、あるいは、エスケープ符号およびそれに後続するランレングスとレベルとを、対応するランレングスとレベルの組み合わせに復号化する復号化装置において、
前記ランレングスとレベル、および、エスケープに関する情報を記憶している記憶手段と、
前記入力データから対応するアドレスデータを生成するアドレス生成手段と、
前記アドレス生成手段によって生成されたアドレスデータを参照して、前記記憶手段から対応するランレングスとレベル、および、エスケープに関する情報とを読み出す読み出し手段と、
前記読み出し手段によって読み出されたエスケープに関する情報を参照して、入力されたデータがエスケープ符号であるか否かを判定する判定手段と、
前記判定手段が、入力されたデータがエスケープ符号であると判定した場合には、前記入力されたデータからエスケープ符号を除外してランレングスとレベルとを抽出する抽出手段と
を備え、
前記記憶手段は、前記可変長符号に内包されたレベルが正または負の極性を有するか否かを示す情報を記憶しており、
前記読み出し手段により読み出されたデータから、前記レベルが前記極性を有するか否かを示す情報が極性を示している場合には、前記可変長符号の末尾のビットからレベルの極性を生成する
ことを特徴とする復号化装置。
【請求項１３】
前記記憶手段に記憶されているデータは、書き換え可能とされている
ことを特徴とする請求項１２に記載の復号化装置。
【請求項１４】
前記記憶手段は、エンドオブブロックを示す情報を記憶しており、
前記読み出し手段によって、前記エンドオブブロックを示す情報が読み出された場合には、入力されたデータがエンドオブブロックであることを信号を生成する生成手段を更に備える
ことを特徴とする請求項１２に記載の復号化装置。
【請求項１５】
前記記憶手段は、エンドオブブロックを示す情報と、ブロックの最初の係数のレベルが“１”であることを示す情報とを所定のアドレスに記憶しており、
前記入力されたデータがブロックの最初のデータである場合には、前記生成手段が出力する信号を無効化する無効化手段を更に備える
ことを特徴とする請求項１４に記載の復号化装置。
【請求項１６】
入力データである復号化すべき可変長符号、あるいは、エスケープ符号およびそれに後続するランレングスとレベルとを、対応するランレングスとレベルの組み合わせに復号化する復号化方法において、
前記ランレングスとレベル、および、エスケープに関する情報を記憶している記憶ステップと、
前記入力データから対応するアドレスデータを生成するアドレス生成ステップと、
前記アドレス生成ステップによって生成されたアドレスデータを参照して、前記記憶ステップにおいて記憶されている対応するランレングスとレベル、および、エスケープに関する情報とを読み出す読み出しステップと、
前記読み出しステップによって読み出されたエスケープに関する情報を参照して、入力されたデータがエスケープ符号であるか否かを判定する判定ステップと、
前記判定ステップが、入力されたデータがエスケープ符号であると判定した場合には、前記入力されたデータからエスケープ符号を除外してランレングスとレベルとを抽出する抽出ステップと
を含み、
前記記憶ステップにおいて、前記可変長符号に内包されたレベルが正または負の極性を有するか否かを示す情報が記憶されており、
前記読み出しステップにおいて読み出されたデータから、前記レベルが前記極性を有するか否かを示す情報が極性を示している場合には、前記可変長符号の末尾のビットからレベルの極性を生成する
ことを特徴とする復号化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、符号化装置、符号化方法、復号化装置、および復号化方法に関し、特に、画像や音声をＭＰＥＧ方式に応じて圧縮または伸長する、符号化装置、符号化方法、復号化装置、および復号化方法に関する。
【０００２】
【従来の技術】
例えば、ＭＰＥＧ（Moving Picture Experts Group）符号化を行う場合においては、画像データがＤＣＴ（離散コサイン変換）されることによりＤＣＴ係数とされ、そのＤＣＴ係数が量子化された後、可変長符号化される。この可変長符号化においては、量子化されたＤＣＴ係数のランレングス（run length）およびレベル（level）に対応した可変長符号が出力される。
【０００３】
図２０は、可変長符号化を行う可変長符号化装置の従来の構成例を示すブロック図である。この図において、ランレングス／レベル検出回路３００は、量子化されたＤＣＴ係数のランレングス、および、レベルを検出する。符号化テーブル記憶部１０は、ランレングス／レベル検出器３００により検出されたランレングスおよびレベルをアドレスデータとして、対応するデータを読み出してマルチプレクサ１５に供給する。
【０００４】
なお、符号化テーブル記憶部３００には、図２１（Ｂ）に示すようなデータが格納されている。例えば、ＭＰＥＧにおいては、図２１（Ａ）に示すように、ランレングス（RUN）として０乃至６３の範囲（従って、６ビットで表すことのできる範囲）を用いることができ、また、レベル（LEVEL）（レベルの絶対値）として０乃至２０４７の 範囲（従って、１１ビットで表すことのできる範囲（符号ビットを含めれば１２ビット）を用いることができる。
【０００５】
そして、そのような範囲において、０乃至３１の範囲のランレングス（RUN） および１乃至４０の範囲のレベル（LEVEL）（レベルの絶対値）の組合せのうち の１１４の組合せ（同図において、正方形で囲んである部分）に対して、可変長符号があらかじめ割り当てられている。
【０００６】
なお、上述の１１４の組合せというのは、エスケープ、ＥＯＢ（End Of Block）、および最初のＤＣＴ（first DCT）係数を示す信号に対応する３つの可変長 符号を含む値であり、従って、これらを除けば、１１１の組合せということになる。
【０００７】
また、図２１（Ｂ）において、あらかじめ可変長符号が割り当てられていない範囲についてのランレングスとレベルの組合せは、エスケープのコードを用いて表現することとなる。
【０００８】
図２２および図２３は、ＭＰＥＧにおいて、可変長符号（ＶＬＣ）と、その可変長符号があらかじめ割り当てられているランレングス（ｒｕｎ）およびレベル（ｌｅｖｅｌ）の組合せとの対応関係を示している。即ち、これらのデータは、図２１（Ｂ）に示す正方形で囲んである部分に対応している。なお、図２３は、図２２に続く図である。
【０００９】
エスケープ検出器１１は、ランレングス／レベル検出器３００の出力が図２１（Ｂ）に示すエスケープ領域に対応する場合には、セレクト信号とエスケープ符号（＝０００００１Ｂ（Ｂはその前の数値が２進数であることを表す））をマルチプレクサ１５に対して出力するとともに、エスケープ符号の符号長（＝６ビット）をセレクタ１４に対して出力する。係数レベル検出器１２は、ランレングス／レベル検出器３００の出力データのうち、各ブロック（１６×１６画素のデータ）の第１番目の係数のレベルが“１”の場合には、マルチプレクサ１５に対してセレクト信号と第１番目の係数のレベルが“１”であることを示す符号（＝１Ｂ）を出力するとともに、セレクタ１４に対して符号長（＝１ビット）を出力する。
【００１０】
エンドオブブロック検出器１３は、ブロックの最後を示すエンドオブブロックを検出し、マルチプレクサ１５にセレクト信号とエンドオブブロック符号（＝１０Ｂ）を出力するとともに、セレクタ１４に対してエンドオブブロック符号の符号長（＝２ビット）を出力する。
【００１１】
マルチプレクサ１５は、通常の処理（エスケープが検出された場合、ブロックの第１番目の係数のレベルが“１”の場合、または、エンドオブブロックが検出された場合を除く処理）においては、符号化テーブル記憶部１０より出力されるデータを選択して、バレルシフタ３０５に出力する。
【００１２】
一方、エスケープ検出器１１がエスケープを検出した場合には、マルチプレクサ１５は、エスケープ検出器１１から出力されるセレクト信号により、エスケープが検出されたことを検知し、エスケープ検出器１１から出力されるエスケープ符号にランレングス／レベル検出器３００から出力されるランレングスとレベルとを付加して、バレルシフタ３０５に出力する。
【００１３】
また、係数レベル検出器１２がブロックの第１番目の係数のレベルが“１”であることを検出した場合、マルチプレクサ１５は、セレクト信号によってそれを検知し、係数レベル検出器１２から出力される符号を入力して、バレルシフタ３０５に出力する。
【００１４】
更に、エンドオブブロック検出器１３がエンドオブブロックを検出した場合、マルチプレクサ１５は、セレクタ信号によりそれを検知し、エンドオブブロック検出器１３から出力される符号を入力して、バレルシフタ３０５に供給する。
【００１５】
セレクタ１４は、マルチプレクサ１５から出力される制御信号に従って、符号化テーブル記憶部１０、エスケープ検出器１１、係数レベル検出器１２、または、エンドオブブロック検出器１３からマルチプレクサ１５に対して出力される符号の符号長を選択し、加算器３０７に対して出力する。
【００１６】
加算器３０７は、セレクタ１４から出力された符号長（その時点において、マルチプレクサ１５からバレルシフタ３０５に対して出力されている符号の符号長）を累積加算して、ＦＦ部３０６に対して出力する。
【００１７】
ＦＦ部３０６は、加算器３０７から出力される累積加算値を記憶し、バレルシフタ３０５に対して出力するとともに、加算器３０７に対して供給する。
【００１８】
バレルシフタ３０５は、マルチプレクサ１５から出力された符号を所定量だけシフトして、可変長符号連接器３０８に対して出力する。
【００１９】
可変長符号連接器３０８は、バレルシフタ３０５から出力されるデータのうち、冒頭部分に付加された０Ｂを除く元のデータを抽出するとともに、逐次供給されるデータを連接し、所定のビット量のデータが蓄積されたときに、ビットストリームとして出力する。
【００２０】
次に、以上の従来例の動作について簡単に説明する。
【００２１】
いま、ランレングス／レベル検出器３００に量子化データが入力されたとすると、量子化データは、そこで、ランレングスおよびレベルに変換されて出力される。
【００２２】
ランレングス／レベル検出器３００から出力されたランレングスおよびレベルが、図２１（Ｂ）に示す正方形の領域に対応する場合には、符号化テーブル記憶部１０は対応するデータを読み出し、マルチプレクサ１５に出力するとともに、セレクト信号を“１”の状態とする。その結果、マルチプレクサ１５は、符号化テーブル記憶部１０から出力される符号化データを入力して、バレルシフタ３０５に対して供給する。
【００２３】
なお、このとき、符号化テーブル記憶部１０は、マルチプレクサ１５に出力した符号の符号長をセレクタ１４に対して出力する。マルチプレクサ１５は、セレクト信号を参照して、セレクタ１４に対して制御信号を送り、入力された符号長を選択させて、加算器３０７に対して出力させる。
【００２４】
加算器３０７は、ＦＦ部３０６から出力される値と、セレクタ１４から出力される符号長を加算して、ＦＦ部３０６に対して出力する。ＦＦ部３０６は、セレクタ１４から新たなデータが出力される直前に、記憶されているデータを加算器３０７に対して供給する。そして、ＦＦ部３０６は、その結果として加算器３０７から出力される、直前のデータとセレクタ１４から出力されたデータが加算された値をバレルシフタ３０５に対して出力するとともに、その値を保持する。
【００２５】
即ち、ＦＦ部３０６と加算器３０７とは、セレクタ１４から出力される符号長の累積加算値を算出することになる。なお、加算器３０７がＫビット長であるとすると、加算値Ｓが２Kを超過した場合には、Ｓ−２Kが出力されることになる。
【００２６】
バレルシフタ３０５は、ＦＦ部３０６から出力される累積加算値に応じて、マルチプレクサ１５から出力されるデータをＭＳＢ方向にビットシフトさせ、可変長符号連接器３０８に対して出力する。可変長符号連接器３０８は、ＦＦ部３０６から出力される累積加算値とセレクタ１４から出力される符号長とを参照し、バレルシフタ３０５から出力されるデータを読み込んでそれ以前に読み込まれたデータと連接し、所定のビット長（例えば、３２ビット長）のデータが蓄積されたところで、ビットストリームとして出力する。
【００２７】
なお、ランレングス／レベル検出器３００から出力されたデータが、図２１に示すエスケープ領域に属する場合には、エスケープ検出器１１がそれを検出し、セレクト信号とともに、エスケープ符号をマルチプレクサ１５に対して出力する。マルチプレクサ１５は、セレクト信号を参照することにより、エスケープが検出されたことを検知し、エスケープ検出器１１から出力されたエスケープ符号に対して、ランレングス／レベル検出器３００から出力されたランレングスおよびレベルデータを付加して、バレルシフタ３０５に対して出力する。それ以降の処理は、前述の場合と同様である。
【００２８】
また、係数レベル検出器１２がブロックの第１の係数のレベルが“１”であることを検出した場合には、ブロックの第１の係数のレベルが“１”であることを示す符号とセレクト信号とがマルチプレクサ１５に対して出力されるとともに、符号長がセレクタ１４に対して出力される。そして、バレルシフタ３０５以降の回路において、前述の場合と同様の処理が施されることになる。
【００２９】
更に、エンドオブブロック検出器１３が、エンドオブブロックを検出した場合には、セレクト信号とエンドオブブロック符号とがマルチプレクサ１５に出力されるとともに、エンドオブブロック符号の符号長がセレクタ１４に対して出力される。そして、バレルシフタ３０５以降の回路において、前述の場合と同様の処理が繰り返されることになる。
【００３０】
以上のような処理により、量子化データを対応するランレングスおよびレベル信号に変換するとともに、変換により得られたランレングスおよびレベルを可変長符号に更に変換することができる。
【００３１】
【発明が解決しようとする課題】
ところで、以上のような従来例においては、図２１に示すエスケープ領域は、図２０に示すエスケープ検出器１１によって検出するようになされていた。従って、図２１に示す符号化テーブルとは異なるデータにより構成されるテーブルを使用する場合には、符号化テーブル記憶部１０に記憶されている内容を書き換えるとともに、エスケープ検出器１１の検出範囲を適宜変更する必要がある。通常エスケープ検出器１１は、ハードウエア（論理回路）によって構成されているので、符号化テーブルの内容を容易に変更することができないという課題があった。
【００３２】
また、前述の例では、符号化装置のみについて言及したが、同様の問題は復号化装置においても生じるので、符号化装置においても、復号化テーブルを容易に変更することができないという課題があった。
【００３３】
更に、エスケープ符号のみならず、エンドオブブロック符号や、ブロックの最初の係数に関する符号も、前述のようにハードウエア的な構成とされいたため、これらを容易に変更することが出来ないという課題もあった。
【００３４】
本発明は以上のような状況に鑑みてなされたものであり、符号化テーブルまたは復号化テーブルを容易に書き換え可能とするものである。
【００３５】
【課題を解決するための手段】
請求項１に記載の符号化装置は、ランレングスの範囲が第１の閾値以上である場合、またはレベルの範囲が第２の閾値以上である場合、第１のエスケープ信号を生成する第１のエスケープ信号生成手段と、可変長符号が予め割り当てられている領域を含むデータを記憶している記憶手段と、ランレングスとレベルとを所定の方法に基づいて組み合わせることにより、アドレスデータを生成するアドレス生成手段と、アドレス生成手段によって生成されたアドレスデータを参照して、記憶手段から対応する可変長符号を読み出す読み出し手段と、アドレス生成手段によって生成されたアドレスデータが、可変長符号が予め割り当てられた領域を含むデータであり、かつ、アドレスデータに対応する可変長符号が存在しない場合に、第２のエスケープ信号を生成する第２のエスケープ信号生成手段と、第１または第２のエスケープ信号生成手段の一方からエスケープ信号が出力されている場合には、エスケープ符号を生成し、エスケープ符号にランレングスとレベルとを付加して出力する出力手段とを備え、記憶手段は、可変長符号が内包すべきレベルが正または負の極性を有するか否かを示す情報を記憶しており、読み出し手段が読み出したデータから極性を有するか否かを示す情報が極性を示している場合には、可変長符号の末尾のビットに対して正または負を示すデータを付加することを特徴とする。
【００３６】
請求項１１に記載の符号化方法は、可変長符号が予め割り当てられている領域を含むデータを記憶している記憶ステップと、ランレングスの範囲が第１の閾値以上である場合、またはレベルの範囲が第２の閾値以上である場合、第１のエスケープ信号を生成する第１のエスケープ信号生成ステップと、ランレングスとレベルとを組み合わせることにより、アドレスデータを生成するアドレス生成ステップと、アドレス生成ステップによって生成されたアドレスデータを参照して、記憶ステップにより記憶されているデータから対応する可変長符号を読み出す読み出しステップと、アドレス生成ステップによって生成されたアドレスデータが、可変長符号が予め割り当てられた領域を含むデータであり、かつ、アドレスデータに対応する可変長符号が存在しない場合に、第２のエスケープ信号を生成する第２のエスケープ信号生成ステップと、第１または第２のエスケープ信号生成ステップの一方からエスケープ信号が出力されている場合には、エスケープ符号を生成し、エスケープ符号にランレングスとレベルとを付加して出力する出力ステップとを含み、記憶ステップにおいて、可変長符号が内包すべきレベルが正または負の極性を有するか否かを示す情報が記憶されており、読み出しステップにおいて読み出したデータから極性を有するか否かを示す情報が極性を示している場合には、可変長符号の末尾のビットに対して正または負を示すデータを付加することを特徴とする。
【００３８】
請求項１２に記載の復号化装置は、ランレングスとレベル、および、エスケープに関する情報を記憶している記憶手段と、入力データから対応するアドレスデータを生成するアドレス生成手段と、アドレス生成手段によって生成されたアドレスデータを参照して、記憶手段から対応するランレングスとレベル、および、エスケープに関する情報とを読み出す読み出し手段と、読み出し手段によって読み出されたエスケープに関する情報を参照して、入力されたデータがエスケープ符号であるか否かを判定する判定手段と、判定手段が、入力されたデータがエスケープ符号であると判定した場合には、入力されたデータからエスケープ符号を除外してランレングスとレベルとを抽出する抽出手段とを備え、記憶手段は、可変長符号に内包されたレベルが正または負の極性を有するか否かを示す情報を記憶しており、読み出し手段により読み出されたデータから、レベルが極性を有するか否かを示す情報が極性を示している場合には、可変長符号の末尾のビットからレベルの極性を生成することを特徴とする。
【００３９】
請求項１６に記載の復号化方法は、ランレングスとレベル、および、エスケープに関する情報を記憶している記憶ステップと、入力データから対応するアドレスデータを生成するアドレス生成ステップと、アドレス生成ステップによって生成されたアドレスデータを参照して、記憶ステップにおいて記憶されている対応するランレングスとレベル、および、エスケープに関する情報とを読み出す読み出しステップと、読み出しステップによって読み出されたエスケープに関する情報を参照して、入力されたデータがエスケープ符号であるか否かを判定する判定ステップと、判定ステップが、入力されたデータがエスケープ符号であると判定した場合には、入力されたデータからエスケープ符号を除外してランレングスとレベルとを抽出する抽出ステップとを含み、記憶ステップにおいて、可変長符号に内包されたレベルが正または負の極性を有するか否かを示す情報が記憶されており、読み出しステップにおいて読み出されたデータから、レベルが極性を有するか否かを示す情報が極性を示している場合には、可変長符号の末尾のビットからレベルの極性を生成することを特徴とする。
【００４１】
請求項１に記載の符号化装置および請求項１１に記載の符号化方法においては、可変長符号が予め割り当てられている領域を含むデータが記憶されており、ランレングスの範囲が第１の閾値以上である場合、またはレベルの範囲が第２の閾値以上である場合、第１のエスケープ信号が生成され、ランレングスとレベルとを組み合わせることにより、アドレスデータが生成され、生成されたアドレスデータを参照して、対応する可変長符号が読み出され、生成されたアドレスデータが、可変長符号が予め割り当てられた領域を含むデータであり、かつ、アドレスデータに対応する可変長符号が存在しない場合に、第２のエスケープ信号が生成され、エスケープ信号が出力されている場合には、エスケープ符号が生成され、エスケープ符号にランレングスとレベルとが付加されて出力され、可変長符号が内包すべきレベルが正または負の極性を有するか否かを示す情報が記憶されており、読み出したデータから極性を有するか否かを示す情報が極性を示している場合には、可変長符号の末尾のビットに対して正または負を示すデータが付加される。
【００４２】
請求項１２に記載の復号化装置および請求項１６に記載の復号化方法においては、ランレングスとレベル、および、エスケープに関する情報が記憶されており、入力データから対応するアドレスデータが生成され、生成されたアドレスデータを参照して、対応するランレングスとレベル、および、エスケープに関する情報とが読み出され、読み出されたエスケープに関する情報を参照して、入力されたデータがエスケープ符号であるか否かが判定され、入力されたデータがエスケープ符号であると判定した場合には、入力されたデータからエスケープ符号を除外してランレングスとレベルとが抽出され、可変長符号に内包されたレベルが正または負の極性を有するか否かを示す情報が記憶されており、読み出されたデータから、レベルが極性を有するか否かを示す情報が極性を示している場合には、可変長符号の末尾のビットからレベルの極性が生成される。
【００４３】
【発明の実施の形態】
図１は、本発明を適用したビデオレコーダの一実施例の構成例を示している。画像符号化装置１では、記録媒体２に記録すべき画像が、例えば、ＭＰＥＧ符号化される。画像符号化装置１における符号化の結果得られたデータは、例えば、磁気テープや、磁気ディスク、光ディスク（例えば、ＤＶＤ（Digital Versatile Disc）など）などの記録媒体２に記録される。画像復号化装置３では、記録媒体２が再生され、その再生データがＭＰＥＧ復号化される。画像復号化装置３における復号化により得られる復号画像は、図示せぬモニタに供給されて表示される。
【００４４】
図２は、図１の画像符号化装置１の構成例を示している。この画像符号化装置においては、画像（動画像）がＭＰＥＧ（Moving Picture Experts Group）符号化されるようになされている。即ち、端子１０１には、ディジタル化された動画像信号が入力されるようになされており、この動画像信号は、演算器１０２および動きベクトル検出器（ＭＥ）１１０に供給される。動きベクトル検出器１１０では、入力された動画像信号のフレーム間の動きベクトルが検出される。
【００４５】
ここで、動きベクトル検出器１１０においては、動きベクトルの検出は、例えば、参照フレームと、現在符号化の対象となっているフレームの１６画素×１６ラインの小ブロック（マクロブロック）とをパターンマッチング（ブロックマッチング）することにより行われるようになされている。即ち、現在のマクロブロック（符号化対象のマクロブロック）の、例えば最も左からｉ番目の、最も上からｊ番目の画素の画素値を信号Ａijとし、同様に、任意の動きベクトルにより参照される参照フレームにおける１６×１６のブロックを構成する画素の画素値をＦijとするとき、次式で表される絶対値和Ｅfを最小にする動きベクトルが検出される。
【００４６】
Ｅf＝Σ｜Ａij−Ｆij｜
但し、上式におけるΣは、ｉ，ｊそれぞれを、１乃至１６の範囲の整数値に変えてのサメーションを意味する。
【００４７】
動きベクトル検出器１１０において検出された動きベクトルは、動き補償器（ＭＣ）１０９およびＶＬＣ器（可変長符号化器）１１１に供給される。動き補償器１０９は、フレームメモリ（ＦＭ）１０９Ａを備えており、動きベクトル検出器１１０からの動きベクトルにしたがって、フレームメモリ１０９Ａに記憶されている、局所復号化された画像信号を読み出し、これを、予測画像信号として、演算器１０２および１０８に供給する。即ち、動き補償器１０９は、フレームメモリ１０９Ａの読み出しアドレスを、符号化対象のマクロブロックに対応するアドレスから、動きベクトルに対応する分だけずれたアドレスに設定し、そこから画像信号を読み出して、演算器１０２および１０８に供給する。
【００４８】
演算器１０２は、端子１０１に入力された、符号化対象のマクロブロックと、動き補償器１０９から供給された予測画像との差分を計算し、その結果得られる予測残差信号を、ＤＣＴ（離散コサイン変換）器１０３に供給する。なお、例えば、符号化の開始時や、シーンチェンジがあった時などにおいては、予測残差信号が大きく予測効率が低くなるので、このようなときには、マクロブロックは、フレーム内（イントラ）符号化されるようになされている。即ち、フレーム内符号化の対象とされるマクロブロックは、演算器１０２をスルーして、そのまま、ＤＣＴ器１０３に供給される。
【００４９】
ＤＣＴ器１０３では、演算器１０２の出力に対して、２次元ＤＣＴ処理が施され、その結果得られるＤＣＴ係数が、例えば、いわゆるジグザグスキャンされて、量子化器１０４に供給される。量子化器１０４では、ＤＣＴ器１０３からのＤＣＴ係数が、レートコントローラ（ＲＣ）１０５から供給される量子化ステップ幅にしたがって量子化され、その結果得られる量子化係数が、逆量子化器１０６およびＶＬＣ器１１１に供給される。
【００５０】
ＶＬＣ器１１１は、量子化器１０４からの量子化係数、即ち、量子化されたＤＣＴ係数から、そのランレングスとレベルを検出し、このランレングスとレベルの組合せに対応する可変長符号を生成して出力する（可変長符号化処理を施して出力する）。また、ＶＬＣ器１１１では、レートコントローラ１０５または動きベクトル検出器１１０それぞれから供給される、各マクロブロックごとの量子化ステップ幅または動きベクトルに対しても可変長符号化処理を施して出力する。ＶＬＣ器１１１から出力される符号化データ（可変長符号）は、バッファ１１２に供給される。バッファ１１２は、ＶＬＣ器１１１からの符号化データを一時記憶することにより、そのビット量（データ量）の変動を吸収し、例えば一定のビットレートにして、端子１１３から、ビットストリームを出力する。
【００５１】
ＶＬＣ器１１１が出力する符号化データは、レートコントローラ１０５にフィードバックされており、これにより、レートコントローラ１０５は、ＶＬＣ器１１１が出力する符号化データのビット量を監視している。そして、レートコントローラ１０５は、バッファ１１２がオーバーフローしそうなときは、量子化ステップ幅を大きくし、また、バッファ１１２がアンダーフローしそうなときは、量子化ステップ幅を小さくして、量子化器１０４に供給し、これにより、バッファ１１２のオーバーフローおよびアンダーフローを防止するようになされている。
【００５２】
なお、レートコントローラ１０５が出力する量子化ステップ幅は、量子化器１０４の他、逆量子化器１０６およびＶＬＣ器１１１にも供給されるようになされている。
【００５３】
一方、逆量子化器１０６では、量子化器１０４から供給された量子化係数が、レートコントローラ１０５より供給される量子化ステップ幅、即ち、量子化器１０４において用いられた量子化ステップ幅と同一の量子化ステップ幅で逆量子化され、その結果得られるＤＣＴ係数が、逆ＤＣＴ器１０７に供給される。逆ＤＣＴ器１０７では、逆量子化器１０６からのＤＣＴ係数が、逆ＤＣＴ処理され、演算器１０８に供給される。
【００５４】
演算器１０８には、逆ＤＣＴ器１０７の出力の他、上述したように、動き補償器１０９から、演算器１０２に供給されている予測画像と同一のデータが供給されており、演算器１０８は、逆ＤＣＴ器１０７からの信号（予測残差信号）と、動き補償器１０９からの予測画像とを加算することで、元の画像を、局所復号する（但し、画像符号化装置においてイントラ符号化が行われている場合には、逆ＤＣＴ器１０７の出力は、演算器１０８をスルーして、フレームメモリ１０９Ａに供給される）。なお、この復号画像は、受信側において得られる復号画像と同一のものである。
【００５５】
演算器１０８において得られた復号画像は、フレームメモリ１０９Ａに供給されて記憶され、その後、インター符号化（フレーム間符号化）される画像に対する参照画像（参照フレーム）として用いられる。
【００５６】
図３は、図１の画像復号化装置３の構成例を示している。
【００５７】
端子２０１には、記録媒体２から再生されたデータ（符号化データ）が入力されるようになされており、その符号化データは、バッファ２０２に供給されて一時記憶される。バッファ２０２に記憶された符号化データは、ＶＬＤ（可変長復号化）器２０３に供給され、そこで可変長復号化される。ＶＬＤ器２０３における可変長復号化により得られる各マクロブロックごとの量子化係数（量子化されたＤＣＴ係数）および量子化ステップ幅は、逆量子化器２０４に供給され、動きベクトルは、動き補償器２０７に供給される。なお、ＶＬＤ器２０３において可変長復号化処理が行われることにより得られるのは、量子化されたＤＣＴ係数のランレングスおよびレベルであるが、ＶＬＤ器２０３は、このランレングスおよびレベルを、量子化されたＤＣＴ係数（量子化係数）に変換して、逆量子化器２０４に供給するようになされている。
【００５８】
逆量子化器２０４は、ＶＬＤ器２０３からの量子化係数を、同じくＶＬＤ器２０３からの量子化ステップ幅にしたがって逆量子化し、その結果得られるＤＣＴ係数を、逆ＤＣＴ器２０５に出力する。逆ＤＣＴ器２０５は、逆量子化器２０４からのＤＣＴ係数が、逆ＤＣＴ処理され、演算器２０６に供給される。
【００５９】
演算器２０６には、逆ＤＣＴ器２０５の出力の他、動き補償器２０７の出力も供給されている。即ち、動き補償器２０７は、フレームメモリ２０７Ａを有しており、図２の動き補償器１０９における場合と同様に、ＶＬＤ器２０３からの動きベクトルにしたがって、フレームメモリ２０７Ａから予測画像信号を読み出し、演算器２０６に供給する。演算器２０６は、逆ＤＣＴ器２０５からの信号（予測残差信号）と、動き補償器２０７からの予測画像とを加算することで、元の画像を復号し、フレームメモリ２０７Ａに供給する（但し、逆ＤＣＴ器２０５の出力が、イントラ符号化されたものである場合には、その出力は、演算器２０６をスルーして、フレームメモリ２０７Ａに供給される）。
【００６０】
フレームメモリ２０７Ａに記憶された復号画像は、その後に復号される画像の参照画像として用いられるとともに、適宜読み出され、モニタなどに表示される。
【００６１】
図４は、本発明の符号化装置の実施の形態の一例である。この実施の形態において、ランレングス／レベル検出器３００は、図２に示す量子化器１０４から出力された量子化データのランレングスおよびレベルを検出し、符号化テーブル記憶部３０１（アドレス生成手段、記憶手段、第２のエスケープ信号生成手段）に供給するようになされている。
【００６２】
符号化テーブル記憶部３０１は、ランレングスとレベルに関する情報が入力され、対応する可変長符号と、その可変長符号の長さを示す符号長とが出力されるようになされている。また、ランレングスとレベルに関する情報が、第２のエスケープ領域（後述する）に属する場合には、第２のエスケープ信号を“１”の状態とするようになされている。
【００６３】
図５は、図４に示す符号化テーブル記憶部３０１に格納されているデータの一例を示す図である。例えば、ＭＰＥＧにおいては、ランレングス（RUN）として０乃至６３の範囲（従って、６ビットで表すことのできる範囲）を用いることができ、また、レベル（LEVEL）（レベルの絶対値）として０乃至２０４７の範囲（従って、１１ビットで表すことのできる範囲（符号ビットを含めれば１２ビット）を用いることができる。
【００６４】
そして、そのような範囲において、０乃至３１の範囲のランレングス（RUN）および１乃至４０の範囲のレベル（LEVEL）（レベルの絶対値）の組合せのうちの１１４の組合せに対して、可変長符号があらかじめ割り当てられている。従って、このような範囲のランレングスとレベルの組合せをアドレスとした場合、そのアドレスを表現するには、前述したように、通常、１１ビットが必要となる。
【００６５】
ところで、符号化テーブル記憶部３０１には、ランレングスが０乃至３１の範囲で、かつ、レベルが１乃至４０の範囲のデータが格納されている。符号化テーブル記憶部３０１に記憶されているデータには、２種類が存在している。１つは、可変長符号であり、図５において、四角形で示すデータに対応している。また、他の１つは、エスケープデータであり、図５において、ハッチングが施してある領域のデータに対応する。なお、符号化テーブル記憶部３０１は、ＲＡＭなどにより構成されており、その記憶内容は、図示せぬ制御部（検出手段）の制御に応じて、適宜書き換え可能とされている。
【００６６】
エスケープ判定器３０２（第１のエスケープ信号生成手段）は、入力されたランレングスが３２以上であるか、または、レベルが４１以上の場合（図５に示す第１のエスケープ領域）の場合に、第１のエスケープ信号を“１”の状態とするとともに、エスケープ符号の符号長をセレクタ３０９に供給するようになされている。
【００６７】
論理和（ＯＲ）回路３０３は、符号化テーブル記憶部３０１から出力された第２のエスケープ信号とエスケープ判定器３０２から出力される第１のエスケープ信号の論理和を演算し、マルチプレクサ３０４（読み出し手段、出力手段）に供給するようになされている。
【００６８】
マルチプレクサ３０４は、論理和回路３０３の出力の状態に応じて、エスケープ符号に対して図２に示す量子化器１０４の出力信号（ランレングスとレベル）を付加したデータ、または、符号化テーブル記憶部３０１の出力データの何れか一方を選択し、バレルシフタ３０５に出力するようになされている。
【００６９】
なお、符号化テーブルには、可変長符号の他、その可変長符号の長さ、および、第２のエスケープ信号を生成するためのデータも登録されている。バレルシフタ３０５に供給された可変長符号の長さは、符号化テーブル記憶部３０１から読み出され、加算器３０７に供給されるようになされている。
【００７０】
ここで、符号化テーブルに記憶されている可変長符号のワード幅は、例えば、可変長符号の最大の長さＬなどと同一になされており、その長さＬに満たない可変長符号については、例えば、その上位ビットに、０Ｂ（Ｂは、２進数であることを示す）を配置することによって、Ｌビットとされている。従って、あるランレングスおよびレベルの組合せに対応する可変長符号の長さがｉ（≦Ｌ）ビットである場合、符号化テーブル記憶部３０１の出力は、その可変長符号の上位ビットに、Ｌ−ｉ個の０Ｂを付加したものとなっている。このため、符号化結果として、連続した可変長符号列を出力するためには、符号化テーブル記憶部３０１の出力から、その上位ビットとして付加されているＬ−ｉ個の０Ｂを削除する必要がある。
【００７１】
そこで、バレルシフタ３０５においては、符号化テーブル記憶部３０１の出力がビットシフトされ、これにより、いまの符号化テーブル記憶部３０１の出力に含まれる可変長符号のＭＳＢ（最上位ビット）が、前回の符号化テーブル記憶部３０１の出力に含まれる可変長符号のＬＳＢ（最下位ビット）の１つ下位のビットの位置に移動されるようになされている。
【００７２】
セレクタ３０９は、マルチプレクサ３０４の制御に応じて、符号化テーブル記憶部３０１から出力される符号長、または、エスケープ判定器３０２から出力される符号長の何れかを選択して、加算器３０７と可変長符号連接器３０８に対して出力する。即ち、ランレングス／レベル検出器３００から出力されるランレングスおよびレベルが第１のエスケープ領域に属している場合には、セレクタ３０９は、エスケープ判定器３０２から出力される符号長を選択して出力し、その他の場合には、符号化テーブル記憶３０１から出力される符号長を選択して出力する。
【００７３】
加算器３０７は、符号化テーブル記憶部３０１から供給される可変長符号の長さと、ＦＦ部３０６の記憶値とを加算し、ＦＦ部３０６に出力するようになされている。ＦＦ部３０６は、加算器３０７の出力値を一時記憶し、その記憶値を、符号化テーブル記憶部３０１から可変長符号の長さが出力されるのを待って、加算器３０７とバレルシフタ３０５に供給するようになされている。
【００７４】
従って、加算器３０７およびＦＦ部３０６によれば、可変長符号の長さの累積加算が行われるようになされている。
【００７５】
なお、バレルシフタ３０５のビット数Ｎが２K（但し、Ｋは正の整数）に等しいとき、加算器３０７は、Ｋビットの加算器で構成され、従って、累積加算値Ｓが２K以上となったときには、Ｓ−２Kを出力するようになされている。
【００７６】
可変長符号連接器３０８は、バレルシフタ３０５から出力されるデータを、逐次連接して、ビットストリームデータとして出力するようになされている。
【００７７】
次に、その動作について説明する。
【００７８】
符号化テーブル記憶部３０１は、入力されたランレングスおよびレベルに対応するアドレスに記憶されている可変長符号およびその長さを読み出し、可変長符号はマルチプレクサ３０４に、可変長符号の長さは加算器３０７に、それぞれ供給する。
【００７９】
ここで、符号化テーブル記憶部３０１に記憶されているデータは、Ｎ＋６ビットにより構成されており、そのうち、ＭＳＢは、第２のエスケープ信号を生成する際に使用するビットとして確保されている。即ち、符号化テーブル記憶部３０１に記憶されている所定のデータが、第２のエスケープ領域に対応している場合には、そのデータのＭＳＢは、“１”の状態に設定される。また、ＭＳＢの１つ下位のビットから５つ下位のビットまでの合計５ビットは、符号長を格納するビットとされている。更に、ＭＳＢの６つ下位のビットからＬＳＢまでのＮビットには、可変長符号が、例えば右詰めで（ＬＳＢ側に詰めて）記憶されている。
【００８０】
従って、可変符号データがＮビット未満の場合に、その上位ビットは、例えば０Ｂなどとされる（ＭＰＥＧにおいては、符号化出力の最大ビット数が２８ビットと規定されており、従って、符号化テーブルに記憶されている可変長符号のワード幅が、例えば、この２８ビットであり、かつ、Ｎ＝３２ビットで構成される場合には、２８ビットの可変長符号の上位ビットとして、４ビットの０Ｂが付加され、これにより、３２ビットとされる）。これにより、可変長符号は、一律に、Ｎビット固定のデータ（以下、適宜、Ｎビット固定可変長符号という）とされる。
【００８１】
符号化テーブル記憶部３０１から出力されたＮビット固定可変長符号は、マルチプレクサ３０４に出力される。マルチプレクサ３０４は、論理和回路３０３の出力が“０”の状態の場合（エスケープ領域以外のデータが入力された場合）には、符号化テーブル記憶部３０１から出力されたＮビット可変長符号をそのまま出力する。また、論理和回路３０３の出力が“１”の状態の場合（第１または第２のエスケープ領域のデータが入力された場合）には、エスケープ符号に対してランレングスおよびレベルデータを付加して出力する。
【００８２】
加算器３０７では、符号化テーブル記憶部３０１から供給された可変長符号の長さと、ＦＦ部３０６の記憶値とが加算されることにより、可変長符号の長さが累積加算される。この累積加算値は、ＦＦ部３０７に供給されて記憶される。ＦＦ部３０７に記憶された累積加算値は、シフト量として、バレルシフタ３０５と可変長符号連接器３０８に供給され、ＦＦ部３０６に記憶された累積加算値は、次の累積加算値の算出のために、加算器３０７に供給される。
【００８３】
バレルシフタ３０５は、符号化テーブル記憶部３０１の出力をビットシフトし、これにより、いまの符号化テーブル記憶部３０１の出力に含まれる可変長符号のＭＳＢ（最上位ビット）が、前回の符号化テーブル記憶部３０１の出力に含まれる可変長符号のＬＳＢ（最下位ビット）の１つ下位のビットの位置に移動されるようになされている。
【００８４】
即ち、符号化テーブル記憶部３０１から出力された可変長符号の長さは、ＦＦ部３０６と加算器３０７により累積加算され、バレルシフタ３０５におけるビットシフト量が算出される。バレルシフタ３０５は、この累積加算値（ビットシフト量）に従って、符号化テーブル記憶部３０１の出力をビットシフトし、可変長符号連接器３０８に対して出力する。
【００８５】
ここで、バレルシフタ３０５が、Ｎ（≧Ｌ）ビットで構成されているとすると、可変長符号連接器３０８は、バレルシフタ３０５が出力するＮビットそれぞれをラッチするＮ個のフリップフロップを含んでいる。
【００８６】
いま、ＬＳＢを第０ビットとし、ＬＳＢの１つ上位のビットを第１ビット、ＬＳＢから２つ上位のビットを第２ビット、・・・というものとし、可変長符号連接器３０８の第ｍ（＜Ｎ）ビットからＭＳＢ（第Ｎビット）に、可変長符号が、既に連続してラッチされているものとする。
【００８７】
この場合、バレルシフタ３０５からは、可変長符号のＭＳＢが第ｍ−１ビットとなるように、符号化テーブル記憶部３０１の出力がビットシフトされ、可変長符号連接器３０８に出力される。可変長符号連接器３０８は、ＦＦ部３０６から出力される符号の累積加算値と、符号化テーブル３０１から出力される符号長とに応じて、バレルシフタ３０５の出力を選択的にラッチするようになされており、この場合、可変長符号連接器３０８は、第ｍ−１ビット以下のビットをラッチするフリップフロップのみを動作させる。
【００８８】
従って、この場合、可変長符号連接器３０８では、バレルシフタ３０５の出力のうちの第ｍ−１ビット以下のみがラッチされ、これにより、可変長符号連接器３０８の第ｍビット以上にラッチされている可変長符号（可変長符号列）は、そのままで、その可変長符号に続くように、バレルシフタ３０５から出力された可変長符号が配置される。
【００８９】
以下、同様の処理が繰り返され、その後、可変長符号連接器３０８に、Ｎビット分の可変長符号列がラッチされると、可変長符号連接器３０８は、そのＮビットの可変長符号列をビットストリームとして出力する。
【００９０】
ところで、いま、図５に示す第１のエスケープ領域に属するランレングスおよびレベルがランレングス／レベル検出器３００から出力されたとすると、エスケープ判定器３０２の出力である第１のエスケープ信号が“１”の状態となる。すると、論理和回路３０３の出力も“１”の状態となり、その結果、マルチプレクサ３０４は、エスケープ符号を生成するとともに、生成したエスケープ符号に対して、ランレングス／レベル検出器３００から出力された、ランレングスおよびレベルを付加し、バレルシフタ３０５に対して出力する。
【００９１】
また、図５に示す第２のエスケープ領域に属するランレングスおよびレベルがランレングス／レベル検出器３００から出力されたとすると、これらのデータは、符号化テーブル記憶部３０１に供給される。符号化テーブル記憶部３０１は、ランレングスおよびレベルに対応するアドレスに格納されているデータを読み出してデータバスから出力する。
【００９２】
データバスのうち、ＭＳＢは、第２のエスケープ信号として、論理和回路３０３に供給されており、また、符号化テーブル記憶部３０１に格納されているデータのうち、第２のエスケープ領域に属するデータのＭＳＢは、“１”の状態とされているので、第２のエスケープ領域に属するランレングスおよびレベルがランレングス／レベル検出器３００から出力されると、第２のエスケープ信号は、“１”の状態となる。
【００９３】
第２のエスケープ信号が“１”の状態とされると、論理和回路３０３の出力は、“１”の状態となるので、マルチプレクサ３０４は、エスケープ符号を生成するとともに、生成したエスケープ符号に対して、ランレングス／レベル検出器３００から出力された、ランレングスおよびレベルを付加し、バレルシフタ３０５に対して出力する。
【００９４】
なお、前述のように、符号化テーブル記憶部３０１に記憶されているデータは、適宜書き換え可能とされているので、このテーブルの内容は自由に書き換えることが可能となる。その場合、第２のエスケープ領域のデータも同時に書き換えることにより、可変長符号が存在しない領域に対しても処理を行うことが可能となる。
【００９５】
従って、以上の実施の形態によれば、符号化テーブル記憶部３０１に記憶されているデータを適宜書き換えることにより、異なる可変長符号化に対しても簡単に対応することが可能となる。
【００９６】
次に、復号化装置について説明する。
【００９７】
図６は、図３に示すＶＬＤ器２０３の詳細な構成例を示すブロック図である。
【００９８】
この図において、可変長符号読み出し器５００は、図３に示すバッファ２０２から出力されるビットストリームから、Ｎビット分の可変長符号列を読み出すようになされている。バレルシフタ５０１は、Ｎビットの可変長符号列をＦＦ部５０２から出力されるシフト量に応じてシフトさせ、復号化テーブル記憶部５０４に対して出力するようになされている。
【００９９】
復号化テーブル記憶部５０４は、バレルシフタ５０１から出力された可変長符号列に対応するアドレスに格納されているランレングスおよびレベルデータ、並びに、符号長を読み出してデマルチプレクサ５０４と加算器５０３にそれぞれ出力する。また、バレルシフタ５０１から出力された可変長符号が、エスケープ符号である場合には、第３のエスケープ信号をデマルチプレクサ５０６に対して供給するようになされている。
【０１００】
デマルチプレクサ５０６は、復号化テーブル記憶部５０４から出力されたランレングスとレベルとを、量子化されたＤＣＴ係数に変換し、図３に示す逆量子化回路２０４に出力するようになされている。また、第３のエスケープ信号が復号化テーブル記憶部５０４から出力された場合には、バレルシフタ５０１から出力された可変長符号からエスケープ符号を除外して、ランレングスとレベルを生成した後、これらをＤＣＴ係数に変換して出力するようになされている。
【０１０１】
次に、以上の実施の形態の動作について説明する。
【０１０２】
可変長符号読み出し器５００は、図３に示すバッファ２０２から出力されるビットストリームから、Ｎビット分の可変長符号列を読み出して記憶する。
【０１０３】
加算器５０３では、符号化／復号化テーブル記憶部５０４（アドレス生成手段、記憶手段）から供給される、前回復号化された可変長符号の長さσと、ＦＦ部５０２の記憶値、即ち、前回のシフト量Σとが加算されることにより、可変長符号の長さが累積加算される。この累積加算値Σ＋σは、ＦＦ部５０２に供給されて記憶される。ＦＦ部５０２に記憶された累積加算値は、シフト量として、バレルシフタ５０１に供給され、ＦＦ部５０２に記憶された累積加算値は、次の累積加算値の算出のために、加算器５０３に供給される。
【０１０４】
可変長符号読み出し器５００は、記憶しているＮビットの可変長符号列のうちの上位ｉ（＜Ｎ）ビットの復号化が終了しているとき、その残りのＮ−ｉビットと、次のＮビットの可変長符号列のうちの上位ｉビットとを、シフト量Σ＋σ（ここでは、Σ＋σ＝ｉ）に基づいて選択し、その選択した合計Ｎ（＝（Ｎ−ｉ）＋ｉ）ビットのデータを、バレルシフタ５０１に供給する。
【０１０５】
バレルシフタ５０１は、ＦＦ部５０２からシフト量Σ＋σを受信すると、可変長符号読み出し器５００からのＮビットのデータを、Σ＋σビットだけ左シフトし、そのシフト結果としてのＮビットのシフトデータを、復号化テーブル記憶部５０４に供給する。ここで、このＮビットのシフトデータのＭＳＢからは、現在、復号化対象となっている可変長符号が配置されている。即ち、バレルシフタ５０１においては、これから復号化される可変長符号の、いわば頭出しが行われる。
【０１０６】
復号化テーブル記憶部５０４においては、バレルシフタ５０１からのＮビットのシフトデータが、例えば、アドレスデコードされ、そのデコード結果をアドレスとして、そのアドレスに記憶されているランレングスおよびレベル、並びに可変長符号の長さが読み出される。そして、ランレングスおよびレベルは、デマルチプレクサ５０６（読み出し手段、判定手段、抽出手段）に供給され、可変長符号の長さは、加算器５０３に供給される。
【０１０７】
デマルチプレクサ５０６では、復号化テーブル記憶部５０４からのランレングスおよびレベルが、量子化されたＤＣＴ係数に変換され、図３に示す逆量子化器２０４に供給される。
【０１０８】
以下、同様の処理が繰り返され、可変長符号読み出し器５００に記憶されているＮビットの可変長符号列の復号化がすべて終了すると、次のＮビットの可変長符号列の復号化が開始される。さらに、可変長符号読み出し回路５００において、次に復号化すべきＮビットの可変長符号列がバッファ２０２から読み出されて記憶される。そして、以下、同様の処理が繰り返される。
【０１０９】
ところで、バレルシフタ５０１から出力された可変長符号がエスケープ符号である場合には、符号化テーブル記憶部５０４から出力される第３のエスケープ信号は、“１”の状態とされ、その結果、デマルチプレクサ５０６は、バレルシフタ５０１から出力される可変長符号データからエスケープ符号を除外して得られたランレングスとレベルとを出力する。
【０１１０】
即ち、復号化テーブル記憶部５０４に格納されているデータは、エスケープ（１ビット）、符号長（５ビット）、ランレングス（６ビット）、および、レベル（１２ビット）により構成されている。なお、エスケープ符号が先頭に付加された可変長符号（エスケープ符号＋ランレングス＋レベル）に対するデータのエスケープビットは“１”の状態とされており、それ以外のデータの同ビットは、“０”の状態とされている。なお、復号化テーブル５０４から出力されるデータバスの、ＭＳＢは、第３のエスケープ信号としてデマルチプレクサ５０６に入力されている。
【０１１１】
従って、バレルシフタ５０１から出力されたデータがエスケープ符号を含んでいる場合には、復号化テーブル記憶部５０４の出力信号である第３のエスケープ信号は“１”の状態とされる。その結果、デマルチプレクサ５０６は、バレルシフタ５０１から出力される可変長符号からエスケープ符号を除外して得られたランレングスおよびレベルを出力する。
【０１１２】
なお、復号化テーブル記憶部５０４に記憶されているデータは、図示せぬ制御部の制御によって適宜書き換え可能とされているので、異なる可変長符号化にも対応することが可能となる。
【０１１３】
図７は、本発明の符号化装置の第２の実施の形態の構成例を示すブロック図である。この図において、図４と対応する部分には、同一の符号が付してあるので、その説明は適宜省略する。なお、この図においては、図４に示すバレルシフタ以降の回路が省略されている。
【０１１４】
この図において、ランレングス／レベル検出器３００は、量子化されたＤＣＴ係数のランレングス、および、レベルを検出するようになされている。デコーダ６００（変換手段）は、ランレングス／レベル検出器３００の出力データをデコードし、第１のエスケープ領域に属するデータ、エンドオブブロックデータ、および、ブロックの第１番目の係数のレベルが“１”であるデータを、所定のアドレスにそれぞれマッピングするようになされている。
【０１１５】
符号化テーブル記憶部６０１は、図８に示す領域のうち、ランレングスが０乃至３１の領域であり、かつ、レベルが０乃至４０の領域のデータを格納している。また、レベルが０であり、かつ、ランレングスが０乃至２の領域には、それぞれ、エスケープ符号、エンドオブブロック符号、および、ブロックの第１番目の係数のレベルが“１”の場合の符号が格納されている。また、第２のエスケープ領域に格納されているデータのＭＳＢと、ランレングスが０およびレベルが０に対応するアドレスに格納されているデータ（エスケープ符号）のＭＳＢは、共に“１”の状態とされており、また、それ以外の領域のデータは、全て“０”の状態とされている。更に、符号化テーブル記憶部６０１のデータバスのＭＳＢは、第１、第２のエスケープ信号として、マルチプレクサ６０３に入力されており、この信号は、デコーダ６００の出力アドレスが第１または第２のエスケープ領域に属する場合には、“１”の状態とされる。
【０１１６】
マルチプレクサ６０３は、符号化テーブル記憶部６０１の出力である第１、第２のエスケープ信号が“１”の状態である場合には、エスケープ符号を生成し、ランレングス／レベル検出器３００により検出されたランレングスとレベルを生成したエスケープ符号に付加して出力する。また、その他の場合には、符号化テーブル記憶部６０１から出力された符号を選択し、バレルシフタ３０５に対して出力する。
【０１１７】
それ以降の回路の構成は、図４に示す場合と同様である。
【０１１８】
次に、以上の実施の形態の動作について説明する。
【０１１９】
量子化器１０４から量子化されたＤＣＴ係数のデータが出力されると、ランレングス／レベル検出器３００は、ランレングスとレベルデータに変換し、出力する。デコーダ６００は、ランレングス／レベル検出器３００により検出されたランレングスおよびレベルデータをデコードし、アドレスデータを生成して符号化テーブル記憶部６０１に出力する。
【０１２０】
いま、ランレングス／レベル検出器３００の出力データが、対応する可変符号長が存在する領域（図８の正方形が存在する領域）に属する場合には、デコーダ６００は、例えば、レベルを上位ビット、ランレングスを下位ビットとして連接した後、符号化テーブル記憶部６０１に出力する。符号化テーブル記憶部６０１は、供給されたアドレスに対応するデータを読み出して、マルチプレクサ６０３に対して出力する。なお、この領域に対応するアドレスに格納されているデータは、図４に示す実施の形態の場合と同様である。
【０１２１】
また、ランレングス／レベル検出器３００の出力データが、第２のエスケープ領域に属する場合には、デコーダ６００は、レベルを上位ビットとし、ランレングスを下位ビットとして連接してアドレスデータを生成し、符号化テーブル記憶部６０１に出力する。符号化テーブル記憶部６０１の第２のエスケープ領域に格納されているデータのＭＳＢは、“１”の状態とされているので、この領域に対応するデータが読み出された場合には、第１、第２のエスケープ信号が“１”の状態となり、その結果、マルチプレクサ６０３はエスケープ符号を生成し、ランレングス／レベル検出器３００から出力されるランレングスとレベルとを付加して出力することになる。
【０１２２】
更に、ランレングス／レベル検出器３００の出力データが、第１のエスケープ領域に属する場合には、デコーダ６００は、上位ビットおよび下位ビットがともに“０”であるアドレスデータを生成し、符号化テーブル記憶部６０１に出力する。符号化テーブル記憶部６０１の上位アドレスが“０”および下位アドレスが“０”の領域には、エスケープ符号が格納されており、そのＭＳＢは“１”とされているので、第１の領域に対応するランレングスおよびレベルがランレングス／レベル検出器３００より出力された場合には、第１、第２のエスケープ信号が“１”の状態となり、その結果、マルチプレクサ６０３はエスケープ符号を生成し、ランレングス／レベル検出器３００から出力されるランレングスとレベルとを付加して出力することになる。
【０１２３】
更にまた、ランレングス／レベル検出器３００の出力データが、エンドオブブロックデータである場合には、デコーダ６００は、上位ビットが“０”、下位ビットが“１”であるアドレスデータを生成して、符号化テーブル記憶部６０１に出力する。符号化テーブル記憶部６０１の上位アドレスが“０”および下位アドレスが“１”の領域には、エンドオブブロック符号とその符号長とが格納されており、符号化テーブル記憶部６０１は、これらのデータをマルチプレクサ６０３に対して出力することになる。マルチプレクサ６０３は、符号化テーブル記憶部６０１から出力される符号を選択して出力する。
【０１２４】
また、ランレングス／レベル検出器３００の出力データを構成するブロックの第１番目の係数のレベルが“１”である場合には、デコーダ６００は、上位ビットが“０”、下位ビットが“２”であるアドレスデータを生成して、符号化テーブル記憶部６０１に出力する。符号化テーブル記憶部６０１の上位アドレスが“０”および下位アドレスが“２”の領域には、ブロックの第１番目の係数が“１”である場合の符号とその符号長とが格納されており、符号化テーブル記憶部６０１は、これらのデータをマルチプレクサ６０３に対して出力することになる。マルチプレクサ６０３は、符号化テーブル記憶部６０１から出力される符号を選択して出力する。
【０１２５】
以上の実施の形態によれば、符号化テーブル記憶部６０１に記憶されているデータを適宜書き換えることにより、他の可変長符号にも対応することが可能となる。また、この実施の形態では、エスケープ符号、エンドオブブロック符号、および、ブロックの第１の係数が“１”である場合に対応する符号を、上位ビットが０である領域に格納している。これは、レベルを上位ビットとした場合、上位ビットは１から始まっているため、上位ビットが０となる領域が使用されない状態となるので、この領域を有効利用することを可能とするためである。
【０１２６】
次に、本発明の符号化装置の第３の実施の形態について説明する。図９は、本発明の符号化装置の第３の実施の形態の構成例を説明するブロック図である。この図において、図４と対応する部分には同一の符号を付してあるので、その説明は省略する。なお、この実施例では、エスケープ符号に対する構成は、説明を簡略化するために省略されている。
【０１２７】
この図において、ランレングス／レベル検出器３００は、量子化器１０４の出力である量子化されたＤＣＴ係数を入力し、対応するランレングスとレベルとを出力するようになされている。デコーダ６２０は、ランレングス／レベル検出器３００から出力されたデータのレベルを上位ビットとし、ランレングスを下位ビットとして連接してアドレスデータを生成し、符号化テーブル記憶部６２１に出力する。また、デコーダ６２０は、ランレングス／レベル検出器３００の出力がエンドオブブロックに対応する場合には、上位ビットが“１”であり、また、下位ビットが“０”であるデータを生成して、符号化テーブル記憶部６２１に対して出力する。
【０１２８】
符号化テーブル記憶部６２１には、図１０に示すようなデータが格納されている。即ち、レベルを上位ビットとし、また、ランレングスを下位ビットとすると、上位ビットが１であり、かつ、下位ビットが０であるアドレスには、エンドオブブロック符号と、ブロックの第１番目の係数のレベルが“１”である場合の符号とが記憶されている。
【０１２９】
なお、このように、異なる符号を同一の符号でまとめているのは、ＭＰＥＧにおいては、図２２に示すように、エンドオブブロックを示す可変長符号は、“１０”であり、また、最初のＤＣＴ係数のレベルが“１”の場合の可変長符号は、“１ｓ”であり、レベルの符号が正の場合には、ｓ＝０であるので、“１０”となり相互に等しいからである。
【０１３０】
次に、以上の実施の形態の動作について簡単に説明する。
【０１３１】
いま、ランレングス／レベル検出器３００からエンドオブブロックに対応する符号が入力された場合には、デコーダ６２０は、上位アドレスが“１”、下位アドレスが“０”のデータを出力する。その結果、符号化テーブル記憶部６２１からは、エンドオブブロック符号とその符号長とが読み出されて出力される。
【０１３２】
また、ブロックの第１番目の係数のレベルが“１”の場合にも、符号化テーブル記憶部６２１の上位アドレスが“１”、下位アドレスが“０”の領域からブロックの第１番目の係数のレベルが“１”である場合に対応する符号とその符号長とが読み出されて出力される。
【０１３３】
以上の実施の形態によれば、ＭＰＥＧに対応した符号化装置を構成することが可能となる。
【０１３４】
図１１は、正または負の極性を含むレベルデータに対応する符号化装置の構成例を示す図である。なお、この実施の形態において、図４の場合と対応する部分には、同一の符号を付してあるので、その説明は省略する。
【０１３５】
符号化テーブル記憶部６４１（抽出手段）に記憶されているデータには、ＤＣＴ係数のレベルが正または負であることを示すデータが、例えば、ＭＳＢに含まれており、ランレングス／レベル検出器３００から出力されるレベルが極性を有している場合には、前述のビットが“１”であるデータが読み出されて出力されることになる。
【０１３６】
符号化テーブル記憶部６４１のデータバスのＭＳＢは、レベルの極性の有無を示す信号としてマルチプレクサ６４３に供給されているので、ランレングス／レベル検出器３００から出力されたレベルが極性を有している場合には、レベルの極性の有無を示す信号は“１”の状態となる。
【０１３７】
レベルの極性生成器６４２は、ランレングス／レベル検出器３００から出力されるレベルの極性が、正の場合には値“０”を生成し、また、負の場合には値“１”を生成してマルチプレクサ６４３に対して出力する。
【０１３８】
マルチプレクサ６４３は、符号化テーブル記憶部６４１から出力されるレベルの極性の有無を示す信号が“１”の状態である場合には、レベルの極性生成器６４２から出力されるレベルの極性を、符号の末尾のビット（図２２および図２３に示す符号ｓ）として出力するようになされている。
【０１３９】
次に、以上の実施の形態の動作について簡単に説明する。
【０１４０】
いま、ランレングス／レベル検出器３００から、極性を有するレベルデータが出力されたとすると、符号化テーブル記憶部６４１から出力されるレベルの極性の有無を示す信号は“１”の状態となる。
【０１４１】
また、そのとき、レベルの極性生成器６４２は、ランレングス／レベル検出器３００から出力されたレベルデータが、例えば、負の値を取る場合には、値“１”を生成して、マルチプレクサ６４３に対して出力する。マルチプレクサ６４３は、符号化テーブル記憶部６４１から出力されるレベルの極性の有無を示す信号が“１”の状態である場合には、レベルの極性生成器６４２から出力される値（いまの例では“１”）を選択し、符号の末尾のビットとして出力する。
【０１４２】
以上のような実施の形態によれば、レベルが極性を有する場合においても、可変長符号化を行うことが可能となる。
【０１４３】
図１２は、レベルが極性を有し、かつ、エンドオブブロックが含まれる場合に対応する符号化装置の構成例を示すブロック図である。この図において、図１１の場合と対応する部分には同一の符号が付してあるのでその説明は省略する。
【０１４４】
この実施の形態においては、図１１の場合と比較して、エンドオブブロック判定器６６２が新たに追加されている。その他の構成は、図１１に示す場合と同様である。
【０１４５】
エンドオブブロック判定器６６２は、ランレングス／レベル検出器３００からエンドオブブロックに対応するデータが出力された場合には、図示せぬ制御部からの制御信号に応じて、レベルの値を“０”にする。その結果、レベルの極性生成器６４２からは値“０”が出力されるので、可変長符号が極性を有する場合（レベルの極性の有無を示す信号が“１”の状態である場合）であっても、エンドオブブロックが入力された場合には、マルチプレクサ６４３からは、符号の末尾のビットとして、値“０”が出力されることになる。
【０１４６】
図１３は、図１２と同様の機能を有する符号化装置の他の構成例を示す図である。
【０１４７】
この図において、図１２と対応する部分には同一の符号を付してあるのでその説明は省略する。この図においては、図１２に示すエンドオブブロック判定器６６２が、エンドオブブロック判定器６８２に置換されている。その他の構成は図１２に示す場合と同様である。
【０１４８】
エンドオブブロック判定器６８２は、図示せぬ制御部からの制御信号に応じて、レベルの値を正の値にする。その結果、レベルの極性生成器６４２からは値“０”が出力されるので、可変長符号が極性を有する場合（レベルの極性の有無を示す信号が“１”の状態である場合）であっても、エンドオブブロックが入力された場合には、マルチプレクサ６４３からは、符号の末尾のビットとして、値“０”が出力されることになる。
【０１４９】
また、図１４は、図１２および図１３に示す構成例と同様の機能を有する符号化装置の他の構成例を示すブロック図である。なお、この図において、図１２および図１３と対応する部分には同一の符号が付してあるのでその説明は省略する。
【０１５０】
この実施の形態においては、エンドオブブロック判定器７００と無効化器７０１（無効化手段、停止手段）が新たに追加されている。
【０１５１】
エンドオブブロック判定器７００は、ランレングス／レベル検出器３００から出力されるランレングスおよびレベルがエンドオブブロックである場合には、図示せぬ制御部からの制御信号に応じて、これを検知し、無効化器７０１に対して制御信号を出力する。
【０１５２】
無効化器７０１は、エンドオブブロック判定器７００からの制御信号に応じて、符号化テーブル記憶部６４１から出力されるレベルの極性の有無を示す信号を無効化（“０”の状態に）する。
【０１５３】
次に、以上の実施の形態について簡単に説明する。
【０１５４】
ランレングス／レベル検出器３００から、エンドオブブロックに対応するデータが出力された場合には、図示せぬ制御回路から制御信号が出力され、エンドオブブロック判定器７００に供給される。エンドオブブロック判定器７００は、無効化器７０１を制御し、符号化テーブル記憶部６４１から出力されるレベルの極性の有無を示す信号を無効化（“０”の状態に）する。
【０１５５】
その結果、レベルの極性生成器６４２の出力の状態に拘わらず、マルチプレクサ６４３から出力される符号の末尾のビットは、“０”の状態とされるので、エンドオブブロック符号が正確に生成されることになる。
【０１５６】
図１５は、図１４と同様の動作を行う符号化装置の他の構成例を示すブロック図である。この図において、図１４と対応する部分には、対応する符号が付してあるのでその説明は省略する。
【０１５７】
この例では、無効化器７０１がレベルの極性生成器６４２の出力とマルチプレクサ６４３の入力との間に挿入されている。その他の構成は、図１４に示す場合と同様である。
【０１５８】
この実施の形態では、エンドオブブロック判定回路７００がランレングス／レベル検出器３００の出力がエンドオブブロックを示していると判定した場合には無効化器７０１により、レベルの極性生成器６４２から出力されるレベルの極性を示す信号を無効（“０”の状態）にするので、前述の場合と同様に、エンドオブブロックが検出された場合には、マルチプレクサ６４３から出力される符号の末尾のビットは“０”の状態とされるので、エンドオブブロック符号が正確に出力されることになる。
【０１５９】
続いて、復号化装置の他の構成例について説明する。
【０１６０】
図１６は、本発明の復号化装置の第２の実施の形態の構成例を示すブロック図である。なお、この図において、図６に示す場合と対応する部分には同一の符号を付してあるので、その説明は省略する。
【０１６１】
この実施の形態においては、図６に示す場合と比較して、デコーダ８００が新たに追加されている。その他の構成は図６の場合と同様である。
【０１６２】
デコーダ８００は、可変長符号の特性を利用して、復号化テーブル記憶部５０４に格納するデータの量を削減しようとするものである。
【０１６３】
即ち、図２２および図２３に示すように、可変長符号の大部分の上位ビットは０であり、このような可変長符号の性質を利用して、可変長符号そのものではなく、その一部としての、例えば、上位ビットの０Ｂの並びに基づいて、可変長符号を変換した（可変長符号の一部で構成される）可変長中間符号生成し、その中間符号をアドレスとして、復号化テーブル記憶部５０４に対して出力するようにすることで、可変長復号化テーブルの縮小化を図ることが可能となる。
【０１６４】
なお、ＭＰＥＧに規定されている可変長符号については、例えば、その最下位ビットから８ビット（符号ビットｓを含む下位８ビット）だけで、各可変長符号の特定が可能であることが、本件発明者により確認されている。
【０１６５】
次に、以上の実施の形態の動作について簡単に説明する。
【０１６６】
バレルシフタ５０１から出力されたデータは、デコーダ５０１において、可変長符号の上位ビットの０または１の並びに基づいて、その可変長符号が、元のビット数より少ないビット数で構成される可変長中間符号に変換され、復号化テーブル記憶部５０４に供給される。
【０１６７】
復号化テーブル記憶部５０４は、デコーダ８００から出力されたデータに対応するアドレスに格納されているデータを読み出して、デマルチプレクサ５０５に対して出力する。また、復号化テーブル記憶部５０４に格納されているデータのＭＳＢは第３のエスケープ信号としてデマルチプレクサ５０５に供給されており、バレルシフタ５０１から出力されたランレングスおよびレベルが第１または第２のエスケープ領域に属する場合には、第３のエスケープ信号が“１”の状態とされる。その結果、デマルチプレクサ５０５は、バレルシフタ５０１から出力される可変長符号からエスケープ符号を除外して、得られたランレングスおよびレベルデータを出力する。
【０１６８】
以上の実施の形態によれば、復号化テーブル記憶部５０４に記憶されているデータを適宜書き換えることが可能となるので、異なる可変長符号化処理を行うことも可能となる。
【０１６９】
なお、以上の構成例においては、デコーダ８００が付加されることにより、復号化テーブル記憶部５０４の記憶容量を縮小することが可能となるが、その分だけ、他の可変長符号化に対応する柔軟性が低下することになる。
【０１７０】
図１７は、本発明の復号化装置の第３の実施の形態の構成例を示すブロック図である。
【０１７１】
この図において、図６と対応する部分には、同一の符号を付してあるのでその説明は適宜省略する。
【０１７２】
この実施の形態においては、図６の場合と比較して、復号化テーブル記憶部５０４が復号化テーブル記憶部８００に置換されている。その他の構成は図６の場合と同様である。
【０１７３】
復号化テーブル記憶部８００は、図６に示す復号化テーブル記憶部５０４に記憶されているデータに加えて、新たにエンドオブブロックに対応するデータが記憶されている。従って、バレルシフタ５０１から、エンドオブブロックに対応する可変長符号が出力された場合には、エンドオブブロックデータが出力されることになる。
【０１７４】
図１８は、本発明の復号化装置の第４の実施の形態の構成例を示すブロック図である。この実施の形態において、図６の場合と対応する部分には同一の符号を付しているのでその説明は省略する。
【０１７５】
この実施の形態においては、図６の場合と比較して、復号化テーブル記憶部５０４が復号化テーブル記憶部８４０（分離手段）に置換されている。また、レベルの極性発生器８４１（第２の生成手段）が新たに追加されている。なお、その他の構成は、図６の場合と同様である。
【０１７６】
復号化テーブル記憶部８４０は、図６に示す復号化テーブル記憶部５０４の場合と比較して、レベルの極性の有無を示す情報が新たに付加されている。また、レベルが極性を有する場合には、復号化テーブル記憶部８４０はレベルの極性の有無を示す信号を発生して、レベルの極性発生器８４１に供給するようになされている。
【０１７７】
レベルの極性発生器８４１は、復号化テーブル記憶部８４０から出力されるレベルの極性の有無を示す信号が“１”の状態である場合には、可変長符号の末尾のビットを抽出し、レベルの正または負の極性を発生し、出力する。
【０１７８】
次に、以上の実施の形態の動作について簡単に説明する。
【０１７９】
いま、バレルシフタ５０１から、極性を有する可変長符号が出力されたとすると、復号化テーブル記憶部８４０は、レベルの極性の有無を示す信号を“１”の状態とする。その結果、レベルの極性発生器８４１は、可変長符号の下位ビットを抽出し、レベルの極性として出力する。即ち、可変長符号が正の値である場合には、レベルの極性発生器８４１は、“０”を出力し、一方、可変長符号が負の値である場合には、“１”を出力することになる。
【０１８０】
以上の実施の形態によれば、可変長符号が極性を有する場合においても、可変長符号を復号化することが可能となる。
【０１８１】
図１９は、本発明の復号化装置の第５の実施の形態の構成例を示すブロック図である。この図において、図１７の場合と対応する部分には、対応する符号が付してあるのでその説明は省略する。
【０１８２】
この実施の形態においては、図１７の場合と比較してエンドオブブロックの無効化器８６０が新たに追加されている。その他の構成は、図１７の場合と同様である。
【０１８３】
エンドオブブロックの無効化器８６０は、図示せぬ制御部からブロックの第１の係数を示す信号が出力されている場合には、符号化テーブル記憶部８２０（生成手段）から出力されるエンドオブブロックを無効化するようになされている。
【０１８４】
次に、以上の実施の形態の動作について簡単に説明する。
【０１８５】
いま、バレルシフタ５０１から、ブロックの第１番目の係数であって、レベルが“１”である可変長符号が出力された場合、デマルチプレクサ５０５からは、ランレングスおよびレベルが出力される。また、このとき、復号化テーブル記憶部８２０からは、エンドオブブロックがエンドオブブロック無効化器８６０に対して出力されることになる。このとき、図示せぬ制御部からはブロックの最初の係数を示す信号が出力されているので、復号化テーブル記憶部８２０から出力されたエンドオブブロックは、エンドオブブロック無効化器８６０により無効化されるので出力されることはない。
【０１８６】
また、正規のエンドオブブロック信号がバレルシフタ５０１から出力された場合には、復号化テーブル記憶部８２０はエンドオブブロック信号をエンドオブブロックの無効化器８６０に供給する。このとき、エンドオブブロック無効化器８６０には、ブロックの最初の係数を示す信号は供給されていないので、エンドオブブロックはそのまま出力されることになる。
【０１８７】
以上の実施の形態によれば、エンドオブブロックとブロックの第１番目のＤＣＴ係数が“１”である場合を確実に判別することが可能となる。
【０１８８】
なお、本明細書中において、伝送媒体には、ＦＤ，ＣＤ−ＲＯＭなどの情報記録媒体の他、インターネット、デジタル衛星などのネットワーク伝送媒体も含まれる。
【０１８９】
【発明の効果】
請求項１に記載の符号化装置および請求項１１に記載の符号化方法によれば、可変長符号が予め割り当てられている領域を含むデータが記憶されており、ランレングスの範囲が第１の閾値以上である場合、またはレベルの範囲が第２の閾値以上である場合、第１のエスケープ信号が生成され、ランレングスとレベルとを組み合わせることにより、アドレスデータが生成され、生成されたアドレスデータを参照して、対応する可変長符号が読み出され、生成されたアドレスデータが、可変長符号が予め割り当てられた領域を含むデータであり、かつ、アドレスデータに対応する可変長符号が存在しない場合に、第２のエスケープ信号が生成され、エスケープ信号が出力されている場合には、エスケープ符号が生成され、エスケープ符号にランレングスとレベルとが付加されて出力され、可変長符号が内包すべきレベルが正または負の極性を有するか否かを示す情報が記憶されており、読み出したデータから極性を有するか否かを示す情報が極性を示している場合には、可変長符号の末尾のビットに対して正または負を示すデータが付加されるようにしたので、記憶されている可変長符号およびエスケープ符号とを適宜書き換えることにより、異なる可変長符号化にも対応することが可能となる。
【０１９０】
請求項１２に記載の復号化装置および請求項１６に記載の復号化方法によれば、ランレングスとレベル、および、エスケープに関する情報が記憶されており、入力データから対応するアドレスデータが生成され、生成されたアドレスデータを参照して、対応するランレングスとレベル、および、エスケープに関する情報とが読み出され、読み出されたエスケープに関する情報を参照して、入力されたデータがエスケープ符号であるか否かが判定され、入力されたデータがエスケープ符号であると判定した場合には、入力されたデータからエスケープ符号を除外してランレングスとレベルとが抽出され、可変長符号に内包されたレベルが正または負の極性を有するか否かを示す情報が記憶されており、読み出されたデータから、レベルが極性を有するか否かを示す情報が極性を示している場合には、可変長符号の末尾のビットからレベルの極性が生成されるようにしたので、記憶されているランレングスとレベル、および、エスケープに関する情報を書き換えることにより、異なる可変長復号化にも対応することが可能となる。
【図面の簡単な説明】
【図１】本発明を適用したビデオレコーダの構成の一例を示すブロック図である。
【図２】図１に示す画像符号化装置１の詳細な構成例を示すブロック図である。
【図３】図１に示す画像復号化装置２の詳細な構成例を示すブロック図である。
【図４】図２に示すＶＬＣ器１１１の詳細な構成例を示すブロック図である。
【図５】図４に示す符号化テーブル記憶部３０１に記憶されているデータの一例を示す図である。
【図６】図３に示すＶＬＤ器２０３の詳細な構成例を示すブロック図である。
【図７】図２に示すＶＬＣ器１１１の第２の構成例を示すブロック図である。
【図８】図７の符号化テーブル記憶部６０１に記憶されているデータの一例を示す図である。
【図９】図２に示すＶＬＣ器１１１の第３の構成例を示すブロック図である。
【図１０】図９の符号化テーブル記憶部６２０に記憶されているデータの一例を示す図である。
【図１１】図２に示すＶＬＣ器１１１の第４の構成例を示すブロック図である。
【図１２】図２に示すＶＬＣ器１１１の第５の構成例を示すブロック図である。
【図１３】図２に示すＶＬＣ器１１１の第６の構成例を示すブロック図である。
【図１４】図２に示すＶＬＣ器１１１の第７の構成例を示すブロック図である。
【図１５】図２に示すＶＬＣ器１１１の第８の構成例を示すブロック図である。
【図１６】図３に示すＶＬＤ器２０３の第２の構成例を示すブロック図である。
【図１７】図３に示すＶＬＤ器２０３の第３の構成例を示すブロック図である。
【図１８】図３に示すＶＬＤ器２０３の第４の構成例を示すブロック図である。
【図１９】図３に示すＶＬＤ器２０３の第５の構成例を示すブロック図である。
【図２０】従来の符号化装置の構成例を示すブロック図である。
【図２１】図２０の符号化テーブル記憶部１０に記憶されているデータの一例を示す図である。
【図２２】図２１に示す可変長符号の一例を示す図である。
【図２３】図２１に示す可変長符号の一例を示す図である。
【符号の説明】
３０１  符号化テーブル記憶部（アドレス生成手段、記憶手段、第２のエスケープ信号生成手段），  ３０２  エスケープ判定器（第１のエスケープ信号生成手段），  ３０４  マルチプレクサ（読み出し手段、出力手段），  ６００  デコーダ（変換手段），  ６４１  符号化テーブル記憶部（抽出手段），  ７０１無効化器（無効化手段、停止手段），  ５０４  復号化テーブル記憶部（アドレス生成手段、記憶手段），  ５０６  デマルチプレクサ（読み出し手段、判定手段、抽出手段），  ８２０  復号化テーブル記憶部（生成手段），  ８４０  復号化テーブル記憶部（分離手段），  ８４１  レベルの極性発生器（第２の生成手段）
【図１】
0003757406.tif 000002
【図２】
0003757406.tif 000003
【図３】
0003757406.tif 000004
【図４】
0003757406.tif 000005
【図５】
0003757406.tif 000006
【図６】
0003757406.tif 000007
【図７】
0003757406.tif 000008
【図８】
0003757406.tif 000009
【図９】
0003757406.tif 000010
【図１０】
0003757406.tif 000011
【図１１】
0003757406.tif 000012
【図１２】
0003757406.tif 000013
【図１３】
0003757406.tif 000014
【図１４】
0003757406.tif 000015
【図１５】
0003757406.tif 000016
【図１６】
0003757406.tif 000017
【図１７】
0003757406.tif 000018
【図１８】
0003757406.tif 000019
【図１９】
0003757406.tif 000020
【図２０】
0003757406.tif 000021
【図２１】
0003757406.tif 000022
【図２２】
0003757406.tif 000023
【図２３】
0003757406.tif 000024