(57)【特許請求の範囲】
【請求項１】
所定のプロトコルに適合するデジタル符号化信号を処理する装置であって、該プロトコルは多数のレコードタイプを定義し、該多数のレコードタイプのそれぞれはヘッダ情報とペイロードデータとを含み、
該装置は、
該多数のレコードタイプのうち少なくとも選択されたレコードタイプ中の該ヘッダ情報をパースする状態マシンであって、該状態マシンは、それぞれ別個の処理動作を行う複数の状態を定義し、状態間の遷移は、該デジタル符号化信号を処理することによって決定される、状態マシンと、
該状態マシンにおける該複数の状態の各状態に対して、それぞれ異なる完了時間に対応するそれぞれ異なるパースレートを設定する手段と、
該複数の状態の各状態に対してそれぞれ異なるパースレートをルックアップテーブルにロードする手段と、
該複数の状態のうち特定の状態によって表されるそれぞれ別個の該処理動作を行う処理手段と、
該デジタル符号化信号の処理中に該特定の状態に対するパースレートを該ルックアップテーブルから取り出し、該特定の状態に対して取り出されたパースレートに対応するそれぞれ異なる完了時間が経過して該複数の状態のうち定義された次の状態に遷移するまで待つ遅延手段と
を備えた、装置。
【請求項２】
前記複数の状態の各状態に対してそれぞれ異なる完了時間を適応的に調整する手段をさらに含み、各状態に対して異なる完了時間は、前記デジタル符号化信号の前記ペイロードデータに応じて変化する、請求項１に記載の装置。
【請求項３】
複数のスライス層レコードを有するＭＰＥＧ−２符号化信号を処理する装置であって、各スライス層レコードはヘッダ情報と複数のマクロブロック層レコードとを有しており、各マクロブロック層レコードはヘッダ情報と周波数領域係数値の複数のブロックとを有しており、
該装置は、
該複数のスライス層レコードの該ヘッダ情報をパースするようにそれぞれ別個の処理動作を実行する複数のスライス層状態と、該複数のマクロブロック層レコードの該ヘッダ情報をパースするようにそれぞれ別個の処理動作を実行する複数のマクロブロック層状態とを含む複数の状態のシーケンスを含むことにより、該ＭＰＥＧ−２符号化信号から該周波数領域係数値の複数のブロックを抽出する状態マシンと、
該抽出された周波数領域係数値のブロックを空間領域画素値に変換するマクロブロック復号化手段と
を備え、
該状態マシンは、
複数の状態のシーケンスの各状態に対して、それぞれ異なる完了時間に対応するパースレートを設定する手段と、
該複数の状態の各状態に対してそれぞれ異なるパースレートをルックアップテーブルにロードする手段と、
該それぞれのスライス層状態によって表されるそれぞれ別個の該処理動作を行う処理手段と、
該それぞれのマクロブロック層状態によって表されるそれぞれ別個の処理動作であって、該複数のマクロブロック層レコードの該ヘッダ情報をパースするようにそれぞれ別個の処理動作を行うことにより、該複数のマクロブロック層レコードから該周波数領域係数値のブロックを抽出する処理手段と、
該ＭＰＥＧ−２符号化信号の処理中に該複数の状態のシーケンスの各状態に対するパースレートを該ルックアップテーブルから取り出し、該複数の状態のシーケンスの各状態に対して取り出されたパースレートに対応するそれぞれ異なる完了時間が経過して該複数の状態のシーケンスの次の状態に遷移するまで待つ遅延手段と
を含む、装置。
【請求項４】
前記複数のマクロブロック層レコードは、予測的に符号化されたマクロブロック層レコードと双方向に予測的に符号化されたマクロブロック層レコードとを含み、該予測的に符号化されたマクロブロック層レコードのヘッダ情報のそれぞれは単一の動きベクトルを含み、該双方向に予測的に符号化されたマクロブロック層レコードのそれぞれは複数の動きベクトルを含み、
前記装置は、
複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を適応的に調整する手段をさらに含み、該複数のマクロブロック層状態に対して異なる完了時間は、該予測的に符号化されたマクロブロック層レコードおよび該双方向に予測的に符号化されたマクロブロック層レコードの処理の内容に応じて変化する、請求項３に記載の装置。
【請求項５】
前記ＭＰＥＧ−２データ信号の単一のイメージであって、スライスおよびマクロブロックから成る単一のイメージの復号化のために復号化されるべきマクロブロック層レコードのタイプに基づく総処理時間が割り当てられ、複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を適応的に調整する前記手段は、該総処理時間の各部分を該複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間として指定する、請求項４に記載の装置。
【請求項６】
前記複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を適応的に調整する手段をさらに含んでおり、各状態に対してそれぞれ異なる完了時間はマクロブロック復号化手段によりマクロブロック層レコードを処理する速度の変化に応じて変化する、請求項３に記載の装置。
【請求項７】
所定のプロトコルに適合するデジタル符号化信号を処理する方法であって、該プロトコルは多数のレコードタイプを定義し、該多数のレコードタイプのそれぞれはヘッダ情報とペイロードデータとを含み、
該方法は、
状態マシンの複数の状態においてそれぞれ別個の処理動作を行い、該デジタル符号化信号が処理される際に状態間を遷移することにより、該多数のレコードタイプのうち少なくとも選択されたレコードタイプにおける該ヘッダ情報をパースするステップと、
該複数の状態に対してそれぞれ異なる完了時間を定義するステップと、
該複数の状態のうちの特定の状態によって表されるそれぞれ別個の処理動作を行うステップと、
該特定の状態に対してそれぞれ異なる該完了時間が経過して該複数の状態のうち定義された次の状態に遷移するまで待つステップと
を包含する方法。
【請求項８】
前記複数の状態の各状態に対してそれぞれ異なる完了時間を適応的に調整するステップをさらに包含し、各状態に対して異なる完了時間は、前記デジタル符号化信号の前記ペイロードデータに応じて変化する、請求項７に記載の方法。
【請求項９】
複数のスライス層レコードを有するＭＰＥＧ−２符号化信号を処理する方法であって、各スライス層レコードはヘッダ情報と複数のマクロブロック層レコードとを有しており、各マクロブロック層レコードはヘッダ情報と周波数領域係数値の複数のブロックとを有しており、
該方法は、
状態マシンの複数の状態のシーケンスにおけるヘッダ情報をパースすることにより、該ＭＰＥＧ−２符号化信号から該周波数領域係数値の複数のブロックを抽出するステップであって、該複数の状態は、該スライス層レコードの該ヘッダ情報をパースする別個の処理動作を行うための１つ以上のスライス層状態と、該マクロブロック層レコードの該ヘッダ情報をパースする別個の処理動作を行うための１つ以上のマクロブロック層状態とを含む、ステップと、
該抽出された周波数領域係数値のブロックを空間領域画素値に変換するステップと
を包含し、
該パースするステップは、
該複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を定義するステップと、
該別個の処理動作を行うことにより、該スライス層状態において該スライスヘッダ情報を処理するステップと、
該マクロブロック層状態において該複数のマクロブロック層レコードの該ヘッダ情報を処理する該別個の処理動作を行うことにより、該複数のマクロブロック層レコードから該周波数領域係数値のブロックを抽出するステップと、
各状態に対してそれぞれ異なる完了時間が経過して該複数の状態のシーケンスの次の状態に遷移するまで待つステップと
をさらに包含する、方法。
【請求項１０】
前記複数のマクロブロック層レコードは、予測的に符号化されたマクロブロック層レコードと双方向に予測的に符号化されたマクロブロック層レコードとを含み、該予測的に符号化されたマクロブロック層レコードのヘッダ情報のそれぞれは単一の動きベクトルを含み、該双方向に予測的に符号化されたマクロブロック層レコードのそれぞれは複数の動きベクトルを含み、
前記方法は、
該複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を適応的に調整するステップをさらに包含し、前記１以上のマクロブロック層状態に対して異なる完了時間が該予測的に符号化されたマクロブロック層レコードおよび該双方向に予測的に符号化されたマクロブロック層レコードの処理の内容に応じて変化する、請求項９に記載の方法。
【請求項１１】
前記ＭＰＥＧ−２データ信号の単一のイメージであって、スライスおよびマクロブロックから成る単一のイメージの復号化のために復号化されるべき複数のマクロブロック層レコードのタイプに基づく総処理時間が割り当てられ、前記複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を適応的に調整する前記ステップは、該総処理時間の各部分を該複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間として指定する、請求項１０に記載の方法。
【請求項１２】
前記複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を適応的に調整するステップをさらに包含し、該複数の状態のシーケンスの各状態に対して異なる完了時間は、マクロブロック復号化手段によりマクロブロック層レコードを処理する速度の変化に応じて変化する、請求項９に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅｓ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）によって仕様が定められるＭＰＥＧ−２形式に従って圧縮された画像データを処理するためのデコーダに関し、より詳細には、ＭＰＥＧ−２ビットストリームの各セグメントの復号に対して、異なる時間間隔が割り当てられ得るデコーダに関する。
【０００２】
【従来の技術】
ＭＰＥＧ−２規格のもとで実施されるビデオ信号圧縮は、本質的に可変速度である。ビデオデータは、画像シーケンスの空間周波数コンテンツに基づくか、またはシーケンス内の個々の画像のうちの空間周波数コンテンツの違いに基づいて圧縮される。
【０００３】
ＭＰＥＧ−２ビデオ符号化規格の教示として参照することにより本願に援用するＭＰＥＧ−２規格のシンタックスは、”Ｇｅｎｅｒｉｃ  Ｃｏｄｉｎｇ  ｏｆＭｏｖｉｎｇ  Ｐｉｃｔｕｒｅｓ  ａｎｄ  Ａｓｓｏｃｉａｔｅｄ  ＡｕｄｉｏＩｎｆｏｒｍａｔｉｏｎ：  Ｖｉｄｅｏ”と題され、ＩＳＯ／ＩＥＣ、Ｇｅｎｅｖａ、Ｓｗｉｔｚｅｒｌａｎｄから入手できるＩｎｔｅｒｎａｔｉｏｎａｌＳｔａｎｄａｒｄ  １３８１８−２  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ＩＴＵ−ＴＨ．２６２に説明されている。この規格は、オーディオおよびビデオデータ両方を伝達するために用いられるデータレコードのいくつかの層を定義する。簡略化の目的で、本明細書ではオーディオデータの復号は説明しない。特定のビデオシーケンスを説明する符号化データは、複数の入れ子状の層、即ちシーケンス層、映像グループ層、映像層、スライス層、およびマクロブロック層で表現される。マクロブロックレコードを除く各層は、その層を識別する開始コードで始まる。このレコードは、ヘッダーデータおよびペイロード（ｐａｙ  ｌｏａｄ）データを含む。
【０００４】
シーケンス層は、比較的大きな数の連続画像の復号に影響を及ぼす映像サイズおよびアスペクトレシオなどのパラメータを定義する。映像グループ層は、より小さい数の画像に対するパラメータを定義し、映像層は、単一画像に対するパラメータを定義する。一つの画像の中では、スライスレコードが、複数のマクロブロックから成る画像の水平セグメントに対するパラメータを定義する。
【０００５】
【発明が解決しようとする課題】
従って、実際の画像データは、マクロブロック層の中にある。典型的なＭＰＥＧ−２ビットストリームでは、映像、映像グループおよびシーケンスレコードより多いマクロブロックおよびスライスレコードがある。従って、シーケンスレコード、映像グループレコード、および映像レコードに対するヘッダーは、従来のマイクロプロセッサ上で動作するソフトウェアに適用されたアルゴリズムを用いて復号され得る。しかし、スライスレコードおよびマクロブロックレコードは、ビットストリーム中でより頻繁に発生し、典型的には専用目的のハードウェアを用いて復号される。
【０００６】
典型的なデコーダでは、スライス及びマクロブロックレコードのヘッダーを復号するのに用いられる回路は、マクロブロックレコードのペイロードを復号するのに用いられる回路によって束縛される。マクロブロック復号処理において任意の変更を行った場合、典型的には、スライスおよびマクロブロックヘッダーを処理する回路に対しても、対応する変更が行われる。例えば、既存のマクロブロックデコーダが、より小さなジオメトリ（例えば、１ミクロン処理から半ミクロン処理でトランスレイトされる）を有する半導体処理技術を用いて適用された場合、完全なビットストリームが適切に処理されるように、スライスおよびマクロブロックヘッダーを復号するハードウェアを再設計する必要があり得る。
【０００７】
【課題を解決するための手段】
本発明による装置は、所定のプロトコルに適合するデジタル符号化信号を処理する装置であって、該プロトコルは多数のレコードタイプを定義し、該多数のレコードタイプのそれぞれはヘッダ情報とペイロードデータとを含み、該装置は、該多数のレコードタイプのうち少なくとも選択されたレコードタイプ中の該ヘッダ情報をパースする状態マシンであって、該状態マシンは、それぞれ別個の処理動作を行う複数の状態を定義し、状態間の遷移は、該デジタル符号化信号を処理することによって決定される、状態マシンと、該状態マシンにおける該複数の状態の各状態に対して、それぞれ異なる完了時間に対応するそれぞれ異なるパースレートを設定する手段と、該複数の状態の各状態に対してそれぞれ異なるパースレートをルックアップテーブルにロードする手段と、該複数の状態のうち特定の状態によって表されるそれぞれ別個の該処理動作を行う処理手段と、該デジタル符号化信号の処理中に該特定の状態に対するパースレートを該ルックアップテーブルから取り出し、該特定の状態に対して取り出されたパースレートに対応するそれぞれ異なる完了時間が経過して該複数の状態のうち定義された次の状態に遷移するまで待つ遅延手段とを備え、それにより上記目的が達成される。
本発明による装置は、前記複数の状態の各状態に対してそれぞれ異なる完了時間を適応的に調整する手段をさらに含み、各状態に対して異なる完了時間は、前記デジタル符号化信号の前記ペイロードデータに応じて変化してもよい。
本発明による装置は、複数のスライス層レコードを有するＭＰＥＧ−２符号化信号を処理する装置であって、各スライス層レコードはヘッダ情報と複数のマクロブロック層レコードとを有しており、各マクロブロック層レコードはヘッダ情報と周波数領域係数値の複数のブロックとを有しており、該装置は、該複数のスライス層レコードの該ヘッダ情報をパースするようにそれぞれ別個の処理動作を実行する複数のスライス層状態と、該複数のマクロブロック層レコードの該ヘッダ情報をパースするようにそれぞれ別個の処理動作を実行する複数のマクロブロック層状態とを含む複数の状態のシーケンスを含むことにより、該ＭＰＥＧ−２符号化信号から該周波数領域係数値の複数のブロックを抽出する状態マシンと、該抽出された周波数領域係数値のブロックを空間領域画素値に変換するマクロブロック復号化手段とを備え、該状態マシンは、複数の状態のシーケンスの各状態に対して、それぞれ異なる完了時間に対応するパースレートを設定する手段と、該複数の状態の各状態に対してそれぞれ異なるパースレートをルックアップテーブルにロードする手段と、該それぞれのスライス層状態によって表されるそれぞれ別個の該処理動作を行う処理手段と、該それぞれのマクロブロック層状態によって表されるそれぞれ別個の処理動作であって、該複数のマクロブロック層レコードの該ヘッダ情報をパースするようにそれぞれ別個の処理動作を行うことにより、該複数のマクロブロック層レコードから該周波数領域係数値のブロックを抽出する処理手段と、該ＭＰＥＧ−２符号化信号の処理中に該複数の状態のシーケンスの各状態に対するパースレートを該ルックアップテーブルから取り出し、該複数の状態のシーケンスの各状態に対して取り出されたパースレートに対応するそれぞれ異なる完了時間が経過して該複数の状態のシーケンスの次の状態に遷移するまで待つ遅延手段とを含み、それにより上記目的が達成される。
前記複数のマクロブロック層レコードは、予測的に符号化されたマクロブロック層レコードと双方向に予測的に符号化されたマクロブロック層レコードとを含み、該予測的に符号化されたマクロブロック層レコードのヘッダ情報のそれぞれは単一の動きベクトルを含み、該双方向に予測的に符号化されたマクロブロック層レコードのそれぞれは複数の動きベクトルを含み、前記装置は、複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を適応的に調整する手段をさらに含み、該複数のマクロブロック層状態に対して異なる完了時間は、該予測的に符号化されたマクロブロック層レコードおよび該双方向に予測的に符号化されたマクロブロック層レコードの処理の内容に応じて変化してもよい。
前記ＭＰＥＧ−２データ信号の単一のイメージであって、スライスおよびマクロブロックから成る単一のイメージの復号化のために復号化されるべきマクロブロック層レコードのタイプに基づく総処理時間が割り当てられ、複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を適応的に調整する前記手段は、該総処理時間の各部分を該複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間として指定してもよい。
本発明による装置は、前記複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を適応的に調整する手段をさらに含んでおり、各状態に対してそれぞれ異なる完了時間はマクロブロック復号化手段によりマクロブロック層レコードを処理する速度の変化に応じて変化してもよい。
本発明による方法は、所定のプロトコルに適合するデジタル符号化信号を処理する方法であって、該プロトコルは多数のレコードタイプを定義し、該多数のレコードタイプのそれぞれはヘッダ情報とペイロードデータとを含み、該方法は、状態マシンの複数の状態においてそれぞれ別個の処理動作を行い、該デジタル符号化信号が処理される際に状態間を遷移することにより、該多数のレコードタイプのうち少なくとも選択されたレコードタイプにおける該ヘッダ情報をパースするステップと、該複数の状態に対してそれぞれ異なる完了時間を定義するステップと、該複数の状態のうちの特定の状態によって表されるそれぞれ別個の処理動作を行うステップと、該特定の状態に対してそれぞれ異なる該完了時間が経過して該複数の状態のうち定義された次の状態に遷移するまで待つステップとを包含し、それにより上記目的が達成される。
本発明による方法は、前記複数の状態の各状態に対してそれぞれ異なる完了時間を適応的に調整するステップをさらに包含し、各状態に対して異なる完了時間は、前記デジタル符号化信号の前記ペイロードデータに応じて変化してもよい。
本発明による方法は、複数のスライス層レコードを有するＭＰＥＧ−２符号化信号を処理する方法であって、各スライス層レコードはヘッダ情報と複数のマクロブロック層レコードとを有しており、各マクロブロック層レコードはヘッダ情報と周波数領域係数値の複数のブロックとを有しており、該方法は、状態マシンの複数の状態のシーケンスにおけるヘッダ情報をパースすることにより、該ＭＰＥＧ−２符号化信号から該周波数領域係数値の複数のブロックを抽出するステップであって、該複数の状態は、該スライス層レコードの該ヘッダ情報をパースする別個の処理動作を行うための１つ以上のスライス層状態と、該マクロブロック層レコードの該ヘッダ情報をパースする別個の処理動作を行うための１つ以上のマクロブロック層状態とを含む、ステップと、該抽出された周波数領域係数値のブロックを空間領域画素値に変換するステップとを包含し、該パースするステップは、該複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を定義するステップと、該別個の処理動作を行うことにより、該スライス層状態において該スライスヘッダ情報を処理するステップと、該マクロブロック層状態において該複数のマクロブロック層レコードの該ヘッダ情報を処理する該別個の処理動作を行うことにより、該複数のマクロブロック層レコードから該周波数領域係数値のブロックを抽出するステップと、各状態に対してそれぞれ異なる完了時間が経過して該複数の状態のシーケンスの次の状態に遷移するまで待つステップとをさらに包含し、それにより上記目的が達成される。
前記複数のマクロブロック層レコードは、予測的に符号化されたマクロブロック層レコードと双方向に予測的に符号化されたマクロブロック層レコードとを含み、該予測的に符号化されたマクロブロック層レコードのヘッダ情報のそれぞれは単一の動きベクトルを含み、該双方向に予測的に符号化されたマクロブロック層レコードのそれぞれは複数の動きベクトルを含み、前記方法は、該複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を適応的に調整するステップをさらに包含し、前記１以上のマクロブロック層状態に対して異なる完了時間が該予測的に符号化されたマクロブロック層レコードおよび該双方向に予測的に符号化されたマクロブロック層レコードの処理の内容に応じて変化してもよい。
前記ＭＰＥＧ−２データ信号の単一のイメージであって、スライスおよびマクロブロックから成る単一のイメージの復号化のために復号化されるべき複数のマクロブロック層レコードのタイプに基づく総処理時間が割り当てられ、前記複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を適応的に調整する前記ステップは、該総処理時間の各部分を該複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間として指定してもよい。
本発明による方法は、前記複数の状態のシーケンスの各状態に対してそれぞれ異なる完了時間を適応的に調整するステップをさらに包含し、該複数の状態のシーケンスの各状態に対して異なる完了時間は、マクロブロック復号化手段によりマクロブロック層レコードを処理する速度の変化に応じて変化してもよい。
【００２１】
本発明は、デジタル符号化された信号を復号する装置において実現される。装置は、符号化信号のヘッダー情報を解析する状態マシンを含む。状態マシンは、個別の解析処理に対応する状態を定義する。状態マシン内の各状態は、その状態に対して定義された処理時間を含む。ある状態から次の状態への移行は、その状態によって実行される実際の処理動作が完成したかどうかに拘わらず、所定の時間が終了するまで適用されない。キャッシュ（ｃａｃｈ）状態に対する処理時間は、状態マシンに結合されたマイクロプロセッサによって設定される。これらの処理時間は、画像コンテンツに基づいて変更されてもよく、または状態マシンを適用するのに使用する回路での変更を適応させるために変更されてもよい。また、状態変化に対する処理時間は、状態マシンに結合された他の処理要素での変更を適応させるために調節されてもよい。
【００２２】
本発明の局面の一つでは、状態マシンはＭＰＥＧ−２符号化画像データを復号し、スライスおよびマクロブロック層に対するＭＰＥＧ−２シンタックスを解析する。
【００２３】
本発明のさらに別の局面では、所定の数の復号サイクルが、画像を復号するために定義され、マイクロプロセッサが割り当てられた処理時間を調節し、所定の数の復号サイクルに入る画像に対する総処理時間を一致させる。
【００２４】
【発明の実施の形態】
以下、本発明を、ＭＰＥＧ−２データストリーム用のシンタックスパーサに関連して説明するが、本発明は、信号処理動作全体の中の一部として、プロトコルのシンタックスを解析することが望まれるようなデジタルデータプロトコルについて広範に実施可能である。以下の記載内容におけるＭＰＥＧ−２シンタックスは、デジタル信号用プロトコルの一例に過ぎない。
【００２５】
図１は、本発明の実施形態によるデコーダシステムの一例を示すブロック図である。このシステムは、デコードプロセッサ１１０、高帯域幅メモリ１２０および制御マイクロプロセッサ１３０の３つの構成要素を有する。本実施形態において用いられている高帯域幅メモリ１２０は、ＮＥＣおよび東芝から入手可能なＲＡＭＢＵＳメモリシステムである。
【００２６】
以下、図１に示すデコーダの動作を簡単に説明する。第１のステップとして、デコード集積回路（ＩＣ）１１０を、マイクロプロセッサ１３０によって特定のコンフィギュレーションに初期化する。このデコーダを、例えば、５２５Ｐ信号をデコードするために使用する場合、マイクロプロセッサインターフェース１１２を介してデコードプロセッサ１１０の内部回路に適切な制御値が付与される。便宜上、マイクロプロセッサ１３０とＩＣ１１０内の各部材との間の制御バスは省略している。このバスは、例えば、従来のＩ2Ｃバスであり得る。
【００２７】
ＩＣ１１０を初期化した後、入力ビットストリームをパーサ１１６に付与する。図２を参照して後述するパーサは、ビットストリームをメモリ１２０に格納するものである。さらに、パーサは、シーケンス層、グループオブピクチャ層およびピクチャ層の開始コードを特定し、これらの開始コードが格納されているメモリ位置をマイクロプロセッサ１３０に知らせる。図１に示すデコーダ例の場合、マイクロプロセッサが、これらの層のヘッダ情報をデコードする。
【００２８】
ＤＲＡＭ制御およびアドレス生成器１２６は、ビットストリームデータをメモリ１２０に格納するようにＲＡＣインターフェース１７０を制御する。本実施形態において、メモリ１２０の一部は、入力ビットストリームを保持するバッファとして使用できるように予約されている。このバッファ領域は、ＭＰＥＧ−２規格に記載されているＶＢＶバッファに相当する。
【００２９】
ビットストリームデータは、メモリ１２０のＶＢＶバッファ領域に書き込まれた後、やはりＤＲＡＭ制御およびアドレス生成回路１２６の制御下で、メモリ１２０から読み出されてバッファメモリ１２１に格納される。メモリ１２１は、メモリ１２０からバーストで書き込まれ、可変長デコーダ（ＶＬＤ）１１８によって空にされる（ｅｍｐｔｉｅｄ）ＦＩＦＯメモリである。この動作は、ビットストリームのシンタックスによって決まる。
【００３０】
ＶＬＤ１１８は、ビットストリームのスライス層およびマクロブロック層をデコードし、これにより、複数ブロックの量子化された離散コサイン変換係数値を生成する。これらのブロック単位の値は、ＦＩＦＯメモリ１２８に付与される。このＦＩＦＯメモリ１２８は、ＶＬＤ１１８およびマクロブロックデコード回路１３２間のデータをバッファリングする。このメモリは、ＭＰＥＧ−２規格で定められた逆スキャン機能をも果たし得る。回路１３２は、逆量子化器１３４を有する。逆量子化器１３４は、量子化された係数値を統一フォーマットに変換し、逆離散コサイン変換（ＩＤＣＴ）プロセッサは、周波数ドメイン係数を空間ドメインピクセル値または差分ピクセル値に変換する。逆量子化器１３４およびＩＤＣＴプロセッサ１４２は、これらの処理を行うための補助として、それぞれ、メモリ１３６および１４４を有する。回路１３２からの出力データは、ブロック単位のピクセル値または差分ピクセル値である。
【００３１】
このブロック単位の値がピクセル値である場合、これらのピクセル値は、動き補償プロセッサ１６１によって以前にデコードされた画像フレームの値と組み合わされる。動き補償プロセッサ１６１は、加算およびクリッピング回路１５８および１６０を有する。次に、これらの回路は、ハーフピクセルおよび補間回路１６６によって提供される以前にデコードされたフレームから画像データを得る。補間回路１６６は、バッファメモリ１６８を用いて、以前にデコードされたフレームから画像絵素（ピクセル）を得る。これらのメモリのデータ値は、ＤＲＡＭ制御およびアドレス生成回路１２６によってメモリ１２０から提供される。
【００３２】
動き補償プロセッサ１６１によって生成されたデコード済み画像は、バッファメモリ１６２および１６４に格納される。バッファメモリ１６２および１６４からのデコード済み画像データはメモリ１２０に格納され、その後、表示されるか、あるいは、後に受信する画像フィールドまたはフレームからの動き補償符号化されたデータをデコードする際に参照フレームデータとして使用される。表示されるデータは、メモリ１２０にブロックフォーマットで格納され、ラスタスキャンフォーマットでメモリ１７４に転送され、そして、ディスプレイプロセッサ１７５の制御下でディスプレイデバイス（図示せず）に与えられる。
【００３３】
オンスクリーンディスプレイ（ｏｎ−ｓｃｒｅｅｎ  ｄｉｓｐｌａｙ）（ＯＳＤ）プロセッサ１７１も、ＤＲＡＭ制御およびアドレス生成回路１２６およびＲＡＣインターフェース１７０を介してメモリ１２０に対してデータを送受信できるように接続されている。本実施形態の場合、ＯＳＤプロセッサ１７１は、ユーザメニューおよびクロースキャプションテキスト（ｃｌｏｓｅ−ｃａｐｔｉｏｎ
ｔｅｘｔ）を表示画像に重ねて表示する。
【００３４】
上記のように、ＶＬＤプロセッサ１１８は、ビットストリーム中のスライスおよびマクロブロック情報をデコードし、デコードおよび量子化された係数値をマクロブロックデコード回路１３２に送る。回路１３２が行う処理は、個別のブロックのピクセル値に対する逆離散コサイン変換の演算を含む。毎秒３０フレームのフレームレートを有する高精細度画像の場合、この処理を可能な限り高速に行うことが望ましい。なぜなら、１つの高精細度ビデオ画像フレームには多数のブロックが含まれているからである。もし、規格精細度の画像（即ち、ＭＰ＠ＭＬ）のみをデコードするのであれば、この処理はそれ程決定的にはならない。従って、処理しようとする画像の種類に応じて、非常に高速な処理技術（例えば、０．２ミクロン）を用いて、あるいは、比較的低速な処理技術（即ち、１ミクロン）を用いてマクロブロックデコーダを構成することが望ましい。
【００３５】
マクロブロックデコーダの構成に用いる処理技術を変更すると、マクロブロックの処理速度が変化し、ひいては、システム全体の同期化に影響を与える。ＶＬＤプロセッサ１１８をマクロブロックデコーダ１３２と同じ技術を用いて構成した場合、これらの２つのデコーダによって行われる処理ステップの釣り合いがとれないかもしれない。従って、所与のマクロブロックデコーダ処理構成について、ＶＬＤプロセッサ１１８を完全に設計し直すほうが望ましい場合がある。
【００３６】
あるいは、本発明において、ある状態から別の状態への遷移にかかる時間をプログラムできる状態マシンとしてＶＬＤプロセッサ１１８を設計してもよい。このように、処理技術の変更によって、ＶＬＤが、マクロブロックデコーダ１３２が対応できる速度よりも高速にビットストリームを処理するようになったとしても、ＶＬＤを再プログラムして選択された状態遷移にかかる時間を長くすることにより、ＶＬＤの処理をマクロブロックの処理に同期させることができる。
【００３７】
図２は、本発明による可変長デコーダ１１８のブロック図である。図２に示すように、圧縮されたＭＰＥＧ−２ビデオデータストリームが、シフトマルチプレクサ２１０によってメモリ１２１から受信される。シフトマルチプレクサ２１０は、４８ビット分のビットストリームを、可変レートパーサ２１２、ＶＬＣルックアップテーブル２１４およびマクロブロックパラメータデコーダ２２０に付与する。ＶＬＣルックアップテーブル２１４は、マクロブロックヘッダから取り出した複数の値を保持する。可変レートパーサ２１２は、これらの値を用いて、可変長符号化されたＤＣＴ係数値を固定長係数値に変換する。変換された固定長係数値は、ＭＰＥＧ−２可変レートパーサ２１２に付与される。ＶＬＣルックアップテーブルによって保持される値には、マクロブロックアドレシング値、マクロブロックタイプ、マクロブロックパターンおよびマクロブロック動きベクトルが含まれる。様々なレベルのレコードについてヘッダ情報は可変長符号化されていないので、可変レートパーサ２１２によってこの情報を直接ビットストリームから抽出することができる。可変レートパーサ２１２は、パースレートルックアップテーブル２１６にも接続される。図３〜図２２を参照して後述するように、パースレートルックアップテーブル２１６は、ＭＰＥＧ−２シンタックス全体で規定されている１組のシンタックス項目（ｓｙｎｔａｃｔｉｃａｌ  ｉｔｅｍｓ）のそれぞれについて、パースレートを規定する。図３を参照して後述するように、これらのシンタックス項目のそれぞれは、パーサ２１２の状態マシン構成の各状態によって識別される。パースレートルックアップテーブル２１６はマイクロプロセッサ１３０によってロードされ、その値は、可変レートパーサ２１２によって読み出される。
【００３８】
上記のように、ＶＬＤ１１８は、ＭＰＥＧ−２シンタックスのスライス層およびマクロブロック層しかデコードしない。このシンタックスのシーケンス層、グループオブピクチャ層およびピクチャ層は、マイクロプロセッサ１３０によってデコードされる。スライスおよびマクロブロックレコードのデコードに関するパラメータ値は、ピクチャデコードパラメータブロック２１８を介してマイクロプロセッサ１３０によって提供される。
【００３９】
可変レートパーサ２１２は、複数のマクロブロックを、個別ブロック単位のＤＣＴ係数値にパースする。マクロブロック層からパースされた上記係数値および他のヘッダ項目は、マクロブロックパラメータデコーダ２２０に提供される。このデコーダ２２０は、ＤＣＴ係数および動きベクトルをマクロブロックデコード回路１３２に提供する。制御回路２２２は、可変レートパーサ２１２に接続されており、デコーダ１３２が信号ＲＥＡＤＹをアサートしたときに複数ブロックのＤＣＴ係数をマクロブロックデコーダ１３２に提供する。
【００４０】
図３は、図１に示すＶＬＤプロセッサ１１８の状態マシン構成の状態図である。この状態マシンは、スライスおよびマクロブロックレコードのデコード処理を１５の状態に分割する。これらの各状態の定義は、後に図４〜図１９を参照して詳細に示す。
【００４１】
これら１５個の状態には、サーチ０  ３１０、サーチ１  ３１２、サーチ２  ３１４および開始コード３１６の４つの状態が含まれている。これらの状態は、ビットストリーム中の開始コード、具体的にはスライス開始コードの位置を特定する。スライス開始コードが特定されると、状態マシンはスライス状態３１８に遷移する。
【００４２】
状態マシンは、スライス状態３１８から、Ｘスライス情報状態３２０およびマクロブロックアドレス状態３２２に遷移する。状態３２２では、ビットストリームのマクロブロックヘッダ部分のデコードを開始する。ステップ３２２において、マクロブロックアドレスが算出された後、状態マシンは、状態３２４に遷移して、ビットストリーム中に含まれるマクロブロックヘッダ情報からマクロブロックタイプを決定する。ステップ３２４においてマクロブロックタイプが決定されると、状態マシンは状態３２６に遷移して、マクロブロック量子化情報を取り出すとともに、状態３２８を通して、同マクロブロックについて存在するあらゆる動きベクトルを取り出す。状態３２６において、マクロブロックが符号化されたマクロブロックであると判断した場合、制御は状態３３０に遷移してこの符号化されたマクロブロックを処理する。マクロブロックが符号化されたマクロブロックであると判断されなかった場合、状態３２６および状態３３０を経て、制御は状態３３２に遷移し、そして、マクロブロックデコーダ１３２が次のブロックの係数値を受け入れるための準備状態になるまで待機する。
【００４３】
マクロブロックは２つの方法でスキップされ得る。第１に、ＭＰＥＧ−２シンタックスにおいて、いくつかのマクロブロックを、ＭＰＥＧ−２シンタックスにおいてスキップされたマクロブロックとしてマークしておく方法がある。これらのマクロブロックレコードには、ヘッダ情報はあるが、係数値はない。マクロブロックをスキップするもう１つの方法は、以下の通りである。マクロブロックデコーダがビットストリーム中においてエラーに出くわして、そのスライス中の残りのブロックをスキップしようとするとき、いずれの場合にも、スキップ状態３３４が待機状態３３２を満足するというものである。待機状態が満足され、マクロブロックデコーダ１３２が次のブロックの係数値を受け入れると、状態マシンは、状態３３６に遷移して、これらの係数値をマクロブロックデコーダ１３２に提供する。これらの値を提供した後、状態マシンは、状態３３８に遷移して、同スライス中にまだ他のマクロブロックが存在するかどうかを判定する（その場合、状態マシンは状態３２２に遷移する）か、あるいは、新たなスライスが処理されるのかどうか（その場合、状態マシンは状態３１０に遷移する）を判定する。
【００４４】
上記のように、マイクロプロセッサは、完了時間（ｃｏｍｐｌｅｔｉｏｎ  ｔｉｍｅ）を割り当てる。完了時間とは、ある状態に入ってから、状態図において次に何らかの状態遷移が生じるまでの時間である。本構成の場合、ある状態において行われる全ての処理は、この時間間隔の間に行われる。実際の状態遷移は、この時間間隔によって示される回数だけシステムクロック周期が経過してからでないと起こらない。本構成によれば、ＶＬＤプロセッサを、各シンタックス項目について最悪ケースシンタックス処理（ｗｏｒｓｔ  ｃａｓｅ  ｓｙｎｔａｘ  ｐｒｏｃｅｓｓｉｎｇ）を行うように設計するのではなく、より短いあるいはより長い項目シンタックスを処理できるように適応的に変更することが可能になる。
【００４５】
例えば、ＭＰＥＧ規格に従って、マクロブロックは、デュアルプライムマクロブロックとして定義され得る。その場合、このマクロブロックは、４つの動きベクトルを含み得る。これに対して、フレーム内符号化されたマクロブロックには、動きベクトルが全くない。状態マシンが、フレーム内符号化されたマクロブロックをデコードしているとき、そのベクトル状態には短い処理時間あるいは０の処理時間が割り当てられ得る。しかし、システムがデュアルプライムマクロブロックをデコードしているときには、余分な動きベクトルを正しくデコードするために、そのベクトル状態に通常状態処理時間の２倍の処理時間が割り当てられ得る。
【００４６】
図４は、状態サーチ０  ３１０における状態マシンの動作を示すフローチャートである。この処理における第１のステップはステップ４１２である。ステップ４１２において、可変レートパーサ２１２は、前の状態の処理時間が経過し終わるまで待機し、そして、状態サーチ０のパースレートルックアップテーブル２１６にアクセスする。テーブル２１６から返される値は、状態マシンが状態サーチ０から他の状態に遷移できるようになるまでに経過するシステムクロックパルス数を規定する値である。サーチ０処理における第１のステップはステップ４１４である。ステップ４１４においては、入力ビットストリームを分析することにより、ビットストリーム中の次のバイトがスライス開始コード値を表すものであるかどうかを判定する。本願において対象となる開始コード値は、画像フレームにおけるスライスの垂直位置に応じて０ｘ０１〜０ｘＡＦまでの値をとり得るスライス開始コードである。
【００４７】
ステップ４１４においてスライス開始コード値が見つかった場合、状態マシンは、次に、図８を参照して後述するスライス状態３１８に遷移する。ステップ４１４においてスライス開始コード値が見つからなかった場合、サーチ０処理における次のステップ（ステップ４１６）において、ビットストリーム中の次のバイトが開始コードプレフィックスに対応しているかどうかを判定する。ＭＰＥＧ−２規格の定義によれば、開始コードプレフィックスとは、２３個の「０」ビットに１つの「１」ビットが付いたストリングである。ビットストリーム中において開始コードが見つかったかどうかを判定するために、状態マシンは、パーサによって別々に解析される「０」の集まりの全てについて、その「０」の個数を計数する。従って、ビットストリーム中において開始コードプレフィックスが見つかったかどうかを判定する際に、ステップ４１６では、次のバイトの値が「１」であり且つこの１つの「１」バイトの直前に少なくとも２つの「０」バイトが計数されていたかどうかを判定する。これらの条件を満足すると、ステップ４１６において開始コードプレフィックスが見つかったと判定され、状態マシンは、次に、開始コード状態３１６に遷移する。見つからなかった場合、制御はステップ４１８に進む。
【００４８】
ステップ４１８において、サーチ０処理は、ビットストリーム中の以降のバイトが複数の「０」バイトであるかどうかを判定する。そうであった場合、これらの「０」バイトをビットストリームから除去し、現在の「０」バイトカウント値を、サーチ０状態のローカル変数（図示せず）に格納し、サーチ２状態３１４を状態マシンの次の状態としてマークする。そうでなかった場合、ステップ３２０を実行する。ステップ３２０では、ビットストリーム中の次のバイトが０であるかどうかを判定する。そうであった場合、この「０」バイトをビットストリームから除去し、現在の「０」カウント値を１つだけインクリメントし、状態マシンの次の状態を状態サーチ１とする。ビットストリーム中に１つも「０」バイトが含まれていない場合、ビットストリーム中の次のバイトは非「０」でなければならない。従って、このバイトをビットストリームから除去し、制御はステップ４１２に進む。これは、実質的に、状態サーチ０から状態サーチ０に戻る遷移である。ステップ４１２において、サーチ０状態３１０は、既に状態サーチ０に割り当てられた時間が経過するまで待機し、そして、状態サーチ０に新たに割り当てられた時間をフェッチする。
【００４９】
図５は、状態サーチ１のフローチャートである。サーチ１状態３１２の処理は、ステップ５１０から開始される。ステップ５１０は、前の状態に割り当てられた時間が経過するまで待機し、そして、パースレートルックアップテーブル２１６（図２に図示）から状態サーチ１の新しい割り当て時間をフェッチする。状態サーチ１の割り当て時間をフェッチした後、ステップ５１２を実行して、ビットストリーム中の次のバイトがスタート開始コード値に対応するかどうかを判定する。そうであった場合、制御は、スライス状態３１８に遷移する。ステップ５１２においてスライス開始コードが見つからなかった場合、ステップ５１４を実行して、ビットストリーム中の次のバイトがスライス開始コードプレフィックスに対応するかどうかを判定する。ステップ５１４においてプレフィックスが見つかった場合、状態マシンは開始コード状態３１６に遷移する。ステップ５１４において開始コードプレフィックスが見つからなかった場合、ステップ５１６において、ビットストリーム中の次の１バイトまたは次の複数バイトの値が「０」であるかどうかを判定する。そうであった場合、状態マシンは次にサーチ２状態３１４に遷移する。逆にビットストリーム中の次のバイトが「０」でなかった場合、状態マシンは次にサーチ０状態３１０に遷移する。
【００５０】
図６は、サーチ２状態３１４で行われる処理を示すフローチャートである。この状態は、ＭＰＥＧビットストリーム内のある開始コードの前に挿入されるゼロ値スタフィングビットを処理する。サーチ２状態３１４は、ステップ６１０で開始される。ステップ６１０においては、状態マシンが、前の状態に割り当てられた時間が経過するまで待ち、その後、サーチ２状態に現在割り当てられている時間をパースレートルックアップテーブル２１６からフェッチする。ステップ６１０の後、制御は、ステップ６１２に移り、ビットストリーム内の次のバイトがスライスに対応しているか否かを決定する。対応している場合、状態マシンは、スライス状態３１８に移る。それ以外の場合、ステップ６１４が実行される。ステップ６１４において、サーチ２プロセスが、ビットストリーム内の次のバイトが開始コードプレフィスクに対応しているか否かを決定する。開始コードプレフィスクがステップ６１４で見い出される場合、状態マシンは開始コード状態３１６に移る。それ以外の場合、制御は、サーチ２プロセスのステップ６１６に移る。ステップ６１６は、ビットストリーム内の次のバイトがゼロであるか否かを決定する。ゼロである場合、これらのゼロ値バイトがビットストリームから除去されて、制御はステップ６１０に移る。これは本質的に、状態サーチ２自体からの移行である。ビットストリームがスタフィングビットの長いシーケンスを含む場合、状態サーチ２は、すべてのスタフィングビットがビットストリームから除去されるまで、ループバックし続ける。ステップ６１６においてビットストリーム内の次のバイトが０でない場合、状態マシンは、図４を参照して上述したサーチ０状態３１０に移る。
【００５１】
図７は、開始コード状態３１６における状態マシンの動作を示すフローチャートである。このプロセスのステップ７１０は、前の状態が完了するまで待ち、開始コード状態に現在割り当てられている時間量をルックアップテーブル２１６からフェッチする。上述したように、状態マシンは、開始コードプレフィスクがビットストリーム内に見出された場合、開始コード状態に入る。ステップ７１２において、開始コードプレフィクスは、ビットストリームから除去され、ビットストリームの次のバイトが調べられて、次のバイトがスライス開始コード値に対応しているか否かが決定される。対応している場合、状態マシンは、スライス状態３１８に移る。それ以外の場合、開始コード値は、スライス開始コード値ではなく、状態マシンはサーチ０状態３１０に移る。
【００５２】
図８は、スライス状態３１８における状態マシンの動作を示すフローチャートである。ステップ８１０において、プロセスは、前の状態の処理が完了するまで待ち、スライス処理に現在割り当てられている時間をパースレートルックアップテーブル２１６からフェッチする。上記で言及したＭＰＥＧ−２仕様書からのスライスヘッダ用シンタックスダイアグラムである表１に示すように、スライスヘ
ッダ内の最初の項目は、スライス用の量子化器スケール情報である。
表１
マクロブロック
【００５３】
【表１】
0003797830.tif 000002
【００５４】
マクロブロックシンタックスで用いられる用語は、上記で言及したＭＰＥＧ−２ビデオ仕様書内で定義されている。
【００５５】
ステップ８１２において、この情報がビットストリームから取り出されて保存される。ステップ８１４において、ビットストリーム内の次のビットが調べられて、このスライス用に追加の情報が定義されているか否かが決定される。定義されている場合、状態マシンはＸスライス情報状態３２０に移る。それ以外の場合、追加のビットに続く次の情報がマクロブロックの始まりとなる。マクロブロックの処理は、状態マクロブロックアドレス３２２への状態マシンの移行から始まる。
【００５６】
図９は、状態Ｘスライス情報３２０における状態マシンの動作を示すフローチャートである。状態マシンは、ステップ９１０で、前の状態が完了するまで待ち、Ｘスライス情報状態に現在割り当てられている時間をフェッチする。その後、ステップ９１２が呼び出されて、ビットストリームからの追加の情報が廃棄される。ステップ９１４において、プロセスは、除去された追加の情報記録の直後のバイトをチェックして、別の追加の情報記録がスライスヘッダに含まれているか否かを決定する。含まれている場合、制御は、ステップ９１０に移る。ステップ９１０は、本質的に、Ｘスライス情報状態３２０からのそれ自体への移行であり、ステップ９１０において、次の追加の情報記録が除去される。一旦、すべての追加の情報記録がスライスヘッダから廃棄されると、ステップ９１４によって、状態マシンは状態マクロブロックアドレス３２２に移る。
【００５７】
図１０は、状態マクロブロックアドレス３２２によって行われるプロセスを示すフローチャートである。図１０に示すプロセスは、前の状態が完了するまで待ち、マクロブロックアドレスに現在割り当てられている数のクロックサイクルをパースレートルックアップテーブル２１６からフェッチした後、ステップ１０１２でマクロブロックアドレスを演算する。ＭＰＥＧ規格において、スライス用開始コードは、再生画像上でスライスの垂直方向位置を示すように符号化される。さらに、マクロブロック用ＭＰＥＧ−２シンタックスである表３に示すように、マクロブロック記録の最初の項目は、スライス内でのマクロブロックのアドレスを定義するアドレスインクリメント値である。ステップ１０１２は、開始コード値とアドレスインクリメント値とをビットストリームから取り出し、現在のスライス開始コード値を用いて、画像内のマクロブロック用アドレスを計算する。ステップ１０１２の後、状態マシンは状態マクロブロックタイプ３２４に移る。
【００５８】
図１１は、状態マクロブロックタイプ３２４によって行われる処理を示すフローチャートである。ステップ１１１０において、状態マシンは、前の状態が完了するまで待ち、状態マクロブロックタイプに現在割り当てられている時間をフェッチする。その後、ステップ１１１２が実行されて、マクロブロックヘッダからマクロブロックタイプフィールドがフェッチされる。
【００５９】
マクロブロックタイプは、マクロブロックによって行われる動作補償処理がフレームベースであるかフィールドベースであるか、および、マクロブロックのＤＣＴ符号化がフレームベースであるかフィールドベースであるかを決定する。ステップ１１１４において、これらの値が状態マシンにより保存される。ステップ１１１４の後、状態マシンは、マクロブロック量子化器状態３２６に移る。
【００６０】
図１２は、マクロブロック量子化器状態３２６中に行われる処理を示すフローチャートである。以下に述べるように、状態マシンは、各マクロブロックについて数回この状態に入り得る。なぜなら、この状態は、マクロブロックから動作ベクトル情報を抽出するベクトル状態への状態移行を含むからである。マクロブロックシンタックスが、状態３２６が最初に呼び出された後の複数回の呼び出しの間、適切に解釈されることを確実にするために、いくつかのブール変数、すなわち、Ｑ  ＳＣＡＬＥ、ＧＯＴ  ＦＯＲＷＡＲＤ、およびＧＯＴ  ＢＡＣＫＷＡＲＤが定義されている。これらのブール変数の使用を以下に述べる。
【００６１】
ステップ１２１０において、状態マシンは前の状態が完了するまで待ち、マクロブロック量子化器状態に現在割り当てられている時間をフェッチする。ステップ１２１２において、状態マシンは、ブール状態変数Ｑ  ＳＣＡＬＥをテストして、マクロブロック用量子化器スケール符号が獲得されたか否かを決定する。獲得されていない場合、マクロブロック量子化器は、ステップ１２１４において、マクロブロック用量子化器スケール符号としてビットストリームから次の値をフェッチし、ステップ１２１６において、ブール変数ＧＯＴ  Ｑ  ＳＣＡＬＥを設定する。次に、マクロブロック量子化器プロセスは、ステップ１２１８において、ブール変数ＧＯＴ  ＦＯＲＷＡＲＤをテストして、フォワード動作ベクトルがこのマクロブロック用に獲得されたか否かを決定する。獲得されていない場合、ステップ１２２０において、ブール変数ＧＯＴ  ＦＯＲＷＡＲＤが設定され、状態マシンはベクトル状態３２８に移る。しかし、ステップ１２１８において変数ＧＯＴ  ＦＯＲＷＡＲＤが設定されている場合は、制御はステップ１２２２に移って、ブール変数ＧＯＴ  ＢＡＣＫＷＡＲＤがテストされる。マクロブロック用にバックワード動作ベクトルが獲得されている場合、このブール変数が設定される。獲得されていない場合、制御はステップ１２２４に移る。ステップ１２２４において、ブール変数ＧＯＴ  ＢＡＣＫＷＡＲＤが設定され、状態マシンの次の状態がベクトル状態３２８に設定される。ステップ１２２２においてブール変数ＧＯＴ  ＢＡＣＫＷＡＲＤが設定された場合、ステップ１２２６が呼び出されて、マクロブロックヘッダ内にマーカビットが存在するか否かが決定される。存在する場合、ステップ１２２８が呼び出されて、ビットストリームからマーカビットが廃棄され、制御はステップ１２３０に移る。ステップ１２３０はマクロブロックヘッダがマーカビットを含まない場合にはステップ１２２６の後に実行される。ステップ１２３０において、状態マクロブロック量子化器は、マクロブロックが符号化ブロックパターンを含むか否かを決定する。含む場合、状態マシンは、符号化ブロック状態３３０に移る。それ以外の場合、マクロブロックのブロックはマクロブロックプロセッサ１３２（図１に示す）に進む準備が整っており、状態マシンは待機状態３３２に移る。
【００６２】
図１３および図１４は、ベクトル状態３２８における状態マシンの動作を示すフローチャートである。ステップ３１０において、状態マシンは、前の状態が完了するまで待ち、ベクトル状態に現在割り当てられている時間をパースレートルックアップテーブル２１６からフェッチする。図１２を参照して上述したように、ベクトル状態は、フォワード動作ベクトルまたはバックワード動作ベクトルのいずれかをフェッチするために呼び出される。ＭＰＥＧ規格においては、マクロブロックは単一のフォワード動作ベクトルを有する予想されたマクロブロック、フォワード動作ベクトルとバックワード動作ベクトルとを有する双方向に予想されたマクロブロック、または各フィールドに対して１つずつ、すなわち２つのフォワード動作ベクトルと２つのバックワード動作ベクトルとを有するデュアルプライムマクロブロックとして指定され得る。
【００６３】
ベクトルプロセスのステップ１３１２において、マクロブロックヘッダがテストされ、マクロブロックが１セットの動作ベクトルと２セットの動作ベクトルのいずれを有するかが決定される。マクロブロックが２セットの動作ベクトルを有する場合、制御はステップ１３１４に移って、マクロブロックヘッダから第１の動作ベクトル用の動作垂直フィールド選択値がフェッチされる。その後、制御はステップ１３２０に移る。ステップ１３２０は、プロセスＧＥＴ  ＶＥＣＴを呼び出して、２ベクトルセットのうちの第１の動作ベクトル用に、マクロブロックヘッダから実際の動作ベクトル情報をフェッチする。このステップは以下に図１４を参照して詳細に述べる。ステップ１３２０の後、ステップ１３２２が実行され、第２の動作ベクトル用の動作垂直フィールド選択値がフェッチされ保存される。ステップ１３２２の後、ステップ１３２４でプロセスＧＥＴ  ＶＥＣＴが再び呼び出され、ビットストリームから動作ベクトルセットの第２の動作ベクトル用の動作ベクトル値が抽出される。ステップ１３１２において、プロセスが、マクロブロックがわずか１つの動作ベクトルのみを含むと決定した場合、制御はステップ１３１６に移る。ステップ１３１６において、単一の動作ベクトルが動作垂直フィールド選択値を含むか否かが決定される。含む場合、ステップ１３１８において、この情報が動作ベクトルヘッダから取り出され、制御はステップ１３２４に移る。ステップ１３２４において、実際のベクトル情報がフェッチされる。ステップ１３２４の後、状態マシンはマクロブロック量子化器状態３２６に移る。状態マシンは、ベクトル状態３２８の後再びこの状態になって、マクロブロックから獲得する必要のある動作ベクトルが他にないことを確認する。双方向に符号化された画像内のデュアルプライムマクロブロックの場合でさえも、ある与えられたマクロブロックに関して必要な、マクロブロック量子化器状態を介する通過は僅か２つであるべきである。
【００６４】
図１４は、図１３のステップ１３２０および１３２４に示すプロセスＧＥＴ  ＶＥＣＴの動作を示すフローチャートである。このプロセスの第１のステップであるステップ１４１２において、水平動作符号がマクロブロック内の動作ベクトル情報からフェッチされる。ステップ１４１４において、動作ベクトル情報の次のビットがビットストリームからフェッチされ、この動作ベクトル用の残留情報が存在するか否かが決定される。存在する場合、ステップ１４１６において、残留情報がビットストリームから取り出されて保存される。ステップ１４１８および１４２０において、ビットストリーム内の次の情報がテストされて、動作ベクトルがデュアルプライム動作ベクトルであるか否かが決定される。ステップ１４２２、１４２４、１４２６、１４２８および１４３０において、上記プロセスが反復される。但し、これらのステップにおいては、垂直動作ベクトル情報がフェッチされる。ステップ１４３２は、プロセスＧＥＴ  ＶＥＣＴの終わりである。このステップの後、プロセスはベクトル状態３２８の、ＧＥＴ  ＶＥＣＴの呼び出しの直後の点に戻る。
【００６５】
図１５は、状態マシンの符号化ブロック状態３３０によって実行されるプロセスを示すフローチャートである。ステップ１５１０において、符号化ブロックプロセスは、前の状態が完了するまで待ち、パースレートルックアップテーブル２１６から、符号化ブロック状態に現在割り当てられている時間値をフェッチする。ステップ１５１２において、プロセスは、マクロブロックヘッダから符号化ブロック情報をフェッチする。一旦ステップ１５１２において符号化ブロック情報がフェッチされると、マクロブロックのブロックはマクロブロックプロセッサ１３２に送られる準備が整い、その結果、状態マシンは待機状態３３２に入る。
【００６６】
図１６は、待機状態３３２の動作を示すフローチャートである。ステップ１６１０において、状態マシンは、前の状態が完了するまで待ち、パースレートルックアップテーブル２１６から、待機状態に現在割り当てられている時間をフェッチする。ステップ１６１２において、待機状態は、マクロブロックデコーダ１３２によって供給されるＲＥＡＤＹ信号が、デコーダ１３２が別のマクロブロックを受け入れる準備が整ったことを示すか否かを決定する。準備が整っていない間、ステップ１６１２が反復され、マクロブロックデコーダ１３２により供給されるこの信号をテストし続ける。
【００６７】
一旦マクロブロックデコーダが、デコーディング用にマクロブロックを受け入れる準備が整ったことを示すと、制御はステップ１６１４に移って、マクロブロックがスキップされたマクロブロックか否かを決定する。上述したように、マクロブロックは２つの場合にスキップされる：１）マクロブロックがＭＰＥＧ−２シンタックス内でスキップされるとマーキングされている場合、および２）マクロブロックデコーダがエラーになり、スライス記録内の残りのマクロブロックをスキップするようにパーサ２１２に指示した場合。ステップ６１４においてマクロブロックスキップフラグがセットされた場合、状態マシンはスキップ状態３３４に移る。それ以外の場合、状態マシンは、ブロック状態３３６に移る。
【００６８】
図１７は、ブロック状態３３６の動作を示すフローチャートである。ステップ１７１０において、プロセスは、処理されたばかりのブロックが現在のマクロブロックの最後のブロックであったか否かを決定する。最後のブロックであった場合、状態マシンは終了状態３３８に移る。それ以外の場合、ステップ１７１２が実行されて、マクロブロックデコーダ１３２がＲＥＡＤＹ信号をアサートしたか否かが決定される。マクロブロックデコーダ１３２は、逆量子化および逆離散コサイン変換処理用のブロックを受け取る準備が整ったときにＲＥＡＤＹ信号を供給する。ブロックを受け取る準備が整ったときに、ステップ１７１４が実行されて、制御はマクロブロックデコーダ１３２に移る。ステップ１７１４でブロックを処理した後、制御は上述したようにステップ１７１０に移る。マクロブロック内のすべてのブロックが処理されるまで、このプロセスが続けられる。
【００６９】
図１８は、スキップ状態３３４の動作を示すフローチャート図である。スキップ状態は、ステップ１８１４、すなわちスキップされたブロックの処理以外は、ブロック状態と実質的に同じである。このステップは、１）マクロブロックがＭＰＥＧ−２シンタックスにおけるスキップされたマクロブロックとしてマークされた場合は何もせず、あるいは２）ブロックがマクロブロックデコーダ中のエラーによりスキップされた場合は、スキップされるブロックに対応するバイトをビットストリームから除去する。これは、マクロブロック中の全てのブロックが処理されるまで継続される。最後のブロックが処理された後、ステップ１８１０は制御を待機状態３３２に移す。
【００７０】
図１９は、終了状態（Ｅｎｄ  ｓｔａｔｅ）３３８における状態マシンの動作を示すフローチャート図である。ステップ１９１０において、状態マシンは、以前の状態が完了するのを待ち、終了状態に割り当てられた現在時刻を、パースレートルックアップテーブル２１６から取り出す。状態１９１２において、状態マシンは、現在のスライスの処理が完了しているか否かを決定する。もし完了していれば、制御はステップ１９１４に移って、デコーダが別のスライスを処理する準備ができるまで待つ。ステップ１９１４の後、制御はサーチ０状態３１０に移り、図４を参照して上述したように次のスライスレコードの開始コードのサーチを開始する。
【００７１】
ステップ１９１２において、このスライス中において処理されるべきマクロブロックがまだあれば、ステップ１９１６が実行されてビットストリーム中の次のバイトが開始コードに対応するか否かを決定する。もし対応していなければ、スライス中に少なくとも１つのマクロブロックが存在しており、状態マシンにおける次の状態が図１０を参照して上述したマクロブロックアドレス状態３２２に設定される。ステップ１９１６においてビットストリーム中の次のバイトが開始コードに対応していれば、スライス中の最後のマクロブロックは既に処理されており、サーチ０状態３１０が状態マシンの次の状態として設定される。
【００７２】
図２０、２１、および２２は、本発明の状態マシンの応用例を示している。これらの図の各々は、マクロブロックを復号化するために用いられる一連の状態を示している。図２０は、スライス中の最初のマクロブロックであるフレーム内またはフィールドイントラコード化マクロブロックの復号化の一例を示している。終了状態３３８に始まり、状態マシンはサーチ０状態３１０に遷移し、次にサーチ１状態３１２に遷移し、そして開始コード状態３１６に遷移する。処理のこの時点において、状態マシンはビットストリーム中の開始コードに既に遭遇している。また状態３１６において、開始コードがスライス開始コードであると決定され、状態マシンの次の状態がスライス状態３１８にされ、この状態においてスライス状態が復号化される。
【００７３】
状態３３８、３１０、３１２、３１６、および３１８の各々は、比較的少量の処理を必要とする。従って、これらの状態の各々は、１つの状態サイクル時間内で完了され得る。しかし、プロセス内の次の状態である状態マクロブロックアドレス３２２は図２０に示した以前の状態のいずれよりも多くの処理時間を必要とする。パースレートルックアップテーブル２１６において、この状態には以前の状態のいずれよりも２倍の状態処理時間が割り当てられる。これを図面において状態３２２の太い境界線で表している。マクロブロックアドレス状態３２２の後、状態マシンはマクロブロックタイプ状態３２４、マクロブロック量子化器３２６状態に遷移した後、待機状態３３２に遷移し、マクロブロックデコーダ１３２がイントラコード化されたマクロブロックのブロックを受け入れるのを待つ。
【００７４】
図２１は、スライス中の最初のマクロブロックではない、予測的に符号化されたマクロブロック（Ｐ−フレームまたはＰ−フィールド）を復号化する際における、状態マシンの動作を示す。図２１は終了状態３３８から始まった後、マクロブロックアドレス状態３３２が続き、図２０と同様に、終了状態には１状態時間が与えられ、マクロブロックアドレス状態３３２には２状態時間が与えられる。状態３２２の後、状態マシンはマクロブロックタイプ状態３２４およびマクロブロック量子化器状態３２６に遷移する。状態３２６の後、状態マシンはベクトル状態３２８に遷移する。ベクトル状態における処理は他の状態におけるよりもより広範に行われるため、２状態処理時間がベクトル状態３２８に割り当てられる。図１２および１３を参照して上述したように、ベクトル状態の処理後、状態マシンは再びマクロブロック量子化器状態に戻り、得るべき動きベクトルが他に無いことを確実にする。これは予測的に符号化されたマクロブロックであるため、ビットストリームは１つの動きベクトルしか含まない。マクロブロック量子化器状態３２６の後、状態マシンは符号化ブロック状態３３０に遷移した後、待機状態３３２に遷移する。
【００７５】
図２２は、デュアル−プライムマクロブロックでもある双方向符号化されたマクロブロックを処理する際の状態マシンの動作を示している。上述のように、このマクロブロックは４組の動きベクトルを有している。図２２に示す状態マシンの最初の５つの状態は、図２１と同じである。しかし、最初の動きベクトル群が得られた後、２度目のベクトル状態が呼び出されることにより、図１３を参照して上述したデュアルプライムマクロブロックのために第２の組の順方向動きベクトルを得る。ベクトル状態が２度目に呼び出された後、状態マシンはマクロブロック量子化器状態３２６に遷移し、そして最初の逆方向動きベクトルを得るために再びベクトル状態３２８に遷移する。これはデュアルプライム動きベクトルであるため、ベクトル状態が再び呼び出されることにより第２の逆方向動きベクトルを得る。ベクトル状態が２度目に呼び出された後、マクロブロック量子化器状態３２６が再び呼び出され、その後待機状態３３２となる。
【００７６】
図３に示す状態マシンにおいて、各状態時間に対してｎ回のクロックサイクルが割り当てられているならば、図２０に示すイントラコード化マクロブロックのシンタックス処理は１０状態時間にわたり、一方、図２１に示す予測的に符号化されたマクロブロックに対する処理は１０状態時間にわたり、図２２に示す双方向符号化されたマクロブロックに対する処理は１６状態時間にわたる。
【００７７】
従来の可変長デコーダにおいては、ビットストリーム中の全てのマクロブロックのシンタックス処理に割り当てられた時間は、最悪の場合の処理（図２２に示したもの）に適合する必要がある。対して、処理時間を様々な状態に対して適応的に割当てることにより、本発明のデコーダは、スライスおよびマクロブロックのシンタックス処理において多大な時間節約を達成し得る。この時間節約は、より低速なシンタックスプロセッサが、比較的高速なマクロブロックデコーダとともに動作することを可能にする。また、状態遅延を増加し得るため、本来甚大なシンタックスプロセッサは、より低速なマクロブロックデコーダと適合するように単に状態遅延を増加することにより、低速化され得る。従って、可変速パーサ２１２およびマクロブロックデコーダ１３２の所与の集積回路（ＩＣ）実施態様はスケールアップまたはスケールダウンされ得、また得られたＩＣにおける任意のタイミング変化はパーサ２１２の状態タイミングを調整することによって補償され得る。
【００７８】
本発明をＭＰＥＧ−２デコーダ用のマクロブロックシンタックスプロセッサについて説明したが、本発明は、入力信号を処理することにより別のプロセッサで処理される情報を抽出する任意の状態マシンについて、実施され得る。このようにしてプリプロセッサは、様々な他の処理ハードウェアに適合され得る。
【００７９】
本発明を例示的な実施形態について説明したが、本発明は、付属の請求の範囲内において上記に概説したように実施され得ることが意図される。
【００８０】
ＭＰＥＧ−２映像信号デコーダは、状態マシンとして実現されるシンタックスパーサを有している。状態マシンは、ＭＰＥＧ−２ビットストリームを復号化するために別個の処理動作が行われる、複数の状態を規定する。状態マシンの各状態について異なる処理時間が確立される。状態の各処理時間の終わりよりも前に特定の状態のための処理が完了しても、その時間区間の終わりまではその状態から次の状態への遷移は起こらない。各状態のための処理時間は、状態マシンに結合されたマイクロプロセッサによって設定される。各状態のための処理時間は、イメージの内容に基づいて、あるいは状態マシンを実現するために用いられた回路中の変化に対応するために、変化され得る。状態の処理時間はまた、状態マシンとは別であるが自身が行う処理について状態マシンに依存するような他の処理要素中の変化に対応するようにも、調節され得る。処理時間を変化させるための一つの方法は、イメージまたは一連のイメージの処理を、所定の最大時間区間に適合させることである。
【００８１】
【発明の効果】
本発明における可変速度ＭＰＥＧ−２ビデオシンタックスプロセッサによって、ＭＰＥＧ−２形式に従って圧縮された画像データを処理するためのデコーダが提供される。本発明によると、ＭＰＥＧ−２ビットストリームの各セグメントの復号に対して、異なる時間間隔が割り当てられ得る。
【図面の簡単な説明】
【図１】本発明の実施形態を含むＭＰＥＧ−２ビデオデコーダのブロック図である。
【図２】図１に示すビデオデコーダにおいて使用するのに適切なＶＬＤデコーダのブロック図である。
【図３】本発明の実施形態を含む状態マシンの状態図である。
【図４】状態マシンが図３に示すサーチ０状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図５】状態マシンが図３に示すサーチ１状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図６】状態マシンが図３に示すサーチ２状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図７】状態マシンが図３に示す開始コード状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図８】状態マシンが図３に示すスライス状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図９】状態マシンが図３に示すＸスライス情報状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図１０】状態マシンが図３に示すマクロブロックアドレス状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図１１】状態マシンが図３に示すマクロブロックタイプ状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図１２】状態マシンが図３に示すマクロブロック量子化状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図１３】状態マシンが図３に示すベクトル状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図１４】図１３に示すフローチャートのＧＥＴ  ＶＥＣＴ手順を説明するのに役立つフローチャートである。
【図１５】状態マシンが図３に示す符号化ブロック状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図１６】状態マシンが図３に示す待機状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図１７】状態マシンが図３に示すブロック状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図１８】状態マシンが図３に示すスキップ状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図１９】状態マシンが図３に示す終了状態にあるときに、状態マシンによって実行される処理を説明するのに役立つフローチャートである。
【図２０】フレーム内符号化マクロブロックの復号において、図３に示す状態マシンによって実行される模範的な状態移行の図である。
【図２１】予測的符号化マクロブロックの復号において、図３に示す状態マシンによって実行される模範的な状態移行の図である。
【図２２】双方向性予測的符号化マクロブロックの復号において、図３に示す状態マシンによって実行される模範的な状態移行の図である。
【符号の説明】
１１０  デコード集積回路
１１２  マイクロプロセッサインターフェース
１１６  パーサ
１１８  可変長デコーダ
１２０、１２１  メモリ
１２６  アドレス生成器
１２８  メモリ
１３０  マイクロプロセッサ
１３２  マクロブロックデコード回路
１３４  逆量子化器
１３６、１４４、１５０、１６２メモリ
１５８、１６０  加算およびクリッピング
１６１  動き補償プロセッサ
１６４、１６８、１７４  メモリ
１６６  ハーフピクセルおよび補間
１７０  ＲＡＣインターフェース
１７１  ＯＳＤプロセッサ
１７５  ディスプレイ制御
【図１】
0003797830.tif 000003
【図２】
0003797830.tif 000004
【図３】
0003797830.tif 000005
【図４】
0003797830.tif 000006
【図５】
0003797830.tif 000007
【図６】
0003797830.tif 000008
【図７】
0003797830.tif 000009
【図８】
0003797830.tif 000010
【図９】
0003797830.tif 000011
【図１０】
0003797830.tif 000012
【図１１】
0003797830.tif 000013
【図１２】
0003797830.tif 000014
【図１３】
0003797830.tif 000015
【図１４】
0003797830.tif 000016
【図１５】
0003797830.tif 000017
【図１６】
0003797830.tif 000018
【図１７】
0003797830.tif 000019
【図１８】
0003797830.tif 000020
【図１９】
0003797830.tif 000021
【図２０】
0003797830.tif 000022
【図２１】
0003797830.tif 000023
【図２２】
0003797830.tif 000024