(57)【特許請求の範囲】
【請求項１】
クライアントサーバベースのネットワークを介して漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを得るためにコンピュータで実施される方法であって、クライアントコンピュータが、
ベース品質バージョンのプログラムを、前記ネットワークを介してサーバに要求するプロセス動作であって、前記ベース品質バージョンのプログラムは、最下位レベルの層がベース層で、次に高いレベルの各層が、階層中の先行する層からレンダリングできる前記プログラムの品質をエンハンスするためのエンハンス情報を追加している点で、階層的に関係した層を有する階層化されたユニキャストの層データを含み、前記ネットワークを介したベース品質バージョンのプログラムのサーバへの要求は、前記ネットワークの利用可能な帯域幅を超過せずに前記サーバから前記クライアントに送信できる限り、多くの層を、前記ベース層から前記階層中の位置の順に要求することを含むプロセス動作と、
前記要求した、ベース品質バージョンのプログラムに関連する層データを受信しおよびキャッシュするプロセス動作と、
前記要求したデータを受信したとき前記ベース品質バージョンのプログラムをレンダリングし、ユーザに提示するプロセス動作と、
前記ネットワークを介して階層化ユニキャストのエンハンス層の少なくとも１つをサーバに要求するプロセス動作と、
前記要求したエンハンス層データを受信しおよびキャッシュするプロセス動作と、
前記要求したエンハンス層データを受信したとき、エンハンス層データを、先にキャッシュしたベース品質バージョンのプログラムに関連する層データと結合させて、より高品質のバージョンのプログラムを製造するプロセス動作とを行うことを備え、
少なくとも１つのエンハンス層を要求する前記プロセス動作と、前記要求したエンハンス層データを受信しおよびキャッシュする前記プロセス動作と、前記要求したエンハンス層データを受信したとき、該エンハンス層データを、前記先にキャッシュしたベース品質バージョンのプログラムに関連する層データと結合させて、前記より高品質のバージョンのプログラムを製造する前記プロセス動作とが、前記ベース品質バージョンと比較してより高品質のバージョンのプログラムを提供するようにユーザが前記クライアントに指示したときだけ行われることを特徴とする方法。
【請求項２】
クライアントサーバベースのネットワークを介して漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを得るためにコンピュータで実施される方法であって、クライアントコンピュータが、
ベース品質バージョンのプログラムを、前記ネットワークを介してサーバに要求するプロセス動作であって、前記ベース品質バージョンのプログラムは、最下位レベルの層がベース層で、次に高いレベルの各層が、階層中の先行する層からレンダリングできる前記プログラムの品質をエンハンスするためのエンハンス情報を追加している点で、階層的に関係した層を有する階層化されたユニキャストの層データを含み、前記ネットワークを介したベース品質バージョンのプログラムのサーバへの要求は、前記ネットワークの利用可能な帯域幅を超過せずに前記サーバから前記クライアントに送信できる限り、多くの層を、前記ベース層から前記階層中の位置の順に要求することを含むプロセス動作と、
前記要求した、ベース品質バージョンのプログラムに関連する層データを受信しおよびキャッシュするプロセス動作と、
前記要求したデータを受信したとき前記ベース品質バージョンのプログラムをレンダリングし、ユーザに提示するプロセス動作と、
前記ネットワークを介して階層化ユニキャストのエンハンス層の少なくとも１つをサーバに要求するプロセス動作と、
前記要求したエンハンス層データを受信しおよびキャッシュするプロセス動作と、
前記要求したエンハンス層データを受信したとき、エンハンス層データを、先にキャッシュしたベース品質バージョンのプログラムに関連する層データと結合させて、より高品質のバージョンのプログラムを製造するプロセス動作とを行うことを備え、
前記要求したエンハンス層データを受信したとき、該エンハンス層データを、前記先にキャッシュしたベース品質バージョンのプログラムに関連する層データと結合させて、前記より高品質のバージョンのプログラムを製造する前記プロセス動作が、前記ベース品質バージョンと比較してより高品質のバージョンのプログラムを提供するようにユーザが前記クライアントに指示したときだけ行われることを特徴とする方法。
【請求項３】
前記ベース品質バージョンのプログラムを提示することを終了するようにユーザが指示するか否かを判定するプロセス動作と、
前記ベース品質バージョンのプログラムを前記ユーザに提示することを終了するプロセス動作とをさらに備えることを特徴とする請求項１または２に記載の方法。
【請求項４】
前記提示を終了するプロセス動作は、前記要求したベース品質バージョンのプログラムに関連する着信データストリームを終了する動作を備えることを特徴とする請求項３に記載の方法。
【請求項５】
前記提示を終了するプロセス動作は、前記要求したベース品質バージョンのプログラムに関連する着信データストリームの前記受信およびキャッシュを継続しながら、前記ベース品質バージョンのプログラムのレンダリングを停止する動作を備えることを特徴とする請求項３に記載の方法。
【請求項６】
前記結合させた層データから前記より高品質のバージョンのプログラムをレンダリングしてユーザに提示するプロセス動作をさらに備えることを特徴とする請求項１または２に記載の方法。
【請求項７】
前記より高品質のバージョンのプログラムを提示することを終了するようにユーザが指示するか否かを判定するプロセス動作と、
前記より高品質のバージョンのプログラムをユーザに提示することを終了するプロセス動作とをさらに備えることを特徴とする請求項６に記載の方法。
【請求項８】
前記提示を終了するプロセス動作が、前記要求したより高品質のバージョンのプログラムに関連する着信データストリームを終了する動作を備えることを特徴とする請求項７に記載の方法。
【請求項９】
前記提示を終了するプロセス動作は、要求したより高品質のバージョンのプログラムに関連する着信データストリームの受信およびキャッシュを継続しながら、より高品質のバージョンのプログラムのレンダリングを停止する動作を含むことを特徴とする請求項７に記載の方法。
【請求項１０】
少なくとも１つのエンハンス層を受信する前記プロセス動作と、前記要求したエンハンス層データを受信しおよびキャッシュする前記プロセス動作と、前記要求したエンハンス層データを受信したとき、該エンハンス層データを、前記先にキャッシュしたベース品質バージョンのプログラムに関連する層データと結合させて、前記より高品質のバージョンのプログラムを製造するプロセス動作とが、前記ベース品質バージョンのプログラムに関連する前記要求した層データがすべて受信されおよびキャッシュされた後で自動的に行われることを特徴とする請求項１または２に記載の方法。
【請求項１１】
階層化ユニキャストの、少なくとも１つの追加のエンハンス層を、前記ネットワークを介して前記サーバに要求するプロセス動作と、
前記要求した追加のエンハンス層データを受信しおよびキャッシュするプロセス動作と、
前記要求した追加のエンハンス層データを受信したとき、該追加のエンハンス層データを、先にキャッシュしたベース品質およびより高品質のバージョンのプログラムに関連する層データと結合させて、エンハンスされたより高品質のバージョンのプログラムを製造するプロセス動作とをさらに備えることを特徴とする請求項１または２に記載の方法。
【請求項１２】
前記サーバが前記プログラムに関連する残りの入手可能なエンハンス層を有するか否かを確認するプロセス動作と、
前記サーバが前記プログラムに関連する残りのエンハンス層を少なくとも１つ有するときは、
前記階層化ユニキャストの、少なくとも１つの追加のエンハンス層を、前記ネットワークを介して前記サーバに要求するプロセス動作と、
前記要求した追加のエンハンス層データを受信しおよびキャッシュするプロセス動作と、
前記要求した追加のエンハンス層データを受信したとき、該追加のエンハンス層データを、前記先にキャッシュしたベース品質およびより高品質のバージョンのプログラムに関連する層データと結合させて、エンハンスされたより高品質のバージョンのプログラムを製造するプロセス動作とをさらに備えることを特徴とする請求項１または２に記載の方法。
【請求項１３】
少なくとも１つの追加のエンハンス層を要求する前記プロセス動作と、前記要求した追加のエンハンス層データを受信しおよびキャッシュする前記プロセス動作と、前記要求した追加のエンハンス層データを、前記先にキャッシュしたベース品質およびより高品質のバージョンのプログラムに関連する層データと結合させて、前記エンハンスされたより高品質のバージョンのプログラムを製造する前記プロセス動作とが、前記エンハンスされたより高品質のバージョンのプログラムを提供するようにユーザが前記クライアントに指示したときだけ行われることを特徴とする請求項１２に記載の方法。
【請求項１４】
少なくとも１つの追加のエンハンス層を要求する前記プロセス動作と、前記要求した追加のエンハンス層データを受信しおよびキャッシュするプロセス動作と、前記要求した追加のエンハンス層データを、前記先にキャッシュしたベース品質およびより高品質のバージョンのプログラムに関連する層データと結合させて、前記エンハンスされたより高品質のバージョンのプログラムを製造するプロセス動作とが、前記要求したより高品質のバージョンのプログラムに関連する層データがすべて受信されおよびキャッシュされた後で自動的に行われることを特徴とする請求項１２に記載の方法。
【請求項１５】
前記サーバが前記プログラムに関連する残りの入手可能なエンハンス層を有しないと確認されたときは、エンハンスされたより高品質のバージョンのプログラムを提供できないことをユーザに通知するプロセス動作をさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１６】
少なくとも１つのエンハンス層を要求する前記プロセス動作は、前記ネットワークの利用可能な帯域幅を超過せずに前記サーバから前記クライアントに送信できる限り、多くのエンハンス層を、前記ベース品質バージョンのプログラムに関連して要求された最も上位の層の次に階層中で高い層から、該階層中の位置の順に要求する動作を備えることを特徴とする請求項１または２に記載の方法。
【請求項１７】
ベース品質バージョンのプログラムを要求する前記プロセス動作、および少なくとも１つのエンハンス層を要求する前記プロセス動作は、各層を構成する前記データを全体として提供するように要求する動作を含むことを特徴とする請求項１または２に記載の方法。
【請求項１８】
ベース品質バージョンのプログラムを要求する前記プロセス動作は、連続的な同サイズの時間的に対応する部分で前記ベース品質バージョンの各層を構成する前記データを要求する動作を備え、これにより、前記プログラムの始めの時間セグメントに関連する層部分が最初に要求され、次いでプログラムの次に続く時間セグメントに関連する層部分が要求され、以後同様となることを特徴とする請求項１または２に記載の方法。
【請求項１９】
連続的な同サイズの時間的に対応する部分で前記ベース品質バージョンの各層を構成する前記データを要求する前記プロセス動作は、前記ネットワークの利用可能な帯域幅を超過せずに前記サーバから前記クライアントに送信できる限り、多くの層からの前記層部分を、前記ベース層から前記階層中の位置の順に要求する動作を備えることを特徴とする請求項１８に記載の方法。
【請求項２０】
前記プログラムの少なくとも１つのエンハンス層を要求する前記プロセス動作は、連続的な同サイズの時間的に対応する部分で各エンハンス層を構成する前記データを要求する動作を備え、これにより、前記プログラムの始めの時間セグメントに関連する層部分が最初に要求され、次いで前記プログラムの次に続く時間セグメントに関連する層部分が要求され、以後同様となることを特徴とする請求項１８に記載の方法。
【請求項２１】
連続的な同サイズの時間的に対応する部分で各エンハンス層を構成する前記データを要求する前記プロセス動作は、前記ネットワークの利用可能な帯域幅を超過せずに前記サーバから前記クライアントに送信できる限り、多くのエンハンス層からの前記エンハンス層部分を、前記ベース品質バージョンのプログラムに関連して要求された最も上位の層の次に前記階層中で高い層から、該階層中の位置の順に要求する動作を含むことを特徴とする請求項２０に記載の方法。
【請求項２２】
前記プログラムの各時間セグメントの長さが、前記ネットワーク上で利用可能な帯域幅が変動するレートに合わせられ、これにより各時間セグメントは、ネットワーク帯域幅がその期間にわたって大きく変動しないように十分に短いことを特徴とする請求項２０に記載の方法。
【請求項２３】
漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを得るための、クライアントサーバベースのコンピュータネットワークであって、
少なくとも１つの汎用コンピューティングデバイスを備えたクライアントと、
該クライアントによって実行可能なプログラムモジュールを備えたコンピュータプログラムとを備え、
前記クライアントは、
閲覧のために前記プログラムを提供するよう命じる命令をユーザから受信すること、
最下位レベルの層がベース層で、次に高いレベルの各層が、階層中の先行する層からレンダリングできる前記プログラムの品質をエンハンスするためのエンハンス情報を追加している点で、階層的に関係した層を有する階層化されたユニキャストの層データを含むベース品質バージョンのプログラムを、前記ネットワークを介してサーバに要求することであって、前記ネットワークの利用可能な帯域幅を超過せずに前記サーバから前記クライアントに送信できる限り、多くの層を、前記ベース層から前記階層中の位置の順に要求することを含むこと、
前記要求した、ベース品質バージョンのプログラムに関連する層データを受信しおよびキャッシュすること、
前記要求したデータを受信したとき前記ベース品質バージョンのプログラムをレンダリングし、前記ユーザに提示すること、
閲覧のためにより高品質のバージョンのプログラムを提供するようにユーザが指示するか否かを判定すること、
より高品質のバージョンのプログラムを提供するように前記ユーザが指示したと判定されたときは、
前記ネットワークを介して階層化ユニキャストのエンハンス層の少なくとも１つを前記サーバに要求すること、
前記要求したエンハンス層データを受信しおよびキャッシュすること、
前記要求したエンハンス層データを受信したとき、該エンハンス層データを、先にキャッシュしたベース品質バージョンのプログラムに関連する層データと結合させて、より高品質のバージョンのプログラムを製造すること、および
前記結合させた層データから前記より高品質のバージョンのプログラムをレンダリングして前記ユーザに提示することを行うようにプログラムモジュールに指示されることを特徴とするネットワーク。
【請求項２４】
前記ベース品質バージョンのプログラムの提示を終了するように前記ユーザが指示するか否かを判定し、
前記ベース品質バージョンのプログラムの提示を終了するように前記ユーザが指示したと判定されたときは前記提示を終了するためのプログラムモジュールをさらに備えたことを特徴とする請求項２３に記載のネットワーク。
【請求項２５】
ネットワークを介して漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを得るためのコンピュータ実行可能命令を備えたコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、
最下位レベルの層がベース層で、次に高いレベルの各層が、階層中の先行する層からレンダリングできる前記プログラムの品質をエンハンスするためのエンハンス情報を追加している点で、階層的に関係した層を有する階層化されたユニキャストの層データを含むベース品質バージョンのプログラムを要求することであって、前記ネットワークの利用可能な帯域幅を超過せずに前記サーバから前記クライアントに送信できる限り、多くの層を、前記ベース層から前記階層中の位置の順に要求することを含むこと、
前記要求した、ベース品質バージョンのプログラムに関連する層データを受信しおよびキャッシュすること、
前記要求したデータを受信したとき前記ベース品質バージョンのプログラムをレンダリングし、前記ユーザに提示すること、
より高品質のバージョンのプログラムを提供するようにユーザが指示したときに、前記ネットワークを介して前記階層化ユニキャストのエンハンス層の少なくとも１つをサーバに要求すること、
前記要求したエンハンス層データを受信しおよびキャッシュすること、
前記要求したエンハンス層データを受信したとき、該エンハンス層データを、前記先にキャッシュしたベース品質バージョンのプログラムに関連する層データと結合させて、より高品質のバージョンのプログラムを製造すること、および
前記結合させた層データからより高品質のバージョンのプログラムをレンダリングして前記ユーザに提示することを備えることを特徴とするコンピュータ可読記憶媒体。
【請求項２６】
コンピューティングデバイスを使用して、クライアントサーバベースのネットワークを介して漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを提供する方法であって、サーバコンピュータが、
前記プログラムを提供するようにクライアントコンピュータから前記ネットワークを介して最初に要求があったときに、少なくとも階層化ユニキャストのベース層を備えるベース品質バージョンのプログラムを、前記ネットワークを介してクライアントに提供するプロセス動作であって、前記ベース品質バージョンのプログラムは、最下位レベルの層がベース層で、次に高いレベルの各層が、階層中の先行する層からレンダリングできる前記プログラムの品質をエンハンスするためのエンハンス情報を追加している点で、階層的に関係した層を有する階層化されたユニキャストの層データを含み、前記ネットワークを介したベース品質バージョンのプログラムのサーバへの要求は、前記ネットワークの利用可能な帯域幅を超過せずに前記サーバから前記クライアントに送信できる限り、多くの層を、前記ベース層から前記階層中の位置の順に要求することを含むプロセス動作と、
より高品質のプログラムを提供するようにクライアントコンピュータから前記ネットワークを介して次に要求があったときに、
規定料金の支払いを要求するプロセス動作と、
前記規定料金の支払いがあったときに前記ネットワークを介して前記クライアントに階層化ユニキャストのエンハンス層の少なくとも１つを提供するプロセス動作とを行うことを備えることを特徴とする方法。
【請求項２７】
前記規定料金の支払いを要求する前記プロセス動作は、より高品質のバージョンのプログラムを提供するようにクライアントコンピュータから前記ネットワークを介して最初に要求があったときだけ行われ、その後は繰り返されないことを特徴とする請求項２６に記載の方法。
【請求項２８】
クライアントサーバベースのネットワークを介して漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを提供するためにコンピュータで実施される方法であって、サーバコンピュータが、
前記プログラムを提供するようにクライアントコンピュータから前記ネットワークを介して最初に要求があったときに、ベース品質バージョンの前記プログラムを、前記ネットワークを介して前記クライアントコンピュータに提供するプロセス動作であって、前記ベース品質バージョンのプログラムは、最下位レベルの層がベース層で、次に高いレベルの各層が、階層中の先行する層からレンダリングできる前記プログラムの品質をエンハンスするためのエンハンス情報を追加している点で、階層的に関係した層を有する階層化されたユニキャストの層データを含み、前記ネットワークを介したベース品質バージョンのプログラムのサーバへの要求は、前記ネットワークの利用可能な帯域幅を超過せずに前記サーバから前記クライアントコンピュータに送信できる限り、多くの層を、前記ベース層から前記階層中の位置の順に要求することを含むプロセス動作と、
より高品質のプログラムを提供するように前記クライアントコンピュータから前記ネットワークを介して次に要求があったときに、前記階層化ユニキャストのエンハンス層の少なくとも１つを、前記ベース品質バージョンのプログラムのどの層もさらに提供することなく、前記ネットワークを介して前記クライアントコンピュータに提供するプロセス動作とを行うことを含むことを特徴とする方法。
【請求項２９】
ベース品質バージョンのプログラムを提供する前記プロセス動作は、連続的な同サイズの時間的に対応する部分で前記ベース品質バージョンの各層を構成する前記データを提供する動作を備え、これにより、前記プログラムの始めの時間セグメントに関連する層部分が最初に提供され、次いで前記プログラムの次に続く時間セグメントに関連する層部分が提供され、以後同様となることを特徴とする請求項２８に記載の方法。
【請求項３０】
前記プログラムのエンハンス層の少なくとも１つを提供する前記プロセス動作は、連続的な同サイズの時間的に対応する部分で各エンハンス層を構成する前記データを提供する動作を備え、これにより、前記プログラムの始めの時間セグメントに関連する層部分が最初に提供され、次いで前記プログラムの次に続く時間セグメントに関連する層部分が提供され、以後同様となることを特徴とする請求項２８に記載の方法。
【請求項３１】
漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを提供するための、クライアントサーバベースのコンピュータネットワークであって、
少なくとも１つの汎用コンピューティングデバイスを備えたサーバと、
該サーバによって実行可能なプログラムモジュールを備えたコンピュータプログラムとを備え、
前記サーバは、
前記プログラムを提供するようにクライアントコンピュータから前記ネットワークを介して最初に要求があったときに、ベース品質バージョンのプログラムを、前記ネットワークを介してクライアントコンピュータに提供することであって、前記ベース品質バージョンのプログラムは、最下位レベルの層がベース層で、次に高いレベルの各層が、階層中の先行する層からレンダリングできる前記プログラムの品質をエンハンスするためのエンハンス情報を追加している点で、階層的に関係した層を有する階層化されたユニキャストの階層データを含み、前記ネットワークを介したベース品質バージョンのプログラムの前記クライアントコンピュータへの提供は、前記ネットワークの利用可能な帯域幅を超過せずに前記サーバから前記クライアントに送信できる限り、多くの層を、前記ベース層から前記階層中の位置の順に提供することを含むこと、および
より高品質のバージョンの前記プログラムを提供するようにクライアントコンピュータから前記ネットワークを介して次に要求があったときに、前記階層化ユニキャストのエンハンス層の少なくとも１つを、前記ベース品質バージョンのプログラムのどの層もさらに提供することなく、前記ネットワークを介して前記クライアントに提供することを行うようにプログラムモジュールによって指示されることを特徴とするコンピュータネットワーク。
【請求項３２】
クライアントサーバベースのネットワークを介して漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを提供するためのコンピュータ実行可能命令を有するコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令は、
前記プログラムを提供するようにクライアントコンピュータから前記ネットワークを介して最初に要求があったときに、ベース品質バージョンのプログラムを、前記ネットワークを介して前記クライアントコンピュータに提供することであって、前記ベース品質バージョンのプログラムは、最下位レベルの層がベース層で、次に高いレベルの各層が、階層中の先行する層からレンダリングできる前記プログラムの品質をエンハンスするためのエンハンス情報を追加している点で、階層的に関係した層を有する階層化されたユニキャストの階層データを含み、前記ネットワークを介したベース品質バージョンのプログラムの前記クライアントコンピュータへの提供は、前記ネットワークの利用可能な帯域幅を超過せずに前記サーバから前記クライアントコンピュータに送信できる限り、多くの層を、前記ベース層から前記階層中の位置の順に提供することを含むこと、および、
より高品質のプログラムを提供するように前記クライアントコンピュータから前記ネットワークを介して次に要求があったときに、先に提供されたベース品質バージョンの前記プログラムの層と結合させて、前記より高品質のバージョンのプログラムを製造することのできる層である前記階層化ユニキャストのエンハンス層の少なくとも１つを、前記ベース品質バージョンのプログラムのどの層もさらに提供することなく、ネットワークを介して前記クライアントコンピュータに提供することを含むことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はストリーミングメディアレンダリングに関し、より詳細には、クライアントサーバベースのネットワークを介して漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを得るためのシステムおよび方法に関する。
【０００２】
【従来の技術】
オーディオビデオ情報は、ネットワーク接続、特にインターネットを介してサーバからクライアントに送信されるのが一般的である。例えば、インターネット上の多くのニュースおよびスポーツのウェブサイトは、ユーザがアクセスできる短いビデオクリップを含む。これを行う典型的な方法の１つは、ユーザが所望のクリップに関連するデータをダウンロードすることである。これは、ユーザに関連するクライアントコンピュータが、データのあるサーバにデータを要求することによって達成される。次いでサーバは、要求されたデータを、ネットワークを介してクライアントに転送する。一旦すべてのデータがクライアントによって受信されると、クライアントコンピュータは、通常の方式でそれをレンダリングし、ユーザに提示する。しかし、ネットワーク、特にインターネットを介してデータが転送されるとき、サーバとクライアントとの間のチャネルの容量はしばしば２桁または３桁の大きさで大きく変わる可能性がある。これらの容量差が存在するのは、特定のクライアントとの接続に関連するデータ伝送速度が変わる可能性があるからである（例えば電話回線容量、ＬＡＮおよび／またはモデム速度）。この容量の不均一性は、高品質のオーディオおよびビデオが望まれる場合特に問題を引き起こす可能性がある。例えば、高品質の、したがって広帯域幅のバージョンのビデオクリップをインターネット上のウェブサイトからダウンロードすることは、クリップ自体の時間よりもずっと長く待つことを意味する可能性がある。したがって、ユーザはビデオクリップを見るために待たなければならず、しばしばユーザを失望させることになる。さらに、ユーザは、ビデオクリップを閲覧しなければそれが興味あるものか否かわからない場合もあり、したがって、興味もないかもしれないものをダウンロードするために待つのは、二重に興醒めである。
【０００３】
ダウンロードの問題は、リアルタイムユニキャストマルチメディアプレゼンテーションと呼ばれる形のオーディオビデオデータ転送を用いることによって回避することができる。本質的にこの手法は、要求されたビデオプログラムに関連するデータを、ネットワークを介してサーバからクライアントにストリーミングすることを含む。データがクライアントによって受信されるのに伴って、データは、ほぼリアルタイムベースでレンダリングされてユーザに提示される。しかし、このタイプの転送の場合でもまた、ネットワーク、特にインターネットに典型的な前述の帯域幅制限が問題を生む。例えば、インターネットのようなネットワーク上で利用可能な通常の帯域幅では、高品質のカラービデオのストリーミングができない。したがって、サーバが提供することのできる最高品質の送信を受信するのに利用可能な帯域幅を、特定のクライアントが有しない場合がある。
【０００４】
この帯域幅の問題を克服するために、オーディオビデオ情報を階層化手法によって送信することができる。階層化手法では、オーディオビデオ情報が重要な層としてエンコードされる。これらの各層は別々のデータストリームで送信され、データストリームは本質的に一連のパケットである。ベース層は、許容できる最低限の品質のために最小限の情報を含む情報ストリームである。後続の各層は、前の層をエンハンスするものだが、より低い層に含まれるデータを繰り返すことはない。より高い品質を得るためには、クライアントは、所望の品質が得られるより高い層に加えて、より低い層も受信しなければならない。したがって、少なくとも１つのベース層と、追加で１つまたは複数のより上位のエンハンス層（ｅｎｈａｎｃｅｍｅｎｔ  ｌａｙｅｒ）とがある点で、これらの層は階層型である。実際は、ベース層から上にいくつかの階層が積み重なっているものとすることができ、後続の各層は、１つまたは複数のより下位の層のデータに依存し、これらのより下位の層をエンハンスしている。階層化ビデオプログラムの例示的な（ただしおそらく特に現実的というわけではない）一例は、奇数数字ごとのビデオフレームの白黒ビデオからなるベース層、偶数数字ごとのビデオフレームの白黒ビデオからなる第２の層、およびすべてのフレームに関するカラー情報からなる第３の層を含む。第１の層だけを再生すると、２分の１のフレームレート（すなわち多少ぎくしゃくする）の白黒ビデオが得られることになる。第１の層と第２の層を一緒に再生すると、完全なフレームレート（滑らかな動き）の白黒ビデオが得られることになる。この３層をすべて再生すると、完全なフレームレートのカラービデオが得られることになる。
【０００５】
階層化手法では、クライアントは、各層の帯域幅の総計がネットワーク上で利用可能な帯域幅よりも大きくならない限り、望むだけの層を要求することができる。例えば、クライアントが２８．８Ｋｂｐｓモデムでインターネットに接続されている場合は、８Ｋｂｐｓビデオ層１つ、２つ、または３つに申し込むことが可能である。４つ以上のこのような層に申し込む場合は、確実に輻輳が生じて多くのパケットがランダムにドロップされることになり、ビデオ品質が低下する。パケットドロップを観察することにより、サポートできる最大数の層を決定することができる。
【０００６】
【発明が解決しようとする課題】
本発明は、階層化ユニキャスト手法を採用したシステムおよびプロセスを対象とする。これらは両方とも、ユーザが後で興味ないと判断することになるオーディオビデオ（ＡＶ）プログラムをダウンロードすることに伴う遅延および時間浪費をユーザが回避できるようにし、同時に、プログラムがユーザにとって興味あるものである場合には、より高品質のバージョンのプログラムをユーザが得られるようにする。現在、非常に多くの様々な階層化技法が用いられており、これらのどれを本発明と共に用いてもよいことに留意されたい。
【０００７】
【課題を解決するための手段】
本発明による階層化ユニキャスト手法は、一般に次のように達成される。特定のＡＶプログラムを閲覧するためのユーザコマンドに応答して、クライアントは、関連する階層化ＡＶデータのあるサーバに、ネットワークを介してそのデータをクライアントに送信するよう要求する。こうする際に、クライアントはまた、ベース層から連続する層がいくつ送信されるべきかについても指定する。この決定は、クライアントとサーバの間のネットワークリンク上で現在利用可能な帯域幅に基づく。サーバは、クライアントの要求を受信すると、ネットワークを介して要求のデータをクライアントに送信する。クライアントは、サーバからデータを受信し、受信したときレンダリングし、従来の方法によって閲覧者に提示する。クライアントはまた、受信したデータを将来使用するためにキャッシュもする。
【０００８】
レンダリングされてユーザに提示されるデータは通常、非常に基本的なものとなる。これは、インターネットなどに関連する通常の帯域幅制限のため、通常はベース層およびおそらくわずかな下位のエンハンス層だけしか要求することができないからである。プロセス中のこの時点で、ユーザは３つの選択肢を有する。ＡＶプログラムがユーザにとって興味ないものである場合は、ユーザは何もしなくてよく、追加のエンハンス層データは送信されない。あるいは、ユーザは着信データストリームの受信を終了するように指示することができる。あるいは最後に、ユーザは、ＡＶプログラムを検討し、より高品質のバージョンのプログラムを受信したいと思うほど十分に興味を持つことができる。このためにユーザは、エンハンスバージョンのプログラムを提供するようにクライアントに命令することになる。
【０００９】
ユーザがエンハンスバージョンのＡＶプログラムを要求した場合、クライアントは、再度サーバに所望のプログラムに関連するＡＶデータがネットワークを介してクライアントに送信されるように、提供することを要求することになる。しかし今回は、クライアントは、前回の反復で要求されなかった層の最下位の層から連続するエンハンス層を、利用可能な帯域幅で可能な限り多く要求する。これに応答して、サーバは、要求されたデータを前述の方式と同じようにして送信する。クライアントは、要求したデータを受信すると、使用されている階層化手法のタイプに適用可能な標準的方法を用いて、そのデータを先にストア済みのより下位の層データと結合させる。次いで、結合させたデータを使用してプログラムをレンダリングし、ユーザに提示する。レンダリングされたプログラムは、先に閲覧されたプログラムの、より高品質のバージョンを提示することになる。クライアントはまた、この新しいデータを、同じプログラムに関連する以前ストアしたデータと共に、将来使用するためにストアする。
【００１０】
この時点で、ユーザは先に論じたのと同じ３つのオプションを有し、ユーザがどのオプションを選択するかに応じて、プロセスは適切に繰り返される。例えば、ユーザがより一層高品質のＡＶプログラムを提供してほしいと思う場合は、より多くのエンハンスデータ層（サーバから入手可能なものがあるとして）がクライアントから要求され、受信時には前述のように処理される。
【００１１】
前述の階層化ユニキャストシステムおよびプロセスは、層データストリーム全体に適用することができ、したがって、単一のクライアント要求により、要求された層のデータストリーム全体がサーバから送信されるようにすることができることに留意されたい。しかし、必ずしもそうである必要はない。利用可能な帯域幅は、要求された層を送信するのにかかる時間にわたって大きく変化する場合がある。このことに鑑みて、前述のシステムおよびプロセスを、層データストリーム全体でなく、ＡＶプログラムのセグメントを表す何らかのストリーム部分に適用することもできる。言い換えれば、クライアントは、一組の層を全体として要求するのではなく、現在利用可能な帯域幅に基づいて、関係する各層の同サイズであり対応する部分だけを要求する。層部分は、ＡＶプログラムの同じ時間セグメントに関係する点で対応する。残りの前述の動作は、代わりに層部分のデータに対して行われることを除いては同じである。この結果、各層ストリームの一部に関係するデータが受信され、レンダリングされ、キャッシュされる。次いでクライアントは、次に続くＡＶプログラム層部分を要求し、プログラム全体をユーザに対して再生するまで受信、レンダリング、およびキャッシュのプロセスを繰り返す。層部分の各組が要求されるのに伴い、関係する層の数が、そのときに利用可能なネットワーク帯域幅に基づいて再評価されることに留意されたい。したがって、各要求により、同数の、またはより少ない、またはより多くの層の各部分が要求されることになる場合がある。ユーザがより高品質のバージョンのＡＶプログラムを再生するように指示した場合、クライアントは、考慮中のプログラムのセグメントに関連する、先に受信した層部分からみて次に高いレベルを表す層から、ネットワーク上の現在の帯域幅条件で可能な最大数のエンハンス層に関連する層部分をプログラムのセグメントごとに要求することを除いては、前述のプロセスを繰り返す。
【００１２】
前述の階層化ユニキャストプレゼンテーションシステムおよびプロセスは、事前フェッチオプション（ｐｒｅ−ｆｅｔｃｈｉｎｇ  ｏｐｔｉｏｎ）をさらに含むことができる。このオプションは、より低品質の前バージョンのプログラムに関連する層がすべて要求された後で、より高品質のバージョンのプログラムを提供するのに必要な追加のエンハンス層がクライアントによって自動的に要求、受信、およびキャッシュされるようにするか否かを、ユーザが選択することを可能にする。これは、ユーザがより高品質のバージョンを要求する前に行われることに留意されたい。事前フェッチオプションにより、より高品質のバージョンのＡＶプログラムをレンダリングするのに必要な層データがクライアントのメモリ中に手近にあることになり、それにより、クライアントはより迅速にユーザにプログラムを提供することができる。
【００１３】
この階層化ユニキャスト方式をＡＶプログラムとの関連で述べたが、本発明はオーディオのみまたはビデオのみのプログラムにも等しく適用可能であることに留意されたい。
【００１４】
さらに、本発明による階層化ユニキャストシステムおよびプロセスは有利にも、インターネットのウェブサイトが、ウェブサイトを訪れた申込み者に高品質バージョンのＡＶプログラムを販売するために採用することができることにも留意されたい。「ベース品質」バージョンのプログラムは、サイト訪問者に無料またはわずかな料金で提供することができる。訪問者は、ベースバージョンのＡＶプログラムが十分に興味あるものであれば、品質の改善したバージョンのプログラムの閲覧を有料で申し込むことができる。これは、前述のように、訪問者に関連するクライアントコンピュータにエンハンス層を送信することで達成される。次いでクライアントコンピュータは、エンハンス層データを、先にキャッシュした層データと結合させて、訪問者が閲覧するためのより高品質のバージョンのプログラムを製造する。次いで訪問者は、ウェブサイトに関連するサーバがより上位の利用可能なエンハンス層を有する限り、より一層高品質のバージョンのプログラムを閲覧する要求を繰り返すこともできる。
【００１５】
以上に述べた利点に加え、本発明のその他の利点も、後続の詳細な説明を添付の図面と共に読めば明らかになるであろう。
【００１６】
本発明の具体的な特徴、態様、および利点は、後続の説明、頭記の特許請求の範囲、および添付の図面に関してよりよく理解されるであろう。
【００１７】
【発明の実施の形態】
本発明の好ましい実施形態に関する以下の記述では、その一部をなす添付の図面を参照するが、これらの図面には、本発明を実施できる具体的な実施形態が例として示されている。本発明の範囲を逸脱することなく、他の実施形態を利用することもでき、かつ構造的な変更を加えることもできることを理解されたい。
【００１８】
本発明の好ましい実施形態に関する記述を提供する前に、本発明を実施できる適したコンピューティング環境について簡単かつ一般的に記述する。図１に、本発明を実施できる適したコンピューティングシステム環境１００の例を示す。コンピューティングシステム環境１００は、適したコンピューティング環境の一例でしかなく、本発明の使用または機能の範囲に関していかなる限定も示すものではない。コンピューティング環境１００はまた、例示的な動作環境１００中に示すコンポーネントのいずれか１つまたはそれらの組合せに関してどのような依存も要件も有しないと解釈すべきである。
【００１９】
本発明は、その他の多くの汎用または専用コンピューティングシステム環境または構成でも動作する。本発明と共に使用するのに適した、周知のコンピューティングシステム、環境、および／または構成の例としては、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な消費者用の電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが挙げられるが、これらに限定されない。
【００２０】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで述べることができる。一般にプログラムモジュールは、特定のタスクを実施するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明はまた、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含めたローカルとリモートの両方のコンピュータ記憶媒体中に位置することができる。
【００２１】
図１を参照すると、本発明を実施するための例示的なシステムが、コンピュータ１１０の形をとる汎用コンピューティングデバイスを含んでいる。コンピュータ１１０のコンポーネントとしては、プロセッシングユニット１２０と、システムメモリ１３０と、システムメモリを含めた様々なシステムコンポーネントをプロセッシングユニット１２０に結合するシステムバス１２１とを挙げることができるが、これらに限定しない。システムバス１２１は、様々なバスアーキテクチャのいずれかを用いたメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めた、いくつかのタイプのバス構造のいずれでもよい。限定ではなく例として、このようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（ＥｎｈａｎｃｅｄＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとも呼ばれるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれる。
【００２２】
コンピュータ１１０は通常、様々なコンピュータ可読媒体を備える。コンピュータ可読媒体は、コンピュータ１１０がアクセスできる任意の利用可能な媒体とすることができ、揮発性媒体と不揮発性媒体、取外し可能媒体と取外し不可能媒体の両方が含まれる。限定ではなく例として、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体を備えることができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを含めた情報をストアするための任意の方法または技術で実装された、揮発性媒体と不揮発性媒体、取外し可能媒体と取外し不可能媒体の両方が含まれる。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）またはその他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶デバイス、あるいは所望の情報をストアするのに使用できコンピュータ１１０がアクセスできるその他の媒体が含まれるが、これらに限定しない。通信媒体は通常、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波またはその他のトランスポートメカニズムなどの変調されたデータ信号中に組み入れており、任意の情報送達媒体が含まれる。「変調されたデータ信号」という言葉は、情報が信号にエンコードされるようにその１つまたは複数の特性が設定または変更された信号を意味する。限定ではなく例として、通信媒体には、ワイヤードネットワークまたは直接ワイヤード接続などのワイヤード媒体と、音響、ＦＲ、赤外線などのワイヤレス媒体およびその他のワイヤレス媒体が含まれる。以上のいずれかの組合せもまた、コンピュータ可読媒体の範囲内に含めるべきである。
【００２３】
システムメモリ１３０は、読出し専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリの形をとるコンピュータ記憶媒体を含む。ＲＯＭ１３１には通常、起動時などにコンピュータ１１０内の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）１３３がストアされている。ＲＡＭ１３２は通常、プロセッシングユニット１２０からすぐにアクセス可能な、かつ／またはプロセッシングユニット１２０が現在作用している、データおよび／またはプログラムモジュールを含む。限定ではなく例として、図１には、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７が示されている。
【００２４】
コンピュータ１１０はまた、その他の取外し可能／取外し不可能、かつ揮発性／不揮発性のコンピュータ記憶媒体を備えることもできる。例示にすぎないが、図１には、取外し不可能かつ不揮発性の磁気媒体に対して読取りまたは書込みを行うハードディスクドライブ１４１と、取外し可能かつ不揮発性の磁気ディスク１５２に対して読取りまたは書込みを行う磁気ディスクドライブ１５１と、ＣＤ−ＲＯＭやその他の光学媒体など取外し可能かつ不揮発性の光学ディスク１５６に対して読取りまたは書込みを行う光学ディスクドライブ１５５が示されている。この例示的な動作環境で使用できるその他の取外し可能／取外し不可能、かつ揮発性／不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、ディジタル汎用ディスク、ディジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどが含まれるが、これらに限定しない。ハードディスクドライブ１４１は通常、インタフェース１４０などの取外し不可能メモリインタフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光学ディスクドライブ１５５は通常、インタフェース１５０などの取外し可能メモリインタフェースによってシステムバス１２１に接続される。
【００２５】
以上に論じ、図１に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶域をコンピュータ１１０に提供する。例えば図１では、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７をストアしているものとして示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じものとすることも異なるものとすることもできることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７は、これらが少なくとも異なるコピーであることを示すために、ここでは異なる番号を付けてある。ユーザは、キーボード１６２や、マウス、トラックボール、タッチパッドと一般に呼ばれるポインティングデバイス１６１など、入力デバイスを介してコンピュータ１１０にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナなどを含めることができる。これらおよびその他の入力デバイスは、システムバス１２１に結合されたユーザ入力インタフェース１６０を介してプロセッシングユニット１２０に接続されることが多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など他のインタフェースおよびバス構造によって接続することもできる。モニタ１９１または他のタイプの表示デバイスもまた、ビデオインタフェース１９０などのインタフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータはまた、スピーカ１９７やプリンタ１９６など他の周辺出力デバイスを備えることもでき、これらは出力周辺インタフェース１９５を介して接続することができる。本発明で特に重要なのが、パーソナルコンピュータ１１０に対する入力デバイスとして、一連の画像１９３を取り込むことのできるカメラ１９２（ディジタル／電子スチルカメラまたはビデオカメラや、フィルム／写真スキャナなど）も含めることができることである。さらに、１台のカメラしか示されていないが、パーソナルコンピュータ１１０に対する入力デバイスとして複数のカメラを含めることもできる。１つまたは複数のカメラからの画像１９３は、適切なカメラインタフェース１９４を介してコンピュータ１１０に入力される。このインタフェース１９４は、システムバス１２１に接続されており、したがって、ＲＡＭ１３２に、またはコンピュータ１１０に関連する他のデータ記憶デバイスの１つに、画像がルーティングされてストアされるようにする。しかし画像データは、カメラ１９２を使用する必要なしに、前述のいずれかのコンピュータ可読媒体からコンピュータ１１０に入力することもできることに留意されたい。
【００２６】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を用いてネットワーク化された環境で動作することもできる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードとすることができ、図１にはメモリ記憶デバイス１８１だけしか示されていないものの、通常は、コンピュータ１１０に関して上述した要素の多くまたはすべてを備える。図１に示す論理接続はローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットでよくみられるものである。
【００２７】
ＬＡＮネットワーキング環境で使用されるときは、コンピュータ１１０は、ネットワークインタフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用されるときは、コンピュータ１１０は通常、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２またはその他の手段を備える。モデム１７２は、内蔵でも外付けでもよく、ユーザ入力インタフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク化された環境では、コンピュータ１１０に関して示すプログラムモジュールまたはその一部をリモートメモリ記憶デバイスにストアすることもできる。限定ではなく例として、図１には、リモートアプリケーションプログラム１８５がリモート装置１８１上にあるものとして示してある。図示のネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を用いることもできることを理解されたい。
【００２８】
例示的な動作環境について論じたところで、この説明セクションの残りの部分を、本発明を実施するプログラムモジュールについての記述に充てる。一般に、本発明によるシステムおよびプロセスは、クライアントがクライアントサーバベースのネットワークを介して漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを得ることに関係する。これは、階層化ユニキャスト方式と呼ぶ方式を用いて達成される。具体的には、図２および図３の流れ図を参照すると、ユーザは最初に、特定のＡＶプログラムを得るようにクライアントに指示する（プロセス動作２００）。これは、任意の従来型クライアントユーザインタフェースを介して達成される。ネットワークがインターネットである場合は、ユーザは通常、このようなプログラムを提供するウェブサイトから特定のプログラムを選択することになる。次いでクライアントは、所望のプログラムに関連する階層化ＡＶデータのあるサーバに、ネットワークを介してそのデータをクライアントに送信するよう要求する（プロセス動作２０２）。こうする際に、クライアントはまた、ベース層から連続する層がいくつ送信されるべきかについても指定する。この決定は、クライアントとサーバの間のネットワークリンク上で現在利用可能な帯域幅に基づく。当然、適切な数の連続する層を指定するために、クライアントは、ＡＶデータのセグメント化に採用されている階層化方式の詳細について、および所望の層をサーバに要求するときにそれらをどのように識別するかについて知らなければならない。標準化された階層化および識別の方式が採用されたネットワークの場合は、クライアントはこの情報をすでに知っていることもある。しかし、多くの様々な階層化および識別方式が採用される可能性のある今日のインターネットなどのネットワークでは、クライアントが選択されたプログラムに関連するＡＶデータを要求するプロセス動作は、最初に、プログラムと共に採用された階層化および識別の方式に関する詳細をサーバから得ることを含むことが想定される。
【００２９】
サーバは、クライアントの要求を受信すると、ネットワークを介して要求のデータをクライアントに送信する（プロセス動作２０４）。伝送レートは、データをクライアントからユーザにリアルタイムで提示するためにレンダリングする際に遅延がないように、再生レートと少なくとも同じであるべきである。クライアントは、サーバからデータを受信し、好ましくはそれを「再生バッファ（playout buffer）」を通して供給し、従来の方法で閲覧者に対してレンダリングする（プロセス動作２０６）。再生バッファは、追加のデータを蓄積するために、再生の始まりをいくらかのわずかな時間だけ遅延させる。このバッファリングにより、クライアントは、再生レートが確実に一定であるようにすることができる。このようなバッファリングがなければ、レンダリングされたプログラムは、データがネットワークを介して受信される際のレートの微変動のせいで「ジッタのある」ものになる可能性がある。クライアントはまた、後で短く説明するように、受信したデータを将来使用するためにキャッシュする（プロセス動作２０８）。
【００３０】
プロセスのこの時点で、ユーザは３つの選択肢を有する。ＡＶプログラムがユーザにとって興味ないものである場合は、ユーザは何もしなくてよく、追加のエンハンス層データは送信されない。このために、プロセス動作２１０で、先に選択したＡＶプログラムに関係するコマンドをユーザがさらに入力するか否かが判定される。ユーザからの入力が受信された場合は、選択したＡＶプログラムに関連する着信データストリームの受信を終了するようにユーザが指示したか否かが確認される（プロセス動作２１２）。言い換えれば、ユーザがＡＶプログラムを途中で中止したか否かである。ユーザがそうした場合、クライアントは、着信データストリームを終了する（プロセス動作２１４）。ユーザがプログラムを途中で中止する動作は、ユーザがエンハンスバージョンのプログラムの閲覧に興味がないことを意味するとは限らないので、この動作によってプロセスが終了することにはならない場合があることに留意されたい。例えばユーザは、低品質ベースバージョンのプログラムを閲覧するのはもう十分であり、低品質バージョンの閲覧を継続するのではなく今すぐにエンハンスバージョンを見たいと思う場合もある。したがって次に、選択したＡＶプログラムのエンハンスバージョンをユーザが要求するか否かが判定される（プロセス動作２１６）。
【００３１】
先に触れたシナリオの第３番目は、ユーザがＡＶプログラム全体を検討し、より高品質のバージョンのプログラムを受信したいと思うほど十分に興味を持つ場合である。この場合、プロセス動作２１２で、ユーザは着信データストリームの受信を終了するように指示したのではなく、エンハンスバージョンのプログラムを要求したと判定される（プロセス動作２１８）。
【００３２】
ユーザがエンハンスバージョンのＡＶプログラムを要求しない場合は、動作は何も行われず、クライアントは、クライアントによって採用されるネットワークソフトウェアのキャッシング規則によって指示される時間量にわたってキャッシュ済みデータを保持することになる。しかし、ユーザがエンハンスバージョンのＡＶプログラムを提供するように指示した場合は（先にプログラムが完全に閲覧されたか、ストリーム中にカットオフされたかにかかわらず）、クライアントは、ネットワークを介して所望のプログラムに関連するエンハンスＡＶデータを提供するように要求することになる。ただしこれは、入手可能な追加のエンハンス層をサーバが有することが前提である。したがって、エンハンスデータを要求する前に、まずプロセス動作２２０で、選択されたＡＶプログラムに関連するエンハンス層であって先に要求していないエンハンス層で、サーバから入手可能なものがあるか否かが判定される。クライアントは、選択されたＡＶプログラムと共に採用されている階層化および識別の方式に関して先に受信した情報に基づいて、このことをすでに知っていることが好ましい。追加の層が入手可能でない場合は、そのことがクライアントからユーザに通知され（プロセス動作２２２）、プロセスは終了する。追加の層が入手可能な場合は、クライアントは、所望のプログラムに関連するエンハンスＡＶデータを提供するようにサーバに要求する（プロセス動作２２４）。具体的には、クライアントは、前の反復で要求されなかった層の最下位の層から連続するエンハンス層を、利用可能な帯域幅で可能な限り多く要求する。これに応答して、サーバは、要求されたデータを前述の方式と同じようにして送信する（プロセス動作２２６）。
【００３３】
要求したデータを受信したとき、クライアントは、新しいデータをストアし（プロセス動作２２８）、使用されている層データのタイプに適用可能な標準的方法を用いて、このデータを先にストア済みのより下位の層データと結合させる（プロセス動作２３０）。次いで、結合させたデータを使用してプログラムをレンダリングし、ユーザに提示する（プロセス動作２３２）。レンダリングされたプログラムは、先に閲覧されたプログラムの、より高品質のバージョンを提示することになる。
【００３４】
この時点で、ＡＶプログラムがもはや興味ないとユーザが判断した場合、ユーザはこの場合も何もしなくてよく、追加のエンハンス層データは送信されない。あるいはユーザは、選択したプログラムのより一層エンハンスされたバージョンを要求することもできる。あるいはユーザは、プログラムを完全に閲覧し終える前に着信データストリームを終了することもできる。したがって、ユーザは前と同じ３つのオプションを有する。このために、プロセス動作２３４で、先に選択したＡＶプログラムに関係するコマンドをユーザがさらに入力するか否かが判定される。ユーザコマンドが入力された場合は、前述のプロセス（動作２１２から２３４）が繰り返される。このようにして、ユーザがエンハンスバージョンを要求できなくなるまで、またはサーバから入手可能な残りのエンハンス層がなくなるまで、選択されたＡＶプログラムのさらに高品質なバージョンを得るプロセスを継続することができる。
【００３５】
前述のプロセスの単純な例として、帯域幅が限られているために一度に１つの層しかストリーミングすることのできない例は、次のようなものである。最初の再生中に、ベース層がストリーミングされ、再生され、ストアされる。ユーザによって指示された第２の再生中に、層２がストリーミングされ、ストアされ、ベース層と共に再生される。ユーザによって指示された第３の再生中に、層３がストリーミングされ、ストアされ、ベース層および層２と共に再生される。これは、サーバから入手可能なエンハンス層が残っており、かつユーザがより高品質のバージョンのＡＶプログラムを閲覧することに関心がある限り、継続することができる。このプロセスは、一度に複数の層をストリーミングできる場合でも同様である。例えば、帯域幅の限度内で一度に２つの層をストリーミングできる場合、プロセスは次のようになる。最初の再生中に、層１（すなわちベース層）および層２がストリーミングされ、再生され、ストアされる。ユーザによって指示された第２の再生中に、層３および４がストリーミングされ、ストアされ、層１および２と共に再生される。ユーザによって指示された第３の再生中に、層５および６がストリーミングされ、ストアされ、層１、２、３および４と共に再生される。このプロセスもやはり、サーバから入手可能なエンハンス層が残っており、かつユーザがエンハンスバージョンのプログラムを閲覧することに関心がある限り、継続することができる。
【００３６】
この階層化ユニキャストシステムおよびプロセスをＡＶプログラムとの関連で以上に述べたが、本発明はオーディオのみまたはビデオのみのプログラムにも等しく適用可能であることに留意されたい。
【００３７】
前述の階層化ユニキャストシステムおよびプロセスは、層データストリーム全体に適用することができ、したがって、単一のクライアント要求により、要求された層のデータストリーム全体がサーバから送信されるようにすることができる。しかし、必ずしもそうである必要はない。利用可能な帯域幅は、要求された層を送信するのにかかる時間にわたって大きく変化する場合がある。このことに鑑みて、この階層化ユニキャストシステムおよびプロセスを、層データストリーム全体でなく、ＡＶプログラムの時間セグメントを表す何らかのストリーム部分に適用することもできる。言い換えれば、クライアントは、一組の層を全体として要求するのではなく、現在利用可能な帯域幅に基づいて、関係する各層の同サイズであり対応する部分だけを要求する。層部分は、ＡＶプログラムの同じ時間セグメントに関係する点で対応する。この区分的な実施形態にも、図２および図３に関して先に述べたプロセスが適用され、プロセス動作２０２は、選択されたプログラムに関連する階層化ＡＶデータをクライアントが区分的に要求することを含む。具体的には、現在利用可能なネットワーク帯域幅からみて受信できるとクライアントによって決定された、プログラムの連続するいくつかの層の、対応部分の第１の組が要求される。次いでクライアントは、ＡＶプログラム層の、次に続く部分を要求する。以後同様に、ユーザがプログラム全体を再生したと決定されるまで、またはユーザがプログラムを途中で中止するまで行われる。層部分の各組が要求されるのに伴い、関係する層の数が、そのときに利用可能なネットワーク帯域幅に基づいて再評価されることに留意されたい。したがって、各要求により、同数の、またはより少ない、またはより多くの層の各部分が要求されることになる場合がある。このシステムおよびプロセスの区分的実施形態には、いくつかの利点がある。例えば、ＡＶプログラムの送信中にネットワーク上で利用可能な帯域幅は変化する場合があり、この変化は、より上位のエンハンス層に関連する追加データを加えることによりユーザへの提示の品質を向上させることができるか、あるいは反対に、ある層に関連するデータをドロップして送信データの過剰な損失を防止しなければならないくらい帯域幅が減少する可能性があるか、というほどである。正味の効果は、レンダリングされてクライアントからユーザに提供されたＡＶプログラムが、送信されたデータ部分に関連する時間にわたって入手可能な最良のものであることである。当然、この区分的実施形態は、よりクライアントプロセッサ集中的である。というのは、クライアントは、層データの一部に対する各要求に含まれる層の数を常に把握し、それにより、より高品質のバージョンのプログラムがユーザから要求された場合にＡＶプログラムの特定部分に対するエンハンスデータを要求するときに、より上位の層のどれから開始するか知っているようにしなければならないからである。加えて、クライアントは、層データをプログラムごとに１度要求するのではなく、繰り返し要求しなければならない。
【００３８】
区分的実施形態では、ユーザがより高品質のバージョンのＡＶプログラムを再生するように指示した場合、図３のプロセス動作２２０は、クライアントが、ネットワーク上の現在の帯域幅条件で可能な最大数のエンハンス層に関連する層部分を、プログラムの同じ時間セグメントに関連する、先に受信した層部分からみて次に高いレベルを表す層からプログラムのセグメントごとに要求することを含む。
【００３９】
区分的実施形態に関連する繰返し要求に関係する各層中のデータ部分のサイズは、所望のどのようなサイズでもよいことに留意されたい。ただしこのサイズは、この部分の持続時間が、ネットワーク帯域幅が一定のままであることが予想される時間量とほぼ同じになるように選択するのが好ましい。このサイジングは、各部分が、要求に関係する各層のデータストリームの単一パケットだけになるように、必要なら極端に行うこともできる。
【００４０】
前述の階層化ユニキャストプレゼンテーションシステムおよびプロセスはさらに、事前フェッチオプションも含むことができる。このオプションは、先のより低品質バージョンのプログラムに関連する層が完全に受信された後で、より高品質のバージョンのプログラムを提供するのに必要な追加のエンハンス層がクライアントによって自動的に要求、受信、およびキャッシュされるようにするか否かを、ユーザが選択することを可能にする。これは、ユーザがより高品質のバージョンを要求する前に行われることに留意されたい。選択されたプログラムのより高品質のバージョンを製造するのに必要なＡＶデータをクライアントが自動的に得るようにユーザが要求する場合、このプロセスは、選択されたプログラムの第１の層が受信され、レンダリングされ、キャッシュされる時点まで（すなわちプロセス動作２０８まで）は、図２に概説したのと本質的に同じである。その後、プロセスは図４および図５に概説するように変化する。具体的には、要求したＡＶデータをクライアントが受信、レンダリング、およびキャッシュしている間に、着信データストリームの受信を終了するようにユーザが指示したか否かが判定される（プロセス動作３００）。指示しなかった場合、クライアントは、ユーザによって閲覧されているより低品質なバージョンを製造するためのデータをすべて要求した後で、選択されたプログラムのエンハンスバージョンを製造するのに必要なＡＶデータを要求する（プロセス動作３０２）。こうするためにユーザからの指示は必要ない。エンハンスデータは前述のように要求されることになり、利用可能なネットワーク帯域幅で可能な限り多くの層が、先に要求されたデータの最上位の層よりも１つ上のレベルから要求される。クライアントは、プログラム全体に関連するエンハンス層が最新の反復に対してすべて要求された後で停止することもできる。しかしクライアントは、より一層高いレベルのエンハンス層の組を要求し、利用可能なすべての層データを要求し終えるまで以後同様にすることが好ましい。しかし、ユーザがプログラムを途中で中止した場合は、クライアントは着信データストリームを終了する（プロセス動作３０４）。先に示したように、この時点では、ユーザがプログラムを途中で中止する行為が、エンハンスバージョンのプログラムの閲覧に興味がないことを意味するものであったのか、あるいは低品質バージョンの閲覧を継続するのではなくエンハンスバージョンをすぐに見たいと思っていることを意味するものであったのかわからない。したがって、ユーザが着信プログラムを途中で中止した場合、クライアントは、前述のように、選択されたプログラムのエンハンスバージョンを製造するのに必要なＡＶデータの要求を開始する（プロセス動作３０６）。当然、前のバージョンのプログラムが途中で中止されたので、要求手順の最初の反復では、プログラムの以前受信した部分に関連するエンハンスデータしか得られない。プログラムの残りの部分のために、より基礎的な層が要求される。前と同様、サーバは要求されたデータを送信し（プロセス動作３０８）、クライアントは着信データを受信してキャッシュする（プロセス動作３１０）。次いで、選択されたプログラムのより高品質のバージョンを提供するようにユーザが要求したか否かが判定される（プロセス動作３１２）。このような要求が出された場合、クライアントは、キャッシュしたＡＶデータのすべての層を結合させて、選択されたプログラムのエンハンスバージョンを製造する（プロセス動作３１４）。層が区分的に要求される場合は、この最後の動作は、ＡＶプログラムの連続するセグメントそれぞれの、対応する層部分すべてを結合することを含む。結合したデータを使用して、プログラムがレンダリングされ、ユーザに提示される（プロセス動作３１６）。事前フェッチオプションの場合のエンハンスプログラムは、図２および図３で概説したプロセスの場合に生み出されるものよりも高品質になる場合があることに留意されたい。これは、ユーザがエンハンスバージョンのプログラムを要求する前に、エンハンス層の要求が複数回にわたって反復され、データが受信されおよびキャッシュされた可能性があるからである。
【００４１】
ユーザが、選択したＡＶプログラムのエンハンスバージョンの閲覧を選択したとき、クライアントは、そのプログラムに対して入手可能な層をすべて要求するタスクを完了していない場合もある。したがって次に、プロセス動作３１８で、サーバから入手可能な層が残っているか否かが判定される。残っている場合は、プロセス動作３００から３１８が繰り返される。しかし、入手可能なデータがすべて要求された場合は、プロセスは終了する。
【００４２】
事前フェッチオプションは、興味を引くいくつかの利点を有する。第１に、事前フェッチにより、より高品質のバージョンのＡＶプログラムをレンダリングするのに必要な層データがクライアントのメモリ中に手近にあることになり、したがって、クライアントはより迅速にユーザにプログラムを提供することができる。加えて、先に示したように、クライアントは、選択されたプログラムに関連する層データを本質的に継続的に要求およびキャッシュすることができる。したがって、選択されたプログラムのエンハンスバージョンをユーザが要求したときにレンダリングするためにエンハンス層データを準備するのを複数回にわたり反復することが可能である。この結果、一度に１組のエンハンス層でプログラムを要求およびレンダリングすることによって提供できるよりも高品質のバージョンのプログラムを提供することができる。
【００４３】
事前フェッチオプションの変形もまた有利であり、これは、関連するプログラムの提示を終了するようにユーザが命令したときであっても、着信ＡＶデータストリームを終了するのではなく、ＡＶ層データの要求（必要なら）、受信、およびキャッシュを継続することを含む。このようにすれば、ユーザが後でより高品質のバージョンのＡＶプログラムを提供するように指示した場合に、終了済みバージョンのプログラムに関連する層データ部分しかないという前述の問題が回避される。このことは、ユーザに提示されるより高品質のバージョンのプログラムが全体にわたり概して一貫した品質を有することになるので、有利である。前述の手順を用いなければ、クライアントは、追加のエンハンス層ではなく、終了されたバージョンのプログラムに関連するより低いレベルの層を要求しなければならないので、より高品質のプログラムの後半部分が品質レベルにおいて顕著な低下を示すことになる。
【００４４】
前述のようなニュースやスポーツのウェブサイトなど、インターネット上の多くのウェブサイトが、クライアントコンピュータにストリーミングできるＡＶプログラムを提供している。本発明による階層化ユニキャストシステムおよびプロセスは有利にも、このようなサイトが、ウェブサイトを訪れた申込み者に高品質バージョンのＡＶプログラムを販売するために採用することができる。具体的には、「ベース品質」バージョンのプログラムは、サイト訪問者に無料またはわずかな料金で提供することができる。このベース品質バージョンのプログラムは、サイト訪問者に関連するクライアントコンピュータによって最初に要求されレンダリングされるバージョンとすることができ、これは、プログラムに関連するベース層と、利用可能な帯域幅が許容する限り多くのエンハンス層を含むものとすることができる。しかし、ベース品質バージョンのＡＶプログラムは、クライアントが最初により多くの層を要求したとしても、ベース層と、ウェブサイトに関連するサーバによって指定されるおそらく少数のエンハンス層とに限定することもできる。サイト訪問者に最初に提供される層の数を制限する目的は、好奇心を刺激するのにただ十分なだけのバージョンのＡＶプログラムを訪問者が閲覧できるようにして、改善したバージョンを購入するように訪問者を誘発するためである。ベースバージョンのＡＶプログラムが十分興味あるものであれば、訪問者は、品質の改善したバージョンのプログラムの閲覧を有料で申し込むことができる。これは、前述のように、訪問者に関連するクライアントコンピュータにエンハンス層を送信することで達成される。次いでクライアントコンピュータは、エンハンス層データを先にキャッシュした層データと結合させて、訪問者が閲覧するためのより高品質のバージョンのプログラムを製造する。次いで訪問者は、ウェブサイトに関連するサーバがより上位の利用可能なエンハンス層を有する限り、より一層高品質のバージョンのプログラムを閲覧する要求を繰り返すこともできる。
【００４５】
前述のプロセスの例として、インターネット上の、ホッケーのビデオハイライトを提供するスポーツウェブサイトをユーザが訪れると仮定する。訪問者は、サイト上にリストされたハイライトの１つを「クリック」し、それを無料で「ベース」品質レベルで見ることができる。この品質レベルでは、訪問者は何が起きているかを大体見ることはできるかもしれないが、パックさえ見分けられるほど十分詳しく見ることはできない。このハイライトが訪問者にとって興味ないものであれば、それ以上の要求は出されず、あるいは訪問者は再生の完了前に停止するかもしれない。しかし、このハイライトが興味あるものであれば、訪問者は有料でより高品質なバージョンに申し込むように勧められる。支払い規定は、現在商業インターネットウェブサイト上で用いられているような任意の従来方式によって扱うことができる。訪問者は、今度はパックを含めてより改善した詳細を見ることができる。３回再生すれば、より多くのビデオフレームが導入され、再生はよりスムーズになるであろう。
【００４６】
別の例として、多くのウェブサイトが、オーディオサンプルまたは歌を含んでいる。これらのサイトは、品質が低めのバージョンのオーディオプログラムへのアクセスを無料で提供することができる。この場合、訪問者がより高品質のバージョンのプログラムに興味があれば、追加の品質エンハンスオーディオデータ層が転送されることにより、料金の支払いが必要となる。
【００４７】
より高品質なバージョンのプログラムに対する支払いに関しては、訪問者が「向上」要求を出す回数に対して単一料金を課すこともでき、あるいは要求ごとに課金することもできる。
【００４８】
【発明の効果】
以上説明したように、本発明によれば、漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを得ることができる。
【図面の簡単な説明】
【図１】本発明を実施するための例示的なシステムを構成する汎用コンピューティングデバイスを示す図である。
【図２】本発明による、クライアントサーバベースのネットワークを介して漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを得るためのプロセス全体を図示するフローチャートである。
【図３】本発明による、クライアントサーバベースのネットワークを介して漸進的により高品質のバージョンのオーディオおよび／またはビデオプログラムを得るためのプロセス全体を図示するフローチャートである。
【図４】本発明による、事前フェッチオプションを実施するように修正された図２のプロセス全体の一部を図示するフローチャートである。
【図５】本発明による、事前フェッチオプションを実施するように修正された図２のプロセス全体の一部を図示するフローチャートである。
【符号の説明】
１００  適したコンピューティングシステム環境
１１０  コンピュータ
１２０  プロセッシングユニット
１２１  システムバス
１３０  システムメモリ
１３１  ＲＯＭ
１３２  ＲＡＭ
１３３  ＢＩＯＳ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  その他のプログラムモジュール
１３７  プログラムデータ
１４０  取外し不可能不揮発性メモリインタフェース
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  その他のプログラムモジュール
１４７  プログラムデータ
１５０  取外し可能不揮発性メモリインタフェース
１５１  磁気ディスクドライブ
１５２  磁気ディスク
１５５  光学ディスクドライブ
１５６  光学ディスク
１６０  ユーザ入力インタフェース
１６１  マウス
１６２  キーボード
１７０  ネットワークインタフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  ワイドエリアネットワーク
１８０  リモートコンピュータ
１８１  メモリ記憶デバイス
１８５  リモートアプリケーションプログラム
１９０  ビデオインタフェース
１９１  モニタ
１９２  カメラ
１９３  画像
１９４  カメラインタフェース
１９５  出力周辺インタフェース
１９６  プリンタ
１９７  スピーカ
【図１】
0004818562.tif 000002
【図２】
0004818562.tif 000003
【図３】
0004818562.tif 000004
【図４】
0004818562.tif 000005
【図５】
0004818562.tif 000006