IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ディズニー エンタープライゼス インコーポレイテッドの特許一覧

特開2022-75540高帯域幅ネットワークでのデータのバッファリング
<>
  • 特開-高帯域幅ネットワークでのデータのバッファリング 図1
  • 特開-高帯域幅ネットワークでのデータのバッファリング 図2
  • 特開-高帯域幅ネットワークでのデータのバッファリング 図3
  • 特開-高帯域幅ネットワークでのデータのバッファリング 図4
  • 特開-高帯域幅ネットワークでのデータのバッファリング 図5
  • 特開-高帯域幅ネットワークでのデータのバッファリング 図6A
  • 特開-高帯域幅ネットワークでのデータのバッファリング 図6B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022075540
(43)【公開日】2022-05-18
(54)【発明の名称】高帯域幅ネットワークでのデータのバッファリング
(51)【国際特許分類】
   H04L 47/30 20220101AFI20220511BHJP
【FI】
H04L47/30
【審査請求】有
【請求項の数】21
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021170653
(22)【出願日】2021-10-19
(31)【優先権主張番号】17/089,317
(32)【優先日】2020-11-04
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.SMALLTALK
(71)【出願人】
【識別番号】504399716
【氏名又は名称】ディズニー エンタープライゼス インコーポレイテッド
(74)【代理人】
【識別番号】100101502
【弁理士】
【氏名又は名称】安齋 嘉章
(72)【発明者】
【氏名】ニキータ アイ トカチョフ
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030GA03
5K030GA13
5K030HA08
5K030JL01
5K030KA03
5K030KX11
5K030LC11
5K030MA13
(57)【要約】      (修正有)
【課題】高帯域幅ネットワークでデータをバッファリングする方法、システム及びコンピュータ可読媒体を提供する。
【解決手段】ストリーミングデバイス105を含むシステム200において、コンテンツサーバ115から、データの第1部分が、第1ダウンロード速度でバッファ205にダウンロードされる。データの第1部分は、バッファから出力される。データは、第1ダウンロード速度よりも速い第2ダウンロード速度でダウンロードされていると判断すると、データの1つ以上の後続の部分にキャッシュ210を使用することが決定され、データの第2部分がキャッシュにダウンロードされる。バッファが空であると、判断すると、データの第2部分はキャッシュから出力される。
【選択図】図2
【特許請求の範囲】
【請求項1】
デバイスによって、データの第1部分を第1ダウンロード速度でバッファにダウンロードする工程と、
バッファからデータの第1部分を出力する工程と、
デバイスは第1ダウンロード速度よりも速い第2ダウンロード速度でデータをダウンロードしていると、判断すると、
データの1つ以上の後続の部分にキャッシュを使用することを決定し、
データの第2部分をキャッシュにダウンロードする工程と、
バッファが空であると、判断すると、キャッシュからデータの第2部分を出力する工程とを含む方法。
【請求項2】
デバイスは第2ダウンロード速度でデータをダウンロードしていないと、判断すると、データの第3部分をバッファにダウンロードする工程をさらに含む、請求項1に記載の方法。
【請求項3】
データの第1及び第2部分は、第1データストリームに関連付けられたデータの複数の部分であり、
デバイスは第2ダウンロード速度でデータをダウンロードしていると、判断すると、データの複数の部分からデータの後続の部分をすべてキャッシュにダウンロードする工程をさらに含む、請求項1に記載の方法。
【請求項4】
データの複数の部分のすべてがキャッシュにダウンロードされたと、判断すると、
第1データストリームに少なくとも部分的に基づいて第2データストリームを識別し、
第2データストリームに関連付けられたデータの少なくとも一部をキャッシュにダウンロードする工程をさらに含む、請求項3に記載の方法。
【請求項5】
デバイスは第1ネットワークを使用してデータの第1部分をダウンロードし、
デバイスは第2ダウンロード速度でデータをダウンロードしていると、判断する工程は、デバイスは第2ネットワークを使用してデータのダウンロードを開始したと、判断する工程を含んでいる、請求項1に記載の方法。
【請求項6】
デバイスは第2ダウンロード速度でデータをダウンロードしていると、判断する工程は、第1ダウンロード速度と比較して、第2ダウンロード速度は所定の閾値を超えていると、判断する工程を含んでいる、請求項1に記載の方法。
【請求項7】
第2ダウンロード速度は所定の閾値を超えていると、判断する工程は、スライディングウィンドウを使用して第2ダウンロード速度を過去のダウンロード速度と比較する工程を含んでいる、請求項6に記載の方法。
【請求項8】
データの第2部分は第2ダウンロード速度でキャッシュにダウンロードされ、
データの第1部分及びデータの第2部分は両方とも複数のビットレートの第1ビットレートに関連付けられている、請求項1に記載の方法。
【請求項9】
コンピュータプログラムコードを含む非一時的なコンピュータ可読媒体であって、1つ以上のコンピュータプロセッサの動作によってコンピュータプログラムコードが実行された時に実行する動作は、
デバイスによって、データの第1部分を第1ダウンロード速度でバッファにダウンロードする工程と、
バッファからデータの第1部分を出力する工程と、
デバイスは第1ダウンロード速度よりも速い第2ダウンロード速度でデータをダウンロードしていると、判断すると、
データの1つ以上の後続の部分にキャッシュを使用することを決定し、
データの第2部分をキャッシュにダウンロードする工程と、
バッファが空であると、判断すると、キャッシュからデータの第2部分を出力する工程とを含んでいる、非一時的なコンピュータ可読媒体。
【請求項10】
前記動作は、
デバイスは第2ダウンロード速度でデータをダウンロードしていないと、判断すると、データの第3部分をバッファにダウンロードする工程をさらに含んでいる、請求項9に記載のコンピュータ可読媒体。
【請求項11】
データの第1及び第2部分は、第1データストリームに関連付けられたデータの複数の部分であり、
前記動作は、
デバイスは第2ダウンロード速度でデータをダウンロードしていると、判断すると、データの複数の部分からデータの後続の部分をすべてキャッシュにダウンロードする工程をさらに含んでいる、請求項9に記載のコンピュータ可読媒体。
【請求項12】
前記動作は、
データの複数の部分のすべてがキャッシュにダウンロードされたと、判断すると、
第1データストリームに少なくとも部分的に基づいて第2データストリームを識別し、
第2データストリームに関連付けられたデータの少なくとも一部をキャッシュにダウンロードする工程をさらに含んでいる、請求項11に記載のコンピュータ可読媒体。
【請求項13】
デバイスは第1ネットワークを使用してデータの第1部分をダウンロードし、
デバイスは第2ダウンロード速度でデータをダウンロードしていると、判断する工程は、デバイスは第2ネットワークを使用してデータのダウンロードを開始したと、判断する工程を含んでいる、請求項9に記載のコンピュータ可読媒体。
【請求項14】
デバイスは第2ダウンロード速度でデータをダウンロードしていると、判断する工程は、第1ダウンロード速度と比較して、第2ダウンロード速度は所定の閾値を超えていると、判断する工程を含んでいる、請求項9に記載のコンピュータ可読媒体。
【請求項15】
1つ以上のコンピュータプロセッサと、
プログラムを含むストレージ媒体であって、1つ以上のコンピュータプロセッサによってプログラムが実行された時に実行する動作は、
システムによって、データの第1部分を第1ダウンロード速度でバッファにダウンロードする工程と、
バッファからデータの第1部分を出力する工程と、
システムは第1ダウンロード速度よりも速い第2ダウンロード速度でデータをダウンロードしていると、判断すると、
データの1つ以上の後続の部分にキャッシュを使用することを決定し、
データの第2部分をキャッシュにダウンロードする工程と、
バッファが空であると、判断すると、キャッシュからデータの第2部分を出力する工程とを含んでいる、ストレージ媒体とを備えるシステム。
【請求項16】
前記動作は、
システムは第2ダウンロード速度でデータをダウンロードしていないと、判断すると、データの第3部分をバッファにダウンロードする工程をさらに含んでいる、請求項15に記載のシステム。
【請求項17】
データの第1及び第2部分は、第1データストリームに関連付けられたデータの複数の部分であり、
前記動作は、
システムは第2ダウンロード速度でデータをダウンロードしていると、判断すると、データの複数の部分からデータの後続の部分をすべてキャッシュにダウンロードする工程をさらに含んでいる、請求項15に記載のシステム。
【請求項18】
前記動作は、
データの複数の部分のすべてがキャッシュにダウンロードされたと、判断すると、
第1データストリームに少なくとも部分的に基づいて第2データストリームを識別し、
第2データストリームに関連付けられたデータの少なくとも一部をキャッシュにダウンロードする工程をさらに含んでいる、請求項17に記載のシステム。
【請求項19】
システムは第1ネットワークを使用してデータの第1部分をダウンロードし、
システムは第2ダウンロード速度でデータをダウンロードしていると、判断する工程は、システムは第2ネットワークを使用してデータのダウンロードを開始したと、判断する工程を含んでいる、請求項15に記載のシステム。
【請求項20】
メモリをさらに備え、
バッファはメモリの割り当てられた部分であり、
キャッシュはストレージ媒体の割り当てられた部分である、請求項15に記載のシステム。
【請求項21】
デバイスによって、データの第1部分を第1ダウンロード速度でバッファにダウンロードする工程と、
バッファからデータの第1部分を出力する工程と、
デバイスは第1ダウンロード速度よりも速い第2ダウンロード速度でデータをダウンロードしていると、判断すると、
バッファのサイズを拡張し、
データの第2部分をバッファにダウンロードする工程とを含む方法。
【発明の詳細な説明】
【背景】
【0001】
一部のシステムでは、メディアを個別のセグメントでダウンロードする。その後、各セグメントは逐次的に出力される。しかし、ダウンロード速度が大幅に変化した場合、ストリーミングデバイスは、次のセグメントに対して最適でないビットレートを選択する場合がある。断続的かつ散発的な接続が失われると、次のセグメントが時間内のダウンロードに失敗して、メディア出力にバッファリングとドロップアウトが発生する可能性がある。
【図面の簡単な説明】
【0002】
上記の態様を達成し、詳細に理解できるように、上記で簡潔に概要を述べた本明細書に記載の実施形態のより具体的な説明を、添付図面を参照することによって得ることができる。
【0003】
ただし、他にも等しく効果的な実施形態が考えられるので、添付図面は典型的な実施形態を示しており、したがって、限定していると見なすべきではないことに留意すべきである。
【0004】
図1】本明細書に開示されるいくつかの実施形態による、動的帯域幅を有するネットワーク接続でデータを適応的にバッファリングするように構成されたストリーミングデバイスを含むシステムを示す。
【0005】
図2】本明細書に開示されるいくつかの実施形態による、バッファ及びキャッシュを利用して、動的帯域幅を有するネットワーク接続でデータを動的にバッファリングするように構成されたストリーミングデバイスを含むシステムを示す。
【0006】
図3】本明細書に開示されるいくつかの実施形態による、ネットワーク接続のシフトに動的に反応する方法を示す流れ図である。
【0007】
図4】本明細書に開示されるいくつかの実施形態による、動的ネットワーク条件でメディアセグメントをストリーミングするための方法を示す流れ図である。
【0008】
図5】本明細書に開示されるいくつかの実施形態による、動的ネットワーク条件でデータをダウンロードするための方法を示す流れ図である。
【0009】
図6A】~
図6B】は、本明細書に開示されるいくつかの実施形態による、動的ネットワーク条件でデータをストリーミングするように構成されたコンピューティングデバイスのブロック図である。
【詳細な説明】
【0010】
さまざまなシステムで、データはダウンロードされてメモリにバッファリングされ、即時又は後続の出力に使用される。たとえば、ビデオデータをストリーミングするには、ビデオをメモリ内のバッファにダウンロードし、バッファから表示のために出力してもよい。バッファを使用すると、システムは出力前に一部のデータを事前にダウンロードして、出力の途切れや一時停止を防ぐことができる。例えば、一部のシステムでは、メディアを個別のセグメントでダウンロードし、各セグメントをバッファに格納する。その後、各セグメントはバッファから逐次出力される。
【0011】
一部のシステムでは、適応ビットレートソリューションを利用してストリーミング処理を改善している。そのようなシステムでは、ストリーミングプラットフォームは、さまざまなビットレートでストリームを提供する(例えば、毎秒10メガビット、毎秒15メガビットなど)。そして、ストリーミングデバイスは独自のネットワーク条件に基づいて、ダウンロードするビットレートを選択できる。例えば、ストリーミングデバイスは、ビデオの次の部分をダウンロードするときに要求する適切なビットレートを決定するために、ビデオファイルをダウンロードする速度を測定することができる。
【0012】
ただし、ダウンロード速度が大幅に変化した場合、ストリーミングデバイスは、次のセグメントに非最適なビットレートを選択することがある。例えば、デバイスは、普通はメディアのダウンロードに第1ネットワーク接続を利用するが、遙かに高速度の接続を断続的に受けることができる場合がある。このような高速度を使用して次のビットレートを選択すると、デバイスは、元の接続速度では維持できない高いビットレートを選択する。
【0013】
本開示の実施形態は、動的接続及びシフト接続に反応するためのシステム、デバイス、及び方法を提供する。その目的は、動的ネットワークを使用してデータをダウンロード又はアップロードするデバイスの動作を改善することである。本開示では、いくつかの実施例で、メディアストリーミングを使用する。ただし、本開示の実施形態は、データのダウンロード又はアップロードを含む多種多様な用途に容易に適用可能であることを理解するべきである。
【0014】
いくつかの実施形態では、コンピューティングデバイスは、ある初期速度でネットワーク接続を使用してデータをダウンロード(又はアップロード)できる。利用可能な帯域幅が(同じ接続上又は第2ネットワーク接続上で)増加した場合、そうでない場合に時間枠内でダウンロード(又はアップロード)できるデータよりも多くの追加データを、デバイスはこの速度のバーストを利用してダウンロード(又はアップロード)できる。一実施形態では、デバイスが、ある初期ビットレート、品質、又はダウンロード若しくはアップロードされているデータ量の他の指標を利用していた場合、デバイスは同じビットレートを引き続き使用する。その目的は、その高速度での接続が長期間にわたって利用可能であるときに処理が中断されないようにすることである。
【0015】
例えば、モバイルデバイスは、4G接続を利用してストリーミング環境でメディアのセグメントをダウンロードしてもよい。デバイスは、4G接続の速度(帯域幅とも呼ばれる)に基づいて、ストリーミングするビットレートを選択できる。ますます、より高速度のネットワーク(ミリ波5Gなど)が導入されている。これらのネットワークは非常に高い帯域幅を提供するが、接続は散発的かつ断続的である。例えば、ミリ波5G接続では、多くの場合、電波塔への見通し線が必要である。これにより、この高帯域幅接続は不安定で一時的なものになる。したがって、この高速度の接続を、後続のセグメントのために要求するビットレートを決定する際に利用すべきではない。さらに、メモリバッファがかなり制限されていることが多いため、バッファがすぐに一杯になって、高速度の接続が無駄になる可能性がある。
【0016】
本開示の諸実施形態では、ストリーミングデバイスは、個別のキャッシュを割り当てるか、バッファのサイズを一時的に増やすことで、この断続的な接続を利用できる。その目的は、高速度の接続を使用して追加データをダウンロードできるようにすることである。これにより、デバイスが断続的な高速度の接続を利用できるようになることで、ストリームの中断が減少し、ストリーミングシステム全体の動作が改善される。
【0017】
図1は、本明細書に開示されるいくつかの実施形態による、動的帯域幅を有するネットワーク接続でデータを適応的にバッファリングするように構成されたストリーミングデバイス105を含むシステム100を示す。図示の実施形態では、ストリーミングデバイス105は、1つ以上のネットワーク110A~110Bを介してコンテンツサーバ115と通信的に結合されている。一実施形態では、ネットワーク110は無線接続を提供する。少なくとも1つの実施形態では、ストリーミングデバイス105はモバイルデバイスであり、その例には、スマートフォン、タブレット、ラップトップ、又はワイヤレスネットワークを利用してデータをダウンロード若しくはストリーミングできるその他のデバイスなどがある。
【0018】
いくつかの実施形態では、ネットワーク110A~Bを、異なる帯域幅又は他の特性に関連付けてもよい。例えば、一実施形態では、ネットワーク110Aは、比較的限られた帯域幅(したがって、比較的限られたダウンロード速度)を有する4G又は3Gのセルラーネットワークであってもよく、他方で、ネットワーク110Bは高帯域幅ネットワーク(WiFI接続や5Gネットワークなど)である。
【0019】
概念を明確にするために、2つのネットワーク110A~Bが示されているが、本開示の諸実施形態は、単一のネットワークを含む任意の数の別個のネットワークと共に利用され得る。例えば、本開示の諸実施形態を使用することで、ストリーミングデバイス105が3つ以上のネットワーク間をシフトするときに、動的ネットワーク条件に反応できるようになる。同様に、本明細書に開示される諸実施形態を使用することで、ストリーミングデバイス105は単一のネットワーク接続上でのシフト条件に反応できるようになる。
【0020】
一実施形態では、より高い帯域幅のネットワーク110Bは他と比較して散発的又は断続的であってもよいが、ストリーミングデバイス105に確実に利用できない。ただし、利用可能な場合には、ネットワーク110Bを使用して、帯域幅が広いので大量のデータを短時間でダウンロードできる。いくつかの実施形態では、ストリーミングデバイス105は、普通はネットワーク110Aを介してコンテンツサーバ115からデータ(例えば、ビデオデータ)をダウンロードすることができる。いくつかの実施形態では、ストリーミングデバイス105はその実行に際して、適応ビットレートロジックを使用して、要求するビットレートバリアントをコンテンツサーバ115から選択し、その選択は、ネットワーク110Aを介した利用可能な帯域幅又はダウンロード速度に少なくとも部分的に基づく。
【0021】
いくつかの実施形態では、ストリーミングデバイス105は、このダウンロードされたデータをメモリ内のバッファに一時的にバッファリングする。その後、メディアはそのバッファから出力される。多くの実施形態では、バッファのサイズは比較的限られている。したがって、ストリーミングデバイス105は、通常、データ(例えば、メディアセグメント)の一部を、それらが出力/表示に必要とされる直前にネットワーク110Aを介してダウンロードする。
【0022】
一実施形態では、ストリーミングデバイス105は、より高い帯域幅の接続が利用可能であると判断した場合(例えば、ネットワーク110Bを介して)、動的に反応して、これらの高速度を活用し得る。一実施形態では、ストリーミングデバイス105は、この高速度が利用可能であると判断するが、その判断は、デバイスの現在の接続が所定の高速度の接続として分類又はラベル付けされているとの判断に基づく。例えば、ネットワーク110Aを介して接続された場合、ストリーミングデバイス105の接続は「4G」として分類され得るが、ネットワーク110Bは「5G」に分類されている。
【0023】
いくつかの実施形態では、ストリーミングデバイス105は、データがコンテンツサーバ115又は他のソースから現在ダウンロードされている速さを評価することによって、より速い接続を識別する。例えば、そのような一実施形態では、ストリーミングデバイス105は、その現在のダウンロード速度(例えば、現在のセグメント又はデータの一部について)と共に、スライディングウィンドウでの過去のダウンロード速度(例えば、過去60秒間、又は過去10セグメント若しくはデータの一部)を監視する。現在のダウンロード速度がこの過去の速度をある所定の基準で超えている場合、ストリーミングデバイス105は、それが高帯域幅接続上にあると決定し得る。諸実施形態では、この基準は、乗数閾値(例えば、少なくとも2倍の速さ)、最低速度(例えば、少なくとも毎秒100メガビット)、増加閾値(例えば、過去の速度より少なくとも毎秒50メガビット速い)などを含み得る。
【0024】
少なくとも1つの実施形態では、ストリーミングデバイス105は、以前の接続に基づいて高帯域幅接続を識別することができる。例えば、そのような一実施形態では、ストリーミングデバイス105は位置サービスを利用して、高帯域幅ネットワーク110Bが利用可能であるときはいつでも、その現在位置を識別して記録し得る。続いて、ストリーミングデバイス105の現在の位置又は動きに基づいて、ストリーミングデバイス105は、ネットワーク110Bはおそらく将来的(例えば、10秒以内又は他の所定の時間内)に利用可能になると判断し得る。それに応えて、ストリーミングデバイス105は、以下で説明するように、高速度の接続への準備を開始し得る。
【0025】
一実施形態では、ストリーミングデバイス105が、より高い帯域幅の接続を使用していると、判断すると、コンテンツサーバ115から上限なしキャッシュ又はバッファへのデータのダウンロードを開始する。いくつかの実施形態では、このキャッシュは、ストリーミングデバイス105の「補助メモリ」又は「ストレージ」と一般に呼ばれる二次メモリ(例えば、ハードドライブ(HD)、ソリッドステートドライブ(SSD)、ROM、フラッシュメモリ、固定又は取り外し可能なストレージ媒体など)に配置される。他方、元のバッファは、ストリーミングデバイス105の「メインメモリ」又は単に「メモリ」と一般に呼ばれる一次メモリ(例えば、ランダムアクセスメモリ(RAM))に配置される。当該技術分野で通常使用され、知られているように、「メモリ」という用語は、本明細書で「一次メモリ」として説明されているものを指し得る。他方、「ストレージ」という用語は、本明細書で「二次メモリ」として説明されているものを指し得る。一般的に、一次メモリはシステムの処理ユニットと密接に結合されており(例えば、RAM)、より速いアクセス時間を可能にする。ただし、多くの場合、この直接結合では一次メモリのサイズを比較的制限しておく必要がある。対照的に、通常、二次メモリにはこのような直接アクセスがないため、一次メモリと比較してアクセス時間が遅くなる。ただし、二次メモリは一般に一次メモリよりも大幅に大きくなり得る。別の一実施形態では、一次メモリに十分な空きがある場合(例えば、ハイメモリシステムにおいて)、ストリーミングデバイス105はメモリバッファのサイズを拡張し得るか、又は一次メモリ内に第2バッファ又はキャッシュを確立し得る。
【0026】
いくつかの実施形態では、ストリーミングデバイス105は、以前にデータをダウンロードするために使用したビットレートと同じビットレートで、このキャッシュにデータをダウンロードする。例えば、ストリーミングデバイス105が元々、コンテンツサーバ115から毎秒10メガビットのビットレートのストリームを使用していた場合、たとえネットワーク110Bがはるかに高いビットレートをサポートすることができても、ストリーミングデバイス105は10メガビットストリームを要求し続ける。
【0027】
このデータを上限なしキャッシュにダウンロードすることで、そうでない場合よりも多くの追加データを、ストリーミングデバイス105は高速度を利用してダウンロードすることができる。例えば、上限のあるデータ量(例えば、次の60秒のビデオ又は次の5つのセグメント)をバッファリングするのではなく、ストリーミングデバイス105は、より高速なネットワーク110Bを使用して、できる限りのデータをキャッシュにダウンロードし続けることができる。
【0028】
一実施形態では、元のメモリバッファが空である(例えば、以前にダウンロードされたセグメントのすべてが出力された)とき、ストリーミングデバイス105はキャッシュからのデータの出力を開始する。これには、データをメモリに転送する工程とメモリから出力する工程、又はストレージから直接出力する工程が含まれてもよい。
【0029】
いくつかの実施形態では、ストリーミングデバイス105は、ある所定の基準が満たされるまで、(元のバッファではなく)キャッシュにデータをダウンロードし続けることができる。これには、ストリーミングデバイス105が元のネットワーク110Aに戻ったと、判断する工程を含んでもよい。例えば、ストリーミングデバイス105は、その現在の接続のラベル又は分類をチェックしてもよい。別の一実施形態では、ストリーミングデバイス105は、上述のように、ダウンロード速度を監視し続けて、元の接続への低下を検出することができる(例えば、現在の速度を、過去Nセグメント又は秒にわたる過去の速度のスライディングウィンドウと比較することにより)。
【0030】
一実施形態では、次に、ストリーミングデバイス105は、キャッシュが空になるまで(例えば、ダウンロードされたデータのすべてが出力されるまで)キャッシュからデータを出力し続けることができる。一実施形態では、ストリーミングデバイス105は、元のストリーミングパラダイムに戻る(例えば、ある程度の量のデータをバッファにダウンロードする)ことができる。それは、キャッシュが空に近づいたとき(例えば、キャッシュから出力されずに残っているデータの量が所定の閾値を下回るとき)である。
【0031】
いくつかの実施形態では、ストリーミングデバイス105は所定のデータプールからダウンロード又はストリーミングしている。例えば、データのセグメント又は部分はすべて、所与のエピソード、映画、ポッドキャスト、又は他のメディアに対応し得る。一実施形態では、ネットワーク110Bが失われる前に、ストリーミングデバイス105がすべての利用可能なデータをキャッシュにダウンロードする場合(例えば、エピソード全体がダウンロードされた場合)、追加データのダウンロードを停止して、単にキャッシュからデータを出力することができる。
【0032】
いくつかの実施形態では、ストリーミングデバイス105はこのダウンロードされたキャッシュを維持して、たとえすべてのネットワーク接続が失われた場合でも、ストリーミングデバイス105が後でメディアを出力できるようにしてもよい。別の一実施形態では、ストリーミングのセッションがアクティブのままである間に限って、ストリーミングデバイス105はキャッシュへのアクセスを許容してもよい。そのような一実施形態では、ユーザがストリームを終了した場合、ストリーミングデバイス105はキャッシュされたデータを削除しても、さもなければ使用不可としてマークしてもよく、そしてストリーミングデバイス105にメディアの再ストリーミングを要求してもよい。
【0033】
いくつかの実施形態では、ストリーミングデバイス105は、第1ストリームが完了すると、他のストリームから追加データをダウンロードするように構成される。例えば、ストリーミングデバイス105が、ある番組から所与のエピソードをストリーミングしている場合、ストリーミングデバイス105は、所与のエピソードがダウンロードを完了した場合、次のエピソードのダウンロードを開始してもよい。これにより、ストリーミングデバイス105が追加データを事前取得することが可能になる。一実施形態では、ストリーミングデバイス105は任意の適切なロジックを使用して、ダウンロードするデータストリームを決定し得る。例えば、一実施形態では、ストリーミングデバイス105又はコンテンツサーバ115は、所定のシーケンス又はメディアのリスト(例えば、エピソードリスト)を利用し、次を要求/提供する。別の一実施形態では、ストリーミングデバイス105又はコンテンツサーバ115は他のカスタマイズロジックを使用して、次にダウンロードするデータを選択するために、ユーザにメディアを提案する。
【0034】
少なくとも1つの実施形態では、ストリーミングデバイス105は、事前にダウンロードされたメディアが実際に消費されたかどうかを追跡することができる。いくつかの実施形態では、ストリーミングデバイス105はその実行のために、どのデータ又はセグメントが実際にキャッシュから出力されたかを監視する。ストリーミングデバイス105は、この情報をコンテンツサーバ115又は他のシステムに送信してもよい。これにより、コンテンツサーバ115(又は他のシステム)は、ユーザが所与のストリームのどこで中断したかを、ダウンロードされたデータのみに基づくのではなく、実際に出力されたメディアに基づいて記憶できるようになる。同様のロジックを、ストリーミングデバイス105が後続のエピソード又はメディアを事前取得する実施形態に適用することができる。
【0035】
いくつかの実施形態では、ストリーミングデバイス105は、ストリームからキャッシュにメディアをダウンロードすることに加えて、又はその代わりに、他の定義されたメディアを事前取得することができる。例えば、ストリーミングデバイス105は、高帯域幅ネットワーク110Bを使用して、要求されたメディアのセグメントを事前取得することに加えて、又はその代わりに、広告又は他の所定のメディアをキャッシュにダウンロードしてもよい。これにより、ストリーミングデバイス105はこのデータをシームレスに出力できるようになる。たとえば、ライブストリーミング環境では、事前にキャッシュにダウンロードできるメディアがない可能性がある。ただし、ストリーミングデバイス105は高帯域幅接続を使用して、広告又は他のメディアをキャッシュに事前にダウンロードしてもよい。このデータは、後で適切に出力できる。一実施形態では、ストリーミングデバイス105は、どの広告又は他のメディアが実際に出力/消費されたかを監視し、この情報をコンテンツサーバ115又は他のシステムに送信することができる。
【0036】
少なくとも1つの実施形態では、ストリーミングデバイス105は高帯域幅ネットワーク110Bを選択的に使用して、そうでなければダウンロードされない他のデータ又はバリアントをダウンロードしてもよい。例えば、ストリーミングデバイス105は、元の接続上で第1ビットレートでデータをストリーミングしているが、ストリーミングデバイス105は、ネットワーク110Bが利用可能であるとき、より高いビットレートで1つ以上のセグメントをキャッシュにストリーミングしてもよい。別の一実施例として、ストリーミングデバイス105がオーディオのみのメディアをストリーミングしている場合、ストリーミングデバイス105は、高帯域幅接続が利用可能である場合、いくつかの関連するビデオをキャッシュにダウンロードしてもよい。
【0037】
いくつかの実施形態では、ストリーミングデバイス105がデータをキャッシュにダウンロードしているとき、キャッシュは必要に応じて増大又は拡張できる。つまり、キャッシュには上限がない。例えば、キャッシュの作成時にいくつかの初期サイズを定義できるが、ストリーミングデバイス105は、データをダウンロードしているとき、ある所定の最大値に達するまで、又はストレージが空きを使い果たすまで、キャッシュを増大させることができる。散発的な高帯域幅接続に上限なしバッファを利用することで、ストリーミングデバイス105は、ストリーミング環境を大幅に改善することができる。
【0038】
図2は、本明細書に開示されるいくつかの実施形態による、バッファ及びキャッシュを利用して、動的帯域幅を有するネットワーク接続でデータを動的にバッファリングするように構成されたストリーミングデバイス105を含むシステム200を示す。図示の実施形態では、ストリーミングデバイス105は、コンテンツサーバ115からメディアセグメント215をダウンロードする。図示のように、これらのセグメント215は、所定のメディアストリーム内のデータの逐次的な部分であり、逐次的にダウンロードされ、出力される。
【0039】
図示の実施形態では、ストリーミングデバイス105は、バッファ205とキャッシュ210とを含む。少なくとも1つの実施形態では、バッファ205はメモリに配置され、他方、キャッシュ210はストレージに配置されている。いくつかの実施形態では、キャッシュ210は、単にメモリ内の追加の空きに対応してもよい。さらに別の一実施形態では、キャッシュ210は個別のデータ構造ではないが、バッファ205の上限を拡張することによって実装される。
【0040】
一実施形態では、バッファ205のサイズは制限され(通常は固定され)ている。図示の実施形態では、バッファ205は、3つのセグメント215を格納するように構成される。本開示のいくつかの実施形態では、キャッシュ210はより大きく、追加データを格納するように構成されている。図示の実施形態では、キャッシュ210は、7つのセグメント215を格納する。少なくとも1つの実施形態では、キャッシュ210は、データがダウンロードされるときに動的に拡張され得る。例えば、キャッシュがいっぱいになった後も高帯域幅接続が利用可能である場合、ストリーミングデバイス105はキャッシュを拡張して増大可能とし、より多くのセグメント215を格納できるようにしてもよい。
【0041】
諸実施形態では、ストリーミングデバイス105は、通常の使用中にセグメント215をバッファ205にダウンロードしてもよい。セグメント215がバッファ205から出力されるとき、それらは削除されるか、そうでなければ「使用済み」としてマークされ、ストリーミングデバイス105が後続のセグメント215をバッファ205にダウンロードすることを可能にする。図示の実施形態では、高帯域幅接続が利用可能であると、判断すると、ストリーミングデバイス105は、後続のセグメント215をキャッシュ210にダウンロードし始める。すなわち、ストリーミングデバイス105は、まだ取得していないセグメント215を(出力されたかどうかに関係なく)バッファ205ではなく、キャッシュ210にダウンロードすることができる。
【0042】
バッファ205の最後のセグメント215(図示の実施形態ではセグメント215C)が出力されると、ストリーミングデバイス105は、キャッシュ210から後続のセグメント215を出力し始める。いくつかの実施形態では、これは、セグメント215をキャッシュ210からバッファ205又はメモリの別の部分へ逐次転送する工程と、その後、それらをメモリから出力する工程を含む。
【0043】
一実施形態では、高帯域幅接続が利用可能である限り、ストリーミングデバイス105は、セグメント215をキャッシュ210にダウンロードし続ける。高帯域幅接続が利用できなくなり、ストリーミングデバイス105が初期の接続の使用へ復帰する場合、ストリーミングデバイス105は、キャッシュ210内のデータのすべて(又はほぼすべて)が消費されるまで、ダウンロードを一時停止することができる。
【0044】
例えば、ストリーミングデバイス105が、ある所定の量のデータ(例えば、これから出力される、さらに3つのセグメント215)がキャッシュ210内に残っていると判断したとき、ストリーミングデバイス105は、元のストリーミング処理を開始して、後続のセグメント215をバッファ205にダウンロードすることができる。高帯域幅接続が再び利用可能になると、ストリーミングデバイス105は、キャッシュ210へのデータのダウンロードを再び開始し得る。これにより、ストリーミングデバイス105は、異なる帯域幅/速度を有する接続間をシームレスに移行することができる。
【0045】
図3は、本明細書に開示されるいくつかの実施形態による、ネットワーク接続のシフトに動的に反応する方法300を示す流れ図である。一実施形態では、方法300は、ストリーミングデバイス(ストリーミングデバイス105など)によって実行される。方法300はブロック305から始まる。ここで、ストリーミングデバイスは、ある初期速度でデータ(例えば、メディアセグメント)をバッファ(例えば、メモリ内の)にダウンロードする。例えば、ストリーミングデバイスは、第1帯域幅/速度に関連付けられた第1無線接続を介してバッファにセグメントをストリーミングしてもよい。いくつかの実施形態では、ストリーミングデバイスは、初期ビットレートに関連付けられたデータ(例えば、10メガビットのストリーム)をさらにダウンロードする。
【0046】
次に、方法300はブロック310に続く。ここで、ストリーミングデバイスは、バースト接続が利用可能かどうかを判断する。諸実施形態では、バースト接続は、ストリーミングデバイスで利用可能になる比較的高い帯域幅すなわち高速度の接続である。例えば、バースト接続は5G接続に対応してもよい。別の一実施形態では、バースト接続は同じ元の接続でのより高速なダウンロード速度に対応してもよい。
【0047】
一実施形態では、ストリーミングデバイスは、現在の接続が示すラベル又は分類に基づいて、バースト接続が利用可能かどうかを判断する。別の一実施形態では、ストリーミングデバイスは、現在又は最新のダウンロード速度を過去のダウンロード速度と(例えば、以前の5つのセグメント又は60秒にわたって)比較する。現在の速度が、元の速度と比較して(又は初期速度と比較することなく理論上で)、ある所定の閾値を超えた場合、ストリーミングデバイスは、バースト接続が利用可能であると判断できる。
【0048】
バースト接続を利用できない場合は、方法300はブロック305に戻る。これによって、ストリーミングデバイスは、通常どおり、引き続きバッファを介してデータをストリーミングする。ストリーミングデバイスが、バースト接続は利用可能であると判断した場合、方法300はブロック315に続く。ここで、ストリーミングデバイスは、バースト接続を介してデータをダウンロードするために使用されるキャッシュを作成する(又は、既存のキャッシュの使用を開始することを決定する)。一実施形態では、これには、メモリ又はストレージの一部をデータに割り当てる工程が含まれる。一実施形態では、キャッシュはバッファよりも大きい(又は、上限が設定されておらず、必要に応じて増大可能である)。
【0049】
次に、方法300はブロック320に続く。ここで、ストリーミングデバイスはバースト接続を使用してデータ(例えば、メディアの後続のセグメント)をキャッシュにダウンロードし始める。諸実施形態では、バースト接続はより高い速度又は帯域幅に関連付けられているため、ストリーミングデバイスは、追加セグメントが出力に必要になる直前まで待たずに、直ちに追加セグメントをダウンロードできる。少なくとも1つの実施形態では、ストリーミングデバイスは、同じストリーム又はビットレートに関連付けられたデータをダウンロードし続ける。つまり、ストリーミングデバイスが所与のストリーム、バリアント、又はビットレートをダウンロードしていた場合、ストリーミングデバイスはキャッシュにダウンロードするときに、同じストリーム、バリアント、又はビットレートを引き続き使用できる。これにより、ストリーミングデバイスはバッファとキャッシュの間(及び初期の接続とバースト接続の間)をシームレスに行き来できる。
【0050】
ブロック325で、ストリーミングデバイスは、バースト接続がまだ利用可能かどうかを判断する。可能である場合、方法300はブロック320に戻る。これによって、ストリーミングデバイスは、バースト接続が利用できなくなるか、ある他の基準が満たされるまで、高速度でデータをダウンロードし続けることができる。上記のように、この基準は、メディア全体(例えば、番組全体)がダウンロードされたかどうかを判断する工程などを含み得る。少なくとも1つの実施形態では、ストリーミングデバイスは、所定の最大量のデータをキャッシュにダウンロードする権利を有し得る。例えば、ライセンスやその他の基準に基づいて、ストリーミングデバイスはある所定の量(例えば、最大50セグメント又は10分)のデータを事前にダウンロードすることを許可されてもよい。
【0051】
ブロック325に戻り、ストリーミングデバイスが、バースト接続は利用できなくなったと判断した場合、方法300はブロック305に戻って、初期の接続を使用してデータをバッファにストリーミングする。少なくとも1つの実施形態では、直ちに初期のレートでストリーミングを開始するのではなく、上述のように、ストリーミングデバイスは、キャッシュが空になる(又はほぼ空になる)まで待機してもよい。
【0052】
有益にも、方法300は、ストリーミングデバイスが異なる接続モードの間をスムーズに移行することを可能にすると共に、一時的なバースト接続を最大限に活用して、データをキャッシュに事前にダウンロードする。
【0053】
図4は、本明細書に開示されるいくつかの実施形態による、動的ネットワーク条件でメディアセグメントをストリーミングするための方法400を示す流れ図である。一実施形態では、方法400はストリーミングデバイス(例えば、ストリーミングデバイス105)によって実行される。一実施形態では、方法400は、(より一般的なデータと比較して)特にメディアセグメントをストリーミングする工程に対応し、そのような実施形態のさらなる詳細を提供する。方法400はブロック405から始まる。ここでは、ストリーミングデバイスはストリーミングのためのセグメントビットレートを選択する。
【0054】
例えば、適応ビットレートロジックを使用して、ストリーミングデバイスは、ストリーミングデバイスで利用可能な帯域幅又は現在のダウンロード速度に部分的に基づいて、どのビットレートを利用するかを決定することができる。本明細書で呼んでいるように、所与のビットレートは、あるいは「バリアント」、「ストリーム」などと呼ばれることもある。諸実施形態では、ビットレートを選択する工程は、ダウンロードするメディアの特定のバージョン又はバリアントを選択する工程を含む。多くの場合、より高いビットレートはより高品質のビデオ/オーディオに関連付けられるが、確実にダウンロードするためのより高い帯域幅も必要になる。したがって、ストリーミングデバイスは、可能な限り最高の品質で信頼できるストリーミングを保証するビットレートを選択できる。
【0055】
ブロック410で、ストリーミングデバイスは、選択されたビットレートに関連付けられたメディアのセグメントをバッファにダウンロードする。上記のように、続いて、これらのバッファリングされたセグメントは逐次的に出力される。ブロック415で、ストリーミングデバイスは、メディアのダウンロードが終了したかどうかを判断する。例えば、ストリーミングデバイスが映画をストリーミングしている場合、ストリーミングデバイスは、映画の最後のメディアセグメントがダウンロードされたかどうかを判断してもよい。ダウンロードされた場合、方法400はブロック420で終了する。すなわち、図示の実施形態では、このようにして、ストリーミングデバイスは、現在のストリームが終了したときに、まだ初期の接続を使用している場合にはダウンロードを中止する。
【0056】
ストリーミングデバイスが、メディアのストリーミングは終了していないと判断した場合、方法400はブロック425に続く。ブロック425で、上述のように、ストリーミングデバイスは、バースト接続が利用可能かどうかを判断する。バースト接続を利用できない場合、方法400はブロック410に戻る。これによって、ストリーミングデバイスは、初期の接続を介して、選択された初期ビットレートでデータをストリーミングし続けることができる。ストリーミングデバイスが、バースト接続は利用可能であると判断した場合、方法400はブロック430に続く。
【0057】
ブロック430で、ストリーミングデバイスは、メディアの後続のセグメントをキャッシュにダウンロードする。一実施形態では、このキャッシュをストレージ又は任意の適切な場所に配置してもよい。キャッシュはバッファよりも大きくてもよく、上限なし又は制限なしのサイズ、あるいはその両方に関連付けられてもよい。図示の実施形態では、これらのセグメントをより高いダウンロード速度で(バースト接続の帯域幅が広いことにより)ダウンロードしてもよいが、ストリーミングデバイスは、同じビットレート/バリアントのセグメントをダウンロードし続ける。これにより、バースト接続が突然失われた場合でも(例えば、その一時的で不安定な性質のため)、後続のセグメントを、元の接続を使用して中断することなくダウンロードできる。
【0058】
ブロック435で、ストリーミングデバイスは、選択したメディア(例えば、ストリーミングされているエピソード又は映画)のダウンロードが終了したかどうかを判断する。終了していない場合、方法400はブロック445に続く。ストリーミングデバイスが現在のメディアのダウンロードを終了した場合、方法400はブロック440へ進む。ここで、ストリーミングデバイスは次のメディアを識別する。一実施形態では、ストリーミングデバイスはこれを行うために、コンテンツサーバ又はプロバイダーに問い合わせる。続いて、コンテンツサーバは次にストリーミングするメディアを決定できる(例えば、メディアをユーザに提案するために、メディアの定義されたシーケンスを使用する、及び予測アルゴリズムを使用するなど)。これにより、ストリーミングデバイスは、ユーザが見たいと思うかもしれない次のストリームのためにメディアを事前にキャッシュすることができる。次に、方法400はブロック445に続く。
【0059】
ブロック445で、ストリーミングデバイスは、バースト接続がまだ利用可能かどうかを判断する。利用可能である場合、方法400はブロック430へ戻って、増加した速度でセグメントをキャッシュにダウンロードし続ける。バースト接続を利用できない場合、方法400はブロック410へ戻り、元の接続を使用してストリーミングを続ける。少なくとも1つの実施形態では、上記のように、ストリーミングデバイスは、キャッシュが消費されるまでダウンロードを休止してもよい。
【0060】
さらに、いくつかの実施形態では、ストリーミングデバイスが別のメディアストリーム(例えば、シリーズものの次のエピソード)のダウンロードを開始していた場合、方法400は、ストリーミングデバイスが実際に次のメディアの消費を開始していない限り、次のメディアからのセグメントのダウンロードを続けるのではなく、終了してもよい。つまり、ユーザが第1メディアを終了して第2メディアの出力を開始しない限り、ストリーミングデバイスは初期の接続で第2メディアのダウンロードを続行しない。
【0061】
図5は、本明細書に開示されるいくつかの実施形態による、動的ネットワーク条件でデータをダウンロードするための方法500を示す流れ図である。方法500はブロック505から始まる。ここで、デバイス(例えば、ストリーミングデバイス105)は、データの第1部分を第1ダウンロード速度でバッファにダウンロードする。ブロック510で、デバイスはデータの第1部分をバッファから出力する。次に、方法500はブロック515に続く。ここで、デバイスは第1ダウンロード速度よりも速い第2ダウンロード速度でデータをダウンロードしていると、判断すると、デバイスは、データの1つ以上の後続の部分にキャッシュを使用することを決定し、データの第2部分をキャッシュにダウンロードする。ブロック520で、バッファは空であると、判断すると、デバイスはデータの第2部分をキャッシュから出力する。
【0062】
図6Aは、本明細書に開示されるいくつかの実施形態による、動的ネットワーク条件でデータをストリーミングするように構成されたコンピューティングデバイス600Aのブロック図である。一実施形態では、コンピューティングデバイス600Aはストリーミングデバイス105である。物理デバイスとして示されているが、諸実施形態では、コンピューティングデバイス600Aを仮想デバイス若しくはサービスとして、又はいくつかのデバイスにわたって(例えば、クラウド環境で)実装してもよい。図示のように、コンピューティングデバイス600Aは、プロセッサ605と、メモリ610と、ストレージ615と、I/Oインターフェース620と、ネットワークインターフェース625とを備える。図示の実施形態では、プロセッサ605は、メモリ610に格納されたプログラミング命令を読み出して実行するとともに、ストレージ615に存在するアプリケーションデータを格納して読み出す。プロセッサ605は一般に、単一のCPU、GPU、CPU及びGPU、複数のCPU、複数のGPU、複数の処理コアを持つ単一のCPU又はGPUなどを代表する。メモリ610が備えられ、一般にランダムアクセスメモリを代表する。ストレージ615はメモリ又はストレージコンポーネントの任意の組み合わせであってもよく、その例は、ディスクドライブ、フラッシュベースのストレージデバイスなどを含む(ただし、これらに限定されない)。また、固定ストレージデバイス、取り外し可能なストレージデバイス又は両方の組み合わせを含んでもよく、その例には、固定ディスクドライブ、取り外し可能なメモリカード、キャッシュ、光ストレージ、ネットワーク接続ストレージ(NAS)、又はストレージエリアネットワーク(SAN)がある。
【0063】
いくつかの実施形態では、I/Oデバイス635(マウス、キーボード、モニタ、タッチスクリーンなど)は、I/Oインターフェース620を介して接続される。さらに、ネットワークインターフェース625を介して、コンピューティングデバイス600Aは、コンテンツサーバなどの1つ以上の他のデバイス及びコンポーネントと(直接的又は間接的に)、1つ以上のネットワークを介して通信的に結合され得る。
【0064】
図示の実施形態では、ストレージ615はデータキャッシュ650Aを含む。諸実施形態では、データキャッシュ650Aを一般的に使用して、上述のように、バースト速度でダウンロードされるデータの一部を格納する。いくつかの実施形態では、データキャッシュ650Aには制限がなく、拡張して任意の量のデータを格納できる。例えば、バースト接続が利用可能である限り、コンピューティングデバイス600Aはセグメントをデータキャッシュ650Aにダウンロードし続けて、必要に応じてそれを増大させてもよい。
【0065】
図示のように、メモリ610はデータバッファ645を含む。ストリーミングアプリケーション640はストレージ615に存在するものとして示されている。ソフトウェアとして描かれているが、諸実施形態では、ストリーミングアプリケーション640の機能を、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアの組み合わせを使用して実装してもよい。メモリ610を使用して、ストリーミングアプリケーション640を一時的に格納してもよい。他方、プロセッサは実行時にストリーミングアプリケーション640の命令を実行する。一実施形態では、データバッファ645のサイズは固定されてる。ストリーミングアプリケーション640は、一般に、本明細書に開示される1つ以上の実施形態を実行するように構成される。例えば、ストリーミングアプリケーション640は、通常の接続が利用可能であるときに、(例えば、コンテンツサーバから)データバッファ645にデータをストリーミングしてもよい。バースト速度が利用可能な場合、ストリーミングアプリケーション640は、データキャッシュ650Aへのデータのストリーミングを始めてもよい。
【0066】
図6Bは、本明細書に開示されるいくつかの実施形態による、動的ネットワーク条件でデータをストリーミングするように構成された代替のコンピューティングデバイス600Bのブロック図である。図示の実施形態では、ストレージ615を使用してキャッシュを受け入れるのではなく、コンピューティングデバイス600Bは、メモリ610内にデータバッファ645及びデータキャッシュ650Bの両方を備える。一実施形態では、上述したように、ストリーミングアプリケーション640はデータをデータバッファ645にストリーミングすることができる。バースト速度が利用可能な場合、図示の実施形態では、ストリーミングアプリケーション640はデータをメモリ610内のデータキャッシュ650Bにストリーミングする。すなわち、システムは、ストレージ615にキャッシュを割り当てるのではなく、メモリ610にキャッシュを割り当てている。少なくとも1つの実施形態では、別のデータキャッシュ650Bを割り当てるのではなく、その代わりに、ストリーミングアプリケーション640は、新しいデータがバースト速度でダウンロードされるときに、データバッファ645のサイズを拡張することができる。
【0067】
一実施形態では、ストリーミングアプリケーション640は、バースト接続を利用できなくなるまで、データキャッシュ650Bにデータをダウンロードする。いくつかの実施形態では、データキャッシュ650Bが所定のサイズに達した場合(すなわち、所定の量のデータがすでにデータキャッシュ650Bにダウンロードされている場合)、ストリーミングアプリケーション640は、ストレージ615に別のキャッシュを割り当てて、データをダウンロードし続けることができる。
【0068】
本開示では、様々な実施形態が参照されている。ただし、本開示は、記載された特定の実施形態に限定されないことを理解するべきである。その代わりに、種々の諸実施形態に関連するかどうかにかかわらず、以下の構成及び要素のいかなる組み合わせも、本明細書で提供される教示を実行及び実践するために企図されたものである。さらに、実施形態の要素が「A及びBのうちの少なくとも1つ」の形で記載されている場合、要素Aのみを含む、要素Bのみを含む、要素A及びBを含む実施形態がそれぞれ企図されると、理解できる。さらに、いくつかの実施形態は、他の可能な解決策又は先行技術を超える効果を達成し得るが、所与の実施形態によって特定の効果が達成されるかどうかは、本開示を限定するものではない。したがって、本明細書に開示された態様、構成、実施形態、及び効果は、単なる例示であり、特許請求の範囲に明示的に記載されている場合を除き、添付の特許請求の範囲の要素又は制限とは見なされない。同様に、「本発明」という言及は、本明細書に開示される発明の内容の一般化として解釈されるものではなく、又、請求項に明確に記載される場合を除き、添付の特許請求の範囲の要素又は限定と見なされるものではない。
【0069】
当業者には理解されるように、本明細書に記載の実施形態は、システム、方法、又はコンピュータプログラム製品として具現化され得る。したがって、実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又はソフトウェア及びハードウェアの態様を組み合わせた実施形態の形態を取ることができ、本明細書ではそれらすべてを「回路」、「モジュール」、又は「システム」と総称する。さらに、本明細書に記載の実施形態は、コンピュータ可読プログラムコードが具現化された1つ以上のコンピュータ可読媒体内で表現されたコンピュータプログラム製品の形態を取り得る。
【0070】
コンピュータ可読媒体上で具現化されたプログラムコードは、任意の適切な媒体を使用して送信されてもよい。その中には、無線、有線、光ファイバーケーブル、RFなど、又はこれらの任意の適切な組み合わせを含むが、これらに限定されない。
【0071】
本開示の実施形態の動作を実行するためのコンピュータプログラムコードは、1つ以上のプログラミング言語の任意の組み合わせで書かれてもよい。そのプログラミング言語は、Java、Smalltalk、C++などのオブジェクト指向プログラミング言語、「C」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む。プログラムコードを、完全にユーザのコンピュータ上で、又は部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェアパッケージとして実行してもよく、一部はユーザのコンピュータ上かつ一部はリモートコンピュータ上で、又は完全にリモートコンピュータ又はサーバ上で実行してもよい。後者のシナリオでは、リモートコンピュータを、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよい。又は、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを介して)接続してもよい。
【0072】
本開示の態様は、本開示の実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図又はブロック図を参照して本明細書に記載されている。フローチャート図又はブロック図の各ブロック、及びフローチャート図又はブロック図内のブロックの組み合わせは、コンピュータプログラム命令によって実行されることが理解できる。これらのコンピュータプログラム命令は、汎用コンピュータ、特殊用途コンピュータ、又はマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供可能であり、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサを介して実行される命令は、フローチャート図又はブロック図のブロックで指定される機能/動作を実施するための手段を生成する。
【0073】
これらのコンピュータプログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、又は他のデバイスに、特定の方法で機能するよう指示できるコンピュータ可読媒体に格納可能であり、これにより、コンピュータ可読媒体に格納された命令が、フローチャート図又はブロック図のブロックで指定された機能/動作を実施する命令を含む製品を形成する。
【0074】
また、コンピュータプログラム命令を、コンピュータ、他のプログラム可能なデータ処理装置、又は他のデバイスにロードし、コンピュータ、他のプログラム可能な装置、又は他のデバイス上で一連の動作ステップを実行させて、コンピュータ実行プロセスを生成してもよく、それにより、コンピュータ、他のプログラム可能なデータ処理装置、又は他のデバイス上で実行される命令が、フローチャート図又はブロック図のブロックで指定された機能/動作を実行するためのプロセスを提供する。
【0075】
図中のフローチャート図とブロック図は、本開示の様々な実施形態によるシステム、方法、及びコンピュータプログラム製品の可能な実施態様のアーキテクチャ、機能、及び動作を説明している。この点で、フローチャート図又はブロック図の各ブロックは、モジュール、セグメント、又はコードの一部を表し、これらが、指定された論理関数を実行するための1つ以上の実行可能命令を含んでもよい。また、いくつかの代替実施態様では、ブロックに記載されている機能が、図に記載されている順序とは異なる順序で生じる場合があることにも留意するべきである。例えば、連続して示されている2つのブロックは、実際には、実質的に同時に実行されてもよく、関連する機能に応じて、逆の順序で実行されても、順不同で実行されてもよい。また、ブロック図又はフローチャート図の各ブロック、及びブロック図又はフローチャート図のブロックの組み合わせを、特定の機能又は動作を実行する特殊用途ハードウェアベースのシステム、又は特殊用途ハードウェアとコンピュータ命令の組み合わせによって実行し得ることにも注意が必要である。
【0076】
上記は本開示の実施形態を対象としているが、本開示の他のさらなる実施形態を、その基本的な範囲から逸脱することなく創作することができ、その範囲は以下の特許請求の範囲に基づいて定められる。
図1
図2
図3
図4
図5
図6A
図6B
【外国語明細書】