本開示では、概して、ワイヤレスシンクデバイスがワイヤレスシンクデバイスと通信することができるシステムについて説明する。通信セッションの一部として、ワイヤレスソースデバイスが、ワイヤレスシンクデバイスにオーディオおよびビデオデータを送信することができ、ワイヤレスシンクデバイスは、ワイヤレスシンクデバイスにおいて受信されたユーザ入力をワイヤレスソースデバイスに送信することができる。このようにして、ワイヤレスシンクデバイスのユーザが、ワイヤレスソースデバイスを制御し、ワイヤレスソースデバイスからワイヤレスシンクデバイスに送信されているコンテンツを制御することができる。
図1Aは、本開示の技法のうちの1つまたは複数を実装し得る例示的なソース/シンクシステム100を示すブロック図である。図1Aに示すように、システム100は、通信チャネル150を介してシンクデバイス160と通信するソースデバイス120を含む。ソースデバイス120は、オーディオ/ビデオ(A/V)データ121を記憶するメモリと、ディスプレイ122と、スピーカー123と、(エンコーダ124とも呼ばれる)オーディオ/ビデオエンコーダ124と、オーディオ/ビデオ制御モジュール125と、送信機/受信機(TX/RX)ユニット126とを含み得る。シンクデバイス160は、ディスプレイ162と、スピーカー163と、(デコーダ164とも呼ばれる)オーディオ/ビデオデコーダ164と、送信機/受信機ユニット166と、ユーザ入力(UI)デバイス167と、ユーザ入力処理モジュール(UIPM:user input processing module)168とを含み得る。図示した構成要素は、ソース/シンクシステム100のための1つの例示的な構成をなすにすぎない。他の構成は、図示した構成要素よりも少数の構成要素を含み得るか、または図示した構成要素以外の追加の構成要素を含み得る。
図1Aの例では、ソースデバイス120は、オーディオ/ビデオデータ121のビデオ部分をディスプレイ122上で表示することができ、オーディオ/ビデオデータ121のオーディオ部分をスピーカー123上で出力することができる。オーディオ/ビデオデータ121は、ソースデバイス120にローカルに記憶され、ファイルサーバ、ハードドライブ、外部メモリ、ブルーレイ(登録商標)ディスク、DVD、または他の物理記憶媒体など、外部記憶媒体からアクセスされ得るか、あるいはインターネットなどのネットワーク接続を介してソースデバイス120にストリーミングされ得る。いくつかの事例では、オーディオ/ビデオデータ121は、ソースデバイス120のカメラとマイクロフォンとを介してリアルタイムでキャプチャされ得る。オーディオ/ビデオデータ121は、動画、テレビ番組、または音楽など、マルチメディアコンテンツを含み得るが、ソースデバイス120によって生成されたリアルタイムコンテンツをも含み得る。そのようなリアルタイムコンテンツは、たとえば、ソースデバイス120上で動作しているアプリケーションによって生成されるか、または、たとえば、ビデオテレフォニーセッションの一部として、キャプチャされたビデオデータであり得る。より詳細に説明するように、そのようなリアルタイムコンテンツは、いくつかの事例では、ユーザが選択するために利用可能なユーザ入力オプションのビデオフレームを含み得る。いくつかの事例では、オーディオ/ビデオデータ121は、ビデオのフレーム上にオーバーレイされたユーザ入力オプションを有する動画またはTV番組のビデオフレームなど、異なるタイプのコンテンツの組合せであるビデオフレームを含み得る。
ディスプレイ122とスピーカー123とを介してオーディオ/ビデオデータ121をローカルでレンダリングすることに加えて、ソースデバイス120のオーディオ/ビデオエンコーダ124はオーディオ/ビデオデータ121を符号化することができ、送信機/受信機ユニット126は、符号化されたデータを通信チャネル150を介してシンクデバイス160に送信することができる。シンクデバイス160の送信機/受信機ユニット166は符号化されたデータを受信し、オーディオ/ビデオデコーダ164は、符号化されたデータを復号し、復号されたデータをディスプレイ162とスピーカー163とを介して出力する。このようにして、ディスプレイ122とスピーカー123とによってレンダリングされているオーディオおよびビデオデータは、ディスプレイ162とスピーカー163とによって同時にレンダリングされ得る。オーディオデータおよびビデオデータはフレームで構成され得、オーディオフレームは、レンダリングされるとき、ビデオフレームと時間同期され得る。
オーディオ/ビデオエンコーダ124およびオーディオ/ビデオデコーダ164は、代替的にMPEG−4,Part10,Advanced Video Coding(AVC)と呼ばれるITU−T H.264規格、またはH.265規格と呼ばれることがある新生の高効率ビデオコーディング(HEVC:high efficiency video coding)規格など、任意の数のオーディオおよびビデオ圧縮規格を実装し得る。多くの他のタイプのプロプライエタリなまたは規格化された圧縮技法も使用され得る。概して、オーディオ/ビデオデコーダ164は、オーディオ/ビデオエンコーダ124の逆のコーディング演算を実行するように構成される。図1Aには示されていないが、いくつかの態様では、A/Vエンコーダ124およびA/Vデコーダ164は、それぞれオーディオエンコーダおよびデコーダと統合され得、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。
以下でより詳細に説明するように、A/Vエンコーダ124は、上記で説明したようにビデオ圧縮規格を実装することに加えて、他の符号化機能をも実行し得る。たとえば、A/Vエンコーダ124は、A/Vデータ121がシンクデバイス160に送信されるより前に、A/Vデータ121に様々なタイプのメタデータを追加し得る。いくつかの事例では、A/Vデータ121は、符号化された形態でソースデバイス120に記憶されるかまたはソースデバイス120において受信され、したがってA/Vエンコーダ124によるさらなる圧縮を必要としないことがある。
図1Aは、通信チャネル150がオーディオペイロードデータとビデオペイロードデータとを別個に搬送することを示しているが、いくつかの事例では、ビデオペイロードデータとオーディオペイロードデータとが共通のデータストリームの一部であり得ることを理解されたい。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。オーディオ/ビデオエンコーダ124およびオーディオ/ビデオデコーダ164はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、あるいはそれらの任意の組合せとして実装され得る。オーディオ/ビデオエンコーダ124およびオーディオ/ビデオデコーダ164の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。したがって、ソースデバイス120およびシンクデバイス160の各々は、本開示の技法のうちの1つまたは複数を実行するように構成された専用の機械を備え得る。
ディスプレイ122およびディスプレイ162は、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、発光ダイオード(LED)ディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なビデオ出力デバイスのいずれかを備え得る。これらまたは他の例では、ディスプレイ122および162は、それぞれ発光型ディスプレイ(emissive display)または透過型ディスプレイ(transmissive display)であり得る。ディスプレイ122およびディスプレイ162はまた、それらが同時に入力デバイスとディスプレイデバイスの両方であるような、タッチディスプレイであり得る。そのようなタッチディスプレイは、ユーザがそれぞれのデバイスにユーザ入力を与えることを可能にする、静電容量式、抵抗式、または他のタイプのタッチパネルであり得る。
スピーカー123は、ヘッドフォン、シングルスピーカーシステム、マルチスピーカーシステム、またはサラウンドサウンドシステムなど、様々なオーディオ出力デバイスのいずれかを備え得る。さらに、ディスプレイ122およびスピーカー123はソースデバイス120の一部として示されており、ディスプレイ162およびスピーカー163はシンクデバイス160の一部として示されているが、ソースデバイス120およびシンクデバイス160は、実際は複数のデバイスのシステムであり得る。一例として、ディスプレイ162はテレビジョンであり得、スピーカー163はサラウンドサウンドシステムであり得、デコーダ164は、ディスプレイ162とスピーカー163とにワイヤード接続またはワイヤレス接続された外部ボックスの一部であり得る。他の例では、シンクデバイス160は、タブレットコンピュータまたはスマートフォンなど、単一のデバイスであり得る。さらに他の場合、ソースデバイス120およびシンクデバイス160は同様のデバイスであり、たとえば、両方がスマートフォン、タブレットコンピュータなどである。この場合、一方のデバイスはソースとして動作し得、他方はシンクとして動作し得る。これらの役割が後続の通信セッションでは逆になることさえある。さらに他の場合、ソースデバイスは、スマートフォン、ラップトップまたはタブレットコンピュータなど、モバイルデバイスを備え得、シンクデバイスは、(たとえば、AC電源コードを用いた)より固定のデバイスを備え得、その場合、ソースデバイスは、シンクデバイスを介した大群衆への提示のためにオーディオおよびビデオデータを配信し得る。
送信機/受信機ユニット126および送信機/受信機ユニット166は、それぞれ、様々なミキサ、フィルタ、増幅器、および信号変調のために設計された他の構成要素、ならびに、1つまたは複数のアンテナ、およびデータを送信し、受信するために設計された他の構成要素を含み得る。通信チャネル150は、概して、ビデオデータをソースデバイス120からシンクデバイス160に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル150は、通常、Wi−Fi、Bluetooth(登録商標)などと同様の比較的短距離の通信チャネルである。ただし、通信チャネル150は、この点において必ずしも限定されるとは限らず、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。他の例では、通信チャネル150は、ワイヤードまたはワイヤレスローカルエリアネットワーク、ワイドエリアネットワーク、あるいはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成することさえある。さらに、通信チャネル150は、ピアツーピアリンクを作成するためにソースデバイス120とシンクデバイス160とによって使用され得る。ソースデバイス120およびシンクデバイス160は、IEEE802.11規格ファミリーからの規格などの通信プロトコルを使用して通信チャネル150を介して通信し得る。ソースデバイス120およびシンクデバイス160は、たとえば、ソースデバイス120およびシンクデバイス160が、ワイヤレスアクセスポイントまたはいわゆるホットスポットなど、中間物を使用せずに互いと直接通信するように、Wi−Fi Direct規格に従って通信し得る。ソースデバイス120およびシンクデバイス160はまた、ネットワーク輻輳を回避または低減するためにトンネルドダイレクトリンクセットアップ(TLDS:tunneled direct link setup)を確立し得る。本開示の技法について時々Wi−Fiに関して説明することがあるが、これらの技法の態様は他の通信プロトコルにも適合し得ることが企図される。限定ではなく例として、ソースデバイス120とシンクデバイスとの間のワイヤレス通信は直交周波数分割多重化(OFDM)技法を利用し得る。限定はしないが、時分割多元接続(TDMA)、周波数分割多元接続(FDMA)、符号分割多元接続(CDMA)、あるいはOFDM、FDMA、TDMAおよび/またはCDMAの任意の組合せを含む、多種多様な他のワイヤレス通信技法も使用され得る。WiFi DirectおよびTDLSは、比較的短距離の通信セッションをセットアップすることを目的とする。このコンテキストでは、比較的短距離は、たとえば、70メートル未満を指すことがあるが、雑音の多いまたは遮るもののある環境では、デバイス間の距離は、35メートル未満など、さらに短いことがある。
ソースデバイス120から受信されたデータを復号し、レンダリングすることに加えて、シンクデバイス160は、ユーザ入力デバイス167からユーザ入力をも受信することができる。ユーザ入力デバイス167は、たとえば、キーボード、マウス、トラックボールまたはトラックパッド、タッチスクリーン、ボイスコマンド認識モジュール、あるいは他のそのようなユーザ入力デバイスであり得る。UIPM168は、ユーザ入力デバイス167によって受信されたユーザ入力コマンドを、ソースデバイス120が解釈することが可能であるデータパケット構造にフォーマットする。そのようなデータパケットは、送信機/受信機166によって、通信チャネル150を介してソースデバイス120に送信される。送信機/受信機ユニット126はデータパケットを受信し、A/V制御モジュール125は、ユーザ入力デバイス167によって受信されたユーザ入力コマンドを解釈するために、データパケットをパースする。データパケット中で受信されたコマンドに基づいて、A/V制御モジュール125は、符号化および送信されているコンテンツを変更することができる。このようにして、シンクデバイス160のユーザが、リモートで、およびソースデバイス120と直接対話することなしに、ソースデバイス120によって送信されているオーディオペイロードデータとビデオペイロードデータとを制御することができる。シンクデバイス160のユーザがソースデバイス120に送信し得るコマンドのタイプの例は、オーディオおよびビデオデータを巻き戻し、早送りし、中断し、および再生するためのコマンド、ならびにズーム、回転、スクロールのためのコマンドなどを含む。また、ユーザは、たとえばオプションのメニューから、選択を行い、その選択をソースデバイス120に送信し得る。
さらに、シンクデバイス160のユーザは、ソースデバイス120上のアプリケーションを起動し、制御することが可能であり得る。たとえば、シンクデバイス160のユーザは、ソースデバイス120に記憶された写真編集アプリケーションを起動し、そのアプリケーションを使用して、ソースデバイス120にローカルに記憶された写真を編集することが可能であり得る。シンクデバイス160は、その写真が実際はソースデバイス120上で編集されている間、その写真がシンクデバイス160上でローカルで編集されているように見え、感じられる、ユーザエクスペリエンスをユーザにもたらし得る。そのような構成を使用して、デバイスユーザは、いくつかのデバイスとともに使用する1つのデバイスの機能を活用することが可能であり得る。たとえば、ソースデバイス120は、大量のメモリとハイエンド処理能力とをもつスマートフォンであり得る。ソースデバイス120のユーザは、そのスマートフォンを、スマートフォンが一般に使用されるすべての設定と状況とにおいて使用し得る。しかしながら、動画を見るとき、ユーザは、より大きいディスプレイスクリーンをもつデバイス上で動画を見ることを望み得、その場合、シンクデバイス160は、タブレットコンピュータあるいはさらに大きいディスプレイデバイスまたはテレビジョンであり得る。電子メールを送ることまたは電子メールに応答することを希望するとき、ユーザは、キーボードをもつデバイスを使用することを望み得、その場合、シンクデバイス160はラップトップであり得る。どちらの場合にも、ユーザはシンクデバイスと対話しているが、処理の大半は依然としてソースデバイス120(この例ではスマートフォン)によって実行され得る。この特定の動作コンテキストでは、処理の大半がソースデバイス120によって実行されるので、シンクデバイス160は、シンクデバイス160が、ソースデバイス120によって行われている処理を行うように依頼されている場合よりも、少数のリソースを用いた、より低コストのデバイスであり得る。いくつかの例では、ソースデバイスとシンクデバイスの両方が(タッチスクリーンコマンドなどの)ユーザ入力を受信することが可能であり得、本開示の技法は、所与のセッションにおいてそれらのデバイスの機能をネゴシエートおよび/または識別することによって、二方向対話を可能にし得る。
一部の構成では、A/V制御モジュール125は、ソースデバイス125のオペレーティングシステムによって実行されているオペレーティングシステムプロセスであり得る。しかしながら、他の構成では、A/V制御モジュール125は、ソースデバイス120上で動作しているアプリケーションのソフトウェアプロセスであり得る。そのような構成では、ユーザ入力コマンドはソフトウェアプロセスによって解釈され得、その結果、シンクデバイス160のユーザは、ソースデバイス120上で動作しているオペレーティングシステムとは対照的に、ソースデバイス120上で動作しているアプリケーションと直接対話している。オペレーティングシステムとは対照的にアプリケーションと直接対話することによって、シンクデバイス160のユーザは、ソースデバイス120のオペレーティングシステムに対してネイティブでないコマンドのライブラリへのアクセスを有し得る。さらに、アプリケーションと直接対話することにより、コマンドは、異なるプラットフォーム上で動作しているデバイスによってより容易に送信され、処理されることが可能になり得る。
ソースデバイス120は、ワイヤレスシンクデバイス160において適用されるユーザ入力に応答することができる。そのような対話型アプリケーション設定では、ワイヤレスシンクデバイス160において適用されるユーザ入力は通信チャネル150を介してワイヤレスディスプレイソースに送られ得る。一例では、シンクデバイス160が、シンクデバイス160において適用されるユーザ入力をソースデバイス120に送信することを可能にするために、ユーザインターフェースバックチャネル(UIBC:user interface back channel)とも呼ばれる逆方向チャネルアーキテクチャが実装され得る。逆方向チャネルアーキテクチャは、ユーザ入力をトランスポートするための上位レイヤメッセージと、シンクデバイス160およびソースデバイス120においてユーザインターフェース機能をネゴシエートするための下位レイヤフレームとを含み得る。UIBCは、シンクデバイス160とソースデバイス120との間のインターネットプロトコル(IP)トランスポートレイヤの上に常駐し得る。このようにして、UIBCは、開放型システム間相互接続(OSI)通信モデルにおいてトランスポートレイヤより上にあり得る。一例では、OSI通信は、7つのレイヤ(1−物理、2−データリンク、3−ネットワーク、4−トランスポート、5−セッション、6−プレゼンテーション、および7−アプリケーション)を含む。この例では、トランスポートレイヤより上にあることは、レイヤ5、6、および7を指す。ユーザ入力データを含んでいるデータパケットの信頼できる送信と順次配信とを促進するために、UIBCは、伝送制御プロトコル/インターネットプロトコル(TCP/IP)またはユーザデータグラムプロトコル(UDP)など、他のパケットベース通信プロトコルの上で動作するように構成され得る。UDPおよびTCPは、OSIレイヤアーキテクチャにおいて並列に動作することができる。TCP/IPにより、シンクデバイス160およびソースデバイス120は、パケットロスの場合、再送信技法を実装することが可能になることがある。
場合によっては、ソースデバイス120に位置するユーザ入力インターフェースとシンクデバイス160に位置するユーザ入力インターフェースとの間の不一致があり得る。そのような不一致によってもたらされる潜在的な問題を解決し、そのような状況下での良好なユーザエクスペリエンスを促進するために、ユーザ入力インターフェース機能ネゴシエーションが、通信セッションを確立するより前に、または通信セッション全体にわたって様々な時間に、ソースデバイス120とシンクデバイス160との間で行われ得る。このネゴシエーションプロセスの一部として、ソースデバイス120とシンクデバイス160とは、ネゴシエートされたスクリーン解像度に関して同意することができる。シンクデバイス160が、ユーザ入力に関連付けられた座標データを送信するとき、シンクデバイス160は、ディスプレイ162から取得された座標データを、ネゴシエートされたスクリーン解像度に一致するようにスケーリングすることができる。一例では、シンクデバイス160が1280×720解像度を有し、ソースデバイス120が1600×900解像度を有する場合、それらのデバイスは、たとえば、それらのネゴシエートされた解像度として1280×720を使用し得る。ネゴシエートされた解像度はシンクデバイス160の解像度に基づいて選択され得るが、ソースデバイス120の解像度または何らかの他の解像度も使用され得る。1280×720のシンクデバイスが使用される例では、シンクデバイス160は、取得されたx座標をソースデバイス120に送信するより前に、その座標を1600/1280の割合でスケーリングすることができ、同様に、シンクデバイス160は、取得されたy座標をソースデバイス120に送信するより前に、その座標を900/720でスケーリングすることができる。他の構成では、ソースデバイス120は、取得された座標をネゴシエートされた解像度に合わせてスケーリングすることができる。そのスケーリングは、シンクデバイス160がソースデバイス120よりも高い解像度のディスプレイを使用するのか、またはその逆であるのかに基づいて、座標範囲を増加または減少させ得る。
さらに、いくつかの事例では、シンクデバイス160における解像度は、通信セッション中に変動し、潜在的にディスプレイ122とディスプレイ162との間の不一致をもたらし得る。ユーザエクスペリエンスを改善し、適切な機能を保証するために、ソース/シンクシステム100は、スクリーン正規化のための技法を実装することによって、ユーザ対話不一致を低減するかまたは防ぐための技法を実装し得る。ソースデバイス120のディスプレイ122とシンクデバイス160のディスプレイ162とは、異なる解像度および/または異なるアスペクト比を有し得る。さらに、いくつかの設定では、シンクデバイス160のユーザは、ソースデバイス120から受信されたビデオデータが、シンクデバイス160のディスプレイ162の全部よりも小さい部分をカバーするウィンドウにおいてレンダリングされるように、ソースデバイス120から受信されたビデオデータのためのディスプレイウィンドウをサイズ変更する能力を有し得る。別の例示的な設定では、シンクデバイス160のユーザは、横長モードまたは縦長モードのいずれかでコンテンツを閲覧するオプションを有し得、それらのモードの各々は、一意の座標と異なるアスペクト比とを有する。そのような状況では、マウスクリックまたはタッチイベントがどこで行われるかについての座標など、シンクデバイス160において受信されたユーザ入力に関連付けられた座標は、その座標への修正なしにソースデバイス120によって処理されることが可能でないことがある。したがって、本開示の技法は、シンクデバイス160において受信されたユーザ入力の座標を、ソースデバイス120に関連付けられた座標にマッピングすることを含み得る。このマッピングは、本明細書では正規化とも呼ばれ、以下でさらに詳細に説明するように、このマッピングはシンクベースまたはソースベースのいずれかであり得る。
シンクデバイス160によって受信されるユーザ入力は、たとえばドライバレベルで、UIモジュール167によって受信され、シンクデバイス160のオペレーティングシステムに渡され得る。シンクデバイス160上のオペレーティングシステムは、ディスプレイ表面上のどこでユーザ入力が行われたかに関連付けられた座標(xSINK,ySINK)を受信することができる。この例では、(xSINK,ySINK)は、マウスクリックまたはタッチイベントが行われたディスプレイ162の座標であり得る。ディスプレイ162上でレンダリングされているディスプレイウィンドウは、ディスプレイウィンドウのサイズを記述するx座標長さ(LDW)とy座標幅(WDW)とを有することがある。ディスプレイウィンドウは、ディスプレイウィンドウのロケーションを記述する左上隅座標(aDW,bDW)をも有することがある。LDW、WDW、および左上座標(aDW,bDW)に基づいて、ディスプレイウィンドウによってカバーされるディスプレイ162の部分が判断され得る。たとえば、ディスプレイウィンドウの右上隅は座標(aDW+LDW,bDW)に位置し得、ディスプレイウィンドウの左下隅は座標(aDW,bDW+WDW)に位置し得、ディスプレイウィンドウの右下隅は座標(aDW+LDW,bDW+WDW)に位置し得る。シンクデバイス160は、入力がディスプレイウィンドウ内の座標において受信された場合、その入力をUIBC入力として処理することができる。言い換えれば、関連付けられた座標(xSINK,ySINK)での入力は、以下の条件が満たされる場合、UIBC入力として処理され得る。
ユーザ入力がUIBC入力であると判断した後に、その入力に関連付けられた座標は、ソースデバイス120に送信されるより前に、UIPM168によって正規化され得る。ディスプレイウィンドウ外にあると判断された入力は、非UIBC入力としてシンクデバイス160によってローカルで処理され得る。
上述のように、入力座標の正規化は、ソースベースまたはシンクベースのいずれかであり得る。シンクベースの正規化を実装するとき、ソースデバイス120は、ディスプレイ122のためのサポートされるディスプレイ解像度(LSRC,WSRC)を、ビデオデータとともにまたはビデオデータとは無関係に、シンクデバイス160に送ることができる。サポートされるディスプレイ解像度は、たとえば、機能ネゴシエーションセッションの一部として送信され得るか、または通信セッション中の別の時間に送信され得る。シンクデバイス160は、ディスプレイ162のためのディスプレイ解像度(LSINK,WSINK)と、ソースデバイス120から受信されたコンテンツを表示するウィンドウのためのディスプレイウィンドウ解像度(LDW,WDW)と、ディスプレイウィンドウのための左上隅座標(aDW,bDW)とを判断することができる。上記で説明したように、ユーザ入力に対応する座標(xSINK,ySINK)がディスプレイウィンドウ内にあると判断されたとき、シンクデバイス160のオペレーティングシステムは、変換関数を使用して座標(xSINK,ySINK)をソース座標(xSRC,ySRC)にマッピングすることができる。(xSINK,ySINK)を(xSRC,ySRC)に変換するための例示的な変換関数は以下の通りであり得る。
したがって、受信されたユーザ入力に対応する座標を送信するとき、シンクデバイス160は、(xSINK,ySINK)において受信されたユーザ入力のための座標(xSRC,ySRC)を送信することができる。以下でより詳細に説明するように、座標(xSRC,ySRC)は、たとえば、シンクデバイス160において受信されたユーザ入力をUIBCを介してソースデバイス120に送信するために使用されるデータパケットの一部として送信され得る。入力座標がデータパケット中に含まれるものとして説明される、本開示の他の部分全体にわたって、それらの座標は、ソース/シンクシステム100がシンクベースの正規化を実装する事例において上記で説明したように、ソース座標に変換され得る。
ソース/シンクシステム100がソースベースの正規化を実装するとき、ローカル入力とは対照的にUIBC入力である(すなわち、ディスプレイウィンドウ外とは対照的にディスプレイウィンドウ内にある)と判断されたユーザ入力について、上記の計算は、シンクデバイス160ではなくソースデバイス120において実行され得る。そのような計算を可能にするために、シンクデバイス160は、LDW,WDWについての値、ならびにディスプレイウィンドウについてのロケーション情報(たとえばaDW,bDW)、ならびに(xSINK,ySINK)についての座標をソースデバイス120に送信することができる。これらの送信された値を使用して、ソースデバイス120は、上記の式3および式4に従って(xSRC,ySRC)についての値を判断することができる。
シンクベースの正規化の他の実装形態では、シンクデバイス160は、ディスプレイ162上のどこでユーザ入力イベントが行われるかとは対照的に、ディスプレイウィンドウ内のどこでユーザ入力イベントが行われるかを記述する、ユーザ入力のための座標(xDW,yDW)を送信することができる。そのような実装形態では、座標(xDW,yDW)は、(LDW,WDW)についての値とともにソースデバイス120に送信され得る。これらの受信された値に基づいて、ソースデバイス120は、以下の変換関数に従って(xSRC,ySRC)を判断することができる。
シンクデバイス160は、以下の関数に基づいてxDWとyDWとを判断することができる。
本開示で、たとえばデータパケット中で、ユーザ入力に関連付けられた座標を送信することについて説明するとき、これらの座標の送信は、上記で説明したようにシンクベースまたはソースベースの正規化を含み得、および/あるいはシンクベースまたはソースベースの正規化を実行するのに必要な任意の追加情報を含み得る。
UIBCは、クロスプラットフォームユーザ入力データを含む、様々なタイプのユーザ入力データをトランスポートするように設計され得る。たとえば、ソースデバイス120はiOS(登録商標)オペレーティングシステムを実行し得、シンクデバイス160は、Android(登録商標)またはWindows(登録商標)など、別のオペレーティングシステムを実行する。プラットフォームにかかわらず、UIPM168は、A/V制御モジュール125にとって理解可能な形態で、受信されたユーザ入力をカプセル化することができる。多くの異なるタイプのソースデバイスおよびシンクデバイスが異なるプラットフォーム上で動作するかどうかにかかわらず、それらのソースデバイスおよびシンクデバイスがプロトコルを活用することを可能にするように、いくつかの異なるタイプのユーザ入力フォーマットがUIBCによってサポートされ得る。一般入力フォーマットが定義され得、プラットフォーム固有入力フォーマットが両方ともサポートされ得、したがって、ユーザ入力がUIBCによってソースデバイス120とシンクデバイス160との間で通信され得る方法のフレキシビリティが与えられる。
図1Aの例では、ソースデバイス120は、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、Wi−Fi対応テレビジョン、またはオーディオおよびビデオデータを送信することが可能な他のデバイスを備え得る。シンクデバイス160は、同様に、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、Wi−Fi対応テレビジョン、またはオーディオおよびビデオデータを受信し、ユーザ入力データを受信することが可能な他のデバイスを備え得る。いくつかの事例では、シンクデバイス160は、ディスプレイ162、スピーカー163、UIデバイス167、およびA/Vエンコーダ164が、すべて、別個であるが相互動作可能なデバイスの一部であるような、複数のデバイスのシステムを含み得る。ソースデバイス120は、同様に、単一のデバイスではなく、複数のデバイスのシステムであり得る。
本開示では、ソースデバイスという用語を、概して、オーディオ/ビデオデータを送信しているデバイスを指すために使用し、シンクデバイスという用語を、概して、ソースデバイスからオーディオ/ビデオデータを受信しているデバイスを指すために使用する。多くの場合、ソースデバイス120およびシンクデバイス160は同様または同等のデバイスであり得、一方のデバイスがソースとして動作し、他方がシンクとして動作する。その上、異なる通信セッションではこれらの役割が逆になることがある。したがって、1つの通信セッションにおけるシンクデバイスは後続の通信セッションではソースデバイスになり得、またはその逆も同様である。
図1Bは、本開示の技法を実装し得る例示的なソース/シンクシステム101を示すブロック図である。ソース/シンクシステム101はソースデバイス120とシンクデバイス160とを含み、それらの各々は、図1Aについて上記で説明した方法で機能し、動作し得る。ソース/シンクシステム101はシンクデバイス180をさらに含む。上記で説明したシンクデバイス160と同様の方法で、シンクデバイス180は、ソースデバイス120からオーディオおよびビデオデータを受信し、確立されたUIBCを介してソースデバイス120にユーザコマンドを送信し得る。いくつかの構成では、シンクデバイス160とシンクデバイス180とは、互いとは無関係に動作し得、ソースデバイス120において出力されるオーディオおよびビデオデータは、シンクデバイス160とシンクデバイス180とにおいて同時に出力され得る。代替構成では、シンクデバイス160は1次シンクデバイスであり得、シンクデバイス180は2次シンクデバイスであり得る。そのような例示的な構成では、シンクデバイス160とシンクデバイス180とは結合され得、シンクデバイス160はビデオデータを表示し得、シンクデバイス180は対応するオーディオデータを出力する。さらに、いくつかの構成では、シンクデバイス160は送信されたビデオデータのみを出力し得、シンクデバイス180は送信されたオーディオデータのみを出力する。
図2は、ソースデバイス220の一例を示すブロック図である。ソースデバイス220は、図1A中のソースデバイス120と同様のデバイスであり得、ソースデバイス120と同じ方法で動作し得る。ソースデバイス220は、ローカルディスプレイ222と、ローカルスピーカー223と、プロセッサ231と、メモリ232と、トランスポートユニット233と、ワイヤレスモデム234とを含む。図2に示すように、ソースデバイス220は、トランスポート、記憶、および表示のためにA/Vデータを符号化および/または復号する1つまたは複数のプロセッサ(すなわちプロセッサ231)を含み得る。A/Vデータは、たとえばメモリ232において記憶され得る。メモリ232は、A/Vファイル全体を記憶し得るか、または、たとえば、別のデバイスまたはソースからストリーミングされた、A/Vファイルの一部分を記憶するにすぎない、より小さいバッファを備え得る。トランスポートユニット233は、符号化A/Vデータをネットワークトランスポートのために処理し得る。たとえば、符号化A/Vデータは、プロセッサ231によって処理され、ネットワーク上での通信のためにトランスポートユニット233によってネットワークアクセスレイヤ(NAL:Network Access Layer)ユニットにカプセル化され得る。NALユニットは、ワイヤレスモデム234によってネットワーク接続を介してワイヤレスシンクデバイスに送られ得る。ワイヤレスモデム234は、たとえば、IEEE802.11規格ファミリーのうちの1つを実装するように構成されたWi−Fiモデムであり得る。
また、ソースデバイス220は、A/Vデータをローカルで処理し、表示し得る。特に、ディスプレイプロセッサ235は、ローカルディスプレイ222上で表示されるようにビデオデータを処理し得、オーディオプロセッサ236は、スピーカー223上での出力のためにオーディオデータを処理し得る。
図1Aのソースデバイス120に関して上記で説明したように、ソースデバイス220は、シンクデバイスからユーザ入力コマンドをも受信し得る。このようにして、ソースデバイス220のワイヤレスモデム234は、NALユニットなどのカプセル化されたデータパケットを受信し、カプセル化されたデータユニットをカプセル化解除のためにトランスポートユニット233に送る。たとえば、トランスポートユニット233はNALユニットからデータパケットを抽出し得、プロセッサ231はユーザ入力コマンドを抽出するためにデータパケットをパースすることができる。ユーザ入力コマンドに基づいて、プロセッサ231は、ソースデバイス220によってシンクデバイスに送信されている符号化A/Vデータを調整することができる。このようにして、図1AのA/V制御モジュール125に関して上記で説明した機能は、完全にまたは部分的に、プロセッサ231によって実装され得る。
図2のプロセッサ231は、概して、限定はしないが、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、他の等価な集積回路またはディスクリート論理回路を含む、多種多様なプロセッサのいずれか、あるいはそれらの何らかの組合せを表す。図2のメモリ232は、限定はしないが、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリなどを含む、多種多様な揮発性または不揮発性メモリのいずれかを備え得る。メモリ232は、オーディオ/ビデオデータならびに他の種類のデータを記憶するためのコンピュータ可読記憶媒体を備え得る。メモリ232は、本開示で説明する様々な技法を実行することの一部としてプロセッサ231によって実行される命令とプログラムコードとをさらに記憶し得る。
図3に、シンクデバイス360の一例を示す。シンクデバイス360は、図1A中のシンクデバイス160と同様のデバイスであり得、シンクデバイス160と同じ方法で動作し得る。シンクデバイス360は、1つまたは複数のプロセッサ(すなわちプロセッサ331)と、メモリ332と、トランスポートユニット333と、ワイヤレスモデム334と、ディスプレイプロセッサ335と、ローカルディスプレイ362と、オーディオプロセッサ336と、スピーカー363と、ユーザ入力インターフェース376とを含む。シンクデバイス360は、ワイヤレスモデム334において、ソースデバイスから送られたカプセル化されたデータユニットを受信する。ワイヤレスモデム334は、たとえば、IEEE802.11規格ファミリーからの1つまたは複数の規格を実装するように構成されたWi−Fiモデムであり得る。トランスポートユニット333は、カプセル化されたデータユニットをカプセル化解除することができる。たとえば、トランスポートユニット333は、カプセル化されたデータユニットから符号化ビデオデータを抽出し、符号化A/Vデータを、出力のために復号され、レンダリングされるように、プロセッサ331に送り得る。ディスプレイプロセッサ335は、ローカルディスプレイ362上で表示されるように復号ビデオデータを処理し得、オーディオプロセッサ336は、スピーカー363上での出力のために復号オーディオデータを処理し得る。
オーディオおよびビデオデータをレンダリングすることに加えて、ワイヤレスシンクデバイス360は、ユーザ入力インターフェース376を通してユーザ入力データをも受信することができる。ユーザ入力インターフェース376は、限定はしないが、タッチディスプレイインターフェース、キーボード、マウス、ボイスコマンドモジュール、(たとえば、カメラベースの入力キャプチャ機能をもつ)ジェスチャーキャプチャデバイスを含む、いくつかのユーザ入力デバイスのいずれか、またはいくつかのユーザ入力デバイスの他のユーザ入力デバイスを表すことができる。ユーザ入力インターフェース376を通して受信されたユーザ入力はプロセッサ331によって処理され得る。この処理は、本開示で説明する技法に従って、受信されたユーザ入力コマンドを含むデータパケットを生成することを含み得る。生成されると、トランスポートユニット333は、そのデータパケットを、UIBCを介したワイヤレスソースデバイスへのネットワークトランスポートのために処理し得る。
図3のプロセッサ331は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、他の等価な集積回路またはディスクリート論理回路など、広範囲のプロセッサのうちの1つまたは複数、あるいはそれらの何らかの組合せを備え得る。図3のメモリ332は、限定はしないが、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリなどを含む、多種多様な揮発性または不揮発性メモリのいずれかを備え得る。メモリ232は、オーディオ/ビデオデータならびに他の種類のデータを記憶するためのコンピュータ可読記憶媒体を備え得る。メモリ332は、本開示で説明する様々な技法を実行することの一部としてプロセッサ331によって実行される命令とプログラムコードとをさらに記憶し得る。
図4に、通信チャネル150を介して通信するために図1Aの送信機/受信機126と送信機/受信機166とによって使用され得る、例示的な送信機システム410と受信機システム450とのブロック図を示す。送信機システム410において、いくつかのデータストリームのトラフィックデータがデータソース412から送信(TX)データプロセッサ414に与えられる。各データストリームは、それぞれの送信アンテナを介して送信され得る。TXデータプロセッサ414は、各データストリームのトラフィックデータを、そのデータストリーム用に選択された特定のコーディング方式に基づいてフォーマットし、コーディングし、インターリーブする。
各データストリームのコード化データは、直交周波数分割多重化(OFDM)技法を使用してパイロットデータと多重化され得る。限定はしないが、時分割多元接続(TDMA)、周波数分割多元接続(FDMA)、符号分割多元接続(CDMA)、あるいはOFDM、FDMA、TDMAおよび/またはCDMAの任意の組合せを含む、多種多様な他のワイヤレス通信技法も使用され得る。
図4に従って、パイロットデータは、典型的には、知られている方法で処理される知られているデータパターンであり、チャネル応答を推定するために受信機システムにおいて使用され得る。次いで、各データストリームの多重化されたパイロットおよびコード化データは、変調シンボルを与えるために、そのデータストリーム用に選択された特定の変調方式(たとえば、2位相シフトキーイング(BPSK)、4位相シフトキーイング(QPSK)、M−PSK、またはM−QAM(直交振幅変調)、ここでMは2のべき乗であり得る)に基づいて変調(たとえば、シンボルマッピング)される。各データストリームのデータレート、コーディング、および変調は、メモリ432に結合され得るプロセッサ430によって実行される命令によって判断され得る。
次いで、データストリームの変調シンボルがTX MIMOプロセッサ420に与えられ、TX MIMOプロセッサ420はさらに(たとえば、OFDM用に)その変調シンボルを処理し得る。次いで、TX MIMOプロセッサ420はNT個の変調シンボルストリームをNT個の送信機(TMTR)422a〜422tに与えることができる。いくつかの態様では、TX MIMOプロセッサ420は、データストリームのシンボルと、シンボルの送信元のアンテナとにビームフォーミング重みを適用する。
各送信機422は、それぞれのシンボルストリームを受信し、処理して、1つまたは複数のアナログ信号を与え、さらに、それらのアナログ信号を調整(たとえば、増幅、フィルタ処理、およびアップコンバート)して、MIMOチャネルを介した送信に適した被変調信号を与え得る。次いで、送信機422a〜422tからのNT個の被変調信号は、それぞれNT個のアンテナ424a〜424tから送信される。
受信機システム450において、送信された被変調信号はNR個のアンテナ452a〜452rによって受信され、各アンテナ452からの受信信号は、それぞれの受信機(RCVR)454a〜454rに与えられる。受信機454は、それぞれの受信信号を調整(たとえば、フィルタ処理、増幅、およびダウンコンバート)し、調整された信号をデジタル化して、サンプルを与え、さらにそれらのサンプルを処理して、対応する「受信」シンボルストリームを与える。
次いで、受信(RX)データプロセッサ460は、NR個の受信機454からNR個の受信シンボルストリームを受信し、特定の受信機処理技法に基づいて処理して、NT個の「検出」シンボルストリームを与える。次いで、RXデータプロセッサ460は、各検出シンボルストリームを復調し、デインターリーブし、復号して、データストリームのトラフィックデータを復元する。RXデータプロセッサ460による処理は、送信機システム410におけるTX MIMOプロセッサ420およびTXデータプロセッサ414によって実行される処理を補足するものである。
メモリ472と結合され得るプロセッサ470は、どのプリコーディング行列を使用すべきかを周期的に判断する。逆方向リンクメッセージは、通信リンクおよび/または受信データストリームに関する様々なタイプの情報を備え得る。次いで、逆方向リンクメッセージは、データソース436からいくつかのデータストリームのトラフィックデータをも受信するTXデータプロセッサ438によって処理され、変調器480によって変調され、送信機454a〜454rによって調整され、送信機システム410に戻される。
送信機システム410において、受信機システム450からの被変調信号は、アンテナ424によって受信され、受信機422によって調整され、復調器440によって復調され、RXデータプロセッサ442によって処理されて、受信機システム450によって送信された逆方向リンクメッセージが抽出される。次いで、プロセッサ430は、ビームフォーミング重みを判断するためにどのプリコーディング行列を使用すべきかを判断し、次いで、抽出されたメッセージを処理する。
図5Aは、機能ネゴシエーションセッションの一部としてのソースデバイス520とシンクデバイス560との間の例示的なメッセージ転送シーケンスを示すブロック図である。機能ネゴシエーションは、ソースデバイス520とシンクデバイス560との間のより大きい通信セッション確立プロセスの一部として行われ得る。このセッションは、たとえば、基礎をなす接続性規格としてのWi−Fi DirectまたはTDLSで確立され得る。Wi−Fi DirectまたはTDLSセッションを確立した後に、シンクデバイス560は、ソースデバイス520とのTCP接続を開始することができる。TCP接続を確立することの一部として、ソースデバイス520とシンクデバイス560との間の通信セッションを管理するために、リアルタイムストリーミングプロトコル(RTSP:real time streaming protocol)を実行する制御ポートが確立され得る。
ソースデバイス520は、概して、図1Aのソースデバイス120について上記で説明したのと同じ方法で動作し得、シンクデバイス560は、概して、図1Aのシンクデバイス160について上記で説明したのと同じ方法で動作し得る。ソースデバイス520とシンクデバイス560とが接続性を確立した後、ソースデバイス520とシンクデバイス560とは、機能ネゴシエーション交換の一部としてそれらのデバイスの後続の通信セッションのために使用されるべきパラメータのセットを判断し得る。
ソースデバイス520とシンクデバイス560とは、メッセージのシーケンスを通して機能をネゴシエートし得る。それらのメッセージは、たとえば、リアルタイムストリーミングプロトコル(RTSP)メッセージであり得る。そのネゴシエーションのいずれかの段階において、RTSP要求メッセージの受信側が、RTSP OK以外のRTSPステータスコードを含むRTSP応答で応答し得、その場合、メッセージ交換はパラメータの異なるセットを用いて再試行され得、または機能ネゴシエーションセッションは終了され得る。
ソースデバイス520は、シンクデバイス560がサポートするRTSP方法のセットを判断するために、シンクデバイス560に第1のメッセージ(RTSP OPTIONS要求メッセージ)を送ることができる。ソースデバイス520から第1のメッセージを受信すると、シンクデバイス560は、シンク560によってサポートされるRTSP方法をリストする第2のメッセージ(RTSP OPTIONS応答メッセージ)で応答することができる。また、第2のメッセージはRTSP OKステータスコードを含み得る。
ソースデバイス520に第2のメッセージを送った後に、シンクデバイス560は、ソースデバイス520がサポートするRTSP方法のセットを判断するために、第3のメッセージ(RTSP OPTIONS要求メッセージ)を送ることができる。シンクデバイス560から第3のメッセージを受信すると、ソースデバイス520は、ソースデバイス520によってサポートされるRTSP方法をリストする第4のメッセージ(RTSP OPTIONS応答メッセージ)で応答することができる。また、第4のメッセージはRTSP OKステータスコードを含むことができる。
第4のメッセージを送った後に、ソースデバイス520は、ソースデバイス520に関係のある機能のリストを指定するために、第5のメッセージ(RTSP GET_PARAMETER要求メッセージ)を送ることができる。シンクデバイス560は第6のメッセージ(RTSP GET_PARAMETER応答メッセージ)で応答することができる。第6のメッセージはRTSPステータスコードを含んでいることがある。RTSPステータスコードがOKである場合、第6のメッセージは、シンクデバイス560によってサポートされる、第5のメッセージ中で指定されたパラメータに対する応答パラメータをも含むことができる。シンクデバイス560は、シンクデバイス560がサポートしない、第5のメッセージ中のパラメータを無視することができる。
第6のメッセージに基づいて、ソース520は、通信セッションのために使用されるべきパラメータの最適セットを判断することができ、シンクデバイス560に第7のメッセージ(RTSP SET_PARAMETER要求メッセージ)を送ることができる。第7のメッセージは、ソースデバイス520とシンクデバイス560との間の通信セッション中に使用されるべきパラメータセットを含んでいることがある。第7のメッセージは、通信セッションをセットアップするためにRTSP Setup要求中で使用されるべきユニバーサルリソース識別子(URI:Universal Resource Identifier)を記述するwfd−presentation−urlを含むことができる。wfd−presentation−urlは、シンクデバイス560がセッション確立交換中に後のメッセージのために使用することができるURIを指定する。このパラメータ中で指定されたwfd−url0値およびwfd−url1値は、第7のメッセージ中のwfd−client−rtp−ports中のrtp−port0値およびrtp−port1値の値に対応することができる。この事例におけるRTPは、概して、UDPの上で動作することができるリアルタイムプロトコルを指す。
第7のメッセージを受信すると、シンクデバイス560は、第7のメッセージ中で指定されたパラメータを設定することが成功していたかどうかを示すRTSPステータスコードをもつ第8のメッセージで応答することができる。上述のように、ソースデバイスとシンクデバイスとの役割は、異なるセッションでは逆になるかまたは変化し得る。通信セッションをセットアップするメッセージの順序は、場合によっては、ソースとして動作するデバイスを定義し、シンクとして動作するデバイスを定義し得る。
図5Bは、機能ネゴシエーションセッションの一部としてのソースデバイス560とシンクデバイス520との間の別の例示的なメッセージ転送シーケンスを示すブロック図である。図5Bのメッセージ転送シーケンスは、図5Aについて上記で説明した転送シーケンスのより詳細な図を与えることを目的とする。図5Bでは、メッセージ「1b.GET_PARAMETER応答」は、サポートされる入力カテゴリー(たとえば一般およびHIDC)のリストとサポートされる入力タイプの複数のリストとを識別するメッセージの一例を示す。サポートされる入力カテゴリーのリストのサポートされる入力カテゴリーの各々は、サポートされるタイプの関連付けられたリスト(たとえばgeneric_cap_listおよびhidc_cap_list)を有する。図5Bでは、メッセージ「2a.SET_PARAMETER要求」は、サポートされる入力カテゴリー(たとえば一般およびHIDC)の第2のリストと、サポートされるタイプの複数の第2のリストとを識別する、第2のメッセージの一例である。サポートされる入力カテゴリーの第2のリストのサポートされる入力カテゴリーの各々は、サポートされるタイプの関連付けられた第2のリスト(たとえばgeneric_cap_listおよびhidc_cap_list)を有する。メッセージ「1b.GET_PARAMETER応答」は、シンクデバイス560によってサポートされる入力カテゴリーと入力タイプとを識別する。メッセージ「2a.SET_PARAMETER要求」は、ソースデバイス520によってサポートされる入力カテゴリーと入力タイプとを識別するが、それは、ソースデバイス520によってサポートされるすべての入力カテゴリーと入力タイプとの包括的なリストでないことがある。代わりに、メッセージ「2a.SET_PARAMETER要求」は、シンクデバイス560によってサポートされるものとしてメッセージ「1b.GET_PARAMETER応答」中で識別された入力カテゴリーと入力タイプとのみを識別し得る。このようにして、メッセージ「2a.SET_PARAMETER要求」中で識別される入力カテゴリーと入力タイプとは、メッセージ「1b.GET_PARAMETER応答」中で識別された入力カテゴリーと入力タイプとのサブセットを構成し得る。
図6は、シンクデバイスによって生成され、ソースデバイスに送信され得る、データパケットの一例を示す概念図である。図1Aを参照しながらデータパケット600の態様について説明することになるが、説明する技法は追加のタイプのソース/シンクシステムに適用可能であり得る。データパケット600はデータパケットヘッダ610を含み得、その後にペイロードデータ650が続く。ペイロードデータ650は、1つまたは複数のペイロードヘッダ(たとえばペイロードヘッダ630)をさらに含み得る。データパケット600は、たとえば、シンクデバイス160のユーザが、ソースデバイス120によって送信されているオーディオ/ビデオデータを制御することができるように、図1Aのシンクデバイス160からソースデバイス120に送信され得る。そのような場合、ペイロードデータ650は、シンクデバイス160において受信されたユーザ入力データを含み得る。ペイロードデータ650は、たとえば、1つまたは複数のユーザコマンドを識別し得る。シンクデバイス160は、1つまたは複数のユーザコマンドを受信することができ、受信されたコマンドに基づいて、データパケットヘッダ610とペイロードデータ650とを生成することができる。データパケット600のデータパケットヘッダ610のコンテンツに基づいて、ソースデバイス120は、シンクデバイス160において受信されたユーザ入力データを識別するためにペイロードデータ650をパースすることができる。ペイロードデータ650中に含まれているユーザ入力データに基づいて、ソースデバイス120は、ソースデバイス120からシンクデバイス160に送信されているオーディオおよびビデオデータを何らかの方法で変更し得る。
本開示で使用する「パース」および「パーシング」という用語は、概して、ビットストリームからデータを抽出するためにビットストリームを分析するプロセスを指す。抽出されると、データは、たとえば、ソースデバイス120によって処理され得る。データを抽出することは、たとえば、ビットストリーム中の情報がどのようにフォーマットされているかを識別することを含み得る。以下でより詳細に説明するように、データパケットヘッダ610は、ソースデバイス120とシンクデバイス160の両方にとって既知である規格化されたフォーマットを定義し得る。ただし、ペイロードデータ650は多くの可能な方法のうちの1つでフォーマットされ得る。データパケットヘッダ610をパースすることによって、ソースデバイス120は、ペイロードデータ650がどのようにフォーマットされているかを判断することができ、したがって、ソースデバイス120は、ペイロードデータ650から1つまたは複数のユーザ入力コマンドを抽出するためにペイロードデータ650をパースすることができる。これは、ソースシンク通信においてサポートされ得る異なるタイプのペイロードデータの観点からフレキシビリティを与えることができる。以下でより詳細に説明するように、ペイロードデータ650は、ペイロードヘッダ630などの1つまたは複数のペイロードヘッダをも含み得る。そのような場合、ソースデバイス120は、ペイロードヘッダ630についてのフォーマットを判断するためにデータパケットヘッダ610をパースし、次いで、ペイロードデータ650の残りについてのフォーマットを判断するためにペイロードヘッダ630をパースし得る。
図620は、データパケットヘッダ610がどのようにフォーマットされ得るかについての概念図である。行615における番号0〜15は、データパケットヘッダ610内のビットロケーションを識別することを目的としており、データパケットヘッダ610内に含まれている情報を実際に表すことを目的としていない。データパケットヘッダ610は、バージョンフィールド621と、タイムスタンプフラグ622と、予約済みフィールド623と、入力カテゴリーフィールド624と、長さフィールド625と、随意のタイムスタンプフィールド626とを含む。
図6の例では、バージョンフィールド621は、シンクデバイス160によって実装されている特定の通信プロトコルのバージョンを示し得る3ビットフィールドである。バージョンフィールド621中の値は、データパケットヘッダ610の残りをどのようにパースすべきか、ならびにペイロードデータ650をどのようにパースすべきかを、ソースデバイス120に通知し得る。図6の例では、バージョンフィールド621は、8つの異なるバージョンについての一意の識別子を可能にするであろう3ビットフィールドである。他の例では、より多いまたはより少ないビットがバージョンフィールド621に専用であり得る。
図6の例では、タイムスタンプフラグ(T)622は、タイムスタンプフィールド626がデータパケットヘッダ610中に存在するか否かを示す1ビットフィールドである。タイムスタンプフィールド626は、ソースデバイス120によって生成され、シンクデバイス160に送信された、マルチメディアデータに基づくタイムスタンプを含んでいる、16ビットフィールドである。タイムスタンプは、たとえば、ビデオのフレームがシンクデバイス160に送信されるより前に、ソースデバイス120によってそのフレームに割り当てられる、連続値であり得る。タイムスタンプフラグ622は、たとえば、タイムスタンプフィールド626が存在することを示すための「1」を含み得、タイムスタンプフィールド626が存在しないことを示すための「0」を含み得る。データパケットヘッダ610をパースし、タイムスタンプフィールド626が存在すると判断すると、ソースデバイス120は、タイムスタンプフィールド626中に含まれるタイムスタンプを処理することができる。データパケットヘッダ610をパースし、タイムスタンプフィールド626が存在しないと判断すると、ソースデバイス120は、タイムスタンプフィールドがデータパケットヘッダ610中に存在しないので、長さフィールド625をパースした後にペイロードデータ650をパースし始め得る。
存在する場合、タイムスタンプフィールド626は、ペイロードデータ650のユーザ入力データが取得されたときにワイヤレスシンクデバイス160において表示されていたビデオデータのフレームを識別するためのタイムスタンプを含むことができる。タイムスタンプは、たとえば、ソースデバイス120がシンクデバイス160にビデオのフレームを送信するより前に、ソースデバイス120によってビデオのフレームに追加されていることがある。したがって、ソースデバイス120は、ビデオのフレームを生成し、そのフレームのビデオデータ中に、たとえばメタデータとして、タイムスタンプを埋め込み得る。ソースデバイス120は、タイムスタンプとともに、ビデオフレームをシンクデバイス160に送信することができ、シンクデバイス160はビデオのフレームを表示することができる。ビデオのフレームがシンクデバイス160によって表示されている間、シンクデバイス160はユーザからユーザコマンドを受信することができる。シンクデバイス160がユーザコマンドをソースデバイス120に転送するためにデータパケットを生成するとき、シンクデバイス160は、ユーザコマンドが受信されたときにシンクデバイス160によって表示されていたフレームのタイムスタンプをタイムスタンプフィールド626中に含めることができる。
タイムスタンプフィールド626がヘッダ中に存在するデータパケット600を受信すると、ワイヤレスソースデバイス120は、ペイロードデータ650のユーザ入力データが取得されたときにシンクデバイス160において表示されているビデオのフレームを識別し、タイムスタンプによって識別されるフレームのコンテンツに基づいてユーザ入力データを処理し得る。たとえば、ユーザ入力データが、タッチディスプレイに適用されたタッチコマンド、またはマウスポインタのクリックである場合、ソースデバイス120は、ユーザがディスプレイにタッチコマンドを適用したかまたはマウスをクリックしたときに表示されているフレームのコンテンツを判断することができる。いくつかの事例では、ペイロードデータを適切に処理するためにフレームのコンテンツが必要とされ得る。たとえば、ユーザタッチまたはマウスクリックに基づくユーザ入力は、タッチまたはクリックのときにディスプレイ上に何が示されていたかに依存することがある。タッチまたはクリックは、たとえば、アイコンまたはメニューオプションに対応し得る。ディスプレイのコンテンツが変化している事例では、タイムスタンプフィールド626中に存在するタイムスタンプは、タッチまたはクリックを正しいアイコンまたはメニューオプションに整合させるために、ソースデバイス120によって使用され得る。
ソースデバイス120は、追加または代替として、タイムスタンプフィールド626中のタイムスタンプを、ビデオの現在レンダリングされているフレームに適用されているタイムスタンプと比較し得る。タイムスタンプフィールド626のタイムスタンプを現在のタイムスタンプと比較することによって、ソースデバイス120はラウンドトリップ時間を判断することができる。ラウンドトリップ時間は、概して、フレームがソースデバイス120によって送信された時点から、そのフレームに基づくユーザ入力がシンクデバイス160からソースデバイス120に戻って受信された時点までに経過した、時間量に対応する。ラウンドトリップ時間は、ソースデバイス120にシステムレイテンシの指示を与えることができ、ラウンドトリップ時間がしきい値よりも大きい場合、ソースデバイス120は、入力コマンドが古いディスプレイフレームに適用されたという仮定の下で、ペイロードデータ650中に含まれているユーザ入力データを無視し得る。ラウンドトリップ時間がしきい値よりも小さいとき、ソースデバイス120は、ユーザ入力データを処理し、ユーザ入力データに応答して、送信されているオーディオ/ビデオコンテンツを調整し得る。しきい値はプログラマブルであり得、異なるタイプのデバイス(または異なるソースシンク組合せ)が、許容できるラウンドトリップ時間についての異なるしきい値を定義するように構成され得る。
図6の例では、予約済みフィールド623は、データパケットヘッダ610とペイロードデータ650とをパースする際にソース120によって使用される情報を含まない8ビットフィールドである。ただし、(バージョンフィールド621中で識別される)特定のプロトコルの将来のバージョンが予約済みフィールド623を利用し得、その場合、ソースデバイス120は、データパケットヘッダ610をパースするために、および/またはペイロードデータ650をパースするために、予約済みフィールド623中の情報を使用し得る。予約済みフィールド623は、バージョンフィールド621と併せて、すでに使用中のフォーマットと特徴とを基本的に変更することなしに、特徴を拡張し、特徴をデータパケットフォーマットに追加するための機能を潜在的に与える。
図6の例では、入力カテゴリーフィールド624は、ペイロードデータ650中に含まれているユーザ入力データについての入力カテゴリーを識別するための4ビットフィールドである。シンクデバイス160は、入力カテゴリーを判断するためにユーザ入力データをカテゴリー分類し得る。ユーザ入力データをカテゴリー分類することは、たとえば、コマンドがそこから受信されたデバイスに基づくか、またはコマンド自体の性質に基づき得る。入力カテゴリーフィールド624の値は、場合によってはデータパケットヘッダ610の他の情報と併せて、ペイロードデータ650がどのようにフォーマットされているかをソースデバイス120に対して識別する。このフォーマッティングに基づいて、ソースデバイス120は、シンクデバイス160において受信されたユーザ入力を判断するためにペイロードデータ650をパースすることができる。
図6の例では入力カテゴリー624が4ビットであるので、16個の異なる入力カテゴリーが場合によっては識別され得る。1つのそのような入力カテゴリーは、ペイロードデータ650のユーザ入力データが、ソースデバイス120とシンクデバイス160の両方によって実行されているプロトコルにおいて定義されている一般情報要素を使用してフォーマットされていることを示すための、一般入力フォーマットであり得る。一般入力フォーマットは、以下でより詳細に説明するように、シンクデバイス160のユーザがアプリケーションレベルでソースデバイス120と対話することを可能にする、一般情報要素を利用し得る。
別のそのような入力カテゴリーは、ペイロードデータ650のユーザ入力データが、入力データを受信するために使用される入力デバイスのタイプに基づいてフォーマットされていることを示すための、ヒューマンインターフェースデバイスコマンド(HIDC:human interface device command)フォーマットであり得る。デバイスのタイプの例は、キーボード、マウス、タッチ入力デバイス、ジョイスティック、カメラ、(カメラベースの入力デバイスなどの)ジェスチャーキャプチャデバイス、および遠隔制御装置を含む。入力カテゴリーフィールド624中で識別され得る他のタイプの入力カテゴリーは、ペイロードデータ650中のユーザデータがシンクデバイス160において発信しなかったことを示すためのフォワーディング入力フォーマット、またはオペレーティングシステム固有フォーマット、およびペイロードデータ650がボイスコマンドを含むことを示すためのボイスコマンドフォーマットを含む。
長さフィールド625は、データパケット600の長さを示すための16ビットフィールドを備え得る。長さは、たとえば、8ビットの単位で示され得る。データパケット600が16ビットのワードでソースデバイス120によってパースされるとき、データパケット600は16ビットの整数までパディングされ得る。長さフィールド625中に含まれている長さに基づいて、ソースデバイス120は、ペイロードデータ650の終了(すなわちデータパケット600の終了)と新しい後続のデータパケットの開始とを識別することができる。
図6の例で与えられるフィールドの様々なサイズは単に説明用であるものとし、それらのフィールドは、図6に示すものとは異なる数のビットを使用して実装され得るものとする。さらに、データパケットヘッダ610は、上記で説明したすべてのフィールドよりも少数のフィールドを含み得るか、または上記で説明していない追加のフィールドを使用し得ることも企図される。実際、本開示の技法は、パケットの様々なデータフィールドのために使用される実際のフォーマットの観点から、フレキシブルであり得る。
ペイロードデータ650のフォーマッティングを判断するためにデータパケットヘッダ610をパースした後に、ソースデバイス120は、ペイロードデータ650中に含まれているユーザ入力コマンドを判断するためにペイロードデータ650をパースすることができる。ペイロードデータ650は、ペイロードデータ650のコンテンツを示すそれ自体のペイロードヘッダ(ペイロードヘッダ630)を有し得る。このようにして、ソースデバイス120は、データパケットヘッダ610のパーシングに基づいてペイロードヘッダ630をパースし、次いで、ペイロードヘッダ630のパーシングに基づいて残りのペイロードデータ650をパースし得る。
たとえば、データパケットヘッダ610の入力カテゴリーフィールド624が、一般入力がペイロードデータ650中に存在することを示す場合、ペイロードデータ650は一般入力フォーマットを有することがある。したがって、ソースデバイス120は、一般入力フォーマットに従ってペイロードデータ650をパースすることができる。一般入力フォーマットの一部として、ペイロードデータ650は、各入力イベントがそれ自体の入力イベントヘッダを有する、一連の1つまたは複数の入力イベントを含むことができる。以下の表1は、入力ヘッダ中に含まれ得るフィールドを識別する。
一般入力イベント(IE:input event)識別情報(ID:identification)フィールドは、入力タイプを識別するための一般入力イベント識別情報を識別する。一般IE IDフィールドは、たとえば、長さが1オクテットであり得、以下の表2から選択された識別情報を含み得る。本例のように、一般IE IDフィールドが8ビットである場合、(0〜255と識別される)256個の異なるタイプの入力が識別可能であり得るが、すべての256個の識別情報が必ずしも関連付けられた入力タイプを必要とするとは限らない。上記256個の一部は、シンクデバイス160とソースデバイス120とによって実装されているいかなるプロトコルの将来のバージョンの将来の使用のためにも予約され得る。表2では、たとえば、一般IE ID9〜255は、関連付けられた入力タイプを有しないが、将来、入力タイプを割り当てられ得る。
入力イベントヘッダ中の長さフィールドは、記述フィールドの長さを識別し、記述フィールドは、ユーザ入力を記述する情報要素を含む。記述フィールドのフォーマッティングは、一般IE IDフィールド中で識別される入力のタイプに依存し得る。したがって、ソースデバイス120は、一般IE IDフィールド中で識別される入力タイプに基づいて記述フィールドのコンテンツをパースし得る。入力イベントヘッダの長さフィールドに基づいて、ソースデバイス120は、ペイロードデータ650中の1つの入力イベントの終了と新しい入力イベントの開始とを判断することができる。以下でより詳細に説明するように、1つのユーザコマンドはペイロードデータ650中で1つまたは複数の入力イベントとして記述され得る。
表2は、それぞれ、入力タイプを識別するために使用され得る対応する一般IE IDを用いた、入力タイプの一例を与える。
各入力タイプに関連付けられた記述フィールドは異なるフォーマットを有し得る。左マウスダウン/タッチダウンイベントと、左マウスアップ/タッチアップイベントと、マウス移動/タッチ移動イベントとの記述フィールドは、たとえば、以下の表3中で識別される情報要素を含み得るが、他の例では他のフォーマットも使用され得る。
ポインタの数は、入力イベントに関連付けられたタッチまたはマウスクリックの数を識別し得る。各ポインタは一意のポインタIDを有し得る。たとえば、マルチタッチイベントが3本指タッチを含む場合、入力イベントは、それぞれ、一意のポインタIDを用いた、3つのポインタを有し得る。各ポインタ(すなわち各指タッチ)は、そのタッチがどこで行われたかに対応する、対応するx座標およびy座標を有し得る。
単一のユーザコマンドが一連の入力イベントとして記述され得る。たとえば、3本指スワイプが、アプリケーションを閉じるためのコマンドである場合、3本指スワイプは、3つのポインタを用いたタッチダウンイベント、3つのポインタを用いたタッチ移動イベント、および3つのポインタを用いたタッチアップイベントとして、ペイロードデータ650中で記述され得る。タッチダウンイベントの3つのポインタは、タッチ移動イベントおよびタッチアップイベントの3つのポインタと同じポインタIDを有し得る。ソースデバイス120は、それらの3つの入力イベントの組合せを3本指スワイプとして解釈することができる。
キーダウンイベントまたはキーアップイベントの記述フィールドは、たとえば、以下の表4中で識別される情報要素を含み得る。
ズームイベントの記述フィールドは、たとえば、以下の表5中で識別される情報要素を含み得る。
水平スクロールイベントまたは垂直スクロールイベントの記述フィールドは、たとえば、以下の表6中で識別される情報要素を含み得る。
上記の例は、一般入力カテゴリーの場合にペイロードデータがフォーマットされ得るいくつかの例示的な方法を示している。データパケットヘッダ610の入力カテゴリーフィールド624が、フォワーディングされたユーザ入力など、異なる入力カテゴリーを示す場合、ペイロードデータ650は異なる入力フォーマットを有することがある。フォワーディングされたユーザ入力の場合、シンクデバイス160は、サードパーティデバイスからユーザ入力データを受信し、そのユーザ入力データを解釈することなしにその入力をソースデバイス120にフォワーディングし得る。したがって、ソースデバイス120は、フォワーディングされたユーザ入力フォーマットに従ってペイロードデータ650をパースすることができる。たとえば、ペイロードデータ650のペイロードヘッダ630は、ユーザ入力がそこから取得されたサードパーティデバイスを識別するためのフィールドを含み得る。そのフィールドは、たとえば、サードパーティデバイスのインターネットプロトコル(IP)アドレス、MACアドレス、ドメインネーム、または何らかの他のそのような識別子を含み得る。ソースデバイス120は、サードパーティデバイスの識別子に基づいてペイロードデータの残りをパースすることができる。
シンクデバイス160は、一連のメッセージを介してサードパーティデバイスと機能をネゴシエートすることができる。シンクデバイス160は、次いで、機能ネゴシエーションプロセスの一部としてソースデバイス120との通信セッションを確立することの一部としてソースデバイス120にサードパーティデバイスの一意の識別子を送信することができる。代替的に、シンクデバイス160は、サードパーティデバイスを記述する情報をソースデバイス120に送信し得、その情報に基づいて、ソースデバイス120はサードパーティデバイスについての一意の識別子を判断することができる。サードパーティデバイスを記述する情報は、たとえば、サードパーティデバイスを識別するための情報および/またはサードパーティデバイスの機能を識別するための情報を含み得る。一意の識別子がソースデバイス120によって判断されるのかシンクデバイス160によって判断されるのかにかかわらず、シンクデバイス160が、サードパーティデバイスから取得されたユーザ入力をもつデータパケットを送信するとき、シンクデバイス160は、ソースデバイス120がユーザ入力の起点を識別することができるように、一意の識別子をデータパケット中に、たとえばペイロードヘッダ中に含めることができる。
データパケットヘッダ610の入力カテゴリーフィールド624が、ボイスコマンドなど、さらに異なる入力カテゴリーを示す場合、ペイロードデータ650は、さらに異なる入力フォーマットを有することがある。ボイスコマンドの場合、ペイロードデータ650はコード化オーディオを含み得る。ボイスコマンドのオーディオを符号化および復号するためのコーデックが、一連のメッセージを介してソースデバイス120とシンクデバイス160との間でネゴシエートされ得る。ボイスコマンドを送信するために、タイムスタンプフィールド626は音声サンプリング時間値を含み得る。そのような場合、タイムスタンプフラグ622は、タイムスタンプが存在することを示すように設定され得るが、上記で説明したタイムスタンプの代わりに、タイムスタンプフィールド626は、ペイロードデータ650の符号化オーディオについての音声サンプリング時間値を含み得る。
いくつかの例では、ボイスコマンドが、上記で説明したように一般コマンドとして送信され得、その場合、入力カテゴリーフィールド624は、一般コマンドフォーマットを識別するように設定され得、予約済み一般IE IDのうちの1つがボイスコマンドに割り当てられ得る。ボイスコマンドが一般コマンドとして送信される場合、音声サンプリングレートは、データパケットヘッダ610のタイムスタンプフィールド626中に存在し得るか、またはペイロードデータ650中に存在し得る。
キャプチャされたボイスコマンドデータの場合、ボイスデータは複数の方法でカプセル化され得る。たとえば、ボイスコマンドデータは、コーデックとタイムスタンプとを識別するためにペイロードタイプを与えることができるRTPを使用してカプセル化され得、そのタイムスタンプは、サンプリングレートを識別するために使用される。RTPデータは、随意のタイムスタンプを用いてまたは用いずに、上記で説明した一般ユーザ入力フォーマットを使用してカプセル化され得る。シンクデバイス160は、TPC/IPを使用してソースデバイス120にボイスコマンドデータを搬送する一般入力データを送信することができる。
前に説明したように、座標が、データパケット600などのデータパケットの一部として、たとえばペイロードデータ650中に含まれるとき、その座標は、ネゴシエートされた解像度、ディスプレイウィンドウ座標、正規化座標、またはシンクディスプレイに関連付けられた座標、に基づいてスケーリングされた座標に対応し得る。いくつかの事例では、データパケット中で受信された座標を正規化するためにソースデバイスが使用するために、追加情報がデータパケット中に含まれるかまたは別個に送信され得る。
特定のデータパケットについての入力カテゴリーにかかわらず、データパケットヘッダはアプリケーションレイヤパケットヘッダであり得、データパケットはTCP/IPを介して送信され得る。TCP/IPにより、シンクデバイス160およびソースデバイス120は、パケットロスの場合、再送信技法を実行することが可能になることがある。データパケットは、ソースデバイス120のオーディオデータまたはビデオデータを制御するために、あるいはソースデバイス120上で動作しているアプリケーションを制御するためになどの他の目的で、シンクデバイス160からソースデバイス120に送られ得る。
図7Aは、シンクデバイスとソースデバイスとの間で機能をネゴシエートする例示的な方法のフローチャートである。図示した例示的な方法は、シンクデバイス160(図1A)または360(図3)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ332)が、実行されたとき、本明細書で説明するフローチャートのうちの1つまたは複数中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ331)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図7Aの方法は、シンクデバイス160がソースデバイス120から第1のメッセージを受信する(701)ことを含む。そのメッセージは、たとえば、パラメータ入手要求(get parameter request)を備え得る。第1のメッセージに応答して、シンクデバイス160はソースデバイス120に第2のメッセージを送る(703)。第2のメッセージは、たとえば、サポートされる入力カテゴリーの第1のリストとサポートされるタイプの複数の第1のリストとを識別するパラメータ入手応答(get parameter response)を備え得、サポートされる入力カテゴリーの第1のリストのサポートされる入力カテゴリーの各々は、サポートされるタイプの関連付けられた第1のリストを有する。サポートされる入力カテゴリーは、たとえば、図6の入力カテゴリーフィールド624のために使用されるのと同じカテゴリーに対応し得る。上記の表2は、特定の入力カテゴリー(この例では一般入力)のためのサポートされるタイプの一例を表す。シンクデバイス160はソースデバイス120から第3のメッセージを受信する(705)。第3のメッセージは、たとえば、パラメータ設定要求(set parameter request)を備え得、パラメータ設定要求は、通信のためのポートと、サポートされる入力カテゴリーの第2のリストと、サポートされるタイプの複数の第2のリストとを識別し、サポートされる入力カテゴリーの第2のリストのサポートされる入力カテゴリーの各々は、サポートされるタイプの関連付けられた第2のリストを有し、第2のリストのサポートされるタイプの各々は、第1のリストのタイプのサブセットを含む。シンクデバイス160はソースデバイス120に第4のメッセージを送信する(707)。第4のメッセージは、たとえば、第2のリストのタイプが有効にされたことを確認するためのパラメータ設定応答(set parameter response)を備え得る。シンクデバイス160はソースデバイス120から第5のメッセージを受信する(709)。第5のメッセージは、たとえば、ソースデバイス120とシンクデバイス160との間の通信チャネルが有効にされたことを示す第2のパラメータ設定要求を備え得る。その通信チャネルは、たとえば、ユーザ入力バックチャネル(UIBC:user input back channel)を備え得る。シンクデバイス160はソースデバイス120に第6のメッセージを送信する(711)。第6のメッセージは、たとえば、シンクデバイス160による第2のパラメータ設定要求の受信を確認する第2のパラメータ設定応答を備え得る。
図7Bは、シンクデバイスとソースデバイスとの間で機能をネゴシエートする例示的な方法のフローチャートである。図示した例示的な方法は、ソースデバイス120(図1A)または220(図2)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ232)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ231)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図7Bの方法は、ソースデバイス120がシンクデバイス160に第1のメッセージを送信する(702)ことを含む。第1のメッセージは、たとえば、パラメータ入手要求を備え得る。ソースデバイス120はシンクデバイス160から第2のメッセージを受信する(704)。第2のメッセージは、たとえば、サポートされる入力カテゴリーの第1のリストとサポートされるタイプの複数の第1のリストとを識別するパラメータ入手応答を備え得、サポートされる入力カテゴリーの第1のリストのサポートされる入力カテゴリーの各々は、サポートされるタイプの関連付けられた第1のリストを有する。ソースデバイス120はシンクデバイス160に第3のメッセージを送信する(706)。第3のメッセージは、たとえば、通信のためのポートと、サポートされる入力カテゴリーの第2のリストと、サポートされるタイプの複数の第2のリストとを識別するパラメータ設定要求を備え得、サポートされる入力カテゴリーの第2のリストのサポートされる入力カテゴリーの各々は、サポートされるタイプの関連付けられた第2のリストを有し、第2のリストのサポートされるタイプの各々は、第1のリストのタイプのサブセットを含む。ソースデバイス120はシンクデバイス160から第4のメッセージを受信する(708)。第4のメッセージは、たとえば、第2のリストのタイプが有効にされたことを確認するためのパラメータ設定応答を備え得る。ソースデバイス120はシンクデバイス160に第5のメッセージを送信する(710)。第5のメッセージは、たとえば、ソースデバイス120とシンクデバイス160との間の通信チャネルが有効にされたことを示す第2のパラメータ設定要求を備え得る。その通信チャネルは、たとえば、ユーザ入力バックチャネル(UIBC)を備え得る。ソースデバイス120はシンクデバイス160から第6のメッセージを受信する(712)。第6のメッセージは、たとえば、シンクデバイス160による第2のパラメータ設定要求の受信を確認する第2のパラメータ設定応答を備え得る。
図8Aは、本開示に従ってワイヤレスシンクデバイスからワイヤレスソースデバイスにユーザ入力データを送信する例示的な方法のフローチャートである。図示した例示的な方法は、シンクデバイス160(図1A)または360(図3)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ332)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ331)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図8Aの方法は、ワイヤレスシンクデバイス160などのワイヤレスシンクデバイスにおいてユーザ入力データを取得する(801)ことを含む。ユーザ入力データは、たとえば、ワイヤレスシンクデバイス360に関して示したユーザ入力インターフェース376など、ワイヤレスシンクデバイス160のユーザ入力構成要素を通して取得され得る。さらに、シンクデバイス160は、ユーザ入力データを、たとえば、一般、フォワーディングされた、またはオペレーティングシステム固有として、カテゴリー分類し得る。シンクデバイス160は、次いでユーザ入力データに基づいてデータパケットヘッダを生成する(803)。データパケットヘッダはアプリケーションレイヤパケットヘッダであり得る。データパケットヘッダは、フィールドの中でも、ユーザ入力データに対応する入力カテゴリーを識別するためのフィールドを備え得る。入力カテゴリーは、たとえば、一般入力フォーマットまたはヒューマンインターフェースデバイスコマンドを備え得る。シンクデバイス160は、さらにデータパケットを生成し(805)、データパケットは、生成されたデータパケットヘッダとペイロードデータとを備える。一例では、ペイロードデータは、受信されたユーザ入力データを含み得、1つまたは複数のユーザコマンドを識別し得る。シンクデバイス160は、次いでワイヤレスソースデバイス(たとえば、図1Aのソースデバイス120または図2のソースデバイス220)に生成されたデータパケットを送信する(807)。シンクデバイス160は、たとえば図3に示したようなトランスポートユニット333およびワイヤレスモデム334を含む、データパケットの転送を可能にする構成要素を備え得る。シンクデバイス160はTCP/IPを介してデータパケットを転送し得る。
図8Bは、本開示に従ってワイヤレスソースデバイスにおいてワイヤレスシンクデバイスからユーザ入力データを受信する例示的な方法のフローチャートである。図示した例示的な方法は、ソースデバイス120(図1A)または220(図2)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ232)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ231)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図8Bの方法は、データパケットを受信する(802)ことを含み、データパケットは、特に、データパケットヘッダとペイロードデータとを備え得る。ペイロードデータは、たとえば、ユーザ入力データを含み得る。ソースデバイス120は、たとえば図2に関して示したような、トランスポートユニット233およびワイヤレスモデム234を含む、データパケットの転送を可能にする通信構成要素を備え得る。ソースデバイス120は、次いで、ペイロードデータ中に含まれているユーザ入力データに関連付けられた入力カテゴリーを判断するために、データパケット中に含まれるデータパケットヘッダをパースする(804)。ソースデバイス120は、判断された入力カテゴリーに基づいてペイロードデータを処理する(806)。図8Aおよび図8Bを参照しながら説明したデータパケットは、概して、図6を参照しながら説明したデータパケットの形態をとり得、ソースデバイスにおいてオーディオ/ビデオデータとアプリケーションとを制御するために使用され得る。
図9Aは、本開示に従ってワイヤレスシンクデバイスからワイヤレスソースデバイスにユーザ入力データを送信する例示的な方法のフローチャートである。図示した例示的な方法は、シンクデバイス160(図1A)または360(図3)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ332)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ331)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図9Aの方法は、ワイヤレスシンクデバイス160などのワイヤレスシンクデバイスにおいてユーザ入力データを取得する(901)ことを含む。ユーザ入力データは、たとえば、図3に関して示したユーザ入力インターフェース376など、ワイヤレスシンクデバイス160のユーザ入力構成要素を通して取得され得る。シンクデバイス160は、次いでペイロードデータを生成し(903)、ペイロードデータはユーザ入力データを記述し得る。一例では、ペイロードデータは、受信されたユーザ入力データを含み得、1つまたは複数のユーザコマンドを識別し得る。シンクデバイス160は、さらにデータパケットを生成し(905)、データパケットは、データパケットヘッダと生成されたペイロードデータとを備える。シンクデバイス160は、次いでワイヤレスソースデバイス(たとえば、図1Aのソースデバイス120または図2のソースデバイス220)に生成されたデータパケットを送信する(907)。シンクデバイス160は、たとえばトランスポートユニット333およびワイヤレスモデム334など、データパケットの転送を可能にする構成要素を備え得る。データパケットはTCP/IPを介してワイヤレスソースデバイスに送信され得る。
図9Bは、本開示に従ってワイヤレスソースデバイスにおいてワイヤレスシンクデバイスからユーザ入力データを受信する例示的な方法のフローチャートである。図示した例示的な方法は、ソースデバイス120(図1A)または220(図2)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ232)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ231)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図9Bの方法は、シンクデバイス360からデータパケットを受信する(902)ことを含み、データパケットは、特に、データパケットヘッダとペイロードデータとを備え得る。一例では、ペイロードデータは、たとえば、入力タイプ値などのユーザ入力の詳細を記述するデータを備え得る。ソースデバイス120は、たとえば図2に関して示したような、トランスポートユニット233およびワイヤレスモデム234を含む、データパケットの転送を可能にする通信構成要素を備え得る。ソースデバイス120は、次いで、ペイロードデータ中の入力タイプフィールド中の入力タイプ値を判断するためにデータパケットをパースする(904)。ソースデバイス120は、判断された入力タイプ値に基づいて、ユーザ入力の詳細を記述するデータを処理する(906)。図9Aおよび図9Bを参照しながら説明したデータパケットは、概して、図6を参照しながら説明したデータパケットの形態をとり得る。
図10Aは、本開示に従ってワイヤレスシンクデバイスからワイヤレスソースデバイスにユーザ入力データを送信する例示的な方法のフローチャートである。図示した例示的な方法は、シンクデバイス160(図1A)または360(図3)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ332)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ331)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図10Aの方法は、ワイヤレスシンクデバイス160などのワイヤレスシンクデバイスにおいてユーザ入力データを取得する(1001)ことを含む。ユーザ入力データは、たとえば、図3に関して示したようなユーザ入力インターフェース376など、ワイヤレスシンクデバイス160のユーザ入力構成要素を通して取得され得る。シンクデバイス160は、次いでユーザ入力に基づいてデータパケットヘッダを生成する(1003)。データパケットヘッダは、フィールドの中でも、タイムスタンプフィールドがデータパケットヘッダ中に存在するかどうかを示すためのタイムスタンプフラグ(たとえば、1ビットフィールド)を備え得る。タイムスタンプフラグは、たとえば、タイムスタンプフィールドが存在することを示すための「1」を含み得、タイムスタンプフィールドが存在しないことを示すための「0」を含み得る。タイムスタンプフィールドは、たとえば、ソースデバイス120によって生成されたタイムスタンプを含んでいる16ビットフィールドであり、送信より前にビデオデータに追加され得る。シンクデバイス160は、さらにデータパケットを生成し(1005)、データパケットは、生成されたデータパケットヘッダとペイロードデータとを備える。一例では、ペイロードデータは、受信されたユーザ入力データを含み得、1つまたは複数のユーザコマンドを識別し得る。シンクデバイス160は、次いでワイヤレスソースデバイス(たとえば、図1Aのソースデバイス120または図2のソースデバイス220)に生成されたデータパケットを送信する(1007)。シンクデバイス160は、たとえば図3に関して示したような、トランスポートユニット333およびワイヤレスモデム334を含む、データパケットの転送を可能にする構成要素を備え得る。データパケットはTCP/IPを介してワイヤレスソースデバイスに送信され得る。
図10Bは、本開示に従ってワイヤレスソースデバイスにおいてワイヤレスシンクデバイスからユーザ入力データを受信する例示的な方法のフローチャートである。図示した例示的な方法は、ソースデバイス120(図1A)または220(図2)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ232)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ231)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図10Bの方法は、ワイヤレスシンクデバイス160からデータパケットを受信する(1002)ことを含み、データパケットは、特に、データパケットヘッダとペイロードデータとを備え得る。ペイロードデータは、たとえば、ユーザ入力データを含み得る。ソースデバイス120は、たとえば図2に関して示したような、トランスポートユニット233およびワイヤレスモデム234を含む、データパケットの転送を可能にする通信構成要素を備え得る。ソースデバイス120は、次いでデータパケット中に含まれるデータパケットヘッダをパースする(1004)。ソースデバイス120は、タイムスタンプフィールドがデータパケットヘッダ中に存在するかどうかを判断する(1006)。一例では、ソースデバイス120は、データパケットヘッダ中に含まれるタイムスタンプフラグ値に基づいて判断を行い得る。データパケットヘッダがタイムスタンプフィールドを含む場合、ソースデバイス120は、タイムスタンプフィールド中にあるタイムスタンプに基づいてペイロードデータを処理する(1008)。図10Aおよび図10Bを参照しながら説明したデータパケットは、概して、図6を参照しながら説明したデータパケットの形態をとり得、ソースデバイスにおいてオーディオ/ビデオデータを制御するために使用され得る。
図11Aは、本開示に従ってワイヤレスシンクデバイスからワイヤレスソースデバイスにユーザ入力データを送信する例示的な方法のフローチャートである。図示した例示的な方法は、シンクデバイス160(図1A)または360(図3)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ332)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ331)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図11Aの方法は、ワイヤレスシンクデバイス160などのワイヤレスシンクデバイスにおいてユーザ入力データを取得する(1101)ことを含む。ユーザ入力データは、たとえば、図3に関して示したユーザ入力インターフェース376など、ワイヤレスシンクデバイス160のユーザ入力構成要素を通して取得され得る。シンクデバイス160は、次いでユーザ入力に基づいてデータパケットヘッダを生成する(1103)。データパケットヘッダは、フィールドの中でも、タイムスタンプフィールドを備え得る。タイムスタンプフィールドは、たとえば、ワイヤレスソースデバイス120によって生成され、ワイヤレスシンクデバイス160に送信された、マルチメディアデータに基づくタイムスタンプを含んでいる、16ビットフィールドを備え得る。タイムスタンプは、ワイヤレスシンクデバイスに送信されるより前に、ワイヤレスソースデバイス120によってビデオデータのフレームに追加されていることがある。タイムスタンプフィールドは、たとえば、ユーザ入力データがキャプチャされたときにワイヤレスシンクデバイス160において表示されているビデオデータのフレームに関連付けられたタイムスタンプを識別し得る。シンクデバイス160は、さらにデータパケットを生成し(1105)、データパケットは、生成されたデータパケットヘッダとペイロードデータとを備える。一例では、ペイロードデータは、受信されたユーザ入力データを含み得、1つまたは複数のユーザコマンドを識別し得る。シンクデバイス160は、次いでワイヤレスソースデバイス(たとえば、図1Aのソースデバイス120または図2のソースデバイス220)に生成されたデータパケットを送信する(1107)。シンクデバイス160は、たとえば図3に関して示したような、トランスポートユニット333およびワイヤレスモデム334を含む、データパケットの転送を可能にする構成要素を備え得る。データパケットはTCP/IPを介してワイヤレスソースデバイスに送信され得る。
図11Bは、本開示に従ってワイヤレスソースデバイスにおいてワイヤレスシンクデバイスからユーザ入力データを受信する例示的な方法のフローチャートである。図示した例示的な方法は、ソースデバイス120(図1A)または220(図2)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ232)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ231)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図11Bの方法は、ワイヤレスシンクデバイス160などのワイヤレスシンクデバイスからデータパケットを受信する(1102)ことを含み、データパケットは、特に、データパケットヘッダとペイロードデータとを備え得る。ペイロードデータは、たとえば、ユーザ入力データを含み得る。ソースデバイス120は、たとえば図2に関して示したような、トランスポートユニット233およびワイヤレスモデム234を含む、データパケットの転送を可能にする通信構成要素を備え得る。ソースデバイス120は、次いでデータパケットヘッダ中のタイムスタンプフィールドを識別する(1104)。ソースデバイス120は、タイムスタンプフィールド中にあるタイムスタンプに基づいてペイロードデータを処理する(1106)。上記タイムスタンプに基づいて、ペイロードデータを処理することの一部として、ソースデバイス120は、ユーザ入力データが取得されたときにワイヤレスシンクデバイスにおいて表示されているビデオデータのフレームを識別し、そのフレームのコンテンツに基づいてペイロードデータを解釈し得る。上記タイムスタンプに基づいてペイロードデータを処理することの一部として、ソースデバイス120は、上記タイムスタンプを、ソースデバイス120によって送信されているビデオの現在のフレームのための現在のタイムスタンプと比較し得、上記タイムスタンプと現在のタイムスタンプとの間の時間差がしきい値よりも小さいことに応答して、ペイロードデータ中で記述されたユーザ入力コマンドを実行するか、または上記タイムスタンプと現在のタイムスタンプとの間の時間差がしきい値よりも大きいことに応答して、ペイロードデータ中で記述されたユーザ入力コマンドを実行しないことがある。図11Aおよび図11Bを参照しながら説明したデータパケットは、概して、図6を参照しながら説明したデータパケットの形態をとり得、ソースデバイスにおいてオーディオ/ビデオデータを制御するために使用され得る。
図12Aは、本開示に従ってワイヤレスシンクデバイスからワイヤレスソースデバイスにユーザ入力データを送信する例示的な方法のフローチャートである。図示した例示的な方法は、シンクデバイス160(図1A)または360(図3)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ332)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ331)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図12Aの方法は、ワイヤレスシンクデバイス160などのワイヤレスシンクデバイスにおいてユーザ入力データを取得する(1201)ことを含む。一例では、ユーザ入力データはボイスコマンドデータであり得、ボイスコマンドデータは、たとえば、図3中のユーザ入力インターフェース376中に含まれるボイスコマンド認識モジュールなど、ワイヤレスシンクデバイス160のユーザ入力構成要素を通して取得され得る。シンクデバイス160は、ユーザ入力に基づいてデータパケットヘッダを生成する(1203)。シンクデバイス160は、ペイロードデータをも生成し(1205)、ペイロードデータはボイスコマンドデータを備え得る。一例では、ペイロードデータは、受信されたユーザ入力データをも含み得、1つまたは複数のユーザコマンドを識別し得る。シンクデバイス160は、さらにデータパケットを生成し(1207)、データパケットは、生成されたデータパケットヘッダとペイロードデータとを備える。シンクデバイス160は、次いでワイヤレスソースデバイス(たとえば、図1Aのソースデバイス120または図2のソースデバイス220)に生成されたデータパケットを送信する(1209)。シンクデバイス160は、たとえば図3に関して示したような、トランスポートユニット333およびワイヤレスモデム334を含む、データパケットの転送を可能にする構成要素を備え得る。データパケットはTCP/IPを介してワイヤレスソースデバイスに送信され得る。
図12Bは、本開示に従ってワイヤレスソースデバイスにおいてワイヤレスシンクデバイスからユーザ入力データを受信する例示的な方法のフローチャートである。図示した例示的な方法は、ソースデバイス120(図1A)または220(図2)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ232)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ231)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図12Bの方法は、データパケットを受信する(1202)ことを含み、データパケットは、特に、データパケットヘッダとペイロードデータとを備え得る。ペイロードデータは、たとえば、ボイスコマンドデータなどのユーザ入力データを含み得る。ソースデバイス120は、たとえば図2に関して示したような、トランスポートユニット233およびワイヤレスモデム234を含む、データパケットの転送を可能にする通信構成要素を備え得る。ソースデバイス120は、次いで、ペイロードデータがボイスコマンドデータを備えるかどうかを判断するために、データパケット中に含まれるペイロードデータをパースする(1204)。図12Aおよび図12Bを参照しながら説明したデータパケットは、概して、図6を参照しながら説明したデータパケットの形態をとり得、ソースデバイスにおいてオーディオ/ビデオデータを制御するために使用され得る。
図13Aは、本開示に従ってワイヤレスシンクデバイスからワイヤレスソースデバイスにユーザ入力データを送信する例示的な方法のフローチャートである。図示した例示的な方法は、シンクデバイス160(図1A)または360(図3)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ332)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ331)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図13Aの方法は、ワイヤレスシンクデバイス160などのワイヤレスシンクデバイスにおいてユーザ入力データを取得する(1301)ことを含む。一例では、ユーザ入力データはマルチタッチジェスチャーであり得、マルチタッチジェスチャーは、たとえば、UI167または図3のユーザ入力インターフェース376など、ワイヤレスシンクデバイス160のユーザ入力構成要素を通して取得され得る。一例では、マルチタッチジェスチャーは、第1のタッチ入力と第2のタッチ入力とを備え得る。シンクデバイス160は、ユーザ入力に基づいてデータパケットヘッダを生成する(1303)。シンクデバイス160は、ペイロードデータをも生成し(1305)、ペイロードデータは、第1のタッチ入力イベントについてのユーザ入力データを第1のポインタ識別情報に関連付け、第2のタッチ入力イベントについてのユーザ入力データを第2のポインタ識別情報に関連付け得る。シンクデバイス160は、さらにデータパケットを生成し(1307)、データパケットは、生成されたデータパケットヘッダとペイロードデータとを備える。シンクデバイス160は、次いでワイヤレスソースデバイス(たとえば、図1Aのソースデバイス120または図2のソースデバイス220)に生成されたデータパケットを送信する(1309)。シンクデバイス160は、たとえば図3に関して示したような、トランスポートユニット333およびワイヤレスモデム334を含む、データパケットの転送を可能にする構成要素を備え得る。データパケットはTCP/IPを介してワイヤレスソースデバイスに送信され得る。
図13Bは、本開示に従ってワイヤレスソースデバイスにおいてワイヤレスシンクデバイスからユーザ入力データを受信する例示的な方法のフローチャートである。図示した例示的な方法は、ソースデバイス120(図1A)または220(図2)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ232)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ231)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図13Bの方法は、データパケットを受信する(1302)ことを含み、データパケットは、特に、データパケットヘッダとペイロードデータとを備え得る。ペイロードデータは、たとえば、マルチタッチジェスチャーなどのユーザ入力データを含み得る。ソースデバイス120は、たとえば図2に示したような、トランスポートユニット233およびワイヤレスモデム234を含む、データパケットの転送を可能にする通信構成要素を備え得る。ソースデバイス120は、次いで、ペイロードデータ中に含まれるユーザ入力データを識別するために、データパケット中に含まれるペイロードデータをパースする(1304)。一例では、識別されたデータは、第1のポインタ識別情報を用いた第1のタッチ入力イベントについてのユーザ入力データと、第2のポインタ識別情報を用いた第2のタッチ入力イベントについてのユーザ入力データとを含み得る。ソースデバイス120は、次いで、第1のタッチ入力イベントについてのユーザ入力データと第2のタッチ入力イベントについてのユーザ入力データとをマルチタッチジェスチャーとして解釈する(1306)。図13Aおよび図13Bを参照しながら説明したデータパケットは、概して、図6を参照しながら説明したデータパケットの形態をとり得、ソースデバイスにおいてオーディオ/ビデオデータを制御するために使用され得る。
図14Aは、本開示に従ってワイヤレスシンクデバイスからワイヤレスソースデバイスにユーザ入力データを送信する例示的な方法のフローチャートである。図示した例示的な方法は、シンクデバイス160(図1A)または360(図3)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ332)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ331)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図14Aの方法は、外部デバイスからワイヤレスシンクデバイス360においてユーザ入力データを取得する(1401)ことを含む。一例では、外部デバイスは、シンクデバイスに接続されたサードパーティデバイスであり得る。シンクデバイス160は、ユーザ入力に基づいてデータパケットヘッダを生成する(1403)。一例では、データパケットヘッダは、ユーザ入力データをフォワーディングされたユーザ入力データとして識別し得る。シンクデバイス160は、ペイロードデータをも生成し(1405)、ペイロードデータはユーザ入力データを備え得る。シンクデバイス160は、さらにデータパケットを生成し(1407)、データパケットは、生成されたデータパケットヘッダとペイロードデータとを備え得る。シンクデバイス160は、次いでワイヤレスソースデバイス(たとえば、図1Aのソースデバイス120または図2のソースデバイス220)に生成されたデータパケットを送信する(1409)。シンクデバイス160は、たとえば図3に関して示したような、トランスポートユニット333およびワイヤレスモデム334を含む、データパケットの転送を可能にする構成要素を備え得る。データパケットはTCP/IPを介してワイヤレスソースデバイスに送信され得る。
図14Bは、本開示に従ってワイヤレスソースデバイスにおいてワイヤレスシンクデバイスからユーザ入力データを受信する例示的な方法のフローチャートである。図示した例示的な方法は、ソースデバイス120(図1A)または220(図2)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ232)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ231)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図14Bの方法は、データパケットを受信する(1402)ことを含み、データパケットは、特に、データパケットヘッダとペイロードデータとを備え得る。ペイロードデータは、たとえば、ユーザ入力データがサードパーティデバイスからフォワーディングされたことを示すフォワーディングされたユーザ入力コマンドなどのユーザ入力データを含み得る。ソースデバイス120は、たとえば図2に関して示したような、トランスポートユニット233およびワイヤレスモデム234を含む、データパケットの転送を可能にする通信構成要素を備え得る。ソースデバイス120は、次いでデータパケットヘッダをパースし、ペイロードデータがフォワーディングされたユーザ入力コマンドを備えると判断する(1404)。ソースデバイス120は、次いで、フォワーディングされたユーザ入力コマンドに対応するサードパーティデバイスに関連付けられた識別情報を識別するために、データパケット中に含まれるペイロードデータをパースする(1406)。ソースデバイス120は、次いでサードパーティデバイスの識別された識別情報に基づいてペイロードデータを処理する(1408)。図14Aおよび図14Bを参照しながら説明したデータパケットは、概して、図6を参照しながら説明したデータパケットの形態をとり得、ソースデバイスにおいてオーディオ/ビデオデータを制御するために使用され得る。
図15Aは、本開示に従ってワイヤレスシンクデバイスからワイヤレスソースデバイスにユーザデータを送信する例示的な方法のフローチャートである。図示した例示的な方法は、シンクデバイス160(図1A)または360(図3)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ332)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ331)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図15Aの方法は、ワイヤレスシンクデバイスにおいてユーザ入力データを取得する(1501)ことを含む。ユーザ入力データは、関連付けられた座標データを有することがある。関連付けられた座標データは、たとえば、マウスクリックイベントのロケーションまたはタッチイベントのロケーションに対応し得る。シンクデバイス160は、次いで、正規化座標データを生成するために、関連付けられた座標データを正規化する(1503)。シンクデバイス160は、次いで正規化座標データを含むデータパケットを生成する(1505)。座標データを正規化することは、ディスプレイウィンドウの解像度と、ソースデバイス120のディスプレイ22などのソースのディスプレイの解像度との比に基づいて、関連付けられた座標データをスケーリングすることを含むことができる。ディスプレイウィンドウの解像度はシンクデバイス160によって判断され得、ソースデバイスのディスプレイの解像度はソースデバイス120から受信され得る。シンクデバイス160は、次いでワイヤレスソースデバイス120に正規化座標をもつデータパケットを送信する(1507)。図15Aの方法の一部として、シンクデバイス160はまた、関連付けられた座標データが、ワイヤレスソースデバイスから受信されているコンテンツのためのディスプレイウィンドウ内にあるかどうかを判断し、たとえば、関連付けられた座標データがディスプレイウィンドウ外にある場合は、ユーザ入力をローカルで処理するか、またはさもなければ、その入力がディスプレイウィンドウ内にある場合は、説明したように座標を正規化し得る。
図15Bは、本開示に従ってワイヤレスソースデバイスにおいてワイヤレスシンクデバイスからユーザ入力データを受信する例示的な方法のフローチャートである。図示した例示的な方法は、ソースデバイス120(図1A)または220(図2)によって実行され得る。いくつかの例では、コンピュータ可読記憶媒体(たとえば、メモリ232)が、実行されたとき、フローチャート中の図示したステップのうちの1つまたは複数を実行することを1つまたは複数のプロセッサ(たとえば、プロセッサ231)に行わせる、命令、モジュール、またはアルゴリズムを記憶し得る。
図15Bの方法は、ワイヤレスソースデバイスにおいてデータパケットを受信することを含み、データパケットは、関連付けられた座標データをもつユーザ入力データを備える(1502)。関連付けられた座標データは、たとえば、シンクデバイスにおけるマウスクリックイベントのロケーションまたはタッチイベントのロケーションに対応し得る。ソースデバイス120は、次いで、正規化座標データを生成するために、関連付けられた座標データを正規化する(1504)。ソースデバイス120は、ディスプレイウィンドウの解像度とソースのディスプレイの解像度との比に基づいて、関連付けられた座標データをスケーリングすることによって、座標データを正規化することができる。ソースデバイス120は、ソースデバイスのディスプレイの解像度を判断することができ、ワイヤレスシンクデバイスからディスプレイウィンドウの解像度を受信することができる。ソースデバイスは、次いで正規化座標データに基づいてデータパケットを処理する(1506)。図15Aおよび図15Bを参照しながら説明したデータパケットは、概して、図6を参照しながら説明したデータパケットの形態をとり得、ソースデバイスにおいてオーディオ/ビデオデータを制御するために使用され得る。
説明を簡単にするために、図7〜図15を参照しながら本開示の態様について別個に説明した。ただし、これらの様々な態様は、別個にだけでなく、互いに関連して組み合わせられ、使用され得ることが企図される。概して、本明細書で説明する機能および/またはモジュールは、ワイヤレスソースデバイスとワイヤレスシンクデバイスのいずれかまたは両方において実装され得る。このようにして、本例で説明したユーザインターフェース機能は、ワイヤレスソースデバイスとワイヤレスシンクデバイスとの間で互換的に使用され得る。
本開示の技法は、ワイヤレスハンドセット、および集積回路(IC)またはICのセット(すなわち、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。機能的態様を強調するために任意の構成要素、モジュールまたはユニットについて説明し、与えたが、それらの任意の構成要素、モジュールまたはユニットは、異なるハードウェアユニットによる実現を必ずしも必要とするとは限らない。
したがって、本明細書で説明する技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ハードウェアで実装される場合、モジュール、ユニットまたは構成要素として説明した特徴は、集積論理デバイスに一緒に、または個別であるが相互運用可能な論理デバイスとして別々に実装され得る。ソフトウェアで実装される場合、これらの技法は、プロセッサで実行されたとき、上記で説明した方法のうちの1つまたは複数を実行する、命令を備えるコンピュータ可読媒体によって少なくとも部分的に実現され得る。コンピュータ可読媒体は、有形で非一時的なコンピュータ可読記憶媒体を備え得、パッケージング材料を含むことがあるコンピュータプログラム製品の一部を形成し得る。コンピュータ可読記憶媒体は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、磁気または光学データ記憶媒体などを備え得る。本技法は、追加または代替として、命令またはデータ構造の形態でコードを搬送または通信し、コンピュータによってアクセスされ、読み取られ、および/または実行され得るコンピュータ可読通信媒体によって少なくとも部分的に実現され得る。
コードは、1つまたは複数のデジタル信号プロセッサ(DSP)など、1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のソフトウェアモジュールまたはハードウェアモジュール内に提供されるか、あるいは複合ビデオコーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。
本開示の様々な態様について説明した。これらおよび他の態様は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
ワイヤレスソースデバイスにおいてワイヤレスシンクデバイスからユーザ入力データを受信する方法であって、前記方法は、
パケットヘッダとペイロードデータとを備えるデータパケットを受信することと、
前記ペイロードデータがボイスコマンドデータを備えるかどうかを判断するために前記ペイロードデータをパースすることとを備える、方法。
[C2]
前記ペイロードデータをパースすることが、前記ペイロードデータ中で、入力タイプを示すフィールドを識別することを備え、前記フィールド中の値は、前記ペイロードデータがボイスコマンドデータを備えることを示す、C1に記載の方法。
[C3]
一連のメッセージを介して、前記ワイヤレスシンクデバイスと、ボイスコマンド機能をネゴシエートすることをさらに備える、C1に記載の方法。
[C4]
前記ネゴシエートすることが、1つまたは複数のオーディオコーデックを識別することを備える、C3に記載の方法。
[C5]
前記ボイスコマンドデータがRTPカプセル化ボイスデータである、C1に記載の方法。
[C6]
前記データパケットヘッダは、タイムスタンプフィールドが存在するかどうかを識別するためのタイムスタンプフラグを備える、C1に記載の方法。
[C7]
前記タイムスタンプフラグが、タイムスタンプフィールドが存在することを示すことと、前記ペイロードデータがボイスコマンドデータを備えることとに応答して、前記タイムスタンプフィールド中のエントリを音声サンプリング時間として解釈することと、
前記タイムスタンプフラグが、タイムスタンプフィールドが存在することを示すことと、前記ペイロードデータがボイスコマンドデータ以外のコマンドデータを備えることとに応答して、前記タイムスタンプフィールド中の前記エントリを、前記ユーザ入力データがキャプチャされたときに前記ワイヤレスシンクデバイスにおいて表示されているビデオデータのフレームに関連付けられたタイムスタンプとして解釈することとをさらに備える、C6に記載の方法。
[C8]
前記データパケットヘッダが、入力カテゴリーを識別するためのフィールドを備え、前記フィールドが一般入力を識別する、C1に記載の方法。
[C9]
前記ペイロードデータが、入力タイプを識別するためのフィールドを備え、前記入力タイプを識別するための前記フィールドがボイスコマンドを識別する、C1に記載の方法。
[C10]
前記ペイロードデータが記述フィールドを備え、前記記述フィールドが前記ボイスコマンドデータを備える、C1に記載の方法。
[C11]
前記ペイロードデータが、前記記述フィールドの長さを識別するための長さフィールドを備える、C10に記載の方法。
[C12]
前記ユーザ入力データを取得することが、前記ワイヤレスシンクデバイスの入力デバイスを通して前記ユーザ入力データをキャプチャすることを備える、C1に記載の方法。
[C13]
前記ユーザ入力データを取得することが、別のワイヤレスシンクデバイスからのフォワーディングされたユーザ入力データを受信することを備える、C1に記載の方法。
[C14]
前記データパケットヘッダがアプリケーションレイヤパケットヘッダである、C1に記載の方法。
[C15]
前記データパケットが、前記ワイヤレスソースデバイスのオーディオデータまたはビデオデータを制御するためのものである、C1に記載の方法。
[C16]
前記データパケットがTCP/IPを介して送信される、C1に記載の方法。
[C17]
ワイヤレスシンクデバイスからユーザ入力データを受信するように構成されたワイヤレスソースデバイスであって、前記ワイヤレスソースデバイスは、
パケットヘッダとペイロードデータとを備えるデータパケットを受信するためのトランスポートユニットと、
命令を記憶するメモリと、
前記命令を実行するように構成された1つまたは複数のプロセッサであって、前記命令の実行時に、前記1つまたは複数のプロセッサが、
前記ペイロードデータがボイスコマンドデータを備えるかどうかを判断するために前記ペイロードデータをパースすることを行わせる、1つまたは複数のプロセッサとを備える、ワイヤレスソースデバイス。
[C18]
前記ペイロードデータをパースすることが、前記ペイロードデータ中で、入力タイプを示すフィールドを識別することを備え、前記フィールド中の値は、前記ペイロードデータがボイスコマンドデータを備えることを示す、C17に記載のワイヤレスソースデバイス。
[C19]
前記命令の実行時に、前記1つまたは複数のプロセッサが、
一連のメッセージを介して、前記ワイヤレスシンクデバイスと、ボイスコマンド機能をネゴシエートすることをさらに行わせる、C17に記載のワイヤレスソースデバイス。
[C20]
前記ネゴシエートすることが、1つまたは複数のオーディオコーデックを識別することを備える、C17に記載のワイヤレスソースデバイス。
[C21]
前記ボイスコマンドデータがRTPカプセル化ボイスデータである、C17に記載のワイヤレスソースデバイス。
[C22]
前記データパケットヘッダは、タイムスタンプフィールドが存在するかどうかを識別するためのタイムスタンプフラグを備える、C17に記載のワイヤレスソースデバイス。
[C23]
前記命令の実行時に、前記1つまたは複数のプロセッサは、
前記タイムスタンプフラグが、タイムスタンプフィールドが存在することを示すことと、前記ペイロードデータがボイスコマンドデータを備えることとに応答して、前記タイムスタンプフィールド中のエントリを音声サンプリング時間として解釈することと、
前記タイムスタンプフラグが、タイムスタンプフィールドが存在することを示すことと、前記ペイロードデータがボイスコマンドデータ以外のコマンドデータを備えることとに応答して、前記タイムスタンプフィールド中の前記エントリを、前記ユーザ入力データがキャプチャされたときに前記ワイヤレスシンクデバイスにおいて表示されているビデオデータのフレームに関連付けられたタイムスタンプとして解釈することとをさらに行わせる、C22に記載のワイヤレスソースデバイス。
[C24]
前記データパケットヘッダが、入力カテゴリーを識別するためのフィールドを備え、前記フィールドが一般入力を識別する、C17に記載のワイヤレスソースデバイス。
[C25]
前記ペイロードデータが、入力タイプを識別するためのフィールドを備え、前記入力タイプを識別するための前記フィールドがボイスコマンドを識別する、C17に記載のワイヤレスソースデバイス。
[C26]
前記ペイロードデータが記述フィールドを備え、前記記述フィールドが前記ボイスコマンドデータを備える、C17に記載のワイヤレスソースデバイス。
[C27]
前記ペイロードデータが、前記記述フィールドの長さを識別するための長さフィールドを備える、C26に記載のワイヤレスソースデバイス。
[C28]
前記ユーザ入力データを取得することが、前記ワイヤレスシンクデバイスの入力デバイスを通して前記ユーザ入力データをキャプチャすることを備える、C17に記載のワイヤレスソースデバイス。
[C29]
前記ユーザ入力データを取得することが、別のワイヤレスシンクデバイスからのフォワーディングされたユーザ入力データを受信することを備える、C17に記載のワイヤレスソースデバイス。
[C30]
前記データパケットヘッダがアプリケーションレイヤパケットヘッダである、C17に記載のワイヤレスソースデバイス。
[C31]
前記データパケットが、前記ワイヤレスソースデバイスのオーディオデータまたはビデオデータを制御するためのものである、C17に記載のワイヤレスソースデバイス。
[C32]
前記データパケットがTCP/IPを介して送信される、C17に記載のワイヤレスソースデバイス。
[C33]
1つまたは複数のプロセッサによって実行されると、ワイヤレスソースデバイスにおいてワイヤレスシンクデバイスからユーザ入力データを受信する方法を実行することを前記1つまたは複数のプロセッサに行わせる、命令を記憶するコンピュータ可読記憶媒体であって、前記方法は、
パケットヘッダとペイロードデータとを備えるデータパケットを受信することと、
前記ペイロードデータがボイスコマンドデータを備えるかどうかを判断するために前記ペイロードデータをパースすることとを備える、コンピュータ可読記憶媒体。
[C34]
ワイヤレスシンクデバイスからユーザ入力データを受信するように構成されたワイヤレスソースデバイスであって、前記ワイヤレスソースデバイスは、
パケットヘッダとペイロードデータとを備えるデータパケットを受信するための手段と、
前記ペイロードデータがボイスコマンドデータを備えるかどうかを判断するために前記ペイロードデータをパースするための手段とを備える、ワイヤレスソースデバイス。
[C35]
ワイヤレスシンクデバイスからワイヤレスソースデバイスにユーザ入力データを送信する方法であって、前記方法は、
前記ワイヤレスシンクデバイスにおいてボイスコマンドデータを取得することと、
データパケットヘッダを生成することと、
前記ボイスコマンドデータを備えるペイロードデータを生成することと、
前記データパケットヘッダと前記ペイロードデータとを備えるデータパケットを生成することと、
前記ワイヤレスソースデバイスに前記データパケットを送信することとを備える、方法。
[C36]
一連のメッセージを介して、前記ワイヤレスソースデバイスと、ボイスコマンド機能をネゴシエートすることをさらに備える、C35に記載の方法。
[C37]
前記ネゴシエートすることが、1つまたは複数のオーディオコーデックを識別することを備える、C36に記載の方法。
[C38]
前記ボイスコマンドデータがRTPカプセル化ボイスデータである、C35に記載の方法。
[C39]
前記データパケットヘッダは、タイムスタンプフィールドが存在するかどうかを識別するためのタイムスタンプフラグを備える、C35に記載の方法。
[C40]
前記タイムスタンプフィールドを示すように前記タイムスタンプフラグを設定することと、
前記タイムスタンプフィールドに音声サンプリング時間値を追加することとをさらに備える、C39に記載の方法。
[C41]
前記データパケットヘッダが、入力カテゴリーを識別するためのフィールドを備え、前記フィールドが一般入力を識別する、C35に記載の方法。
[C42]
前記ペイロードデータが、入力タイプを識別するためのフィールドを備え、前記入力タイプを識別するための前記フィールドがボイスコマンドを識別する、C35に記載の方法。
[C43]
前記ペイロードデータが記述フィールドを備え、前記記述フィールドが前記ボイスコマンドデータを備える、C35に記載の方法。
[C44]
前記ペイロードデータが、前記記述フィールドの長さを識別するための長さフィールドを備える、C43に記載の方法。
[C45]
前記ユーザ入力データを取得することが、前記ワイヤレスシンクデバイスの入力デバイスを通して前記ユーザ入力データをキャプチャすることを備える、C35に記載の方法。
[C46]
前記ユーザ入力データを取得することが、別のワイヤレスシンクデバイスからのフォワーディングされたユーザ入力データを受信することを備える、C35に記載の方法。
[C47]
前記データパケットヘッダがアプリケーションレイヤパケットヘッダである、C35に記載の方法。
[C48]
前記データパケットが、前記ワイヤレスソースデバイスのオーディオデータまたはビデオデータを制御するためのものである、C35に記載の方法。
[C49]
前記データパケットがTCP/IPを介して送信される、C35に記載の方法。
[C50]
ワイヤレスソースデバイスにユーザ入力データを送信するように構成されたワイヤレスシンクデバイスであって、前記ワイヤレスシンクデバイスは、
命令を記憶するメモリと、
前記命令を実行するように構成された1つまたは複数のプロセッサであって、前記命令の実行時に、前記1つまたは複数のプロセッサが、
前記ワイヤレスシンクデバイスにおいてボイスコマンドデータを取得することと、
データパケットヘッダを生成することと、
前記ボイスコマンドデータを備えるペイロードデータを生成することと、
前記データパケットヘッダと前記ペイロードデータとを備えるデータパケットを生成することとを行わせる、1つまたは複数のプロセッサと、
前記ワイヤレスソースデバイスに前記データパケットを送信するためのトランスポートユニットとを備える、ワイヤレスシンクデバイス。
[C51]
前記命令の実行時に、前記1つまたは複数のプロセッサが、
一連のメッセージを介して、前記ワイヤレスソースデバイスと、ボイスコマンド機能をネゴシエートすることをさらに行わせる、C50に記載のワイヤレスシンクデバイス。
[C52]
前記ネゴシエートすることが、1つまたは複数のオーディオコーデックを識別することを備える、C51に記載のワイヤレスシンクデバイス。
[C53]
前記ボイスコマンドデータがRTPカプセル化ボイスデータである、C50に記載のワイヤレスシンクデバイス。
[C54]
前記データパケットヘッダは、タイムスタンプフィールドが存在するかどうかを識別するためのタイムスタンプフラグを備える、C50に記載のワイヤレスシンクデバイス。
[C55]
前記命令の実行時に、前記1つまたは複数のプロセッサが、
前記タイムスタンプフィールドを示すように前記タイムスタンプフラグを設定することと、
前記タイムスタンプフィールドに音声サンプリング時間値を追加することとをさらに行わせる、C54に記載のワイヤレスシンクデバイス。
[C56]
前記データパケットヘッダが、入力カテゴリーを識別するためのフィールドを備え、前記フィールドが一般入力を識別する、C50に記載のワイヤレスシンクデバイス。
[C57]
前記ペイロードデータが、入力タイプを識別するためのフィールドを備え、前記入力タイプを識別するための前記フィールドがボイスコマンドを識別する、C50に記載のワイヤレスシンクデバイス。
[C58]
前記ペイロードデータが記述フィールドを備え、前記記述フィールドが前記ボイスコマンドデータを備える、C50に記載のワイヤレスシンクデバイス。
[C59]
前記ペイロードデータが、前記記述フィールドの長さを識別するための長さフィールドを備える、C58に記載のワイヤレスシンクデバイス。
[C60]
前記ユーザ入力データを取得することが、前記ワイヤレスシンクデバイスの入力デバイスを通して前記ユーザ入力データをキャプチャすることを備える、C50に記載のワイヤレスシンクデバイス。
[C61]
前記ユーザ入力データを取得することが、別のワイヤレスシンクデバイスからのフォワーディングされたユーザ入力データを受信することを備える、C50に記載のワイヤレスシンクデバイス。
[C62]
前記データパケットヘッダがアプリケーションレイヤパケットヘッダである、C50に記載のワイヤレスシンクデバイス。
[C63]
前記データパケットが、前記ワイヤレスソースデバイスのオーディオデータまたはビデオデータを制御するためのものである、C50に記載のワイヤレスシンクデバイス。
[C64]
前記データパケットがTCP/IPを介して送信される、C50に記載のワイヤレスシンクデバイス。
[C65]
1つまたは複数のプロセッサによって実行されると、ワイヤレスシンクデバイスからワイヤレスソースデバイスにユーザ入力データを送信する方法を実行することを前記1つまたは複数のプロセッサに行わせる、命令を記憶するコンピュータ可読記憶媒体であって、前記方法は、
前記ワイヤレスシンクデバイスにおいてボイスコマンドデータを取得することと、
データパケットヘッダを生成することと、
前記ボイスコマンドデータを備えるペイロードデータを生成することと、
前記データパケットヘッダと前記ペイロードデータとを備えるデータパケットを生成することと、
前記ワイヤレスソースデバイスに前記データパケットを送信することとを備える、コンピュータ可読記憶媒体。
[C66]
ワイヤレスソースデバイスにユーザ入力データを送信するように構成されたワイヤレスシンクデバイスであって、前記ワイヤレスシンクデバイスは、
前記ワイヤレスシンクデバイスにおいてボイスコマンドデータを取得するための手段と、
データパケットヘッダを生成するための手段と、
前記ボイスコマンドデータを備えるペイロードデータを生成するための手段と、
前記データパケットヘッダと前記ペイロードデータとを備えるデータパケットを生成するための手段と、
前記ワイヤレスソースデバイスに前記データパケットを送信するための手段とを備える、ワイヤレスシンクデバイス。