(57)【要約】【課題】ＣＡＶＬＣのＴＣ、Ｔ１ｓの符号化に代表される可変長符号の復号に必要なサイクル数を低減可能ならしめる。【解決手段】復号処理装置はプリフィックスとこのプリフィックスに後続するサフィックスとを含む可変長符号ビットストリームを復号する。復号処理装置は、可変長符号ビットストリームの一部を保持しこの保持する処理動作を制御可能なビット格納制御手段、可変長符号ビットストリームのプリフィックスに基づいて復号に必要な復号用テーブル参照に用いる復号用アドレスを生成し、ビット格納制御手段に対し可変長符号ビットストリームを更新する制御情報を生成する制御情報・復号用アドレス生成制御手段を含む。復号用アドレスを出力する処理と可変長符号ビットストリームを更新する処理とを同時に行う。【選択図】図１
2009157250.tif 000002
【特許請求の範囲】
【請求項１】
少なくともプリフィックスと前記プリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行う復号処理装置であって、
前記可変長符号ビットストリームの一部を一時保持するとともに、保持するための入出力処理を制御する第１の制御手段と、
前記第１の制御手段から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記第１の制御手段に対し前記可変長符号ビットストリームを更新するための制御情報を供給する第２の制御手段と、
を含み、
前記第２の制御手段が、
前記復号用アドレスを生成する処理と、前記第１の制御手段に保持される前記可変長符号ビットストリームを更新する処理とを行うことを特徴とする復号処理装置。
【請求項２】
請求項１に記載の復号処理装置において、
前記第２の制御手段は、
前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する第１の生成制御部と、
前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する第２の生成制御部と、
を含み、
前記第１の生成制御部が、
前記ローインデックスと前記サフィックス長の生成後に、前記第２の生成制御部における復号用アドレスを生成する処理と、前記第１の制御手段における前記可変長符号ビットストリームを更新する処理とを実行することを特徴とする復号処理装置。
【請求項３】
請求項１に記載の復号処理装置において、
前記第１の制御手段は、
前記可変長符号ビットストリームを一時保持するビットストリーム一時保持部と、
前記ビットストリーム一時保持部における前記可変長符号ビットストリームを入出力する処理を行うビット制御部と、
を含み、
前記ビット制御部が、
前記ビットストリーム一時保持部にて保持した前記可変長符号ビットストリームから予め決められたビット数のビットデータを読み出し、読み出し後の残りビット数が少ない場合に、新たなデータを保持した前記可変長符号ビットストリームの一部の末尾に連接して格納する機能と、
前記更新する制御情報である更新命令に基づいて保持した前記可変長符号ビットストリームを更新する処理を行う機能と、
を有することを特徴とする復号処理装置。
【請求項４】
請求項２に記載の復号処理装置において、
前記第１の生成制御部は、
前記プリフィックス長に応じたローインデックスを格納した第１テーブルと、
前記プリフィックス長に応じたサフィックス長を格納した第２テーブルと、
前記プリフィックス長を用いて、前記第１テーブルと前記第２テーブルとを各々参照し、対応する前記ローインデックスと前記サフィックス長を取得するテーブル情報取得部と、
を含み、
前記テーブル情報取得部が、前記ローインデックスと前記サフィクス長を取得することを特徴とする復号処理装置。
【請求項５】
請求項２に記載の復号処理装置において、
前記第１の生成制御部は、
前記プリフィックス長に応じたローインデックスを格納した第１テーブルと、
前記プリフィックス長に応じたサフィックス長を格納した第２テーブルと、
前記第１の制御手段から読み出された前記可変長符号ビットストリームの前記プリフィックス長を計数するプリフィックス計数部と、
前記プリフィックス計数部にて計数した前記プリフィックス長から前記第１テーブル、前記第２テーブルを参照するためのプリフィックスアドレスを計算するプリフィックスアドレス計算部と、
前記プリフィックスアドレス計算部にて求めた前記プリフィックスアドレスを用いて、前記第１テーブルと前記第２テーブルとを各々参照し、対応する前記ローインデックスと前記サフィックス長を取得するテーブル情報取得部と、
前記テーブル情報取得部にて取得された前記サフィックス長と、前記プリフィックス計数部にて計数した前記プリフィックス長と、前記第１の制御手段から読み出された前記可変長符号ビットストリームとに基づいて、前記更新する制御情報である更新命令を生成する更新命令生成部と、
を含むことを特徴とする復号処理装置。
【請求項６】
請求項２に記載の復号処理装置において、
前記第２の生成制御部は、
前記サフィックス長に基づいて前記コラムインデックスを生成するコラムインデックス生成部と、
前記コラムインデックスと前記ローインデックスとを加算する加算部と、
を含むことを特徴とする復号処理装置。
【請求項７】
請求項３に記載の復号処理装置において、
前記ビット制御部が、
前記可変長符号ビットストリームの前記プリフィックス長を計数するプリフィックス計数部を有することを特徴とする復号処理装置。
【請求項８】
請求項５に記載の復号処理装置において、
前記第１テーブル及び前記第２テーブルは、
コンテキスト適応型可変長符号化方式における復号用ＮｕｍＶＬＣテーブルの種類に応じた複数のテーブルを各々有し、
前記第１の制御手段が、
前記種類を選択するテーブル選択制御情報を生成して前記第１の生成制御部に対して供給し、
前記テーブル情報取得部が、
前記テーブル選択制御情報に基づいて、前記第１のテーブルにおける前記複数のテーブルの中からいずれか一つを選択するとともに、前記第２のテーブルにおける前記複数のテーブルの中からいずれか一つを選択することを特徴とする復号処理装置。
【請求項９】
少なくともプリフィックスと前記プリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行う復号処理装置を搭載したパイプライン処理を実行可能なプロセッサであって、
プロセッサパイプライン処理におけるレジスタステージにおいて、前記可変長符号ビットストリームの一部を一時保持するとともに、保持するための入出力処理を制御する第１の制御手段と、
前記プロセッサパイプライン処理における実行ステージにおいて、前記第１の制御手段から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記第１の制御手段に対し前記可変長符号ビットストリームを更新する制御情報を生成する第２の制御手段と、
を含み、
前記第２の制御手段が、
前記復号用アドレスを生成する処理と、前記第１の制御手段の前記可変長符号ビットストリームを更新する処理とを行うことを特徴とするプロセッサ。
【請求項１０】
請求項９に記載のプロセッサにおいて、
前記第２の制御手段は、
前記プロセッサパイプライン処理における実行ステージにおいて、前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する第１の生成制御部と、
前記プロセッサパイプライン処理における実行ステージにおいて、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する第２の生成制御部と、
を含み、
前記第１の生成制御部が、
前記ローインデックスと前記サフィックス長の生成後に、前記第２の生成制御部における復号用アドレスを生成する処理と、前記第１の制御手段における前記可変長符号ビットストリームを更新する処理とを実行することを特徴とするプロセッサ。
【請求項１１】
請求項１０に記載のプロセッサにおいて、
前記第１の生成制御部は、
前記プリフィックス長に応じたローインデックスを格納した第１テーブルと、
前記プリフィックス長に応じたサフィックス長を格納した第２テーブルと、
プロセッサパイプライン処理における実行ステージ内であって、インデックス生成パイプライン処理における第１ステージにて、前記第１の制御手段から読み出された前記可変長符号ビットストリームの前記プリフィックス長を計数するプリフィックス計数部と、
前記インデックス生成パイプライン処理における第２ステージにて、前記プリフィックス計数部にて計数した前記プリフィックス長から前記第１テーブル、前記第２テーブルを参照するためのプリフィックスアドレスを計算するプリフィックスアドレス計算部と、
前記インデックス生成パイプライン処理における第３ステージにて、前記プリフィックスアドレス計算部にて求めた前記プリフィックスアドレスを用いて、前記第１テーブルと前記第２テーブルとを各々参照し、対応する前記ローインデックスと前記サフィックス長を取得するテーブル情報取得部と、
前記インデックス生成パイプライン処理における第４ステージにて、前記テーブル情報取得部にて取得された前記サフィックス長と前記プリフィックス計数部にて計数した前記プリフィックス長と、前記第１の制御手段から読み出された前記可変長符号ビットストリームとに基づいて、前記更新する制御情報である更新命令を生成する更新命令生成部と、
を含むことを特徴とするプロセッサ。
【請求項１２】
請求項９乃至請求項１１のうちいずれか一項に記載のプロセッサを備えた電子機器。
【請求項１３】
少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行う復号処理方法であって、
前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持するための入出力処理を行う第１の制御をし、
続いて、前記ビットストリーム一時保持部から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記ビットストリーム一時保持部に対し前記可変長符号ビットストリームを更新するための制御情報を供給する第２の制御をし、
前記第２の制御をする際に、
前記復号用アドレスを生成する処理と、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する処理とを行うことを特徴とする復号処理方法。
【請求項１４】
請求項１３に記載の復号処理方法において、
前記第２の制御をする際に、
前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する第１の生成制御をし、
続いて、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する第２の生成制御をし、
前記第１の生成制御をする際に、
前記ローインデックスと前記サフィックス長の生成後に、前記第２の生成制御における復号用アドレスを生成する処理と、前記第１の制御における前記可変長符号ビットストリームを更新する処理とを実行させることを特徴とする復号処理方法。
【請求項１５】
請求項１４に記載の復号処理方法において、
前記プリフィックス長に応じたローインデックスを格納した第１テーブルと、前記プリフィックス長に応じたサフィックス長を格納した第２テーブルと、を設け、
前記第１の生成制御をする際に、
前記可変長符号ビットストリームの前記プリフィックス長を計数し、
続いて、計数した前記プリフィックス長から前記第１テーブル、前記第２テーブルを参照するためのプリフィックスアドレスを計算し、
次に、計算した前記プリフィックスアドレスを用いて前記第１テーブルと前記第２テーブルとを各々参照して対応する前記ローインデックスと前記サフィックス長を取得し、
しかる後、取得した前記サフィックス長と計数した前記プリフィックス長とに基づいて前記更新する制御情報である更新命令を生成することを特徴とする復号処理方法。    
【請求項１６】
少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行うコンピュータが諸機能を実現可能な復号処理プログラムであって、
前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持するための入出力処理を行う第１の制御機能と、
前記ビットストリーム一時保持部に保持された前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する制御情報を生成する第２の制御機能と、
を含む機能を前記コンピュータに実現させ、
前記第２の制御機能では、
前記復号用アドレスを生成する処理と、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する処理とを行う機能を前記コンピュータに実現させることを特徴とする復号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、復号処理装置、プロセッサ、電子機器、復号処理方法、及び復号処理プログラムに関し、特に、Ｈ．２６４などの規定に基づいて符号化されたデータの復号を行うものであって、可変長符号を復号する復号処理装置などに関する。
【背景技術】
【０００２】
一般に、画像およびオーディオの圧縮符号化装置では、入力される時間領域の信号を直交変換、たとえば、離散コサイン変換（ＤＣＴ：Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）により周波数領域の係数に変換して量子化した後、符号を割り当てる。この符号の割り当てでは、圧縮効率向上のため、発生頻度の確率に応じて符号長を変化させる可変長符号化を施すことが多い。【０００３】
可変長符号化の例としては、Ｈ．２６４／ＡＶＣ（ＭＰＥＧ−４ＡＶＣ：Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ４  Ｐａｒｔ１０  Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）方式で用いられるＣＡＶＬＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｅ：コンテキスト適応型可変長符号化方式）などが挙げられる。【０００４】
ＣＡＶＬＣでは、量子化されたＤＣＴ係数を４×４ブロックごとに符号化を行い符号化ビットストリームを生成する。この符号化されたデータ列である符号化ビットストリームの復号を行う場合には、以下に示す４つの処理に分けて行うことができる。
１番目の処理では、４×４ブロックに出現する０でない係数の数（ＴＣ：Ｔｏｔａｌ  Ｃｏｅｆｆｉｃｉｅｎｔ）と、４×４ブロックに出現する連続する±１の数（Ｔ１ｓ：Ｔｒａｉｌｉｎｇ  ｏｎｅｓ）を求める処理を行う。
２番目の処理では、０でない係数の値（レベル値）を求める処理を行う。
３番目の処理では、連続する０の係数の数（ラン）の総和を求める処理を行う。
４番目の処理では、自身のランを復号する際に残っているラン数を求める処理を行う。
これら４つの処理の中で、計算に時間がかかる処理は１番目の段階である、ＴＣとＴ１ｓを求める処理である。【０００５】
このようなＣＡＶＬＣによる復号演算処理手法の関連技術として、例えば以下に示す特許文献１などが挙げられる。【０００６】
特許文献１では、図４１及び図４２に示すようなテーブルを用いてＴＣとＴ１ｓを求める処理を行う。図４１は、Ｈ．２６４のＮｕｍＶＬＣ０テーブルである。ＮｕｍＶＬＣ０テーブルはＴＣと、Ｔ１ｓとをキーとして、符号が割り振られている。また、図４２は、特許文献１に開示の、図４１のテーブルに基づいて構築されたテーブルである。【０００７】
特許文献１に開示された復号演算処理手法では、ＣＡＶＬＣで符号化されたＴＣ、Ｔ１ｓを復号する際に、連続する０の数（プリフィックス長）とその後に続くバイナリコード（サフィックス）により内容が特定される、図４２に示したテーブルを使用する。図４２に示すテーブルの内容は、ＴＣ、Ｔ１ｓをペアとしたものである。【０００８】
復号の際には、復号処理を行うコンピュータは、まずプリフィックス長を求める。次に、プリフィックスに続くサフィックスを求め、プリフィックス長とサフィックスを用いてテーブルを参照し、ＴＣ、Ｔ１ｓを求める。
この一連の処理においては、プリフィックス長やサフィックスを求めるために、ビットストリームから指定したビット幅のデータを切り出す操作（アンパッキング処理）が必要となる。アンパッキング処理を行う装置の一例が、特許文献２に記載されている。【０００９】
図４７は、特許文献２に開示された関連技術のプロセッサ１０３１に処理装置１０３２を組み込んだ構成を示す図である。
このプロセッサ１０３１は、５段のパイプラインを有し、命令を取り込むＩＦステージ，この命令をデコードし、コアレジスタ（Ｃｏｒｅ  Ｒｅｇ）からデータを取り出すＲＥＧステージ、数値演算ユニット（ＡＬＵ）によるＥＸＥステージ、バス（ＢＵＳ）を解してメモリ１０３３との間でデータを入出力するＭＥＭステージ、コアレジスタ（Ｃｏｒｅ  Ｒｅｇ）にデータを書き戻すＷＢステージにより構成される。
これにより命令、及びデータを順次転送して数値演算ユニット（ＡＬＵ）により処理するようになされている。
また、プロセッサ１０３１は、ＲＥＧステージにそれぞれ専用レジスタ（Ｒｅｇ）１０３４、ＥＸＥステージに演算器１０３５を設け、これら専用レジスタ（Ｒｅｇ）１０３４、演算器１０３５による処理装置１０３２が追加されるようになされている。
また、この追加の構成に対応して、プロセッサ１０３１は、専用レジスタ（Ｒｅｇ）１０３４から指定したビット幅のデータを切り出すアンパッキング命令が追加される。【００１０】
また、特許文献３では、ＣＡＶＬＣ部内のＣＡＶＬＣ処理部は、ストリームデータを格納したＭビットバッファを有するデータアクセス回路に対して、所定の要求ビット数を付加したｇｅｔリクエストを発行し、データアクセス回路からデータを取得した上で「０係数」の個数を検出する。そして、ＣＡＶＬＣ処理部は、不要なビットについては、ｕｎｇｅｔリクエストによりデータアクセス回路に返却する。
同様に、ＣＡＶＬＣ処理部は、ストリームデータを格納したＭビットバッファを有するデータアクセス回路に対して、所定の要求ビット数を付加したｇｅｔリクエストを発行し、データ取得回路からデータを取得した上で「０係数」の連続個数を検出する。そして、不要なビットについては、ｕｎｇｅｔリクエストによりデータアクセス回路に返却する（特許文献３の段落番号０１０８〜０１１４）。
このように、ＣＡＶＬＣ処理部は、データアクセス回路のストリームデータから「０係数」の個数や「０係数」の連続個数を検出する毎に逐次データを取得し、返却するという前記「データの切り出し」処理を行う。
【特許文献１】特開２００７−４９６７０号公報
【特許文献２】特許第３７７２９７６号
【特許文献３】特開２００７−３０４７９７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、関連技術としての特許文献２に開示された処理装置においては、次のような課題がある。【００１２】
すなわち、第１の課題は、アンパッキング命令で指定するビットの切り出し幅を決めるために、複数サイクル数が必要となるということである。
この問題が発生する原因は、ビットの切り出し幅がビットストリーム内のビットパターンに依存するために、ビットストリームからデータを読み出して、ビットパターンを調べなければならないことに起因する。【００１３】
また、特許文献１によるＣＡＶＬＣにおける復号処理を、特許文献２のプロセッサで処理を行おうとすると、以下の第２の課題が生じる。
すなわち、第２の課題は、復号結果を得るためのテーブル参照に必要なアドレス計算に、多くのサイクル数が必要となるということである。
この問題が発生する原因は、復号結果を得るためのテーブル参照に必要なアドレスを求めるために、まず、プリフィックス長からローインデックスを、サフィックスからはコラムインデックスを計算し、さらに、ローインデックスとコラムインデックスからテーブルを参照する復号用アドレスを計算しなければならないことに起因する。【００１４】
第１及び第２の課題を、図４８を用いて説明する。図４８は、特許文献２に開示の処理装置に基づいて作成した、ＴＣ、Ｔ１ｓを復号する処理を示したタイムチャートである。
まず、第１クロックから第５クロックにかけては、プロセッサはローインデックスとサフィックス長を求める処理を行う。
具体的には、プロセッサがメモリからデータをロードし、プリフィックス長を計算し、求めたプリフィックス長からローインデックステーブルとサフィックス長テーブルを参照するアドレスを求め、ローインデックスとサフィックス長をテーブル参照により求める。
次に、第６クロックから第８クロックにかけては、プロセッサはサフィックスを上記読み出したデータから切り出し、コラムインデックスを求める処理を行う。具体的には、ＡＬＵが上記読み出したデータの、プリフィックス部をマスクして消去し、データをシフトしてサフィックスのみを取り出し、コラムインデックスを計算する。
第９クロックから第１０クロックにかけては、プロセッサはＴＣとＴ１ｓの復号を行う。具体的には、数値演算ユニット（ＡＬＵ）が上記までの処理で求めたローインデックスとコラムインデックスから復号用アドレスを計算し、そのアドレスを用いたロード処理によりＴＣとＴ１ｓを求める。
最後に、第１１クロックから第１３クロックにかけて、プロセッサは、図４７の専用レジスタ（Ｒｅｇ）１０３４を更新する処理を行う。
具体的には、数値演算ユニット（ＡＬＵ）がプリフィックス長とサフィックス長を加算して更新するビット量を計算し、ビット読み出し命令によって、専用レジスタ（Ｒｅｇ）１０３４を更新する。
このように、特許文献２に開示の処理装置においては、全サイクル数の半分以上が、プリフィックス長の計算やアドレスの計算などにかかってしまう。【００１５】
また、特許文献３でもＣＡＶＬＣ処理部がデータの切り出しを逐次行う必要があったため、前記同様の課題が生じる。【００１６】
本発明の目的は、ＣＡＶＬＣのＴＣ、Ｔ１ｓの符号化に代表される可変長符号の復号に必要なサイクル数を低減可能ならしめる復号処理装置、プロセッサ、電子機器、復号処理方法、及び復号処理プログラムを提供することにある。
【課題を解決するための手段】
【００１７】
上記目的を達成するため、本発明の復号処理装置は、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行う復号処理装置であって、前記可変長符号ビットストリームの一部を一時保持するとともに、保持するための入出力処理を制御する第１の制御手段と、前記第１の制御手段から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記第１の制御手段に対し前記可変長符号ビットストリームを更新するための制御情報を供給する第２の制御手段と、を含み、前記第２の制御手段が、前記復号用アドレスを生成する処理と、前記第１の制御手段に保持される前記可変長符号ビットストリームを更新する処理とを行うことを特徴としている。【００１８】
本発明のプロセッサは、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行う復号処理装置を搭載したパイプライン処理を実行可能なプロセッサであって、プロセッサパイプライン処理におけるレジスタステージにおいて、前記可変長符号ビットストリームの一部を一時保持するとともに、保持するための入出力処理を制御する第１の制御手段と、前記プロセッサパイプライン処理における実行ステージにおいて、前記第１の制御手段から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記第１の制御手段に対し前記可変長符号ビットストリームを更新する制御情報を生成する第２の制御手段と、を含み、前記第２の制御手段が、前記復号用アドレスを生成する処理と、前記第１の制御手段の前記可変長符号ビットストリームを更新する処理とを行うことを特徴としている。【００１９】
本発明の復号処理方法は、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行う復号処理方法であって、前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持するための入出力処理を行う第１の制御をし、続いて、前記ビットストリーム一時保持部から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記ビットストリーム一時保持部に対し前記可変長符号ビットストリームを更新するための制御情報を供給する第２の制御をし、前記第２の制御をする際に、前記復号用アドレスを生成する処理と、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する処理とを行うことを特徴としている。【００２０】
本発明の復号処理プログラムは、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行うコンピュータが諸機能を実現可能な復号処理プログラムであって、前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持するための入出力処理を行う第１の制御機能と、前記ビットストリーム一時保持部に保持された前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する制御情報を生成する第２の制御機能と、を含む機能を前記コンピュータに実現させ、前記第２の制御機能では、前記復号用アドレスを生成する処理と、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する処理とを行う機能を前記コンピュータに実現させることを特徴としている。
【発明の効果】
【００２１】
本発明によれば、プリフィックスとサフィックスとに基づいた復号用アドレスの生成処理と、可変長符号ビットストリームの更新処理とを行うことにより、次の復号に備えることができ、可変長符号の復号に必要なサイクル数を低減できる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施形態の一例について、図面を参照して具体的に説明する。
〔第１の実施の形態〕
（プロセッサの全体構成）
先ず、本実施形態の係る復号処理装置を備えたプロセッサの具体的構成について、全体構成から説明し、続いて各部の詳細構成について説明することとする。図１は、本発明における第１実施形態に係る復号処理装置を備えたプロセッサの全体の概略構成の一例を示すブロック図である。【００２３】
図１に示す本実施形態のプロセッサシステム１は、メモリ１０と、メモリ１０とバスＢｕｓを介して接続されたプロセッサ２０とを有する。【００２４】
本実施形態におけるプロセッサ２０は、図４７に示すプロセッサから処理装置１０３２に代えて、ビット格納器５２、制御情報・ローインデックス生成器５３、復号用アドレス生成器５４を有する復号処理装置５０（可変長符号復号装置）を備えている。【００２５】
復号処理装置５０は、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号するものである。
この復号処理装置５０は、プロセッサパイプライン処理におけるＲＥＧステージにおいてビットストリームを格納し、このビットストリームを読み進める機能を持つビット格納器５２と、プロセッサパイプライン処理におけるＥＸＥステージにてローインデックス及びビット格納器５２がバッファを制御するための情報を生成する制御情報・ローインデックス生成器５３と、制御情報・ローインデックス生成器５３から情報を受け取って、アドレスを生成する復号用アドレス生成器５４と、を含む構成としている。【００２６】
プロセッサ２０は、復号処理装置５０を搭載してパイプライン処理を実行可能なものであり、この構成では５段のパイプラインを有し、命令をＩＦユニット２１に取り込むＩＦステージ、この命令をデコードし、コアレジスタ（Ｃｏｒｅ  Ｒｅｇ）２２からデータを取り出すＲＥＧステージ、数値演算ユニット（ＡＬＵ）２３によるＥＸＥステージ、バス（ＢＵＳ）を介してメモリ１０との間でデータを入出力するＭＥＭステージ、コアレジスタ（Ｃｏｒｅ  Ｒｅｇ）２２にデータを書き戻すＷＢステージでの処理をそれぞれ実行する。【００２７】
ここで、前記ＩＦステージは、Ｉｎｓｔｒｕｃｔｉｏｎ  Ｆｅｔｃｈステージ（インストラクションフェッチステージ）の略称であり、前記ＩＦステージでは、ＩＦユニット（命令メモリ）２１が、メモリ１０から命令を取り込む処理を行う。
前記ＲＥＧステージは、Ｒｅｇｉｓｔｅｒステージ（レジスタステージ）の略称であり、前記ＲＥＧステージでは、数値演算ユニット（ＡＬＵ）２３が、コアレジスタ（Ｃｏｒｅ  Ｒｅｇ）２２からデータを取り出す処理を行う。
前記ＥＸＥステージは、Ｅｘｅｃｕｔｉｏｎステージ（実行ステージ）の略称であり、前記ＥＸＥステージでは、数値演算ユニット（ＡＬＵ）２３が演算処理を行う。
前記ＭＥＭステージは、Ｍｅｍｏｒｙステージ（メモリステージ）の略称であり、前記ＭＥＭステージでは、Ｌｏａｄ／Ｓｔｏｒｅ  Ｕｎｉｔ２４が、バス（ＢＵＳ）を介してメモリ１０との間でデータを入出力する処理を行う。
前記ＷＢステージは、Ｗｒｉｔｅ  Ｂａｃｋステージ（ライトバックステージ）の略称であり、前記ＷＢステージでは、コアレジスタ（Ｃｏｒｅ  Ｒｅｇ）２２がデータを格納する処理を行う。
以上の各ステージに命令、及びデータを順次転送して、数値演算ユニット（ＡＬＵ）２３による処理が実行される。【００２８】
さらに、プロセッサ２０は、各ステージの境界毎にプロセッサパイプラインレジスタ３１Ａ、３１Ｂ、３１Ｃ、３１Ｄをそれぞれ有する。【００２９】
（ビット格納器の詳細構成）
図２を用いて、図１に示すビット格納器５２について詳細を説明する。
ビット格納器５２は、ビットバッファコントローラ６１と、ビットバッファコントローラ６１により制御されるビットバッファ６２とを有している。【００３０】
ビットバッファコントローラ６１は、ＩＦステージから受け渡される入力信号ＩＮＳＴ＿ＣＮＴＬにより動作する。
ＩＮＳＴ＿ＣＮＴＬがビットバッファ６２の初期化を示す命令である場合、ビットバッファコントローラ６１は、前記命令内に示されたアドレスを用いて、メモリ１０からデータを読み込み、その読み込んだデータをビットバッファ６２に格納する。【００３１】
さらに、ビットバッファコントローラ６１は、メモリ１０から読んだデータ分だけ命令内で示されたアドレスを進め、そのアドレスまで読み進めたビットストリーム（データ）をビットバッファ６２に格納する。
ＩＮＳＴ＿ＣＮＴＬが可変長符号の復号処理を行う命令である場合、ビットバッファコントローラ６１は、ビットバッファ６２から読み出したデータＲＥＧ＿ＤＡＴＡを出力すると同時に、そのデータＲＥＧ＿ＤＡＴＡに出力ビット幅ＢＩＴ＿ＷＩＤＴＨを付加して出力する。【００３２】
また、ビットバッファコントローラ６１は、制御情報・ローインデックス生成器５３内のテーブルを選択するＳＥＬ＿ＴＡＢ信号を出力する。この出力ＳＥＬ＿ＴＡＢには、ＩＮＳＴ＿ＣＮＴＬの復号処理命令にて指定されたレジスタから読み出された値が用いられる。【００３３】
ビットバッファコントローラ６１は、ビットバッファ６２を更新する命令ＩＮＳＴ＿ＵＰＤを受け取ると、ＩＮＳＴ＿ＵＰＤにて指定されたビット数だけ、ビットバッファ６２内に格納されているビットストリームのデータをシフトさせることにより、ビットバッファ６２内に格納されるビットストリームのデータを更新する。【００３４】
ビットバッファコントローラ６１がビットバッファ６２からデータを読み出す際、ビットバッファコントローラ６１が、ビットバッファ６２に格納されたデータのビット数が少ないと判断した場合、ビットバッファコントローラ６１は、前記少ないと判断したビット数のデータをビットバッファ６２に補充することにより、ビットの補充処理を行う。
ここで、ビット数が少ないと判断する場合とは、ビットバッファ６２に書き込むデータのビット数が読み出すデータのビット数より少ない場合をいう。その判断条件は、特定期間におけるビットバッファ６２のデータの格納ビット数が、ビットバッファ６２の格納可能容量の例えば３分の１以下にすることが好ましい。
より具体的には、例えば９６ビット等のビットバッファに対して例えば３２ビット以下等となる場合にビット補充を行う。
ビットバッファコントローラ６１がビット補充処理を行うことにより、ビットバッファ６２からのデータ（可変長ビットストリーム）の読み出し処理が停止することを防止し、復号処理における高速化に寄与できる。
ビット補充処理を行う際、ビットバッファコントローラ６１は初期化を行う命令を実行した際に保持したアドレスを用いて命令ＭＥＭ＿ＬＯＡＤを発行し、メモリ１０から新しいビットデータを取得する。メモリ１０から読み出されたビットデータは、図２に示すＭＥＭ＿ＳＴとしてビットバッファ６２に入力して、そのビットバッファ６２に格納される。【００３５】
（制御情報・ローインデックス生成器の詳細構成）
図３に、図１の制御情報・ローインデックス生成器５３の詳細な構成を示す。
制御情報・ローインデックス生成器５３は図３に示すように、４段のパイプライン構成となっており、ビットバッファ６２から読み出したデータＲＥＧ＿ＤＡＴＡのプリフィックス長を計数するプリフィックス計数器７１と、前記計数したプリフィックス長から後述のテーブルを参照するためのアドレスを生成するプリフィックスアドレス生成器７２と、ローインデックスを格納した複数のテーブルからなるローインデックステーブル（第１テーブル）群７３と、サフィックス長を格納した複数のテーブルからなるサフィックス長テーブル（第２テーブル）群７４と、ローインデックステーブル群７３のうちの選択されたテーブルからプリフィックスアドレスに基づいて対応するローインデックスを取得する取得部７７と、サフィックス長テーブル群７４のうちの選択されたテーブルからプリフィックスアドレスに基づいて対応するサフィックス長を取得する取得部７８と、プリフィックス長と取得部７８にて取得されたサフィックス長を加算する加算器７６と、プリフィックス長とサフィックス長とビットバッファ６２から読み出したデータＲＥＧ＿ＤＡＴＡと、入力したＢＩＴ＿ＷＩＤＴＨから制御情報の一例である図２に示すビットバッファ６２を更新する命令を生成する更新命令生成器７５とを有している。なお、ローインデックステーブル（第１テーブル）群７３とサフィックス長テーブル（第２テーブル）群７４とは記憶部に記憶されており、前記取得部７７と７８は、前記記憶部にそれぞれアクセスすることにより、前記ローインデックステーブル（第１テーブル）群７３からの前記ローインデックスと前記サフィックス長テーブル（第２テーブル）群７４からの前記サフィックス長をそれぞれ取得する。制御情報・ローインデックス生成器５３は、制御情報とローインデックスとを生成する。【００３６】
さらに、制御情報・ローインデックス生成器５３は、各パイプラインステージの境界毎にパイプラインレジスタ８１Ａ、８１Ｂ、８１Ｃをそれぞれ有する。【００３７】
図３の装置の動作について説明する。
制御情報・ローインデックス生成器５３において、１段目のパイプラインステージにおいて、ビットバッファ６２から読み出されたデータＲＥＧ＿ＤＡＴＡがプリフィックス計数器７１に入力すると、プリフィックス計数器７１は、前記ＲＥＧ＿ＤＡＴＡのプリフィックス長を計数する。プリフィックス計数器７１は、前記計数したＲＥＧ＿ＤＡＴＡのプリフィックス長をパイプラインレジスタ８１Ａに出力する。【００３８】
２段目のパイプラインステージにおいて、制御情報・ローインデックス生成器５３は次の動作を行う。すなわち、計数したプリフィックス長がパイプラインレジスタ８１Ａを介してプリフィックスアドレス生成器７２に入力すると、プリフィックス生成器７２は、前記計数されたプリフックス長に基づいて、ローインデックステーブル群７３及びサフィックス長テーブル群７４を参照するアドレスを計算する。プリフィックス生成器７２は、前記アドレスをパイプラインレジスタ８１Ｂに出力する。【００３９】
３段目のパイプラインステージにおいて、制御情報・ローインデックス生成器５３は次の動作を行う。すなわち、前記計算されたアドレスの情報がパイプラインレジスタ８１Ｂを介して取得部７７と取得部７８とに入力すると、前記取得部７７は、ビットバッファコントローラ６１からのテーブル選択信号ＳＥＬ＿ＴＡＢと前記アドレスとに基づいて、ローインデックステーブル群７３にアクセスしてローインデックスを得る。同様に、前記取得部７８は、ビットバッファコントローラ６１からのテーブル選択信号ＳＥＬ＿ＴＡＢと前記アドレスとに基づいて、サフィックス長テーブル群７４にアクセスしてサフィックス長を得る。
前記取得部７７は、前記取得したローインデックスをパイプラインレジスタ８１Ｃに通してＲＯＷ＿ＩＮＤＥＸとして出力する。【００４０】
４段目のパイプラインステージにおいて、制御情報・ローインデックス生成器５３は次の動作を行う。すなわち、加算器７６は、前記プリフィックス計数器７１が計数したプリフィックス長と、前記取得部７８が取得したサフィックス長とを得て、前記プリフィックス長と前記サフィックス長とを加算して、復号する符号の符号長ＣＯＤ＿ＷＩＤＴＨを得る。【００４１】
次に、制御情報・ローインデックス生成器５３は次の動作を行う。すなわち、更新命令生成器７５は、前記取得部７８が取得したサフィックス長と、前記プリフィックス計数器７１が計数したプリフィックス長と、前記ビットバッファ６２から読み出されたデータＲＥＧ＿ＤＡＴＡと、前記ビットバッファコントローラ６１から出力された出力ビット幅ＢＩＴ＿ＷＩＤＴＨとを得て、これらの情報に基づいて、図２のビットバッファ６２を更新する命令ＩＮＳＴ＿ＵＰＤを生成する。【００４２】
ローインデックステーブル群７３の内容は、命令ＵＰＤ＿ＲＯＷにより更新される。命令ＵＰＤ＿ＲＯＷが実行されると、ＲＥＧステージにおいて、コアレジスタ（Ｃｏｒｅ  Ｒｅｇ）の中から命令内で指定したレジスタのデータが読み出され、テーブルを更新する内容と、更新するテーブル、及び更新する位置を示すアドレスのデータが得られる。【００４３】
続くＥＸＥステージにおいて命令ＵＰＤ＿ＲＯＷに基づいて、ＲＥＧステージで読み出したデータを用いてローインデックステーブルを更新する。【００４４】
また、サフィックス長テーブル群７４は、命令ＵＰＤ＿ＳＵＦに基づいて、前記ローインデックステーブル群７３と同様の方法で更新される。【００４５】
（復号用アドレス生成器の詳細構成）
図４に、図１の復号用アドレス生成器５４の詳細を示す。
図４に示す復号用アドレス生成器５４は、ＲＥＧ＿ＤＡＴＡ、ＣＯＤ＿ＷＩＤＴＨ、ＢＩＴ＿ＷＩＤＴＨを入力として、ＲＥＧ＿ＤＡＴＡのビットを調整してコラムインデックスを生成するビット調整・コラムインデックス生成器９１と、生成されたコラムインデックスと入力したＲＯＷ＿ＩＮＤＥＸを加算する加算器９２とから構成され、復号用アドレスＡＤＤＲＥＳＳを生成して出力する。【００４６】
ここで、ビット調整・コラムインデックス生成器９１は、図５のフローチャートに記載された処理を行う。
ビット調整・コラムインデックス生成器９１は、まず図５のステップＳ１０１において、ＣＯＤ＿ＷＩＤＴＨ（プリフィックス長とサフィックス長とを加算したもの）とＢＩＴ＿ＷＩＤＴＨ（ビットバッファから出力される可変長符号ビットストリームのビット数）の差分を求める（差分算出ステップないしは差分算出機能）。
ここでは結果をＸとする。【００４７】
次に、ビット調整・コラムインデックス生成器９１は、ステップＳ１０２において、ＲＥＧ＿ＤＡＴＡをＸだけ右シフトする（プリフィックス及びサフィックスデータ抽出ステップないしはプリフィックス及びサフィックスデータ抽出機能）。
ここで、結果をＳＨ＿ＤＡＴＡとする。これにより、ビット調整を行うことができる。【００４８】
最後に、ビット調整・コラムインデックス生成器９１は、ステップＳ１０３において、ＳＨ＿ＤＡＴＡからコラムインデックスＣＯＬ＿ＩＮＤＥＸを求めて出力する（コラムインデックス算出ステップないしはコラムインデックス算出機能）。
ビット調整・コラムインデックス生成器９１は、ビット調整を行い、これに加えて、ビット調整・コラムインデックス生成器９１は、コラムインデックスを生成する。【００４９】
ここで、本実施の形態のビット格納器５２は、「第１の制御手段」の一例ということもできる。さらに、本実施の形態の制御情報・ローインデックス生成器５３と復号用アドレス生成器５４と生成器用パイプラインレジスタ５５とにより、「第２の制御手段５１」の一例を構成することもできる。【００５０】
また、本実施の形態のビットバッファ６２は、「ビットストリーム一時保持部」の一例ということもできる。さらに、本実施の形態のビットバッファコントローラ６１は、「ビット制御部」の一例ということもできる。
さらに、本実施の形態の制御情報・ローインデックス生成器５３は、「第１の生成制御部」の一例ということもできる。また、本実施の形態の復号用アドレス生成器５４は、「第２の生成制御部」の一例ということもできる。【００５１】
さらにまた、本実施の形態の取得部７７及び取得部７８により、「テーブル情報取得部」の一例を構成することもできる。さらに、本実施の形態の更新命令生成器７５は、「更新命令生成部」の一例ということもできる。また、本実施の形態のプリフィックス計数器７１は、「プリフィックス計数部」の一例ということもできる。さらに、本実施の形態のプリフィックスアドレス生成器７２は、「プリフィックスアドレス計算部」の一例ということもできる。【００５２】
さらに、本実施の形態のビット調整・コラムインデックス生成器９１は、「コラムインデックス生成部」の一例ということもできる。また、本実施の形態の加算器９２は、「加算部」の一例ということもできる。【００５３】
この「第１の制御手段」は、前記可変長符号ビットストリームの一部を一時保持するとともに、保持するための入出力処理を制御することができる。【００５４】
また、「第２の制御手段」は、前記プロセッサパイプライン処理における実行ステージにおいて、前記第１の制御手段から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記第１の制御手段に対し前記可変長符号ビットストリームを更新するための制御情報を供給することができる。この場合、前記第２の制御手段が、前記復号用アドレスを生成する処理と、前記第１の制御手段に保持される前記可変長符号ビットストリームを更新する処理とを行うことができる。【００５５】
さらに、前記第２の制御手段は、前記復号用アドレスを生成する処理と、前記第１の制御手段に保持される前記可変長符号ビットストリームを更新する処理とを同時に行うことが好ましい。
その理由は、各処理を同時に行うことにより、各処理を逐次的に行う場合に比してサイクル数が低減し、処理速度の向上が図れるからである。
ここで、複数の処理を「同時に行う」とは、複数の処理を並列的に行う場合を含む。さらに、複数の処理を「同時に行う」場合には、コンピュータの処理ライクに「擬似的に並行して行う」場合を含むことができる。
また、複数の処理を同時に行う場合に限らず、複数の処理が同時にスタートし、各処理終了のタイミングがそれぞれ異なるようしてもよい。
さらには、各処理の各スタートのタイミングがそれぞれ異なり、各処理の各終了のタイミングがそれぞれ異なる場合であってもよい。
さらにまた、各処理は逐次実行であってもよい。
以降、本明細書における「同時に行う」ことが可能な制御では、いま述べた種々の形態の制御手法を包含することもできるものとする。【００５６】
このようにして、先ず、プロセッサのビット格納器５２が前記可変長符号ビットストリームの一部を保持する処理を行う。【００５７】
そして、プロセッサの制御情報・ローインデックス生成器５３（第１の生成制御部）が、前記プロセッサパイプライン処理における実行ステージにおいて、前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを、ローインデックステーブルを参照することにより生成するとともに、プリフィックス長に対応したサフィックス長をサフィックス長テーブルを参照することにより生成する。
さらに、プロセッサの制御情報・ローインデックス生成器５３が、前記プロセッサパイプライン処理における実行ステージにおいて、これらを生成した後に前記制御情報の一例であるビット格納器５２内の可変長符号ビットストリームを更新する更新命令を生成する。【００５８】
次に、プロセッサの復号用アドレス生成器５４（第２の生成制御部）が、前記プロセッサパイプライン処理における実行ステージにおいて、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する。【００５９】
ここで、前記制御情報・ローインデックス生成器５３は、前記ローインデックスと前記サフィックス長の生成後に、前記第２の生成制御部における復号用アドレスを生成する処理と、前記第１の制御手段における前記可変長符号ビットストリームを更新する処理とを同時に（単位クロック期間に並行して）実行させることができる。【００６０】
また、前記制御情報・ローインデックス生成器５３内では、前記プリフィックス長に応じたプリフィックスアドレスとローインデックスとを格納した第１テーブル（ローインデックステーブル）と、前記プリフィックス長に応じたプリフィックスアドレスとサフィックス長とを格納した第２テーブル（サフィックス長テーブル）と、を有することができる。【００６１】
この場合、前記制御情報・ローインデックス生成器５３内ではプリフィックス計数器７１が、プロセッサパイプライン処理における実行ステージ内であって、インデックス生成パイプライン処理における第１ステージにて、前記第１の制御手段から読み出された前記可変長符号ビットストリームの前記プリフィックス長を計数する。【００６２】
そして、前記制御情報・ローインデックス生成器５３内ではプリフィックスアドレス生成器７２が、前記インデックス生成パイプライン処理における第２ステージにて、前記プリフィックス計数部にて計数した前記プリフィックス長から前記第１テーブル、前記第２テーブルを参照するためのプリフィックスアドレスを計算する。【００６３】
さらに、前記制御情報・ローインデックス生成器５３内では取得部７７、７８が、前記インデックス生成パイプライン処理における第３ステージにて、前記プリフィックスアドレス計算部にて求めた前記プリフィックスアドレスを用いて、前記第１テーブルと前記第２テーブルとを各々参照し、対応する前記ローインデックスと前記サフィックス長を取得する。【００６４】
また、前記制御情報・ローインデックス生成器５３内では更新命令生成器７５が前記インデックス生成パイプライン処理における第４ステージにて、前記取得部７７、７８にて取得された前記サフィックス長と前記プリフィックス計数部にて計数した前記プリフィックス長とビットバッファ６２から読み出したデータＲＥＧ＿ＤＡＴＡと前記ビットバッファコントローラ６１から出力された出力ビット幅ＢＩＴ＿ＷＩＤＴＨに基づいて、前記更新する制御情報である更新命令を生成する。【００６５】
さらに、復号用アドレス生成器５４のビット調整・コラムインデックス生成器９１は、前記サフィックス長に基づいて前記コラムインデックスを生成し、加算器９２は、前記コラムインデックスと前記ローインデックスとを加算して復号用アドレスとする。【００６６】
ここで、前記「第１の制御手段」は、前記可変長符号ビットストリームを一時保持するビットストリーム一時保持部と、前記ビットストリーム一時保持部における前記可変長符号ビットストリームを入出力制御するビット制御部と、を含むことができる。
この場合、前記ビット制御部が、前記ビットストリーム一時保持部にて保持した前記可変長符号ビットストリームから予め決められたビット数のビットデータを読み出し、読み出し後の残りビット数が少ない場合に、新たなデータを保持した前記可変長符号ビットストリームの一部の末尾に連接して格納するビット補充機能と、前記更新する制御情報である更新命令に基づいて保持した前記可変長符号ビットストリームを更新する処理を行う更新処理機能と、を有することができる。【００６７】
さらに、前記第１テーブル及び前記第２テーブルは、コンテキスト適応型可変長符号化方式における復号用ＮｕｍＶＬＣテーブルの種類に応じた複数のテーブルを各々有することができる。
この場合、前記第１の制御手段が、前記種類を選択するテーブル選択制御情報を生成して前記第１の生成制御部（制御情報・ローインデックス生成器）に対して供給することができる。また、前記テーブル情報取得部が、前記テーブル選択制御情報に基づいて、前記第１のテーブルにおける前記複数のテーブルの中からいずれか一つを選択するとともに、前記第２のテーブルにおける前記複数のテーブルの中からいずれか一つを選択することができる。【００６８】
以上のように本実施の形態によれば、プリフィックスに基づいた復号用アドレスの生成処理と、ビット格納制御手段の更新処理とを同時に行え、次の復号に備えることができ、可変長符号の復号に必要なサイクル数を低減できる。【００６９】
より具体的には、第１の効果は、プリフィックス長、サフィックス長、ビットバッファ６２から読み出したデータＲＥＧ＿ＤＡＴＡに基づいたビットバッファの更新を復号用アドレスの生成と同時に行え、次の復号に備えることができることである。【００７０】
その理由は、本発明の可変長復号装置内に、プリフィックス長とサフィックス長とビットバッファ６２から読み出したデータＲＥＧ＿ＤＡＴＡからビットバッファを更新する命令を生成する更新命令装置を設けたことにより、プリフィックス長、サフィックス長が判明した後、ビットバッファの更新を復号用アドレス生成と同時に行うことができるためである。【００７１】
第２の効果は、可変長符号の復号に必要なサイクル数を低減でき、復号処理速度の高速化を図ることができる。【００７２】
その理由は、ビットストリームのビットパターンを自動で調べてプリフィックス長、サフィックス、復号用アドレスを求める回路を設けたことにより、データの読み出しのビットパターンの調査に必要なサイクル数が低減されるからである。
すなわち、ビットストリーム内のビットパターンによって、アンパッキング命令で指定するビット幅を自動的に決定し、符号コードを復号するためのテーブル参照で使用するアドレスを生成できる。【００７３】
このように、ビットストリームのプリフィックスを計数し、プリフィックスをキーとしたローインデックステーブル及びサフィックス長テーブルからそれぞれローインデックス、サフィックス長を読み出し、プリフィックス長とサフィックス長とビットバッファ６２から読み出したデータＲＥＧ＿ＤＡＴＡを元にビットストリームからサフィックスを切り出し、コラムインデックスを求め、ローインデックスとコラムインデックスを加算して出力することにより、復号用アドレスを得る。同時に、プリフィックス長とサフィックス長を元に、ビットストリームを格納したビットバッファを更新でき、復号処理速度の高速化を図ることができる。【００７４】
［第２の実施の形態］
次に、本発明にかかる第２の実施の形態について、図６及び図７に基づいて説明する。以下には、前記第１の実施の形態の実質的に同様の構成に関しては説明を省略し、異なる部分についてのみ述べる。図６は、本発明の第２の実施の形態による制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。【００７５】
上述の第１の実施の形態では、制御情報・ローインデックス生成器は、複数のテーブルからなるローインデックステーブル群、サフィックス長テーブル群を有する構成としたが、本実施の形態における制御情報・ローインデックス生成器では、単一のローインデックステーブル及び単一のサフィックス長テーブルを有する構成としている。【００７６】
具体的には、本実施の形態の制御情報・ローインデックス生成器１５３は、図６に示すように、単一のローインデックステーブル１７３と、単一のサフィックス長テーブル１７４と、これらの各テーブルからデータを取得する取得部１７７、１７８とを含む構成としている。
これに伴い、制御情報・ローインデックス生成器１５３では、テーブル選択信号ＳＥＬ＿ＴＡＢは不要となり、前記第１の実施の形態の制御情報・ローインデックス生成器５３からテーブル選択信号ＳＥＬ＿ＴＡＢが削除された構成となっている。【００７７】
図７に、制御情報・ローインデックス生成器に伴って変更されるビット格納器のブロック図を示す。
第２の実施形態によるビット格納器１５２は、第１の実施形態と同様の入出力から、テーブル選択信号ＳＥＬ＿ＴＡＢが削除された構成となっている。すなわち、ビットバッファコントローラ１６１は、テーブル選択信号を出力しない構成となる。  【００７８】
その他の構成およびその他のステップないしは機能並びにその作用効果については、前述した実施の形態の場合と同一となっている。また、上記の説明において、上述した各ステップの動作内容及び各部の構成要素並びにそれらによる各機能をプログラム化し、そのプログラム（ソフトウエアプログラム）をコンピュータに実行させてもよい。【００７９】
［第３の実施の形態］
次に、本発明にかかる第３の実施の形態について、図８乃至図２３に基づいて説明する。ここでは前記第１の実施形態のさらに詳細な具体例を第３の実施形態として説明する。【００８０】
ビット格納器５２を構成するビットバッファ６２は、例えば９６ビット等のレジスタにて構成される。
また、ビット格納器５２における入力ＩＮＳＴ＿ＣＮＴＬは、例えば１６ビットを入力することができるように構成される。【００８１】
図８に示すように、入力ＩＮＳＴ＿ＵＰＤは、６ビット、入力ＭＥＭ＿ＳＴは、３２ビット、出力ＲＥＧ＿ＤＡＴＡは、３２ビット、出力ＳＥＬ＿ＴＡＢは、２ビット、出力ＢＩＴ＿ＷＩＤＴＨは、６ビット、出力ＭＥＭ＿ＬＯＡＤは、４０ビットで構成される。
メモリから読み出されたビットストリームは、ビットバッファ６２の左端がビットストリームの先頭となるように格納される。
ここで、出力ＳＥＬ＿ＴＡＢに関して、ＳＥＬ＿ＴＡＢの値、０、１、２はそれぞれローインデックス及びサフィックス長テーブルの０番目、１番目、２番目のテーブルを選択するものとする。【００８２】
（ＩＮＳＴ＿ＵＰＤについて）
ＩＮＳＴ＿ＵＰＤ（ビットバッファの更新命令）の本実施の形態における内容を図１１に記載の例を用いて説明する。
ＩＮＳＴ＿ＵＰＤは、図１１に記載のとおり、先頭１ビットを制御情報として使用し、先頭1ビットを除いた５ビットを更新するビット数データとして使用する。
ビットバッファコントローラは、制御情報が１のときにビットバッファの更新を行い、０のときには何も行わない。
図１１の例では、制御情報が１のため、ビットバッファの更新が行われ、後続のビット数更新データに示されたビット数である７ビット分、ビットバッファが左シフトにより更新される。【００８３】
（ＩＮＳＴ＿ＣＮＴＬについて）
プロセッサからの命令ＩＮＳＴ＿ＣＮＴＬについて本実施の形態における構成例を図１３に示す。
図１２に示されたＤＥＣ＿ＣＯＤＥ命令、図１３に示されたＩＮＩＴＩＡＬＩＺＥ命令は１６ビット幅の命令である。
ＤＥＣ＿ＣＯＤＥ命令（復号開始命令）は、８ビットのオペランドコードＯＰＣＯＤＥ、生成されたアドレスを格納するレジスタ番号を指定する３ビットのＲＥＧＮＵＭ１と、ＳＥＬ＿ＴＡＢに出力する値を格納したレジスタを指定する３ビットのＲＥＧＮＵＭ２と、２ビットの０とから構成される。
この命令は、前記の可変長復号処理を開始する命令であり、この命令によってビットバッファコントローラ６１は、ビットバッファ６２から３２ビットのデータをロードしてＲＥＧ＿ＤＡＴＡに出力し、読み出したビット数すなわち３２をＢＩＴ＿ＷＩＤＴＨに出力し、さらに、ＲＥＧＮＵＭ２で指定されたレジスタから読み出した値をＳＥＬ＿ＴＡＢに出力する。
また、命令実行の結果について、ＲＥＧＮＵＭ１で指定したレジスタに結果のアドレスが格納されて返される。【００８４】
ＩＮＩＴＩＡＬＩＺＥ命令（初期化命令）は、８ビットのオペランドコードOPCODE、メモリアドレスが格納されたレジスタ番号を指定する３ビットのＲＥＧＮＵＭと５ビットの０から構成され、復号処理装置を初期化する操作を行う。
ＩＮＩＴＩＡＬＩＺＥ命令が発行されると、メモリのＲＥＧＮＵＭで指定されたレジスタが格納するアドレスからデータを９６ビット分ロードし、ビットバッファ６２にデータを格納する。【００８５】
また、ＲＥＧＮＵＭで指定したレジスタが持つアドレスを９６ビット分だけ進めたアドレスを、ビットバッファコントローラ６１が保持する。【００８６】
（ビット補充処理について）
また、ビットバッファ６２の本実施の形態におけるビット補充方法について説明する。
本実施の形態においては、ＤＥＣ＿ＣＯＤＥ命令を受け取り、ビットバッファ６２から３２ビットのデータを読み出した後、ビットバッファ６２に格納されているビット数から３２ビットを引いたビット数が３２ビットを下回った場合に、ビットバッファコントローラ６１はビット補充処理を行う。【００８７】
ビット補充処理は、ビットバッファコントローラ６１が保持するアドレスを用いてビット補充命令ＭＥＭ＿ＬＯＡＤを発することにより行う。【００８８】
図１４にＭＥＭ＿ＬＯＡＤ命令（ビット補充命令）の概要を示す。
ＭＥＭ＿ＬＯＡＤは、ロード命令であることを示す８ビットのオペランドコードＯＰＣＯＤＥと、ビットバッファ６２が保持するアドレスを示すＡＤＤＲＥＳＳフィールドを持つ。
また、メモリから読み出した３２ビットのデータは入力ＭＥＭ＿ＳＴを通じてビットバッファコントローラに受け渡される。【００８９】
ビットバッファコントローラ６１は、このＭＥＭ＿ＬＯＡＤ命令を用いて３２ビットのデータをロードし、ロードした分だけビットバッファコントローラ６１が保持するアドレスを進める。
さらに、ビットバッファコントローラ６１は、入力ＭＥＭ＿ＳＴから得たデータを、ビットバッファ６２が保持するデータの末尾に追加する。
従って、例えば図１５に示すＢ１、Ｂ２、Ｂ３、Ｂ４のように、ビット補充が行われる。【００９０】
（制御情報・ローインデックス生成器について）
制御情報・ローインデックス生成器５３は、図９に示すように、プリフィックス計数器７１の出力は４ビット、プリフィックスアドレス生成器７２の出力は３２ビットである。
ローインデックステーブル群７３は、テーブル０、テーブル１、テーブル２の３つのテーブルを持ち、出力は例えば３２ビットである。
サフィックス長テーブル群７４は、テーブル０、テーブル１、テーブル２の３つのテーブルをもち、出力は例えば３ビットである。
制御情報・ローインデックス生成器５３の出力ＣＯＤ＿ＷＩＤＴＨは、６ビットである。【００９１】
プリフィックス計数器７１の概要について図１６を用いて説明する。図１６に示したコードは、ビットバッファ６２から読み出され、プリフィックス計数器に入力されたデータである。
今、図１６に示したコードはプリフィックスとして５個の連続する０を持っている。
本実施の形態におけるプリフィックス計数器７１は、この連続する０の数を数え、プリフィックス長を５として出力する。
ここで、本実施の形態においては連続する０をプリフィックスとしたが、連続する１をプリフィックスとしても差し支えない。【００９２】
ローインデックステーブル群７３とサフィックス長テーブル群７４内のテーブルについて、本実施の形態における構成方法を図１７および図１８に示したテーブル０の構成を例として説明する。【００９３】
図１７のローインデックステーブル０と図１８のサフィックス長テーブル０は、図４０のテーブルに基づいて構成されており、ローインデックステーブルでは、０から１４のプリフィックス長とローインデックスが、サフィックス長テーブルでは、０から１４のプリフィックス長とサフィックス長が対応付けられている。【００９４】
ここで、本実施の形態におけるローインデックステーブル郡７３及びサフィックス長テーブル郡７４のテーブル１、テーブル２については、Ｈ．２６４のＮｕｍＶＬＣ１テーブル（例えば図４３、図４４）、ＮｕｍＶＬＣ２テーブル（例えば図４５、図４６）から、ＮｕｍＶＬＣ０テーブルと同様の方法で構築されるものとする。
本実施の形態においては、これら３つのテーブルを必要に応じて、適宜切り替えて使用するものとする。これは、Ｈ.２６４のＣＡＶＬＣがＮｕｍＶＬＣテーブルを適宜選択して復号を進めるためである。【００９５】
また、ローインデックステーブル群７３及びサフィックス長テーブル群７３を更新するＵＰＤ＿ＲＯＷ命令（ローインデックステーブルの更新命令）、ＵＰＤ＿ＳＵＦ命令（サフィックス長テーブルの更新命令）について図１９及び図２０を用いて説明する。
ＵＰＤ＿ＲＯＷ命令及びＵＰＤ＿ＳＵＦ命令は、それぞれ、３２ビットの命令であり、それぞれ、オペランドを示す８ビットのＯＰＣＯＤＥとテーブルの更新する位置を示すアドレスを格納したレジスタを指定するＲＥＧＮＵＭ１、更新する内容を格納したレジスタを示すＲＥＧＮＵＭ２、テーブルを選択する内容を格納したレジスタを示すＲＥＧＮＵＭ３フィールドを有する。【００９６】
また、テーブルを参照するアドレスを生成するプリフィックスアドレス生成器７２について、アドレスの生成方法を説明する。
図１７及び図１８に示したとおり、テーブルのアドレスはプリフィックス長に対応しており、プリフィックスが１増加すれば、アドレスは４増加するようになっている。
よって、本実施の形態のプリフィックスアドレス生成器は入力したプリフィックス長を２ビット左シフトすることによって、アドレスを生成する。【００９７】
（復号用アドレス生成器について）
復号用アドレス生成器５４の本実施の形態における構成を述べる。
ビット調整・コラムインデックス生成器９１は、図１０に示すように、３２ビットの出力であり、出力されたコラムインデックスは入力ＲＯＷ＿ＩＮＤＥＸと加算され、３２ビットの復号用アドレスとして出力される。【００９８】
次に、本実施の形態におけるビット調整・コラムインデックス生成器９１について図５を用いて動作を説明する。
まず、図５のステップＳ１０１において、ビット調整・コラムインデックス生成器９１は、入力されたＢＩＴ＿ＷＩＤＴＨとＣＯＤ＿ＷＩＤＴＨの差分をとり、結果をXとする（差分算出ステップないしは差分算出機能）。【００９９】
続く、ステップＳ１０２において、ビット調整・コラムインデックス生成器９１は、入力されたＲＥＧ＿ＤＡＴＡをＸだけ右シフトし、結果をＳＨ＿ＤＡＴＡとする（プリフィックス及びサフィックスデータ抽出ステップないしはプリフィックス及びサフィックスデータ抽出機能）。【０１００】
最後に、ステップＳ１０３においてビット調整・コラムインデックス生成器９１は、コラムインデックスＣＯＬ＿ＩＮＤＥＸを計算する。ここで、本実施の形態ではＳＨ＿ＤＡＴＡを、２ビット左シフトすることにより３２ビットのアドレスに変換する。
ビット調整・コラムインデックス生成器９１は、このアドレスをコラムインデックスＣＯＬ＿ＩＮＤＥＸとして出力する（コラムインデックス算出ステップないしはコラムインデックス算出機能）。【０１０１】
（プログラム例について）
本実施の形態における復号処理装置のプログラム例を図２１及び図２２に示す。図２１は、ＣＡＶＬＣのＴＣ、Ｔ１ｓを復号するための処理手順の一例を示すフローチャートである。図２２は、ＣＡＶＬＣのＴＣ、Ｔ１ｓを復号するアセンブラコードの例である。【０１０２】
図２１に示すように、先ず、プロセッサは、ＮｕｍＶＬＣの種類に応じた複数種のローインデックステーブルの中からいずれか一つのローインデックステーブルを選択し、選択されたローインデックステーブルを更新する処理を行う（ステップＳ２１０）。
続いて、プロセッサは、ＮｕｍＶＬＣの種類に応じた複数種のサフィックス長テーブルの中からいずれか一つのサフィックス長テーブルを選択し、選択されたサフィックス長テーブルを更新する処理を行う（ステップＳ２２０）。  
さらに、プロセッサは、可変長符号復号装置（復号処理装置）を初期化する処理を行う（ステップＳ２３０）。【０１０３】
次に、プロセッサは、全ての４×４ブロックの復号処理が完了したか否かを判定する処理を行う（ステップＳ２４０）。
プロセッサは、この判定処理の結果が「Ｙｅｓ」の場合には、処理を終了する。一方、プロセッサは、この判定処理の結果が「Ｎｏ」の場合には、次のステップＳ２５０に処理を進める。
すなわち、プロセッサは、１つの４×４ブロックにおけるＴＣ、Ｔ１ｓを復号する処理を行う（ステップＳ２５０）。
そして、プロセッサは、１つの４×４ブロックにおけるその他の復号処理を行う（ステップＳ２６０）。プロセッサは、この１つの４×４ブロックにおける復号処理が完了すると、ステップＳ２４０に戻り、他の４×４ブロックにおける復号処理を行うために、ステップＳ２４０〜ステップＳ２６０を繰り返す。【０１０４】
以下、以上のべた図２１に示すフローチャートのより具体的な処理手順について、図２２に示すプログラムコード例を参照して説明する。
まず図２２で使用する命令について説明する。
プログラム１行目の「Ｌｏａｄ  ｄｐ３＋＋，ｒ０；」は、プロセッサが、アドレスが格納されたレジスタｄｐ３を利用してメモリにアクセスしてデータを取得し、取得したデータをレジスタｒ０に格納し、さらに、レジスタｄｐ３に格納されたアドレスを４バイト分進める命令である。
また、Ｌｏｏｐ  ｒ３は、プロセッサが、レジスタｒ３に格納された値だけ、Ｌｏｏｐ命令から繰り返し終端までに記述された処理を繰り返す命令である。
なお、繰り返し終端は、命令Ｌｏｏｐ  ｅｎｄで記述される。【０１０５】
本例の前提として、ｒ２には、プロセッサが、テーブルを選択する値を格納する。
レジスタｒ３には、プロセッサが、繰り返しの回数、すなわち、４×４ブロックの数を格納する。
レジスタｄｐ１には、プロセッサが、可変長符号ビットストリームの先頭アドレスを格納する。
レジスタｄｐ３には、プロセッサが、ローインデックステーブルの更新内容を示すメモリ内のデータのアドレスを格納する。
レジスタｄｐ４には、プロセッサが、ローインデックステーブルの更新する位置を示すデータのアドレスを格納する。
レジスタｄｐ５には、プロセッサが、サフィックステーブルの更新内容を示すデータのアドレスを格納する。
レジスタｄｐ６には、プロセッサが、サフィックステーブルの更新する位置を示すデータのアドレスを格納する。【０１０６】
プログラムの内容を説明する。
はじめに、プロセッサがローインデックステーブルの更新を行う（ステップＳ２１０）。更新の第１、２命令、すなわち、図２２のプログラム１、２行目では、プロセッサがローインデックステーブルの内容と、更新する位置を示すアドレスをメモリから読み込む（ステップＳ２１１、Ｓ２１２）。
３行目の命令では、プロセッサがＵＰＤ＿ＲＯＷ命令を用いて、ローインデックスを更新する（ステップＳ２１３）。
４、５行目の命令では、プロセッサが、次のローインデックステーブルの内容と、更新する位置を示すアドレスをメモリから読み込む（ステップＳ２１４、Ｓ２１５）。【０１０７】
プロセッサがこれらの処理を繰り返し、ローインデックステーブルの更新が終わると、次は、プロセッサがサフィックス長テーブルの更新を同様の処理手順で行う（ステップＳ２２０）。
すなわち、プログラム６、７行目では、プロセッサが、サフィックス長テーブルの内容と、更新する位置を示すアドレスをメモリから読み込む（ステップＳ２２１、Ｓ２２２）。
８行目の命令では、プロセッサが、ＵＰＤ＿ＳＵＦ命令を用いて、サフィックス長を更新する（ステップＳ２２３）。
９、１０行目の命令では、プロセッサが、次のサフィックス長テーブルの内容と、更新する位置を示すアドレスをメモリから読み込む（ステップＳ２２４、Ｓ２２５）。  
サフィックステーブルの更新が終わると、プロセッサはＩＮＩＴＩＡＬＩＺＥ命令で復号処理装置を初期化する（ステップＳ２３０）。【０１０８】
初期化後、プロセッサは復号を開始する。
復号処理ではまず、プロセッサが、プログラム１２行目で示されたＬｏｏｐ命令を使って、Ｌｏｏｐ以下の命令をレジスタｒ３に格納された値だけ、すなわち、４×４ブロックの数だけ繰り返すことを宣言する（ステップＳ２４０）。
次の命令では、プロセッサが、可変長符号を復号する命令を実行し、復号用アドレスを計算して結果をレジスタｄｐ２に格納する（ステップＳ２５１）。
さらに、プロセッサが、レジスタｄｐ２に格納されたアドレスを用いてデータをロードし、ＴＣとＴ１ｓをメモリから得て、レジスタｒ０に格納する（ステップＳ２５２）。【０１０９】
その後、プロセッサが、Ｈ．２６４におけるその他復号処理を行って（ステップＳ２６０）、１５行目に示されたＬｏｏｐ  ｅｎｄ命令によって、繰り返し処理を終了する。
このとき、プロセッサが、ｒ３に示す値だけ繰り返し処理が行われていると判断した場合には、プロセッサはＬｏｏｐを抜けて、次の処理に移る。また、プロセッサが、ｒ２に示す値だけ繰り返し処理が行われていないと判断した場合には、プロセッサはＬｏｏｐ先頭に戻って、繰り返して処理を行う。【０１１０】
（動作について）
次に、図２３のタイミングチャートを用いて、ＤＥＣ＿ＣＯＤＥ命令による本発明の可変長符号の復号処理装置の動作を説明する。図２３は、クロック信号に同期して動作する可変長符号の復号処理装置の、各クロックにおける各部の出力を示す。【０１１１】
まず、第１クロック（第１の期間）においては、プロセッサが可変長符号ビットストリームの復号開始命令ＤＥＣ＿ＣＯＤＥを実行する（ステップＳ１１）（復号開始命令実行処理ステップないしは復号開始命令実行処理機能）。【０１１２】
第２クロック（第２の期間）において、ビット格納器５２のビットバッファコントローラ６１は、ＩＦステージから命令ＩＮＳＴ＿ＣＮＴＬを受け取り、ビット読み出し処理を行い、ビットバッファ６２からＲＥＧ＿ＤＡＴＡに出力する（ステップＳ１２）（可変長符号ビットストリーム出力処理ステップないしは可変長符号ビットストリーム出力処理機能）。【０１１３】
第３クロック（第３の期間）においては、制御情報・ローインデックス生成器５３のプリフィックス計数器７１がＲＥＧ＿ＤＡＴＡに含まれるプリフィックスを計数する（ステップＳ１３）（プリフィックス計数ステップないしはプリフィックス計数機能）。【０１１４】
第４クロック（第４の期間）においては、制御情報・ローインデックス生成器５３のプリフィックスアドレス生成器７２が、プリフィックス長を入力として、ローインデックステーブル群７３、サフィックス長テーブル群７４を参照するアドレスを生成する（ステップＳ１４）（プリフィックスアドレス生成ステップないしはプリフィックスアドレス生成機能）。【０１１５】
第５クロック（第５の期間）においては、プリフィックスアドレス生成器７２により計算されたアドレスとテーブルを選択する信号（テーブル選択信号）を入力として、制御情報・ローインデックス生成器５３の取得部７７が選択されたローインデックステーブルを参照し、プリフィックスアドレスに対応するローインデックスを取得する（ローインデックス取得ステップないしはローインデックス取得機能）。
また、同時に、制御情報・ローインデックス生成器５３の取得部７８が選択されたサフィックス長テーブルを参照し、プリフィックスアドレスに対応するサフィックス長を取得する（サフィックス長取得ステップないしはサフィックス長取得機能）。【０１１６】
つまり、制御情報・ローインデックス生成器５３の取得部７７、７８が、ローインデックスとサフィックス長とを同時に（単位クロック期間に並行して）取得する（ステップＳ１５）（テーブル情報取得ステップないしはテーブル情報取得機能）。【０１１７】
第６クロック（第６の期間）においては、制御情報・ローインデックス生成器５３の更新命令生成器７５が、プリフィックス長とサフィックス長とＲＥＧ＿ＤＡＴＡ、及びビットバッファコントローラ６１から出力された出力ビット幅を受け取り、ビットバッファ６２のデータを更新する更新命令を生成する（ステップＳ１６）（ビットバッファの更新命令生成ステップないしはビットバッファの更新命令生成機能）。    【０１１８】
第７クロック（第７の期間）においては、ビットバッファコントローラ６１が、更新命令生成器７５から生成された更新命令を入力としてビットバッファ６２に対する更新処理を行い、ビットバッファ６２のデータが更新される（ビットバッファの更新処理ステップないしはビットバッファの更新処理機能）。
同時に、復号用アドレス生成器５４がコラムインデックスを生成し、生成したコラムインデックスをローインデックスと加算して出力する（ステップＳ１７）（コラムインデックスローインデックス加算ステップ又は復号用アドレス算出ステップ、ないしはコラムインデックスローインデックス加算機能又は復号用アドレス算出機能）。
このように、制御情報・ローインデックス生成器５３により、復号用アドレスを生成する処理と、ビットバッファ６２に保持される可変長符号ビットストリームを更新する処理とを同時に（単位クロック期間に並行して）行うことができる。【０１１９】
第８クロック（第８の期間）において、プロセッサは、復号用アドレス生成器５４が生成した復号用アドレスを入力として復号用テーブルの参照を行い、可変長符号化されたＴＣとＴ１ｓが復号される（ステップＳ１８）（ＴＣ・Ｔ１ｓ復号処理ステップないしはＴＣ・Ｔ１ｓ復号処理機能）。【０１２０】
ここで、以上のステップＳ１３ないしステップＳ１７により、「前記制御情報・復号用アドレス生成制御ステップ」を構成することができる。また、以上のステップＳ１３ないしステップＳ１６により、「前記制御情報・ローインデックス生成ステップ」を構成することができる。さらに、ステップＳ１７により、「復号用アドレス生成（出力）ステップ」を構成することができる。また、ステップＳ１２により、「ビット格納処理ステップ」を構成することができる。【０１２１】
その他の構成およびその他のステップないしは機能並びにその作用効果については、前述した実施の形態の場合と同一となっている。また、上記の説明において、上述した各ステップの動作内容及び各部の構成要素並びにそれらによる各機能をプログラム化し、そのプログラムをコンピュータに実行させてもよい。【０１２２】
［第４の実施の形態］
次に、本発明にかかる第４の実施の形態について、図２４乃至図３０に基づいて説明する。ここでは前記第２の実施形態のさらに詳細な具体例を第４の実施形態として説明する。また、第１の実施の形態と同様の構成の箇所については、説明を省略する。【０１２３】
本実施の形態の制御情報・ローインデックス生成器１５３では、図２４に示すように、ローインデックステーブル１７３は１つのテーブルからなる。同様に、サフィックス長テーブル１７４は１つのテーブルからなる。
この変更により、テーブルを選択する信号ＳＥＬ＿ＴＡＢは不要となる。
また、図２５に示すように、ビット格納器１５２におけるビットバッファコントローラ１６１の出力にもテーブルを選択する信号ＳＥＬ＿ＴＡＢは不要となる。【０１２４】
ここで、本実施の形態において定義されるＤＥＣ＿ＣＯＤＥ命令を図２６に示す。
本実施の形態のＤＥＣ＿ＣＯＤＥ命令では、前記第３の実施の形態におけるＤＥＣ＿ＣＯＤＥ命令の構成からテーブルを選択する信号を含んだレジスタを指定する部分ＲＥＧ＿ＮＵＭ２が消去され、代わりに０値が格納される構成となっている。【０１２５】
さらに、第２の実施の形態において定義されるＵＰＤ＿ＲＯＷ及びＵＰＤ＿ＳＵＦ命令を図２７および図２８に示す。
本実施の形態のＵＰＤ＿ＲＯＷ及びＵＰＤ＿ＳＵＦ命令は、１６ビットの命令であり、８ビットのオペランドＯＰＣＯＤＥと、テーブルの更新する位置を示すアドレスを格納したレジスタを指定するＲＥＧＮＵＭ１と、更新する内容を格納したレジスタを示すＲＥＧＮＵＭ２と、２ビットの０と、から構成される。【０１２６】
（プログラム例）
本実施の形態における復号処理装置のプログラム例を図２９及び図３０に示す。図２９は、ＣＡＶＬＣのＴＣ、Ｔ１ｓを復号するための処理手順の一例を示すフローチャートである。図３０は、ＣＡＶＬＣのＴＣ、Ｔ１ｓを復号するアセンブラコードの例である。
本プログラムと第３の実施の形態で示したプログラムの違いは、複数種のローインデックステーブルの中からいずれか一つのローインデックステーブルを選択する必要がない点である。また、複数種のサフィックス長テーブルの中からいずれか一つのサフィックス長テーブルを選択する必要がない点である。【０１２７】
図２９に示すように、先ず、プロセッサは、ローインデックステーブルを更新する処理を行う（ステップＳ３１０）。
続いて、プロセッサは、サフィックス長テーブルを更新する処理を行う（ステップＳ３２０）。
さらに、プロセッサは、可変長符号復号装置（復号処理装置）を初期化する処理を行う（ステップＳ３３０）。【０１２８】
次に、プロセッサは、全ての４×４ブロックの復号処理が完了したか否かを判定する処理を行う（ステップＳ３４０）。
プロセッサは、この判定処理の結果が「Ｙｅｓ」の場合には、処理を終了する。一方、プロセッサは、この判定処理の結果が「Ｎｏ」の場合には、次のステップＳ３５０に処理を進める。
すなわち、プロセッサは、１つの４×４ブロックにおけるＴＣ、Ｔ１ｓを復号する処理を行う（ステップＳ３５０）。
そして、プロセッサは、１つの４×４ブロックにおけるその他の復号処理を行う（ステップＳ３６０）。プロセッサは、この１つの４×４ブロックにおける復号処理が完了すると、ステップＳ３４０に戻り、他の４×４ブロックにおける復号処理を行うために、ステップＳ３４０〜ステップＳ３６０を繰り返す。【０１２９】
以下、以上のべた図２９に示すフローチャートのより具体的な処理手順について、図３０に示すプログラムコード例を参照して説明する。  
本例では前提として、レジスタｒ３には、プロセッサが、繰り返しの回数、すなわち、４×４ブロックの数を格納する。
レジスタｄｐ１には、プロセッサが、可変長符号ビットストリームの先頭アドレスを格納する。
レジスタｄｐ３には、プロセッサが、ローインデックステーブルの更新内容を示すメモリ内のデータのアドレスを格納する。
レジスタｄｐ４には、プロセッサが、ローインデックステーブルの更新する位置を示すデータのアドレスを格納する。
レジスタｄｐ５には、プロセッサが、サフィックステーブルの更新内容を示すデータのアドレスを格納する。
レジスタｄｐ６には、プロセッサが、サフィックステーブルの更新する位置を示すデータのアドレスを格納する。【０１３０】
本プログラムと第３の実施の形態で示したプログラムの違いについて説明する。
まず、ローインデックステーブル、サフィックス長テーブルを更新するＵＰＤ＿ＲＯＷ、及びＵＰＤ＿ＳＵＦ命令について、命令で指定するレジスタは更新する位置と更新に使用する値を格納したレジスタ２つとなっている（ステップＳ３１３、ステップＳ３２３）。
また、復号命令ＤＥＣ＿ＣＯＤＥについても同様に、第３の実施の形態のＤＥＣ＿ＣＯＤＥ命令からテーブルを選択する信号を除いたものとなっている（ステップＳ３５１）。
他のステップＳ３１１、Ｓ３１２、Ｓ３１４、Ｓ３１５、Ｓ３２１、Ｓ３２２、Ｓ３２４、Ｓ３２５、Ｓ３３０、Ｓ３４０、Ｓ３５２、Ｓ３６０は、前記第３の実施の形態におけるＳ２１１、Ｓ２１２、Ｓ２１４、Ｓ２１５、Ｓ２２１、Ｓ２２２、Ｓ２２４、Ｓ２２５、Ｓ２３０、Ｓ２４０、Ｓ２５２、Ｓ２６０と同様となっている。【０１３１】
その他の構成およびその他のステップないしは機能並びにその作用効果については、前述した実施の形態の場合と同一となっている。また、上記の説明において、上述した各ステップの動作内容及び各部の構成要素並びにそれらによる各機能をプログラム化し、そのプログラムをコンピュータに実行させてもよい。【０１３２】
[その他の各種変形例]
また、本発明にかかる装置及び方法は、そのいくつかの特定の実施の形態に従って説明してきたが、本発明の主旨および範囲から逸脱することなく本発明の本文に記述した実施の形態に対して種々の変形が可能である。【０１３３】
ここで、その他の実施の形態について説明する。
（変形例１）
まず、プリフィックスの計数について、第３、第４実施の形態では制御情報・ローインデックス生成器内にプリフィックス計数器を設け、それを用いて計数を行っていたが、ビットバッファコントローラがこれを行うこともできる。  【０１３４】
すなわち、図３１に示すように、ビット格納器２５２のビットバッファコントローラ２６１は、ビット補充機能、更新処理機能に加え、プリフィックス計数機能（プリフィックス計数部）を有している。
この場合、ビットバッファ２６２に格納されているビットデータのプリフィックスを、あらかじめビットバッファコントローラ２６１が計数しておき、復号処理命令の実行によりビットデータがビットバッファ２６２から読み出されると同時に計数したプリフィックス長（例えば４ｂｉｔ）を出力する。【０１３５】
この構成では、図３２に示すように、制御情報・ローインデックス生成器２５３ではプリフィックス計数器は不要となる。
また、制御情報・ローインデックス生成器２５３では、３段のパイプライン構成で済み、生成器用パイプラインレジスタ２８１Ｂ、２８１Ｃのみの構成でよい。
その他の構成であるプリフィックスアドレス生成器２７２、ローインデックステーブル群２７３、サフィックス長テーブル群２７４と、取得部２７７、取得部２７８、加算器２７６、更新命令生成器２７５は、前記実施の形態と同一となっている。【０１３６】
（変形例２）
さらに、計数したプリフィックス長をそのまま用いて、テーブル参照を行うこともできる。この構成の場合、図３３に示すように、制御情報・ローインデックス生成器３５３では、プリフィックスアドレス生成器は不要となる。【０１３７】
制御情報・ローインデックス生成器３５３の取得部３７７は、ローインデックステーブル群３７３のうちの選択されたテーブルからプリフィックス長に基づいて対応するローインデックスを取得する。
また、制御情報・ローインデックス生成器３５３の取得部３７８は、サフィックス長テーブル群３７４のうちの選択されたテーブルからプリフィックス長に基づいて対応するサフィックス長を取得する。
その他の構成である加算器３７６、更新命令生成器３７５は、前記実施の形態と同一となっている。【０１３８】
また、この場合、図３４に示すように、プリフィックスアドレス生成のための期間（図２２のステップＳ１４）も不要となり、前記第３の実施の形態におけるＳ１１、Ｓ１２、Ｓ１３、Ｓ１５、Ｓ１６、Ｓ１７、Ｓ１８と同様のＳ２１、Ｓ２２、Ｓ２３、Ｓ２５、Ｓ２６、Ｓ２７、Ｓ２８の７クロック分で済む。【０１３９】
（変形例３）
さらに、復号用アドレス生成器で行っていた、復号用のアドレス生成を、制御情報・ローインデックス生成器の４段目のパイプラインステージ、すなわち、更新命令の生成と同時に行うことも可能である。  
この場合、図３５に示すように、復号用アドレス生成器４５３を制御情報・ローインデックス生成器４５３内に搭載することができる。
その他の構成であるプリフィックス計数器４７１、プリフィックスアドレス生成器４７２、ローインデックステーブル群４７３、サフィックス長テーブル群４７４、取得部４７７、取得部４７８、加算器４７６、更新命令生成器４７５、生成器用パイプラインレジスタ４８１Ａ、４８１Ｂ、４８１Ｃは、前記実施の形態と同一となっている。【０１４０】
（変形例４）
上述のような構成を有する復号処理装置における各部の処理は、方法としても実現可能であり、復号処理方法としての各種の処理手順について、図３６を参照しつつ説明する。図３６は、本発明のその他の実施の形態の復号処理装置における処理手順の一例を示すフローチャートである。【０１４１】
本実施の形態に係る復号処理方法は、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理をコンピュータ（例えばプロセッサなど）が行うものを対象とするものである。
この復号処理方法では、例えば、上述の実施の形態の図２２におけるステップＳ２５１の詳細処理手順の一例ということもできる。【０１４２】
この復号処理方法は、基本的手順として、先ず、コンピュータが、前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持するための入出力処理を行う第１の制御をする（例えば図３６に示すステップＳ４０１のビット格納制御ステップなど）。
すなわち、コンピュータが、前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持する処理を行う。
次に、コンピュータが、前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する第１の生成制御を行う（例えば図３６に示すステップＳ４０２の制御情報・ローインデックス生成ステップなど）。
続いて、コンピュータが、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する第２の生成制御を行う（例えば図３６に示すステップＳ４０３の復号用アドレス生成ステップなど）。【０１４３】
ここで、前記制御情報・ローインデックス生成ステップでは（第１の生成制御をする際には）、前記ローインデックスと前記サフィックス長の生成後に、前記第２の生成制御における復号用アドレスを生成する処理と、前記第１の制御における前記可変長符号ビットストリームを更新する処理とを同時に（単位クロック期間に並行して）実行させることができる。【０１４４】
＜制御情報・ローインデックス生成ステップ＞
図３６に示す制御情報・ローインデックス生成ステップＳ４０２の詳細処理手順の一例を図３７に示す。図３７は、本発明のその他の実施の形態の復号処理装置における処理手順の一例を示すフローチャートである。【０１４５】
まず、前記プリフィックス長に応じたローインデックスを格納した第１テーブルと、前記プリフィックス長に応じたサフィックス長を格納した第２テーブルと、を設けておく。
そして、コンピュータが、前前記可変長符号ビットストリームの前記プリフィックス長を計数する（ステップＳ５０１）（プリフィックス計数ステップないしはプリフィックス計数機能）。【０１４６】
続いて、コンピュータが、前ステップＳ５０１の前記プリフィックス計数ステップにて計数した前記プリフィックス長から前記第１テーブル、前記第２テーブルを参照するためのプリフィックスアドレスを計算する（ステップＳ５０２）（プリフィックスアドレス計算ステップないしはプリフィックスアドレス計算機能）。  【０１４７】
次いで、コンピュータが、前ステップＳ５０２の前記プリフィックスアドレス計算ステップにて求めた前記プリフィックスアドレスを用いて、前記第１テーブルと前記第２テーブルとを各々参照し、対応する前記ローインデックスと前記サフィックス長を取得する（ステップＳ５０３）（テーブル情報取得ステップないしはテーブル情報取得機能）。【０１４８】
さらに、コンピュータが、前ステップＳ５０３の前記テーブル情報取得ステップにて取得された前記サフィックス長とステップＳ５０１の前記プリフィックス計数ステップにて計数した前記プリフィックス長とＲＥＧ＿ＤＡＴＡとに基づいて、ビット格納制御手段の前記可変長符号ビットストリームを更新する制御情報である更新命令を生成する（ステップＳ５０４）（更新命令生成ステップないしは更新命令生成機能）。【０１４９】
＜復号用アドレス生成ステップ＞
図３６に示す復号用アドレス生成ステップＳ４０３詳細処理手順の一例を図３８を示す。図３８は、本発明のその他の実施の形態の復号処理装置における処理手順の一例を示すフローチャートである。【０１５０】
先ず、コンピュータが、前前記プリフィックス長、前記サフィックス長、ビット格納制御手段の前記可変長符号ビットストリームのビット数及びそのビットストリームに基づいて、前記復号用アドレスを求めるためのコラムインデックスを生成する（ステップＳ６０１）（コラムインデックス生成ステップないしはコラムインデックス生成機能）。
この具体的例は、前記実施の形態の図５に示す処理を行う。【０１５１】
そして、コンピュータが、前ステップＳ６０１でのコラムインデックスと、ステップＳ５０３での前記ローインデックスとを加算し、復号用アドレスを生成する（ステップＳ６０２）（コラムインデックスローインデックス加算ステップないしはコラムインデックスローインデックス加算機能）。【０１５２】
一方、コンピュータが、これらのステップＳ６０１、ステップＳ６０２と並行して（同時に）、ステップＳ５０４での更新命令に基づいて、ビット格納制御手段の前記可変長符号ビットストリームを更新する処理を実行する（ステップＳ６０３）（ビット格納更新処理ステップないしはビット格納更新処理機能）。【０１５３】
ここで、以上のステップＳ４０２とステップＳ４０３とにより、「第２の制御ステップ」を構成できる。
この「第２の制御ステップ」では、コンピュータが、前記ビットストリーム一時保持部から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記ビットストリーム一時保持部に対し前記可変長符号ビットストリームを更新するための制御情報を供給する第２の制御をすることができる。    
また、前記第２の制御をする際に、前記復号用アドレスを生成する処理と、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する処理とを同時に行うことができる。【０１５４】
（変形例５）
また、上述の実施の形態では、復号処理装置をプロセッサに搭載した構成例を示したが、図３９に示すように、復号処理装置単独による構成も可能である。
すなわち、復号処理装置５５０は、前記可変長符号ビットストリームの一部を一時保持するとともに、保持するための入出力処理を制御する第１の制御手段（例えば図３９に示す符号５５２のビット格納器など）と、前記第１の制御手段から入力される前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記第１の制御手段に対し前記可変長符号ビットストリームを更新するための制御情報を供給する第２の制御手段（例えば図３９に示す符号５５１など）とを含む構成としている。
この第２の制御手段５５１が、前記復号用アドレスを生成する処理と、前記第１の制御手段に保持される前記可変長符号ビットストリームを更新する処理とを同時に（例えば単位クロック期間に並行して）行うことができる。【０１５５】
このような構成の復号処理装置では、プリフィックスとサフィックスとに基づいた復号用アドレスの生成処理と、第１の制御手段の更新処理とを同時に行え、次の復号に備えることができ、可変長符号の復号に必要なサイクル数を低減できる。【０１５６】
また、第２の制御手段５５１は、前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する処理動作を制御する制御情報・ローインデックス生成器５５３（第１の生成制御部）と、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する処理動作を制御する復号用アドレス生成器５５４（第２の生成制御部）とを含む構成としている。【０１５７】
この場合、前記制御情報・ローインデックス生成器５５３が、前記ローインデックスと前記サフィックス長の生成後に、前記復号用アドレスを生成する処理と、前記第１の制御手段に保持される前記可変長符号ビットストリームを更新する処理とを同時に（例えば単位クロック期間に並行して）行うことができる。【０１５８】
（変形例６）
さらに、上述の実施の形態における復号処理装置とプロセッサとを分けて構成することもできる。
この場合、図４０に示すように、プロセッサ６２０におけるプロセッサ制御部６２５が、復号開始命令（ＤＥＣ＿ＣＯＤＥ）生成機能６２５ａ、ビットバッファの更新命令（ＩＮＳＴ＿ＵＰＤ）生成機能６２５ｂ、ビット補充命令（ＭＥＭ＿ＬＯＡＤ）生成機能６２５ｃ、ローインデックステーブルの更新命令（ＵＰＤ＿ＲＯＷ）生成機能６２５ｄ、サフィックス長テーブルの更新命令（ＵＰＤ＿ＳＵＦ）生成機能６２５ｅ、初期化命令（ＩＮＩＴＩＡＬＩＺＥ）生成機能、などを有することもできる。【０１５９】
復号処理装置６５０は、前記実施の形態と同様に、ビット格納器６５２（第１の制御手段）、制御情報・ローインデックス生成器６５３（第１の生成制御部）、復号用アドレス生成器６５４（第２の生成制御部）を有することができる。制御情報・ローインデックス生成器６５３及び復号用アドレス生成器６５４により第２の制御手段６５１を構成できる。復号処理装置６５０は、プロセッサ６２０の復号開始命令（ＤＥＣ＿ＣＯＤＥ）がビット格納器６５２に入力することによって復号処理が開始される。また、プロセッサ６２０の他の各種命令に基づいて復号処理装置６５０が各種処理を実行する場合についても、前記実施の形態と同様に処理を行うことができる。【０１６０】
ここで、例えば図３９に示すブロック図における一部の各ブロックは、コンピュータが適宜なメモリに格納された各種プログラムを実行することにより、該プログラムにより機能化された状態を示すソフトウエアモジュール構成であってもよい。【０１６１】
すなわち、物理的構成は例えば一又は複数のＣＰＵ（或いは一又は複数のＣＰＵと一又は複数のメモリ）等ではあるが、ＣＰＵにプログラムを実行させることによりソフトウェア上で図３９に示す構成を実現するようにしてもよい。【０１６２】
以上に示した各部（手段）の説明は、プログラムにより機能化されたコンピュータをプログラムの機能と共に説明したものと解釈することも出来るし、また、固有のハードウェアにより恒久的に機能化された複数の電子回路ブロックからなる装置を説明したものとも解釈することが出来る。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現でき、いずれかに限定されるものではない。【０１６３】
また、各部は、通信可能な専用のコンピュータからなる装置としてそれぞれ構成し、これらの各装置によりシステムを構成してもよい。逆に、各部を単一の装置として構成したシステムであってもよい。【０１６４】
さらに、各部を回路として構成する場合には、半導体集積回路、光集積回路あるいはそれらの組み合わせなど種々の集積回路にて構成してよい。【０１６５】
本発明の一実施形態に係るプロセッサにおいては、ビットストリームの一部を保持し、それを制御する手段を有するビット格納器と、ビットストリームを入力として、ビットストリームのプリフィックスに応じて、可変長符号の復号に必要なテーブル参照に用いるアドレス、すなわちローインデックスと、プリフィックス長に対応したサフィックス長を生成し、また、前記ビット格納器を制御する情報を生成する手段を有する制御情報・ローインデックス生成器と、プリフィックス長とサフィックスから復号に必要なテーブルを参照するアドレスを生成する手段を有する復号用アドレス生成器を備えることができる。【０１６６】
前記のビット格納器は、保持したビットストリームからあらかじめ決められたビット数のビットデータを読み出し、読み出した後の残りビット数が少ない場合、メモリから新たにデータを読み出し、保持したビットストリームの一部の末尾に連接して格納する手段と、前記ビット格納器を制御する情報に基づいて、保持したビットストリームを更新する手段とを有するように構成してよい。【０１６７】
前記の制御情報・ローインデックス生成器は、プリフィックス長に対応した、可変長符号の復号に必要なテーブル参照に用いるアドレス、すなわちローインデックスを格納したテーブルと、プリフィックス長に対応したサフィックス長を格納したテーブルとを有し、前記ビット格納器から読み出されたビットストリームのプリフィックスを計数する手段と、計数したプリフィックスから前記テーブルのアドレスを計算する手段と、前記プリフィックス長から求めたアドレスを用いて、前記ローインデックスを格納したテーブルと、前記サフィックス長を格納したテーブルを参照して、ローインデックスとサフィックス長を得る手段と、プリフィックス長及びサフィックス長から前記ビット格納器を更新する制御情報を生成する手段を有するように構成してよい。【０１６８】
前記復号用アドレス生成器は、前記ビット格納器から読み出されたデータのサフィックスを求め、前記サフィックスから計算される可変長符号の復号に必要なテーブル参照に用いるアドレス、すなわちコラムインデックスを計算する手段と、ローインデックスとコラムインデックスを加算する手段を有するように構成してよい。【０１６９】
またさらに、上記構成部材の数、位置、形状等は上記実施の形態に限定されず、本発明を実施する上で好適な数、位置、形状等にすることができる。
すなわち、上記実施の形態では、１つのプロセッサに復号処理装置が１つ備える場合を示したが、本発明は、これらの個数を制限するものではない。例えば、複数のプロセッサで１つの復号処理装置を処理する構成や、一つのプロセッサで複数の復号処理装置を処理する構成であってもよい。
さらには、１つのプロセッサの場合、パイプラインプロセッサを用いたが、複数のプロセッサの場合、パイプラインプロセッサ以外のプロセッサを用いても良い。
また、パイプラインプロセッサは、並列処理の無い場合、並列度ｋの並列処理の有る場合（スーパースケーラ）のいずれであってもよい。【０１７０】
また、上記実施の形態では４×４ブロックサイズを単位として復号処理を行う場合を例に説明したが、他の種々のブロックサイズを単位として復号処理を行う場合であってもよい。
例えば、Ｈ．２６４で用いられる２×２サイズのブロックであってもよい。２×２サイズのブロックの復号処理では、２×２サイズ用のＮｕｍＶＬＣテーブルを用いて復号を行うことと、ブロック係数の復号に必要な繰り返し回数以外は、４×４サイズのブロックの復号処理と同等の処理となる。
さらに、符号化処理がＣＡＶＬＣ方式に従うならば、ブロックサイズにかかわりなく、上記実施の形態の手法を用いることができる。【０１７１】
また、上述のようなプロセッサが搭載されるデコーダを含む電子機器としては、ＨＤＤレコーダやＤＶＤプレーヤのようなデジタル方式の動画再生装置、その他の各種通信装置などが挙げられる。また、デスクトップ、ラップトップコンピュータ、その他無線・有線通信機能を有する情報機器、情報家電機器（テレビ・携帯音楽プレーヤ・ゲーム機）、またはこれに類するコンピュータなどいかなるコンピュータに搭載する場合でもよく、移動式・固定式を問わない。
各種通信装置としては、パーソナルコンピュータに限らず、各種サーバ、ＥＷＳ（エンジニアリングワークステーション）、中型コンピュータ、メインフレーム、携帯型情報端末、各種モバイル端末、ＰＤＡ、携帯電話機、ウエアラブル情報端末、種々のテレビ・ＤＶＤレコーダ・各種音響機器、各種情報通信機能を搭載した家電機器、ネットワーク機能を有するゲーム機器等としても構わない。【０１７２】
（復号処理プログラム）
また、前述した実施形態の機能を実現する本発明の復号処理プログラムは、前述した各実施の形態における各種ブロック図などに示された処理部（処理手段）、機能などに対応したプログラムや、フローチャートなどに示された処理手順、処理手段、機能などに対応したプログラムや、各種テーブルを利用するプログラムなどにおいて各々処理される各処理プログラム、本明細書で全般的に記述される方法（ステップ）、説明された処理、データの全体もしくは各部を含む。【０１７３】
具体的には、本発明の一実施形態における復号処理プログラムは、少なくともプリフィックスとこのプリフィックスに後続するサフィックスとを含む符号化データ列である可変長符号ビットストリームを復号する処理を行うコンピュータが諸機能を実現可能なものである。【０１７４】
この復号処理プログラムは、前記可変長符号ビットストリームの一部をビットストリーム一時保持部に一時保持するための入出力処理を行う第１の制御機能と、前記ビットストリーム一時保持部に保持された前記可変長符号ビットストリームの前記プリフィックスと前記サフィックスとに基づいて、復号に必要な復号用テーブル参照に用いる復号用アドレスを生成するとともに、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する制御情報を生成する第２の制御機能（制御情報・復号用アドレス生成制御機能）と、を含む機能を前記コンピュータに実現させることができる。【０１７５】
この場合、前記第２の制御機能（制御情報・復号用アドレス生成制御機能）では、前記復号用アドレスを生成する処理と、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する処理とを同時に又は逐次的に行う機能を前記コンピュータに実現させることができる。【０１７６】
また、この復号処理プログラムは、前記制御情報・復号用アドレス生成制御機能では、前記可変長符号ビットストリームの前記プリフィックスに基づいて、前記復号用アドレスを求めるためのローインデックスを生成するとともに、プリフィックス長に対応したサフィックス長を生成し、これらを生成した後に前記制御情報を生成する制御情報・ローインデックス生成機能（第１の生成制御機能）と、前記サフィックス長から前記復号用アドレスを求めるためのコラムインデックスを生成し、このコラムインデックスと前記ローインデックスとに基づいて前記復号用アドレスを生成する処理動作を制御する復号用アドレス生成機能（第２の生成制御機能）とを含む機能を前記コンピュータに実現させることができる。【０１７７】
この場合、前記制御情報・ローインデックス生成機能（第１の生成制御機能）では、前記ローインデックスと前記サフィックス長の生成後に、前記復号用アドレスを出力する処理と、前記ビットストリーム一時保持部の前記可変長符号ビットストリームを更新する処理とを同時又は逐次的に行う制御機能を前記コンピュータに実現させることができる。【０１７８】
さらに、この復号処理プログラムでは、前記プリフィックス長に応じたローインデックスを格納した第１テーブルと、前記プリフィックス長に応じたサフィックス長を格納した第２テーブルと、を設けておくことができる。【０１７９】
この場合、この復号処理プログラムでは、前記制御情報・ローインデックス生成機能（第１の生成制御機能）において、前記可変長符号ビットストリームの前記プリフィックス長を計数するプリフィックス計数機能と、前記プリフィックス計数機能にて計数した前記プリフィックス長から前記第１テーブル、前記第２テーブルを参照するためのプリフィックスアドレスを計算するプリフィックスアドレス計算機能と、前記プリフィックスアドレス計算機能にて求めた前記プリフィックスアドレスを用いて、前記第１テーブルと前記第２テーブルとを各々参照し、対応する前記ローインデックスと前記サフィックス長を取得するテーブル情報取得機能と、前記テーブル情報取得機能にて取得された前記サフィックス長と前記プリフィックス計数機能にて計数した前記プリフィックス長とに基づいて、前記更新する制御情報である更新命令を生成する更新命令生成機能とを含む機能を前記コンピュータに実現させることができる。    【０１８０】
プログラムは、高水準プロシージャ型またはオブジェクト指向プログラミング言語で、あるいは必要に応じてアセンブリまたはマシン言語で実装することができる。いずれの場合も、言語はコンパイラ型またはインタープリタ型言語であってもよく、プログラムの形態を問わない。【０１８１】
プログラムを供給する手法としては、電気通信回線（有線、無線を問わない）によってコンピュータと通信可能に接続された外部の機器から前記電気通信回線を通じて提供することも可能である。【０１８２】
本発明の復号処理プログラムによれば、当該復号処理プログラムを格納するＲＯＭ等の記憶媒体から、当該復号処理プログラムをコンピュータ（ＣＰＵ）に読み込んで実行させれば、或いは、当該復号処理プログラムを、通信手段を介してコンピュータにダウンロードさせた後に実行させれば、上述した本発明に係る装置を比較的簡単に実現できる。発明の思想の具現化例として装置のソフトウェアとなる場合には、かかるソフトウェアを記憶した記憶媒体上においても当然に存在し、利用される。【０１８３】
また、プログラムは、一次複製品、二次複製品などの複製段階については問はない。プログラムの供給方法として通信回線を利用して行なう場合であれば通信回線が伝送媒体となって本発明が利用されることになる。さらに、装置における従属請求項は、方法、プログラムにおいて従属請求項に対応した構成にすることも可能である。【０１８４】
（情報記録媒体）
また、上述のプログラムを、情報記録媒体に記録した構成であってもよい。情報記録媒体には、上述のプログラムを含むアプリケーションプログラムが格納されており、コンピュータが当該情報記録媒体からアプリケーションプログラムを読み出し、当該アプリケーションプログラムをハードディスクにインストールすることが可能である。これにより、上述のプログラムは、磁気記録媒体、光記録媒体あるいはＲＯＭなどの情報記録媒体に記録してプログラムを提供することができる。そのようなプログラムが記録された情報記録媒体を、コンピュータにおいて使用することは、好都合な情報処理装置を構成する。【０１８５】
プログラムを供給するための情報記録媒体としては、例えばＲＯＭ、ＲＡＭ、フラッシュメモリやＳＲＡＭ等の半導体メモリ並びに集積回路、あるいはそれらを含むＵＳＢメモリやメモリカード、光ディスク、光磁気ディスク、磁気記録媒体等を用いてよく、さらに、フレキシブルディスク、ＣＤ−ＲＯＭ、ＣＤ―Ｒ、ＣＤ―ＲＷ、ＦＤ、ＤＶＤＲＯＭ、ＨＤＤＶＤ（ＨＤＤＶＤ−Ｒ−ＳＬ＜1層＞、 ＨＤＤＶＤ−Ｒ−ＤＬ＜２層＞、ＨＤＤＶＤ−ＲＷ−ＳＬ、ＨＤＤＶＤ−ＲＷ−ＤＬ、ＨＤＤＶＤ−ＲＡＭ−ＳＬ）、ＤＶＤ±Ｒ−ＳＬ、ＤＶＤ±Ｒ−ＤＬ、ＤＶＤ±ＲＷ−ＳＬ、ＤＶＤ±ＲＷ−ＤＬ、ＤＶＤ−ＲＡＭ、Ｂｌｕ−Ｒａｙ  Ｄｉｓｋ＜登録商標＞（ＢＤ−ＲーＳＬ、ＢＤ−Ｒ−ＤＬ、ＢＤ−ＲＥ−ＳＬ、ＢＤ−ＲＥ−ＤＬ）、ＭＯ、ＺＩＰ、磁気カード、磁気テープ、ＳＤカード、メモリスティック、不揮発性メモリカード、ＩＣカード、等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置、等に記録して構成して用いてよい。【０１８６】
さらに「情報記録媒体」は、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの（伝送媒体ないしは伝送波）、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。【０１８７】
また、上述の実施の形態のプロセッサ、復号処理装置をシステムとして構成してもよい。この「システム」を、他の「システム」と統合したシステムとして、これら全体を本発明の「システム」として構成することも一向に構わない。【０１８８】
その場合における「システム」とは、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは問わない。このような場合、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。【０１８９】
さらに、本明細書において、フローチャートに示されるステップは、記載された手順に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。また、実装では、プログラム手順（ステップ）が実行される順序を変更することができる。さらに、実装の必要に応じて、本明細書で説明した特定の手順（ステップ）を、組み合わされた手順（ステップ）として実装、除去、追加、または再配置することができる。【０１９０】
さらに、装置の各手段、各機能、各ステップの手順の機能などのプログラムの機能を、専用のハードウェア（例えば専用の半導体回路等）によりその機能を達成してもよく、プログラムの全機能のうち一部の機能をハードウェアで処理し、全機能のうちさらに他の機能をソフトウェアで処理するようにしてもよい。専用のハードウェアの場合、各部を集積回路例えばＬＳＩにて形成されてもよい。これらは個別に１チップ化されても良いし、一部または全部を含むように１チップ化されても良い。また、ＬＳＩには、他の機能ブロックが含まれていても良い。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。【０１９１】
さらに、前記復号用アドレスを出力する処理と、前記ビット格納制御手段の前記可変長符号ビットストリームを更新する処理とを同時に行うように制御する手法は、必ずしも実体のある装置に限られる必要はなく、その方法としても機能することは容易に理解できる。このため、方法にかかる発明も、必ずしも実体のある装置に限らず、その方法としても有効であることに相違はない。この場合、方法を実現するための一例として復号処理装置、プロセッサなども含めることができる。【０１９２】
ところで、このような復号処理装置、プロセッサは、単独で存在する場合もあるし、ある機器（例えば復号処理装置を含むプロセッサがデコーダや電子機器の機能として組み込まれているなど）に組み込まれた状態で利用されることもあるなど、発明の思想としてはこれに限らず、各種の態様を含むものである。従って、ソフトウェアであったりハードウェアであったりするなど、適宜、変更可能である。発明の思想の具現化例として装置のソフトウェアとなる場合には、かかるソフトウェアを記憶した記憶媒体上においても当然に存在し、利用されるといわざるをえない。【０１９３】
さらに、一部がソフトウェアであって、一部がハードウェアで実現されている場合であってもよく、一部を記憶媒体上に記憶しておいて必要に応じて適宜読み込まれるような形態のものとしてあってもよい。本発明をソフトウェアで実現する場合、ハードウェアやオペレーティングシステムを利用する構成とすることも可能であるし、これらと切り離して実現することもできる。【０１９４】
また、発明の範囲は、図示例に限定されないものとする。
さらに、上記各実施の形態には種々の段階が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。つまり、上述の各実施の形態同士、あるいはそれらのいずれかと各変形例のいずれかとの組み合わせによる例をも含む。この場合において、本実施形態において特に記載しなくとも、各実施の形態及びそれらの変形例に開示した各構成から自明な作用効果については、当然のことながら実施の形態の作用効果として含めることができる。逆に、本実施の形態に記載されたすべての作用効果を奏することのできる構成が、本発明の本質的特徴部分の必須構成要件であるとは限らない。また、実施の形態に示される全構成要件から幾つかの構成要件が削除された構成による実施の形態並びにその構成に基づく技術的範囲も発明になりうる。【０１９５】
そして、各実施の形態及びそれらの変形例を含むこれまでの記述は、本発明の理解を容易にするために、本発明の多様な実施の形態のうちの一例の開示、すなわち、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、例証するものであり、制限するものではなく、適宜変形及び／又は変更が可能である。本発明は、その技術思想、またはその主要な特徴に基づいて、様々な形で実施することができ、各実施の形態及びその変形例によって本発明の技術的範囲が限定的に解釈されてはならないものである。
従って、上記に開示された各要素は、本発明の技術的範囲に属する全ての設計変更や均等物を含む趣旨である。【０１９６】
この出願は２００８年６月２３日に出願された日本出願特願２００８−１６３１６１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１９７】
本発明は、復号処理装置全般に適用可能であり、より詳細には、デジタル方式の動画再生装置などのプロセッサといった用途に適用できる。
【図面の簡単な説明】
【０１９８】
【図１】本発明の第１の実施の形態における復号処理装置を備えたプロセッサの全体構成の一例を示すブロック図である。
【図２】本発明の第１の実施の形態の復号処理装置におけるビット格納器の詳細構成の一例を示すブロック図である。
【図３】本発明の第１の実施の形態の復号処理装置における制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。
【図４】本発明の第１の実施の形態の復号処理装置におけるアドレス生成器の詳細構成の一例を示すブロック図である。
【図５】本発明の第１の実施の形態の復号処理装置におけるビット調整・コラムインデックス生成器の処理動作の一例を示すフローチャートである。
【図６】本発明の第２の実施の形態の復号処理装置における制御情報・ローインデックス生成器の一例を示すブロック図である。
【図７】本発明の第２の実施の形態の復号処理装置におけるビット格納器の詳細構成の一例を示すブロック図である。
【図８】本発明の第３の実施の形態の復号処理装置におけるビット格納器の詳細構成の一例を示すブロック図である。
【図９】本発明の第３の実施の形態の復号処理装置における制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。
【図１０】本発明の第３の実施の形態の復号処理装置におけるアドレス生成器の詳細構成の一例を示すブロック図である。
【図１１】本発明の第３の実施の形態の復号処理装置におけるＩＮＳＴ＿ＵＰＤ（更新命令）の内容の一例を示す説明図である。
【図１２】本発明の第３の実施の形態の復号処理装置における追加される命令の一つであるＤＥＣ＿ＣＯＤＥの内容の一例を示す説明図である。
【図１３】本発明の第３の実施の形態の復号処理装置における追加される命令の一つであるＩＮＩＴＩＡＬＩＺＥの内容の一例を示す説明図である。
【図１４】本発明の第３の実施の形態の復号処理装置におけるＭＥＭ＿ＬＯＡＤの内容の一例を示す説明図である。
【図１５】本発明の第３の実施の形態の復号処理装置におけるビットバッファのビット補充処理の概要の一例を示す説明図である。
【図１６】本発明の第３の実施の形態の復号処理装置におけるプリフィックス計数器の処理概要の一例を示す説明図である。
【図１７】本発明の第３の実施の形態の復号処理装置におけるローインデックステーブルの一例を示す説明図である。
【図１８】本発明の第３の実施の形態の復号処理装置におけるサフィックス長テーブルの一例を示す説明図である。
【図１９】本発明の第３の実施の形態の復号処理装置におけるローインデックステーブルを更新する命令の内容の一例を示す説明図である。
【図２０】本発明の第３の実施の形態の復号処理装置におけるサフィックス長テーブルを更新する命令の内容の一例を示す説明図である。
【図２１】本発明の第３の実施の形態の復号処理装置における可変長符号の復号処理の全体の処理手順の一例を示すフローチャートである。
【図２２】本発明の第３の実施の形態の復号処理装置における可変長符号の復号処理の全体の処理手順の一例を示す説明図である。
【図２３】本発明の第３の実施形態の復号処理装置における動作の詳細手順の一例を示すタイミングチャートである。
【図２４】本発明の第３の実施の形態の復号処理装置における制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。
【図２５】本発明の第３の実施の形態の復号処理装置におけるビット格納器の詳細構成の一例を示すブロック図である。
【図２６】本発明の第４の実施の形態の復号処理装置における追加される命令の一例を示す説明図である。
【図２７】本発明の第４の実施の形態の復号処理装置におけるローインデックステーブルを更新する命令の内容の一例を示す説明図である。
【図２８】本発明の第４の実施の形態の復号処理装置におけるサフィックス長テーブルを更新する命令の内容の一例を示す説明図である。
【図２９】本発明の第４の実施の形態の復号処理装置における可変長符号の復号処理の全体の処理手順の一例を示す説明図である。
【図３０】本発明の第４の実施の形態の復号処理装置における可変長符号の復号処理の全体の処理手順の一例を示す説明図である。
【図３１】本発明のその他の実施の形態の復号処理装置におけるビット格納器の詳細構成の一例を示すブロック図である。
【図３２】本発明のその他の実施の形態の復号処理装置における制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。
【図３３】本発明のその他の実施の形態の復号処理装置における制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。
【図３４】本発明のその他の実施の形態の復号処理装置における動作の詳細手順の一例を示すタイミングチャートである。
【図３５】本発明のその他の実施の形態の復号処理装置における制御情報・ローインデックス生成器の詳細構成の一例を示すブロック図である。
【図３６】本発明のその他の実施の形態の復号処理装置における処理手順の一例を示すフローチャートである。
【図３７】本発明のその他の実施の形態の復号処理装置における処理手順の一例を示すフローチャートである。
【図３８】本発明のその他の実施の形態の復号処理装置における処理手順の一例を示すフローチャートである。
【図３９】本発明のその他の実施の形態の復号処理装置の構成の一例を示すブロック図である。
【図４０】本発明のその他の実施の形態の復号処理装置を備えたプロセッサの構成の一例を示すブロック図である。
【図４１】Ｈ．２６４のＮｕｍＶＬＣ０テーブルの一例を示す説明図である。
【図４２】関連技術のＴＣ、Ｔ１ｓを復号する際に使用されるテーブルの一例を示す説明図である。
【図４３】Ｈ．２６４のＮｕｍＶＬＣ１テーブルの一例を示す説明図である。
【図４４】関連技術のＴＣ、Ｔ１ｓを復号する際に使用されるテーブルの一例を示す説明図である。
【図４５】Ｈ．２６４のＮｕｍＶＬＣ２テーブルの一例を示す説明図である。
【図４６】関連技術のＴＣ、Ｔ１ｓを復号する際に使用されるテーブルの一例を示す説明図である。
【図４７】関連技術の処理装置を備えたプロセッサの構成の一例を示すブロック図である。
【図４８】関連技術の処理装置を備えたプロセッサを用いた場合に、ＴＣ、Ｔ１ｓの復号処理の一例を示すタイミングチャートである。
【符号の説明】
【０１９９】
１０  メモリ
２０  プロセッサ
５０  復号処理装置
５１  第２の制御手段
５２  ビット格納器（第１の制御手段）
５３  制御情報・ローインデックス生成器（第１の生成制御部）
５４  復号用アドレス生成器（第２の生成制御部）
５５  生成器用パイプラインレジスタ
６１  ビットバッファコントローラ（ビット制御部）
６２  ビットバッファ（ビットストリーム一時格納部）
７１  プリフィックス計数器（プリフィックス計数部）
７２  プリフィックスアドレス生成器（プリフィックスアドレス計算部）
７３  ローインデックステーブル（第１テーブル）群
７４  サフィックス長テーブル（第２テーブル）群
７５  更新命令生成器（更新命令生成部）
７６  加算器（加算部）
７７、７８  取得部（テーブル情報取得部）
９１  ビット調整・コラムインデックス生成器（コラムインデックス生成部）
９２  加算器（加算部）
【図１】
2009157250.tif 000003
【図２】
2009157250.tif 000004
【図３】
2009157250.tif 000005
【図４】
2009157250.tif 000006
【図５】
2009157250.tif 000007
【図６】
2009157250.tif 000008
【図７】
2009157250.tif 000009
【図８】
2009157250.tif 000010
【図９】
2009157250.tif 000011
【図１０】
2009157250.tif 000012
【図１１】
2009157250.tif 000013
【図１２】
2009157250.tif 000014
【図１３】
2009157250.tif 000015
【図１４】
2009157250.tif 000016
【図１５】
2009157250.tif 000017
【図１６】
2009157250.tif 000018
【図１７】
2009157250.tif 000019
【図１８】
2009157250.tif 000020
【図１９】
2009157250.tif 000021
【図２０】
2009157250.tif 000022
【図２１】
2009157250.tif 000023
【図２２】
2009157250.tif 000024
【図２３】
2009157250.tif 000025
【図２４】
2009157250.tif 000026
【図２５】
2009157250.tif 000027
【図２６】
2009157250.tif 000028
【図２７】
2009157250.tif 000029
【図２８】
2009157250.tif 000030
【図２９】
2009157250.tif 000031
【図３０】
2009157250.tif 000032
【図３１】
2009157250.tif 000033
【図３２】
2009157250.tif 000034
【図３３】
2009157250.tif 000035
【図３４】
2009157250.tif 000036
【図３５】
2009157250.tif 000037
【図３６】
2009157250.tif 000038
【図３７】
2009157250.tif 000039
【図３８】
2009157250.tif 000040
【図３９】
2009157250.tif 000041
【図４０】
2009157250.tif 000042
【図４１】
2009157250.tif 000043
【図４２】
2009157250.tif 000044
【図４３】
2009157250.tif 000045
【図４４】
2009157250.tif 000046
【図４５】
2009157250.tif 000047
【図４６】
2009157250.tif 000048
【図４７】
2009157250.tif 000049
【図４８】
2009157250.tif 000050
【国際調査報告】
2009157250.tif 000051
2009157250.tif 000052
2009157250.tif 000053
2009157250.tif 000054