(57)【要約】【課題】３モードエスケープ可変長符号化において、可変長符号テーブルの検索を少なくし高速に可変長符号を得る可変長符号化装置および方法を提供すること。【解決手段】ＶＬＣハッシュテーブル２０４に３モードエスケープ可変長符号に対応したすべてのキーデータを登録し、ハッシュアドレス生成手段２０３で、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に演算量の少ないハッシュ演算を施して、ＶＬＣハッシュテーブル２０４のアドレスを直接求める。このアドレスを用い、ハッシュテーブル参照手段２０５で、ＶＬＣハッシュテーブル２０４を参照する。また、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に照合キー演算を施し照合キーを生成し、テーブル内の検査キーと比較するだけで、キーデータに対応するテーブル情報か否かを判定し、モードおよび可変長符号を求める。【選択図】      図２
2004254208.tif 000002
【特許請求の範囲】
【請求項１】
原データの先行するゼロ係数の個数ＲＵＮの値の範囲を検査するＲＵＮ検査手段と、
原データの非ゼロの係数の値ＬＥＶＥＬの値の範囲を検査するＬＥＶＥＬ検査手段と、
原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値と前記ＲＵＮ値と前記ＬＥＶＥＬ値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成手段と、
３モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したＶＬＣハッシュテーブルと、
前記テーブルアドレスで前記ＶＬＣハッシュテーブルを参照するハッシュテーブル参照手段と、
前記キーデータに前記ＶＬＣハッシュテーブル内の検査キー作成と同様の演算を行い、前記ＶＬＣハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成手段と、
前記照合キーと前記ＶＬＣハッシュテーブルを参照して得られた検査キー部とを比較するキー比較手段と、
前記ＲＵＮ検査手段と前記ＬＥＶＥＬ検査手段と前記キー比較手段との結果に基づいて、モードを生成するＭＯＤＥ生成手段と、
前記ＭＯＤＥ生成手段に生成されたモードと、前記ハッシュテーブル参照手段に参照された前記ＶＬＣハッシュテーブルとにしたがって３モードエスケープ可変長符号を生成する３モードエスケープ可変長符号生成手段とを備えたことを特徴とする３モードエスケープ可変長符号化装置。
【請求項２】
前記ＭＯＤＥ生成手段は、前記ＲＵＮ検査手段が検査した前記ＲＵＮの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とする請求項１に記載の３モードエスケープ可変長符号化装置。
【請求項３】
前記ＭＯＤＥ生成手段は、前記ＬＥＶＥＬ検査手段が検査した前記ＬＥＶＥＬの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とする請求項１または請求項２に記載の３モードエスケープ可変長符号化装置。
【請求項４】
前記ＭＯＤＥ生成手段は、前記キー比較手段が比較した前記照合キーと前記検査キーとが異なるとき、前記モードを固定長符号化モードにすることを特徴とする請求項１から請求項３のいずれか１項に記載の３モードエスケープ可変長符号化装置。
【請求項５】
前記ＶＬＣハッシュテーブルは、可変長符号が定義されている定義キーデータグループと、この定義キーデータグループ以外の未定義キーデータグループとからなり、前記定義キーデータグループのキーデータは、ハッシュ演算結果によりシノニムが発生せず、キーデータグループ全体の中でハッシュ演算結果によりシノニムが発生して衝突したキーデータ同士の前記検査キーはすべて異なることを特徴とする請求項２から請求項４のいずれか１項に記載の３モードエスケープ可変長符号化装置。
【請求項６】
原データの先行するゼロ係数の個数ＲＵＮの値と、原データの非ゼロの係数の値ＬＥＶＥＬの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値との組であるキーデータを可変長符号化する３モードエスケープ可変長符号化方法において、
前記３モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したＶＬＣハッシュテーブルを準備するＶＬＣハッシュテーブル準備ステップと、
原データの先行するゼロ係数の個数ＲＵＮの値の範囲を検査するＲＵＮ検査ステップと、
原データの非ゼロの係数の値ＬＥＶＥＬの値の範囲を検査するＬＥＶＥＬ検査ステップと、
原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値と前記ＲＵＮ値と前記ＬＥＶＥＬ値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、
前記テーブルアドレスで前記ＶＬＣハッシュテーブルを参照するハッシュテーブル参照ステップと、
前記キーデータに前記ＶＬＣハッシュテーブル内の検査キー作成と同様の演算を行い、前記ＶＬＣハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、
前記照合キーと前記ＶＬＣハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、
前記ＲＵＮ検査ステップと前記ＬＥＶＥＬ検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するＭＯＤＥ生成ステップと、
前記ＭＯＤＥ生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記ＶＬＣハッシュテーブルとにしたがって３モードエスケープ可変長符号を生成する３モードエスケープ可変長符号生成ステップとを備えたことを特徴とする３モードエスケープ可変長符号化方法。
【請求項７】
原データの先行するゼロ係数の個数ＲＵＮの値と、原データの非ゼロの係数の値ＬＥＶＥＬの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値との組であるキーデータを可変長符号化する３モードエスケープ可変長符号化プログラムにおいて、
前記３モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したＶＬＣハッシュテーブルを準備するＶＬＣハッシュテーブル準備ステップと、
原データの先行するゼロ係数の個数ＲＵＮの値の範囲を検査するＲＵＮ検査ステップと、
原データの非ゼロの係数の値ＬＥＶＥＬの値の範囲を検査するＬＥＶＥＬ検査ステップと、
原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値と前記ＲＵＮ値と前記ＬＥＶＥＬ値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、
前記テーブルアドレスで前記ＶＬＣハッシュテーブルを参照するハッシュテーブル参照ステップと、
前記キーデータに前記ＶＬＣハッシュテーブル内の検査キー作成と同様の演算を行い、前記ＶＬＣハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、
前記照合キーと前記ＶＬＣハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、
前記ＲＵＮ検査ステップと前記ＬＥＶＥＬ検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するＭＯＤＥ生成ステップと、
前記ＭＯＤＥ生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記ＶＬＣハッシュテーブルとにしたがって３モードエスケープ可変長符号を生成する３モードエスケープ可変長符号生成ステップとを備えたことを特徴とする３モードエスケープ可変長符号化プログラム。
【請求項８】
前記ＭＯＤＥ生成ステップは、前記ＲＵＮ検査ステップが検査した前記ＲＵＮの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とする請求項７に記載の３モードエスケープ可変長符号化プログラム。
【請求項９】
前記ＭＯＤＥ生成ステップは、前記ＬＥＶＥＬ検査ステップが検査した前記ＬＥＶＥＬの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とする請求項７または請求項８に記載の３モードエスケープ可変長符号化プログラム。
【請求項１０】
前記ＭＯＤＥ生成ステップは、前記キー比較ステップが比較した前記照合キーと前記検査キーとが異なるとき、前記モードを固定長符号化モードにすることを特徴とする請求項７から請求項９のいずれか１項に記載の３モードエスケープ可変長符号化プログラム。
【請求項１１】
前記ＶＬＣハッシュテーブルは、可変長符号が定義されている定義キーデータグループと、この定義キーデータグループ以外の未定義キーデータグループとからなり、前記定義キーデータグループのキーデータは、ハッシュ演算結果によりシノニムが発生せず、キーデータグループ全体の中でハッシュ演算結果によりシノニムが発生して衝突したキーデータ同士の前記検査キーはすべて異なることを特徴とする請求項８から請求項１０のいずれか１項に記載の３モードエスケープ可変長符号化プログラム。
【請求項１２】
原データの先行するゼロ係数の個数ＲＵＮの値と、原データの非ゼロの係数の値ＬＥＶＥＬの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値との組であるキーデータを可変長符号化する３モードエスケープ可変長符号化プログラムを記録した媒体において、
前記３モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したＶＬＣハッシュテーブルを準備するＶＬＣハッシュテーブル準備ステップと、
原データの先行するゼロ係数の個数ＲＵＮの値の範囲を検査するＲＵＮ検査ステップと、
原データの非ゼロの係数の値ＬＥＶＥＬの値の範囲を検査するＬＥＶＥＬ検査ステップと、
原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値と前記ＲＵＮ値と前記ＬＥＶＥＬ値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、
前記テーブルアドレスで前記ＶＬＣハッシュテーブルを参照するハッシュテーブル参照ステップと、
前記キーデータに前記ＶＬＣハッシュテーブル内の検査キー作成と同様の演算を行い、前記ＶＬＣハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、
前記照合キーと前記ＶＬＣハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、
前記ＲＵＮ検査ステップと前記ＬＥＶＥＬ検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するＭＯＤＥ生成ステップと、
前記ＭＯＤＥ生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記ＶＬＣハッシュテーブルとにしたがって３モードエスケープ可変長符号を生成する３モードエスケープ可変長符号生成ステップとを備えたことを特徴とする３モードエスケープ可変長符号化プログラムを記録した媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データを可変長符号に変換するための可変長符号装置および方法に関し、特に、画像圧縮処理などにおいて、可変長符号テーブルを用いて可変長符号に変換する可変長符号化装置に関するものである。
【０００２】
【従来の技術】
画像情報は、非常に情報量が多いので、大量の画像情報をリアルタイムに送信するのは、非常に困難である。そのため、画像データを圧縮して送信し、受信側で伸長するという技術が用いられている。画像データの典型的な圧縮方法として、出現頻度の高いビットパターンに短い符号を割り当て、出現頻度の低いビットパターンには長い符号を割り当てることにより、全体の符号量を短くする可変長符号化方法がある。
【０００３】
以下に、画像データの圧縮方法を簡単に説明する。１９９９年１２月に国際規格として勧告された画像符号化標準方式ＭＰＥＧ−４（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ  ４  ）では、画像データを離散コサイン変換して、周波数成分のデータに変換し、高周波成分に量子化処理を行って値を小さくする。さらに、量子化により、「０」の出現頻度を高くされたデータは、「ＲＵＮ」データと「ＬＥＶＥＬ」データと「ＬＡＳＴ」データとに変換される。
【０００４】
ここで、「ＲＵＮ」は、先行するゼロの係数の個数をあらわすものであり、「ＬＥＶＥＬ」は、非ゼロの係数の値をあらわすものである。「ＬＡＳＴ」は、該非ゼロの係数が最後であるかどうかを示す識別子である。ＲＵＮデータとＬＥＶＥＬデータとＬＡＳＴデータは、（ＬＡＳＴ  ，ＲＵＮ  ，ＬＥＶＥＬ）の組として一意的な符号を割り当てて、可変長符号テーブルを参照することにより可変長符号化を行う。
【０００５】
ＭＰＥＧ−４ではさらに、可変長符号のビット効率を高めるために３モードエスケープコーディング（３  ｍｏｄｅ  ｅｓｃａｐｅ  ｃｏｄｉｎｇ  ）という技術が導入された。３モードエスケープコーディングの実現方法として、例えば、三木弼一  編著「ＭＰＥＧ−４のすべて」（１９９８年  工業調査会  ＩＳＢＮ４−７６９３−１１６７−２）  ＰＰ．４９〜５１、第３章  ＭＰＥＧ−４の規格内容（５）可変長符号化に書かれているものが知られている。
【０００６】
図８は、ＭＰＥＧ−４勧告書に記載されているイントラマクロブロック（Ｉｎｔｒａ  Ｍａｃｒｏｂｌｏｃｋ：イントラ符号化とは、画面内のみの情報から符号化を行うものであり、時間が前後する他の画面の情報を使用しないものである。マクロブロックとは、１画面を複数に分割し、１６画素×１６画素からなるブロックのことである）のＬＡＳＴデータ範囲、ＲＵＮデータ範囲、ＬＥＶＥＬデータ範囲を示すものである。図９は、ＭＰＥＧ−４勧告書に記載されているイントラマクロブロックの可変長符号テーブルの一部を示すものである。また、図１０は、ＭＰＥＧ−４勧告書に記載されているイントラマクロブロックの  ［ＬＡＳＴ  ，ＲＵＮ］  ごとのＬＥＶＥＬの最大値「ＬＭＡＸの」テーブルと、  ［ＬＡＳＴ  ，ＬＥＶＥＬ］  ごとのＲＵＮの最大値「ＲＭＡＸ」のテーブルを示すものである。
【０００７】
図１１、図１２は、本書に記載されている３モードエスケープコーディングを実現するフローチャートを示すものである。
【０００８】
以下、図１１、図１２を参照しながら、３モードエスケープコーディングの実現方式を説明する。図１１に示すように、３モードエスケープコーディングでは、処理を開始すると、（ＬＡＳＴ  ，ＲＵＮ  ，ＬＥＶＥＬ）の組合せを、可変長符号テーブルで検索する（ステップＳ８００）。次に、可変長符号テーブルに有ったか否かを判定し（ステップＳ８０１）、テーブルに有りと判断した場合は、通常モードの符号化なので、可変長符号テーブルより求めた可変長符号（ＶＬＣ）を出力して（ステップＳ８０２）、終了する。
【０００９】
上記可変長符号テーブルに有るか否かの判定（ステップＳ８０１）でテーブルに無い場合は、ＬＭＡＸテーブルを参照して  ［ＬＡＳＴ  ，ＲＵＮ］  におけるＬＥＶＥＬの最大値ＬＭＡＸを求める（ステップＳ８０３）。次に、ＬＥＶＥＬは正または負の値を取り得るのでＬＥＶＥＬの絶対値から、ＬＭＡＸを減算した値に、符号をつけたＬＥＶＥＬ２を求める（ステップＳ８０４）。
【００１０】
続いて、（ＬＡＳＴ  ，ＲＵＮ  ，ＬＥＶＥＬ２）の組合せで、可変長符号テーブルを検索する（ステップＳ８０５）。次に、可変長符号テーブルに有ったか否かを判定し（ステップＳ８０６）、テーブルに有りと判断した場合は、ＥＳＣモード１の符号化なので、可変長符号テーブルより求めた可変長符号（ＶＬＣ）にＥＳＣ１符号（ＥＳＣ“０”）を付加し出力して（ステップＳ８０７）、終了する。
【００１１】
上記可変長符号テーブルに有るか否かの判定（ステップＳ８０６）でテーブルに無い場合は、ＲＭＡＸテーブルを参照して  ［ＬＡＳＴ  ，ＬＥＶＥＬの絶対値］  におけるＲＵＮの最大値ＲＭＡＸを求める（ステップＳ８０８）。次に、ＲＵＮから（ＲＭＡＸ＋１）を減算してＲＵＮ２を求める（ステップＳ８０９）。
【００１２】
続いて、（ＬＡＳＴ  ，ＲＵＮ２  ，ＬＥＶＥＬ）の組合せで、可変長符号テーブルを検索する（ステップＳ８１０）。次に、可変長符号テーブルに有ったか否かを判定し（ステップＳ８１１）、テーブルに有りと判断した場合は、ＥＳＣモード２の符号化なので、可変長符号テーブルより求めた可変長符号（ＶＬＣ）にＥＳＣ２符号（ＥＳＣ“１０”）を付加し出力して（ステップＳ８１２）、終了する。
【００１３】
上記可変長符号テーブルに有るか否かの判定（ステップＳ８１１）でテーブルに無い場合は、固定長符号化（ＦＬＣ）なので、ＥＳＣ３符号（ＥＳＣ“１１”）を付加してＬＡＳＴ  ，ＲＵＮ  ，ＬＥＶＥＬをそれぞれ固定長で出力して（ステップＳ８１３）、終了する。
【００１４】
したがって、３モードエスケープに対応した可変長符号を生成するために、可変長符号テーブルの検索を、ステップＳ８００、ステップＳ８０５、ステップＳ８１０と、最大３回も行う必要がある。可変長符号テーブルの検索方法としては、一般的には図１３に示すように、５ビットのＲＵＮデータ領域と５ビットのＬＥＶＥＬデータ領域と１ビットのＬＡＳＴデータ領域からなる（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）の１１ビットのアドレスを生成し、そのアドレスで可変長符号テーブルをアクセスすることにより、対応する可変長符号データを得る。
【００１５】
アドレスうち、ＲＵＮデータに５ビット、ＬＥＶＥＬデータ領域に５ビット、ＬＡＳＴデータ領域に１ビットが割り当てられているのは、図８に示すように、可変長符号として定義されているデータが、ＲＵＮデータの範囲が０〜２０であり、ＬＥＶＥＬデータの絶対値の範囲が１〜２７、ＬＡＳＴデータの範囲が０〜１であり、これらを表現するためには、それぞれ５ビット、５ビット、１ビットが必要なためである。
【００１６】
可変長符号に定義されていない、（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に対応する可変長符号テーブルには、未定義であることを示す可変長符号（例えば、全てのビットが“０”）を格納して区別する。可変長符号テーブルは、１１ビットのアドレス空間なので２０４８個のテーブルで実現できるが、そのうち可変長符号が定義されているのは僅か１０２個であり、ほとんどのアドレスが未定義状態となっている。
【００１７】
したがって、メモリ空間をより効率的に使用して、より少ないメモリで可変長符号化処理を行うための方法が、従来から発明されてきた。
【００１８】
その代表的な手法のひとつとして、ＬＥＶＥＬの値の範囲にしたがって、可変長符号テーブルをアクセスする際のアドレスの構成を変える「可変長符号テーブルおよび可変長符号化装置」がある（例えば、特許文献１参照）。
【００１９】
また、他の方法として、ＲＵＮとＬＥＶＥＬの絶対値によって、８つのクラスに分類し、クラスごとに可変長符号テーブルのアドレスを生成するビットの割付を変える「可変長符号化装置」がある（例えば、特許文献２参照）。
【００２０】
このように、従来の手法として、データ（例えば、ＬＥＶＥＬ）の値の範囲によって、ＲＵＮ  ，ＬＥＶＥＬをクラスに分類し、クラスごとに可変長符号テーブルのアドレスを生成するビットの割付を変える方法はあった。
【００２１】
このような手法では、アドレスを、クラスにより識別されるフラグ領域と、ＬＡＳＴを表す領域と、ＲＵＮを表す領域と、ＬＥＶＥＬを表す領域により構成し、全体として固定長で可変長符号テーブルのアドレスを生成することによって、テーブルサイズを小さくしている。前記ＭＰＥＧ−４イントラマクロブロックを例にとると、図１４に示すように、９種類のクラス（クラスＡ〜クラスＩ）に分類し、８ビットのアドレス空間で表現し、２５６個のテーブルで実現可能である。
【００２２】
また、従来までは３モードエスケープコーディングまで拡張して最適化した検索手段は存在していない。可変長符号テーブルの検索を一般的な手法で３モードエスケープに拡張すると、図８に示すように、３モードエスケープを含め可変長符号として定義されているデータが、ＲＵＮデータの範囲が０〜４１であり、ＬＥＶＥＬデータの絶対値の範囲が１〜５４、ＬＡＳＴデータの範囲が０〜１であり、これらを表現するためには、それぞれ６ビット、６ビット、１ビットが必要であり、（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）の１３ビットのアドレスを生成し、そのアドレスで可変長符号テーブルをアクセスすることになる。可変長符号テーブルは、１３ビットのアドレス空間なので８１９２個もの大きなメモリテーブルが必要となる。
【００２３】
【特許文献１】
特開平８−７９０９１号公報
【００２４】
【特許文献２】
特開平１０−１９１３３６号公報
【００２５】
【発明が解決しようとする課題】
しかしながら、このような従来の可変長符号テーブルの検索では、通常モードの検索（図１１のＳ８００）、ＥＳＣモード１の検索（図１１のＳ８０５）、ＥＳＣモード２の検索（図１２のＳ８１０）と順に行うため、ＥＳＣモード３の固定長符号化となるケースでは３回も検索を行う必要があり、回路で実現した場合は３回の検索を制御する制御回路が複雑となると共にテーブルアクセスの遅延が発生し、またＣＰＵやＤＳＰなどのプロセッサを用いてソフトウェアで実現した場合は、３回もの検索を行うため処理手順が増大し画像符号化処理の遅延を招くという問題があった。
【００２６】
また、可変長符号の定義は、発生頻度の高いものに割り付けているが、図８に示すように、発生可能なデータは２６２，０１６種類もあり、そのうち通常モードの可変長符号として定義されているのは僅か１０２個であり、３モードエスケープを含め（ＥＳＣ１モード、ＥＳＣ２モード）可変長符号に定義されているのは２６２個である。したがって、残りの２６１，７５４種類のデータは固定長符号化となる。画像符号化を高画質に行うほど、ＥＳＣモードの符号や固定長符号の発生は増大し、画像符号化処理の遅延が発生するというという問題があった。
【００２７】
また、大きなメモリテーブルを用いる従来手法では、回路で実現した場合は、高価な高速メモリを大量に必要とする問題点がある。また、ＣＰＵやＤＳＰなどのプロセッサを用いてソフトウェアで実現した場合は、高速なオンチップのメモリ量が少なく、可変長符号テーブルを格納することができず、低速なメモリに配置することになるので、高速に可変長符号化することができず、画像符号化処理の遅延が発生するというという問題があった。
【００２８】
本発明は、このような従来の問題を解決するためになされたもので、３モードエスケープ可変長符号化において、可変長符号テーブルの検索を１回にすることにより、回路で実現した場合の制御回路を簡単にし、またソフトウェアで実現した場合の処理手順を少なくして少ない演算量で高速に可変長符号を得ること、また可変長符号テーブルのメモリ容量を小さくすることにより、回路で実現する場合は高価な高速メモリの使用を少なくし、またソフトウェアで実現する場合は高速なオンチップメモリに配置することが可能となり高速に可変長符号を得ることができる３モードエスケープ可変長符号化装置および方法を提供するものである。
【００２９】
【課題を解決するための手段】
本発明の３モードエスケープ可変長符号化装置は、原データの先行するゼロ係数の個数ＲＵＮの値の範囲を検査するＲＵＮ検査手段と、原データの非ゼロの係数の値ＬＥＶＥＬの値の範囲を検査するＬＥＶＥＬ検査手段と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値と前記ＲＵＮ値と前記ＬＥＶＥＬ値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成手段と、３モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したＶＬＣハッシュテーブルと、前記テーブルアドレスで前記ＶＬＣハッシュテーブルを参照するハッシュテーブル参照手段と、前記キーデータに前記ＶＬＣハッシュテーブル内の検査キー作成と同様の演算を行い、前記ＶＬＣハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成手段と、前記照合キーと前記ＶＬＣハッシュテーブルを参照して得られた検査キー部とを比較するキー比較手段と、前記ＲＵＮ検査手段と前記ＬＥＶＥＬ検査手段と前記キー比較手段との結果に基づいて、モードを生成するＭＯＤＥ生成手段と、前記ＭＯＤＥ生成手段に生成されたモードと、前記ハッシュテーブル参照手段に参照された前記ＶＬＣハッシュテーブルとにしたがって３モードエスケープ可変長符号を生成する３モードエスケープ可変長符号生成手段とを備えたことを特徴とした構成を有している。
【００３０】
この構成により、３つのモードに対応した可変長符号情報を格納したＶＬＣハッシュテーブルを参照し、条件により選択されたモードにしたがって３モードエスケープ可変長符号を決定するので、１回のテーブル検索処理で３モードに対応した可変長符号を得ることができる。また、可変長符号テーブルをハッシュテーブルにしたので、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に演算量の少ないハッシュ演算を施して、ＶＬＣハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができる。
【００３１】
また、本発明の３モードエスケープ可変長符号化装置は、前記ＭＯＤＥ生成手段は、前記ＲＵＮ検査手段が検査した前記ＲＵＮの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とした構成を有している。
【００３２】
また、本発明の３モードエスケープ可変長符号化装置は、前記ＭＯＤＥ生成手段は、前記ＬＥＶＥＬ検査手段が検査した前記ＬＥＶＥＬの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴とした構成を有している。
【００３３】
また、本発明の３モードエスケープ可変長符号化装置は、前記ＭＯＤＥ生成手段は、前記キー比較手段が比較した前記照合キーと前記検査キーとが異なるとき、前記モードを固定長符号化モードにすることを特徴とした構成を有している。
【００３４】
これら構成により、可変長符号が定義されていないキーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）についても、固定長符号を割り当てて高速に符号語を得ることができることとなる。
【００３５】
また、本発明の３モードエスケープ可変長符号化装置は、前記ＶＬＣハッシュテーブルは、可変長符号が定義されている定義キーデータグループと、この定義キーデータグループ以外の未定義キーデータグループとからなり、前記定義キーデータグループのキーデータは、ハッシュ演算結果によりシノニムが発生せず、キーデータグループ全体の中でハッシュ演算結果によりシノニムが発生して衝突したキーデータ同士の前記検査キーはすべて異なることを特徴とした構成を有している。
【００３６】
この構成により、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）から計算した照合キーとＶＬＣハッシュテーブルに格納してある検査キーを比較することにより、高速に可変長符号の妥当性をチェックすることができることとなる。
【００３７】
また、本発明の３モードエスケープ可変長符号化方法は、原データの先行するゼロ係数の個数ＲＵＮの値と、原データの非ゼロの係数の値ＬＥＶＥＬの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値との組であるキーデータを可変長符号化する３モードエスケープ可変長符号化方法において、前記３モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したＶＬＣハッシュテーブルを準備するＶＬＣハッシュテーブル準備ステップと、原データの先行するゼロ係数の個数ＲＵＮの値の範囲を検査するＲＵＮ検査ステップと、原データの非ゼロの係数の値ＬＥＶＥＬの値の範囲を検査するＬＥＶＥＬ検査ステップと、原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値と前記ＲＵＮ値と前記ＬＥＶＥＬ値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、前記テーブルアドレスで前記ＶＬＣハッシュテーブルを参照するハッシュテーブル参照ステップと、前記キーデータに前記ＶＬＣハッシュテーブル内の検査キー作成と同様の演算を行い、前記ＶＬＣハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、前記照合キーと前記ＶＬＣハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、前記ＲＵＮ検査ステップと前記ＬＥＶＥＬ検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するＭＯＤＥ生成ステップと、前記ＭＯＤＥ生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記ＶＬＣハッシュテーブルとにしたがって３モードエスケープ可変長符号を生成する３モードエスケープ可変長符号生成ステップとを備えたことを特徴としている。
【００３８】
この方法により、３つのモードに対応した可変長符号情報を格納したＶＬＣハッシュテーブルを参照し、条件により選択されたモードにしたがって３モードエスケープ可変長符号を決定するので、１回のテーブル検索処理で３モードに対応した可変長符号を得ることができる。また、ハッシュテーブルによる可変長符号テーブルを使用するので、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に演算量の少ないハッシュ演算を施して、ＶＬＣハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができる。
【００３９】
また、本発明の３モードエスケープ可変長符号化プログラムは、原データの先行するゼロ係数の個数ＲＵＮの値と、原データの非ゼロの係数の値ＬＥＶＥＬの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値との組であるキーデータを可変長符号化する３モードエスケープ可変長符号化プログラムにおいて、前記３モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したＶＬＣハッシュテーブルを準備するＶＬＣハッシュテーブル準備ステップと、原データの先行するゼロ係数の個数ＲＵＮの値の範囲を検査するＲＵＮ検査ステップと、原データの非ゼロの係数の値ＬＥＶＥＬの値の範囲を検査するＬＥＶＥＬ検査ステップと、原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値と前記ＲＵＮ値と前記ＬＥＶＥＬ値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、前記テーブルアドレスで前記ＶＬＣハッシュテーブルを参照するハッシュテーブル参照ステップと、前記キーデータに前記ＶＬＣハッシュテーブル内の検査キー作成と同様の演算を行い、前記ＶＬＣハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、前記照合キーと前記ＶＬＣハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、前記ＲＵＮ検査ステップと前記ＬＥＶＥＬ検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するＭＯＤＥ生成ステップと、前記ＭＯＤＥ生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記ＶＬＣハッシュテーブルとにしたがって３モードエスケープ可変長符号を生成する３モードエスケープ可変長符号生成ステップとを備えたことを特徴とするものである。
【００４０】
このプログラムにより、３つのモードに対応した可変長符号情報を格納したＶＬＣハッシュテーブルを参照し、条件により選択されたモードにしたがって３モードエスケープ可変長符号を決定するので、１回のテーブル検索処理で３モードに対応した可変長符号を得ることができる。また、ハッシュテーブルによる可変長符号テーブルを使用するので、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に演算量の少ないハッシュ演算を施して、ＶＬＣハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができる。
【００４１】
また、本発明の３モードエスケープ可変長符号化プログラムは、前記ＭＯＤＥ生成ステップは、前記ＲＵＮ検査ステップが検査した前記ＲＵＮの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴としている。
【００４２】
また、本発明の３モードエスケープ可変長符号化プログラムは、前記ＭＯＤＥ生成ステップは、前記ＬＥＶＥＬ検査ステップが検査した前記ＬＥＶＥＬの値が規定の範囲を超えていたとき、前記モードを固定長符号化モードにすることを特徴としている。
【００４３】
また、本発明の３モードエスケープ可変長符号化プログラムは、前記ＭＯＤＥ生成ステップは、前記キー比較ステップが比較した前記照合キーと前記検査キーとが異なるとき、前記モードを固定長符号化モードにすることを特徴としている。
【００４４】
これらのプログラムにより、可変長符号が定義されていないキーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）についても、固定長符号を割り当てて高速に符号語を得ることができることとなる。
【００４５】
また、本発明の３モードエスケープ可変長符号化プログラムは、前記ＶＬＣハッシュテーブルは、可変長符号が定義されている定義キーデータグループと、この定義キーデータグループ以外の未定義キーデータグループとからなり、前記定義キーデータグループのキーデータは、ハッシュ演算結果によりシノニムが発生せず、キーデータグループ全体の中でハッシュ演算結果によりシノニムが発生して衝突したキーデータ同士の前記検査キーはすべて異なることを特徴としている。
【００４６】
このプログラムにより、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）から計算した照合キーとＶＬＣハッシュテーブルに格納してある検査キーを比較することにより、高速に可変長符号の妥当性をチェックすることができることとなる。
【００４７】
また、本発明の３モードエスケープ可変長符号化プログラムを記録した媒体は、原データの先行するゼロ係数の個数ＲＵＮの値と、原データの非ゼロの係数の値ＬＥＶＥＬの値と、原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値との組であるキーデータを可変長符号化する３モードエスケープ可変長符号化プログラムを記録した媒体において、前記３モードエスケープに対応した可変長符号情報を、該当する前記キーデータを演算することにより得られる検査キーとともに登録したＶＬＣハッシュテーブルを準備するＶＬＣハッシュテーブル準備ステップと、原データの先行するゼロ係数の個数ＲＵＮの値の範囲を検査するＲＵＮ検査ステップと、原データの非ゼロの係数の値ＬＥＶＥＬの値の範囲を検査するＬＥＶＥＬ検査ステップと、原データの非ゼロの係数が最後であるかどうかを示す識別子であるＬＡＳＴ値と前記ＲＵＮ値と前記ＬＥＶＥＬ値との組であるキーデータにハッシュ演算を施してテーブルアドレスを求めるハッシュアドレス生成ステップと、前記テーブルアドレスで前記ＶＬＣハッシュテーブルを参照するハッシュテーブル参照ステップと、前記キーデータに前記ＶＬＣハッシュテーブル内の検査キー作成と同様の演算を行い、前記ＶＬＣハッシュテーブルの検査キーとの照合を行う照合キーを生成する照合キー生成ステップと、前記照合キーと前記ＶＬＣハッシュテーブルを参照して得られた検査キー部とを比較するキー比較ステップと、前記ＲＵＮ検査ステップと前記ＬＥＶＥＬ検査ステップと前記キー比較ステップとの結果に基づいて、モードを生成するＭＯＤＥ生成ステップと、前記ＭＯＤＥ生成ステップに生成されたモードと、前記ハッシュテーブル参照ステップに参照された前記ＶＬＣハッシュテーブルとにしたがって３モードエスケープ可変長符号を生成する３モードエスケープ可変長符号生成ステップとを備えたことを特徴としている。
【００４８】
このことにより、３つのモードに対応した可変長符号情報を格納したＶＬＣハッシュテーブルを参照し、条件により選択されたモードにしたがって３モードエスケープ可変長符号を決定するので、１回のテーブル検索処理で３モードに対応した可変長符号を得ることができる。また、ハッシュテーブルによる可変長符号テーブルを使用するので、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に演算量の少ないハッシュ演算を施して、ＶＬＣハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができる。
【００４９】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を用いて説明する。
（第１の実施の形態）
【００５０】
図１は、本発明の第１の実施の形態における３モードエスケープ可変長符号化装置の機能ブロック図である。図２は、３モードエスケープ可変長符号テーブル検索手段の機能ブロック図である。
【００５１】
図１において、３モードエスケープ可変長符号化装置１０は、（ＬＡＳＴ，  ＲＵＮ，  ＬＥＶＥＬ）の組合せから可変長符号ＶＬＣとその長さＬＥＮとモードＭＯＤＥを求める３モードエスケープ可変長符号テーブル検索手段１００と、ＥＳＣモード１の可変長符号を生成するＥＳＣ１符号生成手段１０１と、ＥＳＣモード２の可変長符号を生成するＥＳＣ２符号生成手段１０２と、固定長の符号を生成するＦＬＣ符号生成手段１０３と、４種類のモードのうち１つを選択するセレクタ１０４を備えている。
【００５２】
また、図２において、３モードエスケープ可変長符号テーブル検索手段１００は、ＲＵＮデータの範囲を検査するＲＵＮ検査手段２０１と、ＬＥＶＥＬデータの範囲を検査するＬＥＶＥＬ検査手段２０２と、（ＬＡＳＴ，  ＲＵＮ，  ＬＥＶＥＬ）をキーとしてハッシュ演算を行い可変長符号テーブルアドレスＡを求めるハッシュアドレス生成手段２０３と、３モードエスケープに対応した全ケースの可変長符号（ＶＬＣ）の情報を格納したＶＬＣハッシュテーブル２０４と、前記アドレスＡでＶＬＣハッシュテーブル２０４を参照して検査キーＫＥＹとモードＭと可変長符号ＶＬＣとその長さＬＥＮを求めるハッシュテーブル参照手段２０５と、（ＬＡＳＴ，  ＲＵＮ，  ＬＥＶＥＬ）から照合キーＫを生成する照合キー生成手段２０６と、前記検査キーＫＥＹと前記照合キーＫの一致比較を行うキー比較手段２０７と、ＲＵＮ検査手段２０１の結果とＬＥＶＥＬ検査手段２０２の結果とキー比較手段２０７の結果に基づいて前記モードＭよりモードＭＯＤＥを生成するＭＯＤＥ生成手段２０８を備えている。
【００５３】
以上のように構成された３モードエスケープ可変長符号化装置１０について、ＭＰＥＧ−４のイントラマクロブロックの可変長符号化を例にとり、その動作を説明する。以下（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）の組合せを、キーデータと呼ぶことにする。
【００５４】
まず、３モードエスケープ可変長符号化装置１０では、３モードエスケープ可変長符号テーブル検索手段１００で、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）から可変長コードＶＬＣとその長さＬＥＮとモードＭＯＤＥを求める。
【００５５】
次に、ＥＳＣ１符号生成手段１０１は、前記可変長コードＶＬＣにＥＳＣモード１の符号（ＥＳＣ“０”）を付加する。ＥＳＣ２符号生成手段１０２は、前記可変長コードＶＬＣにＥＳＣモード２の符号（ＥＳＣ“１０”）を付加する。ＦＬＣ符号生成手段１０３は、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）にＥＳＣモード３の符号（ＥＳＣ“１１”）を付加する。
【００５６】
次に、セレクタ１０４は、前記モードＭＯＤＥの値により、４種類の符号（ＶＬＣそのまま、ＥＳＣ１符合付ＶＬＣ、ＥＳＣ２符号付ＶＬＣ、ＦＬＣ符号）のいずれかを選択して出力する。
【００５７】
次に、図２を参照して、上記３モードエスケープ可変長符号テーブル検索手段１００におけるキーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）から可変長コードＶＬＣとその長さＬＥＮとモードＭＯＤＥを求める動作を説明する。
【００５８】
３モードエスケープ可変長符号テーブル検索手段１００では、ＲＵＮ検査手段２０１で、ＲＵＮが定義されているデータ範囲（０〜４１）に入っているか否かを検査し、範囲外の場合はＮＧを出力する。ＬＥＶＥＬ検査手順２０２で、ＬＥＶＥＬが定義されているデータ範囲（１〜５４）に入っているか否かを検査し、範囲外の場合はＮＧを出力する。
【００５９】
また、ハッシュアドレス生成手段２０３で、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に後述するハッシュ演算を施し、算出したハッシュ値をＶＬＣハッシュテーブル２０４のアドレスＡとする。ＶＬＣハッシュテーブル２０４は、後述するハッシュテーブルの条件を満足するハッシュ演算式に基づいて生成される。次に、ハッシュテーブル参照手段２０５で、上記アドレスＡによりＶＬＣハッシュテーブル２０４を参照し、検査キーＫＥＹとモードＭと可変長符号ＶＬＣとその長さＬＥＮを求める。
【００６０】
さらに、照合キー生成手段２０６で、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）より照合キーＫを生成する。次に、キー比較手段２０７で、照合キーＫとＶＬＣハッシュテーブルを参照して得られた検査キーＫＥＹとの一致比較を行い、不一致の場合はＮＧを出力する。
【００６１】
さらに、ＭＯＤＥ生成手段２０８は、ＲＵＮ検査手段２０１のＮＧとＬＥＶＥＬ検査手段２０２のＮＧとキー比較手段２０７のＮＧのうち、いずれかがＮＧの場合にモードＭＯＤＥを３とする。すべてがＮＧで無い場合には、モードＭをそのままモードＭＯＤＥとする。
【００６２】
次に、ハッシュアドレス生成手段２０３のハッシュ演算式について、詳細に説明する。
【００６３】
ハッシュ演算は、キーの集合から番地の集合への多対１の写像演算であり、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）をＫとし、ＶＬＣハッシュテーブルの大きさをＮとすると、アドレスＡを求めるハッシュ演算の式は、下記（式１）となる。
Ａ  ＝  Ｈａｓｈ（Ｋ）  ｍｏｄ  Ｎ  ・・・  （式１）
【００６４】
ハッシュ演算において、異なるキーのハッシュ値が同一になる（衝突する）シノニムの発生を抑えるために、一般的にはテーブルの大きさＮを素数とする。しかし、本実施の形態では、演算量を減らすために、テーブルの大きさＮを２のべき乗にする。すなわち下記（式２）に示すように、Ｎの剰余を求める演算を、論理積によるマスク演算で代用し、演算量を低減している。Ｎが２のべき乗の場合は、（式１）と（式２）は等価である。Ａｎｄは、ビットごとの論理積である。
Ａ  ＝  Ｈａｓｈ（Ｋ）  Ａｎｄ  （Ｎ−１）  ・・・  （式２）
【００６５】
しかし、テーブルの大きさＮが素数でないので、ハッシュ効果が薄れて、シノニムの増大を招く。そこで、本実施の形態では、キーデータを構成するサブキー（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴのそれぞれ）に対して、個別に演算するハッシュ関数として、下記（式３）を用いる。
Ａ  ＝  Ｈａｓｈ（Ｋ１  ，Ｋ２  ，Ｋ３）  Ａｎｄ  （Ｎ−１）  ・・・（式３）
【００６６】
このように、３変数のハッシュ演算を行うことにより、ハッシュ効果の薄れを防いでいる。３変数のハッシュ関数としては、周知のハッシュ関数のうち、演算量の少ないものを利用すればよい。
【００６７】
次に図３を用いて、３モードエスケープに対応したＶＬＣハッシュテーブル２０４の構造について、詳細に説明する。
【００６８】
ハッシュ関数は、多対１の写像であるので、複数のキーのハッシュ値が同一となるシノニム現象が必ず発生する。例えば、ＲＵＮ＝０〜６３、ＬＥＶＥＬ＝１〜２０４７、ＬＡＳＴ＝０〜１の範囲をとるキー全体のグループ５００を、テーブルサイズＮ＝１０２４のＶＬＣハッシュテーブル５０３に写像させる場合を考えると、２６２，０１６種類から１０２４種類への写像関数となり、シノニムが多発する。しかし、そのうち可変長符号として定義されているキーのグループ５０１は、僅か２６２種類であり、２６２種類から１０２４種類への写像において、シノニムを発生させないことは明らかに可能である。
【００６９】
本実施の形態においては、可変長符号として定義されているキーのグループ５０１に対して、シノニムの発生しないハッシュ関数を用いる。このハッシュ関数は必ず存在し、具体的な条件に応じて生成することは容易である。また、可変長符号として定義されていないキーのグループ５０２に対してシノニムを許している。
【００７０】
すなわち、可変長符号として定義されているグループ５０１の任意のキー（Ａ）に対しハッシュ演算したＡＤＲ−Ａ５１０と、別の任意のキー（Ｂ）に対しハッシュ演算したＡＤＲ−Ｂ５２０は、必ず異なる。また、可変長符号として定義されていないグループ５０２の任意のキー（Ｃ）に対しハッシュ演算したＡＤＲ−Ｂ５２０とは、同じになる場合を許している。また、可変長符号が定義されていないグループ５０２の任意のキー（Ｄ）に対しハッシュ演算したＡＤＲ−Ｃ５３０と、別の任意のキー（Ｅ）に対しハッシュ演算したＡＤＲ−Ｃ５３０とも、同じになる場合を許している。
【００７１】
ＶＬＣハッシュテーブル５０３は、可変長符号が定義されているグループ５０１のキーに対しシノニムの発生しないアドレスＡＤＲ−Ａ５１０と、グループ５０１のキーに対しシノニムが発生しないがグループ５０２のキーとの間でシノニムが発生するアドレスＡＤＲ−Ｂ５２０と、グループ５０２のキーに対しシノニムが発生するアドレスＡＤＲ−Ｃ５３０と、グループ５０１およびグループ５０２にハッシュ演算しても指されることのないアドレスＡＤＲ−Ｄ５４０から構成される。
【００７２】
例えば、このような条件を満たすハッシュ演算の一例を、下記（式４）に示す。
Ａ＝（ＲＵＮ＊２  ＋  ＬＥＶＥＬ＊８５  ＋  ＬＡＳＴ＊６４）    Ａｎｄ  （１０２４−１）  ・・・  （式４）
【００７３】
なお、ここで示したハッシュ演算式は一例であり、この条件を満たすものであればどんなハッシュ演算式でも良い。
【００７４】
このようなハッシュ関数を用いることにより、シノニム発生時の対策を不要としている。すなわち、ハッシュ演算したハッシュ値をアドレスとしてＶＬＣハッシュテーブル５０３を参照した時に、可変長符号が定義されているグループ５０１からの写像かどうかを判断しただけで、目的とする可変長符号を得ることができる。その判断を行うのが照合キーである。
【００７５】
照合キーは、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に後述する条件を満たす演算を施して求める。
【００７６】
ＶＬＣハッシュテーブル５０３に格納する照合キーは、グループ５０１のキーに対しシノニムの発生しないアドレスＡＤＲ−Ａ５１０には、グループ５０１のキーデータにより生成した照合キーを格納する。グループ５０１のキーに対しシノニムが発生しないがグループ５０２のキーとの間でシノニムが発生するアドレスＡＤＲ−Ｂ５２０には、グループ５０１のキーデータにより生成した照合キーを格納する。照合キー生成の演算式は、グループ５０１のキーデータから生成した照合キーとグループ５０２のキーデータから生成した照合キーとは、ユニークになるものとする。
【００７７】
グループ５０２のキーに対しシノニムが発生するアドレスＡＤＲ−Ｃ５３０には、シノニムの発生したグループ５０２のいずれのキーデータより生成した照合キーと一致しない照合キーを格納する。グループ５０１のキーおよびグループ５０２のキーにハッシュ演算しても指されることのないアドレスＡＤＲ−Ｄ５４０には、どんな値のキーを格納してもかまわない。
【００７８】
したがって、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）より求めた照合キーとＶＬＣハッシュテーブル５０３のキーが一致すれば、キーデータが可変長符号の定義されているグループ５０１のキーデータであると判断することができる。
【００７９】
例えば、このような条件を満たす照合キー生成演算式の一例を（式５）に示す。
６３  −  （（ＲＵＮ  Ａｎｄ  （３２−１））＊２  ＋  ＬＡＳＴ）・・・    （式５）
【００８０】
なお、ここで示した照合キー生成演算式は一例であり、この条件を満たすものであればどんな演算式でも良い。
【００８１】
図４にＶＬＣハッシュテーブル６０１の構成例を示す。ここで、ハッシュ演算６００は、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）から照合キーを求めるものである。
【００８２】
図４に示すように、６ビットで検査キーを表し、２ビットで３種類のモード（通常モード、ＥＳＣモード１、ＥＳＣモード２）を表し、１２ビットで可変長符号（ＶＬＣ）を格納し、４ビットでその長さ（ＬＥＮ）を格納する。合計２４ビットで１つのテーブルを構成して１０２４個のテーブルとする。また、１０２４個のテーブルのうち、可変長符号が定義されている（ＡＤＲ−ＯＫ）のは２６２個であり、残り７６２個は未定義（ＡＤＲ−ＮＧ）となり、検査キーを比較するためのキー部の６ビットだけがあればよく、残りの１８ビットは空き領域となっている。また、３モードエスケープコーディングは、１種類の可変長コードをＥＳＣ符号で区別することにより、３種類のキーデータの可変長符号として利用しているため、このＶＬＣハッシュテーブル６０１の可変長符号（ＶＬＣ）には同じ値が複数箇所に格納されることになる。
【００８３】
図５に別のＶＬＣハッシュテーブル６０２の構成例を示す。この例では、６ビットで検査キーを表し、２ビットで３種類のモード（通常モード、ＥＳＣモード１、ＥＳＣモード２）を表し、８ビットで可変長符号を格納したポインタを表す。さらに、ＶＬＣハッシュテーブル６０２には前述したように、空き領域が７６２個もあり、定義する必要のある可変長符号は１０２個であるので、連続したその空き領域を２個使用して、１つ目の４ビットでその長さ（ＬＥＮ）、４ビットで可変長符号の上位４ビット（ＶＬＣ１）を、２つ目の８ビットで可変長符号の下位８ビット（ＶＬＣ２）を格納する。合計１６ビットで１つのテーブルを構成して１０２４個のテーブルとする。
【００８４】
この構成例はほんの一例であり、以上の条件を満たすものであればどんな構成をとっても良い。
【００８５】
上記のように、本発明の第１の実施の形態では、３モードエスケープ可変長符号化装置を、３モードエスケープに定義されている全ケースのキーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に対する可変長符号の情報をＶＬＣハッシュテーブルに登録することにより、１回のテーブル検索で、通常モードまたはＥＳＣモード１またはＥＳＣモード２の可変長符号を得ることができ、簡単な制御手順で高速に可変長符号を求めることができる。また、可変長符号の検索は、キーデータに演算量の少ないハッシュ演算を施して、ＶＬＣハッシュテーブルのアドレスを直接算出することができ、可変長符号の情報を格納したＶＬＣハッシュテーブルに、キーデータに照合キー演算を施して求めた検査キーを格納しておき、キーデータにハッシュ演算を施して求めたテーブルアドレスで、ＶＬＣハッシュテーブルをアクセスして検査キーを読み出し、キーデータに照合キー演算を施して求めた照合キーと比較するだけで、該当のキーデータかどうか判断できるので、高速に検索することができる。
（第２の実施の形態）
【００８６】
図６に、本発明の第２の実施形態の３モードエスケープ可変長符号化方法のフローチャートを示す。また、図７に、３モードエスケープ可変長符号テーブル検索手順のフローチャートを示す。
【００８７】
図６に示すように、３モードエスケープ可変長符号化方法は、（ＬＡＳＴ  ，ＲＵＮ  ，ＬＥＶＥＬ）の組合せから可変長符号ＶＬＣとその長さＬＥＮとモードＭＯＤＥを求める３モードエスケープ可変長符号テーブル検索手順（Ｓ３００）と、モードにより処理手順を分岐させる手順（Ｓ３０１）と、通常モードの可変長符号を出力する手順（Ｓ３０２）と、ＥＳＣモード１の可変長符号を生成して出力する手順（Ｓ３０３）と、ＥＳＣモード２の可変長符号を生成して出力する手順（Ｓ３０４）と、固定長の符号を生成して出力する手順（Ｓ３０５）から構成されている。
【００８８】
また、図７に示すように、３モードエスケープ可変長符号テーブル検索手順は、ＲＵＮデータの範囲を検査するＲＵＮ検査手順（Ｓ４０１）と、ＬＥＶＥＬデータの範囲を検査するＬＥＶＥＬ検査手順（Ｓ４０２）と、（ＬＡＳＴ  ，ＲＵＮ  ，ＬＥＶＥＬ）をキーとしてハッシュ演算を行い可変長符号テーブルアドレスＡを求めるハッシュアドレス生成手順（Ｓ４０３）と、前記アドレスＡでＶＬＣハッシュテーブルを参照して検査キーＫＥＹとモードＭと可変長符号ＶＬＣとその長さＬＥＮを求めるハッシュテーブル参照手順（Ｓ４０４）と、（ＬＡＳＴ  ，ＲＵＮ  ，ＬＥＶＥＬ）から照合キーＫを生成する照合キー生成手順（Ｓ４０５）と、前記検査キーＫＥＹと前記照合キーＫの一致比較をするキー比較手順（Ｓ４０６）と、ＭＯＤＥ生成手段（Ｓ４０７）から構成されている。
【００８９】
以上のような処理手順を有する３モードエスケープ可変長符号化方法について、ＭＰＥＧ−４のイントラマクロブロックの可変長符号化を例に取り、その動作を説明する。以下（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）の組合せを、キーデータと呼ぶことにする。
【００９０】
図６を参照して、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）から３モードエスケープ可変長符号を出力する手順を説明する。
【００９１】
まず、３モードエスケープ可変長符号処理では、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）から可変長コードＶＬＣと、その長さＬＥＮと、モードＭＯＤＥを求める（ステップＳ３００）。
【００９２】
次に、上記処理で求めたモードＭＯＤＥを判定し（ステップＳ３０１）、モードが０の時は、前記可変長コードＶＬＣをそのまま出力する（ステップＳ３０２）。また、上記判定（ステップＳ３０１）で、モードが１の時は、前記可変長コードＶＬＣにＥＳＣモード１の符号（ＥＳＣ“０”）を付加して出力する（ステップＳ３０３）。また、上記判定（ステップＳ３０１）で、モードが２の時は、前記可変長コードＶＬＣにＥＳＣモード２の符号（ＥＳＣ“１０”）を付加して出力する（ステップＳ３０４）。また、上記判定（ステップＳ３０１）で、モードが３の時は、前記キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）にＥＳＣモード３の符号（ＥＳＣ“１１”）を付加して出力する（ステップＳ３０５）。
【００９３】
次に図７を参照して、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）から可変長コードＶＬＣとその長さＬＥＮとモードＭＯＤＥを求める手順を説明する。
【００９４】
この３モードエスケープＶＬＣテーブル検索処理では、まず、ＲＵＮが定義されているデータ範囲（０〜４１）に入っているか否かを検査し（ステップＳ４０１）、範囲外の場合はＮＧなので、モードＭＯＤＥを３に設定して（ステップＳ４０７）、終了する。ＯＫの場合は、ＬＥＶＥＬが定義されているデータ範囲（１〜５４）に入っているか否かを検査し（ステップＳ４０２）、範囲外の場合はＮＧなので、モードＭＯＤＥを３に設定して（ステップＳ４０７）、終了する。ＯＫの場合は、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に後述するハッシュ演算を施し、算出したハッシュ値をＶＬＣハッシュテーブルのアドレスＡとする（ステップＳ４０３）。
【００９５】
次に、このアドレスＡによりＶＬＣハッシュテーブルを参照し、検査キーＫＥＹとモードＭと可変長コードＶＬＣとその長さＬＥＮを求める（ステップＳ４０４）。続いて、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に照合キー演算を行い照合キーＫを生成する（ステップＳ４０５）。そして、前記照合キーＫとＶＬＣハッシュテーブルを参照して得られた検査キーＫＥＹの一致比較を行い（ステップＳ４０６）、不一致の場合はＮＧなので、モードＭＯＤＥを３に設定して（ステップＳ４０７）、終了する。ＯＫの場合は、上記で参照して可変長コードにより、求めるべき可変長コードが決定する。
【００９６】
なお、本第２の実施の形態における、ＶＬＣハッシュテーブル、ハッシュアドレス生成演算式、照合キー生成演算式は、第１の実施の形態と同じものである。
【００９７】
上記のように、本発明の第２の実施の形態では、３モードエスケープ可変長符号化方法を、３モードエスケープに定義されている全ケースのキーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に対する可変長符号の情報をＶＬＣハッシュテーブルに登録することにより、１回のテーブル検索で、通常モードまたはＥＳＣモード１またはＥＳＣモード２の可変長符号を得ることができ、簡単な制御手順で高速に可変長符号を求めることができる。また、可変長符号の検索は、キーデータに演算量の少ないハッシュ演算を施して、ＶＬＣハッシュテーブルのアドレスを直接算出することができ、可変長符号の情報を格納したＶＬＣハッシュテーブルに、キーデータに照合キー演算を施して求めた照合キーを格納しておき、キーデータにハッシュ演算を施して求めたテーブルアドレスで、ＶＬＣハッシュテーブルをアクセスしてキー部を読み出し、キーデータに照合キー演算を施して求めた照合キーと比較するだけで、該当のキーデータかどうか判断できるので、高速に検索することができる。
（第３の実施の形態）
【００９８】
なお、本発明はプログラムによって実現することも可能である。そのソフトウェアを磁気ディスク等の記録媒体に記録して移送することにより、独立した他のコンピュータ・システムで、このソフトウェアを収めた記録媒体から読み出して、実施することができる。
【００９９】
記録媒体としては、磁気ディスクの他に、光ディスク、光磁気ディクス等を用いても同様に行うことができる。また、記録媒体は、これらに限られず、ＩＣカード、ＲＯＭカセット等、プログラムを記録できるものであれば、同様に実施することができる。
【０１００】
【発明の効果】
以上説明したように、本発明は、３つのモードに対応した可変長符号情報を格納したＶＬＣハッシュテーブルを参照し、条件により選択されたモードにしたがって３モードエスケープ可変長符号を決定することにより、１回のテーブル検索処理で３モードに対応した可変長符号を得ることができる。また、可変長符号テーブルをハッシュテーブルにしたので、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）に演算量の少ないハッシュ演算を施して、ＶＬＣハッシュテーブルのアドレスを直接求めることができるとともに、テーブルサイズを小さくすることができる。さらに、キーデータ（ＲＵＮ  ，ＬＥＶＥＬ  ，ＬＡＳＴ）より照合キーを生成し、テーブル内の検査キーで比較するだけで、キーデータに対応するテーブル情報か否かを判定することができるので、高速に可変長符号を得ることができるというすぐれた効果を有する３モードエスケープ可変長符号化装置および方法を提供することができるものである。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態における３モードエスケープ可変長符号装置を示す機能ブロック図
【図２】本発明の第１の実施の形態における３モードエスケープ可変長符号テーブル検索手段を示す機能ブロック図
【図３】キーのグループとＶＬＣハッシュテーブルの関係を説明する図
【図４】ＶＬＣハッシュテーブルの構成例を示す図
【図５】ＶＬＣハッシュテーブルの他の構成例を示す図
【図６】本発明の第２の実施の形態における３モードエスケープ可変長符号方法の処理手順を示すフローチャート
【図７】本発明の第２の実施の形態における３モードエスケープ可変長符号テーブル検索方法の処理手順を示すフローチャート
【図８】ＭＰＥＧ−４  イントラマクロプロックのデータ範囲の説明図
【図９】ＭＰＥＧ−４  イントラマクロプロックの可変長符号を示す図
【図１０】ＭＰＥＧ−４  イントラマクロプロックのＬＭＡＸとＲＭＡＸの説明図
【図１１】従来の３モードエスケープ可変長符号化方法の処理手順を示すフローチャート
【図１２】従来の３モードエスケープ可変長符号化方法の処理手順を示すフローチャート
【図１３】従来の可変長符号テーブルのアクセス方法の説明図
【図１４】従来のクラス別け可変長符号テーブルのアクセス方法の説明図
【符号の説明】
１０  ３モードエスケープ可変長符号化装置
１００  ３モードエスケープ可変長符号テーブル検索手段
１０１  ＥＳＣ１符号生成手段
１０２  ＥＳＣ２符号生成手段
１０３  ＦＬＣ符号生成手段
１０４  セレクタ
２０１  ＲＵＮ検査手段
２０２  ＬＥＶＥＬ検査手段
２０３  ハッシュアドレス生成手段
２０４  ＶＬＣハッシュテーブル
２０５  ハッシュテーブル参照手段
２０６  照合キー生成手段
２０７  キー比較手段
２０８  ＭＯＤＥ生成手段
５００  キー全体のグループ
５０１  可変長符号が定義されているグループ
５０２  可変長符号が定義されていないグループ
５０３  ＶＬＣハッシュテーブル
６００  ハッシュ演算
６０１  ＶＬＣハッシュテーブル
６０２  ＶＬＣハッシュテーブル
【図１】
2004254208.tif 000003
【図２】
2004254208.tif 000004
【図３】
2004254208.tif 000005
【図４】
2004254208.tif 000006
【図５】
2004254208.tif 000007
【図６】
2004254208.tif 000008
【図７】
2004254208.tif 000009
【図８】
2004254208.tif 000010
【図９】
2004254208.tif 000011
【図１０】
2004254208.tif 000012
【図１１】
2004254208.tif 000013
【図１２】
2004254208.tif 000014
【図１３】
2004254208.tif 000015
【図１４】
2004254208.tif 000016