説明

パケットロスのリカバリを改善するためのフレームキャッシングの使用

【課題】フレームキャッシングを使用してパケットロスのリカバリを改良するための、新規で進歩性のある種々の装置および方法を提供すること。
【解決手段】開示された実施形態の1つは、エンコーダおよびそれに対応するデコーダにおいて、定期的で同期されたフレームキャッシングを使用するための方法である。デコーダは、パケットロスを発見したとき、エンコーダに通知し、次いで、エンコーダが、エンコーダとデコーダの両方で格納され共有されたフレームの1つに基づいて、フレームを生成する。デコーダは、この生成されたフレームを受け取ったとき、この生成されたフレームを、デコーダでローカルにキャッシュしたフレームを使用してデコードすることができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、ビデオ、画像、および他のデジタルメディアコンテンツの、エンコード、デコード、および処理をデジタルで行うための技術に関する。本発明は、詳細には、フレームキャッシング(frame caching)により、パケットロスを改善することに関する。
【背景技術】
【0002】
この特許書類の開示の一部分は、著作権の保護を受けている資料を含む。この著作権の保有者は、特許開示のいずれかによる複写に対して、それが特許商標庁のファイルまたは記録に見られるとき、異議がないが、そうでなければ、何にせよすべての著作権を留保する。
【0003】
デジタルビデオは、大量の記憶容量および伝送容量を消費する。一般的な未加工のデジタルビデオシーケンスは、毎秒15または30フレームを含む。各フレームは、数万または数十万の(ペル(pel)とも呼ばれる)ピクセルを含むことができる。各ピクセルは、ピクチャ(picture)の極めて小さな要素を表す。未加工の形式では、コンピュータは、1ピクセルを、3つのサンプルのからなる合計24ビットのセットとして表す。例えば、ピクセルは、ピクセルのグレイスケール(grayscale)成分を定義する、1つの8ビット輝度サンプル(ルマ(luma)サンプルとも呼ばれる)と、ピクセルの色成分を定義する、2つの8ビットクロミナンス(chrominance)サンプル(クロマ(chroma)サンプルとも呼ばれる)を含むことができる。したがって、一般的な未加工のデジタルビデオシーケンスの1秒あたりのビット数またはビットレートは、毎秒500万ビット以上である。
【0004】
多くのコンピュータおよびコンピュータネットワークは、未加工のデジタルビデオを処理するためのリソースが不足している。そのため、エンジニアは、デジタルビデオのビットレートを下げるために(符号化またはエンコードとも呼ばれる)圧縮を使用する。圧縮は、ビデオをより低速のビットレート形式に変換することによって、ビデオを格納し送信するコストを減少させる。(デコードとも呼ばれる)解凍は、圧縮された形式から元のバージョンのビデオを再構成する。「コーデック」とは、エンコーダ/デコーダシステムである。ビデオの品質は損なわれないがビットレートの低下はビデオデータの(ときとしてエントロピと呼ばれる)変動性の固有の量によって制限される圧縮は、ロスレス(lossless)(可逆)でありうる。あるいは、ビデオの品質は損なわれビットレートの達成可能な低下がより著しい圧縮は、ロッシー(lossy)(不可逆)でありうる。ロッシー圧縮が情報の近似を確立し、ロスレス圧縮技術がその近似を表すために適用されるシステム設計において、ロッシー圧縮は、ロスレス圧縮と併せてしばしば使用される。
【0005】
ビデオ圧縮技術は、一般に、「イントラピクチャ(intrapicture)」圧縮と「インターピクチャ(interpicture)」圧縮を含み、ピクチャは、例えば、プログレッシブスキャンビデオフレーム(progressively scanned video frame)、(ビデオフィールドにおいて交互のラインを有する)インタレースビデオフレーム、または、インターレースビデオフィールドである。一般的に言えば、ビデオシーケンスは、所与のフレーム内および連続したフレーム間に、かなり量の冗長を含む。例えば、人間の眼は、連続したビデオフレームにおける他の点では同様の背景のわずかな違いには気付かない。圧縮は、送信されているビットストリーム内の冗長マテリアルの特定の部分を除去し、次いで、ピクチャが解凍されるときに受信側でそれらを追加して戻すことによって、このような冗長を活用する。ビデオフレームから抜き取られる2つの共通の冗長は、空間的および時間的なものである。空間的冗長は、単一のフレーム内の隣接ピクセル間に存在する。イントラフレーム(intraframe)またはIフレームとして知られる空間的冗長を使用して圧縮されるフレームは、フレームそれ自体の内に画像を再構成するための必要なすべての情報を含み、つまり自己完結している。PフレームおよびBフレームのような時間的冗長を使用するフレームは、デコードされる他のフレームからの情報を必要とする。Pフレーム(予測的にエンコードされるフレーム)は、エンコードされ、そして、先行のIおよび/またはPフレームからの情報を使用してデコードされる必要がある。Bフレーム(双方向で予測的にエンコードされるフレーム)は、先行および後続のIおよびPフレームの両方からの情報を使用してエンコードされる。動き検出は、参照フレームとして知られる先行してエンコードされた画像から作成された、動きの予測された画像とともに、固有の事項をエンコードすることにより、連続したビデオフレーム(フレーム間)における時間的冗長を除去する。参照フレームが失われた場合、後続の予測フレームは復号されることができず、すなわち、伝送エラーが、後続のフレームに伝播する。
【0006】
プログレッシブフレームに関しては、イントラピクチャ圧縮技術が、(通常、Iフレームまたはキーフレームと呼ばれる)独立したフレームを圧縮し、インターピクチャ圧縮技術が、(通常、参照フレームまたはアンカーフレームと呼ばれる)先行および/または後続のフレームを参照して、(通常、予測フレーム、Pフレーム、またはBフレームと呼ばれる)フレームを圧縮する。(自己完結した)Iフレーム、および(一般に先行フレームを参照する)Pフレームは、それら自体を参照フレームとすることができ、一方、先行および後続フレームの両方を参照する、Bフレームは、通常はそれら自体が参照として使用されることはまったくない。
【0007】
結果のビデオが表示されるのに先立ってデータが圧縮されるとき、デコーダは、通常、圧縮の逆の操作を実行する。例えば、デコーダは、データを圧縮する際に、エントロピデコード、逆量子化、および逆変換を実行することができる。動き補償が使用される場合、デコーダ(およびエンコーダ)は、1つまたは複数の先行して再構成された(参照フレームとして現在使用されている)フレームから、フレームを再構成し、次いで、新しく再構成されたフレームが、より後のフレームの動き補償のための参照フレームとして使用されうる。
【発明の概要】
【発明が解決しようとする課題】
【0008】
ネットワークを介して送られたパケットは、欠損する、つまり廃棄されるおそれがある。この損失は、ランダムで予測できない形で起きる。さらに、ビデオ圧縮ストリームデータは遅延の影響を大変受けやすく、あまりに多くの遅延したパケットにより、飛び飛びの分断された信号が生じ、パケットを送られた順序と同じ順序になるように再組み立てする必要がある。伝送遅延の問題は、新しいIフレームを再送する際にも起きるおそれがあり、新しいフレームは、失われた参照フレームを破棄したのと同じすべての問題の影響を受けやすい。さらに、非可逆符号化方式では、圧縮は、記憶および伝送についての目標ビットレートを満たすように設計されている。再構成される画像の質を低下させることにより、高圧縮が達成される。そのため、廃棄されまたは遅延されたパケットにより生じた余分な損失は、画像の質を許容水準より低くするおそれがある。
【0009】
パケットロスに対処する能力は、損失を生じやすいノイズを伴うネットワークでリアルタイムビデオコーデック(RTC)が良好に動作するために極めて重要である。ほとんどの既存のビデオコーデックは、参照フレームが失われたとき新しいIフレームを要求することによってパケットロスに対処している。他の既存のビデオコーデックは、スライスベースの符号化を使用し、それによりシグナリングオーバーヘッド(signaling overhead)が増加する。図1は、新しいIフレームを要求することによる、従来のパケットロスのリカバリを示す。
【0010】
この従来技術の方法では、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に送る時間が生じる。さらに、送信側と受信側が、大きな物理的距離によって隔てられていることがあり、この長い距離の移動により、顕著な遅延時間が発生し、それに対応するビデオの質の低下がもたらされる。
【0011】
他の従来技術の方法では、Iフレーム104、112は、一定の間隔で送られる。Iフレーム112が、破棄または遅延により失われた場合、デコーダは、次のIフレームが受け取られるまで、後続のPフレーム110、108、106を不正確にはデコードせずに待機する。
【0012】
したがって、非可逆パケットベースのネットワークを介して、圧縮されたビデオを送信するための、改良された方法およびシステムが必要とされる。
【課題を解決するための手段】
【0013】
本明細書に記載のビデオコーデックは、エンコーダにおいてフレームキャッシュ(frame cache)を含み、デコーダにおいてそれに対応するフレームキャッシュを含み、それぞれのフレームキャッシュは、同期して動作する。デコーダキャッシュ内のフレームは、デコーダにおいてフレームを解釈するのを助けるために使用される。解釈するフレームを、エンコーダキャッシュに格納される同じフレームのコピーを用いて生成することができる。
【0014】
システムの実装形態も提供される。それは、データパケットをフレーム内にエンコードするエンコーダ、および、フレームまたはその一部分を格納することができるエンコーダキャッシュを含む。それは、さらに、フレームまたはその一部分を同様に格納することができるデコーダキャッシュを有するデコーダを含む。デコーダは、パケットロスを検出することができる。いくつかの実施形態では、そのような損失が検出されたとき、エンコーダは、エンコーダキャッシュで格納されたフレームを使用してフレームをエンコードし、次いで、そのフレームは、デコーダキャッシュに格納されたフレームを使用してデコーダでデコードされる。
【0015】
このキャッシングメカニズムは、下記の主要な特徴を提供する。
a)パケットロスのリカバリの際のより効率的な帯域幅の使用
b)スライスベースの符号化に関連するシグナリングオーバーヘッドの除去
本発明の他の特徴および利点は、添付の図面を参照して行われる以下の実施形態の詳細な説明から明らかにされる。
【図面の簡単な説明】
【0016】
【図1】フレームレベルのパケットロスのリカバリを示す従来技術の図である。
【図2】本明細書に記載のフレームキャッシングを利用するビデオを示すブロック図である。
【図3】本明細書に記載のフレームキャッシングを利用するビデオデコーダを示すブロック図である。
【図4】フレームキャッシングを利用してパケットロスからリカバリするための例示的方法を示すフローチャートである。
【図5A】フレームをキャッシングするエンコーダ、およびそれと同じフレームをキャッシングするデコーダを示す、フレームレベルの図である。
【図5B】デコーダに到着する破棄されたPフレームを示すフレームレベルの図である。
【図5C】Pフレームを解釈するために、キャッシュされたフレームを使用するデコーダを示すフレームレベルの図である。
【図5D】フィードバック経路を介したパケットロスの報告を示すブロック図である。
【図6】ビデオエンコーダ/デコーダキャッシングを実装するための適切な方法を示すフローチャートである。
【図7】図2および3のビデオエンコーダ/デコーダのための適切なコンピューティング環境を示すブロック図である。
【発明を実施するための形態】
【0017】
以下の説明は、優雅なパケットロスのリカバリ、および効率的な帯域幅の利用の効率的な組合せを可能にするように設計された、ビデオエンコーダとビデオデコーダの双方におけるフレームキャッシュの実装に関する。フレームキャッシュの例示的適用は、画像またはビデオエンコーダおよびデコーダにおいて行われる。したがって、フレームキャッシュを、一般的な画像またはビデオエンコーダおよびデコーダのコンテキストで説明されるが、代替として、後で説明するこの例示的装置とは詳細が異なることがある他の様々な画像およびビデオコーデックのエンコーダおよびデコーダに組み込むこともできる。
【0018】
1.汎用ビデオエンコーダおよびデコーダ
図2は、一般的なビデオエンコーダ200のブロック図であり、図3は、一般的ビデオデコーダ300のブロック図であり、それらにフレームキャッシュが組み込まれる。
【0019】
エンコーダおよびデコーダ内のモジュール間に示される関係は、エンコーダおよびデコーダにおける情報の主な流れを示し、他の関係は単純化するために図示していない。特に、図2および3は、一般に、ビデオシーケンス、フレーム、マクロブロック(macroblock)、およびブロックなどに使用されるエンコーダ設定、モード、およびテーブルなどを示すサイド情報を図示していない。このようなサイド情報は、通常、サイド情報のエントロピ符号化の後に、出力ビットストリームとして送られる。出力ビットストリームのフォーマットは、Windows(登録商標)Media Videoフォーマットまたは他のフォーマットとすることができる。
【0020】
所望の圧縮の実装形態およびタイプに応じて、エンコーダ200またはデコーダ300のモジュールについて、追加、省略、複数のモジュールへの分割、他のモジュールとの結合、および/または、同様のモジュールとの置換を行うことができる。代替実施形態では、異なるモジュール、および/または他の構成のモジュールを有する、エンコーダまたはデコーダが、ここに記載の技術の1つまたは複数を実行する。
【0021】
A.ビデオエンコーダ
図2は、一般的なビデオエンコーダシステム200のブロック図である。エンコーダシステム200は、現行のフレーム205を含むビデオフレームのシーケンスを受け取り、圧縮されたビデオ情報295を出力として生成する。ビデオエンコーダの特定の実施形態では、通常、一般的エンコーダ200の変形形態または補足されたバージョンを使用する。
【0022】
エンコーダシステム200は、予測されたフレームとキーフレームを圧縮する。図2では、説明のために、エンコーダシステム200を介したキーフレームの経路と、順方向予測(forward−predicted)フレームの経路を示している。エンコーダシステム200のコンポーネントの多くは、キーフレームと予測フレームの両方を圧縮するために使用される。これらのコンポーネントによって行われる正確な動作は、圧縮されている情報のタイプに応じて大きく異なる。
【0023】
(Pフレーム、Bフレーム(双方向予測)、またはフレーム間符号化(inter−coded)フレームであり得る)予測フレームは、1つまたは複数の他のフレームからの予測(または差異)の観点から表される。予測残差は、予測されたものと元のフレームの間の差異である。これに対して、(Iフレームまたはフレーム内符号化フレームとも呼ばれる)キーフレームは、他のフレームを参照することなく圧縮される。
【0024】
現行のフレーム205が順方向予測フレームの場合、動き検出器210が、現行フレーム205の、マクロブロックまたはピクセルの他のセットの動きを、フレームストア(frame store)220にバッファされた再構成された先行フレームである参照フレーム225に関連して推定する。代替実施形態では、参照フレームは、より後のフレームとすることができ、あるいは、現行フレームは、双方向で予測されうる。動き検出器210は、動きベクトルなどの動き情報215をサイド情報として出力する。動き補償器230は、動き情報215を、再構成された先行フレーム225に適用して、動き補償された現行フレーム235を形成する。ただし、この予測は、めったに完全ではなく、動き補償された現行フレーム235と元の現行フレーム205の差異は、予測残差245である。あるいは、動き検出器210および動き補償器230は、他のタイプの動き検出/補償を適用する。
【0025】
周波数変換器260は、空間領域のビデオ情報を、周波数領域(すなわちスペクトル)のデータに変換する。ブロックベースのビデオフレームでは、周波数変換器260は、離散コサイン変換(「DCT」)と同様の性質を有する、後の節で説明する変換を適用する。いくつかの実施形態では、周波数変換器260は、周波数変換を、キーフレームについての空間予測残余のブロックに適用する。周波数変換器260は、8×8、8×4、4×8、または他のサイズの周波数変換を適用することができる。
【0026】
次いで、量子化器270が、空間データ係数のブロックを量子化する。量子化器270は、均一なスカラ量子化を、フレーム毎または他の単位ごとに異なる刻み幅で、スペクトルデータに適用する。あるいは、量子化器270は、他のタイプの量子化、例えば、非均一、ベクトル、または非適応の量子化をスペクトルデータ係数に適用する、または、周波数変換を使用しないエンコーダシステムにおいて空間領域データを直接量子化する。適応的量子化に加えて、エンコーダ200は、レート制御のために、フレームドロップ(frame dropping)、適応フィルタリング、または他の技術を使用することができる。
【0027】
再構成された現行のフレームが、後続の動き検出/補償のために必要とされるとき、逆量子化器276は、量子化スペクトルデータ係数に対して逆量子化を実行する。次いで、周波数逆変換器266が、周波数変換器260の逆の操作を実行し、(予測されたフレームに対する)再構成された予測残差、または再構成されたキーフレームを生成する。現行フレーム205がキーフレームであった場合、再構成されたキーフレームは、再構成された現行フレーム(図示せず)と見なされる。現行フレーム205が、予測フレームであった場合、再構成された予測残差は、動き補償された現行フレーム235に加えられて、再構成された現行フレームが形成される。フレームストア220は、再構成された現行フレームを、次のフレームを予測する際に使用するためにバッファする。いくつかの実施形態では、エンコーダ200は、フレームのブロックにおける不連続を適応的に平滑化するために、デブロッキングフィルタ(deblocking filter)を再構成されたフレームに適用する。
【0028】
エントロピ符号化器280は、量子化器270の出力、ならびにサイド情報(例えば、動き情報215、量子化刻み幅)を圧縮する。典型的エントロピ符号化技術には、算術符号化、差分符号化、ハフマン符号化(Huffman coding)、ランレングス符号化(run length)符号化、LZ符号化、辞書型符号化、およびそれらの組合せが含まれる。エントロピ符号化器280は、通常、異なる種類の情報(例えば、DC係数、AC係数など)に対して異なる符号化技術を使用し、ある特定の符号化技術において複数のコード表のうちから選択をすることができる。
【0029】
エントロピ符号化器280は、ビデオ情報295をバッファ290に入れる。バッファレベルの標識が、ビットレート適応モジュールにフィードバックされる。圧縮されたビデオ情報295は、バッファ290から一定または比較的一定のビットレートで消耗し、そのビットレートで後続のストリーミングのために格納される。あるいは、エンコーダシステム200は、圧縮されたビデオ情報295を直ちにストリームし圧縮を続ける。
【0030】
バッファ290より先または後に、圧縮されたビデオ情報295は、ネットワークを介する送信のためにチャネル符号化されうる。チャネル符号化は、エラー検出および訂正データを、圧縮されたビデオ情報295に適用することができる。
【0031】
B.ビデオデコーダ
図3は、一般的なビデオデコーダシステム300のブロック図である。デコーダシステム300は、圧縮されたビデオフレームのシーケンスに関する情報395を受け取り、再構成されたフレーム305を含む出力を生成する。ビデオデコーダのいくつかの特定の実施形態は、通常、一般的なデコーダ300の変形形態または補足されたバージョンを用いる。
【0032】
デコーダシステム300は、予測フレームおよびキーフレームを圧縮する。図3では、説明のために、デコーダシステム300を介するキーフレームの経路と、順方向予測フレームの経路を示している。デコーダシステム300のコンポーネントの多数は、キーフレームと予測フレームの両方を圧縮するために使用される。これらのコンポーネントにより行われる正確な動作は、圧縮される情報のタイプによって変化しうる。
【0033】
バッファ390は、圧縮されたビデオシーケンスに関する情報395を受け取り、受け取った情報をエントロピデコーダ380に使用可能にする。バッファ390は、時間に対してかなり一定のレートで情報を受け取り、また、帯域幅または送信における短期の変動を平滑化するためのジッタバッファを含む。バッファ390は、再生バッファおよび他のバッファも含むことができる。あるいは、バファ390は、変動するレートで情報を受け取る。圧縮されたビデオ情報395は、バッファ390に到達する前、またはバッファ390から離れた後、またはその両方において、エラー検出および訂正のためにデコードされ処理されうる。
【0034】
エントロピデコーダ380は、エントロピ符号化された量子化データ、ならびにエントロピ符号化されたサイド情報(例えば、動き情報、量子化刻み幅)をデコードし、通常は、エンコーダ200で行われたエントロピ符号化の逆を行う。エントロピデコード技術には、算術デコード、差分デコード、ハフマンデコード、ランレングスデコード、LZデコード、辞書型デコード、およびそれらの組合せが含まれる。エントロピデコーダ380は、異なる種類の情報(例えば、DC係数、AC係数、異なる種類のサイド情報)に対して異なるデコード技術を使用し、ある特定のデコード技術において複数のコード表のうちから選択をすることができる。
【0035】
再構成されるフレーム305が、前進予測フレームである場合、動き補償器330は、動き情報315を参照フレーム325に適用して、再構成されるフレーム305の予測335を形成する。例えば、動き補償器330は、マクロブロック動きベクトル(macroblock motion vector)を使用して、参照フレーム325におけるマクロブロックを見つける。フレームバッファ320は、先行の再構成されたフレームを参照フレームとして使用するために格納する。あるいは、動き補償器は、他のタイプの動き補償を用いる。動き補償器330による予測は、完全であることは稀であり、したがって、デコーダ300は、予測残差345の再構成もする。
【0036】
デコーダ300が、後続の動き補償のために再構成されたフレームを必要とするとき、フレーム320は、次のフレームを予測する際に使用するために、再構成されたフレーム305をバッファする。いくつかの実施形態では、エンコーダ200は、デブロッキングフィルタを、再構成されたフレーム305に適用して、フレームのブロックにおける不連続を適応的に平滑化する。
【0037】
逆量子化器370は、エントロピデコードされたデータを逆量子化する。一般に、逆量子化器370は、均一のスカラ逆量子化を、エントロピデコードされたデータに、フレーム毎または他の単位で異なる刻み幅で適用する。あるいは、逆量子化370は、他のタイプの逆量子化、例えば、非均一、ベクトル、または非適応量子化をデータに適用する、または、周波数逆変換を使用しないデコーダシステムにおける空間領域データを直接逆量子化する。
【0038】
周波数逆変換器360は、量子化された周波数領域データを、空間領域ビデオ情報に変換する。ブロックベースのビデオフレームについて、周波数逆変換器360は、後の節で説明される逆変換を適用する。いくつかの実施形態では、周波数逆変換器360は、キーフレームについての空間予測残差のブロックに、周波数逆変換を施す。周波数逆変換器360は、8×8、8×4、4×8、またの他のサイズの周波数逆変換を施すことができる。
【0039】
C.フレームキャッシング
本明細書に記載のビデオコーデックアーキテクチャにおけるフレームキャッシングを使用する実装形態では、参照フレームは、エンコーダおよびデコーダの両方で順次キャッシュされることが好ましい。参照フレームが失われたとき、後続の従属フレームは、デコーダにおいてキャッシュされた適切な参照フレームを使用してデコードされうる。これにより、以下の利益がもたらされる。
【0040】
A)より効率的な帯域幅の利用:従来技術の方法は、Iフレームが生成されエンコーダに送られることを必要とする。本方法では、特別なタイプのフレーム、すなわちSPフレームが、デコーダに送られ、次いで、必要とされるまでキャッシュされることを可能にする。SPフレームは、一般に、同じ品質のIフレームよりも少ないビット数で符号化することができ、したがって、等価のIフレームを使用するよりも小さい帯域幅を使用する。
【0041】
B)より速いエラーリカバリ:パケットロスが発生したとき、SPフレームがデコーダにおいて既にキャッシュされていることが好ましく、これにより、ほとんど遅延時間なしに、ストリームにおける次のPフレームを解釈することを可能にする。
【0042】
2.例示的方法の概要
ここに記載の実施形態は、デコーダにおけるフレームをキャッシュし、次いで、キャッシュしたフレームを使用して、破棄されたまたは失われている参照フレームに基づいてPフレームおよびBフレームを再構成するための技術およびツールを含む。キャッシュを、ビデオデコーダ300(図3)の一部分として、またはビデオエンコーダ200(図2)の一部分として組み込むことができ、好ましくはその両方において組み込むことができる。パケットロスがデコーダによって検出されると、デコーダは、エンコーダ200にメッセージを送り、次いで、エンコーダ200は、共有されたキャッシュされたフレームの1つに基づいて新しい参照フレームを生成する。次いで、生成された参照フレームは、デコーダに送られる。キャッシュされたフレームは、別の参照フレームがデコーダに到着するまで、生成されたフレームおよび後続の従属フレームをデコードするためにデコーダで使用される。本明細書に記載のフローチャートの要素は、例に過ぎず、記載の技術に応じて、他のフローチャート要素を使用することができる。さらに、フローチャート要素は、記載の技術およびツールに応じて、異なる順序で行い、あるいは特定の処理ブロックを省略することができる。
【0043】
記載の技術およびツールは、互いに組み合わせてまたは他の技術およびツールと組み合わせて、あるいは別個に使用されうる。
【0044】
図4を参照すると、フローチャート400は、本明細書に開示の方法の簡潔な概観を示している。プロセスブロック402で、ネットワークを介して送信されるビデオ信号の一部分がパケットに割り当てられる。プロセスブロック404で、エンコーダは、パケットの少なくとも一部をフレーム内にエンコードする。これらのフレームは、IフレームおよびPフレームのような参照フレーム325からなり、他の任意のフレームに対する参照として使用されないBフレームからなることもある。スキップフレーム(skip frame)のような代替タイプのフレームも、フレーム内にエンコードされうる。任意選択のプロセスブロック406で、エンコーダでフレームをキャッシュすることができ、このフレームは、一般的には参照フレームである。フレームは、キャッシュされた場合、「Cached−Frame」(CF)タイプがそのフレームヘッダにおいて割り当てられる。次いで、キャッシュされたフレームは、プロセスブロック408で、他のフレームと一緒に送信される。ブロック410で、フレームは、デコーダに到着した後、デコーダキャッシュ内にキャッシュされる。通常のキャッシュフレームのタイプは、PフレームおよびIフレームである。
【0045】
後続参照フレームが失われた場合、プロセスブロック412に示すように、キャッシュされたフレームを、後続の従属フレームを解凍するために使用することができる。フローチャート400は、単に1つの例示的実施形態を示しているに過ぎず、何らかの限定をするものとして解釈されるべきではない。例えば、判断ブロック406でのエンコーダに関連するキャッシュは任意選択である。方法400を、図2および図3に示されるように、ビデオコーデックで実装することができ、ビデオコーデックを、ソフトウェア、ハードウェア、または両方の組合せで実装することができる。
【0046】
3.フレームをキャッシュするための例示的方法
図5A〜5Dは、ノイズを伴うネットワークにおいてビデオコーデックの最適なパフォーマンスを可能にするためにフレームをキャッシュする例示的方法を示す。図5Dを参照すると、例示的実施形態では、フレームは、RTP(リアルタイム転送プロトコル)508Dなどの主要チャネルを介して、エンコーダ502Dからデコーダ506Dにフレームが送信されている。インターネットは、しばしば、パケットを欠損したり、パケットをばらばらの順序で送達することがある。パケットは、あるランダムな時間量で遅延することもあり、これによりパケットが使用できないようになることもある。パケットロスは、デコーダ506Dによって検出され、フィードバック経路を介して、デコーダからエンコーダ502Dにその信号が送られる。メッセージを正しく再構成するために、いくつかの実施形態では、RTP508Dヘッダが、情報およびシーケンス番号を含み、この両方により、受信側が、パケットを正しく並べ変え、失われたパケットの番号を決定することを可能にする。RTP508Dは、その制御プロトコル(RTPC)504Dによって増強され、データの送達を監視するために使用することができるフィードバック経路を提供するために使用される。各データパケットは、シーケンス番号を有し、通常、シーケンス番号は、各後続データパケットにつき1つ増分される。例示的実施形態では、シーケンス番号が受け取られないとき、パケットロスは、デコーダ506Dによって検出される。デコーダ506Dは、パケットロスを検出すると、フィードバック経路504Dを介してメッセージを送り、どのパケット(または複数のパケット)が失われたかをエンコーダ502Dに通知する。いくつかの実施形態では、失われた最初のパケットについての情報のみが供給される。いくつかの実施形態では、廃棄されたパケットの番号、または失われた特定のパケットのリストなどの追加の情報も供給される。好ましくは、パケットロスの位置が、最も初期のパケットロスのタイムスタンプを使用して報告ウィンドウに伝えられる。この情報により、エンコーダ502Dが、どのキャッシュされた参照を使用するかを決定できるようになる。
【0047】
図5Aを参照すると、エンコーダ502Aは、定期的にフレームをフレームキャッシュ504Aにキャッシュしている。どのフレームがキャッシュされるか、どのくらいの頻度でキャッシュを行うべきか、ならびに、一度にキャッシュできるべきフレーム数は、実装形態に大きく依存する。いくつかの実施形態では、キャッシュされるフレームは、参照フレーム、すなわちPフレームおよびIフレームである。他のフレームタイプをキャッシュすることもできる。キャッシュされたフレーム506A(またはそのコピー)はまた、デコーダ512Aに送られる。エンコーダキャッシュ504Aにも格納される、このようなフレームは、そのヘッダ内でフレームタイプCF(キャッシュされたフレーム)として定義される。いくつかの実施形態では、このヘッダにより、後で使用するためにこの特定のフレームをデコーダキャッシュ510Aに格納すべきであることを、デコーダ512Aに知らせることによって、エンコーダ502Aとデコーダ512Aの同期が可能になる。下記の表1は、CF(キャッシュされたフレーム)タイプを含む、フレームタイプコードの例示的実施形態を示している。
【0048】
【表1】

【0049】
タイプCFのフレーム508Aは、デコーダ512Aに到達すると、デコーダフレームキャッシュ510Aに格納される。タイプCFの各フレームをデコーダ512Aにおいて格納することは、エンコーダおよびデコーダのフレームキャッシュ504Aおよび510Aを同期させる1つの方法である。ただし、これらのフレームキャッシュを同期させる他の方法も企図される。
【0050】
パケットロス502Bがデコーダ504Bで検出されたとき、フィードバック経路504Dを使用して、その報告がエンコーダ502Aに返される。この報告は、好ましくは、エンコーダ502Aが参照のために適切なキャッシュされたフレーム504Aを選ぶことをできるようにするタイムスタンプ情報を含む。他の実施形態では、最新のキャッシュされたフレームが使用される。キャッシュされたフレームが選ばれると(504C)、そのフレームは、エンコーダ502Cによって、次のフレーム506Cをエンコードするために使用される。次のフレーム506Cは、好ましくは、Pフレームであるが、Iフレームおよび他のフレームタイプをエンコードすることもできる。キャッシュされたフレーム506Cは、「Super−P」フレーム(SPフレーム)として知られ、そのヘッダでそのように示される。SPフレームの例示的フレームタイプコードワードは、上記の表1に示されている。
【0051】
デコーダ512Cは、SPフレーム508Cを受け取ると、そのローカルでキャッシュされたフレーム510Cを使用して、SPフレーム508Cを解凍されたフレーム(Uフレーム)514C内にデコードする。この方法を使用すると、デコーダ512Cにおけるリカバリ時間は、パケットロスイベントとSPフレームの到着の間の期間である。この生成されたSPフレーム508Cが、送信中に失われた場合、デコーダ512Cは、(一般に、タイプP、SP、またはIの)新しい参照フレームの到着まで、パケットロスの報告を送り続ける。パケットロスからの実際のリカバリ時間は、主にパケットロス報告の間隔の関数となる。
【0052】
いくつかの実装形態では、エンコーダ502Aは、フレーム504Aをキャッシュし、キャッシュされたフレーム506Aのコピーを、デコーダに定期的に送る。キャッシュされたフレームが送られる時間間隔は、実装形態に大きく依存する。いくつかの実装形態では、等しい間隔でフレームをキャッシュすることができる。他の実装形態では、ネットワークの速度やネットワークが経験するロスの量などのそれ自体のシステム変数に依存する間隔でフレームをキャッシュすることができる。
【0053】
4.例示的システムの実施形態
図6は、デコーダおよびエンコーダベースのフレームキャッシングを実装することができる、ビデオシステム600の他の例示的実施形態を示す。本発明を、様々な汎用または専用のビデオシステムで実装することができ、ビデオシステム600は、本発明の使用または機能の範囲に関して、どのような限定も示唆するものでもない。
【0054】
ビデオシステムは、少なくとも1つのエンコーダ602を含む。このエンコーダは、さらに、エンコーダキャッシュ604を含む。図示の実施形態では、キャッシュは、エンコーダ602内に存在するが、他の実装形態では、ビデオシステム内の他の場所に存在することがある。エンコーダキャッシュ604は、1つまたは複数のビデオフレーム606の部分を格納することが可能である。限定ではなく示唆として、これらのフレームの部分は、いくつかのブロック、マクロブロック、いくつかのスライス、フレーム全体、フレームのグループ、または当業者が想定できる他の任意のフレームの区分から構成されうる。エンコーダキャッシュ604は、単に1つのフレーム部分、2つのフレーム部分、または与えられた実装形態に望ましい任意の数のフレーム部分をキャッシュすることができる。ビデオシステム600はまた、デコーダ608を含む。エンコーダ602と同様に、デコーダ608は、1つまたは複数のビデオフレーム612の部分を格納するために使用される、デコーダキャッシュ610を含む。これらのビデオフレーム部分は、1つまたは複数のブロック、マクロブロック、スライス、フレーム全体、フレームのグループ、または当業者が想定することができる他のフレームの区分を含むことができる。デコーダキャッシュ610を、1つのフレーム部分、2つのフレーム部分、または他の任意の数のフレーム部分を格納するように構成することができる。
【0055】
ビデオシステム600はまた、エンコーダ604およびデコーダ610が、実質的に同じ情報を含むことを保証するために使用される、シンクロナイザ614を含む。前述のように、シンクロナイザは、エンコーダ602によって施される、いくつかの特定のフレームまたはフレームの部分に付加された一意のフレームヘッダを含むことができ、そのフレームヘッダは、特定のフレームまたはフレームの部分がキャッシュされるべきことをデコーダ608に通知する。例えば、あるフレームがエンコーダキャッシュ604に格納され、また、デコーダ608にも送られる場合がある。そのフレームは、エンコーダキャッシュ604に格納されたそのコピーが存在することを示す、特有のCF(Cached Frame)ヘッダを有することができる。デコーダ608がフレームのデコードを困難または不可能にするパケットロスまたは他の破棄を検出したとき、エンコーダキャッシュ604に格納されたフレームからの、エンコーダ602によってエンコードされる後続のフレームは、このフレームがデコーダキャッシュ610におけるフレームからデコードすることができることを示すようにマーク付けされうる。いくつかの実装形態では、デコーダキャッシュ610において複数のフレームを格納することができ、このような場合、ヘッダは、どのキャッシュされたフレームが使用されるべきかを決定するための充分な他の情報も任意選択で含むことができる。他の同期化の方法も企図される。送信機616が、エンコーダ602からデコーダ608にフレームを送信する。
【0056】
5.コンピューティング環境
上記のフレームキャッシングの実装形態を、特に例として、コンピュータ、画像およびビデオ録画、送受信装置、携帯ビデオプレイヤビデオ会議、ウェブビデオストリーミングアプリケーションなどを含む、画像およびビデオ信号処理が実行される、任意の様々な装置で実施することができる。画像およびビデオ符号化技術は、ハードウェア回路(例えば、ASIC、FPGAなどの回路)、ならびに、図7に示されるような、コンピュータまたは他のコンピューティング環境において実行される(中央処理装置(CPU)、専用グラフィックプロセッサ、またはビデオカードなどで実行される)画像およびビデオ処理ソフトウェアで実装することができる。
【0057】
図7は、上述のフレームキャッシングを実装することができる、適切なコンピューティング環境700の一般的な例を示す。本発明を、様々な汎用または専用のコンピューティング環境で実装することができ、コンピューティング環境700は、本発明の使用または機能の範囲に関して、どのような限定も示唆するものでもない。
【0058】
コンピューティング環境700は、少なくとも1つの処理装置710およびメモリ720を含む。この最も基本的構成730は、破線内に含まれている。処理装置710は、コンピュータ実行可能命令を実行し、現実または仮想のプロセッサとすることができる。多重処理システムにおいては、複数の処理装置が、コンピュータ実行可能命令を実行して処理能力を高める。メモリ720は、揮発性メモリ(例えば、レジスタ、キャッシュ、RAMなど)、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュメモリなど)、またはこの2つの何らかの組合せとすることができる。メモリ720は、上述のエンコーダ/デコーダキャッシングを実装するソフトウェア780を格納する。
【0059】
コンピューティング環境は、追加の特徴を有することができる。例えば、コンピューティング環境700は、ストレージ740、1つまたは複数の入力装置750、1つまたは複数の出力装置760、および1つまたは複数の通信接続770を含む。バス、コントローラ、またはネットワークなどの相互接続メカニズム(図示せず)は、コンピューティング環境700のコンポーネントを相互接続する。オペレーティングシステムソフトウェア(図示せず)は、一般に、コンピューティング環境700で実行される他のソフトウェアのための動作環境を提供し、コンピューティング環境700のコンポーネントの活動を調整する。
【0060】
ストレージ740は、リムーバルまたは固定とすることができ、また、磁気ディスク、磁気テープまたはカセット、CD−ROM、CD−RW、DVD、あるいは、情報を格納するために使用可能でコンピューティング環境700においてアクセスすることができる他の任意の媒体を含む。ストレージ740は、エンコーダ/デコーダキャッシング方式を実装するソフトウェア780のための命令を格納する。
【0061】
(複数の)入力装置750は、キーボード、マウス、ペン、またはトラックボールなどのタッチ入力装置、音声入力装置、スキャン装置、あるいは、コンピューティング環境700に入力を提供する他の装置とすることができる。オーディオに関しては、(複数の)入力装置750は、アナログまたはデジタル形式でオーディオ入力を受け入れるサウンドカードまたは同様のデバイス、あるいは、オーディオサンプルをコンピューティング環境700に提供するCD−ROMリーダとすることができる。(複数の)出力装置760は、ディスプレイ、プリンタ、スピーカ、CDライタ、あるいは、コンピューティング環境700からの出力を提供する他の装置とすることができる。
【0062】
(複数の)通信接続770は、通信媒体を介して他のコンピューティングエンティティと通信することを可能にする。通信媒体は、コンピュータ実行可能命令、圧縮されたオーディオまたはビデオ情報、または被変調データ信号における他のデータなどの情報を搬送する。被変調データ信号は、情報を信号にエンコードするようにセットまたは変更された1つまたは複数の信号特性を有する信号である。通信媒体には、限定ではなく例として、電気、光、RF、赤外線、音響、または他の搬送波によって実装される有線または無線技術が含まれる。
【0063】
本明細書におけるエンコーダ/デコーダフレームキャッシング技術を、コンピュータ可読媒体の一般的なコンテキストで記述することができる。コンピュータ可読媒体は、コンピューティング環境700においてアクセスすることができる任意の使用可能な媒体である。限定ではなく例として、コンピューティング環境700では、コンピュータ可読媒体には、メモリ720、ストレージ740、通信媒体、およびこれらの任意の組合せが含まれる。
【0064】
本明細書におけるエンコーダ/デコーダフレームキャッシングを、対象の現実または仮想のプロセッサ上のコンピューティング環境で実行されるプログラムモジュールに含まれるような、コンピュータ実行可能命令の一般的なコンテキストで記述することができる。一般に、プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、およびデータ構造などが含まれる。プログラムモジュールの機能を、様々な実施形態の必要に応じて、組み合わせることも、プログラムモジュール間で分割することもできる。プログラムモジュールのためのコンピュータ実行可能命令を、ローカルまたは分散コンピューティング環境で実行することができる。
【0065】
説明のために、上述の詳細な説明では、「決定する(determine)」、「送信する(transmit)」、「エンコード」、「デコード」、「適用する(apply)」などの言葉を使用して、コンピューティング環境におけるコンピュータの動作を記述している。これらの言葉は、コンピュータによって行われる動作の高度に抽象化したものであり、人間によって行われる行為と混同されるべきではない。これらの言葉に対応する実際のコンピュータの動作は、実装形態に応じて異なる。
【0066】
本発明の原理を適用することができる多数の可能な実施形態に鑑みて、詳述された実施形態は、例示に過ぎず、本発明の範囲を限定するものとして解釈されるべきではない。むしろ、本発明では、そのようなすべての実施形態が、添付の特許請求の範囲とその均等物の範囲および趣旨に含まれるものとして請求される。
【符号の説明】
【0067】
102 デコーダ
104 Iフレーム
106 Pフレーム
108 Pフレーム
110 Pフレーム
112 Iフレーム
114 エンコーダ
116 リカバリ時間
200 エンコーダ
205 現行フレーム
210 動き推定器
215 動き情報
220 フレームストア
225 参照フレーム
230 動き補償器
235 動き補償された現行フレーム
245 残差
260 周波数変換器
266 周波数逆変換器
270 量子化器
276 逆量子化器
280 エントロピ符号化器
290 バッファ
295 圧縮されたビデオ情報
300 デコーダ
305 再構成されたフレーム
320 フレームストア
325 参照フレーム
330 動き補償器
335 予測フレーム
345 再構成された残差
360 周波数逆変換器
370 逆量子化器
380 エントロピデコーダ
390 バッファ
395 圧縮されたビデオ情報
400 フローチャート
402 信号の一部分をパケットに割り当てる
404 パケットをフレーム内にエンコードする
406 エンコーダにおいてフレームをキャッシュする
408 フレームをデコーダに送信する
410 デコーダにおいてフレームをキャッシュする,Pフレーム,Iフレーム
412 キャッシュされたフレームに基づいてフレームを解釈する
502A エンコーダ
504A CF
506A CF
508A CF
510A CF
512A デコーダ
502B パケットロス
504B デコーダ
502C エンコーダ
504C CF
506C SP
508C SP
510C CF
512C デコーダ
514C U
502D エンコーダ
504D RTPC
506D デコーダ
508D RTP
600 ビデオシステム
602 エンコーダ
604 エンコーダキャッシュ
606 フレーム部分ストレージ
608 デコーダ
610 デコーダキャッシュ
612 フレーム部分ストレージ
614 シンクロナイザ
616 送信機
700 コンピューティング環境
710 処理装置
720 メモリ
740 ストレージ
750 (複数の)入力装置
760 (複数の)出力装置
770 (複数の)通信接続
780 キャッシングを有するビデオエンコーダ/デコーダを実装するソフトウェア

【特許請求の範囲】
【請求項1】
エンコーダが実施する方法であって、
キーフレーム及び予測フレームを含むエンコードされたフレームのシーケンスを送信するステップであって、前記エンコードされたフレームの少なくとも一部は、当該フレームがデコーダでキャッシュされるフレームであることを示すフレームタイプコード有するステップと、
パケットロス検出信号を受信するステップと、
前記パケットロス検出信号に応じて、前記キャッシュされたフレームの少なくとも1つを参照して生成された、エンコードされたフレームを送信するステップと
を備えることを特徴とする方法。
【請求項2】
前記エンコードされたフレームの少なくとも一部は、キーフレームであることを特徴とする請求項1に記載の方法。
【請求項3】
前記エンコードされたフレームの少なくとも一部は、前記関連するフレームがキャッシュされないことを示すフレームタイプコードを有することを特徴とする請求項1に記載の方法。
【請求項4】
当該フレームが前記デコーダでキャッシュされることを示すタイプコードを有するフレームが、定期的に送信されることを特徴とする請求項1に記載の方法。
【請求項5】
前記デコーダでキャッシュされるフレームの送信間隔は、固定された間隔、または変動する間隔であることを特徴とする請求項4に記載の方法。
【請求項6】
前記エンコーダで、当該フレームが前記デコーダでキャッシュされることを示すタイプコードを有するフレームをキャッシュするステップをさらに備えることを特徴とする請求項1に記載の方法。
【請求項7】
前記パケットロス検出信号が、フィードバック経路を介して受信されることを特徴とする請求項1に記載の方法。
【請求項8】
前記パケットロス検出信号は、パケットロスに関連するタイムスタンプを有することを特徴とする請求項1に記載の方法。
【請求項9】
前記キャッシュされたフレームの少なくとも一つを参照して生成され、前記パケットロス検出信号に応じて送信された前記エンコードされたフレームは、前記パケットロスに関連する前記タイプスタンプに基づいて選択されることを特徴とする請求項8に記載の方法。
【請求項10】
前記エンコードされたフレームは、フレームヘッダをさらに含み、前記フレームタイプコードは、前記フレームヘッダにおいて定義されることを特徴とする請求項1に記載の方法。
【請求項11】
前記フレームは、画像データ、ビデオデータ、オーディオデータ、または音声データを含むことを特徴とする請求項1に記載の方法。
【請求項12】
請求項1に記載の方法をコンピュータシステムに実施させるためのコンピュータ実行可能命令を格納することを特徴とするコンピュータ可読媒体。
【請求項13】
エンコーダであって、
キーフレーム及び予測フレームを含むエンコードされたフレームのシーケンスを送信するステップであって、前記エンコードされたフレームの少なくとも一部は、当該フレームがデコーダでキャッシュされるフレームであることを示すフレームタイプコード有するステップと、
前記デコーダにおけるパケットロス検出の指示を受信するステップと、
パケットロスの前記指示に応じて、前記エンコーダでキャッシュされると示された少なくとも1つのフレームを参照して生成された、エンコードされたフレームを送信するステップと
を備えることを特徴とするエンコーダ。
【請求項14】
前記エンコードされたフレームは、フレームヘッダをさらに含み、前記フレームタイプコードは、前記フレームヘッダにおいて定義されることを特徴とする請求項13に記載のエンコーダ。
【請求項15】
前記パケットロス検出信号は、失われたと示されたパケットに関連するタイムスタンプを含み、前記パケットロス検出信号に応じて送信された前記フレームを生成するために使用された、前記エンコーダでキャッシュされた前記少なくとも1つのフレームは、前記タイムスタンプに基づいて選択されることを特徴とする請求項13に記載のエンコーダ。
【請求項16】
前記エンコードされたフレームは、シーケンス番号を含むことを特徴とする請求項13に記載のエンコーダ。
【請求項17】
前記パケットロス検出信号に応じて送信された前記フレームを生成するために使用された、前記エンコーダでキャッシュされた前記少なくとも1つのフレームは、前記パケットロスに関連するシーケンス番号に基づいて選択されることを特徴とする請求項16に記載のエンコーダ。
【請求項18】
当該フレームが前記デコーダでキャッシュされることを示すフレームタイプコードを有する前記エンコードされたフレームの少なくとも一部は、キーフレームであることを特徴とする請求項13に記載のエンコーダ。
【請求項19】
前記エンコードされたフレームの少なくとも一部は、前記関連するフレームがキャッシュされないことを示すフレームタイプコードを有することを特徴とする請求項13に記載のエンコーダ。
【請求項20】
当該フレームが前記デコーダでキャッシュされることを示すフレームタイプコードを有するフレームは、定期的に送信されることを特徴とする請求項13に記載のエンコーダ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図5C】
image rotate

【図5D】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−90329(P2012−90329A)
【公開日】平成24年5月10日(2012.5.10)
【国際特許分類】
【出願番号】特願2011−285905(P2011−285905)
【出願日】平成23年12月27日(2011.12.27)
【分割の表示】特願2005−375508(P2005−375508)の分割
【原出願日】平成17年12月27日(2005.12.27)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】