(57)【要約】  システム、方法、および非一時的コンピュータ可読媒体が、グループビデオ通話における参加者のセットを識別することができ、各参加者が、アップリンク容量とダウンリンク容量とに関連付けられ、参加者のセットが、送出側参加者のセットとサブスクライバ参加者のセットとを含む。送出側参加者のセットのうちの第１の送出側参加者について、第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層が、サブスクライバ参加者のセットのうちの１人または複数のサブスクライバ参加者のダウンリンク容量に基づいて決定される。１人または複数のサブスクライバ参加者の各サブスクライバ参加者が、第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層のうちの１つのビデオストリーム層を受信するように、割り当てられる。【選択図】図１
2021512521.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングシステムによって、グループビデオ通話における参加者のセットを識別することであって、各参加者が、アップリンク容量とダウンリンク容量とに関連付けられ、参加者の前記セットが、送出側参加者のセットとサブスクライバ参加者のセットとを含む、参加者のセットを識別することと、
前記コンピューティングシステムによって、送出側参加者の前記セットのうちの第１の送出側参加者について、サブスクライバ参加者の前記セットのうちの１人または複数のサブスクライバ参加者のダウンリンク容量に基づいて、前記第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することと、
前記１人または複数のサブスクライバ参加者の各サブスクライバ参加者について、前記コンピューティングシステムによって、前記第１の送出側参加者によってアップロードされるべき前記１つまたは複数のビデオストリーム層のうちの１つのビデオストリーム層を受信するように、前記サブスクライバ参加者を割り当てることと
を含む、コンピュータ実装方法。
【請求項２】
前記第１の送出側参加者によってアップロードされるべき前記１つまたは複数のビデオストリーム層が、前記第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量に基づいて決定される、請求項１に記載のコンピュータ実装方法。
【請求項３】
各サブスクライバ参加者が、少なくとも１人の送出側参加者にサブスクライブしている、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記第１の送出側参加者によってアップロードされるべき各ビデオストリーム層が、あるビットレートに関連付けられる、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量と、前記第１の送出側参加者に関連付けられた前記アップリンク容量とに基づいて、前記第１の送出側参加者によってアップロードされるべき各ビデオストリーム層についてのビットレートを決定することをさらに含む、請求項４に記載のコンピュータ実装方法。
【請求項６】
アップリンク容量に基づいて送出側参加者の前記セットをランク付けすることをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項７】
送出側参加者の前記セットのうちの第１の送出側参加者について、前記第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を前記決定することが、送出側参加者の前記セットの各送出側参加者について、前記送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量に基づいて、前記送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することをさらに含む、請求項６に記載のコンピュータ実装方法。
【請求項８】
参加者の前記セットの各送出側参加者について、前記送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を前記決定することが、前記ランク付けに基づく順序で各送出側参加者を反復的に処理することを含む、請求項７に記載のコンピュータ実装方法。
【請求項９】
各送出側参加者を前記反復的に処理することが、複数の反復を含み、各反復が、送出側参加者の前記セットのうちの特定の送出側参加者に関連付けられ、
各反復が、前記反復に関連付けられた前記特定の送出側参加者にサブスクライブしている各サブスクライバ参加者を反復的に処理することを含む、
請求項８に記載のコンピュータ実装方法。
【請求項１０】
前記特定の送出側参加者にサブスクライブしている各サブスクライバ参加者を前記反復的に処理することが、
各サブスクライバ参加者について、前記特定の送出側参加者によってアップロードされるべき新しい層を作成すべきかどうかを決定すること、または前記特定の送出側参加者に関連付けられた既に作成された層に前記サブスクライバ参加者を割り当てること
を含む、請求項９に記載のコンピュータ実装方法。
【請求項１１】
少なくとも１つのプロセッサと、
命令を記憶するメモリと
を備えるシステムであって、前記命令は、前記少なくとも１つのプロセッサによって実行されたとき、前記システムに、
グループビデオ通話における参加者のセットを識別することであって、各参加者が、アップリンク容量とダウンリンク容量とに関連付けられ、参加者の前記セットが、送出側参加者のセットとサブスクライバ参加者のセットとを含む、参加者のセットを識別することと、
送出側参加者の前記セットのうちの第１の送出側参加者について、サブスクライバ参加者の前記セットのうちの１人または複数のサブスクライバ参加者のダウンリンク容量に基づいて、前記第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することと、
前記１人または複数のサブスクライバ参加者の各サブスクライバ参加者について、前記第１の送出側参加者によってアップロードされるべき前記１つまたは複数のビデオストリーム層のうちの１つのビデオストリーム層を受信するように、前記サブスクライバ参加者を割り当てることと
を含む方法を実施させる、システム。
【請求項１２】
前記第１の送出側参加者によってアップロードされるべき前記１つまたは複数のビデオストリーム層が、前記第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量に基づいて決定される、請求項１１に記載のシステム。
【請求項１３】
各サブスクライバ参加者が、少なくとも１人の送出側参加者にサブスクライブしている、請求項１１に記載のシステム。
【請求項１４】
前記第１の送出側参加者によってアップロードされるべき各ビデオストリーム層が、あるビットレートに関連付けられる、請求項１１に記載のシステム。
【請求項１５】
前記命令が、前記少なくとも１つのプロセッサによって実行されたとき、前記システムに、前記第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量と、前記第１の送出側参加者に関連付けられた前記アップリンク容量とに基づいて、前記第１の送出側参加者によってアップロードされるべき各ビデオストリーム層についてのビットレートを決定することをさらに実施させる、請求項１４に記載のシステム。
【請求項１６】
命令を含む非一時的コンピュータ可読記憶媒体であって、前記命令は、コンピューティングシステムの少なくとも１つのプロセッサによって実行されたとき、前記コンピューティングシステムに、
グループビデオ通話における参加者のセットを識別することであって、各参加者が、アップリンク容量とダウンリンク容量とに関連付けられ、参加者の前記セットが、送出側参加者のセットとサブスクライバ参加者のセットとを含む、参加者のセットを識別することと、
送出側参加者の前記セットのうちの第１の送出側参加者について、サブスクライバ参加者の前記セットのうちの１人または複数のサブスクライバ参加者のダウンリンク容量に基づいて、前記第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することと、
前記１人または複数のサブスクライバ参加者の各サブスクライバ参加者について、前記第１の送出側参加者によってアップロードされるべき前記１つまたは複数のビデオストリーム層のうちの１つのビデオストリーム層を受信するように、前記サブスクライバ参加者を割り当てることと
を含む方法を実施させる、非一時的コンピュータ可読記憶媒体。
【請求項１７】
前記第１の送出側参加者によってアップロードされるべき前記１つまたは複数のビデオストリーム層が、前記第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量に基づいて決定される、請求項１６に記載の非一時的コンピュータ可読記憶媒体。
【請求項１８】
各サブスクライバ参加者が、少なくとも１人の送出側参加者にサブスクライブしている、請求項１６に記載の非一時的コンピュータ可読記憶媒体。
【請求項１９】
前記第１の送出側参加者によってアップロードされるべき各ビデオストリーム層が、あるビットレートに関連付けられる、請求項１６に記載の非一時的コンピュータ可読記憶媒体。
【請求項２０】
前記命令が、コンピューティングシステムの少なくとも１つのプロセッサによって実行されたとき、前記コンピューティングシステムに、前記第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量と、前記第１の送出側参加者に関連付けられた前記アップリンク容量とに基づいて、前記第１の送出側参加者によってアップロードされるべき各ビデオストリーム層についてのビットレートを決定することをさらに実施させる、請求項１９に記載の非一時的コンピュータ可読記憶媒体。
【請求項２１】
コンピューティングシステムによって、グループビデオ通話における参加者のセットを識別することであって、各参加者が、アップリンク容量とダウンリンク容量とに関連付けられ、参加者の前記セットが、送出側参加者のセットとサブスクライバ参加者のセットとを含む、参加者のセットを識別することと、
前記コンピューティングシステムによって、送出側参加者の前記セットのうちの第１の送出側参加者について、サブスクライバ参加者の前記セットのうちの１人または複数のサブスクライバ参加者のダウンリンク容量に基づいて、前記第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することと、
前記１人または複数のサブスクライバ参加者の各サブスクライバ参加者について、前記コンピューティングシステムによって、前記第１の送出側参加者によってアップロードされるべき前記１つまたは複数のビデオストリーム層のうちの１つのビデオストリーム層を受信するように、前記サブスクライバ参加者を割り当てることと
を含む、コンピュータ実装方法。
【請求項２２】
前記第１の送出側参加者によってアップロードされるべき前記１つまたは複数のビデオストリーム層が、前記第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量に基づいて決定される、請求項１に記載のコンピュータ実装方法。
【請求項２３】
各サブスクライバ参加者が、少なくとも１人の送出側参加者にサブスクライブしている、請求項２１または２２に記載のコンピュータ実装方法。
【請求項２４】
前記第１の送出側参加者によってアップロードされるべき各ビデオストリーム層が、あるビットレートに関連付けられ、
オプションで、前記第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量と、前記第１の送出側参加者に関連付けられた前記アップリンク容量とに基づいて、前記第１の送出側参加者によってアップロードされるべき各ビデオストリーム層についてのビットレートを決定することをさらに含む、
請求項２１から２３のいずれか一項に記載のコンピュータ実装方法。
【請求項２５】
アップリンク容量に基づいて送出側参加者の前記セットをランク付けすることをさらに含む、請求項２１から２４のいずれか一項に記載のコンピュータ実装方法。
【請求項２６】
送出側参加者の前記セットのうちの第１の送出側参加者について、前記第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を前記決定することが、送出側参加者の前記セットの各送出側参加者について、前記送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量に基づいて、前記送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することをさらに含み、
オプションで、参加者の前記セットの各送出側参加者について、前記送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を前記決定することが、前記ランク付けに基づく順序で各送出側参加者を反復的に処理することを含む、請求項２５に記載のコンピュータ実装方法。
【請求項２７】
各送出側参加者を前記反復的に処理することが、複数の反復を含み、各反復が、送出側参加者の前記セットのうちの特定の送出側参加者に関連付けられ、
各反復が、前記反復に関連付けられた前記特定の送出側参加者にサブスクライブしている各サブスクライバ参加者を反復的に処理することを含み、
オプションで、前記特定の送出側参加者にサブスクライブしている各サブスクライバ参加者を前記反復的に処理することが、
各サブスクライバ参加者について、前記特定の送出側参加者によってアップロードされるべき新しい層を作成すべきかどうかを決定すること、または前記特定の送出側参加者に関連付けられた既に作成された層に前記サブスクライバ参加者を割り当てること
を含む、請求項２６に記載のコンピュータ実装方法。
【請求項２８】
少なくとも１つのプロセッサと、
命令を記憶するメモリと
を備えるシステムであって、前記命令は、前記少なくとも１つのプロセッサによって実行されたとき、前記システムに、
グループビデオ通話における参加者のセットを識別することであって、各参加者が、アップリンク容量とダウンリンク容量とに関連付けられ、参加者の前記セットが、送出側参加者のセットとサブスクライバ参加者のセットとを含む、参加者のセットを識別することと、
送出側参加者の前記セットのうちの第１の送出側参加者について、サブスクライバ参加者の前記セットのうちの１人または複数のサブスクライバ参加者のダウンリンク容量に基づいて、前記第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することと、
前記１人または複数のサブスクライバ参加者の各サブスクライバ参加者について、前記第１の送出側参加者によってアップロードされるべき前記１つまたは複数のビデオストリーム層のうちの１つのビデオストリーム層を受信するように、前記サブスクライバ参加者を割り当てることと
を含む方法を実施させる、システム。
【請求項２９】
前記第１の送出側参加者によってアップロードされるべき前記１つまたは複数のビデオストリーム層が、前記第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量に基づいて決定される、請求項２８に記載のシステム。
【請求項３０】
各サブスクライバ参加者が、少なくとも１人の送出側参加者にサブスクライブしている、請求項２８または２９に記載のシステム。
【請求項３１】
前記第１の送出側参加者によってアップロードされるべき各ビデオストリーム層が、あるビットレートに関連付けられ、
オプションで、前記命令が、前記少なくとも１つのプロセッサによって実行されたとき、前記システムに、前記第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量と、前記第１の送出側参加者に関連付けられた前記アップリンク容量とに基づいて、前記第１の送出側参加者によってアップロードされるべき各ビデオストリーム層についてのビットレートを決定することをさらに実施させる、請求項２８から３０のいずれか一項に記載のシステム。
【請求項３２】
命令を含む非一時的コンピュータ可読記憶媒体であって、前記命令は、コンピューティングシステムの少なくとも１つのプロセッサによって実行されたとき、前記コンピューティングシステムに、
グループビデオ通話における参加者のセットを識別することであって、各参加者が、アップリンク容量とダウンリンク容量とに関連付けられ、参加者の前記セットが、送出側参加者のセットとサブスクライバ参加者のセットとを含む、参加者のセットを識別することと、
送出側参加者の前記セットのうちの第１の送出側参加者について、サブスクライバ参加者の前記セットのうちの１人または複数のサブスクライバ参加者のダウンリンク容量に基づいて、前記第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することと、
前記１人または複数のサブスクライバ参加者の各サブスクライバ参加者について、前記第１の送出側参加者によってアップロードされるべき前記１つまたは複数のビデオストリーム層のうちの１つのビデオストリーム層を受信するように、前記サブスクライバ参加者を割り当てることと
を含む方法を実施させる、非一時的コンピュータ可読記憶媒体。
【請求項３３】
前記第１の送出側参加者によってアップロードされるべき前記１つまたは複数のビデオストリーム層が、前記第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量に基づいて決定される、請求項３２に記載の非一時的コンピュータ可読記憶媒体。
【請求項３４】
各サブスクライバ参加者が、少なくとも１人の送出側参加者にサブスクライブしている、請求項３２または３３に記載の非一時的コンピュータ可読記憶媒体。
【請求項３５】
前記第１の送出側参加者によってアップロードされるべき各ビデオストリーム層が、あるビットレートに関連付けられ、
オプションで、前記命令が、コンピューティングシステムの少なくとも１つのプロセッサによって実行されたとき、前記コンピューティングシステムに、前記第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量と、前記第１の送出側参加者に関連付けられた前記アップリンク容量とに基づいて、前記第１の送出側参加者によってアップロードされるべき各ビデオストリーム層についてのビットレートを決定することをさらに実施させる、
請求項３２から３４のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、デジタル通信の分野に関する。より詳細には、本技術は、グループビデオ通話におけるサイマルキャストストリームを最適化するための技法に関する。
【背景技術】
【０００２】
今日、人々は、しばしば、多種多様な目的でコンピューティングデバイスを利用する。ユーザは、自身のコンピューティングデバイスを使用して、たとえば、他のユーザと通信することができる。そのような通信は、ソーシャルネットワーキングシステムを介してますます普及している。ソーシャルネットワーキングシステム上でのデジタル通信など、デジタル通信は、様々なタイプの通信を伴い得る。いくつかのタイプのデジタル通信は、ユーザが、焦点を当てた交換に関与することを可能にする。たとえば、ユーザは、ソーシャルネットワーキングシステムによってサポートされたメッセージングシステムまたは電子メールシステムの使用を通して、特定の１人または複数のユーザをターゲットにし得る。別の例として、ユーザは、他のユーザとのオーディオ通信またはビデオ通信に入ることができる。
【０００３】
多くの事例では、ビデオ通信は、ユーザが、最も効果的に情報を伝達し、実生活のコミュニケーションをシミュレートすることを可能にすることができるので、ビデオ通信は、ユーザによって好まれ得る。いくつかの事例では、異なるロケーションにいる２人の参加者が、ビデオ通信に関与することができる。また、複数のロケーションにいるユーザのグループが、ビデオ通信を使用してグループの間のコミュニケーションを容易にすることを可能にすることが、望ましいことがある。
【発明の概要】
【０００４】
本開示の様々な実施形態は、グループビデオ通話における参加者のセットを識別するように構成されたシステム、方法、および非一時的コンピュータ可読媒体を含むことができ、各参加者が、アップリンク容量とダウンリンク容量とに関連付けられ、参加者のセットが、送出側参加者（ｓｅｎｄｅｒ  ｐａｒｔｉｃｉｐａｎｔ）のセットとサブスクライバ参加者（ｓｕｂｓｃｒｉｂｅｒ  ｐａｒｔｉｃｉｐａｎｔ）のセットとを含む。送出側参加者のセットのうちの第１の送出側参加者について、第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層が、サブスクライバ参加者のセットのうちの１人または複数のサブスクライバ参加者のダウンリンク容量に基づいて決定される。１人または複数のサブスクライバ参加者の各サブスクライバ参加者が、第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層のうちの１つのビデオストリーム層を受信するように、割り当てられる。
【０００５】
一実施形態では、第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層が、第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量に基づいて決定される。
【０００６】
一実施形態では、各サブスクライバ参加者が、少なくとも１人の送出側参加者にサブスクライブしている。
【０００７】
一実施形態では、第１の送出側参加者によってアップロードされるべき各ビデオストリーム層が、あるビットレートに関連付けられる。
【０００８】
一実施形態では、第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量と、第１の送出側参加者に関連付けられたアップリンク容量とに基づいて、第１の送出側参加者によってアップロードされるべき各ビデオストリームについて、ビットレートが決定される。
【０００９】
一実施形態では、送出側参加者のセットは、アップリンク容量に基づいてランク付けされる。
【００１０】
一実施形態では、送出側参加者のセットのうちの第１の送出側参加者について、第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することが、送出側参加者のセットの各送出側参加者について、送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量に基づいて、送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することをさらに含む。
【００１１】
一実施形態では、参加者のセットの各送出側参加者について、送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することが、ランク付けに基づく順序で各送出側参加者を反復的に処理することを含む。
【００１２】
一実施形態では、各送出側参加者を反復的に処理することは、複数の反復を含み、各反復が、送出側参加者のセットの特定の送出側参加者に関連付けられ、各反復が、反復に関連付けられた特定の送出側参加者にサブスクライブしている各サブスクライバ参加者を反復的に処理することを含む。
【００１３】
一実施形態では、特定の送出側参加者にサブスクライブしている各サブスクライバ参加者を反復的に処理することが、各サブスクライバ参加者について、特定の送出側参加者によってアップロードされるべき新しい層を作成すべきかどうかを決定すること、または特定の送出側参加者に関連付けられた既に作成された層にサブスクライバ参加者を割り当てることを含む。
【００１４】
開示される技術の多くの他の特徴、適用例、実施形態、および／または変形形態が、添付の図面および以下の発明を実施するための形態から明らかになることを諒解されたい。本明細書で説明される構造、システム、非一時的コンピュータ可読媒体、および方法の追加および／または代替の実装形態が、開示される技術の原理から逸脱することなく採用され得る。
【００１５】
本発明による実施形態は、特に、方法、システムおよび記憶媒体を対象とする添付の特許請求の範囲において開示され、１つの請求項カテゴリー、たとえば、方法において述べられた任意の特徴は、別の請求項カテゴリー、たとえば、システムまたはコンピュータプログラム製品においても請求され得る。添付の特許請求の範囲における従属関係または参照は、形式的理由で選定されるにすぎない。ただし、前の請求項への意図的な参照（特に複数の従属関係）から生じる主題も請求され得、その結果、請求項とその特徴との任意の組合せが、開示され、添付の特許請求の範囲で選定された従属関係にかかわらず請求され得る。請求され得る主題は、添付の特許請求の範囲に記載の特徴の組合せだけでなく、特許請求の範囲における特徴の任意の他の組合せをも含み、特許請求の範囲において述べられた各特徴は、特許請求の範囲における任意の他の特徴または他の特徴の組合せと組み合わせられ得る。さらに、本明細書で説明または示される実施形態および特徴のいずれも、別個の請求項において、ならびに／あるいは、本明細書で説明もしくは示される任意の実施形態もしくは特徴との、または添付の特許請求の範囲の特徴のいずれかとの任意の組合せで、請求され得る。
【図面の簡単な説明】
【００１６】
【図１】は、本開示の一実施形態による、グループビデオ通話モジュールを含む例示的なシステムを示す図である。
【図２】本開示の一実施形態による、自動帯域幅割振りに関連付けられた例示的な擬似コードを示す図である。
【図３】本開示の一実施形態による、自動ダウンリンク容量予約に関連付けられた例示的な擬似コードを示す図である。
【図４Ａ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｂ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｃ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｄ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｅ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｆ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｇ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｈ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｉ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｊ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｋ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｌ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｍ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｎ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｏ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｐ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図４Ｑ】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオを示す図である。
【図５】本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的な方法を示す図である。
【図６】本開示の一実施形態による、様々なシナリオにおいて利用され得る例示的なソーシャルネットワーキングシステムを含む例示的なシステムのネットワーク図である。
【図７】本開示の一実施形態による、様々なシナリオにおいて利用され得るコンピュータシステムまたはコンピューティングデバイスの一例を示す図である。
【発明を実施するための形態】
【００１７】
図は、単に例示の目的で、開示される技術の様々な実施形態を示し、図は、同様の要素を識別するために同様の参照番号を使用する。当業者は、以下の説明から、本明細書で説明される開示される技術の原理から逸脱することなく、図に示されている構造および方法の代替実施形態が採用され得ることを容易に認識されよう。
【００１８】
グループビデオ通話におけるサイマルキャストストリームのサイズを最適化すること
上述のように、人々は、しばしば、多種多様な目的でコンピューティングデバイスを利用する。ユーザは、自身のコンピューティングデバイスを使用して、たとえば、他のユーザと通信することができる。そのような通信は、ソーシャルネットワーキングシステムを介してますます普及している。ソーシャルネットワーキングシステム上でのデジタル通信など、デジタル通信は、様々なタイプの通信を伴い得る。いくつかのタイプのデジタル通信は、ユーザが、焦点を当てた交換に関与することを可能にする。たとえば、ユーザは、ソーシャルネットワーキングシステムによってサポートされたメッセージングシステムまたは電子メールシステムの使用を通して、特定の１人または複数のユーザをターゲットにし得る。別の例として、ユーザは、他のユーザとのオーディオ通信またはビデオ通信に入ることができる。
【００１９】
多くの事例では、ビデオ通信は、ユーザが、最も効果的に情報を伝達し、実生活のコミュニケーションをシミュレートすることを可能にすることができるので、ビデオ通信は、ユーザによって好まれ得る。いくつかの事例では、異なるロケーションにいる２人の参加者が、ビデオ通信に関与することができる。また、複数のロケーションにいるユーザのグループが、ビデオ通信を使用してグループの間のコミュニケーションを容易にすることを可能にすることが、望ましいことがある。
【００２０】
コンピュータ技術の領域において特に台頭しつつある従来の手法は、複数のユーザがグループビデオ通話に参加するデジタル通信を含む。概して、グループビデオ通話における１人または複数の参加者からのビデオストリームは、実質的にリアルタイムで他の参加者に送信される。グループビデオ通話における参加者は、様々なレベルのビデオ品質を要求することが可能であり得る。たとえば、参加者は、高品質ストリーム、標準品質ストリーム、または低品質ストリームを要求することができる。しかしながら、参加者が、参加者のネットワーク接続が提供するのに最適であるものよりも高い品質のビデオストリームを要求し得ることが可能である。たとえば、ユーザは、ユーザのネットワーク接続が高品質ビデオストリームを提供するのに最適でない場合でも、高品質ビデオストリームを要求し得る。そのようなシナリオでは、いくつかの従来の手法は、最も低い利用可能なダウンリンク容量をもつ参加者に基づいて、ビデオストリームビットレートを限定することを選択した。たとえば、グループビデオ通話において４人の参加者がいる例示的なシナリオについて考える。４人の参加者のうちの３人が、第４の参加者に高品質ビデオストリームを要求し得る。しかしながら、３人の参加者のうちの第１の参加者は、１００ｋｂｐｓのダウンリンク容量を有し、第２および第３の参加者は、各々、５Ｍｂｐｓのはるかに大きいダウンリンク容量を有する。いくつかの従来の手法の下で、第４の参加者によってアップロードされる高品質ビデオストリームのビットレートおよび／または品質は、１００ｋｂｐｓダウンリンク容量をもつ第１の参加者に適応するために、１００ｋｂｐｓ未満になるように制限され得る。高品質ビデオストリームを要求するすべての３人の参加者が、第１の参加者の低いダウンリンク容量により、限定された高品質ビデオストリームを受信する。これは、グループビデオ通話における他の参加者が、より高い品質のビデオストリームを受信することが可能であり、アップロードするユーザが、より高い品質のビデオストリームをアップロードすることが可能である場合でも、グループビデオ通話における他の参加者は、より低い品質のビデオストリームを受信することを不必要に強制され得るという望ましくない結果につながる。そのような手法は、どのユーザがどのストリームを要求したかに応じて、「高品質」ストリームが「低品質」ストリームよりも低い品質を有するシナリオにつながることさえある。たとえば、上記の例示的なシナリオでは、５Ｍｂｐｓダウンリンク容量を有する第３の参加者が、低品質ビデオストリームを要求した場合、低品質ビデオストリームは、第１の参加者が高品質ビデオストリームを限定しているので、高品質ビデオストリームよりも高い品質のものになることが可能である。
【００２１】
他の従来の手法は、各アップロードする参加者のアップリンク容量を、様々な品質のビデオストリームに対する所定の比に分割した。たとえば、参加者のアップリンク容量は、高品質ストリームのためにアップリンク容量の８０％が使用され、中間品質ストリームのためにアップリンク容量の１５％が予約され、低品質ストリームのためにアップリンク容量の５％が予約されるように、分割され得る。しかしながら、この手法は、グループビデオ通話に参加しているユーザの特定の特性を考慮することができない。したがって、そのような手法は、グループビデオ通話に参加している参加者の特定のグループに基づいて、ユーザエクスペリエンスを最適化することができない。
【００２２】
コンピュータ技術に由来する改善された手法が、コンピュータ技術の領域において特に台頭しつつある従来の手法に関連する上記のおよび他の欠点を克服する。概して、グループビデオ通話に参加している参加者のセットが、識別され得る。たとえば、参加者のセットは、グループビデオ通話を管理するというタスクを与えられた中央サーバによって識別され得る。参加者のセット中の各参加者が、アップリンク容量とダウンリンク容量とに関連付けられ得る。参加者のうちの１人または複数が、グループビデオ通話における他の参加者によって受信および閲覧されるべき１つまたは複数のビデオストリームをアップロードしていることになる、送出側参加者として識別され得る。１人または複数の参加者が、別の参加者によってアップロードされた少なくとも１つのビデオストリームを受信および閲覧していることになる、サブスクライバ参加者として識別され得る。グループビデオ通話における所与の参加者は、単に送出側参加者であるか、単にサブスクライバ参加者であるか、または送出側参加者とサブスクライバ参加者の両方であり得る。参加者のセット中の各送出側参加者は、様々な品質（たとえば、ビットレート）の１つまたは複数のビデオストリーム層をアップロードするように命令され得る。送出側参加者によってアップロードされるべきビデオストリーム層の数および各ビデオストリーム層に関連付けられたビットレートが、送出側参加者のアップリンク容量と、グループビデオ通話における他の参加者のダウンリンク容量とに基づいて決定され得る。この決定は、たとえば、中央サーバによって行われ得る。たとえば、中央サーバは、第１の参加者に、第１の品質（たとえば、第１のビットレート）を有する第１のビデオストリーム層と第２の品質（たとえば、第２のビットレート）を有する第２のビデオストリーム層とをアップロードするように命令し得る。第１および第２のビデオストリーム層と第１および第２のビットレートとは、第１の参加者のアップリンク容量に基づいて、およびグループビデオ通話における他の参加者のダウンリンク容量に基づいて決定され得る。ビデオストリーム層およびビットレートの決定は、各送出側参加者が、その送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を割り当てられるまで、反復的に実施され得る。反復が完了したとき、各送出側参加者は、その送出側参加者がアップロードするのを担当する１つまたは複数のビデオストリーム層に関連付けられ、各サブスクライバ参加者は、そのサブスクライバ参加者が受信することになる、１人または複数の送出側参加者の各々からの１つのビデオストリーム層に関連付けられる。いくつかの実施形態では、グループビデオ通話における各参加者は、中央サーバに通信可能に接続され得る。中央サーバは、１人または複数の送出側参加者からビデオストリーム層を受信することと、１人または複数のサブスクライバ参加者のサブスクリプションに基づいてそれらのサブスクライバ参加者にビデオストリーム層を送信することとを行うように構成され得る。開示される技術に関係するさらなる詳細が、以下で提供される。
【００２３】
図１は、本開示の一実施形態による、グループビデオ通話モジュール１０２を含む例示的なシステム１００を示す。グループビデオ通話モジュール１０２は、グループビデオ通話に参加している参加者のセットを識別するように構成され得る。参加者のセット中の各参加者が、アップリンク容量とダウンリンク容量とに関連付けられ得る。参加者のうちの１人または複数が、送出側参加者として識別され得る。送出側参加者は、グループビデオ通話における他の参加者によって受信および閲覧されるべき１つまたは複数のビデオストリームをアップロードしていることになる参加者である。１人または複数の参加者が、サブスクライバ参加者として識別され得る。サブスクライバ参加者は、別の参加者によってアップロードされた少なくとも１つのビデオストリームを受信および閲覧していることになる参加者である。グループビデオ通話における所与の参加者は、単に送出側参加者であるか、単にサブスクライバ参加者であるか、または送出側参加者とサブスクライバ参加者の両方であり得る。サブスクライバ参加者は、１つまたは複数のサブスクリプションに関連付けられ得る。各サブスクリプションは、サブスクライバ参加者および送出側参加者に関連付けられ得、サブスクリプションは、サブスクライバ参加者が、送出側参加者によってアップロードされた（本明細書では「ビデオストリーム層」とも呼ばれる）ビデオストリームを要求したこと、および／または受信していることになることを示すことができる。各サブスクリプションは、サブスクライバ参加者によって要求されるビデオストリームの品質を示す、品質設定または品質インジケータにも関連付けられ得る。たとえば、サブスクライバ参加者と送出側参加者との間のサブスクリプションは、サブスクライバ参加者が送出側参加者に、高品質ビデオストリーム層を要求したのか、標準品質ビデオストリーム層を要求したのか、低品質ビデオストリーム層を要求したのかを示すことができる。
【００２４】
参加者のセット中の各送出側参加者について、グループビデオ通話モジュール１０２は、送出側参加者のアップリンク容量とグループビデオ通話における他の参加者（たとえば、サブスクライバ参加者）のダウンリンク容量とに基づいて、その送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することができる。特定の送出側参加者によってアップロードされる各ビデオストリーム層は、特定の品質（たとえば、特定のビットレート）を有し、および／または特定の品質に関連付けられ得る。たとえば、参加者のセット中の第１の送出側参加者について、グループビデオ通話モジュール１０２は、第１の送出側参加者のアップリンク容量と、第１の送出側参加者にサブスクライブした各サブスクライバ参加者（たとえば、グループビデオ通話の一部として第１の送出側参加者からビデオストリームを受信することになる、各サブスクライバ参加者）についてのダウンリンク容量を検討することができる。これらのファクタに基づいて、グループビデオ通話モジュール１０２は、第１の送出側参加者（すなわち、第１の送出側参加者に関連付けられたコンピューティングデバイス）に、第１の品質（たとえば、第１のビットレート）を有する第１のビデオストリーム層、第２の品質（たとえば、第２のビットレート）を有する第２のビデオストリーム層などをアップロードするように命令することができる。様々な実施形態では、各送出側参加者がいくつのストリームをアップロードし、どんなビットレートでアップロードすることになるかを決定するとき、追加の考慮事項が考慮に入れられ得る。これらの追加の考慮事項は、たとえば、ＣＰＵ速度、ＧＰＵ処理速度、他のハードウェア性能メトリックまたは能力など、送出側参加者の能力を含むことができる。
【００２５】
グループビデオ通話モジュール１０２は、グループビデオ通話における各送出側参加者を反復的に巡回し、各送出側参加者によってアップロードされるべきビデオストリーム層を決定し、グループビデオ通話におけるあらゆる送出側参加者についてそのような決定が行われるまで、それを行うことができる。様々な実施形態では、グループビデオ通話モジュール１０２による反復処理が完了したとき、各送出側参加者は、その送出側参加者がアップロードするのを担当する１つまたは複数のビデオストリーム層に関連付けられる。さらに、反復処理が完了したとき、各サブスクライバ参加者は、そのサブスクライバ参加者がサブスクライブしている各送出側参加者からの１つのビデオストリーム層に関連付けられる。たとえば、グループビデオ通話において３人の参加者がおり、各参加者は送出側参加者であり、各参加者はまた、あらゆる他の参加者にサブスクライブしている、例示的なシナリオについて考える。各参加者は、各ビデオストリーム層が特定のビットレートを有する、１つまたは複数のビデオストリーム層をアップロードするように命令され得る。第１の参加者は、第２の参加者からの特定のビデオストリーム層と第３の参加者からの特定のビデオストリーム層とを受信するように割り当てられ得、第２の参加者は、第１の参加者からの特定のビデオストリーム層と第３の参加者からの特定のビデオストリーム層とを受信するように割り当てられ得、第３の参加者は、第１の参加者からの特定のビデオストリーム層と第２の参加者からの特定のビデオストリーム層とを受信するように割り当てられ得る。送出側参加者によってアップロードされる特定のビデオストリーム層へのサブスクライバ参加者の割当ては、サブスクライバ参加者のダウンリンク容量と、送出側参加者のアップリンク容量とに基づいて決定され得る。グループビデオ通話モジュール１０２は、グループビデオ通話における各送出側参加者からビデオストリーム層を受信し、特定のビデオストリーム層への特定のサブスクライバ参加者の割当てに基づいて、ビデオストリーム層をグループビデオ通話におけるサブスクライバ参加者に送信するように構成され得る。様々な実施形態では、グループビデオ通話モジュール１０２の１つまたは複数の機能は、中央サーバにおいて実装され得る。グループビデオ通話の参加者は、中央サーバに接続され得、ビデオストリーム層を中央サーバにアップロードし、他の参加者によってアップロードされたビデオストリーム層を中央サーバから受信することができる。本開示の様々な実施形態は、グループビデオ通話を参照しながら様々な概念を説明するが、本開示は、オーディオデータ、ビデオデータ、他の媒体など、データストリームの任意の交換に適用され得ることを理解されたい。
【００２６】
図１の例に示されているように、グループビデオ通話モジュール１０２は、参加者情報モジュール１０４と、帯域幅割振りモジュール１０６と、ビデオ通話モジュール１０８とを含むことができる。いくつかの事例では、例示的なシステム１００は、少なくとも１つのデータストア１１０を含むことができる。この図および本明細書のすべての図に示されている構成要素（たとえば、モジュール、要素など）は例にすぎず、他の実装形態は、追加の構成要素、より少ない構成要素、統合された構成要素、または異なる構成要素を含み得る。いくつかの構成要素は、関連する詳細を不明瞭にしないように示されていないことがある。様々な実施形態では、グループビデオ通話モジュール１０２に関連して説明される機能性のうちの１つまたは複数は、任意の適切な組合せで実装され得る。
【００２７】
いくつかの実施形態では、グループビデオ通話モジュール１０２は、部分的にまたは全体的に、ソフトウェア、ハードウェア、またはそれらの任意の組合せとして実装され得る。概して、本明細書で説明されるモジュールは、ソフトウェア、ハードウェア、またはそれらの任意の組合せに関連付けられ得る。いくつかの実装形態では、モジュールの１つまたは複数の機能、タスク、および／または動作は、ソフトウェアルーチン、ソフトウェアプロセス、ハードウェア、および／またはそれらの任意の組合せによって行われるか、または実施され得る。いくつかの場合には、グループビデオ通話モジュール１０２は、部分的にまたは全体的に、サーバシステムまたはクライアントコンピューティングデバイス上など、１つまたは複数のコンピューティングデバイスまたはシステム上で実行するソフトウェアとして実装され得る。いくつかの事例では、グループビデオ通話モジュール１０２は、部分的にまたは全体的に、図６のソーシャルネットワーキングシステム６３０など、ソーシャルネットワーキングシステム（またはサービス）の内部に実装されるか、あるいはソーシャルネットワーキングシステム（またはサービス）と連携して動作するように構成されるか、またはソーシャルネットワーキングシステム（またはサービス）と統合されるように構成され得る。同様に、いくつかの事例では、グループビデオ通話モジュール１０２は、部分的にまたは全体的に、図６のユーザデバイス６１０など、クライアントコンピューティングデバイスの内部に実装されるか、あるいはクライアントコンピューティングデバイスと連携して動作するように構成されるか、またはクライアントコンピューティングデバイスと統合されるように構成され得る。たとえば、グループビデオ通話モジュール１０２は、ユーザコンピューティングデバイスまたはクライアントコンピューティングシステム上で実行する専用アプリケーション（たとえばアプリ）、プログラム、またはアプレットとして実装されるか、あるいはそれらの内部に実装され得る。グループビデオ通話モジュール１０２の機能性を実施するための命令を組み込むまたは実装するアプリケーションが、開発者によって作成され得る。アプリケーションは、リポジトリに提供されるか、またはリポジトリ中で維持され得る。いくつかの場合には、アプリケーションは、ネットワーク（たとえば、インターネット）を介してリポジトリにアップロードされるか、またはさもなければ送信され得る。たとえば、アプリケーションの開発者に関連付けられた、またはアプリケーションの開発者の制御下のコンピューティングシステム（たとえば、サーバ）が、アプリケーションをリポジトリに提供するかまたは送信することができる。リポジトリは、たとえば、ユーザによるアクセスまたはダウンロードのためのアプリケーションが維持され得る「アプリ」ストアを含むことができる。アプリケーションをダウンロードするためのユーザによるコマンドに応答して、アプリケーションは、リポジトリからユーザに関連付けられたコンピューティングデバイスにネットワークを介して提供されるか、またはさもなければ送信され得る。たとえば、リポジトリの管理者に関連付けられた、またはリポジトリの管理者の制御下のコンピューティングシステム（たとえば、サーバ）は、ユーザがアプリケーションをインストールおよび実行することができるように、アプリケーションがユーザのコンピューティングデバイスに送信されることを引き起こすかまたは可能にすることができる。アプリケーションの開発者とリポジトリの管理者とは、いくつかの場合には異なるエンティティであり得るが、他の場合には同じエンティティであり得る。多くの変形形態が可能であることを理解されたい。
【００２８】
グループビデオ通話モジュール１０２は、例示的なシステム１００に示されているように、少なくとも１つのデータストア１１０と通信および／または動作するように構成され得る。データストア１１０は、様々なタイプのデータを記憶および維持するように構成され得る。いくつかの実装形態では、データストア１１０は、ソーシャルネットワーキングシステム（たとえば、図６のソーシャルネットワーキングシステム６３０）に関連付けられた情報を記憶することができる。ソーシャルネットワーキングシステムに関連付けられた情報は、ユーザに関するデータ、ユーザ識別子、ソーシャルつながり、ソーシャル対話、プロファイル情報、人口統計学的情報、ロケーション、ジオフェンスエリア、地図、場所、イベント、ページ、グループ、投稿、通信、コンテンツ、フィード、アカウント設定、プライバシー設定、ソーシャルグラフ、および様々な他のタイプのデータを含むことができる。いくつかの実施形態では、データストア１１０は、グループビデオ通話モジュール１０２によって利用される情報を記憶することができる。たとえば、データストア１１０は、グループビデオ通話におけるビデオストリーム層作成および／または帯域幅割振りのための様々なルール、グループビデオ通話サブスクリプション情報、ダウンリンク容量およびアップリンク容量などのユーザ特性などを記憶することができる。多くの変形形態または他の可能性があり得ることが、企図される。
【００２９】
参加者情報モジュール１０４は、グループビデオ通話に参加している参加者のセットを識別するように構成され得る。各参加者は、アップリンク容量とダウンリンク容量とに関連付けられ得る。参加者情報モジュール１０４は、各参加者のアップリンク容量とダウンリンク容量とを決定するか、またはこの情報を別のソースから受信するように構成され得る。
【００３０】
参加者情報モジュール１０４はまた、グループビデオ通話における参加者についてのサブスクリプション情報を受信するように構成され得る。説明されたように、グループビデオ通話における１人または複数の参加者が、グループビデオ通話における他の参加者によって受信および閲覧されるべき１つまたは複数のビデオストリーム層をアップロードすることになる、送出側参加者として識別され得る。さらに、グループビデオ通話における１人または複数の参加者が、グループビデオ通話における他の参加者によってアップロードされた１つまたは複数のビデオストリーム層を受信および閲覧することになる、サブスクライバ参加者として識別され得る。所与の参加者は、送出側参加者とサブスクライバ参加者の両方であり得る。たとえば、あらゆる参加者が、ビデオストリームをアップロードし、また、グループビデオ通話におけるすべての他の参加者のビデオストリームを閲覧しているグループビデオ通話では、あらゆる参加者が、送出側参加者とサブスクライバ参加者の両方である。
【００３１】
参加者情報モジュール１０４によって受信されたサブスクリプション情報は、どのサブスクライバ参加者がグループビデオ通話におけるどの送出側参加者にサブスクライブしているかを識別し得る。サブスクリプション情報は、サブスクライバ参加者と送出側参加者との間の各サブスクリプションについての要求される品質レベルを示す品質情報をも含み得る。たとえば、品質情報は、サブスクライバ参加者が特定の送出側参加者に、高品質ビデオストリーム層を要求したのか、標準品質ビデオストリーム層を要求したのか、低品質ビデオストリーム層を要求したのかを示し得る。
【００３２】
いくつかの実施形態では、サブスクリプションについての品質情報が、参加者によって直接入力され得る。たとえば、サブスクライバ参加者は、サブスクライバ参加者が受信することを望む品質レベルを指定する、ユーザインターフェースにおけるオプションを選択し得る。いくつかの実施形態では、サブスクリプションについての品質情報が推論され得る。この実施形態の特定の事例では、品質情報が、サブスクライバ参加者の閲覧モードに基づいて推論され得る。たとえば、サブスクライバ参加者が、第１の送出側参加者をフルスクリーンビューにおいて有し、すべての残りの送出側参加者をサムネイルビューにおいて有する場合、サブスクライバ参加者が、第１の送出側参加者からの高品質ビデオストリームと、残りの送出側参加者からの低品質ビデオストリームとを望むことが推論され得る。別の例では、サブスクライバ参加者が、送出側参加者が実質的に等しいサイズのタイル中で表示されるように、すべての送出側参加者をグリッドビューにおいて有する場合、サブスクライバ参加者が各送出側参加者からの中間品質ビデオストリームを望むことが推論され得る。この実施形態の別の事例では、品質情報が、サブスクライバ参加者および／または送出側参加者によって利用されているグループビデオ通話機器に基づいて推論され得る。グループビデオ通話機器は、ハードウェアおよび／またはソフトウェア構成要素を含むことができる。たとえば、サブスクライバ参加者が、ハイエンド専用ビデオ会議機器を使用してグループビデオ通話に接続されている場合、サブスクライバ参加者が各送出側参加者からの利用可能な最高品質ビデオストリーム層を受信することを望むと仮定され得る。
【００３３】
帯域幅割振りモジュール１０６は、グループビデオ通話における各送出側参加者について、送出側参加者のアップリンク容量とグループビデオ通話における他の参加者のダウンリンク容量とに基づいて、送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定するように構成され得る。帯域幅割振りモジュール１０６はまた、送出側参加者のアップリンク容量とグループビデオ通話における他の参加者のダウンリンク容量とに基づいて、各ビデオストリーム層についての品質レベル（たとえば、ビットレート）を決定するように構成され得る。いくつかの実施形態では、送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層およびそれらのビデオストリーム層のそれぞれのビットレートは、送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量に基づいて決定され得る。
【００３４】
帯域幅割振りモジュール１０６はまた、サブスクライバ参加者がサブスクライブしているグループビデオ通話における各送出側参加者から１つのビデオストリーム層を受信するように、グループビデオ通話における各サブスクライバ参加者を割り当てるように構成され得る。サブスクライバ参加者を送出側参加者によってアップロードされる特定のビデオストリーム層に割り当てることによって、帯域幅割振りモジュール１０６は、サブスクライバ参加者が送出側参加者から特定のビットレートを有するビデオストリーム層を受信することになることを決定する。
【００３５】
様々な実施形態では、帯域幅割振りモジュール１０６は、反復的に、グループビデオ通話における送出側参加者によってアップロードされるべきビデオストリーム層を決定することができる。たとえば、送出側参加者のセットは、ランク付け基準に基づいて順序付けおよび／またはランク付けされ得、帯域幅割振りモジュール１０６は、順序に基づいて連続的に各送出側参加者を処理することができる。各送出側参加者が処理されているとき、帯域幅割振りモジュール１０６は、送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層、ならびに各ビデオストリーム層についての品質レベル（たとえば、ビットレート）を決定することができ、１つまたは複数のビデオストリーム層のうちの特定のビデオストリーム層を受信するように、送出側参加者にサブスクライブしている各サブスクライバ参加者を割り当てることができる。一実施形態では、帯域幅割振りモジュール１０６は、最低アップリンク容量から最高アップリンク容量への昇順で、アップリンク容量に基づいて送出側参加者のセットをランク付けすることができる。帯域幅割振りモジュール１０６は、ランク付けに基づいて送出側参加者を連続的に処理することができる。たとえば、帯域幅割振りモジュール１０６は、最初に、最低アップリンク容量を有する第１の送出側参加者を処理し、第１の送出側参加者のアップリンク容量と第１の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量とに基づいて、第１の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層と１つまたは複数のビデオストリーム層についてのビットレートとを決定することができる。帯域幅割振りモジュール１０６は、次いで、第２の最低アップリンク容量を有する第２の送出側参加者を処理し、第２の送出側参加者のアップリンク容量と第２の送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量とに基づいて、第２の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層とビデオストリーム層についてのビットレートとを決定することができ、すべての送出側参加者が処理されるまで、以下同様である。すべての送出側参加者の反復処理が完了すると、各送出側参加者は、指定されたビットレートを有する１つまたは複数のビデオストリーム層をアップロードするというタスクを与えられ、各サブスクライバ参加者は、サブスクライバ参加者がサブスクライブしている各送出側参加者から１つのビデオストリーム層を受信するように割り当てられる。
【００３６】
様々な実施形態では、帯域幅割振りモジュール１０６によって実施される処理は、周期的におよび／または間欠的に繰り返され得る。たとえば、いくつかの実施形態では、帯域幅割振りモジュール１０６によって実施される処理は、更新された参加者情報（たとえば、参加者の更新されたセット、更新されたアップリンク容量、更新されたダウンリンク容量、更新されたサブスクリプション情報など）に基づいて、規則的な時間間隔において（たとえば、２秒ごとに）周期的に実施され得る。いくつかの実施形態では、帯域幅割振りモジュール１０６によって実施される処理は、特定のイベントに基づいて、繰り返されおよび／または更新され得る。たとえば、帯域幅割振りモジュール１０６によって実施される処理は、参加者がグループビデオ通話に加わるたびにおよび／または参加者がグループビデオ通話を去るたびに、更新された参加者情報に基づいて繰り返され得る。
【００３７】
理解の明快のために、帯域幅割振りモジュール１０６の様々な実施形態に対応する帯域幅割振りモジュール１０６の様々な特徴が、それぞれ、図２および図３に示されている擬似コード２００および３００の例示的なセットに関して、本明細書でより詳細に説明される。
【００３８】
ビデオ通話モジュール１０８は、グループビデオ通話を管理するように構成され得る。説明されたように、グループビデオ通話は、１人または複数の送出側参加者と１人または複数のサブスクライバ参加者とを含む、複数の参加者を有することができる。複数の参加者は、様々な組合せで互いにサブスクライブしていることがある。複数の参加者の少なくともサブセット（すなわち、送出側参加者のセット）について上記で説明されたように、帯域幅割振りモジュール１０６は、各送出側参加者について、送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層と、各ビデオストリーム層についてのビットレートとを決定することができる。ビデオ通話モジュール１０８は、グループビデオ通話における各送出側参加者によってアップロードされたビデオストリーム層を受信するように構成され得る。さらに、複数の参加者の少なくともサブセット（すなわち、サブスクライバ参加者のセット）について上記で説明されたように、帯域幅割振りモジュール１０６は、サブスクライバ参加者がサブスクライブしている各送出側参加者から１つのビデオストリーム層を受信するように、各サブスクライバ参加者を割り当てることができる。ビデオ通話モジュール１０８は、帯域幅割振りモジュール１０６によって決定されたビデオストリーム層割当てに基づいて、適切なビデオストリーム（すなわち、ビデオストリーム層）を各サブスクライバ参加者に送信することができる。
【００３９】
図２は、本開示の一実施形態による、帯域幅割振りモジュール１０６の様々な機能および特徴を実装するための例示的な擬似コード２００を示す。擬似コード２００は、特定の実施形態を実装するが、本開示はこの実施形態に限定されず、多くの変形形態が可能であることを理解されたい。擬似コード２００は、（「エンドポイント」とも呼ばれる）グループビデオ通話における参加者のリスト、各参加者についてのアップリンク容量、および各参加者についてのダウンリンク容量を入力としてとる。その関数は、様々な参加者間の「サブスクリプション」のセットを入力として受信することもできる。
【００４０】
擬似コード２００の行２０４において、参加者のセットが、アップリンク容量に基づいて昇順でソートされる。異なる実施形態では、帯域幅割振りモジュール１０６は、異なる順序付けまたはランク付け基準に基づいて、参加者のセットをランク付けおよび／または順序付けするように構成され得る。
【００４１】
行２０５〜２３７は、送出側参加者として識別される各参加者が、参加者のランク付けされた順序に基づいて連続的に処理される、第１の反復シーケンスを実装する。たとえば、この例示的な実施形態では、第１の反復は、最低アップリンク容量をもつ第１の送出側参加者を処理することになり、第２の反復は、第２の最低アップリンク容量をもつ第２の送出側参加者を処理することになり、すべての送出側参加者が処理されるまで、以下同様である。第１の反復シーケンスの各反復が、その反復において処理されている「送出側参加者」とその送出側参加者にサブスクライブしている１人または複数の「サブスクライバ参加者」とに関して説明される。
【００４２】
行２０６〜２０８において、送出側参加者にサブスクライブしているサブスクライバ参加者のセットが識別される。行２０９〜２１０において、サブスクライバ参加者のセット中の各サブスクライバ参加者について、「予約済みダウンリンク」が決定される。各サブスクライバ参加者の予約済みダウンリンクは、関数「ＣｏｍｐｕｔｅＲｅｓｅｒｖｅｄＤｏｗｎｌｉｎｋ」を使用して決定される。図３を参照しながら、各サブスクライバ参加者についての予約済みダウンリンクの決定がより詳細に説明される。この時点では、サブスクライバ参加者の予約済みダウンリンクが、処理されている送出側参加者のために一時的に予約された、サブスクライバ参加者の利用可能なダウンリンク容量の部分を表すということで、十分である。行２１２において、送出側参加者にサブスクライブしている各サブスクライバ参加者が、予約済みダウンリンクに基づいて昇順でランク付けされる。
【００４３】
行２１３および２１４は、行２１５〜２３１において実装される第２の反復シーケンスにおいて使用されるべき２つの値「ｐｒｅｖ＿ｌａｙｅｒ＿ｋｂｐｓ」および「ｃｕｒｒｅｎｔ＿ｌａｙｅｒ＿ｔｏ＿ｕｐｌｏａｄ」を初期化する。第２の反復シーケンスは、第１の反復シーケンスの現在の反復において処理されている送出側参加者にサブスクライブしている各サブスクライバ参加者を反復的に処理する。この例示的な実施形態では、各サブスクライバ参加者は、最低予約済みダウンリンクから最高予約済みダウンリンクへの順序で連続的に処理される。第２の反復シーケンスは、第２の反復シーケンスの特定の反復において処理されている「現在のサブスクライバ参加者」と、より広い第１の反復シーケンスの特定の反復において処理されている「現在の送出側参加者」とに関して説明される。行２１６において、値「ｃｕｒｒｅｎｔ＿ｌａｙｅｒ＿ｋｂｐｓ」が、現在のサブスクライバ参加者の予約済みダウンリンクと現在の送出側参加者の残りのアップリンク容量とのうちの少ないほうに等しくなるように設定される。値「ｃｕｒｒｅｎｔ＿ｌａｙｅｒ＿ｋｂｐｓ」は、現在の送出側参加者のために作成され、および／または現在の送出側参加者に割り当てられ得る、潜在的な新しいビデオストリーム層のサイズを表す。
【００４４】
行２１７〜２２２において、最小差しきい値に基づいて現在の送出側参加者のために新しいビデオストリーム層を作成するべきか否かに関する決定が行われる。行２１７において、潜在的な新しいビデオストリーム層のサイズ（ｃｕｒｒｅｎｔ＿ｌａｙｅｒ＿ｋｂｐｓ）が、前のビデオストリーム層に関する最小差しきい値を満たすかどうかに関する決定が行われる。この特定の実施形態では、潜在的な新しいビデオストリーム層のサイズが前のビデオストリーム層のサイズ（ｐｒｅｖ＿ｌａｙｅｒ＿ｋｂｐｓ）よりも少なくとも２倍大きいかどうかに関する決定が行われる。少なくとも２倍大きい場合、ｃｕｒｒｅｎｔ＿ｌａｙｅｒ＿ｔｏ＿ｕｐｌｏａｄカウンタが増分され（行２１８）、送出側参加者のために新しいビデオストリーム層が作成される（行２１９）。新しいビデオストリーム層は、ｃｕｒｒｅｎｔ＿ｌａｙｅｒ＿ｋｂｐｓに等しいビットレートを有する（行２１９）。行２２０において、新しいビデオストリーム層のビットレートは、現在の送出側参加者の利用可能なアップリンク容量から減算される。行２３０において、現在のサブスクライバ参加者は、新たに作成されたビデオストリーム層にマッピングされる。言い換えれば、現在のサブスクライバ参加者は、現在の送出側参加者から、ｃｕｒｒｅｎｔ＿ｌａｙｅｒ＿ｋｂｐｓに等しいビットレートを有する新たに作成されたビデオストリーム層を受信することになる。
【００４５】
しかしながら、潜在的な新しいビデオストリーム層（ｃｕｒｒｅｎｔ＿ｌａｙｅｒ＿ｋｂｐｓ）が最小差しきい値を満たさない、すなわち、前のビデオストリーム層よりも少なくとも２倍大きくない場合、新しい層は作成されず、現在のサブスクライバ参加者は、前のビデオストリーム層にマッピングされる（行２２１、２２２、および２３０）。
【００４６】
説明されたように、擬似コード２００の行２１５〜２３０は、現在の送出側参加者にサブスクライブしている各サブスクライバ参加者を反復的に処理する。各サブスクライバ参加者について、ビットレート割振りモジュール１０６は、作成され得る潜在的な新しいビデオストリーム層のサイズ（ｃｕｒｒｅｎｔ＿ｌａｙｅｒ＿ｋｂｐｓ）を決定する。潜在的な新しいビデオストリーム層のサイズが、現在のサブスクライバ参加者の予約済みダウンリンクに等しいか、あるいは、現在の送出側参加者が、現在のサブスクライバ参加者の予約済みダウンリンクを満たすのに十分な残りのアップリンクを有しない場合、潜在的な新しいビデオストリーム層のサイズが、現在の送出側参加者の残りのアップリンク容量に等しい（行２１６）かのいずれかである。ビットレート割振りモジュール１０６は、潜在的な新しいビデオストリーム層が、送出側参加者によってアップロードされるべき新しいビデオストリーム層の作成を正当化するかどうか、または、現在のサブスクライバ参加者が、前に作成されたビデオストリーム層に割り当てられるべきであるかどうかを決定する。この決定は、潜在的な新しいビデオストリーム層のサイズと、前に作成されたビデオストリーム層のビットレートとの間の差しきい値に基づいて行われ得る。例示的な擬似コード２００において、この差しきい値は、潜在的な新しいビデオストリーム層が、前のビデオストリーム層の少なくとも２倍の大きさでなければならないように定義される（行２１７）。他の実施形態では、異なる差しきい値が使用され得る。たとえば、差しきい値は、任意の倍数または絶対差（たとえば、前のビデオストリーム層よりも１００ｋｂｐｓ大きい）、あるいはそれらの組合せであり得る。いくつかの実施形態では、複数の差しきい値が、たとえば、ビットレートの異なる範囲について定義され得る。潜在的な新しいビデオストリーム層が差しきい値を満たす場合、新しいビデオストリーム層は、潜在的な新しいビデオストリーム層のサイズに等しいビットレートで作成され（行２１９）、現在のサブスクライバ参加者は、新しいビデオストリーム層に割り当てられる（行２３０）。また、現在の送出側参加者の残りのアップリンク容量は、新しいビデオストリーム層のサイズを減算することによって更新される（行２２０）。潜在的な新しいビデオストリーム層が差しきい値を満たさない場合、現在のサブスクライバ参加者は、前のビデオストリーム層（すなわち、すでに作成され、現在の送出側参加者に割り当てられたビデオストリーム層）に割り当てられる（行２２１、２２２、および２３０）。
【００４７】
行２１５〜２３１において実装される第２の反復シーケンスが、現在の送出側参加者にサブスクライブしているサブスクライバ参加者のセットの処理を完了すると、現在の送出側参加者は、送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を割り当てられ、各ビデオストリーム層は特定のビットレートを有する。たとえば、送出側参加者が、１００ｋｂｐｓのビットレートを有する第１のビデオストリーム層と、５００ｋｂｐｓのビットレートを有する第２のビデオストリーム層と、１Ｍｂｐｓのビットレートを有する第３のビデオストリーム層とをアップロードすることを割り当てられ得る。さらに、サブスクライバ参加者のセット中の各サブスクライバ参加者が、現在の送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層のうちの特定のビデオストリーム層に割り当てられた。サブスクライバ参加者が特定のビデオストリーム層に割り当てられることは、サブスクライバ参加者が、現在の送出側参加者から特定のビットレートを有するそのビデオストリーム層を受信することになることを示す。たとえば、第１のサブスクライバ参加者は、１００ｋｂｐｓビデオストリーム層を受信するように割り当てられ得、第２のサブスクライバ参加者は、５００ｋｂｐｓビデオストリーム層を受信するように割り当てられ得、第３のサブスクライバ参加者は、１Ｍｂｐｓビデオストリーム層を受信するように割り当てられ得、第４のサブスクライバも、１Ｍｂｐｓビデオストリーム層を受信するように割り当てられ得る。行２３２〜２３６において、各サブスクライバ参加者のダウンリンク容量は、サブスクライバ参加者が割り当てられた、ビデオストリーム層のビットレートを減算することによって更新される。
【００４８】
行２０５〜２３７の第１の反復シーケンスの各反復は、特定の送出側参加者について行２１５〜２３１の第２の反復シーケンスを実行する。行２１５〜２３１の第２の反復シーケンスが各送出側参加者について実行されると、各送出側参加者は、送出側参加者がアップロードすることを担当する様々な品質の１つまたは複数のビデオストリーム層を割り当てられることになり、各サブスクライバ参加者は、サブスクライバ参加者がサブスクライブしている各送出側参加者からの特定のビデオストリーム層に割り当てられることになることがわかる。
【００４９】
行２２３〜２２９は、送出側参加者アップリンク容量使用量の潜在的なさらなる最適化を可能にする、代替実施形態を実装する。行２２４において、現在の送出側参加者の残りのアップリンク容量が、前のビデオストリーム層のビットレートよりも大きいかまたはそれに等しいかどうか、および、現在のサブスクライバ参加者の予約済みダウンリンクが、現在の送出側参加者の残りのアップリンク容量の２倍よりも大きいかまたは２倍に等しいかどうかに関する決定が行われる。これらの条件の両方が満たされる場合、前のビデオストリーム層のビットレートが、現在の送出側参加者の残りのアップリンク容量に加算される（行２２５）。前のビデオストリーム層のビットレートは、前のビデオストリーム層のビットレートが送出側参加者の残りのアップリンク容量の１／４に等しくなるように修正され（行２２６）、送出側参加者の残りのアップリンク容量の３／４に等しいビットレートを有する新しいビデオストリーム層が作成される（行２２７−２２８）。本質的に、これらの追加の行は、前のビデオストリーム層とは十分に別個である第２のビデオストリーム層に適応することが可能であるように、前のビデオストリーム層のビットレートを減少させることが望ましいことがある、固有の状況に対処する。
【００５０】
図３は、本開示の一実施形態による、帯域幅割振りモジュール１０６の様々な機能を実装するための例示的な擬似コード３００を示す。特に、擬似コード３００は、帯域幅割振りモジュール１０６が、特定の送出側参加者に関するサブスクライバ参加者について予約済みダウンリンクを決定することができる、一実施形態を示す。サブスクライバ参加者の予約済みダウンリンクが、サブスクライバ参加者の残りのダウンリンク容量に基づいて決定され得る。説明されたように、サブスクライバ参加者の残りのダウンリンク容量は、図２の擬似コード２００の行２０５〜２３７において実装される反復シーケンスの各反復で更新される。第１の反復では、サブスクライバ参加者の残りのダウンリンク容量は、そのサブスクライバ参加者の総ダウンリンク容量に等しい。しかしながら、第１の反復の後、ダウンリンク容量のいくらかの部分が、第１の送出側参加者からビデオストリーム層を受信するように割り当てられ得、第２の反復の後、ダウンリンク容量のいくらかの部分が、第２の送出側参加者からビデオストリーム層を受信するように割り当てられ得、以下同様であり、その結果、特定のサブスクライバ参加者の残りのダウンリンク容量が、各反復で潜在的に減少することになる。様々な実施形態では、サブスクライバ参加者の予約済みダウンリンクが、決定のときのサブスクライバ参加者の残りのダウンリンク容量に基づいて決定され得る。
【００５１】
サブスクライバ参加者の予約済みダウンリンクはまた、特定の送出側参加者に対するサブスクライバ参加者のサブスクリプションの品質レベルに基づいて決定され得る。説明されたように、特定の送出側参加者に対するサブスクライバ参加者のサブスクリプションは、複数の品質レベルのうちの特定の品質レベルに関連付けられ得る。たとえば、一実施形態では、低品質レベルと、中間品質レベルと、高品質レベルとがあり得る。一実施形態では、サブスクライバ参加者は、サブスクライバ参加者が特定の送出側参加者からどの品質レベルを受信することを望むかを指定し得る。別の実施形態では、品質レベルが、たとえば、サブスクライバ参加者によって選択された閲覧モードに基づいて推論され得る。
【００５２】
例示的な擬似コード３００では、４つの品質レベルが定義される。４の品質レベルは最高品質レベルを示し、１の品質レベルは最低品質レベルを示す。サブスクライバ参加者が、２の品質レベルを有するサブスクリプションを送出側参加者に要求した場合、サブスクライバ参加者の予約済みダウンリンクは、サブスクライバ参加者の残りのダウンリンク容量を、サブスクライバ参加者についてこれから処理されるべき送出側参加者の数で除算したものとして計算される（行３０５−３０６）。たとえば、サブスクライバ参加者が４人の異なる送出側参加者にサブスクライブしている、例示的なシナリオについて考える。図２の行２０５〜２３７の反復シーケンスは、１つの反復を通過し、その結果、送出側参加者のうちの１人が処理され、サブスクライバ参加者は、その送出側参加者について特定のビデオストリーム層に割り当てられたが、残りの３人の送出側参加者はまだ処理されておらず、サブスクライバ参加者は、残りの３人の送出側参加者についてビデオストリーム層にまだ割り当てられていない。サブスクライバ参加者の残りのダウンリンク容量は、サブスクライバ参加者がサブスクライブしたその１つのビデオストリーム層を反映するために更新され、サブスクライバ参加者についてこれから処理されるべき送出側参加者の数は、３に等しい。したがって、この例示的なシナリオでは、サブスクライバ参加者の予約済みダウンリンクは、そのサブスクライバ参加者の残りのダウンリンク容量を３で除算したものに等しくなるであろう。
【００５３】
サブスクライバ参加者が、レベル３またはレベル４サブスクリプション（すなわち、高品質サブスクリプション）を送出側参加者に要求した場合、サブスクライバ参加者の予約済みダウンリンクは、サブスクライバ参加者の残りのダウンリンク容量に高解像度比（ＨＤ＿ＲＡＴＩＯ）を乗算したものとして計算される。例示的な擬似コード３００では、予約済みダウンリンクが、サブスクライバ参加者の残りのダウンリンク容量の１／２として計算されるように、高解像度比は０．５に設定される（行３０４）。様々な実施形態では、ＨＤ＿ＲＡＴＩＯは、異なる値であり得、行３０４に対する注釈において示されているように、たとえば、処理されるべき残された、サブスクライバ参加者の残りのサブスクリプションに基づいて変動することができる。
【００５４】
サブスクライバ参加者が、レベル１サブスクリプションを送出側参加者に要求した場合、サブスクライバ参加者の予約済みダウンリンクは、サブスクライバ参加者の残りのサブスクリプションに依存し得る。例示的な擬似コード３００では、サブスクライバ参加者が、保留中の未処理のより高解像度の層サブスクリプション（たとえば、レベル３またはレベル４）を有する場合、予約済みダウンリンクは、サブスクライバ参加者の残りのダウンリンク容量に１−ＨＤ＿ＲＡＴＩＯを乗算したものとして計算され、その積が、サブスクライバ参加者の残りのサブスクリプション−１で除算される（行３１１〜３１２）。本質的に、この計算は、サブスクライバ参加者の残りのダウンリンク容量と１−ＨＤ＿ＲＡＴＩＯとの積を計算し、次いで、残されたダウンリンク容量を、保留中のサブスクリプションの数−１で除算することによって、サブスクライバ参加者の残りのダウンリンク容量の一部分を、保留中のより高解像度の層サブスクリプションのために予約する。ただし、サブスクライバ参加者が、保留中の未処理の高解像度層サブスクリプションを有しない場合、予約済みダウンリンクは、レベル２／中間解像度サブスクリプションと同様のやり方で計算される（行３１３〜３１５）。
【００５５】
次に、例示的なシナリオに関して追加の明瞭性および説明が与えられる。
【００５６】
図４Ａ〜図４Ｑは、本開示の一実施形態による、グループビデオ通話サイマルキャスト最適化に関連付けられた例示的なシナリオ４００を示す。例示的なシナリオ４００は、様々な実施形態による、グループビデオ通話モジュール１０２の様々な機能を示す。図４Ａに見られ得るように、例示的なシナリオ４００は、グループビデオ通話に参加している４人のユーザ４０２、４０４、４０６、および４０８を含む。各ユーザは、あらゆる他のユーザにサブスクライブしている。さらに、例示的なシナリオ４００は、３つのサブスクリプション品質レベル、すなわち、レベル１または「低解像度」（ＬＤ）、レベル２または「標準解像度」（ＳＤ）、およびレベル３または「高解像度」（ＨＤ）を含む。
【００５７】
ユーザ４０２は、２００ｋｂｐｓのアップリンク容量と２００ｋｂｐｓのダウンリンク容量とを有する。ユーザ４０２は、標準解像度ビデオストリームをあらゆる他のユーザに要求した。これは、たとえば、ユーザ４０２が、他の参加者がすべて、実質的に等しいサイズの個々のウィンドウ中に表示されるように、グループビデオ通話の「グリッドビュー」を選択した事例であり得る。
【００５８】
ユーザ４０４は、３００ｋｂｐｓのアップリンク容量と２００ｋｂｐｓのダウンリンク容量とを有する。ユーザ４０４は、低解像度ビデオストリームをユーザ４０６および４０８に要求し、高解像度ビデオストリームをユーザ４０２に要求した。これは、たとえば、ユーザ４０４が、ユーザ４０２をフルスクリーンビュー上に有し、サムネイルビューにおいて表示されたユーザ４０６および４０８を有する事例であり得る。
【００５９】
ユーザ４０６は、３５０ｋｂｐｓのアップリンク容量と６００ｋｂｐｓのダウンリンク容量とを有する。ユーザ４０２のように、ユーザ４０６は、標準解像度ビデオストリームをあらゆる他のユーザに要求した。
【００６０】
ユーザ４０８は、８００ｋｂｐｓのアップリンク容量と１０００ｋｂｐｓのダウンリンク容量とを有する。ユーザ４０４と同様に、ユーザ４０８は、低解像度ビデオストリームをユーザ４０４および４０６に要求し、高解像度ビデオストリームをユーザ４０２に要求した。
【００６１】
上記で説明されたように、一実施形態では、ユーザ４０２、４０４、４０６、４０８のセットは、アップリンク容量に基づいて昇順でランク付けされ、次いで、ランク付けに基づいて順次反復的に処理され得る。例示的なシナリオ４００では、グループビデオ通話は、擬似コード２００の行２２３〜２２９が含まれる、図２の擬似コード２００において実装される実施形態に従って処理される。
【００６２】
図４Ｂでは、図２の行２０５〜２３７において実装される反復シーケンスの第１の反復が、最低アップリンク容量を有するユーザ４０２を処理する。この第１の反復では、ユーザ４０２は送出側参加者であり、ユーザ４０４、４０６、および４０８は各々、ユーザ４０２にサブスクライブしているサブスクライバ参加者である。例示的なシナリオ４００では、図３の擬似コード３００において実装される実施形態に従って、送出側参加者に関する各サブスクライバ参加者について予約済みダウンリンクが決定される。説明されたように、各サブスクライバ参加者の予約済みダウンリンクは、サブスクライバ参加者の残りのダウンリンク容量と、送出側参加者に対するサブスクライバ参加者のサブスクリプションに関連付けられた品質レベルとに基づいて決定される。ユーザ４０４は、高解像度ビデオストリームを送出側参加者、すなわち、ユーザ４０２に要求した。したがって、ユーザ４０４の予約済みダウンリンクは、ユーザ４０４の残りのダウンリンク容量（２００ｋｂｐｓ）を（擬似コード３００の行３０４におけるＨＤ＿ＲＡＴＩＯにおいて指定されているように）２で除算したものとして計算される。したがって、ユーザ４０４の予約済みダウンリンクは、１００ｋｂｐｓである。ユーザ４０６は、標準解像度ビデオストリームをユーザ４０２に要求した。したがって、ユーザ４０６の予約済みダウンリンクは、ユーザ４０６の残りのダウンリンク容量（６００ｋｂｐｓ）を、処理されるべき残っているユーザ４０６のサブスクリプションの数で除算したものとして計算される。この第１の反復では、送出側参加者のいずれも処理されておらず、これは、ユーザ４０６が依然として、処理されるべき残っている３つのサブスクリプションを有することを意味する。したがって、ユーザ４０６の予約済みダウンリンクは、６００ｋｂｐｓ／３＝２００ｋｂｐｓである。ユーザ４０８は、高解像度ビデオストリームをユーザ４０２に要求した。したがって、ユーザ４０８の予約済みダウンリンクは、ユーザ４０８の残りのダウンリンク容量（１０００ｋｂｐｓ）を２で除算したものとして計算され、これは５００ｋｂｐｓである。
【００６３】
図４Ｃは、サブスクライバ参加者のさらなる処理を示す。図２の行２１２に従って、各サブスクライバ参加者は、予約済みダウンリンクに基づいて昇順でランク付けされる。図２の行２１５〜２３６において実装される第２の反復シーケンスに従って、各サブスクライバ参加者は、ランク付けに基づいて連続的に処理される。第２の反復シーケンスの第１の反復が、最低予約済みダウンリンクを有するユーザ４０４を処理する。ユーザ４０４の予約済みダウンリンクに等しいサイズ（１００ｋｂｐｓ）を有する第１のビデオストリーム層が作成され、ユーザ４０４は、第１のビデオストリーム層に割り当てられる。１００ｋｂｐｓのビットレートを有する第１のビデオストリーム層の作成は、送出側参加者、ユーザ４０２が、１００ｋｂｐｓのビットレートを有する第１のビデオストリーム層をアップロードすることになることを示す。したがって、ユーザ４０２は、第１のビデオストリーム層に専用のユーザ４０２のアップリンク容量の１００ｋｂｐｓと、残っているアップリンク容量の１００ｋｂｐｓとを有する。この第１のビデオストリーム層へのサブスクライバ参加者、ユーザ４０４の割当ては、ユーザ４０４が、ユーザ４０２から１００ｋｂｐｓビデオストリーム層を受信することを示す。前に説明されたように、本開示は、サブスクライバ参加者が送出側参加者「から」ビデオストリーム層を受信することについて述べることがあるが、様々な実施形態では、この受信は、ある参加者から別の参加者へのビデオストリーム層の直接送信でないことを理解されたい。そうではなく、様々な実施形態では、サブスクライバ参加者は、送出側参加者がビデオストリーム層を中央サーバにアップロードすることと、サブスクライバ参加者がそのビデオストリーム層を受信するように割り当てられていることに基づいて、中央サーバがビデオストリーム層をサブスクライバ参加者に送信することとによって、送出側参加者「から」ビデオストリーム層を受信する。
【００６４】
第２の反復シーケンスの第２の反復が、第２の最低予約済みダウンリンクを有するユーザ４０６を処理する。図２の行２１７に基づいて、ユーザ４０２の残りのアップリンク容量（１００ｋｂｐｓ）が、前に作成されたビデオストリーム層（１００ｋｂｐｓ）よりも２倍大きくないので、新しい層を作成するのに不十分な残りのアップリンク容量があるという決定が行われる。しかしながら、図２の行２２４に基づいて、ユーザ４０２の残りのアップリンク容量が、前に作成されたビデオストリーム層よりも大きいかまたはそれに等しく、ユーザ４０６の予約済みダウンリンクが、ユーザ４０２の残りのアップリンクの２倍よりも大きいかまたは２倍に等しいという決定が行われる。そのようなシナリオでは、図２の行２２４〜２２９に基づいて、前のビデオストリーム層のビットレートが、ユーザ４０２の残りのアップリンク容量に加算され（行２２５）、前のビデオストリーム層が、残りのアップリンク容量の１／４に等しいビットレートを有するように再定義され（行２２６）、残りのアップリンク容量の３／４に等しいビットレートをもつ新しいビデオストリーム層が作成される（行２２８）。したがって、第１のビデオストリーム層は、１００ｋｂｐｓではなく５０ｋｂｐｓのビットレートを有するように再定義され、１５０ｋｂｐｓのビットレートを有する新しい第２のビデオストリーム層が作成される。ユーザ４０４は、現在５０ｋｂｐｓビデオストリームである、第１のビデオストリーム層に割り当てられたままであり、ユーザ４０６は、１５０ｋｂｐｓビデオストリームである、新たに作成された第２のビデオストリーム層に割り当てられる。ユーザ４０２は、現在、５０ｋｂｐｓビデオストリーム層と１５０ｋｂｐｓビデオストリーム層とをアップロードするように割り当てられ、これは、ユーザ４０２のアップリンク容量を完全に利用する。
【００６５】
第２の反復シーケンスの第３の反復が、第３の最低予約済みダウンリンクを有するユーザ４０８を処理する。ユーザ４０２が新しいビデオストリーム層を作成するために残っている、不十分なアップリンク容量がある。したがって、ユーザ４０８は、前のビデオストリーム層、すなわち、１５０ｋｂｐｓビデオストリーム層に割り当てられる。
【００６６】
図４Ｄは、図２の行２０５〜２３７の反復シーケンスの第１の反復の結果を要約する。ユーザ４０２は、２つのビデオストリーム層、すなわち、５０ｋｂｐｓのビットレートを有する第１のビデオストリーム層と、１５０ｋｂｐｓのビットレートを有する第２のビデオストリーム層とをアップロードするように割り当てられた。ユーザ４０２のアップリンク容量は、ユーザ４０２がアップロードすることになる２つのビデオストリーム層のビットレートを減算することによって更新され、０ｋｂｐｓの残りのアップリンク容量に結果する。
【００６７】
ユーザ４０４は、ユーザ４０２から第１のビデオストリーム層を受信するように割り当てられ、ユーザ４０６とユーザ４０８は両方とも、ユーザ４０２から第２のビデオストリーム層を受信するように割り当てられる。ユーザ４０４のダウンリンク容量は、５０ｋｂｐｓを減算することによって更新され、ユーザ４０６のダウンリンク容量は、１５０ｋｂｐｓを減算することによって更新され、ユーザ４０８のダウンリンク容量は、１５０ｋｂｐｓを減算することによって更新される。図４Ｅは、図２の行２０５〜２３７の反復シーケンスの第１の反復の後の参加者のステータスを提示する。
【００６８】
図４Ｆは、図２の行２０５〜２３７の反復シーケンスの第２の反復の開始を示す。この第２の反復では、ユーザ４０４が４人のユーザの第２の最低アップリンク容量を有するので、ユーザ４０４は、処理される送出側参加者として選択され、ユーザ４０２、４０６、および４０８は各々、ユーザ４０４にサブスクライブしているサブスクライバ参加者である。もう一度、図３の擬似コード３００において実装される実施形態に従って、送出側参加者に関する各サブスクライバ参加者について予約済みダウンリンクが決定される。ユーザ４０２は、標準解像度ビデオストリームを送出側参加者、すなわち、ユーザ４０４に要求した。したがって、ユーザ４０２の予約済みダウンリンクは、ユーザ４０２の残りのダウンリンク容量（２００ｋｂｐｓ）を、処理されるべき残っているユーザ４０２のサブスクリプションの数で除算したものとして計算される。ユーザ４０２は、依然として、処理されるべき残っている３つのサブスクリプション（ユーザ４０４、４０６、および４０８）を有し、したがって、ユーザ４０２の予約済みダウンリンクは、２００ｋｂｐｓ／３＝６６ｋｂｐｓである。ユーザ４０６も、標準解像度ビデオストリームをユーザ４０４に要求した。したがって、ユーザ４０６の予約済みダウンリンクは、ユーザ４０６の残りのダウンリンク容量（４５０ｋｂｐｓ）を、処理されるべき残っているユーザ４０６のサブスクリプションの数で除算したものとして計算される。ユーザ４０６のサブスクリプションのうちの１つ（ユーザ４０２）は、すでに処理されており、したがって、ユーザ４０６は、処理されるべき残っている２つのサブスクリプション（ユーザ４０４および４０８）のみを有する。したがって、ユーザ４０６の予約済みダウンリンクは、４５０ｋｂｐｓ／２＝２２５ｋｂｐｓである。ユーザ４０８は、（図３の行３０９〜３１５によって対処されるように）低解像度ビデオストリームをユーザ４０２に要求した。ユーザ４０８は、処理されるべき残っている高解像度サブスクリプションを有しない。したがって、ユーザ４０８の予約済みダウンリンクは、ユーザ４０８の残りのダウンリンク容量を、処理されるべき残っているユーザ４０８のサブスクリプションの数で除算したものに等しい。ユーザ４０８は、処理されるべき残っている２つのサブスクリプション（ユーザ４０４および４０６）を有する。したがって、ユーザ４０８の予約済みダウンリンクは、８５０ｋｂｐｓ／２＝４２５ｋｂｐｓである。
【００６９】
図４Ｇは、サブスクライバ参加者のさらなる処理を示す。図２の行２１２に従って、各サブスクライバ参加者は、予約済みダウンリンクに基づいて昇順でランク付けされる。図２の行２１５〜２３６において実装される第２の反復シーケンスに従って、各サブスクライバ参加者は、ランク付けに基づいて連続的に処理される。第２の反復シーケンスの第１の反復が、最低予約済みダウンリンクを有するユーザ４０２を処理する。ユーザ４０２の予約済みダウンリンクに等しいサイズ（６６ｋｂｐｓ）を有する第１のビデオストリーム層が作成され、ユーザ４０２は、第１のビデオストリーム層に割り当てられる。６６ｋｂｐｓのビットレートを有する第１のビデオストリーム層の作成は、送出側参加者、ユーザ４０４が、６６ｋｂｐｓのビットレートを有する第１のビデオストリーム層をアップロードすることになることを示す。したがって、ユーザ４０４は、第１のビデオストリーム層に専用のユーザ４０４のアップリンク容量の６６ｋｂｐｓと、残っているアップリンク容量の２３４ｋｂｐｓとを有する。
【００７０】
第２の反復シーケンスの第２の反復が、第２の最低予約済みダウンリンクを有するユーザ４０６を処理する。（ユーザ４０４の残りのアップリンク容量よりも小さい）ユーザ４０６の予約済みダウンリンクが、前に作成されたビデオストリーム層の少なくとも２倍であるという決定が行われる。したがって、ユーザ４０６の予約済みダウンリンク（２２５ｋｂｐｓ）に等しいサイズを有する新しい第２のビデオストリーム層が作成される。ユーザ４０４は、現在、２つのビデオストリーム、すなわち、６６ｋｂｐｓである第１のビデオストリームと、２２５ｋｂｐｓである第２のビデオストリームとをアップロードするというタスクを与えられ、これは、ユーザ４０４が、残っているアップリンク容量の９ｋｂｐｓを有することを意味する。ユーザ４０６は、第２のビデオストリーム層に割り当てられる。
【００７１】
第２の反復シーケンスの第３の反復が、第３の最低予約済みダウンリンクを有するユーザ４０８を処理する。ユーザ４０４が新しいビデオストリーム層を作成するために残っている、不十分なアップリンク容量がある。したがって、ユーザ４０８は、前のビデオストリーム層、すなわち、２２５ｋｂｐｓビデオストリーム層に割り当てられる。
【００７２】
図４Ｈは、図２の行２０５〜２３７の反復シーケンスの第２の反復の結果を要約する。ユーザ４０４は、２つのビデオストリーム層、すなわち、６６ｋｂｐｓのビットレートを有する第１のビデオストリーム層と、２２５ｋｂｐｓのビットレートを有する第２のビデオストリーム層とをアップロードするように割り当てられた。ユーザ４０４のアップリンク容量は、ユーザ４０４がアップロードすることになる２つのビデオストリーム層のビットレートを減算することによって更新され、９ｋｂｐｓの残りのアップリンク容量に結果する。ユーザ４０２は、ユーザ４０４から第１のビデオストリーム層を受信するように割り当てられ、ユーザ４０６とユーザ４０８は両方とも、ユーザ４０４から第２のビデオストリーム層を受信するように割り当てられる。ユーザ４０２のダウンリンク容量は、６６ｋｂｐｓを減算することによって更新され、ユーザ４０６のダウンリンク容量は、２２５ｋｂｐｓを減算することによって更新され、ユーザ４０８のダウンリンク容量は、２２５ｋｂｐｓを減算することによって更新される。図４Ｉは、図２の行２０５〜２３７の反復シーケンスの第２の反復の後の参加者のステータスを提示する。
【００７３】
図４Ｊは、図２の行２０５〜２３７の反復シーケンスの第３の反復の開始を示す。この第３の反復では、ユーザ４０６が４人のユーザの第３の最低アップリンク容量を有するので、ユーザ４０６は、処理される送出側参加者として選択され、ユーザ４０２、４０４、および４０８は各々、ユーザ４０６にサブスクライブしているサブスクライバ参加者である。もう一度、図３の擬似コード３００において実装される実施形態に従って、この反復ではユーザ４０６である、送出側参加者に関する各サブスクライバ参加者について予約済みダウンリンクが決定される。ユーザ４０２は、標準解像度ビデオストリームを送出側参加者、すなわち、ユーザ４０６に要求した。したがって、ユーザ４０２の予約済みダウンリンクは、ユーザ４０２の残りのダウンリンク容量（１３４ｋｂｐｓ）を、処理されるべき残っているユーザ４０２のサブスクリプションの数で除算したものとして計算される。ユーザ４０２は、現在、処理されるべき残っている２つのサブスクリプション（ユーザ４０６および４０８）を有し、したがって、ユーザ４０２の予約済みダウンリンクは、１３４ｋｂｐｓ／２＝６７ｋｂｐｓである。ユーザ４０４は、低解像度ビデオストリームをユーザ４０６に要求した。ユーザ４０４は、処理されるべき残っている高解像度サブスクリプションを有しない。したがって、ユーザ４０４の予約済みダウンリンクは、ユーザ４０４の残りのダウンリンク容量（１５０ｋｂｐｓ）を、処理されるべき残っているユーザ４０４のサブスクリプションの数で除算したものとして計算される。ユーザ４０４は、処理されるべき残っている２つのサブスクリプション（ユーザ４０６および４０８）を有する。したがって、ユーザ４０４の予約済みダウンリンクは、１５０ｋｂｐｓ／２＝７５ｋｂｐｓである。ユーザ４０８は、低解像度ビデオストリームをユーザ４０６に要求した。ユーザ４０８は、処理されるべき残っている高解像度サブスクリプションを有しない。したがって、ユーザ４０８の予約済みダウンリンクは、ユーザ４０８の残りのダウンリンク容量を、処理されるべき残っているユーザ４０８のサブスクリプションの数で除算したものに等しい。ユーザ４０８は、処理されるべき残っている１つのサブスクリプション（ユーザ４０６）のみを有する。したがって、ユーザ４０８の予約済みダウンリンクは、６２５ｋｂｐｓ／１＝６２５ｋｂｐｓである。
【００７４】
図４Ｋは、サブスクライバ参加者のさらなる処理を示す。図２の行２１２に従って、各サブスクライバ参加者は、予約済みダウンリンクに基づいて昇順でランク付けされる。図２の行２１５〜２３６において実装される第２の反復シーケンスに従って、各サブスクライバ参加者は、ランク付けに基づいて連続的に処理される。第２の反復シーケンスの第１の反復が、最低予約済みダウンリンクを有するユーザ４０２を処理する。ユーザ４０２の予約済みダウンリンクに等しいサイズ（６７ｋｂｐｓ）を有する第１のビデオストリーム層が作成され、ユーザ４０２は、第１のビデオストリーム層に割り当てられる。これは、送出側参加者、ユーザ４０６が、６７ｋｂｐｓのビットレートを有する第１のビデオストリーム層をアップロードすることになることを示す。したがって、ユーザ４０６は、第１のビデオストリーム層に専用のユーザ４０６のアップリンク容量の６７ｋｂｐｓと、残っているアップリンク容量の２８３ｋｂｐｓとを有する。
【００７５】
第２の反復シーケンスの第２の反復が、第２の最低予約済みダウンリンクを有するユーザ４０４を処理する。ユーザ４０４の予約済みダウンリンクが、前のビデオストリーム層に関する差しきい値を満たさない、すなわち、前のビデオストリーム層のビットレートの少なくとも２倍でないという決定が行われる。したがって、ユーザ４０４は、６７ｋｂｐｓのビットレートを有する、前に作成された第１のビデオストリーム層に割り当てられる。
【００７６】
第２の反復シーケンスの第３の反復が、第３の最低予約済みダウンリンクを有するユーザ４０８を処理する。ユーザ４０６の残りのアップリンク容量は、ユーザ４０８の予約済みダウンリンクよりも小さい。したがって、潜在的な新しい層のサイズは、ユーザ４０６の残りのアップリンク容量、すなわち、２８３ｋｂｐｓに等しくなるように設定される。潜在的な新しい層のサイズは、差しきい値を満たし、すなわち、前のビデオストリーム層のビットレートの少なくとも２倍である。したがって、２８３ｋｂｐｓのビットレートを有する、新しい第２のビデオストリーム層が作成される。ユーザ４０８は、第２のビデオストリーム層に割り当てられる。
【００７７】
図４Ｌは、図２の行２０５〜２３７の反復シーケンスの第３の反復の結果を要約する。ユーザ４０６は、２つのビデオストリーム層、すなわち、６７ｋｂｐｓのビットレートを有する第１のビデオストリーム層と、２８３ｋｂｐｓのビットレートを有する第２のビデオストリーム層とをアップロードするように割り当てられた。ユーザ４０６のアップリンク容量は、ユーザ４０６がアップロードすることになる２つのビデオストリーム層のビットレートを減算することによって更新され、０ｋｂｐｓの残りのアップリンク容量に結果する。ユーザ４０２とユーザ４０４は両方とも、ユーザ４０６から第１のビデオストリーム層を受信するように割り当てられ、ユーザ４０８は、ユーザ４０６から第２のビデオストリーム層を受信するように割り当てられる。ユーザ４０２のダウンリンク容量は、６７ｋｂｐｓを減算することによって更新され、ユーザ４０４のダウンリンク容量は、６７ｋｂｐｓを減算することによって更新され、ユーザ４０８のダウンリンク容量は、２８３ｋｂｐｓを減算することによって更新される。図４Ｍは、図２の行２０５〜２３７の反復シーケンスの第３の反復の後の参加者のステータスを提示する。
【００７８】
図４Ｎは、図２の行２０５〜２３７の反復シーケンスの第４および最終の反復の開始を示す。この第４の反復では、ユーザ４０８は、処理される送出側参加者として選択され、ユーザ４０２、４０４、および４０６は各々、ユーザ４０８にサブスクライブしているサブスクライバ参加者である。もう一度、図３の擬似コード３００において実装される実施形態に従って、送出側参加者に関する各サブスクライバ参加者について予約済みダウンリンクが決定される。ユーザ４０２は、標準解像度ビデオストリームを送出側参加者、すなわち、ユーザ４０８に要求した。したがって、ユーザ４０２の予約済みダウンリンクは、ユーザ４０２の残りのダウンリンク容量（６７ｋｂｐｓ）を、処理されるべき残っているユーザ４０２のサブスクリプションの数で除算したものとして計算される。ユーザ４０２は、現在、処理されるべき残っている１つのサブスクリプション（ユーザ４０８）のみを有し、したがって、ユーザ４０２の予約済みダウンリンクは、６７ｋｂｐｓ／１＝６７ｋｂｐｓである。ユーザ４０４は、低解像度ビデオストリームをユーザ４０８に要求した。ユーザ４０４は、処理されるべき残っている高解像度サブスクリプションを有しない。したがって、ユーザ４０４の予約済みダウンリンクは、ユーザ４０４の残りのダウンリンク容量（８３ｋｂｐｓ）を、処理されるべき残っているユーザ４０４のサブスクリプションの数で除算したものとして計算される。ユーザ４０４は、処理されるべき残っている１つのサブスクリプション（ユーザ４０８）のみを有する。したがって、ユーザ４０４の予約済みダウンリンクは、８３ｋｂｐｓ／１＝８３ｋｂｐｓである。ユーザ４０６は、標準解像度ビデオストリームをユーザ４０８に要求した。したがって、ユーザ４０６の予約済みダウンリンクは、ユーザ４０６の残りのダウンリンク容量を、処理されるべき残っているユーザ４０６のサブスクリプションの数で除算したものに等しい。ユーザ４０６は、処理されるべき残っている１つのサブスクリプション（ユーザ４０８）のみを有する。したがって、ユーザ４０６の予約済みダウンリンクは、２２５ｋｂｐｓ／１＝２２５ｋｂｐｓである。
【００７９】
図４Ｏは、サブスクライバ参加者のさらなる処理を示す。図２の行２１２に従って、各サブスクライバ参加者は、予約済みダウンリンクに基づいて昇順でランク付けされる。図２の行２１５〜２３６において実装される第２の反復シーケンスに従って、各サブスクライバ参加者は、ランク付けに基づいて連続的に処理される。第２の反復シーケンスの第１の反復が、最低予約済みダウンリンクを有するユーザ４０２を処理する。ユーザ４０２の予約済みダウンリンクに等しいサイズ（６７ｋｂｐｓ）を有する第１のビデオストリーム層が作成され、ユーザ４０２は、第１のビデオストリーム層に割り当てられる。ユーザ４０８は、第１のビデオストリーム層に専用のユーザ４０８のアップリンク容量の６７ｋｂｐｓと、残っているアップリンク容量の７３３ｋｂｐｓとを有する。
【００８０】
第２の反復シーケンスの第２の反復が、第２の最低予約済みダウンリンクを有するユーザ４０４を処理する。ユーザ４０４の予約済みダウンリンクが、前のビデオストリーム層に関する差しきい値を満たさない、すなわち、前のビデオストリーム層のビットレートの少なくとも２倍でないという決定が行われる。したがって、ユーザ４０４は、６７ｋｂｐｓの前に作成された第１のビデオストリーム層に割り当てられる。
【００８１】
第２の反復シーケンスの第３の反復が、第３の最低予約済みダウンリンクを有するユーザ４０６を処理する。ユーザ４０６の予約済みダウンリンク（２２５ｋｂｐｓ）は、ユーザ４０８の残りのアップリンク容量（７３３ｋｂｐｓ）よりも小さい。したがって、潜在的な新しい層のサイズは、ユーザ４０６の予約済みダウンリンク、すなわち、２２５ｋｂｐｓに等しくなるように設定される。潜在的な新しい層のサイズは、差しきい値を満たし、すなわち、前のビデオストリーム層のビットレートの少なくとも２倍である。したがって、２２５ｋｂｐｓのビットレートを有する、新しい第２のビデオストリーム層が作成される。ユーザ４０６は、第２のビデオストリーム層に割り当てられる。
【００８２】
図４Ｐは、図２の行２０５〜２３７の反復シーケンスの第４の反復の結果を要約する。ユーザ４０８は、２つのビデオストリーム層、すなわち、６７ｋｂｐｓのビットレートを有する第１のビデオストリーム層と、２２５ｋｂｐｓのビットレートを有する第２のビデオストリーム層とをアップロードするように割り当てられた。ユーザ４０８のアップリンク容量は、ユーザ４０８がアップロードすることになる２つのビデオストリーム層のビットレートを減算することによって更新され、５０８ｋｂｐｓの残りのアップリンク容量に結果する。ユーザ４０２とユーザ４０４は両方とも、ユーザ４０８から第１のビデオストリーム層を受信するように割り当てられ、ユーザ４０６は、ユーザ４０８から第２のビデオストリーム層を受信するように割り当てられる。ユーザ４０２のダウンリンク容量は、６７ｋｂｐｓを減算することによって更新され、ユーザ４０４のダウンリンク容量は、６７ｋｂｐｓを減算することによって更新され、ユーザ４０６のダウンリンク容量は、２２５ｋｂｐｓを減算することによって更新される。図４Ｑは、図２の行２０５〜２３７の反復シーケンスの第４および最終の反復の後の参加者のステータスを提示する。見られ得るように、各送出側参加者（この場合、各参加者）は、参加者がアップロードすることになる１つまたは複数のビデオストリーム層を割り当てられ、各サブスクライバ参加者（この場合、各参加者）は、サブスクライバ参加者がサブスクライブしている各送出側参加者から、特定のビットレートを有する１つのビデオストリームを受信するように割り当てられた。
【００８３】
上記で説明された例示的なシナリオは、グループビデオ通話におけるあらゆる参加者が送出側参加者とサブスクライバ参加者の両方である例示的なシナリオについて説明したが、本開示が、異なる特性を有するグループビデオ通話を処理および管理することが可能であることを諒解されたい。たとえば、何人かの参加者のみが、ビデオストリームをアップロードしているように、参加者のサブセットが送出側参加者であり、および／または、何人かの参加者のみが、他の参加者からビデオストリームを受信しているように、参加者のサブセットがサブスクライバ参加者である。同様に、上記で説明された例示的なシナリオは、あらゆる参加者があらゆる他の参加者からビデオストリームを受信する例示的なシナリオについて説明したが、本開示が、異なるシナリオに対処することができることを諒解されたい。たとえば、何人かのサブスクライバ参加者は、送出側参加者のサブセットからビデオフィードを受信するためにサブスクライブしているにすぎないことがある。多くの変形形態が可能である。
【００８４】
上記で説明された例示的な実施形態は、概して、できる限り多くの送出側参加者のアップリンク容量と、できる限り多くのサブスクライバ参加者のダウンリンク容量とを利用することを試みた。しかしながら、いくつかのシナリオでは、追加のアップリンク容量および／またはダウンリンク容量が利用可能である場合でも、ビットレートに関して限度を課すかまたは上限を定めることが望ましいことがある。たとえば、サブスクライバ参加者が低解像度ビデオストリームを送出側参加者に要求した場合、低解像度ビデオストリームのビットレートの上限を定めることは、サブスクライバ参加者が十分なダウンリンク容量を有し、送出側参加者が、極めて高いビットレートビデオストリームに適応するために十分なアップリンク容量を有する場合でも、望ましいことがある。したがって、様々な実施形態では、特定の品質レベルのサブスクリプションが、最大ビットレートにおいて上限を定められ得る。たとえば、低品質サブスクリプションが、第１の最大ビットレートにおいて上限を定められ得、標準または中間品質サブスクリプションが、第１の最大ビットレートよりも大きい第２の最大ビットレートにおいて上限を定められ得、高品質サブスクリプションが、第２の最大ビットレートよりも大きい第３の最大ビットレートにおいて上限を定められ得るか、または、様々な実施形態ではまったく上限を定められないことがある。
【００８５】
図５は、本開示の一実施形態による、グループビデオ通話サイマルキャストストリームを最適化することに関連付けられた例示的な方法５００を示す。別段に明記されていない限り、本明細書で説明される様々な実施形態の範囲内で、同様の順序または代替の順序で、あるいは並行して実施される、追加のステップ、より少ないステップ、または代替のステップがあり得ることを諒解されたい。
【００８６】
ブロック５０２において、例示的な方法５００は、グループビデオ通話における参加者のセットを識別することができ、各参加者が、アップリンク容量とダウンリンク容量とに関連付けられ、参加者のセットが、送出側参加者のセットとサブスクライバ参加者のセットとを含む。ブロック５０４において、例示的な方法５００は、送出側参加者のセットの各送出側参加者について、送出側参加者にサブスクライブしているサブスクライバ参加者のダウンリンク容量に基づいて、送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層を決定することができる。ブロック５０６において、例示的な方法５００は、サブスクライバ参加者のセットの各サブスクライバ参加者について、サブスクライバ参加者がサブスクライブしている各送出側参加者によってアップロードされるべき１つまたは複数のビデオストリーム層のうちの１つのビデオストリーム層を受信するように、サブスクライバ参加者を割り当てることができる。
【００８７】
本開示の様々な実施形態に関連する多くの他の使用、適用例、および／または変形形態があり得ることが企図される。たとえば、いくつかの場合には、ユーザは、開示される技術を利用することをオプトイン（ｏｐｔ−ｉｎ）するか否かを選定することができる。開示される技術は、様々なプライバシー設定および選好が維持されることを確実にすることもでき、プライベート情報が漏らされるのを防ぐことができる。別の例では、本開示の様々な実施形態は、時間とともに学習し、改善し、および／または改良され得る。
【００８８】
ソーシャルネットワーキングシステム−例示的な実装形態
図６は、本開示の一実施形態による、様々なシナリオにおいて利用され得る例示的なシステム６００のネットワーク図を示す。システム６００は、１つまたは複数のユーザデバイス６１０と、１つまたは複数の外部システム６２０と、ソーシャルネットワーキングシステム（またはサービス）６３０と、ネットワーク６５０とを含む。一実施形態では、上記で説明された実施形態に関して説明されるソーシャルネットワーキングサービス、プロバイダ、および／またはシステムは、ソーシャルネットワーキングシステム６３０として実装され得る。例示の目的で、図６によって示されているシステム６００の実施形態は、単一の外部システム６２０と単一のユーザデバイス６１０とを含む。しかしながら、他の実施形態では、システム６００は、より多くのユーザデバイス６１０および／またはより多くの外部システム６２０を含み得る。いくつかの実施形態では、ソーシャルネットワーキングシステム６３０は、ソーシャルネットワークプロバイダによって動作されるが、外部システム６２０は、外部システム６２０が、異なるエンティティによって動作され得るという点でソーシャルネットワーキングシステム６３０とは別個である。しかしながら、様々な実施形態では、ソーシャルネットワーキングシステム６３０と外部システム６２０とは連携して動作して、ソーシャルネットワーキングシステム６３０のユーザ（またはメンバー）にソーシャルネットワーキングサービスを提供する。この意味で、ソーシャルネットワーキングシステム６３０は、外部システム６２０などの他のシステムがインターネットにわたってユーザにソーシャルネットワーキングサービスおよび機能性を提供するために使用し得る、プラットフォームまたはバックボーンを提供する。
【００８９】
ユーザデバイス６１０は、ユーザから入力を受信し、ネットワーク６５０を介してデータを送信および受信することができる、１つまたは複数のコンピューティングデバイスを備える。一実施形態では、ユーザデバイス６１０は、たとえば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ互換オペレーティングシステム（ＯＳ）、Ａｐｐｌｅ  ＯＳ  Ｘ、および／またはＬｉｎｕｘディストリビューションを実行する従来のコンピュータシステムである。別の実施形態では、ユーザデバイス６１０は、スマートフォン、タブレット、携帯情報端末（ＰＤＡ）、携帯電話など、コンピュータ機能性を有するデバイスであり得る。ユーザデバイス６１０は、ネットワーク６５０を介して通信するように構成される。ユーザデバイス６１０は、アプリケーション、たとえば、ユーザデバイス６１０のユーザがソーシャルネットワーキングシステム６３０と対話することを可能にするブラウザアプリケーションを実行することができる。別の実施形態では、ユーザデバイス６１０は、ｉＯＳおよびＡＮＤＲＯＩＤなど、ユーザデバイス６１０のネイティブオペレーティングシステムによって提供されるアプリケーションプログラミングインターフェース（ＡＰＩ）を通して、ソーシャルネットワーキングシステム６３０と対話する。ユーザデバイス６１０は、ネットワーク６５０を介して外部システム６２０およびソーシャルネットワーキングシステム６３０と通信するように構成され、ネットワーク６５０は、ワイヤードおよび／またはワイヤレス通信システムを使用した、ローカルエリアネットワークおよび／またはワイドエリアネットワークの任意の組合せを備え得る。
【００９０】
一実施形態では、ネットワーク６５０は、標準通信技術およびプロトコルを使用する。したがって、ネットワーク６５０は、イーサネット、８０２．１１、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス（ＷｉＭＡＸ）、３Ｇ、４Ｇ、ＣＤＭＡ、ＧＳＭ、ＬＴＥ、デジタル加入者回線（ＤＳＬ）などの技術を使用するリンクを含むことができる。同様に、ネットワーク６５０上で使用されるネットワーキングプロトコルは、マルチプロトコルラベルスイッチング（ＭＰＬＳ）、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、ハイパーテキストトランスポートプロトコル（ＨＴＴＰ）、簡易メール転送プロトコル（ＳＭＴＰ）、ファイル転送プロトコル（ＦＴＰ）などを含むことができる。ネットワーク６５０を介して交換されるデータは、ハイパーテキストマークアップ言語（ＨＴＭＬ）と拡張可能マークアップ言語（ＸＭＬ）とを含む、技術および／またはフォーマットを使用して表され得る。さらに、全部または一部のリンクは、セキュアソケット層（ＳＳＬ）、トランスポート層セキュリティ（ＴＬＳ）、およびインターネットプロトコルセキュリティ（ＩＰｓｅｃ）など、従来の暗号化技術を使用して暗号化され得る。
【００９１】
一実施形態では、ユーザデバイス６１０は、ブラウザアプリケーション６１２を使用して、外部システム６２０からおよびソーシャルネットワーキングシステム６３０から受信されたマークアップ言語ドキュメント６１４を処理することによって、外部システム６２０からのコンテンツおよび／またはソーシャルネットワーキングシステム６３０からのコンテンツを表示し得る。マークアップ言語ドキュメント６１４は、コンテンツと、そのコンテンツのフォーマッティングまたは提示を記述する１つまたは複数の命令とを識別する。マークアップ言語ドキュメント６１４中に含まれる命令を実行することによって、ブラウザアプリケーション６１２は、マークアップ言語ドキュメント６１４によって記述されるフォーマットまたは提示を使用して、識別されたコンテンツを表示する。たとえば、マークアップ言語ドキュメント６１４は、外部システム６２０およびソーシャルネットワーキングシステム６３０から取り出されたテキストおよび／または画像データを含む複数のフレームを有するウェブページを生成および表示するための命令を含む。様々な実施形態では、マークアップ言語ドキュメント６１４は、拡張可能マークアップ言語（ＸＭＬ）データ、拡張可能ハイパーテキストマークアップ言語（ＸＨＴＭＬ）データ、または他のマークアップ言語データを含む、データファイルを備える。さらに、マークアップ言語ドキュメント６１４は、外部システム６２０とユーザデバイス６１０との間のデータ交換を容易にするために、ＪａｖａＳｃｒｉｐｔオブジェクト表記法（ＪＳＯＮ）データと、パディング付きのＪＳＯＮ（ＪＳＯＮＰ）と、ＪａｖａＳｃｒｉｐｔデータとを含み得る。ユーザデバイス６１０上のブラウザアプリケーション６１２は、マークアップ言語ドキュメント６１４を復号するためにＪａｖａＳｃｒｉｐｔコンパイラを使用し得る。
【００９２】
マークアップ言語ドキュメント６１４はまた、ＦＬＡＳＨ（商標）アプリケーションまたはＵｎｉｔｙ（商標）アプリケーション、ＳｉｌｖｅｒＬｉｇｈｔ（商標）アプリケーションフレームワークなど、アプリケーションまたはアプリケーションフレームワークを含むか、あるいはそれらのアプリケーションまたはアプリケーションフレームワークにリンクし得る。
【００９３】
一実施形態では、ユーザデバイス６１０は、ユーザデバイス６１０のユーザがソーシャルネットワーキングシステム６３０にログインしたかどうかを示すデータを含む、１つまたは複数のクッキー６１６をも含み、クッキー６１６は、ソーシャルネットワーキングシステム６３０からユーザデバイス６１０に通信されるデータの修正を可能にし得る。
【００９４】
外部システム６２０は、ネットワーク６５０を使用してユーザデバイス６１０に通信される１つまたは複数のウェブページ６２２ａ、６２２ｂを含む、１つまたは複数のウェブサーバを含む。外部システム６２０は、ソーシャルネットワーキングシステム６３０とは別個である。たとえば、外部システム６２０は、第１のドメインに関連付けられるが、ソーシャルネットワーキングシステム６３０は、別個のソーシャルネットワーキングドメインに関連付けられる。外部システム６２０中に含まれるウェブページ６２２ａ、６２２ｂは、コンテンツを識別し、識別されたコンテンツのフォーマッティングまたは提示を指定する命令を含む、マークアップ言語ドキュメント６１４を備える。
【００９５】
ソーシャルネットワーキングシステム６３０は、ソーシャルネットワークのための１つまたは複数のコンピューティングデバイスを含み、ソーシャルネットワークは、複数のユーザを含み、ソーシャルネットワークのユーザにソーシャルネットワークの他のユーザと通信および対話する能力を提供する。いくつかの事例では、ソーシャルネットワークは、グラフ、すなわち、エッジとノードとを含むデータ構造によって表され得る。限定はしないが、データベース、オブジェクト、クラス、メタ要素、ファイル、または任意の他のデータ構造を含む、他のデータ構造も、ソーシャルネットワークを表すために使用され得る。ソーシャルネットワーキングシステム６３０は、オペレータによって、運用、管理、または制御され得る。ソーシャルネットワーキングシステム６３０のオペレータは、人間、自動化されたアプリケーション、または、コンテンツを管理し、ポリシーを規制し、ソーシャルネットワーキングシステム６３０内の使用量メトリックを収集するための一連のアプリケーションであり得る。任意のタイプのオペレータが使用され得る。
【００９６】
ユーザは、ソーシャルネットワーキングシステム６３０に加わり、次いで、自身がつなげられることを望む、ソーシャルネットワーキングシステム６３０の任意の数の他のユーザへのつながりを追加し得る。本明細書で使用される「友達」という用語は、ユーザがソーシャルネットワーキングシステム６３０を介して、つながり、関連付け、または関係を形成した、ソーシャルネットワーキングシステム６３０の任意の他のユーザを指す。たとえば、一実施形態では、ソーシャルネットワーキングシステム６３０内のユーザがソーシャルグラフ中のノードとして表される場合、「友達」という用語は、２つのユーザノード間に形成され、２つのユーザノードを直接接続する、エッジを指すことがある。
【００９７】
つながりは、ユーザによって明示的に追加され得るか、または、ユーザの共通特性（たとえば、同じ教育機関の卒業生であるユーザ）に基づいて、ソーシャルネットワーキングシステム６３０によって自動的に作成され得る。たとえば、第１のユーザが、友達になるための特定の他のユーザを具体的に選択する。ソーシャルネットワーキングシステム６３０内のつながりは、通常、両方向であるが、両方向である必要はなく、したがって、「ユーザ」および「友達」という用語は枠組みに依存する。ソーシャルネットワーキングシステム６３０のユーザ間のつながりは、通常、双方向（「二方向」）または「相互」であるが、つながりはまた、単方向または「一方向」であり得る。たとえば、ボブおよびジョーが、両者ともソーシャルネットワーキングシステム６３０のユーザであり、互いにつながっている場合、ボブおよびジョーは互いのつながりである。一方、ボブは、ジョーによってソーシャルネットワーキングシステム６３０に通信されたデータを閲覧するためにジョーにつながることを望むが、ジョーは、相互つながりを形成することを望まない場合、単方向つながりが確立され得る。ユーザ間のつながりは直接つながりであり得るが、ソーシャルネットワーキングシステム６３０のいくつかの実施形態は、つながりが、つながりの１つまたは複数のレベルまたは分離の程度を介して間接的であることを可能にする。
【００９８】
ユーザ間のつながりを確立および維持し、ユーザ間の対話を可能にすることに加えて、ソーシャルネットワーキングシステム６３０は、ソーシャルネットワーキングシステム６３０によってサポートされる様々なタイプのアイテムに対してアクションをとる能力をユーザに提供する。これらのアイテムは、ソーシャルネットワーキングシステム６３０のユーザが属し得るグループまたはネットワーク（すなわち、人々、エンティティ、およびコンセプトのソーシャルネットワーク）、ユーザが関心があり得るイベントまたはカレンダーエントリ、ユーザがソーシャルネットワーキングシステム６３０を介して使用し得るコンピュータベースのアプリケーション、ソーシャルネットワーキングシステム６３０によってまたはソーシャルネットワーキングシステム６３０を通して提供されるサービスを介してユーザがアイテムを購入または販売することを可能にする取引、およびユーザがソーシャルネットワーキングシステム６３０内外で実施し得る広告との対話を含み得る。これらは、ユーザがソーシャルネットワーキングシステム６３０に作用し得るアイテムの数例にすぎず、多くの他の例が可能である。ユーザは、ソーシャルネットワーキングシステム６３０において、あるいは、ソーシャルネットワーキングシステム６３０とは別個の、またはネットワーク６５０を介してソーシャルネットワーキングシステム６３０に結合された外部システム６２０において、表されることが可能であるものと対話し得る。
【００９９】
ソーシャルネットワーキングシステム６３０は、様々なエンティティをリンクすることも可能である。たとえば、ソーシャルネットワーキングシステム６３０は、ユーザが互いと対話すること、ならびに、ＡＰＩ、ウェブサービス、または他の通信チャネルを通して外部システム６２０または他のエンティティと対話することを可能にする。ソーシャルネットワーキングシステム６３０は、複数のエッジによって相互接続された複数のノードを備える「ソーシャルグラフ」を生成および維持する。ソーシャルグラフ中の各ノードは、別のノードに作用することができるエンティティ、および／または別のノードによって作用され得るエンティティを表し得る。ソーシャルグラフは様々なタイプのノードを含み得る。ノードのタイプの例は、ユーザ、非人間エンティティ、コンテンツアイテム、ウェブページ、グループ、アクティビティ、メッセージ、コンセプト、およびソーシャルネットワーキングシステム６３０内のオブジェクトによって表され得る任意の他のものを含む。ソーシャルグラフ中の２つのノード間のエッジは、ノード関係から生じ得る、またはノードのうちの一方によって他方に対して実施されたアクションから生じ得る、２つのノード間の特定の種類のつながりまたは関連付けを表し得る。いくつかの場合には、ノード間のエッジは重み付けされ得る。エッジの重みは、ノード間のつながりまたは関連付けの強さなど、エッジに関連付けられた属性を表すことができる。異なるタイプのエッジが、異なる重みを提供され得る。たとえば、あるユーザが別のユーザに「いいね！」を表明するときに作成されるエッジは、ある重みを与えられ得るが、ユーザが別のユーザを友達にするときに作成されるエッジは、異なる重みを与えられ得る。
【０１００】
一例として、第１のユーザが第２のユーザを友達として識別するとき、第１のユーザを表すノードと第２のユーザを表す第２のノードとを接続する、ソーシャルグラフ中のエッジが生成される。様々なノードが、互いと関係または対話するとき、ソーシャルネットワーキングシステム６３０は、それらの関係および対話を反映するように、それらの様々なノードを接続するエッジを修正する。
【０１０１】
ソーシャルネットワーキングシステム６３０は、ソーシャルネットワーキングシステム６３０とのユーザの対話を向上させる、ユーザ生成されたコンテンツをも含む。ユーザ生成されたコンテンツは、ユーザがソーシャルネットワーキングシステム６３０に追加、アップロード、送出、または「投稿」することができるものを含み得る。たとえば、ユーザは、ユーザデバイス６１０からソーシャルネットワーキングシステム６３０に投稿を通信する。投稿は、ステータス更新または他のテキストデータなどのデータ、ロケーション情報、写真などの画像、ビデオ、リンク、音楽、あるいは他の同様のデータおよび／またはメディアを含み得る。また、コンテンツは、サードパーティによってソーシャルネットワーキングシステム６３０に追加され得る。コンテンツ「アイテム」は、ソーシャルネットワーキングシステム６３０内でオブジェクトとして表される。このようにして、ソーシャルネットワーキングシステム６３０のユーザは、様々な通信チャネルを通して様々なタイプのメディアのテキストおよびコンテンツアイテムを投稿することによって、互いと通信することを促される。そのような通信は、互いとのユーザの対話を増加させ、ユーザがソーシャルネットワーキングシステム６３０と対話する頻度を増加させる。
【０１０２】
ソーシャルネットワーキングシステム６３０は、ウェブサーバ６３２と、ＡＰＩ要求サーバ６３４と、ユーザプロファイルストア６３６と、つながりストア６３８と、アクションロガー６４０と、アクティビティログ６４２と、認証サーバ６４４とを含む。本発明の一実施形態では、ソーシャルネットワーキングシステム６３０は、様々なアプリケーションについて、追加の構成要素、より少ない構成要素、または異なる構成要素を含み得る。ネットワークインターフェース、セキュリティ機構、ロードバランサ、フェイルオーバサーバ、管理およびネットワーク動作コンソールなどの他の構成要素は、システムの詳細を不明瞭にしないように示されていない。
【０１０３】
ユーザプロファイルストア６３６は、ユーザによって申告された、またはソーシャルネットワーキングシステム６３０によって推測された、職歴、学歴、趣味または選好、ロケーションなど、経歴情報、人口統計学的情報、および他のタイプの記述情報を含む、ユーザアカウントに関する情報を維持する。この情報は、各ユーザが一意に識別されるように、ユーザプロファイルストア６３６に記憶される。ソーシャルネットワーキングシステム６３０はまた、異なるユーザ間の１つまたは複数のつながりを記述するデータをつながりストア６３８に記憶する。つながり情報は、同様または共通の職歴、グループメンバーシップ、趣味、または学歴を有するユーザを示し得る。さらに、ソーシャルネットワーキングシステム６３０は、ユーザが他のユーザとの自身の関係を指定することを可能にする、異なるユーザ間のユーザ定義されたつながりを含む。たとえば、ユーザ定義されたつながりは、友達、同僚、パートナーなど、ユーザの現実の関係に匹敵する他のユーザとの関係を、ユーザが生成することを可能にする。ユーザは、あらかじめ定義されたタイプのつながりから選択するか、またはユーザ自身のつながりタイプを必要に応じて定義し得る。非人間エンティティ、バケット、クラスタセンター、画像、関心事、ページ、外部システム、コンセプトなど、ソーシャルネットワーキングシステム６３０内の他のノードとのつながりも、つながりストア６３８に記憶される。
【０１０４】
ソーシャルネットワーキングシステム６３０は、ユーザが対話し得るオブジェクトに関するデータを維持する。このデータを維持するために、ユーザプロファイルストア６３６およびつながりストア６３８は、ソーシャルネットワーキングシステム６３０によって維持される対応するタイプのオブジェクトのインスタンスを記憶する。各オブジェクトタイプは、オブジェクトのタイプに適した情報を記憶するのに好適である情報フィールドを有する。たとえば、ユーザプロファイルストア６３６は、ユーザのアカウントとユーザのアカウントに関係する情報とを記述するのに好適なフィールドをもつデータ構造を含んでいる。特定のタイプの新しいオブジェクトが作成されるとき、ソーシャルネットワーキングシステム６３０は、対応するタイプの新しいデータ構造を初期化し、この新しいデータ構造に一意のオブジェクト識別子を割り当て、必要に応じて、そのオブジェクトにデータを追加し始める。これは、たとえば、ユーザがソーシャルネットワーキングシステム６３０のユーザになるときに発生し得、ソーシャルネットワーキングシステム６３０は、ユーザプロファイルストア６３６にユーザプロファイルの新しいインスタンスを生成し、ユーザアカウントに一意の識別子を割り当て、ユーザによって提供される情報でユーザアカウントのフィールドをポピュレートし始める。
【０１０５】
つながりストア６３８は、他のユーザへのユーザのつながり、外部システム６２０へのつながり、または他のエンティティへのつながりを記述するのに好適なデータ構造を含む。つながりストア６３８はまた、つながりタイプをユーザのつながりに関連付け得、つながりタイプは、ユーザに関する情報へのアクセスを規制するためにユーザのプライバシー設定とともに使用され得る。本発明の一実施形態では、ユーザプロファイルストア６３６およびつながりストア６３８は、連合データベースとして実装され得る。
【０１０６】
つながりストア６３８と、ユーザプロファイルストア６３６と、アクティビティログ６４２とに記憶されたデータは、様々なオブジェクトを識別するためのノードと、異なるオブジェクト間の関係を識別するためにノードを接続するエッジとを使用するソーシャルグラフを、ソーシャルネットワーキングシステム６３０が生成することを可能にする。たとえば、第１のユーザがソーシャルネットワーキングシステム６３０内で第２のユーザとのつながりを確立する場合、ユーザプロファイルストア６３６からの第１のユーザおよび第２のユーザのユーザアカウントが、ソーシャルグラフ中のノードとして働き得る。つながりストア６３８によって記憶された第１のユーザと第２のユーザとの間のつながりは、第１のユーザに関連付けられたノードと第２のユーザに関連付けられたノードとの間のエッジである。この例を続けると、第２のユーザは、次いで、ソーシャルネットワーキングシステム６３０内で第１のユーザにメッセージを送出し得る。メッセージを送出するアクションは、第１のユーザおよび第２のユーザを表す、ソーシャルグラフ中の２つのノード間の別のエッジであり、メッセージを送出するアクションは記憶され得る。さらに、メッセージ自体が、第１のユーザおよび第２のユーザを表すノードに接続される別のノードとして、ソーシャルグラフ中で識別され、ソーシャルグラフ中に含まれ得る。
【０１０７】
別の例では、第１のユーザは、ソーシャルネットワーキングシステム６３０によって維持される画像中で（または、代替的に、ソーシャルネットワーキングシステム６３０の外部の別のシステムによって維持される画像中で）第２のユーザをタグ付けし得る。画像は、それ自体がソーシャルネットワーキングシステム６３０内のノードとして表され得る。このタグ付けアクションは、第１のユーザと第２のユーザとの間のエッジを作成し、ならびに、ユーザの各々と、同じくソーシャルグラフ中のノードである画像との間のエッジを作成し得る。また別の例では、ユーザがイベントに参加することを確認した場合、ユーザおよびイベントは、ユーザプロファイルストア６３６から取得されるノードであり、イベントへの参加は、アクティビティログ６４２から取り出され得るノード間のエッジである。ソーシャルグラフを生成および維持することによって、ソーシャルネットワーキングシステム６３０は、多くの異なるタイプのオブジェクトを記述するデータと、それらのオブジェクトの間の対話およびつながりとを含み、社交上関連する情報の豊富なソースを提供する。
【０１０８】
ウェブサーバ６３２は、ネットワーク６５０を介して、ソーシャルネットワーキングシステム６３０を１つまたは複数のユーザデバイス６１０および／または１つまたは複数の外部システム６２０にリンクする。ウェブサーバ６３２は、ウェブページ、ならびに、Ｊａｖａ、ＪａｖａＳｃｒｉｐｔ、Ｆｌａｓｈ、ＸＭＬなどの他のウェブ関係コンテンツを供給する。ウェブサーバ６３２は、メールサーバ、または、ソーシャルネットワーキングシステム６３０と１つまたは複数のユーザデバイス６１０との間のメッセージを受信およびルーティングするための他のメッセージング機能性を含み得る。メッセージは、インスタントメッセージ、キューメッセージ（たとえば、電子メール）、テキストおよびＳＭＳメッセージ、または任意の他の好適なメッセージングフォーマットであり得る。
【０１０９】
ＡＰＩ要求サーバ６３４は、１つまたは複数の外部システム６２０およびユーザデバイス６１０が、１つまたは複数のＡＰＩ関数を呼び出すことによって、ソーシャルネットワーキングシステム６３０からアクセス情報を呼び出すことを可能にする。ＡＰＩ要求サーバ６３４は、外部システム６２０が、ＡＰＩを呼び出すことによって、ソーシャルネットワーキングシステム６３０に情報を送出することをも可能にし得る。外部システム６２０は、一実施形態では、ネットワーク６５０を介してソーシャルネットワーキングシステム６３０にＡＰＩ要求を送出し、ＡＰＩ要求サーバ６３４は、ＡＰＩ要求を受信する。ＡＰＩ要求サーバ６３４は、ＡＰＩ要求に関連付けられたＡＰＩを呼び出すことによって要求を処理して適切な応答を生成し、ＡＰＩ要求サーバ６３４は、この応答を、ネットワーク６５０を介して外部システム６２０に通信する。たとえば、ＡＰＩ要求に応答して、ＡＰＩ要求サーバ６３４は、外部システム６２０にログインしたユーザのつながりなど、ユーザに関連付けられたデータを収集し、収集されたデータを外部システム６２０に通信する。別の実施形態では、ユーザデバイス６１０は、外部システム６２０と同じ様式で、ＡＰＩを介してソーシャルネットワーキングシステム６３０と通信する。
【０１１０】
アクションロガー６４０は、ソーシャルネットワーキングシステム６３０内での、および／またはソーシャルネットワーキングシステム６３０外でのユーザアクションに関する通信を、ウェブサーバ６３２から受信することが可能である。アクションロガー６４０は、ユーザアクションに関する情報でアクティビティログ６４２をポピュレートし、ソーシャルネットワーキングシステム６３０の内部およびソーシャルネットワーキングシステム６３０の外部でソーシャルネットワーキングシステム６３０のユーザによってとられた様々なアクションを、ソーシャルネットワーキングシステム６３０が発見することを可能にする。特定のユーザがソーシャルネットワーキングシステム６３０上の別のノードに関してとる任意のアクションが、アクティビティログ６４２あるいは同様のデータベースまたは他のデータリポジトリに維持される情報を通して、各ユーザのアカウントに関連付けられ得る。識別および記憶される、ソーシャルネットワーキングシステム６３０内でユーザによってとられるアクションの例は、たとえば、別のユーザへのつながりを追加すること、別のユーザにメッセージを送出すること、別のユーザからのメッセージを読むこと、別のユーザに関連付けられたコンテンツを閲覧すること、別のユーザによって投稿されたイベントに参加すること、画像を投稿すること、画像の投稿を試みること、あるいは、別のユーザまたは別のオブジェクトと対話する他のアクションを含み得る。ユーザがソーシャルネットワーキングシステム６３０内でアクションをとると、そのアクションは、アクティビティログ６４２に記録される。一実施形態では、ソーシャルネットワーキングシステム６３０は、アクティビティログ６４２をエントリのデータベースとして維持する。ソーシャルネットワーキングシステム６３０内でアクションがとられると、そのアクションについてのエントリが、アクティビティログ６４２に追加される。アクティビティログ６４２は、アクションログと呼ばれることもある。
【０１１１】
さらに、ユーザアクションは、ソーシャルネットワーキングシステム６３０とは別個である外部システム６２０など、ソーシャルネットワーキングシステム６３０の外部のエンティティ内で発生するコンセプトおよびアクションに関連付けられ得る。たとえば、アクションロガー６４０は、外部システム６２０とのユーザの対話を記述するデータをウェブサーバ６３２から受信し得る。この例では、外部システム６２０は、ソーシャルグラフ中の構造化されたアクションおよびオブジェクトに従って、ユーザの対話を報告する。
【０１１２】
ユーザが外部システム６２０と対話するアクションの他の例は、外部システム６２０または別のエンティティに対する関心をユーザが表すこと、外部システム６２０または外部システム６２０内のウェブページ６２２ａについて説明するコメントをユーザがソーシャルネットワーキングシステム６３０に投稿すること、ユニフォームリソースロケータ（ＵＲＬ）または外部システム６２０に関連付けられた他の識別子をユーザがソーシャルネットワーキングシステム６３０に投稿すること、外部システム６２０に関連付けられたイベントにユーザが参加すること、あるいは、外部システム６２０に関係するユーザによる任意の他のアクションを含む。したがって、アクティビティログ６４２は、ソーシャルネットワーキングシステム６３０のユーザと、ソーシャルネットワーキングシステム６３０とは別個である外部システム６２０との間の対話を記述するアクションを含み得る。
【０１１３】
認証サーバ６４４は、ソーシャルネットワーキングシステム６３０のユーザの１つまたは複数のプライバシー設定を施行する。ユーザのプライバシー設定は、ユーザに関連付けられた特定の情報がどのように共有され得るかを決定する。プライバシー設定は、ユーザに関連付けられた特定の情報の仕様と、情報が共有され得る１つまたは複数のエンティティの仕様とを含む。情報が共有され得るエンティティの例は、他のユーザ、アプリケーション、外部システム６２０、または、潜在的にその情報にアクセスすることができる任意のエンティティを含み得る。ユーザによって共有され得る情報は、プロファイル写真、ユーザに関連付けられた電話番号、ユーザのつながり、つながりを追加すること、ユーザプロファイル情報を変更することなどのユーザによってとられるアクションなど、ユーザアカウント情報を含む。
【０１１４】
プライバシー設定の仕様は、異なるレベルの粒度において提供され得る。たとえば、プライバシー設定は、他のユーザと共有されるべき具体的な情報を識別し得、プライバシー設定は、職場電話番号、または、プロファイル写真と、自宅電話番号と、ステータスとを含む個人情報など、関係する情報の具体的なセットを識別する。代替的に、プライバシー設定は、ユーザに関連付けられたすべての情報に適用され得る。特定の情報にアクセスすることができるエンティティのセットの仕様も、様々なレベルの粒度において指定され得る。情報が共有され得るエンティティの様々なセットは、たとえば、ユーザのすべての友達、友達のすべての友達、すべてのアプリケーション、またはすべての外部システム６２０を含み得る。一実施形態は、エンティティのセットの仕様がエンティティの一覧表を含むことを可能にする。たとえば、ユーザは、ある情報にアクセスすることを可能にされる外部システム６２０のリストを提供し得る。別の実施形態は、仕様が、情報にアクセスすることを可能にされない例外とともにエンティティのセットを含むことを可能にする。たとえば、ユーザは、すべての外部システム６２０がユーザの職場情報にアクセスすることを可能にし得るが、職場情報にアクセスすることを可能にされない外部システム６２０のリストを指定し得る。いくつかの実施形態は、ある情報にアクセスすることを可能にされない例外のリストを「ブロックリスト」と呼ぶ。ユーザによって指定されるブロックリストに属する外部システム６２０は、プライバシー設定において指定された情報にアクセスすることをブロックされる。情報の仕様の粒度と、情報が共有されるエンティティの仕様の粒度との様々な組合せが可能である。たとえば、すべての個人情報は、友達と共有され得るが、すべての職場情報は、友達の友達と共有され得る。
【０１１５】
認証サーバ６４４は、ユーザに関連付けられたある情報が、ユーザの友達、外部システム６２０、ならびに／または他のアプリケーションおよびエンティティによってアクセスされ得るかどうかを決定するためのロジックを含んでいる。外部システム６２０は、ユーザの職場電話番号など、ユーザのよりプライベートなおよび機密性の高い情報にアクセスするために、認証サーバ６４４からの認証を必要とし得る。ユーザのプライバシー設定に基づいて、認証サーバ６４４は、別のユーザ、外部システム６２０、アプリケーション、または別のエンティティが、ユーザによってとられたアクションに関する情報を含む、ユーザに関連付けられた情報にアクセスすることを可能にされるかどうかを決定する。
【０１１６】
いくつかの実施形態では、ソーシャルネットワーキングシステム６３０は、グループビデオ通話モジュール６４６を含むことができる。グループビデオ通話モジュール６４６は、たとえば、本明細書でより詳細に説明されるように、グループビデオ通話モジュール１０２として実装され得る。前に説明されたように、多くの変形形態または他の可能性があり得ることを諒解されたい。たとえば、いくつかの実施形態では、グループビデオ通話モジュール６４６の１つまたは複数の機能性は、ユーザデバイス６１０中で実装され得る。前に説明されたように、多くの変形形態または他の可能性があり得ることを諒解されたい。
【０１１７】
ハードウェア実装形態
上記のプロセスおよび特徴は、多種多様なマシンおよびコンピュータシステムアーキテクチャによって、ならびに、多種多様なネットワークおよびコンピューティング環境において実装され得る。図７は、本発明の一実施形態による、本明細書で説明される実施形態のうちの１つまたは複数を実装するために使用され得るコンピュータシステム７００の一例を示す。コンピュータシステム７００は、コンピュータシステム７００に、本明細書で説明されるプロセスおよび特徴を実施させるための命令のセットを含む。コンピュータシステム７００は、他のマシンに接続され（たとえば、ネットワーク化され）得る。ネットワーク化された展開では、コンピュータシステム７００は、クライアントサーバネットワーク環境内のサーバマシンまたはクライアントマシンの資格で動作するか、あるいは、ピアツーピア（または分散）ネットワーク環境内のピアマシンとして動作し得る。本発明の一実施形態では、コンピュータシステム７００は、ソーシャルネットワーキングシステム６３０、ユーザデバイス６１０、および外部システム６２０、またはそれらの構成要素であり得る。本発明の一実施形態では、コンピュータシステム７００は、ソーシャルネットワーキングシステム６３０の全部または一部を構成する多数のサーバのうちの１つのサーバであり得る。
【０１１８】
コンピュータシステム７００は、プロセッサ７０２と、キャッシュ７０４と、コンピュータ可読媒体に記憶され、本明細書で説明されるプロセスおよび特徴を対象とする、１つまたは複数の実行可能モジュールおよびドライバとを含む。さらに、コンピュータシステム７００は、高性能入出力（Ｉ／Ｏ）バス７０６と、標準Ｉ／Ｏバス７０８とを含む。ホストブリッジ７１０は、プロセッサ７０２を高性能Ｉ／Ｏバス７０６に結合するが、Ｉ／Ｏバスブリッジ７１２は、２つのバス７０６および７０８を互いに結合する。システムメモリ７１４および１つまたは複数のネットワークインターフェース７１６が、高性能Ｉ／Ｏバス７０６に結合される。コンピュータシステム７００は、ビデオメモリと、ビデオメモリに結合された表示デバイスとをさらに含み得る（図示せず）。大容量ストレージ７１８およびＩ／Ｏポート７２０が、標準Ｉ／Ｏバス７０８に結合される。コンピュータシステム７００は、標準Ｉ／Ｏバス７０８に結合された、キーボードおよびポインティングデバイス、表示デバイス、または他の入出力デバイス（図示せず）を随意に含み得る。全体的に、これらの要素は、限定はしないが、カリフォルニア州サンタクララのＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎによって製造されるｘ８６互換プロセッサ、カリフォルニア州サニーベルのＡｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（ＡＭＤ），Ｉｎｃ．によって製造されるｘ８６互換プロセッサ、ならびに任意の他の好適なプロセッサに基づくコンピュータシステムを含む、広いカテゴリーのコンピュータハードウェアシステムを表すものである。
【０１１９】
オペレーティングシステムが、ソフトウェアアプリケーション（図示せず）との間のデータの入力および出力を含む、コンピュータシステム７００の動作を管理および制御する。オペレーティングシステムは、システム上で実行されているソフトウェアアプリケーションと、システムのハードウェア構成要素との間のインターフェースを提供する。ＬＩＮＵＸオペレーティングシステム、カリフォルニア州クパチーノのＡｐｐｌｅ  Ｃｏｍｐｕｔｅｒ，Ｉｎｃ．から入手可能なＡｐｐｌｅ  Ｍａｃｉｎｔｏｓｈオペレーティングシステム、ＵＮＩＸオペレーティングシステム、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム、ＢＳＤオペレーティングシステムなど、任意の好適なオペレーティングシステムが使用され得る。他の実装形態が可能である。
【０１２０】
コンピュータシステム７００の要素が以下でより詳細に説明される。特に、ネットワークインターフェース７１６は、コンピュータシステム７００と、イーサネット（たとえば、ＩＥＥＥ８０２．３）ネットワーク、バックプレーンなど、広範囲のネットワークのうちのいずれかとの間の通信を提供する。大容量ストレージ７１８は、上記で識別されたそれぞれのコンピューティングシステムによって実装される上記で説明されたプロセスおよび特徴を実施するためのデータおよびプログラミング命令のための永続的なストレージを提供するが、システムメモリ７１４（たとえば、ＤＲＡＭ）は、プロセッサ７０２によって実行されたとき、データおよびプログラミング命令のための一時的なストレージを提供する。Ｉ／Ｏポート７２０は、コンピュータシステム７００に結合され得る追加の周辺デバイス間の通信を提供する、１つまたは複数のシリアルおよび／またはパラレル通信ポートであり得る。
【０１２１】
コンピュータシステム７００は、様々なシステムアーキテクチャを含み得、コンピュータシステム７００の様々な構成要素は再構成され得る。たとえば、キャッシュ７０４は、プロセッサ７０２とともにオンチップであり得る。代替的に、キャッシュ７０４およびプロセッサ７０２は「プロセッサモジュール」としてまとめられ得、プロセッサ７０２が「プロセッサコア」と呼ばれる。さらに、本発明のいくつかの実施形態は、上記の構成要素のすべてを必要とするとは限らず、また、含むとは限らないことがある。たとえば、標準Ｉ／Ｏバス７０８に結合された周辺デバイスは、高性能Ｉ／Ｏバス７０６に結合され得る。さらに、いくつかの実施形態では、単一のバスのみが存在し得、コンピュータシステム７００の構成要素が、その単一のバスに結合される。その上、コンピュータシステム７００は、追加のプロセッサ、記憶デバイス、またはメモリなど、追加の構成要素を含み得る。
【０１２２】
概して、本明細書で説明されるプロセスおよび特徴は、オペレーティングシステムまたは特定のアプリケーションの一部、構成要素、プログラム、オブジェクト、モジュール、あるいは「プログラム」と呼ばれる一連の命令として実装され得る。たとえば、１つまたは複数のプログラムが、本明細書で説明される特定のプロセスを実行するために使用され得る。プログラムは、典型的には、コンピュータシステム７００内の様々なメモリおよび記憶デバイス中の１つまたは複数の命令を備え、それらの命令は、１つまたは複数のプロセッサによって読み取られ、実行されたとき、コンピュータシステム７００に、本明細書で説明されるプロセスおよび特徴を実行するための動作を実施させる。本明細書で説明されるプロセスおよび特徴は、ソフトウェア、ファームウェア、ハードウェア（たとえば、特定用途向け集積回路）、またはそれらの任意の組合せとして実装され得る。
【０１２３】
一実装形態では、本明細書で説明されるプロセスおよび特徴は、分散コンピューティング環境において個々にまたはまとめて、コンピュータシステム７００によって実行される一連の実行可能モジュールとして実装される。上記のモジュールは、ハードウェア、コンピュータ可読媒体（または機械可読媒体）に記憶された実行可能モジュール、または両方の組合せによって実現され得る。たとえば、モジュールは、プロセッサ７０２など、ハードウェアシステム内のプロセッサによって実行されるべき複数の命令または一連の命令を備え得る。最初に、一連の命令は、大容量ストレージ７１８などの記憶デバイスに記憶され得る。ただし、一連の命令は、任意の好適なコンピュータ可読記憶媒体に記憶され得る。さらに、一連の命令は、ローカルに記憶される必要はなく、ネットワーク上のサーバなどのリモート記憶デバイスからネットワークインターフェース７１６を介して受信され得る。命令は、大容量ストレージ７１８などの記憶デバイスからシステムメモリ７１４中にコピーされ、次いで、プロセッサ７０２によってアクセスされ、実行される。様々な実装形態では、１つまたは複数のモジュールは、並列処理環境中の複数のサーバなど、１つまたは複数のロケーションにある１つまたは複数のプロセッサによって実行され得る。
【０１２４】
コンピュータ可読媒体の例は、限定はしないが、揮発性メモリデバイスおよび不揮発性メモリデバイスなどの記録可能タイプ媒体、ソリッドステートメモリ、フロッピーディスクおよび他のリムーバブルディスク、ハードディスクドライブ、磁気媒体、光ディスク（たとえば、コンパクトディスク読取り専用メモリ（ＣＤ  ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ））、他の同様の非一時的（または一時的）有形（または非有形）記憶媒体、あるいは、本明細書で説明されるプロセスおよび特徴のうちの任意の１つまたは複数を実施するためにコンピュータシステム７００が実行するための一連の命令を記憶、符号化、または搬送するのに好適な任意のタイプの媒体を含む。
【０１２５】
説明の目的で、多数の具体的な詳細が、説明の完全な理解を提供するために記載される。しかしながら、これらの具体的な詳細なしに本開示の実施形態が実施され得ることは、当業者には明らかであろう。いくつかの事例では、モジュール、構造、プロセス、特徴、およびデバイスは、説明を不明瞭にすることを回避するために、ブロック図の形式で示される。他の事例では、データおよび論理フローを表すために、機能ブロック図およびフロー図が示される。ブロック図およびフロー図の構成要素（たとえば、モジュール、ブロック、構造、デバイス、特徴など）は、本明細書において明確に説明および図示された様式以外の様式で、様々に組み合わされ、分離され、除去され、並べ替えられ、置換され得る。
【０１２６】
本明細書における、「一実施形態（ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」、「一実施形態（ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」、「他の実施形態」、「一連の実施形態」、「いくつかの実施形態」、「様々な実施形態」などへの言及は、実施形態に関して説明される特定の特徴、設計、構造、または特性が本開示の少なくとも一実施形態に含まれることを意味する。本明細書内の様々な箇所における、たとえば「一実施形態では（ｉｎ  ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」、または「一実施形態では（ｉｎ  ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」という句の出現は、必ずしもすべてが同じ実施形態に言及するものとは限らず、また、別個の実施形態または代替実施形態は、他の実施形態と相互排他的ではない。その上、「実施形態」などへの明示的な言及があるか否かにかかわらず、様々な特徴が説明され、様々な特徴は、いくつかの実施形態では様々に組み合わせられ、含まれ得るが、他の実施形態では様々に省略されることもある。同様に、いくつかの実施形態にとっては選好または要件であり得るが、他の実施形態にとっては選好または要件ではない、様々な特徴が説明される。
【０１２７】
本明細書において使用される言い回しは、主に、読みやすさおよび教授の目的で選択されており、本発明の主題を示すかまたは定めるために選択されていないことがある。したがって、本発明の範囲は、この発明を実施するための形態によってではなく、本明細書に基づく出願に関して生じる請求項によって限定されることが意図される。したがって、本発明の実施形態の開示は、以下の特許請求の範囲に記載される本発明の範囲を例示するものであり、限定するものではない。
【図１】
2021512521.tif 000003
【図２】
2021512521.tif 000004
【図３】
2021512521.tif 000005
【図４Ａ】
2021512521.tif 000006
【図４Ｂ】
2021512521.tif 000007
【図４Ｃ】
2021512521.tif 000008
【図４Ｄ】
2021512521.tif 000009
【図４Ｅ】
2021512521.tif 000010
【図４Ｆ】
2021512521.tif 000011
【図４Ｇ】
2021512521.tif 000012
【図４Ｈ】
2021512521.tif 000013
【図４Ｉ】
2021512521.tif 000014
【図４Ｊ】
2021512521.tif 000015
【図４Ｋ】
2021512521.tif 000016
【図４Ｌ】
2021512521.tif 000017
【図４Ｍ】
2021512521.tif 000018
【図４Ｎ】
2021512521.tif 000019
【図４Ｏ】
2021512521.tif 000020
【図４Ｐ】
2021512521.tif 000021
【図４Ｑ】
2021512521.tif 000022
【図５】
2021512521.tif 000023
【図６】
2021512521.tif 000024
【図７】
2021512521.tif 000025
【国際調査報告】
2021512521.tif 000026
2021512521.tif 000027