(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-27
(54)【発明の名称】マルチソースメディア配信システム及び方法
(51)【国際特許分類】
H04N 21/61 20110101AFI20231220BHJP
H04N 21/2383 20110101ALI20231220BHJP
H04L 65/60 20220101ALI20231220BHJP
H04L 67/568 20220101ALI20231220BHJP
【FI】
H04N21/61
H04N21/2383
H04L65/60
H04L67/568
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023534680
(86)(22)【出願日】2021-12-16
(85)【翻訳文提出日】2023-06-07
(86)【国際出願番号】 US2021063723
(87)【国際公開番号】W WO2022133039
(87)【国際公開日】2022-06-23
(32)【優先日】2020-12-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】507236292
【氏名又は名称】ドルビー ラボラトリーズ ライセンシング コーポレイション
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】リードミラー,ジェフリー
(72)【発明者】
【氏名】ユイ,ミーンチャオ
(72)【発明者】
【氏名】クラウド,ジェイソン,マイケル
【テーマコード(参考)】
5C164
【Fターム(参考)】
5C164FA06
5C164GA03
5C164SA24P
5C164SB22S
5C164TA14P
5C164TA21S
(57)【要約】
分散システム上でメディアコンテンツを1つ以上のクライアントに配信するための方法が開示される。当該方法は、第1のメディアアセットを表す複数の元のシンボルから複数のネットワークコード化されたシンボルを生成するステップを含んでもよい。当該方法は、第1のメディアアセットの元の複数のコード化されたバリアントを生成するステップを更に含んでもよい。当該方法は、第1のサーバデバイス上の第1のキャッシュに記憶するために、元の複数のコード化されたバリアントの第1のコード化されたバリアントを第1のキャッシュに配布するステップを更に含んでもよい。当該方法は、第2のサーバデバイス上の第2のキャッシュに記憶するために、元の複数のコード化されたバリアントの第2のコード化されたバリアントを第2のキャッシュに配布するステップを更に含んでもよい。
【特許請求の範囲】
【請求項1】
分散システム上でメディアコンテンツを1つ以上のクライアントに配信するための方法であって、
第1のデバイスにおいて、
第1のメディアアセットを表す複数の元のシンボルから複数のネットワークコード化されたシンボルを生成するステップと、
前記第1のメディアアセットの元の複数のコード化されたバリアントを生成するステップであり、各コード化されたバリアントは、(i)前記複数の元のシンボルの1つ以上の元のシンボルと、(ii)前記複数のネットワークコード化されたシンボルの1つ以上のネットワークコード化されたシンボルとのうち少なくとも1つを含む1つ以上のシンボルを含む、ステップと、
第1のサーバデバイス上の第1のキャッシュに記憶するために、前記元の複数のコード化されたバリアントの第1のコード化されたバリアントを前記第1のキャッシュに配布するステップと、
第2のサーバデバイス上の第2のキャッシュに記憶するために、前記元の複数のコード化されたバリアントの第2のコード化されたバリアントを前記第2のキャッシュに配布するステップと
を含む方法。
【請求項2】
(i)前記第1のコード化されたバリアントからの第1のネットワークコード化されたシンボルと、(ii)前記第1のコード化されたバリアントに基づく第1の再コード化されたシンボルとのうち少なくとも1つを含む第1の送信データが、前記第1のキャッシュからクライアントデバイスに送信されるように構成され、
(i)前記第2のコード化されたバリアントからの第2のネットワークコード化されたシンボルと、(ii)前記第2のコード化されたバリアントに基づく第2の再コード化されたシンボルとのうち少なくとも1つを含む第2の送信データが、前記第1のキャッシュからの前記第1の送信データの送信と同時に、前記第2のキャッシュから前記クライアントデバイスに送信されるように構成され、
前記第1の送信データ及び前記第2の送信データは、異なる通信リンクを介して前記クライアントデバイスに送信されるように構成される、請求項1に記載の方法。
【請求項3】
前記異なる通信リンクは、
単一の通信モダリティの異なるチャネルと、
異なる通信モダリティと
のうち少なくとも1つを含む、請求項2に記載の方法。
【請求項4】
前記第1のキャッシュで、前記第1のコード化されたバリアントに基づいて第1の再コード化されたバリアントを生成するステップであり、前記第1の再コード化されたバリアントは、前記第1のコード化されたバリアントに基づく前記第1の再コード化されたシンボルを含む1つ以上の第1の再コード化されたシンボルを含む、ステップを更に含み、
前記第1の再コード化されたバリアントは、データ量の閾値を超え、前記第1の再コード化されたバリアント又は1つ以上の他のコード化されたバリアントから引き出されたいずれかのデータ量が、前記第1のメディアアセットを回復するための前記いずれかのデータ量のデコードを可能にするように、前記元の複数のコード化されたバリアントの前記コード化されたバリアントと機能的に等価である、請求項2又は3に記載の方法。
【請求項5】
前記第1のコード化されたバリアントに基づいて前記第1の再コード化されたバリアントを生成するステップは、
前記第1のキャッシュで、前記第1のコード化されたバリアントからネットワークコード化されたシンボルをデコードして、前記第1のコード化されたバリアントからの前記ネットワークコード化されたシンボルによって表される前記元のシンボルを決定するステップと、
前記第1のキャッシュにおいて、ネットワークコード化を使用して、前記第1のコード化されたバリアントからの前記ネットワークコード化されたシンボルによって表される前記元のシンボルから前記1つ以上の第1の再コード化されたシンボルを生成するステップと
を含む、請求項4に記載の方法。
【請求項6】
前記第1のコード化されたバリアントに基づいて前記第1の再コード化されたバリアントを生成するステップは、
前記第1のキャッシュにおいて、ネットワークコード化を使用して、前記第1のコード化されたバリアントからのネットワークコード化されたシンボルから前記1つ以上の第1の再コード化されたシンボルを生成するステップを含む、請求項4に記載の方法。
【請求項7】
前記第1のキャッシュで、前記第1のサーバデバイス、前記第2のサーバデバイス又は更なるサーバデバイス上の第3のキャッシュに記憶するために、前記第1の再コード化されたバリアントを前記第3のキャッシュに配布するステップを更に含む、請求項4乃至6のうちいずれか1項に記載の方法。
【請求項8】
前記第3のキャッシュは、前記第1のデバイスとの直接通信パスを有さない、請求項7に記載の方法。
【請求項9】
前記第1のキャッシュ及び前記第2のキャッシュのそれぞれによって、前記クライアントデバイスが前記第1のメディアアセットの消費を要求したことを示す要求を受信するステップと、
前記第1のキャッシュが前記要求を受信したことに応じて、前記第1のキャッシュから前記クライアントデバイスへの前記第1の送信データの送信を開始するステップと、
前記第2のキャッシュが前記要求を受信したことに応じて、前記第2のキャッシュから前記クライアントデバイスへの前記第2の送信データの送信を開始するステップと
を更に含む、請求項2乃至8のうちいずれか1項に記載の方法。
【請求項10】
前記第1のキャッシュからの前記第1の送信データの送信と前記第2のキャッシュからの前記第2の送信データの送信とは、前記要求が前記第1のキャッシュ及び前記第2のキャッシュによって受信された後に、前記第1のキャッシュ及び前記第2のキャッシュが前記第1のメディアアセットの一部を受信することなく行われる、請求項9に記載の方法。
【請求項11】
前記元の複数のコード化されたバリアントを生成するステップは、
前記第1のキャッシュの第1のストレージ予算に基づいて第1の所定量のシンボルを含むように前記第1のコード化されたバリアントを生成するステップと、
前記第2のキャッシュの第2のストレージ予算に基づいて第2の所定量のシンボルを含むように前記第2のコード化されたバリアントを生成するステップと
を含む、請求項9又は10に記載の方法。
【請求項12】
前記元の複数のコード化されたバリアントは、
ネットワークデコードを通じて前記第1のメディアアセットの回復を独立して許容するように構成されたフルサイズのコード化されたバリアントと、
ネットワークデコードを通じて前記第1のメディアアセットの回復を独立して許容するように構成されていない部分的にコード化されたバリアントと
のうち少なくとも1つを含む、請求項1乃至11のうちいずれか1項に記載の方法。
【請求項13】
各コード化されたバリアントは、データ量の閾値を超え、いずれか1つ以上のコード化されたバリアントから引き出されたいずれかのデータ量が、前記第1のメディアアセットを回復するための前記いずれかのデータ量のデコードを可能にするように、機能的に等価である、請求項1乃至12のうちいずれか1項に記載の方法。
【請求項14】
各コード化されたバリアント内の前記1つ以上のシンボルは、それぞれのコード化されたバリアント内の他の1つ以上のシンボルのそれぞれから線形独立である、請求項1乃至13のうちいずれか1項に記載の方法。
【請求項15】
ネットワークインタフェースを含む電子デバイスの1つ以上の電子プロセッサによって実行されるように構成された1つ以上のプログラムを記憶する非一時的なコンピュータ可読記憶媒体であって、
前記1つ以上のプログラムは、請求項1乃至14のうちいずれか1項に記載の方法を実行するための命令を含む、非一時的なコンピュータ可読記憶媒体。
【請求項16】
電子デバイスであって、
ネットワークインタフェースと、
1つ以上の電子プロセッサと、
前記1つ以上の電子プロセッサによって実行されるように構成された1つ以上のプログラムを記憶するメモリと
を含み、
前記1つ以上のプログラムは、請求項1乃至14のうちいずれか1項に記載の方法を実行するための命令を含む、電子デバイス。
【請求項17】
分散システム上でメディアコンテンツを受信するための方法であって、
クライアントデバイスで、第1のメディアアセットの消費の要求を複数のキャッシュに送信するステップであり、前記第1のメディアアセットのコード化されたバリアントは、前記複数のキャッシュの各キャッシュに記憶され、各コード化されたバリアントは、前記第1のメディアアセットの元のシンボルをそれぞれ表す1つ以上のシンボルを含み、各コード化されたバリアントは、データ量の閾値を超え、いずれか1つ以上のコード化されたバリアントから引き出されたいずれかのデータ量が、前記第1のメディアアセットを回復するための前記いずれかのデータ量のデコードを可能にするように、機能的に等価である、ステップと、
前記クライアントデバイスで、第1の通信リンクを介して前記複数のキャッシュの第1のキャッシュから第1のコード化されたバリアントをダウンロードするステップと、
前記クライアントデバイスで、前記第1の通信リンクとは異なる第2の通信リンクを介して、前記複数のキャッシュの第2のキャッシュから第2のコード化されたバリアントをダウンロードするステップであり、前記第2のコード化されたバリアントは、前記第1のコード化されたバリアントと同時に受信される、ステップと、
前記クライアントデバイスで、前記第1のコード化されたバリアントと前記第2のコード化されたバリアントとのうち少なくとも1つに含まれる前記1つ以上のシンボルの少なくともいくつかをデコードし、前記第1のメディアアセットを回復するステップと、
前記クライアントデバイスで、出力デバイス上に前記第1のメディアアセットを出力するステップと
を含む方法。
【請求項18】
前記クライアントデバイスで、前記第1のキャッシュと前記第2のキャッシュとのうち少なくとも1つから受信したシンボルの量が、シンボル量の閾値を超えていると決定するステップであり、前記シンボル量の閾値は、前記クライアントデバイスが前記第1のメディアアセットの完全な表現をデコードする能力に基づく、ステップと、
受信した前記シンボルの量が前記シンボル量の閾値を超えていると決定したことに応じて、前記クライアントデバイスで、前記第1のキャッシュからの前記第1のコード化されたバリアントと前記第2のキャッシュからの前記第2のコード化されたバリアントとのうち少なくとも1つのダウンロードを停止するステップと
を更に含む、請求項17に記載の方法。
【請求項19】
前記シンボル量の閾値は、前記第1のメディアアセットのサイズに基づく、請求項18に記載の方法。
【請求項20】
前記クライアントデバイスで、前記第1のキャッシュと前記第2のキャッシュとのうち少なくとも1つから前記クライアントデバイスに送信されるシンボルの量がシンボル量の閾値を超えていると決定するステップであり、前記シンボル量の閾値は、前記シンボルの量が前記クライアントデバイスによって受信されたとき、前記クライアントデバイスが前記第1のメディアアセットの完全な表現をデコードする能力に基づく、ステップと、
前記第1のキャッシュと前記第2のキャッシュとのうち少なくとも1つから前記クライアントデバイスに送信される前記シンボルの量が前記シンボル量の閾値を超えていると決定したことに応じて、前記クライアントデバイスで、前記第1のメディアアセットの消費の前記要求をキャンセルし、前記第1のキャッシュと前記第2のキャッシュとのうち前記少なくとも1つから前記クライアントデバイスへの更なるデータの送信を停止するステップと
を更に含む、請求項17に記載の方法。
【請求項21】
前記第2の通信リンクは、前記第1の通信リンク及び前記第2の通信リンクが、
単一の通信モダリティの異なるチャネルと、
異なる通信モダリティと
のうち少なくとも1つを含むことによって、前記第1の通信リンクとは異なる、請求項17乃至20のうちいずれか1項に記載の方法。
【請求項22】
前記第1のキャッシュからの前記第1のコード化されたバリアントの前記ダウンロードと前記第2のキャッシュからの前記第2のコード化されたバリアントの前記ダウンロードとは、前記要求が前記第1のキャッシュ及び前記第2のキャッシュによって受信された後に、前記第1のキャッシュ及び前記第2のキャッシュが前記第1のメディアアセットの一部を受信することなく行われる、請求項17乃至20のうちいずれか1項に記載の方法。
【請求項23】
前記第1のメディアアセットの消費の前記要求を送信する前に、
複数の利用可能なキャッシュを検出するステップと、
前記複数のキャッシュのうちキャッシュのそれぞれが前記第1のメディアアセットのコード化されたバリアントを含むと決定したことに基づいて、前記複数の利用可能なキャッシュから前記複数のキャッシュを識別するステップと、
前記複数のキャッシュの各キャッシュに接続するステップと
を更に含む、請求項17乃至20のうちいずれか1項に記載の方法。
【請求項24】
前記第1のコード化されたバリアントと前記第2のコード化されたバリアントとのうち少なくとも1つに含まれる前記1つ以上のシンボルの前記少なくともいくつかをデコードし、前記第1のメディアアセットを回復するステップは、前記クライアントデバイスで、前記第1のコード化されたバリアントと前記第2のコード化されたバリアントとのうち少なくとも1つに含まれる前記1つ以上のシンボルから、発信元デバイスによって前記第1のメディアアセットから分割された複数の元のシンボルを生成するステップを含む、請求項17乃至20のうちいずれか1項に記載の方法。
【請求項25】
前記クライアントデバイスで、ネットワークコード化を使用して、前記複数の元のシンボルから1つ以上の再コード化されたシンボルを生成し、再コード化されたバリアントを作成するステップであり、前記再コード化されたバリアントは、前記データ量の閾値を超え、前記再コード化されたバリアント、前記第1のコード化されたバリアント又は前記第2のコード化されたバリアントから引き出された第2のいずれかのデータ量が、前記第1のメディアアセットを回復するための前記いずれかのデータ量のデコードを可能にするように、前記第1のコード化されたバリアント及び前記第2のコード化されたバリアントと機能的に等価である、ステップと、
前記クライアントデバイスで、別のクライアントデバイスと別のキャッシュとのうち少なくとも1つに後で送信するために、前記再コード化されたバリアントを記憶するステップと
を更に含む、請求項24に記載の方法。
【請求項26】
前記複数の元のシンボルから前記1つ以上の再コード化されたシンボルを生成し、前記再コード化されたバリアントを作成するステップは、
前記クライアントデバイスで、前記クライアントデバイスのストレージ予算を決定するステップと、
前記ストレージ予算以下のストレージ空間を消費する、再コード化されたシンボルの量を生成するステップと
を含む、請求項25に記載の方法。
【請求項27】
前記第1のメディアアセットの消費の前記要求を送信するステップは、
前記クライアントデバイスで、前記要求をサーバデバイスに送信するステップと、
前記要求を受信したことに応じて、前記サーバデバイスで、前記第1のキャッシュ及び前記第2のキャッシュを含む前記複数のキャッシュに前記要求を送信するステップと
を含む、請求項17乃至20のうちいずれか1項に記載の方法。
【請求項28】
前記クライアントデバイスに通信可能に結合されたサーバデバイスで、前記第1の通信リンクを介して前記第1のキャッシュから前記第1のコード化されたバリアントをダウンロードするステップと、
前記サーバデバイスで、前記第2の通信リンクを介して前記第2のキャッシュから前記第2のコード化されたバリアントをダウンロードするステップと、
前記サーバデバイスで、前記第1の通信リンク及び前記第2の通信リンクのいずれかとは異なる通信モダリティを使用する第3の通信リンクを介して、前記第1のコード化されたバリアントと前記第2のコード化されたバリアントとのうち少なくとも1つに基づく複数のシンボルを前記クライアントデバイスに送信するステップと
を更に含む、請求項17乃至20のうちいずれか1項に記載の方法。
【請求項29】
前記複数のシンボルは、
前記クライアントデバイスに送信される前に前記サーバデバイスによってデコードされていない、前記第1のコード化されたバリアントと前記第2のコード化されたバリアントとのうち前記少なくとも1つのコード化されたシンボルと、
発信元デバイスによって前記第1のメディアアセットから分割され、前記第1のコード化されたバリアントと前記第2のコード化されたバリアントとのうち前記少なくとも1つの前記コード化されたシンボルのデコードを通じて前記サーバデバイスによって生成された元のシンボルと
のうち少なくとも1つを含む、請求項28に記載の方法。
【請求項30】
前記クライアントデバイスで、前記サーバデバイスから前記複数のシンボルを受信するステップと、
前記クライアントデバイスで、別のキャッシュから前記第1のメディアアセットを表す第2の複数のシンボルを受信するステップと、
前記クライアントデバイスで、前記複数のシンボルと前記第2の複数のシンボルとの少なくともいくつかのシンボルをデコードして、前記第1のメディアアセットを回復するステップと
を更に含む、請求項28又は29に記載の方法。
【請求項31】
前記別のキャッシュは、第2のサーバデバイス又はリモートキャッシュクラスタのローカルキャッシュと第3のキャッシュとのうち少なくとも1つである、請求項30に記載の方法。
【請求項32】
各コード化されたバリアントは、
ネットワークデコードを通じて前記第1のメディアアセットの回復を独立して許容するように構成されたフルサイズのコード化されたバリアントと、
ネットワークデコードを通じて前記第1のメディアアセットの回復を独立して許容するように構成されていない部分的にコード化されたバリアントと
のうち少なくとも1つを含む、請求項17乃至20のうちいずれか1項に記載の方法。
【請求項33】
前記第1のキャッシュは第1のアクセスネットワークの一部であり、前記第2のキャッシュは前記第1のアクセスネットワークとは異なる第2のアクセスネットワークの一部であり、
前記第1のキャッシュから前記第1のコード化されたバリアントをダウンロードするステップは、前記第1のアクセスネットワーク上で通信するステップを含み、
前記第2のキャッシュから前記第2のコード化されたバリアントをダウンロードするステップは、前記第2のアクセスネットワーク上で通信するステップを含む、請求項17乃至20のうちいずれか1項に記載の方法。
【請求項34】
前記第1のアクセスネットワークは、第3世代パートナーシッププロジェクト(3GPP)ネットワーク、第5世代(5G)モバイルネットワーク、第6世代(6G)モバイルネットワーク及び別のモバイルネットワークを含み、
前記第2のアクセスネットワークは、第3世代パートナーシッププロジェクト(3GPP)ネットワーク、第5世代(5G)モバイルネットワーク、第6世代(6G)モバイルネットワーク及び別のモバイルネットワークを含む、請求項33に記載の方法。
【請求項35】
前記クライアントデバイスはモバイルデバイスであり、
前記クライアントデバイスで、前記第1のアクセスネットワークに接続して、前記第1のアクセスネットワーク上で通信するステップと、
前記クライアントデバイスで、前記第1のキャッシュから前記第1のコード化されたバリアントをダウンロードするステップと、
前記クライアントデバイスで、前記第1のアクセスネットワークから切断するステップと、
前記クライアントデバイスで、前記第2のアクセスネットワークに接続して、前記第2のアクセスネットワーク上で通信するステップと、
前記クライアントデバイスで、前記第2のキャッシュから前記第2のコード化されたバリアントをダウンロードするステップと
を更に含む、請求項33又は34に記載の方法。
【請求項36】
前記第1のアクセスネットワークから切断し、前記第2のアクセスネットワークに接続することは、前記クライアントデバイスが前記第1のアクセスネットワークの第1のカバレッジエリアから前記第2のアクセスネットワークの第2のカバレッジエリアに移動したことに応じて行われる、請求項35に記載の方法。
【請求項37】
ネットワークインタフェース及び出力デバイスを含む電子デバイスの1つ以上の電子プロセッサによって実行されるように構成された1つ以上のプログラムを記憶する非一時的なコンピュータ可読記憶媒体であって、
前記1つ以上のプログラムは、請求項17乃至36のうちいずれか1項に記載の方法を実行するための命令を含む、非一時的なコンピュータ可読記憶媒体。
【請求項38】
電子デバイスであって、
ネットワークインタフェースと、
出力デバイスと、
1つ以上の電子プロセッサと、
前記1つ以上の電子プロセッサによって実行されるように構成された1つ以上のプログラムを記憶するメモリと
を含み、
前記1つ以上のプログラムは、請求項17乃至36のうちいずれか1項に記載の方法を実行するための命令を含む、電子デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願への相互参照]
本出願は、2020年12月16日に出願された米国仮出願第63/126,265号に対する優先権を主張し、その全内容を参照により援用する。
【0002】
[技術分野]
本出願は、概して、1人以上のユーザによる消費のためにユーザデバイスがメディアを出力するために、ネットワーク上で視覚及び/又は聴覚メディアを1つ以上のユーザデバイスに配信することに関する。
【発明の概要】
【0003】
本開示の様々な態様は、配信されるメディアコンテンツの一部又は全部をそれぞれ記憶する複数のネットワークソースからユーザデバイスへのメディアコンテンツの配信を提供するためのデバイス、システム及び方法に関する。いくつかの実施形態では、開示されるステム及び方法は、ネットワークのサービス品質(QoS, quality of service)及びレンダリングされたメディアの体感品質(QoE, quality of experience)を改善するために、複数(且つ同時)の情報ソースで動作するときに効率的な動作という望ましい目標を効果的に達成できる方式で、再構築されたコード化されたメディア表現(フォーマット)を利用する。
【0004】
このような解決策は、ネットワークを直接制御することなく(例えば、ネットワーク内のルーティング及び/又は関連するオーケストレーション機能の明示的な制御を必要とすることなく)実装されてもよい。例えば、ここに開示されるシステム及び方法は、メディア配信システム(サーバ及びクライアント)が、各情報ソースからどの特定の情報が要求されてダウンロードされたかを追跡する必要がないようにすることを可能にする。むしろ、ここに開示されるシステム及び方法は、各情報ソースから受信された特定の情報に関係なく、メディアクライアントによってダウンロードされた情報の量を主に追跡する手法を使用する。
【0005】
開示されるシステム及び方法の使用は、基本的に、エンコーダ(例えば、元のソースメディアデータに基づいてコード化された表現を生成するネットワークエンコーダ)又は再エンコーダ(例えば、以前にコード化されたメディア表現に基づいて更なるコード化されたメディア表現を生成するネットワークエンコーダ)によって生成された各コード化されたメディア表現がメディアクライアント(すなわち、ユーザデバイス)にとって有用であることを可能にする。開示されるシステム及び方法は、以下により詳細に説明するように、現在のメディア配信システム及び方法よりも有利な多くの特徴を一意的に提供することができる、非常に柔軟でネットワーク中心のマルチソースメディア表現(すなわち、フォーマット)を生成して処理するネットワークコード化(ネットワークコーディング)とソースコード化(ソースコーディング)との組み合わせを含む。
【0006】
本開示の一実施形態では、分散システム上でメディアコンテンツを1つ以上のクライアントに配信するための方法が提供される。当該方法は、第1のデバイスによって実行されてもよい。当該方法は、第1のメディアアセット(media asset)を表す複数の元のシンボルから複数のネットワークコード化されたシンボルを生成するステップを含んでもよい。当該方法は、第1のメディアアセットの元の複数のコード化されたバリアント(変形, variant)を生成するステップを更に含んでもよい。各コード化されたバリアントは、(i)複数の元のシンボルの1つ以上の元のシンボルと、(ii)複数のネットワークコード化されたシンボルの1つ以上のネットワークコード化されたシンボルとのうち少なくとも1つを含んでもよい1つ以上のシンボルを含んでもよい。当該方法は、第1のサーバデバイス上の第1のキャッシュに記憶するために、元の複数のコード化されたバリアントの第1のコード化されたバリアントを第1のキャッシュに配布するステップを更に含んでもよい。当該方法は、第2のサーバデバイス上の第2のキャッシュに記憶するために、元の複数のコード化されたバリアントの第2のコード化されたバリアントを第2のキャッシュに配布するステップを更に含んでもよい。
【0007】
本開示の別の実施形態では、分散システム上でメディアコンテンツを受信するための方法が提供される。当該方法は、クライアントデバイスで、第1のメディアアセットの消費の要求を複数のキャッシュに送信するステップを含んでもよい。第1のメディアアセットのコード化されたバリアントは、複数のキャッシュの各キャッシュに記憶されてもよい。各コード化されたバリアントは、第1のメディアアセットの元のシンボルをそれぞれ表してもよい1つ以上のシンボルを含んでもよい。各コード化されたバリアントは、データ量の閾値を超え、いずれか1つ以上のコード化されたバリアントから引き出されたいずれかのデータ量が、第1のメディアアセットを回復するためのいずれかのデータ量のデコードを可能にするように、機能的に等価でもよい。当該方法は、クライアントデバイスで、第1の通信リンクを介して複数のキャッシュの第1のキャッシュから第1のコード化されたバリアントをダウンロードするステップを更に含んでもよい。当該方法は、クライアントデバイスで、第1の通信リンクとは異なる第2の通信リンクを介して、複数のキャッシュの第2のキャッシュから第2のコード化されたバリアントをダウンロードするステップを更に含んでもよい。第2のコード化されたバリアントは、第1のコード化されたバリアントと同時に受信されてもよい。当該方法は、クライアントデバイスで、第1のコード化されたバリアントと第2のコード化されたバリアントとのうち少なくとも1つに含まれる1つ以上のシンボルの少なくともいくつかをデコードし、第1のメディアアセットを回復するステップを更に含んでもよい。当該方法は、クライアントデバイスで、出力デバイス上に第1のメディアアセットを出力するステップを更に含んでもよい。
【0008】
別の実施形態では、ネットワークインタフェース及び出力デバイスを含んでもよい電子デバイスの1つ以上の電子プロセッサによって実行されるように構成された1つ以上のプログラムを記憶する、非一時的なコンピュータ可読記憶媒体が提供される。1つ以上のプログラムは、上記の方法のいずれかを実行するための命令を含んでもよい。
【0009】
別の実施形態では、ネットワークインタフェース、出力デバイス、1つ以上の電子プロセッサ及び1つ以上の電子プロセッサによって実行されるように構成された1つ以上のプログラムを記憶するメモリを含んでもよい電子デバイスが提供される。1つ以上のプログラムは、上記の方法のいずれかを実行するための命令を含んでもよい。
【0010】
実施形態の他の態様は、詳細な説明及び添付の図面を考慮することによって明らかになる。
【図面の簡単な説明】
【0011】
【
図1】ここに記載される実施形態によるメディア配信システムの例を示す。
【
図2】一例の実施形態による
図1のメディア配信システムのユーザデバイスのブロック図を示す。
【
図3】一例の実施形態による
図1のメディア配信システムのキャッシュのうち1つのブロック図を示す。
【
図4A】
図4A~4Cは、一例の実施形態による
図1のシステムの発信元デバイスから
図1のシステムのクライアントデバイスにメディアコンテンツを配信するための全体的なデータ処理及び送信の3つの主要な段階のフローチャートを示しており、
図4Aは、一例の実施形態による発信元デバイスによって実行される発信元配布方法を示す。
【
図4B】一例の実施形態による
図1のシステムのキャッシュによって実行されるネットワーク内再配布方法を示す。
【
図4C】一例の実施形態によるクライアントデバイスによって実行されるマルチソースマルチパスダウンロード方法を示す。
【
図5】一例の実施形態による
図1のシステムの発信元デバイスからメディアコンテンツをエンコードして配布するための方法のフローチャートを示す。
【
図6】一例の実施形態による
図1のシステムの発信元デバイスで発生し得る第1のメディアアセットのサーバ側エンコードの例を示す。
【
図7】一例の実施形態による
図1のシステムの発信元デバイスに接続せずに、
図1のシステムの新たなキャッシュで機能的に等価なコード化されたバリアントを作成するための方法のフローチャートを示す。
【
図8】一例の実施形態による
図1のシステムのキャッシュ、ピアデバイス及び/又はクライアントデバイスで発生し得る第1のメディアアセットのネットワーク内再エンコードの例を示す。
【
図9】一例の実施形態による
図1のシステムのキャッシュ、ピアデバイス及び/又はクライアントデバイスで発生し得る第1のメディアアセットのネットワーク内再エンコードの別の例を示す。
【
図10A】一例の実施形態による
図1のシステムのクライアントデバイス上で、マルチソース、マルチパス方式でメディアコンテンツをダウンロードするための方法のフローチャートを示す。
【
図10B】一例の実施形態による
図1のシステムのクライアントデバイス上で、マルチソース、マルチパス方式でメディアコンテンツをダウンロードするための方法のフローチャートを示す。
【
図11】一例の実施形態による
図1のシステムのクライアントデバイス上でのメディアコンテンツのマルチソース、マルチパスのダウンロードの一例を示す。
【
図12】ここに記載される実施形態による別の例のメディア配信システムを示す。
【発明を実施するための形態】
【0012】
現在、インターネット上で配信するためのソースコード化メディアは、ストレージパラダイム、配布パラダイム及び配信パラダイムにわたって、コード化されたメディアのビットレート/解像度毎に単一の数値表現を使用するというレガシーの上に構築されることがある(例えば、基礎となるソースメディアをエンコードする各ビットレート/解像度は特定のビットシーケンスで表される)。現在のオーバーザトップ(OTT, Over-the-Top)配信パラダイムは、従来のソースコード化方法及びセグメントベースのメディアフォーマットを使用することによって、サーバクライアントのシングルパス(ユニキャスト)ストリーミングモデルを利用する。このような現在のモデルでは、非圧縮メディアは、エントロピー、パラメトリック及び知覚的動機付けの技術の組み合わせを使用して、最初に複数のビットレート及び解像度にソースコード化される。次いで、これらのソースコード化されたメディアは、記憶及び1つ以上のユーザデバイスへの配信のために一時的にセグメント化される。この既存の方法は、ユーザデバイス上のビューア/クライアントソフトウェアがネットワーク条件の非決定論的な範囲にわたって動作しつつ、高品質でシームレスなビューア体感をサポートすることを試みて、ストリーミングセッション中に適切なビットレート/解像度を選択的にダウンロードすることを可能にする。
【0013】
ほとんどの場合、上記で説明した現在の手法は、エンドユーザのサービス品質(QoS, Quality of Service)及び体感品質(QoE, Quality of Experience)を改善するための更なる取り組みとして、複数のポイントオブプレゼンス(PoP, Point-of-Presence)を利用して、ソースコード化されたメディア(例えば、サポートされているメディアのビットレート/解像度毎の複数の数値表現)の配置/保存をビューア(すなわち、ユーザデバイス)の近くで複製するコンテンツ配信ネットワーク(CDN, Content Delivery Network)の使用と組み合わせられている。必然的に、この状況は、現在の手法を使用してCDN PoPにわたって高度なメディア複製が存在することを意味する。例えば、ユーザデバイスがキャッシュの1つからコード化された特定のソースを要求する場合に備えて、多くの異なるキャッシュがソースコード化されたメディアの完全なバージョンを記憶することがある。
【0014】
現在のOTTメディアサービス動作では、ユーザデバイス上のメディアプレーヤクライアントソフトウェアは、ソースコード化されたセグメントに対する単一のCDNへの要求を生成し、CDNはこれらの要求をネットワーク内の単一のPoP(すなわち、「ソース」)にリダイレクトすることがある。次いで、CDNは、要求されたメディアセグメントを要求側クライアント(すなわち、ユーザデバイス)に配信(例えば、サービス提供)することによって、クライアント(すなわち、ユーザデバイス)に応答することがある。このメディアクライアント要求及びCDNサーバ応答プロセスは、ユニキャストストリーミングセッションの期間に、ストリーミングセッションの完了まで、或いは、クライアントが(例えば、ネットワーク状態、機能停止を含むCDNのパフォーマンス指標等に基づいて)その要求を異なるCDNに切り替えることが決定されるまで続く。例えば、CDN及び/又はユーザデバイスは、CDNの機能停止又はCDNからの最適でないスループットのような衰退したエンドユーザ体感から回復するために、ユーザデバイスからの要求を現在の時点でよりパフォーマンスの高い異なるCDNに切り替えてもよい。
【0015】
現在、CDN切り替えの解決策は瞬時でもなくシームレスでもない。使用している切り替え手法に応じて、切り替えが行われる前に切り替えが数分の長い遅延を生じることがある。これは、異なるCDNに切り替えるのに要する時間の間に、パフォーマンスの低いCDNの継続使用のような欠点を有する。したがって、パス/CDNの機能停止又は他のタイプの低下したパフォーマンス等から生じる切り替え時間を短縮することは有益である。
【0016】
上記の問題/欠点に寄与する既存のメディアコンテンツ配信システム及び方法の特徴の1つは、CDNを離れる要求されたメディアトラフィックが単一の通信経路上で配信され、ソースコード化されたメディア又は情報ソースの単一の数値表現から引き出されることである。上記の例では、情報ソースは要求にサービス提供する単一のCDNである。OTTメディアサービスが複数のCDNを使用している場合、上記に説明したように、元のソースコード化されたメディア表現(すなわち、ソースコード化されたデータ自体の特定/一意の数値表現及び配置)は各CDNにわたって複製されることがある。したがって、メディアが最初にソースコード化されたときに生成された数値表現の同一のコピーは、使用中の全てのCDN(及びそれぞれのPoP)にわたって複製されることがある。
【0017】
この設定では、クライアントが(例えば、CDN障害に応じて)異なるCDNに切り替えるように指示された場合、クライアントは以前のCDNと同様に同じ情報(例えば、ソースコード化されたメディアの複製された数値表現)を要求する。さらに、切り替え後も、メディアクライアントは実質的に単一の情報ソース(すなわち、異なる単一のCDN)からメディアを要求する。
【0018】
異なるCDNベンダとの間のトラフィックは、コア(パブリック及びプライベート)ネットワーク/クラウド及びインターネットサービスプロバイダを通じて、要求側メディアクライアントとの間で異なるパスを取ってもよいことが知られている。例えば、各CDN ISP、クラウドプロバイダ又はIXPに関連付けられているネットワークトポグラフィ、インフラストラクチャリソース利用率及びルーティングアルゴリズムの違いは、ネットワークトラフィックのパターン及び条件の実際の変動と組み合わされて、トラフィックが異なるパスに沿ってルーティングされることを引き起こすことがある。
【0019】
しかし、CDN内及びCDN間で高度に複製されたソースコード化されたメディア(ここでも、単一の数値表現を使用する)の現在の使用の別の欠点は、この固有のパスの多様性を容易且つ効率的に活用してパフォーマンス上の利点を得ることができないことである。したがって、現在のOTTメディア配信システムでは、メディアクライアントが(一例として、場合によってはサービス復元力、信頼性及びQoE強化のスループットを改善する試みとして)複数のCDNから特定のアセット又はソースコード化されたメディアセグメントを平行して要求した場合、複数のネットワークパス上で配信される全てのCDNからの応答は、かなりの量の冗長情報を含む。例えば、各CDNは、メディアが最初にソースコード化されたときに生成された単一の数値表現の同一のコピーを含む応答を配信する。
【0020】
この結果は、次にCDN内及びCDN間で複製されたメディアの元のソースコード化(単一の数値表現を生成したもの)によるものである。この手法は、ネットワークリソース(例えば、リンク利用率、リンク時間、伝送媒体上のタイムスロット、リンク帯域幅、ネットワークコンピュータリソース、ネットワークストレージリソース等)を浪費するので、不利である。OTTサービスは、クライアントにとって有用ではない冗長情報の配信に対して料金を支払っているので、このような浪費は全体としてかなりのコストオーバーヘッドを発生させる。同様に、現在のシステムの別の欠点は、過剰な冗長情報が受信して処理される(例えば、破棄される)必要があるので、下流のリソース(例えば、クライアントの計算、ストレージ及びネットワークリソース)も浪費されることである。典型的には限られたリソースを有するモバイルクライアントデバイスにとって、リソースの消費の低減は電力消費を低減し、バッテリー駆動デバイスの場合にはバッテリー寿命を改善する。
【0021】
1つのタイプのクライアント実装はまた、CDN情報ソースのそれぞれからの冗長情報のダウンロードを最小化するために、複雑なスケジューリングアルゴリズムを採用することを試みることがある。しかし、サーバとクライアントとの間のネットワークの非決定論的な性質のため、継続的な各パスにわたる要求されたセグメントのダウンロードの効率的なリアルタイムスケジューリング及びサイズ設定は、エラーが発生しやすくなる。これらのエラーは、バッファリングの増加等を含む、レンダリングされるQoEの低減を生じる可能性がある。
【0022】
したがって、複数の情報ソース(複数のCDN又は他のタイプのネットワークストレージ及びキャッシュパラダイムを含む)で動作しつつ、上記で説明した既存のメディア配信システムの効率及びパフォーマンスの課題に効果的に対処する実装しやすい解決策はまだ作成されていない。しかし、このような解決策は、少なくとも上記の理由から望ましいものであり、既存のメディア配信システム及び方法に関して上記の技術的問題に対処するための技術的改善を提供する。
【0023】
このような解決策を提供するための1つの方法は、ネットワークQoS及びレンダリングされたメディアQoEを改善するために、複数(且つ同時の)情報ソースで動作するときに、効率的な動作という望ましい目標を効果的に達成できる方式で、コード化されたメディア表現(フォーマット)自体を再構築することである。このような解決策は、ネットワークを直接制御することなく(例えば、ネットワーク内のルーティング及び/又は関連するオーケストレーション機能の明示的な制御を必要とすることなく)実装されてもよい。
【0024】
ここに開示されるいくつかの実施形態は、複雑なスケジューリングを採用する負担又はネットワークルーティングを制御する負担なしに、冗長情報の流れが非常に少ないか或いは全くない、高度に相互接続されたネットワーク(例えば、インターネット、CDN又はISPネットワーク)の固有のマルチパスアーキテクチャを通じて、時間変化する情報伝達能力を効率的に活用できる、コード化されたマルチソースメディア表現の使用を採用する1つ以上の方法を含む。言い換えると、ここに開示されるシステム及び方法は、メディア配信システム(サーバ及びクライアント)が、各情報ソースからどの特定の情報が要求されてダウンロードされたかを追跡する必要がないようにすることを可能にする。むしろ、ここに開示されるシステム及び方法は、各情報ソースから受信された特定の情報に関係なく、メディアクライアントによってダウンロードされた情報の量を主に追跡する手法を使用する。
【0025】
開示されるシステム及び方法の使用は、基本的に、エンコーダ(例えば、元のソースメディアデータに基づいてコード化された表現を生成するネットワークエンコーダ)又は再エンコーダ(例えば、以前にコード化されたメディア表現に基づいて更なるコード化されたメディア表現を生成するネットワークエンコーダ)によって生成された各コード化されたメディア表現がメディアクライアント(すなわち、ユーザデバイス)にとって有用であることを可能にする。
【0026】
メディアクライアントが複数の情報ソースから引き出す場合に複数の経路で(平行して)動作する場合、開示されるシステム及び方法は、最もパフォーマンスの高いネットワーク経路、情報ソース(CDN、キャッシュ等)へのゼロの切り替え時間もサポートし、機能停止、
瞬間的なパスのパフォーマンス低下等に対する高い復元力がある。これらの特徴は、現在のメディア配信システムに関する上記の技術的問題に対処し、改善したメディア配信システム及び方法を生じる。全体として、開示されるシステム及び方法は、最終的に、現在存在する単一の数値表現ベースのメディアソースコード化方法では達成できない、更なるレベルのネットワークQoS及びエンドユーザQoEパフォーマンスを達成することをもたらす。
【0027】
さらに、複数の経路上の動作及び複数の情報ソースの使用は、各PoPで情報のサブセットのみ(情報の全部ではない)をトランスペアレントにキャッシュする能力を提供することで、複数のPoPにわたってキャッシュされたコンテンツをより効率的に管理するための新たな機会を可能にする。次いで、この情報は、必要に応じて他のPoPに再配布できる。キャッシュされたコンテンツをより効率的に管理するためのこれらの機会は、キャッシュされる情報の量をかなり低減し、この情報を情報ソースの全部の中で情報ソースの全部にわたって動的に展開するために必要な通信を低減し得る。したがって、キャッシュされたコンテンツをより効率的に管理するためのこれらの機会は、現在のメディア配信システム及び方法よりも更なる技術的な改善を提供する。
【0028】
開示されるシステム及び方法は、現在のメディア配信システム及び方法よりも有利な多くの特徴を一意的に提供することができる、非常に柔軟でネットワーク中心のマルチソースメディア表現(すなわち、フォーマット)を生成して処理するネットワークコード化とソースコード化との組み合わせを含む。
【0029】
例えば、開示されるシステム及び方法は、CDN、CDN PoP及び他のタイプのネットワーク/クラウドストレージ(例えば、ISPにおけるオープンキャッシュ)のような複数(及且つ動的)の情報ソースで平行して動作するときに効率的な動作を提供する。別の例として、開示されるシステム及び方法は、配信されるメディアについてのネットワーク信頼性及び効率を改善し、ネットワーク配信されるメディアのQoS及びQoEを改善する。いくつかの実施形態では、QoSは、スループット、スループットジッタ、機能停止への回復力等を示し得る。いくつかの実施形態では、QoEは、再生ビットレート/解像度、リバッファリング割合、再生中の品質シフト、最初の1バイトまでの時間(TTFB, time to first byte)等の改善を示し得る。
【0030】
開示されるシステム及び方法はまた、マルチパス、異種アクセス技術上の簡略化された動作、ピア支援システム、新たなICNアーキテクチャを含む分散システムを介して、フィードバック、データ駆動ネットワークパフォーマンス分析及び/又は複雑な状態及びパス管理を必要とせずに、新しいより効率的なストレージ、配布及び配信パラダイムを可能にし得る。
【0031】
開示されるシステム及び方法はまた、(発信元デバイスに記憶されている)元のメディアソースに戻る必要なく、既存のものから新たな機能的に等価なマルチソースメディア表現をネットワーク内で生成することを可能にし得る。このようなマルチソースメディア表現のこのネットワーク内生成は、コストを低減し、ネットワークのパフォーマンスを改善し得る。いくつかの実施形態では、開示されるシステム及び方法は、いずれかの基礎となるソースコーデックで動作し得る。開示されるシステム及び方法は、シームレスな(場合によっては瞬間的な)CDNパス切り替え及びオフロードを提供し得る。
【0032】
上記の利点の中で、ここに開示されるシステム及び方法によって利用される、基盤となるネットワーク中心のマルチソースメディア表現は、通信システムで利用されるグローバルネットワーク及びクラウドランドスケープの本質的に分散型で非集中型の相互接続された(マルチパスの)動的な(非決定論的)性質に対して、効率的且つ信頼性の高い動作を行うための新たな/更なる柔軟性を業界に提供する。
【0033】
図1は、メディア配信システム100の例を示す。システム100は、非集中型のコード化されたマルチソース、マルチパスのメディア配信システム100でもよい。いくつかの実施形態では、システム100は、ソースコード化された元のメディアファイル110(すなわち、メディアアセット)のようなメディアコンテンツを含む発信元サーバ105(すなわち、発信元デバイス105)を含む。
図1に示すように、システム100はまた、キャッシュ120(すなわち、キャッシュクラスタ/サーバデバイス115A、115B、115C)の1つ以上のクラスタ115A-Cを含んでもよい。各キャッシュクラスタ115は、データファイルを記憶してサービス提供できる複数の接続されたキャッシュ120を含んでもよい。クラスタ115のいくつかの例は、コンテンツ配信ネットワーク(CDN, content delivery network)、一式のエッジコンピューティングノード、キャッシュ能力を有する一式のインターネットサービスプロバイダ(ISP, Internet service provider)ノード、一式のピアユーザデバイス125A及び125B、又は2つ以上の異なるタイプのキャッシュ120(例えば、第1のキャッシュタイプと第1のキャッシュタイプとは異なる第2のキャッシュタイプとを少なくとも含む)を含むハイブリッドクラスタを含む。
【0034】
いくつかの実施形態では、キャッシュ120又は1つ以上のキャッシュ120を含むクラスタ115は、接続されたクライアントデバイス(例えば、テレビ、セットトップボックス、タブレット又はスマートフォンのようなモバイルデバイス等)、ゲートウェイデバイス(ケーブルモデム、ホームネットワークアプライアンス等)、又はメディアコンテンツを記憶してサービス提供できるいずれかのデバイスを含んでもよい。いくつかの実施形態では、ピアデバイス125は、以下により詳細に説明するように、キャッシュ機能を提供するユーザデバイス130である。言い換えると、典型的にはキャッシュ120によって実行されるキャッシュ機能を実行するユーザデバイス130は、ピアデバイス125と呼ばれてもよい。
【0035】
いくつかの実施形態では、システム100は、元のメディアファイル110の消費を要求するエンドユーザデバイス130(すなわち、エンドユーザクライアントデバイス、クライアントデバイス又はユーザデバイス)を含む。例えば、ユーザデバイス130は、元のメディアファイル110の表現を、元のエンコードされたビットレート/品質又は元のものではないビットレート/品質でローカルに記憶、再生又は処理するように構成されてもよい。システム100は、1つ以上のユーザデバイス130を含んでもよい。いくつかの実施形態では、ユーザデバイス130は、携帯電話/スマートフォン、タブレット、コンピュータ、車載インフォテインメントシステム、ゲームシステム、セットトップボックス、スマートテレビ、スマートスピーカ、オーディオ/ビデオ受信機、メディアストリーミングデバイス、サウンドバー、拡張現実/仮想現実ヘッドセットのようなウェアラブルデバイス、又はユーザがメディアコンテンツを消費するために使用し得る他のデバイスを含んでもよい。いくつかの実施形態では、ユーザデバイス130はまた、例えば、ここに記載されるようにキャッシュ120によって実行される機能と同一又は同様のキャッシュ機能を実行することによって、接続されたキャッシュとして機能してもよい。
【0036】
図1に示すように、システム100は、システム100のコンポーネントが相互に通信し得るシステム100のコンポーネントの間の通信リンク132を含んでもよい。いくつかの実施形態では、通信リンク132は双方向通信リンクである。全ての通信リンクが
図1において明示的にラベル付けされているとは限らないが、システム100のコンポーネントの間の線/矢印は通信リンクを示す。いくつかの実施形態では、発信元デバイス105とユーザデバイス130との間のシステム100のコンポーネント及び通信リンク132はネットワークと呼ばれてもよい。
【0037】
いくつかの実施形態では、メディアコンテンツを要求及び/又は受信するシステム100のいずれかの要素はクライアント(例えば、中間ノード/キャッシュ120の要求側/受信機及びメディアコンテンツをデコードしてレンダリングする要求側/受信機)と呼ばれてもよい。クライアントは、キャッシュ120、ピアデバイス125及びクライアントデバイス130を含んでもよい。例えば、キャッシュ120がユーザへの再生のためにメディアコンテンツをレンダリング/出力しないことがある場合でも、他のキャッシュ120、ピアデバイス125及びクライアントデバイス130による将来のアクセスのためにメディアコンテンツを要求して記憶するとき、キャッシュ120はクライアントとなってもよい。別の例として、クライアントデバイス130は、ユーザへの再生のためにレンダリング/出力するためのメディアコンテンツをユーザに要求するとき、クライアントとなってもよい。しかし、システム100のこれらのデバイス/要素のそれぞれ(例えば、キャッシュ120、ピアデバイス125及びクライアントデバイス130)は、場合によっては、以前に記憶されたメディアコンテンツをシステム100の他のデバイス/要素に提供してもよい。このような場合、以前に記憶されたメディアコンテンツを提供するデバイス/要素は、クライアントとして動作していると見なされなくてもよい。
【0038】
ここで上記に説明したように、既存のメディア配信システムでは、発信元サーバは、元のメディアファイル110の複製のために、元のメディアファイル110を、発信元サーバに通信可能に結合された全てのキャッシュに配布する。対照的に、開示されるシステム100のいくつかの実施形態では、発信元サーバ105は、ネットワークコード化を使用して、元のメディアファイル110の一意的にコード化された表現のセット(すなわち、バリアント)を作成し、バリアントを1つ以上の接続されたキャッシュ120に配布する(
図5及び以下の対応する説明を参照する)。これらのコード化されたバリアントはそれぞれ、例えば、2017年1月13日に出願された米国出願第15/405,874号、現在の米国特許第10,581,554号、2020年1月23日に出願された米国出願第16/750,185号、及び2020年1月27日に出願された米国出願第16/634,568号に記載されるように、元のメディアファイル110の一意的な表現を含む。それぞれの全内容を参照により援用する。さらに、バリアントはサイズが異なってもよい。例えば、フルサイズのバリアント135(ネットワークデコードを通じて元のメディアファイル110の回復を独立して可能にする)は、部分的なバリアント140(十分な情報を有さないので、ネットワークデコードを通じて元のメディアファイル110の回復を独立して可能にしない)よりも大きい。バリアント135、140は互いに同じサイズ又は異なるサイズにすることができるが、バリアント135、140は、バリアント135、140のいずれかのセットから引き出されたいずれかの十分な量のデータ(例えば、データ量の閾値を超えるいずれかのデータ量)が元のメディアファイル110のデコードを可能にするという意味で、機能的に等価(FE, functionally equivalent)である。いくつかの実施形態では、Kが(例えば、発信元のサーバ105又は発信元のサーバ105の上流のデバイスによって)元のメディアファイル110が分割される元のシンボルの数であると仮定すると、2つのバリアント135、140は、2つのバリアント135、140からのいずれかのセットのシンボル(K個のシンボルまで)が革新的なセット(すなわち、K個の線形独立シンボル)を形成する場合、機能的に等価である。言い換えると、2つのバリアント135、140からいずれかK個のシンボルをダウンロードすると、例えば、2017年1月13日に出願された米国出願第15/405,874号、現在の米国特許第10,581,554号及び2020年1月23日に出願された米国出願第16/750,185号に記載されるように、いずれかK個のシンボルをダウンロードしたデバイスによる元のメディアファイル110の回復が可能になる。それぞれの全内容を参照により援用する。
【0039】
既存のメディア配信システムでは、元のサーバに接続されていないキャッシュは、その近隣の1つに接続して、元のメディアファイル110の複製を作成する。対照的に、開示されるシステム100では、キャッシュ120は複数の近隣のキャッシュ120に接続し、近隣のキャッシュ120のFEバリアント135、140を効率的に使用して、元のメディアファイル110の独自の(例えば、新たな或いは異なる)FEバリアント135、140を作成する。いくつかの実施形態では、適切なネットワークコードによって、元のメディアファイル110をデコードすることなく、キャッシュ120によるFEバリアント135、140の生成が達成できる。新たに作成されたFEバリアントはまた、完全なバリアント135又は部分的なバリアント140とすることもできる。さらに、ここで前述したように、ユーザデバイス130は、ピアユーザデバイス125としてキャッシュされたデータを提供することによって、キャッシュ120として機能してもよい。
【0040】
上記のコード駆動型配布メカニズムは、各キャッシュ120が同じ元のメディアファイル110の異なるが機能的に等価なバリアント135、140を記憶する非集中型メディア配信システムを実現する。このシステムは、例えば、ユーザデバイス130による、効率的で非集中型のマルチソース、マルチパスのダウンロードを可能にする。例えば、ユーザデバイス130は、複数のキャッシュ120から並列に、場合によっては異なる通信リンク132(例えば、他の通信リンクの中でも通信リンク132D及び132F)を介して、メディアアセットをダウンロードできる。次いで、ユーザデバイス130は、元のメディアファイル110のサイズに相当する(或いは元のメディアファイル110のサイズにいくつかの更なる量の情報を加えたものに相当する)集約された量の情報を受信すると、全てのプロセス内ダウンロードを終了してもよい。次いで、ネットワークデコードを通じて、ユーザデバイス130は元のメディアファイル110を回復し、ユーザによる消費のために元のメディアファイル110を出力してもよい。したがって、ユーザデバイス130は、ダウンロードコストを増加させることなく(例えば、複数のキャッシュ120から無関係/重複情報をダウンロードすることなく)、全ての通信リンク132の集約された帯域幅及び安定性から恩恵を受けることができる。
【0041】
いくつかの実施形態では、システム100は、
図1に示すものとは異なる更なるコンポーネント又はより少ないコンポーネントを含む。
図1では、いくつかのコンポーネント(例えば、キャッシュ120、通信リンク132、完全なバリアント135及び部分的なバリアント140)はアルファベットの接尾語を使用してラベル付けされ、このようなコンポーネントを他の同様の名前のコンポーネントと区別している。さらに、
図1は、多くの同様のコンポーネント(例えば、キャッシュ120、通信リンク132、完全なバリアント135及び部分的なバリアント140)の複数のインスタンスを示している。しかし、
図1において、各コンポーネントの全てのインスタンスが別々の参照符号でラベル付けされているとは限らない。それにもかかわらず、コンポーネントのラベルのないインスタンスも、ラベルが付けられた同じ名前のコンポーネントと同様に機能する。
【0042】
ここで上記に説明したように、ここで説明するシステム100のメディア配信技術は、ユーザデバイスが一度に1つのキャッシュにのみ接続して元のメディアファイル110をダウンロードする既存の単一ソース、単一パスの配信技術の改善である。この既存の技術のパフォーマンスは、キャッシュとユーザデバイスとの間の単一のリンクによって制限され、キャッシュ又はリンクの劣化及び障害に脆弱である。さらに、ここで説明するシステム100のメディア配信技術は、各キャッシュから重複データをダウンロードすること(例えば、CDN)を回避するために、ユーザデバイスによるダウンロードの間に、時間を浪費してエラーが発生しやすいスケジューリングを必要としないので、既存の単一ソース、単一パスの配信技術の改善である。
【0043】
図2は、一例の実施形態によるユーザデバイス130(すなわち、クライアントデバイス130)のブロック図である。上記のように、ユーザデバイス130は、テレビ、タブレット、スマートフォン、コンピュータ等のような、多くの異なるタイプのユーザデバイス130を含んでもよい。図示の実施形態では、ユーザデバイス130は、第1の電子プロセッサ205(例えば、マイクロプロセッサ又は他の電子デバイス)を含む。第1の電子プロセッサ205は、入力及び出力インタフェース(図示せず)を含み、第1のメモリ210、第1のネットワークインタフェース215、オプションのマイク220、スピーカ225及びディスプレイ230に電気的に結合される。いくつかの実施形態では、ユーザデバイス130は、
図2に示すものとは異なる構成のより少ないコンポーネント又は更なるコンポーネントを含む。例えば、ユーザデバイス130は、マイク220を含まなくてもよい。別の例として、ユーザデバイス130は、ユーザデバイス130のユーザからの入力を受け取るコンピュータマウス及び/又はキーボードのような1つ以上の更なる入力デバイスを含んでもよい。更に別の例として、ユーザデバイス130は、位置追跡デバイス(例えば、全地球測位システム(GPS, global positioning system)受信機)を含んでもよい。いくつかの実施形態では、ユーザデバイス130は、以下に説明する機能以外の機能を実行する。
【0044】
第1のメモリ210は、読み取り専用メモリ(ROM, read only memory)、ランダムアクセスメモリ(RAM, random access memory)、他の非一時的なコンピュータ可読媒体、又はこれらの組み合わせを含んでもよい。第1の電子プロセッサ205は、第1のメモリ210から命令及びデータを受信し、とりわけ命令を実行するように構成される。特に、第1の電子プロセッサ205は、ここで説明する方法を実行するように、第1のメモリ210に記憶された命令を実行する。
【0045】
第1のネットワークインタフェース215は、1つ以上の通信リンク132上で、システム100の他のコンポーネント(例えば、キャッシュ120、ユーザデバイス130でもよいピアデバイス125、発信元デバイス105等)との間でデータを送信/受信してもよい。いくつかの実施形態では、第1のネットワークインタフェース215は、システム100の他のコンポーネントと無線通信するための1つ以上のトランシーバを含む。代替として或いはさらに、第1のネットワークインタフェース215は、システム100の他のコンポーネントの1つ以上との有線接続を収容するためのコネクタ又はポート(イーサネットケーブル等)を含んでもよい。第1の電子プロセッサ205は、第1のネットワークインタフェース215を通じて、1つ以上の通信リンク132上で1つ以上のメディアアセット(例えば、ビデオ、オーディオデータ、別のデータストリーム又はファイル等)を受信してもよい。第1の電子プロセッサ205は、スピーカ225、ディスプレイ230又はこれらの組み合わせを通じて(すなわち、ユーザによる消費のために)、第1のネットワークインタフェース215を通じて受信した1つ以上のメディアアセットを出力してもよい。さらに、第1の電子プロセッサ205は、第1のネットワークインタフェース215を通じて、1つ以上の通信リンク132上でユーザデバイス130によって生成されたデータをシステム100の他のコンポーネントに通信してもよい。例えば、第1の電子プロセッサ205は、キャッシュ120の1つ以上からメディアアセットを要求してもよい。次いで、要求されたメディアアセットの記憶されているバリアントを有するキャッシュ120は、ユーザデバイス130からの要求を受信したことに応じて、これらの記憶されているバリアントをユーザデバイス130に送信してもよい。
【0046】
ディスプレイ230は、ユーザデバイス130のユーザに画像、ビデオ、テキスト及び/又はデータを表示するように構成される。ディスプレイ230は、液晶ディスプレイ(LCD, liquid crystal display)画面又は有機発光ディスプレイ(OLED, organic light emitting display)表示画面でもよい。いくつかの実施形態では、タッチセンシティブ入力インタフェースがディスプレイ230にも組み込まれてもよく、ユーザがディスプレイ230上で提供されるコンテンツと相互作用することを可能にする。いくつかの実施形態では、ディスプレイ230はプロジェクタ又は将来開発されるディスプレイ技術を含む。いくつかの実施形態では、スピーカ225及びディスプレイ230は、ユーザデバイス130のユーザにメディア及び他の情報を提示する出力デバイスと呼ばれる。いくつかの実施形態では、マイク220、コンピュータマウス及び/又はキーボード若しくはタッチセンシティブディスプレイは、ユーザデバイス130のユーザからの入力を受け取る入力デバイスと呼ばれる。
【0047】
図3は、一例の実施形態によるシステム100のキャッシュ120の1つのブロック図である。図示の例では、キャッシュ120は、第2のメモリ310及び第2のネットワークインタフェース315に電気的に接続された第2の電子プロセッサ305を含む。これらのコンポーネントは、
図2に関して上記に説明したユーザデバイス130の同様の名前のコンポーネントと同様であり、上記に説明したのと同様の方式で機能する。いくつかの実施形態では、第2のネットワークインタフェース315は、1つ以上の通信リンク132を介してユーザデバイス130とデータを送受信する。いくつかの実施形態では、キャッシュ120は、
図3に示すものとは異なる構成の、より少ないコンポーネント又は更なるコンポーネントを含む。例えば、キャッシュ120は、バックエンドユーザがキャッシュ120の設定又はルールを再プログラムすることを可能にするように、タッチスクリーンのようなディスプレイを更に含んでもよい。いくつかの実施形態では、キャッシュ120は、以下に説明する機能以外の機能を実行する。
【0048】
いくつかの実施形態では、システム100の他のキャッシュ120及び/又は他のコンポーネント(例えば、発信元デバイス105、ピアデバイス125等)は、
図2のユーザデバイス130及び/又は
図3のキャッシュ120に関して上述したものと同様の要素を含む。いくつかの実施形態では、ユーザデバイス130はまた、以下により詳細に説明するように、キャッシュ機能を提供するピアデバイス125としても機能してもよい。
【0049】
図2及び
図3は、ユーザデバイス130及びキャッシュ120の1つの別々のブロック図を示しているが、いくつかの実施形態では、ユーザデバイス130、発信元デバイス105、1つ以上のキャッシュ120、1つ以上のピアデバイス125又はこれらの組み合わせは、ここで説明する機能を実行する電子コンピューティングデバイスと呼ばれてもよい。例えば、電子コンピューティングデバイスは、キャッシュ120又は発信元デバイス105に位置する単一の電子プロセッサ(例えば、キャッシュ120の第2の電子プロセッサ305)又は複数の電子プロセッサでもよい。他の実施形態では、電子コンピューティングデバイスは、異なるデバイスに分散された複数の電子プロセッサを含む。例えば、電子コンピューティングデバイスは、ネットワーク内の複数のキャッシュ120にわたって分散された複数の第2の電子プロセッサ305に実装される。
【0050】
図4A~4Cは、一例の実施形態に従ってメディアコンテンツを発信元デバイス105からユーザデバイス130に配信するための全体的なデータ処理及び送信の3つの主要な段階のフローチャートを示す。3つの主要な段階は、
図4Aの発信元配布方法400と、
図4Bのネットワーク内再配布方法430と、
図4Cのマルチソースマルチパスダウンロード方法460とを含む。方法400、430及び460は、一般的なエンドツーエンドのメディア配信ステップを示すハイレベルの方法であり、以下に更なる図面に関してより詳細に説明する。
【0051】
いくつかの実施形態では、発信元配布方法400は、発信元デバイス105によって実行され、それぞれの接続されたキャッシュ120のストレージ予算に基づいて、接続されたキャッシュ120(例えば、
図1のキャッシュ120A-120D)の第1のメディアアセット(例えば、
図1の元のメディアファイル110)を表す異なる機能的に等価なバリアント(例えば、完全又は部分的)を作成する。いくつかの実施形態では、ネットワーク内再配布方法430は、発信元デバイス105に接続されていないキャッシュ120(例えば、
図1のキャッシュ120E及び120F)によって実行され、既存のキャッシュ120(例えば、キャッシュ120A-120D)のセットからコード化されたバリアントに含まれるコード化された情報をダウンロードして、独自の機能的に等価なコード化されたバリアントを作成する。いくつかの実施形態では、マルチソースマルチパスダウンロード方法460は、クライアントデバイス130によって実行され、複数のキャッシュ120からコード化されたバリアントに含まれるコード化された情報を平行してダウンロードし、第1のメディアアセット(例えば、
図1の元のメディアファイル110)をデコードするのに十分な情報が取得されたと決定したことに応じて、情報のダウンロードを終了する。
【0052】
図4Aを参照すると、いくつかの実施形態では、方法400は発信元デバイス105(すなわち、第1のデバイス)によって実行される。ブロック405において、発信元デバイス105の電子プロセッサは、第1のメディアアセットを表す複数の元のシンボルから複数のネットワークコード化されたシンボル(すなわち、コード化されたシンボル)を生成する。いくつかの実施形態では、複数の元のシンボルは、第1のメディアアセットの元のバージョン(例えば、
図1の元のメディアファイル110)を等しい長さのシンボル(例えば、以下に
図5に関してより詳細に説明するような「K」の量の等しい長さのシンボル)に分割することによって生成される。複数の元のシンボルを生成するための元の第1のメディアアセットのこの分割は、発信元デバイス105によって実行されてもよく、或いは、発信元デバイス105が単に複数の元のシンボルを受信するように発信元デバイス105の上流のデバイスによって実行されてもよい。
【0053】
いくつかの実施形態では、ブロック410において、発信元デバイス105は、第1のメディアアセットの元の複数のコード化されたバリアントを生成する。いくつかの実施形態では、各コード化されたバリアントは、(i)複数の元のシンボルの1つ以上の元のシンボルと、(ii)複数のネットワークコード化されたシンボルの1つ以上のネットワークコード化されたシンボルとのうち少なくとも1つを含む、1つ以上のシンボルを含む。コード化されたバリアントの生成は、
図5に関して以下に更に詳細に説明する。
【0054】
いくつかの実施形態では、発信元デバイス105は、異なるコード化されたバリアントを、発信元デバイス105(例えば、
図1のキャッシュ120A-D)に通信可能に結合された複数の異なるキャッシュ120に配布するように構成される。例えば、ブロック415において、発信元デバイス105は、第1のキャッシュ120に記憶するために、元の複数のコード化されたバリアントの第1のコード化されたバリアント(例えば、コードバリアント135A)を第1のサーバデバイス(例えば、キャッシュクラスタ115A)上の第1のキャッシュ120(例えば、キャッシュ120B)に配布してもよい。別の例として、ブロック420において、発信元デバイス105は、第2のキャッシュ120に記憶するために、元の複数のコード化されたバリアントの第2のコード化されたバリアント(例えば、コード化されたバリアント135B)を第2のサーバデバイス(例えば、キャッシュクラスタ115B)上の第2のキャッシュ120(例えば、キャッシュ120D)に配布してもよい。いくつかの実施形態では、第1のキャッシュ120は、第1のアクセスネットワーク(例えば、第3世代パートナーシッププロジェクト(3GPP(登録商標), 3rd Generation Partnership Project)ネットワーク、第5世代(5G, fifth generation)モバイルネットワーク、第6世代(6G, sixth generation)モバイルネットワーク、別のモバイルネットワーク等)の一部であり、第2のキャッシュ120は、第1のアクセスネットワークとは異なる第2のアクセスネットワーク(例えば、異なる3GPPネットワーク、5Gネットワークモバイルネットワーク、6Gモバイルネットワーク、別のモバイルネットワーク等)の一部である。したがって、発信元デバイス105は、キャッシュ120に記憶するために、異なるアクセスネットワーク上で通信し、コード化されたバリアントを様々なキャッシュ120に配布してもよい。いくつかの実施形態では、異なるアクセスネットワーク上でのキャッシュ120へのコード化されたバリアントの配布は、ハイブリッド配布又はハイブリッド方式で発生する配布と呼ばれてもよい。
【0055】
図4Bを参照すると、いくつかの実施形態では、方法430は、発信元デバイス105に通信可能に接続されていない1つ以上のキャッシュ120(例えば、
図1のキャッシュ120E及び120F)の第2の電子プロセッサ305によって実行される。いくつかの実施形態では、ブロック435において、発信元デバイス105に接続されていない1つ以上のキャッシュ120は、第1のメディアアセットのそれぞれのストレージ予算を決定する。例えば、キャッシュ120のそれぞれは、第1のメディアアセット(例えば、元のメディアファイル110)のコード化されたバリアントに含まれるコード化された情報を記憶する目的で、それぞれのキャッシュ120が割り当てる第2のメモリ310内のストレージ空間の量を決定してもよい。
【0056】
いくつかの実施形態では、ブロック440において、発信元デバイス105に接続されていない1つ以上のキャッシュ120(例えば、
図1のキャッシュ120E及び120F)は、ダウンロードされた1つ以上のコード化されたバリアントに含まれるコード化された情報の量がキャッシュ120のそれぞれのストレージ予算に対応するように、他のキャッシュ120(例えば、
図1の近隣のキャッシュクラスタ115Bのキャッシュ120C及び120D)から1つ以上のコード化されたバリアントをダウンロードする。いくつかの実施形態では、ブロック445において、発信元デバイス105に接続されていない1つ以上のキャッシュ120は、ダウンロードされた1つ以上のコード化されたバリアントに含まれるコード化された情報を使用して、第1のメディアアセットの新たなコード化されたバリアントを生成する。次いで、発信元デバイス105に接続されていない1つ以上のキャッシュ120は、他のキャッシュ120及び/又はクライアントデバイス130による将来のアクセスのために、これらの新たなコード化されたバリアントを記憶してもよい。いくつかの実施形態では、発信元デバイス105に接続されていない1つ以上のキャッシュ120の複数のキャッシュ120は、互いに異なるアクセスネットワーク(例えば、異なる3GPPネットワーク、5Gネットワークモバイルネットワーク、6Gモバイルネットワーク、別のモバイルネットワーク等)の一部である。したがって、
図4Aに関して上記に説明したハイブリッド配布の状況と同様に、発信元デバイス105に接続されたキャッシュ120は、発信元デバイス105に接続されていないキャッシュ120に記憶するために、異なるアクセスネットワーク上で通信し、コード化されたバリアントを発信元デバイス105に接続されていない様々なキャッシュ120に配布してもよい。言い換えると、発信元デバイス105に接続されたキャッシュ120は、他のキャッシュ120へのコード化されたバリアントのハイブリッド再配布に関与することができる。
【0057】
同様に、発信元デバイス105に接続されていないキャッシュ120の観点から、このキャッシュ120は、第1のアクセスネットワーク(例えば、3GPPネットワーク、5Gネットワークモバイルネットワーク、6Gモバイルネットワーク、別のモバイルネットワーク等)の一部である第1のキャッシュ120と、第1のアクセスネットワークとは異なる第2のアクセスネットワーク(例えば、異なる3GPPネットワーク、5Gネットワークモバイルネットワーク、6Gモバイルネットワーク、別のモバイルネットワーク等)の一部である第2のキャッシュとから、コード化されたバリアントをダウンロードしてもよい。したがって、発信元デバイス105に接続されていないキャッシュ120は、第1のアクセスネットワーク上で通信して第1のキャッシュ120から第1のコード化されたバリアントをダウンロードしてもよく、第2のアクセスネットワーク上で通信して第2のキャッシュ120から第2のコード化されたバリアントをダウンロードしてもよい。言い換えると、発信元デバイス105に接続されていないキャッシュ120は、異なるアクセスネットワーク上で通信して、様々なキャッシュ120からコード化されたバリアントをダウンロードしてもよい(すなわち、ハイブリッド方式でコード化されたバリアントをダウンロードする)。
【0058】
図4Cを参照すると、いくつかの実施形態では、方法460はクライアントデバイス130によって実行される。いくつかの実施形態では、ブロック465において、クライアントデバイス130の第1の電子プロセッサ205は、第1のメディアアセット(例えば、元のメディアファイル110)の消費の要求を(例えば、第1のネットワークインタフェース215を介して)複数のキャッシュ120(例えば、
図1のキャッシュ120A、120C、120E)に送信する。上記の方法400及び430によって示されるように、いくつかの実施形態では、第1のメディアアセットのコード化されたバリアントは、複数のキャッシュ120の各キャッシュ120に記憶されてもよい。いくつかの実施形態では、各コード化されたバリアントは、第1のメディアアセットの元のシンボルをそれぞれ表す1つ以上のシンボルを含む。いくつかの実施形態では、例えば、2017年1月13日に出願された米国特許第15/405,874号、現在の米国特許第10,581,554号、2020年1月23日に出願された米国出願第16/750,185号、及び2020年1月27日に出願された米国出願第16/634,568号に記載されるように、各コード化されたバリアントは、データ量の閾値を超え、いずれか1つ以上のコード化されたバリアントから引き出されたいずれかのデータ量が、第1のメディアアセット(例えば、元のメディアファイル110)を回復するためのいずれかのデータ量のデコードを可能にするように、機能的に等価である。それぞれの全内容を参照により援用する。
【0059】
いくつかの実施形態では、ブロック470において、クライアントデバイス130は、第1の通信リンクを介して、複数のキャッシュ120の第1のキャッシュ(例えば、キャッシュ120C)から第1のコード化されたバリアント(例えば、コード化されたバリアント140B)をダウンロードする。いくつかの実施形態では、ブロック475において、クライアントデバイス130は、第1の通信リンクとは異なる第2の通信リンクを介して、第2のキャッシュ(例えば、キャッシュ120E)から第2のコード化されたバリアント(例えば、コード化されたバリアント135F)をダウンロードする。いくつかの実施形態では、第1のキャッシュ120は、第1のアクセスネットワーク(例えば、3GPPネットワーク、5Gネットワークモバイルネットワーク、6Gモバイルネットワーク、別のモバイルネットワーク等)の一部であり、第2のキャッシュ120は、第1のアクセスネットワークとは異なる第2のアクセスネットワーク(例えば、異なる3GPPネットワーク、5Gネットワークモバイルネットワーク、6Gモバイルネットワーク、別のモバイルネットワーク等)の一部である。したがって、クライアントデバイス130は、第1のアクセスネットワーク上で通信して第1のキャッシュ120から第1のコード化されたバリアントをダウンロードしてもよく、第2のアクセスネットワーク上で通信して第2のキャッシュ120から第2のコード化されたバリアントをダウンロードしてもよい。言い換えると、クライアントデバイス130は、異なるアクセスネットワーク上で通信して、様々なキャッシュ120からコード化されたバリアントをダウンロードしてもよい(すなわち、ハイブリッド方式でコード化されたバリアントをダウンロードする)。
【0060】
いくつかの実施形態では、第2のコード化されたバリアント(例えば、コード化されたバリアント135F)は、第1のコード化されたバリアント(例えば、コード化されたバリアント140B)と同時に受信される。言い換えると、いくつかの実施形態では、ブロック470及び475は同時に実行されてもよい。例えば、クライアントデバイス130は、いくつかの状況では異なるアクセスネットワーク上で同時に通信してもよい。
【0061】
いくつかの実施形態では、第2のコード化されたバリアントは、第1のコード化されたバリアントの後に受信される。第1及び第2のアクセスネットワークを含む上記の例を続けると、以下に説明するように、クライアントデバイス130が第1のアクセスネットワークから切断され、第2のアクセスネットワークに接続された後に、第2のコード化されたバリアントが受信されてもよい。いくつかの実施形態では、クライアントデバイス130は、スマートフォンのようなモバイルデバイスでもよい。第1の位置において、クライアントデバイス130は、第1のアクセスネットワークに接続して、第1のアクセスネットワーク上で通信して、第1のキャッシュ120から第1のコード化されたバリアントをダウンロードしてもよい。次いで、クライアントデバイス130は、クライアントデバイス130の通信の管理の移行/ハンドオフが発生するように、別の位置に移動してもよい(例えば、クライアントデバイス130の通信の管理が他のエンティティによって処理されるように切り替えられる)。例えば、クライアントデバイス130は、或るセル/カバレッジエリアから別のセル/カバレッジエリアに移動してもよく、その結果、クライアントデバイス130の通信の管理が、第1のセルの第1の基地局による処理から、第2のセルの第2の基地局による処理に切り替えられる。いくつかの実施形態では、第1の基地局を通じた通信は第1のアクセスネットワーク上の通信と考えられてもよく、第2の基地局を通じた通信は第2のアクセスネットワーク上の通信と考えられてもよい。いくつかの状況では、第1及び第2の基地局が全く同じキャッシュ120にアクセスしなくてもよい。言い換えると、キャッシュ120は、第1のアクセスネットワーク上でクライアントデバイス130にアクセス可能でもよいが、第2のアクセスネットワーク上ではアクセス可能でなくてもよい。いくつかの実施形態では、キャッシュ120は双方のアクセスネットワーク上でクライアントデバイス130にアクセス可能でもよいが、第2のアクセスネットワークに接続した後に第1のアクセスネットワークで進行中のダウンロードを継続するには、移行/ハンドオフ中に2つの基地局の間で発生する更なるスケジュールを必要としてもよい。
【0062】
しかし、これらの問題は、機能的に等価なコード化されたバリアントがいずれかのソースからダウンロードできる通信システム100において発生するダウンロードのハイブリッドの性質によって克服される。このハイブリッドダウンロードプロセスにより、クライアントデバイス130が第1のアクセスネットワークの第1のカバレッジエリアから第2のアクセスネットワークの第2のカバレッジエリアに移動することに応じて、クライアントデバイス130は、単に第1のアクセスネットワークから切断し、第2のアクセスネットワークに接続すればよい。次いで、クライアントデバイス130は、第1のアクセスネットワーク上での第1のキャッシュ120からの第1のコード化されたバリアントの進行中のダウンロードを継続する必要なく、第2のアクセスネットワーク上での第2のキャッシュ120からの第2のコード化されたバリアントをダウンロードしてもよい。したがって、システム100は、第1のアクセスネットワーク上で進行中のダウンロードを継続するために、2つのアクセスネットワークの間で複雑なスケジューリングを行う必要はない。むしろ、システム100は、時間の経過とともに異なるアクセスネットワークに出入りするモバイルクライアントデバイス130によって、コード化されたシンボル/バリアントのシームレスなダウンロードを可能にする。
【0063】
いくつかの実施形態では、ブロック480において、クライアントデバイス130は、第1のコード化されたバリアントと第2のコード化されたバリアントとのうち少なくとも1つに含まれる1つ以上のシンボルの少なくとも一部をデコードして、第1のメディアアセット(例えば、元のメディアファイル110)を回復する。いくつかの実施形態では、ブロック485において、クライアントデバイス130は、(例えば、スピーカ225及び/又はディスプレイ230を使用して)クライアントデバイス130の出力デバイスに第1のメディアアセット(例えば、元のメディアファイル110)を出力する。
【0064】
いくつかの実施形態では、ネットワーク内再配布方法430及びマルチソースマルチパスダウンロード方法460が同時に/並行して発生してもよい。いくつかの実施形態では、マルチソースマルチパスダウンロード方法460は、クライアントデバイス130が第1のメディアアセット(例えば、元のメディアファイル110)の表現の消費を要求しているという決定に従って開始される。例えば、クライアントデバイス130は、第1のメディアアセットの要求を接続されたCDN(例えば、
図1のキャッシュクラスタ115A)に送信してもよい。いくつかの実施形態では、CDNからのメディアコンテンツに対するクライアントデバイスの要求は、CDNに配信される前に傍受される。このような実施形態では、クライアントデバイスの要求は、要求されたメディアコンテンツに対応するコード化されたバリアントを含む1つ以上のCDN内の指定のキャッシュ120に対する複数の要求に置き換えられる(例えば、変換される)。いくつかの実施形態では、クライアントデバイスの要求を受信したCDNは、クライアントデバイス130が複数のキャッシュ120のコード化されたバリアントに含まれるコード化された情報のマルチソースマルチパスダウンロードに関与することを可能にするように、上記の指定のキャッシュ120への複数の要求を生成してもよい。
【0065】
図5は、一例の実施形態に従って、発信元デバイス105からメディアコンテンツをエンコードして配布するための方法500のフローチャートを示す。いくつかの実施形態では、方法500は、
図4Aの発信元配布方法400のより詳細な方法であり、
図4Aの方法400の一部として実行されてもよい。いくつかの実施形態では、方法500のブロックのほとんど又は全てが、発信元デバイス105の電子プロセッサによって実行される。
【0066】
いくつかの実施形態では、ブロック505において、発信元デバイス105は、第1のメディアアセット(例えば、元のメディアファイル110)を等しい長さのシンボル(すなわち、データブロック)に分割する。例えば、発信元デバイス105は、第1のメディアアセット(例えば、ソースエンコードされたメディアファイル)をバイトストリームとして扱い、上流のメディアソースのコード化及び/又はパッケージ化のステップ(例えば、MPEG DASH(Dynamic Adaptive Streaming over HTTP(ハイパーテキスト転送プロトコル, hypertext transfer protocol))又はHTTPライブストリーミング(HLS, HTTP live streaming)パッケージングを用いるか或いは用いないMPEG(Moving Picture Experts Group)ビデオ等)を使用して、第1のメディアアセットを「K」個の等しい長さのシンボルに分割する。いくつかの実施形態では、等しい長さの分割を可能にするために、補助バイトが第1のメディアアセットに添付されてもよい。いくつかの実施形態では、シンボルの数「K」は、計算上の複雑さ及びヘッダのオーバーヘッドのような可変のメトリックを利用するように選択される。上記のように、いくつかの実施形態では、ブロック505は、発信元デバイス105自体によって実行されるのではなく、発信元デバイス105の上流のデバイスによって実行される。いくつかの実施形態では、第1のメディアアセットは、より大きな/完全なメディアアセットの一部(例えば、元のメディアファイル110の一部)である。
【0067】
いくつかの実施形態では、ブロック510において、発信元デバイス105は、ネットワークコードを使用して、元のK個のシンボルから特定量(K’)のコード化されたシンボル(すなわち、ネットワークコード化されたシンボル)を作成する。発信元デバイス105は、第1のメディアアセット(例えば、元のメディアファイル110)のコード化されたバリアントについてのそれぞれのキャッシュ120のストレージ予算に基づいて、キャッシュ120毎にK’個のコード化されたシンボルを作成してもよい。言い換えると、キャッシュ120毎に作成されたコード化されたシンボルの量K’は、各キャッシュ120が第1のメディアアセットに関連付けられた情報を記憶するために割り当てたストレージ空間の量(すなわち、ストレージ予算)に対応してもよい。例えば、発信元デバイスは、(i)第1のコード化されたバリアントが第1のキャッシュ120の第1のストレージ予算に基づいて第1の所定量のシンボルを含み、(ii)第2のコード化されたバリアントが第2のキャッシュ120の第2のストレージ予算に基づいて第2の所定量のシンボルを含むように、元の複数のコード化されたバリアントを生成してもよい。いくつかの実施形態では、第1のキャッシュ120及び第2のキャッシュ120のストレージ予算は異なってもよく或いは同じでもよい。
【0068】
いくつかの実施形態では、K’はK以下である。例えば、所与のキャッシュ120についてK’がKに等しい場合、そのキャッシュ120は、K個のシンボルを含む完全なコード化されたバリアント135を記憶するのに十分な空間をその第2のメモリ310において割り当てている。他方、所与のキャッシュ120についてK’がK未満である場合、そのキャッシュ120は、K個のシンボル未満を含む部分的にコード化されたバリアント140のみを記憶するのに十分な空間を第2のメモリ310において割り当てている。いくつかの実施形態では、発信元デバイス105がブロック510を実行する前に、キャッシュ120は、第1のメディアアセットのそれぞれのストレージ予算を発信元デバイス105に提供してもよい。いくつかの実施形態では、ブロック510において発信元デバイス105によって実行されるネットワークコード化は、いずれかの消去又はネットワークコードを含んでもよい。例えば、発信元デバイス105は、線形ブロックコード(例えば、低密度パリティ検査(LDPC, low-density parity-check)コード)、線形レートレスコード(例えば、噴水コード)、ネットワークコード(例えば、ランダム線形ネットワークコード(Random Linear Network Code))等を使用してもよい。いくつかの実施形態では、元のK個のシンボル(すなわち、1つ以上のコード化されていないシンボル)の1つ以上が、コード化されたバリアントを構成するシンボル(すなわち、K’個のコード化されたシンボル)に含まれてもよい。
【0069】
いくつかの実施形態では、ブロック515において、発信元デバイス105は、キャッシュ120毎にK’個のコード化されたシンボルにヘッダを添付することによって、コード化されたバリアント(例えば、機能的に等価なコード化されたバリアント)を形成する。いくつかの実施形態では、ヘッダは、コード化されたバリアントの(例えば、ファイル名又はファイルIDを追加することによる)識別、(例えば、線形係数を加算することによる)デコード及び/又は(例えば、ファイルハッシュ又は元のパケットハッシュを追加することによる)検証を可能にする。いくつかの実施形態では、ヘッダは、各コード化されたシンボルのパケットヘッダと、各コード化されたバリアントのブロックヘッダとを含む。
【0070】
いくつかの実施形態では、ブロック520において、発信元デバイス105は、キャッシュ120による記憶のために、コード化されたバリアントをキャッシュ120に送信する。いくつかの実施形態では、各キャッシュ120は、第1のメディアアセットを表す1つのコード化されたバリアント(部分的又は完全)を記憶する。発信元デバイス105は、通信プロトコル(例えば、伝送制御プロトコル(TCP, transmission control protocol)等)を使用して、通信リンク132上でコード化されたバリアントをキャッシュ120に送信してもよい。
【0071】
いくつかの実施形態では、各コード化されたバリアント内の一意のコード化されたシンボルは各キャッシュ120に配布され、コード化されたシンボルの革新性(例えば、線形独立)を保証し、それによって各コード化されたバリアントの機能的な等価性を保証する。言い換えると、各コード化されたバリアントは、データ量の閾値を超え、いずれかのキャッシュ120からのいずれかの1つ以上のコード化されたバリアントから引き出されたいずれかのデータ量が、第1のメディアアセット(例えば、元のメディアファイル110)を回復するためのいずれかのデータ量のデコードを可能にするように、機能的に等価でもよい。例えば、クライアントデバイス130がいずれか1つ以上のキャッシュ120からKの量のコード化されたシンボルを受信する限り、クライアントデバイス130は、K個のコード化されたシンボルをデコードして第1のメディアアセット(例えば、元のメディアファイル110)を回復できる。
【0072】
いくつかの実施形態では、コード化されたシンボルの一意性は、コード化されたシンボルの線形独立と同義である。いくつかの実施形態では、各コード化されたバリアント内の1つ以上のコード化されたシンボルは、それぞれのコード化されたバリアント及び/又は他のコード化されたバリアント(例えば、他のキャッシュ120に記憶されている)内の他の1つ以上のコード化されたシンボルのそれぞれから線形独立である。いくつかの実施形態では、線形独立は、コード化されたシンボルのグループ内(例えば、コード化されたバリアント内及び/又はシステム100内の全てのコード化されたバリアント内)の各コード化されたシンボルが、コード化されたシンボルのグループ内の他の全てのコード化されたシンボルから一意/線形独立であることを意味する。例えば、コード化されたシンボルが(i)これらの所与シンボルを使用して生成できず(例えば、このシンボルは、コード化されたシンボルのセットにまたがるベクトル空間から線形独立であり、その結果、所与のシンボルを線形に組み合わせることによって生成できない)、(ii)K個の元のシンボルを使用して生成できる場合、コード化されたシンボルは、所与のコード化されたシンボルのセットに対して線形独立であり、有用なシンボルであることを意味する。一意/革新的なコード化されたシンボルの更なる詳細は、2017年1月13日に出願された米国出願第15/405,874号、現在の米国特許第10,581,554号及び2020年1月23日に出願された米国出願第16/750,185号に記載されており、それぞれの全内容を参照により援用する。
【0073】
いくつかの実施形態では、線形独立は、コード化されたシンボルのグループ内の各コード化されたシンボルが、コード化されたシンボルのグループ内の他のほとんどのコード化されたシンボルから一意/線形独立である(例えば、コード化されたシンボルの99%、95%、90%等よりも多くが互いに線形独立である)ことを意味する。言い換えると、いくつかの実施形態では、コード化されたシンボルのグループ内のコード化されたシンボルの小さい割合が線形独立でないことがあるが、それにもかかわらず、コード化されたシンボルのグループは線形独立のコード化されたシンボルのグループと考えられてもよい。いくつかの実施形態では、線形独立は、コード化されたシンボルのグループ内で生成された各コード化されたシンボルが、コード化されたシンボルのグループ内の他のコード化されたシンボルから一意/線形独立である高い確率(例えば、99%、95%、90%等のような所定の閾値を超える確率)を有することを意味する。例えば、この確率は、コード化されたシンボルを生成するために使用されるネットワークコード化のタイプに基づいてもよい。
【0074】
図6は、一例の実施形態による発信元デバイス105で発生し得る第1のメディアアセット(例えば、元のメディアファイル110)のサーバ側エンコードの例を示す。言い換えると、
図6は、
図5の方法500の具体的な実装例を示す。
【0075】
図6に示すように、発信元サーバ105は、(ステップ605において)元のメディアファイル110をK=10個の等しい長さの元のシンボル610に分割してもよい。次いで、発信元サーバは、(ステップ615において)これらのシンボル610を使用して、ネットワークコード化を使用してコード化されたシンボル625(すなわち、ネットワークコード化されたシンボル625)を作成してもよい)。いくつかの実施形態では、ネットワークコード化615はエンコード関数620の使用を含む。例えば、コード化されたシンボル625は、最初の8つの元のシンボル610のビット毎のXOR関数を使用してエンコードされてもよい。ネットワークコード化の更なる例は、
図5のブロック510に関して、上記にここで提供されている。ネットワークコード化の更なる詳細は、2017年1月13日に出願された米国出願第15/405,874号、現在の米国特許第10,581,554号及び2020年1月23日に出願された米国出願第16/750,185号に記載されており、それぞれの全内容を参照により援用する。
【0076】
K’=10個の完全なストレージ予算を有するキャッシュ120(例えば、
図1のキャッシュ120D)について、発信元サーバ105は、
図6の左側に示すように、10個のコード化されたシンボル625を作成する。例えば、6つのコード化されたシンボル625のより低いストレージ予算を有するキャッシュ120について、発信元デバイス105は、
図6の右側に示すように、別の6つの革新的なコード化されたシンボル625を作成する。ステップ630において、発信元デバイス105は、作成されたコード化されたシンボル625をコード化されたバリアント135、140にパッケージ化する。これを行うために、発信元デバイス105は、適切なパケットヘッダ635を各コード化されたシンボル625に追加してコード化されたパケットを作成し、適切なブロックヘッダ640をコード化されたパケットの各セットに追加して、機能的に等価なコード化されたバリアント135、140を形成する。2つの機能的に等価なコード化されたバリアント135、140が
図6の例に示されている。コード化されたバリアント135は、K=10個のコード化されたシンボル625を含むので、完全なコード化されたバリアントである。コード化されたバリアント140は、K未満のコード化されたシンボル625を含むので、部分的なバリアントである。コード化されたバリアント135、140は、
図1の通信チャネル132を介して、対応するキャッシュ120(例えば、
図1のキャッシュ120D及び120C)に送信されてもよい。
【0077】
図7は、一例の実施形態に従って、発信元サーバ105に接続することなく、新たなキャッシュ120(例えば、
図1のキャッシュクラスタ115Cのキャッシュ120E及び/又は120F)において機能的に等価なコード化されたバリアントを作成するための方法700のフローチャートを示す。いくつかの実施形態では、方法700は、
図4Bのネットワーク内再配布方法430のより詳細な方法であり、
図4Bの方法430の一部として実行されてもよい。いくつかの実施形態では、方法700のブロックのほとんど又は全てが、発信元デバイス105に接続されていないキャッシュ120(例えば、
図1のキャッシュ120E及び/又は120F)の第2の電子プロセッサ305によって実行される。
【0078】
いくつかの実施形態では、ブロック705において、キャッシュ120は、そのメモリ310のストレージ予算を決定し、ストレージ予算は、第1のメディアアセット(例えば、元のメディアファイル110)に関連付けられた情報を記憶するために割り当てられるメモリ空間の量を示す。例えば、ここでの以前の例で使用されているように、第1のメディアアセットがKの量の元のシンボルを含むと仮定すると、キャッシュ120のストレージ予算はK’でもよく、K’はK以下でもよい。ストレージ予算は、全体の第1のメディアアセットの或る割合でもよい。ストレージ予算は、どのメディアコンテンツがキャッシュ120によって事前にキャッシュされるべきか(例えば、最近に多数のクライアントデバイス130による視聴を要求された人気ビデオ)を示す、システム100の他のコンポーネントからキャッシュ120によって受信された情報に基づいて決定されてもよい。いくつかの実施形態では、ストレージ予算及び/又は事前にキャッシュされるメディアコンテンツは、クライアントデバイス130からの要求に応じてキャッシュ120によって以前にダウンロードされたメディアコンテンツに基づいて決定される。
【0079】
いくつかの実施形態では、ブロック710において、キャッシュ120は、第1のメディアアセットを表すコード化されたバリアントを記憶している1つ以上の他のキャッシュ120(例えば、
図1の近隣のキャッシュクラスタ115Bのキャッシュ120C及び/又は120D)を検出して接続する。第1のメディアアセットを表すコード化されたバリアントを記憶している他の1つ以上のキャッシュ120を検出するために、キャッシュ120は、マニフェスト解析、ドメインネームシステム(DNS, domain name system)検索、ピア検出、バリアント係数比較、キャッシュ系列追跡等を使用してもよい。いくつかの実施形態では、ブロック715において、キャッシュ120は、他のキャッシュ120のそれぞれによって記憶されているコード化されたバリアント(例えば、他のキャッシュ120からの他のコード化されたバリアントの中で、
図1のキャッシュ120Cからのコード化されたバリアント140B)を要求する。いくつかの実施形態では、キャッシュ120は、複数の他のキャッシュ120に記憶されているコード化されたバリアントのヘッダ及びコード化されたシンボルを平行して要求する。キャッシュ120からこの要求を受信したことに応じて、第1のメディアアセットを表すコード化されたバリアントを記憶している他のキャッシュ120のそれぞれは、記憶されているコード化されたバリアントのヘッダ及びコード化されたシンボルをキャッシュ120に送信する。いくつかの実施形態では、他のキャッシュ120のうち1つ以上が計算能力を有する場合、キャッシュ120は、(ブロック715において)1つ以上の他のキャッシュ120が、それぞれの記憶されているコード化されたバリアントに含まれるコード化されたシンボルに基づくネットワークコード化を使用して、1つ以上のキャッシュ120によって生成された再エンコードされたバリアント(再エンコードされたシンボル及び新たなヘッダを含む)を送信することを要求してもよい。このような再エンコードは、キャッシュ120が、計算能力を有する他のキャッシュ120から線形独立のコード化されたシンボルをダウンロードする機会を増加させてもよい。
【0080】
いくつかの実施形態では、ブロック720において、キャッシュ120は他のキャッシュ120から少なくとも閾値量のコード化されたシンボルを受信したと決定する。閾値量は、キャッシュ120のメモリ310のストレージ予算に対応してもよい。例えば、閾値量は、ストレージ予算K’と等しくてもよく、或いは、ストレージ予算K’に何らかの所定の量を加えた量と等しくてもよく、他のキャッシュ120から少なくともK’個のコード化されたシンボルの量が受信されることを保証する。いくつかの実施形態では、閾値量は、(例えば、キャッシュ120が第1のメディアアセットを完全にデコードし、
図8に関して以下に説明するようにデコードされた元のシンボルから新たなシンボルを再エンコードするように構成される実施形態では)第1のメディアアセットが分割された元のシンボルの量K(例えば、10)と等しくてもよい。
【0081】
ブロック725において、キャッシュ120が他のキャッシュ120から少なくとも閾値量のコード化されたシンボルを受信したと決定したことに応じて、キャッシュ120は他のキャッシュ120に記憶されているコード化されたバリアントのシンボルのダウンロードを停止してもよい。いくつかの実施形態では、少なくとも閾値量のコード化されたシンボルが他のキャッシュ120からキャッシュ120に向かっていると決定したことに応じて、キャッシュ120は他のキャッシュに記憶されているコード化されたバリアントのシンボルのダウンロードを停止してもよい。例えば、キャッシュ120は、全てのこのようなシンボルがまだ受信されていない場合であっても、少なくとも閾値量のコード化されたシンボルが他のキャッシュ120によって送信されたことを(他のキャッシュ120との通信を通じて)認識してもよい。いくつかの実施形態では、キャッシュ120は、少なくとも量K’のコード化されたシンボル及び最大で量Kのコード化されたシンボルを受信したことに応じて、コード化されたシンボルのダウンロードを停止してもよい。
【0082】
いくつかの実施形態では、ブロック730において、キャッシュ120は、他のキャッシュ120からの受信したコード化されたシンボルに基づいて、再コード化されたシンボルを作成する。いくつかの実施形態では、再コード化されたシンボルを作成するために、キャッシュ120は、最初に他のキャッシュ120からのコード化されたシンボル(すなわち、ネットワークコード化されたシンボル)をデコードしてもよい。言い換えると、キャッシュ120は、他のキャッシュ120からの1つ以上の第1のコード化されたバリアントからネットワークコード化されたシンボルをデコードし、1つ以上の第1のコード化されたバリアントからネットワークコード化されたシンボルによって表される元のシンボルを決定してもよい。例えば、キャッシュ120は、第1のメディアアセットが最初に分割された元のシンボルの量に対応する量Kのコード化されたシンボルをダウンロードしてもよい。キャッシュ120は、K個の元のシンボルをデコードするためにコード化されたシンボルを使用してもよい。次いで、キャッシュ120は、ネットワークコード化を使用して、1つ以上の第1のコード化されたバリアントからのネットワークコード化されたシンボルによって表される元のシンボルから1つ以上の第1の再コード化されたシンボル(例えば、K’の量の再コード化されたシンボル)を生成してもよい(例えば、
図8を参照する)。
【0083】
いくつかの実施形態では、再コード化されたシンボルを作成するために、キャッシュ120は他のキャッシュ120からのコード化されたシンボルをデコードしなくてもよい。例えば、キャッシュ120は、ネットワークコード化を使用して、他のキャッシュ120から受信した1つ以上の第1のコード化されたバリアントからのネットワークコード化されたシンボルから1つ以上の第1の再コード化されたシンボルを生成してもよい。
【0084】
キャッシュ120が1つ以上の第1の再コード化されたシンボル(すなわち、再エンコードされたシンボル)を作成する前に、他のキャッシュ120からのコード化されたシンボルがデコードされるかどうかにかかわらず、いくつかの実施形態では、ブロック735において、キャッシュ120は、キャッシュ120(例えば、メモリ310)に記憶される新たなコード化されたバリアント(すなわち、再コード化されたバリアント又は再エンコードされたバリアント)に、再コード化されたシンボルをパッケージ化する。言い換えると、キャッシュ120は、再コード化されたバリアント(第1のメディアアセットを表す)を生成し、再コード化されたバリアントは1つ以上の再コード化されたシンボルを含む。例えば、キャッシュ120は、再コード化されたシンボルに適切なパケットヘッダ及びブロックヘッダを追加して、発信元デバイス105によるコード化されたバリアントの初期生成に関して
図6で上記に説明したのと同様の方式で、独自の再コード化されたバリアントを形成する。他のキャッシュ120から受信したコード化されたバリアントのコード化されたシンボルと同様に、キャッシュ120は、他のキャッシュ120のコード化されたバリアントに対して機能的に等価/線形独立になる(例えば、発信元デバイス120によって生成されて他のキャッシュ120に配布された元の複数のコード化されたバリアントに機能的に等価/線形独立になる)ように再コード化されたバリアントを生成する。言い換えると、ここで上記に説明した元の複数のコード化されたバリアントと同様に、データ量の閾値を超え、第1の再コード化されたバリアント又はいずれか1つ以上の他のコード化されたバリアントから引き出されたいずれかのデータ量は、第1のメディアアセットを回復するためのいずれかのデータ量のデコードを可能にする。
【0085】
図7には図示しないが、いくつかの実施形態では、キャッシュ120は、他のキャッシュ120及び/又はクライアントデバイス130が再コード化されたバリアントを検出してダウンロードし得るように、機能的に等価なコピーとして記憶している新たに作成された再コード化されたバリアントを登録してもよい。いくつかの実施形態では、キャッシュ120は、更に別のキャッシュ120に記憶するために、再コード化されたバリアントを、第1のサーバデバイス(例えば、キャッシュクラスタ115)、第2のサーバデバイス(例えば、キャッシュクラスタ115)又は更なるサーバデバイス(例えば、キャッシュクラスタ115)上の更に別のキャッシュ120に配布する。いくつかの実施形態では、更に別のキャッシュ120は、発信元デバイス105(例えば、
図1のキャッシュ120E及び120F)との直接通信パス又は発信元デバイスへのアクセスを有さない。したがって、更に別のキャッシュ120は、発信元デバイス105(すなわち、第1のデバイス)との直接通信パス又は発信元デバイス105へのアクセスを有し得る他のキャッシュ120から、コード化されたバリアント又は再コード化されたバリアントをダウンロードしてもよい。
【0086】
いくつかの実施形態では、いずれかのキャッシュ120が
図7の方法700を実行してもよい。例えば、方法700は、(i)発信元デバイス105からコード化されたバリアントを直接受信して独自の再コード化されたバリアントを生成するキャッシュ120によって、及び/又は(ii)発信元デバイス105との直接通信パス又は発信元デバイス105へのアクセスを有さず、他のキャッシュ120からコード化されたバリアント及び/又は再コード化されたバリアントを受信して独自の再コード化されたバリアントを生成するキャッシュによって実行されてもよい。いくつかの実施形態では、1つ以上のクライアントデバイス130は、キャッシュ120と同様のコード化されたバリアント記憶機能を実行するピアデバイス125として動作してもよい。したがって、いくつかの実施形態では、1つ以上のクライアントデバイス130及び/又はピアデバイス125は、方法700を実行して、他のキャッシュ120、ピアデバイス125及び/又はクライアントデバイス130によって検出可能な独自の再コード化されたバリアントを生成してもよい。
【0087】
いくつかの実施形態では、システム100の1つ以上のデバイスは、キャッシュ120から、様々なメディアコンテンツの記憶されているコード化されたバリアントを削除することを決定してもよい。例えば、キャッシュ120自体が、第1のメディアアセットのストレージ予算を変更してもよく、その結果、第1のメディアアセットの変更されたストレージ予算を考慮して、第1のメディアアセットのそのコード化されたバリアントに含まれるシンボルの一部又は全てが削除される。同様に、キャッシュ120は、別のデバイス(例えば、発信元デバイス105又はクライアントデバイス130)から、第1のメディアアセットのそのコード化されたバリアントに含まれるシンボルの一部又は全てが削除されるべきであることを示す命令を受信してもよい(例えば、閾値量の近隣のキャッシュ120/ピアデバイス125が第1のメディアアセットを表すコード化されたバリアントを記憶しているため)。上記の例で示されているように、システム100を通じた異なるデバイス上のコード化されたバリアント内のコード化されたシンボルの記憶は、キャッシュとして機能するために利用可能なデバイスの数、このような各デバイスのストレージ予算のサイズ、特定のメディアコンテンツに対するクライアントデバイス130からの需要等に依存して、本質的に動的である(すなわち伸縮可能である)。
【0088】
図8は、一例の実施形態によるキャッシュ120、ピアデバイス125及び/又はクライアントデバイス130で発生し得る第1のメディアアセット(例えば、元のメディアファイル110)のネットワーク内再エンコードの例を示す。言い換えると、
図8は、
図7のブロック730に関して上記に説明したように、デコード及びエンコードを介して再コード化されたバリアント835を作成する
図7の方法700の具体的な実装例を示す。
図8に示す例では、
図1のキャッシュ120Fは、以下に更に詳細に説明するように、再コード化されたバリアント835を作成する。
【0089】
図8に示す例では、キャッシュ120Fは、第1のメディアアセットについてK’=7個のコード化されたシンボルのストレージ予算を有する。(
図7のブロック710において)第1のメディアアセットを表すコード化されたバリアントを含むキャッシュ120の検出を実行した後に、キャッシュ120Fは3つの近隣のキャッシュ120(例えば、キャッシュ120C及び120D並びに1つの更なるキャッシュ120)に接続する。
図8に示す例では、キャッシュ120Dは完全なバリアント135(K=10個のコード化されたシンボルを含む)を記憶し、キャッシュ120C及び他のキャッシュ120はそれぞれ記憶された部分的なバリアント140(10未満のK’個のコード化されたシンボルを含む)を有する。さらに、
図8に示す例では、キャッシュ120D、120C又は120のいずれも計算能力を有さない(すなわち、コード化されたシンボルを再エンコードして再コード化されたシンボル又は再コード化されたバリアントを作成することができず、コード化されたバリアントを記憶することのみができてもよい)。
【0090】
キャッシュ120C、120D及び120に接続されると、キャッシュ120Fは、(
図7のブロック715において)異なる通信リンク132を介して、3つのキャッシュ120C、120D及び120のヘッダ640及びコード化されたシンボル625(パケットヘッダ635を含む)を要求及び/又はダウンロードしてもよい。いくつかの実施形態では、異なる通信リンクは、(i)単一の通信モダリティの異なるチャネル(すなわち、複数のパス)と、(ii)異なる通信モダリティ(すなわち、複数のアクセス)とのうち少なくとも1つを含む。例えば、通信リンク132は、複数のネットワークアクセスタイプ/技術、モバイル無線通信リンク(例えば、3GPPネットワーク、5Gネットワークモバイルネットワーク、6Gモバイルネットワーク、別のモバイルネットワーク等)、WiFi通信リンク、衛星通信リンク、ブロードバンド通信リンク等を含んでもよい。いくつかの実施形態では、各通信モダリティは、それぞれの規則のセットに従って、特定のハードウェア(例えば、WiFi無線に対するセルラ、異なるアクセスネットワーク等)を使用して、2つ以上のデバイスの間で通信を可能にしてもよい。いくつかの実施形態では、2つの異なる通信リンク132がネットワーク内のどこかで収束する場合であっても、送信元から宛先への通信リンク132のいくつかの部分が互いに異なる限り、これらの通信リンク132は依然として異なると考えられてもよい。いくつかの実施形態では、異なる通信リンク132は、通信リンク132の集合(例えば、ネットワーク)を通じた異なる経路を含んでもよい。
【0091】
いくつかの実施形態では、要求側キャッシュ120FがK=10個のコード化されたシンボル805(すなわち、第1のメディアアセットが最初に分割されたシンボルの量)を受信したことに応じて、キャッシュ120Fは、(
図7のブロック725において)他のキャッシュ120C、120D及び120のそれぞれからのダウンロードを終了する。いくつかの実施形態では、次いで、キャッシュ120Fは、K個の元のシンボル815を回復するために、(ステップ810において)最初にK個のコード化されたシンボル805をデコードすることによって、独自のコード化されたシンボル825を作成する。次いで、キャッシュ120Fは、(ステップ820において)K個の元のシンボル815をエンコードしてもよく、例えば、(
図7のブロック730において)ネットワークコード化又は消去コード化を使用して、そのストレージ予算に従って新たな再コード化されたシンボル825の量K’を生成してもよい。上記に説明したように、いくつかの実施形態では、再コード化されたシンボル825は、他のキャッシュ120のコード化されたシンボルと機能的に等価/線形独立である(例えば、発信元デバイス120によって生成されて他のキャッシュ120に配布された元の複数のコード化されたシンボルと機能的に等価/線形独立である)。
【0092】
いくつかの実施形態では、次いで、キャッシュ120Fは、例えば適切なヘッダを追加することによって、再コード化されたシンボル825を再コード化されたバリアント835にパッケージ化してもよい(
図8のステップ830及び
図7のブロック735を参照する)。上記に説明したように、いくつかの実施形態では、再コード化されたバリアント835は、他のキャッシュ120のコード化されたバリアント135、140と機能的に等価/線形独立でもよい(例えば、発信元デバイス120によって生成されて他のキャッシュ120に配布された元の複数のコード化されたバリアントと機能的に等価/線形独立である)。
【0093】
図9は、一例の実施形態によるキャッシュ120、ピアデバイス125及び/又はクライアントデバイス130で発生し得る第1のメディアアセット(例えば、元のメディアファイル110)のネットワーク内再エンコードの例を示す。言い換えると、
図9は、
図7のブロック730に関して上記に説明したように、他のキャッシュ120からの受信したコード化されたシンボルをデコードすることなく直接の再コード化を介して再コード化されたバリアント945を作成する
図7の方法700の具体的な実装例を示す。
図9に示す例では、
図1のキャッシュ120Fは、以下に更に詳細に説明するように、再コード化されたバリアント945を作成する。
【0094】
図9に示す例では、キャッシュ120Fは、依然として第1のメディアアセットについてK’=7個のコード化されたシンボルのストレージ予算を有する(
図8の実装例と同様である)。(
図7のブロック710において)第1のメディアアセットを表すコード化されたバリアントを含むキャッシュの検出を実行した後に、キャッシュ120Fは3つの近隣のキャッシュ120(例えば、キャッシュ120C及び120D並びに1つの更なるキャッシュ120)に接続する。
図9に示す例では、キャッシュ120Dは完全なバリアント135(K=10個のコード化されたシンボルを含む)を記憶し、キャッシュ120C及び他のキャッシュ120はそれぞれ記憶された部分的なバリアント140(10未満のK’個のコード化されたシンボルを含む)を有する。さらに、
図9に示す例では、キャッシュ120D及び120Cは計算能力を有さないが、キャッシュ120は計算能力を有する。例えば、キャッシュ120は、コード化されたバリアントを記憶できてもよく、また、コード化されたシンボルを再エンコードして再コード化されたシンボル又は再コード化されたバリアントを作成することもできてもよい。
【0095】
キャッシュ120C、120D及び120に接続されると、キャッシュ120Fは、(
図7のブロック715において)異なる通信リンク132を介して、キャッシュ120C及び120Dのヘッダ640及びコード化されたシンボル625(パケットヘッダ635を含む)を要求及び/又はダウンロードしてもよい。いくつかの実施形態では、キャッシュ120Fは、シンボルを送信する前に、その部分的なバリアント140内のシンボルを再コード化するように他のキャッシュ120に要求してもよい。この要求に応じて、他のキャッシュ120は、(ステップ905において)その部分的なバリアント140内のシンボルを再コード化し、1つ以上の再コード化されたシンボル915を生成する。いくつかの実施形態では、コード化関数910(例えば、他のキャッシュ120の部分的なバリアント140内の全てのコード化されたシンボルのビット毎のXOR)が、1つ以上の再コード化されたシンボル915を生成するために使用されてもよい。いくつかの実施形態では、他のキャッシュ120は、1つ以上の再コード化されたシンボル915のそれぞれに適切なパケットヘッド635を追加する。
【0096】
いくつかの実施形態では、要求側キャッシュ120FがK’=7個のコード化されたシンボル920(すなわち、第1のメディアアセットに対するキャッシュ120Fのストレージ予算に対応するシンボルの量)を受信したことに応じて、キャッシュ120Fは、(
図7のブロック725において)他のキャッシュ120C、120D及び120のそれぞれからのダウンロードを終了する。いくつかの実施形態では、次いで、キャッシュ120Fは、(ステップ925において)受信したK’個のコード化及び/又は再コード化されたシンボル920を直接再コード化することによって、独自のコード化されたシンボル935を作成する。例えば、キャッシュ120Fは、(
図7のブロック730において)ネットワークコード化又は消去コード化を使用してコード化及び/又は再コード化されたシンボル920を直接再コード化して、そのストレージ予算に従って新たな再コード化されたシンボル935の量K’を生成してもよい。いくつかの実施形態では、コード化関数930(例えば、全てのシンボルのビット毎のXOR920)が、再コード化されたシンボル935を生成するために使用されてもよい。上記に説明したように、いくつかの実施形態では、再コード化されたシンボル935は、他のキャッシュ120のコード化されたシンボルと機能的に等価/線形独立である(例えば、発信元デバイス120によって生成されて他のキャッシュ120に配布された元の複数のコード化されたシンボルと機能的に等価/線形独立である)。
【0097】
いくつかの実施形態では、次いで、キャッシュ120Fは、例えば適切なヘッダを追加することによって、再コード化されたシンボル825を再コード化されたバリアント935にパッケージ化してもよい(
図9のステップ940及び
図7のブロック735を参照する)。上記に説明したように、いくつかの実施形態では、再コード化されたバリアント945は、他のキャッシュ120のコード化されたバリアント135、140と機能的に等価/線形独立でもよい(例えば、発信元デバイス120によって生成されて他のキャッシュ120に配布された元の複数のコード化されたバリアントと機能的に等価/線形独立である)。
【0098】
図10A及び10Bは、一例の実施形態によるクライアントデバイス130上で、マルチソース、マルチパス方式でメディアコンテンツ(例えば、第1のメディアアセット)をダウンロードするための方法1000のフローチャートを示す。いくつかの実施形態では、方法1000は、
図4Cのマルチソースマルチパスダウンロード方法460のより詳細な方法であり、
図4Cの方法460の一部として実行されてもよい。いくつかの実施形態では、方法1000のブロックのほとんど又は全てが、クライアントデバイス130の第1の電子プロセッサ205によって実行される。しかし、所与の時間にクライアントとして動作する他のデバイス(例えば、キャッシュ120)も、方法1000を実行してもよい。方法1000の以下の説明では、クライアントデバイス130によって実行されるステップのいくつかは、ここで前記に説明したようにキャッシュ120によって実行されるステップと同様である。簡潔にするために、このようなステップは方法1000に関して再説明されず、このようなステップの更なる特徴及び/又は異なる特徴のみが説明される。マルチソースマルチパスダウンロードの更なる詳細は、2017年1月13日に出願された米国出願番号15/405,874、現在の米国特許番号10,581,554及び2020年1月23日に出願された米国出願番号16/750,185に記載されており、それぞれの全内容を参照により援用する。
【0099】
いくつかの実施形態では、ブロック1005において、クライアントデバイス130は、複数の利用可能なキャッシュ120を検出し、複数のキャッシュ(すなわち、複数の利用可能なキャッシュ120のうちキャッシュ120のサブセット)のうちキャッシュのそれぞれが第1のメディアアセットのコード化されたバリアント(例えば、元のメディアファイル110の少なくとも一部を表すコード化されたバリアント)を含むと決定したことに基づいて、複数の利用可能なキャッシュから複数のキャッシュ120を識別する。いくつかの実施形態では、ブロック1005は
図7のブロック710と同様である。
【0100】
いくつかの実施形態では、ブロック1010において、クライアントデバイス130は、第1のメディアアセットを表すコード化されたバリアントを記憶している複数のキャッシュ120のそれぞれに接続する。例えば、クライアントデバイス130は、
図8に関して上記に説明した異なる通信リンク132を介して、複数のキャッシュ120のそれぞれに接続してもよい。
【0101】
いくつかの実施形態では、ブロック1015において、クライアントデバイス130は、複数のキャッシュ120のうちキャッシュ120のそれぞれによって記憶されているコード化されたバリアントを要求する。いくつかの実施形態では、ブロック1015は
図7のブロック715と同様である。さらに、ここでの上記の説明から明らかなように、クライアントデバイス130は、ブロック1005~1015においてキャッシュ120と通信すると記載されているが、クライアントデバイス130はまた、システム100のキャッシュデバイスとして寄与すると決定されたピアデバイス125(すなわち、他のクライアントデバイス130)と通信してもよい。言い換えると、この開示を通じて使用される「キャッシュ」という用語は、ここに記載されるキャッシュ120だけでなく、例えば、第1のメディアアセット及び他のメディアアセットの少なくとも一部を記憶するためのキャッシュとして機能するメモリ空間の一部を割り当てたピアデバイス125(すなわち、他のクライアントデバイス130)も含むと理解されるべきである。
【0102】
いくつかの実施形態では、クライアントデバイス130は、(i)各キャッシュ120とクライアントデバイス130との間の通信リンク132の品質と、(ii)各キャッシュ120によって記憶されている第1のメディアアセットを表すコード化されたバリアント内のコード化されたシンボルの量とのうち少なくとも1つに基づいて、接続する1つ以上のキャッシュ120を選択する。例えば、クライアントデバイス130は、クライアントデバイス130がより高品質の通信リンクを有するキャッシュ120、及び/又は第1のメディアアセットを表すより多くの数の記憶されているコード化されたシンボルを有するキャッシュ120の選択を優先してもよい。
【0103】
方法460が開始され得る方法に関して前述したように、いくつかの実施形態では、キャッシュ120からのメディアコンテンツに対するクライアントデバイスの要求は、キャッシュ120に配信される前に(例えば、キャッシュクラスタ115の1つのようなサーバデバイスによって)傍受される。このような実施形態では、クライアントデバイスの要求は、要求されたメディアコンテンツに対応するコード化されたバリアントを含む1つ以上のサーバデバイス(例えば、CDN)内の指定のキャッシュ120に対する複数の要求に置き換えられる(例えば、変換される)。いくつかの実施形態では、クライアントデバイスの要求を受信したキャッシュ120は、クライアントデバイス130が複数のキャッシュ120のコード化されたバリアントに含まれるコード化された情報(すなわち、コード化されたシンボル)のマルチソースマルチパスダウンロードに関与することを可能にするように、上記の指定のキャッシュ120への複数の要求を更に或いは代替的に生成してもよい。
【0104】
第1のメディアアセットを表すそのコード化されたバリアントの要求を受信したことに応じて、複数のキャッシュ120のそれぞれは、(i)その第1のコード化されたバリアントからの第1のネットワークコード化されたシンボルと、(ii)第1のコード化されたバリアントに基づく第1の再コード化されたシンボルとのうち少なくとも1つを含むデータのクライアントデバイス130への送信を開始してもよい。言い換えると、第1のキャッシュ120は、(i)第1のコード化されたバリアントからの第1のネットワークコード化されたシンボルと、(ii)第1のコード化されたバリアントに基づく第1の再コード化されたシンボルとのうち少なくとも1つを含む第1の送信データをクライアントデバイス130に送信するように構成される。同様に、第2のキャッシュ120は、第1のキャッシュ120からの第1の送信データの送信と同時に、(i)第2のコード化されたバリアントからの第2のネットワークコード化されたシンボルと、(ii)第2のコード化されたバリアントに基づく第2の再コード化されたシンボルとのうち少なくとも1つを含む第2の送信データをクライアントデバイスに送信するように構成される。いくつかの実施形態では、第1の送信データ及び第2の送信データは、
図8に関してここで上記に説明したように、異なる通信リンク132を介してクライアントデバイス130に送信されるように構成される。いくつかの実施形態では、単一のキャッシュ120は、第1のメディアアセットを表すコード化されたバリアントのコード化されたシンボルを、複数の接続されたクライアントデバイス130に平行して/同時に提供してもよい。いくつかの実施形態では、単一のキャッシュ120は、異なるメディアアセットを表すコード化されたバリアントのコード化されたシンボルを、複数の接続されたクライアントデバイス130に平行して/同時に提供してもよい。
【0105】
いくつかの実施形態では、ブロック1020において、クライアントデバイス120は、複数のキャッシュ120のうちキャッシュ120のそれぞれから、各キャッシュ120に記憶されているそれぞれのコード化及び/又は再コード化されたバリアント(すなわち、再エンコードされたバリアント)に含まれるコード化及び/又は再コード化されたシンボルをダウンロードする。この開示におけるコード化されたシンボルへの言及は、(発信元デバイス105においてエンコードされた)最初にコード化されたシンボルと、(キャッシュ120、ピアデバイス125及び/又はクライアントデバイス130において再コード化/再エンコードされた)再コード化/再エンコードされたシンボルとの双方を示してもよいことが理解されるべきである。同様に、この開示におけるコード化されたバリアントへの言及は、(発信元デバイス105においてエンコードされた)最初にコード化されたバリアントと、(キャッシュ120、ピアデバイス125及び/又はクライアントデバイス130において再コード化/再エンコードされた)再コード化/再エンコードされたバリアントとの双方を示してもよい。クライアントデバイス120は、
図8に関して上記に説明した異なる通信リンク132を介して、各キャッシュ120からコード化されたシンボルを同時に/平行してダウンロードしてもよい。いくつかの実施形態では、複数のキャッシュ120は、第1のキャッシュ120(例えば、キャッシュ120A)と第2のキャッシュ(例えば、キャッシュ120E)とを含む。
【0106】
いくつかの実施形態では、第1のキャッシュ120からの第1のコード化されたバリアント(例えば、第1のコード化されたバリアントの少なくともいくつかの第1のコード化されたシンボル)のダウンロードと、第2のキャッシュ120からの第2のコード化されたバリアント(例えば、第2のコード化されたバリアントの少なくともいくつかのコード化されたシンボル)のダウンロードとは、クライアントデバイス130からの第1のメディアアセットの消費の要求が第1のキャッシュ120及び/又は第2のキャッシュ120によって受信された後に、第1のキャッシュ120及び第2のキャッシュ120が第1のメディアアセットの一部を受信することなく行われる。同様に、別の言い方をすれば、第1のキャッシュ120からの第1のメディアアセットに関連付けられた第1の送信データの送信と、第2のキャッシュ120からの第1のメディアアセットに関連付けられた第2の送信データの送信とは、要求が第1のキャッシュ120又は第2のキャッシュ120によって受信された後に、第1のキャッシュ120及び第2のキャッシュ120が第1のメディアアセットの一部を受信することなく行われる。言い換えると、キャッシュ120がクライアントデバイス130から第1のメディアアセットの消費の要求を受信した時点で、第1のメディアアセットを表すコード化されたバリアントは既にキャッシュ120に記憶されている。したがって、クライアントデバイスから第1のメディアアセットの要求を受信したことに応じて、キャッシュ120が発信元デバイス105から第1のメディアアセットを要求する必要があることと比較して、キャッシュ120は、クライアントデバイス130がより迅速且つ効率的にメディアコンテンツにアクセスすることを可能にする分散型で非集中型のメディアコンテンツストレージシステム100を提供する。例えば、既存のメディア配信システムに存在する、キャッシュ120から要求側クライアントデバイス130へのデータの送信の複雑なスケジューリングは存在しない。
【0107】
いくつかの実施形態では、ブロック1025において、クライアントデバイス130は、キャッシュ120から受信したシンボルの量がシンボル量の閾値を超えていると決定する。いくつかの実施形態では、シンボル量の閾値は、第1のメディアアセットの完全な表現をデコードするクライアントデバイス130の能力に基づく。いくつかの実施形態では、シンボル量の閾値は、第1のメディアアセットのサイズに基づく。いくつかの実施形態では、ブロック1025は
図7のブロック720と同様であるが、クライアントデバイス130が第1のメディアアセットを完全に回復することを望むので、シンボル量の閾値が、第1のメディアアセットが最初に発信元デバイス105によって分割されたシンボルの量K(又はKに更なる量を加えたもの)である点が異なる。言い換えると、
図9に示す例のように、
図7のブロック720のいくつかの実施形態では、方法700を実行するキャッシュ120がK’≦Kのストレージ予算を有する場合、シンボル量の閾値は、量K未満の量K’でもよい。しかし、いくつかの実施形態では、
図10Aのブロック1025において、シンボル量の閾値は、常に少なくとも、第1のメディアアセットが発信元デバイス105によって最初に分割されたシンボルの量Kである。
【0108】
いくつかの実施形態では、ブロック1025において、クライアントデバイス130は、少なくとも閾値量のシンボルがキャッシュ120からクライアントデバイス130に向かっていると決定してもよい。例えば、クライアントデバイス130は、全てのこのようなシンボルがまだ受信されていない場合であっても、少なくとも閾値量のシンボルがキャッシュ120によって送信されたことを認識してもよい。一例として、クライアントデバイス130は、第1のキャッシュ120と第2のキャッシュ120とのうち少なくとも1つからクライアントデバイス130に送信されたシンボルの量がシンボル量の閾値を超えていると決定してもよい。上記のように、いくつかの実施形態では、シンボル量の閾値は、シンボルの量がクライアントデバイス130によって受信されると、第1のメディアアセットの完全な表現をデコードするクライアントデバイス130の能力に基づく。
【0109】
いくつかの実施形態では、ブロック1030において、受信した(及び/又は受信する途中の)シンボルの量がシンボル量の閾値を超えていると決定したことに応じて、クライアントデバイス130は、キャッシュ120からのコード化されたバリアントのダウンロードを停止する。例えば、クライアントデバイス130は、第1のキャッシュ120からの第1のコード化されたバリアントと、第2のキャッシュ120からの第2のコード化されたバリアントとのうち少なくとも1つのダウンロードを停止してもよい。いくつかの実施形態では、受信した(及び/又は受信する途中の)シンボルの量がシンボル量の閾値を超えていると決定したことに応じて、クライアントデバイス130は、更に或いは代替的に、第1のメディアアセットの消費の要求をキャンセルして、第1のキャッシュ120と第2のキャッシュ120とのうち少なくとも1つからクライアントデバイス130への更なるデータの送信を停止してもよい。
【0110】
いくつかの実施形態では、ブロック1035において、クライアントデバイス130は、キャッシュ120からの受信シンボルをデコードして、発信元デバイス105によって第1のメディアアセットから分割された複数の元のシンボルを生成する。例えば、第1のバリアントと第2のバリアントとのうち少なくとも1つに含まれる1つ以上のシンボルをデコードして、第1のメディアアセットを回復することは、クライアントデバイス130で、第1のコード化されたバリアントと第2のコード化されたバリアントとのうち少なくとも1つに含まれる1つ以上のシンボルから、発信元デバイス105によって第1のメディアアセットから分割された複数の元のシンボルを生成することを含んでもよい。
【0111】
いくつかの実施形態では、ブロック1035において、クライアントデバイス130はまた、ユーザによる消費のために第1のメディアアセットを出力する。例えば、クライアントデバイス130は、スピーカ225及び/又はディスプレイ230のような1つ以上の出力デバイスを介して第1のメディアアセットを出力する。
【0112】
図10Aに示すように、ブロック1035の実行の後及び/又はブロック1035の実行と共に、方法100は
図10Bのブロック1040に進んでもよい。しかし、
図10Bのブロック1040~1055は任意選択であり、いくつかの実施形態では方法1000に含まれなくてもよい。
【0113】
いくつかの実施形態では、ブロック1040において、クライアントデバイス130は、他のデバイスがアクセスするためのメディアコンテンツを記憶するキャッシュ120/ピアデバイス125として動作することによって、システム100の分散型で非集中型の性質に寄与するか否かを決定する。例えば、クライアントデバイス130は、クライアントデバイス130がキャッシュ120/ピアデバイス125として機能するべきか否かを示す設定を設定するためのユーザ入力を受け取ってもよい。
図10Bに示すように、クライアントデバイス130がキャッシュ120/ピアデバイス125として寄与するべきでないと決定したことに応じて、方法1000は終了する。しかし、いくつかの実施形態では、方法1000がブロック1040の後に終了した場合であっても、例えば、クライアントデバイス130のユーザによる消費のために第1のメディアアセットを出力し続けるために、ブロック1035が引き続き実行されてもよい。
【0114】
他方、クライアントデバイス130がキャッシュ120/ピアデバイス125として寄与すべきであると決定したことに応じて、方法1000は、ここで上記に説明した
図7の方法700のそれぞれのブロック705、730及び735と同様のブロック1045、1050及び1055に進む。簡潔にするため、ブロック1045、1050及び1055については詳細に説明しない。しかし、一例として、ブロック1050において、クライアントデバイス130は、ネットワークコード化を使用して、(ブロック1035においてデコードを通じて以前に回復された)複数の元のシンボルから1つ以上の再コード化されたシンボルを生成し、再コード化されたバリアントを作成してもよい。再コード化されたバリアントは、データ量の閾値を超え、再コード化されたバリアント、第1のコード化されたバリアント又は第2のコード化されたバリアントから引き出されたいずれかのデータ量が、第1のメディアアセットを回復するためのいずれかのデータ量のデコードを可能にするように、第1のキャッシュ120から受信した第1のコード化されたバリアント及び第2のキャッシュ120から受信した第2のコード化されたバリアントと機能的に等価でもよい。別の例として、クライアントデバイス130は、第1のキャッシュ120及び/又は第2のキャッシュ120からの受信したコード化されたシンボルの直接の再コード化を使用して、機能的に等価な再コード化されたバリアントを生成してもよい。いくつかの実施形態では、クライアントデバイス130は、別のクライアントデバイス130と別のキャッシュ120とのうち少なくとも1つへの後の送信のために、再コード化されたバリアントをメモリ210に記憶してもよい。
【0115】
いくつかの実施形態では、ブロック1045において、クライアントデバイス130は、第1のメディアアセットの記憶に関して、そのメモリ210のストレージ予算を決定する。いくつかの実施形態では、次いで、ブロック1050において、クライアントデバイス130は、ブロック1045において決定されたストレージ予算以下のストレージ空間を消費する、再コード化されたシンボルの量を生成する。
【0116】
図11は、一例の実施形態によるクライアントデバイス130上のメディアコンテンツ(例えば、第1のメディアアセット)をマルチソース、マルチパスでダウンロードする例を示す。言い換えると、
図11は、
図10A~10Bの方法1000の具体的な実装例を示す。
【0117】
図11に示す例では、クライアントデバイス130は、(
図10Aのブロック1005において)検出を実行した後に、異なる通信リンク132を介して5つの異なる情報ソースに接続される。図示の例では、5つの情報ソースは、(i)完全にコード化されたバリアント135を含むキャッシュクラスタAのキャッシュ120Aと、(ii)部分的にコード化されたバリアント140を含むキャッシュクラスタ115Bのキャッシュ120Cと、(iii)完全にコード化されたバリアント135を含むキャッシュクラスタ115Bのキャッシュ120Dと、(iv)完全にコード化されたバリアント135を含むキャッシュクラスタ115Cのキャッシュ120Eと、(v)部分的にコード化されたバリアント140を含むキャッシュクラスタ115Cのピアデバイス125Aとを含む。
【0118】
いくつかの実施形態では、
図10Aの方法1000に従って、クライアントデバイス130は、(
図10Aのブロック1015において)それぞれのコード化されたバリアントに含まれるコード化されたシンボルを送信するように5つの接続された情報ソースのそれぞれに要求してもよい。クライアントデバイス130が、5つの情報ソースのいずれか1つ以上から閾値量(例えば、K=10)のコード化されたシンボル1105を受信すると、クライアントデバイス130は、(
図10Aのブロック1030において)情報ソースからのコード化されたシンボルのダウンロードを停止してもよい。
【0119】
次いで、クライアントデバイス130は、(
図10Aのステップ1110及びブロック1035において)受信したコード化されたシンボル1105をデコードして、第1のメディアアセット(例えば、元のメディアファイル110)が発信元デバイス105によって分割された元のシンボル1115の量(K=10)を生成してもよい。ステップ1120において、クライアントデバイス130は、第1のメディアアセット(例えば、元のメディアファイル110)を回復するために、10個の元のシンボル1115を(例えば、順番に並べ替えることで)つなぎ合わせる。次いで、クライアントデバイス130は、
図10Aのブロック1035に関してここに上述したように、クライアントデバイス130上に第1のメディアアセットを出力してもよい。
【0120】
図12は、
図1及び
図11のシステム100と同様であるが、一例の実施形態によるエッジサーバ1205を更に含むシステム1200を示す。
図12に示すように、エッジサーバ1205は、
図11に示す例のクライアントデバイス130といくつかの同様の機能を実行してもよく、キャッシュ120といくつかの同様の機能も実行してもよい。例えば、エッジサーバ1205は、複数のキャッシュ120からコード化されたシンボル1210を要求し、ダウンロードしてもよい。エッジサーバ1205はまた、(ステップ1215において)受信したコード化されたシンボル1210をデコードして、第1のメディアアセットの元のシンボル1220を生成してもよい。エッジサーバ1205はまた、1つ以上のコード化されたシンボル1210及び/又は1つ以上のデコードされた元のシンボル1220をクライアントデバイス130に送信してもよい。
【0121】
したがって、いくつかの実施形態では、エッジサーバ1205は、クライアントデバイス130のキャッシュ120への通信経路を提供してもよい。例えば、
図12の点線は、クライアントデバイス130が、キャッシュ120にアクセスするためにエッジサーバ1205と通信するように構成されたローカルデバイスであることを示す。いくつかの実施形態では、クライアントデバイス130はまた、1つ以上のキャッシュ120と直接通信してもよい。いくつかの実施形態では、キャッシュ120とエッジサーバ1205との間の通信リンク132は、ここで前述したようなネットワーク通信リンクである。いくつかの実施形態では、(例えば、シンボル1210及び/又は1220をクライアントデバイス130に送信するための)エッジサーバ1205とクライアントデバイス130との間の通信リンク1225は、通信リンク132とは異なるコンテンツ配信方法を含む。例えば、エッジサーバ1205とクライアントデバイス間の通信リンク1225では、ポイントツーポイント配信、低遅延ネットワークコード化技術、従来のハイパーテキスト転送プロトコル(HTTP, HyperText Transfer Protocol)等を使用してもよい。
【0122】
言い換えると、いくつかの実施形態では、エッジサーバ1205(サーバデバイスとも呼ばれてもよい)は、第1の通信リンク132を介して第1のキャッシュ120から第1のコード化されたバリアント135、140をダウンロードし、第2の通信リンク132を介して第2のキャッシュ120から第2のコード化されたバリアント135、140をダウンロードするように構成される。次いで、エッジサーバ1205は、第1のコード化されたバリアントと第2のコード化されたバリアントとのうち少なくとも1つに基づいて、第1の通信リンク132及び第2の通信リンク132のいずれかとは異なる通信モダリティを使用する第3の通信リンク1225を介して、複数のシンボル1210、1220をクライアントデバイス130に送信するように構成されてもよい。いくつかの実施形態では、複数のシンボル1210、1220は、(i)クライアントデバイス130に送信される前にエッジサーバ1205によってデコードされていない第1のコード化されたバリアントと第2のコード化されたバリアントとのうち少なくとも1つのコード化されたシンボル1210と、(ii)発信元デバイス105によって第1のメディアアセットから分割され、エッジサーバ1205によって第1のコード化されたバリアントと第2のコード化されたバリアントとのうち少なくとも1つのコード化されたシンボル1210のデコードを通じて生成された元のシンボル1220とを含む。
【0123】
図12に示すように、クライアントデバイス130は、
図11に示すクライアントデバイス130と同様に機能してもよい。例えば、クライアントデバイス130は、複数のシンボル1210、1220を受信し、(ステップ1215において)コード化されたシンボル1210の少なくともいくつかをデコードして、更なる元のシンボル1220を生成してもよい。いくつかの実施形態では、クライアントデバイス130はまた、別のキャッシュ120から直接、第1のメディアアセットを表す第2の複数のシンボルを受信してもよい。クライアントデバイス130は、第1のメディアアセットの元のシンボル1220を回復するために、複数のシンボル及び第2の複数のシンボルの少なくともいくつかのシンボルをデコードしてもよい。クライアントデバイス130はまた、ここで上述したように(ステップ1230において)元のシンボル1220をつなぎ合わせ、クライアントデバイス130の出力デバイスを使用して第1のメディアアセット(例えば、元のメディアファイル110)を出力してもよい。いくつかの実施形態では、クライアントデバイスが第2の複数のシンボルを直接受信する別のキャッシュ120は、第2のサーバデバイス(例えば、別のエッジサーバ)又はリモートキャッシュクラスタ(例えば、キャッシュクラスタ115)のローカルキャッシュ1235と第3のキャッシュ120とのうちの少なくとも1つである。
【0124】
図12の例及びそれに対応する説明に示すように、クライアントデバイス130は、異なる通信リンクを介して異なる情報ソースから受信したシンボル(例えば、コード化されたシンボル、コード化/再コード化されたシンボル及び元のシンボル)を集約して、効率的な方式で(例えば、量K=10のシンボルがクライアントデバイス130によって受信されたか或いは受信される途中であると決定したことに応じて、全ての情報ソースからのダウンロードを停止することによって)第1のメディアアセットを回復してもよい。
【0125】
いくつかの実施形態では、エッジサーバ1205は、ここで上記に説明したように、他のサーバデバイス(すなわち、キャッシュクラスタ115、CDN等)と同様のコンポーネントを含んでもよい。例えば、エッジサーバ1205は、
図3に示すキャッシュ120と同様のコンポーネント(例えば、電子プロセッサ、メモリ及びネットワークインタフェース)を含んでもよい。
図12に示すように、エッジサーバ1205は、例えば、キャッシュ120を検出してキャッシュ120からシンボルをダウンロードすることによる、クライアントのいくつかの機能を含む。しかし、エッジサーバ1205はまた、受信したコード化されたシンボル1210及び/又は元のシンボル1220をクライアントデバイス130にサービス提供することによって、クライアントデバイス130に関するより従来のサーバ機能も実行する。
【0126】
実施形態は、ここに示されるか或いは添付図面に図示されるコンポーネントの構成及び配置の詳細へのその適用に限定されないことが理解されるべきである。実施形態は、様々な方法で実施又は実行可能である。また、ここで使用されている語句及び用語は、説明のためのものであり、限定するものとしてみなされるべきではないことが理解されるべきである。「含む(including)」、「含む(comprising)」又は「有する(having)」の使用及びその変形は、それに関して列挙された項目及びその等価物並びに更なる項目を含むことを意味する。特に明記又は制限されていない限り、「搭載された」、「接続された」、「サポートされた」、及び「結合された」という用語並びにその変形は広く使用され、直接的及び間接的な搭載、接続、サポート及び結合を含む。
【0127】
さらに、実施形態は、ハードウェア、ソフトウェア及び電子コンポーネント又はモジュールを含んでもよく、説明のために、コンポーネントの大部分がハードウェアのみで実装されているかのように図示及び記載されることがあることが理解されるべきである。しかし、当業者の1人は、この詳細な説明を読むことに基づいて、少なくとも1つの実施形態において、電子ベースの態様がマイクロプロセッサ及び/又は特定用途向け集積回路(ASIC, application specific integrated circuit)のような1つ以上の電子プロセッサによって実行可能なソフトウェアに実装されてもよい(例えば、非一時的なコンピュータ可読媒体に記憶される)ことを認識する。したがって、複数のハードウェア及びソフトウェアベースのデバイス並びに複数の異なる構造上のコンポーネントが、実施形態を実装するために利用されてもよい点に留意すべきである。例えば、明細書に記載された「サーバ」及び「コンピューティングデバイス」は、1つ以上の電子プロセッサ、1つ以上のコンピュータ可読媒体モジュール、1つ以上の入出力インタフェース、及び様々なコンポーネントを接続する様々な接続(例えば、システムバス)を含んでもよい。
【0128】
様々な特徴及び利点が以下の特許請求の範囲に記載される。
【国際調査報告】