(57)【要約】      （修正有）【課題】通信回線の状態に対応した伝送レートでビットストリームを伝送する。【解決手段】送信のためにフレームシーケンスを符号化する方法は、異なる条件下でフレームシーケンスを符号化することであって、それによって、異なるビットレートで送信されることと、この符号化されたビットストリームの各々をそれぞれのバッファに格納することと、送信のためにバッファからビットストリームを出力することとを含み、本方法は、バッファを切り替えることであって、それによって、送信するデータのビットレートを変更する、バッファを切り替えることをさらに含み、１つのバッファに格納される少なくとも１つのフレームは、別のバッファに格納されているフレームを参照して符号化される。【選択図】図１０
2006087125.tif 000002
【特許請求の範囲】
【請求項１】
送信のためにビデオフレームシーケンスを符号化する方法であって、
異なる条件下でフレームシーケンスを符号化することであって、それによって、異なるビットレートで送信される、前記フレームシーケンスをそれぞれ表す複数の符号化ビットストリームを生成する、フレームシーケンスを符号化することと、
前記符号化されたビットストリームの各々をそれぞれのバッファに格納することと、
送信のためにバッファからビットストリームを出力することと
を含み、
前記方法は、バッファを切り替えることであって、それによって、送信するデータのビットレートを変更する、バッファを切り替えることをさらに含む
方法において、
１つのバッファに格納される少なくとも１つのフレームは、別のバッファに格納されているフレームを参照して符号化されることを特徴とする方法。
【請求項２】
前記１つのバッファに格納される各フレームは、別のバッファに格納されているフレームを参照して符号化される請求項１に記載の方法。
【請求項３】
別のバッファが送信に使用されている間、フレームが前記別のバッファに格納されているフレームを参照して符号化される請求項１又は２に記載の方法。
【請求項４】
前記１つのバッファのフレームは、前記１つのバッファに格納されている圧縮ビデオデータのビットレートに対してよりも前記送信に使用されるバッファに格納されている圧縮ビデオデータのビットレートに対して近いビットレートで圧縮されたビデオデータを有するバッファの中から選択された、前記１つのバッファに格納されている前記圧縮ビデオデータのビットレートに最も近いビットレートで圧縮されたビデオデータを格納するバッファのフレームを参照して符号化される請求項１〜３のいずれか一項に記載の方法。
【請求項５】
第１のバッファからデータが送信されるとき、
前記第１のバッファに格納されるフレームは、以前に符号化され前記バッファに格納されたフレームを参照して符号化され、
別のバッファに格納されるフレームは、以前に符号化され前記第１のバッファに格納されたフレームを参照して同様に符号化され、
送信が第２のバッファに切り替えられるとき、
前記第２のバッファに格納されるフレームは、以前に符号化され前記第２のバッファに格納されたフレームを参照して符号化され、
別のバッファに格納されるフレームは、以前に符号化され前記第２のバッファに格納されたフレームを参照して同様に符号化される
請求項１〜４のいずれか一項に記載の方法。
【請求項６】
或るバッファの２つ以上のフレームが、別のバッファの同一フレームを参照して符号化される、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
或るバッファの異なるフレームが、別のバッファの異なるフレームを参照して符号化される、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
異なるバッファに格納されるフレームを、異なるバッファの異なるフレームを参照して符号化することを含む、請求項１〜７のいずれか一項に記載の方法。
【請求項９】
フレームが、送信バッファであるバッファのフレームを参照して符号化される請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
前記フレームシーケンスは、異なる空間分解能及び／又は異なる時間分解能及び／又は異なるピクチャ品質を用いて、異なるビットレートで異なるビットストリームを生成するために符号化される、請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
前記フレームシーケンスは複数の異なるフレームレートで符号化される、請求項１０に記載の方法。
【請求項１２】
１つの符号化ビットストリーム内の１つのバッファにおいてビットレートを変更することをさらに含む、請求項１〜１１のいずれか一項に記載の方法。
【請求項１３】
異なるビットレートを達成するためにフレームレートを変更することを含む、請求項１２に記載の方法。
【請求項１４】
前記ビットレートの変更は、切り替え点の後に起こる請求項１０〜１３のいずれか一項に記載の方法。
【請求項１５】
或るバッファが送信に用いられる場合、他のバッファのフレームが前記送信バッファのフレームを参照して符号化される請求項１〜１４のいずれか一項に記載の方法。
【請求項１６】
請求項１〜１５のいずれか一項に記載の方法を用いて導出された画像シーケンスを表す符号化ビットストリーム。
【請求項１７】
請求項１〜１５のいずれか一項に記載の方法を用いて符号化された画像又は画像シーケンスを復号する方法。
【請求項１８】
第１のビットレートで受信されたデータを、第２のビットレートで受信されたデータを参照して再構成することを含む、請求項１７に記載の方法。
【請求項１９】
請求項１〜１５のいずれか一項に記載の方法を用いて符号化されたデータの、例えば送信又は受信を含む使用。
【請求項２０】
請求項１〜１５のいずれか一項に記載の方法を用いて符号化されたフレームシーケンスを表すデータを送信する方法であって、
適切なビットレート等の条件の変化に応じて第１のバッファから第２のバッファへ送信を切り替えることを含み、
第２のバッファから送信されるフレームデータは、前記第１のバッファから送信されるフレームデータを参照して既に符号化されている、方法。
【請求項２１】
請求項１〜１５、１７又は１８のいずれか一項に記載の方法を実行する符号化及び／又は復号装置。
【請求項２２】
請求項１〜１５、１７、１８又は２０のいずれか一項に記載の方法を実行するコンピュータプログラム、システム又はコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
帯域幅の変動は、異種ネットワークに渡ってサービス品質（ＱｏＳ）が保証されるサービスを提供する上で重要な問題の１つである。ビデオストリーミングにおける重要な要件の１つは、圧縮ビデオの送信ビットレートをネットワークの混雑状況に応じて適応させることである（Minjung Kim及びYucel Altunbasak著「Optimal Dynamic Rate Shaping for Compressed Video Streaming」（ICN 2001, LNCS 2094, pp. 786-794））。符号化されたビデオデータのビットレートは、チャネルレートの変動に対処するために動的に上下にスケーリングされるべきである。これは、ビデオエンコーダにおける圧縮パラメータを制御することによって達成することができる。しかし、ほとんどのコーデック(codec)の場合、符号化されたビデオデータのビットレートは、符号化プロセス中に決められ、後から変更することができない。
【０００２】
ビデオのビットレートを新たなレートに変更する最も簡単な方法は、トランスコーダ(transcoder)を使用するものである（Anthony Vetro、Charilaos Christopoulos、及びHuifang sun著「Video Transcoding Architectures and Techniques: An Overview」（IEEE Signal Processing Magazine, march 2003））。トランスコーダは先ず、入力ビデオストリームを復号して再構成し、次に、この再構成したビデオストリームを、異なる量子化パラメータを用いることにより異なるビットレートで再符号化する（図１を参照）。復号及び再符号化プロセスは非常に時間がかかる可能性があり、圧縮ビデオのストリーミングに長い遅延を生じる。
【０００３】
符号化されたビデオデータが送信のためにパケット化される送信環境では、各符号化ビデオスライス（いくつかの連続ブロックからなる）のサイズは、ビデオ圧縮のビットレートの可変性のため可変である。したがって、圧縮されたスライスデータは、いくつかの異なるパケットにより転送される場合がある。図２に示すバッファの中身を考える。システムの観察時に、チャネルがフレームｍのスライス（ｍ，ｇｔｘ）を現在送信しており、フレームｎのスライス（ｎ，ｇｉｎ）が符号化されてエンコーダバッファに引き渡される最後のスライスであると仮定する。したがって、バッファは、スライス（ｍ，ｇｔｘ＋１）からスライス（ｎ，ｇｉｎ）までのデータと、スライス（ｍ，ｇｔｘ）のビットデータの一部とを含む。ビデオデータの転送に課される一定のエンドツーエンド遅延制約(end-to-end delay constraints)のために、ビデオを復号して表示するには、エンコーダバッファ内部のフレーム／スライスがすべて特定の時刻までに送信されなければならない。
【０００４】
ビデオストリームがオンライン（リアルタイム）エンコーダによって生成される場合、ネットワークのフィードバックにより、量子化ステップサイズ等のエンコーダパラメータを調整することによって、また極端な場合にはフレームを欠落させることによって、レート適応を転送時に(on the fly)実現することができる（S. Gupta、C.L. Williamson著「A performance study of adaptive video coding algorithms for high speed networks」（Proceedings of Conference on Local Computer Networks (LCN'95), October 95））。この符号化ビデオデータストリームのレートスケーラビリティを達成するために、異なる量子化器により量子化されたビデオデータを別個のバッファに格納させること、及び、各バッファが或る特定の量子化器により量子化されたフレーム／スライスを格納することからなるシステムの実施が可能である（Chi-Yuan Hsu、Antonio Ortega及びMasoud Khansari著「Rate Control for Robust Video Transmission over Burst-Error Wireless Channels」（IEEE JOURNAL ON SELECTED AREAS IN COMMUNICATIONS, VOL. 17, NO. 5, MAY 1999））。その場合、現在送信しているビデオデータは適切なバッファから引き出されることになる（図３を参照）。
【０００５】
別の手法は、デュアルフレームバッファを使用することである（Athanasios Leontaris、及びC. Cosman著「Video Compression for Lossy Packet Networks with Mode Switching and a Dual-Frame Buffer」（IEEE Transactions on Image Processing, VOL. 13, No. 7, July 14））。デュアルフレームバッファの基本的な使用は以下の通りである。フレームｎを符号化中に、エンコーダとデコーダの両方が２つの参照フレームをメモリに保持する。短期参照フレームはフレームｎ−１である。長期参照フレームは例えばフレームｎ−ｋであり、ここで、ｋは可変であってよいが、常に１よりも大きい。各マクロブロック（ＭＢ）は、３つの符号化モード、すなわち、フレーム内符号化、短期バッファを使用したフレーム間符号化（ＳＴ間符号化）、及び長期バッファを使用したフレーム間符号化（ＬＴ間符号化）のうちの１つで符号化することができる。これを図４に示す。コーデックに必要な変更は、短期フレーム又は長期フレームの使用を示すために１ビットを送ることのみである。この方法は、ビットレートを下げる必要がある場合に、フレームをスキップし、次のフレームを符号化するための予測子として長期フレームを使用することによってビットレートを切り替えるために用いることができる（Vijay Chellappa、Pamela C. Cosman及びGeoffrey M. Voelker著「Dual frame motion compensation for a rate switching network」（Proceedings of IEEE Data Compression Conference (DCC'2003)）、国際公開第２００４／０６４３７３号パンフレット「Video Encoding Methods and Devices」（University of California, 29/07/004））。
【０００６】
チャネル帯域幅の変化の影響を最小化する代替的な方法は、符号化フレーム間隔を制御することである（H. Song、J. Kim、及びC.-C. Jay Kuo著「Real-time Encoding Frame Rate Control for H.263+ Video over the Internet」（Signal Processing: Image Communication, vol. 15, Sept. 1999））。速い動きの変化又は急激なチャネル帯域幅の減少により空間品質が許容レベルを下回る場合、ちらつきアーチファクトを低減するために、時間品質を下げて空間品質を高めなければならない。同時に、時間品質の低下を制御することが依然として望ましい。逆に、空間品質が一定レベルを上回る場合、時間品質を上げなければならない。この考察に基づき、符号化フレームレート制御アルゴリズムは次のように言うことができる。歪み>閾値である場合、フレームレート間隔を大きくし、そうでない場合、フレームレート間隔を小さくする（図５を参照）。
【０００７】
米国特許第５４８５２１１号明細書及び米国特許第５４１６５２０号明細書は、複数のエンコーダ出力バッファ及び送信参照画像を参照した差分符号化を用いる方法及び装置に関連する。最良の情報を有する出力バッファを送信に、次に新たな送信参照画像の作成に用いる。
【０００８】
ストリーミングビデオ用途では、サーバは、同一ビデオシーケンス及びいくつかのビットレートの複数のコピーを提供する場合がある。その場合サーバは、ネットワークの混雑やクライアントに利用可能な帯域幅に応じて、ビットストリームを動的に切り替える。こうしたビットストリームの切り替えには、考慮しなければならない問題がいくつかある。利用可能なチャネル帯域幅が低下すると、クライアントは、或る高レートのビットストリームから別の低レートのビットストリームに切り替えなければならず（「スイッチダウン」プロセス）、その逆の場合も同様である。スイッチアッププロセス（低レートから高レートへ）もスイッチダウンプロセス（高レートから低レートへ）もドリフト誤差を導入することになる。これは、一方のビットストリームの予測フレーム（例えばＰピクチャ）が他方のビットストリームのものと異なり、切り替え時にピクチャドリフトを生じるためである。
【０００９】
現在のビデオ符号化規格では、将来のフレーム／領域が現在の切り替え位置、すなわちＩフレームよりも前の情報を用いない位置でのみ、ビットストリーム間の完全な（不一致のない）切り替えが可能である（A. Balk、M. Gerla及びM. Sanadidi著「Adaptive Video Streaming: Pre-encoded MPEG-4 with Bandwidth Scaling」（International Journal of Computer and Telecommunications Networking, Volume 44, Issue 4, March 2004））（図６を参照）。しかし、Ｉフレームが動き補償された予測フレームよりも多くのビットを必要とすることはよく知られている。
【００１０】
ビットストリームの切り替えにおけるピクチャドリフトを修正するために、切り替え用ピクチャ（switching picture）（ＳＰ）がビットストリームの切り替えに用いられる（Yeh-Kai Chou、Li-Chau Jian、及びChia-Wen Lin著「MPEG-4 Video Streaming with Drift-Compensated Bit-Stream Switching」（Proceedings of the Third IEEE Pacific Rim Conference on Multimedia: Advances in Multimedia Information Processing, December 16-18, 2002）、Marta Karczwicz及びRagip Kurceren著「The SP- and SI-Frames Design for H.264/AVC」（IEEE Transactions on Circuits and Systems for Video Technology, VOL. 13, NO. 7, July 2003）、並びに国際公開第０２／０５４７７６号パンフレット「Switching between bit-streams in video transmission」（NOKIA CORP. 03/01/2002））。ＳＰフレームの利用方法の一例を図７に示す。異なるビットレートで符号化された同一シーケンスに対応する２つのビットストリームがあると仮定する。各符号化ビットストリーム中で、ＳＰピクチャは、或るビットストリームから別のビットストリームへの切り替えを可能にしたい位置（図７のピクチャＳ１及びＳ２）に配置されなければならない。ビットストリーム１からビットストリーム２へ切り替える場合、別のＳＰピクチャが送信されることになる（図８のピクチャＳ１２）。
【００１１】
別の手法は、ビデオシーケンスを圧縮して１つのスケーラブルビットストリームにするものであり、このビットストリームは、帯域幅の変動に合わせて打ち切る(truncate)ことができる。スケーラブルビデオ符号化は、ビットレート、フレームレート及びおそらくは分解能の異なるいくつかのレイヤから出力ストリームを形成してスケーラブル出力を実現することからなる。結果として得られるビデオレイヤは、１つの基本レイヤ（ＢＬ）及びいくつかの上位(enhancement)レイヤ（ＥＬ）からなり、これらはすべて、復号されたビデオの品質に対して異なる寄与を持つ。上位レイヤは、知覚品質を高めるのに役立つが、それらがないと、受信ビデオの品質にグレースフルデグラデーション(graceful degradation)が生じる。したがって、上位レイヤは、ビデオコーダの出力ビットレートを制御するために、品質と圧縮効率のトレードオフとして用いることができる。
【００１２】
スケーラブル符号化に利用できるレイヤの数は限られている。よって、切り替えの枠組みを適用し、複数のスケーラブルビットストリームを用いて広いビットレート範囲にわたってスケーラブルビデオ符号化の効率を大きく高めることができる（欧州特許第１３３１８２２号明細書「Seamless switching of scalable video bit-streams」（MICROSOFT CORP. 14/01/2003））。各スケーラブルビットストリームは、ビットレートの異なる基本レイヤを有し、一定のビットレート範囲内のチャネル帯域幅の変動に最も良く適応させることができる。チャネル帯域幅が範囲外にある場合、スケーラブルビットストリームを或るものから、より符号化効率の良い別のものへ切り替えることができる（図８を参照）。
【００１３】
利用可能な伝送帯域幅が急に変化した場合にビデオコーデックが直面する主な問題は、最小の遅延で品質を損なうことなく如何に新たな条件に適応するかである。さらに複雑なことには、通常、いくつかの符号化されたフレーム／スライスがエンコーダのバッファに格納されて、送信されるのを待っている。ビットレートが変化しても、古いビットレートで符号化されたいくつかのフレーム／スライスがまだバッファ内に残っている。ビットレートが低下する場合、これらの古いフレーム／スライスを送信すると、ビットレートを調整する際にさらなる遅延が生じるため、復号の遅延及び品質に大きな悪影響をもたらす。
【００１４】
上述の技法は、そうした急なビットレートの変化への対処に適していない。Ｉフレームを挿入しても、Ｉフレームは予測フレームよりも多くのビットを搬送するため、ビデオ遅延の問題は解決されない。異なるビットレートで符号化されたビデオは通常、異なるフレームレートで符号化されている。したがって、量子化器のステップサイズの異なる複数のバッファを使用しても、フレームレートを変更する必要がある場合、全てのバッファが同一のフレームレートを含むため、問題は解決されない。ビットレートを変更する必要がある場合に長期フレームを予測子として使用すると、送信側バッファにまだキューイングされているフレームが多すぎる場合、ピクチャドリフトをもたらす可能性がある。
【００１５】
離散時間におけるデータの送信に用いられる、ビットレート及びフレームレートの異なる複数のバッファは、送信側バッファからの１つの参照フレームのみを用いて、ビットレート及びフレームレートの異なる他のバッファのためのデータの符号化を開始する。圧縮データが連続的に送信される場合、この技法は、ビットレートを変更した後にフレームを復号できるように、多くのフレームをデコーダに格納する必要がある。
【００１６】
切り替え用ピクチャ（ＳＰピクチャ）を用いる場合、ビットレートは、切り替え用ピクチャ位置でしか変更することができないため、急に変更することはできない。ＳＰピクチャは、複数のビットストリームを用いて、ビットレートを切り替える。また、ＳＰピクチャが切り替え点にあることで、使用される予測は以前のピクチャとなり、長期予測は用いられないため、新たなビットレートのフレームを送信する前にバッファ内の全てのフレームをフラッシュしなければならなくなり、遅延が長くなる。
【００１７】
スケーラブルビデオ符号化にもいくつかの欠点がある。マルチレイヤエンコーダの総ビットレートは、余分な構文オーバーヘッドのために、単一レイヤエンコーダよりも遥かに大きくなる可能性がある。第２に、スケーラブル符号化では利用可能なレイヤ数が限られており、ユーザの選択を制限する。第３に、スケーラブル符号化は、デコーダ側に余分な計算を導入する。これは、計算資源の限られたユーザ端末にとって望ましくない。
【００１８】
本発明の態様を添付の特許請求の範囲に記載する。
【００１９】
第１の態様によれば、本発明は、送信のためにフレームシーケンスを符号化する方法を提供し、本方法は、異なる条件下でフレームシーケンスを符号化することであって、それによって、異なるビットレートで送信される、フレームシーケンスをそれぞれ表す複数の符号化ビットストリームを生成する、フレームシーケンスを符号化することと、この符号化されたビットストリームの各々をそれぞれのバッファに格納することと、送信のためにバッファからビットストリームを出力することとを含み、本方法は、バッファを切り替えることであって、それによって、送信するデータのビットレートを変更する、バッファを切り替えることをさらに含む方法において、１つのバッファに格納される少なくとも１つのフレームは、別のバッファに格納されているフレームを参照して符号化されることを特徴とする。
【００２０】
より具体的には、或るバッファが送信に用いられる場合、他のバッファのフレームが、その送信バッファのフレームを参照して符号化される。参照フレームは、符号化中のフレームに時間的に先行するため、送信が新たなバッファに切り替えられた場合、参照フレームは既に完全に送信されており、再構成に利用することができる。
【００２１】
別の態様によれば、本発明は、異なるビットレートで送信されるデータを格納する複数のバッファを用いて、送信のためにフレームシーケンスを符号化する方法を提供し、本方法は、バッファを切り替えることであって、それによって、送信するデータのビットレートを変更する、バッファを切り替えることをさらに含み、データが第１のバッファから送信される場合、この第１のバッファに格納されるデータは、以前に符号化され当該バッファに格納されたフレームを参照して符号化され、別のバッファに格納されるデータは、以前に符号化され上記第１のバッファに格納されたフレームを参照して同様に符号化され、送信が第２のバッファに切り替えられた場合、この第２のバッファに格納されるデータは、以前に符号化され当該第２のバッファに格納されたフレームを参照して符号化され、別のバッファに格納されるデータは、以前に符号化され上記第２のバッファに格納されたフレームを参照して同様に符号化される。
【００２２】
別の態様によれば、本発明は、異なるビットレートで送信されるデータを格納する複数のバッファを用いて、送信のためにフレームシーケンスを符号化する方法を提供し、本方法は、バッファを切り替えることであって、それによって、送信するデータのビットレートを変更する、バッファを切り替えることを含み、当該１つのバッファのフレームは、最も近いビットレートを有するバッファのフレームを参照して符号化される。
【００２３】
本発明の一実施形態のいくつかの特徴を以下に記載する。
【００２４】
単一のビデオコーデックを使用して、入力ビデオシーケンスを圧縮し、圧縮されたデータを、事前に設定されたビットレートｒ１にてデフォルトのフレームレートｆ１でバッファに格納する。このデフォルトバッファ（ＶＢ１）を用いて、圧縮データをユーザ／クライアントに送信する前にキューイングする（図１０を参照）。ＶＢ１を符号化している間に、他の仮想バッファ（ＶＢ２、ＶＢ３等）が異なるビットレート及びフレームレートで符号化される。非デフォルトの仮想バッファ内のフレームは、ＶＢ１内のフレームのいくつかに対応するが、異なる品質を有する。ＶＢ１内の符号化フレームは、このバッファ内の直前の符号化フレームを参照して圧縮される。他のバッファの場合、各フレームは、同一バッファからの以前のフレームではなくＶＢ１からのフレームを参照して符号化される。非デフォルトバッファ（ＶＢ２、ＶＢ３等）は、ビットレート（ｒ２、ｒ３等）が異なるため、異なるフレームレート（ｆ２、ｆ３等）を有する場合がある。これらの余分なバッファを設ける理由は、ビットレートの急な切り替えを可能にするためである。ビットレートが切り替えられる際、送信することができない古いビットレートｒ１からのフレーム／スライスがまだいくつかＶＢ１内にある。これらの残りのフレームを送信すると、低ビットレートへの切り替えの場合にはビデオ遅延が増大し、または、高ビットレートへの切り替えの場合にピクチャ品質を即座に高めることができない。この問題を解決するために、本発明では、ＶＢ１からの残りのフレームではなく、新たなビットレートを有する非デフォルトバッファからのいくつかの既に符号化されたフレームの送信に切り替える。この非デフォルトバッファ（例えばＶＢ２）が新たなデフォルトバッファとなり、圧縮データがこのバッファからクライアントに送信される。すると、古いデフォルトバッファＶＢ１を含む他のＶＢは、新たなデフォルトバッファ（ＶＢ２）を参照してフレームを圧縮する。
【００２５】
本発明の実施形態を、添付図面を参照して説明する。
【００２６】
本発明の一実施形態によるシステムを図１０に示す。本システムは、エンコーダ２と、４つの仮想バッファ（１よりも大きい任意の数の仮想バッファを用いることができる）と、サーバ４と、ネットワーク６と、クライアント８と、デコーダ１０とを含む。
【００２７】
標準的なビデオコーデック（例えばＭＰＥＧ−４／Ｈ．２６４）を用いて、初期の目標ビットレート（ＢＲ１）を用いてビデオシーケンスを圧縮し、仮想バッファ（ＶＢ１）に格納する。ＶＢ１を充填するのと同時に、他の仮想バッファ（ＶＢ）（例えばＶＢ２、ＶＢ３等）を用いて、ＢＲ１よりも低い／高いビットレートの圧縮ビデオデータを格納する。これらの余分な仮想バッファは、ＶＢ１の内容を参照してビデオデータを圧縮する。ビットレートの切り替え点では、他のＶＢのうちの１つ（例えばＢＲ２＜ＢＲ１であるＶＢ２）を用いて、切り替えられたビットレート（ＢＲＳ）で残りの圧縮ビデオデータを提供する。ＶＢ２は切り替え点後の新たなデフォルトバッファであるため、他のバッファ（ＶＢ４、ＶＢ１、ＶＢ３（図１１を参照））は、ＶＢ２内で符号化されたフレームを参照してフレームを圧縮する。
【００２８】
一般にビデオ符号化では、ビデオは、高ビットレートの場合に高フレームレート（例えば２５／３０ｆｐｓ）で、低ビットレートの場合に低フレームレート（例えば５／１０ｆｐｓ）で圧縮される。図１２に示すように、ＶＢ１は、ビットレート（ｒ１）がＶＢ２のビットレート（ｒ２）よりも大きいため、ＶＢ２のフレームレート（ｆ２）よりも高いフレームレート（ｆ１）で符号化される。
【００２９】
図１３の状況は、２つの異なるビットレートと１つの切り替え事象のみを示す。「切り替え点」以前は、ＶＢ１がデフォルトバッファであるため、切り替え点以前のフレームはすべて、ＶＢ１中の以前のフレームを参照して符号化される。ｆ２＜ｆ１であるため、ＶＢ２のフレームを符号化するために用いられる参照フレームは、ＶＢ１中のフレームの符号化に用いられる参照フレームよりも前の時間まで遡る。例えば、ｆ２＝２５ｆｐｓであり、ｆ１＝５ｆｐｓである場合、ＶＢ１で５フレームが符号化される毎にＶＢ２で１フレームが符号化される。「切り替え点」において、ＶＢ２がデフォルトバッファとなる。この点以降、符号化されるいかなるフレームもＶＢ２中の以前のフレームを参照する。ＶＢ１のフレームは、帯域幅が増加し、ビットレートをｒ２から元のｒ１に切り替えることができる状況に備えて、依然として符号化される。
【００３０】
図９に示すように、ビットレートの異なる４つのバッファが作成される。帯域幅が高い場合、ビデオは高フレームレートで符号化することができ、帯域幅が低い場合、低フレームレートを用いてビデオを符号化する。図６に示すように、切り替え点において、各バッファは、同一の参照フレームを用いてフレームを符号化する。次に、各フレームをそのバッファ中の以前の符号化フレームから符号化する。
【００３１】
切り替え点が生じるとき、クライアントに送信されるべくキューイングしているフレームがデフォルトバッファ内にまだいくつかある。これらのフレームは、ビットレートが今や変化しており、これらのフレーム内のビットがもはや正しいビットレートを表さないため、送ることができない。例えば、図１４では、切り替え点において、フレームＤ１〜Ｄ６とＤ７の一部が送信されており、フレームＤ８〜Ｄ１１とフレームＤ７の残りの部分はＶＢ１にキューイングされる。また、ＶＢ２はフレームＥ１及びＥ２を含む。Ｄ７の残りとフレームＤ８〜Ｄ１１を送信する代わりに、Ｅ２のみを送信する。フレームＥ１はフレームＤ５と同じタイムスタンプを有し、デコーダはフレームＤ６を受信しているため、デコーダにＥ１は必要ない。デコーダでは、フレームＤ６から受信した全てのビットを復号する際、Ｄ７を完全に復号することができなかったため、フレームＥ２のフレームヘッダ（ピクチャ開始コード）を復号する。この場合、デコーダにおいてフレームＤ７は表示されない。フレームＤ６を参照してＥ２が復号されるため、フレームＤ７は必要ない。
【００３２】
切り替え点において、フレームＤ１〜Ｄ２とフレームＤ３の一部のみが送信されている場合（図１５を参照）、Ｅ２ではなくＥ１が送信される。切り替え点以降は、以前に送信されたフレームＥ１（又は前の例ではＥ２）を参照してフレームＥ３が符号化される。送信される次のフレームＥ４は単純にＥ３を参照して符号化される。
【００３３】
低ビットレートから元の高ビットレートに切り替えて、ピクチャ品質を高めるとともに利用可能な帯域幅を活用するために、ビットレート及びフレームレートの高いフレームを非デフォルトの仮想バッファに格納する（図１６の、切り替え点以前のＶＢ１を参照）。「切り替え点」において、ＶＢ２からのフレームＥ１及びＥ２は送信されており、フレームＥ３は符号化されているが未だ完全には送信されていない。切り替え点において、Ｅ３の送信はキャンセルされる。フレームＤ１〜Ｄ１２は既に符号化されており、高ビットレートのバッファＶＢ１に格納されている。フレームＤ５はフレームＥ２と同じタイムスタンプを有し、フレームＥ３の一部のみが送信されているため、フレームＤ６〜Ｄ８のみをクライアントに送信することができる。これは、フレームＤ９〜Ｄ１２を送信した場合、それらの正しい参照フレームがデコーダにないためである。切り替え点の後、次のフレームＤ１３は、以前に送信されたフレームＤ８を参照して符号化され、それ以降、各フレームは、ＶＢ１中の関連する直前のフレームを参照して符号化される。
【００３４】
以前は、複数のバッファを用いる場合、非デフォルトバッファ（例えばＶＢ２、ＶＢ３等）内の各符号化フレームは、デフォルトバッファ（ＶＢ１）からのフレームを参照して圧縮されていた。図１７に示すように、本アルゴリズムでは、各フレームは、最も近いビットレートを有するバッファからのフレームを参照して圧縮される。例えば、ＶＢ３のビットレートはＶＢ１よりもＶＢ２に近いため、ＶＢ３のために符号化されるフレームは、デフォルトバッファＶＢ１ではなくＶＢ２からのフレームを参照して圧縮される。
【００３５】
ネットワーク帯域幅は変化する可能性があるため、利用可能なビットレート範囲に対処するために多くの仮想バッファが必要となる。ビットレートの切り替え後に用いられるバッファ数を減らすために、ビットレートをさらに変更して、利用可能な帯域幅を活用することができる。図１９に示すように、切り替えが起こる前は、デフォルトバッファのビットレートは１２８Ｋｂｐｓであり、フレームレートは２５ｆｐｓである。非デフォルトバッファＶＢ２は３２ｋｂｐｓで、５ｆｐｓのフレームレートで符号化を行い、切り替え点での送信に備える。しかし、帯域幅が６４ｋｂｐｓにしか低下しない場合、切り替え後のさらなる符号化はいずれも、３２ｋｂｐｓではなくこの新たな６４ｋｂｐｓのビットレートで行われる。フレームレートもまた帯域幅に合わせて調節することができ、例えば、図１５ではＶＢ２のフレームレートを５ｆｐｓから１０ｆｐｓに上げる。
【００３６】
ビットレートを下げる際のジッタ(jitter)をさらに低減するために、非デフォルトの低ビットレートのバッファ（すなわち図１９のＶＢ２を参照）の２つ以上のフレームをデフォルトの高ビットレートのバッファＶＢ１の１つのフレームから予測することができる。図１８に示すように、ＶＢ２からのフレームＥ３及びＥ４が、ＶＢ１の１つのフレームＤ５のみから予測される。切り替え点において、フレームＤ５〜Ｄ６は完全に送信されているため、フレームＥ５及びＥ６を符号化する前にＶＢ２からのフレームＥ３及びＥ４を送信することができる。これにより、切り替え点においてＶＢ２から２つ以上の予め符号化されたフレームが送信されるため、ジッタが低減される。
【００３７】
上記の例で用いたアルゴリズムは、ライブストリーミングのみに用いることができる。しかし、付加的なバッファの使用により、予め符号化されたストリーミングに同様の技法を用いることができる。例えば、高ビットレートから低ビットレートにスイッチダウンする場合、図２０に示されるように３つのビットストリームが作成されなければならない。これらのビットストリームは、バッファＶＢ１、ＶＢ２’及びＶＢ２からもたらされる。ＶＢ１は高ビットレートのビットストリームを格納し、ＶＢ２’及びＶＢ２は低ビットレートのビットストリームを格納する。ＶＢ２’及びＶＢ２に格納されるフレームは、同一のタイムスタンプ及び同一の符号化レート（同一のビットレート及びフレームレート）を有するが、異なる符号化参照フレームから符号化される。ＶＢ２’からのフレームはＶＢ１中の以前のフレームを参照して符号化され、ＶＢ２からのフレームはそのバッファ自体（ＶＢ２）の以前の符号化フレームから符号化される。図１８に示すように、「切り替え点」において、先ずＶＢ２’からの符号化フレームＥ９’が、次にＶＢ２からの以後のフレーム（Ｅ１０、Ｅ１１等）がクライアントに送信される。
【００３８】
デコーダは２つのフレームをメモリに格納する。１つのフレームは、次に受信されるフレームを復号するための参照として用いられる。第２のフレームは、最初に送信される切り替え済フレームを復号するために切り替え点のみで用いられる。
【００３９】
本明細書において、「フレーム」という用語は、フィルタリング後のものを含む画像単位を記述するために用いられるが、この用語は、画像、フィールド、ピクチャ、又は、画像、フレーム等のサブユニット若しくは領域といった他の同様の専門用語にも当てはまる。画素及び画素ブロック又は画素グループという用語は、適切な場合に置き換え可能に用いられ得る。本明細書において、画像という用語は、文脈から明らかである場合を除き、画像全体又は画像の一領域を意味する。同様に、画像の一領域は画像全体を意味し得る。画像はフレーム又はフィールドを含み、静止画、又は、フィルム若しくはビデオのような画像シーケンス中、又は関連する画像グループ中の画像に関連する。
【００４０】
画像は、グレースケール画像又はカラー画像であっても、別のタイプのマルチスペクトル画像、例えばＩＲ画像、ＵＶ画像若しくは他の電磁画像、又は音響画像（acoustic image）等であってもよい。
【００４１】
本発明は、例えば適切なソフトウェア及び／又はハードウェアの変更を施したコンピュータシステムにおいて実施することができる。例えば、本発明は、プロセッサ又は制御装置のような制御又は処理手段、メモリ、磁気記憶装置、ＣＤ、ＤＶＤ等のような画像記憶手段を含むデータ記憶手段、ディスプレイ若しくはモニタ又はプリンタのようなデータ出力手段、キーボードのようなデータ入力手段、及びスキャナのような画像入力手段、又はかかる構成要素の任意の組み合わせを付加的な構成要素とともに有するコンピュータ又は同様のものを用いて実施することができる。本発明の態様は、ソフトウェア形態及び／又はハードウェア形態で、又は特定用途向け装置において提供することができるか、又はチップのような特定用途向けモジュールを提供することができる。本発明の一実施形態による装置におけるシステムの構成要素は、例えばインターネットを介して他の構成要素から遠隔して設けてもよい。図６にコーダを示し、対応するデコーダは例えば、逆の復号動作を行うための対応する構成要素を有する。
【図面の簡単な説明】
【００４２】
【図１】従来技術のコーデックのブロック図である。
【図２】従来技術のコーデック及び送信システムのブロック図である。
【図３】複数の量子化器及びバッファを有する従来技術のエンコーダのブロック図である。
【図４】フレームを符号化する従来技術の方法を示す図である。
【図５】フレームを符号化する別の従来技術の方法を示す図である。
【図６】異なるビットレートでフレームを符号化する従来技術の方法を示す図である。
【図７】切り替え用ピクチャを用いてフレームを符号化する従来技術の方法を示す図である。
【図８】スケーラブル符号化を用いてフレームを符号化する従来技術の方法である。
【図９】本発明の一実施形態のフレームを符号化する方法を示す図である。
【図１０】本発明の一実施形態のシステムのブロック図である。
【図１１】本発明の一実施形態の方法を示す図である。
【図１２】本発明の一実施形態の方法を示す図である。
【図１３】本発明の一実施形態の方法を示す図である。
【図１４】本発明の一実施形態の方法を示す図である。
【図１５】本発明の一実施形態の方法を示す図である。
【図１６】本発明の一実施形態の方法を示す図である。
【図１７】本発明の一実施形態の方法を示す図である。
【図１８】本発明の一実施形態の方法を示す図である。
【図１９】本発明の一実施形態の方法を示す図である。
【図２０】本発明の一実施形態の方法を示す図である。
【図１】
2006087125.tif 000003
【図２】
2006087125.tif 000004
【図３】
2006087125.tif 000005
【図４】
2006087125.tif 000006
【図５】
2006087125.tif 000007
【図６】
2006087125.tif 000008
【図７】
2006087125.tif 000009
【図８】
2006087125.tif 000010
【図９】
2006087125.tif 000011
【図１０】
2006087125.tif 000012
【図１１】
2006087125.tif 000013
【図１２】
2006087125.tif 000014
【図１３】
2006087125.tif 000015
【図１４】
2006087125.tif 000016
【図１５】
2006087125.tif 000017
【図１６】
2006087125.tif 000018
【図１７】
2006087125.tif 000019
【図１８】
2006087125.tif 000020
【図１９】
2006087125.tif 000021
【図２０】
2006087125.tif 000022
【外国語明細書】
2006087125.tif 000023
2006087125.tif 000024
2006087125.tif 000025
2006087125.tif 000026
2006087125.tif 000027
2006087125.tif 000028
2006087125.tif 000029
2006087125.tif 000030
2006087125.tif 000031
2006087125.tif 000032
2006087125.tif 000033
2006087125.tif 000034
2006087125.tif 000035
2006087125.tif 000036
2006087125.tif 000037
2006087125.tif 000038
2006087125.tif 000039
2006087125.tif 000040
2006087125.tif 000041
2006087125.tif 000042
2006087125.tif 000043
2006087125.tif 000044
2006087125.tif 000045
2006087125.tif 000046
2006087125.tif 000047
2006087125.tif 000048
2006087125.tif 000049
2006087125.tif 000050
2006087125.tif 000051
2006087125.tif 000052
2006087125.tif 000053
2006087125.tif 000054
2006087125.tif 000055
2006087125.tif 000056
2006087125.tif 000057