エンコーダが実施する方法であって、キーフレーム及び予測フレームを含むエンコードされたフレームのシーケンスを送信するステップであって、前記エンコードされたフレームの少なくとも一部は、当該フレームがデコーダでキャッシュされるフレームであることを示すフレームタイプコード有するステップと、パケットロス検出信号を受信するステップと、前記パケットロス検出信号に応じて、前記キャッシュされたフレームの少なくとも1つを参照して生成された、エンコードされたフレームを送信するステップとを備えることを特徴とする方法。前記エンコードされたフレームの少なくとも一部は、キーフレームであることを特徴とする請求項1に記載の方法。前記エンコードされたフレームの少なくとも一部は、前記関連するフレームがキャッシュされないことを示すフレームタイプコードを有することを特徴とする請求項1に記載の方法。当該フレームが前記デコーダでキャッシュされることを示すタイプコードを有するフレームが、定期的に送信されることを特徴とする請求項1に記載の方法。前記デコーダでキャッシュされるフレームの送信間隔は、固定された間隔、または変動する間隔であることを特徴とする請求項4に記載の方法。前記エンコーダで、当該フレームが前記デコーダでキャッシュされることを示すタイプコードを有するフレームをキャッシュするステップをさらに備えることを特徴とする請求項1に記載の方法。前記パケットロス検出信号が、フィードバック経路を介して受信されることを特徴とする請求項1に記載の方法。前記パケットロス検出信号は、パケットロスに関連するタイムスタンプを有することを特徴とする請求項1に記載の方法。前記キャッシュされたフレームの少なくとも一つを参照して生成され、前記パケットロス検出信号に応じて送信された前記エンコードされたフレームは、前記パケットロスに関連する前記タイプスタンプに基づいて選択されることを特徴とする請求項8に記載の方法。前記エンコードされたフレームは、フレームヘッダをさらに含み、前記フレームタイプコードは、前記フレームヘッダにおいて定義されることを特徴とする請求項1に記載の方法。前記フレームは、画像データ、ビデオデータ、オーディオデータ、または音声データを含むことを特徴とする請求項1に記載の方法。請求項1に記載の方法をコンピュータシステムに実施させるためのコンピュータ実行可能命令を格納することを特徴とするコンピュータ可読媒体。エンコーダであって、キーフレーム及び予測フレームを含むエンコードされたフレームのシーケンスを送信するステップであって、前記エンコードされたフレームの少なくとも一部は、当該フレームがデコーダでキャッシュされるフレームであることを示すフレームタイプコード有するステップと、前記デコーダにおけるパケットロス検出の指示を受信するステップと、パケットロスの前記指示に応じて、前記エンコーダでキャッシュされると示された少なくとも1つのフレームを参照して生成された、エンコードされたフレームを送信するステップとを備えることを特徴とするエンコーダ。前記エンコードされたフレームは、フレームヘッダをさらに含み、前記フレームタイプコードは、前記フレームヘッダにおいて定義されることを特徴とする請求項13に記載のエンコーダ。前記パケットロス検出信号は、失われたと示されたパケットに関連するタイムスタンプを含み、前記パケットロス検出信号に応じて送信された前記フレームを生成するために使用された、前記エンコーダでキャッシュされた前記少なくとも1つのフレームは、前記タイムスタンプに基づいて選択されることを特徴とする請求項13に記載のエンコーダ。前記エンコードされたフレームは、シーケンス番号を含むことを特徴とする請求項13に記載のエンコーダ。前記パケットロス検出信号に応じて送信された前記フレームを生成するために使用された、前記エンコーダでキャッシュされた前記少なくとも1つのフレームは、前記パケットロスに関連するシーケンス番号に基づいて選択されることを特徴とする請求項16に記載のエンコーダ。当該フレームが前記デコーダでキャッシュされることを示すフレームタイプコードを有する前記エンコードされたフレームの少なくとも一部は、キーフレームであることを特徴とする請求項13に記載のエンコーダ。前記エンコードされたフレームの少なくとも一部は、前記関連するフレームがキャッシュされないことを示すフレームタイプコードを有することを特徴とする請求項13に記載のエンコーダ。当該フレームが前記デコーダでキャッシュされることを示すフレームタイプコードを有するフレームは、定期的に送信されることを特徴とする請求項13に記載のエンコーダ。ネットワークを介して送られたパケットは、欠損する、つまり廃棄されるおそれがある。この損失は、ランダムで予測できない形で起きる。さらに、ビデオ圧縮ストリームデータは遅延の影響を大変受けやすく、あまりに多くの遅延したパケットにより、飛び飛びの分断された信号が生じ、パケットを送られた順序と同じ順序になるように再組み立てする必要がある。伝送遅延の問題は、新しいIフレームを再送する際にも起きるおそれがあり、新しいフレームは、失われた参照フレームを破棄したのと同じすべての問題の影響を受けやすい。さらに、非可逆符号化方式では、圧縮は、記憶および伝送についての目標ビットレートを満たすように設計されている。再構成される画像の質を低下させることにより、高圧縮が達成される。そのため、廃棄されまたは遅延されたパケットにより生じた余分な損失は、画像の質を許容水準より低くするおそれがある。パケットロスに対処する能力は、損失を生じやすいノイズを伴うネットワークでリアルタイムビデオコーデックRTCが良好に動作するために極めて重要である。ほとんどの既存のビデオコーデックは、参照フレームが失われたとき新しいIフレームを要求することによってパケットロスに対処している。他の既存のビデオコーデックは、スライスベースの符号化を使用し、それによりシグナリングオーバーヘッドsignalingoverheadが増加する。図1は、新しいIフレームを要求することによる、従来のパケットロスのリカバリを示す。この従来技術の方法では、Iフレーム104が、デコーダ102で受け取られる。次いで、そのフレームは、後続の従属するPフレーム106を解釈/再構成するために使用される。次の従属フレームであるPフレーム108は、充分なパケットが、ばらばらの順序で受け取られるかまたは失われたとき、破棄される。次のPフレーム110および後続のフレームを、もはや再構成することができない。ここではデコーダ102により表されている宛先ノードで、Iフレーム要求が生成され、ここではエンコード114により表されるソースノードに送られる。各後続のPフレームまたはBフレームを、新しいIフレームが受け取られるまで再構成することができない。ソースノード114は、要求を受け取ると、新しいIフレーム112を組み立て、通信チャネルを使用して、それを宛先ノード102に送る。新しいIフレーム112を受け取った後、宛先チャネルは、後続のPフレームを正常にデコードすることができる。しかし、この結果、最初の要求を送るために必要な時間と等しい遅延116に加え、Iフレームをエンコードする時間、および、Iフレームを宛先ノード102に送る時間が生じる。さらに、送信側と受信側が、大きな物理的距離によって隔てられていることがあり、この長い距離の移動により、顕著な遅延時間が発生し、それに対応するビデオの質の低下がもたらされる。他の従来技術の方法では、Iフレーム104、112は、一定の間隔で送られる。Iフレーム112が、破棄または遅延により失われた場合、デコーダは、次のIフレームが受け取られるまで、後続のPフレーム110、108、106を不正確にはデコードせずに待機する。したがって、非可逆パケットベースのネットワークを介して、圧縮されたビデオを送信するための、改良された方法およびシステムが必要とされる。本明細書に記載のビデオコーデックは、エンコーダにおいてフレームキャッシュframecacheを含み、デコーダにおいてそれに対応するフレームキャッシュを含み、それぞれのフレームキャッシュは、同期して動作する。デコーダキャッシュ内のフレームは、デコーダにおいてフレームを解釈するのを助けるために使用される。解釈するフレームを、エンコーダキャッシュに格納される同じフレームのコピーを用いて生成することができる。システムの実装形態も提供される。それは、データパケットをフレーム内にエンコードするエンコーダ、および、フレームまたはその一部分を格納することができるエンコーダキャッシュを含む。それは、さらに、フレームまたはその一部分を同様に格納することができるデコーダキャッシュを有するデコーダを含む。デコーダは、パケットロスを検出することができる。いくつかの実施形態では、そのような損失が検出されたとき、エンコーダは、エンコーダキャッシュで格納されたフレームを使用してフレームをエンコードし、次いで、そのフレームは、デコーダキャッシュに格納されたフレームを使用してデコーダでデコードされる。このキャッシングメカニズムは、下記の主要な特徴を提供する。aパケットロスのリカバリの際のより効率的な帯域幅の使用bスライスベースの符号化に関連するシグナリングオーバーヘッドの除去本発明の他の特徴および利点は、添付の図面を参照して行われる以下の実施形態の詳細な説明から明らかにされる。以下の説明は、優雅なパケットロスのリカバリ、および効率的な帯域幅の利用の効率的な組合せを可能にするように設計された、ビデオエンコーダとビデオデコーダの双方におけるフレームキャッシュの実装に関する。フレームキャッシュの例示的適用は、画像またはビデオエンコーダおよびデコーダにおいて行われる。したがって、フレームキャッシュを、一般的な画像またはビデオエンコーダおよびデコーダのコンテキストで説明されるが、代替として、後で説明するこの例示的装置とは詳細が異なることがある他の様々な画像およびビデオコーデックのエンコーダおよびデコーダに組み込むこともできる。1.汎用ビデオエンコーダおよびデコーダ図2は、一般的なビデオエンコーダ200のブロック図であり、図3は、一般的ビデオデコーダ300のブロック図であり、それらにフレームキャッシュが組み込まれる。エンコーダおよびデコーダ内のモジュール間に示される関係は、エンコーダおよびデコーダにおける情報の主な流れを示し、他の関係は単純化するために図示していない。特に、図2および3は、一般に、ビデオシーケンス、フレーム、マクロブロックmacroblock、およびブロックなどに使用されるエンコーダ設定、モード、およびテーブルなどを示すサイド情報を図示していない。このようなサイド情報は、通常、サイド情報のエントロピ符号化の後に、出力ビットストリームとして送られる。出力ビットストリームのフォーマットは、Windows登録商標MediaVideoフォーマットまたは他のフォーマットとすることができる。所望の圧縮の実装形態およびタイプに応じて、エンコーダ200またはデコーダ300のモジュールについて、追加、省略、複数のモジュールへの分割、他のモジュールとの結合、および/または、同様のモジュールとの置換を行うことができる。代替実施形態では、異なるモジュール、および/または他の構成のモジュールを有する、エンコーダまたはデコーダが、ここに記載の技術の1つまたは複数を実行する。A.ビデオエンコーダ図2は、一般的なビデオエンコーダシステム200のブロック図である。エンコーダシステム200は、現行のフレーム205を含むビデオフレームのシーケンスを受け取り、圧縮されたビデオ情報295を出力として生成する。ビデオエンコーダの特定の実施形態では、通常、一般的エンコーダ200の変形形態または補足されたバージョンを使用する。エンコーダシステム200は、予測されたフレームとキーフレームを圧縮する。図2では、説明のために、エンコーダシステム200を介したキーフレームの経路と、順方向予測forward-predictedフレームの経路を示している。エンコーダシステム200のコンポーネントの多くは、キーフレームと予測フレームの両方を圧縮するために使用される。これらのコンポーネントによって行われる正確な動作は、圧縮されている情報のタイプに応じて大きく異なる。Pフレーム、Bフレーム双方向予測、またはフレーム間符号化inter-codedフレームであり得る予測フレームは、1つまたは複数の他のフレームからの予測または差異の観点から表される。予測残差は、予測されたものと元のフレームの間の差異である。これに対して、Iフレームまたはフレーム内符号化フレームとも呼ばれるキーフレームは、他のフレームを参照することなく圧縮される。現行のフレーム205が順方向予測フレームの場合、動き検出器210が、現行フレーム205の、マクロブロックまたはピクセルの他のセットの動きを、フレームストアframestore220にバッファされた再構成された先行フレームである参照フレーム225に関連して推定する。代替実施形態では、参照フレームは、より後のフレームとすることができ、あるいは、現行フレームは、双方向で予測されうる。動き検出器210は、動きベクトルなどの動き情報215をサイド情報として出力する。動き補償器230は、動き情報215を、再構成された先行フレーム225に適用して、動き補償された現行フレーム235を形成する。ただし、この予測は、めったに完全ではなく、動き補償された現行フレーム235と元の現行フレーム205の差異は、予測残差245である。あるいは、動き検出器210および動き補償器230は、他のタイプの動き検出/補償を適用する。周波数変換器260は、空間領域のビデオ情報を、周波数領域すなわちスペクトルのデータに変換する。ブロックベースのビデオフレームでは、周波数変換器260は、離散コサイン変換DCTと同様の性質を有する、後の節で説明する変換を適用する。いくつかの実施形態では、周波数変換器260は、周波数変換を、キーフレームについての空間予測残余のブロックに適用する。周波数変換器260は、8×8、8×4、4×8、または他のサイズの周波数変換を適用することができる。次いで、量子化器270が、空間データ係数のブロックを量子化する。量子化器270は、均一なスカラ量子化を、フレーム毎または他の単位ごとに異なる刻み幅で、スペクトルデータに適用する。あるいは、量子化器270は、他のタイプの量子化、例えば、非均一、ベクトル、または非適応の量子化をスペクトルデータ係数に適用する、または、周波数変換を使用しないエンコーダシステムにおいて空間領域データを直接量子化する。適応的量子化に加えて、エンコーダ200は、レート制御のために、フレームドロップframedropping、適応フィルタリング、または他の技術を使用することができる。再構成された現行のフレームが、後続の動き検出/補償のために必要とされるとき、逆量子化器276は、量子化スペクトルデータ係数に対して逆量子化を実行する。次いで、周波数逆変換器266が、周波数変換器260の逆の操作を実行し、予測されたフレームに対する再構成された予測残差、または再構成されたキーフレームを生成する。現行フレーム205がキーフレームであった場合、再構成されたキーフレームは、再構成された現行フレーム図示せずと見なされる。現行フレーム205が、予測フレームであった場合、再構成された予測残差は、動き補償された現行フレーム235に加えられて、再構成された現行フレームが形成される。フレームストア220は、再構成された現行フレームを、次のフレームを予測する際に使用するためにバッファする。いくつかの実施形態では、エンコーダ200は、フレームのブロックにおける不連続を適応的に平滑化するために、デブロッキングフィルタdeblockingfilterを再構成されたフレームに適用する。エントロピ符号化器280は、量子化器270の出力、ならびにサイド情報例えば、動き情報215、量子化刻み幅を圧縮する。典型的エントロピ符号化技術には、算術符号化、差分符号化、ハフマン符号化Huffmancoding、ランレングス符号化runlength符号化、LZ符号化、辞書型符号化、およびそれらの組合せが含まれる。エントロピ符号化器280は、通常、異なる種類の情報例えば、DC係数、AC係数などに対して異なる符号化技術を使用し、ある特定の符号化技術において複数のコード表のうちから選択をすることができる。エントロピ符号化器280は、ビデオ情報295をバッファ290に入れる。バッファレベルの標識が、ビットレート適応モジュールにフィードバックされる。圧縮されたビデオ情報295は、バッファ290から一定または比較的一定のビットレートで消耗し、そのビットレートで後続のストリーミングのために格納される。あるいは、エンコーダシステム200は、圧縮されたビデオ情報295を直ちにストリームし圧縮を続ける。バッファ290より先または後に、圧縮されたビデオ情報295は、ネットワークを介する送信のためにチャネル符号化されうる。チャネル符号化は、エラー検出および訂正データを、圧縮されたビデオ情報295に適用することができる。B.ビデオデコーダ図3は、一般的なビデオデコーダシステム300のブロック図である。デコーダシステム300は、圧縮されたビデオフレームのシーケンスに関する情報395を受け取り、再構成されたフレーム305を含む出力を生成する。ビデオデコーダのいくつかの特定の実施形態は、通常、一般的なデコーダ300の変形形態または補足されたバージョンを用いる。デコーダシステム300は、予測フレームおよびキーフレームを圧縮する。図3では、説明のために、デコーダシステム300を介するキーフレームの経路と、順方向予測フレームの経路を示している。デコーダシステム300のコンポーネントの多数は、キーフレームと予測フレームの両方を圧縮するために使用される。これらのコンポーネントにより行われる正確な動作は、圧縮される情報のタイプによって変化しうる。バッファ390は、圧縮されたビデオシーケンスに関する情報395を受け取り、受け取った情報をエントロピデコーダ380に使用可能にする。バッファ390は、時間に対してかなり一定のレートで情報を受け取り、また、帯域幅または送信における短期の変動を平滑化するためのジッタバッファを含む。バッファ390は、再生バッファおよび他のバッファも含むことができる。あるいは、バファ390は、変動するレートで情報を受け取る。圧縮されたビデオ情報395は、バッファ390に到達する前、またはバッファ390から離れた後、またはその両方において、エラー検出および訂正のためにデコードされ処理されうる。エントロピデコーダ380は、エントロピ符号化された量子化データ、ならびにエントロピ符号化されたサイド情報例えば、動き情報、量子化刻み幅をデコードし、通常は、エンコーダ200で行われたエントロピ符号化の逆を行う。エントロピデコード技術には、算術デコード、差分デコード、ハフマンデコード、ランレングスデコード、LZデコード、辞書型デコード、およびそれらの組合せが含まれる。エントロピデコーダ380は、異なる種類の情報例えば、DC係数、AC係数、異なる種類のサイド情報に対して異なるデコード技術を使用し、ある特定のデコード技術において複数のコード表のうちから選択をすることができる。再構成されるフレーム305が、前進予測フレームである場合、動き補償器330は、動き情報315を参照フレーム325に適用して、再構成されるフレーム305の予測335を形成する。例えば、動き補償器330は、マクロブロック動きベクトルmacroblockmotionvectorを使用して、参照フレーム325におけるマクロブロックを見つける。フレームバッファ320は、先行の再構成されたフレームを参照フレームとして使用するために格納する。あるいは、動き補償器は、他のタイプの動き補償を用いる。動き補償器330による予測は、完全であることは稀であり、したがって、デコーダ300は、予測残差345の再構成もする。デコーダ300が、後続の動き補償のために再構成されたフレームを必要とするとき、フレーム320は、次のフレームを予測する際に使用するために、再構成されたフレーム305をバッファする。いくつかの実施形態では、エンコーダ200は、デブロッキングフィルタを、再構成されたフレーム305に適用して、フレームのブロックにおける不連続を適応的に平滑化する。逆量子化器370は、エントロピデコードされたデータを逆量子化する。一般に、逆量子化器370は、均一のスカラ逆量子化を、エントロピデコードされたデータに、フレーム毎または他の単位で異なる刻み幅で適用する。あるいは、逆量子化370は、他のタイプの逆量子化、例えば、非均一、ベクトル、または非適応量子化をデータに適用する、または、周波数逆変換を使用しないデコーダシステムにおける空間領域データを直接逆量子化する。周波数逆変換器360は、量子化された周波数領域データを、空間領域ビデオ情報に変換する。ブロックベースのビデオフレームについて、周波数逆変換器360は、後の節で説明される逆変換を適用する。いくつかの実施形態では、周波数逆変換器360は、キーフレームについての空間予測残差のブロックに、周波数逆変換を施す。周波数逆変換器360は、8×8、8×4、4×8、またの他のサイズの周波数逆変換を施すことができる。C.フレームキャッシング本明細書に記載のビデオコーデックアーキテクチャにおけるフレームキャッシングを使用する実装形態では、参照フレームは、エンコーダおよびデコーダの両方で順次キャッシュされることが好ましい。参照フレームが失われたとき、後続の従属フレームは、デコーダにおいてキャッシュされた適切な参照フレームを使用してデコードされうる。これにより、以下の利益がもたらされる。Aより効率的な帯域幅の利用:従来技術の方法は、Iフレームが生成されエンコーダに送られることを必要とする。本方法では、特別なタイプのフレーム、すなわちSPフレームが、デコーダに送られ、次いで、必要とされるまでキャッシュされることを可能にする。SPフレームは、一般に、同じ品質のIフレームよりも少ないビット数で符号化することができ、したがって、等価のIフレームを使用するよりも小さい帯域幅を使用する。Bより速いエラーリカバリ:パケットロスが発生したとき、SPフレームがデコーダにおいて既にキャッシュされていることが好ましく、これにより、ほとんど遅延時間なしに、ストリームにおける次のPフレームを解釈することを可能にする。2.例示的方法の概要ここに記載の実施形態は、デコーダにおけるフレームをキャッシュし、次いで、キャッシュしたフレームを使用して、破棄されたまたは失われている参照フレームに基づいてPフレームおよびBフレームを再構成するための技術およびツールを含む。キャッシュを、ビデオデコーダ300図3の一部分として、またはビデオエンコーダ200図2の一部分として組み込むことができ、好ましくはその両方において組み込むことができる。パケットロスがデコーダによって検出されると、デコーダは、エンコーダ200にメッセージを送り、次いで、エンコーダ200は、共有されたキャッシュされたフレームの1つに基づいて新しい参照フレームを生成する。次いで、生成された参照フレームは、デコーダに送られる。キャッシュされたフレームは、別の参照フレームがデコーダに到着するまで、生成されたフレームおよび後続の従属フレームをデコードするためにデコーダで使用される。本明細書に記載のフローチャートの要素は、例に過ぎず、記載の技術に応じて、他のフローチャート要素を使用することができる。さらに、フローチャート要素は、記載の技術およびツールに応じて、異なる順序で行い、あるいは特定の処理ブロックを省略することができる。記載の技術およびツールは、互いに組み合わせてまたは他の技術およびツールと組み合わせて、あるいは別個に使用されうる。図4を参照すると、フローチャート400は、本明細書に開示の方法の簡潔な概観を示している。プロセスブロック402で、ネットワークを介して送信されるビデオ信号の一部分がパケットに割り当てられる。プロセスブロック404で、エンコーダは、パケットの少なくとも一部をフレーム内にエンコードする。これらのフレームは、IフレームおよびPフレームのような参照フレーム325からなり、他の任意のフレームに対する参照として使用されないBフレームからなることもある。スキップフレームskipframeのような代替タイプのフレームも、フレーム内にエンコードされうる。任意選択のプロセスブロック406で、エンコーダでフレームをキャッシュすることができ、このフレームは、一般的には参照フレームである。フレームは、キャッシュされた場合、Cached-FrameCFタイプがそのフレームヘッダにおいて割り当てられる。次いで、キャッシュされたフレームは、プロセスブロック408で、他のフレームと一緒に送信される。ブロック410で、フレームは、デコーダに到着した後、デコーダキャッシュ内にキャッシュされる。通常のキャッシュフレームのタイプは、PフレームおよびIフレームである。後続参照フレームが失われた場合、プロセスブロック412に示すように、キャッシュされたフレームを、後続の従属フレームを解凍するために使用することができる。フローチャート400は、単に1つの例示的実施形態を示しているに過ぎず、何らかの限定をするものとして解釈されるべきではない。例えば、判断ブロック406でのエンコーダに関連するキャッシュは任意選択である。方法400を、図2および図3に示されるように、ビデオコーデックで実装することができ、ビデオコーデックを、ソフトウェア、ハードウェア、または両方の組合せで実装することができる。3.フレームをキャッシュするための例示的方法図5A~5Dは、ノイズを伴うネットワークにおいてビデオコーデックの最適なパフォーマンスを可能にするためにフレームをキャッシュする例示的方法を示す。図5Dを参照すると、例示的実施形態では、フレームは、RTPリアルタイム転送プロトコル508Dなどの主要チャネルを介して、エンコーダ502Dからデコーダ506Dにフレームが送信されている。インターネットは、しばしば、パケットを欠損したり、パケットをばらばらの順序で送達することがある。パケットは、あるランダムな時間量で遅延することもあり、これによりパケットが使用できないようになることもある。パケットロスは、デコーダ506Dによって検出され、フィードバック経路を介して、デコーダからエンコーダ502Dにその信号が送られる。メッセージを正しく再構成するために、いくつかの実施形態では、RTP508Dヘッダが、情報およびシーケンス番号を含み、この両方により、受信側が、パケットを正しく並べ変え、失われたパケットの番号を決定することを可能にする。RTP508Dは、その制御プロトコルRTPC504Dによって増強され、データの送達を監視するために使用することができるフィードバック経路を提供するために使用される。各データパケットは、シーケンス番号を有し、通常、シーケンス番号は、各後続データパケットにつき1つ増分される。例示的実施形態では、シーケンス番号が受け取られないとき、パケットロスは、デコーダ506Dによって検出される。デコーダ506Dは、パケットロスを検出すると、フィードバック経路504Dを介してメッセージを送り、どのパケットまたは複数のパケットが失われたかをエンコーダ502Dに通知する。いくつかの実施形態では、失われた最初のパケットについての情報のみが供給される。いくつかの実施形態では、廃棄されたパケットの番号、または失われた特定のパケットのリストなどの追加の情報も供給される。好ましくは、パケットロスの位置が、最も初期のパケットロスのタイムスタンプを使用して報告ウィンドウに伝えられる。この情報により、エンコーダ502Dが、どのキャッシュされた参照を使用するかを決定できるようになる。図5Aを参照すると、エンコーダ502Aは、定期的にフレームをフレームキャッシュ504Aにキャッシュしている。どのフレームがキャッシュされるか、どのくらいの頻度でキャッシュを行うべきか、ならびに、一度にキャッシュできるべきフレーム数は、実装形態に大きく依存する。いくつかの実施形態では、キャッシュされるフレームは、参照フレーム、すなわちPフレームおよびIフレームである。他のフレームタイプをキャッシュすることもできる。キャッシュされたフレーム506Aまたはそのコピーはまた、デコーダ512Aに送られる。エンコーダキャッシュ504Aにも格納される、このようなフレームは、そのヘッダ内でフレームタイプCFキャッシュされたフレームとして定義される。いくつかの実施形態では、このヘッダにより、後で使用するためにこの特定のフレームをデコーダキャッシュ510Aに格納すべきであることを、デコーダ512Aに知らせることによって、エンコーダ502Aとデコーダ512Aの同期が可能になる。下記の表1は、CFキャッシュされたフレームタイプを含む、フレームタイプコードの例示的実施形態を示している。タイプCFのフレーム508Aは、デコーダ512Aに到達すると、デコーダフレームキャッシュ510Aに格納される。タイプCFの各フレームをデコーダ512Aにおいて格納することは、エンコーダおよびデコーダのフレームキャッシュ504Aおよび510Aを同期させる1つの方法である。ただし、これらのフレームキャッシュを同期させる他の方法も企図される。パケットロス502Bがデコーダ504Bで検出されたとき、フィードバック経路504Dを使用して、その報告がエンコーダ502Aに返される。この報告は、好ましくは、エンコーダ502Aが参照のために適切なキャッシュされたフレーム504Aを選ぶことをできるようにするタイムスタンプ情報を含む。他の実施形態では、最新のキャッシュされたフレームが使用される。キャッシュされたフレームが選ばれると504C、そのフレームは、エンコーダ502Cによって、次のフレーム506Cをエンコードするために使用される。次のフレーム506Cは、好ましくは、Pフレームであるが、Iフレームおよび他のフレームタイプをエンコードすることもできる。キャッシュされたフレーム506Cは、Super-PフレームSPフレームとして知られ、そのヘッダでそのように示される。SPフレームの例示的フレームタイプコードワードは、上記の表1に示されている。デコーダ512Cは、SPフレーム508Cを受け取ると、そのローカルでキャッシュされたフレーム510Cを使用して、SPフレーム508Cを解凍されたフレームUフレーム514C内にデコードする。この方法を使用すると、デコーダ512Cにおけるリカバリ時間は、パケットロスイベントとSPフレームの到着の間の期間である。この生成されたSPフレーム508Cが、送信中に失われた場合、デコーダ512Cは、一般に、タイプP、SP、またはIの新しい参照フレームの到着まで、パケットロスの報告を送り続ける。パケットロスからの実際のリカバリ時間は、主にパケットロス報告の間隔の関数となる。いくつかの実装形態では、エンコーダ502Aは、フレーム504Aをキャッシュし、キャッシュされたフレーム506Aのコピーを、デコーダに定期的に送る。キャッシュされたフレームが送られる時間間隔は、実装形態に大きく依存する。いくつかの実装形態では、等しい間隔でフレームをキャッシュすることができる。他の実装形態では、ネットワークの速度やネットワークが経験するロスの量などのそれ自体のシステム変数に依存する間隔でフレームをキャッシュすることができる。4.例示的システムの実施形態図6は、デコーダおよびエンコーダベースのフレームキャッシングを実装することができる、ビデオシステム600の他の例示的実施形態を示す。本発明を、様々な汎用または専用のビデオシステムで実装することができ、ビデオシステム600は、本発明の使用または機能の範囲に関して、どのような限定も示唆するものでもない。ビデオシステムは、少なくとも1つのエンコーダ602を含む。このエンコーダは、さらに、エンコーダキャッシュ604を含む。図示の実施形態では、キャッシュは、エンコーダ602内に存在するが、他の実装形態では、ビデオシステム内の他の場所に存在することがある。エンコーダキャッシュ604は、1つまたは複数のビデオフレーム606の部分を格納することが可能である。限定ではなく示唆として、これらのフレームの部分は、いくつかのブロック、マクロブロック、いくつかのスライス、フレーム全体、フレームのグループ、または当業者が想定できる他の任意のフレームの区分から構成されうる。エンコーダキャッシュ604は、単に1つのフレーム部分、2つのフレーム部分、または与えられた実装形態に望ましい任意の数のフレーム部分をキャッシュすることができる。ビデオシステム600はまた、デコーダ608を含む。エンコーダ602と同様に、デコーダ608は、1つまたは複数のビデオフレーム612の部分を格納するために使用される、デコーダキャッシュ610を含む。これらのビデオフレーム部分は、1つまたは複数のブロック、マクロブロック、スライス、フレーム全体、フレームのグループ、または当業者が想定することができる他のフレームの区分を含むことができる。デコーダキャッシュ610を、1つのフレーム部分、2つのフレーム部分、または他の任意の数のフレーム部分を格納するように構成することができる。ビデオシステム600はまた、エンコーダ604およびデコーダ610が、実質的に同じ情報を含むことを保証するために使用される、シンクロナイザ614を含む。前述のように、シンクロナイザは、エンコーダ602によって施される、いくつかの特定のフレームまたはフレームの部分に付加された一意のフレームヘッダを含むことができ、そのフレームヘッダは、特定のフレームまたはフレームの部分がキャッシュされるべきことをデコーダ608に通知する。例えば、あるフレームがエンコーダキャッシュ604に格納され、また、デコーダ608にも送られる場合がある。そのフレームは、エンコーダキャッシュ604に格納されたそのコピーが存在することを示す、特有のCFCachedFrameヘッダを有することができる。デコーダ608がフレームのデコードを困難または不可能にするパケットロスまたは他の破棄を検出したとき、エンコーダキャッシュ604に格納されたフレームからの、エンコーダ602によってエンコードされる後続のフレームは、このフレームがデコーダキャッシュ610におけるフレームからデコードすることができることを示すようにマーク付けされうる。いくつかの実装形態では、デコーダキャッシュ610において複数のフレームを格納することができ、このような場合、ヘッダは、どのキャッシュされたフレームが使用されるべきかを決定するための充分な他の情報も任意選択で含むことができる。他の同期化の方法も企図される。送信機616が、エンコーダ602からデコーダ608にフレームを送信する。5.コンピューティング環境上記のフレームキャッシングの実装形態を、特に例として、コンピュータ、画像およびビデオ録画、送受信装置、携帯ビデオプレイヤビデオ会議、ウェブビデオストリーミングアプリケーションなどを含む、画像およびビデオ信号処理が実行される、任意の様々な装置で実施することができる。画像およびビデオ符号化技術は、ハードウェア回路例えば、ASIC、FPGAなどの回路、ならびに、図7に示されるような、コンピュータまたは他のコンピューティング環境において実行される中央処理装置CPU、専用グラフィックプロセッサ、またはビデオカードなどで実行される画像およびビデオ処理ソフトウェアで実装することができる。図7は、上述のフレームキャッシングを実装することができる、適切なコンピューティング環境700の一般的な例を示す。本発明を、様々な汎用または専用のコンピューティング環境で実装することができ、コンピューティング環境700は、本発明の使用または機能の範囲に関して、どのような限定も示唆するものでもない。コンピューティング環境700は、少なくとも1つの処理装置710およびメモリ720を含む。この最も基本的構成730は、破線内に含まれている。処理装置710は、コンピュータ実行可能命令を実行し、現実または仮想のプロセッサとすることができる。多重処理システムにおいては、複数の処理装置が、コンピュータ実行可能命令を実行して処理能力を高める。メモリ720は、揮発性メモリ例えば、レジスタ、キャッシュ、RAMなど、不揮発性メモリ例えば、ROM、EEPROM、フラッシュメモリなど、またはこの2つの何らかの組合せとすることができる。メモリ720は、上述のエンコーダ/デコーダキャッシングを実装するソフトウェア780を格納する。コンピューティング環境は、追加の特徴を有することができる。例えば、コンピューティング環境700は、ストレージ740、1つまたは複数の入力装置750、1つまたは複数の出力装置760、および1つまたは複数の通信接続770を含む。バス、コントローラ、またはネットワークなどの相互接続メカニズム図示せずは、コンピューティング環境700のコンポーネントを相互接続する。オペレーティングシステムソフトウェア図示せずは、一般に、コンピューティング環境700で実行される他のソフトウェアのための動作環境を提供し、コンピューティング環境700のコンポーネントの活動を調整する。ストレージ740は、リムーバルまたは固定とすることができ、また、磁気ディスク、磁気テープまたはカセット、CD-ROM、CD-RW、DVD、あるいは、情報を格納するために使用可能でコンピューティング環境700においてアクセスすることができる他の任意の媒体を含む。ストレージ740は、エンコーダ/デコーダキャッシング方式を実装するソフトウェア780のための命令を格納する。複数の入力装置750は、キーボード、マウス、ペン、またはトラックボールなどのタッチ入力装置、音声入力装置、スキャン装置、あるいは、コンピューティング環境700に入力を提供する他の装置とすることができる。オーディオに関しては、複数の入力装置750は、アナログまたはデジタル形式でオーディオ入力を受け入れるサウンドカードまたは同様のデバイス、あるいは、オーディオサンプルをコンピューティング環境700に提供するCD-ROMリーダとすることができる。複数の出力装置760は、ディスプレイ、プリンタ、スピーカ、CDライタ、あるいは、コンピューティング環境700からの出力を提供する他の装置とすることができる。複数の通信接続770は、通信媒体を介して他のコンピューティングエンティティと通信することを可能にする。通信媒体は、コンピュータ実行可能命令、圧縮されたオーディオまたはビデオ情報、または被変調データ信号における他のデータなどの情報を搬送する。被変調データ信号は、情報を信号にエンコードするようにセットまたは変更された1つまたは複数の信号特性を有する信号である。通信媒体には、限定ではなく例として、電気、光、RF、赤外線、音響、または他の搬送波によって実装される有線または無線技術が含まれる。本明細書におけるエンコーダ/デコーダフレームキャッシング技術を、コンピュータ可読媒体の一般的なコンテキストで記述することができる。コンピュータ可読媒体は、コンピューティング環境700においてアクセスすることができる任意の使用可能な媒体である。限定ではなく例として、コンピューティング環境700では、コンピュータ可読媒体には、メモリ720、ストレージ740、通信媒体、およびこれらの任意の組合せが含まれる。本明細書におけるエンコーダ/デコーダフレームキャッシングを、対象の現実または仮想のプロセッサ上のコンピューティング環境で実行されるプログラムモジュールに含まれるような、コンピュータ実行可能命令の一般的なコンテキストで記述することができる。一般に、プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、およびデータ構造などが含まれる。プログラムモジュールの機能を、様々な実施形態の必要に応じて、組み合わせることも、プログラムモジュール間で分割することもできる。プログラムモジュールのためのコンピュータ実行可能命令を、ローカルまたは分散コンピューティング環境で実行することができる。説明のために、上述の詳細な説明では、決定するdetermine、送信するtransmit、エンコード、デコード、適用するapplyなどの言葉を使用して、コンピューティング環境におけるコンピュータの動作を記述している。これらの言葉は、コンピュータによって行われる動作の高度に抽象化したものであり、人間によって行われる行為と混同されるべきではない。これらの言葉に対応する実際のコンピュータの動作は、実装形態に応じて異なる。本発明の原理を適用することができる多数の可能な実施形態に鑑みて、詳述された実施形態は、例示に過ぎず、本発明の範囲を限定するものとして解釈されるべきではない。むしろ、本発明では、そのようなすべての実施形態が、添付の特許請求の範囲とその均等物の範囲および趣旨に含まれるものとして請求される。