JP2021525910A - ネットワーク化された共同ワークスペースにおけるウェブ・ソケット接続を介したデスクトップ共有のための方法、装置及びコンピュータ可読媒体 - Google Patents

ネットワーク化された共同ワークスペースにおけるウェブ・ソケット接続を介したデスクトップ共有のための方法、装置及びコンピュータ可読媒体 Download PDF

Info

Publication number
JP2021525910A
JP2021525910A JP2020566236A JP2020566236A JP2021525910A JP 2021525910 A JP2021525910 A JP 2021525910A JP 2020566236 A JP2020566236 A JP 2020566236A JP 2020566236 A JP2020566236 A JP 2020566236A JP 2021525910 A JP2021525910 A JP 2021525910A
Authority
JP
Japan
Prior art keywords
local
computing device
desktop
local computing
streaming object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020566236A
Other languages
English (en)
Inventor
マシ、マルコ、バレリオ
フマガッリ、クリスティアーノ
Original Assignee
リ マゴ リミテッド
リ マゴ リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/995,878 external-priority patent/US11412012B2/en
Application filed by リ マゴ リミテッド, リ マゴ リミテッド filed Critical リ マゴ リミテッド
Publication of JP2021525910A publication Critical patent/JP2021525910A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

サーバ上にホストされ、ウェブ・ソケット接続を介して参加者にとってアクセス可能な、共同ワークスペースの表現を送信することと、共同ワークスペース内でローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部を共有するための要求、及び共同ワークスペースの表現内のエリアの選択を受信することと、ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部のビデオ・ストリームを出力するように構成されたストリーミング・オブジェクトを生成することと、ウェブ・ソケット接続を介して、1つ又は複数のコマンドをサーバに送信することであって、1つ又は複数のコマンドが、ストリーミング・オブジェクト、及び選択されたエリアに対応する情報を含み、サーバに、選択されたエリアで共同ワークスペース内にストリーミング・オブジェクトを挿入することを行わせるように構成される、送信することとを含む、ネットワーク化された共同ワークスペースにおけるウェブ・ソケット接続を介したデスクトップ共有のためのシステム、方法、及びコンピュータ可読媒体。

Description

オペレーティング・システム、及びオペレーティング・システム内で実行するアプリケーションは、ユーザがプログラムに入力を与えることと、ユーザに出力を与えることとを可能にするために、外部ハードウェア・デバイスを頻繁に利用する。外部ハードウェア・デバイスの一般的な実例は、キーボード、コンピュータ・マウス、マイクロフォン、及び外部スピーカーを含む。これらの外部ハードウェア・デバイスは、ドライバの使用によってオペレーティング・システムとインターフェースし、ドライバは、特定のハードウェア・デバイスによって使用されるハードウェア・コマンドとオペレーティング・システムとの間をインターフェースするように構成された専用ソフトウェア・プログラムである。
アプリケーションは、いくつかのハードウェア・デバイスとインターフェースするように設計されることがある。たとえば、音声−テキスト・ワード・プロセッシング・アプリケーションが、マイクロフォンを含むオーディオ・ヘッドセットとインターフェースするように設計され得る。この場合、アプリケーションは、特に、音声コマンドを受信し、音声認識を実施し、認識されたワードをテキスト・コンテンツに変換し、テキスト・コンテンツを文書に出力するように構成されなければならない。この機能性は、一般に、様々なソフトウェア構成要素間の通信の定義された方法のセットである、アプリケーションのアプリケーション・プログラミング・インターフェース(API:Application Programming Interface)において実施されることになる。音声認識アプリケーションの実例では、APIは、アプリケーション・プログラムとドライバ上のソフトウェアとの間のインターフェースを含むことができ、これは、ハードウェア・デバイス(マイクロフォン)自体とインターフェースすることを担当する。
専用ハードウェア・デバイスを利用する既存のソフトウェアの1つの問題は、アプリケーション又はオペレーティング・システム・ソフトウェア自体が、ハードウェア・デバイスを利用するために、カスタマイズされ、特別に設計されなければならないことである。このカスタマイゼーションは、ハードウェア・デバイスが、アプリケーションによって、そのために定義された範囲を超えることができず、それが使用されるように設計された特定のアプリケーション以外のコンテキストのために利用され得ないことを意味する。たとえば、音声テキスト・ワード・プロセッシング・アプリケーションのユーザは、オペレーティング・システム内の他のアプリケーション・プログラム又は他の構成要素を、それらの他のアプリケーション・プログラム又はオペレーティング・システムが、マイクロフォンを介して受信される音声コマンドを利用するように特別に設計されない限り、音声コマンドを使用して操作することができない。
図1は、ユーザ入力のために、結合されたハードウェア・デバイスを利用するシステムの既存のアーキテクチャの一実例を示す。図1のオペレーティング・システム100Aは、実行アプリケーション101A及び102Aを含み、それらの各々は、それぞれ、それら自体のAPI101B及び102Bを有する。オペレーティング・システム100Aはまた、それ自体のAPI100B、並びにハードウェア・デバイス100D、101D、及び102Dとインターフェースするように構成された専用ドライバ100C、101C、及び102Cを有する。
図1に示されているように、アプリケーションAPI101Bは、ドライバ101Cとインターフェースするように構成され、ドライバ101C自体は、ハードウェア・デバイス101Dとインターフェースする。同様に、アプリケーションAPI102Bは、ドライバ102Cとインターフェースするように構成され、ドライバ102C自体は、ハードウェア・デバイス102Dとインターフェースする。オペレーティング・システム・レベルにおいて、オペレーティング・システムAPI100Bは、ドライバ100Cとインターフェースするように構成され、ドライバ100C自体は、ハードウェア・デバイス100Dとインターフェースする。
図1に示されているシステムのアーキテクチャは、いくつかのアプリケーション又はオペレーティング・システム・コンテキスト外でハードウェア・デバイスを利用するユーザの能力を限定する。たとえば、ユーザは、アプリケーション102Aに入力を与えるためにハードウェア・デバイス101Dを利用することができず、アプリケーション101Aに又はオペレーティング・システム100Aに入力を与えるためにハードウェア・デバイス102Dを利用することができない。
したがって、複数のソフトウェア・コンテキストにおけるハードウェア・デバイスの利用を可能にする、ハードウェア・ソフトウェア・インターフェースの改善が必要とされる。
ユーザ入力のために、結合されたハードウェア・デバイスを利用するシステムの既存のアーキテクチャの一実例を示す図である。 例示的な実施例による、ユニバーサル・ハードウェア・ソフトウェア・インターフェースを利用するシステムのアーキテクチャを示す図である。 例示的な実施例による、ユニバーサル・ハードウェア・ソフトウェア・インターフェースの実装のためのフローチャートである。 例示的な実施例による、システムに通信可能に結合された1つ又は複数のハードウェア・デバイスによってキャプチャされた情報が1つ又は複数の画像を含むときの、1つ又は複数のハードウェア・デバイスによってキャプチャされた情報に少なくとも部分的に基づいてユーザ入力を決定するためのフローチャートである。 例示的な実施例による、オブジェクト認識の一実例を示す図である。 例示的な実施例による、入力ロケーション座標を決定することの一実例を示す図である。 例示的な実施例による、システムに通信可能に結合された1つ又は複数のハードウェア・デバイスによってキャプチャされた情報が音情報であるときの、キャプチャされた情報に少なくとも部分的に基づいてユーザ入力を決定するためのフローチャートである。 例示的な実施例による、透明層の一部であり得るツール・インターフェースを示す図である。 例示的な実施例による、システムの一部であり得るスタイラスの一実例を示す図である。 例示的な実施例による、ユーザ入力に対応するコンテキストを識別するためのフローチャートである。 例示的な実施例による、コンテキストを決定するために入力座標を使用することの一実例を示す図である。 例示的な実施例による、ユーザ入力を透明層コマンドに変換するためのフローチャートである。 例示的な実施例による、選択モードがトグルされるときの、入力座標を受信することの一実例を示す図である。 例示的な実施例による、ポインティング・モードがトグルされるときの、入力座標を受信することの一実例を示す図である。 例示的な実施例による、描画モード(drawing mode)がトグルされるときの、入力座標を受信することの一実例を示す図である。 例示的な実施例による、入力音声データ中で識別された1つ又は複数のワードに基づいて決定される透明層コマンドの一実例を示す図である。 例示的な実施例による、入力音声データ中で識別された1つ又は複数のワードに基づいて決定される透明層コマンドの別の実例を示す図である。 例示的な実施例による、透明層上で1つ又は複数の透明層コマンドを実行するためのフローチャートである。 例示的な実施例による、ユーザ入力に対応する新しいコマンドを追加するための例示的なインターフェースを示す図である。 例示的な実施例による、描画インターフェース及び描画モード(draw mode)の様々な構成要素及びオプションを示す図である。 例示的な実施例による、オブジェクトを認識するために使用され、ユーザがタッチ及びジェスチャーを使用して入力を与えることを可能にする、ビデオ・カメラ・ハードウェア・デバイスのための較正及び設定インターフェースを示す図である。 例示的な実施例による、ユーザが、インターフェースの様々な態様をカスタマイズし、入力モードをトグルし、他の交換を行うことを可能にする、一般的な設定インターフェースを示す図である。 例示的な実施例による、ネットワーク化された共同(collaboration)ワークスペースにおけるウェブ・ソケット接続を介したデスクトップ共有のためのフローチャートである。 例示的な実施例による、共同ワークスペースをホストし、送信するために使用されるネットワーク・アーキテクチャを示す図である。 例示的な実施例による、ネットワーク内で共同ワークスペースに対する編集を伝えるためのプロセスを示す図である。 例示的な実施例による、共同ワークスペースの複数の表現を示す図である。 例示的な実施例による、要求、及びエリアの選択を受信する前の、ローカル・コンピューティング・デバイスのユーザ・インターフェース(デスクトップ)の一実例を示す図である。 例示的な実施例による、要求を受信した後、且つエリアの選択の前の、ローカル・コンピューティング・デバイスのユーザ・インターフェース(デスクトップ)の一実例を示す図である。 例示的な実施例によるソース選択プロセスの一実例を示す図である。 例示的な実施例によるソース選択プロセスの一実例を示す図である。 例示的な実施例によるソース選択プロセスの一実例を示す図である。 例示的な実施例による、ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部のビデオ・ストリームを出力するように構成されたストリーミング・オブジェクトを生成するためのフローチャートである。 例示的な実施例による、ローカル・コンピューティング・デバイスからコマンドを送り、ストリーミング・オブジェクトを伝えるプロセスを示す図である。 例示的な実施例による、サーバが共同ワークスペース内にストリーミング・オブジェクトを埋め込んだ後の、ローカル・コンピューティング・デバイスのインターフェースの一実例を示す図である。 例示的な実施例による、ローカル・コンピューティング・デバイスからの埋込みストリーミング・オブジェクトを介してデスクトップ又はデスクトップの一部を制御するためのフローチャートである。 例示的な実施例による、ローカル・コンピューティング・デバイスからの埋込みストリーミング・オブジェクトを介してデスクトップ又はデスクトップの一部を制御することの一実例を示す図である。 例示的な実施例による、ローカル・コンピューティング・デバイスからの埋込みストリーミング・オブジェクトを介してデスクトップ又はデスクトップの一部を制御することの一実例を示す図である。 例示的な実施例による、ローカル・コンピューティング・デバイスからの埋込みストリーミング・オブジェクトを介してデスクトップ又はデスクトップの一部を制御することの一実例を示す図である。 例示的な実施例による、リモート・コンピューティング・デバイスからの埋込みストリーミング・オブジェクトを介してデスクトップ又はデスクトップの一部を制御するためのフローチャートである。 例示的な実施例による、リモート・コンピューティング・デバイスからの埋込みストリーミング・オブジェクトを介してデスクトップ又はデスクトップの一部を制御することの一実例を示す図である。 例示的な実施例による、リモート・コンピューティング・デバイスからの埋込みストリーミング・オブジェクトを介してデスクトップ又はデスクトップの一部を制御することの一実例を示す図である。 例示的な実施例による、リモート・コンピューティング・デバイスからの埋込みストリーミング・オブジェクトを介してデスクトップ又はデスクトップの一部を制御することの一実例を示す図である。 開示される方法を行うように構成された例示的なコンピューティング環境を示す図である。
方法、装置、及びコンピュータ可読媒体は、実例及び実施例として本明細書で説明されるが、当業者は、ユニバーサル・ハードウェア・ソフトウェア・インターフェースの実装のための方法、装置、及びコンピュータ可読媒体が、説明される実施例又は図面に限定されないことを認識する。図面及び説明は、開示される特定の形式に限定されるものではないことを理解されたい。むしろ、意図は、添付の特許請求の範囲の趣旨及び範囲内に入るすべての修正、等価物及び代替をカバーすることである。本明細書で使用されるいかなる見出しも編成のためのものであるにすぎず、本明細書の範囲又は特許請求の範囲を限定するものではない。本明細書で使用される「することができる(can)」という単語は、強制的な意味(すなわち、しなければならない(must)という意味)ではなく許容的な意味(すなわち、可能性を有するという意味)において使用される。同様に、「含む(include)」、「含む(including)」、及び「含む(includes)」という単語は、含むことを意味するが、それに限定されない。
出願人は、ハードウェア・デバイスのために使用される、以前のハードウェア・ソフトウェア・インターフェースに関連する問題を解決する方法、装置、及びコンピュータ可読媒体を発見した。特に、出願人は、ユーザが、様々なソフトウェア・コンテキストにおいて通信可能に結合されたハードウェア・デバイスを利用することを可能にするユニバーサル・ハードウェア・ソフトウェア・インターフェースを開発した。開示される実装形態は、以下でより詳細に説明されるように、専用仮想ドライバ及び対応する透明層の使用によって、アプリケーション又はオペレーティング・システムが特定のハードウェア・デバイスとインターフェースするように特注設計される必要を取り除く。
図2は、例示的な実施例による、ユニバーサル・ハードウェア・ソフトウェア・インターフェースを利用するシステムのアーキテクチャを示す。図2に示されているように、オペレーティング・システム200Aは、仮想ドライバ204と通信する透明層203を含む。以下でより詳細に説明されるように、透明層203は、仮想ドライバとオペレーティング・システム及び/又はオペレーティング・システム上で実行する(1つ又は複数の)アプリケーションとの間をインターフェースするように構成されたAPIである。この例では、透明層203は、仮想ドライバ204と、アプリケーション201AのAPI201B、アプリケーション202AのAPI202B、及びオペレーティング・システム200Aのオペレーティング・システムAPI200Bとの間をインターフェースする。
透明層203は、オペレーティング・システム上で動作するソフトウェア・プロセスの一部であり得、下位(underlying)ユーザ・インターフェースの上に重ね合わせられた透明ユーザ・インターフェース(UI:user interface)及び/又はユーザが対話することが可能である可視UI要素を含む、透明層203自体のUI要素を有することができる。
仮想ドライバ204は、ドライバ205A及び205Bをエミュレートするように構成され、ドライバ205A及び205Bは、それぞれ、ハードウェア・デバイス206A及び206Bとインターフェースする。仮想ドライバは、どの仮想ドライバをエミュレートすべきかについて仮想ドライバに命令する、たとえば、音声コマンド、ユーザ・インターフェース上で行われる選択、及び/又は結合されたウェブ・カメラの前でユーザによって行われるジェスチャーの形式の、ユーザ入力を受信することができる。たとえば、接続されたハードウェア・デバイスの各々は、「リスニング」モードにおいて動作することができ、仮想ドライバ204におけるエミュレートされるドライバの各々は、特定のエミュレーション・モードに切り替えるための仮想ドライバに対する信号として働く初期化信号を検出するように構成され得る。たとえば、ユーザが「音声コマンド開始」と述べることは、新しい音声コマンドを受信するためのマイクロフォンに対応するドライバをアクティブにすることができる。同様に、ユーザがあるジェスチャーを与えることは、ジェスチャー入力又はタッチ入力を受信するためのウェブ・カメラに対応するドライバをアクティブにすることができる。
仮想ドライバは、ネイティブ・ドライバ205Cなど、ネイティブ・ドライバとインターフェースするようにも構成され得、ネイティブ・ドライバ205C自体は、ハードウェア・デバイス206Cと通信する。一実例では、ハードウェア・デバイス206Cは、キーボード又はマウスなど、標準入力デバイスであり得、標準入力デバイスは、オペレーティング・システムによってネイティブにサポートされる。
図2に示されているシステムは、ユーザが、特定のアプリケーション又はオペレーティング・システムなどの様々なコンテキストにおいて任意の結合されたハードウェア・デバイスを、そのアプリケーション又はオペレーティング・システムがハードウェア・デバイスとインターフェースするようにカスタマイズされることを必要とすることなしに、利用することができるユニバーサル・ハードウェア・ソフトウェア・インターフェースの実装を可能にする。
たとえば、ハードウェア・デバイス206Aは、情報をキャプチャすることができ、その情報は、次いで、ドライバ205Aをエミュレートする仮想ドライバ204によって受信される。仮想ドライバ204は、キャプチャされた情報に基づいて、ユーザ入力を決定することができる。たとえば、その情報が、ユーザがユーザの手を動かす一連の画像である場合、仮想ドライバは、ユーザがジェスチャーを実施したと決定することができる。
(特定のアプリケーション又はオペレーティング・システムなどの)識別されたコンテキストに基づいて、ユーザ入力は、実行のために透明層コマンドに変換され、透明層203に送信され得る。透明層コマンドは、識別されたコンテキストにおけるネイティブ・コマンドを含むことができる。たとえば、識別されたコンテキストがアプリケーション201Aである場合、ネイティブ・コマンドは、アプリケーション201AのアプリケーションAPI201Bに適合するフォーマットのものであろう。次いで、透明層コマンドの実行が、識別されたコンテキストにおける1つ又は複数のネイティブ・コマンドの実行を引き起こすように構成され得る。これは、透明層203が、オペレーティング・システム200A並びにオペレーティング・システムAPI200B上で実行するアプリケーションのAPIの各々とインターフェースすることによって、達成される。たとえば、ネイティブ・コマンドが、新しいプログラムを起動するためのコマンドなど、オペレーティング・システム・コマンドである場合、透明層203は、実行のためにオペレーティング・システムAPI200Bにそのネイティブ・コマンドを与えることができる。
図2に示されているように、示されている構成要素のすべての間で双方向通信がある。これは、たとえば、透明層203における透明層コマンドの実行が、仮想ドライバ204への情報の送信及び接続されたハードウェア・デバイスのうちの1つ上への情報の送信を生じることがあることを意味する。たとえば、音声コマンドが入力として認識され、ネイティブ・コマンドを含む透明層コマンドに変換され、透明層によって実行された(識別されたコンテキストにおけるネイティブ・コマンドの実行を生じた)後に、音出力「コマンドが受信されました」を送信するために、信号が(仮想ドライバを介して)透明層からスピーカーに送られ得る。
もちろん、図2に示されているアーキテクチャは、説明のためのものにすぎず、実行するアプリケーションの数、接続されたハードウェア・デバイスの数及びタイプ、ドライバ及びエミュレートされたドライバの数は変動することがあることを理解されたい。
図3は、例示的な実施例による、ユニバーサル・ハードウェア・ソフトウェア・インターフェースの実装のためのフローチャートである。
ステップ301において、システムに通信可能に結合された1つ又は複数のハードウェア・デバイスによってキャプチャされた情報に少なくとも部分的に基づいて、ユーザ入力が決定される。本明細書で使用されるシステムは、方法のステップを実行する1つ又は複数のコンピューティング・デバイス、方法のステップを実行する1つ又は複数のプロセッサと1つ又は複数のメモリとを備える装置、又は任意の他のコンピューティング・システムを指すことがある。
ユーザ入力は、システム上で実行する仮想ドライバによって決定され得る。前に説明されたように、仮想ドライバは、エミュレーション・モードにおいて動作していることがあり、エミュレーション・モードにおいて、仮想ドライバは、他のハードウェア・ドライバをエミュレートしており、それにより、ハードウェア・デバイスから、キャプチャされた情報を受信するか、又は随意に、特定のハードウェア・デバイスとインターフェースするように構成された1つ又は複数の他のハードウェア・ドライバから、キャプチャされた情報を受信することができる。
カメラ、ビデオ・カメラ、マイクロフォン、双方向通信を有するヘッドセット、マウス、タッチパッド、トラックパッド、コントローラ、ゲーム・パッド、ジョイスティック、タッチ・スクリーン、加速度計及び/又はチルト・センサーを含む動きキャプチャ・デバイス、遠隔制御装置、スタイラス、或いはこれらのデバイスの任意の組合せなど、様々なハードウェア・デバイスが利用され得る。もちろん、ハードウェア・デバイスのこのリストは、単に実例として与えられ、音声、画像、ビデオ、又はタッチ情報を検出するために利用され得る任意のハードウェア・デバイスが利用され得る。
ハードウェア・デバイスとシステムとの間の通信結合は、様々な形式をとることができる。たとえば、ハードウェア・デバイスは、ワイヤレス・ネットワーク、Bluetoothプロトコル、無線周波数、赤外線信号を介して、及び/又はユニバーサルシリアルバス(USB:Universal Serial Bus)接続などの物理接続によってシステムと通信することができる。通信は、ワイヤレス通信とワイヤード通信の両方をも含むことができる。たとえば、ハードウェア・デバイスは、2つの構成要素を含むことができ、そのうちの1つが、第2の構成要素に(Bluetoothを介してなど)ワイヤレスに信号を送信し、第2の構成要素自体は、(USBなどの)ワイヤード接続を介してシステムに接続する。様々な通信技法が本明細書で説明されるシステムに従って利用され得、これらの実例は、限定するものではない。
1つ又は複数のハードウェア・デバイスによってキャプチャされる情報は、1つ又は複数の画像を含む画像情報、ビデオのフレーム、音情報、及び/又はタッチ情報など、任意のタイプの情報であり得る。キャプチャされた情報は、音情報のための.wav又は.mp3ファイル、画像のための.jpegファイル、タッチ情報のための数値座標など、任意の好適なフォーマットのものであり得る。
本明細書で説明される技法は、任意のディスプレイ・デバイスが、そのディスプレイ・デバイスが、タッチ信号又はタッチ・ベースのジェスチャーを検出するためのハードウェアを含まない場合でも、任意のコンテキストにおいて「タッチ」スクリーンデバイスとして事実上機能することを可能にすることができる。これは、以下でより詳細に説明され、カメラ又はビデオ・カメラによってキャプチャされた画像の分析を通して達成され得る。
図4は、システムに通信可能に結合された1つ又は複数のハードウェア・デバイスによってキャプチャされた情報が1つ又は複数の画像を含むときの、1つ又は複数のハードウェア・デバイスによってキャプチャされた情報に少なくとも部分的に基づいてユーザ入力を決定するためのフローチャートを示す。
ステップ401において、1つ又は複数の画像が受信される。これらの画像は、前に説明されたように、カメラ又はビデオ・カメラなど、ハードウェア・デバイスによってキャプチャされ得、仮想ドライバによって受信され得る。
ステップ402において、1つ又は複数の画像中のオブジェクトが認識される。オブジェクトは、たとえば、ユーザの手、指、又は他の身体部位であり得る。オブジェクトはまた、スタイラス又はペンなどの専用デバイス、或いはシステムに通信可能に結合され、加速度計及び/又はチルト・センサーを含んでいる動き追跡スタイラス/遠隔制御装置などの専用ハードウェア・デバイスであり得る。オブジェクト認識は、仮想ドライバによって実施され得、オブジェクトを使用して動作される較正ルーチンを通してなど、以前のトレーニングに基づき得る。
図5Aは、例示的な実施例による、オブジェクト認識の一実例を示す。図5Aに示されているように、画像501は、オブジェクト502として認識されたユーザの手を含む。認識アルゴリズムは、もちろん、指など、異なるオブジェクトを認識するように構成され得る。
図4に戻ると、ステップ403において、認識されたオブジェクトの1つ又は複数の配向と1つ又は複数の位置とが決定される。これは、様々なやリ方で達成され得る。オブジェクトがハードウェア・デバイスではなく、代わりに、手又は指など、身体部位である場合、オブジェクトは、オブジェクトの3次元座標と、X軸、Y軸、及びZ軸に対する様々な角度とを決定するために、カメラの既知のロケーションを基準点として使用する3次元座標系においてマッピングされ得る。オブジェクトがハードウェア・デバイスであり、加速度計及び/又はチルト・センサーなど、動き追跡ハードウェアを含む場合、画像情報は、オブジェクトの位置及び配向を決定するための加速度計及び/又はチルト・センサーによって示された情報とともに使用され得る。
ステップ404において、ユーザ入力は、認識されたオブジェクトの1つ又は複数の配向と1つ又は複数の位置とに少なくとも部分的に基づいて決定される。これは、1つ又は複数の配向と1つ又は複数の位置とに少なくとも部分的に基づいて、透明層の透明ユーザ・インターフェース(UI)上のロケーション座標を決定することを含むことができる。透明UIは、透明層の一部であり、オペレーティング・システム及び/又はオペレーティング・システム上で実行する任意のアプリケーションに対応する下位UIの上に重ね合わせられる。
図5Bは、オブジェクトがユーザの指であるときの、このステップの一実例を示す。図5Bに示されているように、ディスプレイ・デバイス503は、下位UI506と、下位UI506上に重ね合わせられた透明UI507とを含む。明快のために、透明UI507は、ドット・シェーディングで示されているが、実際には、透明UIは、ユーザにとって可視でない透明層であることを理解されたい。さらに、透明UI507は、下位UI506よりもわずかに小さいものとして示されているが、実際には、透明UIは、下位UIと同じスクリーン・エリアをカバーすることになることを理解されたい。
図5Bに示されているように、オブジェクト(ユーザの指)の位置及び配向情報は、ディスプレイ・デバイス503の平面上にラインを投影し、交差点505を決定するために使用される。カメラ504によってキャプチャされた画像情報及びカメラの下のディスプレイ・デバイス503の既知の位置が、この投影を助けるために使用され得る。図5Bに示されているように、ユーザ入力は、交差点505における入力座標であると決定される。
以下でさらに説明されるように、この入力に基づいて生成される実際の透明層コマンドは、ユーザ設定及び/又は識別されたコンテキストに基づき得る。たとえば、コマンドは、点505の座標におけるオブジェクトが選択され、及び/又は開かれるべきであることを示すタッチ・コマンドであり得る。コマンドは、(マウス・ポインタなどの)ポインタが点505の座標に移動されるべきであることを示すポインティング・コマンドでもあり得る。さらに、コマンドは、(インターフェースにアノテーションを付けるか又は要素を描画するためになど)ロケーションにおけるグラフィカル出力を修正する編集コマンドであり得る。
図5Bは、ディスプレイ・デバイス503からある距離にあるものとして、認識されたオブジェクト502を示しているが、距離にかかわらずタッチ入力が検出され得る。たとえば、ユーザがディスプレイ・デバイス503に物理的にタッチする場合、上記で説明された技法は、依然として入力座標を決定することになる。その場合、オブジェクト502と交差点との間の投影ラインは、より短くなるにすぎないであろう。
もちろん、タッチ入力は、キャプチャされた画像から決定され得るユーザ入力の唯一のタイプではない。認識されたオブジェクトの1つ又は複数の配向と1つ又は複数の位置とに少なくとも部分的に基づいてユーザ入力を決定するステップは、ジェスチャー入力を決定することを含むことができる。特に、複数の画像にわたる認識されたオブジェクトの位置及び配向が、スワイプ・ジェスチャー、ピンチ・ジェスチャー、及び/或いは任意の既知の又はカスタマイズされたジェスチャーなど、対応するジェスチャーを決定するために分析され得る。ユーザは、特定のコンテキスト及びそれらのコンテキスト内のコマンドにマッピングされるカスタム・ジェスチャーを認識するように仮想ドライバを較正することができる。たとえば、ユーザは、オペレーティング・システム・コンテキストにマッピングされ、特定のアプリケーションを起動するネイティブ・オペレーティング・システム・コマンドの実行を生じる、カスタム・ジェスチャーを作成することができる。
前に説明されたように、図3のステップ301において1つ又は複数のハードウェア・デバイスによってキャプチャされた情報は、マイクロフォンによってキャプチャされた音情報をも含むことができる。図6は、システムに通信可能に結合された1つ又は複数のハードウェア・デバイスによってキャプチャされた情報が音情報であるときの、キャプチャされた情報に少なくとも部分的に基づいてユーザ入力を決定するためのフローチャートを示す。以下で説明されるように、ユーザ入力に対応する1つ又は複数のワードを識別するために、音情報に対して音声認識が実施される。
ステップ601において、音データが受信される。音データは、上記で説明されたように、マイクロフォンなど、ハードウェア・デバイスによってキャプチャされ、仮想ドライバによって受信され得る。ステップ602において、受信された音データは、音辞書と比較され得る。音辞書は、コマンド・ワード又はコマンド・モディファイアなど、1つ又は複数の認識されたワードの音シグネチャを含むことができる。ステップ603において、音データ中の1つ又は複数のワードが、比較に基づいて、ユーザ入力として識別される。次いで、識別された1つ又は複数のワードは、透明層コマンドに変換され、透明層に渡され得る。
前に説明されたように、仮想ドライバによってエミュレートされるドライバ、ユーザ入力の予想されるタイプ、及びユーザ入力に基づいて生成されるコマンドは、すべて、1つ又は複数の設定又は前のユーザ入力に少なくとも部分的に基づいて決定され得る。
図7は、透明層の一部でもあり得るツール・インターフェース701を示す。透明UIとは異なり、ツール・インターフェース701は、ユーザにとって可視であり、仮想ドライバのエミュレーション・モード、ユーザ入力に基づいて生成されるネイティブ・コマンドを変更する異なるオプション間で選択するか、又は追加の機能を実施するために、使用され得る。
ボタン701Aは、ユーザ入力が入力座標(ユーザがユーザの手又はスタイラス/遠隔制御装置を用いてスクリーンにタッチすることに基づく座標など)であるとき、ユーザが、ユーザ・インターフェースをグラフィカルに修正するために使用される描画ツールのタイプを選択することを可能にする。様々な描画ツールは、異なるブラシ、色、ペン、ハイライターなどを含むことができる。これらのツールは、変動するスタイル、厚さ、色などのグラフィカルな変更を生じることがある。
ボタン701Bは、入力座標がユーザ入力として受信されるとき、ユーザが、選択モード、ポインティング・モード、又は描画モードの間で切り替えることを可能にする。選択モードでは、入力座標は、「タッチ」として処理され、入力座標におけるオブジェクトの選択又はオブジェクトを開くことを生じ得る。ポインティング・モードでは、座標は、(マウス・ポインタなどの)ポインタ位置として処理され得、ユーザがマウスをエミュレートすることを効果的に可能にする。描画モードでは、座標は、ユーザ・インターフェース上に描画又は書込みの外観(appearance)を提示するために、ユーザ・インターフェースのグラフィカル出力を変更するためのロケーションとして処理され得る。変更の性質は、ボタン701Aに関して説明されるように、選択された描画ツールに依存することがある。ボタン701Bはまた、(動き追跡デバイスが使用される場合)画像入力及び/又は動き入力を予想し、それに応じて適切なドライバをエミュレートするように仮想ドライバにアラートすることができる。
ボタン701Cは、音声コマンドを予想するように仮想ドライバにアラートする。これは、図6に関して説明されるように、仮想ドライバが、音声入力を受信し、音声入力をパースするための結合されたマイクロフォンに対応するドライバをエミュレートすることを引き起こすことができる。
ボタン701Dは、透明層の一部であり得、オペレーティング・システム内のアプリケーションを起動するために又はアプリケーション内の特定のコマンドを起動するために使用され得る、ランチャー・アプリケーションを開く。ランチャーは、ユーザ入力に関連付けられたアプリケーションのためのカスタム音声コマンド、カスタム・ジェスチャー、カスタム・ネイティブ・コマンドなど、透明層におけるオプションをカスタマイズするために、及び/又は(音声較正、動きキャプチャ・デバイス較正、及び/又はオブジェクト認識較正など)ハードウェア・デバイス及びユーザ入力を較正するためにも使用され得る。
ボタン701Eは、ユーザ・インターフェースのスクリーンショットをキャプチャするために、及び画像としてスクリーンショットをエクスポートするために使用され得る。これは、ボタン701Bの描画モード及び701Aの描画ツールとともに使用され得る。ユーザが特定のユーザ・インターフェースをマーク・アップした後に、マーク・アップされたバージョンが画像としてエクスポートされ得る。
また、ボタン701Fは、グラフィカルな編集を可能にし、ユーザがユーザ・インターフェース上に作成している描画の色又は描画の態様を交換するために使用され得る。ボタン701Bの描画モードと同様に、このボタンは、入力座標におけるグラフィカルな変更の性質を変更する。
ボタン701Gは、ユーザ・インターフェース上の描画を消去する。このボタンの選択は、ユーザ・インターフェース上のすべてのグラフィカル・マーキングを除去し、下位UIを、ユーザが描画を作成するより前にそうであった状態にリセットすることができる。
ボタン701Hは、ユーザが仮想ホワイトボード上に描画モードを使用して描画又は書込みを作成することを可能にする、ホワイトボード・アプリケーションを起動するために使用され得る。
ボタン701Iは、オペレーティング・システムUI又はアプリケーションUIにおいて示されるオブジェクトなど、オブジェクトにテキスト・ノートを追加するために使用され得る。テキスト・ノートは、音声信号から解釈されるか、又はキーボードを使用してユーザによってタイピングされ得る。
ボタン701Jは、ツール・インターフェース701を開くか又は閉じるために使用され得る。閉じられたとき、ツール・インターフェースは、最小化されるか又は下位ユーザ・インターフェースから完全に除去され得る。
前に説明されたように、スタイラス又はリモート・ハードウェア・デバイスが、カメラ又はビデオ・カメラなど、他のハードウェア・デバイスとともに、本システムとともに使用され得る。図8は、本システムとともに使用され得るスタイラス801の一実例を示す。スタイラス801は、Bluetoothなどを介して、ハードウェア受信機802と通信することができる。ハードウェア受信機は、USB802Bなどを介して、コンピュータ・システムに接続することができ、ハードウェア受信機を介してコンピュータ・システムに渡されたスタイラスからの信号は、図7に示されているツール・インターフェースと同様であるメニュー803を制御し、それと対話するために使用され得る。
図8に示されているように、スタイラス801は、物理ボタン801Aを含むことができる。これらの物理ボタン801は、スタイラスを電源投入し、メニュー803をナビゲートし、選択を行うために使用され得る。さらに、スタイラス801は、カメラによる画像においてキャプチャされ、仮想ドライバによって認識される、特徴的な先端801Bを含むことができる。これは、スタイラス801が、描画モードにあるとき、描画及び編集のために使用されることを可能にすることができる。スタイラス801は、スタイラスが入力座標又はジェスチャーを与えるために使用されるとき、位置検出を助けるための加速度計及び/又はチルト・センサーなど、動き追跡ハードウェアをも含むことができる。さらに、ハードウェア受信機802は、較正ボタン802Aを含むことができ、較正ボタン802Aは、押下されたとき、ユーザ・インターフェースにおいて較正ユーティリティを起動することができる。これは、スタイラスの較正を可能にする。
図3に戻ると、ステップ302において、ユーザ入力に対応するコンテキストが識別される。識別されたコンテキストは、オペレーティング・システム又はオペレーティング・システム上で実行するアプリケーションのうちの1つを備える。
図9は、例示的な実施例による、ユーザ入力に対応するコンテキストを識別するためのフローチャートを示す。図9に示されているように、オペレーティング・システム・データ901、アプリケーション・データ902、及びユーザ入力データ903が、すべて、コンテキスト904を決定するために使用され得る。
オペレーティング・システム・データ901は、たとえば、オペレーティング・システムにおけるアクティブ・ウィンドウに関する情報を含むことができる。たとえば、アクティブ・ウィンドウが計算器ウィンドウである場合、コンテキストが計算器アプリケーションであると決定され得る。同様に、アクティブ・ウィンドウがMicrosoft Wordウィンドウである場合、コンテキストがMicrosoft Wordアプリケーションであると決定され得る。一方、アクティブ・ウィンドウがファイル・フォルダである場合、アクティブ・コンテキストがオペレーティング・システムであると決定され得る。オペレーティング・システム・データは、どのアプリケーションが現在実行中であるか、最後に起動されたアプリケーション、及びコンテキストを決定するために使用され得る任意の他のオペレーティング・システム情報など、追加情報をも含むことができる。
アプリケーション・データ902は、たとえば、実行している1つ又は複数のアプリケーションに関する情報及び/又は特定のアプリケーションをいくつかのタイプのユーザ入力にマッピングする情報を含むことができる。たとえば、音声コマンドが受信されるときはいつでも、コンテキストが第1のアプリケーションであると自動的に決定されるように、第1のアプリケーションが音声入力にマッピングされ得る。別の例では、特定のジェスチャーが入力として受信されたとき、第2のアプリケーションが、起動されるか又は閉じられるか、或いは第2のアプリケーション内のあるアクションが実施されるように、そのジェスチャーが第2のアプリケーションに関連付けられ得る。
ユーザ入力903は、様々なやり方でコンテキストを決定するためにも使用され得る。上記で説明されたように、いくつかのタイプのユーザ入力が、いくつかのアプリケーションにマッピングされ得る。上記の実例では、音声入力が第1のアプリケーションのコンテキストに関連付けられる。さらに、ユーザ入力の属性も、コンテキストを決定するために使用され得る。ジェスチャー又は動きが、アプリケーションに又はオペレーティング・システムにマッピングされ得る。音声コマンド中の特定のワードも、アプリケーションに又はオペレーティング・システムにマッピングされ得る。入力座標も、コンテキストを決定するために使用され得る。たとえば、入力座標の位置にあるユーザ・インターフェースにおけるウィンドウが決定され得、そのウィンドウに対応するアプリケーションがコンテキストとして決定され得る。
図10は、コンテキストを決定するために入力座標を使用することの一実例を示す。図10に示されているように、ディスプレイ・デバイス1001がユーザ・インターフェース1002を表示している。また、カメラ1004と、下位ユーザ・インターフェース1003上に重ね合わされた透明層1003とが示されている。ユーザは、ユーザ・インターフェース1002におけるロケーション1005を指すためにスタイラス1000を利用する。ロケーション1005は、アプリケーション1に対応するアプリケーション・ウィンドウ内にあるので、次いで、アプリケーション1は、アプリケーション2、アプリケーション3、又はオペレーティング・システムとは対照的に、ユーザ入力のためのコンテキストであると決定され得る。
図3に戻ると、ステップ303において、ユーザ入力は、識別されたコンテキストに少なくとも部分的に基づいて、1つ又は複数の透明層コマンドに変換される。前に説明されたように、透明層は、仮想ドライバとオペレーティング・システム及び/又はオペレーティング・システム上で実行するアプリケーションとの間をインターフェースするように構成されたアプリケーション・プログラミング・インターフェース(API)を備える。
図11は、ユーザ入力を透明層コマンドに変換するためのフローチャートを示す。図11のステップ1104に示されているように、透明層コマンドは、識別されたコンテキスト1102及びユーザ入力1103に少なくとも部分的に基づいて決定され得る。透明層コマンドは、1つ又は複数の対応するコンテキストにおいて実行するように構成された1つ又は複数のネイティブ・コマンドを含むことができる。透明層コマンドは、仮想ドライバに及び(1つ又は複数の)ハードウェア・デバイス上に送信されるべき応答出力をも含むことができる。
識別されたコンテキスト1102は、どの透明層コマンドがユーザ入力にマッピングされるべきであるかを決定するために使用され得る。たとえば、識別されたコンテキストが「オペレーティング・システム」である場合、スワイプ・ジェスチャー入力が、ユーザ・インターフェースが(ある開いているウィンドウを最小化し、次の開いているウィンドウを最大化することによって)オペレーティング・システム内の現在開いているウィンドウをスクロールすることを生じる透明層コマンドにマッピングされ得る。代替的に、識別されたコンテキストが「ウェブ・ブラウザ・アプリケーション」である場合、同じスワイプ・ジェスチャー入力が、ウェブ・ページがスクロールされることを生じる透明層コマンドにマッピングされ得る。
ユーザ入力1103は、ユーザ入力が1つ又は複数のコンテキスト内のいくつかのネイティブ・コマンドに明確にマッピングされ、これらのネイティブ・コマンドが透明層コマンドの一部であるので、透明層コマンドをも決定する。たとえば、音声コマンド「電子メールを開いて」が、電子メール・アプリケーションOutlookを起動するための特定のオペレーティング・システム・ネイティブ・コマンドにマッピングされ得る。認識されたワード「電子メールを開いて」を含む音声入力が受信されたとき、これは、Outlookを起動するためのネイティブ・コマンドを含む透明層コマンドが決定されることを生じる。
図11に示されているように、透明層コマンドはまた、1つ又は複数のユーザ設定1101及びAPIライブラリ1104に基づいて決定され得る。APIライブラリ1104は、識別されたコンテキスト及び特定のユーザ入力に対応するネイティブ・コマンドをルックアップするために使用され得る。スワイプ・ジェスチャー及びウェブ・ブラウザ・アプリケーション・コンテキストの実例では、ウェブ・ブラウザ・アプリケーションに対応するAPIライブラリは、ウェブ・ページのスクロールを引き起こすために、適切なAPI呼出しについて問い合わせられ得る。代替的に、APIライブラリ1104は、省略され得、ネイティブ・コマンドが、特定のユーザ入力及び識別されたコンテキストに向けてマッピングされ得る。
ユーザ入力が入力座標であると決定される状況では、透明層コマンドは、入力ロケーション座標及び識別されたコンテキストに少なくとも部分的に基づいて決定される。この場合、透明層コマンドは、識別されたコンテキストにおける少なくとも1つのネイティブ・コマンドを含むことができ、少なくとも1つのネイティブ・コマンドは、下位UIにおける対応するロケーション座標におけるアクションを実施するように構成される。
特定のコンテキスト及びユーザ入力にマッピングされる2つ以上の可能なアクションがあるとき、設定1101は、対応する透明層コマンドを決定するために使用され得る。たとえば、図7のボタン701Bは、入力座標がユーザ入力として受信されるとき、ユーザが、選択モード、ポインティング・モード、又は描画モードの間で選択することを可能にする。この設定は、透明層コマンドを決定するために、並びにひいては、どのネイティブ・コマンドが実施されるか及びどのアクションが実施されるかを決定するために使用され得る。この場合、可能なネイティブ・コマンドは、下位UIにおける対応するロケーション座標に関連するオブジェクトを選択するように構成された選択コマンド、ポインタを下位UIにおける対応するロケーション座標に移動するように構成されたポインタ・コマンド、及び下位UIにおける対応するロケーション座標におけるディスプレイ出力を変更するように構成されたグラフィカル・コマンドを含むことができる。
図12Aは、選択モードがトグルされるときの、入力座標を受信することの一実例を示す。図12Aに示されているように、ユーザは、ディスプレイ・デバイス1201上の(重ね合わせられた透明UI1203を有する)オペレーティング・システムUI1202においてスタイラス1200をポイントした。前の実例と同様に、カメラ1204は、スタイラス1200についての位置及び配向情報並びに入力座標を決定するために使用され得る。選択モードがトグルされ、スタイラス1200がオペレーティング・システムUI1202内のフォルダ1205においてポイントされるので、決定された透明層コマンドは、入力座標に関連するオブジェクト(この場合、フォルダ1205である)を選択するためのネイティブ・オペレーティング・システム・コマンドを含むことができる。別の実例では、ウィンドウが入力座標に位置する場合、これは、ウィンドウ全体の選択を生じるであろう。
図12Bは、ポインティング・モードがトグルされるときの、入力座標を受信することの一実例を示す。この場合、決定された透明層コマンドは、マウス・ポインタ1206を入力座標のロケーションに移動するためのネイティブ・オペレーティング・システム・コマンドを含むことができる。
図12Cは、描画モードがトグルされ、ユーザが複数の入力座標にわたってスタイラス1200をスイープしたときの、入力座標を受信することの一実例を示す。この場合、決定された透明層コマンドは、入力座標の各々のロケーションにおけるディスプレイ出力を変更するためのネイティブ・オペレーティング・システム・コマンドを含むことができ、ユーザ・インターフェース1202上のユーザの描画ライン1207を生じる。描画モードにおいてもたらされた修正されたグラフィカル出力は、透明層1203の一部として、たとえば、入力座標の経路に関係するメタデータとして記憶され得る。ユーザは、次いで、変更されたディスプレイ出力を画像としてエクスポートするためのオプションを選択することができる。
ユーザ入力がジェスチャーとして識別される状況では、識別されたコンテキストに少なくとも部分的に基づいてユーザ入力を1つ又は複数の透明層コマンドに変換することは、識別されたジェスチャー及び識別されたコンテキストに少なくとも部分的に基づいて透明層コマンドを決定することを含むことができる。透明層コマンドは、識別されたコンテキストにおける少なくとも1つのネイティブ・コマンドを含むことができ、少なくとも1つのネイティブ・コマンドは、識別されたコンテキストにおける識別されたジェスチャーに関連するアクションを実施するように構成される。これの一実例は、ウェブ・ブラウザにおけるスクロール・アクションを実施するように構成されたネイティブ・コマンドを生じる、スワイプ・ジェスチャー及びウェブ・ブラウザ・アプリケーション・コンテキストに関して上記で説明された。
(音声認識を使用することによってなど)ユーザ入力が1つ又は複数のワードとして識別される状況では、識別されたものに少なくとも部分的に基づいてユーザ入力を1つ又は複数の透明層コマンドに変換することは、識別された1つ又は複数のワード及び識別されたコンテキストに少なくとも部分的に基づいて透明層コマンドを決定することを含むことができる。透明層コマンドは、識別されたコンテキストにおける少なくとも1つのネイティブ・コマンドを含むことができ、少なくとも1つのネイティブ・コマンドは、識別されたコンテキストにおける識別された1つ又は複数のワードに関連するアクションを実施するように構成される。
図13は、入力音声データ中で識別された1つ又は複数のワードに基づいて決定される透明層コマンド1300の一実例を示す。識別されたワード1301は、「ホワイトボード」という句又は「ブランク・ページ」という句のうちの1つを含む。透明層コマンド1300は、コマンドの説明1302と、透明層コマンドの実行時に透明層によって仮想ドライバに及びハードウェア出力デバイスに送られた出力命令である応答命令1303とをも含む。さらに、透明層コマンド1300は、ホワイトボード機能を呼び出すために使用される実際のネイティブ・コマンド1304を含む。
図14は、例示的な実施例による、入力音声データ中で識別された1つ又は複数のワードに基づいて決定される透明層コマンド1400の別の実例を示す。この実例では、1つ又は複数のワードは、「電子メールを開いて」である。図14に示されているように、透明層コマンド1400は、ネイティブ・コマンド「outlook.exe」を含み、これは、outlookアプリケーションを起動する特定の実行ファイルを動作させるようにとの命令である。透明層コマンド1400は、音声コマンドを受信したことに応答して出力される「電子メールを開きました」という音声応答をも含む。
図3に戻ると、ステップ304において、1つ又は複数の透明層コマンドが透明層上で実行される。1つ又は複数の透明層コマンドの実行が、識別されたコンテキストにおける1つ又は複数のネイティブ・コマンドの実行を引き起こすように構成される。
図15は、例示的な実施例による、透明層上で1つ又は複数の透明層コマンドを実行するためのフローチャートを示す。ステップ1501において、透明層コマンドにおける少なくとも1つのネイティブ・コマンドが識別される。ネイティブ・コマンドは、たとえば、透明層コマンドの構造内のネイティブ・コマンドとして指定され得、識別を可能にする。
ステップ1502において、少なくとも1つのネイティブ・コマンドが、識別されたコンテキストにおいて実行される。このステップは、そのコンテキストについての識別されたAPIを介して、識別されたコンテキストに少なくとも1つのネイティブ・コマンドを渡すことと、識別されたコンテキスト内でネイティブ・コマンドを実行することとを含むことができる。たとえば、識別されたコンテキストがオペレーティング・システムである場合、ネイティブ・コマンドは、オペレーティング・システムAPIを介して実行のためにオペレーティング・システムに渡され得る。さらに、識別されたコンテキストがアプリケーションである場合、ネイティブ・コマンドは、アプリケーションAPIを介して実行のためにアプリケーションに渡され得る。
随意に、ステップ1503において、応答が(1つ又は複数の)ハードウェア・デバイスに送信され得る。前に説明されたように、この応答は、透明層から仮想ドライバに及びハードウェア・デバイス上にルーティングされ得る。
図16〜図19は、本明細書で開示されるシステムの追加の特徴を示す。図16は、例示的な実施例による、ユーザ入力に対応する新しいコマンドを追加するための例示的なインターフェースを示す。インターフェース1600におけるダッシュボードが、すでに追加され、所定のユーザ入力及びハードウェア・デバイス(たとえば、音声コマンド)を使用して起動され得る、アプリケーション1601のアイコンを含む。ダッシュボードは、アプリケーション固有であり、いくつかのユーザ入力にマッピングされる、他のコマンドをも示すことができる。追加ボタン1602の選択は、追加コマンド・メニュー1603を開く。このメニューは、ユーザが以下のオプション間で選択することを可能にする:アイテム・タイプ:下部バー・メニュー上に追加するための固定アイテム/ドラッグ・メニュー中に追加するための通常アイテム、アイコン:画像アイコンを選択する、背景:背景アイコン色を選択する、色:アイコン色を選択する、名前:新しいアイテム名を設定する、音声コマンド:新しいアプリケーションを開くための音声アクティベーション・コマンドを設定する、フィードバック応答:アプリケーション音声応答フィードバックを設定する、コマンド:起動すべきアプリケーション・タイプ又はカスタム・コマンド・タイプを選択する(たとえば、アプリケーション・コマンドを起動する、アプリケーション・コマンド内のアクションを実施する、アプリケーション・コマンドを閉じるなど)、プロセス開始:新しいプロセス又はアプリケーションを起動する場合、プロセス又はアプリケーションの名前、及びパラメータ:新しいプロセス又はアプリケーションに渡すべき任意のパラメータ。
図17は、例示的な実施例による、描画インターフェース1700及び描画モードの様々な構成要素及びオプションを示す。図18は、オブジェクトを認識するために使用され、ユーザがタッチ及びジェスチャーを使用して入力を与えることを可能にする、ビデオ・カメラ・ハードウェア・デバイスのための較正及び設定インターフェース1800を示す。図19は、ユーザが、インターフェースの様々な態様をカスタマイズし、入力モードをトグルし、他の交換を行うことを可能にする、一般的な設定インターフェース1900を示す。インターフェース1900に示されているように、ユーザは、(「マジック・スタイラス」と呼ばれる)ハードウェア・スタイラスのための設定を較正及び調整するための設定ページにもアクセスすることができる。
本明細書で開示されるシステムは、複数のネットワーク化されたコンピューティング・デバイス上で実装され、ネットワーク化された共同セッションを行うことを助けるために使用され得る。たとえば、前に説明されたホワイトボード機能性は、複数のコンピューティング・デバイス上の複数のユーザ間の共有ホワイトボードであり得る。
しかしながら、既存のホワイトボード又は他の共有共同スペースの問題のうちの1つは、共同セッションを妨げること又は中断することなしに、リモート・コンピューティング・デバイスと対話するため又はデスクトップ・スクリーンを共有するための容易なやり方がないことである。たとえば、共同ワークスペース内の参加者が他の参加者とプレゼンテーションを共有したい場合、すべての参加者が、共同セッションを最小化するか又は閉じ、スクリーン共有アプリケーションを実行し、スクリーン共有会議に参加する必要がある。共有共同セッション中に、これは、共同スペースが促進するように設計されたワークフロー及び共有ブレインストーミング・セッションを頻繁に中断する。
ユニバーサル・ハードウェア・ソフトウェア・インターフェースの実装のための前に説明された方法及びシステムに加えて、出願人は、ネットワーク化された共同ワークスペースにおけるウェブ・ソケット接続を介したデスクトップ共有を可能にする方法、装置及びコンピュータ可読媒体をさらに発見した。
図20は、例示的な実施例による、ネットワーク化された共同ワークスペースにおけるウェブ・ソケット接続を介したデスクトップ共有のためのフローチャートを示す。図20に示されているステップのすべてが、サーバに接続されたクライアント・デバイスなど、ローカル・コンピューティング・デバイス上で実施され得、複数のコンピューティング・デバイスを必要としない。開示されるプロセスは、サーバに接続された複数のデバイスによっても実装され得る。
ステップ2001において、サーバ上にホストされた共同ワークスペースの表現が、ローカル・コンピューティング・デバイスのユーザ・インターフェース上で送信される。共同ワークスペースは、ウェブ・ソケット接続を介して、ローカル・コンピューティング・デバイスでのローカル参加者及びリモート・コンピューティング・デバイスでの1人又は複数のリモート参加者を含む、複数のコンピューティング・デバイス上の複数の参加者にとってアクセス可能である。本明細書で使用されるリモート・コンピューティング・デバイス及びリモート参加者は、ローカル参加者及びローカル・コンピューティング・デバイス以外のコンピューティング・デバイス及び参加者を指す。リモート・コンピューティング・デバイスは、ワイド・エリア・ネットワーク(WAN)などのネットワークによってローカル・デバイスから分離される。
図21Aは、例示的な実施例による、共同ワークスペースをホストし、送信するために使用されるネットワーク・アーキテクチャを示す。図21Aに示されているように、サーバ2100は、コンピューティング・デバイス2101A〜2101Fに接続される。サーバ2100とコンピューティング・デバイス2101A〜2101Fとは、コンピューティング・デバイス2101A〜2101F(クライアント)とサーバ2100との間の双方向通信を可能にする、ウェブ・ソケット接続など、ネットワーク接続を介して接続され得る。図21Aに示されているように、コンピューティング・デバイスは、ラップトップ、デスクトップ、スマートフォン、又は他のモバイル・デバイスなど、任意のタイプのコンピューティング・デバイスであり得る。
共同ワークスペースは、たとえば、ウェブ・ソケット接続を介して複数の参加者中の任意の参加者からの編集を他の参加者に伝えるように構成されたデジタル・ホワイトボードであり得る。図21Bは、例示的な実施例による、ネットワーク内で共同ワークスペースに対する編集を伝えるためのプロセスを示す。図21Bに示されているように、コンピューティング・デバイス2101Bにおけるユーザが共同ワークスペースに対する編集又は変更を行う場合、この編集又は変更2102Bは、サーバ2100に送られ、ワークスペースのホストされたバージョンを更新するために使用される。編集又は変更は、次いで、サーバ2100によって更新2102A、2102C、2102D、2102E、及び2102Fとして、他の接続されたコンピューティング・デバイス2101A、2101C、2101D、2101E、及び2101Fに伝えられる。
共同ワークスペースの各表現は、ローカル参加者に対してカスタマイズされた共同ワークスペースのバージョンであり得る。たとえば、上記で説明されたように、共同ワークスペースの各表現は、サーバに接続された1つ又は複数のリモート・コンピューティング・デバイスに対応する1つ又は複数のリモート参加者オブジェクトを含むことができる。
図22は、例示的な実施例による、共同ワークスペースの複数の表現を示す。図22に示されているように、サーバ2200は、共同ワークスペース2201をホストする。サーバ上にホストされた共同ワークスペースのバージョンが、前に説明されたように、接続されたデバイスに伝えられる。図22は、3つの接続されたユーザ、ユーザ1、ユーザ2、及びユーザ3のための共同ワークスペースの表現をも示す。各表現は、随意に、ローカル参加者に対して(各ロケーションにおけるローカル・コンピューティング・デバイスに対して)カスタマイズされ得る。
図20に戻ると、ステップ2002において、共同ワークスペース内でローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部を共有するための要求、及び共同ワークスペースの表現内のエリアの選択が、ローカル・コンピューティング・デバイスによって受信される。
図23A〜図23Bは、例示的な実施例による、共同ワークスペース内でローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部を共有するための要求、及び共同ワークスペースの表現内のエリアの選択を受信するステップの一実例を示す。
図23Aは、要求及びエリアの選択を受信する前の、ローカル・コンピューティング・デバイスのユーザ・インターフェース(デスクトップ)の一実例を示す。図23Aに示されているように、ユーザ・インターフェース2301は、サーバ上にホストされた共同ワークスペース2303の表現をローカルに表示する共同アプリケーション2302、並びに別個のプレゼンテーション・アプリケーション2308(Powerpoint(商標)など)及び別個のドキュメント編集アプリケーション(Word(商標)など)を含む。ローカル・コンピューティング・デバイス上で実行するユーザ・アプリケーションはすべて、オペレーティング・システム(「OS」)に関連付けられたメニューを出す(bring up)OSメニュー・ボタンに加えて、OSのタスクバー2306内にタブとして表示される。
共同アプリケーション2302は、ローカル参加者及び任意の他の参加者によるすべての編集及び投稿(contribution)を含む共同ワークスペース2303の表現、並びにツールバー2304を含むことができる。ツールバー2304は、共同ワークスペースの表現と対話するため又は共同ワークスペースの表現を構成するための、様々な編集ツール、設定、コマンド及びオプションを含むことができる。たとえば、ツールバー2304は、共同ワークスペース2303の表現上で描画するための編集ツールを含むことができ、編集は、ウェブ・ソケット接続を介してサーバ及び他の接続されたコンピュータ化されたデバイスに伝えられる。
ツールバー2304は、選択されたとき、ローカル・コンピューティング・デバイスに、共同ワークスペース内でローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部を共有するための要求を受信させる、スクリーン共有ボタン2305をさらに含む。したがって、ユーザは、スクリーン共有ボタン2305を選択することによって、共同ワークスペース内でスクリーン共有を開始することができる。
図23Bは、要求を受信した後、且つエリアの選択の前の、ローカル・コンピューティング・デバイスのユーザ・インターフェース(デスクトップ)の一実例を示す。図23Bに示されているように、スクリーン共有ボタン2305の選択は、共同ワークスペース2303の表現内にエリア・ウィンドウ2309の出現(appearance)を生じさせることができる。ウィンドウ2309は、ローカル・デスクトップ(又はローカル・デスクトップの一部)のスクリーン共有の結果として生じる出力エリアを決定し、サイズ、形状、配向、ロケーションなどに関して、ユーザによって移動及び/又はカスタマイズされ得る。ユーザがウィンドウ2309のロケーション/サイズ/形状を選択すると、ユーザは、いくつかの入力(ポインティング・デバイスを押下する、ボタン2305を再選択する、又は何らかの他の入力など)によって選択を確定することができる。次いで、共同ワークスペース内の関連するパラメータ(サイズ、形状、配向など)を含む選択されたエリアは、ローカル・コンピューティング・デバイスによって受信され得る。随意に、エリアは、デフォルトのサイズ、ロケーション及び配向を含む何らかのデフォルト値に設定され得、ユーザがエリアから外れたい場合、ユーザによってさらに構成され得る。
もちろん、図23A〜図23Bに示されているプロセスは、共同ワークスペース内でローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部を共有するための要求、及び共同ワークスペースの表現内のエリアの選択を受信することの一実例にすぎない。このステップは、様々なやり方で実装され得る。たとえば、スクリーン共有ボタン2305は、選択されるのではなく、共同ワークスペース2303内でドラッグされ得る。スクリーン共有要求は、ユーザが、キーボード・コマンド又はメニュー若しくはサブメニュー内の選択など、何らかの入力コマンドを使用することによっても開始され得、入力コマンドは、共同アプリケーションによって、スクリーンを共有するための要求として認識され得る。共同ワークスペース内でスクリーン共有を開始するための要求は、別個のスクリーン共有セッションがすでに開始された後でも開始され得る。たとえば、ユーザは、タスクバー・タブ、アイコン、又はスクリーン共有ウィンドウを共同ワークスペース内のロケーションにドラッグすることができ、その結果、コンピューティング・デバイスは、要求と共同ワークスペース内のエリアの選択との両方を受信することになる。
ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部を共有するための要求、及び共同ワークスペースの表現内のエリアの選択を受信するステップは、ユーザが、ユーザのデスクトップ全体を共有するのか、ユーザのデスクトップ内の1つ又は複数のウィンドウを共有するのか、ユーザのローカル・コンピューティング・デバイス上で実行する1つ又は複数のアプリケーションに関連する出力を共有するのかなど、スクリーン共有のソースを選択することを可能にするサブステップを含むことができる。これらのサブステップは、ローカル・デスクトップの少なくとも一部の選択を受信するように構成されたソース選択インターフェースを、ユーザ・インターフェース内で送信することと、ローカル・デスクトップの少なくとも一部の選択をソース選択インターフェース内で受信することとを含むことができる。
図24A〜図24Cは、例示的な実施例によるソース選択プロセスの一実例を示す。図24Aは、ユーザが任意のスクリーン共有コマンド又はボタンを選択する前のローカル・コンピューティング・デバイスのユーザ・インターフェース(デスクトップ)2406を示す。数字2401〜2408は、上記で説明された図23Aにおける数字2301〜2308と同じ構成要素を示す。
図24Bは、ユーザがスクリーン共有ボタン2405を選択した後のユーザ・インターフェース2406を示す。図24Bに示されているように、ユーザのデスクトップ全体を共有したいのか、ユーザのデスクトップの一部を共有したいのか、またユーザのデスクトップのどの部分を共有したいのかをユーザが選択することを可能にするソース選択インターフェース2409が、共同ワークスペース2403内又は共同アプリケーション2404内で送信され得る。ソース選択インターフェースは、ローカル・コンピューティング・デバイスで実行している現在アクティブなすべてのアプリケーション、並びに任意のウィンドウ(OSに対応するウィンドウ又はアプリケーションによって作成されたウィンドウなど)をリストし、ユーザがローカル・デスクトップ全体を共有すること、ローカル・デスクトップ内の1つ若しくは複数のウィンドウを共有すること、又はローカル・コンピューティング・デバイス上で実行する1つ若しくは複数のアプリケーションに対応する1つ若しくは複数のインターフェースを共有することから選択することを可能にすることができる。たとえば、ユーザが共有のためにアプリケーションを選択する場合、そのアプリケーションに関連付けられたすべてのインターフェース(ウィンドウ、プロンプト、ディスプレイなど)が共有され得る。ユーザが共有のために単一のウィンドウを選択する場合、そのウィンドウのみが共有されることになる。さらに、ユーザがデスクトップ全体を共有することを選択した場合、デスクトップ全体のコンテンツが他の参加者と共有され得る。
図24Cは、ユーザが選択インターフェース2409内で「文書編集アプリ」を選択した後のインターフェース2401を示す。この選択は、ドキュメント編集アプリを、スクリーン共有ストリームのソースとして指定することになり、ローカル・コンピューティング・デバイス上で実行するドキュメント編集アプリケーションに対応するインターフェースを、共同ワークスペース内の他の参加者が閲覧できることを意味する。以下でさらに説明されるように、選択は、メモリに記憶され得、且つ/又はデスクトップの関連する部分をキャプチャするストリーミング・オブジェクトを生成するために使用されるアプリケーション若しくはプログラムに渡され得る。
図24A〜図24Cに関して上記で説明されたソース選択ステップは、図23A〜図23Bに関して説明されたように、エリアの選択の一部として、エリアの選択の前に、又はエリアの選択の後に実行され得る。たとえば、システムは、ユーザがスクリーン共有ウィンドウのエリアを選択した後に、ソース選択インターフェースを表示することができる。代替的に、エリアの選択の前に、ソース選択インターフェースが表示され得る。ソース選択プロセスは、ストリーミング・オブジェクトが生成されるときなど、プロセス全体における後の方のステップでも実行され得る。
ソース選択プロセスはまた、省略され得(デフォルトではデスクトップ全体を共有する)、且つ/又は他のやり方で実行され得る。たとえば、ソース選択インターフェースを表示する代わりに、共有したいすべてのアクティブ・ウィンドウを選択するように、又はデスクトップ全体を共有するためのコマンドを入力するようにユーザに命令するプロンプトが、表示され得る。多くの変形形態が可能であり、これらの実例は、限定するものではない。
ステップ2002並びに図23A〜図23B及び図24A〜図24Cに関して説明された入力は、マウス、タッチスクリーン、又はスタイラスなど、任意のタイプのポインティング・デバイスを介して受信され得る。入力を検出するために、仮想ドライバ及び/又は透明層を含む、前に説明された技法が使用され得る。たとえば、入力は、ユーザによるポインティング・ジェスチャーであり得る。さらに、ドラッグ・アンド・ドロップ・アクション、選択、選択解除、若しくは他の入力、又は入力のシーケンスなどの上記で説明されたアクションはまた、仮想ドライバ及び/又は透明層を含む、前に説明された技法を使用して入力され得る。
図20に戻ると、ステップ2003において、ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部のビデオ・ストリームを出力するように構成されたストリーミング・オブジェクトが生成される。ストリーミング・オブジェクトは、ローカル・デスクトップの少なくとも一部のストリームをキャプチャするように構成されたビデオ・ストリームなどのメディア・ストリームであり得る。
前に説明されたように、サーバ上にホストされた共同ワークスペースの表現は、ローカル・コンピューティング・デバイス上で実行するローカル共同アプリケーションによって、ローカル・コンピューティング・デバイス上で送信され得る。この共同アプリケーションは、たとえば、ウェブ・アプリケーションであり得、ローカル・コンピューティング・デバイス上のスクリーン・キャプチャ・プログラムと通信及びインターフェースする。スクリーン・キャプチャ・プログラムは、デスクトップの少なくとも一部のストリームを生成するように構成されたプログラムである。共同アプリケーションは、アプリケーション・プログラミング・インターフェース(API)を介してスクリーン・キャプチャ・プログラムとインターフェースすることができる。さらに、共同アプリケーションは、透明層を介してスクリーン・キャプチャ・プログラムとインターフェースすることができ、透明層自体が、ローカル・コンピューティング・デバイス上で実行する複数のアプリケーションとインターフェースする。共同アプリケーションが、関連するルーチン又はプロセスを呼び出すだけでストリーミング・オブジェクトをインスタンス化できるように、メディア・ストリームを生成するために使用されるスクリーン・キャプチャ・プログラムの機能性は、共同アプリケーションに統合され得る。
図25は、例示的な実施例による、ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部のビデオ・ストリームを出力するように構成されたストリーミング・オブジェクトを生成するためのフローチャートを示す。
ステップ2501において、ローカル共同アプリケーションは、ローカル共同アプリケーションとスクリーン・キャプチャ・プログラムとの間のアプリケーション・プログラミング・インターフェース(API)を介して、ローカル・コンピューティング・デバイス上で実行するスクリーン・キャプチャ・プログラムにソース識別子を求める要求を送信する。前に説明されたように、このAPIは、透明層自体であり得る。要求は、スクリーン共有ストリームの選択されたソースなど(特定のアプリケーション又はウィンドウなど)の追加の属性を含むことができる。代替的に、デフォルトのソース(デスクトップ全体など)の代わりに、要求がサブミット又は省略された後に、ソース選択プロセスが実行され得る。ソース識別子は、作成されるメディア・ストリームのハンドル又はアドレスであり、アプリケーションがメディア・ストリームの出力及び結果として生じるスクリーン共有にアクセスすることを可能にする。
ステップ2502において、スクリーン・キャプチャ・プログラムは、ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部のストリームを開始し、ストリームは、対応するソース識別子を有する。ソース・パラメータがスクリーン・キャプチャ・プログラムに提供されると、スクリーン・キャプチャ・プログラムは、識別された構成要素(特定のアプリケーション又はウィンドウなど)のみを使用してストリームを開始することができる。それ以外の場合、スクリーン・キャプチャ・プログラムは、デフォルトでローカル・デスクトップ全体のストリームを開始するか、又は前に説明されたようにソース選択オプションをユーザに提示することができる。開始されたストリームは、デスクトップの少なくとも一部のスナップショットを定期的に(1秒あたり30回など)キャプチャするスクリーン・キャプチャのシーケンスである。ストリームは、ソース識別子を使用してアクセスされ得、ソース識別子は、上記で説明されたように、プログラムがストリームにアクセスすることを可能にするハンドルである。
ステップ2503において、スクリーン・キャプチャ・プログラムは、ソース識別子をローカル共同アプリケーションに送信する。ステップ2504において、ローカル共同アプリケーションは、ソース識別子に少なくとも部分的に基づいて、ストリーミング・オブジェクトを生成する。ソース識別子に加えて、ローカル共同アプリケーションは、ユーザによって指定されたエリアなど、以前に提供された情報を随意に利用して、ストリーミング・オブジェクトを作成することができる。ストリーミング・オブジェクトは、メディア・ストリーム、及び定義された形式を有する対応する出力インターフェースである。定義された形式は、随意に、選択されたエリアなどのユーザ入力に基づき得る。ストリーミング・オブジェクトは、参加者のカメラからのビデオ・ストリームと同様に、共同ワークスペースと互換性があり、共同ワークスペース内に埋め込まれるように構成された、メディア・ストリーム・オブジェクトである。
スクリーン・キャプチャ・プログラムは、ローカル・デスクトップ若しくはローカル・デスクトップの一部のストリームを生成するように構成されたプログラムであるか、又はローカル共同アプリケーションに統合され、ローカル・デスクトップ若しくはローカル・デスクトップの一部のストリームを作成するように構成された構成要素である。たとえば、スクリーン・キャプチャ・プログラムは、ウェブ・リアルタイム通信(WebRTC:Web Real−Time Communication)ストリーミングのベースポイント又はエンドポイントであるウェブ・ブラウザ又はブラウザ・エンジン構成要素であり得る。以下のセクションは、スクリーン・キャプチャ・プログラムがChromeである場合の、ストリーミング・オブジェクトを生成するステップの例示的な実装形態を提供する。
Chromeにおけるスクリーン・キャプチャ機能性は、MediaDevices.getUserMedia()関数インターフェースを介してアクセスされ得る。gUM関数は、1回目に、ユーザのオーディオ/ビデオ・ストリームを取得するために呼び出され、2回目に、スクリーン・ストリームを得るために呼び出され得る。
Chromeにおいて、スクリーン・キャプチャ機能性を使用するための許可は、ウェブ・アプリケーション(共同アプリケーションの1つの可能な実装など)においてchrome拡張を利用することによって有効にされ得る。この拡張は、関数chrome.desktopCapture.chooseDesktopMedia()を利用してsourceIDを返す。次いで、sourceIDは、対応するストリームを取得するために、gUM関数における引数として使用され得る。
スクリーン共有のための拡張は、共同アプリケーションのコンテキストにおいて実行するコンテンツ・スクリプトと、別個の拡張コンテキストにおいて実行しているバックグラウンド・スクリプトとを含むことができる。コンテンツ・スクリプトは、ウィンドウにメッセージを送ることによって、又は文書オブジェクト・モデル(DOM:document object model)操作によって、共同アプリケーションと通信することができるが、バックグラウンド・スクリプトは通信することができない。バックグラウンド・スクリプトは、すべてのChrome拡張APIにアクセスできるが、コンテンツ・スクリプトはアクセスすることができない。コンテンツ・スクリプト及びバックグラウンド・スクリプトは、関数chrome.runtime.connect()によって相互に通信することができる。このアーキテクチャを考慮すると、ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部のビデオ・ストリームを出力するように構成されたストリーミング・オブジェクトを生成するプロセスは、以下によって実行され得る。
(1)共同アプリケーションは、スクリーン共有ソース識別子を求める要求をコンテンツ・スクリプトに送る。
(2)コンテンツ・スクリプトは、要求をバックグラウンド・スクリプトに渡す。
(3)バックグラウンド・スクリプトは、関数chrome.desktopCapture.chooseDesktopMedia()を呼び出し、ソース識別子をコンテンツ・スクリプトに返す。
(4)コンテンツ・スクリプトは、このソース識別子を共同アプリケーションに返し、共同アプリケーションは、最終的に、ソース識別子を制約/引数のうちの1つとして用いてgetUserMedia()関数を呼び出す。
ChromeにおけるgUM関数の場合、ビデオ・ストリームの制約は、
{chromeMediaSource: ‘desktop’; maxWidth: 1920; maxHeight: 1080; maxFrameRate: 10; minAspectRatio: 1.77; chromeMediaSourceId: sourceId}又は{maxWidth: 1920; maxHeight: 1080; maxFrameRate: 10; minAspectRatio: 1.77; chromeMediaSourceId: sourceId}を含むことができる。
スクリーン共有gUM呼び出しは、WebRTC mediaStreamとして、ピア接続を介して共有され得るmediaStreamを返す。
もちろん、Chromeブラウザをスクリーン・キャプチャ・プログラムとして利用する上述の実装形態は一実例として提供されているにすぎず、ストリーミング・オブジェクトを生成するステップは、Firefoxなど、スクリーン・キャプチャ機能性をサポートする他のプログラム若しくはブラウザ、又は独立したスタンドアロン・スクリーン・キャプチャ・プログラムを使用して実行され得る。
図20に戻ると、ステップ2004において、ローカル・コンピューティング・デバイスは、ウェブ・ソケット接続を介して、1つ又は複数のコマンドをサーバに送信する。1つ又は複数のコマンドは、ストリーミング・オブジェクト、及び選択されたエリアに対応する情報を含むことができ、サーバに、選択されたエリアに少なくとも部分的に基づいて共同ワークスペース内にストリーミング・オブジェクトを挿入することを行わせるように構成される。
たとえば、ユーザが、共同ワークスペースの右下隅にある円形のエリアを、スクリーン共有のための選択されたエリアとして前に選択した場合、ストリーミング・オブジェクトは、メディア・ストリームが共同ワークスペース内に埋め込まれたときに円形の形式で共同ワークスペースの右下隅に表示されるように、サーバによって共同ワークスペース内に挿入され得る。円形のサイズ及び配向は、選択されたエリアの同じ属性に基づき得る。もちろん、共同ワークスペース内の任意の他のオブジェクトと同様に、ストリーミング・オブジェクトは、共同ワークスペースの表現と対話することによって、共同ワークスペース内に埋め込まれた後に参加者によって調整又は移動され得る。
共同ワークスペース内のストリーミング・オブジェクトの形式は、形状、サイズ、及び位置などの選択されたエリアの属性を含む、以前に選択されたエリアに基づいて決定され得る。これらの属性は、サーバに送られる1つ又は複数のコマンドにおいて、ストリーミング・オブジェクト自体とともに送信され得る。次いで、サーバは、これらの属性に基づいて、ストリーミング・オブジェクトを共同ワークスペース内に埋め込むための挿入ポイント及び形式を決定することができる。
代替的に、ストリーミング・オブジェクトは、ユーザの以前のエリアの選択に基づいて事前定義された空間属性を有するメディア・ストリーム・オブジェクトであり得る。この場合、ストリーミング・オブジェクトがローカル・コンピューティング・デバイスで生成されるとき、ストリーミング・オブジェクトの表示属性は、ストリーミング・オブジェクトに統合され得る。次いで、(埋め込まれた空間属性を有する)ストリーミング・オブジェクトは、サーバに送られ、サーバは、埋め込まれた空間属性に基づいて、ストリーミング・オブジェクトを適切なロケーションに適切な形式で共同ワークスペース内に埋め込む。
1つ又は複数のコマンドは、ストリーミング・オブジェクト自体を含むのではなく、ストリーミング・オブジェクトを取得するため又はストリーミング・オブジェクトの独自のインスタンスをインスタンス化するためにサーバによって使用され得る、ストリーミング・オブジェクトのアドレス又は他の識別子を随意に含むことができる。
サーバによるストリーミング・オブジェクトの共同ワークスペースへの挿入は、ストリーミング・オブジェクトの表現を、ウェブ・ソケット接続を介して複数のコンピューティング・デバイスに伝えさせる。したがって、接続された各コンピューティング・デバイスは、ストリーミング・オブジェクトの表現を共同ワークスペースのそれぞれの表現で有することになる。
挿入されたストリーミング・オブジェクトは、ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部のビデオ・ストリームを受信し、ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部のビデオ・ストリームを、ウェブ・ソケット接続を介して複数のコンピューティング・デバイスに送信するように構成される。
前に説明されたように、このプロセスは、ストリーミング・オブジェクトをインスタンス化した(また、ストリーム識別子によってメディア・ストリームのソースとして識別された)ローカル・コンピューティング・デバイスから、ストリーム情報がサーバに転送され、次いで、共同ワークスペースの表現内の、サーバに接続された複数のコンピューティング・デバイスのそれぞれに転送されることを含む。したがって、ストリーミング・オブジェクト自体は、サーバ上の共同ワークスペース内に埋め込まれ得、結果として生じるストリームが、接続されたクライアントに伝えられ得る。
図26は、例示的な実施例による、ローカル・コンピューティング・デバイスからコマンドを送り、ストリーミング・オブジェクトを伝えるプロセスを示す。図26に示されているように、ローカル・コンピューティング・デバイス2601は、コマンド(ストリーミング・オブジェクト又はストリーミング・オブジェクトに対する参照/ポインタのいずれかを含む)をサーバ2600に送る。次いで、サーバ2600は、ストリーミング・オブジェクトを共同ワークスペース内に挿入し、その結果、埋込みストリーミング・オブジェクトを有する共同ワークスペースが、ローカル・コンピューティング・デバイス2601並びにリモート・コンピューティング・デバイス2602及び2603を含むすべての接続されたデバイスに伝えられる。
図27は、例示的な実施例による、サーバが共同ワークスペース内にストリーミング・オブジェクトを埋め込んだ後の、ローカル・コンピューティング・デバイスのインターフェースの一実例を示す。数字2701〜2708は、図23Aにおける数字2301〜2308に関して記載されたものと同じ構成要素に対応する。図27はさらに、ユーザのデスクトップのメディア・ストリームを表示する埋込みストリーミング・オブジェクト2709を示す。この場合、選択されたソースはデスクトップ全体であると想定される。サーバに接続されたリモート参加者の各々は、参加者の共同ワークスペースの表現内に、同じストリーミング・オブジェクトが埋め込まれていることになる。図27に示されているように、結果として得られる埋込みストリームは、ローカル参加者とリモート参加者の両方が、共有されたスクリーンのコンテンツを共同ワークスペースのコンテキスト内で閲覧することを可能にする、「ピクチャ・イン・ピクチャ」効果を提供する。したがって、参加者は、共同セッションを妨げることなしに、関連するプログラム及び情報を共有することができる。
上記で説明された技法に加えて、出願人は、ローカル参加者とリモート参加者の両方が埋込みストリーミング・オブジェクト内に表示されるデスクトップ又はデスクトップの一部を制御すること可能にする新規な技法をさらに発見した。この新規な技法は、透明層を利用し、ユーザ(ローカルとリモートの両方)が埋込みストリーミング・オブジェクト内に表示されるデスクトップ又はデスクトップの一部を効果的にブラウズすることを可能にする。
図28は、例示的な実施例による、ローカル・コンピューティング・デバイスからの埋込みストリーミング・オブジェクトを介してデスクトップ又はデスクトップの一部を制御するためのフローチャートを示す。
ステップ2801において、挿入されたストリーミング・オブジェクトは、ローカル・コンピューティング・デバイスのユーザ・インターフェース上で、共同ワークスペースの表現内で送信される。挿入されたストリーミング・オブジェクトは、ビデオ・ストリームのソースのネットワーク・アドレスに関連付けられる。この関連付けは、ストリーミング・オブジェクトに関連付けられたタグ又はメタデータの形式で、サーバによって提供され得る。さらに、関連付けは、ストリーミング・オブジェクトの一部であり得、たとえば、前に説明されたソース識別子に基づき得る。たとえば、ストリーミング・オブジェクトが作成されるときに、ストリーミング・オブジェクトを作成するデバイスは、デバイスのIPアドレスを示すタグを含むことができる。
ステップ2802において、ローカル・コンピューティング・デバイス上で実行する透明層は、挿入されたストリーミング・オブジェクトに関連付けられたユーザ入力を検出し、ユーザ入力は、ローカル・デスクトップ内のロケーションに対応する。前に説明されたように、透明層は、オペレーティング・システム又はオペレーティング・システム上で実行するように構成された1つ若しくは複数のアプリケーションのうちの1つ又は複数とインターフェースするように構成されたアプリケーション・プログラミング・インターフェース(API)を備える。透明層は、(座標によって決定されるような)入力のロケーション及びストリーミング・オブジェクトのロケーションに基づいて、挿入されたストリーミング・オブジェクトに関連付けられたユーザ入力を検出することができる。たとえば、マウス・クリックとストリーミング・オブジェクトのある一部との間に重なりがある場合、この入力は、挿入されたストリーミング・オブジェクトに関連付けられたユーザ入力として検出され得る。
さらに、ユーザ入力は、挿入されたストリーミング・オブジェクト内の入力のロケーションに基づいて、ローカル・デスクトップ内の特定のロケーションにマッピングされ得る。この場合も、ローカル・デスクトップの異なる部分に関連付けられた、挿入されたストリーミング・オブジェクト内のエリア又は座標を示すマップが記憶され得、ロケーションは、ローカル・デスクトップのそれぞれの部分にマッピングされ得る。たとえば、挿入されたストリーミング・オブジェクトのサブエリアは、ローカル・デスクトップ内の対応するエリアを占有する特定のアプリケーションに関連付けられ得るか、又はローカル・デスクトップ内の対応する座標に関連付けられ得る。
マッピング手順は、挿入されたストリーミング・オブジェクト内の入力の相対ロケーションを検出し、相対ロケーションを、ストリーミング・オブジェクトによってストリーミングされているデスクトップ(又はデスクトップの一部)内の絶対ロケーションにマッピングする、スケーリング・メカニズム又はプロセスを利用することができる。
さらに、前に説明されたように、入力は、マウスなどのポインティング・デバイスから、又は仮想ドライバ及び透明層に依存する入力メカニズムなどの他の入力手段を介するものであり得る。
ステップ2804において、ローカル・コンピューティング・デバイス上で実行する透明層は、挿入されたストリーミング・オブジェクトに関連付けられたネットワーク・アドレスがローカル・コンピューティング・デバイスのネットワーク・アドレスに対応すると判断する。これは、たとえば、入力を提供するデバイスのIPアドレスとストリーミング・オブジェクトに関連付けられたIPアドレスとを比較して一致するかどうかを判定することによって、判断され得る。
ステップ2805において、挿入されたストリーミング・オブジェクトに関連付けられたネットワーク・アドレスが、入力を提供するコンピューティング・デバイスのネットワーク・アドレスに対応するとの判断に基づいて、透明層は、オペレーティング・システム又はオペレーティング・システム上で実行するように構成された1つ若しくは複数のアプリケーションのうちの1つ又は複数に、1つ又は複数の第2のコマンドを送信し、1つ又は複数の第2のコマンドは、ローカル・デスクトップ内のロケーションでユーザ入力を実行するように構成される。
前に説明されたように、透明層は、OS又はOS上で実行するアプリケーションとインターフェースすることができる。したがって、挿入されたストリーミング・オブジェクト内の入力は、ローカル・デスクトップ内の対応するロケーションにマッピングされ得、コマンドは、(前に説明されたように、関連するコンテキストに応じて)適切なアプリケーション又はOSに送られて、ローカル・デスクトップ内の対応するロケーションで入力を実行し得る。
図29A〜図29Cは、例示的な実施例による、ローカル・コンピューティング・デバイスからの埋込みストリーミング・オブジェクトを介してデスクトップ又はデスクトップの一部を制御することの一実例を示す。
図29Aに示されているように、ローカル・ユーザ・インターフェース(デスクトップ)2901は、共同ワークスペースの表現を表示する共同アプリケーション2902を含む。表現は、ローカル・デスクトップ自体をストリーミングしている挿入された/埋込みストリーミング・オブジェクト2903を含む。ローカル・ユーザ・インターフェース2901はまた、OSメニュー・ボタン2905を含むタスクバー2906を含む。図に示されているように、マウス・ポインタは、ローカル・デスクトップ内のOSメニュー・ボタン2905に対応する、挿入されたストリーミング・オブジェクト2903内のボタン2904の上にある。
図29Bは、ユーザが、ストリーミング・オブジェクト2903内のボタン2904のロケーションをクリックした結果を示す。透明層によって検出されるその入力の結果として、ストリーミング・オブジェクト2903内の入力のロケーションは、デスクトップ2901内の対応するロケーションにマッピングされる。対応するロケーションはOSメニュー・ボタン2905であるので、この入力の結果として、透明層は、OSにコマンドを送り、OSメニュー・ボタン2905をアクティブにする。デスクトップ2901におけるこの変更は、それ自体がストリーミング・オブジェクトによってキャプチャされ、ストリーミング・オブジェクトは、挿入されたストリーミング・オブジェクト内のボタン2904も同様にアクティブにされた状態で示す。
図29Cは、入力がローカル・デスクトップに運ばれた後の、インターフェース2901及び挿入されたストリーミング・オブジェクト2903を示す。図29Cに示されているように、OSメニューが開かれ、選択可能なインジケータのリスト2907を含む。その結果として、この変更は、挿入されたストリーミング・オブジェクト2903によってキャプチャされ、挿入されたストリーミング・オブジェクト2903自体は、選択可能なインジケータのリスト2908を含むようにボタン2904が対応して開くように見せる。
上記で示されたように、透明層は、埋込みストリーミング・オブジェクトを介してローカル・デスクトップを制御するために効果的に使用され得る。この透明層は、共同セッションに参加しているユーザに、ユーザが共同セッション内にとどまり、同時に他の参加者と共有している自分のデスクトップ又は自分のデスクトップ内のアプリケーションをナビゲートすることを可能にする、リモート制御インターフェースを効果的に提供する。
本システムはまた、リモート参加者が、共有されているデスクトップ又はデスクトップの一部を制御することを可能にするために使用され得る。この機能性は、リモート参加者が、共同ワークスペース内に挿入されたストリーミング・オブジェクトを介して、共有されている他のデスクトップ及びアプリケーションにアクセスすることを可能にするので、優れたユーティリティを有する。
図30は、例示的な実施例による、リモート・コンピューティング・デバイスからの埋込みストリーミング・オブジェクトを介してデスクトップ又はデスクトップの一部を制御するためのフローチャートを示す。
ステップ3001において、挿入されたストリーミング・オブジェクトは、リモート・コンピューティング・デバイスのユーザ・インターフェース上で、共同ワークスペースの表現内で送信される。挿入されたストリーミング・オブジェクトは、ビデオ・ストリームのソースのネットワーク・アドレスに関連付けられる。この関連付けは、ストリーミング・オブジェクトに関連付けられたタグ又はメタデータの形式で、サーバによって提供され得る。さらに、関連付けは、ストリーミング・オブジェクトの一部であり得、たとえば、前に説明されたソース識別子に基づき得る。たとえば、ストリーミング・オブジェクトが作成されるときに、ストリーミング・オブジェクトを作成するデバイスは、デバイスのIPアドレスを示すタグを含むことができる。
ステップ3002において、リモート・コンピューティング・デバイス上で実行する透明層は、挿入されたストリーミング・オブジェクトに関連付けられたユーザ入力を検出し、ユーザ入力は、ローカル・デスクトップ内のロケーションに対応する。前に説明されたように、透明層は、オペレーティング・システム又はオペレーティング・システム上で実行するように構成された1つ若しくは複数のアプリケーションのうちの1つ又は複数とインターフェースするように構成されたアプリケーション・プログラミング・インターフェース(API)を備える。透明層は、(座標によって決定されるような)入力のロケーション及びストリーミング・オブジェクトのロケーションに基づいて、挿入されたストリーミング・オブジェクトに関連付けられたユーザ入力を検出することができる。たとえば、マウス・クリックとストリーミング・オブジェクトのある一部との間に重なりがある場合、この入力は、挿入されたストリーミング・オブジェクトに関連付けられたユーザ入力として検出され得る。
さらに、ユーザ入力は、挿入されたストリーミング・オブジェクト内の入力のロケーションに基づいて、ローカル・デスクトップ内の特定のロケーションにマッピングされ得る。この場合も、ローカル・デスクトップの異なる部分に関連付けられた、挿入されたストリーミング・オブジェクト内のエリア又は座標を示すマップが記憶され得、ロケーションは、ローカル・デスクトップのそれぞれの部分にマッピングされ得る。たとえば、挿入されたストリーミング・オブジェクトのサブエリアは、ローカル・デスクトップ内の対応するエリアを占有する特定のアプリケーションに関連付けられ得るか、又はローカル・デスクトップ内の対応する座標に関連付けられ得る。
マッピング手順は、挿入されたストリーミング・オブジェクト内の入力の相対ロケーションを検出し、相対ロケーションを、ストリーミング・オブジェクトによってストリーミングされているデスクトップ(又はデスクトップの一部)内の絶対ロケーションにマッピングする、スケーリング機構又はプロセスを利用することができる。
さらに、前に説明されたように、入力は、マウスなどのポインティング・デバイスから、又は仮想ドライバ及び透明層に依存する入力メカニズムなどの他の入力手段を介するものであり得る。
ステップ3004において、リモート・コンピューティング・デバイス上で実行する透明層は、挿入されたストリーミング・オブジェクトに関連付けられたネットワーク・アドレスがリモート・コンピューティング・デバイスのネットワーク・アドレスに対応しないと判断する。これは、たとえば、入力を提供するデバイス(リモート・コンピューティング・デバイス)のIPアドレスとストリーミング・オブジェクトに関連付けられたIPアドレスとを比較して一致するかどうかを判定することによって、判断され得る。
ステップ3005において、挿入されたストリーミング・オブジェクトに関連付けられたネットワーク・アドレスが、入力を提供するコンピューティング・デバイスのネットワーク・アドレスに対応しないとの判断に基づいて、透明層は、1つ又は複数の第2のコマンドを、ウェブ・ソケット接続を介してローカル・コンピューティング・デバイスに送信し、1つ又は複数の第2のコマンドは、ローカル・コンピューティング・デバイス上で実行するローカル透明層に、ローカル・デスクトップ内のロケーションでユーザ入力の実行を行わせるように構成される。
1つ又は複数の第2のコマンドは、サーバを通してウェブ・ソケット接続を介して、リモート・コンピューティング・デバイスからローカル・コンピューティング・デバイスにルーティングされ得る。特に、1つ又は複数の第2のコマンドは、ローカル・コンピューティング・デバイスのIPアドレスとしての宛先アドレスとともにサーバに送信され、次いで、サーバによってローカル・コンピューティング・デバイスにルーティングされ得る。
1つ又は複数の第2のコマンドは、ローカル・コンピューティング・デバイスのローカル透明層に、ローカル・オペレーティング・システム又はローカル・オペレーティング・システム上で実行するように構成された1つ又は複数のローカル・アプリケーションのうちの1つ又は複数にローカル・コマンドをローカル透明層自体で送らせるように構成され得、1つ又は複数のローカル・コマンドは、ローカル・デスクトップ内のロケーションでユーザ入力を実行するように構成される。
前に説明されたように、透明層は、OS又はOS上で実行するアプリケーションとインターフェースすることができる。したがって、挿入されたストリーミング・オブジェクト内の入力は、ローカル・デスクトップ内の対応するロケーションにマッピングされ得、コマンドは、ローカル透明層から、(前に説明されたように、関連するコンテキストに応じて)ローカル・コンピューティング・デバイス上の適切なアプリケーション又はOSに送られて、ローカル・デスクトップ内の対応するロケーションで入力を実行し得る。
図31A〜図31Cは、例示的な実施例による、リモート・コンピューティング・デバイスからの埋込みストリーミング・オブジェクトを介してデスクトップ又はデスクトップの一部を制御することの一実例を示す。
図31Aに示されているように、リモート・ユーザ・インターフェース(デスクトップ)3101は、共同ワークスペースの表現を表示する共同アプリケーション3102を含む。表現は、ローカル・デスクトップをストリーミングしている挿入された/埋込みストリーミング・オブジェクト3103を含む(本明細書で使用される場合、「ローカル」は、ストリーミング・オブジェクトをインスタンス化し、そのデスクトップ又はそのデスクトップの一部を共有しているデバイスを指す)。リモート・ユーザ・インターフェース3101はまた、リモート・デスクトップ上で実行するウェブ・ブラウザ・アプリケーションに対応するタスクバー及びウィンドウを含む。図に示されているように、マウス・ポインタは、ストリーミングされているローカル・デスクトップ内のOSメニュー・ボタンに対応する、挿入されたストリーミング・オブジェクト3103内のボタン3104上にある。
図31Bは、ユーザが、ストリーミング・オブジェクト3103内のボタン3104のロケーションをクリックした結果を示す。リモート透明層によって検出されるその入力の結果として、ストリーミング・オブジェクト3103内の入力のロケーションは、ストリーミングされているローカル・デスクトップ内の対応するロケーションにマッピングされる。次いで、リモート透明層は、ローカル・コンピューティング・デバイス上のローカル透明層にコマンドを送り、ローカル・デスクトップ内の対応するロケーションに入力を生じさせる。対応するロケーションはローカル・デスクトップのOSメニュー・ボタンであるので、この入力の結果として、リモート透明層は、ローカル透明層にコマンドを送り、ローカル透明層自体が、ローカルOSにコマンドを送り、ローカル・デスクトップのOSメニュー・ボタンをアクティブにする。ローカル・デスクトップにおけるこの変更は、ストリーミング・オブジェクト3103によってキャプチャされ、ストリーミング・オブジェクト3103は、挿入されたストリーミング・オブジェクト内のボタン3104をアクティブにされた状態で示す。なお、挿入されたストリーミング・オブジェクトは、リモート・デスクトップをストリーミングしているのではなく、ローカル・コンピューティング・デバイスに関連付けられた異なるデスクトップをストリーミングしているので、リモート・デスクトップ3101は、この入力の影響を受けない(ストリーミング・オブジェクト3103に対する更新を除く)。
図31Cは、入力がローカル・デスクトップに運ばれた後の、インターフェース3101及び挿入されたストリーミング・オブジェクト3103を示す。図31Cに示されている時点で、ストリーミングされているローカル・デスクトップ内のローカルOSメニューが開かれ、選択可能なインジケータのリストを含む。その結果として、この変更は、挿入されたストリーミング・オブジェクト3103によってキャプチャされ、挿入されたストリーミング・オブジェクト3103自体は、選択可能なインジケータのリストを含むようにボタン3104が対応して開くように見せる。
上記で示されたように、透明層は、埋込みストリーミング・オブジェクトを介してリモート・デスクトップを制御するために使用され得る。この透明層は、共同セッションに参加しているユーザに、ユーザが共同セッション内にとどまり、同時に共同ワークスペース内の他の参加者のデスクトップ又はアプリケーションをナビゲートすることを可能にする、リモート制御インターフェースを効果的に提供する。たとえば、2人の参加者が他の参加者のグループにプレゼンテーションを提示している場合、第1の提示側参加者(presenting participant)は、参加者のデスクトップ上でプレゼンテーション・アプリケーションを共有し、共同ワークスペース内のストリーミング・オブジェクトと共有されたスライドの第1のセットについて説明することができる。次いで、第1の提示側参加者は、プレゼンテーション・アプリケーションの制御を、第2の提示側参加者に「譲る」ことができ、第2の提示側参加者は、第1の提示参加者のデスクトップ上でプレゼンテーション・アプリケーションをリモートで制御することができる。
随意に、リモート制御機能性は、各参加者が、他の参加者がストリーミング・オブジェクトを介して各参加者の共有デスクトップをリモートで制御できるかどうか、またどの参加者が共有デスクトップをリモートで制御できるかを構成することを可能にする、許可、認証、又は何らかの他のアクセス制御メカニズムを含むことができる。たとえば、各ユーザは、各ユーザが自分のローカル・デスクトップ又は自分のローカル・デスクトップの一部を他の参加者によって制御されることを可能にするかどうかを示す設定を記憶することができる。これらの設定は、各コンピューティング・デバイスで記憶され得(また、透明層にとってアクセス可能であり、リモート制御入力を可能にするため又はブロックするために透明層によって使用され得る)、又はサーバで記憶され得、コンピューティング・デバイス間のリモート制御入力を可能するため又はブロックするためにサーバによって使用され得る。これらのアクセス制御メカニズムは、どのように記憶されているかにかかわらず、リモート参加者が挿入されたストリーミング・オブジェクトを介して別の参加者のデスクトップに入力を提供できるかどうかを判定するために使用され得る。
上記で説明された技法のうちの1つ又は複数が、1つ又は複数のコンピュータ・システムにおいて実装されるか、又は1つ又は複数のコンピュータ・システムを伴い得る。図32は、専用コンピューティング環境3200の一実例を示す。コンピューティング環境3200は、説明される(1つ又は複数の)実施例の使用又は機能性の範囲に関するいかなる限定をも示唆するものではない。
図32を参照すると、コンピューティング環境3200は、少なくとも1つの処理ユニット3210と、メモリ3220とを含む。処理ユニット3210は、コンピュータ実行可能命令を実行し、現実プロセッサ又は仮想プロセッサであり得る。多重処理システムでは、処理能力を増加させるために、複数の処理ユニットがコンピュータ実行可能命令を実行する。メモリ3220は、揮発性メモリ(たとえば、レジスタ、キャッシュ、RAM)、不揮発性メモリ(たとえば、ROM、EEPROM、フラッシュ・メモリなど)、又はその2つの何らかの組合せであり得る。メモリ3220は、説明される技法を実装するソフトウェア3280を記憶することができる。
コンピューティング環境は、追加の特徴を有することができる。たとえば、コンピューティング環境3200は、ストレージ3240と、1つ又は複数の入力デバイス3250と、1つ又は複数の出力デバイス3260と、1つ又は複数の通信接続3290とを含む。バス、コントローラ、又はネットワークなど、相互接続機構3270が、コンピューティング環境3200の構成要素を相互接続する。一般に、オペレーティング・システム・ソフトウェア又はファームウェア(図示せず)が、コンピューティング環境3200において実行する他のソフトウェアのための動作環境を提供し、コンピューティング環境3200の構成要素のアクティビティを協調させる。
ストレージ3240は、リムーバブル又は非リムーバブルであり得、磁気ディスク、磁気テープ又はカセット、CD−ROM、CD−RW、DVD、或いは情報を記憶するために使用され得、コンピューティング環境3200内でアクセスされ得る任意の他の媒体を含む。ストレージ3240は、ソフトウェア3280のための命令を記憶することができる。
(1つ又は複数の)入力デバイス3250は、キーボード、マウス、ペン、トラックボール、タッチ・スクリーン、又はゲーム・コントローラなどのタッチ入力デバイス、音声入力デバイス、走査デバイス、デジタル・カメラ、遠隔制御、或いはコンピューティング環境3200への入力を提供する別のデバイスであり得る。(1つ又は複数の)出力デバイス3260は、ディスプレイ、テレビジョン、モニタ、プリンタ、スピーカー、又はコンピューティング環境3200からの出力を提供する別のデバイスであり得る。
(1つ又は複数の)通信接続3290は、通信媒体を介した別のコンピューティング・エンティティへの通信を可能にする。通信媒体は、変調されたデータ信号中で、コンピュータ実行可能命令、オーディオ又はビデオ情報、或いは他のデータなど、情報を伝達する。変調されたデータ信号は、信号の特性のうちの1つ又は複数が、信号中の情報を符号化するような様式で設定又は交換された信号である。限定ではなく実例として、通信媒体は、電気、光、RF、赤外線、音響、又は他のキャリアを用いて実装されるワイヤード又はワイヤレス技法を含む。
実装形態が、コンピュータ可読媒体のコンテキストにおいて説明され得る。コンピュータ可読媒体は、コンピューティング環境内でアクセスされ得る任意の利用可能な媒体である。限定ではなく実例として、コンピューティング環境3200内で、コンピュータ可読媒体は、メモリ3220、ストレージ3240、通信媒体、及び上記のいずれかの組合せを含む。
もちろん、図32は、単に識別しやすいように、別個のデバイスとして、コンピューティング環境3200、ディスプレイ・デバイス3260、及び入力デバイス3250を示す。コンピューティング環境3200、ディスプレイ・デバイス3260、及び入力デバイス3250は、別個のデバイス(たとえば、ワイヤによってモニタ及びマウスに接続されたパーソナル・コンピュータ)であり得、単一のデバイス(たとえば、スマートフォン又はタブレットなど、タッチ・ディスプレイをもつモバイル・デバイス)、又はデバイスの任意の組合せ(たとえば、タッチスクリーン・ディスプレイ・デバイスに動作可能に結合されたコンピューティング・デバイス、単一のディスプレイ・デバイス及び入力デバイスに取り付けられた複数のコンピューティング・デバイスなど)に統合され得る。コンピューティング環境3200は、セットトップ・ボックス、パーソナル・コンピュータ、或いは1つ又は複数のサーバ、たとえば、ネットワーク化されたサーバのファーム、クラスタリングされたサーバ環境、又はコンピューティング・デバイスのクラウド・ネットワークであり得る。
説明される実施例に関して本発明の原理を説明及び図示したが、説明される実施例は、そのような原理から逸脱することなく構成及び詳細において修正され得ることを認識されよう。ソフトウェアにおいて示されている説明される実施例の要素は、ハードウェアにおいて実装され得、その逆も同様である。
本発明の原理が適用され得る多くの可能な実施例に鑑みて、本発明として、以下の特許請求の範囲及びその等価物の範囲及び趣旨内に入り得るようなすべての実施例を主張する。

Claims (20)

  1. ネットワーク化された共同ワークスペースにおけるウェブ・ソケット接続を介したデスクトップ共有のための方法であって、
    ローカル・コンピューティング・デバイスのユーザ・インターフェース上で、サーバ上にホストされ、ウェブ・ソケット接続を介して複数のコンピューティング・デバイス上の複数の参加者にとってアクセス可能な、共同ワークスペースの表現を送信するステップと、
    前記ローカル・コンピューティング・デバイスによって、前記共同ワークスペース内で前記ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部を共有するための要求、及び前記共同ワークスペースの前記表現内のエリアの選択を受信するステップと、
    前記ローカル・コンピューティング・デバイスによって、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部のビデオ・ストリームを出力するように構成されたストリーミング・オブジェクトを生成するステップと、
    前記ローカル・コンピューティング・デバイスによって、前記ウェブ・ソケット接続を介して、1つ又は複数のコマンドを前記サーバに送信するステップであって、前記1つ又は複数のコマンドが、前記ストリーミング・オブジェクト、及び前記選択されたエリアに対応する情報を含み、前記サーバに、前記選択されたエリアで前記共同ワークスペース内に前記ストリーミング・オブジェクトを挿入することを行わせるように構成される、送信するステップと
    を含む、方法。
  2. 前記ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部を共有するための要求、及び前記共同ワークスペースの前記表現内のエリアの選択を受信するステップが、
    前記ローカル・デスクトップの前記少なくとも一部の選択を受信するように構成されたソース選択インターフェースを、前記ユーザ・インターフェース内で送信するステップと、
    前記ローカル・デスクトップの前記少なくとも一部の選択を受信するステップと
    を含む、請求項1に記載の方法。
  3. 前記少なくとも一部が、前記ローカル・デスクトップ内のウィンドウ、前記ローカル・コンピューティング・デバイス上で実行するアプリケーションに対応するインターフェース、又は前記ローカル・デスクトップ、のうちの少なくとも1つを含む、請求項1に記載の方法。
  4. 前記サーバ上にホストされた共同ワークスペースの前記表現が、前記ローカル・コンピューティング・デバイス上で実行するローカル共同アプリケーションによって、前記ローカル・コンピューティング・デバイス上で送信され、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部のビデオ・ストリームを出力するように構成されたストリーミング・オブジェクトを生成するステップが、
    前記ローカル共同アプリケーションによって、前記ローカル共同アプリケーションとスクリーン・キャプチャ・プログラムとの間のアプリケーション・プログラミング・インターフェース(API)を介して、前記ローカル・コンピューティング・デバイス上で実行する前記スクリーン・キャプチャ・プログラムにソース識別子を求める要求を送信するステップと、
    前記スクリーン・キャプチャ・プログラムによって、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部のストリームを開始するステップであって、前記ストリームが、対応するソース識別子を有する、開始するステップと、
    前記スクリーン・キャプチャ・プログラムによって、前記ソース識別子を前記ローカル共同アプリケーションに送信するステップと
    前記ローカル共同アプリケーションによって、前記ソース識別子に少なくとも部分的に基づいて、前記ストリーミング・オブジェクトを生成するステップと
    を含む、請求項1に記載の方法。
  5. 前記挿入されたストリーミング・オブジェクトが、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部の前記ビデオ・ストリームを受信し、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部の前記ビデオ・ストリームを、前記ウェブ・ソケット接続を介して前記複数のコンピューティング・デバイスに送信するように構成される、請求項1に記載の方法。
  6. 前記ローカル・コンピューティング・デバイスの前記ユーザ・インターフェース上で、前記挿入されたストリーミング・オブジェクトを前記共同ワークスペースの前記表現内で送信するステップであって、前記挿入されたストリーミング・オブジェクトが、前記ビデオ・ストリームのソースのネットワーク・アドレスに関連付けられる、送信するステップと、
    前記ローカル・コンピューティング・デバイス上で実行する透明層によって、前記挿入されたストリーミング・オブジェクトに関連付けられたユーザ入力を検出するステップであって、前記ユーザ入力が、前記ローカル・デスクトップ内のロケーションに対応し、前記透明層が、オペレーティング・システム又は前記オペレーティング・システム上で実行するように構成された1つ若しくは複数のアプリケーションのうちの1つ又は複数とインターフェースするように構成されたアプリケーション・プログラミング・インターフェース(API)を備える、検出するステップと、
    前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記挿入されたストリーミング・オブジェクトに関連付けられた前記ネットワーク・アドレスが前記ローカル・コンピューティング・デバイスのネットワーク・アドレスに対応すると判断するステップと、
    前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記オペレーティング・システム又は前記オペレーティング・システム上で実行するように構成された1つ若しくは複数のアプリケーションのうちの1つ又は複数に、1つ又は複数の第2のコマンドを送信するステップであって、前記1つ又は複数の第2のコマンドが、前記ローカル・デスクトップ内の前記ロケーションで前記ユーザ入力を実行するように構成される、送信するステップと
    をさらに含む、請求項1に記載の方法。
  7. 前記複数のコンピューティング・デバイスにおけるリモート・コンピューティング・デバイスのリモート・ユーザ・インターフェース上で、前記挿入されたストリーミング・オブジェクトを前記共同ワークスペースのリモート表現内で送信するステップであって、前記挿入されたストリーミング・オブジェクトが、前記ビデオ・ストリームのソースのネットワーク・アドレスに関連付けられる、送信するステップと、
    前記リモート・コンピューティング・デバイス上で実行するリモート透明層によって、前記挿入されたストリーミング・オブジェクトに関連付けられたリモート・ユーザ入力を検出するステップであって、前記リモート・ユーザ入力が、前記ローカル・デスクトップ内のロケーションに対応し、前記透明層が、オペレーティング・システム又は前記オペレーティング・システム上で実行するように構成された1つ若しくは複数のアプリケーションのうちの1つ又は複数とインターフェースするように構成されたアプリケーション・プログラミング・インターフェース(API)を備える、検出するステップと、
    前記リモート・コンピューティング・デバイス上で実行する前記リモート透明層によって、前記挿入されたストリーミング・オブジェクトに関連付けられた前記ネットワーク・アドレスが前記リモート・コンピューティング・デバイスのネットワーク・アドレスに対応しないと判断するステップと、
    前記リモート・コンピューティング・デバイス上で実行する前記リモート透明層によって、1つ又は複数の第2のコマンドを、前記ウェブ・ソケット接続を介して前記ローカル・コンピューティング・デバイスに送信するステップであって、前記1つ又は複数の第2のコマンドが、前記ローカル・コンピューティング・デバイス上で実行するローカル透明層に、前記ローカル・デスクトップ内の前記ロケーションで前記ユーザ入力の実行を行わせるように構成される、送信するステップと
    をさらに含む、請求項1に記載の方法。
  8. ネットワーク化された共同ワークスペースにおけるウェブ・ソケット接続を介したデスクトップ共有のためのローカル・コンピューティング・デバイスであって、
    1つ又は複数のプロセッサと、
    前記1つ又は複数のプロセッサのうちの少なくとも1つに動作可能に結合され、前記1つ又は複数のプロセッサのうちの少なくとも1つによって実行されたとき、前記1つ又は複数のプロセッサのうちの少なくとも1つに、
    前記ローカル・コンピューティング・デバイスのユーザ・インターフェース上で、サーバ上にホストされ、ウェブ・ソケット接続を介して複数のコンピューティング・デバイス上の複数の参加者にとってアクセス可能な、共同ワークスペースの表現を送信することと、
    前記共同ワークスペース内で前記ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部を共有するための要求、及び前記共同ワークスペースの前記表現内のエリアの選択を受信することと、
    前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部のビデオ・ストリームを出力するように構成されたストリーミング・オブジェクトを生成することと、
    前記ウェブ・ソケット接続を介して、1つ又は複数のコマンドを前記サーバに送信することであって、前記1つ又は複数のコマンドが、前記ストリーミング・オブジェクト、及び前記選択されたエリアに対応する情報を含み、前記サーバに、前記選択されたエリアで前記共同ワークスペース内に前記ストリーミング・オブジェクトを挿入することを行わせるように構成される、送信することと
    を行わせる命令を記憶した、1つ又は複数のメモリと
    を備える、ローカル・コンピューティング・デバイス。
  9. 前記1つ又は複数のプロセッサのうちの少なくとも1つによって実行されたとき、前記1つ又は複数のプロセッサのうちの少なくとも1つに、前記ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部を共有するための要求、及び前記共同ワークスペースの前記表現内のエリアの選択を受信することを行わせる前記命令が、前記1つ又は複数のプロセッサのうちの少なくとも1つに、
    前記ローカル・デスクトップの前記少なくとも一部の選択を受信するように構成されたソース選択インターフェースを、前記ユーザ・インターフェース内で送信することと、
    前記ローカル・デスクトップの前記少なくとも一部の選択を受信することと
    をさらに行わせる、請求項8に記載のローカル・コンピューティング・デバイス。
  10. 前記少なくとも一部が、前記ローカル・デスクトップ内のウィンドウ、前記ローカル・コンピューティング・デバイス上で実行するアプリケーションに対応するインターフェース、又は前記ローカル・デスクトップ、のうちの少なくとも1つを含む、請求項8に記載のローカル・コンピューティング・デバイス。
  11. 前記サーバ上にホストされた共同ワークスペースの前記表現が、前記ローカル・コンピューティング・デバイス上で実行するローカル共同アプリケーションによって、前記ローカル・コンピューティング・デバイス上で送信され、前記1つ又は複数のプロセッサのうちの少なくとも1つによって実行されたとき、前記1つ又は複数のプロセッサのうちの少なくとも1つに、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部のビデオ・ストリームを出力するように構成されたストリーミング・オブジェクトを生成することを行わせる前記命令が、前記1つ又は複数のプロセッサのうちの少なくとも1つに、
    前記ローカル共同アプリケーションによって、前記ローカル共同アプリケーションとスクリーン・キャプチャ・プログラムとの間のアプリケーション・プログラミング・インターフェース(API)を介して、前記ローカル・コンピューティング・デバイス上で実行する前記スクリーン・キャプチャ・プログラムにソース識別子を求める要求を送信することと、
    前記スクリーン・キャプチャ・プログラムによって、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部のストリームを開始するステップであって、前記ストリームが、対応するソース識別子を有する、開始することと、
    前記スクリーン・キャプチャ・プログラムによって、前記ソース識別子を前記ローカル共同アプリケーションに送信することと
    前記ローカル共同アプリケーションによって、前記ソース識別子に少なくとも部分的に基づいて、前記ストリーミング・オブジェクトを生成することと
    をさらに行わせる、請求項8に記載のローカル・コンピューティング・デバイス。
  12. 前記挿入されたストリーミング・オブジェクトが、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部の前記ビデオ・ストリームを受信し、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部の前記ビデオ・ストリームを、前記ウェブ・ソケット接続を介して前記複数のコンピューティング・デバイスに送信するように構成される、請求項8に記載のローカル・コンピューティング・デバイス。
  13. 前記1つ又は複数のメモリのうちの少なくとも1つが、前記1つ又は複数のプロセッサのうちの少なくとも1つによって実行されたとき、前記1つ又は複数のプロセッサのうちの少なくとも1つに、
    前記ローカル・コンピューティング・デバイスの前記ユーザ・インターフェース上で、前記挿入されたストリーミング・オブジェクトを前記共同ワークスペースの前記表現内で送信することであって、前記挿入されたストリーミング・オブジェクトが、前記ビデオ・ストリームのソースのネットワーク・アドレスに関連付けられる、送信することと、
    前記ローカル・コンピューティング・デバイス上で実行する透明層によって、前記挿入されたストリーミング・オブジェクトに関連付けられたユーザ入力を検出することであって、前記ユーザ入力が、前記ローカル・デスクトップ内のロケーションに対応し、前記透明層が、オペレーティング・システム又は前記オペレーティング・システム上で実行するように構成された1つ若しくは複数のアプリケーションのうちの1つ又は複数とインターフェースするように構成されたアプリケーション・プログラミング・インターフェース(API)を備える、検出することと、
    前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記挿入されたストリーミング・オブジェクトに関連付けられた前記ネットワーク・アドレスが前記ローカル・コンピューティング・デバイスのネットワーク・アドレスに対応すると判断することと、
    前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記オペレーティング・システム又は前記オペレーティング・システム上で実行するように構成された1つ若しくは複数のアプリケーションのうちの1つ又は複数に、前記1つ又は複数の第2のコマンドを送信することであって、前記1つ又は複数の第2のコマンドが、前記ローカル・デスクトップ内の前記ロケーションで前記ユーザ入力を実行するように構成される、送信することと
    を行わせる命令をさらに記憶した、請求項8に記載のローカル・コンピューティング・デバイス。
  14. ローカル・コンピューティング・デバイスによって実行されたとき、前記ローカル・コンピューティング・デバイスに、
    ローカル・コンピューティング・デバイスのユーザ・インターフェース上で、サーバ上にホストされ、ウェブ・ソケット接続を介して複数のコンピューティング・デバイス上の複数の参加者にとってアクセス可能な、共同ワークスペースの表現を送信することと、
    前記共同ワークスペース内で前記ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部を共有するための要求、及び前記共同ワークスペースの前記表現内のエリアの選択を受信することと、
    前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部のビデオ・ストリームを出力するように構成されたストリーミング・オブジェクトを生成することと、
    前記ウェブ・ソケット接続を介して、1つ又は複数のコマンドを前記サーバに送信することであって、前記1つ又は複数のコマンドが、前記ストリーミング・オブジェクト、及び前記選択されたエリアに対応する情報を含み、前記サーバに、前記選択されたエリアで前記共同ワークスペース内に前記ストリーミング・オブジェクトを挿入することを行わせるように構成される、送信することと
    を行わせるコンピュータ可読命令を記憶する、少なくとも1つの非一時的コンピュータ可読媒体。
  15. 前記ローカル・コンピューティング・デバイスによって実行されたとき、前記ローカル・コンピューティング・デバイスに、前記ローカル・コンピューティング・デバイスのローカル・デスクトップの少なくとも一部を共有するための要求、及び前記共同ワークスペースの前記表現内のエリアの選択を受信することを行わせる前記命令が、前記ローカル・コンピューティング・デバイスに、
    前記ローカル・デスクトップの前記少なくとも一部の選択を受信するように構成されたソース選択インターフェースを、前記ユーザ・インターフェース内で送信することと、
    前記ローカル・デスクトップの前記少なくとも一部の選択を受信することと
    をさらに行わせる、請求項14に記載の少なくとも1つの非一時的コンピュータ可読媒体。
  16. 前記少なくとも一部が、前記ローカル・デスクトップ内のウィンドウ、前記ローカル・コンピューティング・デバイス上で実行するアプリケーションに対応するインターフェース、又は前記ローカル・デスクトップ、のうちの少なくとも1つを含む、請求項14に記載の少なくとも1つの非一時的コンピュータ可読媒体。
  17. 前記サーバ上にホストされた共同ワークスペースの前記表現が、前記ローカル・コンピューティング・デバイス上で実行するローカル共同アプリケーションによって、前記ローカル・コンピューティング・デバイス上で送信され、前記ローカル・コンピューティング・デバイスによって実行されたとき、前記ローカル・コンピューティング・デバイスに、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部のビデオ・ストリームを出力するように構成されたストリーミング・オブジェクトを生成することを行わせる前記命令が、前記ローカル・コンピューティング・デバイスに、
    前記ローカル共同アプリケーションによって、前記ローカル共同アプリケーションとスクリーン・キャプチャ・プログラムとの間のアプリケーション・プログラミング・インターフェース(API)を介して、前記ローカル・コンピューティング・デバイス上で実行する前記スクリーン・キャプチャ・プログラムにソース識別子を求める要求を送信することと、
    前記スクリーン・キャプチャ・プログラムによって、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部のストリームを開始するステップであって、前記ストリームが、対応するソース識別子を有する、開始することと、
    前記スクリーン・キャプチャ・プログラムによって、前記ソース識別子を前記ローカル共同アプリケーションに送信することと
    前記ローカル共同アプリケーションによって、前記ソース識別子に少なくとも部分的に基づいて、前記ストリーミング・オブジェクトを生成することと
    をさらに行わせる、請求項14に記載の少なくとも1つの非一時的コンピュータ可読媒体。
  18. 前記挿入されたストリーミング・オブジェクトが、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部の前記ビデオ・ストリームを受信し、前記ローカル・コンピューティング・デバイスの前記ローカル・デスクトップの前記少なくとも一部の前記ビデオ・ストリームを、前記ウェブ・ソケット接続を介して前記複数のコンピューティング・デバイスに送信するように構成される、請求項14に記載の少なくとも1つの非一時的コンピュータ可読媒体。
  19. 前記ローカル・コンピューティング・デバイスによって実行されたとき、前記ローカル・コンピューティング・デバイスに、
    前記ローカル・コンピューティング・デバイスの前記ユーザ・インターフェース上で、前記挿入されたストリーミング・オブジェクトを前記共同ワークスペースの前記表現内で送信することであって、前記挿入されたストリーミング・オブジェクトが、前記ビデオ・ストリームのソースのネットワーク・アドレスに関連付けられる、送信することと、
    前記ローカル・コンピューティング・デバイス上で実行する透明層によって、前記挿入されたストリーミング・オブジェクトに関連付けられたユーザ入力を検出することであって、前記ユーザ入力が、前記ローカル・デスクトップ内のロケーションに対応し、前記透明層が、オペレーティング・システム又は前記オペレーティング・システム上で実行するように構成された1つ若しくは複数のアプリケーションのうちの1つ又は複数とインターフェースするように構成されたアプリケーション・プログラミング・インターフェース(API)を備える、検出することと、
    前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記挿入されたストリーミング・オブジェクトに関連付けられた前記ネットワーク・アドレスが前記ローカル・コンピューティング・デバイスのネットワーク・アドレスに対応すると判断することと、
    前記ローカル・コンピューティング・デバイス上で実行する前記透明層によって、前記オペレーティング・システム又は前記オペレーティング・システム上で実行するように構成された1つ若しくは複数のアプリケーションのうちの1つ又は複数に、1つ又は複数の第2のコマンドを送信することであって、前記1つ又は複数の第2のコマンドが、前記ローカル・デスクトップ内の前記ロケーションで前記ユーザ入力を実行するように構成される、送信することと
    を行わせるコンピュータ可読命令をさらに記憶する、請求項14に記載の少なくとも1つの非一時的コンピュータ可読媒体。
  20. 前記複数のコンピューティング・デバイスにおけるリモート・コンピューティング・デバイスによって実行されたとき、前記リモート・コンピューティング・デバイスに、
    前記リモート・コンピューティング・デバイスのリモート・ユーザ・インターフェース上で、前記挿入されたストリーミング・オブジェクトを前記共同ワークスペースのリモート表現内で送信することであって、前記挿入されたストリーミング・オブジェクトが、前記ビデオ・ストリームのソースのネットワーク・アドレスに関連付けられる、送信することと、
    前記リモート・コンピューティング・デバイス上で実行するリモート透明層によって、前記挿入されたストリーミング・オブジェクトに関連付けられたリモート・ユーザ入力を検出することであって、前記リモート・ユーザ入力が、前記ローカル・デスクトップ内のロケーションに対応し、前記透明層が、オペレーティング・システム又は前記オペレーティング・システム上で実行するように構成された1つ若しくは複数のアプリケーションのうちの1つ又は複数とインターフェースするように構成されたアプリケーション・プログラミング・インターフェース(API)を備える、検出することと、
    前記リモート・コンピューティング・デバイス上で実行する前記リモート透明層によって、前記挿入されたストリーミング・オブジェクトに関連付けられた前記ネットワーク・アドレスが前記リモート・コンピューティング・デバイスのネットワーク・アドレスに対応しないと判断するステップと、
    前記リモート・コンピューティング・デバイス上で実行する前記リモート透明層によって、1つ又は複数の第2のコマンドを、前記ウェブ・ソケット接続を介して前記ローカル・コンピューティング・デバイスに送信することであって、前記1つ又は複数の第2のコマンドが、前記ローカル・コンピューティング・デバイス上で実行するローカル透明層に、前記ローカル・デスクトップ内の前記ロケーションで前記ユーザ入力の実行を行わせるように構成される、送信することと
    を行わせるコンピュータ可読命令をさらに記憶する、請求項14に記載の少なくとも1つの非一時的コンピュータ可読媒体。
JP2020566236A 2018-06-01 2019-05-30 ネットワーク化された共同ワークスペースにおけるウェブ・ソケット接続を介したデスクトップ共有のための方法、装置及びコンピュータ可読媒体 Pending JP2021525910A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/995,878 US11412012B2 (en) 2017-08-24 2018-06-01 Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace
US15/995,878 2018-06-01
PCT/EP2019/064131 WO2019229208A1 (en) 2018-06-01 2019-05-30 Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace

Publications (1)

Publication Number Publication Date
JP2021525910A true JP2021525910A (ja) 2021-09-27

Family

ID=66821200

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020566236A Pending JP2021525910A (ja) 2018-06-01 2019-05-30 ネットワーク化された共同ワークスペースにおけるウェブ・ソケット接続を介したデスクトップ共有のための方法、装置及びコンピュータ可読媒体

Country Status (6)

Country Link
EP (1) EP3803558A1 (ja)
JP (1) JP2021525910A (ja)
KR (1) KR20210018353A (ja)
CN (1) CN112204512A (ja)
BR (1) BR112020024441A2 (ja)
WO (1) WO2019229208A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230127644A1 (en) * 2021-10-25 2023-04-27 Wei Li Methods, devices, and media for managing a virtual workspace

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120010995A1 (en) * 2008-10-23 2012-01-12 Savnor Technologies Web content capturing, packaging, distribution
US10860279B2 (en) * 2009-11-24 2020-12-08 Clearslide, Inc. Method and system for browser-based screen sharing
CA2722460A1 (en) * 2010-11-26 2012-05-26 Centre De Recherche Informatique De Montreal Screen sharing and video conferencing system and method
US8745266B2 (en) * 2011-06-30 2014-06-03 Citrix Systems, Inc. Transparent layer 2 redirection of request to single sign in service based on applying policy to content of request
US9152376B2 (en) * 2011-12-01 2015-10-06 At&T Intellectual Property I, L.P. System and method for continuous multimodal speech and gesture interaction
US20140101571A1 (en) * 2012-10-04 2014-04-10 Lucid Dream Software, Inc. Shared collaborative environment
US10484189B2 (en) * 2013-11-13 2019-11-19 Microsoft Technology Licensing, Llc Enhanced collaboration services
US10747418B2 (en) * 2015-07-24 2020-08-18 Coscreen, Inc. Frictionless interface for virtual collaboration, communication and cloud computing

Also Published As

Publication number Publication date
EP3803558A1 (en) 2021-04-14
KR20210018353A (ko) 2021-02-17
CN112204512A (zh) 2021-01-08
BR112020024441A2 (pt) 2021-03-23
WO2019229208A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
US11412012B2 (en) Method, apparatus, and computer-readable medium for desktop sharing over a web socket connection in a networked collaboration workspace
US11483376B2 (en) Method, apparatus, and computer-readable medium for transmission of files over a web socket connection in a networked collaboration workspace
JP5442727B2 (ja) ユーザーインターフェイス表示上での教示動画の表示
US9965039B2 (en) Device and method for displaying user interface of virtual input device based on motion recognition
US9542010B2 (en) System for interacting with objects in a virtual environment
US20190065012A1 (en) Method, apparatus, and computer-readable medium for propagating enriched note data objects over a web socket connection in a networked collaboration workspace
US20100293499A1 (en) Rendering to a device desktop of an adaptive input device
JP2020532007A (ja) ハードウェアとソフトウェアとの汎用インタフェースを実現する方法、装置、及びコンピュータ可読媒体
JP2021517302A (ja) ネットワーク化された共同ワークスペースにおけるウェブ・ソケット接続を介したファイルの送信のための方法、装置、及びコンピュータ可読媒体
JP2021525910A (ja) ネットワーク化された共同ワークスペースにおけるウェブ・ソケット接続を介したデスクトップ共有のための方法、装置及びコンピュータ可読媒体
US10708391B1 (en) Delivery of apps in a media stream
JP2021533456A (ja) ネットワーク化された共同ワークスペースにおいてウェブ・ソケット接続を介して拡充ノート・データ・オブジェクトを伝えるための方法、装置及びコンピュータ可読媒体
US11334220B2 (en) Method, apparatus, and computer-readable medium for propagating cropped images over a web socket connection in a networked collaboration workspace
JP2021523484A (ja) ネットワーク化された共同ワークスペースにおいてウェブ・ソケット接続を通じてクロップ画像を伝えるための方法、装置、及びコンピュータ可読媒体
KR20210011046A (ko) 동작인식을 기반으로 하는 가상 입력장치의 사용자 인터페이스(ui)를 표시하는 장치 및 방법