本発明の好ましい実施形態について、例として説明する。
図1は、第1のユーザ端末102に関連付けられた第1のユーザ104と、第2のユーザ端末108に関連付けられた第2のユーザ110とを含むリアルタイム通信システム100を示している。他の実施形態では、通信システム100は、任意の数のユーザ及び関連ユーザ端末を含んでもよい。ユーザ端末102及びユーザ端末108は、通信システム100において、ネットワーク106を介して通信することができ、それにより、ユーザ104及びユーザ110は、ネットワーク106を介して、互いに通信することが可能となる。好ましい実施形態において、通信システム100は、パケットベースのP2P通信システムであるが、非P2Pシステム、VoIPシステム、又はIMシステム等の他のタイプの通信システムが使用されてもよい。ネットワーク106は、例えば、インタネット、又は(PSTN又は携帯電話ネットワークといった)電話網等の別のタイプのネットワークとすることができる。ユーザ端末102及びユーザ端末108の各々は、例えば、携帯電話機、タブレット、ラップトップ、パーソナル・コンピュータ(「PC」)(例えば、Windows(登録商標)、Mac OS(登録商標)、及びLinux(登録商標)PCを含む)、ゲーミング・デバイス、テレビジョン、携帯情報端末(「PDA」)、又は、ネットワーク106に接続することができる他の組み込みデバイスとすることができる。ユーザ端末102は、ユーザ端末102のユーザ104から情報を受信し、ユーザ104に情報を出力するよう構成されている。ユーザ端末102は、ディスプレイ及びスピーカ等の出力デバイスを備える。ユーザ端末102はまた、キーパッド、タッチ・スクリーン、オーディオ信号を受信するためのマイクロフォン、及び/又はビデオ信号の画像をキャプチャするためのカメラ等の入力デバイスを備える。ユーザ端末102は、ネットワーク106に接続される。
ユーザ端末102は、通信システム100に関連付けられたソフトウェア・プロバイダにより提供される通信クライアントを実行する。通信クライアントは、ユーザ端末102内のローカル・プロセッサ上で実行されるソフトウェア・プログラムである。通信クライアントは、ユーザ端末102が通信システム100を介してデータを送受信するために、ユーザ端末102において必要とされる処理を実行する。ユーザ端末102において実行される通信クライアントは、(例えば、ユーザ104が通信システムの本物のサブスクライバであることを証明するために、)デジタル証明書を提示することにより、通信システムを介して通信するために認証され得る。
ユーザ端末108は、ユーザ端末102に対応し得る。ユーザ端末108は、ユーザ端末102において実行される通信クライアントと対応する通信クライアントをローカル・プロセッサ上で実行する。ユーザ端末108における通信クライアントは、ユーザ端末102における通信クライアントが、ユーザ104がネットワーク106を介して通信することを可能にするために必要とされる処理を実行するのと同様に、ユーザ110がネットワーク106を介して通信することを可能にするために必要とされる処理を実行する。ユーザ端末102及びユーザ端末108は、リアルタイム通信システム100におけるエンド・ポイントである。図1は、明瞭さのため、2人のユーザ(104及び110)と、2つのユーザ端末(102及び108)としか示していないが、より多くのユーザ及びユーザ端末が通信システム100に含まれてもよく、より多くのユーザが、それぞれのユーザ端末上で実行されるそれぞれの通信クライアントを用いて、通信システム100を介して通信してもよい。
図2は、通信システム100を介して通信するために通信クライアントが実行されるユーザ端末102の詳細な図を示している。ユーザ端末102は、中央処理装置(「CPU」)又は「処理モジュール」202を備える。CPU202には、スクリーン等のディスプレイ204、スピーカ211、データを記憶するためのメモリ212、並びに、キーパッド206、カメラ208、及びマイクロフォン210等の入力デバイスが接続される。ディスプレイ204、キーパッド206、カメラ208、マイクロフォン210、スピーカ211、及びメモリ212は、図2に示されるように、ユーザ端末102に一体化され得る。代替のユーザ端末では、ディスプレイ204、キーパッド206、カメラ208、マイクロフォン210、スピーカ211、及びメモリ212のうちの1以上が、ユーザ端末102に一体化されず、それぞれのインタフェースを介してCPU202に接続され得る。そのようなインタフェースの一例がUSBインタフェースである。CPU202は、ネットワーク106と通信するためのモデム等のネットワーク・インタフェース224に接続される。ネットワーク106に対するユーザ端末102の接続が無線接続である場合、ネットワーク・インタフェース224は、信号を無線によりネットワーク106に送信し信号を無線によりネットワーク106から受信するためのアンテナを含み得る。ネットワーク・インタフェース224は、図2に示されるように、ユーザ端末102に一体化され得る。代替のユーザ端末では、ネットワーク・インタフェース224は、ユーザ端末102に一体化されない。
図2はまた、CPU202上で実行されるオペレーティング・システム(「OS」)214も示している。通信システム100のクライアント・ソフトウェアのソフトウェア・スタック216が、OS214の上で実行される。CPU202上で実行されると、クライアント・ソフトウェアは、以下でより詳細に説明するように、リアルタイム通信アプリケーションを実施する。ソフトウェア・スタックは、クライアント・プロトコル・レイヤ218、クライアント・エンジン・レイヤ220、及びクライアント・ユーザ・インタフェース・レイヤ(「UI」)222を示している。各レイヤは、特定の機能の役割を担う。各レイヤは、通常、他の2つのレイヤと通信するので、それらのレイヤは、図2に示されるように、スタック状に配置されるものとみなされる。オペレーティング・システム214が、コンピュータのハードウェア・リソースを管理して、ネットワーク106に/からネットワーク・インタフェース224を介して送信/受信されるデータを処理する。クライアント・ソフトウェアのクライアント・プロトコル・レイヤ218は、オペレーティング・システム214と通信し、通信システムを介した接続を管理する。より高いレベルの処理を必要とするプロセスが、クライアント・エンジン・レイヤ220に渡される。クライアント・エンジン220は、クライアント・ユーザ・インタフェース・レイヤ222と通信する。クライアント・エンジン220は、クライアントのユーザ・インタフェースを介してユーザ104に情報を提示しユーザ・インタフェースを介してユーザ104から情報を受信するために、クライアント・ユーザ・インタフェース・レイヤ222を制御するよう構成され得る。
ユーザ端末108は、上述したユーザ端末102と同様に実装され、ユーザ端末108は、ユーザ端末102に関して本明細書で説明した要素と対応する要素を有し得る。
図3a〜図3cに示されるフローチャートを参照して、以下で、ユーザ端末102がリアルタイム通信システム100を介したリアルタイム通信イベントにおいてどのようにデータを処理するかについて説明する。以下で説明する例において、ユーザ104は、ユーザ端末108を使用するユーザ110との音声通話又はビデオ通話といったリアルタイム通信イベントと関与するために、ユーザ端末102を使用する。リアルタイム通信イベントにおいて、データ・ストリームが、ユーザ端末102とユーザ端末108との間で、ネットワーク106を介して、一方向に又は双方向に送信され得る。ユーザ端末102は、ユーザ端末108からデータ・ストリームを受信する場合、リアルタイム通信イベントにおける受信機として動作する。ユーザ端末102は、ユーザ端末108にデータ・ストリームを送信する場合、リアルタイム通信イベントにおける送信機として動作する。
図3aは、ユーザ端末102がリアルタイム通信イベントにおける受信機として動作する場合の、ユーザ端末102により取られるステップを簡単に示している。ステップS302において、データ・ストリームが、ユーザ端末108からネットワーク106を介して、ネットワーク・インタフェース224を用いてユーザ端末102において受信される。データ・ストリームは、オーディオ・データ及び/又はビデオ・データ及び/又はリアルタイム通信イベントにおいて使用される他の適切なデータを含み得る。データ・ストリーム内のデータは、ネットワークを介した伝送のための適切なプロトコルに従って、ネットワーク106を介して送信される。例えば、ネットワーク106がインタネットである場合、データ・ストリーム内のデータは、インタネット・プロトコルに従って受信され得る。受信データ・ストリーム内のデータは、ネットワーク106を介した伝送のために、データ・パケットに加工され得る(例えば、符号化されパケット化され得る)。ネットワーク106を介した伝送のためにデータを処理する方法は、当技術分野では知られたものであり、本明細書では詳細に説明しない。
ステップS304において、受信データ・ストリームのデータが、ユーザ端末102からユーザ104に出力される。例えば、受信データ・ストリームからのビデオ・データ(及び/又はテキスト・データ等の他のビジュアル・データ)が、ユーザ端末102のディスプレイ204から出力され得る。受信データ・ストリームからのオーディオ・データが、ユーザ端末102のスピーカ211から出力され得る。データを出力するステップS304は、データを出力する前に、受信データを処理すること(例えば、脱パケット化してデータを復号化すること)を含み得る。データを出力する前の受信データに対して実行される処理は、ネットワーク106を介してデータを送信する前にデータに対して実行される処理に対応するものである。データを出力する前の受信データ・ストリームのデータを処理する方法は、当技術分野では知られたものであり、本明細書では詳細に説明しない。
図3bは、ユーザ端末102がリアルタイム通信イベントにおける送信機として動作する場合の、ユーザ端末102により取られるステップを簡単に示している。ステップS306において、ユーザ端末102は、ユーザ104から、リアルタイム通信イベントにおいてユーザ端末108に送信するための入力を受信する。例えば、ユーザ入力は、マイクロフォン210において受信されるオーディオ信号とすることができる。ユーザ入力は、カメラ208によりキャプチャされる画像信号又はビデオ信号であってもよい。カメラ208によりキャプチャされる画像は、ユーザ104の画像を含んでもよいし、含まなくてもよい。例えば、カメラ208が、ユーザ104の画像を含むビデオ信号のフレームをキャプチャする場合、ビデオ信号は、ビデオ通話においてユーザ端末108に送信することができ、それにより、ユーザ110は、ビデオ通話においてユーザ102の画像を見ることが可能となる。ステップS306において受信されるユーザ入力は、キーパッド206又はディスプレイ204上のタッチ・スクリーンを介して入力されるデータ(例えば、テキスト・データ)等の他のタイプの入力を含んでもよい。
ステップS308において、ユーザ入力が、ユーザ端末102において、リアルタイム通信イベントにおいてネットワーク106を介してユーザ端末108に送信するのに適したフォーマットに加工される。例えば、ネットワーク106がインタネットである場合、ユーザ入力は、上述したように、インタネット・プロトコルに従って、データ・パケットに加工され得る。例えば、ユーザ入力が、ユーザ104のスピーチを含むオーディオ信号である場合、ステップS308は、スピーチ・コーデックを用いスピーチ符号化スキームに従って、オーディオ入力を符号化することを含み得る。同様に、ユーザ入力がビデオ信号である場合、ステップS308は、ビデオ・コーデックを用いビデオ符号化スキームに従って、ビデオ入力を符号化することを含み得る。上述したように、ネットワーク106を介した伝送のためにユーザ入力を処理する方法は、当技術分野では知られたものであり、本明細書ではより詳細に説明しない。
ステップS310において、ステップS308で加工されたデータが、リアルタイム通信イベントにおいて、ユーザ端末102からネットワーク106を介してユーザ端末108に送信される。これは、ネットワーク・インタフェース224を用いてデータをネットワーク106に送信することを含む。
データは、データ・ストリームのためのデータ・レートに応じて処理され送信される。上述したように、データ・ストリームのデータ・レートとレイテンシとの間にはトレード・オフが存在する。
リアルタイム通信イベントが進むと、リアルタイム通信イベントとのユーザ104のインタラクションに基づいて、詳細には、ユーザ端末102において実行されるクライアント・ソフトウェアにより実施されるリアルタイム通信アプリケーションとのユーザ104のインタラクションに基づいて、リアルタイム通信イベントにおいて送信されるデータ・ストリームのデータ・レートを制御するために、図3cに示される方法ステップが実施される。
ステップS312において、リアルタイム通信アプリケーションとのユーザ104のインタラクションが判定される。以下でより詳細に説明するように、ユーザのインタラクションの様々な態様が、ステップS312において判定され得る。
ステップS314において、リアルタイム通信イベントにおける受信データ・ストリームのデータ・レートが、ステップS312で判定されたユーザのインタラクションに基づいて制御される。いくつかの実施形態では、ステップS314において、リアルタイム通信イベントにおける送信データ・ストリームのデータ・レートが、ステップS312で判定されたユーザのインタラクションに基づいて制御されてもよい。
これにより、ユーザが実際に通信イベントとどのようにインタラクトしているかに基づいて、帯域幅とレイテンシとの間の最適なトレード・オフを制御することが可能となる。例えば、ユーザ104の注意が、ビデオ通話において、ユーザ端末108から送信されたビデオ・データに向けられている場合、受信ビデオ・データの品質は、ユーザ104の注意がビデオ・データに向けられていない場合よりも重要である。したがって、ビデオ通話においてユーザ端末102で受信されるビデオ・データのデータ・レートは、ユーザ104の注意がビデオ・データに向けられていない場合よりもユーザ104の注意がビデオ・データに向けられている場合の方が高くなるよう制御される。別の例として、ユーザ104が、通話において、ユーザ110と通信していない場合(例えば、ユーザ104が、マイクロフォン210をミュートにしたか、若しくは、ユーザ104が通話の反対側(far side)にオーディオ・データを送信することを意図しない「リスニング・モード(listening mode)」を開始した場合、又は、ユーザ104が、音声通話において喋らない場合)、ユーザ端末102において受信されるデータ信号のために小さなレイテンシを維持することは、ユーザ104が積極的に通話にインタラクトしてオーディオ・データを通話の反対側に送信する場合ほど重要ではない。したがって、通話においてユーザ端末102で受信されるデータ信号のデータ・レートは、ユーザ104が通話においてユーザ110と通信している場合よりもユーザ104が通話においてユーザ110と通信していない場合の方が高くなるよう制御される。
受信データ・ストリーム及び/又は送信データ・ストリームのデータ・レートを制御するために、ユーザ端末102におけるリアルタイム通信アプリケーションは、データ・レートの目標値を決定するためのデータ・レート制御方法を実施する。目標値は、目標データ・レート自体であってもよいし、ステップS308において目標データ・レートを決定することができる別の値であってもよい。例えば、目標値は、データ・ストリームが超えるべきではない目標キュー・サイズ(target queue size)NQであってよい。受信データ・ストリームのデータ・レートを制御するために、データ・ストリームのデータがリアルタイム通信イベントにおいてユーザ端末102で受信される前に、ユーザ端末102から、データ・ストリームのデータを処理するネットワーク106内のノードに、制御信号が送信され得る。制御信号は、目標データ・レートのインジケーションを含み得る(例えば、インジケーションは、目標データ・レート自体であってもよいし、ノードが目標データ・レートを決定することができる上述した目標キュー・サイズNQであってもよい)。それにより、ノードは、リアルタイム通信イベントにおいて、目標データ・レートでデータ・ストリームを送信することが可能となる。例えば、ノードは、リアルタイム通信イベントの送信機とすることができる、すなわち、本明細書で説明した例におけるユーザ端末108とすることができる。あるいは、ノードは、ネットワーク106内の中間ノードであってよく、データ・ストリームは、ユーザ端末108から中間ノードを介してユーザ端末102に送信される。
送信データ・ストリームのデータ・レートを制御するために、データ・レートの目標値のインジケーションが、ユーザ端末108から受信され得る。目標値は、ステップS308において使用される、ユーザ入力をデータ・ストリームに加工するためのアルゴリズムに提供される。データ・ストリームが目標データ・レートを有するように、目標値がステップS308において使用される。
ユーザ端末102においてクライアント・ソフトウェアにより実施されるリアルタイム通信アプリケーションにより実施されるデータ・レート制御方法は、目標キュー・サイズNQを使用することができる。帯域幅推定方法が、パケット遅延雑音項(packet delay noise term)edを用いて、ネットワーク106を介したリアルタイム通信イベントに対して利用可能な帯域幅を推定するために使用され得る。ここで、データ・レートは、推定した帯域幅に基づいて制御することができる。これらの方法では、NQ又はedが高いほど、チャネル上で使用されるデータ・レートと遅延との間のトレード・オフ(すなわち、帯域幅とレイテンシとの間のトレード・オフ)における最適なデータ・レートとみなされる送信レートが高くなる。
データ・レートと遅延との間のトレード・オフに影響を及ぼし得るユーザの行動パターンは次のとおりである。ユーザ端末102においてクライアント・ソフトウェアにより実施されるリアルタイム通信アプリケーションとのユーザ104のインタラクションに関する例について、以下で説明する。こうした例は、データ・レートと遅延との間のトレード・オフにおけるより高い遅延を犠牲にして、より高い最適なデータ・レートをもたらすべきである。
リアルタイム通信アプリケーションとのユーザのインタラクションを判定するために、ユーザ端末102(詳細には、ユーザ端末102においてクライアント・ソフトウェアにより実施されるリアルタイム通信アプリケーション)は、ユーザ104が、リアルタイム通信イベントにおける伝送のために、リアルタイム通信アプリケーションにデータを入力しているかどうかを判定することができる。例えば、ユーザが、リアルタイム通信イベントにおける伝送のために、リアルタイム通信アプリケーションにデータを入力していない場合、リアルタイム通信イベントにおける受信データ・ストリームのデータ・レートが増大されるように、そのデータ・レートが制御され得る。
ユーザが、リアルタイム通信イベントにおける伝送のために、リアルタイム通信アプリケーションにデータを入力しているかどうかを判定するために、ユーザ端末102におけるリアルタイム通信アプリケーションは、例えば、(i)ユーザ104が、マイクロフォン210をミュートにしたかどうかを判定し、(ii)ユーザ104が、ユーザ端末102におけるリアルタイム通信アプリケーションにより実施されるリスニング・モードをアクティブ化したかどうかを判定し、且つ/又は、(iii)ユーザ104から、オーディオ入力及びビデオ入力のうち少なくとも1つを検出することができる。
ユーザ104がマイクロフォン210をミュートにしたかどうかに関する判定は、多数の異なる方法により実行され得る。例えば、ユーザ104は、リアルタイム通信アプリケーションにおけるインタフェースを用いて、オペレーティング・システム214におけるインタフェースを用いて、又は、マイクロフォン210を備えるオーディオ・デバイス上の(例えば、ユーザ端末102に接続されたヘッドセット上の)ボタン等のコントロールを用いて、マイクロフォン210をミュートにすることができる。ユーザが、リアルタイム通信イベント中にマイクロフォン210をミュートにした場合、これは、ユーザ104が、リアルタイム通信イベントにおいて反対側とインタラクトすることを意図していないことのサインである。
ユーザ104がユーザ端末102においてリスニング・モードをアクティブ化したかどうかを判定するために、リアルタイム通信アプリケーションは、「リスニング・モード」インタフェースを実装することができ、ユーザ104は、「リスニング・モード」インタフェースを介して、ユーザ104が反対側とインタラクトすることを意図していないことを、リアルタイム通信アプリケーションに積極的に通知することができる。
ユーザ104からオーディオ入力及びビデオ入力のうち少なくとも1つを検出するために、リアルタイム通信アプリケーションは、ユーザ104が話をしているかどうか(すなわち、リアルタイム通信イベントにおける伝送のために、オーディオ・データを入力しているかどうか)、又は、動いているかどうか(すなわち、リアルタイム通信イベントにおける伝送のために、ビデオ・データを入力しているかどうか)を判定することができる。これを達成するために、リアルタイム通信アプリケーションは、マイクロフォン210を用いて受信されるオーディオ信号における音声アクティビティをモニタすることができ、且つ/又は、カメラ208を用いて受信されるビデオ信号におけるビデオ・アクティビティをモニタすることができる。マイクロフォン210を用いて受信されるオーディオ信号及びカメラ208を用いて受信されるビデオ信号におけるユーザ入力を検出する方法は、当業者には知られたものであり、本明細書では詳細に説明しない。ユーザ入力が、マイクロフォン210を用いて受信されるオーディオ信号において、又は、カメラ208を用いて受信されるビデオ信号において検出されなかった場合、リアルタイム通信アプリケーションは、ユーザ104がリアルタイム通信イベントにおいて反対側とインタラクトしていないと判定することができる。
ユーザ104が、リアルタイム通信イベントにおいて反対側とインタラクトしていない場合(例えば、ユーザ104が、反対側にデータを送信していない場合)、ユーザ104は、ユーザ104がリアルタイム通信イベントにおいて反対側とインタラクトしている場合(例えば、反対側にデータを送信している場合)と比較して、受信データ・ストリームに関するレイテンシに対してあまり敏感ではない。したがって、ユーザ104が、リアルタイム通信イベントにおいて反対側とインタラクトしていない場合、ユーザ端末102において受信されるデータ・ストリームのデータ・レートは増大され得る。すなわち、ユーザ104がリアルタイム通信イベントにおいて反対側とインタラクトしている場合(例えば、ユーザが反対側にデータを送信している場合)と比較して、ユーザ104がリアルタイム通信イベントにおいて反対側とインタラクトしていない場合(例えば、ユーザが反対側にデータを送信していない場合)において、データ・レート及び遅延の両方が増大されるように、リアルタイム通信イベントにおいてユーザ端末102で受信されるデータ・ストリームに関するデータ・レートと遅延との間のトレード・オフが最適化される。ユーザ104がリアルタイム通信イベントにおいて現在インタラクトしている態様のため、関連する遅延の増大はあまり重大ではない。
データ・レートと遅延との間のトレード・オフに影響を及ぼし得るユーザの行動パターンはさらに次のとおりである。ユーザ端末102においてクライアント・ソフトウェアにより実施されるリアルタイム通信アプリケーションとのユーザ104のインタラクションに関する例について、以下で説明する。こうした例は、データ・レートと遅延との間のトレード・オフにおけるより低い最適なデータ・レート、したがって、より低い遅延をもたらすべきである。
リアルタイム通信アプリケーションとのユーザ104のインタラクションを判定するために、ユーザ端末102(詳細には、ユーザ端末102においてクライアント・ソフトウェアにより実施されるリアルタイム通信アプリケーション)は、受信データ・ストリームに関する遅延が、リアルタイム通信イベントにおける通信の問題を引き起こしているかどうかを判定することができる。例えば、受信データ・ストリームに関する遅延が、リアルタイム通信イベントにおける通信の問題を引き起こしている場合、受信データ・ストリームのデータ・レートが低減され得る。それにより、遅延を低減させることが可能となる。遅延がリアルタイム通信イベントにおける通信の問題を引き起こしているかどうかを判定するために、リアルタイム通信アプリケーションは、リアルタイム通信イベントにおいてダブルトーク状態を検出することができる。通話において、高い通信遅延は、ダブルトーク状態、すなわち、通話のユーザが互いに気付かずに邪魔をする状態をもたらし得る。したがって、ダブルトークが検出された場合、リアルタイム通信イベントにおいて両方向に送信されるデータ・ストリームのデータ・レートが低減され得る。それにより、遅延を低減させ、ダブルトークの発生を低減させることができる。例として、通話のユーザが通話中に互いに邪魔をする頻度が閾値頻度(threshold frequency)を超えた場合、ダブルトーク状態が存在するものと判定され得る。
いくつかの実施形態において、リアルタイム通信イベントの受信端末(例えば、ユーザ端末108からデータ・ストリームを受信する受信機として動作する場合のユーザ端末102)が、受信端末において実施されるリアルタイム通信アプリケーションとの受信ユーザのインタラクションを判定する。判定したインタラクションに基づいて、受信端末は、本明細書で説明した受信データ・ストリームの目標データ・レート(又は、帯域幅)を決定する。目標データ・レートのインジケーションが、データ・ストリームを受信端末に送信する、リアルタイム通信イベントの送信端末(例えば、送信端末は、ユーザ端末102にデータ・ストリームを送信する送信機として動作する場合のユーザ端末108である)に送信される。次いで、送信端末は、目標データ・レートに従って、データ・ストリームを受信端末に送信する。こうした実施形態において、受信端末は、受信端末において実施されるリアルタイム通信アプリケーションとのユーザのインタラクションから、目標データ・レートを決定する。
いくつかの実施形態において、判定したインタラクションのインジケーションが、データ・ストリームを受信端末に送信する、リアルタイム通信イベントの送信端末(例えば、送信端末は、ユーザ端末102にデータ・ストリームを送信する送信機として動作する場合のユーザ端末108である)に送信される。判定したインタラクションに基づいて、送信端末は、本明細書で説明したデータ・ストリームの目標データ・レート(又は、帯域幅)を決定する。次いで、送信端末は、目標データ・レートに従って、データ・ストリームを受信端末に送信する。こうした実施形態において、送信端末は、受信端末において実施されるリアルタイム通信アプリケーションとのユーザのインタラクションから、目標データ・レートを決定する。
したがって、いくつかの実施形態において、送信データ・ストリームのデータ・レートが、受信ユーザ端末において実施されるリアルタイム通信アプリケーションとの受信ユーザのインタラクションに基づいて制御されることが確認できる。リアルタイム通信イベントにおける各方向のデータ・ストリームのデータ・レートが制御され得るように、方法は、リアルタイム通信イベントの各端部において実施され得る。リアルタイム通信イベントは、2以上のエンド・ポイントを含み得る。例えば、システム100の2人のユーザ間の通話は、2つのエンド・ポイントを有するが、システム100の複数のユーザ間の会議通話は、それぞれの複数のエンド・ポイントを有し得る。
代替として、送信ユーザ端末は、送信ユーザ端末において実施されるリアルタイム通信アプリケーションとのユーザのインタラクションに基づいて、送信ユーザ端末がリアルタイム通信イベントにおいて送信するデータ・ストリームのデータ・レートを制御してもよい。例えば、ユーザ端末102が、ユーザ端末102において実施されるリアルタイム通信アプリケーションとのユーザ104のインタラクションに基づいて、ユーザ端末102がユーザ端末108に送信するデータ・ストリームのデータ・レートを制御してもよい。例えば、ユーザ端末102において実施されるリアルタイム通信アプリケーションが、通話におけるダブルトーク状態を検出した場合、通話においてユーザ端末102からユーザ端末108に送信されるデータ・ストリームのデータ・レートが低減され得る。それにより、ダブルトークの発生を低減させるために、送信データ・ストリームにおける遅延を低減させることができる。
リアルタイム通信アプリケーションとのユーザ104のインタラクションを判定するために、ユーザ端末102(詳細には、ユーザ端末102においてクライアント・ソフトウェアにより実施されるリアルタイム通信アプリケーション)は、ユーザの注意が出力したデータに向けられているかどうかを判定することができる。ユーザの注意が出力したデータに向けられていない場合、リアルタイム通信イベントにおける受信データ・ストリームのデータ・レートが低減されるように、そのデータ・レートが制御され得る。
例えば、ユーザ104が、ビデオ通話における伝送のために、ユーザ端末102におけるカメラ208によりキャプチャされた画像内に存在しない場合、ユーザ104は、ビデオ通話のビデオ・データに対して注意を向けていないと判定され得る。これは、ユーザ104が、ユーザ端末102の前におらず、したがって、リアルタイム通信アプリケーションにより出力されたディスプレイ204上のビデオ・データを見ていないことのサインであり得る。それに基づいて、ユーザ104は、受信データ・ストリームのビデオ・データを見ていないと判定され得る。しかしながら、ユーザ104が、オーディオ信号により反対側とまだインタラクトしている可能性が高いので、データ・ストリームの伝送のレイテンシがまだ重要である。したがって、ビデオ品質は、ビデオ通話における遅延よりも関心が低いと判定され、その結果、受信データ・ストリームのデータ・レートが低減され得る。それにより、関連する遅延を低減させることができる。
別の例として、受信データ・ストリームのビデオ・データを出力するリアルタイム通信アプリケーションのユーザ・インタフェースが、ユーザ端末102のディスプレイ204上で、最小化されているか、隠されているか、又は焦点ずれしている場合、ユーザ104は、ビデオ通話のビデオ・データに対して注意を向けていないと判定され得る。こうしたイベントは、ユーザ104が、ビデオ通話においてリアルタイム通信アプリケーションにより出力されたビデオ・データを見ていないことのインジケーションである。しかしながら、ユーザ104が、オーディオ信号により反対側とまだインタラクトしている可能性が高いので、データ・ストリームの伝送のレイテンシがまだ重要である。したがって、ビデオ品質は、ビデオ通話における遅延よりも関心が低いと判定され、その結果、受信データ・ストリームのデータ・レートが低減され得る。それにより、関連する遅延を低減させることができる。
本明細書で説明した方法は、ユーザ端末102においてクライアント・ソフトウェアにより実施されるリアルタイム通信アプリケーションにより実施することができる。このように、クライアント・ソフトウェアは、リアルタイム通信イベントのデータを処理するよう構成されたコンピュータ・プログラム製品であり、コンピュータ・プログラム製品は、非一時的なコンピュータ読み取り可能な媒体上に具現化され、ユーザ端末102のプロセッサ202上で実行されたとき、本明細書で説明した方法の動作を実行するリアルタイム通信アプリケーションを実施するよう構成される。ユーザ端末102は、ユーザ端末102とユーザ端末108との間のリアルタイム通信イベントのエンド・ポイントであり、ユーザ端末102は、ユーザ端末108からユーザ端末102に送信されるデータ・ストリームのための受信機として動作するとともに、ユーザ端末102からユーザ端末108に送信されるデータ・ストリームのための送信機として動作する。対応する方法が、ユーザ端末108において実施され得る。それにより、本明細書で説明した方法に従って、ユーザ端末102とユーザ端末108との間で双方向に送信されるデータ・ストリームのデータ・レートを制御することができる。
本明細書で説明した方法は、リアルタイム通信イベント中に動的に実施することができる。これにより、データ・ストリームのデータ・レートを動的に制御することが可能となる。データ・ストリームのデータ・レートは、ユーザ端末102において実施されるリアルタイム通信アプリケーションとのユーザ104の現在のインタラクションに基づいて、制御することができる。
ユーザ端末102において実施されるリアルタイム通信アプリケーションとのユーザ104のインタラクションは、ユーザ104がリアルタイム通信イベントとどのように関与しているかを説明する。すなわち、リアルタイム通信アプリケーションとのユーザ104のインタラクションは、ユーザがリアルタイム通信アプリケーションとどのように関わっているかを説明する。例えば、リアルタイム通信アプリケーションとのユーザ104のインタラクションは、(i)ユーザ104がリアルタイム通信イベントのデータを受信する態様、及び(ii)ユーザ104がリアルタイム通信イベントにおける伝送のためのデータを入力する態様のうち少なくとも1つを説明することができる。
主題が、構造的特徴及び/又は方法論的動作に特有の言葉で説明されたが、添付の特許請求の範囲において定められる主題は、上述した特定の特徴又は動作に必ずしも限定される必要がないことを理解すべきである。むしろ、上述した特定の特徴及び動作は、請求項を実施するための例示的な形態として開示されたものである。