(57)【特許請求の範囲】
【請求項１】
ＭＰＥＧビデオストリームに含まれるエラーを検出するエラー検出手段を含み、
当該エラー検出手段は、マクロブロック毎に動きベクトルの復元を行ったとき、復元した動きベクトルの示す位置をもとに、マクロブロック毎にエラー検出を行うことを特徴とするＭＰＥＧビデオデコーダ。
【請求項２】
ＭＰＥＧビデオストリームに含まれるエラーを検出するエラー検出手段を含み、
当該エラー検出手段は、
ハフマンコードに基づいた可変長デコードを行ったとき、そのデコード処理の結果をもとにスライス毎にエラー検出を行う第１のエラー検出回路と、
量子化閾値に基づいた逆量子化を行ったとき、その逆量子化処理の結果をもとにマクロブロック毎にエラー検出を行う第２のエラー検出回路と、
マクロブロック毎に動きベクトルの復元を行ったとき、復元した動きベクトルの示す位置をもとにマクロブロック毎にエラー検出を行う第３のエラー検出回路と、
を備えたことを特徴とするＭＰＥＧビデオデコーダ。
【請求項３】
ＭＰＥＧビデオストリームに含まれるエラーを検出するエラー検出手段を含み、
当該エラー検出手段は、
ハフマンコードに基づいた可変長デコードを行ったとき、そのデコード処理の結果をもとにスライス毎にエラー検出を行う信号処理部と、
マクロブロック毎に動きベクトルの復元を行ったとき、復元した動きベクトルの示す位置をもとにマクロブロック毎にエラー検出を行う信号処理部と、
を備えたことを特徴とするＭＰＥＧビデオデコーダ。
【請求項４】
前記スライス毎にエラー検出を行う信号処理部は、可変長デコードの結果得られたスライスに対応するデータに注目してエラーを検出することを特徴とする請求項３に記載のＭＰＥＧビデオデコーダ。
【請求項５】
ＭＰＥＧビデオストリームに含まれるエラーを検出するエラー検出手段を含み、
当該エラー検出手段は、
量子化閾値に基づいた逆量子化を行ったとき、その逆量子化処理の結果をもとにマクロブロック毎にエラー検出を行う信号処理部と、
マクロブロック毎に動きベクトルの復元を行ったとき、復元した動きベクトルの示す位置をもとにマクロブロック毎にエラー検出を行う信号処理部と、
を備えたことを特徴とするＭＰＥＧビデオデコーダ。
【請求項６】
前記逆量子化処理の結果をもとにマクロブロック毎にエラー検出を行う信号処理部は、逆量子化によって得られた離散コサイン変換係数に注目してエラーを検出することを特徴とする請求項５に記載のＭＰＥＧビデオデコーダ。
【請求項７】
スライス内の第ｍマクロブロックにエラーが検出されたとき、前記マクロブロック毎のエラー検出を停止することにより、そのスライス内にて第ｍマクロブロック以降のすべてのマクロブロックに関するエラー検出結果を無効化することを特徴とする請求項３から６のいずれかに記載のＭＰＥＧビデオデコーダ。
【請求項８】
前記第ｍマクロブロック以降のすべてのマクロブロックを、それらのマクロブロックが含まれるピクチャのひとつ前に表示されるピクチャにおいてそれぞれ対応するマクロブロックに置き換えることを特徴とする請求項７に記載のＭＰＥＧビデオデコーダ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔ  Ｇｒｏｕｐ）ビデオデコーダに関するものである。
【０００２】
【従来の技術】
マルチメディアで扱われる情報は、膨大な量で且つ多種多様であり、これらの情報を高速に処理することがマルチメディアの実用化を図る上で必要となってくる。情報を高速に処理するためには、データの圧縮・伸長技術が不可欠となる。そのようなデータの圧縮・伸長技術として「ＭＰＥＧ」方式が挙げられる。このＭＰＥＧ方式は、ＩＳＯ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ  ｆｏｒ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ）／ＩＥＣ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｌｅｃｔｒｏｔｅｃｈｎｉｃａｌ  Ｃｏｍｍｉｓｓｉｏｎ）傘下のＭＰＥＧ委員会（ＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１）によって標準化されつつある。
【０００３】
ＭＰＥＧは３つのパートから構成されている。パート１の「ＭＰＥＧシステムパート」（ＩＳＯ／ＩＥＣ  ＩＳ  １１１７２  Ｐａｒｔ１：Ｓｙｓｔｅｍｓ）では、ビデオデータとオーディオデータの多重化構造（マルチプレクス・ストラクチャ）および同期方式が規定される。パート２の「ＭＰＥＧビデオパート」（ＩＳＯ／ＩＥＣ  ＩＳ  １１１７２  Ｐａｒｔ２：Ｖｉｄｅｏ）では、ビデオデータの高能率符号化方式およびビデオデータのフォーマットが規定される。パート３の「ＭＰＥＧオーディオパート」（ＩＳＯ／ＩＥＣ  ＩＳ  １１１７２  Ｐａｒｔ３：Ａｕｄｉｏ）では、オーディオデータの高能率符号化方式およびオーディオデータのフォーマットが規定される。
【０００４】
ＭＰＥＧビデオパートで取り扱われるビデオデータは動画に関するものであり、その動画は１秒間に数十枚（例えば、３０枚）のフレーム（静止画、コマ）によって構成されている。図８に示すように、ビデオデータは、シーケンス（Ｓｅｑｕｅｎｃｅ）、ＧＯＰ（Ｇｒｏｕｐ  Ｏｆ  Ｐｉｃｔｕｒｅｓ）、ピクチャ（Ｐｉｃｔｕｒｅ）、スライス（Ｓｌｉｃｅ）、マクロブロック（Ｍａｃｒｏｂｌｏｃｋ）、ブロック（Ｂｌｏｃｋ）の順に６層の階層構造から成る。１枚のピクチャを構成するスライスの個数は一定ではなく、１個のスライスを構成するマクロブロックの個数も一定ではない。尚、図８では、マクロブロック層およびブロック層については省略してある。
【０００５】
また、ＭＰＥＧには主にエンコードレートの違いにより、現在のところ、ＭＰＥＧ−１，ＭＰＥＧ−２の２つの方式がある。ＭＰＥＧ−１においてフレームはピクチャに対応している。ＭＰＥＧ−２においては、フレームまたはフィールドをピクチャに対応させることもできる。フィールドは、２枚で１枚のフレームを構成している。ピクチャにフレームが対応している構造はフレーム構造と呼ばれ、ピクチャにフィールドが対応している構造はフィールド構造と呼ばれる。
【０００６】
ＭＰＥＧでは、フレーム間予測と呼ばれる圧縮技術を用いる。フレーム間予測は、フレーム間のデータを時間的な相関に基づいて圧縮する。フレーム間予測では双方向予測が行われる。双方向予測とは、過去の再生画像（または、ピクチャ）から現在の再生画像を予測する順方向予測と、未来の再生画像から現在の再生画像を予測する逆方向予測とを併用することである。
【０００７】
この双方向予測は、Ｉピクチャ（Ｉｎｔｒａ−Ｐｉｃｔｕｒｅ），Ｐピクチャ（Ｐｒｅｄｉｃｔｉｖｅ−Ｐｉｃｔｕｒｅ），Ｂピクチャ（Ｂｉｄｉｒｅｃｔｉｏｎａｌｌｙ  ｐｒｅｄｉｃｔｉｖｅ−Ｐｉｃｔｕｒｅ）と呼ばれる３つのタイプのピクチャを規定している。
【０００８】
Ｉピクチャは、過去や未来の再生画像とは無関係に独立して生成される。ランダムアクセスを行うために、ＧＯＰ内には最低１枚のＩピクチャが必要である。Ｉピクチャ内の全てのマクロブロック・タイプは、フレーム内予測画面（Ｉｎｔｒａ  Ｆｒａｍｅ）である。
【０００９】
Ｐピクチャは順方向予測（過去のＩピクチャまたはＰピクチャからの予測）により生成される。Ｐピクチャ内のマクロブロック・タイプは、フレーム内予測画面と順方向予測画面（Ｆｏｒｗａｒｄ  Ｉｎｔｅｒ  Ｆｒａｍｅ）の両方を含む。
【００１０】
Ｂピクチャは双方向予測により生成される。双方向予測においてＢピクチャは、以下に示す３つの予測のうちいずれか１つにより生成される。▲１▼順方向予測；過去のＩピクチャまたはＰピクチャからの予測、▲２▼逆方向予測；未来のＩピクチャまたはＰピクチャからの予測、▲３▼双方向予測；過去および未来のＩピクチャまたはＰピクチャからの予測。Ｂピクチャ内のマクロブロック・タイプは、フレーム内予測画面、順方向予測画面、逆方向予測画面（Ｂａｃｋｗａｒｄ  Ｉｎｔｅｒ  Ｆｒａｍｅ）、内挿的予測画面（Ｉｎｔｅｒｐｏｌａｔｉｖｅ  Ｉｎｔｅｒ  Ｆｒａｍｅ）の４つのタイプを含む。
【００１１】
そして、これらＩ，Ｐ，Ｂピクチャがそれぞれエンコードされる。つまり、Ｉピクチャは過去や未来のピクチャが無くても生成される。これに対し、Ｐピクチャは過去のピクチャが無いと生成されず、Ｂピクチャは過去または未来のピクチャが無いと生成されない。但し、ＰピクチャやＢピクチャでも、マクロブロック・タイプが内挿的予測画面の場合、そのマクロブロックは過去や未来のピクチャが無くても生成される。
【００１２】
フレーム間予測では、まず、Ｉピクチャが周期的に生成される。次に、Ｉピクチャよりも数フレーム先のフレームがＰピクチャとして生成される。このＰピクチャは、過去から現在への一方向（順方向）の予測により生成される。続いて、Ｉピクチャの前、Ｐピクチャの後に位置するフレームがＢピクチャとして生成される。このＢピクチャを生成するとき、順方向予測，逆方向予測，双方向予測の３つの中から最適な予測方法が選択される。連続した動画では一般的に、現在の画像とその前後の画像とは良く似ており、異なっているのは、そのごく一部分に過ぎない。そこで、前のフレーム（例えば、Ｉピクチャ）と次のフレーム（例えば、Ｐピクチャ）とは同じであると仮定し、両フレーム間に変化があればその差分（Ｂピクチャのデータ）のみを抽出して圧縮する。これにより、フレーム間のデータを時間的な相関に基づいて圧縮することができる。
【００１３】
このようにＭＰＥＧビデオパートに準拠してエンコードされたビデオデータのデータ列（ビットストリーム）は、ＭＰＥＧビデオストリーム（以下、ビデオストリームと略す）と呼ばれる。
【００１４】
ところで、ＭＰＥＧ−１は主に、ビデオＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）やＣＤ−ＲＯＭ（ＣＤ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの蓄積メディアに対応している。ＭＰＥＧ−２は、ビデオＣＤ，ＣＤ−ＲＯＭ，ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｄｉｓｋ），ＶＴＲ（Ｖｉｄｅｏ  Ｔａｐｅ  Ｒｅｃｏｒｄｅｒ）などの蓄積メディアだけでなく、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などの通信メディア、地上波放送や衛星放送およびＣＡＴＶ（Ｃｏｍｍｕｎｉｔｙ  Ａｎｔｅｎｎａ  Ｔｅｌｅｖｉｓｉｏｎ）などの放送メディアをも含む伝達メディア全般に対応している。
【００１５】
ＭＰＥＧビデオパートで用いられる技術の核となるのが、動き補償付予測（ＭＣ；Ｍｏｔｉｏｎ  Ｃｏｍｐｅｎｓａｔｅｄ  ｐｒｅｄｉｃｔｉｏｎ）と離散コサイン変換（ＤＣＴ：Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）である。ＭＣとＤＣＴを併用した符号化技術は、ハイブリッド符号化技術と呼ばれる。ＭＰＥＧビデオパートでは、エンコード時にＤＣＴ（別名ＦＤＣＴ；Ｆｏｒｗａｒｄ  ＤＣＴ）を用い、画像（ビデオ信号）を周波数成分に分解して処理する。そして、デコード時にＤＣＴの逆変換（離散コサイン逆変換；ＩＤＣＴ；Ｉｎｖｅｒｓｅ  ＤＣＴ）を用い、周波数成分を再び画像（ビデオ信号）に戻す。
【００１６】
図９に、従来のＭＰＥＧビデオデコーダ１０１のブロック回路を示す。
ＭＰＥＧビデオデコーダ１０１は、ビットバッファ１０２、フレームバッファ１０３、ピクチャヘッダ検出回路１０４、スライスヘッダ検出回路１０５、可変長デコーダ１０６、逆量子化回路１０７、ＩＤＣＴ（Ｉｎｖｅｒｓｅ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）回路１０８、ＭＣ（Ｍｏｔｉｏｎ  Ｃｏｍｐｅｎｓａｔｅｄ  ｐｒｅｄｉｃｔｉｏｎ）回路１０９、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１０，１１１、制御コア回路１１２、ハフマンエラー検出回路１１３から構成されている。尚、各回路１０４〜１１３は１チップのＬＳＩに搭載されている。
【００１７】
制御コア回路１１２は各回路１０２〜１１１，１１３を制御する。
伝達メディア１２０から転送されてきたビデオストリームは、ビットバッファ１０２へ入力される。尚、伝達メディア１２０には、蓄積メディア（ビデオＣＤ，ＣＤ−ＲＯＭ，ＤＶＤ，ＶＴＲなど）、通信メディア（ＬＡＮなど）、放送メディア（地上波放送，衛星放送，ＣＡＴＶなど）などが含まれる。
【００１８】
ビットバッファ１０２はＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ−Ｆｉｒｓｔ−Ｏｕｔ）構成のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）から成るリングバッファによって構成され、伝達メディア１２０から転送されてくるビデオストリームを順次蓄積する。
【００１９】
ビットバッファ１０２が設けられているのは、Ｉ，Ｐ，Ｂの各ピクチャのデータ量が異なっているためである。Ｉピクチャのデータ量は約３０ｋバイト、Ｐピクチャのデータ量は約１０〜１５ｋバイト、Ｂピクチャのデータ量は０〜約６ｋバイトである。それに対して、伝達メディア１２０から転送されてくるビデオストリームのビットレートは一定である。後記するように各回路１０６〜１０９は各ピクチャ毎に処理を行い、その処理時間は各ピクチャのデータ量によって異なる。そのため、伝達メディア１２０から転送されてきたビデオストリームを各回路１０６〜１０９へ直接転送すると、各回路１０６〜１０９において処理できないピクチャがでてくる。これを防止するため、伝達メディア１２０から転送されてくるビデオストリームに対するバッファメモリとしてのビットバッファ１０２を設けることで、Ｉ，Ｐ，Ｂの各ピクチャのデータ量の相違を吸収している。
【００２０】
ピクチャヘッダ検出回路１０４は、ビットバッファ１０２に蓄積されたビデオストリームの各ピクチャの先頭に付くピクチャヘッダを検出し、その各ピクチャヘッダに規定されているピクチャのタイプ（Ｉ，Ｐ，Ｂ）を検出する。
【００２１】
スライスヘッダ検出回路１０５は、ビットバッファ１０２に蓄積されたビデオストリームの各スライスの先頭に付くスライスヘッダを検出する。
制御コア回路１１２は、ピクチャヘッダ検出回路１０４の検出結果に基づいて、ビットバッファ１０２から１フレーム期間毎に１枚のピクチャ分ずつのビデオストリームを読み出す。
【００２２】
可変長デコーダ１０６は、ビットバッファ１０２から読み出されたピクチャに対して、ＲＯＭ１１０に記憶されたハフマンテーブルに格納されているハフマンコードに基づいた可変長デコードを行う。
【００２３】
逆量子化回路１０７は、可変長デコーダ１０６のデコード結果に対して、ＲＯＭ１１１に記憶された量子化テーブルに格納されている量子化閾値に基づいた逆量子化を行いＤＣＴ（Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）係数を求める。
【００２４】
ＩＤＣＴ回路１０８は、逆量子化回路１０７が求めたＤＣＴ係数に対してＩＤＣＴを行う。ＭＣ回路１０９は、ＩＤＣＴ回路１０８の処理結果に対してＭＣ（Ｍｏｔｉｏｎ  Ｃｏｍｐｅｎｓａｔｅｄ  ｐｒｅｄｉｃｔｉｏｎ）を行う。
【００２５】
ＭＣ回路１０９の処理結果は、フレームバッファ１０３の各領域１０３ａ〜１０３ｃへ転送される。また、フレームバッファ１０３の各領域１０３ａ〜１０３ｃから読み出されたデータはＭＣ回路１０９へ転送される。
【００２６】
フレームバッファ１０３はＲＡＭから成り、その内部は３つの領域（前方参照領域１０３ａ、後方参照領域１０３ｂ、Ｂピクチャ格納領域１０３ｃ）に分けられている。前方参照領域１０３ａには、ＭＣ回路１０９において逆方向予測を行う際に用いられる未来のＩピクチャまたはＰピクチャが格納される。後方参照領域１０３ｂには、ＭＣ回路１０９において順方向予測を行う際に用いられる過去のＩピクチャまたはＰピクチャが格納される。Ｂピクチャ格納領域１０３ｃにはＢピクチャが格納される。
【００２７】
前方参照領域１０３ａおよび後方参照領域１０３ｂに格納されるＩピクチャまたはＰピクチャは、順方向予測または逆方向予測を行うための基データとして使われるため、必要がなくなるまで、各領域１０３ａ，１０３ｂに格納し続けなければならない。Ｂピクチャ格納領域１０３ｃに格納されるＢピクチャについては基データとして扱われないため、ディスプレイ１２１へ出力されたら不要になる。尚、各領域１０３ａ〜１０３ｃはプレーンと呼ばれる。
【００２８】
そして、各領域１０３ａ〜１０３ｃのいずれか１つに格納されたピクチャのデータ（ビデオ信号）が、ＭＣ回路１０９を介して、ＭＰＥＧビデオデコーダ１０１の外部に設けられたディスプレイ１２１へ出力される。
【００２９】
例えば、図１０（ａ）に示すように原画像の各ピクチャの順番が構成されている場合、ＭＰＥＧビデオエンコーダでは図１０（ｂ）に示すように各ピクチャの順番が並べ替えられる。図１０（ｃ）に示すように、伝達メディア１２０では、ＭＰＥＧビデオエンコーダで並べ替えられた順番のままで各ピクチャが転送される。そして、図１０（ｄ）（ｅ）に示すように、ＭＰＥＧビデオデコーダ１０１では、ディスプレイ１２１の再生画像の各ピクチャの順番が原画像のそれと同じになるように、各ピクチャの順番が並べ替えられる。
【００３０】
フレームバッファ１０３は、このＭＰＥＧビデオデコーダ１０１における各ピクチャの順番の並べ替えを行うために設けられている。
すなわち、各回路１０６〜１０９でＢピクチャＢ３を処理し、その処理結果をＢピクチャ格納領域１０３ｃへ転送しているとき、ディスプレイ１２１へは後方参照領域１０３ｂに既に格納されているＩピクチャＩ２が出力される。
【００３１】
また、各回路１０６〜１０９でＢピクチャＢ４を処理し、その処理結果をＢピクチャ格納領域１０３ｃへ転送しているとき、ディスプレイ１２１へはＢピクチャ格納領域１０３ｃに既に格納されているＢピクチャＢ３が出力される。その結果、各回路１０６〜１０９でＢピクチャＢ４を処理しているときには、Ｂピクチャ格納領域１０３ｃに既に格納されているＢピクチャＢ３に対して、新たに処理されたＢピクチャＢ４のデータが上書きされる。
【００３２】
また、各回路１０６〜１０９でＰピクチャＰ８を処理し、その処理結果を後方参照領域１０３ｂへ転送しているとき、ディスプレイ１２１へはＢピクチャ格納領域１０３ｃに既に格納されているＢピクチャＢ４が出力される。
【００３３】
尚、フレームバッファ１０３とビットバッファ１０２とは、部品点数を少なくしてＭＰＥＧビデオデコーダ１０１の部品コストを減少させるため、１つのＲＡＭ内に領域を分けて設けられている。
【００３４】
ハフマンエラー検出回路１１３は、可変長デコーダ１０６におけるデコード処理を監視することで、スライス毎にエラー検出を行う。すなわち、ハフマンエラー検出回路１１３は、スライスに対応するデータがハフマンテーブルに格納されていない場合や、スライスに対応するデータが過去のデコード結果と矛盾する場合、そのスライス内にエラーが含まれていると判定する。
【００３５】
制御コア回路１１２は、ハフマンエラー検出回路１６によってスライス内にエラーが含まれていると判定された場合、以下のエラー処理を行う。ここでは、図８に示すスライスＳ１内にエラーが含まれている場合を例にとって説明する。尚、スライスＳ１はｎ個のマクロブロックＭＢ１〜ＭＢｎによって構成されているものとする。
【００３６】
（１）  エラーが含まれていると判定されたスライスＳ１に対する可変長デコーダ１０６のデコード処理を停止させ、そのスライスＳ１のデコード処理結果を無効にさせる。
【００３７】
（２）  スライスヘッダ検出回路１０５の検出結果に基づいて、ビットバッファ１０２からスライスＳ１の次のスライスＳ２を読み出す。そして、可変長デコーダ１０６にスライスＳ２の可変長デコードを行わせる。
【００３８】
（３）  ＭＣ回路１０９およびフレームバッファ１０３を制御して、フレームバッファ１０３に格納されるスライスＳ１を、そのスライスＳ１が含まれているピクチャの１つ前にディスプレイ１２１へ出力されるピクチャの対応するマクロブロックＭＢ１′〜ＭＢｎ′によって置き換える。この動作を、図１０（ｄ）（ｅ）に示すように各ピクチャの順番が構成されている場合を例にとって説明する。
【００３９】
（３）−［１］  スライスＳ１を含むピクチャがＢピクチャＢ３の場合；ＢピクチャＢ３の１つ前にディスプレイ１２１へ出力されるピクチャはＩピクチャＩ２である。ＢピクチャＢ３をＢピクチャ格納領域１０３ｃへ転送しているとき、ＩピクチャＩ２は既に後方参照領域１０３ｂに格納されている。
【００４０】
図１１に示すように、ＢピクチャＢ３のスライスＳ１に対応するＩピクチャＩ２のマクロブロックＭＢ１′〜ＭＢｎ′を後方参照領域１０３ｂから読み出す。そして、ＩピクチャＩ２のマクロブロックＭＢ１′〜ＭＢｎ′をＢピクチャ格納領域１０３ｃに書き込むことで、ＢピクチャＢ３のスライスＳ１をＩピクチャＩ２のマクロブロックＭＢ１′〜ＭＢｎ′に置き換える。
【００４１】
（３）−［２］  スライスＳ１を含むピクチャがＢピクチャＢ４の場合；ＢピクチャＢ４の１つ前にディスプレイ１２１へ出力されるピクチャはＢピクチャＢ３である。ＢピクチャＢ３をＢピクチャ格納領域１０３ｃへ転送しているとき、ＢピクチャＢ３は既にＢピクチャ格納領域１０３ｃに格納されている。
【００４２】
図１２に示すように、Ｂピクチャ格納領域１０３ｃにおいて、ＢピクチャＢ４のスライスＳ１に対応するＢピクチャＢ３のマクロブロックＭＢ１′〜ＭＢｎ′に対してはＢピクチャＢ４のデータを上書きせず、ＢピクチャＢ３のマクロブロックＭＢ１′〜ＭＢｎ′をそのまま残す。その結果、ＢピクチャＢ４のスライスＳ１はＢピクチャＢ３のマクロブロックＭＢ１′〜ＭＢｎ′に置き換えられる。
【００４３】
（３）−［３］  スライスＳ１を含むピクチャがＰピクチャＰ５の場合；ＰピクチャＰ５の１つ前にディスプレイ１２１へ出力されるピクチャはＢピクチャＢ４である。ＰピクチャＰ５は前方参照領域１０３ａに格納され、ＢピクチャＢ４はＢピクチャ格納領域１０３ｃに格納されている。
【００４４】
図１３に示すように、ＰピクチャＢ５のスライスＳ１に対応するＢピクチャＢ４のマクロブロックＭＢ１′〜ＭＢｎ′をＢピクチャ格納領域１０３ｃから読み出す。そして、ＢピクチャＢ４のマクロブロックＭＢ１′〜ＭＢｎ′を前方参照領域１０３ａに書き込むことで、ＰピクチャＰ５のスライスＳ１をＢピクチャＢ４のマクロブロックＭＢ１′〜ＭＢｎ′に置き換える。
【００４５】
図１４に、ＭＣ回路１０９の内部構成を示す。
ＭＣ回路１０９は、逆方向予測メモリ１３１、順方向予測メモリ１３２、平均回路１３３、加算回路１３４、スイッチＳＷ１〜ＳＷ６から構成されている。
【００４６】
スイッチＳＷ６は２つの接点ａ，ｂをもち、接点ａはＩＤＣＴ回路１０８の出力に接続され、接点ｂはアースされ、各接点ａ，ｂのいずれか一方が加算回路１３４の入力に接続される。
【００４７】
スイッチＳＷ１は４つの接点ａ〜ｄをもち、接点ａは逆方向予測メモリ１３１の出力に接続され、接点ｂは平均回路１３３の出力に接続され、接点ｃは順方向予測メモリ１３２の出力に接続され、接点ｄはアースされ、各接点ａ〜ｄのいずれか１つが加算回路１３４の入力に接続される。
【００４８】
スイッチＳＷ２は２つの接点ａ，ｂをもち、接点ａは逆方向予測メモリ１３１の入力に接続され、接点ｂは順方向予測メモリ１３２の入力に接続され、各接点ａ，ｂのいずれか一方がスイッチＳＷ３に接続される。
【００４９】
スイッチＳＷ３は３つの接点ａ〜ｃをもち、接点ａはフレームバッファ１０３の前方参照領域１０３ａの出力に接続されると共にスイッチＳＷ５の接点ａに接続され、接点ｂはフレームバッファ１０３の後方参照領域１０３ｂの出力に接続されると共にスイッチＳＷ５の接点ｂに接続され、接点ｃはフレームバッファ１０３のＢピクチャ格納領域１０３ｃの出力に接続されると共にスイッチＳＷ５の接点ｃに接続される。
【００５０】
スイッチＳＷ５は３つの接点ａ〜ｃをもち、各接点ａ〜ｃのいずれか１つがディスプレイ１２１に接続される。
スイッチＳＷ４は３つの接点ａ〜ｃをもち、接点ａは前方参照領域１０３ａの入力に接続され、接点ｂは後方参照領域１０３ｂの入力に接続され、接点ｃはＢピクチャ格納領域１０３ｃの入力に接続され、各接点ａ〜ｄのいずれか１つが加算回路１３４の出力に接続される。
【００５１】
逆方向予測メモリ１３１および順方向予測メモリ１３２はそれぞれ、１個のマクロブロック分のデータを格納する。
平均回路１３３は、逆方向予測メモリ１３１および順方向予測メモリ１３２から読み出されたデータを平均化する。
【００５２】
このように構成されたＭＣ回路１０９は以下の動作を行う。
▲１▼ハフマンエラー検出回路１１３がエラーを検出しない場合（通常動作）；スイッチＳＷ６を接点ａに接続する。
【００５３】
▲１▼−［１］  ＩＤＣＴ回路１０８からＩピクチャが出力された場合；スイッチＳＷ１を接点ｄに接続し、スイッチＳＷ４を接点ａまたは接点ｂに接続する。スイッチＳＷ５を、スイッチＳＷ４の接続されている接点とは異なる接点ａ〜ｃに接続する。例えば、スイッチＳＷ４が接点ａに接続されている場合、スイッチＳＷ５は接点ｂまたは接点ｃに接続する。スイッチＳＷ２，ＳＷ３はどの接点に接続してもよい。その結果、加算回路１３４の出力はＩＤＣＴ回路１０８の出力と同じになる。その加算回路１３４の出力は、スイッチＳＷ４を介して、前方参照領域１０３ａまたは後方参照領域１０３ｂへ転送される。
【００５４】
▲１▼−［２］  ＩＤＣＴ回路１０８からＰピクチャが出力された場合；スイッチＳＷ１をマクロブロック・タイプに対応した接点ｃ，ｄに接続する。
▲１▼−［２］−＜１＞  マクロブロック・タイプがフレーム内予測画面の場合；上記▲１▼−［１］  と同じである。
【００５５】
▲１▼−［２］−＜２＞  マクロブロック・タイプが順方向予測画面の場合；スイッチＳＷ２，ＳＷ３をそれぞれ接点ｂに接続し、後方参照領域１０３ｂから読み出した１個のマクロブロック分のデータを、順方向予測メモリ１３２に格納する。そして、スイッチＳＷ１を接点ｃに接続し、スイッチＳＷ４を接点ａまたは接点ｂに接続する。スイッチＳＷ５を、スイッチＳＷ４の接続されている接点とは異なる接点ａ〜ｃに接続する。その結果、加算回路１３４は、順方向予測メモリ１３２から読み出されたマクロブロックのデータと、ＩＤＣＴ回路１０８の出力とを加算する。その加算回路１３４の出力は、スイッチＳＷ４を介して、前方参照領域１０３ａまたは後方参照領域１０３ｂへ転送される。
【００５６】
▲１▼−［３］  ＩＤＣＴ回路１０８からＢピクチャが出力された場合；スイッチＳＷ１をマクロブロック・タイプに対応した接点ａ〜ｄに接続し、スイッチＳＷ４，ＳＷ５をそれぞれ接点ｃに接続する。その結果、加算回路１３４の出力は、スイッチＳＷ４を介して、Ｂピクチャ格納領域１０３ｃへ転送される。
【００５７】
▲１▼−［３］−＜１＞  マクロブロック・タイプがフレーム内予測画面の場合；スイッチＳＷ１を接点ｄに接続する。スイッチＳＷ２，ＳＷ３はどの接点に接続してもよい。その結果、加算回路１３４の出力はＩＤＣＴ回路１０８の出力と同じになる。
【００５８】
▲１▼−［３］−＜２＞  マクロブロック・タイプが順方向予測画面の場合；スイッチＳＷ２，ＳＷ３をそれぞれ接点ｂに接続し、後方参照領域１０３ｂから読み出した１個のマクロブロック分のデータを、順方向予測メモリ１３２に格納する。そして、スイッチＳＷ１を接点ｃに接続する。その結果、加算回路１３４は、順方向予測メモリ１３２から読み出されたマクロブロックのデータと、ＩＤＣＴ回路１０８の出力とを加算する。
【００５９】
▲１▼−［３］−＜３＞  マクロブロック・タイプが逆方向予測画面の場合；スイッチＳＷ２，ＳＷ３をそれぞれ接点ａに接続し、前方参照領域１０３ａから読み出した１個のマクロブロック分のデータを、逆方向予測メモリ１３１に格納する。そして、スイッチＳＷ１を接点ａに接続する。その結果、加算回路１３４は、逆方向予測メモリ１３１から読み出されたマクロブロックのデータと、ＩＤＣＴ回路１０８の出力とを加算する。
【００６０】
▲１▼−［３］−＜４＞  マクロブロック・タイプが内挿的予測画面の場合；まず、スイッチＳＷ２，ＳＷ３をそれぞれ接点ｂに接続し、後方参照領域１０３ｂから読み出した１個のマクロブロック分のデータを、順方向予測メモリ１３２に格納する。次に、スイッチＳＷ２，ＳＷ３をそれぞれ接点ａに接続し、前方参照領域１０３ａから読み出した１個のマクロブロック分のデータを、逆方向予測メモリ１３１に格納する。平均回路１３３は、逆方向予測メモリ１３１および順方向予測メモリ１３２から読み出されたデータを平均化する。そして、スイッチＳＷ１を接点ｂに接続する。その結果、加算回路１３４は、平均回路１３３の出力と、ＩＤＣＴ回路１０８の出力とを加算する。
【００６１】
▲２▼ハフマンエラー検出回路１１３がエラーを検出した場合（エラー処理動作）；スイッチＳＷ６を接点ｂに接続し、スイッチＳＷ２を接点ａに接続する。スイッチＳＷ４を、エラーが含まれているピクチャが格納される領域１０３ａ〜１０３ｃに対応する接点ａ〜ｃに接続する。スイッチＳＷ３を、エラーが含まれているピクチャの１つ前にディスプレイ１２１へ出力されるピクチャが格納されている領域１０３ａ〜１０３ｃに対応する接点ａ〜ｃに接続する。そして、各領域１０３ａ〜１０３ｃのいずれか１つから読み出した１個のマクロブロック分のデータを、スイッチＳＷ２，ＳＷ３を介して、逆方向予測メモリ１３１に格納する。続いて、スイッチＳＷ１を接点ａに接続する。その結果、加算回路１３４の出力は逆方向予測メモリ１３１から読み出されたマクロブロックのデータと同じになる。その加算回路１３４の出力は、スイッチＳＷ４を介して、エラーが含まれているピクチャが格納される領域１０３ａ〜１０３ｃへ転送される。
【００６２】
以上のエラー処理動作を、エラーが含まれていると判定されたスライス（前記スライスＳ１）が、そのスライスが含まれているピクチャの１つ前にディスプレイ１２１へ出力されるピクチャの対応するマクロブロック（前記マクロブロックＭＢ１′〜ＭＢｎ′）によって置き換えられるまで、マクロブロック毎に繰り返し行う。
【００６３】
上記のエラー処理動作を、図８に示すスライスＳ１内にエラーが含まれていると判定され、図１０（ｄ）（ｅ）に示すように各ピクチャの順番が構成されている場合を例にとって説明する。
【００６４】
▲２▼−［１］  スライスＳ１を含むピクチャがＢピクチャＢ３の場合（図１１参照）；スイッチＳＷ４を、ＢピクチャＢ３が格納されるＢピクチャ格納領域１０３ｃに対応する接点ｃに接続する。スイッチＳＷ３を、ＩピクチャＩ２が格納される後方参照領域１０３ｂに対応する接点ｂに接続する。そして、後方参照領域１０３ｂから読み出したマクロブロックＭＢ１′のデータを、スイッチＳＷ２，ＳＷ３を介して、逆方向予測メモリ１３１に格納する。続いて、逆方向予測メモリ１３１から読み出したマクロブロックＭＢ１′のデータだけを、加算回路１３４を介してＢピクチャ格納領域１０３ｃへ転送する。このエラー処理動作を、各マクロブロックＭＢ２′〜ＭＢｎ′について繰り返し行い、ＢピクチャＢ３のスライスＳ１をＩピクチャＩ２のマクロブロックＭＢ１′〜ＭＢｎ′に置き換える。
【００６５】
▲２▼−［２］  スライスＳ１を含むピクチャがＢピクチャＢ４の場合（図１２参照）；スイッチＳＷ４を、ＢピクチャＢ４が格納されるＢピクチャ格納領域１０３ｃに対応する接点ｃに接続する。スイッチＳＷ３を、ＢピクチャＢ３が格納されるＢピクチャ格納領域１０３ｃに対応する接点ｃに接続する。そして、Ｂピクチャ格納領域１０３ｃから読み出したマクロブロックＭＢ１′のデータを、スイッチＳＷ２，ＳＷ３を介して、逆方向予測メモリ１３１に格納する。続いて、逆方向予測メモリ１３１から読み出したマクロブロックＭＢ１′のデータだけを、加算回路１３４を介してＢピクチャ格納領域１０３ｃへ転送する。つまり、マクロブロックＭＢ１′に対してはＢピクチャＢ４のデータが上書きされず、マクロブロックＭＢ１′はそのまま残ることになる。このエラー処理動作を、各マクロブロックＭＢ２′〜ＭＢｎ′について繰り返し行い、ＢピクチャＢ４のスライスＳ１をＢピクチャＢ３のマクロブロックＭＢ１′〜ＭＢｎ′に置き換える。
【００６６】
▲２▼−［３］  スライスＳ１を含むピクチャがＰピクチャＰ５の場合（図１３参照）；スイッチＳＷ４を、ＰピクチャＢ５が格納される前方参照領域１０３ａに対応する接点ａに接続する。スイッチＳＷ３を、ＢピクチャＢ４が格納されるＢピクチャ格納領域１０３ｃに対応する接点ｃに接続する。そして、Ｂピクチャ格納領域１０３ｃから読み出したマクロブロックＭＢ１′のデータを、スイッチＳＷ２，ＳＷ３を介して、逆方向予測メモリ１３１に格納する。続いて、逆方向予測メモリ１３１から読み出したマクロブロックＭＢ１′のデータだけを、加算回路１３４を介して前方参照領域１０３ａへ転送する。このエラー処理動作を、各マクロブロックＭＢ２′〜ＭＢｎ′について繰り返し行い、ＰピクチャＰ５のスライスＳ１をＢピクチャＢ４のマクロブロックＭＢ１′〜ＭＢｎ′に置き換える。
【００６７】
このように、従来のＭＰＥＧビデオデコーダ１０１では、ハフマンエラー検出回路１１３によってスライス毎にエラー検出を行う。そして、スライスＳ１内にエラーが含まれている場合には、前記したエラー処理（（１）  〜（３））を行う。
【００６８】
【発明が解決しようとする課題】
近年、ＭＰＥＧビデオデコーダに対して、エラー検出およびエラー処理の精度を高めてエラー耐性の強化を図ることが要求されている。
【００６９】
本発明は上記要求を満足するためになされたものであって、その目的は、エラー耐性の強化を図ることが可能なＭＰＥＧビデオデコーダを提供することにある。
【００７０】
【課題を解決するための手段】
本発明のＭＰＥＧビデオデコーダのある態様は、ＭＰＥＧビデオストリームに含まれるエラーを検出するエラー検出手段を含む。該エラー検出手段は、マクロブロック毎に動きベクトルの復元を行う際に、動きベクトルの示す位置をもとにマクロブロック毎にエラー検出を行う。
【００７１】
本発明のＭＰＥＧビデオデコーダの別の態様は、ＭＰＥＧビデオストリームに含まれるエラーを検出するエラー検出手段を含む。このエラー検出手段は、ハフマンコードに基づいた可変長デコードを行ったとき、そのデコード処理の結果をもとにスライス毎にエラー検出を行う第１のエラー検出回路と、量子化閾値に基づいた逆量子化を行ったとき、その逆量子化処理の結果をもとにマクロブロック毎にエラー検出を行う第２のエラー検出回路と、マクロブロック毎に動きベクトルの復元を行ったとき、復元した動きベクトルの示す位置をもとにマクロブロック毎にエラー検出を行う第３のエラー検出回路とを備える。
【００７２】
本発明のＭＰＥＧビデオデコーダの別の態様は、ＭＰＥＧビデオストリームに含まれるエラーを検出するエラー検出手段を含む。
【００７３】
当該エラー検出手段は、ハフマンテーブルに格納されているハフマンコードに基づいた可変長デコードを行う際に、スライスに対応するデータがハフマンテーブルに格納されていない場合や、スライスに対応するデータが過去のデコード結果と矛盾する場合、そのスライス内にエラーが含まれていると判定することで、スライス毎にエラー検出を行う第１のエラー検出回路と、量子化閾値に基づいた逆量子化を行う際に、離散コサイン変換係数のうち直流係数が所定値内に収まっているかどうかをマクロブロック毎に検出し、収まっていない場合、そのマクロブロック内にエラーが含まれていると判定する第２のエラー出回路と、マクロブロック毎に動きベクトルの復元を行う際に、動きベクトルがピクチャ内を示しているかどうかを検出し、ピクチャ外を示している場合、その動きベクトルを含むマクロブロック内にエラーが含まれていると判定する第３のエラー検出回路とを備える。
【００７４】
【発明の実施の形態】
以下、本発明を具体化した一実施形態を図面に従って説明する。
図１に、本実施形態のＭＰＥＧビデオデコーダ１のブロック回路を示す。
【００７５】
ＭＰＥＧビデオデコーダ１は、ビットバッファ２、フレームバッファ３、ピクチャヘッダ検出回路４、スライスヘッダ検出回路５、可変長デコーダ６、逆量子化回路７、ＩＤＣＴ（Ｉｎｖｅｒｓｅ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）回路８、ＭＣ（Ｍｏｔｉｏｎ  Ｃｏｍｐｅｎｓａｔｅｄ  ｐｒｅｄｉｃｔｉｏｎ）回路９、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０，１１、制御コア回路１２、ハフマンエラー検出回路１３、ＤＣ（Ｄｉｒｅｃｔ  Ｃｕｒｒｅｎｔ）エラー検出回路４１、動き領域エラー検出回路４２から構成されている。尚、各回路４〜１３，４１，４２は１チップのＬＳＩに搭載されている。
【００７６】
制御コア回路１２は各回路２〜１１，１３，４１，４２を制御する。伝達メディア２０から転送されてきたビデオストリームは、ビットバッファ２へ入力される。尚、伝達メディア２０には、蓄積メディア（ビデオＣＤ，ＣＤ−ＲＯＭ，ＤＶＤ，ＶＴＲなど）、通信メディア（ＬＡＮなど）、放送メディア（地上波放送，衛星放送，ＣＡＴＶなど）などが含まれる。
【００７７】
ビットバッファ２はＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ−Ｆｉｒｓｔ−Ｏｕｔ）構成のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）から成るリングバッファによって構成され、伝達メディア２０から転送されてくるビデオストリームを順次蓄積する。
【００７８】
ビットバッファ２が設けられているのは、Ｉ，Ｐ，Ｂの各ピクチャのデータ量が異なっているためである。Ｉピクチャのデータ量は約３０ｋバイト、Ｐピクチャのデータ量は約１０〜１５ｋバイト、Ｂピクチャのデータ量は０〜約６ｋバイトである。それに対して、伝達メディア２０から転送されてくるビデオストリームのビットレートは一定である。後記するように各回路６〜９は各ピクチャ毎に処理を行い、その処理時間は各ピクチャのデータ量によって異なる。そのため、伝達メディア２０から転送されてきたビデオストリームを各回路６〜９へ直接転送すると、各回路６〜９において処理できないピクチャがでてくる。これを防止するため、伝達メディア２０から転送されてくるビデオストリームに対するバッファメモリとしてのビットバッファ２を設けることで、Ｉ，Ｐ，Ｂの各ピクチャのデータ量の相違を吸収している。
【００７９】
ピクチャヘッダ検出回路４は、ビットバッファ２に蓄積されたビデオストリームの各ピクチャの先頭に付くピクチャヘッダを検出し、その各ピクチャヘッダに規定されているピクチャのタイプ（Ｉ，Ｐ，Ｂ）を検出する。
【００８０】
スライスヘッダ検出回路５は、ビットバッファ２に蓄積されたビデオストリームの各スライスの先頭に付くスライスヘッダを検出する。
制御コア回路１２は、ピクチャヘッダ検出回路４の検出結果に基づいて、ビットバッファ２から１フレーム期間毎に１枚のピクチャ分ずつのビデオストリームを読み出す。
【００８１】
可変長デコーダ６は、ビットバッファ２から読み出されたピクチャに対して、ＲＯＭ１０に記憶されたハフマンテーブルに格納されているハフマンコードに基づいた可変長デコードを行う。
【００８２】
逆量子化回路７は、可変長デコーダ６のデコード結果に対して、ＲＯＭ１１に記憶された量子化テーブルに格納されている量子化閾値に基づいた逆量子化を行いＤＣＴ（Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）係数を求める。
【００８３】
ＩＤＣＴ回路８は、逆量子化回路７が求めたＤＣＴ係数に対してＩＤＣＴを行う。
ＭＣ回路９は、ＩＤＣＴ回路８の処理結果に対してＭＣ（Ｍｏｔｉｏｎ  Ｃｏｍｐｅｎｓａｔｅｄ
ｐｒｅｄｉｃｔｉｏｎ）を行う。
【００８４】
ＭＣ回路９の処理結果は、フレームバッファ３の各領域３ａ〜３ｃへ転送される。また、フレームバッファ３の各領域３ａ〜３ｃから読み出されたデータはＭＣ回路９へ転送される。
【００８５】
フレームバッファ３はＲＡＭから成り、その内部は３つの領域（前方参照領域３ａ、後方参照領域３ｂ、Ｂピクチャ格納領域３ｃ）に分けられている。前方参照領域３ａには、ＭＣ回路９において逆方向予測を行う際に用いられる未来のＩピクチャまたはＰピクチャが格納される。後方参照領域３ｂには、ＭＣ回路９において順方向予測を行う際に用いられる過去のＩピクチャまたはＰピクチャが格納される。Ｂピクチャ格納領域３ｃにはＢピクチャが格納される。
【００８６】
前方参照領域３ａおよび後方参照領域３ｂに格納されるＩピクチャまたはＰピクチャは、順方向予測または逆方向予測を行うための基データとして使われるため、必要がなくなるまで、各領域３ａ，３ｂに格納し続けなければならない。Ｂピクチャ格納領域３ｃに格納されるＢピクチャについては基データとして扱われないため、ディスプレイ２１へ出力されたら不要になる。尚、各領域３ａ〜３ｃはプレーンと呼ばれる。
【００８７】
そして、各領域３ａ〜３ｃのいずれか１つに格納されたピクチャのデータ（ビデオ信号）が、ＭＣ回路９を介して、ＭＰＥＧビデオデコーダ１の外部に設けられたディスプレイ２１へ出力される。
【００８８】
例えば、図１０（ａ）に示すように原画像の各ピクチャの順番が構成されている場合、ＭＰＥＧビデオエンコーダでは図１０（ｂ）に示すように各ピクチャの順番が並べ替えられる。図１０（ｃ）に示すように、伝達メディア２０では、ＭＰＥＧビデオエンコーダで並べ替えられた順番のままで各ピクチャが転送される。そして、図１０（ｄ）（ｅ）に示すように、ＭＰＥＧビデオデコーダ１では、ディスプレイ２１の再生画像の各ピクチャの順番が原画像のそれと同じになるように、各ピクチャの順番が並べ替えられる。
【００８９】
フレームバッファ３は、このＭＰＥＧビデオデコーダ１における各ピクチャの順番の並べ替えを行うために設けられている。
すなわち、各回路６〜９でＢピクチャＢ３を処理し、その処理結果をＢピクチャ格納領域３ｃへ転送しているとき、ディスプレイ２１へは後方参照領域３ｂに既に格納されているＩピクチャＩ２が出力される。
【００９０】
また、各回路６〜９でＢピクチャＢ４を処理し、その処理結果をＢピクチャ格納領域３ｃへ転送しているとき、ディスプレイ２１へはＢピクチャ格納領域３ｃに既に格納されているＢピクチャＢ３が出力される。その結果、各回路６〜９でＢピクチャＢ４を処理しているときには、Ｂピクチャ格納領域３ｃに既に格納されているＢピクチャＢ３に対して、新たに処理されたＢピクチャＢ４のデータが上書きされる。
【００９１】
また、各回路６〜９でＰピクチャＰ８を処理し、その処理結果を後方参照領域３ｂへ転送しているとき、ディスプレイ２１へはＢピクチャ格納領域３ｃに既に格納されているＢピクチャＢ４が出力される。
【００９２】
尚、フレームバッファ３とビットバッファ２とは、部品点数を少なくしてＭＰＥＧビデオデコーダ１の部品コストを減少させるため、１つのＲＡＭ内に領域を分けて設けられている。
【００９３】
ハフマンエラー検出回路１３は、可変長デコーダ６におけるデコード処理を監視することで、スライス毎にエラー検出を行う。すなわち、ハフマンエラー検出回路１３は、スライスに対応するデータがハフマンテーブルに格納されていない場合や、スライスに対応するデータが過去のデコード結果と矛盾する場合、そのスライス内にエラーが含まれていると判定する。
【００９４】
制御コア回路１２は、ハフマンエラー検出回路１６によってスライス内にエラーが含まれていると判定された場合、以下のエラー処理Ａを行う。ここでは、図８に示すスライスＳ１内にエラーが含まれている場合を例にとって説明する。尚、スライスＳ１はｎ個のマクロブロックＭＢ１〜ＭＢｎによって構成されているものとする。
【００９５】
Ａ−（１）  エラーが含まれていると判定されたスライスＳ１に対する可変長デコーダ６のデコード処理を停止させ、そのスライスＳ１のデコード処理結果を無効にさせる。
【００９６】
Ａ−（２）  スライスヘッダ検出回路５の検出結果に基づいて、ビットバッファ２からスライスＳ１の次のスライスＳ２を読み出す。そして、可変長デコーダ６にスライスＳ２の可変長デコードを行わせる。
【００９７】
Ａ−（３）  ＭＣ回路９およびフレームバッファ３を制御して、フレームバッファ３に格納されるスライスＳ１を、そのスライスＳ１が含まれているピクチャの１つ前にディスプレイ２１へ出力されるピクチャの対応するマクロブロックＭＢ１′〜ＭＢｎ′によって置き換える。この動作を、図１０（ｄ）（ｅ）に示すように各ピクチャの順番が構成されている場合を例にとって説明する。
【００９８】
Ａ−（３）−［１］  スライスＳ１を含むピクチャがＢピクチャＢ３の場合；ＢピクチャＢ３の１つ前にディスプレイ２１へ出力されるピクチャはＩピクチャＩ２である。ＢピクチャＢ３をＢピクチャ格納領域３ｃへ転送しているとき、ＩピクチャＩ２は既に後方参照領域３ｂに格納されている。
【００９９】
図１１に示すように、ＢピクチャＢ３のスライスＳ１に対応するＩピクチャＩ２のマクロブロックＭＢ１′〜ＭＢｎ′を後方参照領域３ｂから読み出す。そして、ＩピクチャＩ２のマクロブロックＭＢ１′〜ＭＢｎ′をＢピクチャ格納領域３ｃに書き込むことで、ＢピクチャＢ３のスライスＳ１をＩピクチャＩ２のマクロブロックＭＢ１′〜ＭＢｎ′に置き換える。
【０１００】
Ａ−（３）−［２］  スライスＳ１を含むピクチャがＢピクチャＢ４の場合；ＢピクチャＢ４の１つ前にディスプレイ２１へ出力されるピクチャはＢピクチャＢ３である。ＢピクチャＢ３をＢピクチャ格納領域３ｃへ転送しているとき、ＢピクチャＢ３は既にＢピクチャ格納領域３ｃに格納されている。
【０１０１】
図１２に示すように、Ｂピクチャ格納領域３ｃにおいて、ＢピクチャＢ４のスライスＳ１に対応するＢピクチャＢ３のマクロブロックＭＢ１′〜ＭＢｎ′に対してはＢピクチャＢ４のデータを上書きせず、ＢピクチャＢ３のマクロブロックＭＢ１′〜ＭＢｎ′をそのまま残す。その結果、ＢピクチャＢ４のスライスＳ１はＢピクチャＢ３のマクロブロックＭＢ１′〜ＭＢｎ′に置き換えられる。
【０１０２】
Ａ−（３）−［３］  スライスＳ１を含むピクチャがＰピクチャＰ５の場合；ＰピクチャＰ５の１つ前にディスプレイ２１へ出力されるピクチャはＢピクチャＢ４である。ＰピクチャＰ５は前方参照領域３ａに格納され、ＢピクチャＢ４はＢピクチャ格納領域３ｃに格納されている。
【０１０３】
図１３に示すように、ＰピクチャＢ５のスライスＳ１に対応するＢピクチャＢ４のマクロブロックＭＢ１′〜ＭＢｎ′をＢピクチャ格納領域３ｃから読み出す。そして、ＢピクチャＢ４のマクロブロックＭＢ１′〜ＭＢｎ′を前方参照領域３ａに書き込むことで、ＰピクチャＰ５のスライスＳ１をＢピクチャＢ４のマクロブロックＭＢ１′〜ＭＢｎ′に置き換える。
【０１０４】
ＤＣエラー検出回路４１は、逆量子化回路７における逆量子化処理を監視することで、マクロブロック毎にエラー検出を行う。すなわち、ＤＣエラー検出回路４１は、逆量子化回路７の求めたＤＣＴ係数のうち直流（ＤＣ；Ｄｉｒｅｃｔ  Ｃｕｒｒｅｎｔ）係数が所定値内に納まっているかどうかをマクロブロック毎に検出し、納まっていない場合、そのマクロブロック内にエラーが含まれていると判定する。尚、ＤＣ係数はＤＣＴ係数の（０、０）成分である。
【０１０５】
動き領域エラー検出回路４２は、ＭＣ回路９内の動きベクトル復元回路４３が復元した動きベクトルを監視することで、マクロブロック毎にエラー検出を行う。例えば、図２に示すように、動きベクトル復元回路４３は、ピクチャ５１に含まれるスライスＳ３を構成する各マクロブロックＭＢ１１〜ＭＢ１５について、それぞれ動きベクトル５２〜５６を復元する。動き領域エラー検出回路４２は、各動きベクトル５２〜５６がピクチャ５１内を示しているかどうかを検出し、ピクチャ５１外を示している場合、その動きベクトルを含むマクロブロック内にエラーが含まれていると判定する。ここで、動きベクトル５２〜５５についてはピクチャ５１内を示しているが、動きベクトル５６はピクチャ５１外を示している。従って、動き領域エラー検出回路４２は、動きベクトル５６を含むマクロブロックＭＢ１５内にエラーが含まれていると判定する。
【０１０６】
尚、ＤＣエラー検出回路４１または動き領域エラー検出回路４２によって検出されたエラーの原因には、以下のものがある。
▲１▼伝達メディア２０から転送されてきたビデオストリームのエンコードが元々、ＭＰＥＧビデオパートの規格通りに行われていない場合。
【０１０７】
▲２▼伝達メディア２０内で生じた何らかの事故により、伝達メディア２０から転送されてきたビデオストリームの任意のビットに誤りがある場合。例えば、伝達メディア２０としてビデオＣＤやＤＶＤを用いた場合には、ディスクに付いた傷が原因で、ディスクから読み出されたビデオストリームの任意のビットに誤りが生じることがある。また、通信メディアや放送メディアでは、ノイズが原因で、伝送されるビデオストリームの任意のビットに誤りが生じることがある。
【０１０８】
制御コア回路１２は、ＤＣエラー検出回路４１または動き領域エラー検出回路４２によってマクロブロック内にエラーが含まれていると判定された場合、以下のエラー処理Ｂを行う。ここでは、図８に示すスライスＳ１内のマクロブロックＭＢｍ内にエラーが含まれている場合を例にとって説明する。
【０１０９】
Ｂ−（１）  エラーが含まれていると判定されたスライスＳ１内のマクロブロックＭＢｍ以降の全てのマクロブロックＭＢｍ〜ＭＢｎに対する各回路６〜８の処理を停止させ、その各マクロブロックＭＢｍ〜ＭＢｎの処理結果を無効にさせる。
【０１１０】
Ｂ−（２）  スライスヘッダ検出回路５の検出結果に基づいて、ビットバッファ２からスライスＳ１の次のスライスＳ２を読み出す。そして、各回路６〜８にスライスＳ２の処理を行わせる。
【０１１１】
Ｂ−（３）  ＭＣ回路９およびフレームバッファ３を制御して、フレームバッファ３に格納される各マクロブロックＭＢｍ〜ＭＢｎを、そのマクロブロックＭＢｍ〜ＭＢｎが含まれているピクチャの１つ前にディスプレイ２１へ出力されるピクチャの対応する各マクロブロックＭＢｍ′〜ＭＢｎ′によって置き換える。この動作を、図１０（ｄ）（ｅ）に示すように各ピクチャの順番が構成されている場合を例にとって説明する。
【０１１２】
Ｂ−（３）−［１］  マクロブロックＭＢｍ〜ＭＢｎを含むピクチャがＢピクチャＢ３の場合；図３に示すように、ＢピクチャＢ３のマクロブロックＭＢｍ〜ＭＢｎに対応するＩピクチャＩ２のマクロブロックＭＢｍ′〜ＭＢｎ′を後方参照領域３ｂから読み出す。そして、ＩピクチャＩ２のマクロブロックＭＢｍ′〜ＭＢｎ′をＢピクチャ格納領域３ｃに書き込むことで、ＢピクチャＢ３のマクロブロックＭＢｍ〜ＭＢｎをＩピクチャＩ２のマクロブロックＭＢｍ′〜ＭＢｎ′に置き換える。
【０１１３】
Ｂ−（３）−［２］  マクロブロックＭＢｍ〜ＭＢｎを含むピクチャがＢピクチャＢ４の場合；図４に示すように、Ｂピクチャ格納領域３ｃにおいて、ＢピクチャＢ４のマクロブロックＭＢｍ〜ＭＢｎに対応するＢピクチャＢ３のマクロブロックＭＢｍ′〜ＭＢｎ′に対してはＢピクチャＢ４のデータを上書きせず、ＢピクチャＢ３のマクロブロックＭＢｍ′〜ＭＢｎ′をそのまま残す。その結果、ＢピクチャＢ４のマクロブロックＭＢｍ〜ＭＢｎはＢピクチャＢ３のマクロブロックＭＢｍ′〜ＭＢｎ′に置き換えられる。
【０１１４】
Ｂ−（３）−［３］  マクロブロックＭＢｍ〜ＭＢｎを含むピクチャがＰピクチャＰ５の場合；図５に示すように、ＰピクチャＢ５のマクロブロックＭＢｍ〜ＭＢｎに対応するＢピクチャＢ４のマクロブロックＭＢｍ′〜ＭＢｎ′をＢピクチャ格納領域３ｃから読み出す。そして、ＢピクチャＢ４のマクロブロックＭＢｍ′〜ＭＢｎ′を前方参照領域３ａに書き込むことで、ＰピクチャＰ５のマクロブロックＭＢｍ〜ＭＢｎをＢピクチャＢ４のマクロブロックＭＢｍ′〜ＭＢｎ′に置き換える。
【０１１５】
図６に、ＭＣ回路９の内部構成を示す。
ＭＣ回路９は、逆方向予測メモリ３１、順方向予測メモリ３２、平均回路３３、加算回路３４、スイッチＳＷ１〜ＳＷ６、動きベクトル復元回路４３から構成されている。
【０１１６】
スイッチＳＷ６は２つの接点ａ，ｂをもち、接点ａはＩＤＣＴ回路８の出力に接続され、接点ｂはアースされ、各接点ａ，ｂのいずれか一方が加算回路３４の入力に接続される。
【０１１７】
スイッチＳＷ１は４つの接点ａ〜ｄをもち、接点ａは逆方向予測メモリ３１の出力に接続され、接点ｂは平均回路３３の出力に接続され、接点ｃは順方向予測メモリ３２の出力に接続され、接点ｄはアースされ、各接点ａ〜ｄのいずれか１つが加算回路３４の入力に接続される。
【０１１８】
スイッチＳＷ２は２つの接点ａ，ｂをもち、接点ａは逆方向予測メモリ３１の入力に接続され、接点ｂは順方向予測メモリ３２の入力に接続され、各接点ａ，ｂのいずれか一方がスイッチＳＷ３に接続される。
【０１１９】
スイッチＳＷ３は３つの接点ａ〜ｃをもち、接点ａはフレームバッファ３の前方参照領域３ａの出力に接続されると共にスイッチＳＷ５の接点ａに接続され、接点ｂはフレームバッファ３の後方参照領域３ｂの出力に接続されると共にスイッチＳＷ５の接点ｂに接続され、接点ｃはフレームバッファ３のＢピクチャ格納領域３ｃの出力に接続されると共にスイッチＳＷ５の接点ｃに接続される。
【０１２０】
スイッチＳＷ５は３つの接点ａ〜ｃをもち、各接点ａ〜ｃのいずれか１つがディスプレイ２１に接続される。
スイッチＳＷ４は３つの接点ａ〜ｃをもち、接点ａは前方参照領域３ａの入力に接続され、接点ｂは後方参照領域３ｂの入力に接続され、接点ｃはＢピクチャ格納領域３ｃの入力に接続され、各接点ａ〜ｃのいずれか１つが加算回路３４の出力に接続される。
【０１２１】
逆方向予測メモリ３１および順方向予測メモリ３２はそれぞれ、１個のマクロブロック分のデータを格納する。
平均回路３３は、逆方向予測メモリ３１および順方向予測メモリ３２から読み出されたデータを平均化する。
【０１２２】
動きベクトル復元回路４３は、各領域３ａ〜３ｃのいずれか１つから読み出した１個のマクロブロック分のデータをスイッチＳＷ３を介して入力し、そのマクロブロックの動きベクトルを復元する。
【０１２３】
このように構成されたＭＣ回路９は以下の動作を行う。
▲１▼各エラー検出回路１３，４１，４２がいずれもエラーを検出しない場合（通常動作）；スイッチＳＷ６を接点ａに接続する。
【０１２４】
▲１▼−［１］  ＩＤＣＴ回路８からＩピクチャが出力された場合；スイッチＳＷ１を接点ｄに接続し、スイッチＳＷ４を接点ａまたは接点ｂに接続する。スイッチＳＷ５を、スイッチＳＷ４の接続されている接点とは異なる接点ａ〜ｃに接続する。例えば、スイッチＳＷ４が接点ａに接続されている場合、スイッチＳＷ５は接点ｂまたは接点ｃに接続する。スイッチＳＷ２，ＳＷ３はどの接点に接続してもよい。その結果、加算回路３４の出力はＩＤＣＴ回路８の出力と同じになる。その加算回路３４の出力は、スイッチＳＷ４を介して、前方参照領域３ａまたは後方参照領域３ｂへ転送される。
【０１２５】
▲１▼−［２］  ＩＤＣＴ回路８からＰピクチャが出力された場合；スイッチＳＷ１をマクロブロック・タイプに対応した接点ｃ，ｄに接続する。
【０１２６】
▲１▼−［２］−＜１＞  マクロブロック・タイプがフレーム内予測画面の場合；上記▲１▼−［１］  と同じである。
【０１２７】
▲１▼−［２］−＜２＞  マクロブロック・タイプが順方向予測画面の場合；スイッチＳＷ２，ＳＷ３をそれぞれ接点ｂに接続し、後方参照領域３ｂから読み出した１個のマクロブロック分のデータを、順方向予測メモリ３２に格納する。そして、スイッチＳＷ１を接点ｃに接続し、スイッチＳＷ４を接点ａまたは接点ｂに接続する。スイッチＳＷ５を、スイッチＳＷ４の接続されている接点とは異なる接点ａ〜ｃに接続する。その結果、加算回路３４は、順方向予測メモリ３２から読み出されたマクロブロックのデータと、ＩＤＣＴ回路８の出力とを加算する。その加算回路３４の出力は、スイッチＳＷ４を介して、前方参照領域３ａまたは後方参照領域３ｂへ転送される。
【０１２８】
▲１▼−［３］  ＩＤＣＴ回路８からＢピクチャが出力された場合；スイッチＳＷ１をマクロブロック・タイプに対応した接点ａ〜ｄに接続し、スイッチＳＷ４，ＳＷ５をそれぞれ接点ｃに接続する。その結果、加算回路３４の出力は、スイッチＳＷ４を介して、Ｂピクチャ格納領域３ｃへ転送される。
【０１２９】
▲１▼−［３］−＜１＞  マクロブロック・タイプがフレーム内予測画面の場合；スイッチＳＷ１を接点ｄに接続する。スイッチＳＷ２，ＳＷ３はどの接点に接続してもよい。その結果、加算回路３４の出力はＩＤＣＴ回路８の出力と同じになる。
【０１３０】
▲１▼−［３］−＜２＞  マクロブロック・タイプが順方向予測画面の場合；スイッチＳＷ２，ＳＷ３をそれぞれ接点ｂに接続し、後方参照領域３ｂから読み出した１個のマクロブロック分のデータを、順方向予測メモリ３２に格納する。そして、スイッチＳＷ１を接点ｃに接続する。その結果、加算回路３４は、順方向予測メモリ３２から読み出されたマクロブロックのデータと、ＩＤＣＴ回路８の出力とを加算する。
【０１３１】
▲１▼−［３］−＜３＞  マクロブロック・タイプが逆方向予測画面の場合；スイッチＳＷ２，ＳＷ３をそれぞれ接点ａに接続し、前方参照領域３ａから読み出した１個のマクロブロック分のデータを、逆方向予測メモリ３１に格納する。そして、スイッチＳＷ１を接点ａに接続する。その結果、加算回路３４は、逆方向予測メモリ３１から読み出されたマクロブロックのデータと、ＩＤＣＴ回路８の出力とを加算する。
【０１３２】
▲１▼−［３］−＜４＞  マクロブロック・タイプが内挿的予測画面の場合；まず、スイッチＳＷ２，ＳＷ３をそれぞれ接点ｂに接続し、後方参照領域３ｂから読み出した１個のマクロブロック分のデータを、順方向予測メモリ３２に格納する。次に、スイッチＳＷ２，ＳＷ３をそれぞれ接点ａに接続し、前方参照領域３ａから読み出した１個のマクロブロック分のデータを、逆方向予測メモリ３１に格納する。平均回路３３は、逆方向予測メモリ３１および順方向予測メモリ３２から読み出されたデータを平均化する。そして、スイッチＳＷ１を接点ｂに接続する。その結果、加算回路３４は、平均回路３３の出力と、ＩＤＣＴ回路８の出力とを加算する。
【０１３３】
▲２▼各エラー検出回路１３，４１，４２のいずれか１つがエラーを検出した場合（エラー処理動作）；スイッチＳＷ６を接点ｂに接続し、スイッチＳＷ２を接点ａに接続する。スイッチＳＷ４を、エラーが含まれているピクチャが格納される領域３ａ〜３ｃに対応する接点ａ〜ｃに接続する。スイッチＳＷ３を、エラーが含まれているピクチャの１つ前にディスプレイ２１へ出力されるピクチャが格納されている領域３ａ〜３ｃに対応する接点ａ〜ｃに接続する。そして、各領域３ａ〜３ｃのいずれか１つから読み出した１個のマクロブロック分のデータを、スイッチＳＷ２，ＳＷ３を介して、逆方向予測メモリ３１に格納する。続いて、スイッチＳＷ１を接点ａに接続する。その結果、加算回路３４の出力は逆方向予測メモリ３１から読み出されたマクロブロックのデータと同じになる。その加算回路３４の出力は、スイッチＳＷ４を介して、エラーが含まれているピクチャが格納される領域３ａ〜３ｃへ転送される。
【０１３４】
▲２▼−［１］  ハフマンエラー検出回路１３がエラーを検出した場合；上記のエラー処理動作を、エラーが含まれていると判定されたスライス（前記スライスＳ１）が、そのスライスが含まれているピクチャの１つ前にディスプレイ２１へ出力されるピクチャの対応するマクロブロック（前記マクロブロックＭＢ１′〜ＭＢｎ′）によって置き換えられるまで、マクロブロック毎に繰り返し行う。
【０１３５】
上記のエラー処理動作を、図８に示すスライスＳ１内にエラーが含まれていると判定され、図１０（ｄ）（ｅ）に示すように各ピクチャの順番が構成されている場合を例にとって説明する。
【０１３６】
▲２▼−［１］−＜１＞  スライスＳ１を含むピクチャがＢピクチャＢ３の場合（図１１参照）；スイッチＳＷ４を、ＢピクチャＢ３が格納されるＢピクチャ格納領域３ｃに対応する接点ｃに接続する。スイッチＳＷ３を、ＩピクチャＩ２が格納される後方参照領域３ｂに対応する接点ｂに接続する。そして、後方参照領域３ｂから読み出したマクロブロックＭＢ１′のデータを、スイッチＳＷ２，ＳＷ３を介して、逆方向予測メモリ３１に格納する。続いて、逆方向予測メモリ３１から読み出したマクロブロックＭＢ１′のデータだけを、加算回路３４を介してＢピクチャ格納領域３ｃへ転送する。このエラー処理動作を、各マクロブロックＭＢ２′〜ＭＢｎ′について繰り返し行い、ＢピクチャＢ３のスライスＳ１をＩピクチャＩ２のマクロブロックＭＢ１′〜ＭＢｎ′に置き換える。
【０１３７】
▲２▼−［１］−＜２＞  スライスＳ１を含むピクチャがＢピクチャＢ４の場合（図１２参照）；スイッチＳＷ４を、ＢピクチャＢ４が格納されるＢピクチャ格納領域３ｃに対応する接点ｃに接続する。スイッチＳＷ３を、ＢピクチャＢ３が格納されるＢピクチャ格納領域３ｃに対応する接点ｃに接続する。そして、Ｂピクチャ格納領域３ｃから読み出したマクロブロックＭＢ１′のデータを、スイッチＳＷ２，ＳＷ３を介して、逆方向予測メモリ３１に格納する。続いて、逆方向予測メモリ３１から読み出したマクロブロックＭＢ１′のデータだけを、加算回路３４を介してＢピクチャ格納領域３ｃへ転送する。つまり、マクロブロックＭＢ１′に対してはＢピクチャＢ４のデータが上書きされず、マクロブロックＭＢ１′はそのまま残ることになる。このエラー処理動作を、各マクロブロックＭＢ２′〜ＭＢｎ′について繰り返し行い、ＢピクチャＢ４のスライスＳ１をＢピクチャＢ３のマクロブロックＭＢ１′〜ＭＢｎ′に置き換える。
【０１３８】
▲２▼−［１］−＜３＞  スライスＳ１を含むピクチャがＰピクチャＰ５の場合（図１３参照）；スイッチＳＷ４を、ＰピクチャＢ５が格納される前方参照領域３ａに対応する接点ａに接続する。スイッチＳＷ３を、ＢピクチャＢ４が格納されるＢピクチャ格納領域３ｃに対応する接点ｃに接続する。そして、Ｂピクチャ格納領域３ｃから読み出したマクロブロックＭＢ１′のデータを、スイッチＳＷ２，ＳＷ３を介して、逆方向予測メモリ３１に格納する。続いて、逆方向予測メモリ３１から読み出したマクロブロックＭＢ１′のデータだけを、加算回路３４を介して前方参照領域３ａへ転送する。このエラー処理動作を、各マクロブロックＭＢ２′〜ＭＢｎ′について繰り返し行い、ＰピクチャＰ５のスライスＳ１をＢピクチャＢ４のマクロブロックＭＢ１′〜ＭＢｎ′に置き換える。
【０１３９】
▲２▼−［２］  ＤＣエラー検出回路４１または動き領域エラー検出回路４２がエラーを検出した場合；上記のエラー処理動作を、エラーが含まれていると判定されたスライス（前記スライスＳ１）内のマクロブロック（前記マクロブロックＭＢｍ）以降の全てのマクロブロック（前記マクロブロックＭＢｍ〜ＭＢｎ）が、そのマクロブロックが含まれているピクチャの１つ前にディスプレイ２１へ出力されるピクチャの対応するマクロブロック（前記マクロブロックＭＢｍ′〜ＭＢｎ′）によって置き換えられるまで、マクロブロック毎に繰り返し行う。
【０１４０】
上記のエラー処理動作を、図８に示すスライスＳ１内のマクロブロックＭＢｍにエラーが含まれていると判定され、図１０（ｄ）（ｅ）に示すように各ピクチャの順番が構成されている場合を例にとって説明する。
【０１４１】
▲２▼−［２］−＜１＞  マクロブロックＭＢｍを含むピクチャがＢピクチャＢ３の場合（図３参照）；スイッチＳＷ４を、ＢピクチャＢ３が格納されるＢピクチャ格納領域３ｃに対応する接点ｃに接続する。スイッチＳＷ３を、ＩピクチャＩ２が格納される後方参照領域３ｂに対応する接点ｂに接続する。そして、後方参照領域３ｂから読み出したマクロブロックＭＢｍ′のデータを、スイッチＳＷ２，ＳＷ３を介して、逆方向予測メモリ３１に格納する。続いて、逆方向予測メモリ３１から読み出したマクロブロックＭＢｍ′のデータだけを、加算回路３４を介してＢピクチャ格納領域３ｃへ転送する。このエラー処理動作を、各マクロブロックＭＢｍ＋１′〜ＭＢｎ′について繰り返し行い、ＢピクチャＢ３のマクロブロックＭＢｍ〜ＭＢｎをＩピクチャＩ２のマクロブロックＭＢｍ′〜ＭＢｎ′に置き換える。
【０１４２】
▲２▼−［２］−＜２＞  マクロブロックＭＢｍを含むピクチャがＢピクチャＢ４の場合（図４参照）；スイッチＳＷ４を、ＢピクチャＢ４が格納されるＢピクチャ格納領域３ｃに対応する接点ｃに接続する。スイッチＳＷ３を、ＢピクチャＢ３が格納されるＢピクチャ格納領域３ｃに対応する接点ｃに接続する。そして、Ｂピクチャ格納領域３ｃから読み出したマクロブロックＭＢｍ′のデータを、スイッチＳＷ２，ＳＷ３を介して、逆方向予測メモリ３１に格納する。続いて、逆方向予測メモリ３１から読み出したマクロブロックＭＢｍ′のデータだけを、加算回路３４を介してＢピクチャ格納領域３ｃへ転送する。つまり、マクロブロックＭＢｍ′に対してはＢピクチャＢ４のデータが上書きされず、マクロブロックＭＢｍ′はそのまま残ることになる。このエラー処理動作を、各マクロブロックＭＢｍ＋１′〜ＭＢｎ′について繰り返し行い、ＢピクチャＢ４のマクロブロックＭＢｍ〜ＭＢｎをＢピクチャＢ３のマクロブロックＭＢｍ′〜ＭＢｎ′に置き換える。
【０１４３】
▲２▼−［２］−＜３＞  マクロブロックＭＢｍを含むピクチャがＰピクチャＰ５の場合（図５参照）；スイッチＳＷ４を、ＰピクチャＢ５が格納される前方参照領域３ａに対応する接点ａに接続する。スイッチＳＷ３を、ＢピクチャＢ４が格納されるＢピクチャ格納領域３ｃに対応する接点ｃに接続する。そして、Ｂピクチャ格納領域３ｃから読み出したマクロブロックＭＢｍ′のデータを、スイッチＳＷ２，ＳＷ３を介して、逆方向予測メモリ３１に格納する。続いて、逆方向予測メモリ３１から読み出したマクロブロックＭＢｍ′のデータだけを、加算回路３４を介して前方参照領域３ａへ転送する。このエラー処理動作を、各マクロブロックＭＢｍ＋１′〜ＭＢｎ′について繰り返し行い、ＰピクチャＰ５のマクロブロックＭＢｍ〜ＭＢｎをＢピクチャＢ４のマクロブロックＭＢｍ′〜ＭＢｎ′に置き換える。
【０１４４】
このように、本実施形態によれば、以下の作用および効果を得ることができる。
（１）ハフマンエラー検出回路１３によってスライス毎にエラー検出を行う。そして、あるスライスＳ１内にエラーが含まれている場合には、前記エラー処理Ａを行う。
【０１４５】
（２）上記（１）により、フレームバッファ３に格納されるエラーを含むスライスＳ１を、そのスライスＳ１を含むピクチャの１つ前にディスプレイ２１へ出力されるピクチャの対応するマクロブロックＭＢ１′〜ＭＢｎ′によって置き換えることができる。ディスプレイ２１へ連続して出力される各ピクチャにおいて、あるピクチャと、その前後のピクチャとは良く似ており、異なっているのは、そのごく一部分に過ぎない。つまり、スライスＳ１とマクロブロックＭＢ１′〜ＭＢｎ′とは同じデータ内容である可能性が高い。従って、エラーを含むスライスＳ１をマクロブロックＭＢ１′〜ＭＢｎ′によって置き換えれば、ほとんどの場合にエラーを隠すことができる。
【０１４６】
（３）ＤＣエラー検出回路４１および動き領域エラー検出回路４２によってマクロブロック毎にエラー検出を行う。そして、あるスライスＳ１内のあるマクロブロックＭＢｍ内にエラーが含まれている場合には、前記エラー処理Ｂを行う。
【０１４７】
（４）上記（３）により、フレームバッファ３に格納されるエラーを含むスライスＳ１内のマクロブロックＭＢｍ以降の全てのマクロブロックＭＢｍ〜ＭＢｎを、そのマクロブロックＭＢｍを含むピクチャの１つ前にディスプレイ２１へ出力されるピクチャの対応するマクロブロックＭＢｍ′〜ＭＢｎ′によって置き換えることができる。マクロブロックＭＢｍ〜ＭＢｎとマクロブロックＭＢｍ′〜ＭＢｎ′とは同じデータ内容である可能性が高い。従って、エラーを含むスライスＳ１内のマクロブロックＭＢｍ以降の全てのマクロブロックＭＢｍ〜ＭＢｎをマクロブロックＭＢｍ′〜ＭＢｎ′によって置き換えれば、ほとんどの場合にエラーを隠すことができる。
【０１４８】
（５）図９に示す従来例では上記（１）（２）の作用および効果しか得られない。それに対して、本実施形態では、上記（１）（２）に加えて上記（３）（４）の作用および効果を得ることができる。従って、本実施形態によれば、従来例に比べて、エラー検出の精度を高めることが可能になり、エラー耐性の強化を図ることができる。
【０１４９】
（６）前記エラー処理Ｂにおいて、エラーが含まれるマクロブロックＭＢｍだけでなく、スライスＳ１内のマクロブロックＭＢｍ以降の全てのマクロブロックＭＢｍ〜ＭＢｎについてエラー処理を行うのは以下の理由による。
【０１５０】
伝達メディア２０内で生じた何らかの事故により、伝達メディア２０から転送されてきたビデオストリームの任意のビットに誤りがある場合、スライスの途中でエラー状態が解除されることはほとんどない。
【０１５１】
例えば、図７に示すように、（ａ）：「０００１００１０１１０１００１…」というビデオストリームのコードが、（ｂ）：「０００１１０１０１１０１００１…」のように、先頭から５ビット目だけ１ビット誤った場合を例にとって説明する。ここで、ハフマンテーブルのハフマンコードを、「１１」：Ａ、「１０」：Ｂ、「０１」：Ｃ、「００１」：Ｄ、「０００１」：Ｅ、それ以外のコード：ＮＧとする。すると、正しいビデオストリーム（ａ）はハフマンコードで「ＥＤＣＢＢＣ…」と表されるのに対し、誤ったビデオストリーム（ｂ）は「ＥＢＢＡＣＤ…」と表される。つまり、ビデオストリームのあるビットが誤っていても、そのビデオストリームはいずれかのハフマンコードと一致する。
【０１５２】
このような場合、ハフマンエラー検出回路１３はエラーを検出することができず、可変長デコーダ６はでたらめなデコード結果を出力し続けることになる。可変長デコーダ６のデコード結果には、ＤＣ係数や動きベクトルに関する情報も含まれている。そのため、可変長デコーダ６のデコード結果が誤っていると、ＤＣエラー検出回路４１および動き領域エラー検出回路４２もエラーを検出することができなくなる。
【０１５３】
つまり、各エラー検出回路４１，４２が、エラーが含まれるマクロブロックＭＢｍの次のマクロブロックＭＢｍ＋１についてはエラーを検出しない場合でも、マクロブロックＭＢｍ＋１にエラーが含まれていることがある。従って、エラーが含まれるマクロブロックＭＢｍだけでなく、スライスＳ１内のそれ以降の全てのマクロブロックＭＢｍ＋１〜ＭＢｎについてもエラー処理を行うことにより、確実なエラー検出を可能にしている。
【０１５４】
尚、上記各実施形態は以下のように変更してもよく、その場合でも同様の作用および効果を得ることができる。
〔１〕各エラー検出回路１３，４１，４２のうちいずれか１つを省く。また、ハフマンエラー検出回路１３を省くと共に、各エラー検出回路４１，４２のうちいずれか１方だけを設ける。これらの場合には、上記実施形態に比べてエラー検出の精度およびエラー耐性は低下するものの、従来例に比べれば強化することができる。
【０１５５】
〔２〕前記エラー処理動作（▲２▼−［１］  、▲２▼−［２］）において、スイッチＳＷ２を接点ｂに接続する。そして、各領域３ａ〜３ｃのいずれか１つから読み出した１個のマクロブロック分のデータを、スイッチＳＷ２，ＳＷ３を介して、順方向予測メモリ３２に格納する。続いて、スイッチＳＷ１を接点ｃに接続する。その結果、加算回路３４の出力は順方向予測メモリ３２から読み出されたマクロブロックのデータと同じになる。
【０１５６】
〔３〕上記実施形態をＣＰＵを用いたソフトウェア的な処理に置き換える。すなわち、各回路（４〜９，１２，１３，４１，４２）における信号処理をＣＰＵを用いたソフトウェア的な信号処理に置き換える。
【０１５７】
ところで、本明細書において、発明の構成に係る部材は以下のように定義されるものとする。
（ａ）エラー検出手段は、各エラー検出回路１３，４１，４２のうち少なくともいずれか１つから構成される。
（ｂ）エラー処理手段は、ＭＣ回路９および制御コア回路１２から構成される。
【０１５８】
【発明の効果】
以上詳述したように本発明によれば、エラー耐性の強化を図ることが可能なＭＰＥＧビデオデコーダを提供することができる。
【図面の簡単な説明】
【図１】一実施形態のブロック回路図である。
【図２】一実施形態の作用を説明するための図である。
【図３】一実施形態の作用を説明するための図である。
【図４】一実施形態の作用を説明するための図である。
【図５】一実施形態の作用を説明するための図である。
【図６】一実施形態の要部ブロック回路図である。
【図７】一実施形態の作用を説明するための図である。
【図８】一実施形態および従来例の作用を説明するための図である。
【図９】従来例のブロック回路図である。
【図１０】一実施形態および従来例の作用を説明するための図である。
【図１１】一実施形態および従来例の作用を説明するための図である。
【図１２】一実施形態および従来例の作用を説明するための図である。
【図１３】一実施形態および従来例の作用を説明するための図である。
【図１４】従来例の要部ブロック回路図である。
【符号の説明】
３…フレームバッファ
５…スライスヘッダ検出回路
６…可変長デコーダ
７…逆量子化回路
８…ＩＤＣＴ回路
９…ＭＣ回路
１２…制御コア回路
１３…ハフマンエラー検出回路
４１…ＤＣエラー検出回路
４２…動き領域エラー検出回路
４３…動きベクトル復元回路
【図１】
0003568504.tif 000002
【図２】
0003568504.tif 000003
【図３】
0003568504.tif 000004
【図４】
0003568504.tif 000005
【図５】
0003568504.tif 000006
【図６】
0003568504.tif 000007
【図７】
0003568504.tif 000008
【図８】
0003568504.tif 000009
【図９】
0003568504.tif 000010
【図１０】
0003568504.tif 000011
【図１１】
0003568504.tif 000012
【図１２】
0003568504.tif 000013
【図１３】
0003568504.tif 000014
【図１４】
0003568504.tif 000015