(57)【特許請求の範囲】
【請求項１】
メモリへ結合されており圧縮フレームをデコードするデコーダにおいて、
第一及び第二出力端を具備しており、圧縮フレームを構文解析し且つ前記圧縮フレームにおける動き補償情報とブロックデータ構造とに分離するパーサ、
前記パーサの第一出力端へ結合している入力端を具備しており、前記ブロックデータ構造におけるピクセル及びピクチャ間予測エラーをデコードするブロックデコーダ、
前記パーサの第二出力端へ結合している入力端を具備しており、前記動き補償情報を使用して予測マクロブロックを得る動き補償エンジン、
前記ブロックデコーダの出力端へ結合している第一入力端と前記動き補償エンジンの出力端へ結合している第二入力端とを具備しており、前記デコードしたピクチャ間予測エラーと予測マクロブロックとを加算する加算回路、
プロセサ速度及び容量に関する情報及びプロセサに対して使用可能なメモリに関する情報を包含するプロセサであって、前記プロセサの容量及び速度が本デコーダを実時間で動作させ且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものより上であるか否かを決定するためにプログラム可能なプロセサ、
前記プロセサの容量及び速度が本デコーダを実時間で動作させ且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものより上であることに応答して、前記ブロックデコーダの一部及び前記動き補償エンジンの一部をバイパスするための第一コネクタ、
を有することを特徴とするデコーダ。
【請求項２】
請求項１において、前記第一コネクタがプロセサを有していることを特徴とするデコーダ。
【請求項３】
メモリへ結合されており圧縮フレームをデコードするデコーダにおいて、
第一及び第二出力端を具備しており、圧縮フレームを構文解析し且つ前記圧縮フレームにおける動き補償情報とブロックデータ構造とに分離するパーサ、
前記パーサの第一出力端へ結合している入力端を具備しており、前記ブロックデータ構造におけるピクセル及びピクチャ間予測エラーをデコードするブロックデコーダ、
前記パーサの第二出力端へ結合している入力端を具備しており、前記動き補償情報を使用して予測マクロブロックを得る動き補償エンジン、
前記ブロックデコーダの出力端へ結合している第一入力端と前記動き補償エンジンの出力端へ結合している第二入力端とを具備しており、前記デコードしたピクチャ間予測エラーと予測マクロブロックとを加算する加算回路、
プロセサ速度及び容量に関する情報とプロセサに対して使用可能なメモリに関する情報とを包含するプロセサであって、前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものより上であるか否かを決定するためにプログラム可能なプロセサ、
前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものより上であることに応答して前記パーサをバイパスする第二コネクタ、
を有することを特徴とするデコーダ。
【請求項４】
請求項３において、前記第二コネクタがプロセサを有していることを特徴とするデコーダ。
【請求項５】
メモリへ結合されており圧縮フレームをデコードするデコーダにおいて、
第一及び第二出力端を具備しており、圧縮フレームを構文解析し且つ前記圧縮フレームにおける動き補償情報とブロックデータ構造とに分離するパーサ、
前記パーサの第一出力端へ結合している入力端を具備しており、前記ブロックデータ構造におけるピクセル及びピクチャ間予測エラーをデコードするブロックデコーダ、
前記パーサの第二出力端へ結合している入力端を具備しており、前記動き補償情報を使用して予測マクロブロックを得る動き補償エンジン、
前記ブロックデコーダの出力端へ結合している第一入力端と前記動き補償エンジンの出力端へ結合している第二入力端とを具備しており、前記デコードしたピクチャ間予測エラーと予測マクロブロックとを加算する加算回路、
プロセサ速度及び容量に関する情報と、プロセサに対して使用可能なメモリに関する情報とを包含するプロセサであって、前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものより上であるか否かを決定するためにプログラム可能なプロセサ、
前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものより上であることに応答して前記動き補償エンジン及び前記加算回路をバイパスする第三コネクタ、
を有することを特徴とするデコーダ。
【請求項６】
請求項１，３，５の内のいずれか１項において、更に、前記動き補償エンジンを含むエンコーダを有することを特徴とするデコーダ。
【請求項７】
請求項１，３，５の内のいずれか１項において、前記ブロックデコーダが、
前記ブロックデコーダの入力端へ結合している入力端を具備するブロックアレイモジュール、
前記ブロックデコーダの出力端へ結合している出力端と前記ブロックアレイへ結合している入力端とを具備するＩＤＣＴモジュール、
を有することを特徴とするデコーダ。
【請求項８】
請求項７において、更に、前記ＩＤＣＴモジュールを包含するエンコーダを有していることを特徴とするデコーダ。
【請求項９】
請求項７において、前記ブロックアレイモジュールが、
前記デコーダモジュールの入力端へ結合している入力端を具備しており、前記ブロックデータ構造のＤＣＴ係数をデコードするＶＬＣデコーダ、
前記ブロックデータ構造の直列表示をアレイ表示へ変換する逆ジグザグスキャナ、
を有することを特徴とするデコーダ。
【請求項１０】
請求項７において、前記ＩＤＣＴモジュールが、
前記ブロックデータ構造の係数の逆量子化を実行する逆量子化器、
前記ブロックデータ構造の係数に関し逆離散余弦変換を実行する逆離散余弦変換回路、
を有することを特徴とするデコーダ。
【請求項１１】
請求項１、３，５の内のいずれか１項において、前記デコーダがＭＰＥＧ−２スタンダードに準拠してフォーマット化されたビットストリームをデコーディングすることが可能であることを特徴とするデコーダ。
【請求項１２】
請求項１，３，５の内のいずれか１項において、前記動き補償エンジンが、
圧縮フレームをデコードするために必要とされるフレームのメモリ内のアドレス及び実行されるべき予測のタイプを決定するアドレス演算回路、
前記必要とされるフレームにおけるサブユニットが圧縮フレームのサブユニットと相関するか否かを決定する半ｐｅｌフィルタ、
を有することを特徴とするデコーダ。
【請求項１３】
メモリとプロセサとに結合されており圧縮フレームをデコードするデコーダにおいて、
第一及び第二出力端を具備しており、圧縮フレームを構文解析し且つ前記圧縮フレームにおける動き補償情報とブロックデータ構造とに分離するパーサ、
前記ブロックデータ構造におけるピクセル及びピクチャ間予測エラーをデコードするブロックデコーダであって、前記ブロックデコーダの出力端へ結合している出力端とブロックアレイへ結合している入力端とを具備するＩＤＣＴモジュールを具備する前記パーサの第一出力端へ結合している入力端を具備しているブロックデコーダ、
前記パーサの第二出力端へ結合している入力端を具備しており、前記動き補償情報を使用して予測マクロブロックを得るための動き補償エンジン、
前記デコーダモジュールの出力端へ結合している第一入力端と前記動き補償エンジンの出力端へ結合している第二入力端とを具備しており、前記デコードしたピクチャ間予測エラーと前記予測マクロブロックとを加算する加算回路、
前記メモリへ結合しており前記ＩＤＣＴモジュールを包含するエンコーダ、
プロセサ速度及び容量に関する情報とプロセサに対して使用可能なメモリに関する情報とを包含するプロセサであって、前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものより上であるか否かを決定するためにプログラムすることの可能なプロセサ、
前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものより上であることに応答して前記ブロックデコーダの一部と前記動き補償エンジンの一部とをバイパスする第一コネクタ、
を有することを特徴とするデコーダ。
【請求項１４】
請求項１３において、前記第一コネクタがプロセサを有していることを特徴とするデコーダ。
【請求項１５】
メモリとプロセサとに結合されており圧縮フレームをデコードするデコーダにおいて、
第一及び第二出力端を具備しており、圧縮フレームを構文解析し且つ前記圧縮フレームにおける動き補償情報とブロックデータ構造とに分離するパーサ、
前記ブロックデータ構造におけるピクセル及びピクチャ間予測エラーをデコードするブロックデコーダであって、前記ブロックデコーダの出力端へ結合している出力端とブロックアレイへ結合している入力端とを具備するＩＤＣＴモジュールを具備する前記パーサの第一出力端へ結合している入力端を具備しているブロックデコーダ、
前記パーサの第二出力端へ結合している入力端を具備しており、前記動き補償情報を使用して予測マクロブロックを得るための動き補償エンジン、
前記デコーダモジュールの出力端へ結合している第一入力端と前記動き補償エンジンの出力端へ結合している第二入力端とを具備しており、前記デコードしたピクチャ間予測エラーと前記予測マクロブロックとを加算する加算回路、
前記メモリへ結合しており前記ＩＤＣＴモジュールを包含するエンコーダ、
プロセサ速度及び容量に関する情報とプロセサに対して使用可能なメモリに関する情報とを包含しているプロセサであって、前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものより上であるか否かを決定するためにプログラム可能なプロセサ、
前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものを超えていることに応答して前記パーサをバイパスする第二コネクタ、
を有することを特徴とするデコーダ。
【請求項１６】
請求項１５において、前記第二コネクタがプロセサを有していることを特徴とするデコーダ。
【請求項１７】
メモリとプロセサとに結合されており圧縮フレームをデコードするデコーダにおいて、
第一及び第二出力端を具備しており、圧縮フレームを構文解析し且つ前記圧縮フレームにおける動き補償情報とブロックデータ構造とに分離するパーサ、
前記ブロックデータ構造におけるピクセル及びピクチャ間予測エラーをデコードするブロックデコーダであって、前記ブロックデコーダの出力端へ結合している出力端とブロックアレイへ結合している入力端とを具備するＩＤＣＴモジュールを具備する前記パーサの第一出力端へ結合している入力端を具備しているブロックデコーダ、
前記パーサの第二出力端へ結合している入力端を具備しており、前記動き補償情報を使用して予測マクロブロックを得るための動き補償エンジン、
前記デコーダモジュールの出力端へ結合している第一入力端と前記動き補償エンジンの出力端へ結合している第二入力端とを具備しており、前記デコードしたピクチャ間予測エラーと前記予測マクロブロックとを加算する加算回路、
前記メモリへ結合しており前記ＩＤＣＴモジュールを包含するエンコーダ、
プロセサ速度及び容量に関する情報と、プロセサに対して使用可能なメモリに関する情報とを包含するプロセサであって、前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされているモジュールを実行するのに必要なものより上であるか否かを決定するためにプログラム可能なプロセサ、
前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされているモジュールを実行するのに必要なものを超えていることに応答して前記動き補償エンジン及び前記加算回路をバイパスする第三コネクタ、
を有することを特徴とするデコーダ。
【請求項１８】
請求項１３，１５，１７の内のいずれか１項において、更に、前記動き補償エンジンを包含するエンコーダを有していることを特徴とするデコーダ。
【請求項１９】
請求項１３，１５，１７の内のいずれか１項において、前記動き予測モジュールがプロセサを有していることを特徴とするデコーダ。
【請求項２０】
請求項１３，１５，１７の内のいずれか１項において、前記デコーダがＭＰＥＧ−２スタンダードに準拠してフォーマット化されたビットストリームをデコーディングすることが可能であることを特徴とするデコーダ。
【請求項２１】
請求項１３，１５，１７の内のいずれか１項において、前記ブロックデコーダが、更に、ブロックアレイモジュールを有しており、前記ブロックアレイモジュールが、
前記デコーダモジュールの入力端へ結合している入力端を具備しており、前記ブロックデータ構造のＤＣＴ係数をデコードするＶＬＣデコーダ、
前記ブロックデータ構造の直列表示をアレイ表示へ変換する逆ジグザグスキャナ、
を具備することを特徴とするデコーダ。
【請求項２２】
請求項１３，１５，１７の内のいずれか１項において、前記ＩＤＣＴモジュールが、
前記ブロックデータ構造の係数の逆量子化を実行する逆量子化器、
前記ブロックデータ構造の係数に関して逆離散余弦変換を実行する逆離散余弦変換回路、
を有することを特徴とするデコーダ。
【請求項２３】
請求項１３，１５，１７の内のいずれか１項において、前記動き補償エンジンが、
圧縮フレームをデコードするために必要とされるフレームのメモリにおけるアドレス及び実行されるべき予測のタイプを決定するアドレス演算回路、
前記必要とされるフレームにおけるサブユニットが圧縮フレームのサブユニットと相関するか否かを決定する半ｐｅｌフィルタ、
を有することを特徴とするデコーダ。
【請求項２４】
コンピュータにおいて、
入力装置、
出力装置、
プロセサ、
メモリ、
デコーダ、
を有しており、前記デコーダが、
第一及び第二出力端を具備しており、圧縮フレームを構文解析し且つ前記圧縮フレームにおける動き補償情報とブロックデータ構造とに分離するパーサ、
前記ブロックデータ構造におけるピクセル及びピクチャ間予測エラーをデコードするブロックデコーダであって、前記ブロックデコーダの出力端へ結合している出力端と前記ブロックアレイへ結合している入力端とを具備するＩＤＣＴモジュールを具備する前記パーサの第一出力端へ結合している入力端を具備するブロックデコーダ、
前記パーサの第二出力端へ結合している入力端を具備しており、前記動き補償情報を使用して予測マクロブロックを得るための動き補償エンジン、
前記デコーダモジュールの出力端へ結合している第一入力端と前記動き補償エンジンの出力端へ結合している第二入力端とを具備しており、前記デコードされたピクチャ間予測エラーと予測マクロブロックとを加算する加算回路、
を有しており、
前記プロセサがプロセサ速度及び容量に関する情報と、プロセサに対して使用可能なメモリに関する情報とを包含しており、前記プロセサは前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要とされるものより上であるか否かを決定するためにプログラム可能であり、更に、前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要とするものより上であることに応答して前記ブロックデコーダの一部と前記動き補償エンジンの一部とをバイパスするための第一コネクタが設けられている、
ことを特徴とするコンピュータ。
【請求項２５】
請求項２４において、前記第一コネクタがプロセサを有していることを特徴とするコンピュータ。
【請求項２６】
コンピュータにおいて、
入力装置、
出力装置、
プロセサ、
メモリ、
デコーダ、
を有しており、前記デコーダが、
第一及び第二出力端を具備しており、圧縮フレームを構文解析し且つ前記圧縮フレームにおける動き補償情報とブロックデータ構造とに分離するパーサ、
前記ブロックデータ構造におけるピクセル及びピクチャ間予測エラーをデコードするブロックデコーダであって、前記ブロックデコーダの出力端へ結合している出力端と前記ブロックアレイへ結合している入力端とを具備するＩＤＣＴモジュールを具備する前記パーサの第一出力端へ結合している入力端を具備するブロックデコーダ、
前記パーサの第二出力端へ結合している入力端を具備しており、前記動き補償情報を使用して予測マクロブロックを得るための動き補償エンジン、
前記デコーダモジュールの出力端へ結合している第一入力端と前記動き補償エンジンの出力端へ結合している第二入力端とを具備しており、前記デコードされたピクチャ間予測エラーと予測マクロブロックとを加算する加算回路、
を有しており、
前記プロセサがプロセサ速度及び容量に関する情報と、プロセサに対して使用可能なメモリに関する情報とを包含しており、前記プロセサは、前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するために必要なものより上であるか否かを決定するためにプログラム可能であり、且つ更に、前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するために必要なものより上であることに応答して前記パーサをバイパスする第二コネクタが設けられている、
ことを特徴とするコンピュータ。
【請求項２７】
請求項２６において、前記第二コネクタがプロセサを有していることを特徴とするコンピュータ。
【請求項２８】
コンピュータにおいて、
入力装置、
出力装置、
プロセサ、
メモリ、
デコーダ、
を有しており、前記デコーダが、
第一及び第二出力端を具備しており、圧縮フレームを構文解析し且つ前記圧縮フレームにおける動き補償情報とブロックデータ構造とに分離するパーサ、
前記ブロックデータ構造におけるピクセル及びピクチャ間予測エラーをデコードするブロックデコーダであって、前記ブロックデコーダの出力端へ結合している出力端と前記ブロックアレイへ結合している入力端とを具備するＩＤＣＴモジュールを具備する前記パーサの第一出力端へ結合している入力端を具備するブロックデコーダ、
前記パーサの第二出力端へ結合している入力端を具備しており、前記動き補償情報を使用して予測マクロブロックを得るための動き補償エンジン、
前記デコーダモジュールの出力端へ結合している第一入力端と前記動き補償エンジンの出力端へ結合している第二入力端とを具備しており、前記デコードされたピクチャ間予測エラーと予測マクロブロックとを加算する加算回路、
を有しており、
前記プロセサがプロセサ速度及び容量に関する情報とプロセサに対して使用可能なメモリに関する情報とを包含しており、前記プロセサは前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものより上であるか否かを決定するためにプログラム可能であり、且つ、更に、前記プロセサの容量及び速度が本デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものより上であることに応答して、前記動き補償エンジン及び前記加算回路をバイパスする第三コネクタが設けられている、
ことを特徴とするコンピュータ。
【請求項２９】
請求項２４，２６，２８の内のいずれか１項において、更にエンコーダを有していることを特徴とするコンピュータ。
【請求項３０】
請求項２９において、前記エンコーダがＩＤＣＴモジュールを包含していることを特徴とするコンピュータ。
【請求項３１】
請求項２９において、更に、動き補償エンジンを包含するエンコーダを有していることを特徴とするコンピュータ。
【請求項３２】
請求項２４，２６，２８の内のいずれか１項において、前記デコーダがＭＰＥＧ−２スタンダードに準拠してフォーマット化されたビットストリームをデコーディングすることが可能であることを特徴とするコンピュータ。
【請求項３３】
請求項２４，２６，２８の内のいずれか１項において、前記ブロックデコーダが、更に、ブロックアレイモジュールを有しており、前記ブロックアレイモジュールが、
前記デコーダモジュールの入力端へ結合している入力端を具備しており、前記ブロックデータ構造のＤＣＴ係数をデコードするＶＬＣデコーダ、
前記ブロックデータ構造の直列表示をアレイ表示へ変換するための逆ジグザグスキャナ、
を有することを特徴とするコンピュータ。
【請求項３４】
請求項２４，２６，２８の内のいずれか１項において、前記ＩＤＣＴモジュールが、
前記ブロックデータ構造の係数の逆量子化を実行する逆量子化器、
前記ブロックデータ構造の係数に関して逆離散余弦変換を実行する逆離散余弦変換回路、
を有することを特徴とするコンピュータ。
【請求項３５】
請求項２４，２６，２８の内のいずれか１項において、前記動き補償エンジンが、
圧縮フレームをデコードするために必要とされるフレームのメモリにおけるアドレス及び実行されるべき予測のタイプを決定するアドレス演算回路、
前記必要とされるフレームにおけるサブユニットと圧縮フレームのサブユニットとが相関するか否かを決定する半ｐｅｌフィルタ、
を有することを特徴とするコンピュータ。
【請求項３６】
メモリ及びプロセサへのアクセスを持っており、且つブロックデコーダ、動き補償エンジン、前記ブロックデコーダの出力端へ結合している第一入力端と前記動き補償エンジンの出力端へ結合している第二入力端とを具備している加算回路を持っているデコーダの動作方法において、
前記ブロックデコーダ内の圧縮フレームをデコードし、
動き補償予測エラーを包含するフレームを有する圧縮フレームに応答して、
必要とされるデコードされたフレームを発生させるために圧縮フレームをデコードさせるために必要とされるフレームをデコードし、
前記必要とされるデコードされたフレームを動き補償エンジンへ供給し、
前記動き補償エンジンにおける予測フレームを決定し、
前記ブロックデコーダの出力を前記動き補償エンジンの出力と加算してデコードされたフレームを得、
前記プロセサの速度及び処理容量を決定し、
前記プロセサの容量が少なくとも容量スレッシュホールドであり且つ前記プロセサの速度が少なくとも速度スレッシュホールドであることに応答して前記パーサをバイパスし、
前記パーサをバイパスすることに応答して前記プロセサによって圧縮フレームの構文解析のステップを実行する、
上記各ステップを有することを特徴とする方法。
【請求項３７】
請求項３６において、前記ブロックデコーダにおける圧縮フレームをデコードするステップ及び必要とされるデコードされたフレームを発生するために圧縮フレームをデコードするのに必要なフレームをデコードするステップを同時的に実行することを特徴とする方法。
【請求項３８】
請求項３６において、前記デコーダが、更に、エンコーダを有しており、更に前記エンコーダにおいて圧縮されていないフレームを圧縮するステップを有することを特徴とする方法。
【請求項３９】
請求項３６において、更に、
前記圧縮フレームを構文解析し、
前記動き補償エンジンにおいて圧縮フレームをデコードするステップの前に実行するものであって動き補償情報を前記動き補償エンジンへ供給し、
前記ブロックデコーダにおいて圧縮フレームをデコードするステップの前に実行するものであって、前記ブロックデータ構造を前記ブロックデコーダへ供給する、
上記各ステップを有することを特徴とする方法。
【請求項４０】
請求項３９において、前記圧縮フレームを構文解析するステップが、前記ブロックデコーダへ結合されている第一出力端と前記動き補償エンジンへ結合している第二出力端とを具備するパーサによって実行されることを特徴とする方法。
【請求項４１】
メモリ及びプロセサへのアクセスを持っており、且つブロックデコーダ、動き補償エンジン、前記ブロックデコーダの出力端へ結合している第一入力端と前記動き補償エンジンの出力端へ結合している第二入力端とを具備している加算回路を持っているデコーダの動作方法において、
前記ブロックデコーダ内の圧縮フレームをデコードし、
動き補償予測エラーを包含するフレームを有する圧縮フレームに応答して、
必要とされるデコードされたフレームを発生させるために圧縮フレームをデコードさせるために必要とされるフレームをデコードし、
前記必要とされるデコードされたフレームを動き補償エンジンへ供給し、
前記動き補償エンジンにおける予測フレームを決定し、
前記ブロックデコーダの出力を前記動き補償エンジンの出力と加算してデコードされたフレームを得、
前記プロセサの速度及び処理容量を決定し、
前記プロセサが、前記デコーダが実時間で動作し且つ圧縮フレームに対して前記プロセサによってバイパスされたモジュールを実行するのに必要なものより上の容量及び速度を有することに応答して、前記ブロックデコーダの一部及び前記動き補償エンジンの一部をバイパスする、
上記各ステップを有することを特徴とする方法。
【請求項４２】
請求項３６又は４１において、前記デコーダがＭＰＥＧ−２スタンダードに準拠してフォーマット化されたビットストリームをデコーディングすることが可能であることを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ビデオ及び／又はオーディオ脱圧縮及び／又は圧縮装置の技術分野に関するものであって、更に詳細には、幾つかの脱圧縮プロトコルのうちの一つに準拠してエンコードされたビットストリームをデコーディングすることが可能であり及び／又は幾つかの脱圧縮プロトコルのうちの一つに準拠してビットストリームをエンコーディングすることが可能な脱圧縮及び／又は圧縮装置及び方法に関するものである。
【０００２】
【従来の技術】
圧縮されていないビデオ画像のデジタル表示の大きさは画像の分解能及び色深さに依存する。圧縮されていないビデオ画像と付随するオーディオ信号のシーケンスからなる動画は、例えばコンパクトディスク（ＣＤ）のような従来の記録媒体上に全てを納めるためにはすぐに大きくなりすぎることとなる。更に、この様な圧縮されていない動画を通信リンクを介して送信することは、送信すべきデータの量が過剰なものであるので許容できない程度に高価なものである。
【０００３】
従って、ビデオ及びオーディオシーケンスを送信するか又は格納する前に圧縮することが有益的である。これらのシーケンスを圧縮するためのシステムを開発すべく多大の努力が払われている。ＭＰＥＧ−１，ＭＰＥＧ−２，Ｈ．２６１及びＨ．２６３などのＤＣＴアルゴリズムを基礎とした現在使用されている幾つかのコーディングスタンダードが存在している。（ＭＰＥＧは、「Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ（動画エキスパートグループ）」、国際標準化機構（ＩＳＯ）委員会、に対するアクロニムである。）ＭＰＥＧ−１，ＭＰＥＧ−２，Ｈ．２６１，Ｈ．２６３スタンダードは、エンコード（即ち、圧縮）されたビットストリームをどの様にしてデコード（即ち、脱圧縮）するかを記述するデコンプレッション（ｄｅｃｏｍｐｒｅｓｓｉｏｎ）即ち脱圧縮プロトコルを包含している。結果的に得られるビットストリームがスタンダードに適合している限り、エンコーディングはどの様な態様で行うことも可能である。
【０００４】
ビデオ及び／又はオーディオ圧縮装置（以後、エンコーダという）は、ビデオ及び／又はオーディオシーケンスを送信又は格納する前に、該シーケンスをエンコード即ちコード化するために使用される。その結果得られるエンコードされたビットストリームは、該ビデオ及び／又はオーディオシーケンスを出力する前に、ビデオ及び／又はオーディオ脱圧縮装置（以後、デコーダという）によってデコードされる。しかしながら、ビットストリームは、それがデコーダによって使用されるスタンダードと適合する場合にのみ、デコーダによってデコードすることが可能である。多数のシステム上でビットストリームをデコードすることが可能であるためには、ビデオ及び／又はオーディオシーケンスを広く受入れられているエンコーディング／デコーディングスタンダードに従ってエンコードすることが有益的である。ＭＰＥＧスタンダードは、一方向通信用に現在広く受入れられているスタンダードである。Ｈ．２６１及びＨ．２６３は、例えばビデオ電話などのような二方向通信用に現在広く受入れられているスタンダードである。
【０００５】
デコードされると、そのデコードされたビデオ及びオーディオシーケンスは、例えばテレビ又はビデオテープレコーダ（ＶＣＲ）、などのビデオ及びオーディオを出力することが専用の電子システム上において、又は例えばコンピュータのような画像表示及びオーディオはシステムの一つの特徴であるに過ぎない電子システム上において出力させることが可能である。デコーダは、これらの電子システムが出力を行う前に圧縮されているビットストリームを圧縮されていないデータへデコードすることを可能とするためにこれらの電子システムへ付加されることを必要とする。エンコーダは、この様なシステムが送信又は格納されるべきビデオ及び／又はオーディオシーケンスを圧縮することを可能とするために付加されることを必要とする。二方向通信の場合にはエンコーダとデコーダの両方が付加されることを必要とする。
【０００６】
図１Ａは例えばＭＰＥＧ−２デコーダ１０のような典型的なデコーダのアーキテクチャを示した概略ブロック図を示している。デコーダ１０は、ビデオ及びオーディオの両方のデコーダとするか、又は単にビデオデコーダとすることが可能であり、その場合にはデコーダ１０のオーディオ部分は公知の従来の態様で実行することが可能である。エンコードされているビットストリームが入力バッファ、典型的には先入れ先出し（ＦＩＦＯ）バッファ（以後、ＦＩＦＯ３０）によって受取られるが、該バッファは任意のタイプのメモリとすることが可能である。ＦＩＦＯ３０は、前に受取ったデータがデコードされている間に、入力してくるエンコードされたビットストリームをバッファする。
【０００７】
ビデオ用のエンコードされたビットストリームは圧縮されたフレーム（即ち、圧縮フレーム）を包含している。フレームは、ビデオシーケンスにおいて一つの表示可能な画像に対するエンコードされたデータを表わすデータ構造である。このデータ構造は、輝度ピクセルの一つの二次元アレイと、クロミナンスサンプル、即ち色差サンプルの二つの二次元アレイとから構成されている。
【０００８】
色差サンプルは、典型的に、垂直方向及び水平方向の両方において輝度サンプルのサンプリング速度の半分でサンプルされ、４：２：０（輝度：クロミナンス：クロミナンス）のサンプリングモードを発生する。しかしながら、色差はその他の周波数でサンプル即ち採取することも可能であり、例えば、垂直方向においては輝度のサンプリング速度の半分であり且つ水平方向においては輝度のものと同一のサンプリング速度でサンプリングし、４：２：２のサンプリングモードを発生することが可能である。
【０００９】
フレームは、典型的に、例えばマクロブロックなどのより小さなサブユニットへ細分化される。マクロブロックは、１６×１６アレイの輝度サンプルと二つの８×８アレイの隣接クロミナンスサンプルとを具備するデータ構造である。マクロブロックは、運動（「動き」ともいう）補償情報と６個のブロックデータ構造とを具備するヘッダ部分を包含している。ブロックはＤＣＴを基礎とした変換コーディングに対する基本的単位であり、且つ８×８サブアレイのピクセルをエンコーディングするデータ構造である。マクロブロックは四つの輝度ブロックと二つのクロミナンスブロックとを表わす。
【００１０】
ＭＰＥＧ−１及びＭＰＥＧ−２の両方とも複数個のタイプのコード化されたフレーム、例えばイントラ（Ｉ）フレーム、前方予測（Ｐ）フレーム、及び双方向予測（Ｂ）フレームをサポートしている。Ｉフレームはイントラピクチャ（ｉｎｔｒａｐｉｃｔｕｒｅ）即ちピクチャ間コーディングのみを包含している。Ｐ及びＢフレームは、ピクチャ間コーディングとインターピクチャ（ｉｎｔｅｒｐｉｃｔｕｒｅ）即ちピクチャ間コーディングの両方を包含することが可能である。Ｉ及びＰフレームは、ピクチャ間コーディング用の基準フレームとして使用される。ピクチャ間コーディングにおいて、二つのフレームの間の冗長性は可及的に取除かれ、且つ二つのフレームの間の残存差、即ちピクチャ間予測エラー、該フレームは予測フレームとしてデコードされる。運動ベクトルも運動補償を使用するピクチャ間コーディングにおいて送信される。運動ベクトルは、どれほど遠くに且つどの方向にマクロブロックが予測マクロブロックと比較して移動したかを記述する。ピクチャ間コーディングは、デコーダ１０が現在の画像をデコード又はエンコードするために必要な情報を有する前の及び／又は将来の画像、即ちＩ及び／又はＰフレームへのアクセスを有することを必要とする。これらの前の及び／又は将来の画像は格納され次いで現在の画像をデコードするために使用されることを必要とする。
【００１１】
Ｉフレームに対するピクチャ間コーディングは、ブロックを基礎としたＤＣＴ技術を使用してフレーム内の元のピクセル間の冗長性を減少させることを関与させるが、その他のコーディング技術を使用することも可能である。Ｐ及びＢフレームの場合には、ピクチャ間コーディングは、ピクチャ間予測エラーピクセル間の冗長性を除去するために同一のＤＣＴを基礎とした技術を使用することを関与させる。
【００１２】
ＦＩＦＯ３０の出力端はマクロブロックヘッダパーサ３６へ結合している。ヘッダパーサ３６は、該情報をマクロブロックへ分解即ち構文解析し、次いで該マクロブロックを分解即ち構文解析し且つ各マクロブロックのヘッダ部分をアドレス演算回路９６へ送給する。アドレス演算回路９６は、運動補償エンジン９０がアクセスすることを必要とする予測フレームを決定するために実行すべき予測のタイプを決定する。運動ベクトル情報を使用して、アドレス演算回路９６は、デコードされるべき与えられたマクロブロックに対する運動補償予測をデコードするために必要とされる予測フレーム、且つ該フレーム内の予測マクロブロックが位置されるべきメモリ１６０のアドレスを決定する。
【００１３】
予測マクロブロックはメモリ１６０から得られ且つアドレス演算回路９６へ結合されている半ｐｅｌフィルタ７８内に入力される。典型的に、メモリ１６０との全てのインターフェースを制御するデコーダ内のＤＭＡエンジン１６２が存在している。半ｐｅｌフィルタ７８は該運動ベクトルによって支配されて、フェッチされた予測マクロブロックに関して垂直方向及び水平方向の半ピクセル補間を実行する。これにより予測マクロブロックが得られる。
【００１４】
前述した如く、Ｉフレーム内のピクセルブロック及びＰ又はＢフレーム内の予測エラーピクセルブロックはＤＣＴを基礎とした技術を使用してエンコード即ちコード化される。このアプローチにおいては、ピクセルはＤＣＴを使用してＤＣＴ係数へ変換される。これらの係数は、次いで、量子化テーブルに従って量子化される。量子化されたＤＣＴ係数は、次いで、効率を最大とさせるために更に可変長ホフマンコードとしてエンコードされ、最も頻繁に繰返される値に対して最も小さなコードが与えられ且つ頻度が減少するに従いコードの長さが増加する。しかしながら、脱圧縮プロトコルに依存して、ホフマンコード以外のコードを使用することが可能である。該係数は矩形状アレイフォーマットに順番付けされ、最も大きな値はアレイの左上であり且つ典型的にアレイの右下に向かって値が減少していく。直列データビットストリームを発生させるために、該アレイを再度順番付けする。該係数の直列化の順番はアレイの右上角部から開始するジグザグフォーマットであり、即ち該アレイがマトリクスフォーマットにあるものとすると、ジグザグフォーマットにおける要素の順番は、図１Ｂに示したように、１１，１２，２１，３１，２２，１３，１４などである。量子化は、このジグザグスキャンの前又は後に実行することが可能である。
【００１５】
再度図１Ａを参照すると、ヘッダパーサ３６はエンコードしたブロックデータ構造を可変長コード（ＶＬＣ）デコーダ４２へ送給する。ＶＬＣデコーダ４２は、エンコードしたブロックを表わす可変長コードをデコードし且つそれらを固定長パルスコード変調（ＰＣＭ）コードへ変換する。これらのコードはエンコードしたブロックのＤＣＴ係数を表わしている。ＰＣＭコードは、ジグザグフォーマットで得られた８×８ブロックアレイの直列表現である。ＶＬＣデコーダ４２へ接続している逆ジグザグスキャナ５４は、ジグザグフォーマットで得られた８×８ブロックアレイの直列表現を矩形状の８×８ブロックアレイへ変換し、それを逆量子化器４８へ通過させる。逆量子化器４８は、適宜の量子化テーブルに基づいて逆量子化を実行し且つそれをＩＤＣＴ回路６６へ通過させる。ＩＤＣＴ回路６６はその入力ブロックに関して逆ＤＣＴを実行し且つ脱圧縮された８×８ブロックを発生させる。本発明者らは、これらの回路を機能的ブロックへ分解することが可能であることを知得した。現在の技術においては、該デコーダは、典型的に、機能的ブロックへグループ化させることなしに、一つ又は複数個のチップ上において集積化されている。
【００１６】
予測マクロブロック及びピクチャ間予測エラーは加算回路７２において加算され且つ組立ユニット１０２へ通過される。ピクチャ間圧縮においては、幾つかのフレームがデコードされるべき将来のフレームへアクセスすることを必要とするので、必要とされるフレームは、そのフレームがそれらを必要とする前に送給されるべきである。ＭＰＥＧ−２スタンダードにおいては、フレームは脱圧縮のために過去のフレームと将来のフレームの両方を必要とする場合があるので、圧縮フレームはそれらがビデオシーケンスにおいて表示されるのと同一の順番で送給されるものではない。組立ユニット１０２は、該情報が脱圧縮されたフレームに対応するメモリ内の正しい位置に配置されることを確保する。結果的に得られるデコードされたマクロブロックは、組立ユニット１０２によって指定されている場所においてメモリ１６０内に格納されることを必要とする。全てのフレームがメモリ１６０内に格納されることを必要とする。なぜならば、デコードされたマクロブロックは、脱圧縮プロトコルの格納及び送信フォーマットに起因して、ディスプレイへ送られるべき次のマクロブロックではない場合があるからである。ＭＰＥＧ−２及びピクチャ間圧縮を使用するその他の脱圧縮プロトコルにおいて、フレームは過去及び将来のフレームに基づいてエンコードされ、従ってフレームを適切にデコードするためには、フレームは順番に送給されるのではなく、それらが表示されるまで格納されることを必要とする。典型的なＭＰＥＧ−２デコーダ１０は、主レベルモードにおいて主プロファイルで（ＭＬにおけるＭＰ）動作するためには１６Ｍｂｉｔｓのメモリを必要とする。このことは、デコーダが２Ｍｂｙｔｅメモリ１６０を必要とすることを意味している。
【００１７】
デコーダ１０は、何れか一つ又は組合わせのスタンダードに従ってフォーマット化されたビットストリームをデコードするために設計することが可能である。組合わせのスタンダードに従ってフォーマット化されているビットストリームをデコードするために、デコーダ１０は各脱圧縮プロトコルに従ってビットストリームをデコーディングするための回路を包含することが必要である。この回路は特定の脱圧縮プロトコルに対して特定的のものである。ヘッダ１０は、更に、特定の脱圧縮プロトコルに適合してビットストリームをエンコードするために別個のエンコーディング回路を必要とする場合がある。デコーダ１０は、単に、各所望の脱圧縮プロトコルに対しての複数個のデコーダ、及び多分複数個のエンコーダの組合わせである。例えば、ＭＰＥＧ−２スタンダード又はＨ．２６１スタンダードの何れかに適合すべくエンコードされているビットストリームを脱圧縮することの可能なデコーダ１０は、二組のデコード用回路を有しており、各組が、各スタンダードに対して一つずつ且つその特定のスタンダードに対して特定的なそれ自身の運動補償回路、それ自身のブロックデコード用回路を包含している。デコーダ１０が特定の脱圧縮プロトコルに適合する画像シーケンスをエンコードすることが可能であることが所望される場合には、その特定の脱圧縮プロトコルに適合するシーケンスをエンコードするために特定的な回路を有する別個のエンコード用回路を付加することが必要である。この別個の組の回路に対する必要性はデコーダのダイ面積を著しく増加させるので、問題である。半導体業界における長い間の目標は、与えられた機能性に対しての集積回路装置のダイ面積を減少させることであった。ダイ面積を減少させることの幾つかの利点は、同一の寸法のシリコンウエハ上に製造することの可能なダイの数を増加させ、且つそれから得られるダイ当たりの価格を減少させることである。このことは、装置の量を増加させ且つ価格を低下させることとなる。ダイ面積を増加させると、装置のコストを著しく増加させるので問題を発生させる。
【００１８】
これは、ダイ面積における増加を押え込むために、装置へ付加される脱圧縮スタンダードの数を最小限に維持することを推奨している。しかしながら、デコーダ１０は幾つかの広く受入れられているスタンダードに準拠してフォーマット化されたシーケンスをデコードし且つエンコードすることが可能であることが有益的である。このことは、デコーダ１０が多数のビデオ及び／又はオーディオシーケンスをデコードすることを可能とすることを許容する。更に、ビデオ電話の場合には、デコーダ１０はシーケンスをデコードし且つエンコードすることが可能でなければならず、従ってデコーダとエンコーダの両方を必要としている。
【００１９】
現在ではたくさんの使用可能な画像が存在しており、そのうちの多くは異なるスタンダードに準拠している。又、通常ＭＰＥＧ−１又はＭＰＥＧ−２スタンダードに準拠してエンコードされている送信又は格納された画像を受取ることが可能であると共に、三箇所の画像が通常Ｈ．２６１又はＨ．２６３スタンダードに準拠してエンコードされるビデオ電話を使用して通信を行うことが可能であることの願望が存在している。このことは、両方のことを行うことの可能なデコーダをコンピュータ又はその他の同様の装置内に組込むことが有益的であるようにしている。しかしながら、この様な柔軟性は、消費者によって益々要求が高くなっているものであるが、装置に対するより大きなダイ面積を犠牲にして得られるものであり且つこの様なデコーダを製造するコストを著しく増加させていた。
【００２０】
【発明が解決しようとする課題】
本発明は、以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、改良したビデオ及び／又はオーディオ脱圧縮及び／又は圧縮装置及び方法を提供することを目的とする。
【００２１】
【課題を解決するための手段】
本発明は、マルチスタンダードデコーダの動作方法及び回路を提供する。本デコーダは、圧縮フレームをパーシング（ｐａｒｓｉｎｇ）即ち構文解析（分解）し且つ該圧縮フレームにおける運動補償情報とブロックデータ構造とを分離させるパーサ（ｐａｒｓｅｒ）を包含している。本デコーダは、更に、ブロックデータ構造におけるピクセル及びピクチャ間予測エラーをデコードするためのブロックデコーダモジュールと、運動補償情報を使用して予測マクロブロックを得るための運動補償エンジンと、デコードしたピクチャ間予測エラー及びデコードした運動補償予測エラーを加算するための加算回路とを包含している。ブロックデコーダ及び運動補償エンジンは別個にアクセスすることが可能である。
【００２２】
別の実施例においては、該ブロックデコーダ及び運動補償エンジンは、更に、別個にアクセスすることの可能なモジュールへ分解することが可能である。
【００２３】
本発明の一つの利点は、回路のダイ面積及びコストを減少させることが可能であるということであり、なぜならば、機能的回路を脱圧縮の異なる動作のため及び異なるスタンダードに対して再使用することが可能であり、従って圧縮フレームの脱圧縮を実行するために必要な回路を減少させているからである。
【００２４】
本発明の別の利点は、デコーダがプロセサへ接続される場合に、デコーダの機能的ブロックのうちの幾つか又は幾つかの一部をプロセサにおいて実行することが可能であり、デコーダが一つを超えた数のフレームを同時的に脱圧縮することを可能としている点である。
【００２５】
本発明の別の利点は、デコーダがプロセサへ接続されている場合に、デコーダの機能的ブロックのうちの幾つか又は幾つかの一部がプロセサにおいて実行することが可能であり、それによりデコーダが同時的に圧縮フレームを脱圧縮し且つ脱圧縮フレームを圧縮することを可能としている点である。
【００２６】
本発明のさらなる利点は、フレームの脱圧縮のどの部分がプロセサにおいて実行され且つどの部分がデコーダのハードウエアで実行されるかのプロセサにおける動的再構成が、例えばプロセサをより強力なものと置換させるか又はメモリの付加などの電子システムにおける何らかの修正を考慮に入れる付加的な利点を提供するという点であり、且つデコーダが元々設計されているスタンダードと同一の機能的ブロックのほとんどを使用する将来のデコーディングスタンダードが単にソフトウエアに対する修正だけで受け付けることを可能とするという点である。
【００２７】
【発明の実施の形態】
図２は本発明の一実施例に基づくデコーダ２００のアーキテクチャの概略ブロック図を示している。図１乃至５に共通な部分は同一の参照番号を使用して示してある。デコーダ２００はマルチスタンダードデコーダであって、それは多数の異なるフォーマットのうちの何れかでエンコードされている入力をデコードすることが可能である。それらのスタンダードは、例えばＭＰＥＧ−２，ＭＰＥＧ−１，Ｈ．２６１，Ｈ．２６３のようなピクチャ内及びピクチャ間圧縮の両方を使用する任意のスタンダードとすることが可能である。本発明を使用して、デコーダのダイ面積をより小さくすることは、典型的に、デコーダが準拠するスタンダードが全て同一の拠り所となるアルゴリズムに基づくものであって、異なるアルゴリズムに基づくものではない場合に得られるものである。図２は、特に、フレームを脱圧縮するために離散余弦変換（ＤＣＴ）を使用するデコーダ２００を示しているが、異なるデコーディング技術を使用するデコーダを使用することも可能である。デコーダ２００は、ビデオ又はオーディオ、又はビデオとオーディオの組合わせのデコーダとすることが可能である。
【００２８】
デコーダ２００は複数個のスタンダードの組合わせに従ってフォーマット化されたビットストリームをデコードすることが可能である。本発明の好適実施例においては、デコーダ２００は、幾つかの広く受入れられているＤＣＴスタンダードに準拠してフォーマット化されたビットストリームをデコーディングすることの可能なマルチスタンダードデコーダである。図２及び３に示した実施例においては、デコーダ２００は、ＭＰＥＧ−１，ＭＰＥＧ−２，Ｈ．２６１，Ｈ．２６３に適合するビットストリームをデコーディングすることが可能である。このことは、デコーダ２００が、多数のビデオ及び／又はオーディオシーケンスをデコードすることが可能であることを許容する。図２及び３に示した本発明の実施例においては、デコーダは、更に、デコーダ２００がビデオ電話において使用することを可能とさせるためにＨ．２６１及びＨ．２６３スタンダードに適合するシーケンスをエンコードすることが可能である。デコーダ２００がフォーマットされているビットストリームをデコーディングすることが可能であり且つ適合すべきシーケンスをエンコーディングすることの可能などのスタンダードを選択するかということは、デコーダ２００の所望のコスト、効率及び適用場面に基づいている。
【００２９】
デコーダ２００は複数個の機能的ブロック又はモジュールから構成されている。機能的ブロックの間には接続が存在しており、機能的ブロックの各々が他の機能的ブロックの一つ又は幾つかによってアクセスすることを可能としている。図２に示した実施例においては、一つを超えた数のモジュールによってアクセスされるべき機能的ブロックの間にマルチプレクサ（ＭＵＸ）が配置されている。デコーダ２００はバッファ、即ちＦＩＦＯ３０を包含している。ＦＩＦＯ３０は、従来のデコーダにおいて見られるようなＦＩＦＯと同様のものであり、且つ前に受取った圧縮データがデコードされている間に入力してくる圧縮データをバッファするために使用される。ＦＩＦＯ３０はヘッダパーサ３６へ結合している。ヘッダパーサ３６は従来のデコーダにおいて見られるようなヘッダパーサと同様であり、エンコードされているデータをマクロブロックへ構文解析即ち分解し且つマクロブロックのヘッダから運動補償情報を抽出すべく機能する。
【００３０】
ヘッダパーサ３６の第一出力端はブロックデコーダモジュール５０のＶＬＣデコーダ４２へ結合している。ブロックデコーダモジュール５０はブロックアレイモジュール４４とＩＤＣＴモジュール４６とを包含している。ＶＬＣデコーダ４２は逆ジグザグスキャナ（ＩＺＺ）５４と結合している。ＩＺＺ５４の出力端はＭＵＸ１０４の入力端へ結合している。ＦＩＦＯ３０の出力端はＭＵＸ１０４の入力端へ結合しており、ＦＩＦＯ３０内に格納されている圧縮データがパーサ３６及びブロックアレイモジュール４４をバイパスして直接的にＭＵＸ１０４へ行くことを可能としている。ＭＵＸ１０４、及び機能的ブロックの間の接続を形成するために使用されているデコーダ内の任意のその他のＭＵＸの選択入力は、例えばプロセサ又はマイクロコントローラなどの予めプログラムされている論理回路である。この予めプログラムされている論理回路は、ＭＵＸの出力が接続される機能的ブロックに対して実行されるべき次の動作が何であるかを比較すべくプログラムされている。ＭＵＸ１０４の出力端はＩＤＣＴモジュール４６の逆量子化器４８の入力端へ接続している。逆量子化器４８はＩＤＣＴ回路６６へ結合している。ＩＤＣＴ回路６６の出力端はＭＵＸ１０６へ結合している。ＭＵＸ１０４の出力端はＩＤＣＴモジュール４６をバイパスするためにＭＵＸ１０６の他方の入力端である。これらのＭＵＸは、次に実行されるべきデコーディング又はエンコーディング動作に基づいて、幾つかの異なる機能的ブロックへ一つの機能的ブロックがアクセスすることを可能とするために機能的ブロック間の接続として機能する。ＭＵＸ１０６は、ＭＵＸ１０４と結合して、ブロックデコーダモジュール５０全体をバイパスする。ＤＣＴを基礎としていないデコーダにおいては、デコーダモジュールはブロックアレイデコーダモジュール４４及びＩＤＣＴモジュール４６の代わりに使用されるＤＣＴでないアルゴリズムに基づいて情報をデコードするための回路を有している。ブロックデコーダモジュール５０、ブロックアレイモジュール４４、ＩＤＣＴモジュール４６はパイプラインとして構成することが可能である。ブロックデコーダモジュール５０は、ピクセル及びピクチャ間予測エラーの両方をデコードする。
【００３１】
パーサ３６の第二出力端は、ＭＵＸ１０８を介して運動補償エンジン９０のアドレス演算回路９６へ結合しているが、該ＭＵＸは、該エンコーダが存在しない場合、又は運動補償エンジンへアクセスしない場合には除去することが可能である。アドレス演算回路９６は半ｐｅｌフィルタ７８へ接続している。メモリ１６０は運動補償エンジン９０の半ｐｅｌフィルタ７８へ結合している。運動補償エンジン９０の出力及びブロックデコーダモジュール５０の出力は加算回路７２において加算される。その結果は組立ユニット１０２へ通過される。組立ユニット１０２の出力はデコーダ２００の出力である。デコーダ２００の出力は典型的にメモリ１６０を介して表示発生器１３０へ結合される。該デコーダは、更に、それが動作すべく設計されている電子システムに依存してその他のブロックを有することが可能である。
【００３２】
エンコーダモジュール８８はメモリ１６０へ結合しているが、デコーダ２００はエンコーダモジュールなしで動作することが可能である。上述したように、エンコーダモジュール８８はビデオ電話用のＨ．２６１及びＨ．２６３スタンダードに適合すべくデータシーケンスをエンコードする。該エンコーダモジュールは、デコーダ２００がビデオ電話用のシーケンスを処理することが可能であるようにされるべき場合には付加すべきである。
【００３３】
ビデオ電話及び電話会議の場合には、各エンドユーザは受信と送信の両方を行うことが可能でなければならない。Ｈ．２６１及びＨ．２６３はビデオ電話用に現在広く受入れられているスタンダードである。Ｈ．２６１及びＨ．２６３スタンダードに適合すべくシーケンスをエンコードすることの可能なエンコーダは、ＭＰＥＧ−１又はＭＰＥＧ−２スタンダードに準拠するエンコーダよりも複雑性が少なく、分解能及びフレーム速度がより低く、従って、デコードされた画像の品質をＭＰＥＧ−１又はＭＰＥＧ−２スタンダードに適合するエンコーダからのものよりも幾分低下させる可能性がある。この様なエンコーダは廉価であり且つ実時間で動作すべきである。このことは、典型的に、ＭＰＥＧ−１又はＭＰＥＧ−２スタンダードに適合すべくシーケンスをエンコードするためのエンコーダよりもより効率の悪いものとさせる。即ち、この様なエンコーダの元のデータレートとエンコードしたビットストリームのデータレートとの間の比である圧縮係数が、与えられた画像品質に対して、ＭＰＥＧエンコーダの圧縮係数よりも低いことを意味している。しかしながら、この様なエンコーダは複雑性がより少ないので、ＭＰＥＧ−１及び／又はＭＰＥＧ−２スタンダードに適合することの可能なエンコーダよりも一層廉価であり且つ一層高速である。このことは、ビデオ電話を可能なものとさせている。なぜならば、信号をエンコードする場合の長い遅延及び多くのユーザにとって高すぎるようなコストは両方共ビデオ電話においては許容不可能なものだからである。
【００３４】
図２に示した実施例においては、デコーダ２００はＭＰＥＧ−１，ＭＰＥＧ−２，Ｈ．２６１，Ｈ．２６３スタンダードに準拠してフォーマット化されたビットストリームをデコードすることが可能であり且つＨ．２６１及びＨ．２６３スタンダードに適合してビットストリームを発生させるためにシーケンスをエンコードすることが可能である。このことは、デコーダ２００をビデオ電話に使用することを可能なものとさせている。ＭＰＥＧ−１及びＭＰＥＧ−２ではなくＨ．２６１及びＨ．２６３スタンダードに適合すべくエンコーディングすることは、最も高い圧縮係数を得るためにエンコーディングによる送信及び格納のコストを減少させることの願望と、装置を大量に市場に出すことを可能とするのに十分に低くコストを維持することとの願望を均衡させている。
【００３５】
エンコーダモジュール８８は入力してくるフレームを受取るための入力端を有している。入力してくるフレームにおける各マクロブロック、以後入力してくるマクロブロックという、は加算回路１１０及び運動予測エンジン８６へ伝搬する。デコーダ２００がプロセサ７５へ結合されていると、運動予測はデコーダハードウエアによるか又はソフトウエアにおけるプロセサ７５によるか、又は、好適には、両者の組合わせによって実行することが可能である。運動予測モジュール８６は入力してくるマクロブロックを将来及び過去のフレームにおけるマクロブロックと比較して、最も共通性を有するものはどのマクロブロックであるか、及びどのフレームにおけるもの、即ちＩ又はＰフレームにおけるものであるかを決定する。最も共通性を有するマクロブロックはこの入力してくるマクロブロックに対する予測マクロブロックである。運動予測エンジン８６は入力してくるマクロブロックと予測マクロブロックとの間の運動ベクトルを決定する。運動予測エンジン８６において決定される運動ベクトルはデータＭＵＸ１２０の入力及び運動補償エンジン９０の入力である。運動補償エンジン９０は予測マクロブロックを得る。運動補償エンジン９０の出力は加算回路７２の入力及び加算回路１１０の入力である。デコーダ２００の運動補償エンジン９０は、ＭＵＸ１０８を介してエンコーダモジュールにおいて使用することが可能であるが、デコーダ２００がプロセサへ結合されている場合には、該プロセサ及びメモリは以下に更に説明するようにＭＵＸ１０８の代わりに使用することが可能である。エンコーダ８８において必要とされる運動補償エンジン用のデコーダ２００内に既に存在する運動補償エンジン９０を使用することは、エンコーダモジュール８８が運動補償エンジン９０を再使用することを可能とし、付加的な運動補償エンジンに対して必要とされるようなダイ空間を節約している。
【００３６】
予測マクロブロックは加算回路１１０において入力してくるマクロブロックから減算される。例えばそのフレームがＩフレームである場合のように予測マクロブロックが存在しない場合には、入力してくるマクロブロックのピクセルに対して何も付加されることはない。予測マクロブロックが存在する場合には、入力してくる予測マクロブロックのピクセルは入力してくるマクロブロックのピクセルから減算され、入力してくるマクロブロックに対して予測エラーピクセルが発生される。
【００３７】
加算回路の出力端はＤＣＴ回路１１２へ接続されており、該回路１１２は量子化器１１４へ接続されている。ＤＣＴ回路１１２は、入力フレームにおけるピクセルからなる各８×８ブロックに関してＤＣＴを実行する。量子化器１１４は適宜の量子化テーブルに基づいて該値を量子化する。量子化器１１４の出力端はジグザグスキャナ（ＺＺ）１１６及びＩＤＣＴモジュール４６へＭＵＸ１０４を介して接続されている。入力してくるマクロブロックが例えばＩ及びＰフレームにおけるマクロブロックのような予測マクロブロックとして機能することが可能である場合には、それはＩＤＣＴモジュール４６へ送られ、次いでそれが何らかの入力してくるマクロブロックに対する予測マクロブロックである場合には、検索されるべきバッファへ送られる。
【００３８】
入力してくるマクロブロックがエンコードされると、それは量子化される。データが量子化される場合には常に幾らかの損失が存在する。デコーダは、量子化された予測マクロブロックに対して予測エラーを付加することによってマクロブロックをデコーディングする。エンコーダにおいて得られた予測エラーが量子化された予測マクロブロックに基づいている場合にはエラーはより少なくなる。従って、予測マクロブロックとして使用することの可能な何れかの入力してくるマクロブロックは、格納される前に、量子化器１１４及び逆量子化器４８を通過する。従って、エンコーダモジュール８８はこれらのマクロブロックを脱圧縮するために逆量子化器及びＩＤＣＴ回路を必要とする。運動予測モジュール８６をＭＵＸ１０４へ接続させることは、エンコーダモジュール８８がブロックデコーダモジュール５０によって使用されたのと同一のＩＤＣＴモジュール４６を使用することを可能とする。エンコーダモジュール８８が同一のＩＤＣＴモジュール４６を使用することを可能とすることは、何ら回路を付加したりダイ空間を付加したりすることなしに、エンコーダモジュール８８がハードウエアにおいて比較されるべきマクロブロックのデコーディングを実行し脱圧縮を高速化させることを可能とする。
【００３９】
ＩＤＣＴモジュール４６の出力は加算回路１２２の入力である。上述したように、運動補償エンジン９０の出力は加算回路１２２の入力である。予測マクロブロックは加算回路１２２において、予測マクロブロックが存在する場合に、ＩＤＣＴ回路６６によってデコードされた予測エラーへ加算（付加）されて圧縮されていない入力してくるマクロブロックを発生する。加算回路１２２の出力はバッファ１２６内に格納される。該バッファは、典型的には、ＦＩＦＯであるが、該バッファはメインメモリの一部とすることが可能である。Ｉ及びＰフレームにおけるマクロブロックはバッファ１２６内に格納され且つそれらが比較のために必要とされる予測マクロブロックである場合には、検索される。バッファ１２６は運動予測（推定）エンジン８６へ接続している。
【００４０】
上述した如く、量子化器１１４の出力端はＺＺ１１６へ接続している。ＺＺ１１６は入力してくるフレームの８×８矩形ブロックアレイをジグザグフォーマットにおける直列表現へ変換する。ＺＺ１１６はＶＬＣエンコーダ１１８へ接続しており、該エンコーダ１１８はデータＭＵＸ１２０へ接続している。次いで、ＶＬＣエンコーダ１１８は、典型的には、ホフマンコードを使用して、エンコードされているブロックのＤＣＴ係数を表わす固定長ＰＣＭコードをＶＬＣへエンコードする。これは、典型的にプロセサから得られるヘッダ情報と結合されて、エンコードされたビットストリームを形成する。データＭＵＸ１２０の動作は、その他の機能的ブロックのほとんどと同様に、プロセサ７５によって実行することが可能である。エンコードされたビットストリームはデータＭＵＸ１２０の出力であり、それは、又、エンコーダモジュール８８の出力でもある。
【００４１】
エンコーダモジュール８８は論理回路によって制御される。デコーダ２００がプロセサ７５へ結合される場合には、該プロセサはエンコーダモジュール８８を制御する。しかしながら、エンコーダ８８は、例えばマイクロコントローラなどのそれ自身の小型のプロセサを有することが可能である。
【００４２】
本発明の一実施例においては、デコーダ２００は、更に、プロセサ７５へ結合している。プロセサ７５は、プロセサ７５においてソフトウエアにおいて実行されるべき機能的ブロックのうちの幾つか又は幾つかのうちの一部が機能的ブロックのうちの幾つか又は幾つかのうちの一部を完全に置換するか、又はハードウエアかソフトウエアかの何れかで該機能を実行することを可能とする。例えばＨ．２６１及びＨ．２６３に対する運動推定（予測）ブロックのほとんどのようなソフトウエアにおいて実行すべきことがそれほど大変なことではない機能的ブロックの幾つか又は幾つかのうちの一部を完全に置換させることは、ダイ空間を節約することを可能とし且つほとんどの大変な機能的ブロックをハードウエアの中に維持したままシステムのコストを減少させ、従ってそれらはシステムが実時間で動作するのに十分に高速で実行することが可能である。実時間で動作することは、デコーダ２００が人間の観察者がデコーディングにおける何らかの遅延を検知することが可能であるような典型的に１秒の１／３０であるスクリーンリフレッシュ間の時間において画像全体をデコードするのに十分に高速に動作するものでなければならないことを意味している。目標とするところは、人間の観察者にとって気が付くこととなるような程度に多くのフレームを落とすことなしに、デコーダ２００を実時間で動作させることである。デコーダ２００が動画をデコーディングする場合に実時間で動作するものではない場合には、デコードされた動画は、デコーダ２００が次の画像を処理するためにメモリへのアクセスを得ることが可能となるまで、画像間において周期的に停止し且つ待機することとなる。デコーダがビデオ電話を可能とするエンコーダを有している場合には、実時間で動作するものではないということは、例えば通話の一端においての会話などのイベントの発生からそのイベントが通話の他端において表示されるまでの間の時間の長さがエンコーダ及びデコーダの両方がバス及びメインメモリへアクセスを得るために待機せねばならない時間だけ増加されることを意味している。装置が追い付くことが可能となるまで、会話中に途切れが存在することとなる。このことはビデオ会議を行うのに必要な時間を増加させ、且つその様な会議は参加者に対して不快なものとさせる。
【００４３】
プロセサ７５において実行される動作がどれ程のものであるかは、プロセサ７５の処理能力（容量）及び速度とエンコードされたビットストリームが実時間でコンパイルするスタンダードによって特定された機能を実行するために必要とされる処理の複雑性及び量との均衡に基づいている。プロセサの処理能力（容量）及び速度は、プロセサがデコーダ２００が典型的に１秒の１／３０であるスクリーンリフレッシュ間の時間においてフレームをデコードすることを可能とするのに十分に高速で機能を実行するのに必要な能力（容量）及び速度か又はそれより上であるべきである。プロセサの容量及び速度が特定のスタンダードに対して必要とされる容量及び速度よりも上であるか否かの決定は、そのスタンダードの条件、そのスタンダードに適合すべくフレームを脱圧縮するためにデコーダによって必要とされる時間、その脱圧縮を実行するためのメモリ条件、プロセサに対して使用可能なメモリ、プロセサの能力に基づいて行われる。ＭＵＸはこの情報に基づいてプログラムされており且つフレームがコンパイルされているスタンダード、即ちＭＰＥＧ−２，Ｈ．２６３などが何れであるかの情報を受取るべきである。この様にして、圧縮フレームがコンパイルされているスタンダード及びデコーダが設けられているシステムの能力に基づいて、デコーダは、機能をソフトウエアで実行することが可能であるか又はハードウエアで実行することが可能であるかを動的に決定することが可能である。
【００４４】
デコーダを機能的ブロックへ分離させ且つそれをプロセサへ接続させることは、機能的ブロックのうちの幾つか又は幾つかの一部をプロセサによって実行することを可能とし、ハードウエアをその他のタスクのために解放し且つデコーダ２００がより多くの機能を同時的に実行することを可能とさせる。
【００４５】
動作について説明すると、圧縮フレームを脱圧縮することが必要とされるＩ又はＰフレーム、即ち該必要とされるフレームを脱圧縮する。圧縮フレームはヘッダパーサ３６によってマクロブロックへ構文解析即ち分解される。ヘッダパーサ３６は、又、該マクロブロックを二つの部分、即ち運動補償情報を含むマクロブロックのヘッダ部分と、圧縮ブロックデータ構造とに分離する。圧縮ブロックデータ構造はブロックデコーダモジュール５０において脱圧縮される。運動補償情報は予測マクロブロックを得るために運動補償エンジン９０によって使用される。これら二つのステップは、好適には、同時的に実行されるが、それらは任意の順番で実行することも可能である。これら二つのステップの結果は加算される。好適には、各マクロブロックの二つの部分へのパーシング（構文解析、即ち分解）、運動補償エンジン９０による予測マクロブロックを得ること、及び該加算はＰ及びＢフレームに対してのみ実行される。Ｉフレームの場合には、運動補償エンジン９０及びブロックデコーダモジュール５０の一部をバイパスすることが可能である。次いで、該圧縮フレームはメモリ１６０内に格納され、次いで表示発生器１３０へ転送される。本願出願人に譲渡されている発明者Ｊｅｆｆｅｒｓｏｎ  Ｅ．  Ｏｗｅｎ及びＪｅｙｅｎｄｒａｎ  Ｂａｌａｋｒｉｓｈｎａｎの米国特許出願で「ＤＣＴを基礎とした技術を使用して圧縮情報を格納することにより脱圧縮に対して必要とされるメモリの減少（Ｒｅｄｕｃｉｎｇ  ｔｈｅ  Ｍｅｎｏｒｙ  Ｒｅｑｕｉｒｅｄ  ｆｏｒ  Ｄｅｃｏｍｐｒｅｓｓｉｏｎ  ｂｙ  Ｓｔｏｒｉｎｇ  Ｃｏｍｐｒｅｓｓｅｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｕｓｉｎｇ  ＤＣＴ  Ｂａｓｅｄ  Ｔｅｃｈｎｉｑｕｅｓ）」という名称の同時係属中の米国特許出願（代理人ドケット番号９５−Ｃ−０１４）（引用により本明細書に取込む）に記載されている技術を使用して、脱圧縮されたフレーム（即ち、脱圧縮フレーム）をメモリ１６０内に格納する前に再圧縮させてメモリ条件を減少させることが可能である。
【００４６】
デコーダをハードウエア又はソフトウエアで実施することの可能な別個のモジュール及び機能的ブロックへ分離することは、一つを超えた数のモジュール又は機能的ブロックによってそれらのモジュール及び機能的ブロックへの接続を形成することを可能とする。このことは、該モジュール及び機能的ブロックをその他のモジュールにおいて再使用することを可能とし、圧縮フレームの脱圧縮を実施することの回路の必要性を減少させるという利点を提供している。
【００４７】
次に、デコーダ２００の詳細な動作について説明する。本実施例においては、圧縮フレームがＦＩＦＯ３０内に読込まれるが、任意のタイプのメモリをバッファとして使用することが可能である。圧縮フレームをヘッダパーサ３６によってより小さなサブユニット、本実施例においてはマクロブロックへパーシング即ち構文解析（分解）する。異なる実施例においては、圧縮画像をフレームより大きな単位でＦＩＦＯ内へ読込むことが可能であり、且つヘッダパーサ３６が、その画像をマクロブロックへ分解するまで、それをパーシング即ち分解（構文解析）する。
【００４８】
Ｐ及びＢフレームの場合には、ヘッダパーサ３６はマクロブロックを二つの部分、即ち運動補償情報を含むマクロブロックのヘッダ部分と圧縮したブロックデータ構造とに分離する。マクロブロックのヘッダ部分は運動補償エンジン９０へ送られる。圧縮ブロックデータ構造はブロックデコーダモジュール５０のＶＬＣデコーダ４２へ送られる。
【００４９】
ブロックデコーダモジュール５０はデータピクセル及びピクチャ間予測エラーをデコードする。ＶＬＣデコーダ４２はエンコードしたブロックを表わす可変長コードをデコードし且つそれらを、ジグザグフォーマットで得られた８×８ブロックアレイの直列表示であるエンコードしたブロックを有するＤＣＴ係数を表わす固定長ＰＣＭコードへ変換する。ＩＺＺ５４は、この直列表現を矩形の８×８ブロックアレイへ変換し、且つその結果を逆量子化器４８へ通過させる。逆量子化器４８は、適宜の量子化テーブルに基づいて逆量子化を実施する。逆ジグザグスキャニングは、逆量子化の前又は後の何れかに実施することが可能であり、且つＩＺＺ５４と逆量子化器４８の順番は、逆量子化器４８をＶＬＣデコーダ４２へ結合させ且つＩＺＺ５４をＩＤＣＴ回路６６へ結合させた状態で逆にすることが可能である。その結果をＩＤＣＴ回路６６へ通過させる。ＩＤＣＴ回路６６は逆ＤＣＴを実施し且つ矩形状のアレイフォーマットで脱圧縮した８×８ブロックデータ構造を発生する。
【００５０】
運動補償エンジン９０は予測マクロブロックを得る。上述したように、運動予測情報はアドレス演算回路９６の入力である。アドレス演算回路９６は、どのフレームを運動補償エンジン９０がアクセスすることを必要とするかを決定するために実施されるべき予測のタイプを決定する。アドレス演算回路９６は、デコードされるフレームの運動ベクトル及びタイプを使用して予測フレーム、及び予測マクロブロックが位置されているメモリ１６０内のアドレスを決定する。該予測マクロブロックはメモリ１６０から得られ且つ半ｐｅｌフィルタ７２内に入力される。典型的に、メモリ１６０とのインターフェースの全てを制御するデコーダ内のＤＭＡエンジン１６２が存在している。半ｐｅｌフィルタ７２は予測マクロブロックに関して水平方向及び垂直方向の半ピクセル補間を実施する。
【００５１】
運動補償エンジン９０によって得られた半ピクセルフィルタ済み予測マクロブロック及びブロックデコーダモジュール５０によってデコードされたピクチャ間予測エラーは加算回路７２において加算され且つ組立ユニット１０２へ通過される。ピクチャ間コーディングにおいては、あるフレームがデコードされるべき将来のフレームへのアクセスを必要とするので、必要とされるフレームは、典型的に、それらを必要とするフレームの前にエンコーダによって送られる。ＭＰＥＧ−２スタンダードはピクチャ間予測を使用し、従って、圧縮フレームはビデオシーケンスにおいて表示されるのと同一の順番で送られるものではない。組立ユニット１０２は、該情報が脱圧縮されるフレームに対応してメモリ内の正しい位置に配置されることを確保する。該組立ユニットは、好適にはソフトウエアで適切なアドレス演算によって実施されるが、それはマルチプレクサにおいて実施することも可能である。
【００５２】
その結果得られるデコードされたマクロブロックは組立ユニット１０２によってそのために指定された場所においてメモリ１６０内に格納されることを必要とする。全てのフレームがメモリ１６０内に格納されることを必要とする。なぜならば、デコードされたマクロブロックは、脱圧縮プロトコルの格納及び送信フォーマットに起因してディスプレイへ送られるべき次のマクロブロックではない場合があるからである。ＭＰＥＧ−２及びその他のピクチャ間コーディングを使用する脱圧縮プロトコルにおいては、フレームは過去及び将来のフレームに基づいてエンコードされ、従って、フレームを適切にデコードするためには、フレームはエンコーダによって順番に送られるものではなく、従ってそれらが表示されるまで格納されることを必要とする。更に、Ｉ及びＰフレームは、それらを他のフレームをデコードするために使用することが可能であるように格納されることを必要とする。
【００５３】
Ｉフレームはピクチャ間圧縮のみを包含している。従って、Ｉフレームマクロブロックのヘッダ内には運動補償情報は存在しておらず、且つ運動補償エンジン９０は省略することが可能である。Ｉフレームのブロックデータ構造におけるピクセルはブロックデコーダモジュール５０においてデコードされ且つ出力１２０は組立ユニット１０２に対して経路付けされる。Ｉフレームは、運動補償エンジン及び加算回路をバイパスすることが可能である。運動補償エンジン９０及び加算回路をバイパスすることは、Ｉフレームを脱圧縮するのに必要な時間が減少されるという付加的な利点を提供している。
【００５４】
一つを超える数の機能的ブロックによってアクセスされるべき機能的ブロックをバイパスさせることを可能とし且つデコーダ内のそれらの物理的位置とは異なった順番でアクセスすることを可能とする機能的ブロック間の接続は、図２に示したように、適宜の位置に配置したマルチプレクサによって行うことが可能であるか、又は機能的ブロック間の接続は図３に示したようにプロセサによって制御することが可能である。
【００５５】
上述したデコーダの如きデコーダ２００′は、ＭＰＥＧ−１，ＭＰＥＧ−２，Ｈ．２６１，Ｈ．２６３に準拠すべきフォーマット化されているビットストリームをデコーディングし且つＨ．２６１及びＨ．２６３スタンダードに準拠してシーケンスをエンコーディングすることが可能なマルチスタンダードデコーダである。デコーダ２００′は、更に、複数個の機能的モジュールから構成されている。該機能的モジュールの各々はその他の機能的モジュールの一つ又は幾つかによってアクセスすることが可能である。該モジュールはメモリ１６０及びプロセサ７５へ接続されており、プロセサ７５が機能的ブロックのアクセスを制御することを可能としている。典型的に、デコーダ２００′内にはＤＭＡエンジン１６２が設けられており、それはメモリ１６０とのインターフェースの全てを制御する。
【００５６】
デコーダ２００′はバッファ、即ちＦＩＦＯ３０を包含しており、それは、従来のデコーダにおいて見られるようなＦＩＦＯと同様であり且つ前に受取った圧縮データをデコードしている間に入力してくる圧縮データをバッファする。ＦＩＦＯ３０はヘッダパーサ３６へ結合している。ヘッダパーサ３６は、エンコードされているデータをマクロブロックへ構文解析即ち分解し且つマクロブロックのヘッダから運動補償情報を抽出する。ＦＩＦＯ３０は、更に、プロセサ７５へ結合されており、圧縮データをプロセサ内において構文解析即ち分解することを可能とし、且つヘッダパーサ３６をバイパスすることを可能とする。
【００５７】
ヘッダパーサ３６はプロセサ７５及びメモリ１６０へ接続している。プロセサ７５はブロックデコーダモジュール５０′へ接続しており、該モジュールは、ブロックデコーダモジュール５０のと同様に、ブロックアレイデコーダモジュール４４とＩＤＣＴモジュール４６とを有している。ブロックアレイデコーダモジュール４４はＩＺＺ５４へ接続しているＶＬＣデコーダ４２を有している。ＩＤＣＴモジュール４６は、ＩＤＣＴ回路６６へ結合している逆量子化器４８を有している。プロセサ７５はＶＬＣデコーダ４２、逆量子化器４８、ＩＤＣＴ回路６６へ結合している。ブロックデコーダモジュール５０′、及びブロックアレイデコーダモジュール４４及びＩＤＣＴモジュール４６はパイプライン形態で示してあるが、それらはその他の形態とすることも可能である。ブロックデコーダモジュール５０′はピクセル及びピクチャ間予測エラーをデコードする。
【００５８】
ヘッダパーサ３６の第二出力端は運動補償エンジン９０のアドレス演算回路９６へ結合している。プロセサ７５は、更に、アドレス演算回路９６へ結合している。運動補償エンジン９０は、半ｐｅｌフィルタ７８へ結合しているアドレス演算回路９６を有している。運動補償エンジン９０は予測マクロブロックを得る。ブロックデコーダモジュール５０′及び運動補償エンジン９０の出力は加算回路７２において加算される。加算回路７２の出力端は組立ユニット１０２へ結合しており、且つ組立ユニット１０２の出力端はメモリ１６０へ結合している。メモリ１６０は半ｐｅｌフィルタ７８及び運動補償エンジン９０のアドレス演算回路９６へ結合している。該メモリは、更に、ＶＬＣデコーダ４２、ＩＺＺ５４、逆量子化器４８及びブロックデコーダ回路のＩＤＣＴ回路６６、及びヘッダパーサ３６及び加算回路７２へ結合している。
【００５９】
組立ユニット１０２の出力はデコーダ２００′の出力である。デコーダ２００′の出力端は、典型的にメモリ１６０を介して、表示発生器１３０へ結合している。本デコーダは、それが動作すべく設計されている電子システムに依存してその他のブロックを有することも可能である。
【００６０】
エンコーダモジュール８８′がメモリ１６０及びプロセサ７５へ結合しているが、デコーダ２００′はエンコーダモジュール８８′なしで動作することが可能である。エンコーダモジュール８８′は、デコーダ２００′がビデオ電話用のシーケンスを処理することが可能であるように決定されている場合に付加されるべきである。
【００６１】
エンコーダモジュール８８′は、ＭＵＸによって実施される動作及びプロセサ７５によって実施される動作を除いて、図２におけるエンコーダモジュール８８と同一の回路を有しており且つ動作を行う。
【００６２】
プロセサ７５は機能的ブロックの幾つか又は幾つかの一部を完全に置換させるか又はハードウエアか又はソフトウエアの何れかで該機能を実施することを可能とするために、デコーダ２００′の機能的ブロックのうちの幾つかをプロセサ７５においてソフトウエアで実施することを可能とする。例えばＨ．２６１及びＨ．２６３用の運動推定（予測）ブロック８６の大多数などのようなソフトウエアで実施すべきことがそれほど大変なものではない機能的ブロックの幾つか又は幾つかの一部を完全に置換させることは、ほとんどの大変な機能的ブロックをハードウエア内に維持し従ってシステムが実時間で動作するのに十分に高速でそれらを実施することを可能としながら、ダイ空間を節約することを可能とし且つシステムのコストを低下させる。
【００６３】
動作について説明すると、圧縮フレームを脱圧縮することを必要とするＩ又はＰフレームは脱圧縮され、即ちそれらは必要とされるフレームである。圧縮フレームはマクロブロックへ分解（構文解析）され、それらは、以下に更に詳細に説明するように、プロセサによるか、又はプロセサとヘッダパーサ３６の組合わせによって、ヘッダパーサ３６によってヘッダ部分と圧縮ブロックデータ構造とに分離される。圧縮ブロックデータ構造はブロックデコーダモジュール５０′において脱圧縮される。予測マクロブロックは運動圧縮エンジン９０によって得られる。これら二つのステップは、好適には、同時的に実施されるが、それらは任意の順番で実施することが可能である。これら二つのステップの結果は加算される。好適には、各マクロブロックの二つの部分へのパーシング（構文解析即ち分解）、運動補償エンジン９０によって予測マクロブロックを得ること、及び加算はＰ及びＢフレームに対してのみ実施され、Ｉフレームに対しては、運動補償エンジン９０及びブロックデコーダモジュール５０′の一部をバイパスすることが可能である。再圧縮フレームはメモリ１６０内に格納することが可能であり、次いで表示発生器１３０へ転送することが可能である。
【００６４】
デコーダをハードウエア又はソフトウエアの別個のモジュール及び機能的ブロックへ分離することは、一つを超える数のモジュール又は機能的ブロックによって該モジュール及び機能的ブロックに対して接続を構成することを可能とする。このことは、モジュール及び機能的ブロックをその他のモジュールにおいて再使用することを可能とし、圧縮フレームの脱圧縮を回路が実施することの必要性を減少している。デコーダを機能的ブロックへ分離し且つそれをプロセサへ接続することは、プロセサによって実施されるべき機能的ブロックの幾つか又は幾つかの一部がその他のタスクのためにハードウエアを解放することを可能とし、デコーダ２００′がより多くの機能を同時的に実施することを可能とする。
【００６５】
次に、デコーダ２００′の詳細な動作の一実施例について図３及び図４Ａを同時的に参照して説明する。本実施例においては、圧縮画像フレームがＦＩＦＯ３０内に読込まれるが、任意のタイプのメモリをバッファとして使用することが可能である。圧縮されているフレーム（圧縮フレーム）はより小さなサブユニット、本実施例においてはマクロブロック、へ分解（構文解析）される。Ｐ及びＢフレームの場合には、該マクロブロックは二つの部分、即ち運動補償情報を含むマクロブロックのヘッダ部分と圧縮されているブロックデータ構造とに分離される。該マクロブロックのヘッダ部分は運動補償エンジン９０へ送られる。圧縮されているブロックデータ構造はブロックデコーダモジュール５０′のＶＬＣデコーダ４２へ送られる。ヘッダパーサ３６は、フレームをスライスへ分解（構文解析）し且つフレームヘッダ内に含まれる量子化、及びフレーム及び運動補償タイプ情報を分離するフレームヘッダパーサ３７と、スライスをマクロブロックへ分解（構文解析）するスライスヘッダパーサ３８と、ブロックデータ構造からマクロブロックヘッダを分離するＭＢＬＫヘッダパーサ３９とから構成されている。ヘッダパーサ３６はプロセサ７５へ結合されており、且つヘッダパーサの動作の幾つかはプロセサ７５において実施することが可能である。
【００６６】
プロセサ７５においてどれだけ多くの動作が実施されるかは、プロセサ７５の処理能力及びスピードと、エンコードされているビットストリームが実時間で適合するスタンダードによって特定される機能を実施するために必要な処理の複雑性及び量との均衡に基づいている。このことは、パーシング（分解、即ち構文解析）動作とプロセサ７５において機能的ブロックのうちの一つ又は一つの一部を実施することが所望される場合の任意のその他の動作の両方に適用される。例えば、プロセサの処理能力（容量）が少なくとも能力（容量）スレッシュホールドにあり且つプロセサの速度が少なくとも速度スレッシュホールドにあり、その場合にプロセサの能力スレッシュホールドと速度スレッシュホールドとが一体となってヘッダパーサ３６の動作全体をデコーダ２００′が典型的に１秒の１／３０であるスクリーンリフレッシュ間の時間内にフレームをデコードすることを可能とするのに十分に高速で実施することを可能とする場合には、ヘッダパーサ３６の全体をプロセサで置換させることが可能である。ＦＩＦＯ３０は、更に、プロセサ７５へ接続しており、且つヘッダパーサ３６がプロセサ７５によって完全に置換させることが可能である場合には、ビットストリームがプロセサ７５へ送られてヘッダパーサ３６へは送られない。プロセサの能力（容量）及び速度が特定のスタンダードに対する能力（容量）及び速度より上であるか否かの決定は、プロセサ７５におけるソフトウエアによって行われる。該ソフトウエアは、ビットストリームが準拠しているスタンダード、即ちＭＰＥＧ−２，Ｈ．２６３などへのアクセス、そのスタンダードの条件、そのスタンダードに準拠してフレームを脱圧縮するためにデコーダによって必要とされる時間、その脱圧縮を実施するためのメモリ条件、プロセサが使用可能なメモリ、及びプロセサの能力（容量）へのアクセスを有するべきである。
【００６７】
このことは、プロセサ７５がハードウエアがその他の機能、例えば圧縮されていないフレームのエンコーディング、又は圧縮フレームをデコードするのと同時的に別の圧縮されているフレームのデコーディングなどのその他の機能を実施するためにハードウエアを解放するという利点を提供する。このフレームの脱圧縮のどの部分がプロセサ７５において実施され且つデコーダのハードウエアにおいて何が実施されるかのプロセサ７５における動的再形態特定は、例えばプロセサをより強力なものと置換させるか又はメモリを付加するなどの電子システムにおける何らかの修正を考慮に入れることの利点を提供している。それは、又、デコーダ２００′が元々そのために設計されているスタンダードと同一の機能的ブロックのほとんどを使用する将来のデコーディングスタンダードを受付ることを可能とするという利点を提供している。前者及び後者の両方は単にソフトウエアに対する修正のみで行うことが可能である。例えばＨ．２６１又はＨ．２６３のような演算の要求がより少ないスタンダードに適合するビットストリームの場合には、ＭＰＥＧ−１に適合するものよりも、プロセサ７５において脱圧縮のより多くのものを行うことが可能であり、且つＭＰＥＧ−１スタンダードに適合するビットストリームのより多くの脱圧縮をＭＰＥＧ−２に適合するものよりもプロセサ７５において行うことが可能である。
【００６８】
圧縮フレームを分解（構文解析）した後に、その結果得られるデータはメモリ１６０内に格納される。ブロックデコーダモジュール５０′はデータピクセル及びピクチャ間予測エラーをデコードする。ＶＬＣデコーダ４２はエンコードされているブロックを表わす可変長コードをデコードし且つそれらを、ジグザグフォーマットで得られる８×８ブロックアレイの直列表現であるエンコードされているブロックを有するＤＣＴ係数を表わす固定長ＰＣＭコードへ変換させる。ＩＺＺ５４は、この直列表現を矩形状の８×８ブロックアレイへ変換し、且つその結果を逆量子化器４８ヘ通過させる。逆量子化器４８は、適宜の量子化テーブルに基づいて逆量子化を実施する。その結果はＩＤＣＴ回路６６へ通過される。ＩＤＣＴ回路６６は逆ＤＣＴを実施し且つ矩形状アレイフォーマットで脱圧縮された８×８ブロックデータ構造を発生する。
【００６９】
運動補償エンジン９０は予測マクロブロックを得る。上述したように、運動補償情報はアドレス演算回路９６の入力である。アドレス演算回路９６は、運動補償エンジン９０がアクセスすることを必要とするのがどのフレームであるかを決定するために実施すべき予測のタイプを決定する。アドレス演算回路９６は、予測フレーム（及び予測マクロブロック）が位置されているメモリ１６０におけるアドレスを決定するためにデコードされるフレームのタイプ及び運動ベクトルを使用する。予測マクロブロックはメモリ１６０から得られ且つ半ｐｅｌフィルタ７２内へ入力される。典型的には、メモリ１６０とのインターフェースの全てを制御するデコーダ内のＤＭＡエンジン１６２が存在している。半ｐｅｌフィルタ７２は、予測マクロブロックに関して水平方向及び垂直方向の半ピクセル補間を実施する。
【００７０】
運動補償エンジン９０によって得られた半ピクセルフィルタ処理済み予測マクロブロック、及びブロックデコーダモジュール５０′によってデコードされたピクチャ間予測エラーは加算回路７２において加算され且つ組立ユニット１０２へ通過される。ピクチャ間コーディングにおいては、幾つかのフレームがデコードされるべき将来のフレームへのアクセスを必要とするので、必要とされるフレームは、典型的に、該フレームがそれらを必要とする前に、エンコーダによって送られる。ＭＰＥＧ−２スタンダードはピクチャ間予測を使用し、従って、圧縮フレームはビデオシーケンスにおいて表示されるのと同一の順番で送られるものではない。組立ユニット１０２は、脱圧縮中のフレームに対応してメモリ内の正しい位置にその情報が配置されることを確保する。組立ユニットは、適切なアドレス演算、好適にはソフトウエアで実施されるが、それはマルチプレクサで実施することも可能である。
【００７１】
結果的に得られるデコードされたマクロブロックは組立ユニット１０２によってそのために指定された場所内にメモリ１６０内に格納されることを必要とする。全てのフレームはメモリ１６０内に格納されることを必要とする。なぜならば、デコードされたマクロブロックは脱圧縮プロトコルの格納及び送信フォーマットに起因して、ディスプレイへ送信されるべき次のマクロブロックではない場合があるからである。ＭＰＥＧ−２及びピクチャ間コーディングを使用するその他の脱圧縮プロトコルにおいては、フレームは過去及び将来のフレームに基づいてエンコードされ、従って、適切にフレームをデコードするためには、フレームはエンコーダによって順番に送られるのではなく、従って、表示されるまで格納されることを必要とする。更に、Ｉ及びＰフレームは、それらは他のフレームをデコードするために使用することが可能であるように格納されることを必要とする。
【００７２】
Ｉフレームはピクチャ間圧縮のみを包含している。従って、Ｉフレームマクロブロックのヘッダ内には運動補償情報が存在しておらず、且つ運動補償エンジン９０を省略することが可能である。ピクチャ間圧縮はブロックデコーダモジュール５０′においてコード化され、且つ出力１２０は組立ユニット１０２に対して経路付けされる。Ｉフレームは、運動補償エンジン及び加算回路７２をバイパスすることが可能である。運動補償エンジン９０及び加算回路７２をバイパスすることは、Ｉフレームを脱圧縮するための時間が減少されるという付加的な利点を提供する。
【００７３】
エンコーダモジュール８８の動作の一実施例について図３及び図４Ｂを同時的に参照して説明する。例えばＰ又はＢフレームにおけるマクロブロックのような運動補償を有することが可能なフレーム内の各入力してくるマクロブロックは、運動推定（予測）エンジン８６において、バッファ１２６内に格納されているマクロブロックと比較される。この運動推定は、デコーダハードウエアによって又はソフトウエアにおいてプロセサ７５によって、又は好適には、これら二つの組合わせによって実施することが可能である。運動推定モジュール８６は、入力してくるマクロブロックを将来及び過去のフレームにおけるマクロブロックと比較して、どのマクロブロック、及びどのフレームにおける、即ちＩ又はＰフレームにおいて、それが最も共通性を有するものであるかを決定する。最も共通性を有するマクロブロックはこの入力してくるマクロブロックに対する予測マクロブロックである。運動推定エンジン８６は入力してくるマクロブロックと予測マクロブロックとの間の運動ベクトルを決定する。運動推定エンジン８６において決定された運動ベクトルはメモリ１６０内に格納される。運動補償エンジン９０は、この運動ベクトルを獲得し且つ予測マクロブロックを得、それは、次いで、メモリ１６０内に格納される。
【００７４】
予測マクロブロックは加算回路１１０において入力してくるマクロブロックから減算される。例えばそのフレームがＩフレームである場合のように予測マクロブロックが存在しないフレームの場合には、運動推定エンジン８６及び運動補償エンジン９０はバイパスされ且つ入力してくるマクロブロックのピクセルに対して何も付加されるものはない。予測マクロブロックが存在する場合には、該予測マクロブロックのピクセルが入力してくるマクロブロックのピクセルから減算されて、入力してくるマクロブロックに対する予測エラーピクセルを得る。ＤＣＴ回路は、入力フレームにおけるピクセルの各８×８ブロックに関してＤＣＴを実施する。量子化器１１４は、適宜の量子化テーブルに基づいて該値を量子化し、且つその結果をメモリ１６０内に配置させる。
【００７５】
入力してくるマクロブロックが例えばＩ及びＰフレームにおけるマクロブロックのような予測マクロブロックとして機能することが可能である場合には、量子化予測エラーがＩＤＣＴモジュール４６へ送られ、従って入力してくるマクロブロックはフレームバッファ１２６内に格納し、それが何らかのその他の入力してくるマクロブロックに対する予測マクロブロックである場合に検索することが可能である。
【００７６】
ＩＤＣＴモジュール４６の出力及び運動補償エンジン９０の出力は加算回路１２２において加算される。予測マクロブロックが加算回路１２２において、予測マクロブロックが存在する場合に、ＩＤＣＴ回路６６によってデコードされた予測エラーへ加算されて、圧縮されていない入力してくるマクロブロックを得る。加算回路１２２の出力はフレームバッファ１２６内に格納される。Ｉ及びＰフレームにおけるマクロブロックはバッファ１２６内に格納され、且つ、それらが比較のために必要とされる予測マクロブロックである場合には、検索される。バッファ１２６は運動推定エンジン８６へ接続している。
【００７７】
量子化器１１４の出力は、更に、８×８矩形状ブロックアレイへ、ＺＺ１１６によってジグザグフォーマットにその直列表現へ変換される。ＶＬＣエンコーダ１１８は、次いで、エンコードされているブロックのＤＣＴ係数を表わす固定長ＰＣＭコードを、典型的に、ホフマンコードを使用して、ＶＬＣへエンコード即ちコード化させる。これは、データＭＵＸ１２０において、運動ベクトルを含むヘッダ情報と結合されて、エンコードされたビットストリームを形成する。このエンコードされたビットストリームはデータＭＵＸ１２０の出力であり、それは、更に、エンコーダモジュール８８の出力でもある。好適には、ＺＺ１１６及び逆量子化器は同時的に動作する。
【００７８】
図５は、コンピュータ８０におけるデコーダ２００′の一つの適用例を示している。コンピュータ８０は、入力装置７３、出力装置７４、メモリ１６０、及び該デコーダを有しており、それらは全てバス７７を介してプロセサ７５へ結合されている。デコーダ２００′は、更に、例えばＤＶＤプレーヤ又はテレビシステムなどの画像を使用するその他の任意のシステムにおいて使用することも可能である。
【００７９】
デコーダをハードウエア又はソフトウエアで実施することの可能な別個のモジュール及び機能的ブロックへ分離することは、一つを超える数のモジュール又は機能的ブロックによって該モジュール及び機能的ブロックへの接続を構成することを可能とする。このことは、該モジュール及び機能的ブロックを、その他のモジュールにおいて再使用することを可能とし、圧縮フレームの脱圧縮を実施するのに必要な回路を減少させる。更に、好適実施例においては、Ｉフレームは運動補償回路９０及び加算回路７２をバイパスし、従って圧縮フレームを脱圧縮するための時間を減少させる。
【００８０】
更に、デコーダがプロセサ７５へ接続されている場合には、それは、機能的ブロックのうちの幾つか又は幾つかの一部をプロセサ７５において実施することを可能とする。それは、デコーダが同一のビットストリーム内におけるか、又は二つの別個のビットストリームから同時的に、一つを超える数のフレームを脱圧縮することを可能とするという付加的な利点を提供している。なぜならば、他のフレームがこれらの機能を実施するためのデコーダのハードウエアを使用している間に、該フレームのうちの一つに対する幾つかの機能のうちの一つの脱圧縮の一部をソフトウエアで実施することが可能だからである。それは、又、デコーダが圧縮フレームを脱圧縮し且つ脱圧縮フレームを圧縮することを同時的に行うことを可能とする。これは、デコーダがビットストリームをエンコードする場合に準拠する脱圧縮スタンダードが同じように複雑なものでない場合に特に有効である。なぜならば、より複雑性のないスタンダードに準拠するビットストリームのより多くのものをプロセサにおいて脱圧縮することが可能だからである。フレームの脱圧縮のどの部分をプロセサにおいて実施し且つデコーダのハードウエアにおいて何を実施するかのプロセサにおける動的再形態特定は、例えばプロセサをより強力なものと置換させたり又はメモリを付加させたりするような電子システムにおける何らかの修正を考慮に入れるという付加的な利点を提供し、且つ、全て単にソフトウエアの修正だけで、元々デコーダに対して設計されているスタンダードと同一の機能的ブロックのほとんどを使用する将来のデコーディングスタンダードを受入れることが可能であるという利点を提供している。
【００８１】
圧縮に関するさらなる技術的背景は、国際標準化機構、情報技術最大で約１．５ＭＢＩＴＳ／Ｓまでのデジタル格納媒体用の動画及び関連するオーディオのコーディング、パート１−６、国際標準化機構、情報技術−動画及び関連オーディオ情報の一般的なコーディング、パート１−４、データシート「ＳＴｉ３５００Ａ」エスジーエス−トムソンマイクロエレクトロニクス社のデータシート、ＳＴｉ３５００ａ−ＭＰＥＧオーディオ−ＭＰＥＧ−２ビデオ集積化デコーダ用の先進情報（１９９５年６月）、Ｗａｔｋｉｎｓｏｏｎ，Ｊｏｈｎ「ビデオ及びオーディオにおける圧縮（ＣＯＭＰＲＥＳＳＩＯＮ  ＩＮ  ＶＩＤＥＯ  ＡＮＤ  ＡＵＤＩＯ）」、フォーカルプレス、１９９５年、Ｍｉｎｏｌｉ，Ｄａｎｉｅｌ「ビデオダイヤルトーン技術（ＶＩＤＥＯ  ＤＩＡＬＴＯＮＥ  ＴＥＣＨＮＯＬＯＧＹ）」、マッグローヒル出版社、１９９５年において見出すことが可能である。コンピュータアーキテクチャに関するさらなる技術的背景は、Ａｎｄｅｒｓｏｎ，Ｄｏｎ及びＴｏｍ  Ｓｈａｎｌｅｙ「ＩＳＡシステムアーキテクチャ（ＩＳＡ  ＳＹＳＴＥＭ  ＡＲＣＨＩＴＥＣＴＵＲＥ）」、第３版、Ｊｏｈｎ  Ｓｗｉｎｄｌｅ編、マインドシェアインコーポレイテッド、アジソン・ウエズリ出版社、１９９５年において見出すことが可能である。尚、これらの全ての文献は引用によって本明細書に取込む。
【００８２】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ限定されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
【図面の簡単な説明】
【図１Ａ】  典型的なデコーダのアーキテクチャを示した概略ブロック図。
【図１Ｂ】  ジグザグスキャンの一例を示した概略図。
【図２】  本発明の一実施例に基づくデコーダのアーキテクチャを示した概略ブロック図。
【図３】  本発明の別の実施例に基づくデコーダのアーキテクチャを示した概略ブロック図。
【図４Ａ】  図３のデコーダの動作の一部を示したフローチャート。
【図４Ｂ】  図３におけるデコーダの動作の別の部分を示したフローチャート。
【図５】  図３に示した本発明の実施例に基づくデコーダを含むコンピュータを示した概略ブロック図。
【符号の説明】
３０  ＦＩＦＯ
３６  ヘッダパーサ
４２  ＶＬＣデコーダ
４４  ブロックアレイモジュール
４６  ＩＤＣＴモジュール
４８  逆量子化器
５０  ブロックデコーダモジュール
５４  逆ジグザグスキャナ（ＩＺＺ）
６６  ＩＤＣＴ回路
７２  加算回路
７５  プロセサ
７８  半ｐｅｌフィルタ
８６  運動推定エンジン
８８  エンコーダモジュール
９０  運動圧縮エンジン
９６  アドレス演算回路
１０２  組立ユニット
１０４  マルチプレクサ（ＭＵＸ）
１１０  加算回路
１１２  ＤＣＴ回路
１１４  量子化器
１１６  ジグザグスキャナ（ＺＺ）
１２６  バッファ
１３０  表示発生器
１６０  メモリ
２００  デコーダ
【図１Ａ】
0004138056.tif 000002
【図１Ｂ】
0004138056.tif 000003
【図２】
0004138056.tif 000004
【図３】
0004138056.tif 000005
【図４Ａ】
0004138056.tif 000006
【図４Ｂ】
0004138056.tif 000007
【図５】
0004138056.tif 000008