(57)【要約】      （修正有）【課題】ビデオ復号エラーを処理するための技法を提供する。【解決手段】ビデオデコーダが、ビデオデータユニットの破損データセグメント内のエラーを検出し、隠蔽するために、連続エラー処理プロセスを実行する。デコーダはカレントデータユニットを連続的に復号する。エラーを検出すると、デコーダはエラーフラグを設定し、次のユニットの開始時に復号を再同期させる。エラーフラグが設定されている場合、ビデオデコーダは、その後のユニットの開始に基づいて破損データセグメントの終了を識別する。デコーダは、カレントユニットの開始と破損データセグメントの終了との間のデータを隠蔽する。エラーフラグが設定されていない場合、デコーダは、カレントユニットの残りを復号し、カレントユニットに対してエラー処理及び隠蔽を実行することなしに次の利用可能なユニットを復号することに進む。【選択図】図５
2014090477.tif 000002
【特許請求の範囲】
【請求項１】
符号化ビデオデータのカレントユニットの開始を決定することと、
前記カレントユニットの少なくとも一部分を復号することと、
前記カレントユニット中の復号エラーを検出することと、
前記符号化ビデオデータの次の利用可能なユニットの開始を決定することと、
前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定することと、
前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽することと、を含む、ビデオ復号方法。
【請求項２】
前記カレントユニット及び前記次の利用可能なユニットの各々がビデオデータスライスを含む、請求項１に記載の方法。
【請求項３】
前記破損データセグメントが、前記カレントユニットと符号化ビデオデータの少なくとも１つの追加のユニットとを含む、請求項１に記載の方法。
【請求項４】
前記カレントユニットが第１のフレームのカレントスライスであり、前記破損データセグメントが、前記カレントスライスと第２のフレームからの符号化ビデオデータの少なくとも１つの追加のスライスとを含む、請求項１に記載の方法。
【請求項５】
前記復号エラーが検出された場合、前記復号エラーの前記検出を示すためにエラーフラグを設定することと、  前記エラーフラグが設定されているとき、前記次の利用可能なユニットの前記開始に基づいて前記破損データセグメントの前記終了を決定することとを更に備える、請求項１に記載の方法。
【請求項６】
前記次の利用可能なユニットが少なくとも１つのスライスを備え、前記方法は、前記復号エラーが検出されたとき、前記スライスに関連するスライスヘッダを探すことを更に備える、請求項５に記載の方法。
【請求項７】
前記復号エラーが検出された場合、前記カレントユニットの復号を止めることと、前記次の利用可能なユニットを復号することに進むこととを更に含む、請求項５に記載の方法。
【請求項８】
前記復号エラーが検出されなかった場合、第１のユニット全体を復号することを更に含む、請求項１に記載の方法。
【請求項９】
前記復号エラーが、シンタックスエラー、セマンティックエラー、又はエントロピー符号化エラーの少なくとも１つを含む、請求項１に記載の方法。
【請求項１０】
前記カレントユニットの開始を決定することが、前記カレントユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号を決定することを含み、前記破損データセグメントの終了を決定することが、前記第２のユニットの開始より前に第２のＭＢ番号を決定することを含み、隠蔽することが、前記第１のＭＢ番号から前記第２のＭＢ番号までの前記破損データセグメントを隠蔽することを含む、請求項１に記載の方法。
【請求項１１】
前記第２のユニットの開始を決定することが、前記第２のユニットの前記開始に関連する第３のＭＢ番号を決定することを備え、前記第２のＭＢ番号を決定することが、前記第２のＭＢ番号を生成するために、前記第３のＭＢ番号から１を減算することを備える、請求項１０に記載の方法。
【請求項１２】
前記第１のユニットの開始を決定することが、前記第１のユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号と第１のフレーム番号とを決定することを備え、前記破損データセグメントの終了を決定することが、前記破損データセグメントの前記終了に関連する第２のＭＢ番号と第２のフレーム番号とを決定することを備え、隠蔽することが、前記第１のＭＢ番号及び前記第２のＭＢ番号と前記第１のフレーム番号及び前記第２のフレーム番号とに基づいて前記破損データセグメントの少なくとも一部分を隠蔽することを備え、前記第１のフレーム番号と前記第２のフレーム番号とが、同じことも、異なることもある、請求項１０に記載の方法。
【請求項１３】
１つ以上のフレームの損失を検出することと、
別のフレームの参照フレーム不整合を隠蔽するために前記１つ以上の損失したフレームを交換することとを更に含む、請求項１に記載の方法。
【請求項１４】
符号化ビデオデータのカレントユニットの開始を決定するための手段と、
前記カレントユニットの少なくとも一部分を復号するための手段と、
前記カレントユニット中の復号エラーを検出するための手段と、
前記符号化ビデオデータの次の利用可能なユニットの開始を決定するための手段と、
前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定するための手段と、
前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽するための手段と、を備える、ビデオ復号装置。
【請求項１５】
前記カレントユニット及び前記次の利用可能なユニットの各々がビデオデータスライスを含む、請求項１４に記載の装置。
【請求項１６】
前記破損データセグメントが、前記カレントユニットと符号化ビデオデータの少なくとも１つの追加のユニットとを含む、請求項１４に記載の装置。
【請求項１７】
前記カレントユニットが、第１のフレームのカレントスライスであり、前記破損データセグメントが、前記カレントスライスと第２のフレームからの符号化ビデオデータの少なくとも１つの追加のスライスとを含む、請求項１４に記載の装置。
【請求項１８】
前記復号エラーが検出された場合、前記復号エラーの前記検出を示すためにエラーフラグを設定するための手段と、  前記エラーフラグが設定されているとき、前記次の利用可能なユニットの前記開始に基づいて前記破損データセグメントの前記終了を決定するための手段とを更に備える、請求項１４に記載の装置。
【請求項１９】
前記次の利用可能なユニットが少なくとも１つのスライスを備え、前記装置は、前記復号エラーが検出されたとき、前記スライスに関連するスライスヘッダを探すための手段を更に備える、請求項１８に記載の装置。
【請求項２０】
前記復号エラーが検出された場合、前記カレントユニットの復号を止めるための手段と、前記次の利用可能なユニットを復号することに進むための手段とを更に備える、請求項１８に記載の装置。
【請求項２１】
前記復号エラーが検出されなかった場合、第１のユニット全体を復号するための手段を更に備える、請求項１４に記載の装置。
【請求項２２】
前記復号エラーが、シンタックスエラー、セマンティックエラー、又はエントロピー符号化エラーの少なくとも１つを備える、請求項１４に記載の装置。
【請求項２３】
前記カレントユニットの開始を決定するための前記手段が、前記カレントユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号を決定するための手段を備え、前記破損データセグメントの終了を決定するための前記手段が、前記第２のユニットの開始より前に第２のＭＢ番号を決定するための手段を備え、隠蔽するための前記手段が、前記第１のＭＢ番号から前記第２のＭＢ番号までの前記破損データセグメントを隠蔽するための手段を備える、請求項１４に記載の装置。
【請求項２４】
前記第２のユニットの開始を決定するための前記手段が、前記第２のユニットの前記開始に関連する第３のＭＢ番号を決定するための手段を備え、前記第２のＭＢ番号を決定するための前記手段が、前記第２のＭＢ番号を生成するために、前記第３のＭＢ番号から１を減算するための手段を備える、請求項２３に記載の装置。
【請求項２５】
前記第１のユニットの開始を決定するための前記手段が、前記第１のユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号と第１のフレーム番号とを決定するための手段を備え、前記破損データセグメントの終了を決定するための前記手段が、前記破損データセグメントの前記終了に関連する第２のＭＢ番号と第２のフレーム番号とを決定するための手段を備え、隠蔽するための前記手段が、前記第１のＭＢ番号及び前記第２のＭＢ番号と前記第１のフレーム番号及び前記第２のフレーム番号とに基づいて前記破損データセグメントの少なくとも一部分を隠蔽するための手段を備え、前記第１のフレーム番号と前記第２のフレーム番号とが、同じことも、異なることもある、請求項２３に記載の装置。
【請求項２６】
１つ以上のフレームの損失を検出するための手段と、  別のフレームの参照フレーム不整合を隠蔽するために前記１つ以上の損失したフレームを交換するための手段とを更に備える、請求項１４に記載の装置。
【請求項２７】
符号化ビデオデータのカレントユニットの少なくとも一部分を復号する復号エンジンと、  カレントユニット中の復号エラーを検出するエラー検出モジュールと、  前記カレントユニットの開始を決定し、前記符号化ビデオデータの次の利用可能なユニットの開始を決定し、前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定するエラーマッピングモジュールと、  前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽するエラー隠蔽モジュールとを備える、ビデオ復号装置。
【請求項２８】
前記カレントユニット及び前記次の利用可能なユニットの各々がビデオデータスライスを含む、請求項２７に記載の装置。
【請求項２９】
前記破損データセグメントが、前記カレントユニットと符号化ビデオデータの少なくとも１つの追加のユニットとを含む、請求項２７に記載の装置。
【請求項３０】
前記カレントユニットが、第１のフレームのカレントスライスであり、前記破損データセグメントが、前記カレントスライスと第２のフレームからの符号化ビデオデータの少なくとも１つの追加のスライスとを含む、請求項２７に記載の装置。
【請求項３１】
前記エラー検出モジュールが、前記復号エラーの前記検出を示すためにエラーフラグを設定し、前記エラーマッピングモジュールは、前記エラーフラグが設定されているとき、前記次の利用可能なユニットの前記開始に基づいて前記破損データセグメントの前記終了を決定する、請求項２７に記載の装置。
【請求項３２】
前記次の利用可能なユニットが少なくとも１つのスライスを備え、前記復号エンジンは、前記復号エラーが検出されたとき、前記スライスに関連するスライスヘッダを探す、請求項３１に記載の装置。
【請求項３３】
前記復号エラーが検出された場合、前記復号エンジンは、前記カレントユニットの復号を止め、前記次の利用可能なユニットを復号することに進む、請求項３１に記載の装置。
【請求項３４】
前記復号エラーが検出されなかった場合、前記復号エンジンは、第１のユニット全体を復号する、請求項２７に記載の装置。
【請求項３５】
前記復号エラーが、シンタックスエラー、セマンティックエラー、又はエントロピー符号化エラーの少なくとも１つを備える、請求項２７に記載の装置。
【請求項３６】
前記エラーマッピングモジュールが、前記カレントユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号を決定し、前記第２のユニットの開始より前に第２のＭＢ番号を決定し、前記エラー隠蔽モジュールが、前記第１のＭＢ番号から前記第２のＭＢ番号までの前記破損データセグメントを隠蔽する、請求項２７に記載の装置。
【請求項３７】
前記エラーマッピングモジュールが、前記第２のユニットの前記開始に関連する第３のＭＢ番号を決定し、前記第２のＭＢ番号を生成するために、前記第３のＭＢ番号から１を減算することによって前記第２のＭＢ番号を決定する、請求項３６に記載の装置。
【請求項３８】
前記エラーマッピングモジュールが、前記第１のユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号と第１のフレーム番号とを決定し、前記破損データセグメントの前記終了に関連する第２のＭＢ番号と第２のフレーム番号とを決定し、前記エラー隠蔽モジュールが、前記第１のＭＢ番号及び前記第２のＭＢ番号と前記第１のフレーム番号及び前記第２のフレーム番号とに基づいて前記破損データセグメントの少なくとも一部分を隠蔽し、前記第１のフレーム番号と前記第２のフレーム番号とが、同じことも、異なることもある、請求項３６に記載の装置。
【請求項３９】
前記エラー隠蔽モジュールが、１つ以上のフレームの損失を検出し、別のフレームの参照フレーム不整合を隠蔽するために前記１つ以上の損失したフレームを交換する、請求項２７に記載の装置。
【請求項４０】
前記装置がワイヤレス通信装置ハンドセットを備える、請求項２７に記載の装置。
【請求項４１】
前記装置が集積回路装置を備える、請求項２７に記載の装置。
【請求項４２】
符号化ビデオデータのカレントユニットの開始を決定することと、  前記カレントユニットの少なくとも一部分を復号することと、
前記カレントユニット中の復号エラーを検出することと、
前記符号化ビデオデータの次の利用可能なユニットの開始を決定することと、
前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定することと、
前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽することと、を１つ以上のプロセッサに行わせるための命令を含む、コンピュータ可読媒体。
【請求項４３】
前記カレントユニット及び前記次の利用可能なユニットの各々がビデオデータスライスを含む、請求項４２に記載のコンピュータ可読媒体。
【請求項４４】
前記破損データセグメントが、前記カレントユニットと符号化ビデオデータの少なくとも１つの追加のユニットとを含む、請求項４２に記載のコンピュータ可読媒体。
【請求項４５】
前記カレントユニットが、第１のフレームのカレントスライスであり、前記破損データセグメントが、前記カレントスライスと第２のフレームからの符号化ビデオデータの少なくとも１つの追加のスライスとを含む、請求項４２に記載のコンピュータ可読媒体。
【請求項４６】
前記復号エラーが検出された場合、前記復号エラーの前記検出を示すためにエラーフラグを設定することと、
前記エラーフラグが設定されているとき、前記次の利用可能なユニットの前記開始に基づいて前記破損データセグメントの前記終了を決定することとを前記１つ以上のプロセッサに行わせるための命令を更に含む、請求項４２に記載のコンピュータ可読媒体。
【請求項４７】
前記次の利用可能なユニットが少なくとも１つのスライスを備え、前記命令は、前記復号エラーが検出されたとき、前記スライスに関連するスライスヘッダを探すことを前記１つ以上のプロセッサに行わせる、請求項４６に記載のコンピュータ可読媒体。
【請求項４８】
前記復号エラーが検出された場合、前記カレントユニットの復号を止めることと、前記次の利用可能なユニットを復号することに進むこととを前記１つ以上のプロセッサに行わせるための命令を更に含む、請求項４６に記載のコンピュータ可読媒体。
【請求項４９】
前記命令は、前記復号エラーが検出されなかった場合、第１のユニット全体を復号することを前記１つ以上のプロセッサに行わせる、請求項４２に記載のコンピュータ可読媒体。
【請求項５０】
前記復号エラーが、シンタックスエラー、セマンティックエラー、又はエントロピー符号化エラーの少なくとも１つを含む、請求項４２に記載のコンピュータ可読媒体。
【請求項５１】
前記命令が、前記カレントユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号を決定することと、前記第２のユニットの開始より前に第２のＭＢ番号を決定することと、前記第１のＭＢ番号から前記第２のＭＢ番号までの前記破損データセグメントを隠蔽することとを前記１つ以上のプロセッサに行わせる、請求項４２に記載のコンピュータ可読媒体。
【請求項５２】
前記命令が、前記第２のユニットの前記開始に関連する第３のＭＢ番号を決定することと、前記第２のＭＢ番号を生成するために、前記第３のＭＢ番号から１を減算することとを前記１つ以上のプロセッサに行わせる、請求項５１に記載のコンピュータ可読媒体。
【請求項５３】
前記命令が、前記第１のユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号と第１のフレーム番号とを決定することと、前記破損データセグメントの前記終了に関連する第２のＭＢ番号と第２のフレーム番号とを決定することと、前記第１のＭＢ番号及び前記第２のＭＢ番号と前記第１のフレーム番号及び前記第２のフレーム番号とに基づいて前記破損データセグメントの少なくとも一部分を隠蔽することとを前記１つ以上のプロセッサに行わせ、前記第１のフレーム番号と前記第２のフレーム番号とが、同じことも、異なることもある、請求項５１に記載のコンピュータ可読媒体。
【請求項５４】
前記命令が、  １つ以上のフレームの損失を検出することと、  別のフレームの参照フレーム不整合を隠蔽するために前記１つ以上の損失したフレームを交換することとを前記１つ以上のプロセッサに行わせる、請求項４２に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、デジタルビデオ復号に関し、より詳細には、ビデオ復号エラーを処理するための技法に関する。
【背景技術】
【０００２】
デジタルビデオデータを符号化及び復号するために、幾つかのビデオ符号化及び復号技法が開発されてきた。例えば、Moving Picture Experts Group（ＭＰＥＧ）は、ＭＰＥＧ−１、ＭＰＥＧ−２、及びＭＰＥＧ−４を含む幾つかの技法を開発した。他の例には、International Telecommunication Union(ITU)-T H.263規格、並びにＩＴＵ−Ｔ  Ｈ．２６４規格及びその相対物、ＩＳＯ／ＩＥＣ  ＭＰＥＧ−４、Ｐａｒｔ１０、即ち、Advanced Video Coding(AVC)がある。これらのビデオ規格は、データ量を低減するために圧縮された形でデータを符号化することによって、ビデオデータの効率的な送信及び記憶をサポートする。
【０００３】
情報源は、上記のビデオ符号化技法の１つを採用して、デジタルビデオデータを符号化することができる。情報源は、符号化ビデオデータをアーカイブし、及び／又は符号化ビデオデータを送信チャネルによって宛先装置に送信する。宛先装置は、符号化ビデオデータを受信し、受信したビデオデータを復号して、再生のために元のデジタルビデオデータを復元する。ビデオデータは、エラーを起こしやすいチャネル上での送信中に損失又は破損し、復号エラーを生じることがある。ビデオブロードキャスト及びビデオ電話など、様々な適用例にとってエラーロバストネスは重要である。
【０００４】
ビデオデコーダは、安定したビデオ復号をサポートするために、受信したビットストリーム中のエラーを検出しなければならない。更に、ビデオデコーダはまた、品質へのエラーの影響を低減するために、エラー処理を実行しなければならない。復号エラーが検出されたとき、ビデオデコーダは、復号同期が回復できるまで、破損したデータを隠蔽することができる。適切なエラー処理を行わないと、デコーダが正しいデータを破棄するか、又は信頼できない再構成されたデータを表示することがあり、それらの各々は視覚的品質を劣化させる可能性がある。しかしながら、エラー処理は、計算集約的であり、特にハードウェアで実装されたとき、過大な電力を消費する可能性がある。
【発明の概要】
【０００５】
本出願は、その内容全体が参照により本明細書に組み込まれる、２００８年２月２６日に出願された米国仮出願第６１／０３１，４３８号の利益を主張する。
【０００６】
本開示は、デジタル符号化ビデオデータを復号するときに発生する復号エラーを効率的に処理するための技法に関する。ビデオデータは、フレーム又はスライスなど、ビデオデータユニットに編成できる。ビデオデータユニットは可変サイズを有し、マクロブロック又はより小さいブロックなど、ビデオブロックを含むことができる。ビデオデコーダは、１つ又は複数のビデオデータユニットの破損データセグメント内のエラーを検出し、隠蔽するために、連続エラー処理プロセスを実行することができる。
【０００７】
デコーダは、フレーム又はスライスなど、カレントビデオデータユニットをビデオデータユニットの開始から連続的に復号する。カレントビデオデータユニット中のエラーを検出すると、デコーダは、エラーフラグを設定し、ビットストリーム中の次の利用可能なビデオデータユニットの開始時に復号を再同期させることができる。エラーフラグは、カレントデータユニット中の復号データの少なくとも一部が復号エラーを生じ、破損していることを示す。エラーフラグが設定されている場合、ビデオデコーダは、その後のビデオデータユニットの開始に基づいて破損データセグメントの終了を識別する。
【０００８】
デコーダは、カレントビデオデータユニットの開始と破損データセグメントの終了との間のデータを隠蔽する。このようにして、デコーダは、正しいデータの損失及び誤ったデータの表示を回避することができる。エラーフラグが設定されておらず、エラーがないことを示す場合、デコーダは、カレントビデオデータユニットの残りを復号し、カレントビデオデータユニットのためのエラー処理及び隠蔽を実行することなしに次の利用可能なビデオデータユニットを復号することに進むことができる。デコーダはまた、損失したビデオフレームなど、損失したビデオデータユニットによって引き起こされた参照ユニット不整合に対処することができる。
【０００９】
一態様では、本開示は、符号化ビデオデータのカレントユニットの開始を決定することと、カレントユニットの少なくとも一部分を復号することと、カレントユニット中の復号エラーを検出することと、復号エラーが検出された場合、符号化ビデオデータの次の利用可能なユニットの開始を決定することと、次の利用可能なユニットの開始に基づいて破損データセグメントの終了を判断することと、カレントユニットの開始と破損データセグメントの終了とに基づいて破損データセグメントを隠蔽することとを備えるビデオ復号方法を提供する。
【００１０】
別の態様では、本開示は、符号化ビデオデータのカレントユニットの少なくとも一部分を復号する復号エンジンと、カレントユニット中の復号エラーを検出するエラー検出モジュールと、カレントユニットの開始を決定し、復号エラーが検出された場合、符号化ビデオデータの次の利用可能なユニットの開始を決定し、次の利用可能なユニットの開始に基づいて破損データセグメントの終了を決定するエラーマッピングモジュールと、カレントユニットの開始と破損データセグメントの終了とに基づいて破損データセグメントを隠蔽するエラー隠蔽モジュールとを備えるビデオ復号デバイスを提供する。
【００１１】
追加の態様では、本開示は、符号化ビデオデータのカレントユニットの開始を決定することと、カレントユニットの少なくとも一部分を復号することと、カレントユニット中の復号エラーを検出することと、復号エラーが検出された場合、符号化ビデオデータの次の利用可能なユニットの開始を決定することと、次の利用可能なユニットの開始に基づいて破損データセグメントの終了を決定することと、カレントユニットの開始と破損データセグメントの終了とに基づいて破損データセグメントを隠蔽することとを、１つ又は複数のプロセッサに行わせる命令を備えるコンピュータ可読媒体を提供する。
【００１２】
本開示の１つ又は複数の態様の詳細について添付の図面及び以下の説明において述べる。本開示の他の特徴、目的、及び利点は、説明及び図面、並びに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１３】
【図１】本開示で説明するエラー処理及び隠蔽技法を実行するビデオ符号化及び復号システムを示すブロック図。
【図２】本開示で説明するエラー処理及び隠蔽技法を実行するビデオデコーダの一例を示すブロック図。
【図３】例示的なエラー処理及び隠蔽モジュールを示すブロック図。
【図４】連続エラー処理及び隠蔽技法を実行する際のビデオデコーダの例示的な動作を示すフローチャート。
【図５】フレーム内の復号エラーのためのエラー処理及び隠蔽を実行する際のビデオデコーダの例示的な動作を示すフローチャート。
【図６】フレーム内に復号エラーを備える例示的なビットストリームへのエラー処理及び隠蔽技法の適用を示す図。
【図７】２つ以上のフレームにわたる復号エラーのためのエラー処理及び隠蔽を実行する際のビデオデコーダの例示的な動作を示すフローチャート。
【図８】２つ以上のフレームにわたるエラーを含んでいる例示的なビットストリームへのエラー処理及び隠蔽技法の適用を示す図。
【図９Ａ】複数参照フレームを可能にするビットストリームに対するエラー処理及び隠蔽技法の適用を示す図。
【図９Ｂ】複数参照フレームを可能にするビットストリームに対するエラー処理及び隠蔽技法の適用を示す図。
【図９Ｃ】複数参照フレームを可能にするビットストリームに対するエラー処理及び隠蔽技法の適用を示す図。
【図１０】複数参照フレームを可能にするビットストリーム中の損失したフレームに対してエラー処理及び隠蔽を実行する際のビデオデコーダの例示的な動作を示すフローチャート。
【図１１Ａ】複数参照フレームを可能にする例示的なビットストリームへのエラー処理及び隠蔽技法の適用を示す図。
【図１１Ｂ】複数参照フレームを可能にする例示的なビットストリームへのエラー処理及び隠蔽技法の適用を示す図。
【発明を実施するための形態】
【００１４】
本開示は、ビデオデータを復号するときに発生する復号エラーを効率的に処理するための連続エラー処理技法を対象とする。連続エラー処理技法は、エラー隠蔽をサポートするが、隠蔽すべきデータを識別するためのルックアヘッド（先読み）動作を必要としない。本開示の幾つかの態様では、連続エラー処理技法は、特にモバイルデバイスなどの組込みシステム中に実装されたときに、実装の複雑さを低減し、デコーダにおけるバッファサイズ要件を低減し、効率的な電力消費を促進することができる。更に、幾つかの態様では、連続エラー処理技法は、ビデオの視覚的品質を維持するか、又は向上させることに有効である。
【００１５】
エラー処理では、復号エラーの影響を抑制するために、ビデオ復号エラーが検出されたとき、隠蔽すべきビデオデータを識別する。例えば、ビデオデコーダは、１つ以上のフレーム又はスライスなど、１つ以上のビデオデータユニット内でマクロブロック（ＭＢ）などのビデオデータを隠蔽する。例示のために、本開示は、一般にビデオスライスの形態のビデオユニット及びＭＢの形態のブロックを参照する。しかしながら、本開示は、他のタイプのビデオデータユニット及びブロックに容易に適用可能である。ビデオシーケンスは複数のビデオフレームを含む。各フレームは複数のビデオスライスを含むことができる。各ビデオスライスは、復号プロセスの再同期を可能にする再同期コードワードをもつスライスヘッダを含むことができる。
【００１６】
エラー隠蔽では、ビデオスライス内のブロックの代わりに他のデータを代入する。様々な隠蔽技法のいずれも使用できる。一般に、ビデオデコーダは、データを別のビデオデータユニットからの同様のデータと交換することによって、破損データを隠蔽することができる。一例として、ビデオデコーダは、スライス中のＭＢを異なるフレーム中のスライスからの他のＭＢと交換することによって、そのＭＢを隠蔽することができる。特に、１つのスライス中のＭＢは、ビデオシーケンス中で時間的な隣接フレーム中の対応するスライスから空間的に同一位置にあるＭＢによって交換できる。
【００１７】
本開示では、一般に、許容できる視覚的品質を与えながら、単純で電力効率のよい連続エラー処理技法について説明する。エラー処理は、エラー隠蔽は一般に隠蔽すべきＭＢの番号についての知識を必要とし、エラー処理はそのような情報を与える、という点でエラー隠蔽とは異なる。この情報はエラー範囲と呼ばれる。開示するエラー処理技法とともに使用される特定のエラー隠蔽技法は変更できる。しかしながら、連続エラー処理技法によって生成されるエラー範囲に関して、エラー隠蔽について説明する。
【００１８】
動作中、ビデオデコーダは、復号エラーの正確な位置を知ることができず、復号エラーを即時に検出することができない。従って、２つのスライスヘッダ間に存在するＭＢは、確実に復号されないことがある。視覚的に混乱させる可能性がある、間違って復号されたＭＢの提示を回避するために、ビデオデコーダは、復号エラーが検出されたときに２つのスライスヘッダ間のすべてのＭＢを隠蔽するように設計される。このようにして、ビデオデコーダは、場合によっては破損ＭＢをすべて隠蔽することができる。スライスヘッダは、エラーが１つのスライス内にある場合は連続しているか、又は、エラーが複数のスライスにわたる場合は連続していない。
【００１９】
どのＭＢを、またどれだけ多くのＭＢを隠蔽すべきかを判断するために、デコーダのエラー処理動作は、復号エラーが検出されたカレントスライスの開始と、後のスライスの次の再同期コードワード又はフレームの終了のいずれかとの間にわたるすべてのＭＢを、ビットストリーム中で次に続くものはどれでも、判断する。言い換えれば、エラー処理動作は、カレントスライス中の最初のＭＢと、次のスライス又はビデオフレームの終了のいずれかの直前の最後のＭＢとを識別する。次いで、この情報はエラー隠蔽動作に移動される。
【００２０】
フレーム中のＭＢは番号付けされる。最後のＭＢは、次のスライスの最初のＭＢの直前に発生する。スライスなどのビデオユニットのサイズは可変であるので、後のスライス中の最初のＭＢの番号は容易に知られない。後のスライス中の最初のＭＢを識別するための１つの手法は、ビットストリーム中でルックアヘッドを行い、カレントスライスの復号を完了する前に、次のスライスヘッダに関連する再同期コードワードを探索することである。次のスライスヘッダをプリデコードし、再同期コードワードを識別することによって、ルックアヘッド動作が次のスライスの最初のＭＢ、従って先行するスライスの最後のＭＢを決定することができる。このようにして、エラーが検出された場合、最初のＭＢと最後のＭＢが利用可能である。最初のＭＢと最後のＭＢは、隠蔽のためのデータセグメントを定義する。データセグメントは、１つのスライス又は複数のスライスを含むことができる。
【００２１】
フレームが幾つかのスライスに分割されているとき、デコーダは通常、一度に１つのフレームではなく、一度に１つのスライスを復号する。理想的には、デコーダは、カレントスライスに対して復号する必要があるＭＢの番号を決定するために、次のスライスヘッダを探すためのルックアヘッド動作を適用することができる。復号中にエラーが発見されたとき、エラーハンドラがエラー隠蔽のためにこれらの番号を与えることができるように、デコーダは、破損データセグメントの最初のＭＢと最後のＭＢを知る必要がある。このようにして、デコーダは、破損データセグメント内のＭＢのみを隠蔽し、次のスライスヘッダから復号を再開する。スライス構造の助けをかりて、デコーダは、フレーム全体を損失する代わりに、より多くのＭＢを再構成することができる。
【００２２】
ルックアヘッド手法は、幾つかのソフトウェアベースのデコーダ実装形態では効果的であるが、組込みハードウェアデコーダアーキテクチャに対して大いに望ましくないことがある。多くの場合、ルックアヘッド動作が実質的にハードウェアの複雑さを増大させ、プロセッサ間でより多くの計算と中断とを必要とし、電力効率を劣化させることがある。更に、復号プロセスが、次のスライスに対するルックアヘッドの後、カレントスライスに戻ることができるように、ルックアヘッド動作は過大なバッファリングを必要とすることがある。ルックアヘッド動作は、カレントスライスが復号される前に行われ、従って、復号エラーが検出されたか否かにかかわらず、実行される。従って、各スライスをバッファし、次いで復号しなければならない。ビットストリームがエラーを含んでいない場合でも、このルックアヘッド動作はビットストリーム中の全てのスライスに対して適用され、大部分のスライスに対して浪費される複雑な計算が必要になる。
【００２３】
本開示で説明する連続エラー処理プロセスによれば、ビデオデコーダは、後のスライスの開始を識別するためのルックアヘッドを行う必要がない。代わりに、ビデオデコーダは、後のスライスに進む前に、エラーが検出されるまで、カレントスライスを連続的に復号する。復号の前にビットストリーム中でルックアヘッドを行うのではなく、ビデオデコーダは、エラーが検出されなかった場合、最初に後のスライスの開始を識別することなく、カレントスライス全体を復号することができる。
【００２４】
このようにして、復号される次のスライスのスライスヘッダが得られるまで、ビデオデコーダはエラー隠蔽動作を延期することができる。デコーダは、カレントスライスを復号するより前に破損データの最後のＭＢ番号を知る必要はないが、そのスライス中で復号エラーが発生したかどうかを示すエラーフラグを維持する。従って、実際には、デコーダは、カレントスライスがエラーを含んでいないと最初に仮定することができる。カレントスライスがエラーを有する場合、デコーダに関連するエラーハンドラは、次のスライスヘッダが復号された後、そのエラーを後で処理することができる。この概念は、あらゆるスライスがエラーを有すると仮定するのであろう典型的なルックアヘッド手法とは逆である。
【００２５】
本開示による連続エラー処理プロセスでは、カレントスライスの復号中にエラーを検出すると、ビデオデコーダは、エラーフラグを設定し、例えば、後のビデオスライスの開始において再同期コードワードを探し、識別することによって、後のビデオスライスの開始において復号同期を復旧する。後のスライスは、カレントスライスのすぐ後に続くまさにその次のスライスとすることができる。代替的に、復号エラーが、複数のビデオスライス、又は複数のスライスの部分の損失又は破損を生じた場合、後のスライスは、カレントスライスに続くまさにその次のスライスとすることはできない。幾つかの例では、次の利用可能なスライスは、復号されているカレントスライスと同じフレーム中に存在することさえない。
【００２６】
カレントビデオユニットを復号するか、又は復号エラーを検出すると、ビデオデコーダは、次の利用可能な、即ち、後のスライスに進む。エラーフラグが設定され、エラーが検出されたことがわかった場合、デコーダは、後のスライスの開始に基づいて破損データセグメントの終了を判断する。ただ１つのスライスが破損していた場合でも、破損データセグメントの終了はカレントスライスの終了に対応することがある。代替的に、２つ以上のビデオスライスが破損していた場合、破損データセグメントの終了は後のビデオスライスの終了に対応することがある。
【００２７】
カレントビデオスライスの開始と破損データセグメントの終了とを識別するためにエラー処理を実行すると、ビデオデコーダはエラー隠蔽を実行することができる。例えば、ビデオデコーダは、カレントスライスの開始と破損データセグメントの終了との間のデータを隠蔽する。破損データセグメントは、次の利用可能なスライスヘッダの直前に終了する。破損データを隠蔽することによって、ビデオデコーダは、正しいデータの損失及び／又は誤ったデータの表示を回避することができる。エラーフラグが設定されず、カレントスライス中でエラーが検出されなかったことがわかった場合、ビデオデコーダは単に、カレントスライスに対してエラー隠蔽を実行することなく、次の利用可能なビデオスライスを復号することに進むことができる。
【００２８】
連続エラー処理技法は、本開示の様々な態様によれば、ルックアヘッド動作の必要なしに、復号及びエラー処理をサポートすることができる。ルックアヘッド動作をなくすことにより連続エラー処理が可能になり、バッファスペース、計算及び電力リソースが少なくて済む。例えば、ビットストリームを、ルックアヘッドのための第１のパスと、後続の復号のための後続の第２のパスとをサポートするためにバッファするのではなく、連続的に復号することができる。
【００２９】
一般に、ルックアヘッド動作は、復号エラーがビデオシーケンス中に実際に存在するか否かにかかわらず、エラー処理動作の一部として潜在的な復号エラーの範囲を識別しようと試みる。連続エラー処理技法は、ビデオデータユニットを連続的に復号し、復号エラーが検出された場合、エラー処理を起動する。エラーが検出されなかった場合、ビデオ復号は、エラー処理及びエラー隠蔽を行わずに進み、従って、より効率的な復号プロセスをサポートすることができる。
【００３０】
図１は、本開示で説明するエラー処理及び隠蔽技法を実行するビデオ符号化及び復号システムを示すブロック図である。図１に示すように、システム１０は、通信チャネル１６を介して符号化ビデオデータを宛先装置１４に送信する情報源１２を含む。通信チャネル１６は、無線周波数（ＲＦ）スペクトル又は１つ以上の物理的伝送線路など、ワイヤレス又は有線の任意の通信媒体、又はワイヤレス及び有線の媒体の任意の組合せを備えることができる。通信チャネル１６は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークなど、パケットベースのネットワークの一部を形成することができる。通信チャネル１６は、一般に符号化ビデオデータを情報源１２から宛先装置１４に送信するのに好適な任意の通信媒体、又は様々な通信媒体の集合体を表す。
【００３１】
情報源１２は、宛先装置１４に送信するためのコード化ビデオデータを生成する。情報源１２は、ビデオソース１８とビデオエンコーダ２０と送信機２２とを含むことができる。情報源１２のビデオソース１８は、ビデオカメラ、予め獲得されたビデオを含んでいるビデオアーカイブ、又はビデオコンテンツプロバイダからのビデオフィードなど、ビデオ獲得装置を含むことができる。更なる代替として、ビデオソース１８はソースビデオとしてのコンピュータグラフィックベースのデータ、又はライブビデオ又はアーカイブされたビデオとコンピュータ生成ビデオとの組合せを生成することができる。場合によっては、ビデオ源１８がビデオカメラである場合、情報源１２は、いわゆるカメラ付き携帯電話又はビデオ電話、又は、携帯電話又は他の装置を含む任意の他のタイプのカメラ付きコンピューティング又は通信装置を形成することができる。他の態様では、ビデオ源１８は、情報源１２に結合又は統合される。各場合において、獲得されたビデオ、事前獲得されたビデオ、及び／又はコンピュータ生成ビデオは、送信機２２と通信チャネル１６とを介して情報源１２から宛先装置１４に送信するために、ビデオエンコーダ２０によって符号化される。
【００３２】
ビデオエンコーダ２０はビデオ源１８からビデオデータを受信する。ビデオ源１８から受信したビデオデータは、ビデオフレームなどの一連のビデオデータユニットを備えるビデオシーケンスで構成される。フレームの一部又は全部は、ビデオスライスなどのより小さいビデオデータユニットに分割される。ビデオエンコーダ２０は、ビデオデータを符号化するために、個々のビデオフレーム又はスライス内にピクセルのブロック（本明細書ではビデオブロックと呼ぶ）に対して動作することができる。フレーム又はスライスは、複数のビデオブロックを含んでいることができる。ビデオブロックは、サイズを固定することも変更することもでき、指定の符号化規格に応じてサイズが異なることがある。一般にマクロブロック（ＭＢ）と呼ばれる１６×１６ピクセルビデオブロックをサブブロックに構成することができる。
【００３３】
一例として、International Telecommunication Union Standardization Sector(ITU-T)H.264/MPEG-4、Part10、Advanced Video Coding(AVC)（以下「Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ」規格）は、ルーマコンポーネント（luma components）では１６×１６、８×８又は４×４、及びクロマコンポーネントでは８×８など、様々なブロックサイズのイントラ予測、並びにルーマコンポーネントでは１６×１６、１６×８、８×１６、８×８、８×４、４×８及び４×４、並びにクロマコンポーネントでは対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。一般に、ＭＢ及び様々なサブブロックをビデオブロックであると考えることができる。従って、ＭＢはビデオブロックであると考えられ、区分又は下位区分された場合、ＭＢは、それ自体がビデオブロックのセットを定義すると考えることができる。幾つかの態様では、エラー処理技法は、スライス又はフレーム内のＭＢ番号に基づいてエラー隠蔽を指示することができる。しかしながら、他の態様では、エラー処理技法は、より大きい又はより小さいビデオブロックサイズを処理することができる。
【００３４】
ビデオフレーム又はビデオスライスなどの様々なビデオデータユニットに対する技法について本開示で説明するが、本技法は、ビデオデータの任意の符号化及び復号に等しく適用可能である。更に、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ規格に従って符号化及び復号されるビデオデータに関する技法について本開示で説明する。ただし、例示のためにこの規格に関する技法について説明する。ＭＰＥＧ−１、ＭＰＥＧ−２及びＭＰＥＧ−４におけるMoving Picture Experts Group（ＭＰＥＧ）によって定義された規格、ＩＴＵ−Ｔ  Ｈ．２６３規格、Society of Motion Picture and Television Engineers（ＳＭＰＴＥ）４２１Ｍビデオコーデック規格（一般に「ＶＣ−１」と呼ばれる）、中国のAudio Video Coding Standard Workgroup（一般に「ＡＶＣ」と呼ばれる）によって定義された規格、及びある規格団体によって定義されるか、又はプロプライエタリ規格としてある組織によって開発された任意の他のビデオ符号化規格など、様々な他のビデオ符号化規格のいずれかにそのような技法を容易に適用することができる。
【００３５】
例示のために、限定なしに、連続エラー処理の適用について、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ符号化に関して説明する。ビデオエンコーダ２０は、例えば、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ規格に記載されているように、イントラ符号化及びインター符号化予測方式に従って、各ブロック（例えば、マクロブロック（ＭＢ））を符号化することができる。ビデオブロックのイントラ又はインターベースの予測の後に、ビデオエンコーダ２０は、上記のＨ．２６４／ＭＰＥＧ−４  ＡＶＣ規格に従って、ビデオブロックに対して幾つかの他の動作を実行することができる。これらの追加の動作は、変換係数を生成するための（Ｈ．２６４／ＡＶＣ又は離散コサイン変換ＤＣＴ中に使用される４×４又は８×８整数変換などの）変換動作、量子化動作及びエントロピー符号化動作を含むことができる。符号化データは符号化ビデオデータビットストリームの一部を形成することができる。符号化フレームは１つ以上のスライスを含んでいることができる。各スライスは、復号プロセスを同期及び／又は再同期させるための１つ以上のコードワードを含むことができる、Network Abstraction Layer（ＮＡＬ）ユニットヘッダなどのヘッダによって指定できる。各スライスは、ＭＢ及びより小さいブロックなど、１つ以上のブロックを含むことができる。
【００３６】
スライスは、多種多様なパターンに従って選択されるブロックを含むことができる。例えば、スライスは、フレームの所与の数の行に連続的に構成されたブロックを含むことができる。スライスは、代替的に、一行に連続的に構成された幾つかのブロックを含むことができ、そこで、スライスは、あるランレングスの連続的な行順序付きブロックを定義することによって、ビデオデータに適合することができる。別の例として、スライスは、フレームの所与の数の列に構成されたブロック、又はあるランレングスの連続的に構成された列順序付きブロックを含むことができる。従って、スライスは、固定数又は不変数などの任意の数のブロックを含むことができるが、異なるビデオデータを収容するように適合するために、後続又は前のスライスよりも多い又は少ないブロックを含むことができる。
【００３７】
スライスを符号化した後、ビデオエンコーダ２０は、フレームの各スライスを、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ規格によって定義されたネットワークアブストラクションレイヤ（ＮＡＬ）ユニットなどのユニットとして指定し、上述のように、各ユニットの開始を示すために、対応するスライス又はＨ．２６４／ＭＰＥＧ−４  ＡＶＣによって定義されたＮＡＬユニットヘッダなどの再同期ヘッダを用いて各スライスを符号化することができる。このようにしてビデオデータを符号化することは、頻繁な再同期のための機会を与え、それにより、送信中に損失又は破損したビデオデータの影響を実質的に低減し、損失したビデオデータから生じるエラーの伝搬を低減することによって、復号を改善することができる。
【００３８】
例えば、フレームをスライスに分割することによって、スライス又はその一部分を、チャネル１６を介した送信のために単一のパケット内で符号化することができる。そのスライスがチャネル１６を介した送信中に損失又は破損した場合、フレーム全体がパケット中で符号化された場合に必要になるような、フレーム全体を交換、再構成又は隠蔽する必要なしに、そのスライスを再構成又は交換することができる。その上、復号が過去のデータ、場合によっては破損したデータにもはや依拠しないように、各再同期ヘッダを使用して復号プロセスを再始動することができるので、スライス又は再同期ヘッダはエラーの伝搬をなくすことができる。従って、情報源１２は、送信機２２を介して符号化ビデオデータを複数のパケットとして宛先装置１４に送信することができ、各パケットは、エラーを復号する効率的な処理をサポートするために、別個のスライスを符号化することができる。
【００３９】
受信機２４は、チャネル１６を介して情報源１２から符号化ビデオデータを受信する。宛先装置１４は、受信機２４と、ビデオデコーダ２６と、ディスプレイデバイス２８とを含むことができる。ビデオデコーダ２６は、符号化ビデオデータを復号して、表示装置２８上で再生するために元のビデオデータを得ることができる。表示装置２８は、陰極線管（ＣＲＴ）、液晶表示器（ＬＣＤ）、プラズマ表示器、発光ダイオード（ＬＥＤ）表示器、有機ＬＥＤ表示器、又は別のタイプの表示器など、様々な表示装置のいずれかを備えることができる。
【００４０】
上述のように、チャネル１６を介した符号化ビデオデータの送信中に、符号化ビデオデータの様々なスライス又はＭＢは、例えば、干渉、輻輳、又はチャネル１６に沿って信号伝搬に影響を及ぼす他の異常により損失又は破損することがある。ワイヤレス適用例の場合、損失又は破損したビデオデータは、エラーを起こしやすいネットワークを介したワイヤレス送信により起こることがある。復号エラーは、ビデオブロードキャスト又はビデオ電話などの様々な適用例に悪影響を及ぼすことがある。受信機２４は、損失又は破損したビデオデータを含むことがある符号化ビデオデータを受信する。ビデオデコーダ２６は、一部のフレーム又はスライス、若しくは複数のフレーム又はスライスにわたるこれらの損失又は破損したデータを復号しようと試みる。これらの損失又は破損したデータは、正しいデータの損失及び／又は誤ったデータの提示を生じることがある復号エラーを生成する。
【００４１】
ビデオデコーダ２６は、連続エラー処理動作及びエラー隠蔽動作を実行するように構成できる。エラー処理動作では、ビデオデコーダ２６は、復号エラーを検出し、破損データセグメントと呼ばれる、エラーによって破損されたデータの総範囲を決定する。破損データセグメントは一般に、最初に符号化されたビットストリーム中のデータに対して、幾つかの重大な点で、損失した、破損した、又は誤った受信ビットストリーム中のデータのセグメントを指す。エラーがスライス中に検出された場合、スライス中の全てのＭＢは好ましくは隠蔽される。しかしながら、復号エラーによる影響を受ける最初のＭＢと最後のＭＢとを決定することが必要である。カレントスライスの最初のＭＢは、そのスライスの復号の開始時に容易に決定できる。しかしながら、スライスの可変サイズのために、スライスの最後のＭＢは容易に知られない。その上、復号エラーが複数のスライスにわたる場合、隠蔽すべき破損データセグメント中の最後のＭＢは、後のスライス内に存在することがある。言い換えれば、破損データセグメントは、１つのスライス又は複数のスライスを含むことがある。
【００４２】
いずれの場合も、隠蔽すべき最後のＭＢは、適切に受信される次の利用可能なスライスの最初のＭＢを検出することによって、例えば、スライスに関連するヘッダ中で関連する次の再同期マーカの検出に基づいて識別される。その場合、潜在的な破損データの最後のＭＢは、次の利用可能なスライスの最初のＭＢの直前のＭＢとして識別される。本開示で説明する連続エラー処理技法は、ルックアヘッド動作を必要とすることなく、ＭＢの識別情報を隠蔽することを可能にする。このようにして、連続エラー処理技法は、ビデオデコーダ２６によって実行されるエラー処理及び隠蔽動作の効率を向上させることができる。
【００４３】
一般に、次のスライスをバッファし、ルックアヘッドする代わりに、ビデオデコーダ２６は、最初に符号化ビデオデータのカレントスライスの開始を決定し、カレントスライスを復号し始める。復号エラーが検出されたとき、ビデオデコーダ２６は、受信したビデオデータの次の利用可能なスライスの開始を決定することによって、復号を再同期させることに進むことができる。例えば、復号エラーに応答して、ビデオデコーダ２６は、カレントスライスを復号することを止め、ビットストリームを解析することによって識別できる次の利用可能なスライスを復号することに進むことができる。次の利用可能なスライスはビットストリーム中の後のスライスである。後のスライスの開始に基づいて、ビデオデコーダ２６は、破損データセグメントの終了を決定することができ、その終了は、カレントスライスの終了か、又はカレントスライスと次の利用可能なスライスとの間に存在する別のスライスの終了とすることができる。ビデオデコーダ２６が検出されたエラーを含むスライスを識別したことを考えて、ビデオデコーダ２６は、カレントスライスの開始と次の利用可能なスライスの開始とに基づいて破損データセグメント中のエラーを隠蔽することができる。
【００４４】
例示として、ビデオデコーダ２６は、フレームを受信し、フレームの第１のスライスの開始を決定することができる。スライスがフレーム中の第１のスライスである場合、第１のスライスの開始は、第１のスライスのＭＢ番号、例えば、ＭＢ番号０を含むことができる。次に、ビデオデコーダ２６は、ルックアヘッド手法とは逆に、第１のスライスの最後のＭＢを決定することなく、第２のスライス又はスライスヘッダにアクセスすることさえなく、第１のスライスを復号することができる。このようにして、ビデオデコーダ２６は、通常ならば次のスライスをルックアヘッドし、次いで復号のためにカレントスライスに戻るために必要となるのであろう追加のバッファをなくすことができる。
【００４５】
第１のスライス中にエラーを検出すると、ビデオデコーダ２６は、発生した復号エラーを示すためにエラーフラグを設定することができる。エラーフラグは、それぞれエラー又はエラーがないことを示すように設定されリセットされる単一のビット、又はエラーインジケータの他のタイプ、メッセージ、コマンド、ビットパターン、コードワードなど、様々な形態のいずれかをとることができ、デコーダに関連するメモリ又はレジスタに記憶される。エラーが検出されると、ビデオデコーダ２６は、次の利用可能なスライスの開始を決定することによって、例えば、ビットストリーム中で発見できる次のスライスヘッダを参照することによって、復号プロセスを再同期させることに進むことができる。ここでも、この次の利用可能なスライスは、符号化ビットストリーム中のまさにその次のスライスとすることはできず、代わりに、受信したビットストリーム中の次のスライスである。従って、次の利用可能なスライスは、複数のスライスの損失の結果として、ビットストリーム中の第３、第４又は第５の（又は後の）スライスとなる可能性がある。その上、更に以下で説明するように、次の利用可能なスライスは、第１のスライスと同じフレーム内に含まれることさえない。しかしながら、連続エラー処理技法は、単一のスライス、複数のスライス、更には複数のフレームにわたる復号エラーを効率的に処理するために、これらの例の各々において適用できる。
【００４６】
復号エラーがどれくらい多くのスライス又はフレームにわたるかにかかわらず、ビデオデコーダ２６は、次の利用可能なスライスの開始に基づいて、復号エラーを含む破損データセグメントの終了を決定する。一例として、第１のスライスを復号すると、ビデオデコーダ２６は、第１のスライスの開始をＭＢ番号０として決定し、復号エラーを検出し、次いで、ＭＢ番号Ｎにおいて次の利用可能なスライスの開始を探す。これは、破損データセグメントが１つ以上のスライスにわたっているが、単一のフレーム内に存在すると仮定する。ＭＢ番号Ｎに基づいて、ビデオデコーダ２６は、復号エラーを含む破損データセグメントの終了がＭＢ番号Ｎ−１であると決定することができる。例えば、第２のスライス中の最初のＭＢ番号が５５である場合、破損データセグメント中の最後のＭＢのＭＢ番号は５４となる。この決定を用いて、ビデオデコーダ２６のエラー処理動作は、ＭＢ０からＭＢ５４にわたる破損データセグメントを隠蔽しなければならないことを示す。
【００４７】
ビデオデコーダ２６は、多くの隠蔽技法に従ってエラーを隠蔽することができる。ビデオデコーダ２６は、例えば、ＭＢ番号０〜５４を、前に復号されたフレームなど、隣接フレームからのＭＢ番号０〜５４と交換することによって、エラーを隠蔽することができる。代替的に、ビデオデコーダ２６は、補間、外挿又は動き補償補間など、より精巧な技法を採用して、復号エラーによって潜在的に影響を受けるＭＢを交換することができる。スライスを復号してエラー隠蔽を実行するときに、ビデオデコーダ２６は、必要に応じて、ユーザに提示するために復号されたビデオデータを表示装置２８に転送できる。
【００４８】
ルックアヘッド動作を回避した結果として、ビデオデコーダ２６は、頻繁なルックアヘッド動作のためにビットストリームの部分をバッファすることを必要とすることなく、ビットストリームを連続的に復号することに進むことができる。その上、ビデオデコーダ２６は、実際のエラーの隠蔽をサポートすることが必要なときに、エラーが存在するか否かにかかわらず、ルックアヘッド動作を連続的に実行するのではなく、エラー処理動作を起動することができる。多くの適用例では、エラーは、わずかな割合のビデオスライスのみに発生する。連続的にではなく、オンデマンドでエラー処理を適用し、それにより連続ルックアヘッドのバッファリングを回避することによって、ビデオデコーダ２６は、消費する計算リソース及び電力リソースをより小さくし、実装のための計算の複雑さを低減することができる。ビデオデコーダ２６が、モバイルワイヤレス通信デバイスなどの制限された電力リソースをもつ組込みシステムの一部を形成するとき、電力節約は特に重要である。
【００４９】
システム１０の可能な実装形態の更なる詳細について次に説明する。場合によっては、情報源１２及び宛先装置１４は、ほぼ対称に動作することができる。例えば、情報源１２及び宛先装置１４はそれぞれ、ビデオ符号化及び復号コンポーネントを含むことができる。従って、システム１０は、例えばビデオストリーミング、ビデオブロードキャスト又はビデオ電話のための装置１２と装置１４との間の一方向又は双方向のビデオ送信をサポートすることができる。本明細書で説明する連続エラー処理技法は、例えば、複合コーデック中の符号化コンポーネントと復号コンポーネントの両方を含む装置に適用可能である。更に、幾つかの態様では、エラー処理技法は、復号すべきデータを符号化したエンコーダが存在する同じ装置中に存在するデコーダ内に適用される。この場合、例えば、符号化データは、宛先装置１４などの別の装置に送信されるのではなく、ローカルでアーカイブされ、次いでローカル再生のために復号される。エラー処理技法は、この例では、データ記憶媒体に対するビデオデータ書込み及び読取り動作中に破損したか、又は他のファクタにより破損した符号化ビデオデータに適用される。
【００５０】
前述のように、ビデオエンコーダ２０及びビデオデコーダ２６は、Moving Picture Experts Group（ＭＰＥＧ）−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３又はＨ．２６４／ＭＰＥＧ−４  ＡＶＣなどのビデオ圧縮規格に従って動作することができる。図１には示されていないが、幾つかの態様では、ビデオエンコーダ２０及びビデオデコーダ２６はそれぞれ、オーディオエンコーダ及びデコーダとそれぞれ統合でき、適切なＭＵＸ−ＤＥＭＵＸユニット、又は他のハードウェア及びソフトウェアを含み、共通のデータストリーム又は別個のデータストリーム中のオーディオとビデオの両方の符号化を処理することができる。このようにして、情報源１２及び宛先装置１４は、オーディオデータ及びビデオデータを含むマルチメディアデータに対して動作することができる。適用可能な場合、ＭＵＸ−ＤＥＭＵＸユニットはＩＴＵ  Ｈ．２２３マルチプレクサプロトコル、又はユーザデータグラムプロトコル（ＵＤＰ）など他のプロトコルに準拠することができる。
【００５１】
Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ規格は、合同ビデオチーム（ＪＶＴ）として知られる共同パートナーシップの成果として、ＩＳＯ／ＩＥＣ  ＭＰＥＧとともにＩＴＵ−Ｔ  Video Coding Experts Group（ＶＣＥＧ）によって公式化された。幾つかの態様では、本開示で説明する技法は、一般にＨ．２６４規格に準拠するデバイスに適用することができる。Ｈ．２６４規格は、ＩＴＵ−Ｔ研究グループによる２００５年３月付けのＩＴＵ−Ｔ勧告Ｈ．２６４「Advanced Video Coding for generic audiovisual services」に記載されており、本明細書ではＨ．２６４規格又はＨ．２６４仕様、又はＨ．２６４／ＡＶＣ規格又は仕様と呼ぶ。
【００５２】
場合によっては、ビデオエンコーダ２０及びビデオデコーダ２６は、空間、時間及び／又は信号対雑音比（ＳＮＲ）スケーラビリティのためのスケーラブルビデオ符号化（ＳＶＣ）をサポートするように構成できる。ビデオエンコーダ２０及びビデオデコーダ２６は、幾つかの態様では、ＳＶＣのための微細精度ＳＮＲスケーラビリティ（ＦＧＳ）符号化（fine granularity SNR scalability (FGS) coding）をサポートするように構成できる。ビデオエンコーダ２０及びビデオデコーダ２６は、ベースレイヤ及び１つ以上のスケーラブルエンハンスメントレイヤの符号化、送信及び復号をサポートすることによって様々な程度のスケーラビリティをサポートすることができる。スケーラブルビデオ符号化の場合、ベースレイヤはベースラインレベルの品質でビデオデータを搬送する。１つ以上のエンハンスメントレイヤは追加データを搬送して、より高い空間的レベル、時間的レベル及び／又はＳＮＲレベルをサポートする。
【００５３】
ベースレイヤは、エンハンスメントレイヤの送信よりも信頼できる方法で送信できる。例えば、変調信号の最も信頼できる部分はベースレイヤを送信するために使用でき、変調信号のあまり信頼できない部分はエンハンスメントレイヤを送信するために使用できる。ベースレイヤ及びエンハンスメントレイヤは、物理レイヤ上の階層変調を使用して符号化されるので、同じキャリア又はサブキャリア上で送信できるが、伝送特性が異なることによりパケットエラーレート（ＰＥＲ）が異なることになる。
【００５４】
幾つかの態様では、ビデオブロードキャストに関して、本開示で説明する技法を、Forward Link Only(FLO) Air Interface Specification、即ちTechnical Standard TIA-1099(「FLO Specification」)として２００７年７月に発表された「Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast」を使用して、terrestrial mobile multimedia multicast（ＴＭ３）システムでリアルタイムビデオサービスを配信するための拡張Ｈ．２６４ビデオ符号化に適用することもできる。例えば、チャネル１６は、ＦＬＯ仕様などに従ってワイヤレスビデオ情報をブロードキャストするために使用されるワイヤレス情報チャネルを備えることができる。ＦＬＯ仕様は、ビットストリームシンタックス及びセマンティックス、並びにFLO Air Interfaceに適した復号プロセスを定義する例を含む。
【００５５】
代替的に、ＤＶＢ−Ｈ（digital video broadcast-handheld）、ＩＳＤＢ−Ｔ（integrated services digital broadcast-terrestrial）、又はＤＭＢ（digital media broadcast）などの他の規格に従ってビデオをブロードキャストすることができる。従って、様々な態様では、情報源１２は、モバイルワイヤレス端末、ビデオストリーミングサーバ、又はビデオブロードキャストサーバとすることができる。しかしながら、本開示で説明する技法は、特定のタイプのブロードキャスト、マルチキャスト、又はポイントツーポイントシステムに限定されない。ビデオブロードキャストの場合、情報源１２は、ビデオデータの幾つかのチャネルを、その各々が図１の宛先装置１４と同様とすることができる複数の宛先装置にブロードキャストすることができる。従って、図１には単一の宛先装置１４が示されているが、ビデオブロードキャストの場合、情報源１２は、より典型的には、ビデオコンテンツを多くの宛先装置に同時にブロードキャストすることができる。
【００５６】
送信機２２、通信チャネル１６、及び受信機２４は、イーサネット（登録商標）と電話（例えば、ＰＯＴＳ）とケーブルと電力線と光ファイバシステムとのうちの１つ以上を含む有線又はワイヤレス通信システム、及び／又はワイヤレスシステムによる通信のために構成でき、ワイヤレスシステムは、符号分割多元接続（ＣＤＭＡ又はＣＤＭＡ２０００）通信システム、周波数分割多元接続（ＦＤＭＡ）システム、直交周波数分割多元（ＯＦＤＭ）接続システム、ＧＳＭ（登録商標）（Global System for Mobile Communication）又はＧＰＲＳ（General packet Radio Service）若しくはＥＤＧＥ（拡張データＧＳＭ環境）などの時分割多元接続（ＴＤＭＡ）システム、ＴＥＴＲＡ（Terrestrial Trunked Radio）携帯電話システム、広帯域符号分割多元接続（ＷＣＤＭＡ（登録商標））システム、high data rate 1xEV-DO（First generation Evolution Data Only）又は1xEV-DO Gold Multicastシステム、ＩＥＥＥ８０２．１８システム、ＭｅｄｉａＦＬＯ（登録商標）システム、ＤＭＢシステム、ＤＶＢ−Ｈシステム、若しくは２つ以上のデバイス間のデータ通信のための別の方式のうちの１つ以上を備える。
【００５７】
ビデオエンコーダ２０及びビデオデコーダ２６はそれぞれ、１つ以上のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア又はそれらの任意の組合せを用いて実装できる。ビデオエンコーダ２０及びビデオデコーダ２６の各々を１つ以上のエンコーダ又はデコーダ中に含めることができ、そのいずれかは複合エンコーダ／デコーダ（コーデック）の一部としてそれぞれモバイル装置、加入者装置、ブロードキャスト装置、サーバなどに統合できる。更に、情報源１２及び宛先装置１４はそれぞれ、適用可能なとき、符号化ビデオの送信及び受信のために適切な変調、復調、周波数変換、フィルタ処理、及び増幅器コンポーネントを含み、適用可能な場合、ワイヤレス通信をサポートするために十分な無線周波（ＲＦ）ワイヤレスコンポーネント及びアンテナを含むことができる。しかしながら、説明を簡単にするために、図１では、そのようなコンポーネントは概して、情報源１２の送信機２２及び宛先装置１４の受信機２４であるとして要約されている。
【００５８】
図２は、本開示で説明するエラー処理及び隠蔽技法を実行するビデオデコーダ２６の一例を示すブロック図である。ビデオデコーダ２６は、図１の宛先装置１４のビデオデコーダに対応する。図２の例に示すように、ビデオデコーダ２６は、受信バッファ３０と、復号エンジン３２と、エラー処理モジュール３４と、エラー隠蔽モジュール３６と、再構成（ＲＥＣＯＮ）バッファ３８とを含む。一般に、受信バッファ３０は、ビデオエンコーダ２０によって符号化されたデータなどの符号化ビデオデータを受信し、記憶する。再構成バッファ３８は、復号エンジン３２によって復号され、再構成された復号ビデオデータを記憶する。再構成バッファ３８中の復号ビデオデータは、受信バッファ３０から得られた予測符号化ビデオデータの復号の際に復号エンジン３２によって使用される参照フレームを与えるために使用できる。更に、再構成バッファ３８から得られた復号ビデオデータは、復号ビデオビットストリーム中のエラーを隠蔽するためにエラー隠蔽モジュール３６によって使用できる。再構成バッファ３８中の再構成されたデータは、様々な後処理動作のうちのいずれかに復号ビデオデータとして与えられる。ビデオデコーダ２６によって生成された復号ビデオデータは、任意の適用可能な後処理を受けて、表示装置を介してユーザに提示するために出力バッファに与えられる。復号エンジン３２、エラー処理モジュール３４及びエラー隠蔽モジュール３６は協働して、復号ビデオデータを生成する。復号エンジン３２、エラー処理モジュール３４及びエラー隠蔽モジュール３６は、本開示で説明する連続エラー処理プロセスを適用するように構成される。
【００５９】
図１及び図２に含まれ、示される様々なコンポーネント、ユニット又はモジュール、並びに本開示全体にわたって説明する他のコンポーネントは、ハードウェア及び／又はソフトウェアの任意の好適な組合せによって実現できる。図１及び図２、並びに図３では、様々なコンポーネントは、別個のコンポーネント、ユニット、又はモジュールとして示される。しかしながら、図１〜図３を参照しながら説明する様々なコンポーネントの全て又は幾つかは、共通ハードウェア及び／又はソフトウェア内の組合せユニット又はモジュールに統合できる。従って、コンポーネント、ユニット、又はモジュールとしての特徴の表現は、説明しやすいように特定の機能的特徴を強調するものであり、別々のハードウェア又はソフトウェアコンポーネントによるそのような特徴の実現を必ずしも必要としない。
【００６０】
場合によっては、様々なユニットを、１つ以上のプロセッサによって実行されるプログラマブルプロセスとして実装できる。例えば、本開示における様々な特徴を、離散モジュール、ユニット、エンジン又はコンポーネントとして説明したが、それらの特徴は、集積論理装置中で一緒に実装でき、又は個別であるが、相互運用可能な論理装置として別個に実装できる。場合によっては、様々な特徴は、集積回路チップ又はチップセットなどの集積回路装置として実装できる。ソフトウェアで実装した場合、本技法は、実行されると、１つ以上のプロセッサに本開示で説明する方法のうちの１つ以上を実行させる命令を備えるコンピュータ可読記憶媒体によって少なくとも部分的に実現できる。
【００６１】
図２を更に参照すると、受信バッファ３０は、符号化ビデオデータを記憶するためのダイナミックランダムアクセスメモリなどのメモリモジュールによって実現できる。符号化ビデオデータは、説明したように、１つ以上のフレーム又はスライスなどのビデオデータユニットを備えることができる。フレーム又はスライスは、ＭＢ及びより小さいブロックなどのブロックを含むことができる。例示のために、符号化ビデオデータは複数のフレームを備え、各フレームは１つ以上のスライスを備え、各スライスは複数のＭＢを備えると仮定する。
【００６２】
復号エンジン３２は、受信バッファ３０から得られた符号化ビデオデータビットストリームを解析し、符号化ビデオデータを復号する。復号エンジン３２は、本開示で説明するビデオ符号化規格のうちの１つ、又は他のビデオ符号化規格によって定義された復号技法を実装することができる。しかしながら、例示のために、復号エンジン３２はＨ．２６４／ＭＰＥＧ−４  ＡＶＣ規格による復号技法を実行すると仮定する。復号エンジン３２は、復号すべき符号化情報のフレーム、スライス、ブロック及び他のユニットを識別するために、ビット解析を実行して、着信ビットストリームを解析する。更に、復号エンジン３２は、符号化情報のユニット中のビデオデータを復号し、再構成するために、再構成を実行する。
【００６３】
エラー処理モジュール３４は、本開示で説明する連続エラー処理技法に従って復号エラーを処理するように構成される。図２の例では、エラー処理モジュール３４は、エラー検出とエラー処理の両方を実行することができる。しかしながら、幾つかの実装形態では、別個のエラー検出及びエラー処理モジュールが設けられる。動作中、エラー処理モジュール３４は、復号エンジン３２によって生成された復号ビデオデータ中の復号エラーを検出し、正しいデータの損失又は誤ったデータの表示を回避するために隠蔽すべきＭＢなどのデータの範囲を識別する。
【００６４】
エラー隠蔽モジュール３６は、エラー処理モジュール３４から復号エラー範囲（エラー範囲）を受信する。復号エラー範囲は、どのＭＢをエラー隠蔽モジュール３６によって隠蔽すべきかを指定する。例えば、エラー処理モジュール３４は、ビットストリーム中の第１のスライスの最初のＭＢ０から、次の利用可能なスライスの開始ＭＢ  Ｎより前の最後のＭＢ  Ｎ−１にわたる全てのＭＢをエラー範囲として指定する。エラー隠蔽モジュール３６は、復号エンジン３２によって生成された識別されたＭＢを異なるＭＢと交換するために、様々な隠蔽技法のいずれかに従ってエラーを隠蔽する。例えば、エラー隠蔽モジュール３６は、隠蔽されたビデオデータを復号エンジン３２に与える。エラー隠蔽モジュール３６は、再構成バッファに与えられた復号ビデオデータ中に、隠蔽されたビデオデータを含むことができる。例示として、エラー処理モジュール３４がエラー範囲としてＭＢ０〜ＭＢ５４を指定した場合、エラー隠蔽モジュール３６は、ＭＢ０〜５４を隠蔽して、隠蔽されたＭＢ［０，５４］を復号エンジン３２に与えることになる。
【００６５】
再構成バッファ３８は、受信バッファ３０と同様に、復号エンジン３２によって生成された復号ビデオデータを記憶するダイナミックランダムアクセスメモリなどのメモリモジュールを表す。更に、復号エンジン３２は、受信バッファ２６から得られた符号化ビデオデータを復号する際に使用するための再構成バッファから復号ビデオデータを取り出す。特に、復号エンジン３２は、他のフレームの復号のための参照フレームとして、再構成バッファ３８からの復号ビデオデータを使用する。幾つかの実装形態では、エラー隠蔽モジュール３６は、エラーが検出されたとき、復号されたＭＢを隠蔽するために再構成バッファ３８内の指定されたＭＢを上書きすることができる。代替的に、図２の例の場合のように、復号エンジン３２が復号ＭＢを再構成バッファ３８に転送する前に、エラー隠蔽モジュール３６は、指定されたＭＢを隠蔽するために、復号エンジン３２と連携することがある。例えば、エラー隠蔽モジュール３６は、隠蔽されたＭＢなどの隠蔽されたビデオデータを復号エンジン３２に与える。次いで、復号エンジン３２は、破損データをエラー隠蔽モジュール３６からの隠蔽されたビデオデータと交換し、得られたデータを復号ビデオデータとして再構成バッファ３８に書き込む。
【００６６】
エラーが検出されたとき、復号エンジン３２は、次の利用可能なスライスヘッダのポイントまでのＭＢを復号し続けるか、又はＭＢを復号することを止め、ビットストリーム中の次の利用可能なスライスヘッダを探す。エラーが検出されたときにカレントスライスの復号を終了し、エラー隠蔽をサポートするために復号すべき次のスライスに移動することが、より効率的である。次いで、破損データを隠蔽したときに、復号エンジン３２は、カレントスライスとして次のスライスの復号を再開する。従って、エラー隠蔽モジュール３６は、破損データセグメントを隠蔽するためにＭＢを書き込むか又は上書きするように構成できる。いずれの場合も、再構成バッファ３８に記憶された復号ビデオデータは、復号エンジン３２によって生成された復号ＭＢに基づく復号ビデオデータと、復号エラーを隠蔽するためにエラー隠蔽モジュール３６によって生成又は選択されたＭＢとを含むことができる。
【００６７】
動作中、ビデオデコーダ２６の受信バッファ３０は、最初に図１の受信機２４などの受信機から符号化ビデオデータを受信し、符号化ビデオデータを記憶する。復号エンジン３２は、フレームのスライスなど、受信バッファ３０に記憶された符号化ビデオデータのユニットを取り出すために、受信バッファ３０にアクセスする。スライスを取り出した後だが、スライスを復号するより前に、復号エンジン３２は、例えば、復号すべきカレントスライスの最初のＭＢに関連するＭＢ番号を送信することによって、最初にエラー処理モジュール３４にスライスの開始について通知する。この最初のＭＢはスライス開始ＭＢと呼ばれる。エラー処理モジュール３４は、スライスの開始において最初のＭＢの番号を記憶する。
【００６８】
復号エンジン３２は、スライス中のＭＢを復号することに進み、復号スライスデータを再構成バッファ３８に記憶する。スライスを復号しながら、復号エンジン３２は、復号スライスを再構成バッファ３８に記憶することに加えて、復号ビデオデータをエラー処理モジュール３４に出力することもできる。様々な実装形態では、エラー処理モジュール３４は、再構成バッファ３８に記憶された復号ビデオデータ、復号エンジンから直接与えられた復号ビデオデータ、又は異なるバッファに記憶された復号ビデオデータを分析する。各場合において、エラー処理モジュール３４は、復号エラーが復号ビデオデータ中に存在するかどうかを決定するために、復号ビデオデータを分析するか、又は検査する。従って、エラー検出機能をエラー処理モジュール３４内に設けることができる。代替的に、様々な実装形態では、復号エンジン３２、又はビデオデコーダ２６内の別のコンポーネントが、復号エラー検出機能を含むことがある。
【００６９】
エラー処理モジュール３４は、様々な復号エラーを検出する多くの方法で、復号ビデオデータを分析することができる。例えば、エラー処理モジュール３４は、シンタックスエラー、セマンティックエラー、及び／又は他の符号化エラーを、受信バッファ３０によって受信し復号エンジン３２によって復号した符号化スライス中で検出する。一般に、復号エンジン３２は、例えば、Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣなどの適用可能な符号化技法によって指定されたシンタックスを使用して、ビットストリームを復号する。ビットストリームが、適用可能なシンタックスによって指定された予想されるビットパターンから逸脱した場合、シンタックスエラーを検出する。復号が、範囲外データ、無効な情報、又は適用できないコマンドなど、間違った値又は動作をビデオデコーダ２６中で生成したとき、セマンティックエラーを検出する。エントロピー符号化値が、例えば、コンテキスト適応型可変長符号化（ＣＡＶＬＣ）テーブルなどの適用可能な符号化テーブル中の値又はパターンに一致しなかった場合、符号化エラーを検出する。コンテキスト適応型２値算術符号化（ＣＡＢＡＣ）などの他のタイプのエントロピー符号化を使用することができる。
【００７０】
従って、シンタックスエラー検査を実行するために、エラー処理モジュール３４は、復号ビットストリームのビットパターンを、適用可能なシンタックスによって指定された予想されるビットパターンと比較する。ビットパターンが、予想されるビットパターンと矛盾している場合、エラー処理モジュール３４は復号エラーが検出されたことを示す。同様に、セマンティックエラー検査を実行するために、エラー処理モジュール３４は、値を１つ以上のシンタックス要素に分析して、これらの値が有効であることを確実にする。例えば、エラー処理モジュール３４は、値が他の値と矛盾しないかどうか、現在復号されたスライスと矛盾しないかどうか、及び／又は前に復号されたフレーム、スライス又はブロックと矛盾しないかどうかを決定する。シンタックス要素値が、許容される又は予想される値の範囲内になかった場合、エラー処理モジュール３４は復号エラーの検出を示す。符号化エラーを検出するために、エラー処理モジュール３４は、復号されたコードワードを、ＣＡＶＬＣ又はＣＡＢＡＣテーブルなどの適用可能なエントロピー符号化テーブル中のコードワードのリストと比較する。一致がない場合、エラー処理モジュール３４は復号エラーの検出を示す。
【００７１】
復号エラーを検出すると、エラー処理モジュール３４は、エラーフラグをビデオデコーダ２６に関連するメモリ中に設定し、復号エンジン３２に復号エラーについて通知する。復号エンジン３２は、検出された復号エラーについて通知されたことに応答して、受信バッファ３０に記憶された符号化ビデオデータの復号を再同期させる。具体的には、復号エンジン３２は、カレントスライスを復号することを止め、ビットストリームから、例えば次の識別可能なスライス又はＮＡＬユニットヘッダによって識別される次の利用可能なスライスを取り出すことに進む。次のスライスは、ビットストリームを解析することによって復号エンジン３２が見分けることができる次のスライスであるという点で、次の「利用可能な」スライスと呼ばれる。復号エラーは、ＮＡＬヘッダ及び／又はフレームヘッダにわたって伝搬していることがあり、それによって、スライス間の区別、更にはフレーム間の区別を、不可能でないとしても困難にする。言い換えれば、復号エラーにより、単一のスライス中にＭＢの損失又は破損を生じることがあり、その場合、次の再同期ポイントは、受信したビットストリーム又は複数のスライス中のまさにその次のスライスに関連することがあり、ビットストリーム中の後のスライスに関連することがある。従って、次の利用可能なスライスは、例えば、識別可能なＮＡＬユニットヘッダによって容易に見分けることができる、ビットストリーム中の次のスライスを指すことがある。ＮＡＬヘッダは、破損しておらず、容易に見分けることができる点で、「識別可能」と呼ばれる。
【００７２】
復号エラーが検出されたとき、復号エンジン３２は、上述のように、カレントスライスの残りを復号することなく、ビットストリーム中の次の利用可能な再同期ポイントに進むことがある。代替的に、エラーフラグが設定されていても、復号エンジン３２は、ビットストリームを復号し続けることがある。次の利用可能なスライスが得られたとき、次いで、復号エンジン３２はエラー処理及びエラー隠蔽を実行する。復号エンジン３２は、エラーフラグが設定された後、ビットストリームを復号し続けるように構成できるが、通常、カレントスライスを復号するのを止め、代わりにエラーが検出された前のスライスのエラー処理及びエラー隠蔽をサポートするために次のスライスに進むことがより効率的であろう。破損データセグメントは、復号された場合でも、エラー隠蔽モジュール３６によって隠蔽されることになる。しかしながら、エラーが検出されたときに復号動作を中止し、次の利用可能なスライスに進むことは、より効率的である。復号エラーが検出されなかったとき、復号エンジン３２はカレントスライスの残りを復号することに進む。いずれの場合も、復号エンジン３２は、次の利用可能なスライスの開始を示す次の再同期ポイントに到達したとき、そのスライスの最初のＭＢを決定する。更に、復号エンジン３２は、エラー処理モジュール３４が、前のビデオスライス中の復号エラーの検出を示すためにエラーフラグを設定したかどうかを決定する。
【００７３】
エラーフラグが設定されていない場合、復号エンジン３２はスライスの最初のＭＢを記憶し、そのスライスを復号することに進む。この時点で、連続エラー処理手法の場合、前のスライスは、ルックアヘッド手法の場合のように第２のパス上で復号するためにバッファされるのではなく、すでに復号されている。ただし、エラーフラグが設定されている場合、復号エンジン３２はエラー処理及びエラー隠蔽を起動する。特に、次の利用可能なスライスに到着したときに、復号エンジン３２では、符号化エラーの検出の後にそのスライスに進んだのか、又は符号化エラーがない場合で前のスライスの復号を完了したときなのかを識別しなくてよい。むしろ、次の利用可能なスライスに到着すると、復号エンジン３２及びエラー処理モジュール３４は、エラーフラグを検査して、通常の過程における連続復号を単に続けるべきか、又はエラー処理及びエラー隠蔽を適用すべきかを決定する。言い換えれば、エラー処理モジュール３４は、次の利用可能なスライスに到着したのが、通常のエラーのない復号の結果としてなのか、又はエラー処理を必要とするエラーの検出の結果としてなのかを知らなくてよい。
【００７４】
再び、エラーが検出されたとき、復号エンジン３２はカレントスライスを復号することを止め、次の利用可能なスライスを取り出す。次いで、復号エンジン３２は、例えばスライスの最初のＭＢに対応するＭＢ番号を転送することによって、エラー処理モジュール３４にその（次の利用可能な）スライスの開始について通知する。エラー処理モジュール３４は、このＭＢ番号を受信すると、エラーフラグが設定されているかどうかを検査することによって、復号エラーが前に発生したかどうかを決定する。フラグが設定されていない場合、エラー処理モジュール３４は、例えば復号エラーが新たに取り出された次の利用可能なスライス中に検出された場合に後で使用するために、上述のように、この最初のＭＢ番号を記憶する。
【００７５】
ただし、エラーフラグが設定されている場合、エラー処理モジュール３４はエラーが発生したカレントスライスの終了、例えば最後のＭＢを決定する。例えば、エラー処理モジュール３４は、次の利用可能なスライスの最初のＭＢに対応するＭＢ番号から１を減算する。復号エラーが複数のスライス及び更に複数のフレームにわたるとき、破損データセグメントは、同様に１つ以上のスライス、及び／又は１つ以上のフレームにわたる。連続エラー処理技法は、以下でより詳細に説明するように、１つ以上のスライス、又は１つ以上のフレームにわたる復号エラーを処理することができる。
【００７６】
エラーが発生した破損データセグメントの開始及び終了を決定した後、エラー処理モジュール３４は、復号エラー範囲（エラー範囲）と呼ばれるこの情報をエラー隠蔽モジュール３６に転送する。この復号エラー範囲に基づいて、エラー隠蔽モジュール３６は、再構成バッファ３８に記憶された復号ビデオデータを、再構成バッファ３８に記憶されることがある、前に復号されたビデオデータと交換することによって、復号エラー範囲によって示される復号エラーを隠蔽する。代替的に、エラー隠蔽モジュール３６は、隠蔽されたビデオデータを復号エンジン３２に与え、次いで、復号エンジン３２は、復号データと隠蔽されたデータとの再構成バッファ３８への転送を処理することがある。幾つかの例では、エラー隠蔽モジュール３６は、復号エラーを隠蔽する際に使用するために、前に復号されたビデオデータ、例えば前に復号されたＭＢ、スライス又はフレームをキャッシュに格納するか又は局所的に記憶する。代替として、破損データを隠蔽するために、エラー隠蔽モジュール３６は、例えば、図２の例に示すように、再構成バッファ３８から予め復号されたビデオデータを得ることがある。
【００７７】
エラー隠蔽モジュール３６は、前に復号されたビデオデータにアクセスする方法にかかわらず、上記に記載された隠蔽技法のうちの１つに従って、復号エラー範囲に対応する復号ビデオデータを前に復号されたビデオデータと交換する。エラー処理モジュール３４によって識別される復号エラー範囲がＭＢ０からＭＢ５４にわたる場合、例えば、エラー隠蔽モジュール３６は、ＭＢ０からＭＢ５４までの全てのＭＢを隠蔽する。このようにして、全ての起こりうる破損ＭＢを隠蔽することを確実にするために、スライス全体と同様のものを隠蔽する。
【００７８】
エラー隠蔽モジュール３６は、隠蔽されたビデオデータを再構成バッファ３８に直接書き込む。代替的に、図２に示すように、エラー隠蔽モジュール３６は、隠蔽されたビデオデータを復号エンジン３２に与えることがある。次いで、復号エンジン３２は、適切に復号されたＭＢと、エラー隠蔽モジュール３６からの隠蔽されたビデオデータによって表される隠蔽されたＭＢとを再構成バッファ３８に書き込む。概して本開示で説明するように、エラー隠蔽モジュール３６はピクセル領域中のエラー隠蔽を適用することができる。幾つかの実装形態では、エラー隠蔽モジュール３６は、エラー隠蔽のための圧縮領域プロセスを適用することができる。例えば、エラー隠蔽モジュール３６は、破損ＭＢを隠蔽するために符号化モード（例えば、ＳＫＩＰモード）を指定するように構成される。従って、本開示で説明する技法は、ピクセル領域隠蔽プロセス又は圧縮領域隠蔽プロセスを含む多種多様なエラー隠蔽プロセスとともに使用される。
【００７９】
破損ＭＢが隠蔽されると、ビデオデコーダ２６は、復号ビデオデータに適用される、例えばシャープ化、スケーリングなどの任意の後処理動作を受けた復号ビデオデータを、上述のように、再構成バッファ３８を介して表示又は再生のための表示装置２８に転送する。次いで、復号エンジン３２は、上述した同じエラー処理動作を適用しながら、次の利用可能なスライスを復号することに進む。従って、このエラー処理プロセスは、復号エンジン３２がビットストリーム中の後続のスライス及びフレームを通過する際に連続的に適用される。特に、様々な態様では、エラー処理プロセスは、ルックアヘッド動作の必要なしに、連続復号を可能にする。このようにして、ビデオデコーダ２６は、宛先装置１４内の計算効率及び電力節約を促進することができる。
【００８０】
図３は、図２の例示的なエラー処理モジュール３４及びエラー隠蔽モジュール３６をより詳細に示すブロック図である。図３の例は、例示のために、エラー処理モジュール３４及びエラー隠蔽モジュール３６の様々な動作態様を強調するために与えたものであり、本開示で広く説明する連続エラー処理技法を制限するものと考えるべきではない。図３の例では、エラー処理モジュール３４は、エラー検出モジュール４０とエラーマッピングモジュール４２とを含むことができる。エラー検出モジュール４０は、シンタックスルール４４Ａ、セマンティックルール４４Ｂ及びエントロピールール４４Ｃなどの適用可能なルールに従って、シンタックスエラー検査、セマンティックエラー検査、及び符号化（例えば、ＣＡＶＬＣ又はＣＡＢＡＣ）エラー検査などの上述のエラー検査を実行する。エラー検出モジュール４０は、エラーステータスインジケータの一例を表すエラーフラグ４６を更に含み、維持する。エラーマッピングモジュール４２は、破損データセグメントを定義するためにマッピング４８を維持する。エラー隠蔽モジュール４２は、上述の隠蔽技法のうちの１つ以上を実行する隠蔽エンジン５０と、破損データを隠蔽する際に隠蔽エンジン５０が使用するビデオデータを受信するビデオバッファ５１とを含むことができる。
【００８１】
一例として、受信バッファ３０に記憶された符号化ビデオデータを復号するより前に、復号エンジン３２は、復号すべきカレントスライスのために、スライスの開始指示（「スライス開始」）をエラー処理モジュール３４に送信する。エラー検出モジュール４０及びエラー処理モジュール４２は、スライス開始を使用して、復号動作中に検出されたエラーを処理することができる。スライスの開始は、１つ以上のスライス又は部分スライスを含む破損データのより大きいセグメントの開始とすることができるので、スライス開始は、図３に示すように、より一般的には「セグメント開始」と呼ばれる。
【００８２】
ここでも、モジュール及びユニットは、エラー処理モジュール３４の様々な機能的態様を強調するために図３及び他の図に示されている。従って、エラー検出モジュール４０、エラーマッピングモジュール４２、又は他のモジュールの間の正確な構造的及び機能的関係並びに相互作用は、変更されることがある。エラーマッピングモジュール４２は、上述のように、復号すべきカレントスライスの最初のＭＢを備えるセグメント開始を記憶する。ＭＢ番号は、復号ビットストリーム中のシンタックス要素から決定できる。例えば、エラーマッピングモジュール４２は、最初のＭＢを開始ＭＢ４８Ａとして記憶する。カレントスライスがフレーム中の最初のスライスである場合、最初のＭＢはＭＢ０とすることができる。カレントスライスがフレーム中の後のスライスである場合、最初のＭＢはより大きい番号を有する。
【００８３】
セグメント開始を受信すると、エラー検出モジュール４０は、シンタックス要素を有する復号ＭＢを備える、復号エンジン３２によって生成された復号ビデオデータを分析する。エラー検出モジュール４０は、復号されたシンタックス要素に対して、シンタックスエラー検査、セマンティックエラー検査、及びエントロピー符号化エラー検査を実行する。特に、エラー検出モジュール４０は、復号ビデオデータ中に復号エラーがあるかどうかを決定するために、シンタックスルール４４Ａ、セマンティックルール４４Ｂ及びエントロピールール４４Ｃを適用する。これらのエラー検査の結果に基づいて、エラー検出モジュール４０は、エラー状態を記憶することが可能なエラーフラグ４６又は任意の他のインジケータの値を制御する。例示のために、エラー検出モジュール４０が復号エラーを検出したと仮定すると、エラー検出モジュール４０は、エラーフラグ４６を設定し、エラーの指示（図３の「復号エラー」）をビデオデコーダ２６の復号エンジン３２に転送する。
【００８４】
エラー指示に応答して、復号エンジン３２は、例えば、カレントスライスの復号を止め、ビットストリーム中の次の利用可能なスライスを探すことによって、復号を中止し、復号を再同期させる。言い換えれば、復号エラーが検出された場合、復号エンジン３２はカレントスライスの復号を止め、次の利用可能なスライスを復号することに進むことができる。ここでも、次の利用可能なスライスは、次のスライスのＮＡＬユニットヘッダ中の再同期コードワードによって識別される。代替的に、エラー指示がない場合、復号エンジン３２は、スライスの終了に達し、次の利用可能なスライスに遭遇するまで、カレントスライスを復号し続けることがある。いずれの場合も、次の利用可能なスライスに達すると、復号エンジン３２は、別のセグメント開始指示をエラー検出モジュール４０に転送する。エラー検出モジュール４０は、新しいセグメント開始、例えば、スライス開始を受信し、エラーフラグ４６の状態に基づいて、復号エラーが前に復号されたスライス中に存在したかどうかを決定する。
【００８５】
エラーフラグ４６の状態に基づいて、エラー検出モジュール４０は、復号ビデオを分析し続けるか、又はエラーマッピングモジュール４２を起動することができる。例えば、エラーフラグ４６が設定されず、エラーが検出されなかったことがわかった場合、エラー検出モジュール４０は、新たに受信したスライスに対してエラー検出を実行することに進む。しかしながら、エラーフラグ４６が設定され、エラーが検出されたことがわかった場合、エラー範囲、即ち、隠蔽されなければならない破損データセグメントの範囲を決定するために、エラーマッピングモジュール４２がエラー検出モジュール４０によって起動される。この場合、エラーマッピングモジュール４２は、新たに受信したスライス中の最初のＭＢの番号を決定する。更に、エラーマッピングモジュール４２は、復号エラーが、新たに受信したスライス中の最初のＭＢ番号に基づいて検出された破損データセグメント中の最後のＭＢ又は終了ＭＢを決定する。
【００８６】
例えば、終了ＭＢ番号を決定するために、エラーマッピングモジュール４２は、新しいスライス開始のすぐ前に先行する最後のＭＢの番号を得るために、新たに受信したスライスの最初のＭＢ番号から１を減算する。図３の例で示すように、終了ＭＢは、終了ＭＢ４８Ｂとして記憶される。例えば、新たに受信したスライス中の最初のＭＢが５５である場合、破損データ中の最後のＭＢは５５−１＝５４となる。従って、エラーマッピングモジュール４２は、エラー範囲を、開始ＭＢ４８Ａと終了ＭＢ４８Ｂとの間にわたり、開始ＭＢ４８Ａと終了ＭＢ４８Ｂとを含むものとして、例えば、上記の例ではＭＢ０〜ＭＢ５４として定義する。エラー範囲は、復号ビデオデータに対するエラーの悪影響をなくすか又は低減するために隠蔽すべきＭＢを示す。
【００８７】
以下で説明するように、エラー検出モジュール４０はまた、幾つかの態様では、開始ＭＢ番号４８Ａと終了ＭＢ番号４８Ｂとに対応するＭＢに関連するシンタックス要素の値から、開始フレーム番号と終了フレーム番号とを決定する。即ち、エラー検出モジュール４０は、開始ＭＢ番号４８Ａに対応する、受信した復号ビデオデータ中に表されるＭＢを検査し、そのＭＢが関連する開始フレーム番号を決定する。エラー検出モジュール４０は、その開始フレーム番号をエラーマッピングモジュール４２に転送し、エラーマッピングモジュール４２は、開始フレーム番号を開始フレーム４８Ｃとして記憶する。エラー検出モジュール４０はまた、終了ＭＢ番号４８Ｂに対応する、受信した復号ビデオデータ中に表されるＭＢを検査し、そのＭＢが関連する終了フレーム番号を決定する。エラー検出モジュール４０は、その終了フレーム番号をエラーマッピングモジュール４２に転送し、エラーマッピングモジュール４２は、終了フレーム番号を終了フレーム４８Ｄとして記憶する。
【００８８】
上述のように、エラーマッピングモジュール４２は、マッピング４８からエラー範囲又は他のエラー記述を生成し、そのエラー範囲をエラー隠蔽モジュール３６にパスすることができる。エラー範囲は、幾つかの実装形態では、破損データセグメントの開始ＭＢ４８Ａ及び終了ＭＢ４８Ｂだけでなく、開始フレーム４８Ｃ及び終了フレーム４８Ｄをも含むことができる。例えば、エラーマッピングモジュール４２は、復号エラー（及び得られた破損データセグメント）が、開始フレーム４８Ｃ及び終了フレーム４８Ｄを比較することによって単一のフレーム内にあるかどうか、又は、復号エラーが２つ以上のフレームにわたるかどうかを決定する。ＭＢ番号付けは、各フレームの開始時に通常０にリセットされる。従って、復号エラーが単一のフレームよりも多くのフレームに影響を及ぼすとき、ＭＢ番号を提示するのみのエラー範囲を与えることは十分ではないことがある。例えば、開始ＭＢが第１のフレーム中のＭＢ７４である場合、終了ＭＢは第２のフレーム中のＭＢ５６とすることができる。従って、隠蔽目的のためのエラー範囲を正確に解決するために、フレーム番号並びにＭＢ番号を追跡することが必要である。
【００８９】
一般に、開始フレーム４８Ｃと終了フレーム４８Ｄとによって表される２つのフレーム番号が等しい場合、エラーマッピングモジュール４２は、復号エラーが、開始フレーム４８Ｃと終了フレーム４８Ｄの両方によって識別されるフレーム番号に対応する単一のフレーム内にあると決定する。しかしながら、開始フレーム番号４８Ｃと終了フレーム番号４８Ｄとが等しくない場合、エラーマッピングモジュール４２は、復号エラーが２つ以上のフレームにわたるように、エラー範囲を決定する。従って、エラーマッピングモジュール４２は、開始ＭＢ番号４８Ａ及び終了ＭＢ番号４８Ｂ、並びに開始フレーム番号４８Ｃ及び終了フレーム番号４８Ｄを使用して隠蔽すべきＭＢの範囲を識別するように構成できる。
【００９０】
エラー隠蔽モジュール３６は、エラー範囲を受信し、隠蔽エンジン５０を採用してエラー範囲によって識別されたＭＢを隠蔽する。エラー隠蔽エンジン５０は、エラー範囲によって識別されたそれらのＭＢを隠蔽する際に使用するために、前に復号されたフレームの前に復号されたＭＢを取り出し、ビデオバッファ５１に記憶する（図３の「バッファされたビデオデータ」）。上述のように、幾つかの態様では、前に復号されたＭＢは、１つ以上の隣接フレームから得られ、隠蔽すべきＭＢと空間的にコロケートされる。前に復号されたＭＢは、交換フレームデータを形成するために、エラー範囲中の潜在的に破損したＭＢを交換し、それによって隠蔽する。幾つかの実装形態では、エラー隠蔽モジュール３６は、再構成バッファ３８からの復号ビデオデータとして、前に復号されたＭＢを得る。
【００９１】
隠蔽エンジン５０は、エラー範囲によって識別された復号エラーを隠蔽するために、様々な他の隠蔽技法のいずれかを実装することができる。エラー隠蔽エンジン５０は、隠蔽されたビデオデータを交換データとしてビデオ復号エンジン３２に与える。ビデオ復号エンジン３２は、適切に復号されたビデオデータと隠蔽されたビデオデータとを再構成バッファ３８に与える。代替的に、隠蔽されたフレームデータを使用して、復号エンジン３２によって生成され、再構成バッファ３８に記憶された復号ビデオデータの一部に書き込むか、又はその一部を上書きする。いずれの場合も、再構成バッファ３８は、表示装置を駆動する際に使用するための復号ビデオデータを与える。
【００９２】
図４は、連続エラー処理及び隠蔽技法を実行する際の、ビデオデコーダ２６などのビデオデコーダの例示的な動作を示すフローチャートである。上述のように、ビデオデコーダ２６は、図１の受信機２４などの受信機から符号化ビデオデータを受信する（５２）。ビデオデコーダ２６は、符号化ビデオデータを受信バッファ３０中にバッファする。復号エンジン３２は、符号化ビデオデータのカレントスライスの開始を決定し（５４）、スライスを復号する（５６）。後述するように、エラーが検出された場合、エラー処理モジュール３４がカレントスライスの開始を使用して、破損データセグメントのためのエラー範囲を識別する。エラー処理モジュール３４が復号エラーを検出せず（５８）、復号がカレントスライスの終了に達しなかった（５９）場合、復号エンジン３２はスライスを復号し続ける（５６）。
【００９３】
復号エラーの検出なしに、スライスの終了に達した（５９）場合、復号エンジン３２は、追加の符号化データのうちの次の利用可能なデータを受信する（５２）ことに進み、そのスライスに対して動作（５４）、（５６）及び（５８）を繰り返す。復号エラーが検出されなかった（５８）とき、ビデオデコーダ２６は、ビットストリーム中の連続するスライスを復号し続ける。しかしながら、復号エラーが検出された（５８）とき、エラー処理モジュール３４は、符号化ビデオデータの次の利用可能なスライスの開始を決定し（６０）、次の利用可能なスライスの開始に基づいて、（カレントスライスを含む）破損データセグメントの終了を決定する（６２）。
【００９４】
ここでも、次の利用可能なスライスは、ビットストリーム中で識別できる次の利用可能なセグメントである。従って、破損データが単一のスライスのみに影響を及ぼす場合、次の利用可能なスライスは、復号エラーが検出されたスライスに続くまさにその次のスライスとすることができる。一方、エラーがデータの２つ以上のスライスの損失又は破損を生じた場合、次の利用可能なスライスは、当初符号化されたビットストリーム中でカレントスライスのすぐ後に続いていなかった後のスライスとすることができる。
【００９５】
上述のように、次の利用可能なスライスの開始に基づいて（６０）、エラー処理モジュール３４は、破損データセグメントに関連する破損データセグメントの終了が次の利用可能なスライス中の最初のＭＢ番号から１を減算することによって得られると決定する。エラー処理モジュール３４は、隠蔽のためのエラー範囲を定義するために破損データセグメントの開始及び終了をエラー隠蔽モジュール３６に与える。データ損失の範囲に応じて、エラー範囲は、元のビットストリームの単一のスライス又は複数のスライスをカバーすることがある。
【００９６】
エラー範囲を用いて、エラー隠蔽モジュール３４は、破損データセグメントの開始から破損データセグメントの終了にわたるビデオデータを隠蔽する（６４）。破損データセグメントを隠蔽すると、ビデオデコーダ２６は、次の利用可能なスライスに関連する符号化ビデオデータを受信する（５２）ことに進むので、次の利用可能なスライスを、即ち、新しいカレントスライスとして復号する。この場合、ビデオデコーダ２６がビデオビットストリームに沿って進む際に、次の利用可能なスライスは、次に図４に示すプロセスのためのカレントスライスになり、図４で概説する様々な動作を繰り返し、連続的な復号、エラー処理及び隠蔽をサポートする。
【００９７】
上述のように、エラー処理モジュール３４は、復号エラーが、シンタックスエラー検査に基づいて発生したのか、セマンティックエラー検査に基づいて発生したのか、又はエントロピー符号化エラー検査に基づいて発生したのかを決定する（５８）。エラー処理モジュール３４がエラーを検出した場合、エラー処理モジュール３４は、復号エンジン３２にエラーについて通知する。エラー指示に応答して、ビデオデコーダ３２は、受信バッファ３０に記憶された符号化ビデオデータの次の利用可能なスライスの開始を決定する（６０）ために、ビットストリームを解析することによって、符号化ビデオデータの復号を再同期させる。特に、復号エンジン３２は、復号エラーが発生したときには再同期のためのビットストリームを解析することによって、又はエラーが検出されなかったときにはカレントスライスを復号する通常の過程でのいずれかで、次の利用可能なスライスに到着する。エラーが検出された場合、エラー処理モジュール３４はエラー範囲、例えば、第１のセグメントの開始及び終了を決定し、エラー範囲をエラー隠蔽モジュール３６に与える。
【００９８】
図５は、フレーム内の復号エラーのためのエラー処理及び隠蔽を実行する際の、ビデオデコーダ２６などのビデオデコーダの例示的な動作を示すフローチャートである。Ｈ．２６４／ＭＰＥＧ−４  ＡＶＣ規格に従って編成されたビットストリームに関して本技法について以下で説明するが、符号化ビデオデータは複数のフレームを備え、各フレームは複数のスライスを備え、各スライスは複数の符号化ＭＢを備える。スライスはＮＡＬユニットヘッダによって識別できる。Ｈ．２６４規格に関して説明するが、本技法は、やはりこの例示的な態様に厳密に限定されるべきではないが、ビデオデータの符号化のための他の技法に広く適用可能である。
【００９９】
図５は、概して図４に準拠するが、幾つかの追加の詳細を示す。図５の例では、ビデオデコーダ２６は、受信バッファ３０を介して符号化ビデオフレームデータを受信する（６６）。ビデオデコーダ２６の復号エンジン３２は、第１のフレームの第１のスライスに最初にアクセスするときに、第１のスライスに関連する開始ＭＢ番号を決定する（６８）。第１のスライスは、代替的に、復号エンジン３２によって復号されるカレントスライスと呼ばれる。復号エンジン３２がカレントスライスを復号する（７０）一方、エラー処理モジュール３４は、例えば、シンタックスエラー、セマンティックエラー又はエントロピー符号化エラーなどの復号エラーを検出する（７２）。復号エラーを検出した（７２）場合、エラー処理モジュール３４はエラーフラグを設定する（７４）。
【０１００】
復号エラーを検出せず（７２）、復号エンジン３２がカレントスライスの終了にまだ達しなかった（７６）場合、復号エンジン３２はカレントスライスを復号し続ける（７０）。復号エラーが検出された（７２）場合、又はカレントスライスの終了に達した（７６）場合、エラー処理モジュール３４は、次の利用可能なスライスの開始ＭＢ番号を決定する（７８）。エラーが検出されたとき、復号エンジン３２は、復号し続けるか、又はカレントスライスを復号するのを止め、次の利用可能なスライスの位置を特定するためにビットストリームを解析する。エラーが検出されなかった（７２）とき、復号エンジン３２は、カレントスライスの復号を完了した後に次の利用可能なスライスに達し、その場合、スライスの終了に達する（７６）。従って、復号エンジン３２は、前のスライスの正常な復号時に、又は前のスライス中の復号エラーの検出に続く再同期の一部としてのいずれかで、次の利用可能なスライスに到着する。
【０１０１】
エラーフラグが設定されていない（８０）場合、復号エンジン３２は、次の利用可能なスライスをカレントスライスとして復号する（７０）ことに進む。従って、次の利用可能なスライスは、図５で概説する動作のためのカレントスライスになり、復号プロセスが繰り返される。しかしながら、エラーフラグが設定されている（８０）場合、エラー処理モジュール３４は、次の利用可能なスライスの開始ＭＢ番号に基づいて、カレントスライスを含む破損データセグメントの終了ＭＢ番号を決定する（８２）。例えば、エラー処理モジュール３４は、次の利用可能なスライスの開始ＭＢ番号から１を減算して、第１のスライスを含むセグメントの終了ＭＢ番号を決定する（８２）。
【０１０２】
１つのスライスが破損していた場合、終了ＭＢ番号はカレントスライスの終了ＭＢ番号とすることができる。しかしながら、２つ以上のスライスが破損していた場合、終了ＭＢ番号は後のスライスの終了ＭＢ番号とすることができる。いずれにしても、カレントスライスの開始ＭＢ番号と終了ＭＢ番号とを使用して、エラー処理モジュール３４は、エラー隠蔽モジュール３６が使用するエラー範囲を定義する。エラー隠蔽モジュール３６は、カレントスライスの開始ＭＢ番号から破損データセグメントの終了ＭＢ番号までの全てのＭＢを隠蔽することによって、復号エラーを隠蔽する（８４）ことに進む。エラー隠蔽を完了する（８４）と、ビデオデコーダ２６は、復号すべき次のスライスのためのエラーフラグをリセットする、即ち、復号すべき次のスライスにとって適切ではない、長く記憶された状態をクリアする。更に、ビデオデコーダ２６は、カレントスライスとして次の利用可能なスライスを復号する（７０）ことに進み、図５で概説する様々なエラー処理動作を繰り返す。
【０１０３】
図６は、フレーム内に復号エラーを備える例示的なビットストリーム８６へのエラー処理及び隠蔽技法の適用を示す図である。ビットストリーム８６は、一般にＨ．２６４／ＭＰＥＧ−４  ＡＶＣ規格に従ってフォーマッティングできる。図６の例では、復号エラーは、ビットストリームの中央に発生し、１つのＮＡＬユニットヘッダを含んでいる。エラー隠蔽のためのＭＢ０〜５４を識別するために、連続エラー処理技法を図６のシナリオに適用することができる。図６は、２つのフレーム８８Ａ、８８Ｂ（「フレーム８８」）を示し、フレーム８８Ａは複数のＮＡＬヘッダ９０Ａ〜９０Ｄを備え、フレーム８８Ｂは複数のＮＡＬヘッダ９０Ｅ〜９０Ｈを備える。ＮＡＬヘッダ９０Ａと９０Ｅとは、それぞれのフレーム８８の開始を示すことを表すために、それぞれ影付きで示される。ＮＡＬヘッダ９０Ａ〜９０Ｈ（「ＮＡＬヘッダ９０」）の各々は、スライスを含んでいるＮＡＬユニットの開始を示す。各フレーム８８は、１つ以上のスライス、及びより可能性がある複数のスライスを含むことができる。各ＮＡＬユニットは、ＮＡＬヘッダ９０の後続のヘッダの開始時に終了する。
【０１０４】
例えば、第１のスライスは、ＮＡＬヘッダ９０Ａと、ＭＢ番号０〜２０に対応する後続の複数のＭＢとを備えることができ、ＭＢ番号２０は後続のＮＡＬヘッダ９０Ｂの前の最後のＭＢである。次のスライスは、ＮＡＬユニットヘッダ９０Ｂ及びＭＢ番号２１で開始する。フレーム８８の各々の上部に例示的なＭＢ番号を示す。そのような番号の間隔は、実際のビットストリームのスケール又は比を必ずしも反映するわけではなく、例示のために与えられる。上述のように「スライス」を含んでいるＮＡＬユニットは、独立して復号できる。言い換えれば、スライスは、他のＮＡＬユニットからの情報なしに復号できる。このようにして、各ＮＡＬユニットは復号可能ＭＢの自蔵式シーケンスであるので、ＮＡＬユニットの損失は、所与のフレームに対する先行する又は後続のＮＡＬユニットの復号を必ずしも妨げるわけではない。
【０１０５】
前述のように、一部のビデオデコーダ、特にソフトウェアモジュールとして実装されたビデオデコーダは、ルックアヘッドエラー処理技法を実行することによって復号エラーを処理することができる。カレントスライスを復号するために、ルックアヘッド技法は一般に、第１のスライスの最後のブロック又はＭＢを決定するために、次の利用可能なスライスヘッダ、例えばＮＡＬヘッダを復号するためのビデオデコーダを必要とする。即ち、ビデオデコーダは、次のスライスヘッダに対してルックアヘッドを行い、現在復号されているスライスの範囲を決定することができる。カレントスライスを復号している間に復号エラーが検出された場合、隠蔽すべき一部の符号化ビデオデータを識別するために、ビデオデコーダは、カレントスライスを復号するより前に、カレントスライスの最後のＭＢを更に識別することができる。ビデオデコーダは、符号化ビデオデータのスライスごとにこのルックアヘッド動作を実行することができるが、それは、非効率、即ち計算の複雑さ及び過大な電力消費を生じることがある。
【０１０６】
ルックアヘッドエラー処理技法を採用するビデオデコーダは、非連続復号を実行するものとして特徴づけられる。一例として、従来のビデオデコーダは、最初にカレントスライスの開始ＭＢを決定し、次いで、次の再同期コードワードを検出するためにビットストリーム中でルックアヘッドを行い、それによって、カレントスライス中の最後のＭＢを決定する。特に、再同期コードワードは、次に適切に受信したスライスを識別するために使用される。ルックアヘッドを行った後、次いで、デコーダは、カレントスライスのバッファバージョンを復号することに戻る。次のスライスのための最初のＭＢ番号Ｎを決定することによって、ビデオデコーダは、前のスライス中の最後のＭＢ番号、即ちＭＢ  Ｎ−１を決定することができる。最後のＭＢ番号を識別すると、ビデオデコーダは、カレントビデオスライスの開始ＭＢに戻り、スライスを復号し始める。
【０１０７】
従って、ルックアヘッドエラー処理技法の実装は、カレントスライス及び次のスライスをバッファするための２つの異なる復号バッファを必要とする。ビデオデコーダは、元のビデオデータを適切に再構成するために、各バッファ間で交互に切り替える。ビデオデコーダは、１つのスライスの現在の状態情報のすべてを記憶し、次のスライスに移動し、次いで第１のスライスに戻る必要があるので、この技法の非連続的な性質により、実装がより錯綜又は複雑化することがある。特に全体的な復号タスクが２つ以上のプロセッサ間で分割されたとき、この動作は組込みシステムでは望ましくないことがある。
【０１０８】
図６の例を参照しながら、ルックアヘッド動作に基づくエラー処理プロセスについて最初に説明する。この例では、フレーム８８Ａは、ＭＢ０からＭＢ２０にわたる第１のスライスと、ＭＢ２１からＭＢ５４にわたる第２のスライスと、ＭＢ５５からＭＢ７１にわたる第３のスライスと、ＭＢ７２からＭＢ９８にわたる第４のスライスとを含む。カレントスライスを復号するために、ビデオデコーダは、最初にルックアヘッドを行い、最初の利用可能な再同期ポイントを発見する。ＭＢ１５〜ＭＢ４５が損失、又は破損していると仮定した場合、ビデオデコーダは、ＮＡＬヘッダ９０Ｃにおいて次の再同期ポイントを発見する。その間に、ビデオデコーダは、復号エラーについての実際の知識を有しないが、復号エラーがあった場合、再同期ポイントより前の最後のＭＢを得ることができるように、ルックアヘッド動作を通して次の再同期ポイントを得る必要がある。
【０１０９】
従って、ルックアヘッド動作に依拠するエラー処理プロセスでは、ビデオデコーダは、復号すべきカレントスライスの最初のＭＢ番号を得て、次のスライスヘッダを復号してそのスライスヘッダより前の最後のＭＢ番号を得るために、ルックアヘッドを行い、復号すべきカレントスライスの開始に戻り、復号及びエラーの検出を再開し、最初のＭＢと最後のＭＢとをエラー隠蔽動作にパスし、復号すべき次のスライスに対して復号同期及びエラー隠蔽を回復する。特に、ビデオデコーダは、ルックアヘッド動作を実行している間、スライス１及び２（ＭＢ０〜５４）をバッファし、次いで、復号動作を開始するために、スライス１に戻る必要がある。一般に、ビデオデコーダは、実際の復号エラーが存在するか否かにかかわらず、ビットストリーム中で復号すべき全てのスライスに対してこれらのルックアヘッド動作及びバッファ動作を実行する。スライスの実際の復号は、ルックアヘッド動作の後までも行われない。
【０１１０】
チャネル１６を介した符号化ビデオデータの送信はしばしば、符号化ビデオデータの顕著な損失又は破損なしに行われる。例えば、例示のために、符号化ビデオデータが複数のパケットとしてチャネル１６上で送信されると仮定すると、典型的なワイヤレスチャネル１６のパケット損失レートはしばしば、５％よりも小さい。例示のために、各パケットが１つのスライスに対応すると仮定すると、有効な符号化ビデオデータの復号中に復号エラーが発生しないことになるので、ルックアヘッドエラー処理技法のための計算の９５％が必要とされないことになる。従って、ルックアヘッドエラー処理技法は、多数の浪費される動作を生じることになる。
【０１１１】
エラー処理をソフトウェアで実装したときは、これらの浪費される動作及び上述の他の問題はあまり重要ではないが、特に全体的な復号タスクを２つ以上のプロセッサに分割したときは、組込みシステムがこれらの問題によって大きな影響を受けることがある。特に、ルックアヘッド技法の組込み実装形態、又はより一般的にルックアヘッド技法のハードウェア実装形態では、浪費される動作は、より多くの有益な動作に使用できる電力を不必要に消費することがある。その上、電力消費は、宛先装置１４と同様のモバイル宛先装置に共通のバッテリを消耗させるので、無駄な電力消費により、バッテリが再充電を必要とする前の動作可能な時間が短くなることがある。更に、２つのプロセッサがこれらの電力問題を悪化させることがある。更に、次のスライスをバッファするために使用される追加のバッファは、電力を消耗し、従来のビデオデコーダのコスト及びサイズを更に増大させることがある。
【０１１２】
図２のビデオデコーダ２６など、ビデオデコーダは、フレーム８８を受信し、本開示で説明する技法に従って連続エラー処理動作、即ち、非ルックアヘッドエラー処理動作を実行することができる。連続エラー処理プロセスの場合、各スライスの復号順序は順序正しく維持できる。１つのスライスを事前にバッファし、次いで、次のスライスのＮＡＬヘッダにアクセスするためにルックアヘッド動作を実行する必要はない。復号エンジン３２は、フレーム８８Ａの第１のＮＡＬユニット又はスライス、例えば、ＮＡＬヘッダ９０Ａ及びＭＢ０〜２０にアクセスし、最初のＭＢ番号、例えば、ＭＢ０を決定することによって、カレントスライスの開始を決定することができる。復号エンジン３２は、このＭＢ番号０を、図３のエラー検出モジュール４０など、エラー処理モジュール３４のエラー検出モジュールに転送することができる。上述のように、エラーフラグ４６を事前にリセットした後、エラー検出モジュール４０は、ＭＢ番号０をエラーマッピングモジュール４２に転送し、エラーマッピングモジュール４２は、ＭＢ番号０をマッピング４８の開始ＭＢ４８Ａに記憶する。
【０１１３】
一方、復号エンジン３２は、符号化ＭＢ０〜２０を復号し、この復号ビデオデータ又は復号ＭＢを再構成バッファ３８に記憶する。復号エンジン３２はまた、復号ＭＢ０〜２０をエラー検出モジュール４０に転送し、エラー検出モジュール４０は、エラー検査の適用によって復号エラーが発生したかどうかを決定することができる。例えば、エラー検出モジュール４０は、それぞれシンタックスルール４４Ａ及びセマンティックルール４４Ｂに従って、シンタックスエラー検査及びセマンティックエラー検査を実行し、並びにエントロピールール４４Ｃに従ってエントロピー符号化検査を実行することができる。
【０１１４】
図６の例では、ＭＢ０〜２０の少なくともいくつか、ＮＡＬヘッダ９０Ｂ、及びＭＢ２１〜５４のいくつかは、損失又は破損している。エラー検出モジュール４０は、この復号エラーを検出し、エラーを示すためにエラーフラグ４６を設定する。フラグ４６を設定することによって、エラー検出モジュール４０は、次の識別可能なスライスヘッダ、例えば、ＮＡＬヘッダ９０Ｃが復号されるまで、エラー隠蔽を遅延させることができる。従って、ビデオデコーダ２６は、カレントスライスを復号するより前に最後のＭＢ番号を決定するためにルックアヘッドを行う必要はないが、前のスライスがエラーであることを示すために、フラグ４６を維持する。このようにして、ビデオデコーダ２６は、データがエラーを含んでいないという仮定に基づいて符号化ビデオデータのカレントスライス又はセグメントを復号する。しかしながら、エラーを決定すると、後で、例えば、次のスライスヘッダが復号された後に、エラー処理モジュール３４がエラーを処理することができるように、エラーフラグ４６が設定される。
【０１１５】
例示のために、エラー検出モジュール４０が上述の復号エラーを検出し、エラーフラグ４６を設定したと仮定すると、エラー検出モジュール４０は復号エンジン３２に復号エラーについて通知する。従って、復号エンジン３２は、復号を中止し、復号同期を回復し、又は次の識別可能なＮＡＬヘッダ、即ち、図６に示す例ではＮＡＬヘッダ９０Ｃを探すことによってフレーム８８Ａの復号を再同期させることができる。復号同期を回復した後、復号エンジン３２は、符号化ビデオデータの次の利用可能なスライス、例えば、ＮＡＬヘッダ９０Ｃ及びＭＢ番号５５〜７２によって識別されたＮＡＬユニット又はスライスにアクセスする。上述のように、復号エンジン３２は、セグメントの開始に対応するＭＢ番号、例えば、ＭＢ番号５５にアクセスすることによって、符号化ビデオデータのこの次の利用可能なスライスの開始を決定することができる。復号エンジン３２は、このＭＢ番号をエラー検出モジュール４０に転送する。
【０１１６】
第２のセグメントの開始、例えば、ＭＢ番号５５を受信したことに応答して、エラー検出モジュール４０はエラーフラグ４６の状態を決定する。エラーフラグ４６が設定されていない場合、エラー検出モジュール４０はＭＢ番号をエラーマッピングモジュール４２にパスし、エラーマッピングモジュール４２は、次の利用可能なスライスのカレントスライスとしての復号をサポートするために、ＭＢ番号５５をマッピング４８の開始ＭＢ４８Ａに記憶する。代替的に、エラーフラグ４６が設定されている場合、エラー検出モジュール４０は、ＭＢ番号５５−１をエラーマッピングモジュール４２にパスし、ＭＢ番号５４をマッピング４８の終了ＭＢ４８Ｂとして記憶するようにエラーマッピングモジュール４２に命令する。次いで、エラーマッピングモジュール４２は、復号エラーの範囲を識別するためにマッピング４８をエラー隠蔽モジュール３６に転送する。エラー範囲は、スライスヘッダ９０Ａ、９０Ｂに関連するスライスを含んでいる破損データセグメントの範囲を規定する。図６の例では、上述のように、エラーマッピングモジュール４２は開始ＭＢ４８Ａと終了ＭＢ４８Ｂとを転送し、隠蔽エンジン５０は、開始ＭＢ４８Ａと終了ＭＢ４８Ｂ（ＭＢ０〜ＭＢ５４）とによって識別されたＭＢを再構成バッファ３８中に隠蔽する。
【０１１７】
復号エンジン３２は、ＮＡＬヘッダ９０Ｄによって識別された次の利用可能なスライス又はＮＡＬユニットにアクセスすることによって、フレーム８８Ａを復号し続けることができる。フレーム８８Ａが復号されると、復号エンジン３２はフレーム８８Ｂを更に復号することができる。図６の例ではフレーム８８Ｂ中に復号エラーが存在しないので、エラー処理モジュール３４はエラーを検出せず、エラー隠蔽モジュール３６はこれ以上エラーを隠蔽しない。このようにして、ビデオデコーダ２６は各スライスを順に復号することができ、従って、ルックアヘッド動作をサポートするためにカレントスライスをバッファする必要がないので、ビデオデコーダ２６はより小さいバッファ３２を含むことができる。更に、ビデオデコーダ２６は、通常の復号以外の追加の計算がほとんど必要とされないほど電力を消費しない。言い換えれば、連続的にではなく、復号エラーが検出されたときにエラー処理モジュール３４が起動され、それによって計算を節約し、電力消費を低減する。
【０１１８】
様々な態様では、連続エラー処理技法は、特に２つ以上のプロセッサによって実装されたときに、上述の復号効率を維持し、並びにビデオデコーダ２６のアーキテクチャを単純化することができる。即ち、例えば、１つのプロセッサが復号エンジン３２を実装し、別のプロセッサがエラー処理モジュール３４を実装する。２つのプロセッサ間の通信が、アーキテクチャを複雑にすることがある。これらの通信を制限することによって、本技法は実装の複雑さを低減することができる。エラーが起こったときのみ通信が発生するので、本技法は、プロセッサ間の通信の数を制限し、それによってエラー処理アーキテクチャの複雑さを低減することができる。アーキテクチャに関して、スライスごとの順序で復号が実行されるので、ソフトウェア又はハードウェアは、カレントスライス及び次の利用可能なスライスのために２倍のバッファを維持し、そのようなバッファ間で交互に切り替える必要がない。更に、エラー隠蔽が必要とされる場合、前のスライスのための復号ステータス情報を記憶する必要がない。
【０１１９】
図７は、２つ以上のフレームにわたる復号エラーのためのエラー処理及び隠蔽を実行する際の、ビデオデコーダ２６などのビデオデコーダの例示的な動作を示すフローチャートである。上述のように、ビデオデコーダ２６は、複数の符号化ビデオフレームを備えることができる符号化ビデオフレームデータを受信する（９２）。ビデオデコーダ２６の復号エンジン３２は、フレームのカレントスライスに最初にアクセスするときに、エラー処理モジュール３４にカレントスライスの開始ＭＢ番号と開始フレーム番号とを決定させる（９４）。スライスの開始ＭＢ番号は、復号エラーが検出されることがあるセグメントの開始を表す。開始フレーム番号は、カレントスライスが存在するフレームの番号を示す。開始ＭＢ番号及び開始フレーム番号は、カレントスライスに関連するＮＡＬヘッダ中に含まれ得る１つ以上のシンタックス要素から決定できる。
【０１２０】
開始ＭＢ番号と開始フレーム番号とを決定すると、復号エンジン３２は、カレントスライスを復号し（９６）、カレントスライスからの復号ＭＢを、エラー検出のためにエラー処理モジュール３４に出力する。エラー処理モジュール３４のエラー検出モジュール４０は、例えば、シンタックスルール４４Ａ、セマンティックルール４４Ｂ又はエントロピールール４４Ｃに従ってシンタックスエラー検査、セマンティックエラー検査及び／又はエントロピー符号化エラー検査を実行することによって、復号エラーが発生したかどうかを決定する（９８）。復号エラーが検出されず（９８）、スライスの終了に達していない（１００）場合、復号エンジン３２はカレントスライスを復号し続ける（９６）。復号エラーが検出されない（９８）が、カレントスライスの終了に達した（１００）場合、カレントスライスは正常に復号された。この場合、復号エンジン３２は、次の利用可能なスライスをカレントスライスとして復号することに進む。カレントスライスがビデオシーケンス中の第１のスライスであった場合、次のスライスは第２のスライスである。代替的に、カレントスライスが第１のスライスでなかった場合、次のスライスはビデオシーケンスにおける後のスライスである。後の、次の利用可能なスライスは、カレントスライスと同じフレーム中に存在することも、異なるフレーム中に存在することもある。いずれの場合も、復号エンジン３２が次の利用可能なスライスに進むとき、復号エンジン３２は、次の利用可能なスライスの開始ＭＢ番号と開始フレーム番号とを決定する（１０３）。
【０１２１】
復号エラーが検出された（９８）場合、エラー検出エンジン４０は復号エンジン３２に復号エラーについて通知し、エラーフラグ４６を設定する（１０２）。復号エンジン３４は、エラーを通知されたことに応答して、上述のように、次の利用可能な、又は識別可能なスライスに進むことによって、復号を再同期させる。この場合、復号エンジン３２は、次の利用可能なスライスの開始ＭＢ番号と開始フレーム番号とを決定する（１０３）。復号エンジン９６は、後で説明するように、次の利用可能なスライスをカレントスライスとして復号することに進む（９６）。復号エンジン３２は、前のスライスが正常に復号されたときに、又は前のスライス中の復号エラーの検出に続く再同期の一部としてのいずれかで、次の利用可能なスライスに到達する（１０３）。各場合において、エラー処理モジュール３４は、エラーフラグが設定されているかどうかを決定する（１０４）。エラーフラグが設定されている（１０４）場合、復号エラーの検出（９８）の結果として、次の利用可能なスライスがアクセスされた。設定されていない場合、前のスライスの正常な復号及び前のスライスの終了の検出（１００）の結果として、次の利用可能なスライスがアクセスされた。
【０１２２】
エラーフラグが設定されていない（１０４）場合、復号エンジン３２は、次の利用可能なスライスをカレントスライスとして復号することに進む（９６）。言い換えれば、復号エンジン３２によって得られた次の利用可能なスライスがカレントスライスになり、プロセスが繰り返される。しかしながら、エラーフラグが設定されている（１０４）場合、エラー処理モジュール３４は、隠蔽される必要がある破損データセグメントの範囲を決定する。例えば、エラー検出モジュール４０は、次の利用可能なスライスの開始ＭＢ番号に基づいて終了ＭＢ番号を決定し（１０６）、次の利用可能なスライスの開始フレーム番号に基づいて終了フレーム番号を決定する（１０８）。復号エラーが単一のスライスのみに関与する場合、終了ＭＢ番号及び終了フレーム番号はカレントスライスの終了ＭＢ番号及び終了フレーム番号とすることができる。しかしながら、復号エラーによって複数のスライスが影響を受けた場合、終了ＭＢ番号及び終了フレーム番号は、カレントスライスと次の利用可能なスライスとの間に存在し、マルチスライス破損データセグメントの一部を形成する、別の後のスライスに対応する。いずれの場合も、エラーマッピングモジュール４２は、次の利用可能なスライスのそれぞれ開始ＭＢ番号及び開始フレーム番号に基づいて終了ＭＢ番号及び終了フレーム番号を決定することができる。この場合も、終了ＭＢ番号は次のスライス−１の開始ＭＢ番号とすることができる。次いで、エラー隠蔽モジュール３６は、カレントスライスの開始ＭＢから破損データセグメントの終了ＭＢまでのＭＢを隠蔽することによってエラーを隠蔽する（１１０）。隠蔽に続き、復号エンジン３２は、終了ＭＢ及び終了フレームを生成するために使用された、次の利用可能なスライスを、新しいカレントスライスとして復号することに進む（９６）。
【０１２３】
エラーマッピングモジュール４２は、終了ＭＢ番号及び終了フレーム番号を、終了ＭＢ４８Ｂ及び終了フレーム４８Ｄとしてマッピング４８に記憶する。次いで、エラーマッピングモジュール４８は、開始ＭＢ４８Ａ、終了ＭＢ４８Ｂ、開始フレーム４８Ｃ、及び終了フレーム４８Ｄに基づいてエラー範囲を決定し、この範囲をエラー隠蔽モジュール３６の隠蔽エンジン５０に転送する。上述のように、隠蔽エンジン４０は、様々な隠蔽技法のいずれかに従って、エラー範囲、例えば、開始ＭＢ４８Ａ及び終了ＭＢ４８Ｂ並びに開始フレーム４８Ｃ及び終了フレーム４８Ｄに基づいて検出された復号エラーを隠蔽する（１１０）。動作中、エラーマッピングモジュール４８は、開始ＭＢ番号及び終了ＭＢ番号だけでなくフレーム番号をも考慮に入れることによって、エラー範囲を決定することができる。復号エラーがフレーム境界線を超える場合、終了ＭＢ番号は、実際に、隠蔽すべきセグメントの開始ＭＢ番号よりも小さくなることがある。フレーム番号を追跡することにより、このタイプの状況においてエラー範囲を適切に解決することが可能になる。
【０１２４】
図８は、２つ以上のフレームにわたるエラーを含んでいる例示的なビットストリームへのエラー処理及び隠蔽技法の適用を示す図である。図８は、図６と同様であるが、復号エラーが２つの連続するフレームにわたり、それによりエラーを検出した後の再同期のための次の利用可能なスライスが、カレントスライスと異なるフレームに存在するシナリオを示す。図８に示すように、フレーム番号を追跡することによって、２つのフレームにわたるデータが損失している場合に、連続エラー処理技法を適用することができる。従来のシステムでは、エラーが２つのフレームにわたるとき、２番目のフレームが完全に廃棄されることがある。しかしながら、連続エラー処理技法の場合、デコーダは、スライスヘッダのフレーム番号を検査して、カレントフレームを終える前に新しいフレームが開始しているかどうかを決定することができる。開始している場合は、デコーダは、カレントフレームの残りのＭＢを隠蔽し、新しいフレームを処理する。第２のフレームの最初の幾つかのＭＢを次のスライスヘッダまで隠蔽することができる。ただし、第２のフレーム中の残りのＭＢは保持できる。
【０１２５】
エラー隠蔽のための第１のフレームのＭＢ７３〜９８と第２のフレームのＭＢ０〜７６とを識別するために、連続エラー処理技法を図８のシナリオに適用することができる。図８は、２つのフレーム１１６Ａ、１１６Ｂ（「フレーム１１６」）を含むビットストリーム１１４を示し、フレーム１１６Ａは、それぞれのスライスを指定する複数のＮＡＬヘッダ１１８Ａ〜１１８Ｄを備え、フレーム１１６Ｂは、それぞれのスライスを指定する複数のＮＡＬヘッダ１１８Ｅ〜１１８Ｈを備える。ＮＡＬヘッダ１１８Ａと１１８Ｅとは、それぞれのフレーム１１６の開始を示すことを表すために、それぞれ影付きで示される。ＮＡＬヘッダ１１８Ａ〜１１８Ｈ（「ＮＡＬヘッダ１１８」）の各々は、スライスを含むことができるＮＡＬユニットの開始を示す。
【０１２６】
各ＮＡＬユニットは、ＮＡＬヘッダ１１８の後続のヘッダの開始時に終了する。例えば、第１のＮＡＬユニットは、ＮＡＬヘッダ１１８Ａと、ＭＢ番号０〜２０に対応するＭＢを含んでいるスライスとを備えることができ、ＭＢ番号２０は後続のＮＡＬヘッダ１１８Ｂの前の最後のＭＢである。フレーム１１６の各々の上部にＭＢ番号を示す。スライスを含むことができるＮＡＬユニットは、独立して復号できる、即ち、他のＮＡＬユニットからの情報なしに復号できる。このようにして、各ＮＡＬユニットは復号可能ＭＢの自蔵式シーケンスであるので、ＮＡＬユニットの損失は、先行する又は後続のＮＡＬユニットの復号を妨げない。
【０１２７】
図２のビデオデコーダ２６など、ビデオデコーダは、これらのフレーム１１６を受信し、本開示で説明する技法に従って非ルックアヘッド連続エラー処理動作を実行することができる。復号エンジン３２は、フレーム１１６Ａの第１のＮＡＬユニット又はスライス、即ち、ＮＡＬヘッダ１１８Ａ及びＭＢ０〜２０にアクセスし、最初のＭＢ番号、例えば、ＭＢ０、並びにフレーム番号を決定することによって、第１のセグメントの開始を決定することができる。復号エンジン３２は、このＭＢ番号０を、図３のエラー処理モジュール４０など、エラー処理モジュール３４のエラー検出モジュールに転送することができる。エラー検出モジュール４０は、ＭＢ番号０及びフレーム番号をエラーマッピングモジュール４２に転送し、エラーマッピングモジュール４２は、ＭＢ番号０及びフレーム番号を開始ＭＢ番号４８Ａ及び開始フレーム番号４８Ｃとしてマッピング４８に記憶する。この例では、開始ＭＢ番号はＭＢ０であり、開始フレーム番号はフレーム０であるとすることができる。
【０１２８】
復号エンジン３２は、符号化ＭＢ０〜２０を復号し、この復号されたビデオデータ（例えば、復号ＭＢ）を再構成バッファ３８中に記憶する。復号エンジン３２はまた、復号ＭＢ０〜２０をエラー検出モジュール４０に与えることができ、エラー検出モジュール４０は、エラー検査の適用によって復号エラーが発生したかどうかを決定することができる。エラーが検出されなかった場合、ビデオデコーダ３２は、例えば、ＮＡＬヘッダ１１８Ｂ及びＭＢ番号２１〜５５によって指示された次のスライスにアクセスし、ＭＢ開始番号及びフレーム番号をエラー検出モジュール４０にパスし、このスライスを復号する。エラー検出モジュール４０はエラーフラグ４６からステータスを決定する。この例では、前のスライス（ＭＢ０〜２０）における復号エラーが検出されなかったので、エラーフラグ４６は設定されなかった。エラーマッピングモジュール４２は、この第２のスライス（ＭＢ２１〜５４）の開始ＭＢ番号及びフレーム番号を受信し、開始ＭＢ番号及び開始フレーム番号を開始ＭＢ４８Ａ及び開始フレーム４８Ｃとしてマッピング４８に記憶する。復号エンジン３２、エラー検出モジュール４０、及びエラーマッピングモジュール４２は、このようにして、エラーが検出されるまで、後続のスライスのために動作し続けることができる。
【０１２９】
図８の例では、第１のフレーム１１６Ａの最後のスライス（ＭＢ７３〜９８）の一部、フレーム１１６ＢのＮＡＬヘッダ１１８Ｅ、第２のフレーム１１６Ｂの第１のスライス（ＭＢ０〜４５）のすべて、フレーム１１６ＢのＮＡＬヘッダ１１８Ｆ、及びフレーム１１６Ｂの第２のスライス（ＭＢ４５〜７７）の一部は、損失又は破損している（「損失」）。このエラーより前に、エラー検出モジュール４２は、開始ＭＢ番号７３と第１のフレーム１１６Ａに対応するフレーム番号とを受信することができる。上述のように、エラーマッピングモジュール４２は、このＭＢ番号７３及びフレーム番号を、開始ＭＢ４８Ａ及び開始フレーム４８Ｃとしてマッピング４８に記憶することができる。復号エンジン３２によって復号する過程で、エラー検出モジュール４０は、この復号エラーを検出し、エラーフラグ４６を設定することができる。エラー検出モジュール４０はまた、復号エンジン３２にエラーについて通知することができ、その結果、復号エンジン３２は、上述の方法で復号同期を回復する。特に、復号エンジン３２は、次のＮＡＬユニットヘッダを探すことによって、次の利用可能なスライスにアクセスすることができる。
【０１３０】
図８の例では、復号エンジン３２は、ＮＡＬヘッダ１１８Ｇ及びＭＢ番号７７〜８８を有する次の利用可能なＮＡＬユニットを識別する。ＭＢ７７〜８８を備えるＮＡＬユニットが、ビットストリームを解析することによってＮＡＬヘッダを容易に見分けることができる次のＮＡＬユニットであるという点で、ＮＡＬヘッダ１１８Ｇは次の利用可能なＮＡＬユニットを示す。上述のように、復号エンジン３２は、次の利用可能なスライスの開始ＭＢ番号、例えば、ＮＡＬヘッダ１１８Ｇによって示されるスライスのＭＢ番号７７と、他の符号化ビデオデータに対するこのセグメントの位置、例えば、フレーム番号（１）とを決定することができる。復号エンジン３２は、開始ＭＢ番号７７と、フレーム１１６Ｂに対応するフレーム番号（１）とをエラー検出モジュール４０に与えることができる。
【０１３１】
エラー検出モジュール４０は、ＭＢ番号７７と、フレーム１１６Ｂに対応するフレーム番号１を受信すると、エラーフラグ４６のステータスを決定する。例示のために、エラー検出モジュール４０がエラーを以前に検出し、エラーフラグ４６が設定されていると仮定すると、エラー検出モジュール４０は、ＭＢ７７〜８８を備えるスライスの開始ＭＢ番号７７に基づいて前のセグメントの終了を決定する。この例では、エラー検出モジュール４０は、ＭＢ番号７７から１を減算してＭＢ番号７６を得ることによって、破損データセグメントの終了を計算する。エラー検出モジュール４０は、終了ＭＢ番号７６及びフレーム番号１をエラーマッピングモジュール４２に転送し、エラーマッピングモジュール４２はこれらの番号を、それぞれ、終了ＭＢ４８Ｂ及び終了フレーム４８Ｄとしてマッピング４８に記憶する。記憶されると、エラーマッピングモジュール４２は、「エラー範囲」と呼ばれるマッピング４８をエラー隠蔽モジュール３６に転送する。
【０１３２】
隠蔽エンジン５０は、開始フレーム４８Ｃ及び終了フレーム４８Ｄから、復号エラーが２つのフレームにわたり、開始ＭＢ４８Ａ及び終了ＭＢ４８Ｂに基づいて、ＭＢがフレーム１１６Ａの終了及びフレーム１１６Ｂの開始から損失していると決定することができる。隠蔽エンジン５０はまた、復号エンジン３２、エラー検出モジュール４０、又はエラーマッピングモジュール４２のいずれかから最大フレーム長を受信することができ、この例では９８ＭＢとして図８に示す。即ち、最大フレーム長は、フレーム１１６の１つの最後のＭＢ番号として定義できる。最大フレーム長９８ＭＢは、quarter common intermediate format（ＱＣＩＦ）フレームにおけるＭＢの番号に対応する。隠蔽エンジン５０は、フレーム番号の差を計算するために、開始フレーム４８Ｃとして記憶された開始フレーム番号から、終了フレーム４８Ｄとして記憶された終了フレーム番号を減算する。
【０１３３】
計算されたフレーム番号差が０、即ち、開始及び終了が同じフレーム番号内にある場合、隠蔽エンジン５０は開始ＭＢ番号、例えば、ＭＢ番号７３から、次の利用可能なスライスの開始ＭＢ番号の直前の終了ＭＢ番号までＭＢを交換、又は隠蔽することができる。この場合も、隠蔽エンジン５０は、再構成バッファ３８中のＭＢを直接隠蔽するか、又は再構成バッファに与えられた復号ビデオＭＢを隠蔽する際に使用するために、隠蔽されるＭＢを復号エンジン３２に与えることができる。図８を参照すると、計算されたフレーム番号差が１よりも小さい又は１に等しい、即ち、復号エラーがフレーム０（１１６Ａ）及びフレーム１（１１６Ｂ）の部分にわたる場合、隠蔽エンジン５０は、開始ＭＢ４８Ａとして記憶された開始ＭＢ番号、例えば、ＭＢ番号７３に対応するＭＢを、最大フレーム長、例えば、ＭＢ番号９８に対応するＭＢまで、交換又は隠蔽することができる。このようにして、エラーが２つのフレームにわたるとき、エラーを含んだ第１のスライスの開始からフレームの終わりまで第１のフレームの残りが隠蔽される。
【０１３４】
以下で説明するように、フレーム差が１よりも大きい場合、隠蔽エンジン５０は追加のフレームを挿入し、エラーが発生し第１のフレームと、同じエラーが発生した最後のフレームとの間の中間フレームの各々のためのＭＢ番号０〜９８に対応するＭＢを隠蔽することができる。この場合、開始フレーム番号と終了フレーム番号との間の２以上のフレーム差は、少なくとも１つのフレーム全体が損失したことを示す。フレーム差３は２つのフレーム全体が損失したことを示し、フレーム差４は３つのフレーム全体が損失したことを示し、以下同様に示す。最後のフレームにおいて、隠蔽エンジン５０は、ＭＢ番号０から終了ＭＢ４８Ｂとして記憶されたＭＢ番号、例えば７６までに対応するＭＢを隠蔽することができる。
【０１３５】
図８に示すインスタンスでは、復号エラーが、連続するフレーム１１６Ａ及び１１６Ｂにわたるので、隠蔽エンジン５０は、差が１に等しいと決定し、開始ＭＢ４８Ａとして記憶されたＭＢ番号、例えば７３から最大フレーム長、ＭＢ番号９８までに対応するＭＢを隠蔽する。差が２以上ではないので、隠蔽エンジン５０は復号エラーが及ぶ最後のフレームに達し、ＭＢ番号０から終了ＭＢ４８Ａに記憶されたＭＢ番号、例えば７６までに対応するＭＢを隠蔽する。要約すると、フレーム１のＭＢ７３〜９８及びＭＢ０〜７６が隠蔽される。フレーム差が２よりも大きい又は２に等しい場合、単に損失した参照フレームを廃棄する代わりに、隠蔽エンジン５０は、損失したフレームの数に等しい数のフレームを挿入し、それによって、参照フレーム不整合を回避する。従来のビデオデコーダにおいて一般的であるように、なくなったフレームを廃棄しないことによって、本技法は、図９Ａ、図９Ｂ及び図９Ｃに関して以下で説明するように、復号パフォーマンスを改善することができる。
【０１３６】
図９Ａ、図９Ｂ及び図９Ｃは、複数参照フレームを可能にするビットストリームに対するエラー処理及び隠蔽技法の適用を示す図である。図９Ａは、「Ｉ」、「Ｐ０」、「Ｐ１」、「Ｐ２」、「Ｐ３」及び「Ｐ４」と標示された複数のフレームを含むビットストリーム１２０を示す。Ｉフレームは、Ｈ．２６４／ＭＰＥＧ  ４  ＡＶＣイントラフレームとして知られているフレームを指し、Ｐフレームは、Ｈ．２６４／ＭＰＥＧ  ４  ＡＶＣインター予測フレームを指す。一般に、各ＰフレームがＩフレーム中に存在する少なくとも一部のビデオデータを参照するように、Ｐフレームを符号化することができるという点で、Ｉフレームは、１つ以上のＰフレームのための参照を形成することができる。従って、Ｉフレームが前又は後続のフレームに依存しないという点で、Ｉフレームは、インター予測に依拠せず、復号を再同期させるために使用できる。従って、図９には示されていないが、ビデオデコーダ２６が、ＮＡＬヘッダによって識別される次の利用可能なスライスを取り出し、以前に損失又は破損したＭＢによるエラーを繰り越すことなしにＩフレームを復号することができるように、ＩフレームはＮＡＬヘッダの後に来ることができる。更に、Ｐフレームは他のＰフレームを参照することができる。
【０１３７】
Ｈ．２６４プロセスでは、複数参照フレームを使用することは、符号化効率を改善するための一般的な特徴である。Ｈ．２６４プロセスは、前のフレームのみを参照フレームとして使用することを制限せず、動き補償予測が１６個の過去のフレームほど離れた参照フレームに基づくことを可能にする。この特徴は、符号化効率を改善するだけでなく、エラー伝搬を軽減するのを助けることができ、通常、エンコーダにおけるエラー防止ツールとして挙げられる。
【０１３８】
フレームが完全に損失したとき、デコーダは、損失したフレームがあることを知る必要なしに次のフレームを復号し続けることができる。複雑なエラー隠蔽方法を使用して損失したフレーム全体を推定しない限り、デコーダは一般により良い結果を与えることができないので、前のフレームのみを参照フレームとして使用するとき、この手法は効果的である。ただし、（Ｈ．２６４の場合のように）複数参照フレームを使用するとき、フレーム損失により、正しく受信されたフレームが、予測のために間違ったフレームを参照する可能性が高くなる。１つ以上の損失したフレームによって引き起こされる間違った参照を、本開示では参照フレーム不整合と呼ぶ。
【０１３９】
各フレームの上部の矢印は、複数のＰフレーム、例えば、Ｐ０、Ｐ１、Ｐ２、Ｐ３及びＰ４、並びにＩフレームの間の参照フレーム依存関係を示す。ビットストリーム中のシンタックス要素は、例えば、フレーム番号又はフレーム番号オフセット値に基づいて、受信したＰフレームごとに参照フレームを識別する参照フレームインデックス情報を含むことができる。図８Ｂに示すように、フレームＰ０及びＰ１は、インター予測のための参照フレームとしてのＩフレームに依存し、フレームＰ２及びＰ４は、フレームＰ１に依存し、フレームＰ３は、フレームＰ２に依存する。図１のビデオエンコーダ２０など、ビデオエンコーダは、上述のように、ビットストリームを圧縮し、送信効率を改善するために、上記の依存関係によって示された方法で、ビットストリーム１２０を符号化することができる。
【０１４０】
また上述したように、ビットストリーム１２０が、送信チャネル１６を介した受信機２４への送信中に損失又は破損し、ビデオデコーダ２６は、１つ以上のフレームが損失又は破損しているビットストリーム１２２を受信することになる場合がある。図９Ａに示すように、ビットストリーム１２２は、Ｉフレーム、並びにフレームＰ０、Ｐ１及びＰ４をのみ含む。この例では、フレームＰ２及びＰ３が、送信中に損失又は破損した。従って、連続的に受信したフレームＰ１とＰ４との間のフレーム番号差は３であり（４−１）、２つのフレーム全体の損失を示す。連続的に受信したフレーム間のフレーム番号差が２の場合、１つのフレーム全体の損失が示される。
【０１４１】
送信中に、単一のフレームが損失することがある。代替的に、複数のフレームが損失することがある。各場合において、参照フレーム不整合は、視覚的品質を劣化させ、エラーの伝搬を許す。複数のフレームが同じパケット内に配置される、ブロードキャストなどの適用例において複数のフレームの損失が起こることがある。従って、パケットが損失すると、複数のフレームが損失する。ビットストリーム１２４Ｂのフレームの上部の矢印は、エラー隠蔽が実行されない場合に起こりうる考えられる依存関係を示す。特に、矢印は、フレームＰ４が、フレームＰ１の代わりに今度は不適切にＩフレームに依存する、変化した依存を示す。
【０１４２】
図９Ａの例では、適用可能な参照フレームインデックス情報によって示されるように、フレームＰ４が３つ先行するフレームに依存することが意図されると仮定する。しかしながら、損失したフレームがあると、フレームＰ４は、フレームＰ１ではなく、２つの損失したフレームをカウントせず３つ先行するフレーム（即ち、Ｉフレーム）に依存する。言い換えれば、Ｐ４は、依然として３フレーム戻ってポイントするが、当初意図された参照フレームＰ２及びＰ３がビットストリームから損失しているとき、Ｉフレームにポイントする。この参照フレーム不整合は、主に損失したフレームによるものである。復号プロセスはビットストリームにおいて実際に受信したフレームデータに基づいてビデオフレームを生成するにすぎないので、デコーダはフレームＰ２及びＰ３の損失に気づいていないことがある。
【０１４３】
フレームＰ１を復号した後、デコーダは、シーケンスにおける次のフレームとしてフレームＰ４を受け取り、ビットストリーム中の参照フレームインデックス（３フレーム前）に従って、その参照フレームを、Ｐ１フレームではなくＩフレームとして識別することがある。従って、フレームＰ２及びＰ３の損失は、フレームＰ４の参照フレーム不整合を引き起こす。この参照フレーム不整合は、ビデオ再生中にフレームＰ４の視覚的品質を劣化させ、場合によっては生じたエラーを後続のビデオフレームに伝搬することがある。
【０１４４】
本開示で説明する技法によれば、上述のように復号エラーを識別し、損失したフレームを交換してビットストリーム１２４を生成するようにビデオデコーダ２６を構成することができる。このようにして、１つ以上の介在するフレームが送信中に損失又は破損したとき、ビデオデコーダ２６は、２つのフレーム間の間隙を識別及び補償し、それによって、参照フレーム不整合を訂正することができる。動作中、図２の復号エンジン３２は、ビットストリーム１２２を受信し、Ｉフレームの各セグメントの開始を決定し、それらのセグメントを復号し、復号ビデオデータをエラー処理モジュール３２に出力する。図３に示すエラー処理モジュール３２のエラー検出モジュール４０は、復号エラーが発生したかどうかを決定することに進む。このようにして、エラー検出モジュール４０が損失したフレームＰ２及びＰ３を検出するまで、復号エンジン３２及びエラー処理モジュール３４は、フレームＰ０及びＰ１を復号し続ける。
【０１４５】
上述のように、これらのエラーを検出するより前に、エラー検出モジュール４０は、（フレームＰ２の開始時にエラーが発生したので）セグメントの開始、例えば、ＭＢ番号０と、符号化ビデオデータにおけるそのセグメントの相対位置を識別するフレーム番号とを受信することができる。フレーム番号は、例えば、スライスヘッダ中のフレーム番号シンタックス要素にアクセスすることによって、Ｈ．２６４又は同様の実装形態で得られる。連続するフレーム番号の比較は、介在フレームが損失したかどうかを明らかにすることができる。フレーム番号が使用されている場合、ビデオデコーダは単に連続するフレーム番号を追跡し、フレーム参照差を決定することができる。フレーム番号差が１よりも大きい場合、少なくとも１つのフレーム全体がなくなっている。なくなっているフレームの数は、フレーム番号差を一般に追跡しなければならない。
【０１４６】
幾つかの例では、フレーム番号が破損された場合、エラー検出モジュール４０は、開始フレーム４８Ｃ又は終了フレーム４８Ｄなど、前に記憶された開始フレーム番号又は終了フレーム番号に１を加算することによって開始フレーム番号を決定する。エラーマッピングモジュール４２は、開始ＭＢ番号及び開始フレーム番号を、開始ＭＢ４８Ａ及び開始フレーム４８Ｃとしてマッピング４８に記憶する。エラー検出モジュール４０は、復号エンジン３２にエラーについて通知し、エラーフラグ４６を設定する。
【０１４７】
エラー検出モジュール４０は、代替又は追加として、リアルタイムプロトコル（ＲＴＰ）タイミング情報など、エラーを検出する外部機構を採用することができる。ＲＴＰタイミング情報の場合、エラー検出モジュール４０は、連続的に受信したフレーム間の時間差を検査し、一定であると仮定されるフレーム間隔によって時間差を分割することによって、いくつのフレームが損失したか直接決定することができる。一定のフレーム間隔は、ブロードキャスト適用例など、幾つかの適用例で見られる。しかしながら、ビデオ電話など、フレーム間隔が通常一定でない適用例の場合、エラーを決定するフレーム番号方法を採用することができる。
【０１４８】
復号エンジン３２は、次の利用可能なＮＡＬヘッダにアクセスすることによって、エラーに応答して復号を再同期させることができる。この例では、復号エンジン３２は、フレームＰ４の第１のＮＡＬヘッダにアクセスし、フレームＰ４のこのセグメントの開始、例えば開始ＭＢ番号と、フレームＰ４に対応するフレーム番号とをエラー検出モジュール４０にパスする。エラー検出モジュール４０は、エラーフラグ４６の状態を決定し、エラーフラグが設定されていることがわかると、受信したＭＢ番号とフレームＰ４に対応するフレーム番号とに基づいて前のセグメントの終了を決定する。
【０１４９】
例えば、復号エンジン３２が、フレームＰ４を復号したときに、開始ＭＢ番号が０であり、開始フレーム番号が５であると決定したと仮定すると、エラー検出モジュール４０は、（エラー検出モジュール４０が最大フレーム長９８ＭＢについて通知されたと仮定して）前のフレームの終了ＭＢ番号９８、及び終了フレーム番号４を計算することができる。エラーマッピングモジュール４２は、これらの終了ＭＢ番号及び終了フレーム番号を、終了ＭＢ４８Ｂ及び終了フレーム４８Ｄとしてマッピング４８に記憶する。従って、エラー検出モジュール４０は復号エラーの終了を検出することができず、マッピング４８が完全に指定されるまで、エラーマッピングモジュール４２はマッピング４８を隠蔽エンジン５０に転送することができないので、フレームＰ４のための第１のスライスヘッダが復号されるまで、エラー隠蔽モジュール３６はエラーを隠蔽することができない。
【０１５０】
次いで、エラーマッピングモジュール４２は、マッピング４８をエラー隠蔽モジュール３６に転送する。エラー隠蔽モジュール３６は、マッピング４８を評価し、開始フレーム番号、例えば、２から終了フレーム番号４を減算することに基づいて、２つのフレームが損失したと決定することができる。更に、開始ＭＢ番号が０であり、終了ＭＢ番号が９８であることを考えて、エラー隠蔽モジュール３６は更に、２つの完全なフレームが損失又は破損したと決定することができる。従って、図９Ｂを参照すると、２つの損失したフレームの外側のスライスにおいてＭＢ隠蔽を実行することに加えて、隠蔽エンジン５０は、例えば、直接、又は、復号エンジン３２とともに、２つの完全なフレームをビットストリーム１２２に挿入して、ビットストリーム１２４Ｂを再構成バッファ３８中に生成することができる。
【０１５１】
図９Ｂに示すように、ビットストリーム１２４Ｂは、前に損失したフレームの代わりに２つの追加のフレームを含む。フレームＰ４のビデオデータが受信され、復号された後まで、このフレーム挿入技法は実行されない。これらの追加のフレームは、図９Ｂのビットストリーム１２４Ｂにおいて「Ｐ１」として両方とも示されて、隠蔽エンジン５０がフレームＰ１を２回繰り返すことによって２つの損失したフレームを隠蔽し、フレームＰ４より前にこれらの２つの繰返しフレームを再構成バッファ３８に挿入することを表す。損失したフレームＰ２及びＰ３の代わりに、繰り返されたＰ１フレームがある場合、フレームＰ４は依然として、ビットストリームにおいて３フレーム後のフレームを参照するが、この場合、そのフレームは、Ｉフレームではなく、より適切に繰り返されたフレームＰ１である。
【０１５２】
代替として、隠蔽エンジン５０は、フレームを交換せず、代わりに、フレームＰ４など、フレームの１つのＮＡＬヘッダ内に符号化された参照フレーム依存関係を修正することができる。例えば、隠蔽エンジン５０は、マッピング４８を受信し、フレームＰ４にアクセスするための１つの終了フレーム番号４８Ｄを再構成バッファ３８に追加する。これに基づいて、フレームＰ４が正しいフレームを参照するように、隠蔽エンジン５０はビットストリームの参照インデックスを修正することができる。例えば、フレームＰ４が、ビットストリーム１２２に示すようにＩフレームではなくフレームＰ１に依存するように、隠蔽エンジン５０は次に、フレームＰ４のＮＡＬヘッダにアクセスし、依存シンタックス要素を修正する。新しいフレームを参照フレームバッファに単に挿入することがより容易なことがある。いずれの場合も、ここで、フレームＰ４は予測符号化のためのその参照としてフレームＰ１を使用して復号及び再構成でき、それによって、復号エラーがフレームＰ４及び他の後続のフレームに伝搬することを防ぎ、フレームＰ４の正確な再構成を実行する。
【０１５３】
ビットストリーム１２４Ｂは、便利な隠蔽機構として、繰返しフレームを表すが、隠蔽エンジン５０は、損失したフレームを隠蔽又は交換するために、他の隠蔽技法を実行することができる。従って、本開示で説明する効率的なエラー処理技法は、この点について厳密に限定されるべきではない。例えば、フレームＰ１〜Ｐ４を閲覧するときに、より滑らかな動きを生成するために、隠蔽エンジン５０がより複雑な動き補償フレーム補間方式を適用するように、エラー処理技法を実装することができる。従って、フレームＰ１を単に２回繰り返すことによって２つの損失したフレームＰ２及びＰ３を再現する、又は、代替的に、補間又は他のより複雑な技法を使用して、損失したフレームＰ２及びＰ３の近似を再現することができる。
【０１５４】
例えば、隠蔽エンジン５０は２つのフレームを挿入し、それによって、フレームＰ４がフレームＰ１に正しく依存するように依存関係を訂正し、フレームＰ４を復号する。幾つかの態様では、隠蔽エンジン５０は、再構成バッファ３８中のフレームＰ１及びＰ４にアクセスし、上述のように、フレーム補間方式を使用して決定されたフレームＰ１とＰ４との間の動きに基づいて、繰り返されたフレームＰ１を推定することができる。このようにして繰り返されたフレームＰ１を推定することによって、隠蔽エンジン５０は、再生中に閲覧されたときの動きを平滑化する近似フレームＰ２及びＰ３を生成することができる。いずれの場合も、参照フレーム不整合を訂正することによって、この隠蔽技法は、復号プロセスを実質的に修正することなしに、フレームＰ４がフレームＰ１をその予測参照フレームとして使用することを可能にし、フレームＰ４が正確に再構成されることを可能にすることができる。
【０１５５】
図９Ｃは概して、図９Ａ及び図９Ｂで概説したシナリオに対応するが、２つの連続するフレームＰ２及びＰ３ではなく、単一のフレームＰ２の損失を示す。この場合、フレーム不整合は１つのみであるが、フレームＰ３及びＰ４は依然として間違ったフレームを参照することになる。図９Ｃは、元の符号化ビットストリーム１２０と、フレームＰ２全体が損失している受信したビットストリーム１２３とを示す。この場合、図９Ｃのビットストリーム１２５に示すように、参照フレーム不整合をなくすために、隠蔽エンジン５０は、フレームＰ２の代わりにフレームＰ１を繰り返す。従って、フレームＰ４は正しいフレームを参照することができる。この場合も、ＲＴＰ情報を使用して、フレーム番号を比較することによって、又は他の技法によって、参照フレーム不整合を検出することができる。更に、フレームＰ２を交換することは、フレームＰ１などフレームを単に繰り返す、又はフレームＰ２を交換するためにフレームを補間することによって達成できる。
【０１５６】
図１０は、複数参照フレームを可能にするビットストリーム中の損失したフレームに対してエラー処理及び隠蔽を実行する際のビデオデコーダの例示的な動作を示すフローチャートである。図１０のフローチャートは、図７のフローチャートに実質的に対応する。例えば、図１０は、ビデオデコーダ２６が符号化ビデオフレームデータを受信し（９２）、復号されているカレントスライスの開始ＭＢ番号と開始フレーム番号とを決定する（９４）プロセスを示す。カレントスライスを復号する（９６）過程で、復号エラーが検出された（９８）場合、エラー検出モジュール４０はエラーフラグを設定する（１０２）。復号エラーがなく（９８）、スライスの終了にまだ達していない（１００）場合、ビデオデコーダ２６はカレントスライスを復号し続ける。スライスの終了に達した（１００）、又はエラーが検出され（９８）、エラーフラグが設定された（１０２）場合、ビデオデコーダ２６は次の利用可能なスライスに進み、その開始ＭＢ番号と開始フレーム番号とを決定する（１０３）。
【０１５７】
エラーフラグが設定されている（１０４）場合、エラーマッピングモジュール４２は、次の利用可能なスライスの開始ＭＢ番号に基づいて、損失又は破損したデータセグメントの終了ＭＢ番号を決定し（１０６）、次の利用可能なスライスの開始フレーム番号に基づいて終了フレーム番号を決定する（１０８）。更に、１つ以上のフレームが損失しているとき、繰り返されたフレームの挿入を可能にするために、開始フレーム番号と終了フレーム番号との間の差が１よりも大きいかどうかを決定する（１２６）ように、エラーマッピングモジュール４２を構成することができる。１よりも大きい場合、ビットストリームから少なくとも１つのフレームがなくなっている。ビットストリームからなくなっているフレームの数は通常、フレーム番号差−１に等しい。従って、フレーム番号差が３である場合、一般に、ビットストリームからなくなった２つのフレームがある。
【０１５８】
フレーム番号差、即ち、開始フレーム番号と終了フレーム番号との間の差が１よりも大きいと決定すると、エラーマッピングモジュール４２は、前のフレームを繰り返し、なくなっているフレームの代わりにそれを挿入する（１２８）ようにエラー隠蔽モジュール３６に指示する。上述のように、前のフレームを繰り返す代わりに、動き補償補間など他の技法によって交換フレームを生成するように隠蔽モジュール３６を構成することができる。代替として、フレームを交換する代わりに、例えば、その後のフレームが適切な参照フレームを使用するように、参照インデックスに損失したフレームの数（即ち、フレーム番号差−１）を追加することによって、１つ以上の後のフレームのための参照フレームインデックス情報を調整するように隠蔽モジュール３６を構成することができる。
【０１５９】
繰り返された又は補間されたフレームと交換される損失したフレームの数は、フレーム差に基づく（１２８）。フレーム番号差が３である場合、例えば、前のフレームを１回、即ち、次の２つのフレームのために繰り返すことができる。フレーム番号差が２である場合、前のフレームを１回、即ち、次のフレームのために繰り返すことができる。従って、交換されるフレームの数は、フレーム番号差−１に等しいとすることができる。フレーム番号差が１よりも大きくない（１２６）、又は損失したフレームの十分な数が交換された（１２８）場合、例えば、図７を参照しながら説明したように、エラー隠蔽モジュール３６は、開始ＭＢ番号及び終了ＭＢ番号並びに開始フレーム番号及び終了フレーム番号に基づいてエラーを隠蔽し（１１０）、次の利用可能なスライスをカレントスライスとして復号する（９６）ことに先だって、エラーフラグをリセットする（１１０）。
【０１６０】
前のフレームを繰り返すこと、又は代替隠蔽機構を適用することの他に、エラー隠蔽モジュール３６は、交換されなかったＭＢの隠蔽のための技法を適用すること（１１０）に進み、次いで、次の利用可能なスライスをカレントスライスとして復号すること（９６）に進む。カレントスライスとして使用される次の利用可能なスライスは、例えば、開始ＭＢ番号及び開始フレーム番号を得る（１０３）スライスである。損失したフレームを繰り返すことに加えて、エラー隠蔽モジュール３６は、カレントスライス及びフレーム中のＭＢを隠蔽することができる。
【０１６１】
開始フレーム番号及び終了フレーム番号から、エラーが２つ以上のフレームにわたるということがわかったので、エラー隠蔽モジュール３６は、カレントフレームの開始ＭＢから（９８ＭＢが適用可能な最大数であると仮定して）ＭＢ９８までのＭＢを隠蔽することができる。更に、エラー隠蔽モジュール３６は、最後の交換されたフレームに続くＭＢを次の利用可能なスライスのポイントまで、即ち、終了ＭＢ番号まで隠蔽することができる。従って、隠蔽は、第１のフレーム中のＭＢを隠蔽することと、１つ以上の損失したフレームのために第１のフレームを繰り返すことと、損失したフレームに続くフレーム中のＭＢを隠蔽することとの組合せを含むことができる。
【０１６２】
図１１Ａ及び図１１Ｂは、複数参照フレームを可能にする例示的なビットストリームへのエラー処理及び隠蔽技法の適用を示す図である。図１１Ａの例では、ビットストリームは、最初のＩフレームと４つの連続するＰフレーム（Ｐ０、Ｐ１、Ｐ２、Ｐ３）とを含む。復号エラーが、フレームＰ０の（復号エラーが開始するスライスの開始である）ＭＢ８８で開始し、フレームＰ１をわたって、フレームＰ２のＭＢ５７まで続くＭＢの損失を生じる。この場合、開始ＭＢ番号及び開始フレーム番号は、それぞれＭＢ８８及びフレームＰ０である。フレームＰ２中の次の利用可能なスライスがＭＢ７５で開始する場合、終了ＭＢ番号及び終了フレーム番号は、それぞれＭＢ７４及び（フレームＰ２の）３である。
【０１６３】
図１１Ａの例では、フレームＰ２とＰ０との間のフレーム番号差は３−１＝２であり、１つのフレーム全体（フレームＰ１）の損失を示す。エラー隠蔽モジュール３６は、フレームＰ０のＭＢ８８〜９８を隠蔽し、フレームＰ０を繰り返すことによってフレームＰ１を隠蔽し、フレームＰ２のＭＢ０〜７４を隠蔽する。例えば、エラーマッピングモジュール３４は、復号エラーがフレームＰ０及びＰ１にわたることを示し、Ｐ０を開始ＭＢ８８からＭＢ９８におけるフレームの終了まで隠蔽すべきであることを示す。図１０の動作１１０では、エラーマッピングモジュール４２は、２つのエラー範囲、１つは、（フレームＰ０を繰り返すことによって交換された）交換されたフレームＰ１より前のＰ０中の損失したＭＢ、もう１つは、交換されたフレームＰ１の後のフレームＰ２中の損失したＭＢをマッピングすることができる。第１のエラー範囲は、開始ＭＢをフレームＰ０のＭＢ８８として、及び終了ＭＢをフレームＰ０のＭＢ９８として指定する。次いで、エラー隠蔽モジュール３６は、この第１のエラー範囲中のＭＢを隠蔽する。
【０１６４】
第２のエラー範囲は、開始ＭＢを、交換されたフレームＰ１の後の次のＭＢ、即ち、フレームＰ２中のＭＢ０として指定し、既存の終了ＭＢ、即ち、フレームＰ２中のＭＢ７４を保持することができる。次いで、エラー隠蔽モジュール３６は、この第２のエラー範囲中のＭＢを隠蔽する。従って、Ｐ１を隠蔽するために、得られたフレームＰ０の繰返しがあれば、エラーマッピングモジュール３４は、新しい開始ＭＢ番号及び開始フレーム番号を、それぞれＭＢ０及びフレームＰ２として計算し、前に計算された終了ＭＢ及び終了フレーム番号を使用することができる。これらの番号を使用して、エラー隠蔽モジュール３６は、開始ＭＢ０において開始し、次の利用可能なスライスの開始ＭＢ−１として計算された、終了ＭＢ７４まで続くフレームＰ２中のＭＢを隠蔽することができる。
【０１６５】
フレームが繰り返されるとき、ＭＢの隠蔽を処理するための他の技法を使用することができる。エラー処理モジュール３４は、様々な方法で、フレームＰ１中の損失したＭＢの隠蔽を処理することができる。従って、図１１Ａを参照しながら説明したプロセスは、例示のために与えられる。
【０１６６】
図１１Ｂの例では、復号エラーは、フレームＰ０の一部、フレームＰ１及びＰ２のすべて、及びフレームＰ３の一部にわたる。この場合、開始ＭＢはＭＢ８８であり、開始フレームはフレームＰ０である。次の利用可能なスライスがフレームＰ３のＭＢ５３において開始すると仮定すると、終了ＭＢはＭＢ５２である。終了フレームはフレームＰ３である。この場合、終了フレームＰ３及び開始フレームＰ０のフレーム番号差は、３−０＝３である。従って、ビットストリーム中に２つの損失したフレーム（Ｐ１及びＰ２）がある。
【０１６７】
エラーマッピングモジュール４２は、フレームＰ０中のエラーが検出されたスライスの開始ＭＢ８８からの第１のエラー範囲と、フレームＰ３の開始から終了ＭＢ５２（次の利用可能なスライスの開始ＭＢ−１）まで続く第２のエラー範囲とをマッピングすることができる。しかしながら、ルックアヘッド動作は必要ない。代わりに、ビデオデコーダ２６は、フレームＰ３に達したとき、エラーフラグのステータスに帰属して、エラー隠蔽をトリガすることができる。エラー隠蔽モジュール３６は、例えば、直接、復号エンジン３２を介して、フレームＰ０中のＭＢ［８８，９８］を隠蔽し、又は、損失したフレームＰ１及びＰ２のためにフレームＰ０を繰り返し、フレームＰ３中のＭＢ［０，５２］を隠蔽する。次いで、ビデオデコーダ２６は、フレームＰ３中の残りのスライスを復号することに進む。
【０１６８】
上述のように、本技法は、実際のエラーが検出された後にエラー処理が行われるので、低い計算オーバーヘッドを提供することができる。従って、本技法は、不必要な計算を回避することができるので、低い電力消費を提供し、デジタル信号プロセッサ（ＤＳＰ）がパーサを実装し、特定用途向け集積回路（ＡＳＩＣ）がピクセル再構成を実装するときなど、２つ以上のプロセッサが関与する本技法の実装における通信及び妨害を低減する。また、本開示で説明する技法は非連続的な方法ではなく連続的な方法で動作するので、ルックアヘッド復号技法と比較すると、本技法はより効果的なハードウェアアーキテクチャ及び実装形態を与えることができる。本技法は、隠蔽を必要とするセグメントの正確な識別を通して復号エラーの影響を低減することによって、ビデオ品質を更に改善することができる。
【０１６９】
本明細書で説明した技術は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実装できる。モジュール、ユニット、又はコンポーネントとして説明する特徴は、集積論理装置に一緒に、又は個別であるが相互運用可能な論理装置として別々に実装できる。場合によっては、様々な特徴は、集積回路チップ又はチップセットなどの集積回路装置として実装できる。ソフトウェアで実装した場合、これらの技法は、実行されると、上記で説明した方法の１つ以上をプロセッサに実行させる命令を備えるコンピュータ可読媒体によって少なくとも部分的に実現できる。
【０１７０】
コンピュータ可読媒体は、パッケージング材料を含むことがある、コンピュータプログラム製品の一部をなすことができる。コンピュータ可読媒体は、ランダムアクセスメモリ（ＲＡＭ）、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、読取り専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気又は光学データ記憶媒体などのコンピュータデータ記憶媒体を備えることができる。本技法は、追加又は代替として、命令又はデータ構造の形態でコードを搬送又は伝達し、コンピュータによってアクセス、読取り、及び／又は実行できるコンピュータ可読通信媒体によって、少なくとも部分的に実現できる。
【０１７１】
コード又は命令は、１つ以上のＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、又は他の等価な集積又はディスクリート論理回路など、１つ以上のプロセッサによって実行できる。従って、本明細書で使用する「プロセッサ」という用語は、前述の構造、又は本明細書で説明する技法の実装に好適な他の構造のいずれかを指す。更に、幾つかの態様では、本明細書で説明する機能を、専用のソフトウェアモジュール又はハードウェアモジュールの内部に与えることができる。本開示はまた、本開示で説明した技法の１つ以上を実装する回路を含む様々な集積回路装置のいずれかを企図する。そのような回路は、単一の集積回路チップ、又はいわゆるチップセット中の複数の相互運用可能な集積回路チップで提供できる。そのような集積回路装置は様々な適用例において使用でき、適用例のいくつかは携帯電話ハンドセットなどのワイヤレス通信装置での使用を含む。
【０１７２】
開示する技法の様々な態様について説明した。これら及び他の態様は以下の特許請求の範囲内に入る。
【図１】
2014090477.tif 000003
【図２】
2014090477.tif 000004
【図３】
2014090477.tif 000005
【図４】
2014090477.tif 000006
【図５】
2014090477.tif 000007
【図６】
2014090477.tif 000008
【図７】
2014090477.tif 000009
【図８】
2014090477.tif 000010
【図９Ａ】
2014090477.tif 000011
【図９Ｂ】
2014090477.tif 000012
【図９Ｃ】
2014090477.tif 000013
【図１０】
2014090477.tif 000014
【図１１Ａ】
2014090477.tif 000015
【図１１Ｂ】
2014090477.tif 000016
【手続補正書】
【提出日】平成26年1月20日(2014.1.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
符号化ビデオデータのカレントユニットの開始を決定することと、
前記カレントユニットの少なくとも一部分を復号することと、
前記カレントユニット中の復号エラーを検出することと、
前記符号化ビデオデータの次の利用可能なユニットの開始を決定することと、
前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定することと、
前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽することと、を含む、ビデオ復号方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１７２
【補正方法】変更
【補正の内容】
【０１７２】
開示する技法の様々な態様について説明した。これら及び他の態様は以下の特許請求の範囲内に入る。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
［１］  符号化ビデオデータのカレントユニットの開始を決定することと、前記カレントユニットの少なくとも一部分を復号することと、前記カレントユニット中の復号エラーを検出することと、前記符号化ビデオデータの次の利用可能なユニットの開始を決定することと、前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定することと、前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽することと、を含む、ビデオ復号方法。
［２］  前記カレントユニット及び前記次の利用可能なユニットの各々がビデオデータスライスを含む、請求項１］に記載の方法。
［３］  前記破損データセグメントが、前記カレントユニットと符号化ビデオデータの少なくとも１つの追加のユニットとを含む、請求項１］に記載の方法。
［４］  前記カレントユニットが第１のフレームのカレントスライスであり、前記破損データセグメントが、前記カレントスライスと第２のフレームからの符号化ビデオデータの少なくとも１つの追加のスライスとを含む、［１］に記載の方法。
［５］  前記復号エラーが検出された場合、前記復号エラーの前記検出を示すためにエラーフラグを設定することと、前記エラーフラグが設定されているとき、前記次の利用可能なユニットの前記開始に基づいて前記破損データセグメントの前記終了を決定することとを更に備える、［１］に記載の方法。
［６］  前記次の利用可能なユニットが少なくとも１つのスライスを備え、前記方法は、前記復号エラーが検出されたとき、前記スライスに関連するスライスヘッダを探すことを更に備える、［５］に記載の方法。
［７］  前記復号エラーが検出された場合、前記カレントユニットの復号を止めることと、前記次の利用可能なユニットを復号することに進むこととを更に含む、［５］に記載の方法。
［８］  前記復号エラーが検出されなかった場合、第１のユニット全体を復号することを更に含む、［１］に記載の方法。
［９］  前記復号エラーが、シンタックスエラー、セマンティックエラー、又はエントロピー符号化エラーの少なくとも１つを含む、［１］に記載の方法。
［１０］  前記カレントユニットの開始を決定することが、前記カレントユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号を決定することを含み、前記破損データセグメントの終了を決定することが、前記第２のユニットの開始より前に第２のＭＢ番号を決定することを含み、隠蔽することが、前記第１のＭＢ番号から前記第２のＭＢ番号までの前記破損データセグメントを隠蔽することを含む、［１］に記載の方法。
［１１］  前記第２のユニットの開始を決定することが、前記第２のユニットの前記開始に関連する第３のＭＢ番号を決定することを備え、前記第２のＭＢ番号を決定することが、前記第２のＭＢ番号を生成するために、前記第３のＭＢ番号から１を減算することを備える、［１０］に記載の方法。
［１２］  前記第１のユニットの開始を決定することが、前記第１のユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号と第１のフレーム番号とを決定することを備え、前記破損データセグメントの終了を決定することが、前記破損データセグメントの前記終了に関連する第２のＭＢ番号と第２のフレーム番号とを決定することを備え、隠蔽することが、前記第１のＭＢ番号及び前記第２のＭＢ番号と前記第１のフレーム番号及び前記第２のフレーム番号とに基づいて前記破損データセグメントの少なくとも一部分を隠蔽することを備え、前記第１のフレーム番号と前記第２のフレーム番号とが、同じことも、異なることもある、［１０］に記載の方法。
［１３］  １つ以上のフレームの損失を検出することと、別のフレームの参照フレーム不整合を隠蔽するために前記１つ以上の損失したフレームを交換することとを更に含む、［１］に記載の方法。
［１４］  符号化ビデオデータのカレントユニットの開始を決定するための手段と、前記カレントユニットの少なくとも一部分を復号するための手段と、前記カレントユニット中の復号エラーを検出するための手段と、前記符号化ビデオデータの次の利用可能なユニットの開始を決定するための手段と、前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定するための手段と、前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽するための手段と、を備える、ビデオ復号装置。
［１５］  前記カレントユニット及び前記次の利用可能なユニットの各々がビデオデータスライスを含む、［１４］に記載の装置。
［１６］  前記破損データセグメントが、前記カレントユニットと符号化ビデオデータの少なくとも１つの追加のユニットとを含む、［１４］に記載の装置。
［１７］  前記カレントユニットが、第１のフレームのカレントスライスであり、前記破損データセグメントが、前記カレントスライスと第２のフレームからの符号化ビデオデータの少なくとも１つの追加のスライスとを含む、［１４］に記載の装置。
［１８］  前記復号エラーが検出された場合、前記復号エラーの前記検出を示すためにエラーフラグを設定するための手段と、  前記エラーフラグが設定されているとき、前記次の利用可能なユニットの前記開始に基づいて前記破損データセグメントの前記終了を決定するための手段とを更に備える、［１４］に記載の装置。
［１９］  前記次の利用可能なユニットが少なくとも１つのスライスを備え、前記装置は、前記復号エラーが検出されたとき、前記スライスに関連するスライスヘッダを探すための手段を更に備える、［１８］に記載の装置。
［２０］  前記復号エラーが検出された場合、前記カレントユニットの復号を止めるための手段と、前記次の利用可能なユニットを復号することに進むための手段とを更に備える、［１８］に記載の装置。
［２１］  前記復号エラーが検出されなかった場合、第１のユニット全体を復号するための手段を更に備える、［１４］に記載の装置。
［２２］  前記復号エラーが、シンタックスエラー、セマンティックエラー、又はエントロピー符号化エラーの少なくとも１つを備える、［１４］に記載の装置。
［２３］  前記カレントユニットの開始を決定するための前記手段が、前記カレントユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号を決定するための手段を備え、前記破損データセグメントの終了を決定するための前記手段が、前記第２のユニットの開始より前に第２のＭＢ番号を決定するための手段を備え、隠蔽するための前記手段が、前記第１のＭＢ番号から前記第２のＭＢ番号までの前記破損データセグメントを隠蔽するための手段を備える、［１４］に記載の装置。
［２４］  前記第２のユニットの開始を決定するための前記手段が、前記第２のユニットの前記開始に関連する第３のＭＢ番号を決定するための手段を備え、前記第２のＭＢ番号を決定するための前記手段が、前記第２のＭＢ番号を生成するために、前記第３のＭＢ番号から１を減算するための手段を備える、［２３］に記載の装置。
［２５］  前記第１のユニットの開始を決定するための前記手段が、前記第１のユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号と第１のフレーム番号とを決定するための手段を備え、前記破損データセグメントの終了を決定するための前記手段が、前記破損データセグメントの前記終了に関連する第２のＭＢ番号と第２のフレーム番号とを決定するための手段を備え、隠蔽するための前記手段が、前記第１のＭＢ番号及び前記第２のＭＢ番号と前記第１のフレーム番号及び前記第２のフレーム番号とに基づいて前記破損データセグメントの少なくとも一部分を隠蔽するための手段を備え、前記第１のフレーム番号と前記第２のフレーム番号とが、同じことも、異なることもある、［２３］に記載の装置。
［２６］  １つ以上のフレームの損失を検出するための手段と、  別のフレームの参照フレーム不整合を隠蔽するために前記１つ以上の損失したフレームを交換するための手段とを更に備える、［１４］に記載の装置。
［２７］  符号化ビデオデータのカレントユニットの少なくとも一部分を復号する復号エンジンと、  カレントユニット中の復号エラーを検出するエラー検出モジュールと、  前記カレントユニットの開始を決定し、前記符号化ビデオデータの次の利用可能なユニットの開始を決定し、前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定するエラーマッピングモジュールと、  前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽するエラー隠蔽モジュールとを備える、ビデオ復号装置。
［２８］  前記カレントユニット及び前記次の利用可能なユニットの各々がビデオデータスライスを含む、［２７］に記載の装置。
［２９］  前記破損データセグメントが、前記カレントユニットと符号化ビデオデータの少なくとも１つの追加のユニットとを含む、［２７］に記載の装置。
［３０］  前記カレントユニットが、第１のフレームのカレントスライスであり、前記破損データセグメントが、前記カレントスライスと第２のフレームからの符号化ビデオデータの少なくとも１つの追加のスライスとを含む、［２７］に記載の装置。
［３１］  前記エラー検出モジュールが、前記復号エラーの前記検出を示すためにエラーフラグを設定し、前記エラーマッピングモジュールは、前記エラーフラグが設定されているとき、前記次の利用可能なユニットの前記開始に基づいて前記破損データセグメントの前記終了を決定する、［２７］に記載の装置。
［３２］  前記次の利用可能なユニットが少なくとも１つのスライスを備え、前記復号エンジンは、前記復号エラーが検出されたとき、前記スライスに関連するスライスヘッダを探す、［３１］に記載の装置。
［３３］  前記復号エラーが検出された場合、前記復号エンジンは、前記カレントユニットの復号を止め、前記次の利用可能なユニットを復号することに進む、［３１］に記載の装置。
［３４］  前記復号エラーが検出されなかった場合、前記復号エンジンは、第１のユニット全体を復号する、［２７］に記載の装置。
［３５］  前記復号エラーが、シンタックスエラー、セマンティックエラー、又はエントロピー符号化エラーの少なくとも１つを備える、［２７］に記載の装置。
［３６］  前記エラーマッピングモジュールが、前記カレントユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号を決定し、前記第２のユニットの開始より前に第２のＭＢ番号を決定し、前記エラー隠蔽モジュールが、前記第１のＭＢ番号から前記第２のＭＢ番号までの前記破損データセグメントを隠蔽する、［２７］に記載の装置。
［３７］  前記エラーマッピングモジュールが、前記第２のユニットの前記開始に関連する第３のＭＢ番号を決定し、前記第２のＭＢ番号を生成するために、前記第３のＭＢ番号から１を減算することによって前記第２のＭＢ番号を決定する、［３６］に記載の装置。
［３８］  前記エラーマッピングモジュールが、前記第１のユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号と第１のフレーム番号とを決定し、前記破損データセグメントの前記終了に関連する第２のＭＢ番号と第２のフレーム番号とを決定し、前記エラー隠蔽モジュールが、前記第１のＭＢ番号及び前記第２のＭＢ番号と前記第１のフレーム番号及び前記第２のフレーム番号とに基づいて前記破損データセグメントの少なくとも一部分を隠蔽し、前記第１のフレーム番号と前記第２のフレーム番号とが、同じことも、異なることもある、［３６］に記載の装置。
［３９］  前記エラー隠蔽モジュールが、１つ以上のフレームの損失を検出し、別のフレームの参照フレーム不整合を隠蔽するために前記１つ以上の損失したフレームを交換する、［２７］に記載の装置。
［４０］  前記装置がワイヤレス通信装置ハンドセットを備える、［２７］に記載の装置。
［４１］  前記装置が集積回路装置を備える、［２７］に記載の装置。
［４２］  符号化ビデオデータのカレントユニットの開始を決定することと、  前記カレントユニットの少なくとも一部分を復号することと、前記カレントユニット中の復号エラーを検出することと、前記符号化ビデオデータの次の利用可能なユニットの開始を決定することと、前記復号エラーが検出された場合、前記次の利用可能なユニットの前記開始に基づいて破損データセグメントの終了を決定することと、前記カレントユニットの前記開始と前記破損データセグメントの前記終了とに基づいて前記破損データセグメントを隠蔽することと、を１つ以上のプロセッサに行わせるための命令を含む、コンピュータ可読媒体。
［４３］  前記カレントユニット及び前記次の利用可能なユニットの各々がビデオデータスライスを含む、［４２］に記載のコンピュータ可読媒体。
［４４］  前記破損データセグメントが、前記カレントユニットと符号化ビデオデータの少なくとも１つの追加のユニットとを含む、［４２］に記載のコンピュータ可読媒体。
［４５］  前記カレントユニットが、第１のフレームのカレントスライスであり、前記破損データセグメントが、前記カレントスライスと第２のフレームからの符号化ビデオデータの少なくとも１つの追加のスライスとを含む、［４２］に記載のコンピュータ可読媒体。
［４６］  前記復号エラーが検出された場合、前記復号エラーの前記検出を示すためにエラーフラグを設定することと、前記エラーフラグが設定されているとき、前記次の利用可能なユニットの前記開始に基づいて前記破損データセグメントの前記終了を決定することとを前記１つ以上のプロセッサに行わせるための命令を更に含む、［４２］に記載のコンピュータ可読媒体。
［４７］  前記次の利用可能なユニットが少なくとも１つのスライスを備え、前記命令は、前記復号エラーが検出されたとき、前記スライスに関連するスライスヘッダを探すことを前記１つ以上のプロセッサに行わせる、［４６］に記載のコンピュータ可読媒体。
［４８］  前記復号エラーが検出された場合、前記カレントユニットの復号を止めることと、前記次の利用可能なユニットを復号することに進むこととを前記１つ以上のプロセッサに行わせるための命令を更に含む、［４６］に記載のコンピュータ可読媒体。
［４９］  前記命令は、前記復号エラーが検出されなかった場合、第１のユニット全体を復号することを前記１つ以上のプロセッサに行わせる、［４２］に記載のコンピュータ可読媒体。
［５０］  前記復号エラーが、シンタックスエラー、セマンティックエラー、又はエントロピー符号化エラーの少なくとも１つを含む、［４２］に記載のコンピュータ可読媒体。
［５１］  前記命令が、前記カレントユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号を決定することと、前記第２のユニットの開始より前に第２のＭＢ番号を決定することと、前記第１のＭＢ番号から前記第２のＭＢ番号までの前記破損データセグメントを隠蔽することとを前記１つ以上のプロセッサに行わせる、［４２］に記載のコンピュータ可読媒体。
［５２］  前記命令が、前記第２のユニットの前記開始に関連する第３のＭＢ番号を決定することと、前記第２のＭＢ番号を生成するために、前記第３のＭＢ番号から１を減算することとを前記１つ以上のプロセッサに行わせる、［５１］に記載のコンピュータ可読媒体。
［５３］  前記命令が、前記第１のユニットの前記開始に関連する第１のマクロブロック（ＭＢ）番号と第１のフレーム番号とを決定することと、前記破損データセグメントの前記終了に関連する第２のＭＢ番号と第２のフレーム番号とを決定することと、前記第１のＭＢ番号及び前記第２のＭＢ番号と前記第１のフレーム番号及び前記第２のフレーム番号とに基づいて前記破損データセグメントの少なくとも一部分を隠蔽することとを前記１つ以上のプロセッサに行わせ、前記第１のフレーム番号と前記第２のフレーム番号とが、同じことも、異なることもある、［５１］に記載のコンピュータ可読媒体。
［５４］  前記命令が、１つ以上のフレームの損失を検出することと、  別のフレームの参照フレーム不整合を隠蔽するために前記１つ以上の損失したフレームを交換することとを前記１つ以上のプロセッサに行わせる、［４２］に記載のコンピュータ可読媒体。
【外国語明細書】
2014090477000001.pdf