(57)【特許請求の範囲】
【請求項１】
方法において、
ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも１つのエラーを、ビデオデコーダにより検出することと、
前記ビデオデコーダと前記ビデオエンコーダとの間のデータ通信に対する往復移動時間を決定することと、
前記ビデオデコーダにより検出された以前のエラーを示している第１のフィードバックメッセージを、前記ビデオデコーダが前記ビデオエンコーダに最後に送った時間である、最後に送られた時間を決定することと、前記以前のエラーは、前記ビデオデコーダにより以後に検出された前記少なくとも１つのエラーとは異なるエラーであり、
現在の時間を、前記最後に送られた時間と前記往復移動時間との合計と比較することと、
前記比較に基づいて、前記ビデオデコーダにより以後に検出された前記少なくとも１つのエラーを示している第２のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定することとを含み、
前記第２のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定することは、
前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第２のフィードバックメッセージを送ることと、
前記最後に送られた時間を、前記現在の時間に等しいように設定することと
を含む方法。
【請求項２】
前記往復移動時間を決定することは、前記ビデオデコーダと前記ビデオエンコーダとの間で交換される、少なくとも１つの対のメッセージに基づいて、前記往復移動時間を測定または推定することを含む請求項１記載の方法。
【請求項３】
前記ビデオエンコーダから、前記コード化ビデオデータを受信することをさらに含み、前記少なくとも１つのエラーを検出することは、前記ビデオデコーダによる前記コード化ビデオデータのデコーディングの際に、少なくとも１つのデコーディングエラーを検出することを含む請求項１記載の方法。
【請求項４】
前記少なくとも１つのエラーを検出することは、パケットロスを検出することを含み、
前記方法は、
前記パケットロスを検出すると、失われたパケットのカウントをインクリメントすることと、
前記失われたパケットのカウントをしきい値と比較することと、
前記失われたパケットのカウントが、前記しきい値を超えている場合に、および、前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第２のフィードバックメッセージを前記ビデオエンコーダに送ることと、
前記失われたパケットのカウントが、前記しきい値を超えていない場合に、前記パケットロスを示している、別のタイプのフィードバックメッセージを、前記ビデオエンコーダに送ることと
をさらに含む請求項１記載の方法。
【請求項５】
前記第２のフィードバックメッセージを前記ビデオエンコーダに送ると、前記失われたパケットのカウントをゼロに等しいように設定することをさらに含む請求項４記載の方法。
【請求項６】
前記しきい値は、パケットロスしきい値と、１フレーム当たりのパケットの平均数とに少なくとも部分的に基づいている請求項４記載の方法。
【請求項７】
デバイスにおいて、
記憶デバイスと、
前記記憶デバイスに結合されている１つ以上のプロセッサとを具備し、
前記１つ以上のプロセッサは、
ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも１つのエラーを検出し、
前記デバイスと前記ビデオエンコーダとの間のデータ通信に対する往復移動時間を決定し、
前記プロセッサにより検出された以前のエラーを示している第１のフィードバックメッセージを、前記デバイスが前記ビデオエンコーダに最後に送った時間である、最後に送られた時間を決定し、前記以前のエラーは、前記プロセッサにより以後に検出された前記少なくとも１つのエラーとは異なるエラーであり、
現在の時間を、前記最後に送られた時間と前記往復移動時間との合計と比較し、
前記比較に基づいて、前記プロセッサにより以後に検出された少なくとも１つのエラーを示している第２のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定するように構成されており、
前記１つ以上のプロセッサは、少なくとも、前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第２のフィードバックメッセージを送ることと、前記最後に送られた時間を、前記現在の時間に等しいように設定することとにより、前記第２のフィードバックメッセージを前記ビデオエンコーダに送るかどうかを決定するように構成されているデバイス。
【請求項８】
前記１つ以上のプロセッサは、少なくとも、前記デバイスと前記ビデオエンコーダとの間で交換される、少なくとも１つの対のメッセージに基づいて、前記往復移動時間を測定または推定することにより、前記往復移動時間を決定するように構成されている請求項７記載のデバイス。
【請求項９】
前記１つ以上のプロセッサは、前記ビデオエンコーダから、前記コード化ビデオデータを受信するようにさらに構成されており、前記１つ以上のプロセッサは、前記デバイスによる前記コード化ビデオデータのデコーディングの際に、少なくとも１つのデコーディングエラーを検出することにより、前記少なくとも１つのエラーを検出するように構成されている請求項７記載のデバイス。
【請求項１０】
前記少なくとも１つのエラーは、パケットロスを含み、
前記１つ以上のプロセッサは、
前記パケットロスを検出すると、失われたパケットのカウントをインクリメントし、
前記失われたパケットのカウントをしきい値と比較し、
前記失われたパケットのカウントが、前記しきい値を超えている場合に、および、前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第２のフィードバックメッセージを前記ビデオエンコーダに送り、
前記失われたパケットのカウントが、前記しきい値を超えていない場合に、前記パケットロスを示している、別のタイプのフィードバックメッセージを、前記ビデオエンコーダに送るようにさらに構成されている請求項７記載のデバイス。
【請求項１１】
前記１つ以上のプロセッサは、前記第２のフィードバックメッセージを前記ビデオエンコーダに送ると、前記失われたパケットのカウントをゼロに等しいように設定するようにさらに構成されている請求項１０記載のデバイス。
【請求項１２】
前記しきい値は、パケットロスしきい値と、１フレーム当たりのパケットの平均数とに少なくとも部分的に基づいている請求項１０記載のデバイス。
【請求項１３】
前記デバイスは、ワイヤレス通信デバイスハンドセットを具備する請求項７記載のデバイス。
【請求項１４】
前記デバイスは、１つ以上の集積回路デバイスを具備する請求項７記載のデバイス。
【請求項１５】
デバイスにおいて、
ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも１つのエラーを検出する手段と、
前記デバイスと前記ビデオエンコーダとの間のデータ通信に対する往復移動時間を決定する手段と、
前記検出する手段により検出された以前のエラーを示している第１のフィードバックメッセージを、前記デバイスが前記ビデオエンコーダに最後に送った時間である、最後に送られた時間を決定する手段と、前記以前のエラーは、前記検出する手段により以後に検出された前記少なくとも１つのエラーとは異なるエラーであり、
現在の時間を、前記最後に送られた時間と前記往復移動時間との合計と比較する手段と、
前記比較に基づいて、前記検出する手段により以後に検出された少なくとも１つのエラーを示している第２のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定する手段とを具備し、
前記第２のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定する手段は、
前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第２のフィードバックメッセージを送り、
前記最後に送られた時間を、前記現在の時間に等しいように設定するように構成されているデバイス。
【請求項１６】
コンピュータ読取り可能記憶媒体において、
ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも１つのエラーを、ビデオデコーダにより検出することと、
前記ビデオデコーダと前記ビデオエンコーダとの間のデータ通信に対する往復移動時間を決定することと、
前記ビデオデコーダにより検出された以前のエラーを示している第１のフィードバックメッセージを、前記ビデオデコーダが前記ビデオエンコーダに最後に送った時間である、最後に送られた時間を決定することと、前記以前のエラーは、前記ビデオデコーダにより以後に検出された前記少なくとも１つのエラーとは異なるエラーであり、
現在の時間を、前記最後に送られた時間と前記往復移動時間との合計と比較することと、
前記比較に基づいて、前記ビデオデコーダにより以後に検出された少なくとも１つのエラーを示している第２のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定することとを１つ以上のプロセッサに生じさせるための命令を含み、
前記第２のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定することは、
前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第２のフィードバックメッセージを送ることと、
前記最後に送られた時間を、前記現在の時間に等しいように設定することと
を含むコンピュータ読取り可能記憶媒体。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、２００８年４月７日に出願された、米国仮出願第６１／０４３，００５号の利益を主張し、その全体の内容が参照により明白にここに組み込まれている。
【技術分野】
【０００２】
本開示は、ビデオデータのエンコーディングおよび／またはデコーディングに関する。
【背景】
【０００３】
ビデオコーディングおよび圧縮技術は、フレームシーケンス中のビデオフレーム間の時間的冗長性と、ビデオフレーム間内の空間的冗長性との両方を低減させることにより、効率的な圧縮を達成してもよい。ビデオコーディングおよび圧縮技術の例は、ＩＴＵ−Ｔ Ｈ．２６１、Ｈ．２６３、動画像専門家グループ（ＭＰＥＧ）１、ＭＰＥＧ−２、およびＭＰＥＧ−４の標準規格、ならびに、ＩＴＵ−Ｔ Ｈ．２６４規格およびそれに対応する、ＩＳＯ／ＩＥＣ ＭＰＥＧ−４パート１０すなわちＡｄｖａｎｃｅｄ Ｖｉｄｅｏ Ｃｏｄｉｎｇ（ＡＶＣ）によって説明されている。
【０００４】
イントラコード化されたフレームは、自立型であり、ビデオフレーム内の空間的冗長性を低減させる。しかしながら、インターコード化されたフレームは、他のコード化されたフレーム（例えば、以前にコード化されたフレーム）からの動き補償により予測されて、時間的冗長性が低減される。インターコード化は、高い圧縮効率を提供するかもしれない。しかしながら、フレーム間の相互依存は、インターコード化フレームに対するコード化されたビットストリームを、チャネルエラーをより伝搬しやすいものにさせる。圧縮されたビットストリーム中に導入されるエラーは、ビデオデコーダにより復元されたビデオフレーム中にエラーをもたらすかもしれない。
【０００５】
イントラコード化は、これらのフレーム中のビデオデータのコード化が、以前の、または、後続のフレーム中のビデオデータのコード化から独立していることから、チャネルエラーを伝搬する確率を最小にする支援をするかもしれない。しかしながら、イントラコード化フレームは、インターコード化フレームよりも、より多くのコード化データを何倍も備えており、それゆえに、送信帯域幅の問題を生じさせるかもしれない。結果として、特に、デコーディングが、リアルタイム、ストリーミング、またはビデオアプリケーションにより実行されるとき、デコードされるビデオ出力側で品質の劣化があるかもしれない。したがって、いくつかのケースにおいて、ビデオコーディング技術は、フレームデータのすべてをイントラコード化する代わりに、個々のフレーム内のデータの個々のセグメント（例えば、マクロブロック）をイントラコード化するだけであってもよい。
【０００６】
インターコード化フレーム（すなわち、予測フレーム（Ｐフレーム）または双方向予測フレーム（Ｂフレーム））内の何らかの所定のマクロブロックは、イントラマクロブロックとしてイントラコード化されてもよい。イントラコード化フレームと同様に、イントラコード化マクロブロックは、別の（例えば、以前に）コード化されたフレームからのデータから独立してコード化される。マクロブロックにイントラコード化を強いる方法は、エンコーダイントラリフレッシュと呼ばれてもよい。
【概要】
【０００７】
一般に、本開示は、ビデオデコーダにより提供されたエラーフィードバックの受信に応答して、ビデオユニット（例えば、フレーム）のシーケンス内のビデオデータのセグメント（例えば、マクロブロック）をリフレッシュするレートを適応的に決定する技術に関する。このエラーフィードバックは、ビデオデコーダが、フレームシーケンスの１つ以上のフレーム内のパケットを受信し損なったことを示すパケットロスフィードバックを含んでいてもよい。
【０００８】
いくつかのケースにおいて、エラーフィードバックは、ビデオデコーダにより送られる、ピクチャロス表示（ＰＬＩ）メッセージおよび／または汎用否定応答（ＧＮＡＣＫ）メッセージを含む。ＰＬＩメッセージは、１つ以上のピクチャに属している、不定の量のコード化ビデオデータのロスを示し、一方、ＧＮＡＣＫメッセージは、失われている、コード化ビデオデータの特定のパケットを識別してもよい。
【０００９】
エラーフィードバックアルゴリズムを実現して、ビデオデコーダから受信されるエラーフィードバックに基づいて、ビデオエンコーダにより、マクロブロックのイントラリフレッシュレートを設定してもよい。ビデオエンコーダは、このイントラリフレッシュレートを使用して、フレームシーケンスの各フレーム中の１つ以上のマクロブロックをイントラコード化してもよい。
【００１０】
１つの観点において、方法は、コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信することと、フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定することとを含み、１つのビデオユニット内のビデオデータのセグメントのイントラコード化は、シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立している。
【００１１】
１つの観点において、コンピュータ読取り可能媒体は、コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信することと、フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定することとを１つ以上のプロセッサに生じさせるための命令を含み、１つのビデオユニット内のビデオデータのセグメントのイントラコード化は、シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立している。
【００１２】
１つの観点において、デバイスは、記憶デバイスと、記憶デバイスに結合され、コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信し、フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定するように構成されている、１つ以上のプロセッサとを備えており、１つのビデオユニット内のビデオデータのセグメントのイントラコード化は、シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立している。
【００１３】
１つの観点において、方法は、ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも１つのエラーを、ビデオデコーダにより検出することと、ビデオデコーダとビデオエンコーダとの間のデータ通信に対する往復移動時間を決定することと、ビデオデコーダにより検出された以前のエラーを示しているフィードバックメッセージを、ビデオデコーダがビデオエンコーダに最後に送った時間である、最後に送られた時間を決定することと、現在の時間を、最後に送られた時間と往復移動時間との合計と比較することと、比較に基づいて、ビデオデコーダにより検出された少なくとも１つのエラーを示している第２のフィードバックメッセージを、ビデオエンコーダに送るかどうかを決定することとを含む。
【００１４】
１つの観点において、デバイスは、記憶デバイスと、記憶デバイスに結合されている１つ以上のプロセッサとを備えている。１つ以上のプロセッサは、ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも１つのエラーを検出し、デバイスとビデオエンコーダとの間のデータ通信に対する往復移動時間を決定し、デバイスにより検出された以前のエラーを示しているフィードバックメッセージを、デバイスがビデオエンコーダに最後に送った時間である、最後に送られた時間を決定し、現在の時間を、最後に送られた時間と往復移動時間との合計と比較するように構成されている。比較に基づいて、１つ以上のプロセッサは、デバイスにより検出された少なくとも１つのエラーを示している第２のフィードバックメッセージを、ビデオエンコーダに送るかどうかを決定するようにさらに構成されている。
【００１５】
本開示中で記述する技術は、ハードウェア、ソフトウェア、ファームウェア、または、これらの任意の組み合わせ中で実現してもよい。ソフトウェアにおいて実現される場合、ソフトウェアは、プロセッサ中で実行されてもよく、プロセッサは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）、または、デジタル信号プロセッサ（ＤＳＰ）、あるいは、他の均等の集積またはディスクリート論理回路のような、１つ以上のプロセッサを指してもよい。本技術を実行するための命令を含んでいるソフトウェアは、コンピュータ読取り可能媒体中に最初に記憶され、プロセッサにより、ロードおよび実行されてもよい。
【００１６】
したがって、本開示はまた、本開示中で記述するさまざまな技術のいずれをもプロセッサに実行させるための命令を含むコンピュータ読取り可能媒体を熟慮する。いくつかのケースにおいて、コンピュータ読取り可能媒体は、コンピュータプログラムプロダクトの一部を形成してもよく、コンピュータプログラムプロダクトは、製造業者に売られてもよく、および／または、デバイス中で使用されてもよい。コンピュータプログラムプロダクトは、コンピュータ読取り可能媒体を含んでいてもよく、いくつかのケースにおいて、実装材料を含んでいてもよい。
【００１７】
添付図面および以下の詳細な説明において、１つ以上の観点の詳細を示す。他の特徴、目的および利点が、詳細な説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１８】
【図１】図１は、ネットワークによりビデオデコーダに通信可能に結合されているビデオエンコーダを図示するブロック図である。
【図２】図２は、図１中で示されるビデオエンコーダおよび／またはビデオデコーダ内に含まれていてもよい例示的なプロセッサを図示するブロック図である。
【図３】図３Ａないし３Ｆは、いくつかの数のブロックが、シーケンスの各フレーム内でイントラコード化されている、フレームシーケンスを図示するブロック図である。
【図４】図４は、受信したエラーフィードバックに基づいて、ビデオデータのセグメントをイントラコード化するレートを決定するために、ビデオエンコーダにより実行してもよい方法を説明するフロー図である。
【図５】図５は、受信したパケットロス情報に基づいて、ビデオデータのブロックをイントラコード化するイントラリフレッシュレートを決定するために、ビデオエンコーダにより実行してもよい方法を説明するフロー図である。
【図６】図６は、図５の方法により決定されたイントラリフレッシュレートの修正値を取得するために、ビデオエンコーダにより実行してもよい方法のフロー図である。
【図７】図７は、汎用否定応答（ＧＮＡＣＫ）メッセージを受信次第、パケットエラーレートを計算するために、ビデオエンコーダにより実行してもよい方法のフロー図である。
【図８】図８は、パケットシーケンス番号を含むＧＮＡＣＫメッセージの受信に基づいて、修正されたイントラリフレッシュレートを決定するために、ビデオエンコーダにより実行してもよい方法を説明するフロー図である。
【図９】図９は、ＰＬＩ（ピクチャロス表示）メッセージをビデオエンコーダに送るかどうかを決定するためにビデオデコーダにより実行してもよい方法を説明するフロー図である。
【図１０】図１０は、ビデオエンコーダに対して、ＧＮＡＣＫを送るか、またはＰＬＩを送るかを決定するために、ビデオデコーダにより実行してもよい方法のフロー図である。
【詳細な説明】
【００１９】
図１は、ネットワーク１６によりデバイス（ビデオデコーダ）２０に通信可能に結合されている例示的なデバイス（ビデオエンコーダ）２を図示するブロック図である。ビデオエンコーダ２およびビデオデコーダ２０は、独立型のデバイスを構成してもよく、または、より大きなシステムの一部であってもよい。例えば、ビデオエンコーダ２およびビデオデコーダ２０のそれぞれは、（ワイヤレス移動ハンドセットのような）ワイヤレス通信デバイス、デジタルカメラ、ビデオカメラ、テレビ電話機、デジタルマルチメディアプレイヤ、パーソナルデジタルアシスタント（ＰＤＡ）、ビデオゲームコンソール、パーソナルコンピュータまたはラップトップデバイス、あるいは、他のビデオデバイスを構成してもよく、または、それらの一部であってもよい。ビデオエンコーダ２およびビデオデコーダ２０はまた、それぞれ、１つ以上の集積回路またはチップ内に含まれていてもよく、１つ以上の集積回路またはチップは、上述のデバイスのいくつかまたはすべてにおいて使用されてもよい。ネットワーク１６は、いくつかのケースにおいて、ワイヤードまたはワイヤレスネットワークを備えていてもよい。１つの観点において、ネットワーク１６は、プライベートネットワークまたはパブリックネットワーク（例えば、インターネット）であってもよい。
【００２０】
図示および記述のためだけに、デバイス２をビデオエンコーダとして参照し、デバイス２０をビデオデコーダとして参照する。以下の記述において、さまざまな技術は、エンコーディング（例えば、圧縮）を実行するデバイスと、デコーディング（例えば、復元）を実行するデバイスとの間の情報交換に関する詳細を提供し、したがって、デバイス２（ビデオエンコーダ）およびデバイス２０（ビデオデコーダ）は、ネットワーク１６によって通信可能に結合されているように示されている。しかしながら、いくつかの観点において、デバイス２および／またはデバイス２０は、エンコーディングおよび／またはデコーディングの動作を実行してもよいことを理解すべきである。しかしながら、後続の記述において、説明のためだけに、デバイス２は、ビデオエンコーディング動作を少なくとも実行し、それゆえに、ビデオエンコーダとして参照され、一方、デバイス２０は、ビデオデコーディング動作を少なくとも実行し、それゆえに、ビデオデコーダとして参照されるものと仮定している。
【００２１】
いくつかのケースにおいて、ビデオエンコーダ２およびビデオデコーダ２０は、それぞれ、グラフィックスアプリケーション、ビデオアプリケーションおよび／または他のマルチメディアアプリケーションのような、さまざまなアプリケーションを実行可能であってもよい。例えば、ビデオエンコーダ２およびビデオデコーダ２０は、グラフィックスアプリケーション、ビデオゲームアプリケーション、ビデオ再生アプリケーション、デジタルカメラアプリケーション、インスタントメッセージングアプリケーション、ビデオ遠隔会議アプリケーション、移動アプリケーション、または、ビデオストリーミングアプリケーションに対して使用してもよい。
【００２２】
ビデオエンコーダ２およびビデオデコーダ２０は、それぞれ、さまざまな、異なるデータのタイプおよびフォーマットを処理することが可能であってもよい。例えば、それらは、静止画像データ、動画像（ビデオ）データ、または他のマルチメディアデータを処理できてもよい。以下でより詳細に説明するように、ビデオエンコーダ２は、イントラリフレッシュ手続きの間に、ビデオユニットのシーケンス内の、ビデオフレームのような１つ以上のビデオユニット内の１つ以上のセグメント（例えば、ブロックまたはマクロブロック）あるいはビデオデータをイントラコード化して、シーケンス内の空間的冗長性の低減を支援できる。イントラコード化されるセグメントは、以前にコード化された、または後にコード化されるビデオユニットからのビデオデータから独立してコード化されるセグメントである。
【００２３】
個々のフレーム内の何らかの所定のマクロブロックは、イントラマクロブロックとしてイントラコード化されてもよい。イントラコード化されるフレームと同様に、イントラコード化マクロブロックは、別の（例えば、以前に）コード化されたフレームからのデータから独立してコード化される。マクロブロックにイントラコード化を強いる方法は、エンコーダイントラリフレッシュと呼ばれてもよい。マクロブロックがイントラコード化されるレートは、イントラフレッシュレートとして参照されてもよい。例えば、ビデオデコーダ２０による逆離散コサイン変換（ＩＤＣＴ）の不整合や、エラー耐性のような、マクロブロックをイントラリフレッシュするさまざまな理由があってもよい。
【００２４】
例えば、Ｈ．２６１およびＨ．２６３のブロックベースのビデオコード化標準規格の状況内で、ＩＤＣＴ不整合を制御するために、画像中の各マクロブロックの位置は、係数がそのマクロブロックに対して送信される、予め定められている回数ごとに少なくとも１回イントラコード化されてもよい。マクロブロックのイントラリフレッシュは、ＤＣＴ／ＩＤＣＴの不整合に起因するエラー伝搬の程度を制限し得る。
【００２５】
エラー耐性を向上させるために、選択されたマクロブロックをイントラコード化して、チャネルエラーのために、不正確に復元されているか、または、隠されている破損マクロブロックを使用することに起因するエラー伝搬を制限してもよい。これらの破損マクロブロックは、デコーディングの際に、視覚的に好ましくないかもしれない。さらに、時間予測のために、破損したマクロブロックを後方に参照する、後続のフレームからの、正しくデコードされるマクロブロックもまた、視覚的に好ましくないかもしれない。これらのタイプのアーティファクトは、ＤＣＴ／ＩＤＣＴ不整合のエラーよりも好ましくないかもしれない。したがって、それらは、エラーをこうむりやすいチャネルを通してデータを伝達するとき、イントラリフレッシュ戦略を駆り立てるかもしれない。
【００２６】
ビデオデコーダ２０から受信されるエラー（パケットロス）フィードバック１８に基づいて、ビデオエンコーダ２は、イントラコード化ブロックに対するイントラリフレッシュのレートをダイナミックに調整できる。そのような方法において、ビデオエンコーダ２は、ビデオデコーダ２０に対するビデオデータ送信の品質を最適化し、ビデオデコーダ２０に対するビデオデータ送信中のエラーの数を低減させ、さらに、ある期間にわたってビデオデコーダ２０に送られるイントラコード化ブロックの数を制御することにより、送信帯域幅を管理できる。いくつかの観点において、フィードバック１８は、パケットロスの表示を含む、コード化ビデオデータに関係する、任意の数の異なるタイプのパケットエラーに関する表示を含んでいてもよい。説明のためだけに、以下の記述において、フィードバック１８は、パケットロスフィードバックに関するものと仮定する。
【００２７】
ビデオエンコーダ２は、記憶媒体４と、表示デバイス１２と、１つ以上のプロセッサ１４とを含む。記憶媒体４は、命令および／またはデータを記憶できる、何らかの固定メモリまたは揮発性メモリを含み、それらは、例えば、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）や、読出し専用メモリ（ＲＯＭ）や、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）や、組込みダイナミックランダムアクセスメモリ（ｅＤＲＡＭ）や、静的ランダムアクセスメモリ（ＳＤＲＡＭ）や、フラッシュメモリのようなものである。表示デバイス１２は、表示のためにビデオデータを表示できる任意のデバイスであってもよく、それは、ＬＣＤ（液晶ディスプレイ）、プラズマ表示デバイス、または他のテレビジョン（ＴＶ）表示デバイスのようなものである。プロセッサ１４は、図２の例において示される、制御プロセッサ、ビデオプロセッサ、グラフィックスプロセッサ、および／または表示プロセッサのような、１つ以上のプロセッサを含んでいてもよい。表示デバイス１２およびプロセッサ１４は、それぞれ、記憶媒体４から読み出すことができ、記憶媒体４に書き込むことができる。例えば、プロセッサ１４は、記憶媒体４中に記憶されている１つ以上の機能モジュールからの命令を実行してもよい。これらのモジュールは、無線によって、記憶媒体４にダイナミックにダウンロードされるダウンロード可能なモジュールを備えていてもよい。１つの観点において、これらのモジュールのうちの１つ以上は、アプリケーション開発者により生成されるアプリケーションプログラミングインターフェース（ＡＰＩ）命令から発生されるか、またはコンパイルされる、バイナリ命令を備えていてもよい。
【００２８】
図１は、記憶媒体４内に記憶されている、そのような３つのモジュールの例を示し、３つのモジュールのそれぞれは、実行のための、１つ以上の命令またはコードを含んでいてもよい。図１中に見られるように、記憶媒体４は、イントラエンコーダ６と、予測（インター）エンコーダ８と、レート適合モジュール１０とに対する命令を記憶する。イントラエンコーダ６は、実行時に、１つ以上のビデオユニット（例えば、フレーム）内のビデオデータの１つ以上のセグメント（例えば、ブロック）をイントラコード化できる。イントラエンコーダ６により実行されるイントラコード化は、ビデオユニットのシーケンス内の他のビデオユニット内に含まれているデータセグメントのコード化に基づいていない、独立のコード化を含んでいてもよい。予測エンコーダ８は、ビデオユニットにわたる時間的冗長性を低減させるために、ビデオデータの１つ以上のセグメントをインターコード化できる。インターコード化は、予測技術を実現して、以前にコード化されたフレームまたは後にコード化されるフレームからの動き補償に基づいてビデオデータをエンコードしてもよい。レート適合モジュール１０は、ビデオデコーダ２０により提供されるパケットロスフィードバック１８を受信および処理して、イントラエンコーダ６により実現されるイントラコード化のレート（すなわち、イントラリフレッシュレート）を決定（例えば、設定、修正）できる。
【００２９】
図１の例は、記憶媒体４内に記憶され、プロセッサ１４により実行可能なモジュールとして、イントラエンコーダ６、予測エンコーダ８およびレート適合モジュール１０を示しているが、これらのモジュールは、他のケースにおいて、（プロセッサ１４のハードウェア内のような）ハードウェア内で実現してもよい。プロセッサ１４は、いくつかのケースにおいて、図２の例において示されているような、汎用マイクロプロセッサおよび／または他のタイプのプロセッサのような、１つ以上のタイプのプロセッサを含んでいてもよい。
【００３０】
ある期間にわたって、ビデオエンコーダ２は、デコーディングおよび表示のために、コード化ビデオデータをビデオデコーダ２０に送る。ビデオデコーダ２０は、それが（例えば、パケットシーケンス番号を追跡することにより）ビデオデータの１つ以上のパケットを失っていることを決定した場合、ビデオデコーダ２０は、コード化ビデオデータを失っているという表示をビデオエンコーダ２に送ってもよい。図１において、この表示は、パケットロスフィードバック１８を構成する。いくつかのケースにおいて、パケットロスフィードバック１８は、リアルタイム制御プロトコル（ＲＴＣＰ）データまたはメッセージを含んでいてもよい。例えば、パケットロスフィードバック１８は、１つ以上の汎用否定応答（ＧＮＡＣＫ）メッセージを含んでいてもよく、ＧＮＡＣＫメッセージはそれぞれ、失われているパケットのような、１つ以上のパケットを識別してもよい。パケットロスフィードバック１８は、１つ以上のピクチャロス表示（ＰＬＩ）メッセージを含んでいてもよく、ＰＬＩメッセージは一般に、１つ以上のピクチャに属している不定の量のコード化ビデオデータのロスを示す。いくつかのケースにおいて、パケットロスフィードバック１８は、パケットロスに関する情報を提供してもよい受信者報告メッセージのような、１つ以上のリアルタイムトランスポートプロトコル（ＲＴＰ）メッセージを含んでいてもよい。
【００３１】
図１の例において、ビデオデコーダ２０は、記憶媒体２２と、表示デバイス２８と、１つ以上のプロセッサ３０とを含む。記憶媒体４と同様に、記憶媒体２２は、例えば、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）や、読出し専用メモリ（ＲＯＭ）や、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）や、組込みダイナミックランダムアクセスメモリ（ｅＤＲＡＭ）や、静的ランダムアクセスメモリ（ＳＤＲＡＭ）や、または、フラッシュメモリのような、命令および／またはデータを記憶できる、任意の固定メモリまたは揮発性メモリを含んでいてもよい。表示デバイス１２と同様に、表示デバイス２８は、表示のためにビデオデータを表示できる任意のデバイスであってもよく、それは、ＬＣＤ（液晶ディスプレイ）、プラズマ表示デバイス、または他のテレビジョン（ＴＶ）表示デバイスのようなものである。プロセッサ３０は、制御プロセッサ、ビデオプロセッサ、グラフィックスプロセッサ、および／または表示プロセッサのような、１つ以上のプロセッサを含んでいてもよい。表示デバイス２８およびプロセッサ３０は、それぞれ、記憶媒体２２から読み出すことができ、記憶媒体２２に書き込むことができる。
【００３２】
図１中で示すように、記憶媒体２２は、２つの機能モジュールである、イントラデコーダ２４と予測（インター）デコーダ２６とに対する命令を含んでいてもよい。イントラデコーダ２４は、ビデオエンコーダ２によりネットワークを通して送られる１つ以上のビデオユニット（例えば、フレーム）内に含まれているビデオデータのイントラコード化セグメント（例えば、ブロック）をデコードして表示でできる。予測デコーダ２６は、ビデオエンコーダ２により送られるインターコード化セグメントをデコードして表示できる。プロセッサ３０は、これらのモジュール２４および２６を実行して、表示デバイス２８上でビデオデータを表示してもよい。図１の例は、記憶媒体２２内に記憶され、プロセッサ３０により実行可能なモジュールとして、イントラデコーダ２４、予測デコーダ２６を示しているが、これらのモジュールは、他のケースにおいて、（プロセッサ３０のハードウェア内のような）ハードウェア内で実現してもよい。プロセッサ３０は、いくつかのケースにおいて、図２の例において示されているような、汎用マイクロプロセッサおよび／または他のタイプのプロセッサのような、１つ以上のタイプのプロセッサを含んでいてもよい。
【００３３】
いくつかのケースにおいて、ビデオデコーダ２０は、さらに、エンコーディング動作を実行できる。これらのケースにおいて、ビデオデコーダ２０は、イントラエンコーダ６、予測エンコーダ８およびレート適合モジュール１０に類似のモジュールを含んでいてもよい。いくつかのケースにおいて、ビデオエンコーダ２はさらに、例えば、（デコーディングおよびエンコーディング動作の両方を実行してもよい）デバイス２０からコード化ビデオデータを受信するときに、デコーディング動作を実行できる。これらのケースにおいて、ビデオエンコーダ２は、イントラデコーダ２４と予測デコーダ２６とに類似のモジュールを含んでいてもよい。
【００３４】
図２は、１つの観点にしたがった、図１中で示したビデオエンコーダ２および／またはビデオデコーダ２０内に含まれていてもよい、例示的なプロセッサ５０を図示するブロック図である。ビデオエンコーダ２内に含まれているとき、図２中で示したプロセッサ５０は、プロセッサ１４の一部であってもよい。ビデオデコーダ２０内に含まれているとき、プロセッサ５０は、プロセッサ３０の一部であってもよい。プロセッサ１４およびプロセッサ３０は、それぞれ、１つ以上のプロセッサを含んでいてもよく、いくつかのケースにおいて、図２の例中で示したプロセッサのうちの１つ以上を含んでいてもよい。
【００３５】
プロセッサ５０は、複数のプログラム可能なプロセッサを含んでいてもよい。図２中で示すように、これらは、制御または汎用目的プロセッサ５２と、ビデオプロセッサ５４と、グラフィックスプロセッサ５６と、表示プロセッサ５８とを含んでいてもよい。制御プロセッサ５２は、ビデオプロセッサ５４、グラフィックスプロセッサ５６および／または表示プロセッサ５８を制御できてもよい。１つの観点において、プロセッサ５０は、他の形態の複数媒体のプロセッサを含んでいてもよい。
【００３６】
ビデオプロセッサ５４は、ビデオのエンコーディングおよびデコーディング動作の間に利用してもよく、さまざまなコード化アルゴリズムを実現してもよい。例えば、ビデオプロセッサ５４は、いくつかのケースにおいて、Ｈ．２６１、Ｈ．２６３、動画像専門家グループ（ＭＰＥＧ）１、ＭＰＥＧ−２、および／またはＭＰＥＧ−４のビデオコード化標準規格、ならびに、Ｈ．２６４標準規格およびそれに対応する、ＩＳＯ／ＩＥＣ ＭＰＥＧ−４パート１０すなわちＡｄｖａｎｃｅｄ Ｖｉｄｅｏ Ｃｏｄｉｎｇ（ＡＶＣ）を実現してもよい。ビデオプロセッサ５４はまた、ビデオデータをエンコードまたはデコードするときに、１つ以上の離散コサイン変換（ＤＣＴ）または逆離散コサイン変換（ＩＤＣＴ）を実現してもよい。
【００３７】
グラフィックスプロセッサ５６は、コンピュータ化されたグラフィックスをレンダリングし、操作し、表示するために利用される、専用のグラフィックスレンダリングデバイスであってもよい。グラフィックスプロセッサ５６は、さまざまな複雑なグラフィックス関連のアルゴリズムを実現してもよい。例えば、複雑なアルゴリズムは、２次元または３次元のコンピュータ化されたグラフィックスの表現に対応していてもよい。グラフィックスプロセッサ５６は、点、線、三角形または他の多角形の表面を形成して、表示デバイス１２または２８（図１）のようなディスプレイ上で、複雑な３次元画像を生成させるような、多数のいわゆる“基本の”グラフィックス動作を実現してもよい。表示プロセッサ５８は、表示デバイス上での画素データの表示を管理する。表示デバイス５８は、画素データに対して、回転および／またはスケーリング動作のような、さまざまな動作を実行してもよい。
【００３８】
図３Ａないし３Ｆは、フレームシーケンスを図示する図であり、１つの観点にしたがって、いくつかの数のブロックが、シーケンスの各フレーム内でイントラコード化されている。これらの図は、ブロック（例えば、マクロブロック）としてビデオデータのセグメントを示しているが、ビデオデータの、任意のサイズまたは形状のセグメントを使用できる。ブロックは、例えば、１６×１６画素マクロブロックのようなマクロブロックを備えていてもよく、または、いくつかのケースにおいて、小さいサブパーティション（１６×８、８×１６、８×８、４×８、８×４、４×４など）画素ブロックを備えていてもよい。
【００３９】
図３Ａないし３Ｆの例において、例示的なフレームシーケンスは、時間的シーケンス中で連続して互いに続く６つのフレームを含むものと仮定されている。（もちろん、他のケースまたは例において、フレームシーケンスは、６つよりも多い多くのフレームを含んでいてもよい。）各フレームは、異なる位置に配列されているブロックのアレイを含んでいてもよい。図３Ａないし３Ｆのそれぞれは、説明のために、これらの６つのフレームのうちの１つを示す。ビデオエンコーダ２（図１）は、各フレーム内のビデオデータのブロックをコード化して（例えば、イントラコード化および／またはインターコード化して）、デコーディングおよび表示のために、フレームをビデオデコーダ２０に送ることができる。ビデオエンコーダ２は、その予測エンコーダ８を使用して、何らかの所定のフレーム内のビデオデータの１つ以上のブロックをインターコード化してもよく、そのイントラエンコーダ６を使用して、何らかの所定のフレーム内のビデオデータの１つ以上のブロックをイントラコード化してもよい。ビデオエンコーダ２は、そのレート適合モジュール１０を使用して、ブロックのイントラコード化のレート（すなわち、イントラリフレッシュレート）、または、各フレーム中のイントラコード化ブロックの数を調整してもよい。
【００４０】
図３Ａないし３Ｆにおいて、時間的に連続したフレームのそれぞれは、６個のイントラコード化ブロック１０２を含んでいる。図３Ａないし３Ｆはまた、まだイントラコード化されていないブロック１００と、以前にイントラコード化されたブロック１０４とを描写する。いくつかのケースにおいて、所定のフレーム内でイントラコード化されない何らかのブロックを、インターコード化してもよい。しかしながら、図３Ａないし３Ｆの６つのフレームシーケンスにおいて理解できるように、（この例のケースと同様に、各ブロックが唯一のものであることから）いかなるブロックも２回イントラコード化されない場合、ブロックのすべてが、６つのフレームのシーケンス中で１回イントラコード化されるであろう。この例において、同じ数のブロック（６個）が、各フレーム中でイントラコード化されるが、このことは必ずしも必要でないことに注目すべきである。各フレーム中でイントラコード化されないブロックは、インターコード化されてもよく、対応する、最も整合するブロックがイントラコード化されているか、または、インターコード化されている１つ以上のフレームを参照してもよい。
【００４１】
図３Ａないし３Ｆにおいて、６個のブロックだけが、シーケンスの各フレーム中でイントラコード化されることから、全フレーム中のすべての位置における各ブロックのイントラコード化を完了するのに６フレームかかる。しかしながら、他のブロックがインターコード化される場合、フレーム間に相互依存があるかもしれず、それは、コード化ビットストリームがチャネルエラーを伝搬しやすくなるかもしれず、ビデオデコーダ２０によりデコードされるビデオフレーム内でエラーをもたらすかもしれないことを意味する。各送信フレーム中でイントラコード化ブロックの数を増加させることは、エラーと、チャネルエラーにより生じるエラーの伝搬とを低減させるかもしれない。しかしながら、各フレーム中のイントラコード化ブロックの数を増加させることは、インターコード化に対するよりもイントラコード化に対してより多くのビットが使用される場合に、送信帯域幅を増加させるかもしれない。
【００４２】
したがって、ビデオエンコーダ２のレート適合モジュール１０は、イントラエンコーダ６により実行されるイントラコード化のレートを、ダイナミックに決定するか、または、調整してもよい。例えば、レート適合モジュール１０は、シーケンス中の各フレームに対するイントラコード化ブロックの数を決定してもよく、したがって、帯域幅と、エラー低減パラメータとのバランスを取ろうとして、この数を増加または減少させてもよい。以前に記述したように、レート適合モジュール１０は、いくつかのケースにおいて、ビデオデコーダ２０から受信されるパケットロスフィードバック１８に基づいて、イントラリフレッシュレートを決定してもよい。例えば、パケットロスまたはエラーにおいて、著しい量、または、増加があることをビデオデコーダ２０が示す場合、レート適合モジュール１０は、イントラリフレッシュレートを増加させることを決定して、エラーをさらに伝搬する確率を低減させる支援をしてもよい。これは、以下で詳細に説明する。
【００４３】
図４は、１つの観点にしたがって、エラーフィードバック１８のような、受信したエラーフィードバックに基づいて、ビデオデータのセグメントをイントラコード化するレートを決定するために、図１中で示したビデオエンコーダ２のようなビデオエンコーダにより実行してもよい方法を説明するフロー図である。図４は、ビデオエンコーダにより
実現してもよい、高いレベルの方法の詳細を示し、さまざまな観点のさらなる詳細は、図５ないし８のような、後続の図中で示されている。図４の以下の説明において、説明のためだけに、方法はビデオエンコーダ２により実行されることを仮定するであろう。
【００４４】
ビデオエンコーダ２は、コード化ビデオデータに関係するエラー（例えば、データのロス）を示すフィードバック１８をビデオデコーダ２０から受信してもよく、そのようなコード化ビデオデータは、ビデオデコーダ２０に対して、ビデオエンコーダ２により以前に送られているものであってもよい（１０６）。フィードバック１８を受信すると、ビデオエンコーダ２は、ビデオユニット（例えば、フレーム）のシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメント（例えば、ブロック）をイントラコード化するレートを決定してもよく、１つのビデオユニット内のビデオデータのセグメントのイントラコード化は、シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立している（１０８）。ビデオエンコーダ２は、受信したフィードバック１８を処理して、複数のビデオユニットおよび／またはビデオユニットのシーケンスに対してイントラコード化するレートを決定する動作を繰り返してもよい。
【００４５】
いくつかのケースにおいて、ビデオデコーダ２０から送られるフィードバック１８は、ビデオデコーダ２０により、コード化ビデオデータの少なくとも一部のロスを示している。ビデオデータの各セグメントは、ビデオデータの１つ以上のブロックを含んでいてもよく、ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの１つ以上のフレームまたはスライスを含んでいてもよい。１つのフレーム内のビデオデータのブロックのイントラコード化は、シーケンス内の他のフレーム内のビデオデータのブロックのコード化から独立していてもよい。
【００４６】
フィードバック１８は、１つの観点において、ピクチャロス表示（ＰＬＩ）と汎用否定応答（ＧＮＡＣＫ）とのうちの少なくとも１つを含んでいてもよい。フィードバック１８は、コード化ビデオデータを含んでいる、失われたパケットの数を示すフィードバックを含んでいてもよく、失われた各パケットは、ビデオエンコーダ２により、ビデオデコーダ２０に以前に送られているが、ビデオデコーダ２０により受信されていないものである。いくつかのケースにおいて、以下でさらに詳細に説明するように、イントラコード化するレートを決定することは、シーケンス内の１つ以上のビデオユニットにわたるエラーを訂正するターゲット訂正時間に少なくとも部分的に基づいていてもよい。
【００４７】
フィードバック１８が、失われたパケットの数を示すＧＮＡＣＫを含んでいるとき、イントラコード化するレートを決定することは、失われたパケットの数に少なくとも部分的に基づいていてもよい。いくつかのケースにおいて、ビデオエンコーダ２は、失われたパケットの第２の数を示す、ビデオデコーダ２０からの報告を受信してもよい。例えば、この報告は、ビデオデコーダ２０によりビデオエンコーダ２に定期的に送られる、一連のＲＴＣＰ受信者報告のうちの１つであってもよい。以下でさらに詳細に説明するように、１つの観点において、ビデオエンコーダ２は、ＧＮＡＣＫにより示された、失われたパケットの数と、報告により示された、失われたパケットの第２の数とのうちの少なくとも１つに基づいて、パケットエラーレートを計算してもよく、イントラコード化するレートを決定することは、パケットエラーレートに少なくとも部分的に基づく。例えば、ビデオエンコーダ２は、ＧＮＡＣＫまたは報告のどちらが、失われたパケットのより高い量を示しているかに基づいて、パケットエラーレートを計算してもよい。イントラコード化のレートを決定することは、さらに、ビデオユニットのシーケンス内の各ビデオユニット内に含まれるパケットの推定数に少なくとも部分的に基づいていてもよい。
【００４８】
図８を参照して以下でさらに詳細に説明するように、エラーフィードバック１８が、ＧＮＡＣＫメッセージを含む場合、ＧＮＡＣＫは、失われた各パケットを識別してもよく、ビデオエンコーダ２は、現在の時間と、識別された、失われたパケットのうちの１つがビデオデコーダ２０に以前に送られた時間との間の差に基づいて、経過時間を計算してもよい。ビデオエンコーダ２は、この経過時間に少なくとも部分的に基づいて、イントラコード化のレートを決定してもよい。いくつかのケースにおいて、ＧＮＡＣＫにより識別される、失われた各パケットは、関連するシーケンス番号を有する。シーケンス番号は、パケットがビデオエンコーダ２からビデオデコーダ２０に送られるときに、最初に、昇順でパケットに割り当てられてもよい。ビデオデコーダ２０は、それがどのパケットを受信しているかに関して跡を追ってもよく、また、これらのパケットの対応するシーケンス番号の経過を追ってもよい。したがって、シーケンス番号が昇順で送られていると仮定して、ビデオデコーダ２０により送られるＧＮＡＣＫは、任意の失われたパケットのシーケンス番号（または、失われたパケットに対するシーケンス番号範囲）を識別してもよい。
【００４９】
シーケンス番号により、失われたパケットを識別するＧＮＡＣＫを受信すると、ビデオエンコーダ２は、経過時間を計算してもよい。ビデオエンコーダ２は、ＧＮＡＣＫにより識別されている、どの、失われたパケットが、ビデオエンコーダ２によりビデオデコーダ２０に以前に送られた、イントラコード化セグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有しているかを決定してもよい。図８を参照して以下で詳細に記述するように、ビデオエンコーダ２は、ビデオエンコーダ２により維持されるような現在の時間と、決定された、失われたパケットがビデオエンコーダ２からビデオデコーダ２０に以前に送られた時間との間の差に基づいて、経過時間を計算してもよい。ビデオエンコーダ２は、シーケンス番号により識別されるような各パケットが、ビデオデコーダ２０に送られたときの跡を追うことにより、経過時間のそのような計算を実施してもよい。
【００５０】
上述したように、ビデオエンコーダ２は、フィードバック１８の受信と、ビデオユニットの複数のシーケンス中の各ビデオユニットに対する、イントラコード化するレートの決定とを繰り返してもよい。いくつかのケースにおいて、以下でさらに詳細に説明するように、ビデオユニットの１つのシーケンス内の異なるビデオユニットにわたる動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオエンコーダ２は、受信したフィードバック１８の処理と、ビデオユニットの複数のシーケンスにおけるイントラコード化するレートの決定とを繰り返すかどうかを決定してもよい。１つの観点において、動きのしきい値は、調整可能なパラメータであってもよく、そのようなパラメータは、いくつかのケースにおいて、ビデオエンコーダ２がビデオデータのセグメントをイントラコード化する、より高いレートを使用するときに、ビデオエンコーダ２により、より高いしきい値に設定されてもよい。
【００５１】
図５は、１つの観点にしたがって、受信したパケットロス情報に基づいて、ビデオデータのブロックをイントラコード化するためのイントラリフレッシュレートを決定する方法を説明するフロー図である。図５の例は、ビデオデータのブロックまたはマクロブロックに言及しているが、ビデオデータのさまざまな他のセグメント（サイズ、形状）が、さまざまな他のシナリオにおいてイントラコード化されてもよい。１つの観点において、図５中で示す方法は、ビデオデコーダ２０から受信されるパケットロスフィードバック１８に基づいて、ビデオエンコーダ２（図１）により実行されてもよい。
【００５２】
さまざまなシナリオにおいて、ビデオエンコーダ２（および、より詳細には、レート適合モジュール１０）は、受信したパケットロスフィードバックに基づいて、マクロブロックのイントラリフレッシュレートを決定してもよく、さまざまな基準またはファクタを使用して、イントラリフレッシュレートを計算してもよい。例えば、さらに詳細に説明するように、イントラリフレッシュレートを計算するときに、ビデオエンコーダ２は、ターゲット訂正時間、訂正されないエラーの確率、検出されるエラーの数、動きの量、および／または、ユーザにより感知されるエラーの制限された継続時間を使用してもよい。
【００５３】
図５および後続のフローに関して、さまざまなパラメータを記述する。これらのパラメータのいくつかは、以下で定義される。  
Target_Correction_Time（秒）：ビデオエンコーダ２がエラーを訂正しなければならない、パケットロスのようなエラーの、ビデオエンコーダ２による検出後の時間の最大量  
Current_Frame_Rate（１秒当たりのフレーム）：ビデオエンコーダ２により使用される、１秒当たりのフレームの現在の数。ビデオエンコーダ２が、target_enc_rate（ターゲットエンコードレート）パラメータにおける変更により、このパラメータを変える場合、レート適合モジュール１０は、ビデオエンコーダ２からのフレームの引渡しから、これを推定してもよい。いくつかのケースにおいて、ビデオエンコーダ２は、Current_Frame_Rateの値を、レート適合モジュール１０に示してもよい。  
Max_Intra_MB_%（０ないし１００％）：イントラコード化されるマクロブロックの最大許容百分率。データおよびフレームレートにしたがってフレームサイズを固定してもよいことから、このパラメータを使用して、ビデオ品質の劣化を制限してもよい。  
Intra_Repeat（整数）：パケットロスが検出されたときに、（フレームのシーケンスにわたる）フルのマクロブロックのイントラリフレッシュシーケンスが全画像にわたって実行される回数。  
Intra_MB_%_No_Loss（０ないし１００％）：検出されるパケットロスがないときの、イントラコード化される（リフレッシュされる）マクロブロックの百分率。  
Intra_MB_%（０ないし１００％）：ビデオエンコーダ２が、１フレーム（またはスライス）当たりに挿入すべき、イントラコード化される（リフレッシュされる）マクロブロックの百分率。  
Num_Intra_Frames（整数）：ビデオエンコーダ２がマクロブロックをイントラコード化している（リフレッシュしている）フレームの数。
【００５４】
さらに、ＭａｘおよびＭｉｎ演算を含む、さまざま式および計算を以下で示す。Ｍａｘ演算は、１セット内の２以上の可能性のある値のうちの最大値を選択し、Ｍｉｎ演算は、１セット内の２以上の可能性のある値のうちの最小値を選択するものと仮定される。
【００５５】
図５中で示した方法は、ビデオエンコーダ２がビデオデコーダ２０からＲＴＣＰフィードバックを受信しているかどうかを決定するために、繰返しチェックする（１１０）。そのようなフィードバックを受信すると、ビデオエンコーダは、フィードバックが、ビデオエンコーダ２によりビデオデコーダ２０に送信された１つ以上のパケットのロスを示しているかどうかを決定する（１１２）。例えば、ビデオデコーダ２０によりビデオエンコーダ２に送られるパケットロスフィードバック１８（図１）は、ビデオエンコーダにより送られたコード化ビデオデータの１つ以上のパケットのそのようなロスを示してもよい。
【００５６】
ビデオエンコーダ２が、何らかのパケットロス表示を受信していない場合、ビデオエンコーダ２は、レート適合モジュール１０を使用して、イントラリフレッシュレート、すなわち、マクロブロックに対する百分率（Intra_MB_%）をIntra_MB_%_No_Lossに等しいように決定または設定してもよく、Intra_MB_%_No_Lossは、調整可能なパラメータを含んでいてもよい（１１４）。いくつかのケースにおいて、ビデオエンコーダ２は、Intra_MB_%_No_Lossを自動的に設定または調整してもよい。いくつかのケースにおいて、ユーザがこのパラメータを設定また調整して、各フレーム中のイントラコード化マクロブロックの数を増加または減少させてもよい。
【００５７】
しかしながら、ビデオエンコーダ２が、パケットロスフィードバック１８のような、パケットロス表示を受信している場合、ビデオエンコーダ２は、それがＧＮＡＣＫまたはＰＬＩを受信しているかどうかを決定してもよい（１１６）。ＧＮＡＣＫは、失われた、または、エラーを持った、１つ以上の特定のパケットを示してもよい。Intra_refreshルーチンが、パケットロス表示を受信すると開始する（１１８）。
【００５８】
最初に、ビデオエンコーダ２のレート適合モジュール１０が、Intra_MB_%をMin{Max_Intra_MB_%, 100%／(Target_Correction_Time×Current_Frame_Rate)}に等しいように設定する（１２０）。Max_Intra_MB_%およびTarget_Correction_Timeは、それぞれ調整可能なパラメータであり、ビデオエンコーダ２により実行される特定のアプリケーションまたは動作に対して最適化される、最初の、予め規定されている値を有していてもよい。これらのパラメータは、ビデオエンコーダ２により実行される異なるアプリケーション（例えば、テレビ電話、ビデオストリーミング、ゲーム）に対して異なる値を有していてもよい。レート適合モジュール１０は、Intra_MB_%の値を決定するときに、これらのパラメータのそれぞれの値を使用する。
【００５９】
いくつかのケースにおいて、以下でさらに詳細に説明するように、レート適合モジュール１０は、図６ないし８中で示されているような、１つ以上のオプションの拡張機能を実現して、Intra_MB_%の修正値を取得してもよい（１２２）。レート適合モジュール１０は、例えば、イントラエンコーダ６および予測エンコーダ８を実行することにより、各フレーム中のマクロブロックに対するイントラリフレッシュレートとしてIntra_MB_%を使用して、ビデオフレームのシーケンスに対してイントラリフレッシュ手続きを開始することをビデオエンコーダ２に要求する（１２４）。ビデオエンコーダ２はまた、Num_Intra_framesの値をゼロに初期設定してもよい。イントラリフレッシュ手続きが開始しているビデオエンコーダ２により、入力が提供される。ビデオエンコーダ２はまた、各ビデオフレームの境界に到達しているときを示す（１２６）。これは、ＲＴＰ中で、タイムスタンプを設定し、および／またはビットをマーケットに出すために使用される、同じ表示の一部であってもよい。ビデオフレームの境界に到達しているとき、レート適合モジュール１０は、Num_Intra_Framesをインクリメントする（１２８）。Num_Intra_Framesは、Intra_MB_%の現在の値を使用して、イントラコード化マクロブロックを含むビデオフレームの数の跡を追うパラメータである。
【００６０】
各フレームの境界において、レート適合モジュール１０は、Num_Intra_Frames＞＝Ceil[100% ／Intra_MB_%]であるかどうかを決定する（１３０）。Num_Intra_Framesが、このシーリング（すなわち、最大しきい値）よりも小さい場合、ビデオエンコーダ２は、それがビデオデコーダ２０から別のパケットロス表示を受信しているかどうかを決定するためにチェックする（１３１）。そうでない場合、ビデオエンコーダ２は、再び、ビデオフレームの境界をチェックする（１２６）。しかしながら、ビデオエンコーダ２が、ビデオデコーダ２０から、パケットロスフィードバック１８のような別のパケットロス表示を受信している場合、ビデオエンコーダ２は、それがＧＮＡＣＫを受信しているか、またはＰＬＩを受信しているかを決定してもよい（１１６）。このケースにおいて、ビデオエンコーダ２は、Intra_refreshルーチン（１１８）を続ける。
【００６１】
Num_Intra_Framesが、このシーリング以上である場合、ビデオエンコーダ２は、このシーケンス内の各フレームに対するIntra_MB_%の現在の値（それによって、各フレーム中の、示された数のマクロブロックがイントラコード化されている）を使用して、ビデオフレームのフルのシーケンスをビデオデコーダ２０に送っている。レート適合モジュール１０は次に、図５中で示したRepeat_Intraルーチンを実行する（１３２）。このルーチンにおいて、レート適合モジュール１０は、ビデオエンコーダ２が、ビデオフレームの全シーケンスをイントラリフレッシュしている回数（Intra-refreshed）が、（２の初期値を有していてもよい別の調整可能なパラメータである）Intra_Repeatの値以上であるかどうかを決定する（１３４）。Intra_Repeatの値は、イントラリフレッシュされるフレームシーケンス内の１つ以上のマクロブロックに関係する可能性のある動きに対処するために調整されてもよい。そのような動きは、ビデオシーケンスに対してイントラリフレッシュシーケンスを１回以上繰り返すことにより訂正できるエラーを潜在的にもたらすかもしれない。
【００６２】
完全なイントラリフレッシュシーケンスが実行されている回数（Intra-refreshed）が、Intra_Repeatの値以上であるとき、レート適合モジュール１０は、ロスが検出されていない動作に戻り、Intra_MB_%＝Intra_MB_%_No_Lossに設定する。しかしながら、図５中で示されているように、Intra-refreshedが、Intra_Repeatの値より小さい場合、レート適合モジュール１０は、Intra-refreshedの値をインクリメントし（１３６）、再び、ビデオフレームの後続のシーケンスに対してIntra_refreshルーチン（１１８）を実行する。
【００６３】
図６は、Intra_MB_%の修正値を取得するために、図１中で示されているビデオエンコーダ２により実行してもよい方法のフロー図である。このIntra_MB_%の修正値は、図５中のボックス“オプションの、Intra_MB_%の改良”（１２２）内で指定されているとおり、図５の方法内で使用してもよい。１つの観点において、ビデオエンコーダ２は、図５中で示した方法を実行して、Intra_MB_%の初期値を計算してもよいが、フレームシーケンスの各ビデオフレーム内でイントラコード化マクロブロックを使用するときのために、図６中で示した方法をさらに実行して、Intra_MB_%の修正値を決定してもよい。
【００６４】
図６中で示した方法を実行することにより、ビデオエンコーダ２は、フレームシーケンス内のイントラコード化マクロブロックの１つのイントラリフレッシュシーケンス後の、訂正されていないエラーを有する確率を制限してもよい。レート適合モジュール１０は、イントラリフレッシュシーケンスの間のＲＴＰパケットロスレートの推定に少なくとも部分的に基づいて、Intra_MB_%の修正値を決定してもよく、ビデオデコーダ２０により提供されるＲＴＣＰ受信者報告内に含まれているfraction_lostパラメータを使用してもよい。fraction_lostパラメータは、最後の受信者報告が送られた以降に、ビデオデコーダ２０により失われているパケットの割合を示す。
【００６５】
さらに、レート適合モジュール１０が、ビデオデコーダ２０から、かなり多数のエラー（例えば、パケットロス）を検出しているとき、レート適合モジュール１０は、Intra_MB_%の値を増加させることができてもよい。そうすることにより、ビデオエンコーダ２は、（表示デバイス２８上で表示されるような）ビデオデコーダ２０のユーザにより見られるかもしれないエラーを、より素早く訂正でき得る。
【００６６】
図６と、後続のフロー図に関して、さまざまなパラメータを説明する。これらのパラメータのいくつかを以下で定義する。  
Target_Err_Pr（０−１）:単一のイントラリフレッシュシーケンス（すなわち、ビデオフレームのシーケンス）後の画像中にエラーがまだ存在する、ターゲットの確率。図６の例において、このパラメータは、１フレーム当たりのパケットの数の、予測されるＰＥＲ（パケットエラーレート）倍よりも高く設定される。  
α（０−１）：avg_norm_ppf（１フレーム当たりの平均標準化パケット）を推定するためのＩＩＲ（無限インパルス応答）フィルタの更新ファクタ。ビデオエンコーダ２は、０．１の値により開始してもよい。  
β（０−１０）：Intra_MB_%を決定するための調整ファクタ。ビデオエンコーダ２は、１．０の値により開始してもよい。  
PER（０−１）：パケットエラーレートであり、ビデオデコーダ２０から受信される最も最近のＲＴＣＰ受信者報告からのfraction_lostパラメータに等しいように設定されてもよい。  
avg_norm_ppf（実数）：１フレーム当たりの平均の“標準化された”パケットであり、５０ｋｂｐｓ（キロビットパー秒）のターゲットのエンコードレートおよび１０ｆｐｓ（フレームパー秒）に標準化されてもよい。  
inst_ppf（整数）：現在のフレーム中の、１フレーム当たりのパケット  
est_ppf（実数）：将来の１フレーム当たりの、パケットの推定数  
Target_enc_rate（ビットパー秒）：レート適合モジュール１０により設定されるtarget_encode_rateの現在の値
【００６７】
図６中で示すように、Intra_MB_%の修正値を計算するとき（１６３）に、ビデオエンコーダ２は、avg_norm_ppfの値を計算または推定してもよい（１５０）。いったん、パケットが準備され、ビデオエンコーダ２による送信の用意ができていると（１５２）、ビデオエンコーダ２は、現在のフレーム中の、１フレーム当たりのパケット数であるinst_ppfをインクリメントしてもよい（１５４）。いくつかのケースにおいて、inst_ppfは、フレーム中のＲＴＰパケットの数を示す。inst_ppfは、最後のパケットがフレームの終わりを示すまで、フレーム内の各パケットに対してさらにインクリメントされてもよい（１５６）。この時点で、ビデオエンコーダ２は、次のようにavg_norm_ppfの更新値を計算できる（１５８）。  
avg_norm_ppf＝(1-α)×avg_norm_ppf＋(α×inst_ppf)×(50kbps／target_encode_rate)×(Current_Frame_Rate／10fps)  
ここで、この特定の例において、ターゲットのエンコードレートは、５０ｋｂｐｓの予め規定されている値を基準にして標準化され、現在のフレームレートは、１０ｆｐｓの予め規定されている値を基準にして標準されると仮定してもよい。これらの予め規定されている値は、いくつかの例示的なシナリオだけで使用され、異なる設定において、さまざまな異なる値を有していてもよい。inst_ppfの値は、次のフレームに対してゼロにリセットできる（１６０）。示すように、avg_norm_ppfの値は、inst_ppfと、target_encode_rateと、（現在のフレームのフレームレートである）Current_Frame_Rateとの値に基づいている。図６中で示すように、このavg_norm_ppfの値は、est_ppfの値を計算するために使用されてもよい。
【００６８】
１つの観点において、est_ppf（１フレーム当たりの推定パケット）の値は、次のように計算してもよい：  
est_ppf＝avg_norm_ppf×(target_enc_rate／50kbps)×(10fps／Current_Frame_Rate)
ここで、この例において、ターゲットエンコードレートは、５０ｋｂｐｓの予め規定されている値を基準として標準化され、現在のフレームレートは、１０ｆｐｓの予め規定されている値を基準として標準化される（１６６）。予め規定されている値は、最適化されてもよく、さまざまな異なる設定において異なる値を有していてもよい。ターゲットのエンコードレート（target_enc_rate）を、等式に対する１つの入力パラメータとして提供してもよく、図５中で示した基本アルゴリズムからのIntra_MB_%を別のものとして提供してもよい（１６４）。１つの観点において、ターゲットのエンコードレート、target_enc_rateは、例えば、ビデオエンコーダ２により実行されているアプリケーションのタイプに基づいて調整されてもよい調整可能なパラメータを含んでいてもよい。１つの観点において、ターゲットのエンコードレートは、ダイナミックなレート適合アルゴリズムに基づいて調整されてもよく、ビデオエンコーダ２は、そのレートをネットワーク状態に適合させる。
【００６９】
ビデオエンコーダ２のレート適合モジュール１０は、ビデオデコーダ２０により送られるＲＴＣＰ受信者報告内に含まれているfraction_lostの値に等しいようにＰＥＲ（パケットエラーレート）の値を設定してもよく、上述したように、fraction_lostは、最後の受信者報告が送られた以降に、ビデオデコーダ２０により失われているパケットの割合を示す（１６８）。レート適合モジュール１０は、Target_Err_Prの更新値を計算してもよく、Target_Err_Prは、次のような、単一のイントラリフレッシュシーケンス後の画像中にまだエラーが存在している、ターゲットの確率である（１７０）：  
Target_Err_Pr＝Max{Target_Err_Pr,est_ppf×PER]
【００７０】
この計算を実施した後、レート適合モジュール１０は、図５中で示した方法または基本アルゴリズムにより決定されるIntra_MB_%の初期値に基づいて、Intra_MB_%の更新値または修正値を計算できる。図５の方法により決定される、このIntra_MB_%の初期値は、基本アルゴリズムからのIntra_MB_%として示されている（例えば、図６において、基本アルゴリズムは、図５中で示したアルゴリズムである）。Intra_MB_%の更新値を、次のように計算してもよい（１７２）：  
Min{Max_Intra_MB_%, Max{β×100%×log(1-PER)×est_ppf／log(1-Target_Err_Pr), 基本アルゴリズムからのIntra_MB_%｝｝
【００７１】
レート適合モジュール１０が、このIntra_MB_%の更新値にしたがって、シーケンスのフレーム内のマクロブロックをイントラコード化するとき、このIntra_MB_%の更新値は、図５中で示した基本アルゴリズムにより使用されてもよい（１７４）。
【００７２】
図６中で示した方法は、Intra_MB_%の更新値を計算して、フレームシーケンス内のイントラコード化マクロブロックの、１つのイントラリフレッシュ後の補正されていないエラーを有する確率をビデオエンコーダ２が制限するのを支援してもよい。結果として、Intra_MB_%の更新値または修正値は一般に、増加した値となり、それにより、マクロブロックのイントラリフレッシングは、シーケンス内のより少ないフレームにおいて、より素早く起こる。図６中で示した、値を取得して、計算を使用する際に、いくつかのケースにおいて、フレームのすべてのスライス（１つのスライスは、１つ以上のマクロブロックを含んでいてもよい）は、少なくとも１つのイントラコード化マクロブロックを含むものと仮定してもよい。
【００７３】
この仮定を使用して、いくつかのイントラコード化マクロブロックが失われるかもしれないことから、（Intra_MB_%のレートでリフレッシュされたイントラコード化マクロブロックを有する）イントラリフレッシュされた全フレームシーケンスの間の何らかのパケットロスが、いくつかのマクロブロックにおいてエラーを生じさせるかもしれないことをさらに仮定してもよい。これらの仮定は、どのくらい素早くフレームシーケンスをイントラリフレッシュするかに関する保守的な仮定を含んでいてもよい。パケットエラーの確率がフレームシーケンス全体にわたって分布されていると仮定すると、シーケンス全体にわたるすべてのパケットは、訂正されていないエラーを生じさせる等しい確率を有するかもしれない。したがって、１つのイントラリフレッシュされたフレームシーケンス後にエラーがない確率は、（１−ＰＥＲ）Pに等しくてもよく、ここでＰは、全フレームシーケンス中のパケットの数である。それゆえに、イントラリフレッシュシーケンス中のパケットの総数は、log(1-Target_Err_Pr)／log(1-PER)よりも小さく制限されてもよい。
【００７４】
イントラリフレッシュされた（ＩＲ）フレームシーケンス中のパケットの数を、次のように計算してもよい。  
ＩＲシーケンス中の＃フレーム×ＩＲシーケンス間の１フレーム当たりの平均の＃パケット、ここで、ＩＲシーケンス中の＃フレーム＝１００％／Intra_MB_%
【００７５】
結果として、ＩＲシーケンス間の１フレーム当たりのパケットの推定平均数を、次のように計算してもよい。  
est_ppf＝Avg_norm_ppf×(target_enc_rate／50kbps)×(10fps／Current_Frame_Rate)
【００７６】
これらの結果を組み合わせることにより、図６中で示した方法により決定されるIntra_MB_%の修正値に関して、次の式が提供される。  
log(1-Target_Err_Pr)／log(1-PER)＞＝(100%/Intra_MB_%)×est_ppf
【００７７】
図７は、１つの観点にしたがって、ＧＮＡＣＫメッセージの受信次第で、パケットエラーレート（ＰＥＲ）を計算するために、ビデオエンコーダ２（図１）のレート適合モジュール１０により実行してもよい方法のフロー図である。Intra_MB_%の修正値を計算する図６の方法に関して記述したように、ＰＥＲの値は、ビデオデコーダ２０により送られる受信者報告内に含まれるfraction_lostパラメータの値に等しいように選択されて設定された。図７は、ＧＮＡＣＫの受信に基づいて、ＰＥＲの修正値を取得するために、レート適合モジュール１０により使用してもよい方法を示す。
【００７８】
図７中で示すように、レート適合モジュール１０は、受信したＧＮＡＣＫメッセージ中で示されるパケットの数に基づいて、パラメータGNACK_PERの値を計算できる（１８０）ＧＮＡＣＫは、ビデオデコーダ２０から送られる。ビデオデコーダ２０は、エラーを有する（例えば、失われている）、１つ以上のフレーム内のパケットの数を決定して、この数をＧＮＡＣＫ内で示してもよい。さらに、ＧＮＡＣＫ内で、ビデオデコーダ２０は、シーケンス番号により、エラーを有する特定のパケットを識別してもよい。１つの観点において、これらのパケットシーケンス番号は、パケットがネットワーク１６によりビデオデコーダ２０に最初に送られるときに、ビデオエンコーダ２により初めに決定される。
【００７９】
ＧＮＡＣＫを受信すると、レート適合モジュール１０は、ビデオデコーダ２０から送られた前のＲＴＣＰ受信者報告内に含まれていたfraction_lostの値と、GNACK_PERの値とを比較してもよい（１８２）。GNACK_PERがfraction_lost以上である場合、レート適合モジュール１０は、GNACK_PERに等しいようにＰＥＲの値を設定する。しかしながら、GNACK_PERがfraction_lostよりも小さい場合、レート適合モジュール１０は、最後の受信者報告からのfraction_lostの値に等しいようにＰＥＲの値を設定する（１８６）。
【００８０】
したがって、図７の方法から理解できるように、レート適合モジュール１０は、GNACK_PERとfraction_lostとのうちの大きい方を、パケットエラーレートＰＥＲの値として選択する。これらの２つの値のうちの大きい方を選択することにより、レート適合モジュール１０は、図６の方法内で、修正されたイントラリフレッシュレートIntra_MB_%を計算するときに、ＰＥＲのより高い値を使用する。この観点において、例えば、fraction_lostにより、または、ＧＮＡＣＫメッセージにより、パケットエラーのより高い量が示されるとき、レート適合モジュール１０は、Intra_MB_%を増加させる。
【００８１】
図８は、１つの観点にしたがって、パケットシーケンス番号をそれぞれ含んでいてもよい、ビデオデコーダ２０からの１つ以上のＧＮＡＣＫメッセージの受信に基づいて、更新されたイントラリフレッシュレートを決定するために、ビデオエンコーダ２（図１）のレート適合モジュール２により実行してもよい方法を説明するフロー図である。図８の方法を実行することにより、ビデオエンコーダ２は、ビデオデコーダ２０のユーザがエラーを感知するかもしれない総時間を限定しようとしてもよい。ビデオエンコーダ２のレート適合モジュール１０は、より古いエラーに対してIntra_MB_%のより大きな値を使用してもよく、それにより、これらのより古いエラーがより素早く訂正されてもよい。
【００８２】
レート適合モジュール１０は、時点またはタイムスタンプへのＲＴＰパケットシーケンス番号のマッピングを維持してもよく、そのどちらかの点において、パケットがビデオエンコーダ２から送られている（１９０）。例えば、ビデオエンコーダ２は、第１の時点（例えば、１００ｍｓ）で、第１のシーケンス番号を有する第１のパケットを送ってもよく、第２の時点（例えば、１１０ｍｓ）で、第２のシーケンス番号を有する第２のパケットを送ってもよい。レート適合モジュール１０は、これらの２つのパケットのそれぞれと、ビデオエンコーダ２からビデオデコーダ２０に送られている他の任意のパケットとに対する、タイムスタンプへのシーケンス番号のマッピングを保持してもよい。
【００８３】
ビデオエンコーダ２が、ビデオデコーダ２０から、１つ以上のパケットがエラーを有する（例えば、失われている）ことを示すＧＮＡＣＫを受信するとき、ビデオエンコーダ２は、ＧＮＡＣＫ内で識別されている、パケットのそれぞれのシーケンス番号を決定できる。例えば、４つの異なるパケットがエラーを有することをＧＮＡＣＫが示す場合、ビデオエンコーダ２は、これらの４つのパケットのそれぞれＲＴＰシーケンス番号を決定できる。これらのシーケンス番号は、これらの４つのパケットと関連していてもよく、ＧＮＡＣＫ内に含まれていてもよい。（以前に記述したように、これらのＲＴＰシーケンス番号は、パケットがビデオエンコーダ２によりビデオデコーダ２０に最初に送られたときに、パケットにそもそも割り当てられていたシーケンス番号である。１つの観点において、シーケンス番号は、ビデオデコーダ２０に順次送られるパケットに対して、昇順で、ビデオエンコーダ２により割り当てられる。）
受信したＧＮＡＣＫにより識別される、パケットのシーケンス番号を決定すると、ビデオエンコーダ２は、イントラコード化マクロブロックを含む、最後のイントラリフレッシュされたフレームシーケンスの、最初のパケットのシーケンス番号（RTP_SN_Last_IR_Sequence）よりも大きい、識別されたパケットに対する最も早いまたは最も小さいシーケンス番号（RTP_SN）、すなわち、RTP_SN＞RTP_SN_Last_IR_Sequenceを決定してもよい（１９２）。
【００８４】
ビデオエンコーダ２は、そのマッピング情報を使用して、RTP_SNの、この最も早いシーケンス番号を有する、ＧＮＡＣＫ内で識別されているパケットに対するタイムスタンプを決定してもよい。このタイムスタンプは、ビデオエンコーダ２が、シーケンス番号RTP_SNを有するこのパケットをビデオデコーダ２０にそもそも送った時点に対応する。それゆえに、このタイムスタンプは、ビデオエンコーダ２により維持されているクロックに基づいている。ビデオエンコーダ２は、このタイムスタンプ（TS_of_earliest_GNACK_RTP_SN）を、ビデオエンコーダ２のクロックにより示される現在の時間（current_time）と比較して、次のように差の値（Time_elapsed）を計算する（１９４）：  
Time_elapsed＝Current_Time−Ts_of_earliest_GNACK_RTP_SN
【００８５】
Time_elapsedパラメータの値は、シーケンス番号RTP_SNを有するパケットがビデオエンコーダ２により送られてから経過した期間を示す。レート適合モジュール１０は、この経過期間に基づいて、（後続のイントラリフレッシュされるシーケンス中のマクロブロックをイントラコード化するために使用される）Intra_MB_%の値を修正できる。RTP_SNが、イントラコード化マクロブロックを含む、最後のイントラリフレッシュされたフレームシーケンスの、最初のパケットのシーケンス番号よりも大きい、ＧＮＡＣＫ中の識別されているパケットに対する、最も早い、または最も小さいシーケンス番号であることから、レート適合モジュール１０は、（より古くに発生した）より古いエラーを、より素早く訂正しようとするために、Intra_MB_%の値を修正しようと試みる。一般に、レート適合モジュール１０は、これらのケースにおいて、Intra_MB_%の値を増加させて、次に、図５中で示した（Intra_refreshルーチン中の）方法内で、この修正値を使用するであろう。
【００８６】
１つの観点において、レート適合モジュール１０は、次のようにIntra_MB_%の修正値を計算してもよい（１９６）：  
Set Intra_MB_%＝Min{Max_Intra_MB_%, 100%／[(Target_Correction_Time−Time_elapsed)×Current_Frame_Rate]}  
以前に記述した、いくつかの式または計算と同様に、レート適合モジュール１０は、いくつかのケースにおいて、Intra_MB_%の値をMax_Intra_MB_%までに制限してもよい。Max_Intra_MB_%の値は、ビデオエンコーダ２により実行されるアプリケーションのタイプまたは、ビデオエンコーダ２により提供される環境に基づいて、ビデオエンコーダ２により、またはユーザにより、コンフィグレーションされ、または調整されてもよい。上述のケースにおいて、レート適合モジュール１０はまた、Target_Correction_TimeとTime_elapsedとの間の差に少なくとも部分的に基づいて、Intra_MB_%の修正値を決定してもよい。以前に記述したように、Target_Correction_Timeパラメータは、ビデオエンコーダ２がエラーを訂正しなければならないパケットロスのようなエラーの、ビデオエンコーダ２による検出後の時間の最大量を示す。このケースにおいて、この最大訂正時間は、受信機がエラーの伝搬を理解する時間のターゲットとされる最大量になる。Target_Correction_Timeの値は、最適化のためにコンフィグレーションされ、または変更されてもよい。
【００８７】
いくつかの観点において、ビデオエンコーダ２は、図５中で示したIntra_refreshルーチン内で使用してもよい、Intra_MB_%の修正値を決定するための別の改良を実現してもよい。これらの観点において、レート適合モジュール１０は、１つ以上のパケットエラーを検出するときに、Intra_MB_%が使用されていた間の、過去のビデオフレームシーケンスに対する動きの量の測定を試みてもよい。図５に関して以前に記述したように、レート適合モジュール１０は、潜在的に、調整可能なパラメータIntra_repeatの値にしたがって、フレームシーケンスに対するイントラリフレッシュシーケンスを１回以上繰り返してもよい。このパラメータの値は、検出された動きに基づいて調整されてもよく、検出された動きは、フレームシーケンス内のフレームに対する動きベクトルの関数であってもよい。
【００８８】
レート適合モジュール１０は、検出された動きの量を、動きしきい値と比較してもよく、動きしきい値は、ユーザにより、または、ビデオエンコーダ２により、コンフィグレーションされるか、または調整される値を含んでいてもよい。例えば、Intra_MB_%のより高い値が、現在使用されている場合、イントラリフレッシングがより高いレートで発生していることを考えると、ビデオエンコーダ２は、より高いしきい値を使用してもよい。しきい値は、全フレームまたはシーケンスに対する動き統計量に適用してもよいが、また、特定のマクロブロックに対する動きに適用してもよい。
【００８９】
検出された動きの量が、このしきい値よりも小さい場合、レート適合モジュール１０は、Intra_MB_%＝Intra_MB_%_No_Lossにしたがって、Intra_MB_%の値を修正して、（図５中で使用されるような）ロスがない値に等しいように設定してもよい。
【００９０】
しかしながら、動きの量が、このしきい値を超える場合、レート適合モジュール１０は、全ビデオフレームシーケンスのイントラリフレッシュ手続きを繰り返してもよく、および／または、追加のリフレッシュを実行できるように、Intra_repeatの値を増加させてもよい。イントラリフレッシュシーケンスの繰返しは、１つ以上のフレーム内の過度の動きによりもたらされるエラーの訂正を支援してもよい。
【００９１】
図９は、１つの観点にしたがって、ビデオエンコーダ２に対して、ＰＬＩ（ピクチャロス表示）メッセージを送るか、または、汎用否定応答（ＧＮＡＣＫ）のような別の表示を送るかを決定するために、ビデオデコーダ２０（図１）により実行してもよい方法を説明するフロー図である。以前に記述したように、ビデオデコーダ２０は、イントラデコーダ２４および／または予測デコーダ２６により１つ以上のパケットエラーを検出すると、エラー（例えば、パケットロス）フィードバック１８をビデオエンコーダ２に送ることができる。このフィードバック１８は、１つ以上のＧＮＡＣＫおよび／またはＰＬＩメッセージを含んでいてもよい。ＧＮＡＣＫメッセージは、特に、エラーを有するパケットを識別してもよく、一方、ＰＬＩメッセージは、より一般的に、必ずしもパケットを識別することなく、デコーディングのエラーを識別してもよい。
【００９２】
しかしながら、例えば、ある期間にわたってビデオエンコーダ２に対して、非常に多くのＰＬＩメッセージを送ることには、いくつかの不利益がある。例えば、ビデオデコーダ２０は、ビデオデコーダ２０は、最初のＰＬＩをビデオエンコーダ２に送ってもよく、そのことは、ビデオエンコーダ２のレート適合モジュール１０をトリガーして、イントラリフレッシュシーケンスを開始させるか、または、Intra_MB_%の値を増加させることにより、フレームシーケンス内のマクロブロックをイントラエンコードするレートを増加させるかもしれない。新しくリフレッシュされたマクロブロックのうちのいくつかを受信する前に、ビデオデコーダ２０が、その後、間もなく、別のＰＬＩをビデオエンコーダ２に送る場合、ビデオエンコーダ２は、ビデオデコーダ２０により感知された、新しい、または追加のエラーがあるものと仮定して、Intra_MB_%の値を、ことによると不必要に、再度増加させるかもしれない。これらのタイプのシナリオにおいて、ビデオデコーダ２０からのＰＬＩメッセージは、以前に示されたエラーを訂正するためにビデオエンコーダ２により送られている、イントラリフレッシュされたマクロブロックと入れ違うかもしれない。したがって、いくつかのケースにおいて、短い期間わたってビデオエンコーダ２に、繰り返されるＰＬＩメッセージを送る前に、ビデオデコーダ２０がいくつかのチェックを実行することが、より有益であるかもしれない。
【００９３】
図９の方法にしたがうと、ビデオデコーダ２０は、イントラデコーダ２４および／または予測デコーダ２６からのデコーダ出力を待ってもよい（２００）。ビデオデコーダ２０は、何らかのデコーディングエラーが、イントラデコーダ２４および／または予測デコーダ２６により検出されたかどうかを決定してもよい（２０２）。いくつかのケースにおいて、ビデオデコーダ２０は、例えば、コード化ビデオデータのビットストリームの解析を通して、ＲＴＰレイヤにより検出されないいくつかのエラーを検出してもよい。受信したコード化パケットのうちの１つにおけるエラー、または、１つ以上のパケットのロスのような、デコーディングエラーが検出された場合、ビデオデコーダ２０は、そのクロックにしたがって、現在の時間（current_time)を決定してもよい。
【００９４】
ビデオデコーダ２０はまた、ＲＴＴに対する値を決定するか、または、調べてもよく、ＲＴＴに対する値は、ビデオデコーダ２０と、ビデオエンコーダ２との間のデータ通信に対する往復の移動時間の値である。いくつかのケースにおいて、ＲＴＴの値は、デフォルト値として、ビデオデコーダ２０内で、最初に設定されるか、または、コンフィグレーションされてもよい。しかしながら、ビデオデコーダ２０は、ビデオデコーダ２０とビデオエンコーダ２との間のデータ通信に対するリアルタイムの計算に基づいて、ある期間にわたって、ＲＴＴの値をダイナミックに調整または更新できる。例えば、ビデオデコーダ２０は、ＲＴＴの値を測定または推定するために、１つ以上のＲＴＣＰ受信者および送信者報告内に含まれる情報を使用できてもよい。１つの観点において、ビデオデコーダ２０は、ビデオデコーダ２０とビデオエンコーダ２との間で交換される、少なくとも１つの対のメッセージに基づいて、ＲＴＴの値を測定または推定してもよい。
【００９５】
図９の例において、ビデオデコーダ２０は、以下の条件が満たされるかどうかを決定するためにチェックしてもよい（２０４）：  
current_time＞RTT＋Time_Last_Sent_PLI  
ここで、Time_Last_Sent_PLIは、ビデオデコーダ２０がＰＬＩをビデオエンコーダ２に最後に送った（ビデオデコーダ２０のクロックにしたがった）時間に等しい。現在の時間が、実際に、Time_Last_Sent_PLIを加えたＲＴＴよりも大きい場合、ビデオデコーダ２０は、別のＰＬＩメッセージをビデオエンコーダ２に送ってもよく、また、ビデオデコーダ２０のクロックにしたがって、Time_Last_Sent_PLIの値を現在の時間に設定してもよい。
【００９６】
しかしながら、現在の時間が、Time_Last_Sent_PLIを加えたＲＴＴ以下である場合、ビデオデコーダ２０は、別のＰＬＩメッセージをビデオエンコーダ２に送るのを抑制するだろう。これらのシナリオにおいて、ビデオデコーダ２０は、それが、１つの往復移動時間内にＰＬＩを以前に送っていることを決定し、別のＰＬＩを送る必要はない。これらのシナリオにおいて、ビデオエンコーダ２が、ビデオデコーダ２０により送られた、前のＰＬＩの受信に応答して、新しいイントラリフレッシュシーケンスを開始するか、または、さらに、Intra_MB_%の値を調整してもよく、ビデオデコーダ２０が、早くとも、前のＰＬＩを送った後の１つの往復移動時間内で、このリフレッシュシーケンス内のパケット（およびマクロブロック）の受信を開始することを、ビデオデコーダ２０は仮定する。したがって、ビデオデコーダ２０が、この１つの往復移動時間窓内で何らかのエラーを識別する場合、ビデオデコーダ２０は、そのようなエラーが、前のＰＬＩの受信次第で、ビデオエンコーダ２により開始されるイントラリフレッシュシーケンスにより訂正され、ビデオデコーダ２０がこの時間窓内で別のＰＬＩを送る必要がないものと仮定する。ビデオデコーダ２０は、ビデオエンコーダ２から受信したすべてのコード化パケットに対して、図９中で示した方法の実行を継続してもよい。
【００９７】
図１０は、１つの観点にしたがって、ビデオエンコーダ２に対して、ＧＮＡＣＫを送るか、またはＰＬＩを送るかを決定するために、ビデオデコーダ２０（図１）により実行してもよい方法のフロー図である。いくつかのケースにおいて、例えば、ＰＬＩを最後に送った以降に、エラーを有するか、または失われている、多数のパケットがある場合、ビデオデコーダ２０は、一般的なＰＬＩメッセージをビデオエンコーダ２に送ることを決定してもよい。１つの観点において、例えば、図９中で示したような１つの往復移動時間内で、前のＧＮＡＣＫまたはＰＬＩが送られていない場合、ビデオデコーダ２０は、図１０中で示す方法を実行してもよい。
【００９８】
したがって、図１０中で示すように、ビデオデコーダ２０は、デコーディング出力を待って（２１０）、処理がフレームの境界に到達しているかどうか（または、新しいフレームが検出されているかどうか）を決定してもよい（２１１）。そうである場合、ビデオデコーダ２０は、Number_of_packets_lostと呼ばれる変数の値をゼロにリセットしてもよい。以下で記述するように、パケットエラーを検出すると、ＧＮＡＣＫを送るか、またはＰＬＩを送るかを決定する際に、ビデオデコーダ２０は、この変数の値を使用する。新しいフレームが検出されているとき、ビデオデコーダ２０は、この変数の値をゼロにリセットしてもよい。
【００９９】
ビデオデコーダ２０は、ビデオエンコーダ２により送られた特定のパケットが失われていることを識別してもよく、次に、Number_of_packets_lost変数をインクリメントしてもよい（２１２）。ビデオデコーダ２０は、Number_of_packets_lostの値を、パケットロスしきい値と比較してもよい。このしきい値は、ユーザにより、または、ビデオデコーダ２０によりコンフィグレーションされるか、または、調整されてもよい、調整可能なパラメータを含んでいてもよい。いくつかの例において、このしきい値の値は、デバイスのタイプ（例えば、ビデオデコーダ２０および／またはビデオエンコーダ２に対するデバイスのタイプ）、および／または、実行されるアプリケーションのタイプ（例えば、テレビ電話アプリケーション、ゲームアプリケーション）に依存してもよい。
【０１００】
１つの観点において、ビデオデコーダ２０は、以下の条件が満たされるかどうかを決定してもよい（２１４）：  
Number_of_packets_lost＞＝%_Packet_Loss_Threshold)×avg_ppf  
ここで、avg_ppfは、ビデオデコーダ２０により受信される、１フレーム当たりのパケットの平均の数に等しい。ビデオデコーダ２０は、ビデオエンコーダ２により受信される各フレーム中のパケットの数を絶え間なく決定することにより、avg_ppfの値を推定できる。失われたパケットの数が、（先に示したような、また、avg_ppfに基づいていてもよい）しきい値を超えるように、ＰＬＩを最後に送った以降に、非常に多くの数のパケットが失われている場合、ビデオデコーダ２０は、フルのイントラリフレッシュシーケンスを開始するために、別のＰＬＩメッセージをビデオエンコーダ２に送ってもよい（２１８）。ビデオデコーダ２０はまた、Number_of_packets_lostの値をゼロにリセットしてもよい。１つの観点において、ＰＬＩを送るのに先立って、ビデオデコーダ２０はまた、図９中で示した方法を実行して、前のＰＬＩが、１つの往復時間窓内ですでに送られているかどうかを決定してもよく、以前に記述したように、そのようなケースのときに、別のＰＬＩを送ることを控えてもよい。
【０１０１】
しかしながら、最後のＰＬＩの送信以降の、失われたパケットの数が、しきい値を超えていないことをビデオデコーダ２０が決定する場合、ビデオデコーダ２０は、ＰＬＩの代わりに、ＧＮＡＣＫをビデオデエンコーダ２に送ってもよい（２１６）。ＧＮＡＣＫは、エラーを有する（または失われている）特定のパケットを識別してもよい。いくつかのケースにおいて、ビデオエンコーダ２は、ＧＮＡＣＫ中で識別されているパケットに関係付けられているシーケンス番号を使用して、図８中で示した方法のような、イントラリフレッシュレートを更新する向上した方法を実行してもよい。
【０１０２】
先の記述と、図９ないし１０中で示した方法を考慮して、１つの観点において、ビデオデコーダ２０のようなビデオデコーダは、ビデオエンコーダ２のようなビデオエンコーダから送られたコード化ビデオデータに関係する少なくとも１つのエラーを検出してもよい。ビデオデコーダ２０は、ビデオデコーダ２０とビデオエンコーダ２との間のデータ通信に対する往復移動時間を決定し、ビデオデコーダ２０により検出された以前のエラーを示すフィードバックメッセージを、ビデオデコーダ２０がビデオエンコーダ２に最後に送った時間である、最後に送られた時間を決定し、現在の時間を、最後に送られた時間と往復移動時間との合計と比較してもよい。比較に基づいて、ビデオデコーダ２０は、ビデオデコーダ２０により検出された少なくとも１つのエラーを示す第２のフィードバックメッセージを、ビデオエンコーダ２に送るかどうかを決定してもよい。
【０１０３】
いくつかのケースにおいて、ビデオデコーダ２０は、現在の時間が、最後に送られた時間と往復移動時間との合計を超えている場合、第２のフィードバックメッセージを送ってもよく、現在の時間に等しいように、最後に送られた時間を設定してもよい。往復移動時間を決定することは、ビデオデコーダ２０とビデオエンコーダ２との間で交換される少なくとも１つのメッセージに基づいて、往復移動時間を測定または推定することを含んでもよい。いくつかのケースにおいて、ビデオデコーダ２０は、ビデオエンコーダ２からコード化ビデオデータを受信してもよく、少なくとも、ビデオデコーダによるコード化ビデオデータのデコーディングに際して、少なくとも１つのデコーディングエラーを検出することにより、少なくとも１つのエラーを検出してもよい。
【０１０４】
１つの観点において、ビデオデコーダ２０は、少なくとも、パケットロスを検出することにより、少なくとも１つのエラーを検出してもよい。パケットロスを検出すると、ビデオデコーダ２０は、失われたパケットのカウントをインクリメントし、失われたパケットのカウントをしきい値と比較し、失われたパケットのカウントがしきい値を超えている場合、および、現在の時間が、最後に送られた時間と往復移動時間との合計を超えている場合、第２のフィードバックメッセージをビデオエンコーダ２に送ってもよい。失われたパケットのカウントが、しきい値を超えていない場合、ビデオデコーダ２０は、パケットロスを示す、別のタイプのフィードバックメッセージを、ビデオエンコーダ２に送ってもよい。
【０１０５】
いくつかのケースにおいて、第２のフィードバックメッセージをビデオエンコーダ２に送ると、ビデオデコーダ２０は、ゼロに等しいように、失われたパケットのカウントを設定してもよい。しきい値は、パケットロスしきい値と、１フレーム当たりのパケットの平均数とに少なくとも部分的に基づいていてもよい。
【０１０６】
本開示中で記述した技術を、汎用目的マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）、複合プログラム可能論理デバイス（ＣＰＬＤ）、または他の均等の論理デバイスのうちの１つ以上内で実現してもよい。したがって、ここで使用されるような用語“プロセッサ”または“制御装置”は、ここで記述した技術の実現に適した、上述の構造または他の任意の構造のうちの１つ以上を指してもよい。
【０１０７】
ここで説明したさまざまなコンポーネントは、ハードウェアの任意の適切な組み合わせ、ソフトウェア、ファームウェア、または、これらの任意の組み合わせにより実現してもよい。図面において、さまざまなコンポーネントは、別々のユニットまたはモジュールとして描写されている。しかしながら、これらの図面に関して記述したさまざまなコンポーネントのすべてまたはいくつかを、共通のハードウェアおよび／またはソフトウェア内で組み合わされているユニットまたはモジュールに組み込んでもよい。したがって、コンポーネント、ユニットまたはモジュールとしての特徴の表現は、説明を容易にするために、特定の機能の特徴をハイライトするように向けられており、必ずしも、別々のハードウェアまたはソフトウェアコンポーネントにより、そのような特徴の実現を要求するものではない。いくつかのケースにおいて、さまざまなユニットは、１つ以上のプロセッサにより実行される、プログラム可能なプロセスとして実現されてもよい。
【０１０８】
モジュール、デバイス、またはコンポーネントとしてここで説明されている機能は、集積論理デバイス中で一緒に実現されてもよく、または、ディスクリートであるが、相互運用可能な論理デバイスとして別々に実現されてもよい。さまざまな観点において、そのようなコンポーネントは、集積回路チップまたはチップセットのような、集積回路デバイスと集合的に呼ばれてもよい、１つ以上の集積回路デバイスとして少なくとも部分的に形成されてもよい。そのような回路は、単一の集積回路チップデバイス中で、または、複数の相互運用可能な集積回路チップデバイス中で提供されてもよく、さまざまな画像、表示、オーディオ、または、他のマルチメディア、のアップ利ケーションおよびデバイスのいずれかにおいて使用されてもよい。いくつかの観点において、例えば、そのようなコンポーネントは、ワイヤレス通信デバイスハンドセットのような、移動デバイスの一部を形成してもよい。
【０１０９】
ソフトウェアにおいて実現される場合、１つ以上のプロセッサにより実行されるとき、上述した方法のうちの１つ以上を実行する命令を有するコードを備えているコンピュータ読取り可能データ記憶媒体により少なくとも部分的に、本技術を実現してもよい。コンピュータ読取り可能媒体は、実装材料を含んでいてもよいコンピュータプログラムプロダクトの一部を形成してもよい。コンピュータ読取り可能媒体は、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）のようなランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気的消去可能プログラム可能読出し専用メモリ（ＥＥＰＲＯＭ）、組込みダイナミックランダムアクセスメモリ（ｅＤＲＡＭ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、フラッシュメモリ、磁気または光学データ記憶媒体を備えていてもよい。
【０１１０】
本技術は、さらに、または、代わりに、命令またはデータ構造の形態でコードを搬送または伝達し、１つ以上のプロセッサによりアクセスされ、読み出され、および／または実行され得るコンピュータ読取り可能通信媒体により少なくとも部分的に実現してもよい。いくつかの接続は、適切にコンピュータ読み取り可能媒体と呼ばれてもよい。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア線、デジタル加入者線（ＤＳＬ）、または、赤外線、無線、およびマイクロ波のようなワイヤレス技術を使用して、ウェブサイト、サーバまたは他のリモート情報源から送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア線、ＤＳＬ、または、赤外線、無線、およびマイクロ波のようなワイヤレス技術は、媒体の定義に含まれる。上述したものの組み合わせもまた、コンピュータ読取り可能媒体の範囲内に含まれるべきである。利用されるいくつかのソフトウェアは、１つ以上のＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、あるいは、他の均等の、集積またはディスクリート論理回路のような、１つ以上のプロセッサにより実行されてもよい。
【０１１１】
さまざまな観点を本開示中で説明している。これらの、および他の観点は、特許請求の範囲内である。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
方法において、
コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信することと、
前記フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定することとを含み、
１つのビデオユニット内のビデオデータのセグメントのイントラコード化は、前記シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立している方法。
［Ｃ２］
前記フィードバックを受信することは、前記コード化ビデオデータの少なくとも１つのパケットのロスを示すフィードバックを、前記ビデオデコーダから受信することを含み、前記少なくとも１つのパケットは、前記ビデオデコーダに対して以前に送られているが、前記ビデオデコーダにより受信されていないＣ１記載の方法。
［Ｃ３］
ビデオデータの各セグメントは、ビデオデータの１つ以上のブロックを含み、前記ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの１つ以上のフレームを含むＣ１記載の方法。
［Ｃ４］
前記レートを決定することは、前記シーケンス内の１つ以上のビデオユニットにわたってエラーを訂正するためのターゲット訂正時間に少なくとも部分的に基づいて、前記レートを決定することを含むＣ１記載の方法。
［Ｃ５］
前記フィードバックは、ピクチャロス表示（ＰＬＩ）と、汎用否定応答（ＧＮＡＣＫ）とのうちの少なくとも１つを含むＣ１記載の方法。
［Ｃ６］
前記フィードバックは、前記ＧＮＡＣＫを含み、前記ＧＮＡＣＫは、失われたパケットの数を示し、前記イントラコード化するレートを決定することは、前記失われたパケットの数に少なくとも部分的に基づいているＣ５記載の方法。
［Ｃ７］
失われたパケットの第２の数を示す報告を、前記ビデオデコーダから受信することと、
前記ＧＮＡＣＫより示された、前記失われたパケットの数と、前記報告により示された、前記失われたパケットの第２の数とのうちの少なくとも１つに基づいて、パケットエラーレートを計算することとをさらに含み、
前記イントラコード化するレートを決定することは、前記パケットエラーレートに少なくとも部分的に基づいているＣ６記載の方法。
［Ｃ８］
前記レートを決定することは、さらに、前記ビデオユニットのシーケンス内の各ビデオユニット内に含まれているパケットの推定された数に少なくとも部分的に基づいているＣ７記載の方法。
［Ｃ９］
前記ＧＮＡＣＫは、失われた各パケットを識別し、前記方法は、現在の時間と、前記識別された、失われたパケットのうちの１つが前記ビデオデコーダに以前に送られた時間との間の差に基づいて、経過時間を計算することをさらに含み、前記レートを決定することは、さらに、前記経過時間に少なくとも部分的に基づいているＣ６記載の方法。
［Ｃ１０］
前記ＧＮＡＣＫにより識別されている、失われた各パケットは、シーケンス番号を有し、前記経過時間を計算することは、
前記ＧＮＡＣＫにより識別されている、どの、失われたパケットが、イントラコード化されたセグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有するかを決定することと、
前記現在の時間と、前記決定された、失われたパケットが、前記ビデオデコーダに以前に送られた時間との間の差に基づいて、前記経過時間を計算することとを含むＣ９記載の方法。
［Ｃ１１］
ビデオユニットの１つのシーケンス内の異なるビデオユニットにわたる、動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオユニットの複数のシーケンスにおいて、イントラコード化するレートの決定を繰り返すかどうかを決定することをさらに含むＣ１記載の方法。
［Ｃ１２］
コンピュータ読取り可能媒体において、
コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信することと、
前記フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定することと、
を１つ以上のプロセッサに生じさせるための命令を含み、
１つのビデオユニット内のビデオデータのセグメントのイントラコード化は、前記シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立しているコンピュータ読取り可能媒体。
［Ｃ１３］
前記フィードバックを受信することを前記１つ以上のプロセッサに生じさせるための命令は、前記コード化ビデオデータの少なくとも１つのパケットのロスを示すフィードバックを、前記ビデオデコーダから受信することを前記１つ以上のプロセッサに生じさせるための命令を含み、前記少なくとも１つのパケットは、前記ビデオデコーダに対して以前に送られているが、前記ビデオデコーダにより受信されていないＣ１２記載のコンピュータ読取り可能媒体。
［Ｃ１４］
ビデオデータの各セグメントは、ビデオデータの１つ以上のブロックを含み、前記ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの１つ以上のフレームを含むＣ１２記載のコンピュータ読取り可能媒体。
［Ｃ１５］
前記イントラコード化するレートは、前記シーケンス内の１つ以上のビデオユニットにわたってエラーを訂正するためのターゲット訂正時間に少なくとも部分的に基づいているＣ１２記載のコンピュータ読取り可能媒体。
［Ｃ１６］
前記フィードバックは、ピクチャロス表示（ＰＬＩ）と、汎用否定応答（ＧＮＡＣＫ）とのうちの少なくとも１つを含むＣ１２記載のコンピュータ読取り可能媒体。
［Ｃ１７］
前記フィードバックは、前記ＧＮＡＣＫを含み、前記ＧＮＡＣＫは、失われたパケットの数を示し、前記イントラコード化するレートは、前記失われたパケットの数に少なくとも部分的に基づいているＣ１６記載のコンピュータ読取り可能媒体。
［Ｃ１８］
失われたパケットの第２の数を示す報告を、前記ビデオデコーダから受信することと、
前記ＧＮＡＣＫより示された、前記失われたパケットの数と、前記報告により示された、前記失われたパケットの第２の数とのうちの少なくとも１つに基づいて、パケットエラーレートを計算することと、
を前記１つ以上のプロセッサに生じさせるための命令をさらに含み、
前記イントラコード化するレートは、前記パケットエラーレートに少なくとも部分的に基づいているＣ１７記載のコンピュータ読取り可能媒体。
［Ｃ１９］
前記イントラコード化するレートは、さらに、前記ビデオユニットのシーケンス内の各ビデオユニット内に含まれているパケットの推定された数に少なくとも部分的に基づいているＣ１８記載のコンピュータ読取り可能媒体。
［Ｃ２０］
前記ＧＮＡＣＫは、失われた各パケットを識別し、前記コンピュータ読取り可能媒体は、現在の時間と、前記識別された、失われたパケットのうちの１つが前記ビデオデコーダに以前に送られた時間との間の差に基づいて、経過時間を計算することを、前記１つ以上のプロセッサに生じさせるための命令をさらに含み、前記イントラコード化するレートは、さらに、前記経過時間に少なくとも部分的に基づいているＣ１７記載のコンピュータ読取り可能媒体。
［Ｃ２１］
前記ＧＮＡＣＫにより識別されている、失われた各パケットは、シーケンス番号を有し、前記経過時間を計算することを前記１つ以上のプロセッサに生じさせるための命令は、
前記ＧＮＡＣＫにより識別されている、どの、失われたパケットが、イントラコード化されたセグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有するかを決定することと、
前記現在の時間と、前記決定された、失われたパケットが、前記ビデオデコーダに以前に送られた時間との間の差に基づいて、前記経過時間を計算することと、
を前記１つ以上のプロセッサに生じさせるための命令を含むＣ２０記載のコンピュータ読取り可能媒体。
［Ｃ２２］
ビデオユニットの１つのシーケンス内の異なるビデオユニットにわたる、動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオユニットの複数のシーケンスにおいて、イントラコード化するレートの決定を繰り返すかどうかを決定することを、前記１つ以上のプロセッサに生じさせるための命令をさらに含むＣ１２記載のコンピュータ読取り可能媒体。
［Ｃ２３］
デバイスにおいて、
記憶デバイスと、
前記記憶デバイスに結合されている１つ以上のプロセッサとを具備し、
前記１つ以上のプロセッサは、
コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信し、
前記フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定するように構成されており、
１つのビデオユニット内のビデオデータのセグメントのイントラコード化は、前記シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立しているデバイス。
［Ｃ２４］
前記１つ以上のプロセッサは、少なくとも、前記コード化ビデオデータの少なくとも１つのパケットのロスを示すフィードバックを前記ビデオデコーダから受信することにより、前記フィードバックを受信するように構成されており、前記少なくとも１つのパケットは、前記ビデオデコーダに対して以前に送られているが、前記ビデオデコーダにより受信されていないＣ２３記載のデバイス。
［Ｃ２５］
ビデオデータの各セグメントは、ビデオデータの１つ以上のブロックを含み、前記ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの１つ以上のフレームを含むＣ２３記載のデバイス。
［Ｃ２６］
前記イントラコード化するレートは、前記シーケンス内の１つ以上のビデオユニットにわたってエラーを訂正するためのターゲット訂正時間に少なくとも部分的に基づいているＣ２３記載のデバイス。
［Ｃ２７］
前記フィードバックは、ピクチャロス表示（ＰＬＩ）と、汎用否定応答（ＧＮＡＣＫ）とのうちの少なくとも１つを含むＣ２３記載のデバイス。
［Ｃ２８］
前記フィードバックは、前記ＧＮＡＣＫを含み、前記ＧＮＡＣＫは、失われたパケットの数を示し、前記イントラコード化するレートは、前記失われたパケットの数に少なくとも部分的に基づいているＣ２７記載のデバイス。
［Ｃ２９］
前記１つ以上のプロセッサは、
失われたパケットの第２の数を示す報告を、前記ビデオデコーダから受信し、
前記ＧＮＡＣＫより示された、前記失われたパケットの数と、前記報告により示された、前記失われたパケットの第２の数とのうちの少なくとも１つに基づいて、パケットエラーレートを計算するようにさらに構成されており、
前記イントラコード化するレートは、前記パケットエラーレートに少なくとも部分的に基づいているＣ２８記載のデバイス。
［Ｃ３０］
前記イントラコード化するレートは、さらに、前記ビデオユニットのシーケンス内の各ビデオユニット内に含まれているパケットの推定された数に少なくとも部分的に基づいているＣ２９記載のデバイス。
［Ｃ３１］
前記ＧＮＡＣＫは、失われた各パケットを識別し、前記１つ以上のプロセッサは、現在の時間と、前記識別された、失われたパケットのうちの１つが前記ビデオデコーダに以前に送られた時間との間の差に基づいて、経過時間を計算するようにさらに構成されており、前記イントラコード化するレートは、さらに、前記経過時間に少なくとも部分的に基づいているＣ２８記載のデバイス。
［Ｃ３２］
前記ＧＮＡＣＫにより識別されている、失われた各パケットは、シーケンス番号を有し、前記１つ以上のプロセッサは、少なくとも、前記ＧＮＡＣＫにより識別されている、どの、失われたパケットが、イントラコード化されたセグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有するかを決定することと、前記現在の時間と、前記決定された、失われたパケットが、前記ビデオデコーダに以前に送られた時間との間の差に基づいて、前記経過時間を計算することとにより、前記経過時間を計算するように構成されているＣ３１記載のデバイス。
［Ｃ３３］
前記１つ以上のプロセッサは、ビデオユニットの１つのシーケンス内の異なるビデオユニットにわたる、動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオユニットの複数のシーケンスにおいて、イントラコード化するレートの決定を繰り返すかどうかを決定するようにさらに構成されているＣ２３記載のデバイス。
［Ｃ３４］
前記デバイスは、ワイヤレス通信デバイスハンドセットを具備するＣ２３記載のデバイス。
［Ｃ３５］
前記デバイスは、１つ以上の集積回路デバイスを具備するＣ２３記載のデバイス。
［Ｃ３６］
デバイスにおいて、
コード化されているビデオデータに関係するエラーを示すフィードバックを、ビデオデコーダから受信する手段と、
前記フィードバックを受信すると、ビデオユニットのシーケンス内の各ビデオユニットに対する、ビデオデータの指定された数のセグメントをイントラコード化するレートを決定する手段とを具備し、
１つのビデオユニット内のビデオデータのセグメントのイントラコード化は、前記シーケンス内の他のビデオユニット内のビデオデータのセグメントのコード化から独立しているデバイス。
［Ｃ３７］
前記フィードバックを受信する手段は、前記コード化ビデオデータの少なくとも１つのパケットのロスを示すフィードバックを、前記ビデオデコーダから受信する手段を備え、前記少なくとも１つのパケットは、前記ビデオデコーダに対して以前に送られているが、前記ビデオデコーダにより受信されていないＣ３６記載のデバイス。
［Ｃ３８］
ビデオデータの各セグメントは、ビデオデータの１つ以上のブロックを含み、前記ビデオユニットのシーケンス内の各ビデオユニットは、ビデオデータの１つ以上のフレームを含むＣ３６記載のデバイス。
［Ｃ３９］
前記イントラコード化するレートは、前記シーケンス内の１つ以上のビデオユニットにわたってエラーを訂正するためのターゲット訂正時間に少なくとも部分的に基づいているＣ３６記載のデバイス。
［Ｃ４０］
前記フィードバックは、ピクチャロス表示（ＰＬＩ）と、汎用否定応答（ＧＮＡＣＫ）とのうちの少なくとも１つを含むＣ３６記載のデバイス。
［Ｃ４１］
前記フィードバックは、前記ＧＮＡＣＫを含み、前記ＧＮＡＣＫは、失われたパケットの数を示し、前記イントラコード化するレートは、前記失われたパケットの数に少なくとも部分的に基づいているＣ４０記載のデバイス。
［Ｃ４２］
失われたパケットの第２の数を示す報告を、前記ビデオデコーダから受信する手段と、
前記ＧＮＡＣＫより示された、前記失われたパケットの数と、前記報告により示された、前記失われたパケットの第２の数とのうちの少なくとも１つに基づいて、パケットエラーレートを計算する手段とをさらに具備し、
前記イントラコード化するレートは、前記パケットエラーレートに少なくとも部分的に基づいているＣ４１記載のデバイス。
［Ｃ４３］
前記イントラコード化するレートは、さらに、前記ビデオユニットのシーケンス内の各ビデオユニット内に含まれているパケットの推定された数に少なくとも部分的に基づいているＣ４２記載のデバイス。
［Ｃ４４］
前記ＧＮＡＣＫは、失われた各パケットを識別し、前記デバイスは、現在の時間と、前記識別された、失われたパケットのうちの１つが前記ビデオデコーダに以前に送られた時間との間の差に基づいて、経過時間を計算する手段をさらに具備し、前記イントラコード化するレートは、さらに、前記経過時間に少なくとも部分的に基づいているＣ４１記載のデバイス。
［Ｃ４５］
前記ＧＮＡＣＫにより識別されている、失われた各パケットは、シーケンス番号を有し、前記経過時間を計算する手段は、
前記ＧＮＡＣＫにより識別されている、どの、失われたパケットが、イントラコード化されたセグメントを有するビデオユニットの前のシーケンスの最初のパケットのシーケンス番号よりも大きいシーケンス番号を有するかを決定する手段と、
前記現在の時間と、前記決定された、失われたパケットが、前記ビデオデコーダに以前に送られた時間との間の差に基づいて、前記経過時間を計算する手段とを備えるＣ４４記載のデバイス。
［Ｃ４６］
ビデオユニットの１つのシーケンス内の異なるビデオユニットにわたる、動きの検出量が、動きのしきい値を超えているかどうかに基づいて、ビデオユニットの複数のシーケンスにおいて、イントラコード化するレートの決定を繰り返すかどうかを決定する手段をさらに具備するＣ３６記載のデバイス。
［Ｃ４７］
方法において、
ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも１つのエラーを、ビデオデコーダにより検出することと、
前記ビデオデコーダと前記ビデオエンコーダとの間のデータ通信に対する往復移動時間を決定することと、
前記ビデオデコーダにより検出された以前のエラーを示しているフィードバックメッセージを、前記ビデオデコーダが前記ビデオエンコーダに最後に送った時間である、最後に送られた時間を決定することと、
現在の時間を、前記最後に送られた時間と前記往復移動時間との合計と比較することと、
前記比較に基づいて、前記ビデオデコーダにより検出された少なくとも１つのエラーを示している第２のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定することとを含む方法。
［Ｃ４８］
前記第２のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定することは、
前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第２のフィードバックメッセージを送ることと、
前記最後に送られた時間を、前記現在の時間に等しいように設定することとを含むＣ４７記載の方法。
［Ｃ４９］
前記往復移動時間を決定することは、前記ビデオデコーダと前記ビデオエンコーダとの間で交換される、少なくとも１つの対のメッセージに基づいて、前記往復移動時間を測定または推定することを含むＣ４７記載の方法。
［Ｃ５０］
前記ビデオエンコーダから、前記コード化ビデオデータを受信することをさらに含み、前記少なくとも１つのエラーを検出することは、前記ビデオデコーダによる前記コード化ビデオデータのデコーディングの際に、少なくとも１つのデコーディングエラーを検出することを含むＣ４７記載の方法。
［Ｃ５１］
前記少なくとも１つのエラーを検出することは、パケットロスを検出することを含み、
前記方法は、
前記パケットロスを検出すると、失われたパケットのカウントをインクリメントすることと、
前記失われたパケットのカウントをしきい値と比較することと、
前記失われたパケットのカウントが、前記しきい値を超えている場合に、および、前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第２のフィードバックメッセージを前記ビデオエンコーダに送ることと、
前記失われたパケットのカウントが、前記しきい値を超えていない場合に、前記パケットロスを示している、別のタイプのフィードバックメッセージを、前記ビデオエンコーダに送ることとをさらに含むＣ４７記載の方法。
［Ｃ５２］
前記第２のフィードバックメッセージを前記ビデオエンコーダに送ると、前記失われたパケットのカウントをゼロに等しいように設定することをさらに含むＣ５１記載の方法。
［Ｃ５３］
前記しきい値は、パケットロスしきい値と、１フレーム当たりのパケットの平均数とに少なくとも部分的に基づいているＣ５１記載の方法。
［Ｃ５４］
デバイスにおいて、
記憶デバイスと、
前記記憶デバイスに結合されている１つ以上のプロセッサとを具備し、
前記１つ以上のプロセッサは、
ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも１つのエラーを検出し、
前記デバイスと前記ビデオエンコーダとの間のデータ通信に対する往復移動時間を決定し、
前記デバイスにより検出された以前のエラーを示しているフィードバックメッセージを、前記デバイスが前記ビデオエンコーダに最後に送った時間である、最後に送られた時間を決定し、
現在の時間を、前記最後に送られた時間と前記往復移動時間との合計と比較し、
前記比較に基づいて、前記デバイスにより検出された少なくとも１つのエラーを示している第２のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定するように構成されているデバイス。
［Ｃ５５］
前記１つ以上のプロセッサは、少なくとも、前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第２のフィードバックメッセージを送ることと、前記最後に送られた時間を、前記現在の時間に等しいように設定することとにより、前記第２のフィードバックメッセージを前記ビデオエンコーダに送るかどうかを決定するように構成されているＣ５４記載のデバイス。
［Ｃ５６］
前記１つ以上のプロセッサは、少なくとも、前記デバイスと前記ビデオエンコーダとの間で交換される、少なくとも１つの対のメッセージに基づいて、前記往復移動時間を測定または推定することにより、前記往復移動時間を決定するように構成されているＣ５４記載のデバイス。
［Ｃ５７］
前記１つ以上のプロセッサは、前記ビデオエンコーダから、前記コード化ビデオデータを受信するようにさらに構成されており、前記１つ以上のプロセッサは、前記デバイスによる前記コード化ビデオデータのデコーディングの際に、少なくとも１つのデコーディングエラーを検出することにより、前記少なくとも１つのエラーを検出するように構成されているＣ５４記載のデバイス。
［Ｃ５８］
前記少なくとも１つのエラーは、パケットロスを含み、前記１つ以上のプロセッサは、
前記パケットロスを検出すると、失われたパケットのカウントをインクリメントし、
前記失われたパケットのカウントをしきい値と比較し、
前記失われたパケットのカウントが、前記しきい値を超えている場合に、および、前記現在の時間が、前記最後に送られた時間と前記往復移動時間との合計を超えている場合に、前記第２のフィードバックメッセージを前記ビデオエンコーダに送り、
前記失われたパケットのカウントが、前記しきい値を超えていない場合に、前記パケットロスを示している、別のタイプのフィードバックメッセージを、前記ビデオエンコーダに送るようにさらに構成されているＣ５４記載のデバイス。
［Ｃ５９］
前記１つ以上のプロセッサは、前記第２のフィードバックメッセージを前記ビデオエンコーダに送ると、前記失われたパケットのカウントをゼロに等しいように設定するようにさらに構成されているＣ５８記載のデバイス。
［Ｃ６０］
前記しきい値は、パケットロスしきい値と、１フレーム当たりのパケットの平均数とに少なくとも部分的に基づいているＣ５８記載のデバイス。
［Ｃ６１］
前記デバイスは、ワイヤレス通信デバイスハンドセットを具備するＣ５４記載のデバイス。
［Ｃ６２］
前記デバイスは、１つ以上の集積回路デバイスを具備するＣ５４記載のデバイス。
［Ｃ６３］
デバイスにおいて、
ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも１つのエラーを検出する手段と、
前記デバイスと前記ビデオエンコーダとの間のデータ通信に対する往復移動時間を決定する手段と、
前記デバイスにより検出された以前のエラーを示しているフィードバックメッセージを、前記デバイスが前記ビデオエンコーダに最後に送った時間である、最後に送られた時間を決定する手段と、
現在の時間を、前記最後に送られた時間と前記往復移動時間との合計と比較する手段と、
前記比較に基づいて、前記デバイスにより検出された少なくとも１つのエラーを示している第２のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定する手段とを具備するデバイス。
［Ｃ６４］
コンピュータ読取り可能媒体において、
ビデオエンコーダから送られた、コード化されているビデオデータに関係する少なくとも１つのエラーを、ビデオデコーダにより検出することと、
前記ビデオデコーダと前記ビデオエンコーダとの間のデータ通信に対する往復移動時間を決定することと、
前記ビデオデコーダにより検出された以前のエラーを示しているフィードバックメッセージを、前記ビデオデコーダが前記ビデオエンコーダに最後に送った時間である、最後に送られた時間を決定することと、
現在の時間を、前記最後に送られた時間と前記往復移動時間との合計と比較することと、
前記比較に基づいて、前記ビデオデコーダにより検出された少なくとも１つのエラーを示している第２のフィードバックメッセージを、前記ビデオエンコーダに送るかどうかを決定することと、
を１つ以上のプロセッサに生じさせるための命令を含むコンピュータ読取り可能媒体。
【図１】
0005917638.tif 000002
【図２】
0005917638.tif 000003
【図３】
0005917638.tif 000004
【図４】
0005917638.tif 000005
【図５】
0005917638.tif 000006
【図６】
0005917638.tif 000007
【図７】
0005917638.tif 000008
【図８】
0005917638.tif 000009
【図９】
0005917638.tif 000010
【図１０】
0005917638.tif 000011