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

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

▶ ドロップボックス, インコーポレイテッドの特許一覧

特許7518302ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術
<>
  • 特許-ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術 図1
  • 特許-ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術 図2
  • 特許-ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術 図3
  • 特許-ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術 図4
  • 特許-ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術 図5
  • 特許-ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術 図6
  • 特許-ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術 図7A
  • 特許-ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術 図7B
  • 特許-ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術 図8
  • 特許-ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術 図9
  • 特許-ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-08
(45)【発行日】2024-07-17
(54)【発明の名称】ビデオコラボレーションセッション中のユーザ動作の競合を回避するための技術
(51)【国際特許分類】
   H04N 21/238 20110101AFI20240709BHJP
   H04N 21/239 20110101ALI20240709BHJP
   H04N 21/242 20110101ALI20240709BHJP
   H04N 5/91 20060101ALI20240709BHJP
【FI】
H04N21/238
H04N21/239
H04N21/242
H04N5/91
【請求項の数】 20
(21)【出願番号】P 2023552576
(86)(22)【出願日】2022-02-11
(65)【公表番号】
(43)【公表日】2024-04-03
(86)【国際出願番号】 US2022016047
(87)【国際公開番号】W WO2023277966
(87)【国際公開日】2023-01-05
【審査請求日】2023-10-30
(31)【優先権主張番号】17/364,375
(32)【優先日】2021-06-30
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/364,501
(32)【優先日】2021-06-30
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】509117964
【氏名又は名称】ドロップボックス, インコーポレイテッド
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】ヤン, シヤ
(72)【発明者】
【氏名】ロジャース, アラン
(72)【発明者】
【氏名】ワグナー, ダニエル
(72)【発明者】
【氏名】マー, アイリーン
(72)【発明者】
【氏名】ステークロン, ジェイソン
【審査官】川中 龍太
(56)【参考文献】
【文献】特開2004-193702(JP,A)
【文献】特表2017-504992(JP,A)
【文献】米国特許出願公開第2014/0047022(US,A1)
【文献】米国特許出願公開第2021/0092172(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00 - 21/858
H04N 5/91 - 5/956
(57)【特許請求の範囲】
【請求項1】
コンピュータで実施される方法であって、
ビデオデータの複数のフレームのうちの現在視聴されているフレームを識別する現在のフレーム値を含む共同状態データに少なくとも部分的に基づいて、複数のクライアントデバイスに同時に前記ビデオデータをストリーミングすることと、
前記複数のクライアントデバイスの特定のクライアントデバイスから、前記特定のクライアントデバイスにおいて前記複数のフレームの特定のフレームで実行される描画アノテーションのための複数のリアルタイム描画データ更新を受信することであって、前記複数のリアルタイム描画データ更新は、特定の期間にわたってリアルタイムに受信される、ことと、
前記特定の期間中に、前記特定のクライアントデバイス以外の前記複数のクライアントデバイスのクライアントデバイスに、前記複数のリアルタイム描画データ更新のうちの各リアルタイム描画データ更新を送信することであって、前記クライアントデバイスは、前記特定の期間中にかつ前記複数のリアルタイム描画データ更新のうちの各リアルタイム描画データ更新に基づいて、前記クライアントデバイスにおいて表示される前記特定のフレーム上の前記描画アノテーションの更新されたバージョンを表示するように構成される、ことと、
前記複数のリアルタイム描画更新に基づいてフリーズ条件を検出することと、
前記検出されたフリーズ条件に基づいて、前記共同状態データにおける前記現在のフレーム値を前記特定のフレームでフリーズすることと、を含み、
前記方法は1つ以上のコンピューティングデバイスによって実行される、方法。
【請求項2】
請求項1に記載の方法であって、前記共同状態データにおける前記現在のフレーム値を前記特定のフレームでフリーズすることは、前記複数のクライアントデバイスの1つ以上のクライアントデバイスにおいて表示されるビデオ再生コントロールを無効化させることを含む、方法。
【請求項3】
請求項1に記載の方法であって、前記共同状態データにおける前記現在のフレーム値を前記特定のフレームでフリーズすることは、
前記複数のクライアントデバイスの第2のクライアントデバイスから、前記共同状態データの前記現在のフレーム値を変更するビデオ再生命令を受信することと、
前記ビデオ再生命令を受信した後に、かつ前記検出されたフリーズ条件に少なくとも部分的に基づいて、前記共同状態データにおいて前記特定のフレームを識別する前記現在のフレーム値を維持することと、を含む方法。
【請求項4】
請求項1に記載の方法であって、更に、前記共同状態データにおける前記現在のフレーム値を前記特定のフレームでフリーズした後に、
前記フリーズ条件の解除を、
前記フリーズ条件を解除する命令を受信することと、
前記特定のクライアントデバイスからの描画更新の終了を受信することと、又は
前記フリーズ条件を引き起こしたコンテキストイベントを検出してから時間の閾値量が経過したと判定することと、の1つに少なくとも部分的に基づいて、検出することと、
前記フリーズ条件の解除を検出した後に、
前記複数のクライアントデバイスの第2のクライアントデバイスから、前記共同状態データ内の前記現在のフレーム値を変更するように命令するビデオ再生命令を受信することと、
前記ビデオ再生命令に基づいて、前記共同状態データの前記現在のフレーム値を変更することと、を含む方法。
【請求項5】
請求項1に記載の方法であって、更に、前記フリーズ条件を検出することに基づいて、前記複数のクライアントデバイスの1つ以上のクライアントデバイスによって視覚ビデオフリーズインジケーションを表示させることを含む、方法。
【請求項6】
請求項5に記載の方法であって、前記視覚ビデオフリーズインジケーションは、前記ストリーミングされたビデオデータの進行を制御するように構成される1つ以上のビデオ進行コントロールとの視覚的関連で表示される、方法。
【請求項7】
請求項5に記載の方法であって、更に、
前記フリーズ条件の解除を検出することと、
前記フリーズ条件の解除の検出に基づいて、前記1つ以上のクライアントデバイスにおける前記視覚ビデオフリーズインジケーションを削除させることとを含む、方法。
【請求項8】
請求項5に記載の方法であって、前記1つ以上のクライアントデバイスのうちのクライアントデバイスによって表示される、前記視覚ビデオフリーズインジケーションは、前記フリーズ条件に関連付けられたユーザ識別子を含む、方法。
【請求項9】
請求項1に記載の方法であって、更に、
前記現在のフレーム値が、前記共同状態データにおいて、前記複数のフレームのうちの第2のフレームを識別する間に、前記複数のクライアントデバイスのうちのクライアントデバイスからのフリーズ要求を受信したことに基づいて、第2のフリーズ条件を検出することと、
前記第2の検出されたフリーズ条件に基づいて、前記共同状態データにおける前記現在のフレーム値を前記第2のフレームでフリーズすることと、を含む、方法。
【請求項10】
命令の1つ以上のシーケンスを保存する1つ以上の非一時的コンピュータ可読媒体であって、命令の前記1つ以上のシーケンスは、1つ以上のプロセッサによって実行されると、
ビデオデータの複数のフレームのうちの現在視聴されているフレームを識別する現在のフレーム値を含む共同状態データに少なくとも部分的に基づいて、複数のクライアントデバイスに同時に前記ビデオデータをストリーミングすることと、
前記複数のクライアントデバイスの特定のクライアントデバイスから、前記特定のクライアントデバイスにおいて前記複数のフレームの特定のフレームで実行される描画アノテーションのための複数のリアルタイム描画データ更新を受信することであって、前記複数のリアルタイム描画データ更新は、リアルタイムに特定の期間にわたって受信される、ことと、
前記特定の期間中に、前記特定のクライアントデバイス以外の前記複数のクライアントデバイスのクライアントデバイスに、前記複数のリアルタイム描画データ更新のうちの各リアルタイム描画データ更新を送信することであって、前記クライアントデバイスは、前記特定の期間中にかつ前記複数のリアルタイム描画データ更新のうちの各リアルタイム描画データ更新に基づいて、前記クライアントデバイスにおいて表示される前記特定のフレーム上の前記描画アノテーションの更新されたバージョンを表示するように構成される、ことと、
前記特定の期間中に、フリーズ条件を検出することと、
前記検出されたフリーズ条件に基づいて、前記共同状態データにおける前記現在のフレーム値を前記特定のフレームでフリーズすることと、をさせる1つ以上の非一時的コンピュータ可読媒体。
【請求項11】
請求項10に記載の1つ以上の非一時的コンピュータ可読媒体であって、前記共同状態データにおける前記現在のフレーム値を前記特定のフレームでフリーズすることは、前記複数のクライアントデバイスの1つ以上のクライアントデバイスにおいて表示されるビデオ再生コントロールを無効化させることを含む1つ以上の非一時的コンピュータ可読媒体。
【請求項12】
請求項10に記載の1つ以上の非一時的コンピュータ可読媒体であって、前記共同状態データにおける前記現在のフレーム値を前記特定のフレームでフリーズすることは、
前記複数のクライアントデバイスの第2のクライアントデバイスから、前記共同状態データ内の前記現在のフレーム値を変更するように命令するビデオ再生命令を受信することと、
前記ビデオ再生命令を受信した後に、かつ前記検出されたフリーズ条件に少なくとも部分的に基づいて、前記共同状態データにおいて前記特定のフレームを識別する前記現在のフレーム値を維持することと、を含む1つ以上の非一時的コンピュータ可読媒体。
【請求項13】
請求項10に記載の1つ以上の非一時的コンピュータ可読媒体であって、命令の前記1つ以上のシーケンスは、1つ以上のプロセッサによって実行されると、前記共同状態データにおける前記現在のフレーム値を前記特定のフレームでフリーズした後に、
前記フリーズ条件の解除を、
前記フリーズ条件を解除する命令を受信することと、
前記特定のクライアントデバイスからの描画更新の終了を受信することと、又は
前記フリーズ条件を引き起こしたコンテキストイベントを検出してから時間の閾値量が経過したと判定することと、の1つに少なくとも部分的に基づいて、検出することと、
前記フリーズ条件の解除を検出した後に、
前記複数のクライアントデバイスの第2のクライアントデバイスから、前記共同状態データ内の前記現在のフレーム値を変更するように命令するビデオ再生命令を受信することと、
前記ビデオ再生命令に基づいて、前記共同状態データの前記現在のフレーム値を変更することと、をさせる命令を含む1つ以上の非一時的コンピュータ可読媒体。
【請求項14】
請求項10に記載の1つ以上の非一時的コンピュータ可読媒体であって、命令の前記1つ以上のシーケンスは、1つ以上のプロセッサによって実行されると、
前記フリーズ条件を検出することに基づいて、前記複数のクライアントデバイスの1つ以上のクライアントデバイスによって視覚ビデオフリーズインジケーションを表示させることを含む、命令を含み、
前記視覚ビデオフリーズインジケーションは、前記ストリーミングされたビデオデータの進行を制御するように構成される1つ以上のビデオ進行コントロールとの視覚的関連で表示される、1つ以上の非一時的コンピュータ可読媒体。
【請求項15】
システムであって
1つ以上のプロセッサと、
命令の1つ以上のシーケンスを保存する1つ以上の非一時的コンピュータ可読媒体であって、命令の前記1つ以上のシーケンスは、1つ以上のプロセッサによって実行されると、
(a)ビデオデータの複数のフレームのうちの現在視聴されているフレームを識別する現在のフレーム値と、(b)セッションマスタ識別子と、を含む共同状態データに少なくとも部分的に基づいて、複数のクライアントデバイスに同時に前記ビデオデータをストリーミングすることと、
前記現在のフレーム値が、前記共同状態データにおいて、前記ビデオデータの特定のフレームを示す間に、前記複数のクライアントデバイスの特定のクライアントデバイスから、前記特定のクライアントデバイスによって表示されたグラフィカルユーザインタフェース内で前記特定のクライアントデバイスにおいて実行される1つ以上の描画動作を示す共存情報を受信することと、
前記特定のクライアントデバイス以外の前記複数のクライアントデバイスのクライアントデバイスに、共存情報を送信することであって、前記クライアントデバイスは、前記共存情報に基づいて、前記クライアントデバイスによって表示されるグラフィカルユーザインターフェースにおける前記1つ以上の描画動作の視覚表現を表示するように構成される、ことと、
前記1つ以上の描画動作に基づいてフリーズ条件を検出することと、
前記検出されたフリーズ条件に基づいて、前記共同状態データにおける前記現在のフレーム値を前記特定のフレームでフリーズすることと、をさせるシステム。
【請求項16】
請求項15に記載のシステムであって、前記1つ以上の描画動作に基づいて前記フリーズ条件を検出することは、前記1つ以上の描画動作に関連付けられたタイムスタンプから、時間の閾値量がまだ経過していないと判定することを含む、システム。
【請求項17】
請求項15に記載のシステムであって、命令の前記1つ以上のシーケンスは、更に、1つ以上のプロセッサによって実行されると、
前記現在のフレーム値をフリーズした後に、前記現在のフレーム値のフリーズを解除する命令を受信することであって、フリーズを解除する前記命令は前記セッションマスタ識別子に関連付けられている、ことと、
フリーズを解除する前記命令を受信したことに基づいて前記現在のフレーム値のフリーズを解除することと、をさせる命令を含む、システム。
【請求項18】
請求項17に記載のシステムであって、フリーズを解除する命令を受信することは、前記セッションマスタ識別子に関連付けられたクライアントデバイスからビデオ再生命令を受信することを含む、システム。
【請求項19】
請求項17に記載のシステムであって、フリーズを解除する命令を受信することは、前記セッションマスタ識別子に関連付けられたクライアントデバイスから明示のビデオフリーズ解除命令を受信することを含む、システム。
【請求項20】
請求項17に記載のシステムであって、
前記フリーズ条件は第1のフリーズ条件であり、
命令の前記1つ以上のシーケンスは、更に、1つ以上のプロセッサによって実行されると、前記現在のフレーム値のフリーズを解除する前記命令を受信する前に、
前記特定のクライアントデバイス以外の前記複数のクライアントデバイスのクライアントデバイスによって引き起こされた第2のフリーズ条件を検出することをさせる命令を含み、
前記現在のフレーム値のフリーズを解除する前記命令を受信したことに応じて、前記第1のフリーズ条件と前記第2のフリーズ条件の両方がアクティブである、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ストリーミングビデオデータの共同視聴、さらに具体的には、クライアントデバイスに表示されるクライアントインタフェースを介してビデオコラボレーションセッションに参加するクライアントデバイス間のユーザ動作の競合を回避することにより通信を容易にするビデオコラボレーションサービスに関する。
【背景技術】
【0002】
ビデオ制作は一般に、例えば、ディレクタ、プロデューサ、キャスト、クルー、照明専門家、アーティスト、コンピュータアニメータなど、所与のビデオプロジェクトに複数の共同作業者を必要とする。複数の共同作業者が同時に同じビデオを共同的に視聴したり、コメントしたりすると、非常に便利である。
【0003】
共同ビデオレビューを実現する1つの方法は、すべての共同作業者を同じ地理的な場所に集め、ビデオを直接閲覧したり、話し合ったりすることである。ただし、ビデオ制作の現在のグローバルな性質を考えると、すべてのチームが同じ位置に簡単にアクセス可能なメンバで構成されているわけではない。さらに、共同作業者からのすべてのコメント情報及び、コメントが関連するビデオの部分を含む、将来のレビューのために、このような対人のミーティングの詳細を記録することは困難な場合がある。
【0004】
共同作業者が同じ場所にいることを必要としない共同ビデオレビューを達成する別の方法は、ビデオコラボレーションサービスを提供するネットワーク化されたコンピューティングシステムを介するものである。このようなビデオコラボレーションサービスにより、ユーザは個々のクライアントデバイスで実行されているクライアントインタフェースを使用して、ビデオデータとビデオデータに関するコメントを集合的に表示することができる。一部のビデオコラボレーションサービスでは、画面共有に基づいてビデオデータをユーザに共有することができ、この場合、共同作業者の1人がクライアントデバイスでビデオを再生し、ビデオコラボレーションサービスを介して他の共同作業者と画面を共有する。その他のビデオコラボレーションサービスは、コラボレーションの一部であるさまざまなクライアントデバイスにビデオデータをストリーミングする。
【0005】
ビデオコラボレーションサービスでは、共同作業者が対象ビデオデータに関する情報を共有するさまざまな方法がある。例えば、一部のビデオコラボレーションサービスでは、コラボレーションクライアントデバイスが、記録され得る通信ストリームを共有することが可能であり、また、共同作業者がビデオデータにコメントを記録することも可能である。共同作業者は、ビデオコンテンツ上でより効率的にコラボレーションすることができるように同時にビデオを視聴し得る。
【0006】
しかし、複数のユーザが、コミュニケーションされるアイデアの一部を妨害したり、ブロックしたりすることなく、同時に同じビデオ上にコメントやアノテーションを描画することは困難である。さらに、たとえ1人だけがビデオ再生を制御している場合であっても、すべての共同作業者がフレームに関するアイデアを提示する前に、ビデオを所定のフレームから移動させることができる。このような競合するユーザ動作は、共同作業者が効果的に通信する機会を制限し、コラボレーションミーティングを完了するために必要な時間を延ばす可能性があり、これにより、ミーティングのためのコンピューティング時間とネットワークリソース要件が増加する。本明細書に開示されたシステムおよび方法は、この課題および他の課題を扱う。
【0007】
上記のセクションで説明したアプローチは、追求可能なアプローチであるが、必ずしも以前に構想または追求されたアプローチではない。したがって、特に明記されていない限り、このセクションに記述されているアプローチは、先行技術として適格であると仮定すべきではなく、また、単にこのセクションに含まれていることによって、よく理解されているもの、ルーチン、または従来のものであると仮定すべきではない。
【図面の簡単な説明】
【0008】
図面は以下を示す。
【0009】
図1】ビデオコラボレーションセッション中のクライアントデバイス間の効率的な通信のためのネットワーク構成例を示す。
【0010】
図2】ビデオコラボレーションサービスのクライアントアプリケーションのための例示的なグラフィカルユーザインタフェースを示す。
【0011】
図3】ビデオコラボレーションセッション参加者にアノテーションを描画するための情報を配布するためのフローチャートを示す。
【0012】
図4】ビデオデータフレーム上の例示的な描画アノテーションを有する例示的なグラフィカルユーザインタフェースを示す。
【0013】
図5】共存インジケータを有する例示的なグラフィカルユーザインタフェースを示す。
【0014】
図6】ビデオコラボレーションセッション用に維持される共同状態データ内の現在のビデオタイムスタンプのフリーズ条件を検出し、強制するためのフローチャートを示す。
【0015】
図7A】、
図7B】例示的な描画アノテーションおよび例示的な視覚ビデオフリーズインジケータを備えた例示的なグラフィカルユーザインタフェースを示す。
【0016】
図8】例示的なコンテンツ管理システムを示している。
【0017】
図9】本明細書に記載する技術を実施可能なコンピューティングデバイス例を示す。
【0018】
図10】ビデオフレームのための例示的な視覚アノテーションを示す。
【発明を実施するための形態】
【0019】
以下の説明では、説明を目的として、本明細書に記載される技術の完全な理解を提供するために、多数の特定の詳細が説明される。しかしながら、本明細書に記載する技術が、これらの特定の詳細を除いて実施可能であることは明らかである。他の例では、周知の構造およびデバイスは、記述された技術を不必要に不明瞭にすることを避けるために、ブロック図形式で示されている。
1. 一般的な概要
【0020】
異なるクライアントデバイスのユーザが、共同状態データに基づいて、ビデオコラボレーションサービスによって維持されるビデオコラボレーションセッションのためのコラボレーションビデオレビューに参加することを可能にするための技術が開示されている。具体的には、ビデオコラボレーションサービスは、ビデオコラボレーションセッションの共同状態データを維持し、セッションに参加する各クライアントデバイスに共同状態データの少なくとも一部を提供する。ビデオコラボレーションセッションのための共同状態データは、そのセッションのためのビデオデータ、そのセッションのために共同で視聴されるビデオデータのための同期的に視聴される(または現在の)フレームを識別する現在のフレーム番号または現在のビデオタイムスタンプ、および、一般的なテキストコメント、フレーム特有のテキストコメント、フレーム特有の描画アノテーション、および複数フレーム描画アノテーションのうちの1つ以上のための情報を含む、そのセッションに参加するクライアントデバイスによって提供される1つ以上のタイプのアノテーションを識別し得る。セッションに参加するクライアントデバイスは、同期モードにおいて、共同状態データを使用して、共同状態データに示されるビデオデータの同一の現在のフレームを同期させて表示する。
【0021】
セッションに参加しているユーザが生成したセッションのビデオデータに関するアノテーションは、参加クライアントデバイスで実行されているクライアントアプリケーションを介してビデオコラボレーションサービスに提供され得る。具体的には、クライアントデバイスで実行されるクライアントアプリケーションは、ビデオデータを表示デバイスで表示させ、クライアントデバイスのユーザは、クライアントアプリケーションを介してビデオデータのための1つ以上のアノテーションを提供してもよい。例えば、ユーザは、特定のクライアントデバイスでクライアントアプリケーションの描画ツールを使用して、クライアントアプリケーションによって表示される現在のフレームに描画アノテーションを生成する。クライアントアプリケーションは、描画アノテーションを再生成するためのコンピュータ可読命令をビデオコラボレーションサービスに送信する。ビデオコラボレーションサービスは、ビデオコラボレーションセッションに参加している他のクライアントデバイスに描画命令を配布する。いくつかの実施形態によれば、クライアントデバイスは、共同状態データのローカルバージョンに描画命令を保存する。描画命令を使用して、クライアントデバイスのクライアントアプリケーションは、クライアントデバイスに表示される関連するビデオフレームに描画アノテーションを再生成するように構成される。同期モードである場合、クライアントアプリケーションはリアルタイムに、セッションの共同参加者が生成したままの描画アノテーションを視聴可能にする、描画命令を受信する。
【0022】
ビデオコラボレーションサービスは、セッションの間のユーザの動作の競合を防止することにより、ビデオコラボレーションセッションに参加しているクライアントデバイス間の効率的な通信を容易にする。例えば、ユーザがセッションに同期的に参加している場合、他のユーザがセッションの現在のフレーム上でフレーム特有の動作を実行している間に、第1のユーザが共同状態データで示される現在のフレームを変更するためにビデオ再生命令を送信すると、ユーザの動作は競合する。従って、同期モードにある参加クライアントアプリケーションで実行されているフレーム特有の動作の検出に基づいて、共同状態データ内の現在のフレーム値をフリーズするビデオコラボレーションサービスのための技術が本明細書に記載されている。
【0023】
ビデオコラボレーションサービスは、フリーズ条件の検出に基づいて現在のフレームを共同状態データでフリーズさせる効果を発揮する。これは、フレーム固有の動作が実行されているか、差し迫っている可能性があることを示す。フリーズ条件の検出は、同期モードにあるクライアントアプリケーションによって現在の時間の閾値時間内に、アノテーションツール(例えば、描画ツールまたはコメントツールなど)との相互作用を記述する文脈イベントを示すデータを受信することに基づいて、暗黙的に行われてもよい。別の例として、フリーズ条件の暗黙の検出として、ビデオコラボレーションサービスは、同期モードにあるクライアントアプリケーションから、(a)現在の時間の閾値時間内に現在のビデオフレーム上にアノテーションを描画するための描画命令を受信するか、または(b)現在の描画の完了を示す終了する描画命令を受信しない。さらに、フリーズ条件の検出は、フリーズ条件を課すためのクライアントアプリケーションからの要求を受信するなど、明示的であってもよい。
【0024】
フリーズ条件は、フリーズ条件が「解除される」又はフリーズ上限がもはや有効でなくなるまで、「アクティブ」である。共同状態データの現在のフレームのフリーズを解除するために、アクティブなフリーズ条件が有効でない場合がある。いくつかの実施形態によれば、フリーズ条件は暗黙的または明示的に解除することができる。例えば、ビデオコラボレーションサービスは、フリーズ条件を検出してからの閾値時間が経過したことを決定することに基づいて、または、描画命令がフリーズ条件を予測したクライアントデバイスからの終了描画命令を受信することに基づいて、以前に検出されたフリーズ条件の暗黙のリフトを検出することができる。
【0025】
いくつかの実施形態によれば、アクティブフリーズ条件に基づいて、ビデオコラボレーションサービスは、セッションに参加する1つ以上のクライアントアプリケーションによって、視覚ビデオフリーズインジケーションを表示させる。視覚ビデオフリーズインジケーションは、同期モードのクライアントアプリケーション内のビデオ再生コントロールの1つ以上と関連付けられ、フリーズしないルックアンドフィールと区別されるコントロールに対するルックアンドフィールを備えることができる。別の例として、視覚ビデオのフリーズインジケーションは、1つ以上のアクティブなフリーズ条件の送信元を識別することができる。別の実施形態によれば、視覚ビデオのフリーズ表示を、ビデオ再生コントロールと視覚的に関連付けない。
【0026】
本明細書に記載される技術は、ビデオコラボレーションセッション中の効率的な通信を容易にし、これにより、このようなセッションを行うために必要な時間を短縮する。したがって、これらの技術を使用すると、ビデオコラボレーションセッションを実行するために必要なネットワーク帯域幅とコンピューティングリソースが減少する。ユーザは、他の参加者の行動によって中断されることなく、共同視聴されるビデオフレームに関してより効果的にコミュニケーションすることができる。
2. 例示的なクライアントアプリケーション
【0027】
図1は、ビデオコラボレーションセッション中のクライアントデバイス間の効率的な通信のためのネットワーク配置100の例を示す。いくつかの実施形態によれば、ネットワーク配置100における例示的なサーバデバイス110上で実行されるビデオコラボレーションサービス112は、1つ以上のビデオ、即ち、セッションのためのビデオデータに基づいてビデオコラボレーションセッションをセットアップする要求を受信する。要求に応答して、VCS112は、セッションのためのビデオデータを識別する共同状態データに基づくビデオコラボレーションセッションを確立する。ユーザは、クライアントデバイス130A-N上のクライアントアプリケーション132A-Nを介して、確立されたセッションに参加することができる。(説明の容易さのために、クライアントデバイスの一般的な機能が説明されている場合、個々のクライアントデバイスは、クライアントデバイス130と呼ばれ、個々のクライアントアプリケーションは、クライアントアプリケーション132と呼ばれ、個々のローカル共同状態データストア(以下でさらに詳細に説明する)は、共同状態データ134と呼ばれる。)いくつかの実施形態によると、クライアントアプリケーション132は、クライアントデバイス130上で実行されるスタンドアロンアプリケーションである。別の実施形態によれば、クライアントアプリケーション132は、クライアントデバイス130のブラウザを介して実行される。
【0028】
いくつかの実施形態によれば、クライアントアプリケーション132は、ウェブソケット接続をラップし、共同状態データ134を追跡するクライアントオブジェクトによって実施される。再生のために、クライアントアプリケーション132は、未定義として初期化されるローカルコピー共同状態データ134を保持する。クライアントアプリケーション132が特定のセッションに参加すると、クライアントアプリケーションは、VCS112からビデオ再生メッセージを受信し、以下でさらに詳細に説明するように、共同状態データ134のローカルコピーを更新する。
【0029】
図2は、クライアントデバイス130のための表示デバイスにおいて表示される、クライアントアプリケーション132のための例示的なGUI200を示す。本明細書に記載する実施形態を示すためにGUI200が使用されるが、実施形態はこれに限定されるものではない。例示的なGUI200は、ビデオ視聴エリア210、参加者エリア220、コメントエリア230、投稿コメントエリア240、および視覚的アノテーションエリア250を含む。
2.1. ビデオ視聴エリア
【0030】
いくつかの実施形態によれば、VCS112は、セッションのビデオデータを、ネットワーク120を介して、参加する各クライアントデバイス130A-Eにストリーミングする。各クライアントデバイス130は、クライアントアプリケーション132を介してビデオを表示する。例えば、ビデオ視聴エリア210は、ビデオコラボレーションセッションに関連してストリーミングされているビデオデータを表示する。ビデオ視聴エリア210はさらに、再生/一時停止制御、単一フレーム巻き戻し制御、単一フレーム早送り制御、10秒巻き戻し制御、および10秒早送り制御を含む、ビデオ再生コントロール212を含む。ビデオ視聴エリア210はまた、視聴されたビデオデータの現在のタイムスタンプとビデオデータの長さを表示するプログレスタイムスタンプ214を含む。ビデオ視聴エリア210はさらに、現在のタイムスタンプ制御デバイス216Aを有するプログレスバー216を含み、これはプログレスバー216に沿って移動することができ(例えば、クリックおよびドラッグ制御216A)、現在のビデオデータの表示された部分のタイムスタンプがプログレスバー216に沿った現在のタイムスタンプ制御デバイス216Aの位置に対応するようにする。
2.2. 参加者エリア
【0031】
GUI200の参加者エリア220は、ビデオコラボレーションセッションに参加しているクライアントデバイスの数のインジケータ222を含む(例えば、5つのクライアントデバイス130A-E)。参加者エリア220はさらに、(以下でさらに詳細に説明するように)クライアントアプリケーション132が同期モードであるか否かを制御するトグル制御224を含む。説明のために、トグル制御224が「オン」位置にトグルされると、クライアントアプリケーション132は同期モードとなり、トグル制御224が「オフ」位置にトグルされると、クライアントアプリケーション132は非同期モードとなる。
【0032】
参加者エリア220はさらに、例えばクライアントデバイス130A-Eを介して、ビデオコラボレーションセッションに参加するユーザを識別するユーザ識別子トークン226を含む。ユーザ識別子トークン226は、ユーザ識別子を含むことができ、または識別されたユーザに関連する画像またはアイコンを示すことができる。図2の例では、ユーザA-Eは、クライアントデバイス130A-E上のクライアントアプリケーション132A-Eを介してVCS112で認証され、ビデオコラボレーションセッションに参加しているトークン226によって識別される。ユーザは、認証されていないゲストとしてビデオコラボレーションセッションに参加することができ、この場合、認証されていないユーザを表すトークン226はユーザ識別子を反映しない。
2.3. コメントエリア
【0033】
コメントエリア230は、ユーザがビデオデータ上にコメントアノテーションをタイプすることができるコメント入力テキストボックス232を含む。コメントエリア230はさらに、アクティブ化されると、エリア210に表示されるビデオの現在のタイムスタンプ及びユーザの識別子(使用可能な場合)とともに、コメント入力テキストボックス232内のテキストを、ローカル共同状態データ134に保存し、ビデオデータ上のアノテーションとしてVCS112に送信させる、投稿制御234を含む。VCS112は、VCS112によって維持される共同状態データ内の投稿されたコメントアノテーションを含み、共同状態データ134のローカルバージョンが投稿されたコメントアノテーションを反映して更新されるようにする。
2.4. 投稿コメントエリアと視覚アノテーションエリア
【0034】
投稿コメントエリア240は、共同状態データ134に含まれるコメントアノテーションを、コメントアノテーションに関連するビデオタイムスタンプと共に表示する。同様に、視覚アノテーションエリア250は、視覚アノテーションに関連するビデオタイムスタンプと共に共同状態データ134に命令が含まれる視覚アノテーションを表示する。アノテーションは、さらに、ユーザ識別子及び/又はアノテーションのタイプの表示(例えば、「テキスト」、「フリーハンド描画」、「ステッカー」、「形状」、「絵文字」等)を用いて表され得る。いくつかの実施形態によれば、特定のアノテーションに対する投稿コメントエリア240および/または視覚アノテーションエリア250に含まれるアノテーションのタイプまたはその他の情報は、ユーザによって提供されたアノテーションのメタデータ(例えば、タイトル、タイプ、またはコメントテキストの一部など)に基づくことができる。
【0035】
従って、VCS112が、追加のコメントアノテーション及び他の参加デバイスからの描画アノテーションを用いて共同状態データ134を更新させるとき、これらのアノテーションは、投稿コメントエリア240及び視覚アノテーションエリア250に自動的に反映される。いくつかの実施形態によれば、投稿コメントエリア240および視覚アノテーションエリア250は、クライアントアプリケーション132が同期モードまたは非同期モードのいずれかである間、共同状態データ134に基づいて更新され続ける。いくつかの実施形態によれば、投稿コメントエリア240および視覚アノテーションエリア250に含まれるアノテーションの表現は、ビデオ再生コントロールであり、そのアクティベーションによって、アクティブ化されたアノテーション表現に関連するタイムスタンプにビデオ再生がジャンプする。
【0036】
いくつかの実施形態によれば、投稿コメントエリア240および視覚アノテーションエリア250に表示されるアノテーション表示は、アノテーション表示をクリックする(またはそれに関連する制御をアクティベートする)ことにより、VCS112がビデオ再生指示を受信してアノテーション表示に関連するビデオフレームに再生を移動させるようにハイパーリンクが張られる。いくつかの実施形態によれば、ビデオ再生命令はさらに、アノテーションされたフレーム上で再生が自動的に一時停止するようにする。さらに、プログレスバー216は、アノテーション付きフレームの視覚識別子と関連付けられてもよい。これらの視覚識別子のそれぞれは、制御を含み、そのアクティベーションにより、VCS112は、類似のビデオ再生命令を受信して、関連するアノテーション付きフレームにスキップし、再生を一時停止する。
3. アノテーション及び共存データの配布
【0037】
上述したように、VCS112は、ビデオコラボレーションセッション参加者が、例えば、視聴エリア210に表示される、セッションのビデオデータのための描画アノテーションを生成し、セッションの他の参加者と描画アノテーションを共有することを可能にする。描画アノテーションは、他のセッション参加者にリアルタイムで表示されることがあり、これは、他の参加者が、描画が生成されている間、その描画を見ることを可能にするか、あるいは、ユーザからの明示的な指示に基づいて送信され得る。図3は、本明細書に記載する実施形態に従って、ビデオコラボレーションセッション参加者のためのクライアントアプリケーションにアノテーションを描画するための情報を配布するためのフローチャート300を示す。
3.1. ビデオコラボレーションセッションの生成と参加
【0038】
具体的には、ステップ302で、ビデオデータが複数のクライアントデバイスにストリーミングされ、ビデオデータが複数のビデオフレームを表す。例えば、VCS112は、特定のビデオデータの識別子、例えば、00:00:00の現在のビデオタイムスタンプで、セッションのための共同状態データを初期化することによって、特定のビデオコラボレーションセッションを確立する。クライアントデバイス130A-Eのクライアントアプリケーション132A-Eは、VCS112からセッションのための共同状態データをダウンロードすることによって、特定のセッションに参加する。クライアントアプリケーション132A-Eがセッションに参加した後、VCS112は、セッションのための特定のビデオデータが、ネットワーク120を介して、参加するクライアントデバイス130A-Eのそれぞれにストリーミングされるようにする。各クライアントデバイス130は、クライアントアプリケーション132を介して、例えばGUI200の視聴エリア210にビデオを表示する。
【0039】
たとえば、VCS112は、特定のビデオデータのビデオコラボレーションセッションを生成する要求を受信する。VCS112は、要求の受信に応答して、上述のように新しいセッションを生成し、要求への応答として新しいセッションに関連付けられるユニフォームリソースロケータ(URL)を提供する。URLのアクティベーションは、ネットワーク120を介してVCS112からウェブページを検索する。クライアントデバイス130上で動作するブラウザアプリケーションにウェブページをロードすると、クライアントアプリケーション132が実行され、これは、URLに関連するセッションのための共同状態データ134をダウンロードし、クライアントアプリケーション132へのユーザインタフェースとしてGUI200を表示させる。この例では、提供されたURLは、各クライアントデバイス130A-Eでアクティベートされ、ウェブページを検索して各クライアントデバイスで実行されているブラウザアプリケーションにロードする。したがって、クライアントデバイス130A-Eのそれぞれは、確立されたセッションのための共同状態データ134A-Eのローカルバージョンを保存する。
【0040】
いくつかの実施形態によれば、共同状態データ134および/またはセッションデータ(例えば、以下で詳細に説明するセッションデータ142、144)は、コンテンツ管理システムによって管理される。このような実施形態では、コンテンツ管理システムは、以下でさらに詳細に説明するように、クライアントデバイス130間の共同状態データ134の通信を容易にする。VCS112は、コンテンツ管理システムの一部として実装されるか、または共同状態データ134および/またはセッションデータを管理する目的でコンテンツ管理システムとインタフェースすることができる。
3.2. ビデオ再生メッセージ
【0041】
ビデオ再生メッセージは、特定のセッションの一部であるクライアントアプリケーション間でビデオ再生を同期するために使用される。例えば、ビデオ再生命令を含むメッセージは、現在のフレーム(例えば、再生命令が開始されたビデオデータのフレーム)と、再生速度(例えば、正方向移動の場合は正の速度、後方へ移動の場合は負の速度、例えば、通常速度で再生する場合は1.0、早送りの場合は10.0、一時停止の場合は0.0、巻き戻しの場合は-10.0)とを含む。いくつかの実施形態によれば、そのようなメッセージは、さらに、動作が開始された時間をマークする送信元クライアントデバイスで記録された現在の日付/時間を表すタイムスタンプを含む。このようなタイムスタンプは、受信クライアントアプリケーション132がクライアントデバイス間でメッセージが通信されるのにかかる時間を考慮するために「スキップする」ことを可能にするために使用され得る。
【0042】
クライアントアプリケーション132は、以下でさらに詳細に説明するように、クライアントアプリケーションが同期モードにある間など、再生状態がクライアントアプリケーションでローカルで変化するたびに、ビデオ再生メッセージをVCS112に送信する。具体的には、ユーザが、再生、一時停止、シーク、レート変更などのビデオ再生イベントをトリガする動作をとると、クライアントアプリケーション132は、現在のフレームおよび再生速度を計算し、ローカル共同状態データ134を更新する。いくつかの実施形態によれば、現在のフレームおよび再生速度の値が変更された場合、またはビデオが単一フレーム持続時間より長く再生されていた場合(命令が、ビデオが再生された後に開始位置にシークすることである場合)、クライアントアプリケーション132はビデオ再生命令を反映してビデオ再生メッセージをVCS112に送る。
【0043】
クライアントアプリケーション132からこのようなビデオ再生メッセージを受信すると、VCS112は、他のすべてのクライアントアプリケーション132に対応するビデオ再生メッセージを送信する。いくつかの実施形態によれば、VCS112はまた、最初にメッセージを送信したクライアントアプリケーション132にビデオ再生メッセージをエコーバックする。
【0044】
いくつかの実施形態によれば、クライアントアプリケーションでローカルに実行される動作のビデオ再生メッセージを送信するとき、クライアントアプリケーションは、送信された保留中の変更のカウントを保持する。いくつかの実施形態によれば、別のクライアントアプリケーションで発生したVCS112からビデオ再生メッセージを受信すると、クライアントアプリケーション132は、保留中の変更のローカルカウントが>0の場合、受信したビデオ再生メッセージを無視する。しかしながら、ビデオ再生メッセージがローカルクライアントアプリケーション(即ち、エコー)から発せられた場合には、クライアントアプリケーション132は、保留中の変更カウントをデクリメントする。保留中の変更カウントが既にゼロである場合、クライアントアプリケーション132は共同状態データ134を更新し、onPlaybackプロトコルを開始する。VCS112は、メッセージが受信された順序でメッセージを送信することが保証されているため、クライアントアプリケーションが1つ以上のビデオ再生メッセージを発信した後は、リモートビデオ再生メッセージを無視しても安全である。したがって、ローカル発信メッセージがエコーバックされる前に、クライアントアプリケーション132がリモート発信メッセージを受信した場合、受信したリモート発信メッセージは古く、期限切れになっている。
【0045】
さらに、ビデオ再生メッセージは、クライアントアプリケーションが新たにセッションに参加したとき、すなわち、新たに参加したクライアントアプリケーションに、そのセッションに対する現在のビデオ再生動作を知らせるために、VCS112によってクライアントアプリケーション132に送信され得る。これらの最初のビデオ再生命令を容易にするために、クライアントアプリケーション132から受信したビデオ再生命令は、例えば、VCS112が必要に応じて初期ビデオ再生命令を検索するデータストアとして機能するセッションデータ142に持続され得る。
【0046】
いくつかの実施形態によれば、クライアントアプリケーション132が最初のビデオ再生メッセージを受信すると、クライアントアプリケーション132は、最初のメッセージに情報を反映するように共同状態データ134を更新し、以下でさらに詳細に説明するonPlaybackプロトコルを開始する。
3.3. ONPLAYBACKプロトコル
【0047】
クライアントアプリケーション132はonPlaybackプロトコルを実施し、それによってクライアントアプリケーション132は、共同状態データ134においてremotePlaybackState共有状態変数を更新する。クライアントアプリケーション132は、この状態を使用してビデオデータの再生を制御する。したがって、クライアントアプリケーション132がremotePlaybackStateの変更を見るたびに、クライアントアプリケーション132は、以下を実行する。
・ プレイヤイベントハンドラを無効にする(リモート変更が別のブロードキャストをトリガしないように)。
・ ビデオのフレーム番号とフレームレートを使用して、正しいプレイヤ時間を算出する。
・ 新しい状態がビデオデータの再生モードを示す場合、クライアントアプリケーション132はローカルプレイヤのcurrentTimeを設定し、次にビデオを再生する。
・ 新しい状態がビデオデータの一時停止モードを示す場合には、クライアントアプリケーション132は、ローカルプレイヤを一時停止させてから、currentTimeを設定する。
・ その後、クライアントアプリケーション132は、プレイヤイベントハンドラを再び有効にする。
3.4. 同期モードと非同期モード
【0048】
いくつかの実施形態によれば、クライアントアプリケーション132は、同期モードまたは非同期モードであってもよく、例えば、ユーザの好みに基づいて、またはセッションマスタによって割り当てられたモードに基づいていてもよい。クライアントアプリケーション132が同期モードであるとき、アプリケーションは、セッションデータと同期してビデオ再生を制御する、すなわち、同期モードで動作するビデオコラボレーションセッションでクライアントアプリケーションのビデオ再生を同期する共同状態データ134に基づく。 クライアントアプリケーション132が非同期モードになっているとき、アプリケーションは、共同状態データ134に関係なく、GUI200内のコントロールのアクティベーションに基づいてビデオ再生を制御し、これにより、ビデオコラボレーションセッションとは独立したビデオ再生の制御が可能になる。
【0049】
したがって、一般に、クライアントアプリケーション132が同期モードにあるとき、再生コントロール212および現在のタイムスタンプ制御216Aなどのビデオ再生コントロールのアクティベーションにより、クライアントアプリケーション132はビデオ再生命令をVCS112に送信し、これにより、(一般に)すべての参加クライアントデバイスに保存されたローカル共同状態データ134がビデオ再生命令に基づいて更新される。ビデオ再生命令は、再生、巻き戻し、早送り、一時停止、およびスキップを含むコントロール212のアクティベーションに起因する命令など、ビデオデータの再生に影響する命令である。いくつかのインスタンスが存在し(例えば、以下にさらに詳細に記述されるアクティブなフリーズ条件がある場合、またはクライアントアプリケーション132が共同ビデオ再生を制御する許可を有しない場合)、この場合、再生コントロールのアクティベーションが、同期モードにおいてVCS112に共同状態データを更新させない。クライアントアプリケーション132が同期モードにあるとき、アプリケーションは、共同状態データ134、例えばクライアントアプリケーション132に基づいて、ストリーミングビデオデータを視聴エリア210で再生すると、ストリーミングされたビデオは共同状態データ134に示されている現在のビデオタイムスタンプで表示される。したがって、ビデオデータが参加クライアントデバイス130A-Eに個別にストリーミングされている間でも、同期モードで動作しているすべての参加クライアントデバイスは、ビデオデータの同じ部分を同時に表示する。
【0050】
いくつかの実施形態によれば、複数の異なるビデオファイルがセッションに関連付けられ、セッションのために維持される共同状態データは、異なるビデオファイルのすべてを識別する。この実施形態では、共同状態データは、さらに、異なるビデオファイルのうちの特定の1つを、セッションのための現在のビデオファイルとして識別する。同期表示モードのクライアントアプリケーションは、セッションの現在のビデオファイルとして識別されたビデオを表示する。
【0051】
非同期モードでは、クライアントアプリケーション132は、共同状態データ134に基づいてビデオ再生を制御せず、代わりに、クライアントアプリケーションのGUI200内のコントロールのアクティベーションに基づいてビデオ再生を制御する。いくつかの実施形態によれば、クライアントアプリケーション132が非同期モードにある間に生成されたアノテーションは、以下でさらに詳細に説明する実施形態に従ってVCS112に送信される。ただし、クライアントアプリケーション132が非同期モードの間に生成された描画アノテーションは、(以下でさらに詳細を説明するように)他の参加クライアントデバイスではリアルタイムに表示されない。さらに、非同期モードでは、クライアントアプリケーション132は、VCS112に通信される参加クライアントデバイスで実行される動作に基づいて、共同状態データ134を更新し続ける。いくつかの実施形態によれば、GUI200は、ユーザが同期モードと非同期モードとを切り替えることを可能にするコントロールを含む。ユーザが同期モードに入るために制御をアクティベートすると、本明細書に記載するように、ユーザのクライアントデバイスでのビデオ再生は共同状態によって制御される。ユーザがコントロールをアクティベートして非同期モードに入ると、クライアントアプリケーション132は、同期状態からの現在のビデオ再生動作(例えば、再生、一時停止、巻き戻し、早送りなど)を継続する。しかしながら、クライアントアプリケーション132が非同期モードにある間、クライアントで生成された任意のビデオ再生命令は、本明細書に記載するように、そのクライアントのビデオ再生にのみ影響を与える。
【0052】
いくつかの実施形態によれば、VCS112は、セッション用の共同状態データにおいて、同期モードであるクライアントアプリケーションから受信された再生命令を記録する。これらの記録された再生命令は、イベントタイムラインのタイムスタンプに関連付けることができ、これにより、以下でさらに詳細に説明するように、セッションデータのレビューが容易になる。
3.5. 入力カーソルの共存
【0053】
いくつかの実施形態によれば、VCS112は、参加クライアントデバイス130A-EのGUI200を介して、エリア210-250の1つ以上を含むGUI200のアクティブ共存エリア内にある、他の参加クライアントデバイスで制御される入力カーソルの位置インジケータを表示する。いくつかの実施形態によれば、GUI200のアクティブエリアは、少なくともエリア210を含む。
【0054】
いくつかの実施形態によれば、特定のクライアントデバイスによって制御される入力カーソルの位置インジケータを表示することに加えて、VCS112はまた、クライアントアプリケーション132に、特定のクライアントデバイスで実行される1つ以上の追加の位置に基づく活動のための1つ以上の補助位置インジケータを表示させる。例えば、入力カーソルに加えて、特定のクライアントデバイス130におけるユーザは、GUI200のアクティブなエリア内のスタイラス位置またはタッチスクリーンアクティベーション位置などの補助位置入力のための情報を提供する。この例では、VCS112は、他のクライアントデバイス130に、特定のクライアントデバイス130の入力カーソルの第1の位置インジケータと、特定のクライアントデバイス130から入力された補助位置の第2の位置インジケータの両方を表示させる。第2の位置インジケータは、第1および第2の位置インジケータが同一のクライアントデバイスから発信されることを示すために、1つ以上の共通の視覚要素を有することができる。任意の数の位置インジケータは、特定のクライアントデバイス130から発することができる。このような実施形態では、カーソルデータは、1つ以上の補助位置入力のためのデータをさらに含む。
【0055】
フローチャート300の説明に戻ると、ステップ304で、複数のクライアントデバイスの1つ以上のクライアントデバイスのそれぞれから、リアルタイムカーソルデータが受信される。このリアルタイムカーソルデータは、グラフィカルユーザインタフェース内の各クライアントデバイスで制御される入力カーソルの位置を示し、グラフィカルユーザインタフェースは、ビデオデータの視聴エリアを含む。例えば、VCS112は、1つ以上のクライアントデバイス130A-Eから、各クライアントデバイスで制御される入力カーソルの、GUI200のアクティブエリア内の位置を示すカーソルデータをリアルタイムで受信する。いくつかの実施形態によれば、カーソルデータは、カーソルの描写を調整するために使用され得る、圧力、速度、角度、ツールタイプなどの1つ以上をさらに含む。さらに、このようなカーソルメタデータは、生成される描画アノテーションのような、カーソルを介して実行されている動作の視覚表現を伝えるために使用されてもよい。たとえば、フリーハンド描画を生成するユーザのカーソルに関連付けられた圧力は、描画の線の重さを選択するために使用される。ここでは、軽い圧力では細い線が生成され、重い圧力では太い線が生成される。
【0056】
いくつかの実施形態によれば、カーソルデータは、アクティブエリア内のカーソルの位置を示すX-Y座標を含む。例えば、GUI200の複数のエリアがアクティブエリアに含まれる場合、特定のカーソル位置データは、エリア識別子と、示されたエリアに相対的なX-Y座標とを含む。別の例として、GUI200のアクティブエリアがX-Y座標の単一システムに適用可能な場合、特定のカーソル位置データは、エリア識別子のないX-Y座標を含む。さらに別の例として、特定のカーソル位置データは、方向と距離を示すカーソル移動データを含み、これは、既知の位置に基づいてカーソルの現在位置を計算するために使用することができる。
【0057】
例えば、エリア210のポイント260はX-Y座標「0、0」にあるとみなされ、エリア210のポイント262はX-Y座標「1、1」にあるとみなされる。この例では、エリア210内に位置する入力カーソルの位置は、ポイント260および262に対して決定される。
【0058】
図示のために、クライアントアプリケーション132Aで認証されたクライアントデバイス130AのユーザAは、入力カーソルをGUI200のアクティブエリア(例えば、視聴エリア210)に移動する。従って、クライアントアプリケーション132Aは、入力カーソルの現在位置を「0.26、0.53」として識別する、すなわち、エリア210のポイント260および262に対する、カーソルデータをVCS112に送信する。同様に、VCS112は、ユーザDを認証し、現在のカーソル位置が「0.83、0.28」であることを識別したクライアントアプリケーション132Dからカーソルデータを受信し、VCS112は、現在のカーソル位置が「0.79、0.75」であることを識別し、ユーザEを認証したクライアントアプリケーション132Eからさらにカーソルデータを受信する。
【0059】
フローチャート300のステップ306で、複数のクライアントデバイスの他のクライアントデバイスから受信したリアルタイムカーソルデータが、リアルタイムで、複数のクライアントデバイスの各クライアントデバイスに送信され、各クライアントデバイスは、各クライアントデバイスによって表示されるグラフィカルユーザインタフェース内で、リアルタイムカーソルデータに示される各位置で他のクライアントデバイスに制御される入力カーソルの視覚表現を表示するように構成される。例えば、VCS112は、各クライアントデバイス130A-Eに対して、各カーソル位置データの送信元を特定する情報(例えば、ユーザ識別子、カーソル識別子、クライアントデバイス識別子など)とともに、クライアントデバイスから受信していないカーソルデータをリアルタイムに送信する。リアルタイムデータは、指定した(比較的短い)生成時間内に受信されたデータである。いくつかの実施形態によれば、カーソルデータは、データがVCS112によって受信され、閾値時間、例えば100ミリ秒の範囲内で他の参加クライアントデバイスに配信されるとき、リアルタイムデータである。
【0060】
受信したカーソルデータに基づいて、各クライアントデバイス130は、他の参加クライアントデバイスで制御されている入力カーソルの表現を表示する。例えば、図2のGUI200は、クライアントデバイス130Bにおいて表示される。クライアントアプリケーション132Bは、VCS112からカーソルデータを受信し、いくつかの実施形態によれば、カーソルデータを反映するように共同状態データ134Bを更新する。カーソルデータに基づいて、クライアントアプリケーション132Bは、入力カーソル表現218A、218D、および218Eを表示し、これらは、受信されたカーソルデータ内に示される位置を示す位置インジケータである。
【0061】
図2の例では、クライアントアプリケーション132がステルスモードにあるか、入力カーソルがGUI200のアクティブエリア内にないかのいずれかの理由により、ユーザBおよびCの入力カーソルの表現(それぞれ、クライアントアプリケーション132Bおよび132Cで認証される)は、参加クライアントデバイス130A-EのいずれにおいてもGUI200に表示されない。
【0062】
いくつかの実施形態によれば、特定のユーザによって制御される入力カーソルは、同じセッションに参加する他のクライアントアプリケーションによって表示されなくてもよい。なぜなら、クライアントアプリケーション132はステルスモードにあり、それによって入力カーソルは、GUI200のアクティブエリア内にあっても、ビデオコラボレーションセッションの他の参加者によって表示されないからである。ステルスモードは、ユーザが、例えばGUI200のオプションメニューで選択するか、又はセッションのマスタによってユーザに課される。例えば、ステルスモード中に、クライアントアプリケーション132によってカーソルデータがVCS112に送信されないか、または、ステルスモード中にクライアントアプリケーション132からVCS112で座標データが受信され得、ステルスモード中のアプリケーションに基づいて、VCS112は、(以下でさらに詳細に説明するように)カーソルデータを他の参加クライアントアプリケーションに配布しない。
【0063】
いくつかの実施形態によれば、GUI200に表示されるカーソルの表現の1つ以上の視覚的側面は、カーソルデータの送信元を識別する。例えば、各カーソル表現は、アバター又は他の写真、ユーザ名、ユーザのイニシャルなどのような、カーソルの送信元を識別する情報と共に表示することができる。別の例として、各カーソルは、表示されたカーソル表現の間でユニークな特定の色を少なくとも部分的に有して描かれてもよく、ここで、色は、カーソル表示全体またはカーソルの一部にあってもよく、または、色は、カーソルの送信元を識別するデータと関連付けられてもよい。例えば、識別する色は、カーソルに関連付けられたテキストの背後にあり、カーソルに関連付けられた一部またはすべてのテキストの色であり、カーソルに関連付けられたテキストのアウトラインを示し、カーソルに関連付けられた画像のアウトラインを示すことができる。色は、セッションマスタによって割り当てられ、ユーザによって選択され、またはVCS112によって自動的に割り当てられ得る。いくつかの実施形態によれば、ユーザは、GUI200のメニューを介して、またはGUI200内での中間または右クリックによって、またはキーボード入力(専用の機能ボタンまたはカーソル色を変更するために使用されるボタンの組み合わせなど)を用いて、割り当てられた色を変更することができる。いくつかの実施形態によれば、ユーザは、他の参加者を識別するために使用されない色から色を選択することができ、または、他の参加者を識別するためにまだ使用されていない異なる色を自動的に割り当てることができる。
【0064】
いくつかの実施形態によれば、GUI200のアクティブエリアは、投稿コメントエリア240および/または視覚的アノテーションエリア250の一方または両方のようなエリア210以外のエリアを含む。この例では、VCS112は、GUI200のアクティブエリアの一部であるこれらの他のエリア内の入力カーソルおよび/または他の位置ベースの活動のために位置インジケータを表示させる。さらに、VCS112は、エリア210以外の1つ以上のエリア内で実行されるアクティビティを、クライアントデバイス130間で伝搬させることができる。例えば、VCS112は、共同状態データ134に、他のクライアントデバイス130に表示されるGUI200でこれらの動作を実行するために使用されるこれらのエリア内の動作(リストの展開/折りたたみ、コントロールのアクティベーション、特定のアノテーション表現のハイライトなど)を反映させることができる。
3.6. 描画アノテーションの生成
【0065】
いくつかの実施形態によれば、VCS112は、ユーザが、ストリーミングされるビデオデータのフレーム上に描画アノテーションを生成することを可能にし、セッションのために記録された共同状態データ内の描画アノテーションのための情報を含む。例えば、ビデオデータが特定のフレーム上で一時停止されたとき、ユーザは、エリア210を横切ってクリックアンドドラッグすることができ、これにより、ユーザがカーソルをドラッグする表示フレーム上に線が描かれる。
【0066】
他の描画ツールも、ユーザが利用することができる。例えば、図10は、いくつかの実施形態による、ビデオフレームのための例示的な視覚アノテーションを有するGUI200を示す。具体的には、図10は、GUI200に表示される現在のフレームに適用されたステッカー1002、絵文字1004、および形状1010を示す。図10は、絵文字、形状、および/またはステッカーを現在のフレームに適用するためのコントロールを備えた、絵文字/ステッカー/形状制御バー1006をさらに示す。図形は、任意の幾何学的図形であってもよく、任意のサイズ、色、または線の重さであってもよく、任意の方法で塗りつぶされてもよい。絵文字、ステッカー、および/または形状は、一般に、所定のフレームに関連付けられてもよく、または、アノテーションを描画するために、本明細書に記載するように、フレーム上の特定の位置に関連付けられてもよい。ここでの例示の視覚アノテーションは、アノテーションを描画するために、本明細書に記載するように、管理されてもよい(例えば、クライアントデバイス間の通信、トラッキング、合同セッションデータ134および/またはセッションデータ142/144における記録、フリーズ条件などに関して)。
【0067】
さらに、プログレスバー216は、絵文字、形状、および/またはステッカーがビデオデータのフレームに適用されたタイムスタンプをマーキングする絵文字/ステッカー/形状インジケータ1008を含む。インジケータ1008は、コメントおよび/または描画アノテーションのような、1つ以上の他のタイプのアノテーションのタイムスタンプをマークすることもできる。いくつかの実施形態によれば、インジケータ1008の各々の視覚描写は、表現されたアノテーションの1つ以上の特性を反映する。図10の例では、各表示器1008は、フレームに適用される絵文字/ステッカー/形状の一例である。インジケータ1008の視覚表現として使用される絵文字/ステッカー/形状は、例えば、フレームへの適用数が最も多い絵文字、フレームに最初に適用された絵文字/ステッカー/形状などに基づいて、任意の方法で選択することができる。インジケータ1008の明確な視覚表現の態様は、異なるタイプのアノテーションデータに対応することができる。更に、インジケータの視覚表現は、表現されたアノテーションを生成したユーザの識別子、又はフレーム上にアノテーションを生成したユーザの集合を含むことができる。いくつかの実施形態によれば、インジケータ1008の1つを選択すると、ビデオデータが選択されたインジケータによってマークされたタイムスタンプにジャンプするようにするビデオ制御コマンドが生成される。
【0068】
いくつかの実施形態によれば、描画アノテーションのルックアンドフィールは、アノテーションを生成したユーザに固有のものである。例えば、図面の色は、ユーザのための入力カーソルがGUI200内に表示される色に対応してもよい。別の例として、図面の1つ以上の他の態様は、線のスタイル(実線、破線、網点、破線パターン、網点パターン、二重線など)、線の重さなど、画を生成するユーザに固有のものであってもよい。さらに別の例として、描画アノテーションを、ユーザ名、画像、シンボル、ユーザのイニシャルなど、アノテーションの送信元を識別する情報と視覚的に関連づけて表示してもよい。
【0069】
同期モードで動作する場合、ユーザは、共同状態データ134に従ってビデオが一時停止されたときにのみ、描画アノテーションを生成することができる。ただし、非同期モードで動作している場合、ユーザは個別にビデオデータを一時停止し、個々のクライアントアプリケーションの現在のビデオフレームに描画アノテーションを生成することができる。いくつかの実施形態によれば、描画アノテーションが他のクライアントデバイスに展開され得るように、描画アノテーションの情報がVCS112に送信され、ローカル共同状態データ134に保存される。
3.7. 描画アノテーションの共有
【0070】
いくつかの実施形態によれば、特定のビデオフレーム上で実行される描画アノテーションは、他の参加クライアントデバイスと共有される。描画アノテーションの共有は、明示的に実行されてもよいし、リアルタイムで、すなわち、ユーザがアノテーションを生成するときに実行されてもよい。例えば、ビデオフレーム上の描画アノテーションが特定のクライアントデバイス130Aにおいてユーザによって生成されるように、クライアントアプリケーション132AからVCS112に描画アノテーションを再生成するための1つ以上の描画命令が提供される。VCS112は、他の参加クライアントデバイス130B-Eに描画命令を提供する。クライアントアプリケーション132は、命令を受けたときに、描画命令に基づいて、ビデオフレーム上に描画アノテーションを描画するように構成される。したがって、VCS112によってリアルタイムで命令が発信されると、セッションへのすべての参加者は、生成された描画を見ることができる。さらに、描画命令の送信は、ネットワーク配置100のリソースを節約する非常に小さい帯域幅を必要とする。
【0071】
図3のフローチャート300の説明に戻ると、ステップ308で、複数のクライアントデバイスの特定のクライアントデバイスから1つ以上の描画命令が受信され、この場合、1つ以上の描画命令は、特定のクライアントデバイスにおいて、複数のビデオフレームの特定のフレーム上で実行される特定の描画アノテーションを再生成するためのものである。例えば、VCS112は、クライアントアプリケーション132Aから、クライアントデバイス130Aに表示されるGUI200を介して、ユーザAによって生成された描画アノテーションを再生成するための複数の描画命令を受信する。
【0072】
図4は、ビデオ視聴エリア210に表示されている現在のビデオフレーム上の例示描画アノテーション402を有するGUI200を示す。描画アノテーション402が生成されている間に、クライアントアプリケーション132Aは、複数の描画命令を生成して、描画アノテーションを再生成する。フリーフォーム線の文脈で説明するために、クライアントアプリケーション132Aが、線生成を示す、エリア210にわたるクリックアンドドラッグイベントを検出すると、クライアントアプリケーション132Aは、現在の線生成の終端を示すボタンリリースイベントがあるまで、入力カーソル位置の座標を定期的に記録する。クライアントアプリケーション132Aは、記録された各座標に基づいて描画命令を生成し、リアルタイムで各描画命令をVCS112に送信する。
【0073】
例えば、VCS112は、図示されたセッションの間の第1の時間にクライアントアプリケーション132Aから、例示の描画命令「start_drawing(user_A、0.36、0.60)」を受信する。ここで、user_Aは、クライアントデバイス130AにおけるユーザAの識別子またはクライアントデバイス130Aの識別子などの描画命令の送信元を識別する。この命令は、指示された座標での描画の開始の検出に応じて、クライアントアプリケーション132Aによって生成される。従って、この例の描画命令は、クライアントデバイス130Aのユーザが、エリア210に表示されたビデオデータの現在のフレーム上でアノテーション402の描画を開始したことを示す。ここで、描画アノテーション402の開始位置402Aは、座標0.36、0.60にある。
【0074】
セッション中の第2の時間(第1の時間より後)に、VCS112は、クライアントアプリケーション132Aから、第2の例の描画命令「drawing_segment(user_A、0.45、0.54)」を受信する。いくつかの実施形態によれば、この命令は、描画アノテーション402が生成されている間に、入力カーソルの位置の定期的な識別情報に基づいて、クライアントアプリケーション132Aによって生成される。描画アノテーションの現在の状態に基づいて描画命令を定期的に生成すると、セッションの他の参加者が生成中の描画を表示できるようになる。例示の描画命令は、最後に送信された座標(位置402A)と座標0.45、0.54(位置402B)の間に線が描画されるように通信する。 この命令の第2の例は、非終端または中間描画命令であり、信号描画完了なしで描画に関する追加情報を提供する。
【0075】
セッション中の第3の時間(第2の時間より後)に、VCS112は、クライアントアプリケーション132Aから、第3の例の描画命令「end_drawing(user_A、0.43、0.29)」を受信する。本描画命令は、現行の描画の完了を示す終了描画命令である。クライアントアプリケーション132Aは、入力カーソル表示218Aが位置402C(座標0.43、0.29)にあるとき、例えば、位置402Cでクリックアンドドラッグ動作をリリースするユーザに基づいて、描画アノテーション402の終端を検出することに応じて、この終了命令を生成する。さらに、この例の命令は、最後に送信された座標(位置402B)と位置402Cの間に線を引く必要があることを伝える。
【0076】
いくつかの実施形態によれば、描画アノテーション402のような特定のアノテーションを生成するユーザは、メタデータをアノテーションに関連付けることができる。図4は、描画アノテーション402と視覚的に関連するメタデータコントロール408を示す。メタデータコントロール408のアクティベーションにより、GUI200は、アノテーションのためのメタデータの入力を可能にする1つ以上のテキスト入力フィールドを有するフォームを含み、これは、タイトル、タイプ、重要度レベル、テキストコメント、タグ(ハッシュタグなど)、ユーザ識別子、ワークストリーム識別子、チーム識別子などを含むことができる。このメタデータは視覚アノテーションに関連付けられ、視覚アノテーションの情報とともに配布される。一実施形態によれば、アノテーションに関連するメタデータは、関連するアノテーションの表現、例えば、エリア210、エリア240、エリア250などで示され得る。
【0077】
フローチャート300のステップ310で、1つ以上の描画命令が、特定のクライアントデバイス以外の複数のクライアントデバイスの各クライアントデバイスに送信され、前記各クライアントデバイスは、1つ以上の描画命令に基づいて、前記各クライアントデバイスで表示される特定のフレーム上の特定の描画アノテーションを描画するように構成される。例えば、VCS112は、クライアントアプリケーション132Aから受信した描画命令を、ネットワーク120を介して他の参加クライアントデバイス130B-Eのそれぞれに送信する。いくつかの実施形態によれば、VCS112はさらに、描画が生成されたビデオフレームのフレーム識別子を通信する。
【0078】
各クライアントデバイス130は、示されたビデオフレーム上で描画命令を実行するように構成される。示されたビデオフレームが現在クライアントアプリケーション132によって表示されている場合(例えば、クライアントアプリケーション132Aは、描画アノテーションが生成され、受信クライアントアプリケーション132も同期モードであるとき、同期モードである)、受信クライアントアプリケーションは、描画命令をリアルタイム、すなわち、描画命令を受信した閾値時間内で実行する。いくつかの実施形態によれば、受信クライアントアプリケーションは、送信元識別子に基づいて、受信した描画命令を使用して生成された、描画アノテーションのルックアンドフィールを識別する。別の実施形態によれば、VCS112は、例えば描画命令の一部として、描画アノテーションのルックアンドフィールの情報を受信クライアントアプリケーションに送信する。表示用に、VCS112は、各描画命令において、描画命令に基づいて生成された描画アノテーション用の色を示す色コードを含む。
【0079】
いくつかの実施形態によれば、描画命令は、VCS112において、同じ時間枠内に複数の参加クライアントデバイスから受信されてもよい。例えば、1番目の例の描画命令を受信した後、クライアントアプリケーション132Aから2番目の例の描画命令を受信する前に、VCS112は、クライアントアプリケーション132Eから描画命令を受信する。VCS112は、クライアントアプリケーション132Aからの描画命令の例に関連して、上述したように、クライアントアプリケーション132Eからの描画命令をリアルタイムで配信する。クライアントアプリケーション132は、複数の送信元からの描画命令がVCS112から受信されるのと同時に、異なる送信元からの描画を生成するように構成される。
3.8. 描画アノテーションの明示的な共有
【0080】
いくつかの実施形態によれば、クライアントアプリケーション132は、描画命令が識別されると自動的にVCS112に、例えば、リアルタイムで描画命令を送信してもよく、或いは、クライアントアプリケーション132は、描画命令を共有するための明示的な命令の検出に応答して、描画命令を送信してもよい。具体的には、いくつかの実施形態によれば、クライアントアプリケーション132は、描画を他のセッションクライアントアプリケーションと自動的に共有することなく、描画アノテーションを生成するオプション、例えば描画抑制モード、を提供する。クライアントアプリケーション132が描画抑制モードにある間、アプリケーションで生成された描画アノテーションは、ローカル共同状態データ134(例えば、図面が共有されなかったことを示す「ローカル」タグ)を使用してのみ生成され、および/または、アノテーションを共有せずに削除されてもよい。
【0081】
さらに、クライアントアプリケーション132が描画抑制モードにある間に生成される描画アノテーションは、ユーザが満足されるまで修正されてもよく、その場合、クライアントアプリケーションでの明示的な共有コマンドに応答して、描画命令の配信のためにVCS112に送られる。描画アノテーションが明示的に共有されると、クライアントアプリケーション132は、(a)描画アノテーション生成プロセス中に生成された描画命令を、最終の描画アノテーションに含まれない描画の部分のための命令を含むように、VCS112に送信するか、または(b)最終の描画アノテーションを反映する描画命令のセットを生成し、生成された描画命令のセットをVCS112に送信する。
【0082】
例えば、図4に示されるように、クライアントアプリケーション132Aは同期モードであり、描画抑制モードであるが、描画アノテーション402は、クライアントアプリケーション132AのGUI200に表示される現在のビデオフレーム上に生成される。ユーザAが描画アノテーション402を共有する準備をすると、描画アノテーションが完全に準備されているか、またはディスカッションが描画のために準備されているかのいずれかの理由で、ユーザAはGUI200のメニューまたは専用のファンクションキー/キーの組合せを使用して、アノテーションの描画命令をVCS112に送信する。
【0083】
VCS112は、セットとして、クライアントアプリケーション132Aからアノテーション402を描画するための命令を受信し、一組の命令を受信する閾値時間内に、クライアントデバイス130B-Eの各々に命令のセットを自動的に送信する。示されたビデオフレームを表示する各参加者クライアントデバイスにおけるクライアントアプリケーション132は、自動的に一組の描画命令を使用して、ビデオフレーム上に描画アノテーション402を生成し、これによって参加者は、ユーザAからの明示的な命令に関して、リアルタイムで描画アノテーション402を見て、アノテーションを共有することができる。
4. 描画アノテーション付きのビデオ再生
【0084】
いくつかの実施形態によれば、各クライアントアプリケーション132は、受信した描画命令をローカル共同状態データ134に保存する。クライアントアプリケーション132は、ローカル共同状態データ134内のビデオフレームに関連する描画命令を使用して、表示されたビデオフレームの描画アノテーションを再生成する。セッション中、ビデオデータの再生には、描画アノテーションの表示または描画アノテーションの除外が含まれる場合がある。ユーザの好みに基づいて、VCS112は、以下でさらに詳細に説明するように、ビデオ再生が全てのアノテーションをスキップしたり、選択された表示モードに従って1つ以上の描画アノテーションを表示させたりすることができる。
【0085】
いくつかの実施形態によれば、ユーザは、再生中にアノテーションを表示する1つ以上のアノテーション付きビデオフレームを識別することができ、選択データは、参加クライアントデバイスによって維持される共同状態データ134に配信される。このような選択情報はまた、後のレビューのためにセッションデータ142に永続化され得る。
【0086】
例えば、図4に示されたGUI200内の描画アノテーションエリア450は、アノテーション包含コントロール404Aおよび404Bを含み、これがオン位置に設定されると、関連するビデオフレーム内の描画アノテーションが再生中に表示される。例示のエリア450では、アノテーション包含コントロール404Aがオフ位置に設定され、ビデオデータの再生が、時間00:00:10:06における関連するビデオフレーム上の描画アノテーションを除外する。しかしながら、アノテーション包含コントロール404Bは、オン位置に設定され、ビデオデータの再生は、時間00:00:18:11(すなわち、現在見るビデオフレーム)における関連するビデオフレーム上の描画アノテーションを除外する。
【0087】
図4に図示の実施形態によれば、コントロール404Bはオン位置に設定されるので、追加の表示モードコントロール406が関連するビデオフレームに対して利用可能になる。この例では、表示モードコントロール406は、オプションの(隠された)リストを有するドロップダウンボックスであり、そのうち「一時停止」が選択されている。利用可能な表示モードには、通常の速度再生中にビデオフレーム上にアノテーションを表示し、描画アノテーション付きで示されたフレーム上で速度を落とし(アノテーション付きフレームの前後の0個以上のフレームで速度を落とすことを含む)、或いは描画アノテーション付きで関連するフレーム上で一時停止する(例えば、選択された「PAUSE」オプション)ためのオプションが含まれ得る。
【0088】
例えば、図4の描画アノテーションエリア450で選択された描画アノテーション表示オプションの例に基づくビデオ再生中、クライアントアプリケーション132は、フレーム上に描画アノテーションを表示せずに、タイムスタンプ00:00:10:06のビデオフレームを表示する。さらに、再生がタイムスタンプ00:00:18:11でビデオフレームに到達すると、クライアントアプリケーション132は再生を一時停止し、ビデオフレームに関連する共同状態データ134に保存された描画命令に基づいて、エリア210に描画アノテーション402を再生成する。
5. セッションデータとして保持される共同状態データ
【0089】
いくつかの実施形態によれば、VCS112は、特定のセッションの間に生成されたジョイントセッションデータを、例えば、図1のデータストレージデバイス140のセッションデータ142として、将来のレビューのために維持する。例えば、VCS112によって生成された共同セッションデータは、保存ポリシーに基づいて永続化され、これは、以下にさらに詳細に説明するセッションマスタによって確立され得る。保存ポリシーは、生成されたジョイントセッションデータからのどのタイプのデータがセッションデータ142に永続化されるかを示す。図示するように、保存ポリシーは、イベントタイムライン、アノテーションデータの描画、アノテーションデータ、1つ以上の送信元からのアノテーションデータ、共存データ(カーソルデータなど)、ビデオ再生命令などの、持続する1つ以上のタイプのデータを示すことができる。保持ポリシーが、イベントタイムラインを永続化すべきであることを示す場合、セッションデータ142に記録された命令は、記録されたセッション中の命令のオリジナルのタイミングを示すタイムスタンプと関連付けられる。
5.1. セッションデータのレビュー
【0090】
セッションデータ142に基づいて、録画されたビデオコラボレーションセッションは、セッションが完了した後にレビューされてもよい。例えば、セッションデータ142に永続化されたセッションの完了後、VCS112は、クライアントデバイス130Fからセッションデータ142をレビューする要求を受信する。従って、VCS112は、セッションデータ142をクライアントデバイス130Fに提供し、このクライアントデバイスは、セッションデータを共同状態データ134Fとして保存する。クライアントデバイス130F上で稼働するクライアントアプリケーション132Fは、共同状態データ134Fを使用してセッションをレビューする。クライアントアプリケーション132Fは、表示する描画アノテーションのコントロール、アノテーションの表示に使用する表示モード、イベントタイムラインの使用の有無、使用方法などのセッションレビューのためのコントロールを提供することができる。
【0091】
クライアントアプリケーション132Fは、記憶されたイベントタイムラインを使用して、命令(描画命令および/または再生命令を含む)が、その命令が受信された順序で実行されるようにするか、またはセッション中に元のタイミングをミラーリングするタイミングで実行されるようにすることができる。たとえば、イベントタイムラインデータを使用して、受信した描画命令の順序に基づいて、セッションレビュー中に描画アノテーションを再生成することができる。セッションレビュー中の命令実行の描画タイミングは、描画命令実行の間の一定量の遅延を含むことができ、または関連するイベントタイムラインタイムスタンプによって示されるように、オリジナルの命令のタイミングをミラーすることができる。
【0092】
さらなる例として、クライアントアプリケーション132Fは、共同状態データ134F内の再生命令を、記憶されたイベントタイムラインに基づいて実行させることができ、これは、セッション中に参加者ユーザによって生成されたオーディオおよび/またはビデオに関連して、セッションのレビューを容易にする。いくつかの実施形態によれば、記憶されたイベントタイムラインに基づいて再生命令が実行されるとき、セッション参加者の1つ以上からの入力カーソルの表現も表示され得る。すなわち、共同状態データ134Fに記憶されたイベントタイムラインタイムスタンプに関連するカーソルデータに基づく。いくつかの実施形態によれば、GUI200は、セッションレビュー中に入力カーソル表示を表示/非表示にする制御を含む。これらの制御は、特定のユーザに関連したカーソル表現の選択的表示を可能にする。
5.2. セッション完了後のアノテーションの追加
【0093】
いくつかの実施形態によれば、セッションデータ142内のビデオデータのために記録されたビデオアノテーションは、調整されてもよい。このような調整には、(a)セッションレビュー中に、または(b)別のセッション中に、セッションデータにアノテーションを追加することが含まれる。例えば、クライアントアプリケーション132Fでのセッションレビュー中に、ユーザは、特定のビデオフレームに対するコメントアノテーションまたは描画アノテーションを生成する。従って、クライアントアプリケーション132Fは、アノテーションのための情報をVCS112に送る。このアノテーションは、「セッション外」タグ、またはクライアントアプリケーション132Fで認証されたユーザFの識別子に関連付けられてもよい。セッションデータ142の将来のレビューでは、セッション外アノテーションが、例えば投稿コメントエリア240または視覚アノテーションエリア250に利用可能であり、視覚的なセッション外識別子に関連付けられてもよい。
【0094】
新しいアノテーションは、セッションデータ142に、またはデータストア140の第2のセッションデータ144に、セッションデータ142から独立してレビュー可能な別のセッションとしてVCS112によって構成されるか、またはセッションデータ142と併せてレビュー可能なセッションデータ142への補助データとして構成される。いくつかの実施形態によれば、セッションデータ142は、セッションデータ144への参照を含むように修正される。
【0095】
コンテキスト外アノテーションを有するセッションデータのレビューを説明するために、1つ以上のセッション外アノテーションを有するセッションデータ144の生成後、VCS112は、クライアントデバイス130Gからセッションデータ142のレビュー要求を受信する。従って、セッションデータ142内のセッションデータ144への参照に基づいて、VCS112は、セッションデータ142およびセッションデータ144をクライアントデバイス130Gに提供し、これは、セッションデータを共同状態データ134Gとして保存する。クライアントデバイス130G上で稼働するクライアントアプリケーション132Gは、共同状態データ134Gを使用して、共同状態データ134Gに保存されたセッション外アノテーションとのセッションをレビューする。たとえば、ビデオデータの特定のフレームは、元のセッションからの描画アノテーションと、セッション外の描画アノテーションの両方に関連付けられる。エリア210内の特定のフレームを表示すると、クライアントアプリケーション132Gは、元のセッションからの描画アノテーションとセッション外の描画アノテーションの両方を、エリア210内に、例えば、セッション外の描画アノテーションに関連する視覚的な「セッション外」インジケータと共に、再生成する。
6. 追加の共存コンテキスト
【0096】
ビデオデータのディスカッション中に、特定のユーザがビデオ再生またはアノテーション生成のようなセッションの共同状態に影響を与える動作を、特定のユーザが実行しようとしているか、または実行したことを知ることは有用である。複数の人が異なるアイデアを同時に表現しようとすると、コラボレーティブビデオセッションが乱れる可能性がある。セッション参加者の動作に関する情報は、他の参加者が自分自身の動作のコンテキストを持つことに役立ち、これによりコラボレーションセッション中のコミュニケーションと円滑な移行が容易になる。これらの利点により、コラボレーションセッションの完了にかかる時間とコンピューティングリソースが短縮される。さらに、対面会議は、オンライン設定では利用できない人物の行動へのコンテキストの手がかりを提供する。ビデオコラボレーションセッション全体で提供されるセッションコンテキスト情報は、セッション参加者が接続しやすくなり、参加者がより簡単に連携できるようになる。
【0097】
したがって、いくつかの実施形態によれば、VCS112は、ビデオコラボレーションセッション中に発生するコンテキストイベントのための共存情報を受信し、発信する。ここで、コンテキストイベントは、ビデオ再生コントロールとのインタラクション、アノテーションコントロールとのインタラクション、セッションへの参加または離脱、特定のモード(すなわち、ステルスモード、描画抑制モード、同期モード、非同期モード)の出入りなど、1つ以上のセッション参加者によって実行される動作である。コントロールとのインタラクションは、コントロールの有効化、コントロールのロールオーバー、コントロールのクリック、テキストボックスコントロールへの入力、コントロールセットのアクティブ化要求(描画コントロールなど)など、あらゆる種類のインタラクションで構成される。特定のコンテキストイベントを説明する共存情報を受信すると、クライアントアプリケーション132は、GUI200において、特定のコンテキストイベントに関する情報を有する視覚共存通知を表示するように構成される。いくつかの実施形態によれば、共存情報はまた、セッションのために維持される共同状態データに記憶される。
【0098】
図示のために、VCS112は、ビデオコラボレーションセッションに参加する複数のクライアントデバイスの特定のクライアントデバイスから、特定のクライアントデバイスによって表示されるグラフィカルユーザインタフェースとのユーザインタラクションを反映するユーザインタラクション情報を受信する。例えば、クライアントデバイス130BのユーザBは、クライアントデバイスに表示されたGUI200内の制御212の1つをロールオーバーまたはアクティブ化する。クライアントデバイス130Bのクライアントアプリケーション132Bは、このコンテキストイベントを記述する共存情報をVCS112に送信する。
【0099】
いくつかの実施形態によれば、ユーザインタラクション情報の受信に応答して、VCS112は、特定のクライアントデバイス以外の複数のクライアントデバイスの各クライアントデバイスに、ユーザインタラクション情報を、リアルタイムで、ユーザインタラクション情報の視覚表現で表示するように構成されている。例えば、VCS112は、受信した共存情報を共存情報の送信元の識別子と共にクライアントデバイス130Aおよび130C-Eに送信する。
【0100】
クライアントアプリケーション132は、共存情報に反映されたコンテキストイベントの視覚インジケーションを表示するように構成される。表示のため、VCS112から共存情報を受信すると、クライアントデバイス130Aは、コンテキストイベントを記述するGUI200内に視覚インジケーションを表示する。例えば、図5は、受信された共存情報中に記述されたコンテキストイベントの視覚インジケーションを含むコンテキストメッセージ502を有するGUI200を示す。
【0101】
別の例として、コンテキストイベントの視覚インジケーションは、コンテキストイベントに対応する、GUI200内のコントロールに関連付けられる。GUI200の制御に関連する視覚インジケーションは、色変更、サイズ変更、ラインウェイト変更、アウトラインカラー変更、アニメーション(点滅など)、アイコンとの視覚的な関連、ユーザ識別子との視覚的な関連など、制御のルックアンドフィールの任意の変更を含むことができる。図5に示すように、ハイライト504が再生コントロールに適用され、再生コントロールはロールオーバーするユーザ(ユーザB)のコンテキストイベントを記述する共存情報の受信に応じてクライアントアプリケーション132が表示する。別の例として、再生コントロールをロールオーバーするユーザ(ユーザB)のコンテキストイベントを記述する共存情報を受信すると、ユーザ識別子506が再生コントロールに視覚的に関連付けられる。再生コントロールがこの例の主題であるが、GUI200内の任意のコントロールは、視覚的コンテキストイベント指示と関連付けられ得る。
【0102】
いくつかの実施形態によれば、ユーザは、視覚コンテキストイベントインジケーションを抑制することができ、例えば、すべての視覚インジケーションを抑制すること、コンテキストイベントのタイプに基づいて視覚インジケーションを抑制すること、コンテキストイベントを開始したユーザに基づいて視覚インジケーションを抑制することなどができる。
【0103】
いくつかの実施形態によると、VCS112は、ビデオコラボレーションセッションのために記録されたセッションデータ142内の共存情報を含む。セッションデータ142に記録された共存情報は、セッションデータのレビューが元のセッション中に表示される視覚コンテキストイベントインディケーションを含むように、イベントタイムラインタイムスタンプに関連付けることができる。
7. ビデオプログレスフリーズ条件
【0104】
第1のユーザが、特定のビデオデータフレーム上に描画アノテーションを生成するなど、クライアントアプリケーション132とのフレーム固有のインタラクションを実行しているときに、別のユーザがVCS112にビデオを特定のフレームから遠ざけるようにさせるのは非常に混乱を招くことがある。この問題に対処するために、VCS112は、いくつかの実施形態によれば、VCS112によって受信されるリアルタイム描画更新に基づくフリーズ条件を検出することに応答して、セッションの共同状態データ内に示される現在のビデオタイムスタンプをフリーズする。
【0105】
図6は、ビデオコラボレーションセッションのために維持された共同状態データ内の現在のビデオタイムスタンプのフリーズ条件を検出し、強制するためのフローチャート600を示す。具体的には、フローチャート600のステップ602で、ビデオデータは、少なくとも部分的には、ビデオデータの複数のビデオフレームの現在表示されているフレームを識別する現在のフレーム値を含む共同状態データに基づいて、複数のクライアントデバイスに同時にストリーミングされる。例えば、VCS112は、VCS112によって確立された特定のビデオコラボレーションセッションに参加するためのクライアントデバイス130A-Eに対する要求を受信する(上記の詳細に説明されているように)。VCS112は、クライアントデバイス130A-Eの各々に、要求されたセッションのための共同状態データ134と、ビデオデータのために同期的に表示された(または現在の)フレームを識別する現在のビデオタイムスタンプとを提供する。VCS112は、ビデオデータをクライアントデバイス130A-Eの各々にストリーミングするが、これは、同期モードであるとき、共同状態データ134に示された現在のビデオタイムスタンプでストリーミングされたビデオを表示する。
【0106】
フローチャート600のステップ604で、特定のクライアントデバイスにおける複数のビデオフレームの特定のフレームに対して実行される描画アノテーションのための複数のリアルタイム描画データ更新が、特定のクライアントデバイスから受信され、複数のリアルタイム描画データ更新が、特定の時間期間にわたってリアルタイムに受信される。例えば、図7Aに示されるように、VCS112は、クライアントデバイス130A上で動作するクライアントアプリケーション132Aで生成された描画アノテーション702を再生成するための複数の描画命令を受信する。
【0107】
図示のセッション中に、VCS112は、第1の時間に、例示の描画命令「start_drawing(user_A、0.36、0.60)」を受信する。ここで、user_Aは、描画命令の送信元の識別子であり、座標0.36、0.60は、位置702Aを識別する。セッション中(第1の時間より後)の第2の時間に、VCS112は、第2の例の描画命令「drawing_segment(user_A、0.45、0.54)」を受信する。ここで、座標0.45、0.54は、位置702Bを識別する。セッション中の第3の時間(第2の時間より後)に、VCS112は、第3の例の描画命令「drawing_segment(user_A、0.43、0.29)」を受信する。ここで、座標0.43、0.29は、位置702Cを識別する。受信した描画命令は、いずれも描画命令を終了していないことに注意する。
【0108】
フローチャート600のステップ606では、特定の時間期間の間に、複数のリアルタイム描画データ更新の各リアルタイム描画データ更新が、特定のクライアントデバイス以外の複数のクライアントデバイスの各クライアントデバイスに送信され、各クライアントデバイスは、特定の時間期間の間に、および複数のリアルタイム描画データ更新の各リアルタイム描画データ更新に基づいて、各クライアントデバイスに表示される特定のフレーム上の描画アノテーションの更新バージョンを表示するように構成される。例えば、VCS112は、セッション中の第1の時間に関して、命令の送信元クライアントデバイス以外のセッションに参加する参加クライアントデバイスであるクライアントデバイス130B-Eの各々に、第1の例の描画命令(「start_drawing(user_A、0.36、0.60)」)を送信する。同様に、VCS112は、セッション中の第2の時間に関して、第2の例の描画命令(「drawing_segment(user_A、0.45、0.54)」)をクライアントデバイス130B-Eの各々に送信する。さらに、VCS112は、セッション中の第3の時間に関して、第3の例の描画命令(「drawing_segment(user_A、0.43、0.29)」)をクライアントデバイス130B-Eの各々に送信する。これらの受信した命令を使用して、クライアントアプリケーション132は、クライアントアプリケーション132Aで生成される描画アノテーション702を再生成することができる。
【0109】
いくつかの実施形態によれば、VCS112で受信されたこれらの描画命令はまた、(描画アノテーションが生成されたフレームの識別子との明示的な関連において)セッションのための共同状態データに保存される。したがって、セッションに参加する(セッションの共同状態データを受信する)参加者クライアントアプリケーションは、保存された描画時間を受信した後、示されたフレームで実行する永続描画時間を受信する。
【0110】
フローチャート600のステップ608で、複数のリアルタイム描画更新に基づいてフリーズ条件が検出される。フリーズ条件は、VCS112に共同状態データの現在のフレームをフリーズさせる条件である。フリーズ条件は、フリーズ条件が「解除される」又はフリーズ上限がもはや有効でなくなるまで、「アクティブ」である。共同状態データの現在のフレームをフリーズすることは、共同状態データの現在のフレーム番号または現在のビデオタイムスタンプの現在の値を維持することを含み、これにより、同期モードにあるセッション参加者は、たとえ同期ビデオ再生命令が逆に受信されたとしても、共同状態データで示された現在のフレームの表示を継続させる。共同状態データの現在のフレームをフリーズすると、同期モードで動作しているセッションの参加者は、同期された現在のフレームがフレーム固有の動作が適用されるフレームから離れる前に、フレーム固有の動作を完了することができる。
【0111】
いくつかの実施形態によれば、同期モードにあるクライアントアプリケーションによって現在の時間のしきい値の時間内にアノテーションツール(例えば、エリア230内の描画ツールまたはコメントツールなど)とのインタラクションを記述するコンテキストイベントを示す共存データを受信するなど、同期フレーム特有の動作が実行されているか、または差し迫っている可能性があることをVCS112が検出することにより、フリーズ条件の検出を暗黙に示すことができる。別の例として、フリーズ条件の暗黙の検出として、VCS112は、同期モードにあるクライアントアプリケーションから、(a)現在の時間の閾値時間内に現在のビデオフレーム上にアノテーションを描画するための描画命令を受信するか、または(b)現在の描画の完了を示す終了する描画命令を受信しない。さらに、フリーズ条件の検出は、フリーズ条件を課すためのクライアントアプリケーションからの要求を受信するなど、明示的であってもよい。
【0112】
ステップ608を図示するために、VCS112は、共同状態データに示された現在のフレームについて、クライアントアプリケーション132Aから、終了描画命令を受信することなく、1つ以上の描画命令を受信したことに基づいてフリーズ状態を検出する。描画アノテーション702のコンテキストで説明すると、VCS112によって受信された最後の描画命令は、中間タイプの描画命令(「drawing_segment(user_A、0.43、0.29)」)であった。従って、VCS112は、共同状態データの現在のフレームに対するアクティブなフリーズ条件を検出する。
【0113】
明示的に検出されたフリーズ条件を示すために、図7Aは、フリーズ制御704Aを含むクライアントデバイス130C上に表示されるGUI200を示す。ユーザCは、クライアントデバイス130Cにおいて、フリーズ制御704Aをアクティベートし、これに基づいて、VCS112は、クライアントデバイス130Cによって引き起こされたフリーズ状態を検出する。このフリーズ条件は、他の検出されたフリーズ条件(例えば、アノテーション702を描画するための描画命令に基づいて、クライアントデバイス130Aによって引き起こされる暗黙のフリーズ条件)と並行して存在し得る。
【0114】
フローチャート600のステップ610では、検出されたフリーズ条件に基づいて、共同状態データにおける、特定のフレームにおける現在のフレーム値がフリーズされる。例えば、アクティブフリーズ条件の検出に応答して、VCS112は、現在のセッションの共同状態データ内の現在のビデオタイムスタンプまたは現在のフレーム値をフリーズする。いくつかの実施形態によれば、共同状態データにおいて、現在のフレーム値をフリーズすることは、特定のフレームにおいて、複数のクライアントデバイスの1つ以上のクライアントデバイスで表示されるビデオ再生コントロールを無効にすることを含む。
【0115】
別の実施形態によれば、共同状態データにおいて、現在のフレーム値をフリーズすることは、フリーズ状態が解除されるまで、特定のフレームにおいて、セッションに参加している参加クライアントデバイスからのビデオ再生命令を無視することを含む。本実施の形態では、VCS112は、フリーズ条件を引き起こしたクライアントデバイス以外の複数のクライアントデバイスの第2のクライアントデバイス(例えば、クライアントデバイス130A)から、共同状態データにおける現在のフレーム値を変更するためのビデオ再生命令を受信する。ビデオ再生命令を受信した後、少なくとも部分的に、検出されたフリーズ条件に基づいて、VCS112は、現在のフレーム値を共同状態データ内に維持し、ビデオデータから同期して表示されている特定の現在フレームを識別する。
7.1. ビデオプログレスフリーズ条件の解除
【0116】
共同状態データの現在のフレームのフリーズを解除するために、アクティブなフリーズ条件が有効でない場合がある。いくつかの実施形態によれば、フリーズ条件は暗黙的または明示的に解除することができる。例えば、VCS112は、フリーズ条件を検出してからの閾値時間の経過を判定することに基づいて、あるいは、描画命令がフリーズ条件を引き起こしたクライアントデバイスからの描画命令の終了を受信することに基づいて、以前に検出されたフリーズ条件の暗黙の解除を検出することができる。
【0117】
例えば、図7Bに示されるように、VCS112は、描画アノテーション702のためのさらなる描画命令を受信する。具体的には、この例では、VCS112は、図示したセッション中の第4の時間(上述の図面例で参照された第3の時間後)に、第4の例の描画命令「end_drawing(user_A、0.46、0.22)」をクライアントデバイス130Aから受信する。この描画命令は、例えば、位置702D(座標0.46、0.22)における描画アノテーション702の第3の描画セグメントを終了するGUI200の描画機構を解除することによって生じる終了命令である。クライアントデバイス130Aからの終了描画命令を受信すると、VCS112は、同じクライアントデバイスからの命令を描画することによって、前に検出されたフリーズ状態への暗黙の解除を検出する。
【0118】
同じ時間帯に複数のフリーズ条件がアクティブになることがある。例えば、描画命令は、同じ期間中に複数のクライアントデバイスから受信され、VCS112は、各クライアントデバイスからの描画命令に基づいて、複数のクライアントデバイスのそれぞれに対して別個フリーズ状態を検出する。複数のフリーズ条件が同時にアクティブになると、VCS112は、すべてのフリーズ条件が解除されるまで、共同状態データの現在のフレーム上でフリーズを維持する。
【0119】
さらに、VCS112は、例えば、フリーズ条件を解除する命令を受信することに基づいて、以前に検出されたフリーズ条件の明示的な解除を検出することができる。より具体的には、特定のクライアントデバイスによって要求された明示的に要求されたフリーズ条件は、同じクライアントデバイスからフレームのフリーズを解除する命令によって解除することができる。例えば、特定のフリーズ条件は、クライアントアプリケーション132Cからの明示的なフリーズ要求によって引き起こされる。図7Bに示されるように、クライアントアプリケーション132Cのフリーズコントロール704A(図7Aの場合)のアクティベーションによって、現在アクティブであるフリーズ状態が引き起こされるため、クライアントアプリケーション132CのGUI200は、フリーズ解除コントロール704Bを表示する。アンフリーズコントロール704Bは、例えば、クライアントアプリケーション132CにおけるユーザCによって、そのクライアントデバイスによって引き起こされたフリーズ状態を明示的に解除するためにアクティベーションされ得る。
7.2. 視覚ビデオフリーズインジケーション
【0120】
いくつかの実施形態によれば、有効なフリーズ条件に基づいて、VCS112は、複数のクライアントデバイスの1つ以上のクライアントデバイスによって、視覚ビデオのフリーズインジケーションを表示させる。視覚ビデオフリーズ表示は、同期モードのクライアントアプリケーション132内のビデオ再生コントロールの1つ以上と関連付けられ、フリーズしないルックアンドフィールと区別されるコントロールに対するルックアンドフィールを備えることができる。例えば、1つ以上のアクティブなフリーズ条件に基づいて、VCS112は、ビデオ再生コントロール712(図7Aから図7Bに示される)を、例示的なビデオフリーズインジケーションと共に表示させ、ビデオ再生コントロールは、視覚ビデオフリーズインジケーションなしに表示された例示的な制御212とは異なるルックアンドフィールを有する。
【0121】
別の例として、視覚ビデオのフリーズインジケーションは、1つ以上のアクティブなフリーズ条件の送信元を識別することができる。図7Aは、最小化フリーズ情報コントロール706Aを含む。いくつかの実施形態によれば、最小化されたフリーズ情報コントロール706Aは、アクティブなフリーズ状態があるときに同期モードの参加クライアントデバイスでGUI200に表示される視覚ビデオフリーズインジケーションである。アクティベーションされると、最小化フリーズ情報コントロール706Aは、最大化されたフリーズ情報コントロール706Bに展開され、これは、1つ以上の活性フリーズ状態を引き起こしたユーザまたはクライアントデバイスに関する情報を含む。この例では、ユーザAが現在描画中で、ユーザCがビデオのフリーズを明示的に要求している。最大化フリーズ情報コントロール706Bのアクティベーションは、最小化フリーズ情報コントロール706Aに制御を戻す。
【0122】
別の実施形態によれば、視覚ビデオのフリーズ表示を、ビデオ再生コントロールと視覚的に関連付けることはできない。例えば、図7Bでは、コンテキストメッセージ708は、ユーザCが活動化フリーズ制御704Aを有することを示す。この例では、コンテキストメッセージ708は、視覚ビデオフリーズ指示のトピックであるフリーズ条件を引き起こしたクライアントアプリケーション132Cによって表示される。しかしながら、いくつかの実施形態によれば、そのようなコンテキストメッセージは、視覚ビデオフリーズ指示のトピックであるフリーズ条件を引き起こさなかったクライアントアプリケーションで表示される。
8. セッションマスタ
【0123】
1つ以上のセッションマスタは、セッションオプションの設定、フリーズ条件の仲介、セッション参加者のモードオプションの制御、および/またはクライアントアプリケーションが機能するモードの制御など、セッションの管理機能を実行することができる。いくつかの実施形態によれば、確立されたセッションの共同状態データにおいて、クライアントデバイス130A-Eまたは1つ以上のユーザ識別子が、セッションマスタとして識別される。たとえば、特定のセッションのマスターは、セッションを開始する要求が発生したクライアントデバイスである。または、セッションを開始する要求に含まれるユーザ識別子などに基づいて、特定のセッションのマスタが識別される。
【0124】
特定のセッションのセッションマスタは、セッション内の他の参加者に、アノテーションの追加、ビデオ再生の制御などの動作を実行する権限を付与または取り消すことができる。さらに、セッションマスタは、例えばユーザ識別子、ユーザの役割などに基づいて、どの参加者アノテーションがセッションデータ142に永続化されるかを判定することができる。具体的には、セッションマスターロールに加えて、セッションの参加者に「プリンシパル共同作業者」、「セカンダリ共同作業者」、「オブザーバ」などのロールが割り当てられる場合がある。
【0125】
さらに、セッションマスタは、ステルスモード、非同期モード、または描画抑制モードなどの特定のモードで特定の参加者が動作するかどうかを判定することができる。さらに、セッションマスタは、どの種類の共存データが通信されるか、および/またはセッションに参加するクライアントアプリケーションによって表されるか、ユーザが共存通知をオプトアウトすることができるかどうか、およびどの種類の共存データがセッションデータ142内に存続することができるかを判定することができる。
【0126】
更に、セッションマスタは、入力カーソル表示及び/又は描画アノテーションのための特定のユーザを識別するために特定の色を割り当てる、及び/又はアノテーションを描画するために特定の色を割り当てる、ユーザが識別するよりも効果のために色を選択することができるか否か、ユーザ識別子が図形描画アノテーションと関連して表示されるか否か、セッションのためにどのような描画ツールが利用可能であるかなど、図形描画アノテーションのルックアンドフィールを制御することができる。
【0127】
いくつかの実施形態によれば、セッションマスタからの許可は、セッション参加者が、ビデオ再生に影響する動作、ビデオデータへのアノテーションの追加、または特定のモード(すなわち、ステルスモード、描画抑制モード、同期モード、非同期モード)の出入りなどの1つ以上の動作を実行するために必要である。たとえば、VCS112は、セッションマスターの許可を必要とする動作の通知を受信し、応答として、セッションマスタからの指示に従う許可を要求する。VCS112は、セッションマスタからの許可を受けたことに応じて、動作を実行する(そして、セッションデータへの命令の記憶、動作を記述した共存情報の送信など、動作の他のタスクを実行する)。パーミッションが拒否されると、VCS112は動作を実行せず、パーミッションが拒否されたことを要求しているクライアントアプリケーション132に通知する。クライアントアプリケーション132は、この情報をGUI200で表示するように構成されている。
【0128】
さらに、セッションのマスタは、フリーズ条件の明示的な解除、またはフリーズ条件の暗黙的解除に基づいて、1つ以上のフリーズ条件を解除させることができる。たとえば、セッションのマスタは、アクティブなフリーズ条件のいずれかを明示的に解除するオプションに関連付けられたアクティブなフリーズ条件のリストにアクセスできる場合がある。別の例として、セッションのマスタは、そのGUI200において、すべてのアクティブなフリーズ条件を解除するマスタアンフリーズ制御を有することができる。さらに別の例として、セッションのマスタは、1つ以上のビデオ再生コントロール212をアクティベートすることによって、すべてのアクティブなフリーズ状態を解除するように暗黙的に指示してもよい。
9. コンピューティングシステムの実施
【0129】
図1は、ビデオコラボレーションセッション中のクライアントデバイス間の効率的な通信のための例示的なネットワーク配置100を示すブロック図である。ネットワーク配置100は、サーバデバイス110と、ネットワーク120を介して通信可能に結合されたクライアントデバイス130A-Nとを含む。実施形態は例示のネットワークアレンジメント100に関連して本明細書に記載されるが、これらに限定されるものではない。例えば、実施形態はピアツーピアシステムによって実施することができ、本明細書に記載するVCS112の機能はピアレベルで実施することができる。
【0130】
クライアントデバイス130A-Nは、ネットワーク120を介してサーバデバイス110と通信することができる任意のタイプのコンピューティングデバイスによって実現することができる。クライアントデバイス130A-Nの実施例は、制限無く、ワークステーション、パーソナルコンピュータ、ラップトップコンピュータ、パーソナルデジタルアシスタント、タブレットコンピュータ、スマートフォンなどのセルラーテレフォニーデバイス、および任意の他のタイプのコンピューティングデバイスを含む。ネットワーク配置100では、クライアントデバイス130A-N(一般にクライアントデバイス130とも呼ばれる)の各々は、クライアントアプリケーション132で構成される。クライアントアプリケーション132A-Nの各々は、クライアントデバイス130上で実行されるスタンドアロンアプリケーション、クライアントデバイス130で実行されるブラウザへのプラグイン、クライアントデバイス130で実行されるブラウザにロードされるWebページなどを含む、いくつかの方法で実装されてもよい。クライアントデバイス130A-Nは、特定の実装に応じて、他のメカニズム、プロセス、および機能で構成されてもよい。
【0131】
ネットワーク120は、クライアントデバイス130A-Nとサーバデバイス110との間の情報の交換を容易にする任意のタイプの媒体および/または機構によって実現することができる。さらに、ネットワーク120は、任意の種類の通信プロトコルの使用を容易にし、特定の実施形態の要件に応じて、セキュアまたは非セキュアにすることができる。
【0132】
サーバデバイス110は、ネットワーク120を介してクライアントデバイス130A-Nと通信することができる任意のタイプのコンピューティングデバイスによって実現することができる。ネットワーク配置100では、サーバデバイス110はVCS112で構成される。本明細書でVCS112に帰属する機能のいずれも、いくつかの実施形態によると、サーバデバイス110上で動作する別のエンティティ、またはクライアントデバイス130上の別のエンティティ、またはネットワーク120(図1に図示せず)に通信可能に結合される他のデバイスによって実行されてもよい。サーバデバイス110は、特定の実装に応じて、他の機構、ハードウェア、プロセス、及び機能性と共に構成することができる。
【0133】
サーバデバイス110はデータストレージデバイス140に通信可能に結合されている。データストア140は、セッションデータ142およびセッションデータ144のための情報を保持する。データストレージデバイス140は、揮発性および不揮発性ストレージデバイス(例えば、ランダムアクセスメモリ、リムーバブルまたはディスクドライブ、メインメモリなど)を含む、任意のタイプのストレージデバイスに(全体としてまたは一部として)常駐することができ、1つ以上のデータベースによって実現することができる。データストレージデバイス140が存在するストレージデバイスは、サーバデバイス110の外部にあっても内部にあってもよい。
10. コンテンツ管理システムの例
【0134】
開示された技術の様々な実施形態を実現することに関して、例示のシステム構成800が図8に示されており、電子デバイスは、コンテンツおよびその他のデータを交換する目的でネットワークを介して通信する。このシステムは、図8に示すような広域ネットワーク上で使用するように構成され得る。しかしながら、本原理は、電子デバイスの相互通信を容易にする広範囲のネットワーク構成に適用可能である。例えば、図8のシステム800の各コンポーネントは、ネットワークにおいてローカル化または分散化された形で実現することができる。
【0135】
システム800において、エンドユーザは、直接的および/または間接的な通信によってネットワーク120に接続されたクライアントデバイス130A-N(総称して「130」)を介して、コンテンツ管理システム806(例えば、オンライン同期コンテンツ管理システム)とインタラクションすることができる。コンテンツ管理システム806は、単一のコンピューティングデバイス(例えば、サーバ)または複数のコンピューティングデバイス(例えば、複数のサーバ)を含むことができ、これらは、本明細書に記載するサービスを提供するために必要な機能および/または操作を行うように構成される。
【0136】
コンテンツ管理システム806は、デスクトップコンピュータ、モバイルコンピュータ、モバイルコミュニケーションデバイス、例えば、モバイルフォン、スマートフォン、タブレット、スマートテレビ、セットトップボックス、および/または他の任意のネットワーク対応コンピューティングデバイスなど、様々な異なるクライアントデバイスからの接続をサポートすることができる。
【0137】
クライアントデバイス130は、様々なタイプ、能力、オペレーティングシステムなどのものがあり得る。さらに、コンテンツ管理システム806は、複数のクライアントデバイス130からの接続を同時に受け入れ、それとインタラクションすることができる。
【0138】
エンドユーザは、クライアントアプリケーション132などのクライアントデバイス130Xにインストールされたクライアント側アプリケーションを介して、コンテンツ管理システム806とインタラクションすることができる。いくつかの実施形態において、クライアント側アプリケーションは、コンテンツ管理システム特定の構成を含むことができる。たとえば、コンポーネントは、スタンドアロンアプリケーション、1つ以上のアプリケーションプラグイン、および/またはブラウザ拡張とすることができる。しかしながら、エンドユーザは、クライアントデバイス130X上に存在し、コンテンツ管理システム806と通信するように構成されている、ウェブブラウザのような第三者のアプリケーションを介してコンテンツ管理システム806とインタラクションすることもできる。いずれの場合も、クライアント側アプリケーションは、エンドユーザがコンテンツ管理システム806とインタラクションするためのユーザインタフェースを提示することができる。例えば、エンドユーザは、ファイルシステムと統合されたクライアント側アプリケーションを介して、またはウェブブラウザアプリケーションを使用して表示されるウェブページを介して、コンテンツ管理システム806とインタラクションすることができる。さらに、クライアント側アプリケーションは、共同状態データ134に関連して上述したように、暗黙的にコンテンツ管理システム806とインタラクションすることができる。
【0139】
コンテンツ管理システム806は、アプリケーションまたはエンドユーザがコンテンツアイテムを保存することを可能にすると共に、コンテンツアイテムを検索、修正、ブラウズ、および/または共有するなどの種々のコンテンツ管理タスクを実行することができる。さらに、コンテンツ管理システム806は、エンドユーザまたはアプリケーションが複数のクライアントデバイス130からコンテンツにアクセスすることを可能にすることができる。例えば、クライアントデバイス130Xは、上述したように、コンテンツをネットワーク120を介してコンテンツ管理システム806にアップロードすることができる。後に、同じクライアントデバイス130X又は何らかの他のクライアントデバイス130Yが、コンテンツ管理システム806からコンテンツを検索することができる。例えば、検索されたコンテンツは、共同状態データ134Aへの更新であってもよい。
【0140】
様々なコンテンツ管理サービスを容易にするために、エンドユーザは、コンテンツ管理システム806を有するアカウントを生成することができる。ユーザアカウントデータベース850は、アカウント情報を維持することができる。ユーザアカウントデータベース850は、登録されたユーザのプロファイル情報を保存することができる。場合によっては、ユーザプロファイル内の唯一の個人情報をユーザ名および/または電子メールアドレスにすることができる。しかし、コンテンツ管理システム806は、誕生日、住所、課金情報などの追加のユーザ情報を受け入れるように構成することもできる。
【0141】
ユーザアカウントデータベース850は、アカウントタイプ(例えば、フリーまたは有料)、使用情報、(例えば、ファイル編集履歴)、許可された最大ストレージスペース、使用ストレージスペース、コンテンツストレージ位置、セキュリティ設定、個人構成設定、コンテンツ共有データなどのアカウント管理情報を含むことができる。アカウント管理モジュール824は、ユーザアカウントデータベース850内のユーザアカウントの詳細を更新および/または取得するように構成することができる。アカウント管理モジュール824は、コンテンツ管理システム806内の任意の数の他のモジュールとインタラクションするように構成することができる。
【0142】
アカウントは、アカウント上で認可された1つ以上のクライアントデバイス130からのデジタルデータ、文書、テキストファイル、オーディオファイル、ビデオファイルなどのコンテンツアイテムを記憶するために使用することができる。コンテンツアイテムには、フォルダ、プレイリスト、アルバムなどのさまざまなビヘイビアと一緒にコンテンツアイテムをグループ化するためのコレクションを含めることもできる。たとえば、アカウントには、任意のユーザがアクセスできるパブリックフォルダを含めることができる。パブリックフォルダには、Webアクセス可能なアドレスを割り当てることができる。Webアクセス可能なアドレスへのリンクを使用して、パブリックフォルダのコンテンツにアクセスすることができる。別の例では、アカウントには、写真用の写真コレクション、写真用にカスタマイズされた特定の属性と動作を提供する写真コレクション、オーディオファイルを再生してその他のオーディオ関連動作を実行する機能を提供するオーディオコレクション、またはその他の特別な目的のコレクションを含めることができる。アカウントには、複数のユーザアカウントにリンクされ、使用可能な共有コレクションまたはグループコレクションを含めることもできる。複数のユーザの権限は、共有コレクションで異なる場合がある。
【0143】
コンテンツアイテムは、コンテンツストレージデバイス860に保存することができる。コンテンツストレージデバイス860は、ストレージデバイス、複数のストレージデバイス、又はサーバとすることができる。あるいは、コンテンツストレージ860は、クラウド記憶プロバイダまたは1つ以上の通信ネットワークを介してアクセス可能なネットワークストレージであってもよい。コンテンツ管理システム806は、クライアントデバイス130がコンテンツ管理システム806によってコンテンツアイテムがどこに、またはどのように保存されているかを正確に知る必要がないように、複雑さおよび詳細をクライアントデバイス130から隠すことができる。ある実施形態では、コンテンツ管理システム806は、コンテンツアイテムをクライアントデバイス130X上に現れるのと同じコレクション階層に保存することができる。しかしながら、コンテンツ管理システム806は、コンテンツアイテムをそれ自身の順序、配置、または階層で保存することができる。コンテンツ管理システム806は、コンテンツアイテムをネットワークアクセス可能ストレージデバイス内、独立ディスクの冗長アレイ内等に保存することができる。コンテンツストレージデバイス860は、FAT、FAT32、NTFS、EXT2、EXT3、EXT4、HFS/HFS+、BTRFSなどのような、1つ以上のパーティションタイプを用いてコンテンツアイテムを保存することができる。
【0144】
コンテンツストレージ860はまた、コンテンツアイテム、コンテンツアイテムタイプ、およびコンテンツアイテムと様々なアカウント、コレクション、またはグループとの関係を記述するメタデータを保存することができる。コンテンツアイテムのメタデータは、コンテンツアイテムの一部として保存することも、個別に保存することもできる。あるバリエーションでは、コンテンツストレージデバイス860に保存された各コンテンツアイテムに、システム全体で固有の識別子を割り当てることができる。
【0145】
コンテンツストレージデバイス860は、重複コンテンツアイテムまたはコンテンツアイテムの重複セグメントを識別することによって必要とされるストレージスペースの量を減らすことができる。コンテンツストレージデバイス860は、複数のコピーを保存する代わりに、単一のコピーを保存し、次いで、ポインタまたは他の機構を使用して、重複を単一のコピーにリンクすることができる。同様に、コンテンツストレージデバイス860は、コンテンツアイテムへの変更、コンテンツアイテムの異なるバージョン(分岐するバージョンツリーを含む)および変更履歴を追跡するコンテンツアイテムバージョン制御を使用することによって、コンテンツアイテムをより効率的に保存するとともに、動作を元に戻す機能を提供することができる。変更履歴には、元のコンテンツアイテムバージョンに適用されたときに、変更されたコンテンツアイテムバージョンを生成する一連の変更を含めることができる。
【0146】
コンテンツ管理システム806は、1つ以上のクライアントデバイス130からのコンテンツアイテムの自動同期をサポートするように構成することができる。同期はプラットフォームに依存しない。すなわち、コンテンツアイテムは、様々なタイプ、能力、オペレーティングシステムなどの複数のクライアントデバイス130にわたって同期され得る。例えば、クライアントデバイス130Xは、コンテンツ管理システム806で同期モジュール832を介して、クライアントデバイス130Xのファイルシステム内のコンテンツを、関連するユーザアカウント内のコンテンツと同期するクライアントソフトウェアを含むことができる。場合によっては、クライアントソフトウェアは、新規の、削除された、変更された、コピーされた、または移動されたコンテンツアイテムやコレクションなど、指定されたコレクションとそのサブコレクションのコンテンツに対するあらゆる変更を同期することができる。クライアントソフトウェアは、別個のソフトウェアアプリケーションとすることができ、オペレーティングシステム内の既存のコンテンツ管理アプリケーションと統合することができ、またはその組合せとすることができる。既存のコンテンツ管理アプリケーションと統合するクライアントソフトウェアの一例では、エンドユーザは、ローカルコレクション内のコンテンツアイテムを直接操作することができ、一方、バックグラウンドプロセスは、ローカルコレクションの変更を監視し、それらの変更をコンテンツ管理システム806に同期させる。反対に、バックグラウンドプロセスは、コンテンツ管理システム806で更新されたコンテンツアイテムを識別し、それらの変更をローカルコレクションに同期させることができる。クライアントソフトウェアは、同期動作の通知を提供し、コンテンツ管理アプリケーション内でコンテンツステータスの表示を直接提供することができる。クライアントデバイス130Xには、使用可能なネットワーク接続がない場合がある。このシナリオでは、クライアントソフトウェアは、コンテンツアイテムの変更についてリンクされたコレクションを監視し、ネットワークコネクションが利用可能なときに、それらの変更をコンテンツ管理システム806への後の同期のためにキューに入れることができる。同様に、エンドユーザは、コンテンツ管理システム806との同期を手動で開始、停止、一時停止、または再開することができる。
【0147】
エンドユーザは、ユーザインタフェースモジュール822によって生成および供給されるウェブインタフェースを介して、コンテンツを表示または操作することができる。例えば、エンドユーザは、ウェブブラウザにおいて、コンテンツ管理システム806によって提供されるウェブアドレスにナビゲートすることができる。コンテンツアイテムの新しいバージョンをアップロードするなど、ウェブインタフェースを介して行われたコンテンツストレージデバイス860内のコンテンツに対する変更または更新は、エンドユーザのアカウントに関連する他のクライアントデバイス130に伝搬することができる。例えば、それぞれが独自のクライアントソフトウェアを有する複数のクライアントデバイス130を、単一のアカウントに関連付けることができ、アカウント内のコンテンツアイテムを複数のクライアントデバイス130のそれぞれの間で同期させることができる。
【0148】
コンテンツ管理システム806は、様々なクライアントデバイス130とインタフェースするための通信インタフェース820を含むことができ、アプリケーションプログラムインタフェース(API)を介して、他のコンテンツおよび/またはサービスプロバイダ809-1、809-2、 、809-N(まとめて「1009」)とインタラクションすることができる。特定のソフトウェアアプリケーションは、エンドユーザの代わりにAPIを介してコンテンツストレージデバイス860にアクセスすることができる。例えば、スマートフォン又はタブレットコンピューティングデバイス上で実行されるアプリのようなソフトウェアパッケージは、エンドユーザが認証情報を提供し、コンテンツを読み取り、書き込み、生成、削除、共有又はその他の方法で操作するとき、コンテンツ管理システム806に対してプログラム的に直接呼び出しを行うことができる。同様に、APIは、ユーザに、ウェブサイトを介してコンテンツストレージデバイス860の全部または部分へのアクセスを許可することができる。
【0149】
コンテンツ管理システム806はまた、認証モジュール826を含むことができ、このモジュールは、ユーザクレデンシャル、セキュリティトークン、APIコール、特定のクライアントデバイスなどを検証して、認可されたクライアントおよびユーザのみがコンテンツアイテムにアクセスできるようにすることができる。さらに、コンテンツ管理システム806は、集約ファイル操作、ユーザ動作、ネットワーク使用量、合計ストレージスペース、ならびに他のテクノロジー、使用量、またはビジネス指標を追跡および報告できる分析モジュール834モジュールを含むことができる。プライバシーおよび/またはセキュリティポリシーは、コンテンツ管理システム806と共に記憶されたユーザデータへの不正アクセスを防止することができる。
【0150】
コンテンツ管理システム806は、コンテンツを公的にまたは私的に共有することを管理するための共有モジュール830を含むことができる。コンテンツを公に共有することは、コンテンツ管理システム806とのネットワーク通信において、任意のコンピューティングデバイスからコンテンツアイテムをアクセス可能にすることを含むことができる。コンテンツを私的に共有することは、各ユーザアカウントがコンテンツアイテムへのアクセスを有するように、コンテンツストレージデバイス860内のコンテンツアイテムを2つ以上のユーザアカウントとリンクすることを含むことができる。共有は、プラットフォームに依存しない方法で実行することができる。すなわち、コンテンツは、様々なタイプ、能力、オペレーティングシステムなどの複数のクライアントデバイス130にわたって共有され得る。コンテンツは、さまざまなタイプのユーザアカウント間で共有することもできる。
【0151】
ある実施形態では、コンテンツ管理システム806は、コンテンツストレージデバイス860内の各コンテンツアイテムの位置を識別するコンテンツディレクトリを維持するように構成することができる。コンテンツディレクトリには、コンテンツストレージに保存されているコンテンツアイテムごとに一意のコンテンツエントリを含めることができる。
【0152】
コンテンツエントリには、コンテンツ管理システム内のコンテンツアイテムの位置を識別するために使用することができるコンテンツパスを含めることができる。たとえば、コンテンツパスにはコンテンツアイテムの名前と、コンテンツアイテムに関連付けられたフォルダ階層を含めることができる。たとえば、コンテンツパスには、コンテンツアイテムが配置されているフォルダまたはフォルダのパスと、コンテンツアイテムの名前を含めることができる。コンテンツ管理システム806は、コンテンツパスを使用して、コンテンツアイテムを適切なフォルダ階層内に提示することができる。
【0153】
コンテンツアイテムはまた、コンテンツストレージデバイス860内のコンテンツアイテムの位置を識別するコンテンツポインタを含むことができる。例えば、コンテンツポインタは、コンテンツアイテムの正確なストレージアドレスをメモリに含むことができる。いくつかの実施形態では、コンテンツポインタは、それぞれがコンテンツアイテムの一部を含む複数の位置を指すことができる。
【0154】
コンテンツエントリには、コンテンツパスとコンテンツポインタに加えて、コンテンツアイテムへのアクセス権を持つユーザアカウントを識別するユーザアカウント識別子を含めることもできる。いくつかの実施形態では、複数のユーザアカウント識別子を、コンテンツアイテムが複数のユーザアカウントによる共有アクセスを有することを示す単一のコンテンツエントリと関連付けることができる。
【0155】
コンテンツアイテムを私的に共有するために、共有モジュール830は、コンテンツアイテムに関連付けられたコンテンツエントリにユーザアカウント識別子を追加し、これにより追加されたユーザアカウントにコンテンツアイテムへのアクセス権を付与するように構成することができる。共有モジュール830はまた、コンテンツアイテムからユーザアカウント識別子を除去して、コンテンツアイテムへのユーザアカウントのアクセスを制限するように構成することができる。
【0156】
コンテンツを公に共有するために、共有モジュール830は、ユニフォームリソースロケータ(URL)のようなカスタムネットワークアドレスを生成するように構成することができ、これにより、いかなるWebブラウザも、何の認証もなしにコンテンツ管理システム806内のコンテンツにアクセスすることができる。これを達成するために、共有モジュール830は、生成されたURL中にコンテンツ識別データを含むように構成することができ、これは、後に、要求されたコンテンツアイテムを適切に識別し、そして返すために使用することができる。例えば、共有モジュール830は、生成されたURL内にユーザアカウント識別子及びコンテンツパスを含むように構成することができる。URLを選択すると、URLに含まれるコンテンツ識別データをコンテンツ管理システム806に送信し、受信したコンテンツ識別データを使用して、適切なコンテンツエントリを識別し、コンテンツエントリに関連付けられたコンテンツアイテムを返すことができる。
【0157】
URLを生成することに加えて、共有モジュール830は、コンテンツアイテムへのURLが生成されたことを記録するように構成することもできる。いくつかの実施形態では、コンテンツアイテムに関連付けられたコンテンツアイテムは、コンテンツアイテムへのURLが生成されたかどうかを示すURLフラグを含むことができる。たとえば、URLフラグは、最初に0または偽に設定されたブール値で、コンテンツアイテムへのURLが生成されていないことを示すことができる。共有モジュール830は、コンテンツアイテムへのURLを生成した後に、フラグの値を1または真に変更するように構成することができる。
【0158】
ある実施形態では、共有モジュール830は、生成されたURLをディアクティベートするように構成することもできる。たとえば、各コンテンツエントリには、生成されたURLからの要求に応じてコンテンツを返す必要があるかどうかを示すURLアクティブフラグも含めることができる。例えば、共有モジュール830は、URLアクティブフラグが1または真に設定されている場合、生成されたリンクによって要求されたコンテンツアイテムのみを返すように構成することができる。このように、URLが生成されたコンテンツアイテムへのアクセスは、URLアクティブフラグの値を変更することで簡単に制限できる。これにより、エンドユーザはコンテンツアイテムを移動したり、生成されたURLを削除したりすることなく、共有コンテンツアイテムへのアクセスを制限できる。同様に、共有モジュール830は、URLアクティブフラグの値を1または真に再び変更することによって、URLを再アクティブ化することができる。これにより、エンドユーザは新しいURLを生成することなく、コンテンツアイテムへのアクセスを簡単に復元することができる。
【0159】
コンテンツ管理システム806は特定のコンポーネントを提示されるが、システム806のアーキテクチャ構成が単なる1つの可能な構成であり、より多くまたはより少ないコンポーネントを有する他の構成が可能であることは、当業者には理解されるべきである。
11. ハードウェアの概要
【0160】
プロセス、サービス、またはアプリケーションは、ソフトウェアと、マシンノードからのリソースの割り当ての組合せで構成される。具体的には、プロセス、サービス、またはアプリケーションは、統合されたソフトウェアコンポーネントと、メモリ、マシンノード(すなわち、コンピューティングデバイスにアクセス可能なコンピューティングデバイスおよび/またはメモリ)などのコンピューティングリソースの割当とを組み合わせたものであり、プロセッサ上で統合されたソフトウェアコンポーネントを実行するためのマシンノード上のサブプロセス、ソフトウェアとコンピューティングリソースの組み合わせ、たとえば、1つ以上のクライアントの代わりに、特定の機能を実行するための専用のものである。
【0161】
本明細書に記載する任意のプロセスに起因する機能の1つ以上は、1つ以上の実施形態に従って、図1に示されてもされなくてもよい他の任意の論理エンティティによって実行されてもよい。いくつかの実施形態では、本明細書に記載する技術および/または機能性のそれぞれは自動的に実行され、コンピュータの物理的状態とのインタラクションおよび変換を含むデータ検索、変換、および記憶操作をメモリ間、汎用コンピュータまたは特殊目的コンピュータのいずれかにおける1つ以上のコンピュータプログラム、他のソフトウェア要素、および/またはデジタル論理を使用して実装されてもよい。
【0162】
ある実施形態によれば、本明細書に記載する技術は、1つ以上の特定目的のコンピューティングデバイスによって実現される。この特殊目的のコンピューティングデバイスは、この技術を実行するために物理的に組み込まれてもよく、あるいは、この技術を実行するように永続的にプログラムされている1つ以上の特定用途向け集積回路またはフィールドプログラマブルゲートアレイ(FPGA)のようなデジタル電子デバイスを含んでいてもよく、あるいは、ファームウェア、メモリ、他のストレージデバイス、または組合せにおけるプログラム命令に従ってこの技術を実行するようにプログラムされた1つ以上の汎用ハードウェアプロセッサを含んでいてもよい。このような特殊目的のコンピューティングデバイスはまた、カスタムハードワイヤードロジック、ASIC、またはFPGAをカスタムプログラミングと組み合わせて、技術を達成してもよい。特定目的のコンピューティングデバイスは、デスクトップコンピュータシステム、ポータブルコンピュータシステム、ハンドヘルドデバイス、ネットワーキングデバイス、または技術を実施するために物理的に組み込まれたおよび/またはプログラムロジックを組み込む他の任意のデバイスであってもよい。
【0163】
例えば、図9は、本発明のある実施形態を実施することができるコンピュータシステム900を示すブロック図である。コンピュータシステム900は、情報を通信するためのバス902または他の通信機構と、情報を処理するためのバス902と結合されたハードウェアプロセッサ904とを含む。ハードウェアプロセッサ904は、例えば、汎用マイクロプロセッサとすることができる。
【0164】
コンピュータシステム900はまた、ランダムアクセスメモリまたは他の動的ストレージデバイスなどのメインメモリ906を含み、これらはバス902に結合され、情報およびプロセッサ904によって実行される命令を記憶する。メインメモリ906はまた、プロセッサ904によって実行される命令の実行中に、一時的な変数または他の中間情報を記憶するために使用されてもよい。このような命令は、プロセッサ904にアクセス可能な非一時記憶媒体に格納されると、コンピュータシステム900を、命令で指定された動作を実行するようにカスタマイズされた特定目的のマシンにレンダリングする。
【0165】
コンピュータシステム900はさらに、プロセッサ904のための静的情報および命令を記憶するためにバス902に結合された読み出し専用メモリ908または他の静的ストレージデバイスを含む。磁気ディスク、光ディスク、またはソリッドステートドライブなどのストレージデバイス910が提供され、情報および命令を記憶するためにバス902に結合される。
【0166】
コンピュータシステム900は、バス902を介して、コンピュータユーザに情報を表示するためのブラウン管(CRT)などのディスプレイ912に結合されてもよい。英数字および他のキーを含む入力デバイス914は、情報およびコマンド選択をプロセッサ904に通信するためにバス902に結合される。別のタイプのユーザ入力デバイスは、プロセッサ904に方向情報およびコマンド選択を通信し、ディスプレイ912上のカーソル移動を制御するための、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御デバイス916である。この入力デバイスは、典型的には、第1の軸(例えば、x)および第2の軸(例えば、y)の2つの軸の自由度を有し、これは、デバイスが平面内の位置を指定することを可能にする。
【0167】
コンピュータシステム900は、カスタマイズされたハードワイヤードロジック、1つまたは複数のASICまたはFPGA、ファームウェアおよび/またはプログラムロジックを用いて本明細書に記載する技術を実施することができ、これらは、コンピュータシステムと組み合わせて、またはプログラムコンピュータシステム900を特定目的のマシンにする。ある実施形態によれば、本明細書の技術は、メインメモリ906に含まれる1つ以上の命令の1つ以上のシーケンスを実行するプロセッサ904に応答して、コンピュータシステム900によって実行される。このような命令は、ストレージデバイス910などの別の記憶媒体からメインメモリ906に読み込むことができる。メインメモリ906に含まれる命令のシーケンスの実行は、プロセッサ904に、本明細書に記載するプロセスステップを実行させる。代替的な実施形態では、物理的に組み込まれた回路を、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて使用することができる。
【0168】
本明細書で使用される「記憶媒体」という用語は、特定の態様でマシンを動作させるデータおよび/または命令を記憶する非一時的媒体を意味する。このような記憶媒体は、不揮発性媒体及び/又は揮発性媒体を含むことができる。不揮発性媒体は、例えば、光ディスク、磁気ディスク、またはストレージデバイス910のようなソリッドステートドライブを含む。揮発性媒体は、メインメモリ906のようなダイナミックメモリを含む。記憶媒体の一般的な形態は、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、または他の磁気データ記憶媒体、CD-ROM、他の任意の光データ記憶媒体、穴のパターンを有する任意の物理媒体、RAM、PROM、およびEPROM、FLASH-EPROM、NVRAM、他の任意のメモリチップまたはカートリッジを含む。
【0169】
保存媒体は伝送媒体とは区別されるが、これらは伝送媒体と組み合わせて使用されることがある。伝送媒体は、記憶媒体間の情報転送に関与する。例えば、伝送媒体には、バス902を構成するワイヤを含む、同軸ケーブル、銅線および光ファイバが含まれる。また、伝送媒体は、ラジオ波や赤外線データ通信中に発生するような音波または光波の形成をとることができる。
【0170】
実行のために、1つ以上の命令の1つ以上のシーケンスをプロセッサ904に運ぶことには、様々な形態の媒体が関与していてもよい。例えば、命令は、最初に、遠隔コンピュータの磁気ディスクまたはソリッドステートドライブ上で搬送されてもよい。リモートコンピュータは、ダイナミックメモリに命令をロードし、モデムを使用して電話回線を介して命令を送信することができる。コンピュータシステム900にローカルなモデムは、電話回線上のデータを受信し、赤外線送信器を使用して、データを赤外線信号に変換することができる。赤外線検出器は、赤外線信号で搬送されるデータを受信することができ、適切な回路は、データをバス902上に配置することができる。バス902は、データをメインメモリ906に搬送し、そこからプロセッサ904が命令を検索して実行する。メインメモリ906によって受信される命令は、オプションとして、プロセッサ904による実行の前または後のいずれかで、ストレージデバイス910上に格納されてもよい。
【0171】
コンピュータシステム900はまた、バス902に結合された通信インタフェース918を含む。通信インタフェース918は、ローカルネットワーク922に接続されたネットワークリンク920に、双方向データ通信結合を提供する。例えば、通信インタフェース918は、統合サービスデジタルネットワークカード、ケーブルモデム、衛星モデム、またはモデムで、対応するタイプの電話回線にデータ通信接続を提供することができる。別の例として、通信インタフェース918は、互換性のあるLANへのデータ通信接続を提供するローカルエリアネットワークカードであってもよい。無線リンクを実装することもできる。このような実施形態では、通信インタフェース918は、様々なタイプの情報を表すデジタルデータストリームを搬送する電気信号、電気信号、磁気信号、または光学信号を送受信する。
【0172】
ネットワークリンク920は、典型的には、1つ以上のネットワークを介して他のデータデバイスにデータ通信を提供する。例えば、ネットワークリンク920は、ローカルネットワーク922を介してホストコンピュータ924またはインターネットサービスプロバイダ926によって運用されるデータ機器への接続を提供し得る。次に、ISP926は、現在「インターネット」928と呼ばれている世界的なパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク922およびインターネット928は、両方とも、デジタルデータストリームを搬送する電気信号、電磁信号、または光学信号を使用する。種々のネットワークを介した信号およびネットワークリンク920上の信号、ならびにコンピュータシステム900との間でデジタルデータを伝送する通信インタフェース918を介した信号は、伝送媒体の一例である。
【0173】
コンピュータシステム900は、ネットワーク、ネットワークリンク920及び通信インタフェース918を介して、メッセージを送信し、プログラムコードを含むデータを受信することができる。インターネットの例では、サーバ930は、インターネット928、ISP 926、ローカルネットワーク922および通信インタフェース918を介して、アプリケーションプログラムの要求されたコードを送信することができる。
【0174】
受信されたコードは、それが受信されたときにプロセッサ904によって実行され、および/またはストレージデバイス910、または後の実行のための他の不揮発性ストレージデバイスに記憶され得る。
12. 結論
【0175】
本明細書で「いくつかの実施形態」または「いくつかの実施形態」を参照することは、特定の特徴、構造、または特性が本発明の少なくとも1つの実施形態に関連して記述され、含まれ得ることを意味する。明細書の様々な場所における「いくつかの実施形態における」というフレーズは、必ずしもすべてが同一の実施形態または実施形態を参照しているわけではなく、また、他の実施形態の別個の実施形態または代替の相互に排他的な実施形態であるわけでもない。
【0176】
いくつかの種々の図面は、特定の順序における個数論理的な段階を示すが、順序に依存しない段階は、再配列され得、他の段階は、結合され、または分割され得る。いくつかの再配列又は他のグループ化が特に言及されているが、本明細書に示されている順序及びグループ化は、選択肢の網羅的なリストではない。
【0177】
前述の詳細な説明および添付のクレームにおいて、第1、第2などの用語は、本明細書において、様々な要素を説明するために使用されるいくつかのインスタンスであるが、これらの要素は、これらの用語によって制限されるべきではない。これらの用語は、ある要素と別の要素を区別するためにのみ使用される。例えば、第1のコンピューティングデバイスは第2のコンピューティングデバイスと呼ばれ、同様に第2のコンピューティングデバイスは第1のコンピューティングデバイスと呼ばれる。第1のコンピューティングデバイスと第2のコンピューティングデバイスはともにコンピューティングデバイスであるが、それらは同じコンピューティングデバイスではない。
【0178】
前述の詳細な説明および添付のクレームにおいて使用されるように、単数形「a」、「an」、および「the」は、文脈が明確に別段示さない限り、複数形も含むことが意図されている。前述の詳細な説明および添付のクレームで使用されるように、「および/または」という用語は、関連するリストされた項目の1つ以上の任意のおよびすべての可能な組み合わせを意味し、包含する。
【0179】
添付の請求項の中で前述の詳細な説明において使用されるように、「基づいて」、「応じて」、「含む(include)」、「含んでいる(including)」、「備える(comprise)」、および/または「備えている(comprising)」は、記述された特徴、整数、ステップ、操作、要素、および/またはコンポーネントの存在を明記するが、1つ以上の他の特徴、整数、ステップ、操作、要素、コンポーネントおよび/またはそれらのグループの存在または追加を妨げるものではない。
【0180】
前述の詳細な説明および添付のクレームにおいて使用されるように、用語「であれば」は、文脈に応じて、任意に「するとき」または「する時点で」または「判定したことに応じて」または「検出したことに応じて」または「ことの判定に従って」を意味すると解釈される。同様に、文脈に応じて、「判定された場合」または「[規定された状態または事象]が検出された場合」という語句は、任意的に、「判定された時点で」または「判定に応じて」または「[規定された状態または事象]を検出した時点で」または「[規定された状態または事象]を検出に応じて」または「[規定された状態または事象]が検出されたとの判定に従って」を意味すると解釈される。
【0181】
前述の詳細な説明は、説明のために、特定の実装を参照して説明されてきた。しかし、上述の例示の説明は、網羅的であること、またはクレームの範囲を開示された正確な形式に限定することを意図していない。上記教示を考慮すると、多くの修正およびバリエーションが可能である。実施例は、クレームとその実用的用途の基礎となる原理を最も良く説明するために選択され、それにより、他の当業者が、意図された特定の使用に適するように、様々な修正を加えて実施例を最良に使用することを可能にする。
図1
図2
図3
図4
図5
図6
図7A
図7B
図8
図9
図10